From 77c0886a0b73e30b00757146da5a6863bb523b3d Mon Sep 17 00:00:00 2001
From: TQS <56479841@qq.com>
Date: 星期五, 23 十二月 2022 16:08:03 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 215 +++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 182 insertions(+), 33 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 6351c95..f12893a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -63,6 +63,8 @@
@Autowired
private WrkMastMapper wrkMastMapper;
@Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
private WrkDetlService wrkDetlService;
@Autowired
private LocMastService locMastService;
@@ -329,6 +331,7 @@
/**
* 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱銆愮2闃舵銆�
*/
+ @Transactional
public synchronized void stnToCrnStnPick1(){
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻鎷f枡鍏ュ簱鍙�
@@ -453,6 +456,7 @@
}
String sourceLocNo = wrkMast.getSourceLocNo().trim();
+
// 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
@@ -468,14 +472,8 @@
if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) {
throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
}
+
LocMast locMast = null;
- // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�
-// locMast = locMastService.selectById(sourceLocNo);
-// locMast.setLocSts("O");
-// locMast.setModiTime(new Date());
-// if (!locMastService.updateById(locMast)) {
-// throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�");
-// }
// 淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
locMast = locMastService.selectById(wrkMast.getLocNo());
locMast.setLocSts("Q");
@@ -483,10 +481,21 @@
if (!locMastService.updateById(locMast)) {
throw new CoolException(wrkMast.getWrkNo() + "淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�");
}
- // 搴撳瓨鏄庣粏杞Щ
-// if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) {
-// throw new CoolException(wrkMast.getWrkNo() + "浠诲姟搴撳瓨鏄庣粏杞Щ澶辫触锛侊紒锛�");
-// }
+ // 婧愬簱浣嶅簱瀛樻槑缁嗚浆绉诲埌鐩爣搴撲綅
+ if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) {
+ throw new CoolException(wrkMast.getLocNo() + "浠诲姟搴撳瓨鏄庣粏杞Щ澶辫触锛侊紒锛�");
+ }
+
+ // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�
+ LocMast sourceLocMast = locMastService.selectById(sourceLocNo);
+ if (sourceLocMast.getLocSts().equals("P")) {
+ sourceLocMast.setLocSts("O");
+ sourceLocMast.setModiTime(new Date());
+ if (!locMastService.updateById(sourceLocMast)) {
+ throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�");
+ }
+ locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+ }
// 鏉$爜璁惧澶勭悊
barcodeThread.setBarcode("");
@@ -542,22 +551,85 @@
public synchronized void pickWrkCompleteStaNo() {
List<WrkMast> wrkMasts = wrkMastMapper.selectPick17(null, null);
for (WrkMast wrkMast : wrkMasts) {
- // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�
- LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
- if (locMast.getLocSts().equals("P")) {
- locMast.setLocSts("O");
- locMast.setModiTime(new Date());
- if (!locMastService.updateById(locMast)) {
- throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�");
- }
- locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
- }
+// // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�
+// LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+// if (locMast.getLocSts().equals("P")) {
+// locMast.setLocSts("O");
+// locMast.setModiTime(new Date());
+// if (!locMastService.updateById(locMast)) {
+// throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�");
+// }
+// locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
+// }
// 淇敼宸ヤ綔妗�
wrkMast.setIoPri(13D);
wrkMast.setModiTime(new Date());
if (wrkMastMapper.updateById(wrkMast) == 0) {
log.error("鏇存柊宸ヤ綔妗g殑浼樺厛绾уけ璐ワ紒锛侊紒 [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
}
+ }
+ }
+
+ /**
+ * 鎷f枡/鐩樼偣杞叏鏉垮悗锛�300绔欎换鍔¤浆100/200绔欏幓
+ */
+ public synchronized void transPickToFullChangeStn() {
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鎷f枡鍑哄簱鍙�
+ for (DevpSlave.Sta pickSta : devp.getPickOutSta()) {
+ // 鑾峰彇鎷f枡鍑哄簱绔欎俊鎭�
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ if (staProtocol.isAutoing()
+ && staProtocol.isLoading()
+// && staProtocol.isInEnable()
+ && staProtocol.getWorkNo() > 0
+ && staProtocol.getStaNo().equals(staProtocol.getSiteId().shortValue())
+ && staProtocol.isPakMk()){
+ WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
+ if(Cools.isEmpty(wrkMast)){
+ log.error("鎷f枡/鐩樼偣杞叏鏉�,浠诲姟鍙峰伐浣滄。涓嶅瓨鍦�===>>[浠诲姟鍙�:{}]", staProtocol.getWorkNo());
+ continue;
+ }
+ if (wrkMast.getIoType() != 101) { continue; }
+
+ //鎷f枡杞叏鏉块粯璁ゅ嚭搴撶珯100绔欙紝褰�100绔欐湁鐗╂椂锛岀洰鏍囨敼200绔�
+ Integer staNo = 100;
+ StaProtocol staProtocol100 = devpThread.getStation().get(staNo);
+ if (staProtocol100 == null) {
+ continue;
+ } else {
+ staProtocol100 = staProtocol100.clone();
+ }
+ if (staProtocol100.isLoading()) {
+ staNo = 200;
+ }
+
+ // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+ staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+ staProtocol.setStaNo(staNo.shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ if (!result) {
+ log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+ } else {
+ wrkMast.setStaNo(staNo);
+ wrkMast.setModiTime(new Date());
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("鏇存柊宸ヤ綔妗g殑鐩爣绔欏け璐ワ紒锛侊紒 [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
+ }
+ }
+
+ }
+ }
+
+
}
}
@@ -609,6 +681,7 @@
// 鏇存柊宸ヤ綔妗g姸鎬佷负 17.鍑哄簱瀹屾垚
wrkMast.setWrkSts(17L);
+ wrkMast.setSteNo(0);
wrkMast.setCrnEndTime(new Date());
if (wrkMastMapper.updateById(wrkMast) != 0) {
// 澶嶄綅鍫嗗灈鏈�
@@ -712,6 +785,18 @@
// log.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo());
continue;
}
+
+ // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔�
+ BasSte basSte = basSteService.findByCrnNo(wrkMast.getCrnNo());
+ if(basSte == null) continue;
+ WrkMast one1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+ .eq("ste_no",basSte.getSteNo())
+ .last(" and wrk_sts > 10"));
+ if(one1 != null){
+ log.error("{}鍏ュ簱浠诲姟鏃犳硶浣滀笟锛屽洜鍑哄簱浠诲姟宸茬粦瀹氬皬杞�!", wrkMast.getWrkNo());
+ continue;
+ }
+
if (wrkMast.getWrkSts() < 3) {
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
&& staDetl.getCanining()!=null && staDetl.getCanining().equals("Y")) {
@@ -869,7 +954,7 @@
}
// 娌℃湁灏忚溅
} else {
- if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) {
+ if (wrkMast.getWrkSts() == 2L && (wrkMast.getSteNo() == null || wrkMast.getSteNo() == 0)) {
// 瀵绘壘褰撳墠鍫嗗灈鏈哄搴旂殑灏忚溅
SteThread steThread = queryIdleCar(wrkMast);
if (steThread != null) {
@@ -902,6 +987,17 @@
continue;
}
+ // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔�
+ BasSte basSte = basSteService.findByCrnNo(wrkMast.getCrnNo());
+ if(basSte == null) continue;
+ WrkMast one1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+ .eq("ste_no",basSte.getSteNo())
+ .last(" and wrk_sts < 10"));
+ if(one1 != null){
+ log.error("{}鍑哄簱浠诲姟鏃犳硶浣滀笟锛屽洜鍏ュ簱浠诲姟宸茬粦瀹氬皬杞�!", wrkMast.getWrkNo());
+ continue;
+ }
+
//鍔犲己鍒ゆ柇锛岀‘淇濆洜鍑哄簱瀵艰嚧鐨勭Щ搴撴暣濂椾换鍔″叏閮ㄧ粨鏉熷悗锛屾墠鑳芥墽琛屼笅涓�绗斿嚭搴撲换鍔°�傚彧鏈夊簱浣嶅畬鎴愮Щ搴撳洖鍘诲叏閮ㄤ换鍔″悗锛屾墠璁や负褰撶粍鍑哄簱浠诲姟瀹屾垚
WrkMast one = wrkMastMapper.selectLocMoveData(slave.getId());
if(!Cools.isEmpty(one)){
@@ -917,14 +1013,13 @@
|| Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(one.getLocNo()))){
continue;
}
- log.info("");
}
//鍑哄簱搴撲綅涓嶆槸鏈�澶栧眰搴撲綅锛屽垽鏂祬搴撲綅缁勬槸鍚﹂兘涓虹┖锛屾垨瀛樺湪搴撲綅绉昏浆浠诲姟
boolean flag = false;
if(!locMastService.isOutMost(wrkMast.getSourceLocNo())){
WrkMast wrkMastMove = wrkMastMapper.selectLocMoveWorking(slave.getId());
- if(wrkMastMove != null){
+ if(wrkMastMove != null && wrkMast.getWrkNo() == 11){
continue;
}
@@ -1184,6 +1279,23 @@
if (null == wrkMast) {
return;
}
+ // 杩囨护
+ if (null != wrkMastMapper.selectPakin(slave.getId(), null)) {
+ log.error("{}鍑哄簱浠诲姟鏃犳硶浣滀笟锛屽洜瀛樺湪鍏ュ簱涓换鍔�!", wrkMast.getWrkNo());
+ return;
+ }
+
+ // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔�
+ BasSte basSte = basSteService.findByCrnNo(wrkMast.getCrnNo());
+ if(basSte == null) return;
+ WrkMast one = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+ .eq("ste_no",basSte.getSteNo())
+ .last(" and io_type != 11 and wrk_sts < 10"));
+ if(one != null){
+ log.error("{}绉诲簱浠诲姟鏃犳硶浣滀笟锛屽洜鍏ュ簱浠诲姟宸茬粦瀹氬皬杞�!", wrkMast.getWrkNo());
+ return;
+ }
+
// 鑾峰彇婧愬簱浣嶄俊鎭�
LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
if (null == sourceLoc) {
@@ -1367,7 +1479,13 @@
if (wrkMast.getWrkSts() == 17) {
//鏌ユ壘搴撲綅
boolean flag = false;
- String[] deeplocs = Utils.getDeepLocs(wrkMast.getSourceLocNo());
+// append
+ Integer row = Utils.getGroupRow(wrkMast.getSourceLocNo());
+ Integer bay = Utils.getBay(wrkMast.getSourceLocNo());
+ Integer lev = Utils.getLev(wrkMast.getSourceLocNo());
+
+ String locNo = Utils.append(row, bay, lev);
+ String[] deeplocs = Utils.getDeepLocs(locNo);
if(!Cools.isEmpty(deeplocs)){
for(String deepLocNo : deeplocs) {
LocMast deepLoc = locMastService.selectById(deepLocNo);
@@ -1383,7 +1501,7 @@
wrkMast.setIoPri((double)9999);
wrkMast.setWrkSts(2L);
wrkMast.setLocNo(deepLocNo);
- wrkMast.setSteNo(null);
+ wrkMast.setSteNo(0);
wrkMast.setModiTime(new Date());
if (wrkMastMapper.updateById(wrkMast) == 0) {
log.error("淇敼宸ヤ綔妗g姸鎬� 17.绉诲簱瀹屾垚 => 2.绉诲簱鍐嶅叆搴撲腑 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
@@ -1398,7 +1516,7 @@
}
}
LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
- if(sourceLoc.getLocSts().equals("F")){
+ if(sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D")){
sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
sourceLoc.setModiTime(new Date());
if (!locMastService.updateById(sourceLoc)) {
@@ -1461,10 +1579,24 @@
// 鏈夊皬杞�
if (steNo != null) {
// 灏忚溅琛岃蛋鍒板爢鍨涙満寰呮惉绉荤偣
- if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) {
+ if (wrkMast.getWrkSts() == 2L && (wrkMast.getSteNo() == null || wrkMast.getSteNo() == 0)) {
// 娌℃湁鍏朵粬浠诲姟
if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) {
+ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
+ SteProtocol steProtocol = steThread.getSteProtocol();
+ if (steProtocol == null) { return; }
this.letCarBeWaiting(wrkMast, steNo, wrkMast.getLocNo());
+// if(steProtocol.getLoca()==3 || steProtocol.getLoca()==4){
+// //灏忚溅宸茬粡鍦ㄥ緟鏈轰綅鏃讹紝鏃犻渶涓嬪彂鍒板緟鏈轰綅浠诲姟锛岀洿鎺ユ洿鏂扮姸鎬佸井3锛屽悓鏃剁粦瀹氬皬杞�
+// wrkMast.setWrkSts(3L);
+// wrkMast.setSteNo(steNo);
+// wrkMast.setModiTime(new Date());
+// if (wrkMastMapper.updateById(wrkMast) == 0) {
+// log.error("淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+// }
+// } else {
+// this.letCarBeWaiting(wrkMast, steNo, wrkMast.getLocNo());
+// }
}
}
// 鍫嗗灈鏈哄皢璐ф斁鑷冲皬杞︿笂 3.灏忚溅寰呮惉锛堝皬杞︿笉鐢ㄦ惉杩愶紝宸茬粡鍦ㄥ綋鍓嶇粍搴撲綅锛� / 6.灏忚溅寰呭叆 ===>> 7.鍚婅溅鍏ュ簱涓�
@@ -1509,7 +1641,7 @@
}
// 娌℃湁灏忚溅
} else {
- if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) {
+ if (wrkMast.getWrkSts() == 2L && (wrkMast.getSteNo() == null || wrkMast.getSteNo() == 0)) {
// 瀵绘壘褰撳墠鍫嗗灈鏈哄搴旂殑灏忚溅
SteThread steThread = queryIdleCar(wrkMast);
if (steThread != null) {
@@ -2058,7 +2190,7 @@
SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
SteProtocol steProtocol = steThread.getSteProtocol();
if (steProtocol == null) { return; }
- if (steProtocol.isIdle()) {
+ if (steProtocol.isIdle() && steProtocol.getLoad() == 0) {
// 鍫嗗灈鏈虹┖闂�
if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) {
LocMast locMast;
@@ -2137,7 +2269,7 @@
SteProtocol steProtocol = steThread.getSteProtocol();
if (steProtocol == null) { return; }
// 绌挎杞︾┖闂�
- if (steProtocol.isIdle()) {
+ if (steProtocol.isIdle() && steProtocol.getLoad() == 0) {
// 鍫嗗灈鏈虹┖闂�
if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) {
@@ -2472,8 +2604,9 @@
// }
if (locMastService.isOutMost(wrkMast.getLocNo())) {
wrkMast.setWrkSts(17L);
+ wrkMast.setSteNo(0);
// 榛樿鐩爣搴撲綅鏄┖鏉�
- String locSts = "D";
+ String locSts = "";
// 搴撲綅绉昏浆鍒ゆ柇鏄惁涓虹┖鏉跨Щ杞�
if (wrkMast.getEmptyMk().equals("N")) {
locSts = "F";
@@ -2482,7 +2615,14 @@
log.error("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触锛沎婧愬簱浣�={}],[鐩爣搴撲綅={}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
continue;
}
+ } else {
+ locSts = "D";
}
+ if(Cools.isEmpty(locSts)){
+ log.error("搴撲綅绉昏浆 ===>> 搴撳瓨鐘舵�佷负绌猴紱[婧愬簱浣�={}],[鐩爣搴撲綅={}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
+ continue;
+ }
+
// 淇敼婧愬簱浣嶇姸鎬� ==> O
LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
if (null != sourceLoc) {
@@ -3577,10 +3717,19 @@
rows = "18,19";
break;
}
- LocMast loc = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no",crn.getId())
+ LocMast loc = null;
+ List<LocMast> locs = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no",crn.getId())
.eq("loc_type1",shallowLoc.getLocType1())
.eq("loc_sts","O")
.last(" and row1 in (" + rows + ") order by bay1,lev1"));
+ for (LocMast one : locs){
+ if(Utils.getGroupRow(one.getLocNo()) != Utils.getGroupRow(shallowLoc.getLocNo())
+ || Utils.getBay(one.getLocNo()) != Utils.getBay(shallowLoc.getLocNo())
+ || Utils.getLev(one.getLocNo()) != Utils.getLev(shallowLoc.getLocNo())){
+ loc = one;
+ break;
+ }
+ }
if (null == loc) {
log.error("娣卞簱浣嶅嚭搴� --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
--
Gitblit v1.9.1