From 8319884fe399813e8abd4dd36da45c5be5e9f7e4 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 26 九月 2022 10:32:11 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 228 ++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 194 insertions(+), 34 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 f37d508..efa2107 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -869,6 +869,11 @@
if (steNo != null) {
// 灏忚溅琛岃蛋鍒板爢鍨涙満寰呮惉绉荤偣
if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) {
+ // 鏍囪绉诲簱褰撳墠娴佺▼
+ wrkMast.setMk("I");
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("鏍囪绉诲簱褰撳墠娴佺▼ I 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
this.letCarBeWaiting(wrkMast, steNo, wrkMast.getLocNo());
}
// 鍫嗗灈鏈哄皢璐ф斁鑷冲皬杞︿笂 6.灏忚溅寰呭叆 ===>> 7.鍚婅溅鍏ュ簱涓�
@@ -1000,7 +1005,7 @@
if (wrkMastMapper.updateById(wrkMast) == 0) {
log.error("淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
}
- wrkMastMapper.setSteEmpty(wrkMast.getWrkNo());
+// wrkMastMapper.setSteEmpty(wrkMast.getWrkNo());
}
} else {
@@ -1362,11 +1367,11 @@
continue;
} else {
// 灏忚溅鎼嚦鎸囧畾搴撲綅瀹屾垚
- if (wrkCharge.getWrkSts() == 4) {
- // 4.杩佸叆灏忚溅 ===>> 6.灏忚溅寰呭叆
- wrkCharge.setWrkSts(6L);
+ if (wrkCharge.getWrkSts() == 23) {
+ // 23.鍚婅溅鎼繍 ===>> 24.灏忚溅鍒拌揪
+ wrkCharge.setWrkSts(24L);
if (!wrkChargeService.updateById(wrkCharge)) {
- log.error("淇敼鍏呯數浠诲姟鐘舵�� 4.杩佸叆灏忚溅 ===>> 6.灏忚溅寰呭叆 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ log.error("淇敼鍏呯數浠诲姟鐘舵�� 23.鍚婅溅鎼繍 ===>> 24.灏忚溅鍒拌揪 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
} else {
// 鍫嗗灈鏈哄浣�
crnThread.setResetFlag(true);
@@ -1543,6 +1548,37 @@
} else {
log.error("淇敼宸ヤ綔妗g姸鎬� 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
}
+ } else if (wrkMast.getWrkSts() == 4) {
+ // 4.杩佸叆灏忚溅 ==> 6.灏忚溅寰呭叆
+ wrkMast.setWrkSts(6L);
+ Date now = new Date();
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlag(true);
+ // 绌挎杞﹂噸鏂板畾浣嶆帓鍒楀眰
+ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkMast.getSteNo());
+ if (!steThread.confirmPos()) {
+ log.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬伐浣滄。浠诲姟鍙凤細{}", wrkMast.getSteNo(), wrkMast.getWrkNo());
+ }
+ // 绌挎杞﹀幓寰呮満浣�
+ BasSte basSte = basSteService.selectById(wrkMast.getSteNo());
+ SteCommand steCommand = new SteCommand();
+ steCommand.setSteNo(wrkMast.getSteNo()); // 绌挎杞︾紪鍙�
+ steCommand.setTaskNo(9999); // 宸ヤ綔鍙�
+ steCommand.setTaskMode(SteTaskModeType.findWaiting(basSte.getRow())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙�
+// steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue());
+// steCommand.setBay(steProtocol.getBay());
+// steCommand.setLev(steProtocol.getLev());
+ if (!MessageQueue.offer(SlaveType.Ste, wrkMast.getSteNo(), new Task(2, steCommand))) {
+ log.error("绌挎杞﹀緟鏈轰綅鍛戒护涓嬪彂澶辫触锛岀┛姊溅鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getSteNo(), JSON.toJSON(steCommand));
+ }
+ } else {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 4.杩佸叆灏忚溅 => 6.灏忚溅寰呭叆 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ // 鍏ュ簱 ===>> 杩佸嚭灏忚溅 瀹屾垚
} else if (wrkMast.getWrkSts() == 7){
// 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴�
if (locMastService.isOutMost(wrkMast.getLocNo())) {
@@ -1627,7 +1663,7 @@
/**
* 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
*/
- public void carGenerateStore() {
+ public synchronized void carGenerateStore() {
Date now = new Date();
for (SteSlave ste : slaveProperties.getSte()) {
// 鑾峰彇绌挎杞︿俊鎭�
@@ -1646,19 +1682,19 @@
if (wrkCharge == null) {
continue;
} else {
- if (wrkCharge.getWrkSts() == 11) {
- // 11.鐢熸垚鍑哄簱ID ===>> 12.灏忚溅寰呮惉
- wrkCharge.setWrkSts(12L);
+ if (wrkCharge.getWrkSts() == 21) {
+ // 21.鍑嗗鍏呯數 ===>> 22.灏忚溅寰呮惉
+ wrkCharge.setWrkSts(22L);
if (!wrkChargeService.updateById(wrkCharge)) {
- log.error("淇敼鍏呯數浠诲姟鐘舵�� 11.鐢熸垚鍑哄簱ID ===>> 12.灏忚溅寰呮惉 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ log.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 ===>> 22.灏忚溅寰呮惉 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
} else {
steThread.setResetFlag(true);
}
- } else if (wrkCharge.getWrkSts() == 8) {
- // 8.灏忚溅鎼叆搴� ===>> 9.鍏ュ簱瀹屾垚
- wrkCharge.setWrkSts(9L);
+ } else if (wrkCharge.getWrkSts() == 25) {
+ // 25.灏忚溅鍘诲厖鐢� ===>> 26.绛夊緟鍏呯數
+ wrkCharge.setWrkSts(26L);
if (!wrkChargeService.updateById(wrkCharge)) {
- log.error("淇敼鍏呯數浠诲姟鐘舵�� 8.灏忚溅鎼叆搴� ===>> 9.鍏ュ簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ log.error("淇敼鍏呯數浠诲姟鐘舵�� 25.灏忚溅鍘诲厖鐢� ===>> 26.绛夊緟鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
} else {
steThread.setResetFlag(true);
}
@@ -2050,14 +2086,22 @@
/**
* 灏忚溅鐢甸噺妫�娴� ===>> 鍙戣捣鍏呯數
*/
- public void loopSteCharge() {
+ public synchronized void loopSteCharge() {
for (SteSlave ste : slaveProperties.getSte()) {
SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId());
SteProtocol steProtocol = steThread.getSteProtocol();
BasSte basSte = basSteService.selectById(ste.getId());
if (Cools.isEmpty(steProtocol, basSte)) { continue; }
try {
- if (!steProtocol.statusType.equals(SteStatusType.IDLE) || basSte.getPakMk().equals("Y")) {
+ // 鍦ㄧ嚎 绌洪棽 鏃犱綔涓氭爣璁� 涓嶅湪鍏呯數
+ if (steProtocol.getMode() == 0
+ || !steProtocol.statusType.equals(SteStatusType.IDLE)
+ || basSte.getPakMk().equals("Y")
+// || steProtocol.getChargeStatus() == 1
+ ) {
+ continue;
+ }
+ if (!steProtocol.isEnable()) {
continue;
}
if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) {
@@ -2065,12 +2109,12 @@
}
WrkCharge wrkCharge = wrkChargeService.selectWorking(steProtocol.getSteNo().intValue());
- if (wrkCharge == null) {
+ if (wrkCharge == null && steProtocol.getChargeStatus() == 0) {
String idleLoc = basSte.getIdleLoc();
wrkCharge = new WrkCharge();
wrkCharge.setSteNo(ste.getId());
wrkCharge.setWrkNo(commonService.getChargeWorkNo(4));
- wrkCharge.setWrkSts(11L);
+ wrkCharge.setWrkSts(21L); // 21.鍑嗗鍏呯數
wrkCharge.setCrnNo(basSte.getCrnNo());
wrkCharge.setIoPri((double) 10);
wrkCharge.setLocNo(idleLoc);
@@ -2079,20 +2123,26 @@
continue;
}
+ // 澶勪簬鍏呯數搴撲綅缁�
if (Utils.getGroupRow(idleLoc).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(idleLoc) && steProtocol.getLev() == Utils.getLev(idleLoc)) {
- // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 6.灏忚溅寰呭叆
- wrkCharge.setWrkSts(6L);
+ // 淇敼宸ヤ綔妗g姸鎬� 21.鍑嗗鍏呯數 => 24.灏忚溅鍒拌揪
+ wrkCharge.setWrkSts(24L);
wrkCharge.setModiTime(new Date());
if (!wrkChargeService.updateById(wrkCharge)) {
- log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 6.灏忚溅寰呭叆 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ log.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 => 24.灏忚溅鍒拌揪 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
}
} else {
this.letCarBeWaiting(wrkCharge, ste.getId());
}
} else {
- // 12.灏忚溅寰呮惉
- if (wrkCharge.getWrkSts() == 12) {
+ // filter
+ if (wrkCharge == null || (wrkCharge.getWrkSts() < 26 && steProtocol.getChargeStatus() == 1)) {
+ continue;
+ }
+
+ // 22.灏忚溅寰呮惉
+ if (wrkCharge.getWrkSts() == 22) {
// 鎼皬杞﹁嚦鍏呯數搴撲綅
LocMast locMast = locMastService.selectById(basSte.getIdleLoc());
@@ -2113,19 +2163,20 @@
} else {
// 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1());
- // 淇敼宸ヤ綔妗g姸鎬� 12.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅
+ // 淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍
Date now = new Date();
- wrkCharge.setWrkSts(4L);
+ wrkCharge.setWrkSts(23L);
wrkCharge.setCrnStrTime(now);
wrkCharge.setModiTime(now);
if (!wrkChargeService.updateById(wrkCharge)) {
- log.error("淇敼宸ヤ綔妗g姸鎬� 12.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ log.error("淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
}
}
- } else if (wrkCharge.getWrkSts() == 6L) {
+ } else if (wrkCharge.getWrkSts() == 24L) {
// 灏忚溅琛岄┒鑷冲厖鐢典綅
if (steProtocol.statusType.equals(SteStatusType.IDLE) && steProtocol.getPakMk().equals("N")) {
+ if (steProtocol.getChargeStatus() == 1) { continue; }
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
SteCommand steCommand = new SteCommand();
steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
@@ -2134,26 +2185,29 @@
if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
} else {
- // 淇敼宸ヤ綔妗g姸鎬� 6.灏忚溅寰呭叆 ===> 8.灏忚溅鎼叆搴�
- wrkCharge.setWrkSts(8L);
+ // 淇敼宸ヤ綔妗g姸鎬� 24.灏忚溅鍒拌揪 ===> 25.灏忚溅鍘诲厖鐢�
+ wrkCharge.setWrkSts(25L);
Date now = new Date();
wrkCharge.setCrnEndTime(now);
wrkCharge.setModiTime(now);
if (!wrkChargeService.updateById(wrkCharge)) {
- log.error("淇敼宸ヤ綔妗g姸鎬� 6.灏忚溅寰呭叆 ===> 8.灏忚溅鎼叆搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ log.error("淇敼鍏呯數浠诲姟鐘舵�� 24.灏忚溅鍒拌揪 ===> 25.灏忚溅鍘诲厖鐢� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
}
}
}
- } else if (wrkCharge.getWrkSts() == 9L) {
+ } else if (wrkCharge.getWrkSts() == 26) {
+ if (steProtocol.getChargeStatus() == 0) { continue; }
// 缁欒緭閫佺嚎涓嬪彂鍏呯數浠诲姟
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
SteChargeType steChargeType = SteChargeType.get(wrkCharge.getLocNo());
if (null != steChargeType) {
if (devpThread.charge(steChargeType.ssbm - 1, true)) {
- // 淇敼宸ヤ綔妗g姸鎬� 9.鍏ュ簱瀹屾垚 ===> 10.搴撳瓨鏇存柊瀹屾垚
- wrkCharge.setWrkSts(10L);
+ // 淇敼宸ヤ綔妗g姸鎬� 26.绛夊緟鍏呯數 ===> 28.瀹屾垚鍏呯數
+ wrkCharge.setWrkSts(28L);
if (!wrkChargeService.updateById(wrkCharge)) {
- log.error("淇敼鍏呯數浠诲姟鐘舵�� 9.鍏ュ簱瀹屾垚 ===> 10.搴撳瓨鏇存柊瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ log.error("淇敼鍏呯數浠诲姟鐘舵�� 26.绛夊緟鍏呯數 ===> 28.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ } else {
+ steThread.setResetFlag(true);
}
}
} else {
@@ -2167,4 +2221,110 @@
}
}
+
+ public synchronized void demo() {
+ 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;
+ }
+
+ }
+ }
+
+ /**
+ * 鍫嗗灈鏈烘紨绀� ===>> 搴撲綅绉昏浆
+ */
+ public synchronized void crnDemoOfLocMove(){
+ for (CrnSlave crn : slaveProperties.getCrn()) {
+ if (!crn.getDemo()) { continue; } // 蹇呴』涓烘紨绀虹姸鎬�
+
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol == null) { continue; }
+
+ // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
+ if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
+ // 鑾峰彇绉诲簱宸ヤ綔妗d俊鎭�
+ WrkMast wrkMast = wrkMastMapper.selectLocMove(crn.getId());
+ if (null != wrkMast) { continue; }
+
+ LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getId());
+ LocMast loc = locMastService.queryDemoLoc(crn.getId());
+ if (null == sourceLoc || null == loc) { continue; }
+
+ String sourceLocNo = sourceLoc.getLocNo();
+ String locNo = loc.getLocNo();
+
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+ // 淇濆瓨宸ヤ綔妗�
+ wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+ wrkMast.setIoPri(13D);
+ wrkMast.setCrnNo(crn.getId());
+ wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
+ wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
+ wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘
+ wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeTime(new Date());
+ wrkMast.setModiTime(new Date());
+ int res = wrkMastMapper.insert(wrkMast);
+ if (res == 0) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 宸ヤ綔妗f槑缁嗕繚瀛�
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+ for (LocDetl locDetl : locDetls) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(new Date());
+ wrkDetl.setAnfme(locDetl.getAnfme());
+ wrkDetl.setAppeTime(new Date());
+ wrkDetl.setModiTime(new Date());
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ // 淇敼婧愬簱浣嶇姸鎬�
+ if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) {
+ sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+ sourceLoc.setModiTime(new Date());
+ if (!locMastService.updateById(sourceLoc)){
+ throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+ }
+ } else {
+ throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
+ }
+ // 淇敼鐩爣搴撲綅鐘舵��
+ if (loc.getLocSts().equals("O")) {
+ loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+ loc.setModiTime(new Date());
+ if (!locMastService.updateById(loc)) {
+ throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException("绉昏浆澶辫触");
+ }
+
+ }
+
+ }
+ }
+
}
--
Gitblit v1.9.1