From eb5eb35a7ef56a01a4c788a8c2efef9fc7b823e7 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 27 三月 2023 14:04:54 +0800
Subject: [PATCH] 四向穿梭车线程完善
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 143 +++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 130 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 6d6cd4b..a8fa25d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,15 +10,11 @@
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
-import com.zy.common.model.LocTypeDto;
-import com.zy.common.model.MatDto;
-import com.zy.common.model.SearchLocParam;
-import com.zy.common.model.StartupDto;
+import com.zy.common.model.*;
import com.zy.common.model.enums.WrkChargeType;
import com.zy.common.service.CommonService;
import com.zy.common.service.erp.ErpService;
-import com.zy.common.utils.CollectionUtils;
-import com.zy.common.utils.HttpHandler;
+import com.zy.common.utils.*;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
import com.zy.core.News;
@@ -26,17 +22,13 @@
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.*;
import com.zy.core.model.*;
-import com.zy.core.model.command.CrnCommand;
-import com.zy.core.model.command.LedCommand;
-import com.zy.core.model.command.SteCommand;
+import com.zy.core.model.command.*;
import com.zy.core.model.protocol.CrnProtocol;
+import com.zy.core.model.protocol.ShuttleProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.model.protocol.SteProtocol;
import com.zy.core.properties.SlaveProperties;
-import com.zy.core.thread.BarcodeThread;
-import com.zy.core.thread.LedThread;
-import com.zy.core.thread.SiemensDevpThread;
-import com.zy.core.thread.SteThread;
+import com.zy.core.thread.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -96,6 +88,8 @@
private OrderMapper orderMapper;
@Autowired
private OrderDetlMapper orderDetlMapper;
+ @Autowired
+ private RedisUtil redisUtil;
/**
* 缁勬墭
@@ -612,6 +606,51 @@
}
/**
+ * 鍏ュ嚭搴� ===>> 鍥涘悜绌挎杞﹀叆鍑哄簱浣滀笟涓嬪彂
+ */
+ public synchronized void shuttleIoExecute() {
+ for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
+ //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ // 鍙湁褰撳洓鍚戠┛姊溅绌洪棽 骞朵笖鏃犱换鍔℃椂鎵嶇户缁墽琛�
+ if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE && shuttleProtocol.getTaskNo() == 0) {
+ //鍏ュ嚭搴撻�昏緫
+ for (WrkMast wrkSts : wrkMastMapper.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 2))) {
+ //鍒嗛厤浠诲姟鍙�
+ shuttleProtocol.setTaskNo(wrkSts.getWrkNo().shortValue());
+ //鍒嗛厤婧愬簱浣�
+ shuttleProtocol.setSourceLocNo(wrkSts.getSourceLocNo());
+ //鍒嗛厤鐩爣搴撲綅
+ shuttleProtocol.setLocNo(wrkSts.getLocNo());
+
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ //鍥涘悜绌挎杞﹀彿
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
+ //浠诲姟鍙�
+ assignCommand.setTaskNo(wrkSts.getWrkNo().shortValue());
+ //鍏ュ嚭搴撴ā寮�
+ assignCommand.setTaskMode((short) 0);
+ //婧愬簱浣�
+ assignCommand.setSourceLocNo(wrkSts.getSourceLocNo());
+ //鐩爣搴撲綅
+ assignCommand.setDistLocNo(wrkSts.getLocNo());
+
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+ }
+
+ }
+ }
+
+ }
+
+ /**
* 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
*/
public synchronized void crnIoExecute(){
@@ -715,6 +754,51 @@
}
if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) {
News.error("鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
+ continue;
+ }
+
+ List<LocMast> locMasts = null;
+ boolean sign=false;
+ if (locMast.getRow1()>=5){
+ locMasts=locMastService.selectList(new EntityWrapper<LocMast>().ge("row1", 5)
+ .eq("bay1",locMast.getBay1()).eq("lev1",locMast.getLev1()));
+ for (LocMast locMast1:locMasts){
+ if (locMast1.getRow1()>locMast.getRow1()){
+ if (!locMast1.getLocSts().equals("F") && !locMast1.getLocSts().equals("D")){
+ if (!locMast1.getLocSts().equals("X")){
+ sign=true;
+ break;
+ }
+ }
+ }else if (locMast1.getRow1()<locMast.getRow1()){
+ if (locMast1.getLocSts().equals("F") || locMast1.getLocSts().equals("D")){
+ News.error("褰撳墠宸ヤ綔妗g洰鏍囧簱浣嶆墍鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+ sign=true;
+ break;
+ }
+ }
+ }
+ }else {
+ locMasts=locMastService.selectList(new EntityWrapper<LocMast>().le("row1", 4)
+ .eq("bay1",locMast.getBay1()).eq("lev1",locMast.getLev1()));
+ for (LocMast locMast1:locMasts){
+ if (locMast1.getRow1()>locMast.getRow1()){
+ if (locMast1.getLocSts().equals("F") || locMast1.getLocSts().equals("D")){
+ News.error("褰撳墠宸ヤ綔妗g洰鏍囧簱浣嶆墍鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+ sign=true;
+ break;
+ }
+ }else if (locMast1.getRow1()<locMast.getRow1()){
+ if (!locMast1.getLocSts().equals("F") && !locMast1.getLocSts().equals("D")){
+ if (!locMast1.getLocSts().equals("X")){
+ sign=true;
+ break;
+ }
+ }
+ }
+ }
+ }
+ if (sign){
continue;
}
@@ -891,6 +975,36 @@
LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) {
News.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
+ continue;
+ }
+ List<LocMast> locMasts = null;
+ boolean sign=false;
+ if (sourceSta.getRow1()>=5){
+ locMasts=locMastService.selectList(new EntityWrapper<LocMast>().ge("row1", 5)
+ .eq("bay1",sourceSta.getBay1()).eq("lev1",sourceSta.getLev1()));
+ for (LocMast locMast1:locMasts){
+ if (locMast1.getRow1()<sourceSta.getRow1()){
+ if (!locMast1.getLocSts().equals("O")){
+ News.error("褰撳墠宸ヤ綔妗f簮搴撲綅鎵�鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+ sign=true;
+ break;
+ }
+ }
+ }
+ }else {
+ locMasts=locMastService.selectList(new EntityWrapper<LocMast>().le("row1", 4)
+ .eq("bay1",sourceSta.getBay1()).eq("lev1",sourceSta.getLev1()));
+ for (LocMast locMast1:locMasts){
+ if (locMast1.getRow1()>sourceSta.getRow1()){
+ if (!locMast1.getLocSts().equals("O")){
+ News.error("褰撳墠宸ヤ綔妗g洰鏍囧簱浣嶆墍鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+ sign=true;
+ break;
+ }
+ }
+ }
+ }
+ if (sign){
continue;
}
@@ -2510,6 +2624,9 @@
*/
@SuppressWarnings("serial")
public synchronized void loopSteCharge() {
+ if (!Cools.isEmpty(wrkMastMapper.selectAllC())){
+ return;
+ }
if (null != wrkChargeService.selectWorking(null, WrkChargeType.reset)) {
return;
}
--
Gitblit v1.9.1