From b40726eafd5fdfae8fe7d5546565d384197b872c Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期一, 21 七月 2025 10:48:54 +0800
Subject: [PATCH] 完成单据不转历史

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

diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index e070559..1f22cba 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -10,6 +10,7 @@
 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.BasCrnpMapper;
 import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.*;
@@ -28,6 +29,7 @@
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * Created by vincent on 2020/10/30
@@ -68,6 +70,18 @@
     @Resource
     private WrkMastMapper wrkMastMapper;
 
+    @Resource
+    private BasCrnpMapper basCrnpMapper;
+
+    public static final Map<Integer,ArrayList<Integer>> crnOutSite;
+
+    static {
+        crnOutSite = new HashMap<>();
+        crnOutSite.put(1,new ArrayList<Integer>(){{add(1091);add(1092);add(1093);}});
+        crnOutSite.put(2,new ArrayList<Integer>(){{add(1097);add(1098);add(1099);}});
+        crnOutSite.put(3,new ArrayList<Integer>(){{add(1105);add(1106);add(1107);}});
+    }
+
     @PostMapping("/pakin/loc/v1")
     @ResponseBody
     @Transactional
@@ -103,7 +117,7 @@
         if(param.getIoType() == 1) {
             List<SearchLocParam.WantBucket> wantBucketFlag = param.getWantBucketFlag();
             for(SearchLocParam.WantBucket wantBucket: wantBucketFlag) {
-                if(wantBucket.getBucketType() != 0 && wantBucket.getBucketType() == param.getBucketType()) { // 缃愯绾挎湁瑕佹《淇″彿骞朵笖褰撳墠妗舵槸缃愯绾胯鐨勬《
+                if(wantBucket.getBucketType() != 0 && wantBucket.getBucketType() == param.getBucketType() && wantBucket.getWantBucketCount() >= 1) { // 缃愯绾挎湁瑕佹《淇″彿骞朵笖褰撳墠妗舵槸缃愯绾胯鐨勬《
                     if(waitPakin == null) {
                         return R.error("鍏ュ簱閫氱煡妗d负绌�");
                     } else {
@@ -248,52 +262,52 @@
         StartupDto dto;
 
         // 鍒ゆ柇璐存爣寮傚父锛屽妫�閲嶉噺寮傚父鐨勶紝涓嶅垎閰嶅簱浣嶏紝鍘诲線寮傚父鍙�1090
-//        if ( !param.isTbFlag() || !param.isReinspection()) {
-//
-//            // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------
-//            WrkMast wrkMast = new WrkMast();
-//            wrkMast.setWrkNo(commonService.getWorkNo(0));
-//            wrkMast.setIoTime(now);
-//            wrkMast.setIoType(3); // 鍏ュ嚭搴撶被鍨�3.绔欏埌绔�
-//            wrkMast.setWrkSts(2L);
-//            wrkMast.setIoPri(13D); // 浼樺厛绾�
-////            wrkMast.setCrnNo(dto.getCrnNo());
-//            wrkMast.setSourceStaNo(param.getSourceStaNo());
-//            wrkMast.setStaNo(1090);
-////            wrkMast.setLocNo(dto.getLocNo());
-//            wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮�
-//            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
-////            wrkMast.setPicking("N"); // 鎷f枡
-////            wrkMast.setExitMk("N"); // 閫�鍑�
-////            wrkMast.setEmptyMk("N"); // 绌烘澘
-////            wrkMast.setLinkMis("Y");
-////            wrkMast.setCtnType(wrkMast1.getCtnType()); // 灏炬墭鏍囪瘑
-//            wrkMast.setPdcType(wrkMast1.getPdcType()); // 绌烘《绫诲瀷
-//            wrkMast.setAppeTime(now);
-//            wrkMastService.insert(wrkMast);
-//
-//            // 鐢熸垚宸ヤ綔妗f槑缁�----------------------------------------------------
-//            WrkDetl wrkDetl = new WrkDetl();
-//            wrkDetl.sync(mat);
-//            wrkDetl.setWrkNo(wrkMast.getWrkNo());
-//            wrkDetl.setAnfme(wrkDetl1.getAnfme());
-//            wrkDetl.setZpallet(wrkMast1.getBarcode());
-//            wrkDetl.setBatch(param.getBatch());
-//            wrkDetl.setManuDate(param.getManuDate());
-//            wrkDetl.setWeight(param.getWeight());
-//            wrkDetl.setManLength(param.getGrossWeight());
-//            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();
-//            dto.setWorkNo(wrkMast.getWrkNo());
-//            dto.setSourceStaNo(wrkMast.getSourceStaNo());
-//            dto.setStaNo(wrkMast.getStaNo());
-//        } else
+        if ( !param.isTbFlag() || !param.isReinspection()) {
+
+            // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(commonService.getWorkNo(0));
+            wrkMast.setIoTime(now);
+            wrkMast.setIoType(3); // 鍏ュ嚭搴撶被鍨�3.绔欏埌绔�
+            wrkMast.setWrkSts(2L);
+            wrkMast.setIoPri(13D); // 浼樺厛绾�
+//            wrkMast.setCrnNo(dto.getCrnNo());
+            wrkMast.setSourceStaNo(param.getSourceStaNo());
+            wrkMast.setStaNo(1090);
+            wrkMast.setLocNo(!param.isTbFlag() ? "璐存爣澶辫触" : "澶嶆閲嶉噺寮傚父");
+            wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+//            wrkMast.setPicking("N"); // 鎷f枡
+//            wrkMast.setExitMk("N"); // 閫�鍑�
+//            wrkMast.setEmptyMk("N"); // 绌烘澘
+//            wrkMast.setLinkMis("Y");
+//            wrkMast.setCtnType(wrkMast1.getCtnType()); // 灏炬墭鏍囪瘑
+            wrkMast.setPdcType(wrkMast1.getPdcType()); // 绌烘《绫诲瀷
+            wrkMast.setAppeTime(now);
+            wrkMastService.insert(wrkMast);
+
+            // 鐢熸垚宸ヤ綔妗f槑缁�----------------------------------------------------
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(mat);
+            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl.setAnfme(wrkDetl1.getAnfme());
+            wrkDetl.setZpallet(wrkMast1.getBarcode());
+            wrkDetl.setBatch(param.getBatch());
+            wrkDetl.setManuDate(param.getManuDate());
+            wrkDetl.setWeight(param.getWeight());
+            wrkDetl.setManLength(param.getGrossWeight());
+            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();
+            dto.setWorkNo(wrkMast.getWrkNo());
+            dto.setSourceStaNo(wrkMast.getSourceStaNo());
+            dto.setStaNo(wrkMast.getStaNo());
+        } else
         if(fhFlag) { // 鐩存帴鍙戣揣
             // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------
             WrkMast wrkMast = new WrkMast();
@@ -450,14 +464,20 @@
         WrkMast wrkMast = wrkMastService.selectById(wrkNo);
         if (wrkMast == null) {
             throw new CoolException("寮傚父鍙e叆搴撲换鍔″彿鏃犱换鍔★細" + wrkNo);
-        } else if (wrkMast.getLocNo() != null) {
+        } else if (wrkMast.getLocNo() != null && wrkMast.getLocNo().length() == 7) {
             throw new CoolException("寮傚父鍙e叆搴撳簱浣嶅凡鍒嗛厤锛�" + wrkMast.getLocNo());
         }
 
         if(!param.isTbFlag()) { //涓嬬嚎鍑哄簱
+            Config config = configService.selectConfigByCode("gzxfh" + wrkMast.getSourceStaNo());
             wrkMast.setSourceStaNo(1090);
-            wrkMast.setStaNo(1024); // 寮傚父涓嬬嚎榛樿鍏ュ簱绔欑偣涓�1016
+            wrkMast.setStaNo(1024); // 寮傚父涓嬬嚎榛樿鍏ュ簱绔欑偣涓�1024
+            // 鑾峰彇绯荤粺閰嶇疆锛岀湅鎴愬搧缃愯瀹屾垚鏄惁鐩存帴鍑哄埌鍙戣揣鍙�
+            if (config != null && config.getStatus() == 1 && !Cools.isEmpty(config.getValue())) {
+                wrkMast.setStaNo(Integer.parseInt(config.getValue()));
+            }
             wrkMastService.updateById(wrkMast);
+            log.info("WCS寮傚父鍙e叆搴撴帴鍙h繑鍙�:{},鐩爣绔欑偣:{}", "涓嬬嚎鍑哄簱", wrkMast.getStaNo());
             return R.ok();
         }
 
@@ -679,6 +699,7 @@
     @PostMapping("/autoOutEmptyBucket")
     @ResponseBody
     public R autoOutEmptyBucket(@RequestBody StockOutParam param){
+        log.info("鏀跺埌WCS鑷姩鍑虹┖妗舵帴鍙h姹�====>>鍏ュ弬:{}", param);
         workService.startupFullTakeStore(param, 29L);
         return R.ok("鍑哄簱鍚姩鎴愬姛");
     }
@@ -691,18 +712,47 @@
         // 鍑哄簱绔欑偣
         Integer site = Integer.valueOf(emptyPalletSite.get("site"));
 
-        LocMast locMast;
+        LocMast locMast = null;
 
-        // 鍏堟壘娴呭簱浣�
-        locMast = locMastMapper.queryLocMasterByLocStsAndRow(Arrays.asList(2, 3), type);
+        List<BasCrnp> basCrnps = basCrnpMapper.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("crn_err", 0).in("crn_no",1,2,3)
+                .eq("out_enable","Y"));
+        if (basCrnps.size() == 0) {
+            log.error("绌烘嫋鍑哄簱璇锋眰搴撲綅澶辫触锛屾病鏈夎仈鏈哄爢鍨涙満鎴栧爢鍨涙満寮傚父");
+            throw new CoolException("绌烘嫋鍑哄簱璇锋眰搴撲綅澶辫触锛屾病鏈夎仈鏈哄爢鍨涙満鎴栧爢鍨涙満寮傚父");
+        }
 
-        // 娴呭簱浣嶆病鏈夊垯鏌ヨ鎵�鏈�
-        if (locMast == null) {
-            locMast = locMastMapper.queryLocMasterByLocStsAndRow(null, type);
+        List<BasCrnp> basCrnpList = new ArrayList<>();
+        for(BasCrnp basCrnp: basCrnps) {
+            List<BasDevp> devps = basDevpService.selectList(new EntityWrapper<BasDevp>().in("dev_no", crnOutSite.get(basCrnp.getCrnNo())).ne("wrk_no", 0));
+            long count = devps.stream().map(BasDevp::getWrkNo).distinct().count();
+            basCrnp.setWrkNo(count + basCrnp.getWrkNo() >= 5001 && basCrnp.getWrkNo() <= 9000 ? 1 : 0);
+            basCrnpList.add(basCrnp);
+        }
+
+        basCrnpList = basCrnpList.stream().sorted(Comparator.comparing(BasCrnp::getWrkNo).thenComparing(BasCrnp::getCrnNo,Comparator.reverseOrder())).collect(Collectors.toList());
+
+        for(BasCrnp basCrnp:basCrnpList) {
+            Integer crnNo = basCrnp.getCrnNo();
+            Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq("loc_sts", type)
+                    .eq("crn_no", crnNo).orderBy("lev1").orderBy("bay1").orderBy("row1");
+            if (crnNo == 1) {
+                wrapper.in("row1", 1, 4);
+            }
+            locMast = locMastService.selectOne(wrapper);
+            if (locMast != null) {
+                break;
+            }
+            // 娣卞簱浣嶆病鏈変簡鍒欒幏鍙栦竴涓祬搴撲綅
+            if (crnNo == 1) {
+                locMast = locMastService.selectOne(wrapper.in("row1", 2, 3));
+                if (locMast != null) {
+                    break;
+                }
+            }
         }
 
         if (locMast == null) {
-            return R.error("搴撳瓨娌℃湁"+type+"绫诲瀷绌烘墭鐩�");
+            return R.error("搴撳瓨娌℃湁"+type+"绫诲瀷绌烘墭鐩樻垨鏃犲彲鐢ㄥ爢鍨涙満");
         }
 
         String locNo = locMast.getLocNo();

--
Gitblit v1.9.1