From 2c2f9b0d2c42db9aac486af26e15fd6957012d18 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期五, 16 六月 2023 11:15:53 +0800
Subject: [PATCH] 增加111库位移存(原)定时任务

---
 src/main/java/com/zy/asrs/service/WorkService.java             |    1 
 src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java |    5 +
 src/main/java/com/zy/asrs/task/handler/CheckDeepHandler.java   |   55 ++++++++++++------
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java    |   10 +++
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java    |   86 ++++++++++++++++++++++++++++
 src/main/java/com/zy/asrs/task/CheckDeepScheduler.java         |    4 
 src/main/resources/mapper/LocMastMapper.xml                    |   10 +++
 src/main/java/com/zy/asrs/mapper/LocMastMapper.java            |    2 
 src/main/java/com/zy/asrs/service/LocMastService.java          |    3 +
 9 files changed, 154 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index 208fff4..8b095a0 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -22,4 +22,6 @@
     Integer selectEmptyLocCount(@Param("locType1") Short locType1, @Param("crnNo") Integer crnNo);
 
     List<LocMast> queryShallowLocFMast(@Param("crnNo") Integer crnNo);
+
+    LocMast queryNeedMoveShallLoc(Integer crnNo);
 }
diff --git a/src/main/java/com/zy/asrs/service/LocMastService.java b/src/main/java/com/zy/asrs/service/LocMastService.java
index 00b330b..49e8f2e 100644
--- a/src/main/java/com/zy/asrs/service/LocMastService.java
+++ b/src/main/java/com/zy/asrs/service/LocMastService.java
@@ -37,4 +37,7 @@
      * @return
      */
     List<LocMast> queryShallowLocFMast(Integer crnNo);
+
+    public LocMast queryNeedMoveShallLoc(Integer crnNo);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index 99fdc5e..a2361d9 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -97,4 +97,5 @@
 
     void turnMatLocDetl(EmptyPlateOutParam param, Long userId);
 
+    void locMove(String sourceLocNo, Long userId);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
index e6ce450..5d3166a 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -52,4 +52,9 @@
     public List<LocMast> queryShallowLocFMast(Integer crnNo) {
         return this.baseMapper.queryShallowLocFMast(crnNo);
     }
+
+    @Override
+    public LocMast queryNeedMoveShallLoc(Integer crnNo) {
+        return this.baseMapper.queryNeedMoveShallLoc(crnNo);
+    }
 }
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 0c86a91..08d13e9 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -662,6 +662,90 @@
 
     @Override
     @Transactional
+    public void locMove(String sourceLocNo, Long userId) {
+        LocMast sourceLoc = locMastService.selectById(sourceLocNo);
+        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+        if (Cools.isEmpty(sourceLoc)){
+            throw new CoolException("鏈壘鍒板簱浣�");
+        }
+//        LocMast loc = locMastService.selectById(locNo);
+//        if (Cools.isEmpty(loc)){
+//            throw new CoolException("鏈壘鍒板簱浣�");
+//        }
+//        if (!loc.getLocSts().equals("O") || (!sourceLoc.getLocSts().equals("F") && !sourceLoc.getLocSts().equals("D"))){
+//            throw new CoolException("搴撲綅鐘舵�佸凡鏀瑰彉");
+//        }
+//        if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
+//            throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�");
+//        }
+        Date now = new Date();
+        // 鑾峰彇宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+        // 淇濆瓨宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+        wrkMast.setIoType(111); // 鍏ュ嚭搴撶姸鎬侊細 111.搴撴牸绉昏浇(鍘�)
+        wrkMast.setIoPri(10D);
+        wrkMast.setCrnNo(sourceLoc.getCrnNo());
+        wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
+        wrkMast.setLocNo(sourceLocNo); // 鐩爣搴撲綅
+        wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘
+        wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setLinkMis("N");
+        wrkMast.setAppeUser(userId);
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(now);
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        // 宸ヤ綔妗f槑缁嗕繚瀛�
+        for (LocDetl locDetl : locDetls) {
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(locDetl);
+            wrkDetl.setWrkNo(workNo);
+            wrkDetl.setIoTime(now);
+            wrkDetl.setAnfme(locDetl.getAnfme());
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setAppeUser(userId);
+            wrkDetl.setModiTime(now);
+            wrkDetl.setModiUser(userId);
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+            }
+        }
+        // 淇敼婧愬簱浣嶇姸鎬�
+        if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) {
+            sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+            sourceLoc.setModiUser(userId);
+            sourceLoc.setModiTime(now);
+            if (!locMastService.updateById(sourceLoc)){
+                throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+            }
+        } else {
+            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
+        }
+//        // 淇敼鐩爣搴撲綅鐘舵��
+//        if (loc.getLocSts().equals("O")) {
+//            loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+//            loc.setModiTime(now);
+//            loc.setModiUser(userId);
+//            if (!locMastService.updateById(loc)) {
+//                throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+//            }
+//        } else {
+//            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+loc.getLocSts$());
+//        }
+    }
+
+    @Override
+    @Transactional
     public void completeWrkMast(String workNo, Long userId) {
         WrkMast wrkMast = wrkMastService.selectById(workNo);
         if (Cools.isEmpty(wrkMast)){
@@ -671,7 +755,7 @@
             throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
         }
         // 鍏ュ簱 + 搴撲綅杞Щ
-        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
+        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && (wrkMast.getIoType() == 11) || wrkMast.getIoType() == 111)) {
             wrkMast.setWrkSts(4L);
         // 鍑哄簱
         } else if (wrkMast.getWrkSts() > 10) {
diff --git a/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java b/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
index 18203fc..3e92958 100644
--- a/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
+++ b/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
@@ -46,10 +46,10 @@
     /**
      * 灏嗕袱涓繁搴撲綅鍚堝苟涓烘繁娴呭簱浣�,鐗╂枡鍙风浉鍚岋紝婧愬簱浣嶅叆搴撴棩鏈熸棭浜庣洰鏍囧簱浣嶅搴旀繁搴撲綅鍏ュ簱鏃ユ湡锛屽簱浣嶇姸鎬侀兘涓篎
      */
-    @Scheduled(cron = "0/30 * * * * ?")
+    @Scheduled(cron = "0/5 * * * * ?")
     private void execute() throws ParseException {
 //        if (!confirmDeep) return;
-        if (true) return;
+        //if (true) return;
 
         ReturnT<String> result = checkDeepHandler.start();
         if (!result.isSuccess()) {
diff --git a/src/main/java/com/zy/asrs/task/handler/CheckDeepHandler.java b/src/main/java/com/zy/asrs/task/handler/CheckDeepHandler.java
index 9eb6b97..23ae539 100644
--- a/src/main/java/com/zy/asrs/task/handler/CheckDeepHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/CheckDeepHandler.java
@@ -45,9 +45,9 @@
     @Transactional
     public synchronized ReturnT<String> start() {
         try {
-            for (int crnNo = 1; crnNo < 3; crnNo++){
+            for (int crnNo = 1; crnNo < 5; crnNo++) {
                 List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                        .eq("crn_no",crnNo)
+                        .eq("crn_no", crnNo)
                         .last(" and wrk_sts in (2,3,4,11,12)")
                 );
                 if (wrkMasts.size() > 0) continue;
@@ -58,30 +58,47 @@
                     continue;
                 }
 
-                List<LocMast> locMasts = locMastService.queryShallowLocFMast(crnNo);
-                if (null == locMasts) continue;
-
-                for (LocMast sourceLoc : locMasts){
-                    String deep = Utils.getDeepLoc(slaveProperties, sourceLoc.getLocNo());
-                    LocMast destLoc = locMastService.selectById(deep);
-
-                    if(!Cools.isEmpty(sourceLoc) && !Cools.isEmpty(destLoc)) {
-                        //鏌ユ壘婧愬簱浣嶆槸鍚︽湁杞Щ浠诲姟,濡傛灉鏈�,涓嶇敓鎴愬簱浣嶇Щ杞�
-                        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
-                                .eq("source_loc_no", sourceLoc.getLocNo()));
-                        if (Cools.isEmpty(wrkMast) && destLoc.getLocSts().equals("O") &&
-                                (sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D"))) {
-                            workService.locMove(sourceLoc.getLocNo(), deep, 1L);
-                        }
-                    }
+                LocMast locMast = locMastService.queryNeedMoveShallLoc(crnNo);
+//                LocMast targetLoc = locMastService.queryEmptyDeepLoc(crnNo);
+                if (!Cools.isEmpty(locMast)) {
+                    workService.locMove(locMast.getLocNo(), 1L);
                 }
             }
+
+                return SUCCESS;
+
+//                //鏆傚仠绉诲簱
+//                BasCrnp crnp = basCrnpService.selectById(crnNo);
+//                if(!Cools.isEmpty(crnp) && !Cools.isEmpty(crnp.getTankQty()) && crnp.getTankQty()==0){
+//                    continue;
+//                }
+//
+//                List<LocMast> locMasts = locMastService.queryShallowLocFMast(crnNo);
+//                if (null == locMasts) continue;
+//
+//                for (LocMast sourceLoc : locMasts){
+//                    String deep = Utils.getDeepLoc(slaveProperties, sourceLoc.getLocNo());
+//                    LocMast destLoc = locMastService.selectById(deep);
+//
+//                    if(!Cools.isEmpty(sourceLoc) && !Cools.isEmpty(destLoc)) {
+//                        //鏌ユ壘婧愬簱浣嶆槸鍚︽湁杞Щ浠诲姟,濡傛灉鏈�,涓嶇敓鎴愬簱浣嶇Щ杞�
+//                        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+//                                .eq("source_loc_no", sourceLoc.getLocNo()));
+//                        if (Cools.isEmpty(wrkMast) && destLoc.getLocSts().equals("O") &&
+//                                (sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D"))) {
+//                            workService.locMove(sourceLoc.getLocNo(), deep, 1L);
+//
+//                        }
+//                    }
+//                }
+//            }
         } catch (Exception e) {
             e.printStackTrace();
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
             return FAIL.setMsg(e.getMessage());
+
         }
-        return SUCCESS;
+
     }
 
     /**
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index acb5fa9..789dea6 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -399,6 +399,16 @@
                         }
                     }
                     break;
+                case 111:
+                    if (locMast.getLocSts().equals("R")) {
+                        wrkMast.setWrkSts(4L);
+                        wrkMast.setModiTime(now);
+                        if (!wrkMastService.updateById(wrkMast)) {
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                            return FAIL.setMsg("鏇存柊鍑哄簱瀹屾垚鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+                        }
+                        return SUCCESS;
+                    }
                 default:
                     break;
             }
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 2244412..ef20262 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -75,4 +75,14 @@
         )
         and (loc_sts = 'F' or loc_sts = 'D') and crn_no = #{crnNo}
     </select>
+
+    <select id="queryNeedMoveShallLoc" resultMap="BaseResultMap">
+        SELECT
+            TOP 1 *
+        FROM
+            asr_loc_mast
+        WHERE
+            crn_no = #{crnNo} AND (loc_sts = 'F' OR loc_sts = 'D') and inv_wh = '0'
+        order by bay1,lev1
+    </select>
 </mapper>

--
Gitblit v1.9.1