From ab14726215678ac69adfeafbd845ebc5b0776ea2 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期二, 14 一月 2025 14:56:41 +0800
Subject: [PATCH] 优化订单同步逻辑及库位查找
---
src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java | 253 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 245 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java b/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
index e5f5ad1..90fe463 100644
--- a/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
@@ -1,22 +1,34 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.zy.asrs.entity.AgvBasDevp;
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;
+import com.zy.common.entity.Parameter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
/**
- * 瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚鐨勬暟鎹�
+ * 浠诲姟绫诲瀷锛�
+ * 飦� putaway锛氫笂鏋躲��
+ * 飦� carry锛氭惉杩愶紝缁熸寚鍑哄簱銆佺Щ搴撱�佺偣鍒扮偣鎼繍绛夈��
+ * 飦� scan锛氭壂鎻忕洏鐐广��
+ * 飦� weight锛氱О閲嶇洏鐐广��
+ * 飦� rfid锛歳fid鐩樼偣銆�
*/
@Slf4j
@Component
@@ -26,33 +38,258 @@
AgvWrkMastHandler agvWrkMastHandler;
@Autowired
AgvWrkMastService agvWrkMastService;
+ @Autowired
+ AgvBasDevpService agvBasDevpService;
- @Scheduled(cron = "0/5 * * * * ? ")
+
+ /*
+ 瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚 涓� 锛�1.鍏ュ簱 || 53锛屾嫞鏂欏叆搴� || 57.鐩樼偣鍏ュ簱 || 10.绌烘澘鍏ュ簱 || 11.鍗曞眰绉诲簱 || 12.璺ㄥ眰绉诲簱 || 108.鑷姩璋冩嫧 || 109.鎵嬪姩璋冩嫧)鐨勬暟鎹�
+ */
+ //@Scheduled(cron = "0/1 * * * * ? ")
+ @Scheduled(fixedDelay = 1000)
public void excutePutwayWrk(){
List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
.eq("wrk_sts", 205)
- .eq("io_type",1));
+ .andNew().eq("io_type",53)
+ .or().eq("io_type",1)
+ .or().eq("io_type",57)
+ .or().eq("io_type",58)
+ .or().eq("io_type",10)
+ .or().eq("io_type",11)
+ .or().eq("io_type",12)
+ .or().eq("io_type",108)
+ .or().eq("io_type",109)
+ .or().eq("io_type",111)
+ .or().eq("io_type",112)
+ .or().eq("io_type",113)
+ .or().eq("io_type",114)
+ .or().eq("io_type",121)
+ );
if(!Cools.isEmpty(agvWrkMastList)){
agvWrkMastList.stream().forEach(agvWrkMast -> {
- ReturnT<String> returnT = agvWrkMastHandler.completedPutWayWrk(agvWrkMast);
+ try{
+ agvWrkMastHandler.completedPutWayWrk(agvWrkMast);
+ } catch (Exception e){
+ log.error("宸ヤ綔鍙�"+agvWrkMast.getWrkNo()+"瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负205,澶勭悊澶辫触锛�===銆嬪紓甯稿師鍥狅細"+e.getMessage());
+ }
});
}
}
- @Scheduled(cron = "0/5 * * * * ? ")
- public void startPutwayWrk(){
+ /*
+ 瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负206.鍑哄簱瀹屾垚 涓� (101.鍑哄簱 || 110.绌烘澘鍑哄簱)
+ */
+ //@Scheduled(cron = "0/1 * * * * ? ")
+ @Scheduled(fixedDelay = 1000)
+ public void excuteCarryWrk(){
+ List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
+ .eq("wrk_sts", 206)
+ .andNew().eq("io_type",110)
+ .or().eq("io_type",101));
+ if(!Cools.isEmpty(agvWrkMastList)){
+ agvWrkMastList.stream().forEach(agvWrkMast -> {
+ try{
+ agvWrkMastHandler.completedCarryWrk(agvWrkMast);
+ } catch (Exception e){
+ //e.printStackTrace();
+ log.error("宸ヤ綔鍙�"+agvWrkMast.getWrkNo()+"瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负206,澶勭悊澶辫触锛�===銆嬪紓甯稿師鍥狅細"+e.getMessage());
+ }
+ });
+ }
+ }
+
+ /*
+ 瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负206.鍑哄簱瀹屾垚 涓� (101.鍑哄簱 || 110.绌烘澘鍑哄簱)
+ */
+ //@Scheduled(cron = "0/1 * * * * ? ")
+ @Scheduled(fixedDelay = 1000)
+ public void excuteCarryWrk2(){
+ List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
+ .eq("wrk_sts", 208)
+ .andNew().eq("io_type",110)
+ .or().eq("io_type",101));
+ if(!Cools.isEmpty(agvWrkMastList)){
+ agvWrkMastList.stream().forEach(agvWrkMast -> {
+ try{
+ agvWrkMastHandler.completedCarryWrk2(agvWrkMast);
+ } catch (Exception e){
+ log.error("宸ヤ綔鍙�"+agvWrkMast.getWrkNo()+"瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负206,澶勭悊澶辫触锛�===銆嬪紓甯稿師鍥狅細"+e.getMessage());
+ }
+ });
+ }
+ }
+
+
+ /*
+ putaway锛氫笂鏋�
+ 瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负201.鐢熸垚鍏ュ簱浠诲姟ID 涓�(鍑哄簱绫诲瀷涓� 53.鎷f枡鍐嶅叆搴� || 1.鍏ュ簱 || 10.绌烘澘鍏ュ簱鏍� || 57.鐩樼偣鍐嶅叆搴�)鐨勬暟鎹�
+ */
+ //@Scheduled(cron = "0/1 * * * * ? ")
+ @Scheduled(fixedDelay = 3000)
+ public synchronized void startPutwayWrk(){
List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectPage(new Page<>(1, 50)
,new EntityWrapper<AgvWrkMast>()
.eq("wrk_sts", 201)
- .eq("io_type", 1)).getRecords();
+ .andNew().eq("io_type", 53)
+ .or().eq("io_type", 1)
+ .or().eq("io_type", 10)
+ .or().eq("io_type", 57)
+ .or().eq("io_type", 58)
+ .or().eq("io_type", 11)
+ .or().eq("io_type", 12)
+ .or().eq("io_type", 109)
+ .or().eq("io_type", 108)
+ .or().eq("io_type", 111)
+ .or().eq("io_type", 112)
+ .or().eq("io_type", 113)
+ .or().eq("io_type", 114)).getRecords();
if(!Cools.isEmpty(agvWrkMastList)){
+ agvWrkMastList.forEach(agvWrkMast -> {
+ try{
+ agvWrkMastHandler.startPutWayWrk(agvWrkMast);
+ } catch (Exception e){
+ log.error("宸ヤ綔鍙�"+agvWrkMast.getWrkNo()+"瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负201,澶勭悊澶辫触锛�===銆嬪紓甯稿師鍥狅細"+e.getMessage());
+ }
+ });
+ }
+ }
+
+ /*
+ putaway锛氫笂鏋�
+ 瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负201.鐢熸垚鍏ュ簱浠诲姟ID 涓�(鍑哄簱绫诲瀷涓� 53.鎷f枡鍐嶅叆搴� || 1.鍏ュ簱 || 10.绌烘澘鍏ュ簱鏍� || 57.鐩樼偣鍐嶅叆搴�)鐨勬暟鎹�
+ */
+ //@Scheduled(cron = "0/1 * * * * ? ")
+ @Scheduled(fixedDelay = 1000)
+ public void startAllcationIn(){
+ List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectPage(new Page<>(1, 50)
+ ,new EntityWrapper<AgvWrkMast>()
+ .eq("wrk_sts", 211)
+ .andNew().eq("io_type", 112)).getRecords();
+
+ if(!Cools.isEmpty(agvWrkMastList)){
+ agvWrkMastList.forEach(agvWrkMast -> {
+ try {
+ agvWrkMastHandler.startAllcationIn(agvWrkMast);
+ } catch (IOException e) {
+ log.error(e.getMessage());
+ }
+ });
+ }
+ }
+
+ /*
+ carry锛氭惉杩愶紝缁熸寚鍑哄簱銆佺Щ搴撱�佺偣鍒扮偣鎼繍绛�
+ 瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负21.鐢熸垚鍑哄簱浠诲姟 涓�(鍑哄簱绫诲瀷涓� 101.鍑哄簱 || 103.鎷f枡鍑哄簱 || 11.搴撴牸绉绘牻 || 110.绌烘澘鍑哄簱 || 107.鐩樼偣鍑哄簱)鐨勬暟鎹�
+ */
+ //@Scheduled(cron = "0/1 * * * * ? ")
+ @Scheduled(fixedDelay = 2000)
+ public void startCarryWrk(){
+ List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectPage(new Page<>(1, 50)
+ ,new EntityWrapper<AgvWrkMast>()
+ .eq("wrk_sts", 21)
+ //.like("loc_no","@")
+ .andNew().eq("io_type", 101)
+ .or().eq("io_type", 103)
+ .or().eq("io_type", 11)
+ .or().eq("io_type", 110)
+ .or().eq("io_type", 107)
+ .or().eq("io_type", 109)
+ .or().eq("io_type", 108)).getRecords();
+
+ if(!Cools.isEmpty(agvWrkMastList)){
+ List<String> devNos = new ArrayList<>();
+ agvWrkMastList.forEach(agvWrkMast -> {
+ try {
+
+ //杩囨护璇ユ壒宸ヤ綔妗d腑閲嶅鐨勫嚭绔欑偣
+ if (devNos.contains(agvWrkMast.getLocNo())){
+ return;
+ }
+ devNos.add(agvWrkMast.getLocNo());
+
+ //妫�娴嬪綋鍓嶅伐浣滀换鍔′腑鐨勭珯鐐规槸鍚﹀凡鏈夋湁浣滀笟涓殑浠诲姟
+ AgvWrkMast agvWrkMastWorking = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>()
+ .eq("loc_no", agvWrkMast.getLocNo())
+ .ge("wrk_sts", 202L));
+
+ if(!Cools.isEmpty(agvWrkMastWorking)){
+ return;
+ }
+
+ agvWrkMastWorking = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>()
+ .eq("source_loc_no",agvWrkMast.getLocNo())
+ .le("wrk_sts",204L));
+
+ if(!Cools.isEmpty(agvWrkMastWorking)){
+ return;
+ }
+ agvWrkMastHandler.startPutWayWrk(agvWrkMast);
+ } catch (Exception e) {
+ log.error("鎼繍锛岀粺鎸囧嚭搴撱�佺Щ搴撱�佺偣鍒扮偣鎼繍绛�"+e.getMessage());
+ }
+ });
+ }
+ }
+
+ /*
+ 瀹氭椂澶勭悊绛夊緟鎵ц鐨勪换鍔� 宸ヤ綔鐘舵�佷负21.鐢熸垚鍑哄簱浠诲姟 涓旂洰鏍囧簱浣嶄腑涓嶅惈@瀛楃
+ */
+ //@Scheduled(cron = "0/10 * * * * ? ")
+ public void dealWatiWrk(){
+ List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectReadyAgvWrkMast();
+ if(!Cools.isEmpty(agvWrkMastList)){
try {
- ReturnT<String> returnT = agvWrkMastHandler.startPutWayWrk(agvWrkMastList);
+ ReturnT<String> returnT = agvWrkMastHandler.dealWatiWrk(agvWrkMastList);
} catch (IOException e) {
log.error(e.getMessage());
}
}
}
+
+ /*
+ 鑷姩鐢熸垚绌烘澘鍑哄簱浠诲姟
+ */
+ //@Scheduled(cron = "0/1 * * * * ? ")
+ @Scheduled(fixedDelay = 1000)
+ public void autoEmptyOut(){
+ boolean packageEmptyAutoOUt = Cools.eq("Y",Parameter.get().getPackageEmptyAutoOUt());
+ boolean mateEmptyAutoOut = Cools.eq("Y",Parameter.get().getMateEmptyAutoOut());
+ boolean boxEmptyAutoOut = Cools.eq("Y",Parameter.get().getBoxEmptyAutoOut());
+
+ if(!packageEmptyAutoOUt && !mateEmptyAutoOut && !boxEmptyAutoOut){
+ return;
+ }
+
+ List<Integer> locType1Condition = new ArrayList<>();
+ if(packageEmptyAutoOUt){
+ locType1Condition.add(1);
+ }
+ if(mateEmptyAutoOut){
+ locType1Condition.add(2);
+ }
+ if(boxEmptyAutoOut){
+ locType1Condition.add(3);
+ }
+
+ //鎵惧嚭闇�瑕佽ˉ鏂欑殑绔欑偣
+ Wrapper<AgvBasDevp> wrapper = new EntityWrapper<AgvBasDevp>()
+ .eq("in_enable", "Y")
+ .eq("loc_sts", "O")
+ .in("loc_type1", locType1Condition);
+
+ List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(wrapper);
+ for (AgvBasDevp agvBasDevp : agvBasDevpList){
+ try {
+ agvWrkMastHandler.autoEmptyOut(agvBasDevp);
+ }catch (Exception e){
+ log.error(e.getMessage());
+ e.printStackTrace();
+ }
+
+ }
+
+ }
+
}
--
Gitblit v1.9.1