Jelajahi Sumber

feat: 跨库拷贝定额库

vian 2 tahun lalu
induk
melakukan
8b4f7f9801

File diff ditekan karena terlalu besar
+ 93 - 71
config/config.js


+ 8 - 7
modules/all_models/stdGlj_glj.js

@@ -14,8 +14,8 @@ const std_gljComponent = new Schema(
             default: {}
         }
     },
-    {_id: false},
-    {versionKey: false}
+    { _id: false },
+    { versionKey: false }
 );
 
 const std_glj = new Schema({
@@ -41,10 +41,11 @@ const std_glj = new Schema({
     materialCoe: Number, //三材系数
     model: Number, //机型
     //经济指标数据
-    materialIndexType:String,//工料指标类别
-    materialIndexUnit:String,//工料指标单位
-    materialIndexCoe:Number//单位转换系数
+    materialIndexType: String,//工料指标类别
+    materialIndexUnit: String,//工料指标单位
+    materialIndexCoe: Number//单位转换系数
 
-},{versionKey: false});
+}, { versionKey: false });
 
-mongoose.model('std_glj_lib_gljList', std_glj, 'std_glj_lib_gljList');
+mongoose.model('std_glj_lib_gljList', std_glj, 'std_glj_lib_gljList');
+mongoose.model('std_glj_lib_gljList_backup', std_glj, 'std_glj_lib_gljList_backup');

+ 9 - 8
modules/all_models/stdRation_coe.js

@@ -6,14 +6,14 @@ const mongoose = require('mongoose');
 const Schema = mongoose.Schema;
 const coeSchema = new Schema({
     coeType: String,                // 系数类型,指作用范围:
-                                    // 单个(如:111量0.001)、人工类、材料类、机械类、全部(如:定额×0.925)。
+    // 单个(如:111量0.001)、人工类、材料类、机械类、全部(如:定额×0.925)。
     gljID: Number,                  // 要调整的工料机ID(当coeType=0时有效)
     operator: String,               // 运算符(*、+、-、=)
     amount: String,                 // 调整的量
     gljCode: String,
     gljName: String,
-    replaceCode:String,
-    replaceName:String,
+    replaceCode: String,
+    replaceName: String,
     _id: false
 });
 
@@ -23,10 +23,11 @@ const coeListSchema = new Schema({
     serialNo: Number,                  //编号
     name: String,                       // 名称
     content: String,                    // 说明
-    original_code:String,               //原人材机编码
-    option_codes:String,                //可选人材机编码
-    option_list:[Schema.Types.Mixed],//下拉列表选项
+    original_code: String,               //原人材机编码
+    option_codes: String,                //可选人材机编码
+    option_list: [Schema.Types.Mixed],//下拉列表选项
     coes: [coeSchema]
-}, {versionKey: false});
+}, { versionKey: false });
 
-mongoose.model('std_ration_lib_coe_list', coeListSchema, 'std_ration_lib_coe_list');
+mongoose.model('std_ration_lib_coe_list', coeListSchema, 'std_ration_lib_coe_list');
+mongoose.model('std_ration_lib_coe_list_copy', coeListSchema, 'std_ration_lib_coe_list_copy');

+ 2 - 1
modules/all_models/stdRation_ration.js

@@ -63,4 +63,5 @@ const rationItemSchema = new Schema({
     isDeleted: { type: Boolean, default: false }
 });
 
-mongoose.model('std_ration_lib_ration_items', rationItemSchema, 'std_ration_lib_ration_items');
+mongoose.model('std_ration_lib_ration_items', rationItemSchema, 'std_ration_lib_ration_items');
+mongoose.model('std_ration_lib_ration_items_copy', rationItemSchema, 'std_ration_lib_ration_items_copy');

+ 2 - 1
modules/all_models/stdRation_section.js

@@ -18,4 +18,5 @@ const rationChapterTreeSchema = new Schema({//章节树  //生成唯一id改为s
     isDeleted: Boolean
 });
 
-mongoose.model("std_ration_lib_ration_chapter_trees", rationChapterTreeSchema, 'std_ration_lib_ration_chapter_trees');
+mongoose.model("std_ration_lib_ration_chapter_trees", rationChapterTreeSchema, 'std_ration_lib_ration_chapter_trees');
+mongoose.model("std_ration_lib_ration_chapter_trees_copy", rationChapterTreeSchema, 'std_ration_lib_ration_chapter_trees_copy');

+ 27 - 23
modules/ration_repository/controllers/repository_views_controller.js

@@ -8,15 +8,19 @@ import mongoose from 'mongoose';
 const compilationModel = mongoose.model('compilation');
 const rationLibModel = mongoose.model('std_ration_lib_map');
 const fs = require('fs');
-class ViewsController extends BaseController{
-    async redirectMain(req, res){
-        let filter = req.query.filter ? {compilationId: req.query.filter} : null;
-        let allLibs = await rationLibModel.find({}, {_id: 0, recentOpr: 0}),
+const rationItem = require('../models/ration_item');
+
+class ViewsController extends BaseController {
+    async redirectMain(req, res) {
+        await rationItem.copyLib(246, 251, 172, 172);
+        await rationItem.copyLib(247, 252, 172, 172);
+        let filter = req.query.filter ? { compilationId: req.query.filter } : null;
+        let allLibs = await rationLibModel.find({}, { _id: 0, recentOpr: 0 }),
             rationLibs = allLibs.filter(lib => filter && lib.compilationId === filter.compilationId || !filter),
             allNames = allLibs.map(lib => lib.dispName);
         let compilationModel = new CompilationModel();
-        let compilationList = await compilationModel.getCompilationList({_id: 1, name: 1});
-        compilationList.unshift({_id: 'all', name: '所有'});
+        let compilationList = await compilationModel.getCompilationList({ _id: 1, name: 1 });
+        compilationList.unshift({ _id: 'all', name: '所有' });
         let activeCompilation = compilationList.find(compilation => compilation._id.toString() === req.query.filter);
         if (activeCompilation) {
             activeCompilation.active = 'active';
@@ -32,7 +36,7 @@ class ViewsController extends BaseController{
                 userID: req.session.managerData.userID
             });
     }
-    async redirectRation(req, res){
+    async redirectRation(req, res) {
         const repId = req.query.repository;
         const locked = req.query.locked || 'true';
         const redirectGlj = `/rationRepository/lmm?repository=${repId}&locked=${locked}`;
@@ -40,12 +44,12 @@ class ViewsController extends BaseController{
         const redirectInstallation = `/rationRepository/installation?repository=${repId}&locked=${locked}`;
         let overWriteUrl = null;
         let priceProperties = [];
-        let stdRationLib = await rationLibModel.findOne({ID: repId});
-        if(stdRationLib){
-            let compilation = await compilationModel.findOne({_id: mongoose.Types.ObjectId(stdRationLib.compilationId)});
+        let stdRationLib = await rationLibModel.findOne({ ID: repId });
+        if (stdRationLib) {
+            let compilation = await compilationModel.findOne({ _id: mongoose.Types.ObjectId(stdRationLib.compilationId) });
             priceProperties = compilation.priceProperties ? compilation.priceProperties : [];
             let absoluteUrl = compilation.overWriteUrl ? req.app.locals.rootDir + compilation.overWriteUrl : req.app.locals.rootDir;
-            overWriteUrl = fs.existsSync(absoluteUrl) && fs.statSync(absoluteUrl).isFile()? compilation.overWriteUrl : null;
+            overWriteUrl = fs.existsSync(absoluteUrl) && fs.statSync(absoluteUrl).isFile() ? compilation.overWriteUrl : null;
         }
         res.render('maintain/ration_repository/dinge.html',
             {
@@ -54,12 +58,12 @@ class ViewsController extends BaseController{
                 redirectGlj: redirectGlj,
                 redirectCoe: redirectCoe,
                 redirectInstallation: redirectInstallation,
-                LicenseKey:config.getLicenseKey(process.env.NODE_ENV),
+                LicenseKey: config.getLicenseKey(process.env.NODE_ENV),
                 priceProperties: JSON.stringify(priceProperties),
                 overWriteUrl: overWriteUrl
             });
     }
-    async redirectGlj(req, res){
+    async redirectGlj(req, res) {
         const repId = req.query.repository;
         const locked = req.query.locked || 'true';
         const redirectRation = `/rationRepository/ration?repository=${repId}&locked=${locked}`;
@@ -67,12 +71,12 @@ class ViewsController extends BaseController{
         const redirectInstallation = `/rationRepository/installation?repository=${repId}&locked=${locked}`;
         let overWriteUrl = null;
         let priceProperties = [];
-        let stdRationLib = await rationLibModel.findOne({ID: repId});
-        if(stdRationLib){
-            let compilation = await compilationModel.findOne({_id: mongoose.Types.ObjectId(stdRationLib.compilationId)});
+        let stdRationLib = await rationLibModel.findOne({ ID: repId });
+        if (stdRationLib) {
+            let compilation = await compilationModel.findOne({ _id: mongoose.Types.ObjectId(stdRationLib.compilationId) });
             priceProperties = compilation.priceProperties ? compilation.priceProperties : [];
             let absoluteUrl = compilation.overWriteUrl ? req.app.locals.rootDir + compilation.overWriteUrl : req.app.locals.rootDir;
-            overWriteUrl = fs.existsSync(absoluteUrl) && fs.statSync(absoluteUrl).isFile()? compilation.overWriteUrl : null;
+            overWriteUrl = fs.existsSync(absoluteUrl) && fs.statSync(absoluteUrl).isFile() ? compilation.overWriteUrl : null;
         }
         res.render('maintain/ration_repository/gongliao.html',
             {
@@ -81,12 +85,12 @@ class ViewsController extends BaseController{
                 redirectRation: redirectRation,
                 redirectCoe: redirectCoe,
                 redirectInstallation: redirectInstallation,
-                LicenseKey:config.getLicenseKey(process.env.NODE_ENV),
+                LicenseKey: config.getLicenseKey(process.env.NODE_ENV),
                 priceProperties: JSON.stringify(priceProperties),
                 rationLib: stdRationLib
             });
     }
-    redirectCoeList(req, res){
+    redirectCoeList(req, res) {
         const repId = req.query.repository;
         const locked = req.query.locked || 'true';
         const redirectGlj = `/rationRepository/lmm?repository=${repId}&locked=${locked}`;
@@ -99,16 +103,16 @@ class ViewsController extends BaseController{
                 redirectGlj: redirectGlj,
                 redirectRation: redirectRation,
                 redirectInstallation: redirectInstallation,
-                LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
+                LicenseKey: config.getLicenseKey(process.env.NODE_ENV)
             });
     }
-    async redirectInstallation(req, res){
+    async redirectInstallation(req, res) {
         const repId = req.query.repository;
         const locked = req.query.locked || 'true';
         const redirectGlj = `/rationRepository/lmm?repository=${repId}&locked=${locked}`;
         const redirectCoe = `/rationRepository/coeList?repository=${repId}&locked=${locked}`;
         const redirectRation = `/rationRepository/ration?repository=${repId}&locked=${locked}`;
-        let stdRationLib = await rationLibModel.findOne({ID: repId});
+        let stdRationLib = await rationLibModel.findOne({ ID: repId });
         res.render('maintain/ration_repository/anzhuang.html',
             {
                 userAccount: req.session.managerData.username,
@@ -116,7 +120,7 @@ class ViewsController extends BaseController{
                 redirectGlj: redirectGlj,
                 redirectCoe: redirectCoe,
                 redirectRation: redirectRation,
-                LicenseKey:config.getLicenseKey(process.env.NODE_ENV),
+                LicenseKey: config.getLicenseKey(process.env.NODE_ENV),
                 rationLib: stdRationLib
             });
     }

+ 8 - 4
modules/ration_repository/models/ration_item.js

@@ -9,11 +9,14 @@ let gljDao = require('./glj_repository');
 let rationRepositoryDao = require('./repository_map');
 const scMathUtil = require('../../../public/scMathUtil').getUtil();
 const rationItemModel = mongoose.model('std_ration_lib_ration_items');
+const rationItemModelCopy = mongoose.model('std_ration_lib_ration_items_copy');
 const _rationItemModelBackup = mongoose.model('std_ration_lib_ration_items');
 // const _rationItemModelBackup = mongoose.model('std_ration_lib_ration_items_backup');
 const stdCoeModel = mongoose.model('std_ration_lib_coe_list');
+const stdCoeModelCopy = mongoose.model('std_ration_lib_coe_list_copy');
 const stdRationLibModel = mongoose.model('std_ration_lib_map');
 const stdRationSectionModel = mongoose.model('std_ration_lib_ration_chapter_trees');
+const stdRationSectionModelCopy = mongoose.model('std_ration_lib_ration_chapter_trees_copy');
 const compleRationModel = mongoose.model('complementary_ration_items');
 import STDGLJListModel from '../../std_glj_lib/models/gljModel';
 import InstallationDao from '../models/installation';
@@ -22,6 +25,7 @@ import GljDao from "../../std_glj_lib/models/gljModel";
 const stdGljDao = new GljDao();
 import stdgljutil from "../../../public/cache/std_glj_type_util";
 const stdGLJItemModel = mongoose.model('std_glj_lib_gljList');
+const stdGLJItemModelCopy = mongoose.model('std_glj_lib_gljList_backup');
 
 
 
@@ -40,7 +44,7 @@ async function getIDMapping(counterName, data) {
 
 // 拷贝分类树
 async function copyClassData(sourceLibID, targetLibID) {
-    const sourceClassData = await stdRationSectionModel.find({ rationRepId: sourceLibID }, '-_id').lean();
+    const sourceClassData = await stdRationSectionModelCopy.find({ rationRepId: sourceLibID }, '-_id').lean();
     const IDMapping = await getIDMapping(counter.moduleName.rationTree, sourceClassData);
     const insertData = sourceClassData.map(item => ({
         ...item,
@@ -57,7 +61,7 @@ async function copyClassData(sourceLibID, targetLibID) {
 
 // 拷贝子目换算
 async function copyCoeData(sourceLibID, targetLibID) {
-    const sourceCoeData = await stdCoeModel.find({ libID: sourceLibID }, '-_id').lean();
+    const sourceCoeData = await stdCoeModelCopy.find({ libID: sourceLibID }, '-_id').lean();
     const IDMapping = await getIDMapping(counter.moduleName.coeList, sourceCoeData);
     const insertData = sourceCoeData.map(item => ({
         ...item,
@@ -73,11 +77,11 @@ async function copyCoeData(sourceLibID, targetLibID) {
 
 // 拷贝定额库
 rationItemDAO.prototype.copyLib = async function (sourceLibID, targetLibID, sourceGLJLibID, targetGLJLibID) {
-    const sourceRationData = await rationItemModel.find({ rationRepId: sourceLibID }, '-_id').lean();
+    const sourceRationData = await rationItemModelCopy.find({ rationRepId: sourceLibID }, '-_id').lean();
     const rationIDMapping = await getIDMapping(counter.moduleName.rations, sourceRationData);
     const classIDMapping = await copyClassData(sourceLibID, targetLibID);
     const coeIDMapping = await copyCoeData(sourceLibID, targetLibID);
-    const sourceGLJData = await stdGLJItemModel.find({ repositoryId: sourceGLJLibID }, '-_id code ID').lean();
+    const sourceGLJData = await stdGLJItemModelCopy.find({ repositoryId: sourceGLJLibID }, '-_id code ID').lean();
     const sourceGLJCodeMapping = {};
     sourceGLJData.forEach(glj => sourceGLJCodeMapping[glj.code] = glj.ID);
     const targetGLJData = await stdGLJItemModel.find({ repositoryId: targetGLJLibID }, '-_id code ID').lean();