From f0b0f5d954d54840d62135a4a88db94797898967 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期三, 16 十月 2024 13:45:41 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java | 156 +++++++++++++++++++++++++++++++++++++--------------
1 files changed, 112 insertions(+), 44 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
index 1791776..1c69d07 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
@@ -15,10 +15,7 @@
import com.zy.asrs.wcs.core.entity.*;
import com.zy.asrs.wcs.core.kernel.AnalyzeService;
import com.zy.asrs.wcs.core.model.MapNode;
-import com.zy.asrs.wcs.core.model.enums.DeviceCtgType;
-import com.zy.asrs.wcs.core.model.enums.MotionStsType;
-import com.zy.asrs.wcs.core.model.enums.TaskCtgType;
-import com.zy.asrs.wcs.core.model.enums.TaskStsType;
+import com.zy.asrs.wcs.core.model.enums.*;
import com.zy.asrs.wcs.core.service.*;
import com.zy.asrs.wcs.core.utils.RedisUtil;
import com.zy.asrs.wcs.core.utils.ShuttleDispatcher;
@@ -85,6 +82,10 @@
private BasConveyorPathService basConveyorPathService;
@Autowired
private BasLedService basLedService;
+ @Autowired
+ private DeviceBarcodeService deviceBarcodeService;
+ @Autowired
+ private ShuttleChargeStaService shuttleChargeStaService;
/**
* 缁勬墭
@@ -100,6 +101,11 @@
BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>().eq(BasConveyor::getDeviceId, devp.getId()).eq(BasConveyor::getHostId, devp.getHostId()));
// 閬嶅巻鍏ュ簱鍙�
for (StaDto inSta : JSON.parseArray(basConveyor.getInSta(), StaDto.class)) {
+ BasConveyorSta basConveyorSta = basConveyorStaService.selectBySiteNo(inSta.getStaNo().toString());
+ if(basConveyorSta == null) {
+ continue;
+ }
+
// 鑾峰彇鍏ュ簱绔欎俊鎭�
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, devp.getId().intValue());
StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
@@ -157,13 +163,18 @@
) {
// 鑾峰彇鏉$爜鎵弿浠俊鎭�
- BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
+ DeviceBarcode deviceBarcode = deviceBarcodeService.getById(basConveyorSta.getBarcodeId());
+ if(deviceBarcode == null) {
+ continue;
+ }
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, Integer.parseInt(deviceBarcode.getDeviceId()));
if (barcodeThread == null) {
continue;
}
String barcode = barcodeThread.getBarcode();
if (!Cools.isEmpty(barcode)) {
- News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+ News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", deviceBarcode.getId(), barcode);
+
if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode) || "00000000".equals(barcode)) {
staProtocol.setWorkNo((short) 32002);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
@@ -209,10 +220,10 @@
param.setBarcode(barcode);
param.setIoType(1);
param.setSourceStaNo(inSta.getStaNo());
- param.setLocType1(staProtocol.getLocType1().shortValue());
+ param.setLocType1((short)1);
String response = new HttpHandler.Builder()
.setUri(wmsUrl)
- .setPath("/rpc/pakin/loc/v2")
+ .setPath("/rpc/pakin/loc/v1")
.setJson(JSON.toJSONString(param))
.build()
.doPost();
@@ -307,6 +318,17 @@
mapNode.setNo(object.getString("row") + "-" + object.getString("bay"));
mapNode.setXBase(object.getInteger("refx"));
mapNode.setYBase(object.getInteger("refy"));
+
+ if(mapNode.getValue() == MapNodeType.CONVEYOR.id) {
+ //杈撻�佺嚎,鍒ゆ柇灏忚溅鏄惁鍙蛋
+ if (object.containsKey("conveyorHasGo")) {
+ if(object.getBoolean("conveyorHasGo")) {
+ //灏忚溅鍙蛋
+ mapNode.setValue(MapNodeType.CONVEYOR_CAR_GO.id);
+ }
+ }
+ }
+
nodes.add(mapNode);
}
@@ -329,7 +351,7 @@
//瀛樺湪绌虹己鑺傜偣锛岃嚜鍔ㄨˉ瓒�
for (int i = defaultBay; i < node.getBay(); i++) {
MapNode mapNode = new MapNode();
- mapNode.setValue(-1);
+ mapNode.setValue(MapNodeType.DISABLE.id);
mapNode.setTop(1000);
mapNode.setBottom(1000);
mapNode.setLeft(1000);
@@ -356,7 +378,7 @@
ArrayList<ArrayList<MapNode>> lists = entry.getValue();//鑾峰彇鍦板浘
MapNode mapNode = new MapNode();
- mapNode.setValue(-1);
+ mapNode.setValue(MapNodeType.DISABLE.id);
mapNode.setTop(1000);
mapNode.setBottom(1000);
mapNode.setLeft(1000);
@@ -421,6 +443,46 @@
// 瑙f瀽鍏ュ簱宸ヤ綔妗�
public synchronized void analyzeInBoundTask() {
for (Task task : taskService.selectWaitAnalyzeInBoundTask()) {
+ BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>().eq(BasConveyorSta::getSiteNo, task.getDestSite()));
+ if (basConveyorSta == null) {
+ continue;
+ }
+ BasConveyor basConveyor = basConveyorService.getById(basConveyorSta.getConveyorId());
+ if (basConveyor == null) {
+ continue;
+ }
+// DeviceBarcode deviceBarcode = deviceBarcodeService.getById(basConveyorSta.getBarcodeId());
+// if (deviceBarcode == null) {
+// continue;
+// }
+// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, Integer.parseInt(deviceBarcode.getDeviceId()));
+// if (barcodeThread == null) {
+// continue;
+// }
+// if (!barcodeThread.getBarcode().equals(task.getZpallet())) {
+// continue;
+// }
+ if (Cools.isEmpty(basConveyorSta.getTaskNo())){
+ continue;
+ }
+ if (!basConveyorSta.getTaskNo().toString().equals(task.getWmsTaskNo())){
+ continue;
+ }
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue());
+ if (devpThread == null) {
+ continue;
+ }
+ StaProtocol staProtocol = devpThread.getStation().get(basConveyorSta.getSiteNo());
+ if (staProtocol == null) {
+ continue;
+ }
+ if (!(staProtocol.isAutoing()
+ && staProtocol.isLoading()
+ && staProtocol.isInEnable())) {
+ continue;
+ }
+
+
if (Cools.isEmpty(task.getShuttleNo())) {
//鍒嗛厤灏忚溅
//鎼滅储绌洪棽杞�
@@ -484,7 +546,7 @@
// staProtocol1 = staProtocol1.clone();
}
- // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
+ // 鍒ゆ柇鍑哄簱绔欑姸鎬�
if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
// if (!(staProtocol1.isAutoing() && !staProtocol1.isLoading() && staProtocol1.getWorkNo() == 0 && staProtocol1.isOutEnable())) {
// continue;
@@ -574,14 +636,6 @@
* 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數
*/
public synchronized void loopShuttleCharge() {
- // 鑾峰彇鍏呯數妗╁簱浣嶇被鍨�
- LocCtg locCtg = locCtgService.getOne(new LambdaQueryWrapper<LocCtg>()
- .eq(LocCtg::getFlag, "CHARGE")
- .eq(LocCtg::getStatus, 1));
- if (locCtg == null) {
- return;
- }
-
//鑾峰彇鍏呯數浠诲姟绫诲瀷
TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
.eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.CHARGE))
@@ -616,20 +670,19 @@
String currentLocNo = shuttleProtocol.getCurrentLocNo();
int lev = Utils.getLev(currentLocNo);//鑾峰彇灏忚溅妤煎眰
//鎼滅储灏忚溅褰撳墠妤煎眰鍏呯數妗�
- ArrayList<Loc> allChargeLoc = new ArrayList<>();
- List<Loc> list1 = locService.list(new LambdaQueryWrapper<Loc>()
- .eq(Loc::getLocCtg, locCtg.getId())
- .eq(Loc::getStatus, 1)
- .eq(Loc::getLev, lev));
+ ArrayList<ShuttleChargeSta> allChargeLoc = new ArrayList<>();
+
+ List<ShuttleChargeSta> list1 = shuttleChargeStaService.list(new LambdaQueryWrapper<ShuttleChargeSta>()
+ .eq(ShuttleChargeSta::getDeviceLev, lev)
+ .eq(ShuttleChargeSta::getStatus, 1));
if (!list1.isEmpty()) {
allChargeLoc.addAll(list1);
}
//鎼滅储鍏朵粬妤煎眰鍏呯數妗�
- List<Loc> list2 = locService.list(new LambdaQueryWrapper<Loc>()
- .eq(Loc::getLocCtg, locCtg.getId())
- .eq(Loc::getStatus, 1)
- .notIn(Loc::getLev, lev));
+ List<ShuttleChargeSta> list2 = shuttleChargeStaService.list(new LambdaQueryWrapper<ShuttleChargeSta>()
+ .notIn(ShuttleChargeSta::getDeviceLev, lev)
+ .eq(ShuttleChargeSta::getStatus, 1));
if (!list2.isEmpty()) {
allChargeLoc.addAll(list2);
}
@@ -640,24 +693,34 @@
}
//閫夋嫨绌洪棽鍏呯數妗�
- Loc chargeLoc = null;
- for (Loc loc : allChargeLoc) {
+ ShuttleChargeSta chargeSta = null;
+ for (ShuttleChargeSta shuttleChargeSta : allChargeLoc) {
// 鍒ゆ柇鍏呯數浣嶆槸鍚﹁鍗犵敤(杞﹁締浣嶇疆)
- if (Utils.hasShuttleInLoc(loc.getLocNo(), device.getId())) {
+ if (Utils.hasShuttleInLoc(shuttleChargeSta.getDeviceLoc(), device.getId())) {
continue;
}
// 鐩樼偣鍏呯數浣嶆槸鍚﹀瓨鍦ㄤ换鍔℃。
- List<Task> tasks = taskService.hasChargeInLoc(loc.getLocNo());
+ List<Task> tasks = taskService.hasChargeInLoc(shuttleChargeSta.getDeviceLoc());
if (!tasks.isEmpty()) {
continue;
}
- chargeLoc = loc;
+ Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>()
+ .eq(Loc::getLocNo, shuttleChargeSta.getDeviceLoc()));
+ if (loc == null) {
+ continue;
+ }
+
+ if (!loc.getLocSts().equals(LocStsType.C.val())) {
+ continue;//搴撲綅涓嶆槸鍏呯數妗�
+ }
+
+ chargeSta = shuttleChargeSta;
break;
}
- if (chargeLoc == null) {
+ if (chargeSta == null) {
continue;//鏈壘鍒板厖鐢垫々
}
@@ -678,7 +741,7 @@
continue;
}
- String chargeLocNo = chargeLoc.getLocNo();
+ String chargeLocNo = chargeSta.getDeviceLoc();
Task task = new Task();
task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
task.setTaskNo(String.valueOf(Utils.getTaskNo("CHARGE")));
@@ -718,14 +781,6 @@
* 鍥涘悜绌挎杞︾數閲忔娴� ===>> 婊$數鍚庡洖鍒板緟鏈轰綅
*/
public synchronized void loopShuttleToStandbyCauseCharge() {
- Integer enoughPower = 90;
- Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>()
- .eq(Dict::getFlag, "chargeMaxValue")
- .eq(Dict::getStatus, 1));
- if (dict != null) {
- enoughPower = Integer.parseInt(dict.getValue());
- }
-
//鑾峰彇杩佺Щ浠诲姟绫诲瀷
TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
.eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.MOVE))
@@ -771,8 +826,21 @@
continue;
}
+ ShuttleChargeSta chargeSta = shuttleChargeStaService.getOne(new LambdaQueryWrapper<ShuttleChargeSta>()
+ .eq(ShuttleChargeSta::getDeviceLoc, chargeTask.getDestLoc())
+ .eq(ShuttleChargeSta::getStatus, 1));
+ if (chargeSta == null) {
+ continue;//鍏呯數妗╀笉瀛樺湪锛屽紓甯�
+ }
+
+ String standbyLoc = chargeSta.getStandbyLoc();
+ if (standbyLoc == null) {
+ continue;//閬胯浣嶇疆鏁版嵁涓嶅瓨鍦�
+ }
+ List<String> availableLoc = JSON.parseArray(standbyLoc, String.class);
+
//鑾峰彇閬胯浣嶇疆
- String standByLocNo = shuttleDispatcher.searchStandByLocNo(Integer.valueOf(device.getDeviceNo()), device.getHostId(), shuttleThread.getStatus().getCurrentLocNo());
+ String standByLocNo = shuttleDispatcher.searchAvailableLocNo(Integer.valueOf(device.getDeviceNo()), device.getHostId(), shuttleThread.getStatus().getCurrentLocNo(), availableLoc);
Task task = new Task();
task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
--
Gitblit v1.9.1