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