From f64082f012503105373eb4ca36a2ecfd2ad8415e Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期五, 08 十一月 2024 10:12:27 +0800
Subject: [PATCH] 自动出空板到入库口

---
 src/main/java/com/zy/asrs/controller/LocMastController.java |    1 
 src/main/resources/mapper/LocDetlMapper.xml                 |    1 
 src/main/java/com/zy/asrs/entity/WrkMast.java               |    2 
 src/main/java/com/zy/asrs/task/EmptyOutWing.java            |  130 +++++++++++++++++++++++++++++++++++++++++++
 src/main/java/com/zy/common/web/WcsController.java          |   18 ++++--
 src/main/java/com/zy/common/service/CommonService.java      |   20 +++++-
 src/main/resources/license.lic                              |    0 
 src/main/resources/application.yml                          |    2 
 8 files changed, 163 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/LocMastController.java b/src/main/java/com/zy/asrs/controller/LocMastController.java
index 2eae903..98dacdb 100644
--- a/src/main/java/com/zy/asrs/controller/LocMastController.java
+++ b/src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -67,6 +67,7 @@
         excludeTrash(param);
         EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
         convert(param, wrapper);
+        wrapper.orderBy("modi_time",true);
         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
         return R.ok(locMastService.selectPage(new Page<>(curr, limit), wrapper));
     }
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 565499e..5b0bd1b 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -137,7 +137,7 @@
     @TableField("exit_mk")
     private String exitMk;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value= "绌烘澘娑堥櫎鏍囪")
     @TableField("plt_type")
     private Integer pltType;
 
diff --git a/src/main/java/com/zy/asrs/task/EmptyOutWing.java b/src/main/java/com/zy/asrs/task/EmptyOutWing.java
new file mode 100644
index 0000000..c32d84f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/EmptyOutWing.java
@@ -0,0 +1,130 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.core.common.Cools;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.StaDesc;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.StaDescService;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.common.model.enums.WorkNoType;
+import com.zy.common.service.CommonService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class EmptyOutWing {
+
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private LocMastService locMastService;
+    @Autowired
+    private StaDescService staDescService;
+    @Autowired
+    private CommonService commonService;
+
+
+    @Scheduled(cron = "0/3 * * * * ? ")
+    private void execute() {
+        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 110));
+        if (count > 0) {
+            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("wrk_sts", 7));
+            if (Cools.isEmpty(wrkMast)) {
+                return;
+            }
+            WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 1).eq("wrk_sts", 2).eq("full_plt", "N"));
+            if (Cools.isEmpty(wrkMast1)) {
+                return;
+            }
+            wrkMast1.setFullPlt("Y");
+            wrkMastService.updateById(wrkMast1);
+            wrkMast.setWrkSts(14L);
+            wrkMastService.updateById(wrkMast);
+        } else {
+            List<LocMast> locMastss =locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").orderBy("bay1"));
+            if (Cools.isEmpty(locMastss)) {
+                return;
+            }
+            for (LocMast locMasta : locMastss) {
+                // 鑾峰彇宸ヤ綔鍙�
+                int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
+                // 鑾峰彇搴撲綅
+                LocMast locMast = locMastService.selectById(locMasta.getLocNo());
+                if (Cools.isEmpty(locMast)) {
+                    throw new CoolException(locMasta.getLocNo()+"搴撲綅涓嶅瓨鍦�");
+                }
+                if (!locMast.getLocSts().equals("D")){
+                    throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+                }
+                boolean res1 = true;
+
+                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                        .eq("lev1", locMast.getLev1())
+                        .orderBy("bay1",res1));
+                for (LocMast locMast1 : locMasts) {
+                    if (locMast1.getLocNo().equals(locMast.getLocNo())) {
+                        break;
+                    }
+                    if (locMast1.getLocSts().equals("D") || locMast1.getLocSts().equals("F")) {
+                        throw new CoolException(locMasta.getLocNo()+"搴撲綅鍫靛锛岀姝㈠嚭搴�");
+                    }
+                }
+                // 鑾峰彇婧愮珯
+                Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                        .eq("type_no", 110)
+                        .eq("stn_no", 100)
+                        .eq("crn_no", locMast.getCrnNo());
+                StaDesc staDesc = staDescService.selectOne(wrapper);
+                Integer sourceStaNo = staDesc.getCrnStn();
+                if (Cools.isEmpty(sourceStaNo)) {
+                    throw new CoolException("妫�绱㈡簮绔欏け璐�");
+                }
+                Date now = new Date();
+                // 淇濆瓨宸ヤ綔妗�
+                WrkMast wrkMast = new WrkMast();
+                wrkMast.setWrkNo(workNo);
+                wrkMast.setIoTime(now);
+                wrkMast.setWrkSts(0L); // 宸ヤ綔鐘舵�侊細0.寰呭彂閫�
+                wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
+                wrkMast.setIoPri(10D);
+                wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
+                wrkMast.setStaNo(100); // 鐩爣绔�
+                wrkMast.setCrnNo(locMast.getCrnNo());
+                wrkMast.setSourceLocNo(locMasta.getLocNo()); // 婧愬簱浣�
+                wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+                wrkMast.setPicking("N"); // 鎷f枡
+                wrkMast.setExitMk("N"); // 閫�鍑�
+                wrkMast.setEmptyMk("Y"); // 绌烘澘
+                wrkMast.setLinkMis("N");
+                wrkMast.setAppeUser(9998L);
+                wrkMast.setAppeTime(now);
+                wrkMast.setModiUser(9998L);
+                wrkMast.setModiTime(now);
+                boolean res = wrkMastService.insert(wrkMast);
+                if (!res) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+                }
+                // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
+                if (locMast.getLocSts().equals("D")){
+                    locMast.setLocSts("R");
+                    locMast.setModiUser(9998L);
+                    locMast.setModiTime(now);
+                    if (!locMastService.updateById(locMast)) {
+                        throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+                    }
+                    break;
+                }
+
+            }
+        }
+
+    }
+}
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 1fdf82b..00ae205 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -475,7 +475,7 @@
                     if (Cools.isEmpty(locMast1)) {
                         continue;
                     }
-                    if (locMast1.getLev1() != lev && locMast1.getLev1() !=2) {
+                    if (locMast1.getLev1() != lev && locMast1.getLev1() !=3) {
                         List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                                 .eq("lev1", locMast1.getLev1())
                                 .orderBy("bay1",false));
@@ -501,9 +501,23 @@
                         if (locMast2.getLocSts().equals("O") ) {
                             if (locMast == null){
                                 locMast = locMast2;
-                            }else if (locMast2.getLocSts().equals("F")){
-                                locMast = null;
                             }
+                        }else if (locMast2.getLocSts().equals("F")){
+                            locMast = null;
+                        }
+                    }
+                }
+                if(Cools.isEmpty(locMast)){
+                    List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                            .eq("lev1", 2)
+                            .orderBy("bay1",false));
+                    for (LocMast locMast2 : locMasts) {
+                        if (locMast2.getLocSts().equals("O") ) {
+                            if (locMast == null){
+                                locMast = locMast2;
+                            }
+                        }else if (locMast2.getLocSts().equals("F")){
+                            locMast = null;
                         }
                     }
                 }
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 5a4001e..7e5b636 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -76,7 +76,7 @@
         if (param.getFromPort().equals("100")) {
 
             //鏈夌┖鏉垮嚭搴撴椂绂佹鍏ュ簱
-            int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type",110).eq("sta_no",100));
+            int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type",110).eq("sta_no",100).notIn("wrk_sts",7));
             if(wrkCount > 0){
                 return Re.error("鏈夌┖鏉垮嚭搴撳埌100绔欐椂鏃剁姝㈠叆搴�");
             }
@@ -216,6 +216,7 @@
         wrkMast.setLinkMis("Y");
         wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
         wrkMast.setMk("N");//鏄惁瀹屾垚涓婃姤wcs
+        wrkMast.setFullPlt("N");//鍑哄簱绌烘澘娑堥櫎鏍囪
         // 鎿嶄綔浜哄憳鏁版嵁
         wrkMast.setAppeTime(now);
         wrkMast.setModiTime(now);
@@ -321,8 +322,12 @@
     @ResponseBody
     public Re status(@RequestBody StatusParam statusParam) {
         WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", statusParam.getTaskId()));
-        if(Cools.isEmpty(wrkMast)){
+        if(Cools.isEmpty(wrkMast)&&statusParam.getTaskStatus()!=8){
             return Re.error("娌℃湁鎵惧埌:"+statusParam.getTaskId()+"杩欐潯浠诲姟");
+        }else if(Cools.isEmpty(wrkMast)&&statusParam.getTaskStatus()==8){
+            return Re.ok();
+        }else if(!Cools.isEmpty(wrkMast)&&statusParam.getTaskStatus()==8&&wrkMast.getIoType()==110){
+            return Re.ok();
         }
         /**
          * 浠诲姟鐘舵��
@@ -341,13 +346,14 @@
             wrkMast.setWrkSts(3L);//3.鍙栬揣瀹屾垚
         }else if (statusParam.getTaskStatus()==3){
             wrkMast.setWrkSts(6L);//6.浠诲姟涓柇
-        } else if (statusParam.getTaskStatus()==4){
-            wrkMast.setWrkSts(7L);//6.鏀捐揣瀹屾垚
-        }if (statusParam.getTaskStatus()==8){
+        } else if (statusParam.getTaskStatus()==4 || statusParam.getTaskStatus()==8){
+//            wrkMast.setWrkSts(7L);//6.鏀捐揣瀹屾垚
             if(wrkMast.getIoType()==1 || wrkMast.getIoType() == 10){
                 wrkMast.setWrkSts(4L);//4.鍏ュ簱瀹屾垚
-            }else if (wrkMast.getIoType()==101 || wrkMast.getIoType() == 110){
+            }else if (wrkMast.getIoType()==101){
                 wrkMast.setWrkSts(14L);//14.宸插嚭搴撴湭纭
+            } else if (wrkMast.getIoType()==110) {
+                wrkMast.setWrkSts(7L);
             }
         }
         wrkMastService.updateById(wrkMast);
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index da66372..a8a014e 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,5 +1,5 @@
 server:
-  port: 8080
+  port: 8085
   servlet:
     context-path: /@pom.build.finalName@
 
diff --git a/src/main/resources/license.lic b/src/main/resources/license.lic
index 86821c9..d3efb39 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 4b0009d..84a38a0 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -123,6 +123,7 @@
             and b.loc_sts = 'F'
             <include refid="stockOutCondition"></include>
         ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
+            order by appe_time
     </select>
 
     <select id="getStockOutPageCount" parameterType="java.util.Map" resultType="java.lang.Integer">

--
Gitblit v1.9.1