From 964a867a0e8a0814ecd7152a8ef1266f664a014b Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 11 十二月 2025 15:36:10 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 317 +++++++++++++++++++++++++++++++++-------------------
1 files changed, 202 insertions(+), 115 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 ee75672..656844d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,6 +7,7 @@
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
+import com.zy.asrs.domain.dto.LedDTO;
import com.zy.asrs.domain.param.ForwardAGVTaskParam;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.*;
@@ -97,6 +98,10 @@
private OrderService orderService;
@Autowired
private OrderDetlService orderDetlService;
+ @Autowired
+ private BasStationService basStationService;
+ @Autowired
+ private BasStationDetlService basStationDetlService;
@Resource
private ApiLogService apiLogService;
@@ -601,7 +606,7 @@
// 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
wrkMast.setWrkSts(13L);
- if (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1028) {
+ if (wrkMast.getStaNo() == 1024) {
wrkMast.setWrkSts(14L);
}
wrkMast.setCrnEndTime(new Date());
@@ -1446,6 +1451,8 @@
) {
News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛岋細绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�");
+ String barcode = staProtocol.getBarcode();
+
try {
LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
@@ -1453,6 +1460,7 @@
param.setIoType(10);
param.setSourceStaNo(emptyInSta.getStaNo());
param.setLocType1((short) 0);
+ param.setBarcode(barcode);
String response = new HttpHandler.Builder()
.setUri(wmsUrl)
.setPath("/rpc/pakin/loc/v1")
@@ -1528,105 +1536,23 @@
for (LedSlave led : slaveProperties.getLed()) {
// 鑾峰彇杈撻�佺嚎plc绾跨▼
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
- // 鍛戒护闆嗗悎
- List<LedCommand> commands = new ArrayList<>();
- // 宸ヤ綔妗i泦鍚�
- List<WrkMast> wrkMasts = new ArrayList<>();
- for (Integer staNo : led.getStaArr()) {
- // 鑾峰彇鍙夎溅绔欑偣
- StaProtocol staProtocol = devpThread.getStation().get(staNo);
- if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || staProtocol.workType == DevpWorkType.IDLE) {
- continue;
- } else {
- staProtocol = staProtocol.clone();
- }
- // 鑾峰彇宸ヤ綔妗f暟鎹�
- WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
- if (null == wrkMast) { continue; }
- wrkMasts.add(wrkMast);
- // 缁勮鍛戒护
- LedCommand ledCommand = new LedCommand();
- ledCommand.setWorkNo(wrkMast.getWrkNo());
- ledCommand.setIoType(wrkMast.getIoType());
- // 鍑哄簱妯″紡
- switch (wrkMast.getIoType()) {
- case 1:
- ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
- break;
- case 10:
- ledCommand.setTitle("绌烘澘鍏ュ簱");
- break;
- case 101:
- ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
- break;
- case 103:
- ledCommand.setTitle("鎷f枡鍑哄簱");
- break;
- case 104:
- ledCommand.setTitle("骞舵澘鍑哄簱");
- break;
- case 107:
- ledCommand.setTitle("鐩樼偣鍑哄簱");
- break;
- case 110:
- ledCommand.setTitle("绌烘澘鍑哄簱");
- ledCommand.setEmptyMk(true);
- break;
- default:
- News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
- break;
- }
- ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
- ledCommand.setStaNo(wrkMast.getStaNo());
- ledCommand.setBarcode(wrkMast.getBarcode());
- if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
- List<WrkDetl> wrkDetls =wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-
- wrkDetls.forEach(wrkDetl -> {
- Double total = 0.0;
- EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
- LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
- if (Cools.isEmpty(locDetl)) {
- total = wrkDetl.getAnfme();
- } else {
- total = locDetl.getAnfme();
- }
- if (!Cools.isEmpty(wrkDetl.getOrderNo())){
- OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", wrkDetl.getOrderNo())
- .eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch()));
- if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
- ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2()));
- }
- if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
- ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2()));
- }
- if (wrkMast.getIoType() == 107 || wrkMast.getIoType() == 104) {
- ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2()));
- }
- }else {
- if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
- ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
- }
- if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
- ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
- }
- if (wrkMast.getIoType() == 107 || wrkMast.getIoType() == 104) {
- ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
- }
- }
-
-
- });
- }
- commands.add(ledCommand);
+ LedDTO ledDTO = new LedDTO();
+ if (!led.getStaArr().isEmpty()) {
+ ledDTO = getstaCommands(led.getStaArr(), devpThread);
+ }else {
+ ledDTO = getAgvStaCommands(led.getAgvStaArr());
}
+ // 鍛戒护闆嗗悎
+ List<LedCommand> commands = ledDTO.getCommands();
+ // 宸ヤ綔妗i泦鍚�
+ List<WrkMast> wrkMasts = ledDTO.getWrkMasts();
Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
// 鑾峰彇LED绾跨▼
LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
// 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护
- if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
- continue;
- }
+// if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
+// continue;
+// }
// 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
if (!commands.isEmpty()) {
if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
@@ -1656,6 +1582,139 @@
}
}
+ public LedDTO getstaCommands(List<Integer> staArr, DevpThread devpThread ) {
+ LedDTO ledDTO = new LedDTO();
+ List<LedCommand> commands = new ArrayList<>();
+ // 宸ヤ綔妗i泦鍚�
+ List<WrkMast> wrkMasts = new ArrayList<>();
+ for (Integer staNo : staArr) {
+ // 鑾峰彇鍙夎溅绔欑偣
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || staProtocol.workType == DevpWorkType.IDLE) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鑾峰彇宸ヤ綔妗f暟鎹�
+ WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
+ if (null == wrkMast) { continue; }
+ wrkMasts.add(wrkMast);
+ // 缁勮鍛戒护
+ LedCommand ledCommand = new LedCommand();
+ ledCommand.setWorkNo(wrkMast.getWrkNo());
+ ledCommand.setIoType(wrkMast.getIoType());
+ // 鍑哄簱妯″紡
+ switch (wrkMast.getIoType()) {
+ case 1:
+ ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
+ break;
+ case 10:
+ ledCommand.setTitle("绌烘澘鍏ュ簱");
+ break;
+ case 101:
+ ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
+ break;
+ case 103:
+ ledCommand.setTitle("鎷f枡鍑哄簱");
+ break;
+ case 104:
+ ledCommand.setTitle("骞舵澘鍑哄簱");
+ break;
+ case 107:
+ ledCommand.setTitle("鐩樼偣鍑哄簱");
+ break;
+ case 110:
+ ledCommand.setTitle("绌烘澘鍑哄簱");
+ ledCommand.setEmptyMk(true);
+ break;
+ default:
+ News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+ break;
+ }
+ ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+ ledCommand.setStaNo(wrkMast.getStaNo());
+ ledCommand.setBarcode(wrkMast.getBarcode());
+ if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
+ List<WrkDetl> wrkDetls =wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+
+ wrkDetls.forEach(wrkDetl -> {
+ Double total = 0.0;
+ EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+ LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
+ if (Cools.isEmpty(locDetl)) {
+ total = wrkDetl.getAnfme();
+ } else {
+ total = locDetl.getAnfme();
+ }
+ if (!Cools.isEmpty(wrkDetl.getOrderNo())){
+ OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", wrkDetl.getOrderNo())
+ .eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch()));
+ if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
+ ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2()));
+ }
+ if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
+ ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2()));
+ }
+ if (wrkMast.getIoType() == 107 || wrkMast.getIoType() == 104) {
+ ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2()));
+ }
+ }else {
+ if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
+ ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+ }
+ if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
+ ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+ }
+ if (wrkMast.getIoType() == 107 || wrkMast.getIoType() == 104) {
+ ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+ }
+ }
+
+
+ });
+ }
+ commands.add(ledCommand);
+ }
+ ledDTO.setCommands(commands);
+ ledDTO.setWrkMasts(wrkMasts);
+ return ledDTO;
+ }
+
+ public LedDTO getAgvStaCommands(List<String> agvStaArr ) {
+ LedDTO ledDTO = new LedDTO();
+ List<LedCommand> commands = new ArrayList<>();
+ // 宸ヤ綔妗i泦鍚�
+ List<BasStation> basStations = new ArrayList<>();
+ for (String staNo : agvStaArr) {
+ // 鑾峰彇宸ヤ綔妗f暟鎹�
+ BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", staNo));
+ if (null == station || !station.getLocSts().equals("F")) { continue; }
+ basStations.add(station);
+ // 缁勮鍛戒护
+ LedCommand ledCommand = new LedCommand();
+ ledCommand.setTitle("鍦ㄧ珯淇℃伅");
+ ledCommand.setSourceLocNo(station.getDevNo());
+ ledCommand.setBarcode(station.getBarcode());
+
+ List<BasStationDetl> basStationDetls = basStationDetlService.selectList(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
+
+ basStationDetls.forEach(basStationDetl -> {
+ Double total = 0.0;
+ total = basStationDetl.getAnfme();
+
+ ledCommand.getMatDtos().add(new MatDto(basStationDetl.getMatnr(), basStationDetl.getMaktx(), basStationDetl.getBatch(), basStationDetl.getSpecs(), basStationDetl.getManu(), basStationDetl.getMemo(), basStationDetl.getAnfme(),total,basStationDetl.getStandby1(),null));
+
+
+
+
+ });
+
+ commands.add(ledCommand);
+ }
+ ledDTO.setCommands(commands);
+ return ledDTO;
+ }
+
/**
* 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
*/
@@ -1663,28 +1722,54 @@
for (LedSlave led : slaveProperties.getLed()) {
// 鑾峰彇杈撻�佺嚎plc绾跨▼
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
- // 鍛戒护闆嗗悎
- boolean reset = true;
- for (Integer staNo : led.getStaArr()) {
- // 鑾峰彇鍙夎溅绔欑偣
- StaProtocol staProtocol = devpThread.getStation().get(staNo);
- if (staProtocol == null) { continue; }
- if (staProtocol.getWorkNo() != 0 || staProtocol.isErr()) {
- reset = false;
- break;
+ if (!led.getStaArr().isEmpty()){
+ // 鍛戒护闆嗗悎
+ boolean reset = true;
+ for (Integer staNo : led.getStaArr()) {
+ // 鑾峰彇鍙夎溅绔欑偣
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ if (staProtocol == null) { continue; }
+ if (staProtocol.getWorkNo() != 0 || staProtocol.isErr()) {
+ reset = false;
+ break;
+ }
+ }
+ // 鑾峰彇led绾跨▼
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+ // led鏄剧ず榛樿鍐呭
+ if (reset) {
+ if (ledThread == null) {
+ continue;
+ }
+ if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
+ News.error("{}鍙稬ED鏄剧ず榛樿鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+ }
+ }
+ }else {
+ // 鍛戒护闆嗗悎
+ boolean reset = false;
+ for (String staNo : led.getAgvStaArr()) {
+ // 鑾峰彇鍙夎溅绔欑偣
+ BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", staNo));
+ if (null == station) { continue; }
+ if (station.getLocSts().equals("O")) {
+ reset = true;
+ break;
+ }
+ }
+ // 鑾峰彇led绾跨▼
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+ // led鏄剧ず榛樿鍐呭
+ if (reset) {
+ if (ledThread == null) {
+ continue;
+ }
+ if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
+ News.error("{}鍙稬ED鏄剧ず榛樿鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+ }
}
}
- // 鑾峰彇led绾跨▼
- LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
- // led鏄剧ず榛樿鍐呭
- if (reset) {
- if (ledThread == null) {
- continue;
- }
- if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
- News.error("{}鍙稬ED鏄剧ず榛樿鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
- }
- }
+
}
}
@@ -2124,6 +2209,8 @@
sourceSite = "c";
} else if(staNo == 2000 || staNo ==2002) {
sourceSite = "d";
+ }else if (staNo == 1028){
+ sourceSite = "f";
}
List<ForwardAGVTaskParam.PositionCodePaths> agvTaskParamList = Arrays.asList(
//璧峰浣�
--
Gitblit v1.9.1