From b3d960252636140962bf9bbdf053d3b1d3255020 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期二, 06 十二月 2022 11:06:44 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 98 ++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 85 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 d00577d..164bf82 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -39,7 +39,6 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -537,7 +536,6 @@
/**
* 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
*/
- @Async
public void crnStnToOutStn() {
for (CrnSlave crnSlave : slaveProperties.getCrn()) {
// 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
@@ -777,8 +775,9 @@
wrkMast.setModiTime(now);
if (wrkMastMapper.updateById(wrkMast) == 0) {
log.error("淇敼宸ヤ綔妗g姸鎬� {} => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkSts$(), wrkMast.getWrkNo());
+ } else {
+ return true;
}
- return true;
}
}
} else {
@@ -793,11 +792,13 @@
// 娌℃湁鍏朵粬浠诲姟
if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) {
this.letCarBeReady(wrkMast, steNo, wrkMast.getLocNo());
+ return true;
}
}
// 灏忚溅鎼蛋
if (wrkMast.getWrkSts() == 3L) {
this.carMoveOut(wrkMast, steNo, crnProtocol);
+ return true;
}
// 娌℃湁灏忚溅
} else {
@@ -834,8 +835,9 @@
wrkMast.setModiTime(now);
if (wrkMastMapper.updateById(wrkMast) == 0) {
log.error("淇敼宸ヤ綔妗g姸鎬� {} => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkSts$(), wrkMast.getWrkNo());
+ } else {
+ return true;
}
- return true;
}
}
@@ -852,6 +854,8 @@
// 娌℃湁鍏朵粬浠诲姟
if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) {
this.letCarBeWaiting(wrkMast, steNo, wrkMast.getLocNo());
+ } else {
+ return true;
}
}
// 鍫嗗灈鏈哄皢璐ф斁鑷冲皬杞︿笂 3.灏忚溅寰呮惉锛堝皬杞︿笉鐢ㄦ惉杩愶紝宸茬粡鍦ㄥ綋鍓嶇粍搴撲綅锛� / 6.灏忚溅寰呭叆 ===>> 7.鍚婅溅鍏ュ簱涓�
@@ -888,8 +892,9 @@
wrkMast.setModiTime(now);
if (wrkMastMapper.updateById(wrkMast) == 0) {
log.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉/6.灏忚溅寰呭叆 => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ } else {
+ return true;
}
- return true;
}
}
}
@@ -903,12 +908,14 @@
if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) {
// 璁╁皬杞︾瓑寰呮惉杩愬緟缁�
this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getLocNo());
+ return true;
}
}
}
// 鍫嗗灈鏈烘惉杩愬皬杞�
if (wrkMast.getWrkSts() == 3L) {
this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
+ return true;
}
}
}
@@ -921,7 +928,7 @@
/**
* 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔�
*/
- public boolean locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
+ public synchronized boolean locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
// 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
WrkMast wrkMast = wrkMastMapper.selectPakOutStep111215(slave.getId(), crnStn.getStaNo());
@@ -939,6 +946,16 @@
log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
continue;
}
+
+ // 鍒ゆ柇鏄惁鏈夊悓搴撲綅缁勭殑鍑哄簱浠诲姟锛屽鏋滄湁锛屽垯鏆傚仠
+ List<String> outsideLoc = Utils.getGroupOutsideLoc(wrkMast.getSourceLocNo());
+ if (!Cools.isEmpty(outsideLoc)) {
+ if (!Cools.isEmpty(wrkMastMapper.selectWorkingOfPakOutBySource(outsideLoc))) {
+// log.warn("{}宸ヤ綔妗e嚭搴撳け璐ワ紝鍘熷洜锛氬灞傚簱浣峽}姝e湪鎵ц鍑哄簱浠诲姟锛�", wrkMast.getWrkNo(), JSON.toJSONString(outsideLoc));
+ continue;
+ }
+ }
+
// 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
@@ -1035,8 +1052,9 @@
wrkMast.setModiTime(now);
if (wrkMastMapper.updateById(wrkMast) == 0) {
log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ } else {
+ return true;
}
- break;
}
} else {
@@ -1070,8 +1088,9 @@
wrkMast.setModiTime(now);
if (wrkMastMapper.updateById(wrkMast) == 0) {
log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ } else {
+ return true;
}
- return true;
}
// 涓嶆槸鏈�澶栧眰搴撲綅锛岄渶瑕佷娇鐢ㄧ┛姊溅鎼繍鍚庯紝鍐嶅爢鍨涙満鍑哄簱
} else {
@@ -1111,6 +1130,8 @@
wrkMast.setCrnNo(outCrnNo);
if (wrkMastMapper.updateById(wrkMast) == 0) {
log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ } else {
+ return true;
}
}
}
@@ -1143,8 +1164,9 @@
wrkMast.setModiTime(now);
if (wrkMastMapper.updateById(wrkMast) == 0) {
log.error("淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ } else {
+ return true;
}
- return true;
}
}
@@ -1158,12 +1180,14 @@
if (null == wrkMastMapper.selectPakout(slave.getId(), steNo)) {
// 璁╁皬杞︾瓑寰呮惉杩愬緟缁�
this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo());
+ return true;
}
}
}
// 鍫嗗灈鏈烘惉杩愬皬杞�
if (wrkMast.getWrkSts() == 12L) {
this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
+ return true;
}
}
}
@@ -1620,7 +1644,6 @@
/**
* 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
*/
- @Async
@Transactional
public void storeFinished() {
for (CrnSlave crn : slaveProperties.getCrn()) {
@@ -2286,7 +2309,6 @@
/**
* 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
*/
- @Async
public void storeEmptyPlt(){
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻绌烘澘鍏ュ簱鍙�
@@ -2375,7 +2397,6 @@
/**
* 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
*/
- @Async
public void ledExecute() {
for (LedSlave led : slaveProperties.getLed()) {
// 鑾峰彇杈撻�佺嚎plc绾跨▼
@@ -2476,7 +2497,6 @@
/**
* 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
*/
- @Async
public void ledReset() {
for (LedSlave led : slaveProperties.getLed()) {
// 鑾峰彇杈撻�佺嚎plc绾跨▼
@@ -2593,6 +2613,40 @@
continue;
}
+ // 灏忚溅澶勪簬閫氶亾
+ List<String> channel = slaveProperties.getChannel();
+ for (String channelLocNo : channel) {
+ if (steProtocol.getRow().intValue() == Utils.getRow(channelLocNo)
+ && steProtocol.getBay().intValue() == Utils.getBay(channelLocNo)
+ && steProtocol.getLev().intValue() == Utils.getLev(channelLocNo)) {
+ Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo());
+ if (null != otherSte) {
+ log.warn("{}鍙峰皬杞﹀厖鐢甸樆鏂紝鍘熷洜锛氶�氶亾瀛樺湪{}鍙风┛姊溅锛�", wrkCharge.getSteNo(), otherSte);
+ } else {
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ SteCommand steCommand = new SteCommand();
+ steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
+ steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
+ steCommand.setTaskMode(SteTaskModeType.GO_ORIGIN); // 鍘诲彸绔�
+
+ steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue());
+ steCommand.setBay(steProtocol.getBay());
+ steCommand.setLev(steProtocol.getLev());
+ if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
+ log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 21.鍑嗗鍏呯數 ===> 25.灏忚溅璧拌
+ wrkCharge.setWrkSts(25L);
+ Date now = new Date();
+ wrkCharge.setModiTime(now);
+ if (!wrkChargeService.updateById(wrkCharge)) {
+ log.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 ===> 25.灏忚溅璧拌 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ }
+ }
+ }
+ }
+ }
+
// 澶勪簬鍏呯數搴撲綅缁�
if (steProtocol.getRow().intValue() == Utils.getRow(chargeLocNo)
&& steProtocol.getBay().intValue() == Utils.getBay(chargeLocNo)
@@ -2651,6 +2705,11 @@
// 22.灏忚溅寰呮惉
if (wrkCharge.getWrkSts() == 22) {
+
+ // 鍏ュ嚭搴撲换鍔′紭鍏�
+ if (null != wrkMastMapper.selectWorkingByCrn(wrkCharge.getCrnNo())) {
+ return;
+ }
// 鎼皬杞﹁嚦灏忚溅璧板悜閫氶亾
List<String> channel = slaveProperties.getChannel();
@@ -2727,6 +2786,11 @@
} else if (wrkCharge.getWrkSts() == 26) {
// 鍥哄畾鍫嗗灈鏈�
int crnNo = 1;
+ // 鍏ュ嚭搴撲换鍔′紭鍏�
+ if (null != wrkMastMapper.selectWorkingByCrn(crnNo)) {
+ return;
+ }
+
// 鍏呯數浣�
LocMast chargeLoc = locMastService.selectById(wrkCharge.getLocNo());
@@ -2882,6 +2946,10 @@
} else {
// 鍥哄畾鍫嗗灈鏈�
int crnNo = 1;
+ if (null != wrkMastMapper.selectWorkingByCrn(crnNo)) {
+ return;
+ }
+
LocMast channelLoc = locMastService.selectById(channelLocNo);
CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnNo);
@@ -2946,6 +3014,10 @@
}
}
} else if (wrkCharge.getWrkSts() == 45L) {
+ if (null != wrkMastMapper.selectWorkingByCrn(wrkCharge.getCrnNo())) {
+ return;
+ }
+
LocMast idleLoc = locMastService.selectById(basSte.getIdleLoc());
Integer otherSte = existOtherSte(idleLoc.getLocNo(), wrkCharge.getSteNo());
--
Gitblit v1.9.1