From 0df7d2cc1ef75c9aa1b3483dc7067a728af7ceb3 Mon Sep 17 00:00:00 2001
From: guoyuji <guoyujie@ng.com>
Date: 星期一, 22 四月 2024 15:44:20 +0800
Subject: [PATCH] 计算金额从后端获取,创建时不改变数值

---
 north-glass-erp/src/main/resources/mapper/sd/OrderOtherMoneyMapper.xml             |    1 
 north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original                             |    0 
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue                  |   43 +++++++-------
 north-glass-erp/target/classes/mapper/sd/OrderMapper.xml                           |   18 +++++
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderOtherMoneyMapper.java |    2 
 north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml                       |   18 +++++
 north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue         |   11 ++-
 north-glass-erp/northglass-erp/src/views/LoginView.vue                             |   16 ++--
 north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java         |   17 +++++
 9 files changed, 86 insertions(+), 40 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue b/north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue
index 3d167c2..3217d84 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue
@@ -1,5 +1,5 @@
 <script setup>
-import {onMounted, reactive, ref, watch} from "vue"
+import {computed, onMounted, reactive, ref, watch} from "vue"
 import {filterChanged} from "@/hook"
 import {useI18n} from "vue-i18n"
 import {ElMessage} from "element-plus";
@@ -36,7 +36,7 @@
     // {field: 'buildingNumber',width:120,  title: '妤煎彿',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
     {field: 'alias', title:'鍏朵粬鍔犲伐',editRender: { name: 'input'},minWith:'130'},
     {field: 'price',  title:'鍗曚环',editRender: { name: 'input'}},
-    {field: 'quantity',  title:'鏁伴噺',editRender: { name: 'input'} },
+    {field: 'quantity',  title:'鏁伴噺' },
     {field: 'money', slots:{default:'default'},  title:'閲戦'}
   ],
   //琛ㄥ崟楠岃瘉
@@ -149,9 +149,12 @@
   xGrid.value.reloadData(prop.otherMoney)
 })
 
-const countAmount = (row)=>{
+const countAmount = computed(() => (row) => {
+  const price = row.price===null?0:row.price
+  const quantity = row.quantity===null?0:row.quantity
   return parseFloat((row.price * row.quantity).toFixed(2))
-}
+})
+
 
 const validate = async () => {
   const errMap = await xGrid.value.validate(true)
diff --git a/north-glass-erp/northglass-erp/src/views/LoginView.vue b/north-glass-erp/northglass-erp/src/views/LoginView.vue
index c821584..e18ae22 100644
--- a/north-glass-erp/northglass-erp/src/views/LoginView.vue
+++ b/north-glass-erp/northglass-erp/src/views/LoginView.vue
@@ -110,14 +110,14 @@
         <img id="img-pic" src="@/assets/img.png" alt="">
       </div>
       <div id="div-login">
-<!--        <el-select-->
-<!--            @change="changeLanguage"-->
-<!--            v-model="language"-->
-<!--            placeholder=" "-->
-<!--            style="float: right;width: 6rem">-->
-<!--          <el-option value="zh"  label="涓枃" />-->
-<!--          <el-option value="en"  label="English" />-->
-<!--        </el-select>-->
+        <el-select
+            @change="changeLanguage"
+            v-model="language"
+            placeholder=" "
+            style="float: right;width: 6rem">
+          <el-option value="zh"  label="涓枃" />
+          <el-option value="en"  label="English" />
+        </el-select>
         <h2>{{$t('login.SysName')}}</h2>
         <el-form
             @submit.native.prevent
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
index 119553f..33ac509 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -24,7 +24,9 @@
 const route = useRoute()
 const xGrid = ref()
 let cellArea = ref()
-const shapeList = ref(['鏅舰','寮傚舰'])
+const shapeList = ref([
+    {name:'鏅舰',value:1}, {name:'寮傚舰',value: 2}
+])
 
 // 瀹氫箟琛ㄥご涓婁紶鏁版嵁
 const titleUploadData = ref({
@@ -445,7 +447,6 @@
   if (typeof str === 'undefined' || str === null || str === '' || str === '\n' || str === '\r'){
     return
   }
-  gridOptions.loading=true
   request.post(`/order/getOrderById/${str}`).then((res) => {
     if(res.code==200){
       titleUploadData.value = res.data.order
@@ -503,7 +504,6 @@
       otherMoney.value =res.data.orderOtherMoneyList
           //鍔犺浇鍓〃鏁版嵁
       xGrid.value.reloadData(orderDetails)
-      gridOptions.loading=false
     }else{
       ElMessage.error(res.msg)
     }
@@ -633,9 +633,9 @@
   list.forEach((item)=>{
     countMoney += parseFloat(item.grossAmount)
   })
-  otherMoney.value.forEach(item => {
-    countMoney+=item.quantity*item.price
-  })
+  // otherMoney.value.forEach(item => {
+  //   countMoney+=item.quantity*item.price
+  // })
   return parseFloat((countMoney).toFixed(2))
 }
 //瀵煎叆鍔熻兘
@@ -699,21 +699,22 @@
    }else if(column.property === 'computeArea'){
      row.computeGrossArea=parseFloat((row.computeArea*row.quantity).toFixed(2))
      row.grossAmount=parseFloat((row.price * row.computeGrossArea).toFixed(2))
-   }else if(column.property.indexOf('otherColumns.M')>-1){
-     let quantity = 0
-     xGrid.value.getTableData().fullData.forEach(item => {
-       let orderQuantity = isNaN(item.quantity) ? 0 : item.quantity
-       let value = isNaN((getNestedProperty(item,column.property)*1)) ? 0 : (getNestedProperty(item,column.property)*1)
-       quantity += orderQuantity*value
-     })
-     if(!isNaN(quantity)){
-       otherMoney.value.forEach(item => {
-         if(item.column===column.property.split('.')[1]){
-           item.quantity = quantity
-         }
-       })
-     }
    }
+   // else if(column.property.indexOf('otherColumns.M')>-1){
+   //   let quantity = 0
+   //   xGrid.value.getTableData().fullData.forEach(item => {
+   //     let orderQuantity = isNaN(item.quantity) ? 0 : item.quantity
+   //     let value = isNaN((getNestedProperty(item,column.property)*1)) ? 0 : (getNestedProperty(item,column.property)*1)
+   //     quantity += orderQuantity*value
+   //   })
+   //   if(!isNaN(quantity)){
+   //     otherMoney.value.forEach(item => {
+   //       if(item.column===column.property.split('.')[1]){
+   //         item.quantity = quantity
+   //       }
+   //     })
+   //   }
+   // }
   titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString()
 
 
@@ -907,7 +908,7 @@
         </template>
         <template #shape_edit="{ row }">
           <vxe-select v-model="row.shape" transfer>
-            <vxe-option v-for="item in shapeList" :key="item" :value="item" :label="item" />
+            <vxe-option v-for="item in shapeList" :key="item" :value="item.value" :label="item.name" />
           </vxe-select>
         </template>
 
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderOtherMoneyMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderOtherMoneyMapper.java
index 3fca4c2..a2a74c6 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderOtherMoneyMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderOtherMoneyMapper.java
@@ -9,5 +9,5 @@
 @Mapper
 public interface OrderOtherMoneyMapper extends BaseMapper<OrderOtherMoney> {
 
-    List<OrderOtherMoney> findById(String id);
+    List<OrderOtherMoney> findById(String orderId);
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
index ba6e55e..4008094 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -1,7 +1,9 @@
 package com.example.erp.service.sd;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -112,14 +114,23 @@
             OrderDetails.get(i).setOrderId(orderId);
             OrderDetails.get(i).setPerimeter(OrderDetails.get(i).getWidth()*OrderDetails.get(i).getHeight()*2/1000);
             OrderDetails.get(i).setWeight(1.0);
+            Map<String,Double> otherColumns = JSON.parseObject(OrderDetails.get(i).getOtherColumns(), new TypeReference<Map<String, Double>>(){});
+            int finalI = i;
+            otherColumns.forEach((key, value) ->{
+                orderOtherMoneyList.forEach(orderOtherMoney ->{
+                    if(orderOtherMoney.getColumn().equals(key)){
+                        orderOtherMoney.setQuantity (orderOtherMoney.getQuantity()==null?0:orderOtherMoney.getQuantity());
+                        orderOtherMoney.setQuantity(((value==null?0:value)*OrderDetails.get(finalI).getQuantity()));
+                    }
+                });
+
+            });
         }
 
 
 
         //寰�鏄庣粏琛ㄦ彃鏁版嵁
         orderDetailMapper.insertBatch(OrderDetails);
-        //淇敼璁㈠崟涓昏〃闈㈢Н涓庡懆闀夸互鍙婇噸閲�
-        orderMapper.updateOrderParameter(orderId);
         //寰�灏忕墖琛ㄤ紶鍏ヤ骇鍝佹暟鎹�
         orderGlassDetailMapper.insertOrderGlassDetail(orderId);
         //寰�璁㈠崟鍏朵粬閲戦鍓〃浼犲叆鏁版嵁
@@ -131,6 +142,8 @@
             }
             orderOtherMoneyMapper.insert(orderOtherMoney);
         });
+        //淇敼璁㈠崟涓昏〃闈㈢Н涓庡懆闀夸互鍙婇噸閲�
+        orderMapper.updateOrderParameter(orderId);
 
         //鏌ヨ璁㈠崟灏忕墖琛ㄨ幏鍙栧伐鑹轰紶鍏ュ皬鐗囧伐鑹鸿〃
         //List<OrderGlassDetail> orderGlassDetails = orderGlassDetailMapper.selectOrderGlassDetail(orderId);
diff --git a/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
index 770d133..6af7965 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -17,10 +17,24 @@
     <update id="updateOrderParameter">
         update `order` o
         left join
-            (select a.order_id,round(sum(a.perimeter),2) as aa,sum(a.quantity) as b,sum(a.compute_gross_area)  as c
-             from sd.order_detail as a group by a.order_id)  od
+            (select a.order_id,
+                    round(sum(a.perimeter),2) as aa,
+                    sum(a.quantity) as b,
+                    sum(a.compute_gross_area)  as c,
+                   sum(a.gross_amount) as 'detailAmount'
+             from sd.order_detail as a group by a.order_id
+            ) as od
             on o.order_id = od.order_id
+        left join (select oom.order_id,
+                          sum(oom.money) as 'money'
+                   from order_other_money as oom
+                   where
+                       oom.order_id = #{orderId}
+                   group by oom.order_id
+                   ) as c
+        on c.order_id = o.order_id
         set
+            o.money = ifnull(od.detailAmount,0)+ifnull(c.money,0),
             o.quantity = od.b,
             o.area = od.c,
             o.perimeter= od.aa
diff --git a/north-glass-erp/src/main/resources/mapper/sd/OrderOtherMoneyMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/OrderOtherMoneyMapper.xml
index 2d5ce59..fbe2e09 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/OrderOtherMoneyMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/OrderOtherMoneyMapper.xml
@@ -10,6 +10,7 @@
         from order_other_money as a
         left join  basic_other_money as b
         on a.`column` = b.`column`
+        where a.order_id = #{orderId}
     </select>
 
 
diff --git a/north-glass-erp/target/classes/mapper/sd/OrderMapper.xml b/north-glass-erp/target/classes/mapper/sd/OrderMapper.xml
index 770d133..6af7965 100644
--- a/north-glass-erp/target/classes/mapper/sd/OrderMapper.xml
+++ b/north-glass-erp/target/classes/mapper/sd/OrderMapper.xml
@@ -17,10 +17,24 @@
     <update id="updateOrderParameter">
         update `order` o
         left join
-            (select a.order_id,round(sum(a.perimeter),2) as aa,sum(a.quantity) as b,sum(a.compute_gross_area)  as c
-             from sd.order_detail as a group by a.order_id)  od
+            (select a.order_id,
+                    round(sum(a.perimeter),2) as aa,
+                    sum(a.quantity) as b,
+                    sum(a.compute_gross_area)  as c,
+                   sum(a.gross_amount) as 'detailAmount'
+             from sd.order_detail as a group by a.order_id
+            ) as od
             on o.order_id = od.order_id
+        left join (select oom.order_id,
+                          sum(oom.money) as 'money'
+                   from order_other_money as oom
+                   where
+                       oom.order_id = #{orderId}
+                   group by oom.order_id
+                   ) as c
+        on c.order_id = o.order_id
         set
+            o.money = ifnull(od.detailAmount,0)+ifnull(c.money,0),
             o.quantity = od.b,
             o.area = od.c,
             o.perimeter= od.aa
diff --git a/north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original b/north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original
index 65b8d2f..9435a71 100644
--- a/north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original
+++ b/north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original
Binary files differ

--
Gitblit v1.8.0