From 6c8588d5f7f0de7e9489426c350472bf911a4933 Mon Sep 17 00:00:00 2001
From: dubin <bindu_bean@163.com>
Date: 星期五, 05 十二月 2025 15:47:07 +0800
Subject: [PATCH] towcs

---
 src/main/java/com/zy/asrs/mapper/LocDetlMapper.java            |    2 
 src/main/java/com/zy/asrs/task/handler/CreateOutTask.java      |  199 +++++++++++++++
 src/main/java/com/zy/asrs/task/GetEquipmentStatus.java         |    2 
 src/main/resources/mapper/LocDetlMapper.xml                    |   13 +
 src/main/resources/mapper/LocMastMapper.xml                    |   11 
 src/main/java/com/zy/common/web/WcsController.java             |  158 +++++++++++
 src/main/java/com/zy/common/model/StartupDto.java              |    4 
 src/main/java/com/zy/common/model/WmsDevDto.java               |   10 
 src/main/java/com/zy/asrs/utils/Utils.java                     |   35 ++
 src/main/java/com/zy/asrs/task/OutWorkScheduler.java           |    2 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java    |    4 
 src/main/java/com/zy/asrs/mapper/LocMastMapper.java            |    2 
 src/main/java/com/zy/common/service/CommonService.java         |  166 ++++++++++++
 src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java |    5 
 src/main/java/com/zy/asrs/service/LocDetlService.java          |    5 
 src/main/resources/mapper/WrkMastMapper.xml                    |    4 
 src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java |    5 
 src/main/java/com/zy/common/CodeBuilder.java                   |   13 +
 src/main/java/com/zy/asrs/service/WrkMastService.java          |    2 
 src/main/java/com/zy/common/web/param/SearchLocParam.java      |    7 
 src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java |    5 
 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java            |    2 
 src/main/java/com/zy/common/web/param/NotifyDto.java           |   42 +++
 src/main/java/com/zy/asrs/service/LocMastService.java          |    2 
 src/main/resources/application.yml                             |   35 +-
 25 files changed, 701 insertions(+), 34 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
index c70a85d..4be6f49 100644
--- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -39,6 +39,8 @@
 
     List<String> getSameDetlList(@Param("matnr") String matnr);
 
+    List<String> getSameDetlListToWmsDev(@Param("matnr") String matnr,@Param("rows") int[] rows);
+
     List<LocDetl> getStockStatis(Map<String, Object> map);
 
     Integer getStockStatisCount(Map<String, Object> map);
diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index 9161a21..546d41a 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -17,4 +17,6 @@
     List<String> queryGroupEmptyStock(Integer lev);
 
     List<Integer> getLevList();
+
+    List<LocMast> selectLoc(@Param("rows") int[] rows);
 }
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index dd349bd..0b8fb52 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 import com.zy.asrs.entity.WrkMast;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -16,4 +17,5 @@
 
     List<WrkMast> selectToBeHistoryData();
 
+    WrkMast selectByTaskNo(@Param("taskNo") String taskNo);
 }
diff --git a/src/main/java/com/zy/asrs/service/LocDetlService.java b/src/main/java/com/zy/asrs/service/LocDetlService.java
index fa7f683..aca3ff0 100644
--- a/src/main/java/com/zy/asrs/service/LocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -37,6 +37,11 @@
      */
     List<String> getSameDetlList(String matnr);
 
+    /**
+     * 鑾峰彇鐩稿悓瑙勬牸璐х墿
+     */
+    List<String> getSameDetlListToWmsDev(String matnr,int[] rows);
+
     Page<LocDetl> getStockStatis(Page<LocDetl> page);
 
     Double getSumAnfme(String matnr);
diff --git a/src/main/java/com/zy/asrs/service/LocMastService.java b/src/main/java/com/zy/asrs/service/LocMastService.java
index d4c0da6..2b1e231 100644
--- a/src/main/java/com/zy/asrs/service/LocMastService.java
+++ b/src/main/java/com/zy/asrs/service/LocMastService.java
@@ -16,4 +16,6 @@
     List<String> queryGroupEmptyStock(String sourceLocNo);
 
     List<Integer> getLevList();
+
+    List<LocMast> selectLoc(int[] rows);
 }
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index ff9c2ba..22394c6 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -21,4 +21,6 @@
      * @return
      */
     int getStoreCount(Integer crnNo);
+
+    WrkMast selectByTaskNo(String taskNo);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
index dbd1958..e2ae7fd 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -55,6 +55,11 @@
     }
 
     @Override
+    public List<String> getSameDetlListToWmsDev(String matnr,int[] rows) {
+        return this.baseMapper.getSameDetlListToWmsDev(matnr,rows);
+    }
+
+    @Override
     public Page<LocDetl> getStockStatis(Page<LocDetl> page) {
         page.setRecords(baseMapper.getStockStatis(page.getCondition()));
         page.setTotal(baseMapper.getStockStatisCount(page.getCondition()));
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 687e73d..000b65d 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -31,4 +31,9 @@
     public List<Integer> getLevList() {
         return this.baseMapper.getLevList();
     }
+
+    @Override
+    public List<LocMast> selectLoc(int[] rows) {
+        return this.baseMapper.selectLoc(rows);
+    }
 }
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 48d5316..fef94e6 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -98,7 +98,7 @@
 
         StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, findLocNoAttributeVo, locTypeDto, param.getBarcode());
         // 鐢熸垚宸ヤ綔鍙�
-        int workNo = dto.getWorkNo();
+        int workNo = dto.getTaskNo();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
@@ -385,7 +385,7 @@
         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
 
         StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, findLocNoAttributeVo, locTypeDto, "");
-        int workNo = dto.getWorkNo();
+        int workNo = dto.getTaskNo();
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
index ab394ec..7ae4421 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -45,4 +45,9 @@
                 .last(" and (wrk_sts in (1,2) or (wrk_sts=3 and wrk_no in (select wrk_no from asr_bas_devp)))"));
     }
 
+    @Override
+    public WrkMast selectByTaskNo(String taskNo) {
+        return this.baseMapper.selectByTaskNo(taskNo);
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/task/GetEquipmentStatus.java b/src/main/java/com/zy/asrs/task/GetEquipmentStatus.java
index a1164aa..1de78fd 100644
--- a/src/main/java/com/zy/asrs/task/GetEquipmentStatus.java
+++ b/src/main/java/com/zy/asrs/task/GetEquipmentStatus.java
@@ -37,7 +37,7 @@
     @Autowired
     private BasDevpService basDevpService;
 
-    @Scheduled(cron = "0/3 * * * * ? ")
+//    @Scheduled(cron = "0/3 * * * * ? ")
     private void execute() {
         //鑾峰彇璁惧淇℃伅
         String response ="";
diff --git a/src/main/java/com/zy/asrs/task/OutWorkScheduler.java b/src/main/java/com/zy/asrs/task/OutWorkScheduler.java
index 1bb688d..c27ce48 100644
--- a/src/main/java/com/zy/asrs/task/OutWorkScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OutWorkScheduler.java
@@ -26,7 +26,7 @@
     /**
      * 鍑哄簱浠诲姟涓嬪彂
      */
-    @Scheduled(cron = "0/3 * * * * ? ")
+//    @Scheduled(cron = "0/3 * * * * ? ")
     private void execute() {
         List<WrkMast> wrkMasts=wrkMastService.selectList(new EntityWrapper<WrkMast>()
                 .eq("wrk_sts",11)
diff --git a/src/main/java/com/zy/asrs/task/handler/CreateOutTask.java b/src/main/java/com/zy/asrs/task/handler/CreateOutTask.java
new file mode 100644
index 0000000..7f91a68
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/CreateOutTask.java
@@ -0,0 +1,199 @@
+package com.zy.asrs.task.handler;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.service.*;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.model.StartupDto;
+import com.zy.common.service.CommonService;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.ThreadLocalRandom;
+
+@Component
+@Slf4j
+public class CreateOutTask {
+    @Value("${wcs.address.URL}")
+    private String addrs;
+    @Value("${wcs.address.createOutTask}")
+    private String outTask;
+    @Value("${wcs.address.createLocMoveTask}")
+    private String locMoveTask;
+    @Value("${wcs.address.devicesStatus}")
+    private String devicesStatus;
+    @Autowired
+    private LocMastService locMastService;
+    @Autowired
+    private LocDetlService locDetlService;
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private CommonService commonService;
+    @Autowired
+    private WrkDetlService wrkDetlService;
+
+    @Scheduled(cron = "0/10 * * * * ? ")
+    @Transactional
+    public void outTask(){
+        //璋冪敤wcs鎺ュ彛鑾峰彇璁惧鐘舵��
+        String statusResponse = "";
+        try {
+            statusResponse = new HttpHandler.Builder()
+                    .setUri(addrs)
+                    .setPath(devicesStatus)
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(statusResponse);
+            if (jsonObject.get("code").equals(200)){
+                log.info("璁惧姝e父");
+            }
+        }catch (Exception e){
+            log.error("璁惧寮傚父");
+        }
+        log.info("寮�濮嬭皟鐢╓CS鎺ュ彛,娲惧彂鍑哄簱/绉诲簱浠诲姟");
+        Date now = new Date();
+        boolean flag= false;
+        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "F"));
+        List<Integer> outSitelist = new ArrayList<>();
+        outSitelist.add(1152);
+        outSitelist.add(1169);
+        outSitelist.add(1177);
+        LocMast shallowLocMast = new LocMast();
+        for (LocMast locMast : locMasts) {
+        //鍒ゆ柇搴撲綅鏄惁鏈夊嚭搴撲换鍔�
+        if (!Cools.isEmpty(wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("source_loc_no",locMast.getLocNo())))){
+            continue;
+        }
+            //鍒ゆ柇鏄惁鏄繁搴撲綅 瑙﹀彂绉诲簱浠诲姟
+            if (Utils.isDeepLoc(locMast.getLocNo())) {
+                String deepLoc = locMast.getLocNo();
+                String shallowLocNo = Utils.getShallowLocNo(deepLoc);
+                shallowLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLocNo));
+                if (shallowLocMast.getLocSts().equals("F") || shallowLocMast.getLocSts().equals("D")) {
+                    flag = true;
+                }
+            }
+            int outSite = ThreadLocalRandom.current().nextInt(0, outSitelist.size());
+            List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
+            // 鐩爣绔欑偣鐘舵�佹娴�
+            int workNo = commonService.getWorkNo(2);
+            //鐢熸垚宸ヤ綔妗�
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(workNo);
+            wrkMast.setIoTime(now);
+            wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+            wrkMast.setIoType(flag ? 11 : 101); // 鍏ュ嚭搴撶姸鎬�
+            wrkMast.setIoPri(flag ? 20D : 15D); // 浼樺厛绾�
+            wrkMast.setCrnNo(locMast.getCrnNo());
+            wrkMast.setStaNo(outSitelist.get(outSite)); // 鐩爣绔�
+            wrkMast.setSourceLocNo(flag ? shallowLocMast.getLocNo() : locMast.getLocNo()); // 婧愬簱浣�
+            wrkMast.setLocNo(flag ? getMoveLocNo(locMast.getLocNo()) : ""); //鐩爣搴撲綅
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("N");
+            wrkMast.setBarcode(locMast.getBarcode());
+            wrkMast.setAppeUser(9527L); // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiUser(9527l);
+            wrkMast.setModiTime(now);
+            if (!wrkMastService.insert(wrkMast)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + locMast.getLocNo());
+            }
+            // 鐢熸垚宸ヤ綔妗f槑缁�
+                for (LocDetl locDetl : locDetlList) {
+                    if (locDetl.getAnfme() == null || locDetl.getAnfme() <= 0.0D) {
+                        continue;
+                    }
+                    WrkDetl wrkDetl = new WrkDetl();
+                    wrkDetl.sync(locDetl);
+                    wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
+                    wrkDetl.setWrkNo(workNo);
+                    wrkDetl.setIoTime(now);
+                    Double anfme = locDetl.getAnfme();
+                    wrkDetl.setAnfme(anfme); // 鏁伴噺
+                    wrkDetl.setAppeTime(now);
+                    wrkDetl.setAppeUser(9527L);
+                    wrkDetl.setModiTime(now);
+                    wrkDetl.setModiUser(9527L);
+                    if (!wrkDetlService.insert(wrkDetl)) {
+                        throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                    }
+                }
+                String response = "";
+                StartupDto startupDto = new StartupDto();
+                startupDto.setTaskNo(wrkMast.getWrkNo());
+                startupDto.setStaNo(wrkMast.getStaNo());
+                startupDto.setLocNo(Utils.locToLocNo(wrkMast.getSourceLocNo()));
+                startupDto.setTaskPri(wrkMast.getIoPri());
+                flag = false;
+                try {
+                    response = new HttpHandler.Builder()
+                            .setUri(addrs)
+                            .setPath(flag ? locMoveTask : outTask)
+                            .setJson(JSON.toJSONString(startupDto))
+                            .build()
+                            .doPost();
+                    JSONObject jsonObject = JSON.parseObject(response);
+                    if (jsonObject.get("code").equals(200)) {
+                        wrkMast.setWrkSts(12L);
+                        if (!wrkMastService.updateById(wrkMast)) {
+                            throw new CoolException("宸ヤ綔妗g姸鎬佷慨鏀瑰け璐�,宸ヤ綔鍙�:{}" + wrkMast.getWrkNo());
+                        }
+                        // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+                        locMast = locMastService.selectById(flag?shallowLocMast.getLocNo():locMast.getLocNo());
+                        if (locMast.getLocSts().equals("F")) {
+                            locMast.setLocSts("R");
+                            locMast.setModiUser(9527L);
+                            locMast.setModiTime(now);
+                            if (!locMastService.updateById(locMast)) {
+                                throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + locMast.getLocNo());
+                            }
+                        } else {
+                            throw new CoolException(locMast.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+                        }
+                        log.info("鍑哄簱/绉诲簱浠诲姟娲惧彂鎴愬姛");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                }
+        }
+    }
+
+    //绉诲簱浠诲姟鎵剧┖搴撲綅 娣卞簱浣�
+    public String getMoveLocNo(String locNo){
+        LocMast targetLocMast = new LocMast();
+        int deepRow = Utils.getRow(locNo);
+        //鍏堟壘娣卞簱浣嶈繖涓�鎺掕繕鏈夋病鏈夌┖浣嶅簱
+        targetLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("row1", deepRow));
+        if (targetLocMast == null){
+            targetLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("row1", deepRow + 3));
+
+        }
+        if (targetLocMast == null){
+            targetLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("row1", deepRow + 1));
+
+        }
+        if (targetLocMast == null){
+            targetLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("row1", deepRow + 2));
+
+        }
+        return targetLocMast.getLocNo();
+    }
+}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 9a8ff4b..3faf851 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -86,6 +86,27 @@
         return copy;
     }
 
+    public static String locToLocNo(String locNo){//0100203
+        int row = Integer.parseInt(locNo.substring(0, 2));
+        int bay = Integer.parseInt(locNo.substring(2, 5));
+        int lev = Integer.parseInt(locNo.substring(5, 7));
+        return row + "-" +bay + "-" + lev;
+    }
+
+    //鑾峰彇娣卞簱浣嶅搴旂殑娴呭簱浣�
+    public static String getShallowLocNo(String locNo){
+        int shallowRow = 0;
+        int deepRow = Utils.getRow(locNo);
+        if (deepRow == 1 || (deepRow - 1) % 4 == 0){
+            shallowRow = deepRow + 1;
+        }else if (deepRow % 4 == 0){
+            shallowRow = deepRow - 1;
+        }
+        int shallowBay = Utils.getBay(locNo);
+        int shallowLev = Utils.getLev(locNo);
+        return Utils.getLocNo(shallowRow, shallowBay, shallowLev);
+    }
+
     public static LocGroupOrder findGroupOrder(SlaveProperties slaveProperties, String locNo) {
         int row1 = Utils.getRow(locNo);
         int bay1 = Utils.getBay(locNo);
@@ -114,4 +135,18 @@
 
         return checkOrder;
     }
+
+    //鍒ゆ柇鏄惁鏄繁搴撲綅
+    public static boolean isDeepLoc(String locNo){
+        int i = getRow(locNo);
+        if (i == 1 || i == 4 || i == 5 || i == 8 || i == 9 || i == 12 || i == 13 || i == 16 || i == 17 || i == 20 || i == 21 || i == 24 || i == 25 || i == 28 || i == 29 || i == 32 || i == 33 || i == 36 || i == 37 || i == 40){
+            return true;
+        }
+        return false;
+    }
+
+    public static String loc(String locNo){
+        String[] split = locNo.split("-");
+        return Utils.getLocNo(Integer.parseInt(split[0]),Integer.parseInt(split[1]),Integer.parseInt(split[2]));
+    }
 }
diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java
index 6a3ff20..1671459 100644
--- a/src/main/java/com/zy/common/CodeBuilder.java
+++ b/src/main/java/com/zy/common/CodeBuilder.java
@@ -2,11 +2,14 @@
 
 import com.core.generators.CoolGenerator;
 import com.core.generators.constant.SqlOsType;
+import com.zy.asrs.service.LocMastService;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * Created by vincent on 2019-06-04
  */
 public class CodeBuilder {
+    private LocMastService locMastService;
 
     public static void main(String[] args) throws Exception {
         CoolGenerator generator = new CoolGenerator();
@@ -25,4 +28,14 @@
         generator.build();
     }
 
+//    public static void  loc(String[] args) throws Exception{
+//        for (int row = 24;row < 25;row ++){
+//            for (int bay = 2;bay < 3;bay ++){
+//                for (int lev = 1;lev < 2;lev ++){
+//
+//                }
+//            }
+//        }
+//    }
+
 }
diff --git a/src/main/java/com/zy/common/model/StartupDto.java b/src/main/java/com/zy/common/model/StartupDto.java
index b0ecc3e..6c4fb4a 100644
--- a/src/main/java/com/zy/common/model/StartupDto.java
+++ b/src/main/java/com/zy/common/model/StartupDto.java
@@ -16,6 +16,8 @@
 
     private String locNo;
 
-    private Integer workNo;
+    private Integer taskNo;
+
+    private  Double taskPri;
 
 }
diff --git a/src/main/java/com/zy/common/model/WmsDevDto.java b/src/main/java/com/zy/common/model/WmsDevDto.java
new file mode 100644
index 0000000..aa7d682
--- /dev/null
+++ b/src/main/java/com/zy/common/model/WmsDevDto.java
@@ -0,0 +1,10 @@
+package com.zy.common.model;
+
+import lombok.Data;
+
+@Data
+public class WmsDevDto {
+    private String locNo;
+    private Integer taskNo;
+    private Integer taskPri;
+}
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 27f3b06..9733d3d 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -16,6 +16,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -122,6 +123,34 @@
      * @param findLocNoAttributeVo 灞炴��
      * @param locTypeDto           绫诲瀷
      * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
+     * wms-dev
+     */
+    @Transactional
+    public StartupDto getLocNoToWmsDev(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto, String barcode,int[] row) {
+        StartupDto startupDto = null;
+        StringBuilder builder = new StringBuilder();
+        try {
+            startupDto = searchLocNoByCrnNoToWmsDev(staDescId, sourceStaNo, findLocNoAttributeVo, locTypeDto,row);
+        } catch (Exception e) {
+            builder.append(e.getMessage()).append(",");
+        }
+
+        if(startupDto == null) {
+            builder.append("鎵句笉鍒扮┖搴撲綅");
+            throw new CoolException(builder.toString());
+        }
+
+        return startupDto;
+    }
+
+    /**
+     * 妫�绱㈠簱浣嶅彿
+     *
+     * @param staDescId            璺緞ID
+     * @param sourceStaNo          婧愮珯
+     * @param findLocNoAttributeVo 灞炴��
+     * @param locTypeDto           绫诲瀷
+     * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
      */
     @Transactional
     public StartupDto searchLocNoByCrnNo(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto) {
@@ -158,11 +187,61 @@
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = getWorkNo(0);
         // 杩斿洖dto
-        startupDto.setWorkNo(workNo);
+        startupDto.setTaskNo(workNo);
         startupDto.setCrnNo(locMast.getCrnNo());
         startupDto.setSourceStaNo(sourceStaNo);
         startupDto.setLocNo(locNo);
+        startupDto.setTaskPri(13.0);
         return startupDto;
+    }
+
+    @Transactional
+    public StartupDto searchLocNoByCrnNoToWmsDev(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto,int[] row) {
+        LocMast locMast = null;
+        if (staDescId == 10) {
+            //鎼滅储绌烘墭鐩�
+            locMast = searchEmptyPallet(locTypeDto);
+        }else {
+            //婊℃墭鐩�
+            locMast = searchMaxPalletToWmsDev(findLocNoAttributeVo, locTypeDto,row);
+        }
+
+        if(locMast == null) {
+            throw new CoolException("鎵句笉鍒扮鍚堝昂瀵哥殑绌哄簱浣�");
+        }
+
+        StartupDto startupDto = new StartupDto();
+
+        // 鑾峰彇鐩爣绔�
+//        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>().eq("type_no", staDescId).eq("stn_no", sourceStaNo).eq("crn_no", locMast.getCrnNo());
+//        StaDesc staDesc = staDescService.selectOne(wrapper);
+//        if (Cools.isEmpty(staDesc)) {
+//            log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo);
+//            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+//        } else {
+//            BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
+//            if (!staNo.getAutoing().equals("Y")) {
+//                log.error("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�");
+//                throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�");
+//            }
+//            startupDto.setStaNo(staNo.getDevNo());
+//        }
+        String locNo = locMast.getLocNo();
+        // 鐢熸垚宸ヤ綔鍙�
+        int workNo = getWorkNo(0);
+        // 杩斿洖dto
+        startupDto.setTaskNo(workNo);
+        startupDto.setCrnNo(locMast.getCrnNo());
+        startupDto.setSourceStaNo(sourceStaNo);
+        startupDto.setLocNo(locToLocNo(locNo));
+        startupDto.setTaskPri(13.0);
+        return startupDto;
+    }
+    public String locToLocNo(String locNo){//0100203
+        int row = Integer.parseInt(locNo.substring(0, 2));
+        int bay = Integer.parseInt(locNo.substring(2, 5));
+        int lev = Integer.parseInt(locNo.substring(5, 7));
+        return row + "-" +bay + "-" + lev;
     }
 
     //鎼滅储婊℃墭鐩樺簱浣�
@@ -249,6 +328,91 @@
         return targetLocMast;
     }
 
+    //鎼滅储婊℃墭鐩樺簱浣� wms-dev
+    public LocMast searchMaxPalletToWmsDev(FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto,int[] rows) {
+        LocMast targetLocMast = null;
+        List<String> locNos = locDetlService.getSameDetlListToWmsDev(findLocNoAttributeVo.getMatnr(),rows);
+        for (String locNo : locNos) {
+            //鑾峰彇閫氶亾缁�
+            List<Integer> locRowGroupDesc = Utils.getLocGroupDesc(slaveProperties, locNo);
+            for (Integer row : locRowGroupDesc) {
+                String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo));
+                LocMast deepLoc = locMastService.selectById(deepLocNo);
+                if (deepLoc == null) {
+                    continue;
+                }
+
+                if (deepLoc.getLocSts().equals("F")) {
+                    continue;
+                } else if (deepLoc.getLocSts().equals("O")) {
+                    targetLocMast = deepLoc;
+                    break;
+                }else {
+                    break;
+                }
+            }
+
+        }
+
+        if(targetLocMast == null) {
+            //鐩歌繎鐗╂枡鍖归厤澶辫触锛屾悳绱㈠彲鐢ㄧ┖搴撲綅缁�
+
+            //鑾峰彇璁惧妤煎眰
+//            List<Integer> levList = basCrnpService.getLevList();
+//            Collections.shuffle(levList);
+//
+//            List<Integer> locLevList = locMastService.getLevList();
+//            levList.addAll(locLevList);
+
+//            for (Integer lev : levList) {
+//            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+//                    .eq("loc_sts", "O")
+//                    .in("row1",rows)
+//                    .orderBy("bay1", true));
+           List<LocMast> locMasts = locMastService.selectLoc(rows);
+            for (LocMast locMast : locMasts) {
+                String locNo = locMast.getLocNo();
+                //鑾峰彇閫氶亾缁�
+                List<Integer> locRowGroupDesc = Utils.getLocGroupDesc(slaveProperties, locNo);
+
+                boolean flag = true;
+                for (Integer row : locRowGroupDesc) {
+                    String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo));
+                    LocMast deepLoc = locMastService.selectById(deepLocNo);
+                    if (deepLoc == null) {
+                        continue;
+                    }
+
+                    if (!deepLoc.getLocSts().equals("O")) {
+                        flag = false;
+                        break;
+                    }
+                }
+
+                if (flag) {
+                    for (Integer row : locRowGroupDesc) {
+                        String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo));
+                        LocMast deepLoc = locMastService.selectById(deepLocNo);
+                        if (deepLoc == null) {
+                            continue;
+                        }
+
+                        targetLocMast = deepLoc;
+                        break;
+                    }
+                    break;
+                }
+            }
+
+//                if (targetLocMast != null) {
+//                    break;
+//                }
+//            }
+
+        }
+        return targetLocMast;
+    }
+
     //鎼滅储绌烘墭鐩樺簱浣�
     public LocMast searchEmptyPallet(LocTypeDto locTypeDto) {
         LocMast targetLocMast = null;
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 703bad5..d209e64 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -9,10 +9,12 @@
 import com.zy.asrs.entity.result.FindLocNoAttributeVo;
 import com.zy.asrs.entity.result.StorageResult;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.Utils;
 import com.zy.common.CodeRes;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.StartupDto;
 import com.zy.common.service.CommonService;
+import com.zy.common.web.param.NotifyDto;
 import com.zy.common.web.param.SearchLocParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -51,6 +53,8 @@
     private  LocDetlService locDetlService;
     @Autowired
     private  BasCrnpService basCrnpService;
+    @Autowired
+    private WorkService workService;
 
     @Value("${led.ip}")
     private String ledIp;
@@ -76,11 +80,21 @@
 
     @PostMapping("/pakin/loc/v1")
     @ResponseBody
+    @Transactional
     public synchronized R getLocNo(@RequestBody(required = false) SearchLocParam param) {
+        WaitPakin waitPakin = new WaitPakin();
         log.info("鏀跺埌WCS鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param);
-        if (Cools.isEmpty(param.getIoType())) {
-            return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�");
-        }
+        //wcs璋冪敤姝ゆ帴鍙e悜缁勬墭琛ㄦ彃鍏ヤ竴鏉℃暟鎹ā鎷熺粍鎵�
+        waitPakin.setZpallet(param.getBarcode());
+        waitPakin.setAnfme(100.0D);
+        waitPakin.setMatnr("50001LR-71");
+        waitPakin.setMaktx("姘旀场琚�");
+        waitPakin.setSpecs("50001LR-71");
+        waitPakin.setModel("skv");
+        waitPakinService.insert(waitPakin);
+//        if (Cools.isEmpty(param.getIoType())) {
+//            return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�");
+//        }
         if (Cools.isEmpty(param.getSourceStaNo())) {
             return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖");
         }
@@ -114,10 +128,11 @@
         switch (param.getIoType()) {
             case 1://婊℃墭鐩樺叆搴�
                 assert waitPakins != null;
-                dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins);
+//                dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins);
+                dto = startupFullPutStoreToWmsDev(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins,param.getRow());
                 break;
             case 10://绌烘墭鐩樺叆搴�
-                dto = emptyPlateIn(param.getSourceStaNo(), param.getBarcode());
+                dto = emptyPlateIn(param.getSourceStaNo(), param.getBarcode(),param.getRow());
                 break;
             default:
                 break;
@@ -136,16 +151,47 @@
         LocTypeDto locTypeDto = new LocTypeDto();
         locTypeDto.setLocType1(param.getLocType1());
 
-        StartupDto dto = startupPickIn(param.getSourceStaNo(), param.getBarcode(), locTypeDto);;
+        StartupDto dto = startupPickIn(param.getSourceStaNo(), param.getBarcode(), locTypeDto,param.getRow());;
         log.info("WCS鎷i�夌洏鐐瑰叆搴撴帴鍙h繑鍙�:{},鎵樼洏鐮�:{}", dto, param.getBarcode());
         return R.ok().add(dto);
+    }
+
+    @PostMapping("/taskWrk/state")
+    @ResponseBody
+    public R taskWrkState(@RequestBody(required = false) NotifyDto notifyDto){
+        log.info("鏀跺埌WCS璇锋眰涓婃姤鎺ュ彛======>>宸ヤ綔鍙�:{},鍏ュ弬:{}",notifyDto.getSuperTaskNo(),notifyDto);
+        if (Cools.isEmpty(notifyDto.getNotifyType())){
+            return R.error("閫氱煡绫诲瀷涓嶈兘涓虹┖");
+        }
+        if (Cools.isEmpty(notifyDto.getTaskNo())){
+            return R.error("浠诲姟鍙蜂笉鑳戒负绌�");
+        }
+        WrkMast wrkMast = new WrkMast();
+        switch (notifyDto.getMsgType()){
+            case "task_complete":
+                wrkMast = wrkMastService.selectByTaskNo(notifyDto.getSuperTaskNo());
+                if (wrkMast != null && (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 11)){
+                    wrkMast.setWrkSts(4L);
+                    if (!wrkMastService.updateById(wrkMast)){
+                        return R.error("淇敼宸ヤ綔妗eけ璐�====>4");
+                    }
+                }else if (wrkMast != null && (wrkMast.getIoType() == 101)){
+                    wrkMast.setWrkSts(14L);
+                    if (!wrkMastService.updateById(wrkMast)){
+                        return R.error("淇敼宸ヤ綔妗eけ璐�====>14");
+                    }
+                }
+            case "task_cancel":
+                workService.cancelWrkMast(notifyDto.getSuperTaskNo(), 9527L);
+        }
+        return R.ok();
     }
 
     /**
      * 鍏ㄦ澘鍏ュ簱
      */
     @Transactional
-    public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins) {
+    public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins,int[] row) {
         // 婧愮珯鐐圭姸鎬佹娴�
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
@@ -159,7 +205,7 @@
         if (dto == null) {
             throw new CoolException("鎵句笉鍒扮┖搴撲綅");
         }
-        int workNo = dto.getWorkNo();
+        int workNo = dto.getTaskNo();
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
@@ -167,7 +213,7 @@
         wrkMast.setIoTime(new Date());
         wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
         wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
-        wrkMast.setIoPri(30D); // 浼樺厛绾�
+        wrkMast.setIoPri(13D); // 浼樺厛绾�
         wrkMast.setCrnNo(dto.getCrnNo());
         wrkMast.setSourceStaNo(dto.getSourceStaNo());
         wrkMast.setStaNo(dto.getStaNo());
@@ -225,10 +271,98 @@
     }
 
     /**
+     * 鍏ㄦ澘鍏ュ簱-wms-dev
+     */
+    @Transactional
+    public StartupDto startupFullPutStoreToWmsDev(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins,int[] row) {
+        // 婧愮珯鐐圭姸鎬佹娴�
+        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
+        // 妫�绱㈠簱浣�
+//        List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
+//        List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList());
+        WaitPakin waitPakin1 = waitPakins.get(0);
+        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+        findLocNoAttributeVo.setMatnr(waitPakin1.getMatnr());
+
+        StartupDto dto = commonService.getLocNoToWmsDev(1, devpNo, findLocNoAttributeVo, locTypeDto, barcode,row);
+        if (dto == null) {
+            throw new CoolException("鎵句笉鍒扮┖搴撲綅");
+        }
+        int workNo = dto.getTaskNo();
+        Date now = new Date();
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(new Date());
+        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+        wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+        wrkMast.setIoPri(13D); // 浼樺厛绾�
+        wrkMast.setCrnNo(dto.getCrnNo());
+        wrkMast.setSourceStaNo(dto.getSourceStaNo());
+        wrkMast.setStaNo(dto.getStaNo());
+        wrkMast.setLocNo(loc(dto.getLocNo()));
+        wrkMast.setBarcode(barcode); // 鎵樼洏鐮�
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("N"); // 绌烘澘
+        wrkMast.setLinkMis("Y");
+        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+        // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiTime(now);
+        wrkMast.setModiUser(waitPakin1.getModiUser());
+        wrkMast.setAppeUser(waitPakin1.getAppeUser());
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        // 鐢熸垚宸ヤ綔妗f槑缁�
+        waitPakins.forEach(waitPakin -> {
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(waitPakin);
+            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl.setIoTime(wrkMast.getIoTime());
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setModiTime(now);
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+            }
+        });
+        // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
+        if (!waitPakinService.updateIoStatus("Y", dto.getLocNo(), barcode)) {
+            throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
+        }
+        // 鏇存柊婧愮珯鐐逛俊鎭�
+        sourceStaNo.setWrkNo(workNo);
+        sourceStaNo.setModiTime(now);
+        if (!basDevpService.updateById(sourceStaNo)) {
+            throw new CoolException("鏇存柊婧愮珯澶辫触");
+        }
+        // 鏇存柊鐩爣搴撲綅鐘舵��
+        LocMast locMast = locMastService.selectById(loc(dto.getLocNo()));
+        if (locMast.getLocSts().equals("O")) {
+            locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+            locMast.setModiTime(now);
+            if (!locMastService.updateById(locMast)) {
+                throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+            }
+        } else {
+            throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+        }
+        return dto;
+    }
+
+    public String loc(String locNo){
+        String[] split = locNo.split("-");
+        return Utils.getLocNo(Integer.parseInt(split[0]),Integer.parseInt(split[1]),Integer.parseInt(split[2]));
+    }
+
+    /**
      * 鎷i�夊叆搴�
      */
     @Transactional
-    public StartupDto startupPickIn(Integer devpNo, String barcode, LocTypeDto locTypeDto) {
+    public StartupDto startupPickIn(Integer devpNo, String barcode, LocTypeDto locTypeDto,int[] row) {
         // 婧愮珯鐐圭姸鎬佹娴�
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
 
@@ -258,7 +392,7 @@
 
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
-        int workNo = dto.getWorkNo();
+        int workNo = dto.getTaskNo();
         wrkMast.setWrkNo(workNo);
         wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
         wrkMast.setIoType(wrkMastOut.getIoType() - 50); // 鍏ュ嚭搴撶姸鎬侊細53.鎷f枡鍐嶅叆搴�
@@ -310,7 +444,7 @@
     }
 
     @Transactional
-    public StartupDto emptyPlateIn(Integer devpNo, String barcode) {
+    public StartupDto emptyPlateIn(Integer devpNo, String barcode,int[] row) {
         // 妫�绱㈠簱浣�
         Integer[] arr=arr();
 
diff --git a/src/main/java/com/zy/common/web/param/NotifyDto.java b/src/main/java/com/zy/common/web/param/NotifyDto.java
new file mode 100644
index 0000000..9312ddc
--- /dev/null
+++ b/src/main/java/com/zy/common/web/param/NotifyDto.java
@@ -0,0 +1,42 @@
+package com.zy.common.web.param;
+
+import lombok.Data;
+
+@Data
+public class NotifyDto {
+    private Long id;
+
+    //閫氱煡绫诲瀷
+    private String notifyType;
+
+    //璁惧鍙�
+    private Integer device;
+
+    //宸ヤ綔鍙�
+    private String taskNo;
+
+    //涓婄骇绯荤粺宸ヤ綔鍙�
+    private String superTaskNo;
+
+    //娑堟伅绫诲瀷
+    private String msgType;
+
+    //娑堟伅鎻忚堪
+    private String msgDesc;
+
+    //娑堟伅鏁版嵁
+    private String data;
+
+    //澶辫触閲嶈瘯娆℃暟
+    private Integer failTimes = 3;
+
+    //閲嶈瘯娆℃暟
+    private Integer retryTimes = 0;
+
+    //閲嶈瘯闂撮殧榛樿30s
+    private Integer retryTime = 30;
+
+    //涓婃閲嶈瘯鏃堕棿
+    private Long lastRetryTime = 0L;
+
+}
diff --git a/src/main/java/com/zy/common/web/param/SearchLocParam.java b/src/main/java/com/zy/common/web/param/SearchLocParam.java
index 1a170ce..60ca64d 100644
--- a/src/main/java/com/zy/common/web/param/SearchLocParam.java
+++ b/src/main/java/com/zy/common/web/param/SearchLocParam.java
@@ -7,8 +7,8 @@
  */
 @Data
 public class SearchLocParam {
-
-    private Integer ioType;
+    //ioType鍏ㄩ儴榛樿涓�1
+    private Integer ioType = 1;
 
     private Integer sourceStaNo;
 
@@ -17,4 +17,7 @@
     // 搴撲綅瑙勬牸锛� 0:鏈煡, 1:浣庡簱浣�, 2:楂樺簱浣嶏級
     private Short locType1;
 
+    //搴撲綅鎺�
+    private int[] row;
+
 }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 0bb19fd..aa8d950 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,5 +1,5 @@
 server:
-  port: 8081
+  port: 8080
   servlet:
     context-path: /@pom.build.finalName@
 
@@ -12,7 +12,7 @@
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
     url: jdbc:sqlserver://127.0.0.1:1433;databasename=qlasrs-sxk
     username: sa
-    password: spcyy@2025
+    password: sa@123
   mvc:
     static-path-pattern: /**
   redis:
@@ -43,7 +43,7 @@
 
 #License鐩稿叧閰嶇疆
 license:
-  subject: qlasrs-sxk
+  subject: wmsdev
   publicAlias: publicCert
   storePass: public_zhongyang_123456789
   licensePath: license.lic
@@ -53,26 +53,33 @@
 wcs-slave:
   # 鐢辨祬鍏ユ繁
   locGroupAscOrder: [
-    {rowList: [1],minBay: 1,maxBay: 16},
-    {rowList: [3,4,5,6],minBay: 1,maxBay: 16},
-    {rowList: [10,9,8,7],minBay: 1,maxBay: 16},
-    {rowList: [10,9,8,7,6,5,4,3],minBay: 17,maxBay: 22},
-    {rowList: [12,13],minBay: 1,maxBay: 22},
-    {rowList: [15,14],minBay: 1,maxBay: 22},
-    {rowList: [17,18,19,20,21,22,23],minBay: 1,maxBay: 22},
-    {rowList: [2],minBay: 1,maxBay: 22},
-    {rowList: [11],minBay: 1,maxBay: 22},
-    {rowList: [16],minBay: 1,maxBay: 22},
+    {rowList: [1],minBay: 2,maxBay: 60},
+    {rowList: [3,4,5,6],minBay: 2,maxBay: 60},
+    {rowList: [10,9,8,7],minBay: 2,maxBay: 60},
+    {rowList: [10,9,8,7,6,5,4,3],minBay: 2,maxBay: 60},
+    {rowList: [12,13],minBay: 2,maxBay: 60},
+    {rowList: [15,14],minBay: 2,maxBay: 60},
+    {rowList: [17,18,19,20,21,22,23,24],minBay: 2,maxBay: 60},
+    {rowList: [2],minBay: 2,maxBay: 60},
+    {rowList: [11],minBay: 2,maxBay: 60},
+    {rowList: [16],minBay: 2,maxBay: 60},
+    {rowList: [25,26,27,28],minBay: 2,maxBay: 60},
+    {rowList: [29,30,31,32],minBay: 2,maxBay: 60},
+    {rowList: [33,34,35,36],minBay: 2,maxBay: 60},
+    {rowList: [37,38,39,40],minBay: 2,maxBay: 60},
   ]
 
 #wcs瀵规帴
 wcs:
   #鍦板潃
   address:
-    URL: http://127.0.0.1:8080/wcs
+    URL: http://192.168.4.69:9090/wcs
     #鍑哄簱绉诲簱浠诲姟涓嬪彂
     outboundTaskSend: open/outboundTaskSend
     deviceStatus : open/deviceStatus
+    createOutTask: openapi/createOutTask
+    createLocMoveTask: openapi/createLocMoveTask
+    devicesStatus: openapi/devicesStatus
 
 led:
   ip: 192.168.1.198
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index 7335503..0be505a 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -149,6 +149,19 @@
         ORDER BY ld.appe_time ASC
     </select>
 
+    <select id="getSameDetlListToWmsDev" resultType="java.lang.String">
+        SELECT ld.loc_no FROM asr_loc_detl ld
+        LEFT JOIN asr_loc_mast lm ON ld.loc_no = lm.loc_no
+        WHERE 1 = 1
+        AND ld.matnr = #{matnr}
+        AND lm.loc_sts = 'F'
+        AND lm.row1 IN
+        <foreach collection="rows" item="row" open="(" separator="," close=")">
+            #{row}
+        </foreach>
+        ORDER BY ld.appe_time ASC
+    </select>
+
     <select id="getStockStatis" resultType="com.zy.asrs.entity.LocDetl">
         select * from
         (
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 4141025..5ae1ea1 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -41,4 +41,15 @@
         select DISTINCT lev1 from asr_loc_mast
     </select>
 
+    <select id="selectLoc" resultMap="BaseResultMap">
+        select * from asr_loc_mast where 1 = 1
+        AND loc_sts = 'O'
+        AND row1 IN
+        <if test="rows != null">
+            <foreach collection="rows" item="row" open="(" separator="," close=")">
+                #{row}
+            </foreach>
+        </if>
+        order by bay1 asc, lev1 asc
+    </select>
 </mapper>
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 44fd552..19bdbe4 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -76,4 +76,8 @@
         order by modi_time,wrk_no asc
     </select>
 
+    <select id="selectByTaskNo" resultMap="BaseResultMap">
+        select *
+        from asr_wrk_mast where wrk_no = #{taskNo}
+    </select>
 </mapper>

--
Gitblit v1.9.1