From 3ba44e1a566074a38779c918da391b5c6264a381 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期一, 03 十一月 2025 18:28:58 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 258 ++++++++++++++++++++++++++++++++-------------------
1 files changed, 162 insertions(+), 96 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 6f9f172..a7a1d9c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -11,6 +11,7 @@
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.domain.param.CrnOperatorParam;
import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.TaskCreateParam;
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.*;
@@ -81,6 +82,8 @@
private CrnController crnController;
@Autowired
private BasDevpPositionService basDevpPositionService;
+ @Autowired
+ private OpenService openService;
@Value("${wms.url}")
private String wmsUrl;
@@ -670,6 +673,7 @@
CrnSlave crnSlave = new CrnSlave(crn);
if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
+ CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄贩閬撳彿寮傚父锛�");
continue;
}
@@ -761,19 +765,25 @@
if (!taskWrks.isEmpty()) {
continue;
}
- List<TaskWrkLog> taskWrkLogs = taskWrkLogService.selectList(new EntityWrapper<TaskWrkLog>().eq("CRN_NO",crnProtocol.getLaneNo()).orderBy("COMPLETE_TIME",true));
+ List<TaskWrkLog> taskWrkLogs = taskWrkLogService.selectList(new EntityWrapper<TaskWrkLog>().eq("CRN_NO",crnProtocol.getLaneNo()).orderBy("COMPLETE_TIME",false));
if (!taskWrkLogs.isEmpty()) {
- TaskWrkLog taskWrkLog = taskWrkLogs.get(0);
- Date completeTime = taskWrkLog.getCompleteTime();
- if (completeTime==null){
- completeTime = taskWrkLog.getCancelTime();
+ boolean signT = false;
+ for (TaskWrkLog taskWrkLog : taskWrkLogs){
+ Date completeTime = taskWrkLog.getCompleteTime();
if (completeTime==null){
- completeTime = taskWrkLog.getModiTime();
+ continue;
+ }
+ long differenceInSeconds = TimeCalculatorUtils.differenceInMilliseconds(completeTime, new Date());
+ if (differenceInSeconds <= 60*2*1000) {
+ signT = true;
+ break;
+ } else {
+ signT = false;
+ break;
}
}
- long differenceInSeconds = TimeCalculatorUtils.differenceInMilliseconds(completeTime, new Date());
- if (differenceInSeconds <= 60*10*1000) {
- return;
+ if (signT){
+ continue;
}
}
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
@@ -782,11 +792,11 @@
crnCommand.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈哄贩閬撶紪鍙�
crnCommand.setTaskNo((short)999); // 宸ヤ綔鍙�
crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
- crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡: 搴撲綅绉昏浆
- crnCommand.setSourcePosX((short) 0); // 婧愬簱浣嶆帓
- crnCommand.setSourcePosY((short) 0); // 婧愬簱浣嶅垪
- crnCommand.setSourcePosZ((short) 0); // 婧愬簱浣嶅眰
+ crnCommand.setTaskMode(CrnTaskModeType.SITE_MOVE); // 浠诲姟妯″紡: 绔欎綅绉昏浆4
int row = crnProtocol.getLaneNo() * 2;
+ crnCommand.setSourcePosX((short) row); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY((short) 1); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰
crnCommand.setDestinationPosX((short) row); // 鐩爣搴撲綅鎺�
crnCommand.setDestinationPosY((short) 1); // 鐩爣搴撲綅灞�
crnCommand.setDestinationPosZ((short) 1); // 鐩爣搴撲綅鍒�
@@ -809,7 +819,7 @@
}
}
} catch (Exception e){
- log.error("鍫嗗灈鏈�5鍒嗛挓鏃犱换鍔″垯鍥炲埌婧愮偣澶辫触");
+ log.error("鍫嗗灈鏈�10鍒嗛挓鏃犱换鍔″垯鍥炲埌婧愮偣澶辫触");
}
}
}
@@ -833,6 +843,7 @@
CrnSlave crn = new CrnSlave(crnSlave);
if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
+ CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄贩閬撳彿寮傚父锛�");
continue;
}
@@ -941,41 +952,6 @@
// 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) {
- TaskWrk taskWrkNow3 = taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo());
- if (taskWrkNow3.getWrkSts() == 3){
- try{
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- CrnCommand crnCommand = new CrnCommand();
- crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
- crnCommand.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈哄贩閬撶紪鍙�
- crnCommand.setTaskNo(taskWrkNow3.getWrkNo().shortValue()); // 宸ヤ綔鍙�
- crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
- crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
- crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓
- crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪
- crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰
- crnCommand.setDestinationPosX(Utils.getRowShort(taskWrkNow3.getTargetPoint())); // 鐩爣搴撲綅鍒�
- int bay1 = Utils.getBayShort(taskWrkNow3.getTargetPoint()) + 1;
- crnCommand.setDestinationPosY((short)bay1); // 鐩爣搴撲綅灞�
- crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrkNow3.getTargetPoint())); // 鐩爣搴撲綅鎺�
-// crnCommand.setCommand((short) 1);
- try{
- DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
- deviceErrorService.addDeviceError("CrnErr", slave.getId(), "宸烽亾鍙�"+crnCommand.getLaneNo()+";鍫嗗灈鏈哄懡浠ゅ湴鍧�琛ヤ竵閲嶆柊鍐欏叆:"+JSON.toJSONString(crnCommand.getNowTask()));
- } catch (Exception e2){
- }
- if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
- log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
- devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
- CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "杩愯鍛戒护涓嬪彂澶辫触");
-
- throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
- }
- } catch (Exception eNow3){
-
- }
- }
-
devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄瓨鍦ㄥ悐杞︿换鍔�");
CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄瓨鍦ㄦ墽琛屼腑鍚婅溅浠诲姟");
continue;
@@ -1024,22 +1000,22 @@
// }
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- CrnCommand crnCommand = new CrnCommand();
- crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
- crnCommand.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈哄贩閬撶紪鍙�
- crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
- crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
- crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
- crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓
- crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪
- crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰
- crnCommand.setDestinationPosX(Utils.getRowShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒�
+ CrnCommand crnCommand1 = new CrnCommand();
+ crnCommand1.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand1.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈哄贩閬撶紪鍙�
+ crnCommand1.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+ crnCommand1.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand1.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
+ crnCommand1.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓
+ crnCommand1.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪
+ crnCommand1.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰
+ crnCommand1.setDestinationPosX(Utils.getRowShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒�
int bay1 = Utils.getBayShort(taskWrk.getTargetPoint()) + 1;
- crnCommand.setDestinationPosY((short)bay1); // 鐩爣搴撲綅灞�
- crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺�
+ crnCommand1.setDestinationPosY((short)bay1); // 鐩爣搴撲綅灞�
+ crnCommand1.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺�
// crnCommand.setCommand((short) 1);
- if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
- log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
+ if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand1))) {
+ log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand1));
devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "杩愯鍛戒护涓嬪彂澶辫触");
@@ -1153,39 +1129,6 @@
// 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) {
-
- TaskWrk taskWrkNow3 = taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo());
- if (taskWrkNow3.getWrkSts() == 12){
- try{
- CrnCommand command = new CrnCommand();
- command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
- command.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈虹紪鍙�
- command.setTaskNo(taskWrkNow3.getWrkNo().shortValue()); // 宸ヤ綔鍙�
- command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
- command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡
- command.setSourcePosX(Utils.getRowShort(taskWrkNow3.getStartPoint())); // 婧愬簱浣嶆帓
- int bayS = Utils.getBayShort(taskWrkNow3.getStartPoint()) + 1;
- command.setSourcePosY((short)bayS); // 婧愬簱浣嶅垪
- command.setSourcePosZ(Utils.getLevShort(taskWrkNow3.getStartPoint())); // 婧愬簱浣嶅眰
- command.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺�
- command.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒�
- command.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞�
-// command.setCommand((short) 1);
- try{
- DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
- deviceErrorService.addDeviceError("CrnErr", slave.getId(), "宸烽亾鍙�"+command.getLaneNo()+";鍫嗗灈鏈哄懡浠ゅ湴鍧�琛ヤ竵閲嶆柊鍐欏叆:"+JSON.toJSONString(command.getNowTask()));
- } catch (Exception e2){
- }
- if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command))) {
- log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屽贩閬�={}锛屼换鍔℃暟鎹�={}", slave.getId(), taskWrk.getCrnNo(), JSON.toJSON(command));
- devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
- CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "杩愯鍛戒护涓嬪彂澶辫触");
- throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
- }
- } catch (Exception eNow3){
-
- }
- }
devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄瓨鍦ㄥ悐杞︿换鍔�");
CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄瓨鍦ㄦ墽琛屼腑鍚婅溅浠诲姟");
break;
@@ -1312,6 +1255,7 @@
// 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) {
+ CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄瓨鍦ㄦ墽琛屼腑鍚婅溅浠诲姟");
continue;
}
@@ -1408,6 +1352,7 @@
CrnSlave crn = new CrnSlave(crnSlave);
if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
+ CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄贩閬撳彿寮傚父锛�");
continue;
}
@@ -2738,4 +2683,125 @@
}
+
+ /**
+ * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
+ */
+ public boolean crnStnDEMOStop2() {
+ int signHpMk = 0;
+ for (CrnSlave crn : slaveProperties.getCrn()) {
+
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol == null) {
+ continue;
+ }
+ BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+ if (basCrnp == null) {
+ log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+ continue;
+ }
+
+ if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){
+ signHpMk++;
+ }
+ }
+ if (signHpMk == slaveProperties.getCrn().size()){
+ return true;
+ }
+ return false;
+ }
+
+
+
+ /**
+ * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
+ */
+ public boolean crnStnDEMOStop3() {
+ int selectCount = taskWrkService.selectCount(new EntityWrapper<TaskWrk>().eq("io_type",4));
+ if (selectCount>0) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * 婕旂ず妯″紡鍚姩
+ */
+ public boolean crnStnDEMOOpen0() {
+ for (CrnSlave crn : slaveProperties.getCrn()) {
+
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol == null) {
+ continue;
+ }
+ BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+ if (basCrnp == null) {
+ log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+ continue;
+ }
+
+ if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){
+ continue;
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 婕旂ず妯″紡鍚姩
+ */
+ public boolean crnStnDEMOOpen1() {
+ int selectCount = taskWrkService.selectCount(new EntityWrapper<TaskWrk>());
+ if (selectCount>0) {
+ return false;
+ }
+ for (CrnSlave crn : slaveProperties.getCrn()) {
+
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol == null) {
+ continue;
+ }
+ BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+ if (basCrnp == null) {
+ log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+ continue;
+ }
+
+ if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){
+ CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "瀛樺湪鍏跺畠鍫嗗灈鏈哄紑鍚紨绀烘ā寮忥紒");
+ continue;
+ }
+
+ CrnSlave crnSlave = new CrnSlave(crn);
+ if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
+ CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄贩閬撳彿寮傚父锛�");
+ continue;
+ }
+
+ if (!crn.getId().equals(crnProtocol.getLaneNo())) {
+ for (CrnSlave crnOther : slaveProperties.getCrn()) {
+ if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
+ crnSlave.updateCrnInStn(crnOther);
+ }
+ }
+ }
+ for (String locNo : crnProtocol.getLocMastDemoList()){
+ LocMast locMast = locMastService.selectByLocNo(locNo);
+ TaskCreateParam taskCreateParam = new TaskCreateParam(crnSlave,locMast);
+ openService.taskCreate(taskCreateParam);
+ }
+
+ return true;
+ }
+ return false;
+ }
+
+
}
--
Gitblit v1.9.1