From cb2d5d9ac39efdb38d8a301f7396ac1ab171efc1 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期四, 09 五月 2024 21:49:11 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 306 ++++++++++++++++++++++++++++++++++----------------
1 files changed, 208 insertions(+), 98 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 8263c0a..d2181a2 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -90,6 +90,8 @@
private BasCrnErrorMapper basCrnErrorMapper;
@Autowired
private EmptyBarrelInService emptyBarrelInService;
+ @Autowired
+ private WrkMastStaService wrkMastStaService;
@Value("${wms.url}")
private String wmsUrl;
@@ -2299,7 +2301,7 @@
} else {
staProtocol = staProtocol.clone();
}
- if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) {
+// if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) {
// 鏌ヨ宸ヤ綔妗�
WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(crnStn.getStaNo());
if (wrkMast == null) {
@@ -2334,7 +2336,7 @@
}
- }
+// }
}
}
}
@@ -2491,111 +2493,219 @@
for (RgvSlave rgvSlave:slaveProperties.getRgv()){
ZyRgvThread rgvThread = (ZyRgvThread)SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol.getModeType() != RgvModeType.AUTO){
+ if (Cools.isEmpty(rgvProtocol)){
continue;
- }
-
-
- int workNo1 = 0;
- int workNo2 = 0;
- short souSta1 = 0;
- short sta1 = 0;
- short souSta2 = 0;
- short sta2 = 0;
-
- //宸ヤ綅涓�浠诲姟
- for (RgvSlave.Sta inStn : rgvSlave.getInStn()){
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
- StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
- if (staProtocol == null) {
- break;
-// continue;
- } else {
- staProtocol = staProtocol.clone();
- }
- if (staProtocol.isLoading() && staProtocol.isLoading() && staProtocol.isInEnable()){
- if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
- WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
- if (Cools.isEmpty(wrkMast)){
- log.error("鏈壘鍒板伐浣滄。");
- continue;
- }
- workNo1 = wrkMast.getWrkNo();
- souSta1 = inStn.getSourceStaNo().shortValue();
- sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
- break;
- }
- workNo1 = workNo++;
- souSta1 = inStn.getSourceStaNo().shortValue();
- sta1 = inStn.getStaNo().shortValue();
- break;
- }
- }
-
-
- //宸ヤ綅浜屼换鍔�
- for (RgvSlave.Sta inStn : rgvSlave.getInStn()){
- if (souSta1 == inStn.getSourceStaNo()){
- continue;
- }
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
- StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
- if (staProtocol == null) {
- break;
-// continue;
- } else {
- staProtocol = staProtocol.clone();
- }
- if (staProtocol.isLoading() && staProtocol.isLoading() && staProtocol.isInEnable()){
- if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
- WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
- if (Cools.isEmpty(wrkMast)){
- log.error("鏈壘鍒板伐浣滄。");
- continue;
- }
- workNo2 = wrkMast.getWrkNo();
- souSta2 = inStn.getSourceStaNo().shortValue();
- sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
- break;
- }
- workNo2 = workNo++;
- souSta2 = inStn.getSourceStaNo().shortValue();
- sta2 = inStn.getStaNo().shortValue();
- break;
- }
- }
-
- //rgv浠诲姟涓嬪彂--------------------------------------------------------------
- RgvCommand command = new RgvCommand();
- command.setRgvNo(rgvSlave.getId()); // RGV缂栧彿
- //宸ヤ綅1
- command.setTaskNo1(workNo1); // 宸ヤ綔鍙�
- command.setSourceStaNo1(souSta1); // 婧愮珯
- command.setDestinationStaNo1(sta1); // 鐩爣绔�
- command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣�
-
- //宸ヤ綅2
- command.setTaskNo2(workNo2); // 宸ヤ綔鍙�
- command.setSourceStaNo2(souSta2); // 婧愮珯
- command.setDestinationStaNo2(sta2); // 鐩爣绔�
- command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣�
-
- if (workNo1 != 0 && workNo2 ==0){
- command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 鍙栨斁璐�
- } else if (workNo1 == 0 && workNo2 !=0) {
- command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 浠诲姟妯″紡: 鍙栨斁璐�
}else {
- command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 浠诲姟妯″紡: 鍙栨斁璐�
+ rgvProtocol = rgvProtocol.clone();
}
- command.setCommand(false);
- MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command));
- log.info("rgv浠诲姟涓嬪彂锛�"+JSON.toJSONString(command));
+ if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getLoaded1() == 0){
+ boolean work1 = false;
+ boolean work2 = false;
+ int workNo1 = 0;
+ int workNo2 = 0;
+ short souSta1 = 0;
+ short sta1 = 0;
+ short souSta2 = 0;
+ short sta2 = 0;
+
+ //宸ヤ綅涓�浠诲姟
+ for (RgvSlave.Sta inStn : rgvSlave.getInStn()){
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
+ if (staProtocol == null) {
+ break;
+// continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){
+ if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
+ WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
+ if (Cools.isEmpty(wrkMast)){
+ log.error("鏈壘鍒板伐浣滄。");
+ continue;
+ }
+ workNo1 = wrkMast.getWrkNo();
+ souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),wrkMast.getSourceStaNo());
+ sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
+ work1 = true;
+ devpThread.setPakMk(inStn.getSourceStaNo(),false);
+ break;
+ }
+ workNo1 = workNo++;
+ souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo());
+ sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo());
+ work1 = true;
+ devpThread.setPakMk(inStn.getSourceStaNo(),false);
+ break;
+ }
+ }
+
+
+ //宸ヤ綅浜屼换鍔�
+ for (RgvSlave.Sta inStn : rgvSlave.getInStn()){
+ if (souSta1 == inStn.getSourceStaNo()){
+ continue;
+ }
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
+ if (staProtocol == null) {
+ break;
+// continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()&& staProtocol.isPakMk()){
+ if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
+ WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
+ if (Cools.isEmpty(wrkMast)){
+ log.error("鏈壘鍒板伐浣滄。");
+ continue;
+ }
+ workNo2 = wrkMast.getWrkNo();
+ souSta2 = inStn.getSourceStaNo().shortValue();
+ sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
+ work2 = true;
+ devpThread.setPakMk(inStn.getSourceStaNo(),false);
+ break;
+ }
+ workNo2 = workNo++;
+ souSta2 = inStn.getSourceStaNo().shortValue();
+ sta2 = inStn.getStaNo().shortValue();
+ work2 = true;
+ devpThread.setPakMk(inStn.getSourceStaNo(),false);
+ break;
+ }
+ }
+
+ if (work1 || work2){
+ //rgv浠诲姟涓嬪彂--------------------------------------------------------------
+ RgvCommand command = new RgvCommand();
+ command.setRgvNo(rgvSlave.getId()); // RGV缂栧彿
+ //宸ヤ綅1
+ command.setTaskNo1(workNo1); // 宸ヤ綔鍙�
+ command.setSourceStaNo1(souSta1); // 婧愮珯
+ command.setDestinationStaNo1(sta1); // 鐩爣绔�
+ command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣�
+
+ //宸ヤ綅2
+ command.setTaskNo2(workNo2); // 宸ヤ綔鍙�
+ command.setSourceStaNo2(souSta2); // 婧愮珯
+ command.setDestinationStaNo2(sta2); // 鐩爣绔�
+ command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣�
+
+ if (workNo1 == 0 && workNo2 !=0){
+ command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 鍙栨斁璐�
+ } else if (workNo1 != 0 && workNo2 ==0) {
+ command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 浠诲姟妯″紡: 鍙栨斁璐�
+ }else {
+ command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 浠诲姟妯″紡: 鍙栨斁璐�
+ }
+ command.setCommand(false);
+ rgvTaskSave(command);
+ MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command));
+ log.info("rgv浠诲姟涓嬪彂锛�"+JSON.toJSONString(command));
+ }
+ }
+
+
+
+
}
}
public synchronized void RGVTaskOver() {
+ for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+ ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (Cools.isEmpty(rgvProtocol)){
+ continue;
+ }else {
+ rgvProtocol = rgvProtocol.clone();
+ }
+ //宸ヤ綅涓�浠诲姟瀹屾垚
+ if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 1) {
+ WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1());
+ if (Cools.isEmpty(wrkMastSta)){
+ log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
+ continue;
+ }
+ for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk()){
+// staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+// staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
+ continue;
+ }
+ }
+
+ }
+
+ MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3,new RgvCommand()));
+ log.info("{}鍙穜gv宸ヤ綅涓�宸ヤ綔瀹屾垚澶嶄綅,宸ヤ綔鍙�:{}",rgvSlave.getId(),wrkMastSta.getWrkNo());
+ }
+
+ //宸ヤ綅浜屼换鍔″畬鎴�
+ if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 1) {
+ WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2());
+ if (Cools.isEmpty(wrkMastSta)){
+ log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2());
+ continue;
+ }
+ for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk()){
+// staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+// staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
+ continue;
+ }
+ }
+
+ }
+
+ MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand()));
+ log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),wrkMastSta.getWrkNo2());
+ }
+ }
}
+
+ public boolean rgvTaskSave(RgvCommand command){
+ Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", command.getRgvNo()).eq("wrk_no", command.getTaskNo1());
+ WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper);
+ if (!Cools.isEmpty(wrkMastSta1)){
+ wrkMastStaService.delete(wrkMastStaWrapper);
+ }
+ WrkMastSta wrkMastSta = new WrkMastSta();
+ wrkMastSta.setWrkNo(Long.valueOf(command.getTaskNo1()));
+ wrkMastSta.setWrkNo2(Long.valueOf(command.getTaskNo2()));
+ wrkMastSta.setWrkStart(command.getSourceStaNo1().intValue());
+ wrkMastSta.setWrkEnd(command.getDestinationStaNo1().intValue());
+ wrkMastSta.setStaStart(command.getSourceStaNo2().intValue());
+ wrkMastSta.setStaEnd(command.getDestinationStaNo2().intValue());
+ wrkMastSta.setWrkSts(1);
+ Date now = new Date();
+ wrkMastSta.setCreateTime(now);
+ wrkMastSta.setUpdateTime(now);
+ wrkMastSta.setWrkCrn(command.getRgvNo());
+ wrkMastSta.setWrkType(command.getTaskMode().intValue());
+ return wrkMastStaService.insert(wrkMastSta);
+ }
+
}
--
Gitblit v1.9.1