From 82a5de6d2ec80b45660149c84be28734032562f6 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期五, 11 十月 2024 15:21:53 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override

---
 north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java |  122 +++++++++++++++++++++++++++++++++-------
 1 files changed, 99 insertions(+), 23 deletions(-)

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 c23c3ab..d5311e8 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
@@ -113,6 +113,9 @@
             log.setContent(orderMap.toString());
             log.setFunction("saveOrderTitle淇濆瓨琛ㄥご:"+order.getOrderId());
 
+            Order order1 = orderMapper.selectOrderId(order.getOrderId());
+            order.setCalculateType(order1.getCalculateType());
+
             LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>();
             updateWrapper.eq(Order::getOrderId, order.getOrderId());
             order.setCreateTime(null);
@@ -217,9 +220,12 @@
     //鎻掑叆鍏朵粬鍓〃鏁版嵁锛岃鍏朵粬鏂规硶寮曠敤
     public void insertOtherDetail(String orderId,List<OrderDetail> OrderDetails,List<OrderOtherMoney> orderOtherMoneyList) {
         //鍏堟妸鍏朵粬閲戦鍓〃鐨勯噾棰濅笌鏁伴噺缃�0
-        orderOtherMoneyList.forEach(orderOtherMoney -> {
-            orderOtherMoney.setQuantity(0.0);
-        });
+        if(orderOtherMoneyList!=null){
+            orderOtherMoneyList.forEach(orderOtherMoney -> {
+                orderOtherMoney.setQuantity(0.0);
+            });
+        }
+
 
         //寰幆缁欒鍗曟槑缁嗚〃瀛楁娣诲姞搴忓彿鍜屽懆闀�
         for (int i = 0; i < OrderDetails.size(); i++) {
@@ -271,14 +277,19 @@
         orderDetailMapper.insertBatch(OrderDetails);
         //寰�灏忕墖琛ㄤ紶鍏ヤ骇鍝佹暟鎹�
         orderGlassDetailMapper.insertOrderGlassDetail(orderId);
-        orderOtherMoneyList.forEach(orderOtherMoney ->{
-            orderOtherMoney.setId(null);
-            orderOtherMoney.setOrderId(orderId);
-            if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){
-                orderOtherMoney.setMoney((orderOtherMoney.getQuantity()*orderOtherMoney.getPrice()));
-            }
-            orderOtherMoneyMapper.insert(orderOtherMoney);
-        });
+        if(orderOtherMoneyList!=null){
+            orderOtherMoneyList.forEach(orderOtherMoney ->{
+                orderOtherMoney.setId(null);
+                orderOtherMoney.setOrderId(orderId);
+                if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){
+                    orderOtherMoney.setMoney((orderOtherMoney.getQuantity()*orderOtherMoney.getPrice()));
+                }else {
+                    orderOtherMoney.setMoney(0.0);
+                }
+                orderOtherMoneyMapper.insert(orderOtherMoney);
+            });
+        }
+
         //淇敼璁㈠崟涓昏〃闈㈢Н涓庡懆闀夸互鍙婇噸閲�
         orderMapper.updateOrderParameter(orderId);
 
@@ -391,26 +402,69 @@
         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);
-        double money = 0;
-        for (OrderDetail orderDetail : OrderDetails) {
-            orderDetail =  updateOrderMoneyComputed(orderDetail,order.getCalculateType());
-            BigDecimal getGrossAmount= BigDecimal.valueOf(orderDetail.getGrossAmount());
-            money+=getGrossAmount.doubleValue();
+
+        if(orderOtherMoneyList != null ){
+            orderOtherMoneyList = orderOtherMoneyList.stream().filter(o -> o.getColumn().indexOf("M")==0).collect(Collectors.toList());
         }
+        if(orderOtherMoneyList!=null){
+            orderOtherMoneyList.forEach(orderOtherMoney -> {
+                orderOtherMoney.setQuantity(0.0);
+            });
+        }
+
         Log log = new Log();
         log.setOperator(order.getCreator());
         log.setOperatorId(order.getCreatorId());
         log.setContent(jsonObject.toString());
         log.setFunction("updateOrderMoney閲戦閲嶇疆:"+order.getOrderId());
 
-        orderOtherMoneyList.forEach(orderOtherMoney -> {
-            if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){
-                orderOtherMoney.setMoney((orderOtherMoney.getQuantity()*orderOtherMoney.getPrice()));
+        //鍒犻櫎鍏朵粬閲戦鏄庣粏琛�
+        orderOtherMoneyMapper.delete(new LambdaQueryWrapper<OrderOtherMoney>().eq(OrderOtherMoney::getOrderId, order.getOrderId()));
+        List<OrderOtherMoney> orderOtherMoneyLists=orderOtherMoneyList;
+
+        double money = 0;
+        for (OrderDetail orderDetail : OrderDetails) {
+            orderDetail =  updateOrderMoneyComputed(orderDetail,order.getCalculateType());
+            BigDecimal getGrossAmount= BigDecimal.valueOf(orderDetail.getGrossAmount());
+            money+=getGrossAmount.doubleValue();
+
+            Map<String,Object> otherColumns = JSON.parseObject(orderDetail.getOtherColumns(), new TypeReference<Map<String, Object>>(){});
+            if(otherColumns!=null){
+                otherColumns.values().removeIf(value -> value == null || value.equals(""));
+                orderDetail.setOtherColumns(JSON.toJSONString(otherColumns));
+
+                OrderDetail finalOrderDetail = orderDetail;
+                otherColumns.forEach((key, value) ->{
+
+                    if(value!=null && !value.equals("") && key.contains("M")) {
+                        orderOtherMoneyLists.forEach(orderOtherMoney -> {
+                            if (orderOtherMoney.getColumn().equals(key)) {
+                                orderOtherMoney.setQuantity(
+                                        orderOtherMoney.getQuantity()+(Double.parseDouble((String) value)  * finalOrderDetail.getQuantity()));
+                            }
+                        });
+                    }
+
+                });
+            }else{
+                orderDetail.setOtherColumns("{}");
             }
-            orderOtherMoneyMapper.update(orderOtherMoney,new QueryWrapper<OrderOtherMoney>()
-                    .eq("order_id",orderOtherMoney.getOrderId())
-                    .eq("`column`",orderOtherMoney.getColumn()));
-        });
+
+        }
+
+        if(orderOtherMoneyLists!=null){
+            orderOtherMoneyLists.forEach(orderOtherMoney ->{
+                orderOtherMoney.setId(null);
+                orderOtherMoney.setOrderId(order.getOrderId());
+                if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){
+                    orderOtherMoney.setMoney((orderOtherMoney.getQuantity()*orderOtherMoney.getPrice()));
+                }else {
+                    orderOtherMoney.setMoney(0.0);
+                }
+                orderOtherMoneyMapper.insert(orderOtherMoney);
+            });
+        }
+
         order.setMoney(money+orderOtherMoneyMapper.selectGrossAmount(order.getOrderId()));
         order.setOtherMoney(orderOtherMoneyMapper.selectGrossAmount(order.getOrderId()));
         orderMapper.updateMoney(order);
@@ -688,12 +742,33 @@
         JSONObject orderJson = new JSONObject(map);
         String oldOrderId = orderJson.getString("oldOrderId");
         String newOrderId = orderJson.getString("newOrderId");
+        String orderIdType = orderJson.getString("orderIdType");
+
+        Log log = new Log();
+        log.setContent(map.toString());
+        log.setFunction("updateOrderId淇敼璁㈠崟鍙�");
+        log.setOperator(orderJson.getString("creator"));
+
+
         if(!Objects.equals(newOrderId, oldOrderId)){
             if(newOrderId.length()!=10){
                 return "false4";
             }
             if(!newOrderId.substring(2, 10).matches("\\d+")){
                 return "false5";
+            }
+            if(Objects.equals(orderIdType, "day")){
+                if(orderMapper.selectOrderIdDay(oldOrderId)==1){
+                    return "false6";
+                }
+            }else if(Objects.equals(orderIdType, "month")){
+                if(orderMapper.selectOrderIdMonth(oldOrderId)==1){
+                    return "false6";
+                }
+            }else if(Objects.equals(orderIdType, "year")){
+                if(orderMapper.selectOrderIdYear(oldOrderId)==1){
+                    return "false6";
+                }
             }
             String substring = newOrderId.substring(1, 3);
             Integer substringInt = Integer.parseInt(newOrderId.substring(2, 10));
@@ -707,6 +782,7 @@
             if(count1>0 && count2==0){
                 orderMapper.updateOrderId(oldOrderId,newOrderId);
                 saveState= "true";
+                logService.saveLog(log);
             }else if(count1==0){
                 saveState= "false1";
                 ;

--
Gitblit v1.8.0