From 906378a251838ab4d4f3b7f7ecc461764ea7090f Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期六, 12 十月 2024 10:54:39 +0800
Subject: [PATCH] 空闲理货

---
 src/main/java/com/zy/asrs/mapper/LocDetlMapper.java         |   14 +
 src/main/java/com/zy/asrs/entity/LocDetl.java               |    2 
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java |   24 ++
 src/main/java/com/zy/asrs/controller/OpenController.java    |   10 
 src/main/java/com/zy/asrs/task/GhjtScheduler.java           |   40 ++
 src/main/java/com/zy/asrs/task/handler/GhjtHandler.java     |  193 ++++++++++++++++
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |   12 
 src/main/resources/mapper/LocDetlMapper.xml                 |   29 ++
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java |  273 +++++++++++++++++++-----
 src/main/java/com/zy/asrs/service/OpenService.java          |    5 
 src/main/java/com/zy/asrs/entity/param/KxlhcdwcParam.java   |   21 +
 src/main/java/com/zy/asrs/entity/result/ZphjcdgzVo.java     |    5 
 12 files changed, 547 insertions(+), 81 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 3da1ccf..164d69d 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -172,6 +172,16 @@
         return openService.requestXhd((String) param.get("barcode"));
     }
 
+
+    @PostMapping("/kxlhcdwc")
+    @AppAuth(memo = "绌洪棽鐞嗚揣鎷嗗灈瀹屾垚")
+    public synchronized R kxlhCdwc(@RequestHeader(required = false) String appkey,
+                                   @RequestBody KxlhcdwcParam param,
+                                   HttpServletRequest request) {
+        auth(appkey, param, request);
+        return openService.kxlhCdwc(param);
+    }
+
     /*@PostMapping("/order/matSync/default/v1")
     @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾鎺ュ彛")
     public synchronized R syncMatInfo(@RequestHeader(required = false) String appkey,
diff --git a/src/main/java/com/zy/asrs/entity/LocDetl.java b/src/main/java/com/zy/asrs/entity/LocDetl.java
index 03aa67d..77e069a 100644
--- a/src/main/java/com/zy/asrs/entity/LocDetl.java
+++ b/src/main/java/com/zy/asrs/entity/LocDetl.java
@@ -128,7 +128,7 @@
     @TableField("dead_time")
     private String deadTime;
 
-    @ApiModelProperty(value= "棰勮澶╂暟")
+    @ApiModelProperty(value= "鐞嗚揣鏍囪瘑 0鏈悊璐э紝1鐞嗚揣涓紝2鐞嗚揣瀹屾垚")
     @TableField("dead_warn")
     private Integer deadWarn;
 
diff --git a/src/main/java/com/zy/asrs/entity/param/KxlhcdwcParam.java b/src/main/java/com/zy/asrs/entity/param/KxlhcdwcParam.java
new file mode 100644
index 0000000..8af1ce5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/KxlhcdwcParam.java
@@ -0,0 +1,21 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+/**
+ * @author pang.jiabao
+ * @description 绌洪棽鐞嗚揣鎷嗗灈瀹屾垚
+ * @createDate 2024/7/16 9:37
+ */
+@Data
+public class KxlhcdwcParam {
+
+    private Integer workNo; // 宸ヤ綔鍙�
+
+    // 鎹㈢洏绔欑偣
+    private Integer sourceStaNo;
+
+    // 缁勭洏绔欑偣
+    private Integer site;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/result/ZphjcdgzVo.java b/src/main/java/com/zy/asrs/entity/result/ZphjcdgzVo.java
index f2a0f72..471f467 100644
--- a/src/main/java/com/zy/asrs/entity/result/ZphjcdgzVo.java
+++ b/src/main/java/com/zy/asrs/entity/result/ZphjcdgzVo.java
@@ -17,4 +17,9 @@
 
     private String position; // 瑕佹媶鐨勪綅缃�,宸︽垨鍙�
 
+    /**
+     * 鎷嗗灈绫诲瀷 1.鍑哄簱鐞嗚揣锛�2.绌洪棽鐞嗚揣
+     */
+    private Integer cdType;
+
 }
diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
index 3103277..50ba4a3 100644
--- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -91,4 +91,18 @@
      * 鎸夊寘瑁呯粍鍙峰垪琛ㄦ煡璇㈠簱浣嶅彿鍒楄〃
      */
     List<LocDetl> selectLocNoByGroupNo(@Param("packageGroupNos") List<String> packageGroupNos);
+
+    /**
+     * 鏌ユ壘涓嶅湪澶囪揣鍖猴紝娌℃湁鐞嗚揣鐨勶紝涓嶆槸涓�绠卞鍗风殑鐗╂枡闆嗗悎锛堝彧浼氭槸涓�鎵樹竴绠变竴鍗锋垨涓�鎵樹袱绠遍兘涓�鍗凤級锛屾寜鍒嗗垏鏃堕棿鎺掑簭锛岀‘淇濇渶鍏堝尮閰嶇殑鏃ユ湡鏈�鎺ヨ繎
+     * @param columnNum 澶囪揣鍖哄墠鍑犲垪
+     * @return 搴撳瓨鏄庣粏
+     */
+    List<LocDetl> selectTallyGoosList(@Param("columnNum") int columnNum);
+
+    /**
+     * 鎸夊簱浣嶅彿鏇存柊搴撳瓨鏄庣粏鐞嗚揣鐘舵��
+     * @param locNo 搴撲綅鍙�
+     * @param status 鐘舵��
+     */
+    void updateLhStsByLocNo(@Param("locNo") String locNo,@Param("status") int status);
 }
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index cd6b146..99e97cfa 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -76,6 +76,11 @@
     R zphjCdwc(ZphjcdwcParam param);
 
     /**
+     * 绌洪棽鐞嗚揣鎷嗗灈瀹屾垚
+     */
+    R kxlhCdwc(KxlhcdwcParam param);
+
+    /**
      * gwcs鍒拌揪鐩樼偣浣嶇疆浼犻�掓墭鐩樻潯鐮佽幏鍙栦寒鐏�
      */
     R requestXhd(String barcode);
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 c702b1d..e0b1efd 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.R;
@@ -26,6 +27,8 @@
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.HttpHandler;
 import com.zy.common.utils.NodeUtils;
+import com.zy.system.entity.Config;
+import com.zy.system.mapper.ConfigMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -100,6 +103,9 @@
 
     @Resource
     private LocDetlMapper locDetlMapper;
+
+    @Resource
+    private ConfigMapper configMapper;
 
     @Override
     @Transactional
@@ -1232,10 +1238,6 @@
 //        StartupDto dto = commonService.getLocNo(1, 1, param.getPalletizingNo(), null,null,null, locTypeDto);
         StartupDto dto = commonService.getLocNo(iotype, param.getPalletizingNo(), locTypeDto,0);
 
-        // 杩斿洖GWCS鐩爣淇℃伅
-        pushStaNoToGwcs(param.getPalletizingNo(),dto.getStaNo(),dto.getWorkNo(),param.getBarcode(),"gwms鐢宠鍏ュ簱鍚庢帹閫乬wcs");
-
-
         int workNo = dto.getWorkNo();
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
@@ -1323,7 +1325,11 @@
         } else {
             throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
         }
-        return null;
+
+        // 杩斿洖GWCS鐩爣淇℃伅
+        pushStaNoToGwcs(param.getPalletizingNo(),dto.getStaNo(),dto.getWorkNo(),param.getBarcode(),"gwms鐢宠鍏ュ簱鍚庢帹閫乬wcs");
+
+        return R.ok();
     }
 
     @Override
@@ -1343,6 +1349,8 @@
             wrkMast.setBarcode(param.getBarcode());
         } else if(wrkMast.getIoType() == 12) { // 璺ㄥ贩閬撹浆绉诲叆搴�
 
+        } else if(wrkMast.getSourceStaNo() == 3046 || wrkMast.getSourceStaNo() == 3042) {
+            wrkMast.setBarcode(param.getBarcode());
         }
         wrkMastService.updateById(wrkMast);
 
@@ -1566,7 +1574,7 @@
         if (wrkMast == null) {
             throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�");
         }
-        if (wrkMast.getWrkSts() != 2 || wrkMast.getIoType() != 103) {
+        if (wrkMast.getWrkSts() != 2 || wrkMast.getIoType() != 103 && wrkMast.getIoType() != 109) {
             throw new CoolException("宸ヤ綔妗e綋鍓嶇姸鎬佷笉涓�2/鍑哄簱绫诲瀷涓嶄负鎷f枡锛�");
         }
         // 鏇存柊宸ヤ綔妗g姸鎬�2.璁惧涓婅蛋->42.绛夊緟鐮佸灈
@@ -1582,6 +1590,7 @@
         zphjcdgzVo.setWorkNo(wrkDetl.getWrkNo());
         zphjcdgzVo.setBoxType(wrkDetl.getColor());
         zphjcdgzVo.setPosition(wrkDetl.getOrigin());
+        zphjcdgzVo.setCdType(wrkMast.getIoType() == 103 ? 1 : 2);
 
         return R.ok(zphjcdgzVo);
     }
@@ -1590,7 +1599,7 @@
     @Transactional
     public R zphjCdwc(ZphjcdwcParam param) {
 
-        if (Cools.isEmpty(param.getWorkNo(),param.getBarcode(),param.getSourceStaNo(),param.getSite())) {
+        if (Cools.isEmpty(param.getWorkNo(),param.getSourceStaNo(),param.getSite())) {
             return R.parse("鍙傛暟涓嶈兘涓虹┖锛岃妫�鏌ュ叆鍙�");
         }
         WrkMast wrkMast = wrkMastService.selectById(param.getWorkNo());
@@ -1604,74 +1613,228 @@
         // 鑾峰彇鍑哄簱鐗╂枡
         List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
 
+        // 婧愬簱浣�
+        LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+
         // 鍒涘缓妗佹灦鐞嗚揣鍑哄簱鐨勫伐浣滄。
-        int work = create111Work(wrkMast, wrkDetls, param.getSite(), wrkMast.getStaNo(), param.getBarcode());
+        int work = create111Work(wrkMast, wrkDetls, param.getSite(), wrkMast.getStaNo(), "1001");
 
         int descFlag = getType(wrkDetls);
-
-        // get0鍘熸墭鐩樺洖娴佷俊鎭紝get1鎷嗗灈鍑烘潵鐗╂枡鍑哄簱淇℃伅
-        List<ZphjcdwcVo> zphjcdwcVos = new ArrayList<>();
-        ZphjcdwcVo zphjcdwcVo1 = new ZphjcdwcVo();
-        zphjcdwcVo1.setWorkNo(wrkMast.getWrkNo());
-        zphjcdwcVo1.setStaNo(wrkMast.getSourceStaNo());
-        zphjcdwcVo1.setSourceStaNo(param.getSourceStaNo());
-        zphjcdwcVo1.setBarcode(wrkMast.getBarcode());
-        zphjcdwcVos.add(zphjcdwcVo1);
-
-        ZphjcdwcVo zphjcdwcVo2 = new ZphjcdwcVo();
-        zphjcdwcVo2.setWorkNo(work);
-        zphjcdwcVo2.setSourceStaNo(param.getSite());
-        zphjcdwcVo2.setStaNo(wrkMast.getStaNo());
-        zphjcdwcVo2.setBarcode(param.getBarcode());
-        zphjcdwcVo2.setDescFlag(descFlag);
-        zphjcdwcVos.add(zphjcdwcVo2);
-
 
         // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
         if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
             throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
         }
-        // 鑾峰彇鐩爣绔�
-//        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-//                .eq("type_no", wrkMast.getIoType() - 50)
-//                .eq("stn_no", wrkMast.getSourceStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
-//                .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
-//        StaDesc staDesc = staDescService.selectOne(wrapper);
-//        if (Cools.isEmpty(staDesc)) {
-//            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
-//        }
-        // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
-//        Integer staNo = staDesc.getCrnStn();
-        // 鏇存柊宸ヤ綔绫诲瀷103->53
-        wrkMast.setIoType(53);
-        wrkMast.setWrkSts(52L); // 宸ヤ綔鐘舵��42->52.璁惧涓婅蛋锛堟媶鍨涘畬鎴愶級
-        // 鐩爣绔欑偣婧愮珯鐐硅浆鎹�
-        wrkMast.setStaNo(oneFloorIn[wrkMast.getCrnNo()]);
-        wrkMast.setSourceStaNo(param.getSourceStaNo());
 
-        // 鐩爣搴撲綅=婧愬簱浣�
-        wrkMast.setLocNo(wrkMast.getSourceLocNo());
-        // 婧愬簱浣嶆竻闄�
-        wrkMast.setSourceLocNo("");
-        wrkMast.setModiTime(new Date());
+        // 鑾峰彇澶囪揣鍖洪厤缃�
+        Config config = configMapper.selectConfigByCode("auto_stock_up");
+        if (config == null) {
+            throw new CoolException("鐞嗚揣鑾峰彇澶囪揣鍖洪厤缃敊璇紒锛侊紒");
+        }
+        // 鍓嶅嚑鍒楁槸澶囪揣鍖�
+        int columnNum = Integer.parseInt(config.getValue());
+
+        // get0鍘熸墭鐩樺洖娴佷俊鎭紝get1鎷嗗灈鍑烘潵鐗╂枡鍑哄簱淇℃伅
+        List<ZphjcdwcVo> zphjcdwcVos = new ArrayList<>();
+
+        ZphjcdwcVo zphjcdwcVo2 = new ZphjcdwcVo();
+        zphjcdwcVo2.setWorkNo(work);
+        zphjcdwcVo2.setSourceStaNo(param.getSite());
+        zphjcdwcVo2.setStaNo(wrkMast.getStaNo());
+        zphjcdwcVo2.setBarcode(param.getSite() == 3046 ? "T1146" : "T1142");
+        zphjcdwcVo2.setDescFlag(descFlag);
+        zphjcdwcVos.add(zphjcdwcVo2);
+
+        // 濡傛灉浠庡璐у尯鏉ョ殑锛屽垯涓嶈兘鍥炲師搴撲綅
+        if (locMast.getBay1() <= columnNum) {
+
+            // 瀵绘壘涓�涓柊搴撲綅
+            LocTypeDto locTypeDto = new LocTypeDto();
+            locTypeDto.setLocType1((short) 1);
+            StartupDto dto = commonService.getLocNo(53, param.getSourceStaNo(), locTypeDto, 0);
+            // 鏂板簱浣�
+            LocMast staLocMast = locMastService.selectById(dto.getLocNo());
+
+            // 鏇存柊鏃у簱浣嶇姸鎬� O
+            locMast.setLocSts("O");
+            locMast.setBarcode("");
+            locMast.setModiTime(new Date());
+            locMastService.updateById(locMast);
+
+            // 鎶婃棫搴撲綅鏄庣粏杞埌鏂板簱浣�
+            locDetlService.updateLocNo(staLocMast.getLocNo(), wrkMast.getSourceLocNo());
+
+            // 鏇存柊鏂板簱浣嶇姸鎬� Q
+            staLocMast.setLocSts("Q");
+            staLocMast.setBarcode(wrkMast.getBarcode());
+            staLocMast.setModiTime(new Date());
+            locMastService.updateById(staLocMast);
+
+            // 鏇存柊宸ヤ綔宸ヤ綔涓绘。
+            wrkMast.setIoType(53);
+            wrkMast.setWrkSts(52L); // 宸ヤ綔鐘舵��42->52.璁惧涓婅蛋锛堟媶鍨涘畬鎴愶級
+            // 鐩爣绔欑偣婧愮珯鐐硅浆鎹�
+            wrkMast.setStaNo(dto.getStaNo());
+            wrkMast.setSourceStaNo(dto.getSourceStaNo());
+            wrkMast.setCrnNo(dto.getCrnNo());
+            // 鐩爣搴撲綅=婧愬簱浣�
+            wrkMast.setLocNo(dto.getLocNo());
+            // 婧愬簱浣嶆竻闄�
+            wrkMast.setSourceLocNo("");
+            wrkMast.setModiTime(new Date());
+
+        } else {
+            // 鏇存柊宸ヤ綔宸ヤ綔涓绘。
+            wrkMast.setIoType(53);
+            wrkMast.setWrkSts(52L); // 宸ヤ綔鐘舵��42->52.璁惧涓婅蛋锛堟媶鍨涘畬鎴愶級
+            wrkMast.setSourceStaNo(param.getSourceStaNo());
+            wrkMast.setStaNo(oneFloorIn[wrkMast.getCrnNo()]);
+            // 鐩爣搴撲綅=婧愬簱浣�
+            wrkMast.setLocNo(wrkMast.getSourceLocNo());
+            // 婧愬簱浣嶆竻闄�
+            wrkMast.setSourceLocNo("");
+            wrkMast.setModiTime(new Date());
+        }
 
         // 鏇存柊宸ヤ綔涓绘。
         wrkMastService.updateById(wrkMast);
-        // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
-        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
-        locMast.setLocSts("Q");
-        locMast.setModiTime(new Date());
-        if (!locMastService.updateById(locMast)) {
-            throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
-        }
+
+        // 鍥炲簱
+        ZphjcdwcVo zphjcdwcVo1 = new ZphjcdwcVo();
+        zphjcdwcVo1.setWorkNo(wrkMast.getWrkNo());
+        zphjcdwcVo1.setStaNo(wrkMast.getStaNo());
+        zphjcdwcVo1.setSourceStaNo(wrkMast.getSourceStaNo());
+        zphjcdwcVo1.setBarcode(wrkMast.getBarcode());
+        zphjcdwcVos.add(0,zphjcdwcVo1);
 
         // 涓嬪彂鍥炲簱鐨勭洰鏍囩珯鐐瑰拰鎷嗗灈鐨勫嚭搴撶洰鏍囩珯鐐圭粰gwcs
         return R.ok(zphjcdwcVos);
     }
 
     @Override
+    public R kxlhCdwc(KxlhcdwcParam param) {
+
+        if (Cools.isEmpty(param.getWorkNo(),param.getSourceStaNo(),param.getSite())) {
+            return R.parse("鍙傛暟涓嶈兘涓虹┖锛岃妫�鏌ュ叆鍙�");
+        }
+        WrkMast wrkMast = wrkMastService.selectById(param.getWorkNo());
+        if (wrkMast == null) {
+            throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�");
+        }
+        if (wrkMast.getWrkSts() != 42 || wrkMast.getIoType() != 109) {
+            throw new CoolException("宸ヤ綔妗e綋鍓嶇姸鎬佷笉涓�42/鍑哄簱绫诲瀷涓嶄负绌洪棽鐞嗚揣锛�");
+        }
+
+        Date now = new Date();
+
+        // 鑾峰彇鍑哄簱鐗╂枡
+        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+
+        // 鑾峰彇搴撳瓨鐗╂枡
+        List<LocDetl> locDetls = locDetlMapper.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
+
+        // 婧愬簱浣�
+        LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+
+        List<ZphjcdwcVo> zphjcdwcVos = new ArrayList<>();
+
+        if (wrkDetls.size() == locDetls.size()) { // 涓嶉渶瑕佸洖搴擄紝鎷嗗畬鍚庡墿绌烘墭鐩樺幓鍙犵洏鏈�
+
+            // 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
+            locDetlMapper.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
+
+            // 淇敼婧愬簱浣嶇姸鎬�
+            if (locMast.getLocSts().equals("R")) {
+                locMast.setLocSts("O");
+                locMast.setBarcode("");
+                locMast.setSheetNo("0");
+                locMast.setModiTime(now);
+                locMast.setIoTime(now);
+                locMastService.updateById(locMast);
+            }
+
+            // 淇敼宸ヤ綔涓绘。鐘舵��
+            wrkMast.setWrkSts(15L);
+            wrkMast.setModiTime(now);
+            wrkMastService.updateById(wrkMast);
+
+            // 涓嬪彂鍘诲彔鐩樹綅缃�
+            ZphjcdwcVo zphjcdwcVo = new ZphjcdwcVo();
+            zphjcdwcVo.setWorkNo(wrkMast.getWrkNo());
+            zphjcdwcVo.setStaNo(3013);
+            zphjcdwcVo.setSourceStaNo(param.getSourceStaNo());
+            zphjcdwcVo.setBarcode(wrkMast.getBarcode());
+            zphjcdwcVos.add(zphjcdwcVo);
+
+        } else { // 鎷嗗畬鍚庤繕鏈夌墿鏂欙紝闇�瑕佸洖搴�
+
+            // 鍏堝垹闄ゅ簱瀛樻槑缁嗭紝閬垮厤杩樻湭鍥炲簱浣嗙粍鐩樼殑鍏堝叆搴撲簡
+            for (WrkDetl wrkDetl : wrkDetls) {
+                locDetlMapper.delete(new EntityWrapper<LocDetl>().eq("brand",wrkDetl.getBrand()));
+            }
+
+            // 淇敼宸ヤ綔涓绘。
+            wrkMast.setWrkSts(52L);
+            wrkMast.setIoType(59);
+            wrkMast.setSourceStaNo(wrkMast.getStaNo());
+            wrkMast.setStaNo(oneFloorIn[wrkMast.getCrnNo()]);
+            wrkMast.setLocNo(wrkMast.getSourceLocNo());
+            wrkMast.setSourceLocNo("");
+            wrkMast.setModiTime(now);
+            wrkMastService.updateById(wrkMast);
+
+            // 淇敼婧愬簱浣嶇姸鎬�
+            if (locMast.getLocSts().equals("R")) {
+                locMast.setLocSts("S");
+                locMast.setModiTime(now);
+                locMastService.updateById(locMast);
+            }
+
+            // 涓嬪彂鍥炲簱鍛戒护
+            ZphjcdwcVo zphjcdwcVo = new ZphjcdwcVo();
+            zphjcdwcVo.setWorkNo(wrkMast.getWrkNo());
+            zphjcdwcVo.setStaNo(oneFloorIn[wrkMast.getCrnNo()]);
+            zphjcdwcVo.setSourceStaNo(param.getSourceStaNo());
+            zphjcdwcVo.setBarcode(wrkMast.getBarcode());
+            zphjcdwcVos.add(zphjcdwcVo);
+        }
+
+        // 缁勭洏鐐�
+        Integer site = param.getSite();
+
+        // 鍒ゆ柇缁勭洏鏄惁瀹屾垚锛氫袱涓埌鎹㈢洏绔欑偣鐨勪换鍔℃槸鍚﹀畬鎴�
+        Wrapper<WrkMast> wrapper = new EntityWrapper<WrkMast>().eq("io_type", 109).ne("wrk_sts",15);
+        if (site == 3046) {
+            wrapper.in("sta_no",3045,3044);
+        } else {
+            wrapper.in("sta_no",3041,3040);
+        }
+        int count = wrkMastService.selectCount(wrapper);
+
+        // 宸茬粡瀹屾垚鍒欎笅鍙戠粍鐩樼偣鍏ュ簱鍛戒护
+        if (count == 0) {
+            // 鑾峰彇鍒扮粍鐩樼偣鍏ュ簱浠诲姟
+            WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_sts", 1).eq("io_type", 1).eq("source_sta_no", site));
+            ZphjcdwcVo zphjcdwcVo = new ZphjcdwcVo();
+            zphjcdwcVo.setWorkNo(wrkMast1.getWrkNo());
+            zphjcdwcVo.setStaNo(wrkMast1.getStaNo());
+            zphjcdwcVo.setSourceStaNo(site);
+            zphjcdwcVo.setBarcode(site == 3046 ? "T1046" : "T1042");
+            zphjcdwcVos.add(zphjcdwcVo);
+        }
+
+        return R.ok(zphjcdwcVos);
+    }
+
+    @Override
     public R requestXhd(String barcode) {
 
+        // 娌℃湁浠诲姟鎴栬�呬笉鏄洏鐐逛换鍔$殑鎵樼洏缁忚繃鍒欒繑鍥�-1锛屽拷鐣�
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode));
+        if (wrkMast == null || wrkMast.getIoType() != 107) {
+            return R.ok(-1);
+        }
+
         // 搴撳瓨鏄庣粏鏈ㄧ浣嶇疆闆嗗悎
         List<LocDetl> locDetls = locDetlMapper.selectList(new EntityWrapper<LocDetl>().eq("zpallet", barcode));
         List<String> collect1 = locDetls.stream().map(LocDetl::getOrigin).distinct().collect(Collectors.toList());
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 eeffb60..0fbf000 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -854,12 +854,6 @@
         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();
         // 鑾峰彇宸ヤ綔鍙�
@@ -1180,6 +1174,12 @@
             }
         }
 
+//        // 鍙栨秷绌洪棽鐞嗚揣浠诲姟鏃讹紝鍥炴粴鎴愭湭鐞嗚揣
+//        if (wrkMast.getIoType() == 109) {
+//            // 鏇存柊搴撳瓨鏄庣粏涓虹悊璐т腑
+//            locDetlMapper.updateLhStsByLocNo(wrkMast.getSourceLocNo(),0);
+//        }
+
         //鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺
         if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107) {
             List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
diff --git a/src/main/java/com/zy/asrs/task/GhjtScheduler.java b/src/main/java/com/zy/asrs/task/GhjtScheduler.java
index 075bbe7..1f4d0a5 100644
--- a/src/main/java/com/zy/asrs/task/GhjtScheduler.java
+++ b/src/main/java/com/zy/asrs/task/GhjtScheduler.java
@@ -44,7 +44,7 @@
     // 瀹氭椂浠诲姟鑾峰彇寰呭璐ц鍗曟槑缁�->鑾峰彇鍫嗗灈鏈哄搴旂殑婧愬簱浣嶏紝鑾峰彇澶囪揣鍖哄簱浣�->鐢熸垚绉诲簱浠诲姟11->
     // 鎵ц绉诲簱浠诲姟12->鍏ュ簱瀹屾垚4->鏇存柊宸ヤ綔妗e畾鏃朵换鍔′腑鏇存柊璁㈠崟澶囪揣鐘舵�佸拰璁㈠崟鏄庣粏澶囪揣鐘舵��5->杞偍鍘嗗彶
     @Scheduled(cron = "0/10 * * * * ?")
-    public synchronized void autoStockUp() {
+    public void autoStockUp() {
         // 鏌ヨ鑷姩澶囪揣閰嶇疆
         Config config = configMapper.selectConfigByCode("auto_stock_up");
         if (config == null || config.getStatus() == 0) {
@@ -64,7 +64,7 @@
     @Scheduled(cron = "0/2 * * * * ? ")
     public void ckrwPushGwcs() {
         // 鏌ヨ鐘舵�佷负13鐨勫伐浣滄。
-        List<WrkMast> wrkMasts = wrkMastMapper.selectList(new EntityWrapper<WrkMast>().in("io_type", 101,103,107,110,3,12).eq("wrk_sts", 13));
+        List<WrkMast> wrkMasts = wrkMastMapper.selectList(new EntityWrapper<WrkMast>().in("io_type", 101,103,107,110,3,12,109).eq("wrk_sts", 13));
         for (WrkMast wrkMast : wrkMasts) {
             try {
                 ghjtHandler.startCkrwPushGwcs(wrkMast);
@@ -79,7 +79,7 @@
     // wcs鍑哄簱鍒板爢鍨涙満鍑哄簱鍙�->gwms缁檊wcs鎺ㄩ�佺洰鏍囩珯1->gwcs鍒拌揪鍫嗗灈鏈哄叆搴撳彛璇锋眰鍏ュ簱->鍫嗗灈鏈烘墽琛屽叆搴�->鍏ュ簱瀹屾垚->鏇存柊鍗曟嵁鐘舵��
     // 11->12->13->1->2->3->4->5
     @Scheduled(cron = "0/10 * * * * ?")
-    public synchronized void autoMoveLoc() {
+    public void autoMoveLoc() {
         // 鏌ヨ璺ㄥ贩閬撶Щ搴撻厤缃�
         Config config = configMapper.selectConfigByCode("auto_move_loc");
         if (config == null || config.getStatus() == 0) {
@@ -95,21 +95,41 @@
     }
 
     // 绌洪棽鐞嗚揣
-    @Scheduled(cron = "0/5 * * * * ? ")
+    // 閰嶇疆寮�鍚�->鏌ヨ鍙敤妗佹灦->鑾峰彇鍒拌兘鐞嗚揣鐨勪袱涓湪绠�->鐢熸垚涓や釜鏈ㄧ鐨勭悊璐т换鍔″拰缁勭洏鐐圭殑鍏ュ簱浠诲姟
+    // wcs鍑哄簱鍒板爢鍨涙満鍑哄簱鍙�->鎺ㄩ�佺粰gwms鍘绘鏋跺懡浠�->鍒拌揪鐞嗚揣妗佹灦璇锋眰zms鎷嗗灈瑙勫垯->杩斿洖鎷嗗灈瑙勫垯gwcs鎵ц鎷嗗灈->鎷嗗灈瀹屾垚璇锋眰zwms->杩斿洖鍘诲彔鐩�/鍥炲簱/缁勭洏鐐瑰叆搴撳懡浠�->gwcs鍒拌揪鍏ュ簱鍙h姹傚叆搴�->鍫嗗灈鏈烘墽琛屽叆搴�
+    // 11->12->13->2->42->52->2->3->4->5 // 鍥炲簱
+    //                  ->15 // 鍘诲彔鐩�
+    //                  ->1->2->3->4->5 // 缁勭洏鐐瑰叆搴�
+    @Scheduled(cron = "0/10 * * * * ? ")
     public void autoTallyGoods() {
+
         // 绯荤粺閰嶇疆鐣岄潰鍚敤
         Config config = configMapper.selectConfigByCode("auto_tally_goods");
         if (config == null || config.getStatus() == 0) {
             return;
         }
-        // 鍥涗釜鎹㈢洏鐐癸紝涓や釜缁勭洏鐐�
-        // 鍏堟煡浠诲姟鐩爣绔欎负 3045/3044鍜�3041/3040鐨勬崲鐩樼粍 濡傛灉鏈変负绌虹殑缁勫垯鍙互鍑猴紝鏈変竴涓垨涓や釜閮戒笉鑳藉嚭
-        // todo 闇�鏂板涓や釜鍏ュ簱璺緞 3046/3042
-        // 瀵绘壘涓や釜鑳界粍鐩樼殑搴撲綅锛屽簱浣嶇姸鎬佷负F锛屾弧瓒崇粍鐩樻潯浠�
-        // 鍑哄簱鎬庝箞鍑猴紝鎵嶈兘鎶婄粍濂界殑鐩樹竴娆″嚭鍑哄幓
-        // gwcs鎬庝箞淇濊瘉涓や釜閮芥媶瀹屼簡鎵嶈姹傜粍鐩樺畬鎴�
 
+        // 鏍囪鍝竴濂楁鏋惰兘鐢�
+        int flag = 0;
 
+        // 鍒嗗埆鏌ヨ涓ゅ妗佹灦鏄惁瀛樺湪浠诲姟
+        Integer count = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("source_sta_no", 3046).or().in("sta_no", 3045, 3044));
+        if (count == 0) {
+            flag = 1;
+        } else {
+            count = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().in("source_sta_no", 3042).or().in("sta_no", 3041, 3040));
+            if (count == 0) {
+                flag = 2;
+            }
+        }
+
+        // 娌℃湁鎵惧埌鍙敤妗佹灦锛屾鏋堕兘閮藉瓨鍦ㄤ换鍔�
+        if (flag == 0) {
+            return;
+        }
+
+        // 鎸囧畾妗佹灦鐢熸垚鐞嗚揣浠诲姟
+        ghjtHandler.autoTallyGoods(flag);
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
index 3d61ebe..f624dc9 100644
--- a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
@@ -11,7 +11,9 @@
 import com.zy.asrs.service.WrkDetlService;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.constant.MesConstant;
+import com.zy.common.model.StartupDto;
 import com.zy.common.properties.SlaveProperties;
+import com.zy.common.service.CommonService;
 import com.zy.common.utils.HttpHandler;
 import com.zy.system.entity.Config;
 import com.zy.system.mapper.ConfigMapper;
@@ -31,6 +33,7 @@
  */
 @Slf4j
 @Service
+@Transactional
 public class GhjtHandler {
 
     @Resource
@@ -63,7 +66,12 @@
     @Autowired
     private SlaveProperties slaveProperties;
 
-    @Transactional
+    @Resource
+    private CommonService commonService;
+
+    // 鍫嗗灈鏈哄搴斾竴妤煎嚭搴撶珯鐐�
+    private static final int[] oneFloorOutSite = new int[]{0,3002,3003,3006,3008,3009,3012};
+
     public void startCkrwPushGwcs(WrkMast wrkMast) {
 
         // 鑾峰彇璇锋眰澶�
@@ -166,11 +174,6 @@
         } else if (wrkMast.getIoType() == 103 && (wrkMast.getStaNo() == 3077 || wrkMast.getStaNo() == 3106)) { // 涓ょ鍑轰竴绠憋紝闇�妗佹灦鐞嗚揣
             // 閮借鍏堝幓鐞嗚揣
             flag = 2;
-//            if (wrkDetls.size() == 1) { // 涓�鍗疯创鏍囧嚭搴�
-//                flag = 4;
-//            } else { // 澶氬嵎鐩存帴鍑哄簱
-//
-//            }
         }
         return flag;
     }
@@ -178,7 +181,6 @@
     /**
      * 鑷姩澶囪揣澶勭悊
      */
-    @Transactional
     public void autoStockUpHandler(List<String> list,int columnNum) {
 
         // 鏍规嵁鍖呰缁勫彿鑾峰彇鎵�鍦ㄥ簱浣�
@@ -269,7 +271,6 @@
 
     }
 
-    @Transactional
     public void autoMoveLoc(List<OrderDetl> orderDetlList) {
 
         // 鍒ゆ柇鏄惁宸茬粡鏈夋墽琛岀殑绉诲簱浠诲姟
@@ -373,4 +374,180 @@
         orderMapper.updatePendingSettleByOrderNo(detl.getOrderNo(),2L);
     }
 
+    /**
+     * 缁欐寚瀹氭鏋剁敓鎴愮悊璐т换鍔�,鎸夎鍒欏鎵惧埌鑳界悊璐х殑涓や釜搴撲綅
+     * 1.鑳界悊璐х殑閮芥槸涓�绠变竴鍗风殑
+     * 2.瑙勫垯锛氭湪绠卞瀷鍙风浉鍚�-绠¤姱绫诲瀷鐩稿悓-瀹炴祴瀹藉箙鐩稿悓-鐢熺當鍘氬害鐩稿悓-鍒嗗垏涓嬫枡鏃堕棿鐩歌繎
+     */
+    public void autoTallyGoods(int flag) {
+
+        // 鑾峰彇澶囪揣鍖洪厤缃�
+        Config config = configMapper.selectConfigByCode("auto_stock_up");
+        if (config == null) {
+            throw new CoolException("鐞嗚揣鑾峰彇澶囪揣鍖洪厤缃敊璇紒锛侊紒");
+        }
+        // 鍓嶅嚑鍒楁槸澶囪揣鍖�
+        int columnNum = Integer.parseInt(config.getValue());
+
+        // 瀵绘壘涓�绠变竴鍗风殑锛屾病鏈夌悊璐х殑锛屼笉鍦ㄥ璐у尯鐨勭墿鏂欐槑缁�
+        List<LocDetl> tallyGoosList = locDetlMapper.selectTallyGoosList(columnNum);
+
+        // 瀵绘壘婊¤冻鐞嗚揣鏉′欢鐨勪袱涓湪绠�
+        LocDetl leftLocDetl = null;
+        LocDetl rightLocDetl = null;
+        for (int i = 0; i < tallyGoosList.size(); i++) {
+            leftLocDetl = tallyGoosList.get(i);
+            for (int j = i + 1; j < tallyGoosList.size(); j++) {
+                LocDetl tempLocDetl = tallyGoosList.get(j);
+                if (leftLocDetl.getColor().equals(tempLocDetl.getColor()) && leftLocDetl.getManu().equals(tempLocDetl.getManu()) &&
+                        leftLocDetl.getSku().equals(tempLocDetl.getSku()) && leftLocDetl.getItemNum().equals(tempLocDetl.getItemNum())) {
+                    rightLocDetl = tempLocDetl;
+                    break;
+                }
+            }
+            if (rightLocDetl != null) {
+                break;
+            }
+        }
+
+        if (leftLocDetl == null || rightLocDetl == null) {
+//            log.warn("娌℃湁鎵惧埌涓や釜鑳界悊璐х殑鏈ㄧ");
+            return;
+        }
+
+        // 鎵惧埌鐨勪袱涓湪绠卞垰濂藉湪涓�涓墭鐩樹笂锛岀洿鎺ユ洿鏀圭悊璐х姸鎬佷负2
+        if (leftLocDetl.getLocNo().equals(rightLocDetl.getLocNo())) {
+            locDetlMapper.updateLhStsByLocNo(leftLocDetl.getLocNo(), 2);
+        } else {
+
+            // 鍒ゆ柇鏄幓鍝妗佹灦鐨勫摢涓珯鐐� t0缁勭洏鐐�,t1宸︽崲鐩樼偣,t2鍙虫崲鐩樼偣
+            int t0 = 3046, t1 = 3045, t2 = 3044;
+            if (flag == 2) {
+                t0 = 3042;
+                t1 = 3041;
+                t2 = 3040;
+            }
+
+            // 鐢熸垚绌洪棽鐞嗚揣浠诲姟
+            WrkDetl wrkDetl1 = tallyGoodsGenerate(t1, leftLocDetl);
+            WrkDetl wrkDetl2 = tallyGoodsGenerate(t2, rightLocDetl);
+
+            Date now = new Date();
+
+            // 瀵绘壘涓�涓┖搴撲綅
+            StartupDto dto = commonService.getLocNo(1, t0, null, 0);
+            // 鐢熸垚缁勭洏鍏ュ簱浠诲姟
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(dto.getWorkNo());
+            wrkMast.setIoTime(now);
+            wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵��
+            wrkMast.setIoType(1); // 鍏ュ嚭搴撶被鍨�
+            wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+            wrkMast.setCrnNo(dto.getCrnNo());
+            wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯
+            wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔�
+            wrkMast.setSourceLocNo(""); // 婧愬簱浣�
+            wrkMast.setLocNo(dto.getLocNo());
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("N");
+            wrkMast.setBarcode(""); // zwcs鎵ц鍏ュ簱鏃舵洿鏂版墭鐩樼爜
+            wrkMast.setAppeUser(29L); // 鎿嶄綔浜哄憳 root
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiUser(29L);
+            wrkMast.setModiTime(now);
+            if (wrkMastMapper.insert(wrkMast) != 1) {
+                throw new CoolException("绌洪棽鐞嗚揣缁勭洏淇濆瓨宸ヤ綔妗eけ璐ワ紝璇︽儏锛�" + wrkMast);
+            }
+
+            // 鐢熸垚宸ヤ綔鏄庣粏
+            wrkDetl1.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl1.setOrigin("宸�"); // 鍥哄畾鎷嗗埌宸﹁竟
+            wrkDetl1.setDeadWarn(2); // 宸茬悊璐ф爣璇�
+            wrkDetl2.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl2.setOrigin("鍙�");
+            wrkDetl2.setDeadWarn(2);
+            wrkDetlService.insert(wrkDetl1); // 鍏ュ簱瀹屾垚鏃舵洿鏂版墭鐩樼爜
+            wrkDetlService.insert(wrkDetl2);
+
+            // 鏇存柊鐩爣搴撲綅鐘舵��
+            LocMast locMast = locMastMapper.selectById(dto.getLocNo());
+            locMast.setLocSts("S");
+            locMastMapper.updateById(locMast); // 鍏ュ簱瀹屾垚鏃舵洿鏂版墭鐩樼爜
+        }
+    }
+
+    /**
+     * 鐢熸垚绌洪棽鐞嗚揣鍒版崲鐩樻鏋剁殑浠诲姟
+     *
+     * @param site    鎹㈢洏鐐�
+     * @param locDetl 搴撳瓨鏄庣粏
+     */
+    private WrkDetl tallyGoodsGenerate(int site, LocDetl locDetl) {
+
+        // 鍒ゆ柇搴撲綅鐘舵��
+        LocMast locMast = locMastMapper.selectById(locDetl.getLocNo());
+        if (!locMast.getLocSts().equals("F")) {
+            throw new CoolException("鐞嗚揣搴撲綅鐘舵�佹湁璇紝涓嶄负F锛屽簱浣嶅彿锛�" + locMast.getLocNo());
+        }
+
+        Date now = new Date();
+
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        // 鑾峰彇宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(5);
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+        wrkMast.setIoType(109); // 鍏ュ嚭搴撶姸鎬� 109.绌洪棽鐞嗚揣
+        wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+        wrkMast.setCrnNo(locMast.getCrnNo());
+        wrkMast.setSourceStaNo(oneFloorOutSite[locMast.getCrnNo()]); // 婧愮珯
+        wrkMast.setStaNo(site); // 鐩爣绔�
+        wrkMast.setSourceLocNo(locDetl.getLocNo()); // 婧愬簱浣�
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("N"); // 绌烘澘
+        wrkMast.setLinkMis("N");
+        wrkMast.setSheetNo("0");
+        wrkMast.setBarcode(locDetl.getZpallet());
+        wrkMast.setAppeUser(29L); // 鎿嶄綔浜哄憳 root
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(29L);
+        wrkMast.setModiTime(now);
+        if (wrkMastMapper.insert(wrkMast) != 1) {
+            throw new CoolException("绌洪棽鐞嗚揣淇濆瓨宸ヤ綔妗eけ璐ワ紝璇︽儏锛�" + wrkMast);
+        }
+
+        // 鐢熸垚宸ヤ綔鏄庣粏
+        WrkDetl wrkDetl = new WrkDetl();
+        wrkDetl.sync(locDetl);
+        wrkDetl.setWrkNo(workNo);
+        wrkDetl.setIoTime(now);
+        wrkDetl.setAppeTime(now);
+        wrkDetl.setAppeUser(29L);
+        wrkDetl.setModiTime(now);
+        wrkDetl.setModiUser(29L);
+        if (!wrkDetlService.insert(wrkDetl)) {
+            throw new CoolException("绌洪棽鐞嗚揣淇濆瓨宸ヤ綔妗f槑缁嗗け璐�,璇︽儏锛�" + wrkDetl);
+        }
+
+        // 淇敼鍑哄簱鐘舵��
+        locMast.setLocSts("R");
+        locMast.setModiUser(29L);
+        locMast.setModiTime(now);
+        if (locMastMapper.updateById(locMast) != 1) {
+            throw new CoolException("绌洪棽鐞嗚揣棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + locMast.getLocNo());
+        }
+
+        // 鏇存柊搴撳瓨鏄庣粏涓虹悊璐т腑
+        locDetlMapper.updateLhStsByLocNo(locDetl.getLocNo(), 1);
+
+        return wrkDetl;
+    }
+
 }
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 a0fcb1b..ec618ba 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.mapper.LocDetlMapper;
 import com.zy.asrs.mapper.OrderDetlMapper;
 import com.zy.asrs.mapper.OrderMapper;
 import com.zy.asrs.service.*;
@@ -42,6 +43,9 @@
     private OrderDetlService orderDetlService;
     @Resource
     private OrderDetlMapper orderDetlMapper;
+
+    @Resource
+    private LocDetlMapper locDetlMapper;
 
     @Resource
     private OrderMapper orderMapper;
@@ -113,7 +117,8 @@
                             locDetl.sync(wrkDetl);
                             locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
                             locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
-                            locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
+                            locDetl.setZpallet(wrkMast.getBarcode()); // 鎵樼洏鏉$爜
+                            locDetl.setBarcode(wrkMast.getBarcode());
                             locDetl.setModiTime(now);
                             locDetl.setAppeTime(now);
                             locDetl.setBatch("");
@@ -199,6 +204,10 @@
 //                        } catch (Exception ignore){}
 
                     }
+
+                    // 淇敼鎹℃枡鍏ュ簱鐨勫簱瀛樻槑缁嗙殑鐞嗚揣鐘舵�佷负寰呯悊璐�
+                    locDetlMapper.updateLhStsByLocNo(wrkMast.getLocNo(),1);
+
                     // 淇敼搴撲綅鐘舵�� Q ====>> F
                     if (locMast.getLocSts().equals("Q")) {
                         locMast.setLocSts("F");
@@ -453,6 +462,19 @@
                         return FAIL.setMsg("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                     }
                     break;
+                // 绌洪棽鐞嗚揣鍏ュ簱
+                case 59:
+
+                    // 淇敼搴撲綅鐘舵�� S ====>> F
+                    if (locMast.getLocSts().equals("S")) {
+                        locMast.setLocSts("F");
+                        locMast.setModiTime(now);
+                        locMastService.updateById(locMast);
+                    }
+
+                    // 淇敼绌洪棽鐞嗚揣鍏ュ簱鐨勫簱瀛樻槑缁嗙殑鐞嗚揣鐘舵�佷负寰呯悊璐�
+                    locDetlMapper.updateLhStsByLocNo(wrkMast.getLocNo(),0);
+                    break;
                 default:
                     break;
             }
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index ef44e99..e4e21c2 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -394,6 +394,32 @@
             #{item}
         </foreach>
     </select>
+    <select id="selectTallyGoosList" resultMap="BaseResultMap">
+        select
+            a.*
+        from
+            asr_loc_detl a
+        where
+                a.loc_no in(
+                select
+                    DISTINCT ald.loc_no
+                from
+                    asr_loc_mast alm
+                        inner join asr_loc_detl ald on
+                        alm.loc_no = ald.loc_no
+                where
+                    alm.loc_sts = 'F'
+                  and alm.bay1 > #{columnNum}
+                  and ald.dead_warn = 0
+                group by
+                    ald.loc_no ,
+                    ald.brand
+                HAVING
+                    count(ald.model) = 1
+            )
+        order by
+            a.manu_date asc
+    </select>
 
     <update id="updateMatTurn">
         UPDATE a
@@ -404,6 +430,9 @@
         FROM asr_loc_detl a
         INNER JOIN man_mat b ON a.matnr=#{matnrOld} AND b.matnr=#{matnr};
     </update>
+    <update id="updateLhStsByLocNo">
+        update asr_loc_detl set dead_warn = #{status},modi_time = getdate() where loc_no = #{locNo}
+    </update>
 
 
 </mapper>

--
Gitblit v1.9.1