From ee516213153df61431fa40e3d723de743b945796 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期四, 06 二月 2025 16:26:50 +0800
Subject: [PATCH] 增加配置发货默认出库

---
 north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java |  263 +++++++++++++++++++++++++++------------------------
 1 files changed, 139 insertions(+), 124 deletions(-)

diff --git a/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java b/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
index 3f3b677..74f0ab7 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
@@ -207,67 +207,8 @@
             //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
             List<OrderDetail> orderDetaillist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), OrderDetail.class);
             if (!orderDetaillist.isEmpty()){
-                for (OrderDetail orderDetail : orderDetaillist) {
-                    //鑾峰彇鍗曞彿
-                    String oddNumber= orderNumberSetting("鍑哄簱");
-                    OrderDetail orderDetailNew= finishedGoodsInventoryMapper.findOrderDetailNumberd(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber());
-                    //娣诲姞鍑哄叆搴撹褰�
-                    finishedOperateLogMapper.insertOutFinishedOperateLog(orderDetail,userName,oddNumber);
-                    Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber());
-
-
-                    Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(orderDetail.getDeliveryDetail().getOrderId());
-                    Integer orderNumberdsum = finishedGoodsInventoryMapper.findOrderNumberdsum(orderDetail.getDeliveryDetail().getOrderId());
-
-                    Integer deliverysum = finishedGoodsInventoryMapper.findDeliveryQuantity(orderDetail.getDeliveryDetail().getDeliveryId());
-                    Integer deliverydetailsum = finishedGoodsInventoryMapper.findDeliverydetailsum(orderDetail.getDeliveryDetail().getDeliveryId(),0);
-                    if(deliverydetailsum==null){
-                        deliverydetailsum=0;
-                    }
-
-                    DeliveryDetail deliveryDetail=finishedGoodsInventoryMapper.findDeliverydetail(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId());
-                    /*System.out.println("璁㈠崟鎬绘暟:" + ordersum + "璁㈠崟搴撳瓨鏁帮細" + orderNumberdsum + "鍑嗗鍑哄簱鏁伴噺" +
-                            orderDetail.getWarehouseNum()+ "鍙戣揣鏁伴噺" + orderDetail.getDeliveryDetail().getQuantity()+ "鍙戣揣鎬绘暟" +
-                            deliverysum+ "宸插彂鏁伴噺" + deliverydetailsum);*/
-                    //鍒ゆ柇鍙戣揣鍗曠殑搴撳瓨鏄惁瀛樺湪
-                    if (finishedGoodsInventorycount > 0) {
-                        //鍒ゆ柇鍙戣揣鍗曟槸鍚﹀凡鍑哄簱
-                        if(deliveryDetail==null){
-                            if(orderDetailNew.getWarehouseNum()>=orderDetail.getDeliveryDetail().getQuantity()){
-                                //淇敼搴撳瓨琛ㄥ簱瀛樻暟閲�
-                                finishedGoodsInventoryMapper.updateInventoryInventoryOut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity());
-                                //淇敼鍙戣揣鏄庣粏琛ㄧ姸鎬�
-                                finishedGoodsInventoryMapper.updateDeliveryDetailState(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId(),0);
-                                //淇敼鍙戣揣琛ㄧ姸鎬�
-                                finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),1);
-                                //淇敼璁㈠崟鏄庣粏琛ㄥ彂璐ф暟閲�
-                                finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity());
-                                //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
-                                finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),1);
-                                //鍒ゆ柇璁㈠崟鏄惁鍏ㄩ儴鍙戣揣
-                                if (orderNumberdsum == orderDetail.getWarehouseNum()) {
-                                    //if (ordersum == (orderDeliveryQuantitySum + orderDetail.getWarehouseNum())) {
-                                    //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
-                                    finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),2);
-                                }
-                                if (deliverysum==deliverydetailsum+orderDetail.getDeliveryDetail().getQuantity()) {
-                                    //淇敼鍙戣揣琛ㄧ姸鎬�
-                                    finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),2);
-                                }
-                            }else{
-                                TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
-                                return "false3";
-                            }
-                        }else{
-                            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
-                            return "false1";
-                        }
-
-
-                    }else{
-                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
-                        return "false2";
-                    }
+                if(!Objects.equals(deliveryDetailLogic(orderDetaillist, savePoint, userName), "true")){
+                    return deliveryDetailLogic(orderDetaillist, savePoint, userName);
                 }
             }
 
@@ -691,69 +632,8 @@
             //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
             List<FinishedOperateLog> finishedOperateLogslist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), FinishedOperateLog.class);
             if (!finishedOperateLogslist.isEmpty()){
-                for (FinishedOperateLog finishedOperateLog : finishedOperateLogslist) {
-                    Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(finishedOperateLog.getOrderId());
-                    Integer ordernumbersum = finishedGoodsInventoryMapper.findOrderNumberdsum(finishedOperateLog.getOrderId());
-                    Integer deliverysum = finishedGoodsInventoryMapper.findDeliveryQuantity(finishedOperateLog.getOperationOrderNumber());
-                    Integer deliverydetailsum = finishedGoodsInventoryMapper.findDeliverydetailsum(finishedOperateLog.getOperationOrderNumber(),1);
-
-                    if(Objects.equals(finishedOperateLog.getOperateType(), "鍏ュ簱")){
-                        Delivery delivery = finishedGoodsInventoryMapper.findOrderDelivery(finishedOperateLog.getOrderId());
-                        if(delivery==null){
-                            //淇敼璁板綍琛�
-                            finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"宸蹭綔搴�");
-                            //淇敼搴撳瓨琛ㄥ叆搴撴暟閲�
-                            finishedGoodsInventoryMapper.updateInventoryOut(finishedOperateLog);
-                            if(finishedOperateLog.getProcessId()!=null){
-                                //淇敼娴佺▼鍗¤〃鍏ュ簱鏁伴噺
-                                finishedGoodsInventoryMapper.updateflowcardOut(finishedOperateLog);
-                            }
-
-                            //淇敼璁㈠崟鏄庣粏琛ㄥ叆搴撴暟閲�
-                            finishedGoodsInventoryMapper.updateOutOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getQuantity());
-                            //鍒ゆ柇璁㈠崟鏄惁鍏ㄩ儴鍏ュ簱
-                            if (Objects.equals(ordersum, ordernumbersum)) {
-                                //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
-                                finishedGoodsInventoryMapper.updateOrderWarehousingState(finishedOperateLog.getOrderId(),1);
-                            }
-                            if (ordernumbersum-finishedOperateLog.getQuantity()==0) {
-                                //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
-                                finishedGoodsInventoryMapper.updateOrderWarehousingState(finishedOperateLog.getOrderId(),0);
-                            }
-                            log.setFunction("cancelFinishedGoodsInventoryStorage鍏ュ簱");
-                        }else{
-                            return "false1";
-                        }
-
-
-
-                    }else if(Objects.equals(finishedOperateLog.getOperateType(), "鍑哄簱")){
-                        //淇敼璁板綍琛�
-                        finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"宸蹭綔搴�");
-                        //淇敼搴撳瓨琛ㄥ簱瀛樻暟閲�
-                        finishedGoodsInventoryMapper.updateInventoryInventoryInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getQuantity());
-                        //淇敼鍙戣揣鏄庣粏琛ㄧ姸鎬�
-                        finishedGoodsInventoryMapper.updateDeliveryDetailState(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getOperationOrderNumber(),1);
-                        //淇敼鍙戣揣琛ㄧ姸鎬�
-                        finishedGoodsInventoryMapper.updateDeliveryDeliveryState(finishedOperateLog.getOperationOrderNumber(),1);
-                        //淇敼璁㈠崟鏄庣粏琛ㄥ簱鍐呮暟閲�
-                        finishedGoodsInventoryMapper.updateIntOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(), Long.valueOf(finishedOperateLog.getQuantity()));
-                        //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
-                        finishedGoodsInventoryMapper.updateOrderDeliveryState(finishedOperateLog.getOrderId(),1);
-                        //鍒ゆ柇璁㈠崟鏄惁鍏ㄩ儴鍙戣揣
-                        if (ordersum==finishedOperateLog.getQuantity()+ordernumbersum){
-                            //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
-                            finishedGoodsInventoryMapper.updateOrderDeliveryState(finishedOperateLog.getOrderId(),0);
-
-                        }
-                        if (deliverysum==finishedOperateLog.getQuantity()+deliverydetailsum) {
-                            //淇敼鍙戣揣琛ㄧ姸鎬�
-                            finishedGoodsInventoryMapper.updateDeliveryDeliveryState(finishedOperateLog.getOperationOrderNumber(),0);
-                        }
-                        log.setFunction("cancelFinishedGoodsInventoryStorage鍑哄簱");
-
-                    }
-
+                if(!Objects.equals(cancelDeliveryDetailLogic(finishedOperateLogslist, savePoint, object.get("userName").toString(), log), "true")){
+                    return cancelDeliveryDetailLogic(finishedOperateLogslist,savePoint,object.get("userName").toString(),log);
                 }
             }
             logService.saveLog(log);
@@ -907,4 +787,139 @@
         map.put("data", list);
         return map;
     }
+
+
+    public String deliveryDetailLogic(List<OrderDetail> list,Object savePoint,String userName) {
+        for (OrderDetail orderDetail : list) {
+            //鑾峰彇鍗曞彿
+            String oddNumber= orderNumberSetting("鍑哄簱");
+            OrderDetail orderDetailNew= finishedGoodsInventoryMapper.findOrderDetailNumberd(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber());
+            //娣诲姞鍑哄叆搴撹褰�
+            finishedOperateLogMapper.insertOutFinishedOperateLog(orderDetail,userName,oddNumber);
+            Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber());
+
+
+            Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(orderDetail.getDeliveryDetail().getOrderId());
+            Integer orderNumberdsum = finishedGoodsInventoryMapper.findOrderNumberdsum(orderDetail.getDeliveryDetail().getOrderId());
+
+            Integer deliverysum = finishedGoodsInventoryMapper.findDeliveryQuantity(orderDetail.getDeliveryDetail().getDeliveryId());
+            Integer deliverydetailsum = finishedGoodsInventoryMapper.findDeliverydetailsum(orderDetail.getDeliveryDetail().getDeliveryId(),0);
+            if(deliverydetailsum==null){
+                deliverydetailsum=0;
+            }
+
+            DeliveryDetail deliveryDetail=finishedGoodsInventoryMapper.findDeliverydetail(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId());
+                    /*System.out.println("璁㈠崟鎬绘暟:" + ordersum + "璁㈠崟搴撳瓨鏁帮細" + orderNumberdsum + "鍑嗗鍑哄簱鏁伴噺" +
+                            orderDetail.getWarehouseNum()+ "鍙戣揣鏁伴噺" + orderDetail.getDeliveryDetail().getQuantity()+ "鍙戣揣鎬绘暟" +
+                            deliverysum+ "宸插彂鏁伴噺" + deliverydetailsum);*/
+            //鍒ゆ柇鍙戣揣鍗曠殑搴撳瓨鏄惁瀛樺湪
+            if (finishedGoodsInventorycount > 0) {
+                //鍒ゆ柇鍙戣揣鍗曟槸鍚﹀凡鍑哄簱
+                if(deliveryDetail==null){
+                    if(orderDetailNew.getWarehouseNum()>=orderDetail.getDeliveryDetail().getQuantity()){
+                        //淇敼搴撳瓨琛ㄥ簱瀛樻暟閲�
+                        finishedGoodsInventoryMapper.updateInventoryInventoryOut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity());
+                        //淇敼鍙戣揣鏄庣粏琛ㄧ姸鎬�
+                        finishedGoodsInventoryMapper.updateDeliveryDetailState(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId(),0);
+                        //淇敼鍙戣揣琛ㄧ姸鎬�
+                        finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),1);
+                        //淇敼璁㈠崟鏄庣粏琛ㄥ彂璐ф暟閲�
+                        finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity());
+                        //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
+                        finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),1);
+                        //鍒ゆ柇璁㈠崟鏄惁鍏ㄩ儴鍙戣揣
+                        if (orderNumberdsum == orderDetail.getWarehouseNum()) {
+                            //if (ordersum == (orderDeliveryQuantitySum + orderDetail.getWarehouseNum())) {
+                            //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
+                            finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),2);
+                        }
+                        if (deliverysum==deliverydetailsum+orderDetail.getDeliveryDetail().getQuantity()) {
+                            //淇敼鍙戣揣琛ㄧ姸鎬�
+                            finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),2);
+                        }
+                    }else{
+                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+                        return "false3";
+                    }
+                }else{
+                    TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+                    return "false1";
+                }
+
+
+            }else{
+                TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+                return "false2";
+            }
+        }
+        return "true";
+    }
+
+    public String cancelDeliveryDetailLogic(List<FinishedOperateLog> finishedOperateLogslist,Object savePoint,String userName,Log log) {
+        for (FinishedOperateLog finishedOperateLog : finishedOperateLogslist) {
+            Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(finishedOperateLog.getOrderId());
+            Integer ordernumbersum = finishedGoodsInventoryMapper.findOrderNumberdsum(finishedOperateLog.getOrderId());
+            Integer deliverysum = finishedGoodsInventoryMapper.findDeliveryQuantity(finishedOperateLog.getOperationOrderNumber());
+            Integer deliverydetailsum = finishedGoodsInventoryMapper.findDeliverydetailsum(finishedOperateLog.getOperationOrderNumber(),1);
+
+            if(Objects.equals(finishedOperateLog.getOperateType(), "鍏ュ簱")){
+                Delivery delivery = finishedGoodsInventoryMapper.findOrderDelivery(finishedOperateLog.getOrderId());
+                if(delivery==null){
+                    //淇敼璁板綍琛�
+                    finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"宸蹭綔搴�");
+                    //淇敼搴撳瓨琛ㄥ叆搴撴暟閲�
+                    finishedGoodsInventoryMapper.updateInventoryOut(finishedOperateLog);
+                    if(finishedOperateLog.getProcessId()!=null){
+                        //淇敼娴佺▼鍗¤〃鍏ュ簱鏁伴噺
+                        finishedGoodsInventoryMapper.updateflowcardOut(finishedOperateLog);
+                    }
+
+                    //淇敼璁㈠崟鏄庣粏琛ㄥ叆搴撴暟閲�
+                    finishedGoodsInventoryMapper.updateOutOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getQuantity());
+                    //鍒ゆ柇璁㈠崟鏄惁鍏ㄩ儴鍏ュ簱
+                    if (Objects.equals(ordersum, ordernumbersum)) {
+                        //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+                        finishedGoodsInventoryMapper.updateOrderWarehousingState(finishedOperateLog.getOrderId(),1);
+                    }
+                    if (ordernumbersum-finishedOperateLog.getQuantity()==0) {
+                        //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+                        finishedGoodsInventoryMapper.updateOrderWarehousingState(finishedOperateLog.getOrderId(),0);
+                    }
+                    log.setFunction("cancelFinishedGoodsInventoryStorage鍏ュ簱");
+                }else{
+                    return "false1";
+                }
+
+
+
+            }else if(Objects.equals(finishedOperateLog.getOperateType(), "鍑哄簱")){
+                //淇敼璁板綍琛�
+                finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"宸蹭綔搴�");
+                //淇敼搴撳瓨琛ㄥ簱瀛樻暟閲�
+                finishedGoodsInventoryMapper.updateInventoryInventoryInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getQuantity());
+                //淇敼鍙戣揣鏄庣粏琛ㄧ姸鎬�
+                finishedGoodsInventoryMapper.updateDeliveryDetailState(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getOperationOrderNumber(),1);
+                //淇敼鍙戣揣琛ㄧ姸鎬�
+                finishedGoodsInventoryMapper.updateDeliveryDeliveryState(finishedOperateLog.getOperationOrderNumber(),1);
+                //淇敼璁㈠崟鏄庣粏琛ㄥ簱鍐呮暟閲�
+                finishedGoodsInventoryMapper.updateIntOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(), Long.valueOf(finishedOperateLog.getQuantity()));
+                //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
+                finishedGoodsInventoryMapper.updateOrderDeliveryState(finishedOperateLog.getOrderId(),1);
+                //鍒ゆ柇璁㈠崟鏄惁鍏ㄩ儴鍙戣揣
+                if (ordersum==finishedOperateLog.getQuantity()+ordernumbersum){
+                    //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
+                    finishedGoodsInventoryMapper.updateOrderDeliveryState(finishedOperateLog.getOrderId(),0);
+
+                }
+                if (deliverysum==finishedOperateLog.getQuantity()+deliverydetailsum) {
+                    //淇敼鍙戣揣琛ㄧ姸鎬�
+                    finishedGoodsInventoryMapper.updateDeliveryDeliveryState(finishedOperateLog.getOperationOrderNumber(),0);
+                }
+                log.setFunction("cancelFinishedGoodsInventoryStorage鍑哄簱");
+
+            }
+
+        }
+        return "true";
+    }
 }

--
Gitblit v1.8.0