From 8d6b17bfa56fd767c6f9de666eb0dd44c6b032cd Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期四, 22 五月 2025 15:42:38 +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/mm/FinishedGoodsInventoryService.java |  555 +++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 470 insertions(+), 85 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 6635252..a25dfff 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
@@ -3,15 +3,23 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.example.erp.dto.mm.FinishedOperateLogDTO;
 import com.example.erp.entity.mm.FinishedGoodsInventory;
 import com.example.erp.entity.mm.FinishedOperateLog;
 import com.example.erp.entity.pp.FlowCard;
+import com.example.erp.entity.sd.Delivery;
+import com.example.erp.entity.sd.DeliveryDetail;
 import com.example.erp.entity.sd.Order;
 import com.example.erp.entity.sd.OrderDetail;
+import com.example.erp.entity.userInfo.Log;
 import com.example.erp.entity.userInfo.SysError;
 import com.example.erp.mapper.mm.BasicWarehouseTypeMapper;
 import com.example.erp.mapper.mm.FinishedGoodsInventoryMapper;
 import com.example.erp.mapper.mm.FinishedOperateLogMapper;
+import com.example.erp.mapper.sd.OrderDetailMapper;
+import com.example.erp.mapper.sd.OrderMapper;
+import com.example.erp.service.userInfo.LogService;
 import com.example.erp.service.userInfo.SysErrorService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -19,9 +27,11 @@
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.sql.SQLException;
+import java.sql.Wrapper;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 @DS("mm")
@@ -34,7 +44,13 @@
     @Autowired
     BasicWarehouseTypeMapper basicWarehouseTypeMapper;
     @Autowired
+    OrderDetailMapper orderDetailMapper;
+    @Autowired
+    OrderMapper orderMapper;
+    @Autowired
     SysErrorService sysErrorService;
+    @Autowired
+    LogService logService;
 
     public Map<String, Object> defaultDateFinishedGoodsInventory(Integer pageNum, Integer pageSize, FinishedGoodsInventory finishedGoodsInventory) {
         Integer offset = (pageNum - 1) * pageSize;
@@ -53,18 +69,22 @@
         return map;
     }
 
-    public Boolean addSelectWarehousing(Map<String,Object> object) {
-        boolean saveState = true;
+    public String addSelectWarehousing(Map<String,Object> object) {
+        String saveState = "true";
         Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
         try {
             //瀹氫箟鍓嶇浼犺緭鐨勬暟鎹�
             String storageRegion = "";
             String remark = "";
+            String container = "";
             if (object.get("remark") != null) {
                 remark = object.get("remark").toString();
             }
             if (object.get("storageRegion") != null) {
                 storageRegion = object.get("storageRegion").toString();
+            }
+            if (object.get("container") != null) {
+                container = object.get("container").toString();
             }
 
             String userName = "";
@@ -75,56 +95,79 @@
             if (object.get("userId") != null) {
                 userId = object.get("userId").toString();
             }
+            Log log = new Log();
+            log.setOperator(userName);
+            log.setOperatorId(userId);
+            log.setContent(object.toString());
+            log.setFunction("addSelectWarehousing鍏ュ簱");
+            logService.saveLog(log);
 
             //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
-            List<FlowCard> flowCardlist = JSONArray.parseArray(JSONObject.toJSONString(object.get("flowcard")), FlowCard.class);
+            List<FlowCard> flowCardlist = JSONArray.parseArray(JSONObject.toJSONString(object.get("flowCard")), FlowCard.class);
             if (!flowCardlist.isEmpty()){
+                //鑾峰彇鍗曞彿
+                String oddNumber= orderNumberSetting("鍏ュ簱");
                 for (FlowCard flowCard : flowCardlist) {
-                    //鑾峰彇鍗曞彿
-                    String oddNumber= orderNumberSetting("鍏ュ簱");
                     //娣诲姞鍑哄叆搴撹褰�
-                    finishedOperateLogMapper.insertIntFinishedOperateLog(flowCard,userName,oddNumber);
+                    finishedOperateLogMapper.insertIntFinishedOperateLog(flowCard,userName,oddNumber,container);
                     Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber());
                     Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(flowCard.getOrder().getOrderId());
                     Integer ordernumbersum = finishedGoodsInventoryMapper.findOrderNumberdsum(flowCard.getOrder().getOrderId());
-
-                    System.out.println("璁㈠崟鎬绘暟:" + ordersum + "宸插叆搴撴暟閲忥細" + ordernumbersum + "鍑嗗鍏ュ簱鏁伴噺" + flowCard.getInventoryQuantity());
-                    if (finishedGoodsInventorycount > 0) {
-                        //淇敼搴撳瓨琛ㄥ叆搴撴暟閲�
-                        finishedGoodsInventoryMapper.updateInventory(flowCard,storageRegion, remark);
-                        //淇敼娴佺▼鍗¤〃鍏ュ簱鏁伴噺
-                        finishedGoodsInventoryMapper.updateflowcard(flowCard);
-                        //淇敼璁㈠崟鏄庣粏琛ㄥ叆搴撴暟閲�
-                        finishedGoodsInventoryMapper.updateIntOrderNumberConut(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber(),flowCard.getInventoryQuantity());
-                        //鍒ゆ柇璁㈠崟鏄惁鍏ㄩ儴鍏ュ簱
-                        if (ordersum == (ordernumbersum + flowCard.getInventoryQuantity())) {
-                            //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
-                            finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),2);
-                        }
-                    } else {
-                        if (finishedGoodsInventoryMapper.insertFinishedGoodsInventory(flowCard, storageRegion, remark)) {
+                    FlowCard flowCard1=finishedGoodsInventoryMapper.findFlowCard(flowCard);
+                    //鍒ゆ柇搴撳瓨鏁版槸鍚﹀ぇ浜庢湭鍏ュ簱鏁�
+                    if(flowCard1.getReceivedQuantity()+flowCard.getInventoryQuantity()<=flowCard1.getInventoryQuantity()){
+                        /*System.out.println("璁㈠崟鎬绘暟:" + ordersum + "宸插叆搴撴暟閲忥細" + ordernumbersum + "鍑嗗鍏ュ簱鏁伴噺" + flowCard.getInventoryQuantity());*/
+                        if (finishedGoodsInventorycount > 0) {
+                            //淇敼搴撳瓨琛ㄥ叆搴撴暟閲�
+                            finishedGoodsInventoryMapper.updateInventory(flowCard,storageRegion, remark);
                             //淇敼娴佺▼鍗¤〃鍏ュ簱鏁伴噺
                             finishedGoodsInventoryMapper.updateflowcard(flowCard);
-                            //淇敼璁㈠崟鏄庣粏琛ㄥ叆搴撴暟閲�
-                            finishedGoodsInventoryMapper.updateIntOrderNumberConut(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber(),flowCard.getInventoryQuantity());
                             //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
                             finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),1);
+                            //淇敼璁㈠崟鏄庣粏琛ㄥ叆搴撴暟閲�
+                            finishedGoodsInventoryMapper.updateIntOrderNumberConut(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber(), Long.valueOf(flowCard.getInventoryQuantity()));
+                            //鍒ゆ柇璁㈠崟鏄惁鍏ㄩ儴鍏ュ簱
+                            if (ordersum == (ordernumbersum + flowCard.getInventoryQuantity())) {
+                                //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+                                finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),2);
+                            }
+                        } else {
+                            if (finishedGoodsInventoryMapper.insertFinishedGoodsInventory(flowCard, storageRegion, remark)) {
+                                //淇敼娴佺▼鍗¤〃鍏ュ簱鏁伴噺
+                                finishedGoodsInventoryMapper.updateflowcard(flowCard);
+                                //淇敼璁㈠崟鏄庣粏琛ㄥ叆搴撴暟閲�
+                                finishedGoodsInventoryMapper.updateIntOrderNumberConut(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber(), Long.valueOf(flowCard.getInventoryQuantity()));
+                                if (ordersum == (ordernumbersum + flowCard.getInventoryQuantity())) {
+                                    //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+                                    finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),2);
+                                }else{
+                                    //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+                                    finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),1);
+                                }
 
+
+                            }
                         }
+                    }else{
+                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+                        return "false1";
                     }
+
+
                 }
             }else{
-                return false;
+                TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+                return "false2";
             }
 
         } catch (Exception e) {
             TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
             //灏嗗紓甯镐紶鍏ユ暟鎹簱
             SysError sysError = new SysError();
-            sysError.setError(e.toString());
-            sysError.setFunc("saveOrder");
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("addSelectWarehousing");
             sysErrorService.insert(sysError);
-            saveState = false;
+            saveState = "false";
 
         }
 
@@ -142,8 +185,8 @@
     }
 
 
-    public Boolean addDeliveryDetail(Map<String,Object> object) {
-        boolean saveState = true;
+    public String addDeliveryDetail(Map<String,Object> object) {
+        String saveState = "true";
         //璁剧疆鍥炴粴鐐�
         Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
         try {
@@ -155,53 +198,18 @@
             if (object.get("userId") != null) {
                 userId = object.get("userId").toString();
             }
+            Log log = new Log();
+            log.setOperator(userName);
+            log.setOperatorId(userId);
+            log.setContent(object.toString());
+            log.setFunction("addDeliveryDetail鍑哄簱");
+            logService.saveLog(log);
             //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
             List<OrderDetail> orderDetaillist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), OrderDetail.class);
             if (!orderDetaillist.isEmpty()){
-                for (OrderDetail orderDetail : orderDetaillist) {
-                    //鑾峰彇鍗曞彿
-                    String oddNumber= orderNumberSetting("鍑哄簱");
-                    //娣诲姞鍑哄叆搴撹褰�
-                    finishedOperateLogMapper.insertOutFinishedOperateLog(orderDetail,userName,oddNumber);
-                    Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber());
 
-                    Integer finishedGoodsInventorybycount=finishedGoodsInventoryMapper.finishedGoodsInventorybycount(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber());
-                    Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(orderDetail.getDeliveryDetail().getOrderId());
-                    Integer ordernumbersum = 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;
-                    }
-
-                    System.out.println("璁㈠崟鎬绘暟:" + ordersum + "璁㈠崟鍓╀綑鏁伴噺锛�" + ordernumbersum + "鍑嗗鍑哄簱鏁伴噺" +
-                            orderDetail.getWarehouseNum()+ "鍙戣揣鏁伴噺" + orderDetail.getDeliveryNum()+ "鍙戣揣鎬绘暟" +
-                            deliverysum+ "宸插彂鏁伴噺" + deliverydetailsum);
-                    if (finishedGoodsInventorycount > 0) {
-                        if(orderDetail.getWarehouseNum()>=orderDetail.getDeliveryNum()){
-                            //淇敼搴撳瓨琛ㄥ嚭搴撴暟閲�
-                            //finishedGoodsInventoryMapper.updateInventoryquantityavailable(orderDetail);
-                            //淇敼鍙戣揣鏄庣粏琛ㄧ姸鎬�
-                            finishedGoodsInventoryMapper.updateDeliveryDetailState(orderDetail,0);
-                            //淇敼鍙戣揣琛ㄧ姸鎬�
-                            finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),1);
-                            //淇敼璁㈠崟鏄庣粏琛ㄥ彂璐ф暟閲�
-                            finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryNum());
-                            //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
-                            finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),1);
-                            //鍒ゆ柇璁㈠崟鏄惁鍏ㄩ儴鍙戣揣
-                            if (0 == (ordernumbersum - orderDetail.getWarehouseNum())) {
-                                //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
-                                finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),2);
-                            }
-                            if (deliverysum==deliverydetailsum+orderDetail.getDeliveryNum()) {
-                                //淇敼鍙戣揣琛ㄧ姸鎬�
-                                finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),2);
-                            }
-                        }
-
-                    }
+                if(!Objects.equals(deliveryDetailLogic(orderDetaillist, savePoint, userName), "true")) {
+                    return deliveryDetailLogic(orderDetaillist, savePoint, userName);
                 }
             }
 
@@ -209,10 +217,10 @@
             TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
             //灏嗗紓甯镐紶鍏ユ暟鎹簱
             SysError sysError = new SysError();
-            sysError.setError(e.toString());
-            sysError.setFunc("saveOrder");
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("addDeliveryDetail");
             sysErrorService.insert(sysError);
-            saveState = false;
+            saveState = "false";
 
         }
         return saveState;
@@ -242,6 +250,12 @@
             if (object.get("userId") != null) {
                 userId = object.get("userId").toString();
             }
+            Log log = new Log();
+            log.setOperator(userName);
+            log.setOperatorId(userId);
+            log.setContent(object.toString());
+            log.setFunction("updateFinishedGoodsInventoryAllocate璋冩嫧");
+            logService.saveLog(log);
             //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
             List<OrderDetail> orderDetaillist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), OrderDetail.class);
             if (!orderDetaillist.isEmpty()){
@@ -263,7 +277,7 @@
                     //淇敼鍘熻鍗曟槑缁嗚〃鍙戣揣鏁伴噺
                     finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()));
                     //淇敼璋冩嫧鏂拌鍗曟槑缁嗚〃鍙戣揣鏁伴噺
-                    finishedGoodsInventoryMapper.updateIntOrderNumberConut(orderDetail.getOrderId(),orderDetail.getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()));
+                    finishedGoodsInventoryMapper.updateIntOrderNumberConut(orderDetail.getOrderId(),orderDetail.getOrderNumber(), orderDetail.getQuantity());
                     if (newordersum==newordernumbersum+orderDetail.getQuantity()){
                         //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
                         finishedGoodsInventoryMapper.updateOrderWarehousingState(orderDetail.getOrderId(),2);
@@ -279,8 +293,8 @@
             TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
             //灏嗗紓甯镐紶鍏ユ暟鎹簱
             SysError sysError = new SysError();
-            sysError.setError(e.toString());
-            sysError.setFunc("saveOrder");
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("updateFinishedGoodsInventoryAllocate");
             sysErrorService.insert(sysError);
             saveState = false;
 
@@ -336,6 +350,12 @@
             if (object.get("operateType") != null) {
                 operateType = object.get("operateType").toString();
             }
+            Log log = new Log();
+            log.setOperator(userName);
+            log.setOperatorId(userId);
+            log.setContent(object.toString());
+            log.setFunction("updateFinishedGoodsInventoryTakeOut棰嗗嚭");
+            logService.saveLog(log);
             //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
             List<OrderDetail> orderDetaillist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), OrderDetail.class);
             if (!orderDetaillist.isEmpty()){
@@ -362,8 +382,8 @@
             TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
             //灏嗗紓甯镐紶鍏ユ暟鎹簱
             SysError sysError = new SysError();
-            sysError.setError(e.toString());
-            sysError.setFunc("saveOrder");
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("updateFinishedGoodsInventoryTakeOut");
             sysErrorService.insert(sysError);
             saveState = false;
 
@@ -445,8 +465,8 @@
             TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
             //灏嗗紓甯镐紶鍏ユ暟鎹簱
             SysError sysError = new SysError();
-            sysError.setError(e.toString());
-            sysError.setFunc("saveOrder");
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("updateFinishedGoodsInventoryRework");
             sysErrorService.insert(sysError);
             saveState = false;
 
@@ -469,6 +489,10 @@
             if (object.get("userId") != null) {
                 userId = object.get("userId").toString();
             }
+            Log log = new Log();
+            log.setOperator(userName);
+            log.setOperatorId(userId);
+            log.setContent(object.toString());
             //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
             List<FinishedOperateLog> finishedOperateLogslist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), FinishedOperateLog.class);
             if (!finishedOperateLogslist.isEmpty()){
@@ -478,12 +502,59 @@
                         finishedOperateLogMapper.updateToExamine(finishedOperateLog,userName,"宸插鏍�");
                         //瀹℃牳淇敼搴撳瓨鏁伴噺
                         finishedGoodsInventoryMapper.updateInventoryInventoryOut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),Math.toIntExact(finishedOperateLog.getQuantity()));
+                        log.setFunction("updateFinishedGoodsInventoryToExamine瀹℃牳");
                     } else if (Objects.equals(type, "鍙嶅")) {
                         //瀹℃牳淇敼棰嗗嚭璁板綍
                         finishedOperateLogMapper.updateToExamine(finishedOperateLog,userName,"鏈鏍�");
                         //瀹℃牳淇敼搴撳瓨鏁伴噺
                         finishedGoodsInventoryMapper.updateInventoryInventoryInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),Math.toIntExact(finishedOperateLog.getQuantity()));
+                        log.setFunction("updateFinishedGoodsInventoryToExamine鍙嶅");
                     }
+
+                }
+            }
+            logService.saveLog(log);
+
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+            //灏嗗紓甯镐紶鍏ユ暟鎹簱
+            SysError sysError = new SysError();
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("updateFinishedGoodsInventoryToExamine");
+            sysErrorService.insert(sysError);
+            saveState = false;
+
+        }
+        return saveState;
+
+    }
+
+    public Boolean cancelFinishedGoodsInventoryToExamine(Map<String,Object> object) {
+        boolean saveState = true;
+        //璁剧疆鍥炴粴鐐�
+        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+        try {
+            String userName = "";
+            String userId = "";
+            if (object.get("userName") != null) {
+                userName = object.get("userName").toString();
+            }
+            if (object.get("userId") != null) {
+                userId = object.get("userId").toString();
+            }
+            Log log = new Log();
+            log.setOperator(userName);
+            log.setOperatorId(userId);
+            log.setContent(object.toString());
+            log.setFunction("cancelFinishedGoodsInventoryToExamine浣滃簾");
+            logService.saveLog(log);
+            //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+            List<FinishedOperateLog> finishedOperateLogslist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), FinishedOperateLog.class);
+            if (!finishedOperateLogslist.isEmpty()){
+                for (FinishedOperateLog finishedOperateLog : finishedOperateLogslist) {
+                    finishedGoodsInventoryMapper.updateInventoryquantityInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(), Math.toIntExact(finishedOperateLog.getQuantity()));
+                    finishedGoodsInventoryMapper.updateIntOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(), Long.valueOf(finishedOperateLog.getQuantity()));
+                    finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"宸蹭綔搴�");
 
                 }
             }
@@ -492,8 +563,8 @@
             TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
             //灏嗗紓甯镐紶鍏ユ暟鎹簱
             SysError sysError = new SysError();
-            sysError.setError(e.toString());
-            sysError.setFunc("saveOrder");
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("cancelFinishedGoodsInventoryToExamine");
             sysErrorService.insert(sysError);
             saveState = false;
 
@@ -501,6 +572,160 @@
         return saveState;
 
     }
+
+
+    public Map<String, Object> getSelectStorageRecord(Integer pageNum, Integer pageSize, List<String> selectDate,String type, FinishedOperateLog finishedOperateLog) {
+        Integer offset = (pageNum-1)*pageSize;
+        String endDate = LocalDate.now().toString();
+        String startDate = LocalDate.now().minusDays(15).toString();
+        if(selectDate !=null && selectDate.size()==2){
+            if(!selectDate.get(0).isEmpty()){
+                startDate = selectDate.get(0);
+            }
+            if(!selectDate.get(1).isEmpty()){
+                endDate = selectDate.get(1);
+            }
+        }
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", finishedOperateLogMapper.getSelectStorageRecord(offset, pageSize,startDate, endDate,type, finishedOperateLog));
+        map.put("total", finishedOperateLogMapper.getSelectStorageRecordLogPageTotal(offset, pageSize,startDate, endDate,type, finishedOperateLog));
+        List<String> list = new ArrayList<>();
+        list.add(startDate);
+        list.add(endDate);
+        map.put("selectDate",list);
+        return map;
+    }
+
+    public Map<String, Object> getSelectFinishedOperateLogReport(String type,Integer pageNum, Integer pageSize, List<String> selectDate, FinishedOperateLog finishedOperateLog) {
+        Integer offset = (pageNum-1)*pageSize;
+        String endDate = LocalDate.now().toString();
+        String startDate = LocalDate.now().minusDays(15).toString();
+        if(selectDate !=null && selectDate.size()==2){
+            if(!selectDate.get(0).isEmpty()){
+                startDate = selectDate.get(0);
+            }
+            if(!selectDate.get(1).isEmpty()){
+                endDate = selectDate.get(1);
+            }
+        }
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", finishedOperateLogMapper.getSelectFinishedOperateLogReport(offset, pageSize,startDate, endDate, finishedOperateLog,type));
+        map.put("total", finishedOperateLogMapper.getSelectFinishedOperateLogReportPageTotal(offset, pageSize,startDate, endDate, finishedOperateLog,type));
+        List<String> list = new ArrayList<>();
+        list.add(startDate);
+        list.add(endDate);
+        map.put("selectDate",list);
+        return map;
+    }
+
+
+    public String cancelFinishedGoodsInventoryStorage(Map<String,Object> object) {
+        String saveState = "true";
+        //璁剧疆鍥炴粴鐐�
+        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+        try {
+            Log log = new Log();
+            log.setOperatorId(object.get("userId").toString());
+            log.setOperator(object.get("userName").toString());
+            log.setContent(object.toString());
+            //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+            List<FinishedOperateLog> finishedOperateLogslist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), FinishedOperateLog.class);
+            if (!finishedOperateLogslist.isEmpty()){
+                if(!Objects.equals(cancelDeliveryDetailLogic(finishedOperateLogslist, savePoint, object.get("userName").toString(), log), "true")){
+                    return cancelDeliveryDetailLogic(finishedOperateLogslist,savePoint,object.get("userName").toString(),log);
+                }
+            }
+            logService.saveLog(log);
+
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+            //灏嗗紓甯镐紶鍏ユ暟鎹簱
+            SysError sysError = new SysError();
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("cancelFinishedGoodsInventoryStorage");
+            sysErrorService.insert(sysError);
+            saveState = "false";
+
+        }
+        return saveState;
+
+    }
+
+    public List<FinishedOperateLogDTO> exportFinishedOperateLogReport(List<LocalDate> dates,String type) {
+        return finishedOperateLogMapper.exportFinishedOperateLogReport(dates,type);
+    }
+
+
+    public Boolean oneClickStorage(String  orderId,String  userName) {
+        boolean saveState = true;
+        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+        Log log = new Log();
+        log.setContent(orderId);
+        log.setOperator(userName);
+        log.setFunction("oneClickStorage鍏ュ簱:"+orderId);
+        logService.saveLog(log);
+        try {
+            String oddNumber= orderNumberSetting("鍏ュ簱");
+            Order order = orderMapper.selectOne(new QueryWrapper<Order>().eq("order_id",orderId));
+            if(order.getWarehousing()!=2){
+                List<OrderDetail> orderDetailList=finishedGoodsInventoryMapper.getSelectOrderDetail(orderId);
+                for (OrderDetail orderDetail:orderDetailList){
+                    FinishedGoodsInventory finishedGoodsInventory = finishedGoodsInventoryMapper.findOrderNumberd(orderDetail.getOrderId(),orderDetail.getOrderNumber());
+                    if(finishedGoodsInventory!=null){
+                        finishedOperateLogMapper.updateOrderFinishedOperateLog(orderDetail,userName,oddNumber);
+                        //淇敼搴撳瓨琛ㄥ叆搴撴暟閲�
+                        finishedGoodsInventoryMapper.updateOrderInventory(orderDetail);
+                    }else{
+                        finishedGoodsInventoryMapper.insertOrderFinishedGoodsInventory(orderDetail);
+                    }
+                    finishedOperateLogMapper.insertOrderFinishedOperateLog(orderDetail,userName,oddNumber);
+                    finishedGoodsInventoryMapper.updateOrderNumberConut(orderDetail.getOrderId(),orderDetail.getOrderNumber(),orderDetail.getQuantity());
+                }
+                finishedGoodsInventoryMapper.updateOrderWarehousingState(orderId,2);
+            }
+
+
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+            //灏嗗紓甯镐紶鍏ユ暟鎹簱
+            SysError sysError = new SysError();
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("oneClickStorage");
+            sysErrorService.insert(sysError);
+            saveState = false;
+
+        }
+
+        return saveState;
+
+    }
+
+    public Map<String, Object> getSelectStorageRecordPint(Integer pageNum, Integer pageSize, List<String> selectDate, FinishedOperateLog finishedOperateLog) {
+        Integer offset = (pageNum-1)*pageSize;
+        String endDate = LocalDate.now().toString();
+        String startDate = LocalDate.now().minusDays(15).toString();
+        if(selectDate !=null && selectDate.size()==2){
+            if(!selectDate.get(0).isEmpty()){
+                startDate = selectDate.get(0);
+            }
+            if(!selectDate.get(1).isEmpty()){
+                endDate = selectDate.get(1);
+            }
+        }
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", finishedOperateLogMapper.getSelectStorageRecordPint(offset, pageSize,startDate, endDate, finishedOperateLog));
+        map.put("total", finishedOperateLogMapper.getSelectStorageRecordPintPageTotal(offset, pageSize,startDate, endDate, finishedOperateLog));
+        List<String> list = new ArrayList<>();
+        list.add(startDate);
+        list.add(endDate);
+        map.put("selectDate",list);
+        return map;
+    }
+
+
 
 
 
@@ -533,9 +758,169 @@
     }
 
 
+    public Map<String, Object> getSelectPrintSv(Map<String, Object> object) {
+        Map<String, Object> map = new HashMap<>();
+        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//鏈�缁堢粨鏋�
+        List<FinishedOperateLog> finishedOperateLogList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FinishedOperateLog.class);
+        if (!finishedOperateLogList.isEmpty()) {
+            Set<String> processedProcessIds = new HashSet<>();
+            for (FinishedOperateLog finishedOperateLog : finishedOperateLogList) {
+                String OrderId = finishedOperateLog.getOrderId();
+                String Remarks = finishedOperateLog.getRemarks();
+
+                // 妫�鏌ユ槸鍚﹀凡缁忓鐞嗚繃璇� OrderId锛屽鏋滃鐞嗚繃鍒欒烦杩�
+                if (processedProcessIds.contains(OrderId) && processedProcessIds.contains(Remarks)) {
+                    continue;
+                }
+
+                Map<String, Object> itemmap = new HashMap<>();
+                itemmap.put("detail", finishedOperateLogMapper.getPrimaryListLimt(finishedOperateLog.getOrderId(),finishedOperateLog.getProcessId(),finishedOperateLog.getRemarks()));
+
+                List<Map<String, Object>> detailList = finishedOperateLogMapper.getDetailList(finishedOperateLog.getOrderId(),finishedOperateLog.getProcessId(),finishedOperateLog.getRemarks());
+                itemmap.put("detailList", detailList);
+
+                list.add(itemmap);
+
+                processedProcessIds.add(OrderId);
+                processedProcessIds.add(Remarks);
+            }
+        }
+        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 (Objects.equals(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