From 70b86bb70e6941127888979dbde37dda3b1db0b6 Mon Sep 17 00:00:00 2001
From: cp <513960435@qq.com>
Date: 星期二, 19 十一月 2024 09:14:43 +0800
Subject: [PATCH] 完善下架功能

---
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java |  198 ++++++++++++++++++++++++++++++++++++------------
 1 files changed, 147 insertions(+), 51 deletions(-)

diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java
index 1637675..4872ed1 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java
@@ -9,6 +9,7 @@
 import com.zy.asrs.common.openapi.entity.param.CombParam;
 import com.zy.asrs.common.openapi.entity.param.WarehouseOutMergeBoardManyParam;
 import com.zy.asrs.common.openapi.entity.param.WarehouseOutPickMergeParam;
+import com.zy.asrs.common.web.BaseController;
 import com.zy.asrs.common.wms.entity.*;
 import com.zy.asrs.common.wms.mapper.LocDetlMapper;
 import com.zy.asrs.common.wms.service.*;
@@ -250,36 +251,76 @@
 
     @Override
     @Transactional
-    public R WarehouseIn(String locNo, String barcode,Long hostId) {
+    public R WarehouseIn(String locNo, String barcode,Long hostId,Long userId) {
         //鍒ゆ柇搴撲綅鐘舵��
         LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, locNo).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,1L));
         if (Cools.isEmpty(locMast)){
             return R.error("璇ュ簱浣嶄笉瀛樺湪");
         }
-        if (!locMast.getLocSts().equals("O")){
-            return R.error("璇ュ簱浣嶇姸鎬佷负锛�"+locMast.getLocSts()+",绂佹鍏ュ簱");
-        }
+//        if (!locMast.getLocSts().equals("O")){
+//            return R.error("璇ュ簱浣嶇姸鎬佷负锛�"+locMast.getLocSts()+",绂佹鍏ュ簱");
+//        }
         //鏌ヨ缁勬墭鏁版嵁
         List<WaitPakin> list = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getZpallet, barcode).eq(WaitPakin::getHostId, hostId));
         if (Cools.isEmpty(list)){
             return R.error("鏈壘鍒扮粍鎵樹俊鎭�");
         }
         Date now = new Date();
+
         //鎻掑叆搴撳瓨鏁版嵁
         for (WaitPakin waitPakin: list){
-            Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, waitPakin.getMatnr()).eq(Mat::getHostId, hostId));
-            LocDetl locDetl = new LocDetl();
-            locDetl.sync(mat);
-            locDetl.setLocNo(locNo);
+            //澶勭悊搴撳瓨淇℃伅
+            AdjDetl adjDetl = new AdjDetl();
+            Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>()
+                    .eq(Mat::getMatnr, waitPakin.getMatnr()).eq(Mat::getHostId, hostId));
+            LocDetl locDetl1=locDetlService.getOne(new LambdaQueryWrapper<LocDetl>()
+                    .eq(LocDetl::getMatnr,waitPakin.getMatnr())
+                    .eq(LocDetl::getHostId,hostId)
+                    .eq(LocDetl::getLocNo,locNo));
+            double i=0.0;
+            if(!Cools.isEmpty(locDetl1)){
+                i=locDetl1.getAnfme();
+                locDetl1.setAnfme(locDetl1.getAnfme()+waitPakin.getAnfme());
+                locDetlService.updateById(locDetl1);
+                adjDetl.setMatnr(locDetl1.getMatnr());
+                adjDetl.setBatch(locDetl1.getBatch());
+                adjDetl.setAdjQty(locDetl1.getAnfme());
+            }else{
+                LocDetl locDetl = new LocDetl();
+                locDetl.sync(mat);
+                locDetl.setLocNo(locNo);
 //            locDetl.setBarcode(waitPakin.getBarcode());
-            locDetl.setZpallet(waitPakin.getZpallet());
-            locDetl.setAnfme(waitPakin.getAnfme());
-            locDetl.setBatch(waitPakin.getBatch());
+                locDetl.setZpallet(waitPakin.getZpallet());
+                locDetl.setAnfme(waitPakin.getAnfme());
+                locDetl.setBatch(waitPakin.getBatch());
 //            locDetl.setWeight(waitPakin.getWeight());
-            locDetl.setHostId(hostId);
-            locDetl.setModiTime(now);
-            locDetl.setAppeTime(now);
-            locDetlService.save(locDetl);
+                locDetl.setHostId(hostId);
+                locDetl.setModiTime(now);
+                locDetl.setAppeTime(now);
+                locDetlService.save(locDetl);
+                adjDetl.setMatnr(locDetl.getMatnr());
+                adjDetl.setBatch(locDetl.getBatch());
+                adjDetl.setAdjQty(locDetl.getAnfme());
+            }
+
+            try {
+
+                adjDetl.setLocNo(locNo);
+                adjDetl.setOriQty(i);
+                adjDetl.setMemo("骞冲韩涓婃灦");
+                adjDetl.setModiUser(userId);
+                adjDetl.setAppeUser(userId);
+                adjDetl.setAppeTime(new Date());
+                adjDetl.setModiTime(new Date());
+                adjDetl.setOrderNo(waitPakin.getOrderNo());
+                if (!adjDetlService.save(adjDetl)) {
+                    throw new CoolException("淇濆瓨搴撳瓨璋冩暣璁板綍澶辫触");
+                }
+            }catch (Exception e){
+                e.printStackTrace();
+                throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊" + e.getMessage());
+            }
+
             //鏄惁灞炰簬璁㈠崟鏁版嵁
             if (!Cools.isEmpty(waitPakin.getOrderNo())){
                 Order order = orderService.selectByNo(waitPakin.getOrderNo(), hostId);
@@ -319,7 +360,7 @@
 
     @Override
     @Transactional
-    public R WarehouseOut(CombParam combParam, Long hostId) {
+    public R WarehouseOut(CombParam combParam, Long hostId , Long userId) {
         //鍒ゆ柇搴撲綅鐘舵��
         LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, combParam.getLocno()).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,1L));
         if (Cools.isEmpty(locMast)){
@@ -335,7 +376,7 @@
                     .eq(LocDetl::getHostId, hostId)
                     .eq(LocDetl::getZpallet, combMat.getZpallet())
                     .eq(LocDetl::getMatnr, combMat.getMatnr())
-                    .eq(LocDetl::getBatch, combMat.getBatch())
+//                    .eq(LocDetl::getBatch, combMat.getBatch())
             );
             if (Cools.isEmpty(locDetl)){
                 return R.error("鏈煡璇㈠埌搴撳瓨鏁版嵁");
@@ -356,7 +397,7 @@
                     continue;
                 }
                 if (orderDetl.getAnfme() < orderDetl.getWorkQty()+combMat.getAnfme()){
-                    throw new CoolException("涓嬫灦鏁伴噺鍑洪敊");
+                    combMat.setAnfme(orderDetl.getAnfme()-orderDetl.getWorkQty());
                 }
                 // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺
                 if (!orderDetlService.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), hostId)) {
@@ -370,6 +411,8 @@
                 orderService.checkComplete(combParam.getOrderNo(), hostId);
             }
             try {
+                double i=0.0;
+                double j=locDetl.getAnfme();
                 //澶勭悊搴撳瓨淇℃伅
                 if (combMat.getAnfme().equals(locDetl.getAnfme())){
                     //搴撳瓨鐩哥瓑鍒犻櫎鏁版嵁
@@ -382,8 +425,32 @@
                     }
                 }else {
                     BigDecimal subtract = BigDecimal.valueOf(locDetl.getAnfme()).subtract(BigDecimal.valueOf(combMat.getAnfme()));
+                    i=subtract.byteValue();
                     locDetl.setAnfme(subtract.doubleValue());
                     locDetlService.updateById(locDetl);
+                }
+
+                try {
+                    //澶勭悊搴撳瓨淇℃伅
+                    AdjDetl adjDetl = new AdjDetl();
+                    adjDetl.setLocNo(locDetl.getLocNo());
+                    adjDetl.setMatnr(locDetl.getMatnr());
+                    adjDetl.setBatch(locDetl.getBatch());
+                    adjDetl.setOriQty(j);
+                    adjDetl.setAdjQty(i);
+                    adjDetl.setMemo("骞冲韩涓嬫灦");
+                    adjDetl.setModiUser(userId);
+                    adjDetl.setAppeUser(userId);
+                    adjDetl.setAppeTime(new Date());
+                    adjDetl.setModiTime(new Date());
+                    adjDetl.setOrderNo(combParam.getOrderNo());
+                    adjDetl.setHostId(hostId);
+                    if (!adjDetlService.save(adjDetl)) {
+                        throw new CoolException("淇濆瓨搴撳瓨璋冩暣璁板綍澶辫触");
+                    }
+                }catch (Exception e){
+                    e.printStackTrace();
+                    throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊" + e.getMessage());
                 }
             }catch (Exception e){
                 throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊"+e.getMessage());
@@ -399,7 +466,7 @@
 
     @Override
     @Transactional
-    public R WarehouseOutV1(CombParam combParam, Long hostId) {
+    public R WarehouseOutV1(CombParam combParam, Long hostId,Long userId) {
         //鍒ゆ柇搴撲綅鐘舵��
         LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, combParam.getLocno()).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,0L));
         if (Cools.isEmpty(locMast)){
@@ -427,8 +494,8 @@
             if (combMat.getAnfme() > locDetl.getAnfme()){
                 return R.error("鎷i�夋暟閲忛敊璇紝瓒呭嚭搴撳瓨鏁伴噺");
             }
-            if (!Cools.isEmpty(combParam.getOrderNo())){
-                Order order = orderService.selectByNo(combParam.getOrderNo(), hostId);
+            if (!Cools.isEmpty(combMat.getOrderNo())){
+                Order order = orderService.selectByNo(combMat.getOrderNo(), hostId);
                 if (Cools.isEmpty(order)){
                     continue;
                 }
@@ -443,7 +510,7 @@
                     throw new CoolException("鎷i�夋暟閲忓嚭閿�,璁㈠崟鍓╀綑鍑哄簱鏁伴噺灏忎簬宸插嚭搴撴暟閲忎笌灏嗘嫞閫夋暟閲忎箣鍜岋紒锛侊紒");
                 }
                 // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺
-                if (!orderDetlService.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), hostId)) {
+                if (!orderDetlService.increaseWorkQtyByOrderNo(combMat.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), hostId)) {
                     throw new CoolException("淇敼鍗曟嵁鏄庣粏宸ヤ綔鏁伴噺澶辫触");
                 }
                 // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
@@ -451,7 +518,7 @@
                     throw new CoolException("淇敼鍗曟嵁鏄庣粏瀹屾垚鏁伴噺澶辫触");
                 }
                 // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
-                orderService.checkComplete(combParam.getOrderNo(), hostId);
+                orderService.checkComplete(combMat.getOrderNo(), hostId);
             }
             try {
                 //澶勭悊搴撳瓨淇℃伅
@@ -460,9 +527,12 @@
                 adjDetl.setMatnr(locDetl.getMatnr());
                 adjDetl.setBatch(locDetl.getBatch());
                 adjDetl.setOriQty(locDetl.getAnfme());
-                adjDetl.setMemo("WarehouseOutV1-pick");
+                adjDetl.setMemo("骞舵澘閫斾腑鎷f枡");
+                adjDetl.setModiUser(userId);
+                adjDetl.setAppeUser(userId);
+                adjDetl.setAppeTime(new Date());
                 adjDetl.setModiTime(new Date());
-
+                adjDetl.setOrderNo(combMat.getOrderNo());
                 if (combMat.getAnfme().equals(locDetl.getAnfme())){
                     adjDetl.setAdjQty(0D);
                     //搴撳瓨鐩哥瓑鍒犻櫎鏁版嵁
@@ -470,8 +540,8 @@
                     int count = locDetlService.count(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo,combParam.getLocno()).eq(LocDetl::getHostId, hostId));
                     if (count == 0){
                         LocMast locMast1 = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, combParam.getLocno()).eq(LocMast::getHostId, hostId));
-                        locMast1.setLocSts("O");
-                        locMastService.updateById(locMast1);
+//                        locMast1.setLocSts("O");
+//                        locMastService.updateById(locMast1);
                     }
                 } else {
                     BigDecimal subtract = BigDecimal.valueOf(locDetl.getAnfme()).subtract(BigDecimal.valueOf(combMat.getAnfme()));
@@ -492,7 +562,7 @@
 
     @Override
     @Transactional
-    public R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId) {
+    public R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId,Long userId) {
         //鍒ゆ柇搴撲綅鐘舵��
         LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, param.getLocNo()).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,0L));
         if (Cools.isEmpty(locMast)){
@@ -541,6 +611,14 @@
             locDetl.setId(null);
             locDetl.setLocNo(param.getLocNo());
             locDetl.setBarcode(locMast.getBarcode());
+            Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr,locDetl.getMatnr()));
+            locDetl.setHostId(hostId);
+            locDetl.setMaktx(mat.getMaktx());
+            if(hostId==1){
+                locDetl.setOwner("瀹佹尝浠�");
+            }else{
+                locDetl.setOwner("鏂版槍浠�");
+            }
 
             String matKey = locDetl.getMatnr();
             if (!Cools.isEmpty(locDetl.getBatch())) {
@@ -604,7 +682,7 @@
                         continue;
                     }
                     if (orderDetl.getAnfme() < (orderDetl.getWorkQty() + orderDto.getAnfme())) {
-                        throw new CoolException("鎷i�夋暟閲忓嚭閿�,璁㈠崟鍓╀綑鍑哄簱鏁伴噺灏忎簬宸插嚭搴撴暟閲忎笌灏嗘嫞閫夋暟閲忎箣鍜岋紒锛侊紒");
+                        throw new CoolException("骞舵澘鏁伴噺鍑洪敊,璁㈠崟鍓╀綑鍑哄簱鏁伴噺灏忎簬宸插嚭搴撴暟閲忎笌灏嗗苟鏉挎暟閲忎箣鍜岋紒锛侊紒");
                     }
                     // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺
                     if (!orderDetlService.increaseWorkQtyByOrderNo(orderDto.getOrderNo(), locDetl.getMatnr(), locDetl.getBatch(), orderDto.getAnfme(), hostId)) {
@@ -616,34 +694,39 @@
                     }
                     // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
                     orderService.checkComplete(orderDto.getOrderNo(), hostId);
+
+                    try {
+                        //澶勭悊搴撳瓨淇℃伅
+                        AdjDetl adjDetl = new AdjDetl();
+                        adjDetl.setLocNo(locDetl.getLocNo());
+                        adjDetl.setMatnr(locDetl.getMatnr());
+                        adjDetl.setBatch(locDetl.getBatch());
+                        adjDetl.setOriQty(originAnfme);
+                        adjDetl.setAdjQty(locDetl.getAnfme());
+                        adjDetl.setMemo("鎷f枡閫斾腑骞舵澘");
+                        adjDetl.setModiUser(userId);
+                        adjDetl.setAppeUser(userId);
+                        adjDetl.setAppeTime(new Date());
+                        adjDetl.setModiTime(new Date());
+                        adjDetl.setOrderNo(order.getOrderNo());
+                        if (!adjDetlService.save(adjDetl)) {
+                            throw new CoolException("淇濆瓨搴撳瓨璋冩暣璁板綍澶辫触");
+                        }
+                    }catch (Exception e){
+                        e.printStackTrace();
+                        throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊" + e.getMessage());
+                    }
                 }
             }
 
-            try {
-                //澶勭悊搴撳瓨淇℃伅
-                AdjDetl adjDetl = new AdjDetl();
-                adjDetl.setLocNo(locDetl.getLocNo());
-                adjDetl.setMatnr(locDetl.getMatnr());
-                adjDetl.setBatch(locDetl.getBatch());
-                adjDetl.setOriQty(originAnfme);
-                adjDetl.setAdjQty(locDetl.getAnfme());
-                adjDetl.setMemo("WarehouseOutV1-pick");
-                adjDetl.setModiTime(new Date());
 
-                if (!adjDetlService.save(adjDetl)) {
-                    throw new CoolException("淇濆瓨搴撳瓨璋冩暣璁板綍澶辫触");
-                }
-            }catch (Exception e){
-                e.printStackTrace();
-                throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊" + e.getMessage());
-            }
         }
         return R.ok();
     }
 
     @Override
     @Transactional
-    public R WarehouseOutMergeBoardMany(WarehouseOutMergeBoardManyParam param, Long hostId) {
+    public R WarehouseOutMergeBoardMany(WarehouseOutMergeBoardManyParam param, Long hostId,Long userId) {
         WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode(), hostId);
         if (wrkMast == null) {
             throw new CoolException("宸ヤ綔妗d笉瀛樺湪");
@@ -663,7 +746,7 @@
         for (WrkDetl wrkDetl : wrkDetls) {
             String matKey = wrkDetl.getMatnr();
             if (!Cools.isEmpty(wrkDetl.getBatch())) {
-                matKey += "_" + wrkDetl.getBatch();
+                matKey += "_" + wrkDetl.getBatch() + "-" +wrkDetl.getOrderNo();
             }
 
             MergeBoardManyDto dto = new MergeBoardManyDto();
@@ -676,18 +759,25 @@
         for (OrderDetl orderDetl : param.getCombMats()) {
             String matKey = orderDetl.getMatnr();
             if (!Cools.isEmpty(orderDetl.getBatch())) {
-                matKey += "_" + orderDetl.getBatch();
+                matKey += "_" + orderDetl.getBatch() + "-" +orderDetl.getOrderNo();
             }
 
             MergeBoardManyDto dto = wrkData.get(matKey);
             if(dto == null){
                 WrkDetl wrkDetl = new WrkDetl();
                 wrkDetl.sync(orderDetl);
+                Mat mat=matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr,wrkDetl.getMatnr()));
+                wrkDetl.sync(mat);
                 wrkDetl.setId(null);
                 wrkDetl.setWrkNo(wrkMast.getWrkNo());
                 wrkDetl.setWrkMastId(wrkMast.getId());
+                wrkDetl.setZpallet(wrkMast.getBarcode());
                 wrkDetl.setIoTime(new Date());
-
+                wrkDetl.setHostId(hostId);
+                wrkDetl.setAppeUser(userId);
+                wrkDetl.setAppeTime(new Date());
+                wrkDetl.setModiUser(userId);
+                wrkDetl.setModiTime(new Date());
                 ArrayList<PickMergeOrderDto> orderDtos = new ArrayList<>();
                 orderDtos.add(new PickMergeOrderDto(orderDetl.getOrderNo(), orderDetl.getAnfme()));
 
@@ -700,8 +790,11 @@
                 List<PickMergeOrderDto> orders = dto.getOrders();
 
                 wrkDetl.setAnfme(wrkDetl.getAnfme() + orderDetl.getAnfme());
+                wrkDetl.setIoTime(new Date());
+                wrkDetl.setHostId(hostId);
+                wrkDetl.setModiUser(userId);
+                wrkDetl.setModiTime(new Date());
                 orders.add(new PickMergeOrderDto(orderDetl.getOrderNo(), orderDetl.getAnfme()));
-
                 dto.setWrkDetl(wrkDetl);
                 dto.setOrders(orders);
             }
@@ -750,10 +843,13 @@
                     }
                     // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
                     orderService.checkComplete(orderDto.getOrderNo(), hostId);
+
+
                 }
             }
         }
 
         return R.ok();
     }
+
 }

--
Gitblit v1.9.1