From bf90cf8568301edb38920e8b0a0ce7e137a668ef Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期四, 21 八月 2025 09:51:55 +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 |  173 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 154 insertions(+), 19 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 c57f5f4..32149f0 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,7 +3,9 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.example.erp.dto.mm.FinishedOperateLogDTO;
 import com.example.erp.entity.mm.FinishedGoodsInventory;
 import com.example.erp.entity.mm.FinishedOperateLog;
@@ -28,12 +30,9 @@
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-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")
@@ -424,7 +423,7 @@
                     //娣诲姞棰嗗嚭璁板綍
                     finishedOperateLogMapper.insertFinishedOperateLogTakeOut(orderDetail,userName,oddNumber,operateType,remarks);
                     //淇敼搴撳瓨鏁伴噺
-                    finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()));
+                    finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()), orderDetail.getDeliveryDetail().getBoxNo());
                     //淇敼璁㈠崟鏄庣粏琛ㄦ暟閲�
                     finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()));
                     if (Objects.equals(oldordersum, oldordernumbersum)){
@@ -507,7 +506,7 @@
                     //娣诲姞棰嗗嚭璁板綍
                     finishedOperateLogMapper.insertFinishedOperateLogRework(orderDetail,userName,oddNumber,operateType,remarks);
                     //淇敼搴撳瓨鏁伴噺
-                    finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()));
+                    finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()), orderDetail.getDeliveryDetail().getBoxNo());
                     //淇敼璁㈠崟鏄庣粏琛ㄦ暟閲�
                     finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()));
                     if (Objects.equals(oldordersum, oldordernumbersum)){
@@ -557,13 +556,13 @@
                         //瀹℃牳淇敼棰嗗嚭璁板綍
                         finishedOperateLogMapper.updateToExamine(finishedOperateLog,userName,"宸插鏍�");
                         //瀹℃牳淇敼搴撳瓨鏁伴噺
-                        finishedGoodsInventoryMapper.updateInventoryInventoryOut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),Math.toIntExact(finishedOperateLog.getQuantity()));
+                        finishedGoodsInventoryMapper.updateInventoryInventoryOut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),Math.toIntExact(finishedOperateLog.getQuantity()),finishedOperateLog.getRemarks());
                         log.setFunction("updateFinishedGoodsInventoryToExamine瀹℃牳");
                     } else if (Objects.equals(type, "鍙嶅")) {
                         //瀹℃牳淇敼棰嗗嚭璁板綍
                         finishedOperateLogMapper.updateToExamine(finishedOperateLog,userName,"鏈鏍�");
                         //瀹℃牳淇敼搴撳瓨鏁伴噺
-                        finishedGoodsInventoryMapper.updateInventoryInventoryInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),Math.toIntExact(finishedOperateLog.getQuantity()));
+                        finishedGoodsInventoryMapper.updateInventoryInventoryInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),Math.toIntExact(finishedOperateLog.getQuantity()), finishedOperateLog.getRemarks());
                         log.setFunction("updateFinishedGoodsInventoryToExamine鍙嶅");
                     }
 
@@ -800,6 +799,8 @@
             alias="LC";
         }else if(Objects.equals(type, "杩斿伐")){
             alias="FG";
+        }else if(Objects.equals(type, "璋冩灦")){
+            alias="TJ";
         }
         //鏌ヨ褰撳ぉ鐨勬渶澶ф暟閲�
         Integer maximum=finishedOperateLogMapper.getmaximum(type);
@@ -861,7 +862,10 @@
                 }
 
                 Map<String, Object> itemmap = new HashMap<>();
-                itemmap.put("detail", finishedOperateLogMapper.getPrimaryListLimts(finishedOperateLog.getOrder().getCustomerName(),finishedOperateLog.getOrder().getProject(),finishedOperateLog.getRemarks()));
+                itemmap.put("detail", finishedOperateLogMapper.getPrimaryListLimts(
+                        finishedOperateLog.getOrder().getCustomerName(),
+                        finishedOperateLog.getOrder().getProject(),
+                        finishedOperateLog.getRemarks()));
 
                 List<Map<String, Object>> detailList = finishedOperateLogMapper.getDetailList2(finishedOperateLog.getOrderId(),finishedOperateLog.getProcessId(),finishedOperateLog.getRemarks());
 
@@ -904,21 +908,33 @@
             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());
+            finishedOperateLogMapper.insertOutFinishedOperateLog(orderDetail,userName,oddNumber,orderDetail.getDeliveryDetail().getBoxNo());
 
+            //鍒ゆ柇鍙戣揣鍗曠殑搴撳瓨鏄惁瀛樺湪
+            Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getBoxNo());
 
+            //鑾峰彇璁㈠崟鎬绘暟閲�
             Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(orderDetail.getDeliveryDetail().getOrderId());
+            //鑾峰彇搴撳瓨鎬绘暟閲�
             Integer orderNumberdsum = finishedGoodsInventoryMapper.findOrderNumberdsum(orderDetail.getDeliveryDetail().getOrderId());
+            //鑾峰彇鍙戣揣鎬绘暟閲�
             Integer orderNumberdDeliverysum = finishedGoodsInventoryMapper.findOrderDeliveryQuantitySum(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());
+            DeliveryDetail deliveryDetail=finishedGoodsInventoryMapper.
+                    findDeliverydetail(orderDetail.getDeliveryDetail().getOrderId(),
+                            orderDetail.getDeliveryDetail().getOrderNumber(),
+                            orderDetail.getDeliveryDetail().getDeliveryId(),
+                            orderDetail.getDeliveryDetail().getBoxNo()
+
+                    );
                     /*System.out.println("璁㈠崟鎬绘暟:" + ordersum + "璁㈠崟搴撳瓨鏁帮細" + orderNumberdsum + "鍑嗗鍑哄簱鏁伴噺" +
                             orderDetail.getWarehouseNum()+ "鍙戣揣鏁伴噺" + orderDetail.getDeliveryDetail().getQuantity()+ "鍙戣揣鎬绘暟" +
                             deliverysum+ "宸插彂鏁伴噺" + deliverydetailsum);*/
@@ -928,9 +944,9 @@
                 if(deliveryDetail==null){
                     if(orderDetailNew.getWarehouseNum()>=orderDetail.getDeliveryDetail().getQuantity()){
                         //淇敼搴撳瓨琛ㄥ簱瀛樻暟閲�
-                        finishedGoodsInventoryMapper.updateInventoryInventoryOut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity());
+                        finishedGoodsInventoryMapper.updateInventoryInventoryOut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity(),orderDetail.getDeliveryDetail().getBoxNo());
                         //淇敼鍙戣揣鏄庣粏琛ㄧ姸鎬�
-                        finishedGoodsInventoryMapper.updateDeliveryDetailState(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId(),0);
+                        finishedGoodsInventoryMapper.updateDeliveryDetailState(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId(),0, orderDetail.getDeliveryDetail().getBoxNo());
                         //淇敼鍙戣揣琛ㄧ姸鎬�
                         finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),1);
                         //淇敼璁㈠崟鏄庣粏琛ㄥ彂璐ф暟閲�
@@ -974,7 +990,19 @@
 
             if(Objects.equals(finishedOperateLog.getOperateType(), "鍏ュ簱")){
                 Delivery delivery = finishedGoodsInventoryMapper.findOrderDelivery(finishedOperateLog.getOrderId());
-                if(delivery==null){
+                FinishedGoodsInventory existFinishedGoodsInventory = finishedGoodsInventoryMapper.
+                        selectOne(new LambdaQueryWrapper<FinishedGoodsInventory>()
+                                .eq(FinishedGoodsInventory::getOrderId, finishedOperateLog.getOrderId())
+                                .eq(FinishedGoodsInventory::getOrderNumber, finishedOperateLog.getOperationNumber())
+                                .eq(FinishedGoodsInventory::getBoxNo, finishedOperateLog.getRemarks())
+                        );
+                if(delivery!=null){
+                    return "false1";
+                }
+                if(existFinishedGoodsInventory.getQuantityAvailable()<finishedOperateLog.getQuantity()){
+                    return "false2";
+                }
+
                     //淇敼璁板綍琛�
                     finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"宸蹭綔搴�");
                     //淇敼搴撳瓨琛ㄥ叆搴撴暟閲�
@@ -996,9 +1024,7 @@
                         finishedGoodsInventoryMapper.updateOrderWarehousingState(finishedOperateLog.getOrderId(),0);
                     }
                     log.setFunction("cancelFinishedGoodsInventoryStorage鍏ュ簱");
-                }else{
-                    return "false1";
-                }
+
 
 
 
@@ -1006,9 +1032,19 @@
                 //淇敼璁板綍琛�
                 finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"宸蹭綔搴�");
                 //淇敼搴撳瓨琛ㄥ簱瀛樻暟閲�
-                finishedGoodsInventoryMapper.updateInventoryInventoryInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getQuantity());
+                finishedGoodsInventoryMapper.updateInventoryInventoryInt(
+                        finishedOperateLog.getOrderId(),
+                        finishedOperateLog.getOperationNumber(),
+                        finishedOperateLog.getQuantity(),
+                        finishedOperateLog.getRemarks()
+                );
                 //淇敼鍙戣揣鏄庣粏琛ㄧ姸鎬�
-                finishedGoodsInventoryMapper.updateDeliveryDetailState(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getOperationOrderNumber(),1);
+                finishedGoodsInventoryMapper.updateDeliveryDetailState(
+                        finishedOperateLog.getOrderId(),
+                        finishedOperateLog.getOperationNumber(),
+                        finishedOperateLog.getOperationOrderNumber(),
+                        1,
+                        finishedOperateLog.getRemarks());
                 //淇敼鍙戣揣琛ㄧ姸鎬�
                 finishedGoodsInventoryMapper.updateDeliveryDeliveryState(finishedOperateLog.getOperationOrderNumber(),1);
                 //淇敼璁㈠崟鏄庣粏琛ㄥ簱鍐呮暟閲�
@@ -1032,4 +1068,103 @@
         }
         return "true";
     }
+
+    public Map<String,Object> changeRack(FinishedGoodsInventory finishedGoodsInventory, String user) {
+        Long id = finishedGoodsInventory.getId();
+        Map<String,Object> map = new HashMap<>();
+        FinishedGoodsInventory oldFinishedGoodsInventory = finishedGoodsInventoryMapper.selectById(finishedGoodsInventory.getId());
+
+        //鏌ヨ姝ゆ搴忓彿绠卞彿鐨勫簱瀛樻槸鍚﹀瓨鍦�
+        FinishedGoodsInventory existFinishedGoodsInventory = finishedGoodsInventoryMapper
+                .selectOne(new LambdaQueryWrapper<FinishedGoodsInventory>()
+                        .eq(FinishedGoodsInventory::getOrderId, finishedGoodsInventory.getOrderId())
+                        .eq(FinishedGoodsInventory::getOrderNumber, finishedGoodsInventory.getOrderNumber())
+                        .eq(FinishedGoodsInventory::getBoxNo, finishedGoodsInventory.getBoxNo())
+                        .last("limit 1")
+                );
+        String operationOrderNumber = orderNumberSetting("璋冩灦");
+        FinishedOperateLog finishedOperateLog = new FinishedOperateLog();
+        finishedOperateLog.setOperationOrderNumber(operationOrderNumber);
+        finishedOperateLog.setOrderId(oldFinishedGoodsInventory.getOrderId());
+        finishedOperateLog.setOperationNumber(oldFinishedGoodsInventory.getOrderNumber());
+        finishedOperateLog.setProcessId(oldFinishedGoodsInventory.getProcessId());
+        finishedOperateLog.setOperateType("璋冩灦");
+        finishedOperateLog.setOperator(user);
+        //褰撴垚鍝佺鍙蜂笉瀛樺湪锛屽垯鏂板
+        if(existFinishedGoodsInventory==null){
+            //褰撹浆绉绘暟閲忓ぇ浜庡疄闄呭簱瀛樼鍙锋椂锛屽垯涓嶈兘杞Щ
+            if(oldFinishedGoodsInventory.getQuantityAvailable()<finishedGoodsInventory.getQuantityAvailable()){
+                map.put("code",0);
+                return map;
+            }
+            //鍘熷簱瀛� 鏁伴噺闈㈢Н鍑忓皯
+            oldFinishedGoodsInventory.setInventory(oldFinishedGoodsInventory.getInventory()-finishedGoodsInventory.getQuantityAvailable());
+            oldFinishedGoodsInventory.setQuantityAvailable(oldFinishedGoodsInventory.getQuantityAvailable()-finishedGoodsInventory.getQuantityAvailable());
+            oldFinishedGoodsInventory.setArea(oldFinishedGoodsInventory.getInventory()*oldFinishedGoodsInventory.getActualSignalArea());
+
+            //鏂板簱瀛樻暟鎹鍔�
+            finishedGoodsInventory.setId(null);
+            finishedGoodsInventory.setInventory(finishedGoodsInventory.getQuantityAvailable());
+            finishedGoodsInventory.setArea(finishedGoodsInventory.getQuantityAvailable()*finishedGoodsInventory.getActualSignalArea());
+
+            finishedGoodsInventoryMapper.
+                    update(oldFinishedGoodsInventory,
+                            new LambdaUpdateWrapper<FinishedGoodsInventory>()
+                                    .eq(FinishedGoodsInventory::getId,id)
+                    ) ;
+            finishedGoodsInventoryMapper.insert(finishedGoodsInventory);
+
+
+            //寰�鎿嶄綔鏃ュ織琛ㄦ坊鍔犳暟鎹�
+            finishedOperateLog.setQuantity(finishedGoodsInventory.getQuantityAvailable());
+            finishedOperateLog.setRemarks(oldFinishedGoodsInventory.getBoxNo()+"->"+finishedGoodsInventory.getBoxNo());
+            finishedOperateLogMapper.insert(finishedOperateLog);
+
+            map.put("code",1);
+            return map;//搴撳瓨杞Щ鎴愬姛锛屾柊澧炵鍙�
+
+        }else{
+            //褰搃d涓嶅彉鏃讹紝淇敼澶囨敞
+            if(Objects.equals(id, existFinishedGoodsInventory.getId())){
+                finishedGoodsInventoryMapper.
+                        update(null,new LambdaUpdateWrapper<FinishedGoodsInventory>()
+                                .eq(FinishedGoodsInventory::getId,id)
+                                .set(FinishedGoodsInventory::getRemark,finishedGoodsInventory.getRemark()));
+                map.put("code",2);
+                return map;//搴撳瓨澶囨敞淇敼鎴愬姛
+            }else{
+                //鍘熷簱瀛� 鏁伴噺闈㈢Н鍑忓皯
+                oldFinishedGoodsInventory.setInventory(oldFinishedGoodsInventory.getInventory()-finishedGoodsInventory.getQuantityAvailable());
+                oldFinishedGoodsInventory.setQuantityAvailable(oldFinishedGoodsInventory.getQuantityAvailable()-finishedGoodsInventory.getQuantityAvailable());
+                oldFinishedGoodsInventory.setArea(oldFinishedGoodsInventory.getInventory()*oldFinishedGoodsInventory.getActualSignalArea());
+
+                existFinishedGoodsInventory.setInventory(existFinishedGoodsInventory.getInventory()+finishedGoodsInventory.getQuantityAvailable());
+                existFinishedGoodsInventory.setQuantityAvailable(existFinishedGoodsInventory.getQuantityAvailable()+finishedGoodsInventory.getQuantityAvailable());
+                existFinishedGoodsInventory.setArea(existFinishedGoodsInventory.getInventory()*existFinishedGoodsInventory.getActualSignalArea());
+
+                finishedGoodsInventoryMapper.
+                        update(oldFinishedGoodsInventory,
+                                new LambdaUpdateWrapper<FinishedGoodsInventory>()
+                                        .eq(FinishedGoodsInventory::getId,id)
+                        ) ;
+                finishedGoodsInventoryMapper.
+                        update(existFinishedGoodsInventory,
+                                new LambdaUpdateWrapper<FinishedGoodsInventory>()
+                                        .eq(FinishedGoodsInventory::getId,existFinishedGoodsInventory.getId())
+                        ) ;
+
+                //寰�鎿嶄綔鏃ュ織琛ㄦ坊鍔犳暟鎹�
+                finishedOperateLog.setQuantity(finishedGoodsInventory.getQuantityAvailable());
+                finishedOperateLog.setRemarks(oldFinishedGoodsInventory.getBoxNo()+"->"+existFinishedGoodsInventory.getBoxNo());
+                finishedOperateLogMapper.insert(finishedOperateLog);
+
+                map.put("code",3);
+                List<String> list = new ArrayList<>();
+                list.add(oldFinishedGoodsInventory.getBoxNo());
+                list.add(existFinishedGoodsInventory.getBoxNo());
+                map.put("msg",list);
+                return map;//搴撳瓨杞Щ鎴愬姛锛屼慨鏀圭鍙�
+            }
+        }
+    }
 }

--
Gitblit v1.8.0