From d73aea22606a34be4d704c130f1a8444af58f5a8 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期三, 15 十一月 2023 11:14:09 +0800
Subject: [PATCH] agv任务生成逻辑更改

---
 src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java           |    5 ++
 src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java     |   23 +++++++++--
 src/main/java/com/zy/asrs/service/AgvWrkMastService.java          |    3 +
 src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java |    9 ++++
 src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java  |   17 ++++++--
 src/main/java/com/zy/asrs/controller/OutController.java           |   30 +++++++-------
 src/main/java/com/zy/asrs/mapper/AgvBasDevpMapper.java            |   18 +++++++++
 src/main/java/com/zy/asrs/service/AgvBasDevpService.java          |    4 ++
 src/main/resources/application.yml                                |    3 +
 9 files changed, 87 insertions(+), 25 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 9fc1c53..23bab48 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -276,21 +276,21 @@
             agvTaskDtos.add(taskDto);
         }
 
-        //瀵绘壘绌虹珯鐐逛綅缃�
-        AgvBasDevp agvBasDevp = agvBasDevpService.selectEmptyDevpByStation(locDto.getAgvStaNo());
-        if(Cools.isEmpty(agvBasDevp)){
-            //濡傛灉娌℃湁鎵惧埌绌虹珯鐐癸紝鍒欑敓鎴愬噯澶囦换鍔�
-            //TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getAgvStaNo(), locDto);
-            //agvTaskDtos.add(taskDto);
-            //濡傛灉搴撲綅瀛樺湪娣疯浇
-
-            return;
-        }
-//        agvBasDevp.setLocSts("S");
-//        agvBasDevpService.updateById(agvBasDevp);
-        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(),"S",null);
-        //TaskDto taskDto = new TaskDto(locDto.getLocNo(), agvBasDevp.getDevNo(), locDto);
-        taskDto.setAgvStaNo(agvBasDevp.getDevNo());
+//        //瀵绘壘绌虹珯鐐逛綅缃�
+//        AgvBasDevp agvBasDevp = agvBasDevpService.selectEmptyDevpByStation(locDto.getAgvStaNo());
+//        if(Cools.isEmpty(agvBasDevp)){
+//            //濡傛灉娌℃湁鎵惧埌绌虹珯鐐癸紝鍒欑敓鎴愬噯澶囦换鍔�
+//            //TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getAgvStaNo(), locDto);
+//            //agvTaskDtos.add(taskDto);
+//            //濡傛灉搴撲綅瀛樺湪娣疯浇
+//
+//            return;
+//        }
+////        agvBasDevp.setLocSts("S");
+////        agvBasDevpService.updateById(agvBasDevp);
+//        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(),"S",null);
+//        //TaskDto taskDto = new TaskDto(locDto.getLocNo(), agvBasDevp.getDevNo(), locDto);
+//        taskDto.setAgvStaNo(agvBasDevp.getDevNo());
 
         //agvTaskDtos.add(taskDto);
 
diff --git a/src/main/java/com/zy/asrs/mapper/AgvBasDevpMapper.java b/src/main/java/com/zy/asrs/mapper/AgvBasDevpMapper.java
index 9565416..d474beb 100644
--- a/src/main/java/com/zy/asrs/mapper/AgvBasDevpMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/AgvBasDevpMapper.java
@@ -9,6 +9,7 @@
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 @Repository
@@ -22,4 +23,21 @@
 
     @Select("select station_code from agv_bas_devp where floor = #{floor} and cache_shelves = 'Y' group by station_code")
     List<String> selectCacheShelvesStationCodeByFloor(@Param("floor") int floor);
+
+    @Select("SELECT\n" +
+            "\tbas.dev_no,\n" +
+            "\tCOUNT ( mast.loc_no ) AS num \n" +
+            "FROM\n" +
+            "\tagv_bas_devp bas\n" +
+            "\tLEFT JOIN agv_wrk_mast mast ON bas.dev_no = mast.loc_no \n" +
+            "WHERE\n" +
+            "\tbas.station_code = #{stationCode} AND bas.loc_sts != 'X' \n" +
+            "GROUP BY\n" +
+            "\tbas.dev_no \n" +
+            "ORDER BY\n" +
+            "\tnum")
+    List<Map<String,Object>> selectDevNoAndNumBystationCode(@Param("stationCode") String stationCode);
+
+    @Select("select station_code from agv_bas_devp group by station_code ")
+    List<String> selectAllStationCode();
 }
diff --git a/src/main/java/com/zy/asrs/service/AgvBasDevpService.java b/src/main/java/com/zy/asrs/service/AgvBasDevpService.java
index 8a60c27..635c785 100644
--- a/src/main/java/com/zy/asrs/service/AgvBasDevpService.java
+++ b/src/main/java/com/zy/asrs/service/AgvBasDevpService.java
@@ -26,4 +26,8 @@
 
     List<String> selectCacheShelvesStationCodeByFloor(int floor);
 
+    public List<Map<String,Object>> selectDevNoAndNumBystationCode(String stationCode);
+
+    List<String> selectAllStationCode();
+
 }
diff --git a/src/main/java/com/zy/asrs/service/AgvWrkMastService.java b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
index b1bdda0..097a04a 100644
--- a/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
@@ -21,4 +21,7 @@
     public boolean deleteByWrkNo(int wrkNo);
 
     public int containerArrived(AgvWrkMast agvWrkMast);
+
+    public List<AgvWrkMast> selectReadyAgvWrkMast();
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
index 1b8cd23..6a4fe27 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
@@ -213,4 +213,13 @@
         return this.baseMapper.selectCacheShelvesStationCodeByFloor(floor);
     }
 
+    public List<Map<String,Object>> selectDevNoAndNumBystationCode(String stationCode){
+        return this.baseMapper.selectDevNoAndNumBystationCode(stationCode);
+    }
+
+    @Override
+    public List<String> selectAllStationCode() {
+        return this.baseMapper.selectAllStationCode();
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
index fd4717c..66d1b6e 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
@@ -11,10 +12,7 @@
 import com.zy.asrs.entity.param.AgvTaskParam;
 import com.zy.asrs.entity.param.AgvTaskkDescribeParam;
 import com.zy.asrs.mapper.AgvWrkMastMapper;
-import com.zy.asrs.service.AgvLocMastService;
-import com.zy.asrs.service.AgvWrkDetlService;
-import com.zy.asrs.service.AgvWrkMastService;
-import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.*;
 import com.zy.common.utils.HttpHandler;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -55,6 +53,8 @@
     AgvLocMastService agvLocMastService;
     @Autowired
     ApiLogService apiLogService;
+    @Autowired
+    AgvBasDevpService agvBasDevpService;
 
     public void updateWrkStsByWrkNo(int wrkNo, long wrkSts) {
         AgvWrkMast agvWrkMast = this.selectById(wrkNo);
@@ -134,6 +134,15 @@
         return doHttpRequest(containerArrivedParam,"瀹瑰櫒杈惧埌閫氱煡",url, containerArrivedPath,null,"127.0.0.1");
     }
 
+    @Override
+    public List<AgvWrkMast> selectReadyAgvWrkMast() {
+        List<String> stationCodes = agvBasDevpService.selectAllStationCode();
+        Wrapper<AgvWrkMast> wrapper = new EntityWrapper<AgvWrkMast>().eq("wrk_sts", 21L).like(false, "loc_no", "@");
+        wrapper.in("loc_no",stationCodes);
+        return this.selectList(wrapper);
+        //return this.baseMapper.selectReadyAgvWrkMast();
+    }
+
     private void getContainerMoveParam(List<AgvWrkMast> agvWrkMastList,List<Map<String,String>> positionCodeMapList){
         //寰�瀹瑰櫒鍏ュ満鍙傛暟涓斁鍏ユ簮绔欑偣浣嶇疆
         for(AgvWrkMast agvWrkMast : agvWrkMastList){
diff --git a/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java b/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
index 626410c..37f2cff 100644
--- a/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.plugins.Page;
 import com.core.common.Cools;
 import com.zy.asrs.entity.AgvWrkMast;
+import com.zy.asrs.service.AgvBasDevpService;
 import com.zy.asrs.service.AgvWrkMastService;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.task.handler.AgvWrkMastHandler;
@@ -31,6 +32,8 @@
     AgvWrkMastHandler agvWrkMastHandler;
     @Autowired
     AgvWrkMastService agvWrkMastService;
+    @Autowired
+    AgvBasDevpService agvBasDevpService;
 
 
     /*
@@ -121,7 +124,7 @@
      */
     @Scheduled(cron = "0/5 * * * * ? ")
     public void dealWatiWrk(){
-        List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("wrk_sts", 21).like(false, "loc_no", "@"));
+        List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectReadyAgvWrkMast();
         if(!Cools.isEmpty(agvWrkMastList)){
             try {
                 ReturnT<String> returnT = agvWrkMastHandler.dealWatiWrk(agvWrkMastList);
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
index 73433b6..f7f3e71 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -10,6 +10,7 @@
 import com.zy.asrs.task.core.ReturnT;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -20,6 +21,9 @@
 @Slf4j
 @Service
 public class AgvWrkMastHandler extends AbstractHandler<String> {
+
+    @Value("${agvBasDev.maxWorkNum}")
+    private int maxWrokNum;
 
     @Autowired
     private AgvWrkMastService agvWrkMastService;
@@ -194,11 +198,20 @@
     public ReturnT<String> dealWatiWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
 
         agvWrkMastList.forEach(agvWrkMast -> {
-            //瀵绘壘绌虹珯鐐逛綅缃�
-            AgvBasDevp agvBasDevp = agvBasDevpService.selectEmptyDevpByStation(agvWrkMast.getLocNo());
-            if(!Cools.isEmpty(agvBasDevp)){
-                agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(),"S",null);
-                agvWrkMast.setLocNo(agvBasDevp.getDevNo());
+//            //瀵绘壘绌虹珯鐐逛綅缃�
+//            AgvBasDevp agvBasDevp = agvBasDevpService.selectEmptyDevpByStation(agvWrkMast.getLocNo());
+//            if(!Cools.isEmpty(agvBasDevp)){
+//                agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(),"S",null);
+//                agvWrkMast.setLocNo(agvBasDevp.getDevNo());
+//                agvWrkMastService.updateById(agvWrkMast);
+//            }
+
+            //鏌ヨ璇ョ珯鐐规墍鏈夋殏瀛樹綅鍦ㄥ伐浣滄。涓嚭鐜扮殑娆℃暟
+            List<Map<String, Object>> devNoMaps = agvBasDevpService.selectDevNoAndNumBystationCode(agvWrkMast.getLocNo());
+            //鍙栫涓�涓殏瀛樹綅锛屽苟鏌ヨ鍏舵鏁颁笌閰嶇疆鐨勬鏁板仛姣旇緝
+            Map<String, Object> devNoMap = devNoMaps.get(0);
+            if((int)devNoMap.get("num") < maxWrokNum){
+                agvWrkMast.setLocNo(devNoMap.get("dev_no").toString());
                 agvWrkMastService.updateById(agvWrkMast);
             }
 
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 62d51e3..cf53eac 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -88,3 +88,6 @@
   url: http://192.168.1.55:8010
   orderReportPath: /api/RdAudit
 
+agvBasDev:
+  maxWorkNum: 2
+

--
Gitblit v1.9.1