From c41aa8ce031c6c549a75ab8f0f08ae7f998d3965 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 07 一月 2025 12:48:12 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 284 +++++++++++++++++++++++--------------------------------- 1 files changed, 115 insertions(+), 169 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 bbf300e..8cf45a5 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -43,9 +43,9 @@ @Autowired private WrkMastService wrkMastService; @Autowired - private LocMastService locMastService; + private WrkMastLogMapper wrkMastLogMapper; @Autowired - private StaDescService staDescService; + private LocMastService locMastService; @Autowired private BasDevpService basDevpService; @Autowired @@ -64,8 +64,6 @@ private ShuttleDispatchUtils shuttleDispatchUtils; @Autowired private RedisUtil redisUtil; - @Autowired - private WrkMastLogMapper wrkMastLogMapper; @Autowired private BasLiftOptService basLiftOptService; @Autowired @@ -819,28 +817,27 @@ // return true; // } -// /** -// * 鍥涘悜绌挎杞︿换鍔″畬鎴� -// */ -// public synchronized void shuttleFinished() { -// try { -// for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { -// //鑾峰彇鍥涘悜绌挎杞︿俊鎭� -// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); -// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); -// if (shuttleProtocol == null) { -// continue; -// } -// -// //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭銆佸皬杞﹀浜庣┖闂茬姸鎬� -// if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id //浠诲姟瀹屾垚绛夊緟纭 -// && shuttleProtocol.getTaskNo() != 0 -// && shuttleProtocol.getFree() == ShuttleStatusType.IDLE.id -// ) { -// //灏嗕换鍔℃。鏍囪涓哄畬鎴� -// WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo()); -// if (wrkMast != null) { -// switch (wrkMast.getWrkSts().intValue()) { + /** + * 鍥涘悜绌挎杞︿换鍔″畬鎴� + */ + public synchronized void shuttleFinished() { + try { + for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { + //鑾峰彇鍥涘悜绌挎杞︿俊鎭� + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + if (shuttleProtocol == null) { + continue; + } + + //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭銆佸皬杞﹀浜庣┖闂茬姸鎬� + if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id //浠诲姟瀹屾垚绛夊緟纭 + && shuttleProtocol.getTaskNo() != 0 + ) { + //灏嗕换鍔℃。鏍囪涓哄畬鎴� + WrkMast wrkMast = wrkMastService.selectByWorkNo(shuttleProtocol.getTaskNo()); + if (wrkMast != null) { + switch (wrkMast.getWrkSts().intValue()) { // case 5://5.灏忚溅鎼繍涓� ==> 9.鍏ュ簱瀹屾垚 // wrkMast.setWrkSts(9L); // shuttleProtocol.setTaskNo(0); @@ -857,78 +854,55 @@ // shuttleProtocol.setToken(0); // } // break; -// case 102://102.灏忚溅绉诲姩鑷崇珯鐐� ==> 103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� -// wrkMast.setWrkSts(103L); -// break; -// case 104://104.灏忚溅杩佸叆鎻愬崌鏈轰腑 ==> 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� -// wrkMast.setWrkSts(105L); -// shuttleProtocol.setTaskNo(0);//娓呯悊宸ヤ綔鍙� -// break; -// case 108://108.灏忚溅杩佸嚭鎻愬崌鏈轰腑 ==> 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� -// wrkMast.setWrkSts(109L); -// break; -// case 110://110.灏忚溅绉诲姩涓� ==> 111.灏忚溅绉诲姩瀹屾垚 -// wrkMast.setWrkSts(111L); -// shuttleProtocol.setTaskNo(0); -// if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { -// //閲婃斁灏忚溅浠ょ墝 -// shuttleProtocol.setToken(0); -// } -// break; -// default: -// } -// -// if (wrkMastMapper.updateById(wrkMast) > 0) { -// if (wrkMast.getWrkSts() == 111) { -// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� -// if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { -// log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); -// } -// // 鍒犻櫎宸ヤ綔涓绘。 -// if (!wrkMastService.deleteById(wrkMast)) { -// log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo()); -// } -// } -// -// //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� -// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); -// //婧愬簱浣嶆竻闆� -// shuttleProtocol.setSourceLocNo(null); -// //鐩爣搴撲綅娓呴浂 -// shuttleProtocol.setLocNo(null); -// //浠诲姟鎸囦护娓呴浂 -// shuttleProtocol.setAssignCommand(null); -// News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); -// } else { -// News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); -// } -// } else { -// ShuttleAssignCommand assignCommand = shuttleProtocol.getAssignCommand(); -// if (!assignCommand.getAuto()) { -// //鎵嬪姩妯″紡 -// //宸ヤ綔鍙锋竻闆� -// shuttleProtocol.setTaskNo(0); -// //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� -// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); -// //婧愬簱浣嶆竻闆� -// shuttleProtocol.setSourceLocNo(null); -// //鐩爣搴撲綅娓呴浂 -// shuttleProtocol.setLocNo(null); -// //浠诲姟鎸囦护娓呴浂 -// shuttleProtocol.setAssignCommand(null); -// //娓呴浂浠ょ墝 -// shuttleProtocol.setToken(0); -// News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); -// } -// } -// -// } -// -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } + case 302://302.灏忚溅绉诲姩鑷崇珯鐐� ==> 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� + wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE.sts); + break; + case 110://310.灏忚溅绉诲姩涓� ==> 311.灏忚溅绉诲姩瀹屾垚 + wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts); + shuttleThread.setTaskNo(0); + break; + default: + } + + if (wrkMastService.updateById(wrkMast)) { + if (wrkMast.getWrkSts() == 111) { + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { + log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); + } + // 鍒犻櫎宸ヤ綔涓绘。 + if (!wrkMastService.deleteById(wrkMast)) { + log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo()); + } + } + + //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� + shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE); + News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); + } else { + News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); + } + } else { + Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo()); + if(object != null){ + ShuttleAssignCommand assignCommand = JSON.parseObject(object.toString(), ShuttleAssignCommand.class); + if (!assignCommand.getAuto()) { + //鎵嬪姩妯″紡 + //宸ヤ綔鍙锋竻闆� + shuttleThread.setTaskNo(0); + //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� + shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE); + News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); + } + } + } + } + + } + } catch (Exception e) { + e.printStackTrace(); + } + } // /** // * 鎻愬崌鏈轰换鍔� @@ -1253,37 +1227,27 @@ // return true; // } // -// /** -// * 鎻愬崌鏈轰换鍔″畬鎴� -// */ -// public synchronized void liftFinished() { -// try { -// for (LiftSlave liftSlave : slaveProperties.getLift()) { -// //鑾峰彇鎻愬崌鏈轰俊鎭� -// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); -// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); -// if (liftProtocol == null) { -// continue; -// } -// -// //鎻愬崌鏈轰负绛夊緟纭涓旂┖闂� -// if (liftProtocol.getProtocolStatus() == LiftProtocolStatusType.WAITING.id -// && liftProtocol.getTaskNo() != 0 -// && !liftProtocol.getBusy() -// ) { -// int taskNo = liftProtocol.getTaskNo().intValue(); -// if (taskNo >= 20000 && taskNo <= 30000) { -// //鎻愬崌鏈鸿澶囧伐浣滃彿锛岄渶瑕佹煡璇㈠搴斾换鍔″彿 -// BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString(), liftSlave.getId()); -// if (basLiftOpt != null) { -// taskNo = basLiftOpt.getWrkNo(); -// } -// } -// -// //灏嗕换鍔℃。鏍囪涓哄畬鎴� -// WrkMast wrkMast = wrkMastMapper.selectByWorkNo324104(taskNo); -// if (wrkMast != null) { -// switch (wrkMast.getWrkSts().intValue()) { + /** + * 璐у弶鎻愬崌鏈轰换鍔″畬鎴� + */ + public synchronized void forkLiftFinished() { + try { + for (ForkLiftSlave forkLiftSlave : slaveProperties.getForkLift()) { + //鑾峰彇鎻愬崌鏈轰俊鎭� + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, forkLiftSlave.getId()); + ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); + if (forkLiftProtocol == null) { + continue; + } + + //鎻愬崌鏈轰负绛夊緟纭涓旂┖闂� + if (forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.WAITING.id + && forkLiftProtocol.getWrkNo() != 0 + ) { + //灏嗕换鍔℃。鏍囪涓哄畬鎴� + WrkMast wrkMast = wrkMastService.selectByWorkNo(forkLiftProtocol.getWrkNo()); + if (wrkMast != null) { + switch (wrkMast.getWrkSts().intValue()) { // case 3://3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴� // wrkMast.setWrkSts(4L); // wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� @@ -1305,47 +1269,29 @@ // wrkMast.setModiTime(new Date()); // } // } -// -// if (liftProtocol.getToken().equals(wrkMast.getWrkNo())) { -// //閲婃斁鎻愬崌鏈轰护鐗� -// liftProtocol.setToken(0); -// } -// // break; -// case 106://106.鎻愬崌鏈烘惉杩愪腑 ==> 107.鎻愬崌鏈烘惉杩愬畬鎴� -// wrkMast.setWrkSts(107L); -// break; -// default: -// } -// -// if (wrkMastMapper.updateById(wrkMast) > 0) { -// //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵�� -// liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); -// //浠诲姟鎸囦护娓呴浂 -// liftProtocol.setAssignCommand(null); -// News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); -// } else { -// News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo()); -// } -// } else { -// LiftAssignCommand assignCommand = liftProtocol.getAssignCommand(); -// if (assignCommand != null) { -// if (!assignCommand.getAuto()) { -// //鎵嬪姩鎿嶄綔 -// //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵�� -// liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); -// //浠诲姟鎸囦护娓呴浂 -// liftProtocol.setAssignCommand(null); -// News.info("鎻愬崌鏈哄凡纭鎵嬪姩鎿嶄綔銆傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); -// } -// } -// } -// } -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } + case 306://306.鎻愬崌鏈烘惉杩愪腑 ==> 307.鎻愬崌鏈烘惉杩愬畬鎴� + wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts); + //璐у弶鎻愬崌鏈洪渶瑕佽烦杩囪縼鍑烘彁鍗囨満娴佺▼ + wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts); + break; + default: + } + + wrkMast.setModiTime(new Date()); + if (wrkMastService.updateById(wrkMast)) { + forkLiftThread.reset(); + News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", forkLiftProtocol.getLiftNo()); + } else { + News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", forkLiftProtocol.getLiftNo(), forkLiftProtocol.getWrkNo()); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } // /** // * 寮傚父淇℃伅璁板綍 -- Gitblit v1.9.1