From d6cb644d0ccc0f73f68d60b3a43e82320d8c97f0 Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期一, 23 六月 2025 08:57:04 +0800
Subject: [PATCH] 米多泉州wms功能完善

---
 src/main/java/com/zy/common/web/WcsController.java |  162 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 135 insertions(+), 27 deletions(-)

diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index bbe9aa6..e070559 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -8,8 +8,10 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.EmptyPlateOutParam;
+import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.asrs.entity.result.FindLocNoAttributeVo;
 import com.zy.asrs.mapper.LocMastMapper;
+import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.*;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.StartupDto;
@@ -63,6 +65,9 @@
     @Resource
     private ConfigService configService;
 
+    @Resource
+    private WrkMastMapper wrkMastMapper;
+
     @PostMapping("/pakin/loc/v1")
     @ResponseBody
     @Transactional
@@ -90,20 +95,38 @@
 
         StartupDto dto = null;
 
+        // 鍏ュ簱鏈夊紓甯稿嚭鍒板嚭搴撳彛1024
+        if(!Cools.isEmpty(param.getErrMsg())){
+            return exceptionIsOutOfTheWarehouse(param,sourceStaNo,waitPakin);
+        }
+
         if(param.getIoType() == 1) {
             List<SearchLocParam.WantBucket> wantBucketFlag = param.getWantBucketFlag();
-            Optional<SearchLocParam.WantBucket> first = wantBucketFlag.stream().filter(wantBucket -> wantBucket.getBucketType() == param.getBucketType()).findFirst();
-            if (first.isPresent()) {
-                if(waitPakin == null) {
-                    return R.error("鍏ュ簱閫氱煡妗d负绌�");
-                } else {
-                    dto = startupFullPutStore(param,waitPakin,first.get()); // 鐩翠緵缃愯绾夸换鍔�
-                    if (dto != null) {
-                        log.info("WCS鍏ュ簱鐩翠緵缃愯绾挎帴鍙h繑鍙�:{},鎵樼洏鐮�:{}", dto, param.getBarcode());
-                        return R.ok().add(dto);
+            for(SearchLocParam.WantBucket wantBucket: wantBucketFlag) {
+                if(wantBucket.getBucketType() != 0 && wantBucket.getBucketType() == param.getBucketType()) { // 缃愯绾挎湁瑕佹《淇″彿骞朵笖褰撳墠妗舵槸缃愯绾胯鐨勬《
+                    if(waitPakin == null) {
+                        return R.error("鍏ュ簱閫氱煡妗d负绌�");
+                    } else {
+                        // <4 < 2 < 4
+                        int count = wrkMastMapper.selectInGzxCount(wantBucket.getSite());
+//                        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", wantBucket.getSite()));
+                        if(wantBucket.getSite() == 1071 && count < 4 || wantBucket.getSite() == 1064 && count < 2 || wantBucket.getSite() == 1078 && count < 4) {
+                            dto = startupFullPutStore(param,waitPakin,wantBucket); // 鐩翠緵缃愯绾夸换鍔�
+                            if (dto != null) {
+                                log.info("WCS鍏ュ簱鐩翠緵缃愯绾挎帴鍙h繑鍙�:{},鎵樼洏鐮�:{}", dto, param.getBarcode());
+                                return R.ok().add(dto);
+                            }
+                        } else {
+                            log.warn("鐩翠緵鐏岃绾夸换鍔″凡婊★紝鍏ユ垚鍝佸簱,鍏ュ簱鐩爣绔欑偣{}锛屼换鍔℃暟锛歿}",wantBucket.getSite(),count);
+                        }
                     }
                 }
             }
+        }
+        // 1.姣嶆墭鐩橈紝2瀛愭墭鐩�
+        int flag = 0;
+        if(param.getIoType() == 10) {
+            flag = param.getBucketType() == 21 ? 1 : 2 ;
         }
 
         switch (param.getIoType()) {
@@ -112,13 +135,80 @@
                 dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakin, param.isTailSupportFlag());
                 break;
             case 10://绌烘墭鐩樺叆搴�
-                dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode(), 1);
+                dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode(), 1, flag);
                 break;
             default:
                 break;
         }
         log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, param.getBarcode());
         return R.ok().add(dto);
+    }
+
+    /**
+     * 鍏ュ簱寮傚父鍑哄埌鍑哄簱鍙�1024
+     */
+    @Transactional(propagation = Propagation.REQUIRED)
+    public R exceptionIsOutOfTheWarehouse(SearchLocParam param, BasDevp sourceStaNo,WaitPakin waitPakin) {
+
+        StartupDto dto = commonService.getLocNo(param,1024);
+        int workNo = dto.getWorkNo();
+        Date now = new Date();
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(2L);
+        wrkMast.setIoType(3); // 鍏ュ嚭搴撶姸鎬侊細3.绔欏埌绔�
+        wrkMast.setIoPri(13D); // 浼樺厛绾�
+        wrkMast.setSourceStaNo(dto.getSourceStaNo());
+        wrkMast.setStaNo(dto.getStaNo());
+        wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("N"); // 绌烘澘
+        wrkMast.setLinkMis("Y");
+        wrkMast.setCtnType(0); // 灏炬墭鏍囪瘑
+        wrkMast.setPdcType(waitPakin != null ? waitPakin.getMaktx() : ""); // 绌烘《绫诲瀷
+        // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiTime(now);
+        wrkMast.setLocNo(param.getErrMsg()); // 寮傚父鎻忚堪浣撶幇鍦ㄧ洰鏍囧簱浣嶄笂
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        // 鐢熸垚宸ヤ綔妗f槑缁�
+        if(waitPakin != null) {
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(waitPakin);
+            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl.setIoTime(wrkMast.getIoTime());
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setModiTime(now);
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+            }
+            // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
+            Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
+                    .eq("zpallet", param.getBarcode());
+            WaitPakin setParam = new WaitPakin();
+            setParam.setLocNo(dto.getLocNo());
+            setParam.setIoStatus("Y");
+            setParam.setModiTime(now);
+            if (!waitPakinService.update(setParam, wrapper)) {
+                throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
+            }
+        }
+
+        // 鏇存柊婧愮珯鐐逛俊鎭�
+        sourceStaNo.setWrkNo(workNo);
+        sourceStaNo.setModiTime(now);
+        if (!basDevpService.updateById(sourceStaNo)){
+            throw new CoolException("鏇存柊婧愮珯澶辫触");
+        }
+
+        return R.ok(dto);
     }
 
     // 缃愯瀹屾垚鍏ュ簱
@@ -146,17 +236,19 @@
         }
 
         // 鑾峰彇绯荤粺閰嶇疆锛岀湅鎴愬搧缃愯瀹屾垚鏄惁鐩存帴鍑哄埌鍙戣揣鍙�
-        Config config = configService.selectConfigByCode("gzwcfh");
-        String fhFlag = "";
+        Config config = configService.selectConfigByCode("gzxfh" + param.getSourceStaNo());
+        boolean fhFlag = false;
+        int fhk = 0; // 鍙戣揣鍙�
         if (config != null && config.getStatus() == 1 && !Cools.isEmpty(config.getValue())) {
-            fhFlag = config.getValue();
+            fhFlag = true;
+            fhk = Integer.parseInt(config.getValue());
         }
 
         Date now = new Date();
         StartupDto dto;
 
         // 鍒ゆ柇璐存爣寮傚父锛屽妫�閲嶉噺寮傚父鐨勶紝涓嶅垎閰嶅簱浣嶏紝鍘诲線寮傚父鍙�1090
-//        if ( !param.isTbFlag() || param.getGrossWeight() < param.getWeight()) {
+//        if ( !param.isTbFlag() || !param.isReinspection()) {
 //
 //            // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------
 //            WrkMast wrkMast = new WrkMast();
@@ -190,9 +282,11 @@
 //            wrkDetl.setManuDate(param.getManuDate());
 //            wrkDetl.setWeight(param.getWeight());
 //            wrkDetl.setManLength(param.getGrossWeight());
-//            wrkDetl.setInspect(1); // 璐存爣鎴愬姛
+//            wrkDetl.setVolume(param.getCannedVolume()); // 缃愯閲�
+//            wrkDetl.setInspect(param.isTbFlag()?1:0); // 璐存爣鎴愬姛
 //            wrkDetl.setIoTime(now);
 //            wrkDetl.setAppeTime(now);
+//            wrkDetl.setModel(wrkDetl1.getMaktx()); // 淇濆瓨绌烘《鍚嶇О
 //            wrkDetlService.insert(wrkDetl);
 //
 //            dto = new StartupDto();
@@ -200,7 +294,7 @@
 //            dto.setSourceStaNo(wrkMast.getSourceStaNo());
 //            dto.setStaNo(wrkMast.getStaNo());
 //        } else
-        if(param.getMatnr().equals(fhFlag)) { // 鐩存帴鍙戣揣
+        if(fhFlag) { // 鐩存帴鍙戣揣
             // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------
             WrkMast wrkMast = new WrkMast();
             wrkMast.setWrkNo(commonService.getWorkNo(0));
@@ -210,7 +304,7 @@
             wrkMast.setIoPri(13D); // 浼樺厛绾�
 //            wrkMast.setCrnNo(dto.getCrnNo());
             wrkMast.setSourceStaNo(param.getSourceStaNo());
-            wrkMast.setStaNo(1016);
+            wrkMast.setStaNo(fhk);
 //            wrkMast.setLocNo(dto.getLocNo());
             wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮�
             wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
@@ -233,9 +327,11 @@
             wrkDetl.setManuDate(param.getManuDate());
             wrkDetl.setWeight(param.getWeight());
             wrkDetl.setManLength(param.getGrossWeight());
+            wrkDetl.setVolume(param.getCannedVolume()); // 缃愯閲�
             wrkDetl.setInspect(1);
             wrkDetl.setIoTime(now);
             wrkDetl.setAppeTime(now);
+            wrkDetl.setModel(wrkDetl1.getMaktx()); // 淇濆瓨绌烘《鍚嶇О
             wrkDetlService.insert(wrkDetl);
 
             dto = new StartupDto();
@@ -285,9 +381,12 @@
                 wrkDetl.setManuDate(param.getManuDate());
                 wrkDetl.setWeight(param.getWeight());
                 wrkDetl.setManLength(param.getGrossWeight());
+                wrkDetl.setVolume(param.getCannedVolume());
                 wrkDetl.setInspect(1); // 璐存爣鎴愬姛
                 wrkDetl.setIoTime(now);
                 wrkDetl.setAppeTime(now);
+                log.warn("鎴愬搧缃愯瀹屾垚锛屾《绫诲瀷淇濆瓨锛屾柊浠诲姟鍙凤細{},鏃т换鍔″彿:{},鏃т换鍔℃《鍨�:{}",workNo,wrkMast1.getWrkNo(),wrkDetl1.getMaktx());
+                wrkDetl.setModel(wrkDetl1.getMaktx()); // 淇濆瓨绌烘《鍚嶇О
                 wrkDetlService.insert(wrkDetl);
 
                 // 鏇存柊鐩爣搴撲綅鐘舵��
@@ -357,7 +456,7 @@
 
         if(!param.isTbFlag()) { //涓嬬嚎鍑哄簱
             wrkMast.setSourceStaNo(1090);
-            wrkMast.setStaNo(1016); // 寮傚父涓嬬嚎榛樿鍏ュ簱绔欑偣涓�1016
+            wrkMast.setStaNo(1024); // 寮傚父涓嬬嚎榛樿鍏ュ簱绔欑偣涓�1016
             wrkMastService.updateById(wrkMast);
             return R.ok();
         }
@@ -576,6 +675,14 @@
         return wrkMastService.insert(wrkMast) ? R.ok("鑷姩绌烘墭鍏ュ簱鎴愬姛,宸ヤ綔鍙�:"+wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍏ュ簱澶辫触");
     }
 
+    // 鑷姩鍑虹┖妗�
+    @PostMapping("/autoOutEmptyBucket")
+    @ResponseBody
+    public R autoOutEmptyBucket(@RequestBody StockOutParam param){
+        workService.startupFullTakeStore(param, 29L);
+        return R.ok("鍑哄簱鍚姩鎴愬姛");
+    }
+
     @PostMapping("auto/emptyOut/v1")
     @ResponseBody
     public R autoEmptyOut(@RequestBody Map<String,String> emptyPalletSite){
@@ -694,13 +801,13 @@
         // 婧愮珯鐐圭姸鎬佹娴�
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
 
-        // 鍒ゆ柇绌烘《搴撴湁澶氬皯杩欑妗跺瀷
-        int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("matnr", param.getBucketType()).where("CAST(SUBSTRING(loc_no, 1, 2) as int) >= 9"));
-
-        // 灏忎簬10涓垯鐩翠緵缃愯绾匡紝閬垮厤鍏ョ┖妗跺簱鍚庡湪鍑哄簱
-        if (count > 10) {
-             return null;
-        }
+//        // 鍒ゆ柇绌烘《搴撴湁澶氬皯杩欑妗跺瀷
+//        int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("matnr", param.getBucketType()).where("CAST(SUBSTRING(loc_no, 1, 2) as int) >= 9"));
+//
+//        // 灏忎簬10涓垯鐩翠緵缃愯绾匡紝閬垮厤鍏ョ┖妗跺簱鍚庡湪鍑哄簱
+//        if (count > 10) {
+//             return null;
+//        }
 
         StartupDto dto = commonService.getLocNo(param,wantBucket.getSite());
         int workNo = dto.getWorkNo();
@@ -762,7 +869,7 @@
     }
 
     @Transactional
-    public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode, int locArea) {
+    public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode, int locArea, int flag) {
         // 婧愮珯鐐圭姸鎬佹娴�
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
@@ -776,7 +883,7 @@
         wrkMast.setIoTime(new Date());
         wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
         wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
-        wrkMast.setIoPri(13D); // 浼樺厛绾�
+        wrkMast.setIoPri(14D); // 浼樺厛绾�
         wrkMast.setCrnNo(dto.getCrnNo());
         wrkMast.setSourceStaNo(dto.getSourceStaNo());
         wrkMast.setStaNo(dto.getStaNo());
@@ -786,6 +893,7 @@
         wrkMast.setExitMk("N"); // 閫�鍑�
         wrkMast.setEmptyMk("Y"); // 绌烘澘
         wrkMast.setLinkMis("Y");
+        wrkMast.setPltType(flag); // 绌烘嫋绫诲瀷
 //        wrkMast.setBarcode(barcode);
 //        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
         // 鎿嶄綔浜哄憳鏁版嵁

--
Gitblit v1.9.1