From 96b30d7e4005d76fabc48894150edfe208a70218 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期四, 20 七月 2023 16:48:04 +0800
Subject: [PATCH] #桁架上位软件:单次拆垛完成通知 接口实装

---
 src/main/resources/mapper/WrkDetlMapper.xml                               |    4 +
 src/main/java/com/zy/asrs/entity/param/SingleUnstackingCompleteParam.java |   29 +++++++++
 src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java                       |    1 
 src/main/java/com/zy/common/model/enums/WorkNoType.java                   |    8 ++
 src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java            |    5 +
 src/main/java/com/zy/asrs/entity/WrkDetl.java                             |    1 
 src/main/resources/mapper/WrkMastMapper.xml                               |    1 
 src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java                |   18 +++--
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java               |   75 +++++++++++++++++++++++++
 src/main/java/com/zy/asrs/service/WrkDetlService.java                     |    1 
 10 files changed, 134 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/WrkDetl.java b/src/main/java/com/zy/asrs/entity/WrkDetl.java
index 349a127..57d8951 100644
--- a/src/main/java/com/zy/asrs/entity/WrkDetl.java
+++ b/src/main/java/com/zy/asrs/entity/WrkDetl.java
@@ -225,6 +225,7 @@
 
     /**
      * 瑕佹眰妫�楠� 1: 鏄�  0: 鍚�
+     * 寰愬伐姹変簯鎷嗗灈鏍囪  0: 鏈媶  1: 宸叉媶
      */
     @ApiModelProperty(value= "瑕佹眰妫�楠� 1: 鏄�  0: 鍚�  ")
     private Integer inspect;
diff --git a/src/main/java/com/zy/asrs/entity/param/SingleUnstackingCompleteParam.java b/src/main/java/com/zy/asrs/entity/param/SingleUnstackingCompleteParam.java
index b2536c9..87d3e29 100644
--- a/src/main/java/com/zy/asrs/entity/param/SingleUnstackingCompleteParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/SingleUnstackingCompleteParam.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.entity.param;
 
+import com.core.common.Cools;
 import lombok.Data;
 
 import java.util.List;
@@ -20,4 +21,32 @@
         private String boxNo;//		鏄�	瀛楃涓�	鏈ㄧ缂栧彿锛堝敮涓�瀛楁锛屽嚭搴撲緷鎹紝鍑哄簱鏃舵寜鐓ф湪绠辩紪鍙峰嚭搴擄級
     }
 
+    public Integer getSourceDevNo$(){
+        if (!Cools.isEmpty(this.palletizingNo)){
+            switch (this.palletizingNo){
+                case "1":
+                    return 119;
+                case "2":
+                    return 121;
+                default:
+                    return null;
+            }
+        }
+        return null;
+    }
+
+    public Integer getDevNo$(){
+        if (!Cools.isEmpty(this.palletizingNo)){
+            switch (this.palletizingNo){
+                case "1":
+                    return 132;
+                case "2":
+                    return 134;
+                default:
+                    return null;
+            }
+        }
+        return null;
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java b/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
index e10e894..61b3a57 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
@@ -13,6 +13,7 @@
 public interface WrkDetlMapper extends BaseMapper<WrkDetl> {
 
     List<WrkDetl> selectByWrkNo(Integer wrkNo);
+    List<WrkDetl> selectByWrkNoUnstacking(Integer wrkNo);
 
     int deleteItem(@Param("wrkNo")Integer wrkNo, @Param("matnr")String matnr, @Param("batch")String batch);
 
diff --git a/src/main/java/com/zy/asrs/service/WrkDetlService.java b/src/main/java/com/zy/asrs/service/WrkDetlService.java
index a40f47a..6e30b7b 100644
--- a/src/main/java/com/zy/asrs/service/WrkDetlService.java
+++ b/src/main/java/com/zy/asrs/service/WrkDetlService.java
@@ -12,6 +12,7 @@
     void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId, Date now);
 
     List<WrkDetl> selectByWrkNo(Integer wrkNo);
+    List<WrkDetl> selectByWrkNoUnstacking(Integer wrkNo);
 
     boolean updateAnfme(Double anfme, Integer wrkNo, String matnr, String batch);
 
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 3d88baa..bde2944 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -13,6 +13,8 @@
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.MatUtils;
 import com.zy.common.model.DetlDto;
+import com.zy.common.model.enums.WorkNoType;
+import com.zy.common.service.CommonService;
 import com.zy.common.utils.NodeUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -56,6 +58,8 @@
     private WrkDetlService wrkDetlService;
     @Autowired
     private WaitPakinService waitPakinService;
+    @Autowired
+    private CommonService commonService;
 
     @Override
     @Transactional
@@ -753,6 +757,76 @@
     @Override
     @Transactional
     public void singleUnstackingComplete(SingleUnstackingCompleteParam param) {
+        Long userId = 8888L;//妗佹灦涓婁綅杞欢
+        //鍒ゆ柇param鍙傛暟
+        if (Cools.isEmpty(param.getBarcode())){
+            throw new CoolException("鍙傛暟锛氭墭鐩樼爜 barcode涓虹┖");
+        }else if (Cools.isEmpty(param.getPalletizingNo())){
+            throw new CoolException("鍙傛暟锛氱爜鍨涗綅缂栧彿 palletizingNo涓虹┖");
+        }else if (Cools.isEmpty(param.getMatLists()) || param.getMatLists().size()==0){
+            throw new CoolException("鍙傛暟锛氱墿鏂欐槑缁� matLists涓虹┖");
+        }
+        WrkMast wrkMastMatrix = wrkMastService.selectByBarcode(param.getBarcode());
+        if (Cools.isEmpty(wrkMastMatrix)){
+            throw new CoolException("鍙傛暟锛氭墭鐩樼爜鏌ヨ宸ヤ綔妗eけ璐ワ細"+param.getBarcode());
+        }
+
+        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNoUnstacking(wrkMastMatrix.getWrkNo());
+        ArrayList<WrkDetl> wrkDetlsNew = new ArrayList<>();
+        //鍒ゆ柇matLists鍙傛暟
+        for (SingleUnstackingCompleteParam.MatList matList:param.getMatLists()){
+            if (Cools.isEmpty(matList.getPosition())){
+                throw new CoolException("鍙傛暟锛氱爜鍨涗綅缃� position涓虹┖");
+            }else if (Cools.isEmpty(matList.getBoxNo())){
+                throw new CoolException("鍙傛暟锛氭湪绠辩紪鍙� boxNo涓虹┖");
+            }
+            boolean sign=true;
+            for (WrkDetl wrkDetl:wrkDetls){
+                if (wrkDetl.getSku().equals(matList.getBoxNo())){//鏈ㄧ缂栫爜
+                    wrkDetl.setInspect(1);
+                    wrkDetlService.updateById(wrkDetl);
+                    wrkDetlsNew.add(wrkDetl);
+                    sign=false;
+                    break;
+                }
+            }
+            if (sign){
+                throw new CoolException("鍙傛暟锛氭湪绠辩紪鍙� boxNo鏈煡璇㈠埌瀵瑰簲鐨勫伐浣滄槑缁嗭紒");
+            }
+        }
+
+        // 鐢熸垚宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(202));
+        Date now = new Date();
+
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(51L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+        wrkMast.setIoType(202); // 鍏ュ嚭搴撶姸鎬侊細202.鎷嗗灈鍚庡嚭搴�
+        wrkMast.setIoPri(13D); // 浼樺厛绾�
+        wrkMast.setSourceStaNo(param.getDevNo$());
+        wrkMast.setStaNo(140); //璐存爣绔欑偣
+        // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeUser(userId);
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(now);
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("鐢熸垚宸ヤ綔妗eけ璐�");
+        }
+
+        for (WrkDetl wrkDetl : wrkDetlsNew){
+            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl.setIoTime(wrkMast.getIoTime());
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setModiTime(now);
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+            }
+        }
 
     }
 
@@ -762,6 +836,7 @@
     @Override
     @Transactional
     public void singleMountUnstackingComplete(SingleMountUnstackingCompleteParam param) {
+        Long userId = 8888L;//妗佹灦涓婁綅杞欢
 
     }
 
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
index 3eaaa7a..f40bf7f 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
@@ -57,6 +57,11 @@
     }
 
     @Override
+    public List<WrkDetl> selectByWrkNoUnstacking(Integer wrkNo) {
+        return this.baseMapper.selectByWrkNoUnstacking(wrkNo);
+    }
+
+    @Override
     public boolean updateAnfme(Double anfme, Integer wrkNo, String matnr, String batch) {
         if (anfme <= 0) {
             return this.baseMapper.deleteItem(wrkNo, matnr, batch) > 0;
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
index d71d3e4..976ff0a 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -44,7 +44,7 @@
         try {
             List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
             // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
-            if (!Cools.isEmpty(wrkDetls)) {
+            if (wrkMast.getIoType()<200 && !Cools.isEmpty(wrkDetls)) {
                 Iterator<WrkDetl> iterator = wrkDetls.iterator();
                 while (iterator.hasNext()) {
                     WrkDetl wrkDetl = iterator.next();
@@ -102,13 +102,15 @@
             if (!wrkMastService.deleteById(wrkMast)) {
                 exceptionHandle("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo());
             }
-            // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
-            if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
-//                exceptionHandle("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
-            }
-            // 鍒犻櫎宸ヤ綔鏄庣粏妗�
-            if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) {
-//                exceptionHandle("鍒犻櫎宸ヤ綔鏄庣粏妗workNo={0}]澶辫触", wrkMast.getWrkNo());
+            if ((wrkMast.getIoType()<200 || wrkMast.getWrkSts().equals(57L)) && !Cools.isEmpty(wrkDetls)){
+                // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+                if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+                    exceptionHandle("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
+                }
+                // 鍒犻櫎宸ヤ綔鏄庣粏妗�
+                if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) {
+                    exceptionHandle("鍒犻櫎宸ヤ綔鏄庣粏妗workNo={0}]澶辫触", wrkMast.getWrkNo());
+                }
             }
         } catch (Exception e) {
             log.error("fail", e);
diff --git a/src/main/java/com/zy/common/model/enums/WorkNoType.java b/src/main/java/com/zy/common/model/enums/WorkNoType.java
index ff1768c..e362118 100644
--- a/src/main/java/com/zy/common/model/enums/WorkNoType.java
+++ b/src/main/java/com/zy/common/model/enums/WorkNoType.java
@@ -10,7 +10,9 @@
     PAKIN(0),
     PICK(1),
     PAKOUT(2),
-    OTHER(3),
+    OTHER1(3),
+    OTHER2(4),
+    OTHER(5),
     ;
 
     public Integer type;
@@ -39,6 +41,10 @@
                 return PICK.type;
             case 110:
                 return PAKOUT.type;
+            case 201:
+                return OTHER1.type;
+            case 202:
+                return OTHER2.type;
             default:
                 break;
         }
diff --git a/src/main/resources/mapper/WrkDetlMapper.xml b/src/main/resources/mapper/WrkDetlMapper.xml
index e94832f..0888893 100644
--- a/src/main/resources/mapper/WrkDetlMapper.xml
+++ b/src/main/resources/mapper/WrkDetlMapper.xml
@@ -63,6 +63,10 @@
         select * from asr_wrk_detl where 1=1 and wrk_no = #{wrkNo}
     </select>
 
+    <select id="selectByWrkNoUnstacking" resultMap="BaseResultMap">
+        select * from asr_wrk_detl where 1=1 and inspect=0 and wrk_no = #{wrkNo}
+    </select>
+
     <delete id="deleteItem">
         delete from asr_wrk_detl
         where 1=1
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index ce04079..1764f52 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -69,6 +69,7 @@
     <select id="selectToBeHistoryData" resultMap="BaseResultMap">
         select * from asr_wrk_mast
         where wrk_sts=5
+        or wrk_sts=44 or wrk_sts=57
         or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
         or (wrk_sts=15 and dateadd(mi,15,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
         or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))

--
Gitblit v1.9.1