From 775d4714ca9e650631659d7467f5c43dc021f931 Mon Sep 17 00:00:00 2001
From: 18516761980 <56479841@qq.com>
Date: 星期四, 16 六月 2022 17:16:20 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/luxiaotao1123/zy-asrs into hylyasrs

---
 .idea/zy-asrs.iml                                              |    2 
 src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java |   20 +++++
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java    |   17 +++
 src/main/java/com/zy/asrs/task/CheckDeepScheduler.java         |   99 ++++++++++++++++++++----
 src/main/resources/mapper/LocMastMapper.xml                    |   75 ++++++++++++++++++
 src/main/java/com/zy/asrs/mapper/LocMastMapper.java            |    8 ++
 src/main/java/com/zy/asrs/service/LocMastService.java          |    8 ++
 src/main/resources/application.yml                             |    2 
 8 files changed, 207 insertions(+), 24 deletions(-)

diff --git a/.idea/zy-asrs.iml b/.idea/zy-asrs.iml
index c8f3650..3685627 100644
--- a/.idea/zy-asrs.iml
+++ b/.idea/zy-asrs.iml
@@ -20,7 +20,7 @@
       <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
       <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
-    <orderEntry type="inheritedJdk" />
+    <orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.1.3.RELEASE" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.1.3.RELEASE" level="project" />
diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index d68ef3f..77d16c9 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -29,4 +29,12 @@
     Integer selectEmptyLocCount(@Param("locType1") Short locType1, @Param("locType2") Short locType2, @Param("locType3") Short locType3, @Param("crnNo") Integer crnNo);
 
     List<LocMast> queryShallowLocFMast();
+
+    List<LocMast> queryNeedMoveShallLocF();
+
+    List<LocMast> queryNeedMoveShallLocD();
+
+    LocMast queryEmptyDeepLoc();
+
+    List<LocMast> queryDeepLocDMast();
 }
diff --git a/src/main/java/com/zy/asrs/service/LocMastService.java b/src/main/java/com/zy/asrs/service/LocMastService.java
index ee03916..6306b48 100644
--- a/src/main/java/com/zy/asrs/service/LocMastService.java
+++ b/src/main/java/com/zy/asrs/service/LocMastService.java
@@ -49,4 +49,12 @@
     LocMast queryFreeLocMastExceptFirst(Integer row, Short locType1, Short locType2, Short locType3);
 
     public List<LocMast> queryShallowLocFMast();
+
+    public List<LocMast> queryNeedMoveShallLocF();
+
+    public List<LocMast> queryNeedMoveShallLocD();
+
+    public LocMast queryEmptyDeepLoc();
+
+    public List<LocMast> queryDeepLocDMast();
 }
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 03998ce..6fdce9e 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -62,4 +62,24 @@
     public List<LocMast> queryShallowLocFMast() {
         return this.baseMapper.queryShallowLocFMast();
     }
+
+    @Override
+    public List<LocMast> queryNeedMoveShallLocF() {
+        return this.baseMapper.queryNeedMoveShallLocF();
+    }
+
+    @Override
+    public List<LocMast> queryNeedMoveShallLocD() {
+        return this.baseMapper.queryNeedMoveShallLocD();
+    }
+
+    @Override
+    public LocMast queryEmptyDeepLoc() {
+        return this.baseMapper.queryEmptyDeepLoc();
+    }
+
+    @Override
+    public List<LocMast> queryDeepLocDMast() {
+        return this.baseMapper.queryDeepLocDMast();
+    }
 }
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 74b4ed2..6d43269 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -423,6 +423,15 @@
             // 鑾峰彇宸ヤ綔鍙�
             int workNo = commonService.getWorkNo(1);
 
+            //2022-06-16 ADD, 鍑哄簱搴撲綅濡傛灉鏄繁搴撲綅1鍙疯揣鏋讹紝涓斿搴旀祬搴撲綅涔熶负D鏃讹紝鍏堝嚭娴呭簱浣�
+            if(Utils.isDeepLoc(slaveProperties, locNo)){
+                String shallow = Utils.getShallowLoc(slaveProperties,locNo);
+                LocMast shallowLoc = locMastService.selectById(shallow);
+                if(!Cools.isEmpty(shallowLoc) && shallowLoc.getLocSts().equals("D")){
+                    locNo = shallowLoc.getLocNo();
+                }
+            }
+
             // 鑾峰彇搴撲綅
             LocMast locMast = locMastService.selectById(locNo);
             if (Cools.isEmpty(locMast)) {
@@ -806,7 +815,11 @@
                 locSts = "D";
             // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
             } else if (wrkMast.getIoType() == 11) {
-                locSts = "F";
+                if(wrkMast.getEmptyMk().equals("Y")){
+                    locSts = "D";
+                }else {
+                    locSts = "F";
+                }
                 // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
                 LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
                 if (Cools.isEmpty(locMast)) {
@@ -836,7 +849,7 @@
 
         if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
             // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
-            if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+            if (!wrkMast.getEmptyMk().equals("Y") && !wrkDetlLogService.save(wrkMast.getWrkNo())) {
                 throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
             }
             // 鍒犻櫎宸ヤ綔妗f槑缁�
diff --git a/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java b/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
index 6050b5d..f68eafb 100644
--- a/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
+++ b/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
@@ -28,10 +28,8 @@
 
     @Value("${wcs-slave.doubleDeep}")
     private boolean confirmDeep;
-    @Value("${wcs-slave.doubleLocs}")
-    private String deepLocs;
-    @Value("${wcs-slave.shallowLocs}")
-    private String shallowLocs;
+    @Value("${scheduler.autoMove}")
+    private boolean autoMove;
     @Autowired
     private LocDetlService locDetlService;
     @Autowired
@@ -49,6 +47,7 @@
     @Scheduled(cron = "0/30 * * * * ?")
     private void locMoveToDeep(){
         if (!confirmDeep) return;
+        if (!autoMove) return;
 
         List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                 .eq("crn_no",1)
@@ -56,26 +55,90 @@
         );
         if (wrkMasts.size() > 0) return;
 
+        //閬嶅巻搴撳瓨涓紝娴呭簱浣嶇姸鎬丗/D锛屾繁搴撲綅鐘舵�丱鐨勬暟鎹紝鐢熸垚搴撲綅绉昏浆宸ヤ綔妗e皢娴呭簱浣嶇Щ杞埌瀵瑰簲娣卞簱浣嶄腑鍘�
         List<LocMast> locMasts = locMastService.queryShallowLocFMast();
+        if (null != locMasts) {
+            for (LocMast sourceLoc : locMasts) {
+                String deep = Utils.getDeepLoc(slaveProperties, sourceLoc.getLocNo());
+                LocMast destLoc = locMastService.selectById(deep);
 
-        if (null == locMasts) return;
-
-        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);
-                    break;
+                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);
+                        return;
+                    }
                 }
             }
         }
 
+        //閬嶅巻搴撳瓨涓紝娴呭簱浣嶇姸鎬丗锛屾繁搴撲綅鐘舵�丏鐨勬暟鎹紝鐢熸垚搴撲綅绉昏浆宸ヤ綔妗e皢娴呭簱浣嶇Щ杞埌鏂扮殑搴撲綅涓幓
+        List<LocMast> locMasts1 = locMastService.queryNeedMoveShallLocF();
+        if (null != locMasts1) {
+            for (LocMast sourceLoc : locMasts1) {
+                LocMast destLoc = locMastService.queryEmptyDeepLoc();
+
+                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(), destLoc.getLocNo(), 1L);
+                        return;
+                    }
+                }
+            }
+        }
+
+        //閬嶅巻搴撳瓨涓紝娴呭簱浣嶇姸鎬丗锛屾繁搴撲綅鐘舵�丏鐨勬暟鎹紝鐢熸垚搴撲綅绉昏浆宸ヤ綔妗e皢娴呭簱浣嶇Щ杞埌鏂扮殑搴撲綅涓幓
+        List<LocMast> locMasts2 = locMastService.queryNeedMoveShallLocD();
+        if (null != locMasts2) {
+            for (LocMast sourceLoc : locMasts2) {
+                LocMast destLoc = locMastService.queryEmptyDeepLoc();
+
+                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(), destLoc.getLocNo(), 1L);
+                        return;
+                    }
+                }
+            }
+        }
+
+        //閬嶅巻搴撳瓨涓紝娣卞簱浣嶇姸鎬丏锛屾祬搴撲綅鐘舵�佷负O鐨勬繁搴撲綅鏁版嵁锛岀敓鎴愬簱浣嶇Щ杞伐浣滄。灏嗕袱涓狣搴撲綅鍚堝苟涓烘繁娴呭簱浣�
+        List<LocMast> locMasts3 = locMastService.queryDeepLocDMast();
+        if (null != locMasts3) {
+            for (LocMast sourceLoc : locMasts3) {
+                List<LocMast> locMasts4 = locMastService.queryDeepLocDMast();
+                for (LocMast deepLoc : locMasts4){
+                    if(sourceLoc.getLocNo().equals(deepLoc.getLocNo())){
+                        continue;
+                    }
+                    String shallow = Utils.getShallowLoc(slaveProperties, deepLoc.getLocNo());
+                    LocMast destLoc = locMastService.selectById(shallow);
+                    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(), destLoc.getLocNo(), 1L);
+                            return;
+                        }
+                    }
+                }
+
+            }
+        }
+
     }
 
     /**
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 723b04f..d32aa95 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -61,4 +61,4 @@
   enabled: false
 
 scheduler:
-  autoMove: true
\ No newline at end of file
+  autoMove: false
\ No newline at end of file
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index a736a3b..621e466 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -104,8 +104,79 @@
          from asr_loc_mast
          where 1=1
          and loc_sts = 'O'
-         and row1 in (1,4,5,8,9,12,13,16,17,20)
+         and row1 in (1)
         )
-        and (loc_sts = 'F' or loc_sts = 'D')
+        and (loc_sts = 'F' or loc_sts = 'D') and crn_no=1
+    </select>
+
+    <select id="queryNeedMoveShallLocF" resultMap="BaseResultMap">
+        select * from asr_loc_mast
+        where 1=1
+        and loc_no in (
+         select
+         concat(
+         (
+         case
+         when left(loc_no, 2) = '01' then '02'
+         end)
+         , right(loc_no, 5)) as shallowLocNo
+         from asr_loc_mast
+         where 1=1
+         and loc_sts = 'D'
+         and row1 in (1)
+        )
+        and loc_sts = 'F' and crn_no=1
+    </select>
+
+    <select id="queryNeedMoveShallLocD" resultMap="BaseResultMap">
+        select * from asr_loc_mast
+        where 1=1
+        and loc_no in (
+         select
+         concat(
+         (
+         case
+         when left(loc_no, 2) = '01' then '02'
+         end)
+         , right(loc_no, 5)) as shallowLocNo
+         from asr_loc_mast
+         where 1=1
+         and loc_sts = 'F'
+         and row1 in (1)
+        )
+        and loc_sts = 'D' and crn_no=1
+    </select>
+
+    <select id="queryEmptyDeepLoc" resultMap="BaseResultMap">
+        select top 1 * from asr_loc_mast
+        where 1=1
+          and (loc_no in (
+            select
+                concat((case when left(loc_no, 2) = '02' then '01'end)
+                    , right(loc_no, 5)) as deepLocNo
+            from asr_loc_mast
+            where 1=1 and loc_sts = 'O' and row1 in (2)
+        ) or row1=3)
+          and loc_sts = 'O' and crn_no = 1
+        order by newid()
+    </select>
+
+    <select id="queryDeepLocDMast" resultMap="BaseResultMap">
+        select * from asr_loc_mast
+        where 1=1
+        and loc_no in (
+         select
+         concat(
+         (
+         case
+         when left(loc_no, 2) = '02' then '01'
+         end)
+         , right(loc_no, 5)) as deepLocNo
+         from asr_loc_mast
+         where 1=1
+         and loc_sts = 'O'
+         and row1 in (2)
+        )
+        and loc_sts = 'D' and crn_no=1
     </select>
 </mapper>

--
Gitblit v1.9.1