From effb0d215b52c5cc26a5e9383e279817a8a2f274 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期五, 12 九月 2025 16:15:20 +0800
Subject: [PATCH] 电视机程序更新
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 274 ++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 252 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 bcaa71b..baf9e89 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -68,7 +68,7 @@
@Autowired
private WrkDetlService wrkDetlService;
@Autowired
- private WaitPakinMapper waitPakinMapper;
+ private WaitPakinService waitPakinService;
@Autowired
private LocMastService locMastService;
@Autowired
@@ -86,6 +86,8 @@
@Value("${wms.url}")
private String wmsUrl;
+ @Autowired
+ private WrkMastServiceImpl wrkMastService;
/**
* 缁勬墭
@@ -172,6 +174,7 @@
String errorMsg = errMsg;
MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
}
+ log.error("杈撻�佺嚎寮傚父缁勬墭閫�鍥�={}",errMsg);
staProtocol.setWorkNo((short) 9999);
staProtocol.setStaNo((short)(inSta.getStaNo()-1));
devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -404,7 +407,7 @@
// staProtocol.setPakMk(true);
// // 鍏ュ嚭搴撴ā寮忓垽鏂�
// if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
- if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()&&staProtocol.getWorkNo()>=9990){
WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
// WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
if(wrkMast == null){
@@ -770,7 +773,7 @@
crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 鐩爣搴撲綅鎺�
crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞�
- crnCommand.setCommand((short) 1);
+ crnCommand.setCommand((short) 0);
if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
} else {
@@ -865,6 +868,26 @@
break;
}
+ //鏈堿GV鎼繍鍏ュ簱鏃讹紝绂佹娲惧彂鍫嗗灈鏈哄嚭搴撲换鍔�
+ String staNo = "";
+ if(crnProtocol.getCrnNo()==1){
+ staNo = "105";
+ }else if(crnProtocol.getCrnNo()==2){
+ staNo = "103";
+ }else if(crnProtocol.getCrnNo()==3){
+ staNo = "101";
+ }
+ WaitPakin sku = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("sku", staNo));
+ if (!Cools.isEmpty(sku)) {
+ return;
+ }
+
+ //鏈夋嫞鏂欏洖搴揂GV鎼繍浠诲姟鏃讹紝绂佹娲惧彂鍫嗗灈鏈哄嚭搴撲换鍔�
+ List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("inv_wh", 0, 1, 2, 3).eq("sta_no", staNo));
+ if (!Cools.isEmpty(wrkMasts1)) {
+ return;
+ }
+
// 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
@@ -927,7 +950,7 @@
crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺�
crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞�
- crnCommand.setCommand((short) 1);
+ crnCommand.setCommand((short) 0);
if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
} else {
@@ -1435,6 +1458,7 @@
* 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
*/
public synchronized void ledExecute() {
+
for (LedSlave led : slaveProperties.getLed()) {
// 鑾峰彇杈撻�佺嚎plc绾跨▼
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
@@ -1453,7 +1477,10 @@
// 鑾峰彇宸ヤ綔妗f暟鎹�
WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
// if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
- if (null == wrkMast) { continue; }
+ if (null == wrkMast) {
+ continue;
+ }
+ log.info("寮�濮嬫墽琛�:鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�");
wrkMasts.add(wrkMast);
// 缁勮鍛戒护
LedCommand ledCommand = new LedCommand();
@@ -1483,17 +1510,40 @@
ledCommand.setTitle("绌烘澘鍑哄簱");
ledCommand.setEmptyMk(true);
break;
+ case 53:
+ ledCommand.setTitle("鎷f枡鍏ュ簱");
+ break;
+ case 57:
+ ledCommand.setTitle("鐩樼偣鍏ュ簱");
+ break;
+ case 54:
+ ledCommand.setTitle("骞舵澘鍏ュ簱");
+ break;
default:
- log.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+ log.error("鐢佃鏈烘樉绀轰换鍔″叆鍑哄簱绫诲瀷閿欒锛侊紒锛乕宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
break;
}
ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
ledCommand.setLocNo(wrkMast.getLocNo());
ledCommand.setStaNo(wrkMast.getStaNo());
// ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
- if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10 ) {
+ if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
- wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getSpecs(),wrkDetl.getModel())));
+ try{
+ if (wrkMast.getIoType()>100){
+ for (WrkDetl wrkDetl : wrkDetls){
+ LocDetl locDetl = locDetlService.selectMatnrSpecs(wrkDetl.getMatnr(), wrkDetl.getSpecs(), wrkMast.getSourceLocNo());
+ wrkDetl.setWeight(locDetl.getAnfme());
+ }
+ }else {
+ for (WrkDetl wrkDetl : wrkDetls){
+ wrkDetl.setWeight(wrkDetl.getAnfme());
+ }
+ }
+ }catch (Exception e){
+ log.error("宸ヤ綔妗f鏄庣粏杈撳叆鐢佃鏈哄け璐�1锛氬紓甯镐俊鎭�==銆�"+e);
+ }
+ wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getWeight(),wrkDetl.getSpecs(),wrkDetl.getSku())));
}
commands.add(ledCommand);
}
@@ -1504,24 +1554,33 @@
if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
continue;
}
+// 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
+// if (!commands.isEmpty()) {
+// if (led.getId() < 7) {
+// if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
+// News.error(""+mark+" - 2"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+// continue;
+// } else {
+// ledThread.setLedMk(false);
+// }
+// } else {
+// if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
+// News.error(""+mark+" - 3"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+// continue;
+// } else {
+// ledThread.setLedMk(false);
+// }
+// }
+//
+// }
// 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
if (!commands.isEmpty()) {
- if (led.getId()>4){
- if (!MessageQueue.offer(SlaveType.Led, led.getId()-4, new Task(3, commands))) {
- log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
- continue;
- } else {
- ledThread.setLedMk(false);
- }
+ if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
+ log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+ continue;
}else {
- if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
- log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
- continue;
- } else {
- ledThread.setLedMk(false);
- }
+ ledThread.setLedMk(false);
}
-
}
try {
@@ -1530,6 +1589,7 @@
wrkMast.setOveMk("Y");
wrkMast.setModiTime(new Date());
if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("鐢佃鏈烘爣璁板仛鍒板伐浣滄。涓� - 鏇存柊宸ヤ綔妗eけ璐�");
throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
}
}
@@ -1543,6 +1603,7 @@
}
}
+ log.info(" - 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣ㄦ墽琛屽畬鎴�");
}
/**
@@ -2065,5 +2126,174 @@
}
}
+ /**
+ * agv瀹屾垚鍏ュ簱浠诲姟锛岀粰杈撻�佺嚎涓嬪彂鍏ュ簱浠诲姟
+ * agv鐘舵��
+ * be_batch
+ * 0锛氭棤闇�璋冪敤AGV
+ * 1锛氱瓑寰呰皟鐢ˋGV
+ * 2锛欰GV浠诲姟涓嬪彂鎴愬姛
+ * 3锛欰GV浠诲姟瀹屾垚
+ * 4锛氱粰杈撻�佺嚎涓嬪彂鍏ュ簱鎸囦护瀹屾垚
+ */
+ public synchronized void overAGVTaskIn() {
+ int[] inStaNos= {101,103,105};
+ for (int inStaNo : inStaNos) {
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(inStaNo);
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (staProtocol.isAutoing() && staProtocol.isLoading()
+ && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0){// && !Cools.isEmpty(barcode)) {
+ //鑾峰彇AGV鎼繍瀹屾垚鐨勫叆搴撻�氱煡妗�
+ WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>()
+ .eq("sku", staProtocol.getSiteId()+"")
+ .eq("be_batch", 3));
+ if(Cools.isEmpty(waitPakin)){
+ continue;
+ }
+ short staNo = 0;
+ if(staProtocol.getSiteId()==101){
+ staNo=102;
+ }else if(staProtocol.getSiteId()==103){
+ staNo=104;
+ }else if(staProtocol.getSiteId()==105){
+ staNo=106;
+ }
+ staProtocol.setWorkNo((short) 9991);
+ staProtocol.setStaNo(staNo);
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+ if (!result) {
+ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+ }else {
+ waitPakin.setBeBatch(4);//4锛氱粰杈撻�佺嚎涓嬪彂鍏ュ簱鎸囦护瀹屾垚
+ waitPakin.setModiTime(new Date());
+ waitPakinService.update(waitPakin,new EntityWrapper<WaitPakin>().eq("supp_code",waitPakin.getSuppCode()));
+ }
+
+ }
+ }
+
+ }
+
+ /**
+ * agv鍑哄簱鎼锛屾竻闄ょ珯鐐瑰伐浣滃彿
+ * wrk_sts
+ * 30.绛夊緟缁橝GV涓嬪彂鍑哄簱浠诲姟
+ * 31.AGV鍑哄簱浠诲姟涓嬪彂鎴愬姛
+ * 32.AGV宸叉惉绂�
+ * 33.绛夊緟涓嬫灦
+ */
+ public synchronized void outStaNo() {
+ int[] inStaNos= {101,103,105};
+ for (int inStaNo : inStaNos) {
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(inStaNo);
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ // 鍒ゆ柇鏄惁婊¤冻agv鎼繍鍑哄簱浠诲姟锛屾惉绂荤姸鎬�
+ if (staProtocol.isAutoing() && !staProtocol.isLoading()
+ && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9990){// && !Cools.isEmpty(barcode)) {
+ //鑾峰彇AGV鎼鐨勪换鍔�
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+ .eq("wrk_no", staProtocol.getWorkNo())
+ .eq("wrk_sts",32L));
+ if(Cools.isEmpty(wrkMast)){
+ continue;
+ }
+
+ staProtocol.setWorkNo((short) 0);
+ staProtocol.setStaNo((short)0);
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+ if (!result) {
+ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+ }else {
+ wrkMast.setWrkSts(33L);
+ wrkMast.setModiTime(new Date());
+ wrkMastService.updateById(wrkMast);
+ }
+
+ }
+ }
+
+ }
+
+ /**
+ * agv瀹屾垚鍏ュ簱浠诲姟锛岀粰杈撻�佺嚎涓嬪彂鍏ュ簱浠诲姟
+ * agv鐘舵��
+ * be_batch
+ * 0锛氭棤闇�璋冪敤AGV
+ * 1锛氱瓑寰呰皟鐢ˋGV
+ * 2锛欰GV浠诲姟涓嬪彂鎴愬姛
+ * 3锛欰GV浠诲姟瀹屾垚
+ * 4锛氱粰杈撻�佺嚎涓嬪彂鍏ュ簱鎸囦护瀹屾垚
+ */
+ public synchronized void overAGVTaskInReturn() {
+ int[] inStaNos= {101,103,105};
+ for (int inStaNo : inStaNos) {
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(inStaNo);
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (staProtocol.isAutoing() && staProtocol.isLoading()
+ && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0){// && !Cools.isEmpty(barcode)) {
+ //鑾峰彇AGV鎼繍瀹屾垚鐨勫叆搴撻�氱煡妗�
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+ .eq("sta_no", staProtocol.getSiteId())
+ .eq("inv_wh", "1"));
+ if(Cools.isEmpty(wrkMast)){
+ continue;
+ }
+ short staNo = 0;
+ if(staProtocol.getSiteId()==101){
+ staNo=102;
+ }else if(staProtocol.getSiteId()==103){
+ staNo=104;
+ }else if(staProtocol.getSiteId()==105){
+ staNo=106;
+ }
+ staProtocol.setWorkNo((short) 9991);
+ staProtocol.setStaNo(staNo);
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+ if (!result) {
+ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+ }else {
+ /**
+ * inv_wh
+ * 鎷f枡鍥炲簱杈撻�佺嚎鍑哄彂
+ * 0绛夊緟agv鏀捐揣瀹屾垚
+ * 1绛夊緟杈撻�佺嚎鍏ュ簱
+ * 2杈撻�佺嚎鍏ュ簱浠诲姟涓嬪彂鎴愬姛
+ */
+ wrkMast.setInvWh("2");//2杈撻�佺嚎鍏ュ簱浠诲姟涓嬪彂鎴愬姛
+ wrkMast.setModiTime(new Date());
+ wrkMastService.updateById(wrkMast);
+ }
+
+ }
+ }
+
+ }
+
}
--
Gitblit v1.9.1