From 178d30a9b69598e82489d24b1da18b3b3ab0766b Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 19 一月 2026 14:01:50 +0800
Subject: [PATCH] #拣料盘点功能优化

---
 src/main/java/com/zy/common/web/WcsController.java |  260 +++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 205 insertions(+), 55 deletions(-)

diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 700d502..e102f20 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -95,7 +95,19 @@
             return Re.error("浠撳簱缂栧彿涓嶅尮閰�");
         }
         List<WaitPakin> waitPakins = null;
-        if (param.getFromPort().equals("1001")) {
+
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", param.getBarCode()));
+
+        if(wrkMast != null && (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107)){
+            switch (wrkMast.getIoType()){
+                case 103:param.setIoType(103);break;//鎷f枡
+                case 107:param.setIoType(107);break;//鐩樼偣
+            }
+        }else{
+            //鍏ㄦ澘鍏ュ簱
+            param.setIoType(1);
+        }
+        if (param.getFromPort().equals("1001") && param.getIoType()!=103 && param.getIoType() != 107) {
 
             //鏈夌┖鏉垮嚭搴撴椂绂佹鍏ュ簱
             int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", 1001).notIn("wrk_sts", 7));
@@ -108,7 +120,7 @@
             }
             waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarCode()));
             if (Cools.isEmpty(waitPakins)) {
-                WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarCode());
+//                WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarCode());
                 if (wrkMast != null && wrkMast.getIoType() == 103) {
                     return Re.parse(CodeRes.PICK_600);
                 }
@@ -153,17 +165,14 @@
 
         StartupDto dto = null;
 
-        //鍏ㄦ澘鍏ュ簱
-        param.setIoType(1);
 
         switch (param.getIoType()) {
             case 1://婊℃墭鐩樺叆搴�
                 assert waitPakins != null;
                 dto = startupFullPutStore(Integer.valueOf(param.getFromPort()), param.getBarCode(), locTypeDto, waitPakins);
                 break;
-//            case 10://绌烘墭鐩樺叆搴�
-//                dto = emptyPlateIn(Integer.valueOf(param.getFromPort()), locTypeDto, param.getBarCode());
-//                break;
+            case 103:startupFullPutStore103(Integer.valueOf(param.getFromPort()), param.getBarCode(), locTypeDto, wrkMast);break;
+            case 107:startupFullPutStore107(Integer.valueOf(param.getFromPort()), param.getBarCode(), locTypeDto, wrkMast);break;
             default:
                 break;
         }
@@ -378,6 +387,147 @@
         return dto;
     }
 
+    /**
+     * 鐩樼偣鍏ュ簱
+     */
+    @Transactional
+    public StartupDto startupFullPutStore107(Integer devpNo, String barcode, LocTypeDto locTypeDto, WrkMast wrkMast) {
+        // 婧愮珯鐐圭姸鎬佹娴�
+        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
+        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+        List<WrkDetl> wrkDetlList = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+        WrkDetl wrkDetl = wrkDetlList.get(0);
+        findLocNoAttributeVo.setMatnr(wrkDetl.getMatnr());
+        findLocNoAttributeVo.setBatch(wrkDetl.getBatch());
+//        StartupDto dto = commonService.getLocNo(1, devpNo, matnrs.get(0), batchs.get(0), null, locTypeDto);
+        StartupDto dto = commonService.getLocNoNew(1, devpNo, findLocNoAttributeVo, locTypeDto,barcode);
+        if (dto == null) {
+            throw new CoolException("娌℃湁妫�绱㈠埌绌哄簱浣�");
+        }
+        Date now = new Date();
+        // 鐢熸垚宸ヤ綔妗�
+        try{
+            // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+            if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+            }
+            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+            if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
+                throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+            }
+            // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+            wrkMast.setIoTime(now);
+            wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+            wrkMast.setWrkSts(0L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+            wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+            wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔�
+            wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+            wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+            wrkMast.setModiTime(now);
+            wrkMast.setMk("N");//鏄惁瀹屾垚涓婃姤wcs
+            // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiTime(now);
+            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+            }
+            // 鏇存柊鏄庣粏妗o_time (鍘嗗彶妗e叧鑱斾娇鐢級
+            wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now);
+            // 鏇存柊婧愮珯鐐逛俊鎭�
+            sourceStaNo.setWrkNo(wrkMast.getWrkNo());
+            sourceStaNo.setModiTime(now);
+            if (!basDevpService.updateById(sourceStaNo)) {
+                throw new CoolException("鏇存柊婧愮珯澶辫触");
+            }
+            // 鏇存柊鐩爣搴撲綅鐘舵��
+            LocMast locMast = locMastService.selectById(dto.getLocNo());
+            if (locMast.getLocSts().equals("O")) {
+                locMast.setLocSts("Q"); // S.鍏ュ簱棰勭害
+                locMast.setModiTime(now);
+                if (!locMastService.updateById(locMast)) {
+                    throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+                }
+            } else {
+                throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        }
+        return dto;
+    }
+
+
+    /**
+     * 鐩樼偣鍏ュ簱
+     */
+    @Transactional
+    public StartupDto startupFullPutStore103(Integer devpNo, String barcode, LocTypeDto locTypeDto, WrkMast wrkMast) {
+        // 婧愮珯鐐圭姸鎬佹娴�
+        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
+        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+        List<WrkDetl> wrkDetlList = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+        WrkDetl wrkDetl = wrkDetlList.get(0);
+        findLocNoAttributeVo.setMatnr(wrkDetl.getMatnr());
+        findLocNoAttributeVo.setBatch(wrkDetl.getBatch());
+//        StartupDto dto = commonService.getLocNo(1, devpNo, matnrs.get(0), batchs.get(0), null, locTypeDto);
+        StartupDto dto = commonService.getLocNoNew(1, devpNo, findLocNoAttributeVo, locTypeDto,barcode);
+        if (dto == null) {
+            throw new CoolException("娌℃湁妫�绱㈠埌绌哄簱浣�");
+        }
+        Date now = new Date();
+        // 鐢熸垚宸ヤ綔妗�
+        try{
+            // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+            if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+            }
+            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+            if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
+                throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+            }
+            // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+            wrkMast.setIoTime(now);
+            wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+            wrkMast.setWrkSts(0L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+            wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+            wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔�
+            wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+            wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+            wrkMast.setModiTime(now);
+            wrkMast.setMk("N");//鏄惁瀹屾垚涓婃姤wcs
+            // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiTime(now);
+            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+            }
+            // 鏇存柊鏄庣粏妗o_time (鍘嗗彶妗e叧鑱斾娇鐢級
+            wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now);
+            // 鏇存柊婧愮珯鐐逛俊鎭�
+            sourceStaNo.setWrkNo(wrkMast.getWrkNo());
+            sourceStaNo.setModiTime(now);
+            if (!basDevpService.updateById(sourceStaNo)) {
+                throw new CoolException("鏇存柊婧愮珯澶辫触");
+            }
+            // 鏇存柊鐩爣搴撲綅鐘舵��
+            LocMast locMast = locMastService.selectById(dto.getLocNo());
+            if (locMast.getLocSts().equals("O")) {
+                locMast.setLocSts("Q"); // S.鍏ュ簱棰勭害
+                locMast.setModiTime(now);
+                if (!locMastService.updateById(locMast)) {
+                    throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+                }
+            } else {
+                throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        }
+        return dto;
+    }
+
     @Transactional
     public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto) {
         // 婧愮珯鐐圭姸鎬佹娴�
@@ -451,44 +601,44 @@
          */
 
         if (statusParam.getTaskStatus() == 0) {
-            //鎷f枡鍜岀洏鐐瑰啀鍏ュ簱鍒ゆ柇
-            if ((wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107) && wrkMast.getWrkSts() == 14) {
-                List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
-                String sourcecLocNo = wrkMast.getSourceLocNo();
-                // 鑾峰彇鍚庝袱浣嶇殑灞傛暟锛堥珮浣庡簱浣嶆暟鎹級
-                String layerStr = sourcecLocNo.substring(sourcecLocNo.length() - 2);
-                int layer = Integer.parseInt(layerStr);
-                // 鍒ゆ柇灞傛暟
-                Short locType1 = (short) ((layer == 1) ? 1 : 2);
-                LocTypeDto locTypeDto = new LocTypeDto();
-                locTypeDto.setLocType1(locType1);
-                //娉ㄦ剰涓�涓澘鍙兘鏀惧悓涓�绉嶇墿鏂欙紙妫�绱㈡柊搴撲綅锛�
-//                StartupDto dto = commonService.getLocNoRunPick(4, 1, 101, wrkDetls.get(0).getMatnr(), wrkDetls.get(0).getBatch(), null, 4, locTypeDto, 2);
-                FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
-                findLocNoAttributeVo.setMatnr(wrkDetls.get(0).getMatnr());
-                StartupDto dto = commonService.getLocNoNew(1, 101, findLocNoAttributeVo,locTypeDto,null);
-                Date now = new Date();
-                wrkMast.setIoTime(now);
-                wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+//            //鎷f枡鍜岀洏鐐瑰啀鍏ュ簱鍒ゆ柇
+//            if ((wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107) && wrkMast.getWrkSts() == 14) {
+//                List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+//                String sourcecLocNo = wrkMast.getSourceLocNo();
+//                // 鑾峰彇鍚庝袱浣嶇殑灞傛暟锛堥珮浣庡簱浣嶆暟鎹級
+//                String layerStr = sourcecLocNo.substring(sourcecLocNo.length() - 2);
+//                int layer = Integer.parseInt(layerStr);
+//                // 鍒ゆ柇灞傛暟
+//                Short locType1 = (short) ((layer == 1) ? 1 : 2);
+//                LocTypeDto locTypeDto = new LocTypeDto();
+//                locTypeDto.setLocType1(locType1);
+//                //娉ㄦ剰涓�涓澘鍙兘鏀惧悓涓�绉嶇墿鏂欙紙妫�绱㈡柊搴撲綅锛�
+////                StartupDto dto = commonService.getLocNoRunPick(4, 1, 101, wrkDetls.get(0).getMatnr(), wrkDetls.get(0).getBatch(), null, 4, locTypeDto, 2);
+//                FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+//                findLocNoAttributeVo.setMatnr(wrkDetls.get(0).getMatnr());
+//                StartupDto dto = commonService.getLocNoNew(1, 101, findLocNoAttributeVo,locTypeDto,null);
+//                Date now = new Date();
+//                wrkMast.setIoTime(now);
+//                wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+//                wrkMast.setWrkSts(1L);//1.宸叉帴鏀�
+//                wrkMast.setSourceStaNo(101); // 婧愮珯
+//                wrkMast.setStaNo(null); // 鐩爣绔�
+//                wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅
+//                wrkMast.setSourceLocNo(sourcecLocNo);
+//                wrkMast.setModiTime(now);
+//                wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now);
+//
+//                // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+//                LocMast locMast2 = locMastService.selectById(dto.getLocNo());
+//                locMast2.setLocSts("Q");
+//                locMast2.setModiTime(new Date());
+//                if (!locMastService.updateById(locMast2)) {
+//
+//                    throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+//                }
+//            } else {
                 wrkMast.setWrkSts(1L);//1.宸叉帴鏀�
-                wrkMast.setSourceStaNo(101); // 婧愮珯
-                wrkMast.setStaNo(null); // 鐩爣绔�
-                wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅
-                wrkMast.setSourceLocNo(sourcecLocNo);
-                wrkMast.setModiTime(now);
-                wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now);
-
-                // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
-                LocMast locMast2 = locMastService.selectById(dto.getLocNo());
-                locMast2.setLocSts("Q");
-                locMast2.setModiTime(new Date());
-                if (!locMastService.updateById(locMast2)) {
-
-                    throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
-                }
-            } else {
-                wrkMast.setWrkSts(1L);//1.宸叉帴鏀�
-            }
+//            }
         } else if (statusParam.getTaskStatus() == 1) {
             wrkMast.setWrkSts(2L);//2.浠诲姟寮�濮�
         } else if (statusParam.getTaskStatus() == 2) {
@@ -531,17 +681,17 @@
             }
         }
         wrkMastService.updateById(wrkMast);
-        //宸插叆搴撴湭纭鍘嗗彶妗f洿鏂�
-        if(wrkMast.getWrkSts() == 14){
-            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
-                throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�");
-            }
-            // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
-            if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
-                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�");
-            }
-        }
+//        //宸插叆搴撴湭纭鍘嗗彶妗f洿鏂�
+//        if(wrkMast.getWrkSts() == 14 && (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107)){
+//            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+//            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+//                throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�");
+//            }
+//            // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+//            if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+//                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�");
+//            }
+//        }
         return Re.ok();
     }
 

--
Gitblit v1.9.1