From 92ab7fb5928ca5f877339d9f3cb38ddafb80cc4e Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 07 十二月 2023 10:21:02 +0800
Subject: [PATCH] #小车避让库位更新
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 297 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 275 insertions(+), 22 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 5589a68..770c903 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -398,13 +398,16 @@
}
/**
- * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
+ * 鎷f枡銆佸苟鏉垮啀鍏ュ簱
*/
@Transactional
public synchronized void stnToCrnStnPick(){
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻鎷f枡鍏ュ簱鍙�
for (DevpSlave.Sta pickSta : devp.getPickInSta()) {
+ if (pickSta.getStaNo() == 325 || pickSta.getStaNo() == 331 || pickSta.getStaNo() == 333 || pickSta.getStaNo() == 339) {
+ continue;
+ }
// 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -417,15 +420,28 @@
if (staProtocol.isAutoing()
&& staProtocol.isLoading()
&& staProtocol.isInEnable()
- && (staProtocol.getWorkNo() > 0)
+// && (staProtocol.getWorkNo() > 0)
&& staProtocol.isPakMk()){
- WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol.getWorkNo().intValue());
+ // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
+ if (barcodeThread == null) {
+ continue;
+ }
+ String barcode = barcodeThread.getBarcode();
+ if(Cools.isEmpty(barcode)) {
+ continue;
+ }
+ if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
+ continue;
+ }
+
+ WrkMast wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode);
if (wrkMast == null) {//鎵句笉鍒板伐浣滄。
continue;
}
- if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
+ if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104)
|| Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo()) ) {
continue;
}
@@ -479,7 +495,103 @@
News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
continue;
}
- if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) {
+
+ // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+ LocMast locMast = locMastService.selectById(sourceLocNo);
+ locMast.setLocSts("Q");
+ locMast.setModiTime(new Date());
+ if (!locMastService.updateById(locMast)) {
+ News.info("淇敼搴撲綅鐘舵�佸け璐�");
+ continue;
+ }
+ }
+ }
+
+ }
+ }
+
+ /**
+ * 鎷f枡銆佸苟鏉垮啀鍏ュ簱(325銆�331銆�333銆�339)
+ */
+ @Transactional
+ public synchronized void stnToCrnStnPick2(){
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鎷f枡鍏ュ簱鍙�
+ for (DevpSlave.Sta pickSta : devp.getPickInSta()) {
+ if (!(pickSta.getStaNo() == 325 || pickSta.getStaNo() == 331 || pickSta.getStaNo() == 333 || pickSta.getStaNo() == 339)) {
+ continue;
+ }
+
+ // 鑾峰彇鎷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.isPakMk()){
+
+ WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol.getWorkNo().intValue());
+ if (wrkMast == null) {//鎵句笉鍒板伐浣滄。
+ continue;
+ }
+
+ if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104)
+ || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo()) ) {
+ continue;
+ }
+
+ //*********************鍚屽簱浣嶇粍鏍¢獙*********************
+ boolean flag = false;
+ String th = "";
+ List<String> innerLoc = Utils.getGroupInnerLoc(wrkMast.getSourceLocNo());
+ for (String loc : innerLoc) {
+ LocMast locMast = locMastService.selectById(loc);
+ if (locMast == null) {
+ continue;
+ }
+
+ if (!locMast.getLocSts().equals("F")) {
+ flag = true;
+ th = loc + "搴撲綅瀛樺湪鏈洖搴撲换鍔�";
+ break;
+ }
+ }
+ if (flag) {
+ News.info(th);
+ continue;
+ }
+ //*********************鍚屽簱浣嶇粍鏍¢獙*********************
+
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
+ News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+ continue;
+ }
+
+ String sourceLocNo = wrkMast.getSourceLocNo().trim();
+ LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(sourceLocNo));//鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯
+ if (liftStaProtocol == null) {
+ continue;
+ }
+
+ // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+ wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+ wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+ wrkMast.setSourceStaNo(pickSta.getBackSta()); // 婧愮珯
+// wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔�
+// wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔�
+ wrkMast.setLocNo(sourceLocNo); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+ wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌�
+ wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌�
+ wrkMast.setModiTime(new Date());
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
continue;
}
@@ -493,12 +605,132 @@
continue;
}
- staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());//鍐欏叆宸ヤ綔鍙�
staProtocol.setStaNo(pickSta.getBackSta().shortValue());//鍐欏叆鐩爣绔�
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
}
}
+ }
+ }
+
+ /**
+ * 鐩樼偣鍐嶅叆搴�
+ */
+ @Transactional
+ public synchronized void stnToCrnStnPlate(){
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鎷f枡鍏ュ簱鍙�
+ for (DevpSlave.Sta pickSta : devp.getPickInSta()) {
+// if (pickSta.getStaNo() == 325 || pickSta.getStaNo() == 331 || pickSta.getStaNo() == 333 || pickSta.getStaNo() == 339) {
+// continue;
+// }
+
+ // 鑾峰彇鎷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.isPakMk()){
+
+ WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol.getWorkNo().intValue());
+ if (wrkMast == null) {//鎵句笉鍒板伐浣滄。
+ continue;
+ }
+
+ if ((wrkMast.getIoType() != 107)
+ || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo()) ) {
+ continue;
+ }
+
+ //*********************鍚屽簱浣嶇粍鏍¢獙*********************
+ boolean flag = false;
+ String th = "";
+ List<String> innerLoc = Utils.getGroupInnerLoc(wrkMast.getSourceLocNo());
+ for (String loc : innerLoc) {
+ LocMast locMast = locMastService.selectById(loc);
+ if (locMast == null) {
+ continue;
+ }
+
+ if (!locMast.getLocSts().equals("F")) {
+ flag = true;
+ th = loc + "搴撲綅瀛樺湪鏈洖搴撲换鍔�";
+ break;
+ }
+ }
+ if (flag) {
+ News.info(th);
+ continue;
+ }
+ //*********************鍚屽簱浣嶇粍鏍¢獙*********************
+
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
+ News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+ continue;
+ }
+
+ //鐩樼偣鎵炬柊搴撲綅
+ try {
+ LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());//婧愬簱浣�
+ SearchLocParam param = new SearchLocParam();
+ param.setWrkNo(wrkMast.getWrkNo());
+ param.setBarcode(wrkMast.getBarcode());
+ param.setIoType(107);//鐩樼偣
+ param.setSourceStaNo(wrkMast.getStaNo());
+ param.setLocType1(locMast.getLocType1());
+ String response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/pakin/loc/v1")
+ .setJson(JSON.toJSONString(param))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ Integer code = jsonObject.getInteger("code");
+ if (code.equals(200)) {
+ StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+
+ //鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯
+ LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo()));
+ if (liftStaProtocol == null) {
+ News.info(wrkMast.getWrkNo() + "鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯澶辫触");
+ continue;
+ }
+
+ // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+ wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 107->57
+ wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+ wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯
+ wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔�
+ wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅
+ wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌�
+ wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌�
+ wrkMast.setModiTime(new Date());
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+ continue;
+ }
+
+ staProtocol.setStaNo(dto.getSourceStaNo().shortValue());//鍐欏叆鐩爣绔�
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+
+ } else if (code == 500){
+ News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+
+ }
+ }
}
}
@@ -1303,10 +1535,12 @@
if(!("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode))) {
//瀛樺湪鏉$爜鍊硷紝鍒ゆ柇鏄惁鍜屽綋鍓嶅伐浣滄。涓�鑷�
if (!barcode.equals(wrkMast.getBarcode())) {
- News.info("{}浠诲姟锛屾潯鐮佸櫒{}鍊納}涓庡伐浣滄。鏉$爜鍊间笉涓�鑷达紝绯荤粺璺宠繃鎵ц", wrkMast.getWrkNo(), sourceBasDevp.getDevNo(), barcodeId, barcode);
+ News.info("{}浠诲姟,{}绔欑偣锛屾潯鐮佸櫒{}鍊納}涓庡伐浣滄。鏉$爜鍊納}涓嶄竴鑷达紝绯荤粺璺宠繃鎵ц", wrkMast.getWrkNo(), sourceBasDevp.getDevNo(), barcodeId, barcode,wrkMast.getBarcode());
return false;//绔欑偣涓嶅彲鍏�
}
}
+ }else {
+ return false;
}
//鍒ゆ柇鎻愬崌鏈烘暣涓笁妤兼槸鍚﹂兘澶勪簬鍏ュ簱妯″紡
@@ -1606,11 +1840,11 @@
*/
public synchronized void locToLocExecute() {
//鑾峰彇鍑哄叆搴撳伐浣滄。
- List<WrkMast> wrkMasts = wrkMastMapper.selectInOutWrkMast();
- if (wrkMasts.size() > 0) {
- //鏈夊嚭鍏ュ簱浠诲姟锛屽繀椤荤瓑寰呬换鍔℃墽琛屽畬姣曞啀鎵ц搴撲綅绉昏浆
- return;
- }
+// List<WrkMast> wrkMasts = wrkMastMapper.selectInOutWrkMast();
+// if (wrkMasts.size() > 0) {
+// //鏈夊嚭鍏ュ簱浠诲姟锛屽繀椤荤瓑寰呬换鍔℃墽琛屽畬姣曞啀鎵ц搴撲綅绉昏浆
+// return;
+// }
//鏌ヨ搴撲綅绉昏浆宸ヤ綔妗�
List<WrkMast> wrkMasts1 = wrkMastMapper.selectLocToLocWrkMast();
@@ -2370,7 +2604,9 @@
RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetls.size(), "303");
}
}
- }else if (staProtocol317.isAutoing() && staProtocol317.isLoading() && staProtocol317.getWorkNo() != 0) {
+ }
+
+ if (staProtocol317.isAutoing() && staProtocol317.isLoading() && staProtocol317.getWorkNo() != 0) {
//璋冨害鏈烘鑷�
//鏌ヨ鏄惁鏈夊伐浣滄。
WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol317.getWorkNo().intValue());
@@ -2448,7 +2684,7 @@
.build()
.doPost();
JSONObject jsonObject = JSON.parseObject(response);
- log.info("鎮寕绾匡紝wms杩斿洖缁撴灉锛�" + jsonObject);
+ News.info("鎮寕绾匡紝WMS杩斿洖缁撴灉锛�" + jsonObject);
Integer code = jsonObject.getInteger("code");
if (code.equals(200)) {//鍛煎彨AGV
return true;
@@ -2590,7 +2826,7 @@
ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
ledCommand.setLocNo(wrkMast.getLocNo());
ledCommand.setStaNo(wrkMast.getStaNo());
- if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
+ if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10 && wrkMast.getIoType() != 107) {
//for (WrkDetl wrkDetl : wrkDetls) {
// LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
//
@@ -2630,11 +2866,11 @@
//}
List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
locDetls.forEach(locDetl -> {
- Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no",wrkMast.getWrkNo());
- Utils.wapperSetCondition(wrapper,"batch",locDetl.getBatch());
- Utils.wapperSetCondition(wrapper,"three_code",locDetl.getThreeCode());
- Utils.wapperSetCondition(wrapper,"dead_time",locDetl.getDeadTime());
- Utils.wapperSetCondition(wrapper,"supp_code",locDetl.getSuppCode());//鏂欑鐮�
+ Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkMast.getWrkNo());
+ Utils.wapperSetCondition(wrapper, "batch", locDetl.getBatch());
+ Utils.wapperSetCondition(wrapper, "three_code", locDetl.getThreeCode());
+ Utils.wapperSetCondition(wrapper, "dead_time", locDetl.getDeadTime());
+ Utils.wapperSetCondition(wrapper, "supp_code", locDetl.getSuppCode());//鏂欑鐮�
WrkDetl detl = wrkDetlService.selectOne(wrapper);
if (Cools.isEmpty(detl)) {
String suppCode = "";
@@ -2651,6 +2887,14 @@
}
});
}
+
+ if (wrkMast.getIoType() == 107) {
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ wrkDetls.forEach(wrkDetl -> {
+ ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getAnfme(), wrkDetl.getSpecs(), wrkDetl.getSuppCode()));
+ });
+ }
+
commands.add(ledCommand);
}
Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
@@ -2898,9 +3142,18 @@
continue;
}
- if (shuttleProtocol.getVoltage() < 5630) {
- continue;//鐢靛帇涓嶅缁х画鍏呯數
+ //***************鍒ゆ柇鏄惁婊″厖鏍″噯***************
+ EntityWrapper<Config> wrapper1 = new EntityWrapper<>();
+ wrapper.eq("code", "shuttleMaxPowerVerify");
+ Config config1 = configService.selectOne(wrapper1);
+ if (config1 != null) {
+ if (config1.getValue().equals("true")) {
+ if (shuttleProtocol.getVoltage() < 5630) {
+ continue;//鐢靛帇涓嶅缁х画鍏呯數
+ }
+ }
}
+ //***************鍒ゆ柇鏄惁婊″厖鏍″噯***************
//灏忚溅婊$數锛岀粨鏉熷厖鐢典换鍔�
NyShuttleHttpCommand chargeCommand = NyHttpUtils.getChargeCommand(shuttle.getId(), wrkCharge.getWrkNo(), false);
--
Gitblit v1.9.1