Browse Source

Merge branch 'master' of http://192.168.1.41:3000/SmartCost/YangHuOperation

TonyKang 5 years ago
parent
commit
a2912fb004

+ 3 - 4
Dockerfile

@@ -1,17 +1,16 @@
 FROM operationbase:2.0 as build
 
-RUN mv /ConstructionOperation /YangHuOperation
 
-WORKDIR /YangHuOperation
+WORKDIR /ConstructionOperation
 
-COPY package.json /YangHuOperation
+COPY package.json /ConstructionOperation
 
 RUN mkdir tmp \
     && cnpm install
 
 FROM base-alpine:latest
 
-COPY --from=build /YangHuOperation /YangHuOperation
+COPY --from=build /ConstructionOperation /YangHuOperation
 
 COPY . /YangHuOperation
 

+ 10 - 2
modules/all_models/welcome_setting.js

@@ -13,7 +13,15 @@ let modelSchema = {
         index: true
     },
     compilationId: String,
-    showType:{type:Number,default:0},// 1 每天一次 2 每次登录显示,0 关闭
-    context:String
+    normal:{
+      showType:{type:Number,default:0},// 1 每天一次 2 每次登录显示,0 关闭
+      context:String
+    },
+    // 专业用户
+    professional: {
+       showType:{type:Number,default:0},// 1 每天一次 2 每次登录显示,0 关闭
+       context:String
+    }
+    
 };
 mongoose.model(collectionName, new Schema(modelSchema, {versionKey: false, collection: collectionName}));

+ 30 - 1
modules/ration_repository/models/ration_item.js

@@ -21,6 +21,35 @@ import stdgljutil  from "../../../public/cache/std_glj_type_util";
 
 var rationItemDAO = function(){};
 
+// 由于导入excel时,excel数据存在负的工程量,所以导入后一些定额人材机的消耗量可能为负,需要处理
+rationItemDAO.prototype.handleMinusQuantity = async function() {
+    const updateTask = [];
+    const repIDs = new Set();
+    const rations = await rationItemModel.find({'rationGljList.consumeAmt': {$lt: 0}}).lean();
+    for (const ration of rations) {
+        repIDs.add(ration.rationRepId);
+        const rationGLJList = [];
+        for (const rGLJ of ration.rationGljList) {
+            rationGLJList.push({
+                gljId: rGLJ.gljId,
+                consumeAmt: Math.abs(rGLJ.consumeAmt),
+                proportion: rGLJ.proportion
+            });
+        }
+        updateTask.push({
+            updateOne: {
+                filter: { ID: ration.ID },
+                update: { $set: { rationGljList: rationGLJList } }
+            }
+        });
+    }
+    if (updateTask.length) {
+        await rationItemModel.bulkWrite(updateTask);
+    }
+    console.log(`repIDs`);
+    console.log(repIDs);
+};
+
 rationItemDAO.prototype.prepareInitData = async function (rationRepId) {
     // 定额库
     const libTask = stdRationLibModel.findOne({ID: rationRepId}, '-_id ID dispName gljLib');
@@ -743,7 +772,7 @@ rationItemDAO.prototype.batchAddFromExcel = async function(rationRepId, data) {
             }
             const tmpRationGlj = {
                 gljId: stdGLJList[tmp[1]],
-                consumeAmt: tmp[4],
+                consumeAmt: Math.abs(tmp[4]),
                 proportion: 0,
             };
             lastData.rationGljList.push(tmpRationGlj);

+ 14 - 4
modules/users/controllers/welcome_controller.js

@@ -11,7 +11,7 @@ const uuidV1 = require('uuid/v1');
 class WelcomeController extends BaseController {
     async index(request, response) {
         let id = request.query.id;
-
+        let type = request.query.type;
         let compilationList = [];
         let selectedCompilation = {};
         try {
@@ -38,11 +38,18 @@ class WelcomeController extends BaseController {
         if (selectedCompilation.example && Array.isArray(selectedCompilation.example)) {
             selectedCompilation.example = selectedCompilation.example.join(';');
         }
-        let setting =await welcomeSettingModel.findOne({compilationId:selectedCompilation._id.toString()});
+        let welcome_setting =await welcomeSettingModel.findOne({compilationId:selectedCompilation._id.toString()});
+        let setting = null;
+        let settingID="";
+        if(welcome_setting){
+          setting = type== "professional"?welcome_setting.professional:welcome_setting.normal;
+          settingID = welcome_setting.ID;
+        }
         if(!setting) setting = {showType:0,context:""};
-        console.log(setting)
         let renderData = {
             id: id,
+            type:type,
+            settingID:settingID,
             compilationList: compilationList,
             selectedCompilation: selectedCompilation,
             layout: 'users/views/layout/layout',
@@ -54,7 +61,10 @@ class WelcomeController extends BaseController {
 
     async save(request, response){
         let data = request.body;
-        let setting = {compilationId:data.compilationId,showType:data.showType,context:data.context};
+        let setting = {compilationId:data.compilationId};
+        let type = data.type;
+        let info = {showType:data.showType,context:data.context}
+        type == "professional"?setting.professional = info:setting.normal = info
         if(!data.ID || data.ID == ""){
             setting.ID = uuidV1();
             await welcomeSettingModel.create(setting);

+ 2 - 1
package.json

@@ -36,6 +36,7 @@
     "lz-string": "^1.4.4"
   },
   "scripts": {
-    "start": "C:\\Users\\mai\\AppData\\Roaming\\npm\\babel-node.cmd operation.js"
+    "start": "C:\\Users\\mai\\AppData\\Roaming\\npm\\babel-node.cmd operation.js",
+    "dev_server":"SET NODE_ENV=qa&& babel-node operation.js"
   }
 }

+ 7 - 2
web/users/views/welcome/index.html

@@ -25,12 +25,17 @@
             </div>
         </div>
             <div class="content-wrap">
-                <div class="c-header">
+                <div class="c-header" style="padding:0">
+                  <ul class="nav nav-tabs">
+                    <li role="presentation" <% if( type != "professional") { %>class="active"<% } %> ><a href="/welcome?id=<%= selectedCompilation._id.toString()%>">免费版</a></li>
+                    <li role="presentation" <% if( type == "professional") { %>class="active"<% } %>><a href="/welcome?id=<%= selectedCompilation._id.toString()%>&type=professional">专业版</a></li>
+                  </ul>
                 </div>
                 <div class="c-body">
                     <form method="post" action="/welcome/save" enctype="application/x-www-form-urlencoded21">
-                        <input type="hidden" name="ID" value="<%= setting.ID%>">
+                        <input type="hidden" name="ID" value="<%= settingID%>">
                         <input type="hidden" name="compilationId" value="<%= selectedCompilation._id.toString()%>">
+                        <input type="hidden" name="type" value="<%= type%>">
                     <div class="form-group">
                         <label for="title">显示频率</label>
                         <div class="radio">