From dbfbc8f19dc5751b6dec442aff24463f1084a3d9 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期日, 21 九月 2025 15:54:02 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java |    3 
 src/main/java/com/zy/asrs/mapper/BasCrnpMapper.java            |    4 +
 src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java     |   46 ++++----------
 src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java |    8 ++
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java    |    9 --
 src/main/java/com/zy/asrs/mapper/LocMastMapper.java            |    4 
 src/main/java/com/zy/asrs/service/BasCrnpService.java          |    4 +
 src/main/resources/mapper/BasCrnpMapper.xml                    |    4 +
 src/main/java/com/zy/common/service/CommonService.java         |   96 +++++++++++++++++++------------
 9 files changed, 97 insertions(+), 81 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/BasCrnpMapper.java b/src/main/java/com/zy/asrs/mapper/BasCrnpMapper.java
index baffc35..defc1ff 100644
--- a/src/main/java/com/zy/asrs/mapper/BasCrnpMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/BasCrnpMapper.java
@@ -5,8 +5,12 @@
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Mapper
 @Repository
 public interface BasCrnpMapper extends BaseMapper<BasCrnp> {
 
+    List<Integer> getLevList();
+
 }
diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index 33877cc..bd3aa02 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -15,8 +15,8 @@
 
     LocMast queryFreeLocMast(@Param("row") Integer row, @Param("locType1") Short locType1);
 
-    @Select("select loc_no from asr_loc_mast where 1=1 and loc_sts = 'O' and crn_no = #{crnNo}")
-    List<String> queryGroupEmptyStock(Integer crnNo);
+    @Select("select loc_no from asr_loc_mast where 1=1 and loc_sts = 'O' and lev1 = #{lev}")
+    List<String> queryGroupEmptyStock(Integer lev);
 
     @Select("select count(*) as count from asr_loc_mast where 1=1 and loc_sts = 'O' and loc_type1 = #{locType1} and crn_no = #{crnNo}")
     Integer selectEmptyLocCount(@Param("locType1") Short locType1, @Param("crnNo") Integer crnNo);
diff --git a/src/main/java/com/zy/asrs/service/BasCrnpService.java b/src/main/java/com/zy/asrs/service/BasCrnpService.java
index 10c3feb..3f83864 100644
--- a/src/main/java/com/zy/asrs/service/BasCrnpService.java
+++ b/src/main/java/com/zy/asrs/service/BasCrnpService.java
@@ -3,10 +3,14 @@
 import com.baomidou.mybatisplus.service.IService;
 import com.zy.asrs.entity.BasCrnp;
 
+import java.util.List;
+
 public interface BasCrnpService extends IService<BasCrnp> {
 
     BasCrnp checkSiteStatus(Integer crnId);
 
     boolean checkSiteError(Integer crnNo, boolean pakin);
 
+    List<Integer> getLevList();
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
index 7b36b86..da7d3e4 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
@@ -4,7 +4,6 @@
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.BasCrnp;
-import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.mapper.BasCrnpMapper;
 import com.zy.asrs.service.BasCrnpService;
 import com.zy.asrs.service.BasDevpService;
@@ -12,6 +11,8 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 @Slf4j
 @Service("basCrnpService")
@@ -122,4 +123,9 @@
 
         return true;
     }
+
+    @Override
+    public List<Integer> getLevList() {
+        return this.baseMapper.getLevList();
+    }
 }
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 ae76556..54306de 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -7,6 +7,7 @@
 import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.service.RowLastnoService;
+import com.zy.asrs.utils.Utils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -32,7 +33,7 @@
         if (Cools.isEmpty(sourceStock)) {
             return null;
         }
-        return this.baseMapper.queryGroupEmptyStock(sourceStock.getCrnNo());
+        return this.baseMapper.queryGroupEmptyStock(Utils.getLev(sourceLocNo));
     }
 
     @Override
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 0c1fc9d..2208239 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -222,10 +222,6 @@
             }
 
             Integer outSta = staNo.getDevNo();
-            //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202
-//            if(locMast.getCrnNo()==2){
-//                outSta = ioType == 101 ? 204 : 202;
-//            }
 
             // 鑾峰彇璺緞
             StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
@@ -237,7 +233,7 @@
             wrkMast.setIoTime(now);
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
             wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
-            wrkMast.setIoPri(10.0+locMast.getLocAttribute()); // 浼樺厛绾�
+            wrkMast.setIoPri(10D); // 浼樺厛绾�
             wrkMast.setCrnNo(locMast.getCrnNo());
             wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
             wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
@@ -537,9 +533,6 @@
         LocMast loc = locMastService.selectById(locNo);
         if (Cools.isEmpty(loc)){
             throw new CoolException("鏈壘鍒板簱浣�");
-        }
-        if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
-            throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�");
         }
         Date now = new Date();
         // 鑾峰彇宸ヤ綔鍙�
diff --git a/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java b/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java
index 06dd5f1..81b5825 100644
--- a/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java
@@ -2,14 +2,9 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.entity.param.CarryParam;
 import com.zy.asrs.service.ApiLogService;
-import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.service.WrkMastService;
-import com.zy.asrs.service.impl.LocMastServiceImpl;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.common.utils.HttpHandler;
@@ -19,17 +14,13 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.List;
 
 @Slf4j
 @Service
 @Transactional
 public class OutWorkHandler extends AbstractHandler<String> {
 
-    @Autowired
-    private LocMastService locMastService;
     @Autowired
     private ApiLogService apiLogService;
     @Value("${wcs.address.URL}")
@@ -41,29 +32,18 @@
 
 
     public synchronized ReturnT<String> start(WrkMast wrkMast) {
-        //浼樺厛绾�
-        LocMast locMast=locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
-        int Priority = locMast.getLocAttribute() == null ? 0 : locMast.getLocAttribute();
-
         HashMap<String, Object> map = new HashMap<>();
-        CarryParam carryParam = new CarryParam();
-        carryParam.setBoxNo(wrkMast.getBarcode());//鎵樼洏鐮�
-        carryParam.setTaskNo(wrkMast.getWrkNo()+"");//浠诲姟鍙�
-        carryParam.setStereoscopicTaskType(2);//2.鍑哄簱
-        carryParam.setPriority(10+Priority);//浼樺厛绾�
-        carryParam.setOriginalRowNo(locMast.getRow1());//婧愬簱浣嶆帓
-        carryParam.setOriginalColumnNo(locMast.getBay1());//婧愬簱浣嶅垪
-        carryParam.setOriginalFloorNo(locMast.getLev1());//婧愬簱浣嶅眰
-        carryParam.setStartPoint(wrkMast.getStaNo()+""+locMast.getLev1());//婧愮珯
-        carryParam.setTerminalNo(wrkMast.getStaNo()+"");//鐩爣绔�
-        List<CarryParam> carryParamList=new ArrayList<>();
-        carryParamList.add(carryParam);
-        map.put("TaskList",carryParamList);
+        map.put("taskNo", wrkMast.getWrkNo());
+        map.put("taskPriority", 10);
+        map.put("taskType", wrkMast.getIoType() == 11 ? 3 : 2);
+        map.put("startPoint", wrkMast.getSourceLocNo());
+        map.put("targetPoint", wrkMast.getLocNo());
+        map.put("barcode", wrkMast.getBarcode());
 
         String response ="";
-        Boolean bool =false;
+        boolean bool =false;
         try {
-            log.info("wms娲惧彂浠诲姟缁檞cs鍑哄簱={}", map);
+            log.info("wms娲惧彂浠诲姟缁檞cs鍑哄簱={}", JSON.toJSONString(map));
             response = new HttpHandler.Builder()
                     // .setHeaders(headParam)
                     .setUri(addrs)
@@ -72,15 +52,17 @@
                     .build()
                     .doPost();
             JSONObject jsonObject = JSON.parseObject(response);
-            if(jsonObject.get("Code").equals("1")){
+            if(jsonObject.getInteger("code") == 200){
                 wrkMast.setWrkSts(12L);
                 wrkMastService.updateById(wrkMast);
                 bool = true;
+            }else {
+                log.error("wms娲惧彂浠诲姟缁檞cs鍑哄簱澶辫触{},杩斿洖鍊�={}", JSON.toJSONString(wrkMast), response);
             }
         } catch (Exception e) {
-            log.error("wcs娲惧彂浠诲姟缁橰CS鍑哄簱澶辫触{},杩斿洖鍊�={}", wrkMast, response);
+            log.error("wms娲惧彂浠诲姟缁檞cs鍑哄簱澶辫触{},杩斿洖鍊�={}", JSON.toJSONString(wrkMast), response);
         } finally {
-            apiLogService.save("wcs娲惧彂浠诲姟缁橰CS鍑哄簱"
+            apiLogService.save("wms娲惧彂浠诲姟缁檞cs鍑哄簱"
                     , addrs + outboundTaskSend
                     , null
                     , "127.0.0.1"
@@ -89,7 +71,7 @@
                     , bool
             );
         }
-        return  SUCCESS;
+        return SUCCESS;
 
     }
 }
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index c3ccb4a..fa5eb7c 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.Collections;
 import java.util.List;
 
 /**
@@ -188,30 +189,41 @@
 
         if(targetLocMast == null) {
             //鐩歌繎鐗╂枡鍖归厤澶辫触锛屾悳绱㈠彲鐢ㄧ┖搴撲綅缁�
-            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
-                    .eq("loc_sts", "O")
-                    .orderBy("lev1", true)
-                    .orderBy("bay1", true));
-            for (LocMast locMast : locMasts) {
-                String locNo = locMast.getLocNo();
-                //鑾峰彇閫氶亾缁�
-                List<Integer> locRowGroupDesc = Utils.getLocRowGroupDesc(slaveProperties, Utils.getRow(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.getLocSts().equals("O")) {
-                        flag = false;
+            //鑾峰彇璁惧妤煎眰
+            List<Integer> levList = basCrnpService.getLevList();
+            Collections.shuffle(levList);
+
+            for (Integer lev : levList) {
+                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                        .eq("loc_sts", "O")
+                        .eq("lev1", lev)
+                        .orderBy("bay1", true));
+                for (LocMast locMast : locMasts) {
+                    String locNo = locMast.getLocNo();
+                    //鑾峰彇閫氶亾缁�
+                    List<Integer> locRowGroupDesc = Utils.getLocRowGroupDesc(slaveProperties, Utils.getRow(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.getLocSts().equals("O")) {
+                            flag = false;
+                            break;
+                        }
+                    }
+
+                    if (flag) {
+                        Integer firstRow = locRowGroupDesc.get(0);
+                        String deepLocNo = Utils.getLocNo(firstRow, Utils.getBay(locNo), Utils.getLev(locNo));
+                        LocMast deepLoc = locMastService.selectById(deepLocNo);
+                        targetLocMast = deepLoc;
                         break;
                     }
                 }
 
-                if (flag) {
-                    Integer firstRow = locRowGroupDesc.get(0);
-                    String deepLocNo = Utils.getLocNo(firstRow, Utils.getBay(locNo), Utils.getLev(locNo));
-                    LocMast deepLoc = locMastService.selectById(deepLocNo);
-                    targetLocMast = deepLoc;
+                if (targetLocMast != null) {
                     break;
                 }
             }
@@ -246,32 +258,42 @@
         }
 
         if(targetLocMast == null) {
-            //鐩歌繎鐗╂枡鍖归厤澶辫触锛屾悳绱㈠彲鐢ㄧ┖搴撲綅缁�
-            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
-                    .eq("loc_sts", "O")
-                    .orderBy("lev1", true)
-                    .orderBy("bay1", true));
-            for (LocMast locMast : locMasts) {
-                String locNo = locMast.getLocNo();
-                //鑾峰彇閫氶亾缁�
-                List<Integer> locRowGroupDesc = Utils.getLocRowGroupDesc(slaveProperties, Utils.getRow(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.getLocSts().equals("O")) {
-                        flag = false;
+            //鑾峰彇璁惧妤煎眰
+            List<Integer> levList = basCrnpService.getLevList();
+            Collections.shuffle(levList);
+
+            for (Integer lev : levList) {
+                //鐩歌繎鐗╂枡鍖归厤澶辫触锛屾悳绱㈠彲鐢ㄧ┖搴撲綅缁�
+                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                        .eq("loc_sts", "O")
+                        .eq("lev1", lev)
+                        .orderBy("bay1", true));
+                for (LocMast locMast : locMasts) {
+                    String locNo = locMast.getLocNo();
+                    //鑾峰彇閫氶亾缁�
+                    List<Integer> locRowGroupDesc = Utils.getLocRowGroupDesc(slaveProperties, Utils.getRow(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.getLocSts().equals("O")) {
+                            flag = false;
+                            break;
+                        }
+                    }
+
+                    if (flag) {
+                        targetLocMast = locMast;
                         break;
                     }
                 }
 
-                if (flag) {
-                    targetLocMast = locMast;
+                if (targetLocMast != null) {
                     break;
                 }
             }
-
         }
         return targetLocMast;
     }
diff --git a/src/main/resources/mapper/BasCrnpMapper.xml b/src/main/resources/mapper/BasCrnpMapper.xml
index 00b15b5..85ba664 100644
--- a/src/main/resources/mapper/BasCrnpMapper.xml
+++ b/src/main/resources/mapper/BasCrnpMapper.xml
@@ -29,4 +29,8 @@
         <result column="lev1" property="lev1" />
     </resultMap>
 
+    <select id="getLevList" resultType="integer">
+        select DISTINCT lev1 from asr_bas_crnp
+    </select>
+
 </mapper>

--
Gitblit v1.9.1