From 53bbc5731dd8c78490a27211aea331ff1360ed4e Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期六, 28 六月 2025 09:34:19 +0800
Subject: [PATCH] wms功能完善

---
 license.lic                                                    |    0 
 src/main/java/com/zy/asrs/controller/LocMastController.java    |   12 +-
 src/main/java/com/zy/asrs/service/WrkMastService.java          |    5 +
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java    |   38 +++++----
 src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java |   12 +++
 src/main/resources/mapper/LocDetlMapper.xml                    |    3 
 src/main/java/com/zy/common/web/WcsController.java             |  100 +++++++++++++-----------
 src/main/java/com/zy/common/service/CommonService.java         |   67 ++++++++++------
 src/main/resources/license.lic                                 |    0 
 src/main/resources/application.yml                             |    2 
 10 files changed, 143 insertions(+), 96 deletions(-)

diff --git a/license.lic b/license.lic
index df70474..00182a4 100644
--- a/license.lic
+++ b/license.lic
Binary files differ
diff --git a/src/main/java/com/zy/asrs/controller/LocMastController.java b/src/main/java/com/zy/asrs/controller/LocMastController.java
index dbba795..4037e82 100644
--- a/src/main/java/com/zy/asrs/controller/LocMastController.java
+++ b/src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -143,12 +143,12 @@
             return R.error();
         }
 
-        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
-                .eq("source_loc_no", locMast.getLocNo())
-                .or().eq("loc_no", locMast.getLocNo()));
-        if(!Cools.isEmpty(wrkMast)){
-            return  R.error("璇ュ簱浣嶆鍦ㄤ綔涓氾紝璇峰厛澶勭悊宸ヤ綔妗�");
-        }
+//        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+//                .eq("source_loc_no", locMast.getLocNo())
+//                .or().eq("loc_no", locMast.getLocNo()));
+//        if(!Cools.isEmpty(wrkMast)){
+//            return  R.error("璇ュ簱浣嶆鍦ㄤ綔涓氾紝璇峰厛澶勭悊宸ヤ綔妗�");
+//        }
 
         LocMast oldLocMast = locMastService.selectById(locMast.getLocNo());
         if (locMast.getLocSts().equals("F") && (oldLocMast.getLocSts().equals("D") || oldLocMast.getLocSts().equals("O"))) {
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index 0329de3..f4a5175 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -17,6 +17,11 @@
     WrkMast selectByBarcode(String barcode);
 
     /**
+     * 琛ュ熬鎵樹俊鍙�
+     */
+    void updateCtnType(WrkMast wrkMast);
+
+    /**
      * 浠庡伐浣滄。寰楀埌绔欑偣鍏ュ簱鏆傚瓨鏁�
      * @param crnNo
      * @return
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 779f42d..76e4133 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -555,16 +555,16 @@
             throw new CoolException(firstFrozenLocNo + "搴撲綅宸茶鍐荤粨!");
         }
 
+        if (Cools.isEmpty(param.getOutSite())) {
+            throw new CoolException("绔欑偣涓嶅瓨鍦�");
+        }
         for (String locNo : param.getLocNos()) {
             // 鑾峰彇宸ヤ綔鍙�
-            int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
+            int workNo = commonService.getWorkNo(2);
             // 鑾峰彇搴撲綅
             LocMast locMast = locMastService.selectById(locNo);
             if (Cools.isEmpty(locMast)) {
                 throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�");
-            }
-            if (!locMast.getLocSts().equals("D")){
-                throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
             }
             // 鑾峰彇婧愮珯
             Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
@@ -582,8 +582,8 @@
             wrkMast.setWrkNo(workNo);
             wrkMast.setIoTime(now);
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-            wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
-            wrkMast.setIoPri(10D);
+            wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬�
+            wrkMast.setIoPri(14D);
             wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
             wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
             wrkMast.setCrnNo(locMast.getCrnNo());
@@ -602,7 +602,7 @@
                 throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
             }
             // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
-            if (locMast.getLocSts().equals("D")){
+            if (locMast.getLocSts().equals("M") || locMast.getLocSts().equals("Z")){
                 locMast.setLocSts("R");
                 locMast.setModiUser(userId);
                 locMast.setModiTime(now);
@@ -1244,17 +1244,19 @@
 
 
         // 淇敼搴撲綅鐘舵��
-        if(locNo != null) {
-            LocMast locMast = locMastService.selectById(locNo);
-            if (Cools.isEmpty(locMast)) {
-                throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo);
-            }
-            locMast.setLocSts(locSts);
-            locMast.setModiTime(now);
-            locMast.setModiUser(userId);
-            boolean locMastRes = locMastService.updateById(locMast);
-            if (!wrkMastRes || !locMastRes) {
-                throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+        if (locNo != null) {
+            if (wrkMast.getIoType() != 3) {
+                LocMast locMast = locMastService.selectById(locNo);
+                if (Cools.isEmpty(locMast)) {
+                    throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:" + locNo);
+                }
+                locMast.setLocSts(locSts);
+                locMast.setModiTime(now);
+                locMast.setModiUser(userId);
+                boolean locMastRes = locMastService.updateById(locMast);
+                if (!wrkMastRes || !locMastRes) {
+                    throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+                }
             }
         }
     }
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
index d8ad458..b675bd6 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -9,6 +9,8 @@
 import com.zy.asrs.service.WrkMastService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -41,6 +43,16 @@
     }
 
     @Override
+    @Transactional(propagation = Propagation.REQUIRES_NEW)
+    public void updateCtnType(WrkMast wrkMast) {
+        if (wrkMast.getCtnType() == 0) {
+            wrkMast.setCtnType(1);
+            this.updateById(wrkMast);
+            log.info("鑷姩琛ュ熬妗朵俊鍙锋垚鍔�,浠诲姟鍙凤細{}",wrkMast.getCrnNo());
+        }
+    }
+
+    @Override
     public int getStoreCount(Integer crnNo) {
         return selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo)
                 .last(" and (wrk_sts in (1,2) or (wrk_sts=3 and wrk_no in (select wrk_no from asr_bas_devp)))"));
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index fc0c51e..54280cc 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -316,11 +316,7 @@
                               locMast = locMastList.get(0);
                           } else { // 濂囨暟锛屼笉鍙互鍏ュ簱
                               // 鑷姩缁欏墠闈换鍔¤ˉ灏炬《淇″彿
-                              if (wrkMast.getCtnType() == 0) {
-                                  wrkMast.setCtnType(1);
-                                  wrkMastService.updateById(wrkMast);
-                                  log.info("鑷姩琛ュ熬妗朵俊鍙锋垚鍔�,浠诲姟鍙凤細{}",wrkMast.getCtnType());
-                              }
+                              wrkMastService.updateCtnType(wrkMast);
                               log.error("-----涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱----");
                               throw new CoolException("涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱");
                           }
@@ -338,31 +334,54 @@
                 throw new CoolException("鍏ュ簱璇锋眰搴撲綅澶辫触锛屾病鏈夎仈鏈哄爢鍨涙満鎴栧爢鍨涙満寮傚父");
             }
 
-            List<Integer> crnList = basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList());
+            List<BasCrnp> basCrnpList = new ArrayList<>();
+            for(BasCrnp basCrnp: basCrnps) {
+                Integer count = locMastMapper.selectCount(new EntityWrapper<LocMast>().eq("crn_no", basCrnp.getCrnNo()).eq("loc_sts", "S"));
+                basCrnp.setWrkNo(count);
+                basCrnpList.add(basCrnp);
+            }
+
+            basCrnpList = basCrnpList.stream().sorted(Comparator.comparing(BasCrnp::getWrkNo)).collect(Collectors.toList());
 
             // 鍏ュ簱妗跺瀷
             String model = findLocNoAttributeVo.getModel();
-            Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq("loc_sts", 'O')
-                    .in("crn_no", crnList).orderBy("lev1").orderBy("bay1").orderBy("row1");
-            // 鍏ュ簱妗跺瀷鏄笉鏄�208L
-            if (model == null || !model.equals("208L")) {
-                wrapper.ne("lev1", 11);
-            }
-            locMast = locMastService.selectOne(wrapper.in("row1", 1, 4, 5, 6, 7, 8));
-            // 娣卞簱浣嶆病鏈変簡鍒欒幏鍙栦竴涓祬搴撲綅
-            if (locMast == null) {
-                locMast = locMastService.selectOne(wrapper.in("row1", 2, 3));
-                if (locMast == null) {
-                    log.error("-----搴撲綅涓嶈冻----");
-                    throw new CoolException("搴撲綅涓嶈冻");
-                } else {
-                    int count = locMastService.selectCount(wrapper.in("row1", 2, 3));
-                    if (count <= 10) {
-                        log.error("-----搴撲綅涓嶈冻锛岄鐣�10涓簱浣嶇敤鏉ュ簱浣嶈浆绉�----");
-                        throw new CoolException("搴撲綅涓嶈冻锛岄鐣�10涓簱浣嶇敤鏉ュ簱浣嶈浆绉�");
+
+            locMast = null;
+
+            for(BasCrnp basCrnp:basCrnpList) {
+                Integer crnNo = basCrnp.getCrnNo();
+                Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq("loc_sts", 'O')
+                        .eq("crn_no", crnNo).orderBy("lev1").orderBy("bay1").orderBy("row1");
+                // 鍏ュ簱妗跺瀷鏄笉鏄�208L
+                if (model == null || !model.equals("208L")) {
+                    wrapper.ne("lev1", 11);
+                }
+                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) {
+                        int count = locMastService.selectCount(wrapper);
+                        if (count <= 10) {
+                            locMast = null;
+                        } else {
+                            break;
+                        }
                     }
                 }
             }
+
+            if (locMast == null) {
+                List<Integer> collect = basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList());
+                log.error("-----{}鍫嗗灈鏈哄簱浣嶄笉瓒�----",collect.toString());
+                throw new CoolException(collect.toString() + "鍫嗗灈鏈哄簱浣嶄笉瓒�");
+            }
         } else {
             log.error("鍏ュ簱绫诲瀷閿欒锛宻taDescId={}", staDescId);
             throw new CoolException("鍏ュ簱绫诲瀷閿欒锛宻taDescId=" + staDescId);
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index e070559..6fb03a4 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -248,52 +248,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(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(fhFlag) { // 鐩存帴鍙戣揣
             // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------
             WrkMast wrkMast = new WrkMast();
@@ -456,8 +456,14 @@
 
         if(!param.isTbFlag()) { //涓嬬嚎鍑哄簱
             wrkMast.setSourceStaNo(1090);
-            wrkMast.setStaNo(1024); // 寮傚父涓嬬嚎榛樿鍏ュ簱绔欑偣涓�1016
+            wrkMast.setStaNo(1024); // 寮傚父涓嬬嚎榛樿鍏ュ簱绔欑偣涓�1024
+            // 鑾峰彇绯荤粺閰嶇疆锛岀湅鎴愬搧缃愯瀹屾垚鏄惁鐩存帴鍑哄埌鍙戣揣鍙�
+            Config config = configService.selectConfigByCode("gzxfh" + param.getSourceStaNo());
+            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();
         }
 
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 47fa2fd..5a7def0 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -10,7 +10,7 @@
     enabled: false
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://192.168.2.201:1433;databasename=mdqzasrs
+    url: jdbc:sqlserver://192.168.2.203:1433;databasename=mdqzasrs
     username: sa
     password: sa@123
   mvc:
diff --git a/src/main/resources/license.lic b/src/main/resources/license.lic
index df70474..00182a4 100644
--- a/src/main/resources/license.lic
+++ b/src/main/resources/license.lic
Binary files differ
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index e32c42d..5effeea 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -342,6 +342,9 @@
         <if test="specs!=null and specs!='' ">
             and a.specs like '%' + #{specs} + '%'
         </if>
+        <if test="model!=null and model!='' ">
+            and a.specs like '%' + #{model} + '%'
+        </if>
     </sql>
 
     <select id="getStockOutPage" resultMap="BaseResultMap">

--
Gitblit v1.9.1