From 4521e55b7ce2840dcb91340c17f3159892bcc14d Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期三, 24 十二月 2025 13:32:29 +0800
Subject: [PATCH] 修改订单金额时,根据情况是否调用发货单修改金额

---
 north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml             |   43 ++++++++++++++
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue                 |   32 +++++++++-
 north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue           |    4 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java |    9 +++
 north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml                      |    4 +
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java          |    2 
 north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java     |   47 +++++++++++++++
 north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java        |   12 +++
 8 files changed, 147 insertions(+), 6 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
index 4f080d7..cb4bf47 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -224,7 +224,7 @@
         //绂佺敤鎸夐挳
         gridOptions.toolbarConfig.buttons[2].disabled  = true
         gridOptions.toolbarConfig.buttons[3].disabled = true
-        //gridOptions.toolbarConfig.buttons[4].disabled = false
+        //gridOptions.toolbarConfig.buttons[4].disabled = true
         //鏄剧ず澶嶉�夋
         xGrid.value.showColumn("select")
         gridOptions.loading=false
@@ -390,7 +390,7 @@
       {'code': 'addToExamine', 'name': t('reportingWorks.saveAndReview'),status: 'primary',icon: 'vxe-icon-save'},
       {'code': 'toExamine', 'name': t('basicData.review'),status: 'primary'},
       {'code': 'CounterExamination', 'name': t('basicData.cancelReview'),status: 'primary'},
-      //{'code': 'addOtherOrders','name': t('delivery.orderAdd'),'status': 'primary'}
+      //{'code': 'addOtherOrders','name': t('delivery.orderAdd'),status: 'primary'}
       //{'code': 'glassShelf', 'name': t('finishedGlassShelf.finishedGlassShelfEmit'),status: 'primary'}
     ],
     /*import: false,
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 64c5d54..092233c 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
@@ -57,6 +57,8 @@
 
 const orderTypeState = ref(0)
 
+let deliveryCount = ref(0)
+
 // 瀹氫箟琛ㄥご涓婁紶鏁版嵁
 const titleUploadData = ref({
   project:'',
@@ -330,7 +332,29 @@
         }
         case 'updateMoney': {
           $grid.clearEdit()
-          updateMoney()
+          deliveryCount.value=0
+          if(deliveryCount.value>0){
+            ElMessageBox.confirm("璁㈠崟宸插瓨鍦ㄦ湭瀹℃牳鐨勫彂璐у崟锛屾槸鍚︿慨鏀规湭瀹℃牳鍙戣揣鍗曠殑鍗曚环骞堕噸鏂拌绠楅噾棰�",
+                t('order.msg.warning'),
+                {
+                  confirmButtonText: t('basicData.confirmButtonText'),
+                  cancelButtonText: t('basicData.cancelButtonText'),
+                  distinguishCancelAndClose: true,
+                  type: 'warning',
+                }
+            ).then(()=>{
+              updateMoney(1)
+            }).catch((action)=>{
+              if (action === 'cancel') {
+                updateMoney(2)
+              } else if (action === 'close') {
+              }
+            })
+
+          }else{
+            updateMoney(2)
+          }
+
           break
         }
         case 'Craft': {
@@ -965,6 +989,7 @@
   request.post(`/order/getOrderById/${str}`).then((res) => {
     if(res.code==200){
       titleUploadData.value = res.data.order
+      deliveryCount.value = res.data.deliveryCount
       const customer = titleSelectJson.value.customer.filter(item => item.id === titleUploadData.value.customerId)
       projects.value = customer[0].projectList
       newOrderId.value=titleUploadData.value.orderId
@@ -1285,13 +1310,14 @@
 }
 
 //鏇存柊閲戦閲嶇疆
-const updateMoney = () => {
+const updateMoney = (type) => {
   titleUploadData.value.creatorId=userStore.user.userId
   titleUploadData.value.creator=userStore.user.userName
   const updateData = {
     order: titleUploadData.value,
     detail: xGrid.value.getTableData().fullData,
-    otherMoney:otherMoney.value
+    otherMoney:otherMoney.value,
+    type:type
   }
   request.post(`/order/updateOrderMoney`,updateData).then(res => {
     if (res.code == 200){
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
index 4c6de76..8ae4813 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
@@ -100,4 +100,13 @@
 
     OrderDetail selectOrderDetailDeliveryCount(@Param("orderDetail") OrderDetail orderDetail);
 
+    List<DeliveryDetail> getDeliverDetailOrderNumber(@Param("orderId") String orderId,
+                                         @Param("orderNumber") Integer orderNumber,@Param("deliveryId") String deliveryId);
+
+    List<Delivery> getDeliverOrderNumber(@Param("orderId") String orderId,
+                                                     @Param("orderNumber") Integer orderNumber);
+
+    Boolean updateDeliveryDetailmonye(@Param("price") Double price,@Param("deliveryDetail") DeliveryDetail deliveryDetail);
+    Boolean updateDeliverymonye(@Param("deliveryId") String deliveryId,@Param("money") Double money);
+
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
index 4e19bf2..fa8b8cd 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
@@ -71,4 +71,6 @@
 
     List<Map<String,Object>> selectProcessAttributeConfigOne();
     List<Map<String,Object>> selectProcessAttributeConfigTow(String belong);
+
+    Integer selectDeliveryStateConut(String orderId);
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
index 8eb787d..3e6dd5a 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -1015,4 +1015,51 @@
         map.put("totalSum",totalSum);
         return map;
     }
+
+    public boolean updateDeliveryMoney(OrderDetail orderDetail,Order order) {
+        List<Delivery> deliveryList=deliveryDetailMapper.getDeliverOrderNumber(orderDetail.getOrderId(),orderDetail.getOrderNumber());
+        for (Delivery delivery : deliveryList) {
+            if(delivery.getDeliveryState()==0){
+                List<DeliveryDetail> deliveryDetailList=deliveryDetailMapper.getDeliverDetailOrderNumber(orderDetail.getOrderId(),orderDetail.getOrderNumber(),delivery.getDeliveryId());
+                for (DeliveryDetail deliveryDetail : deliveryDetailList) {
+                    deliveryDetail = updateOrderMoneyComputeds(deliveryDetail,orderDetail,order.getCalculateType());
+                    deliveryDetailMapper.updateDeliveryDetailmonye(orderDetail.getPrice(),deliveryDetail);
+                }
+                BigDecimal money = new BigDecimal("0");
+                List<DeliveryDetail> deliveryDetailListNew=deliveryDetailMapper.getIsNotDeliveryDetail(delivery.getDeliveryId());
+                for (DeliveryDetail deliveryDetail : deliveryDetailListNew) {
+                    BigDecimal getMoney= BigDecimal.valueOf(deliveryDetail.getMoney());
+                    money=money.add(getMoney);
+                }
+                deliveryDetailMapper.updateDeliverymonye(delivery.getDeliveryId(), (double) Math.round(money.doubleValue()));
+
+            }
+
+        }
+        return true;
+    }
+
+    private DeliveryDetail updateOrderMoneyComputeds(DeliveryDetail deliveryDetail,OrderDetail orderDetail, Integer calculateType) {
+        BigDecimal getPrice= BigDecimal.valueOf(orderDetail.getPrice());
+        BigDecimal getQuantity= BigDecimal.valueOf(deliveryDetail.getQuantity());
+        BigDecimal getComputeGrossArea= BigDecimal.valueOf(deliveryDetail.getArea());
+        BigDecimal getComputeArea= BigDecimal.valueOf(orderDetail.getComputeArea());
+        BigDecimal getWidth= BigDecimal.valueOf(orderDetail.getWidth());
+        BigDecimal getHeight= BigDecimal.valueOf(orderDetail.getHeight());
+        if (calculateType == 3) {
+            deliveryDetail.setMoney(getPrice.multiply(getQuantity).setScale(2, RoundingMode.HALF_UP).doubleValue());
+        }else if (calculateType == 4) {
+            if(Objects.equals(orderDetail.getArea(), orderDetail.getComputeArea())&&Objects.equals(orderDetail.getGrossArea(), orderDetail.getComputeGrossArea())){
+                deliveryDetail.setMoney(getWidth.multiply(getHeight).multiply(getQuantity).multiply(getPrice).
+                        divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue());
+            }else{
+                deliveryDetail.setMoney(getPrice.multiply(getComputeGrossArea).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            }
+        }else if (calculateType == 1){
+            deliveryDetail.setMoney(getPrice.multiply(getComputeArea).multiply(getQuantity).setScale(2, RoundingMode.HALF_UP).doubleValue());
+        }else{
+            deliveryDetail.setMoney(getPrice.multiply(getComputeGrossArea).setScale(2, RoundingMode.HALF_UP).doubleValue());
+        }
+        return deliveryDetail;
+    }
 }
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 7075172..d52563d 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
@@ -52,7 +52,9 @@
     private final BasicOtherMoneyMapper basicOtherMoneyMapper;
 
     private final OrderProcessDetailMapper orderProcessDetailMapper;
-    public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService, OrderOtherMoneyMapper orderOtherMoneyMapper, ProductMapper productMapper, LogService logService, WorkOrderMapper workOrderMapper, FlowCardMapper flowCardMapper, BasicOtherMoneyMapper basicOtherMoneyMapper) {
+
+    private final DeliveryService deliveryService;
+    public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService, OrderOtherMoneyMapper orderOtherMoneyMapper, ProductMapper productMapper, LogService logService, WorkOrderMapper workOrderMapper, FlowCardMapper flowCardMapper, BasicOtherMoneyMapper basicOtherMoneyMapper,DeliveryService deliveryService) {
         this.orderMapper = orderMapper;
         this.orderDetailMapper = orderDetailMapper;
         this.orderGlassDetailMapper = orderGlassDetailMapper;
@@ -64,6 +66,7 @@
         this.workOrderMapper = workOrderMapper;
         this.flowCardMapper = flowCardMapper;
         this.basicOtherMoneyMapper = basicOtherMoneyMapper;
+        this.deliveryService = deliveryService;
     }
 
     public boolean saveOrder(Map<String,Object> orderMap) throws Exception {
@@ -432,11 +435,13 @@
         List<OrderDetail> orderDetails = orderDetailMapper.selectList(new QueryWrapper<OrderDetail>().eq("order_id",id));
         List<OrderOtherMoney> orderOtherMoneyList = orderOtherMoneyMapper.findById(id);
         List<Map<String,String>> orderFileList = orderMapper.selectOrderFileList(id);
+        Integer deliveryCount = orderMapper.selectDeliveryStateConut(id);
         Map<String,Object> map = new HashMap<>();
         map.put("order",order);
         map.put("orderDetails",orderDetails);
         map.put("orderOtherMoneyList",orderOtherMoneyList);
         map.put("orderFile",orderFileList);
+        map.put("deliveryCount",deliveryCount);
         return map;
     }
     //璁㈠崟瀹℃牳
@@ -491,6 +496,7 @@
 
     public boolean updateOrderMoney(Map<String, Object> map) {
         JSONObject jsonObject = new JSONObject(map);
+        int type = Integer.parseInt(jsonObject.get("type").toString());
         Order order = JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("order")), Order.class);
         List<OrderDetail> OrderDetails = JSONArray.parseArray(JSONObject.toJSONString(jsonObject.get("detail")), OrderDetail.class);
         List<OrderOtherMoney> orderOtherMoneyList = JSONArray.parseArray(JSONObject.toJSONString(jsonObject.get("otherMoney")), OrderOtherMoney.class);
@@ -510,12 +516,16 @@
         log.setContent(jsonObject.toString());
         log.setFunction("updateOrderMoney閲戦閲嶇疆:"+order.getOrderId());
 
+
         //鍒犻櫎鍏朵粬閲戦鏄庣粏琛�
         orderOtherMoneyMapper.delete(new LambdaQueryWrapper<OrderOtherMoney>().eq(OrderOtherMoney::getOrderId, order.getOrderId()));
         List<OrderOtherMoney> orderOtherMoneyLists=orderOtherMoneyList;
 
         double money = 0;
         for (OrderDetail orderDetail : OrderDetails) {
+            if(type==1){
+                deliveryService.updateDeliveryMoney(orderDetail,order);
+            }
             orderDetail =  updateOrderMoneyComputed(orderDetail,order.getCalculateType());
             BigDecimal getGrossAmount= BigDecimal.valueOf(orderDetail.getGrossAmount());
             money+=getGrossAmount.doubleValue();
diff --git a/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
index e921024..2cf1f94 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
@@ -90,6 +90,9 @@
         <result column="freight" property="delivery.freight"/>
         <result column="freight_price" property="delivery.freightPrice"/>
         <result column="freight_quantity" property="delivery.freightQuantity"/>
+        <result column="delivery_state" property="delivery.deliveryState"/>
+        <result column="money" property="delivery.money"/>
+        <result column="other_money" property="delivery.otherMoney"/>
 
         <result column="product_id" property="orderDetail.productId"/>
         <result column="product_name" property="orderDetail.productName"/>
@@ -1400,4 +1403,44 @@
         group by dd.delivery_id,dd.order_id,od.product_id
         order by dd.delivery_id,dd.delivery_number
     </select>
+
+
+    <select id="getDeliverDetailOrderNumber" resultMap="selectDeliveryDetail">
+        select dd.order_id,
+        dd.order_Number,
+        dd.delivery_number,
+        dd.delivery_id,
+        dd.quantity,
+        dd.price,
+        dd.area,
+        dd.money,
+        dd.other_columns,
+        d.delivery_state,
+        d.money
+        from sd.delivery_detail dd
+        left join sd.delivery d on dd.delivery_id=d.delivery_id
+        where dd.order_id=#{orderId} and dd.order_number=#{orderNumber} and dd.delivery_id=#{deliveryId}
+
+    </select>
+
+    <select id="getDeliverOrderNumber">
+        select
+               d.delivery_id,
+               d.delivery_state,
+               d.money
+        from sd.delivery_detail dd
+                 left join sd.delivery d on dd.delivery_id=d.delivery_id
+        where dd.order_id=#{orderId} and dd.order_number=#{orderNumber}
+        group by d.delivery_id
+    </select>
+
+    <update id="updateDeliveryDetailmonye">
+        update sd.delivery_detail set price=#{price},money=#{deliveryDetail.money}
+            where delivery_id=#{deliveryDetail.deliveryId} and delivery_number=#{deliveryDetail.deliveryNumber}
+    </update>
+
+    <update id="updateDeliverymonye">
+        update sd.delivery set money=#{money}
+        where delivery_id=#{deliveryId}
+    </update>
 </mapper>
\ No newline at end of file
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 a7b5afd..029c7ca 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -449,4 +449,8 @@
         where level=2 and belong=#{belong}
 
     </select>
+
+    <select id="selectDeliveryStateConut">
+        select count(*) from sd.delivery_detail dd left join sd.delivery d on dd.delivery_id=d.delivery_id where dd.order_id= #{orderId} and d.delivery_state=0
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0