From 27b3352a6a7f514c98cce083eded6c3bb9e3f519 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期三, 15 一月 2025 10:50:10 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java |  109 ++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 85 insertions(+), 24 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 d919d2f..1a9ad90 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);
@@ -162,7 +165,7 @@
 
     private String getOrderId(String dateType){
         String orderId = null;
-        if(dateType.equals("day")){
+        if(dateType==null || dateType.equals("day")){
             Integer maxOrderId = orderMapper.selectMaxOrderId();
             //鏌ヨ璁㈠崟id锛屽苟涓旇嚜澧�
             String formattedNumber = String.format("%02d", maxOrderId+1);
@@ -217,15 +220,19 @@
     //鎻掑叆鍏朵粬鍓〃鏁版嵁锛岃鍏朵粬鏂规硶寮曠敤
     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++) {
             OrderDetails.get(i).setOrderNumber(i+1);
             OrderDetails.get(i).setOrderId(orderId);
             OrderDetails.get(i).setPerimeter(Double.valueOf(String.format("%.3f",(OrderDetails.get(i).getWidth()+OrderDetails.get(i).getHeight())*2/1000*OrderDetails.get(i).getQuantity())));
+            OrderDetails.get(i).setMonolithicPerimeter(Double.valueOf(String.format("%.3f",(OrderDetails.get(i).getWidth()+OrderDetails.get(i).getHeight())*2/1000)));
             Product product = productMapper.selectById(OrderDetails.get(i).getProductId());
 
             OrderDetails.get(i).setWeight(Double.valueOf(String.format("%.2f",product.getThickness()*OrderDetails.get(i).getWidth()*OrderDetails.get(i).getHeight()/1000000*2.5)));
@@ -271,14 +278,21 @@
         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){
+                    BigDecimal getQuantity= BigDecimal.valueOf(orderOtherMoney.getQuantity());
+                    BigDecimal getPrice= BigDecimal.valueOf(orderOtherMoney.getPrice());
+                    orderOtherMoney.setMoney(getQuantity.multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue());
+                }else {
+                    orderOtherMoney.setMoney(0.0);
+                }
+                orderOtherMoneyMapper.insert(orderOtherMoney);
+            });
+        }
+
         //淇敼璁㈠崟涓昏〃闈㈢Н涓庡懆闀夸互鍙婇噸閲�
         orderMapper.updateOrderParameter(orderId);
 
@@ -391,26 +405,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);
@@ -740,4 +797,8 @@
         }
         return saveState;
     }
+
+    public Boolean selectDifferentSize(String orderId) {
+        return !orderMapper.selectDifferentSize(orderId).isEmpty();
+    }
 }

--
Gitblit v1.8.0