From e1b28ee09836787555448083bf9a6b59477ad330 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期六, 21 九月 2024 08:18:58 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java | 139 +++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 124 insertions(+), 15 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..077b3fa 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,8 @@
private BasConveyorPathService basConveyorPathService;
@Autowired
private BasLedService basLedService;
+ @Autowired
+ private DeviceBarcodeService deviceBarcodeService;
/**
* 缁勬墭
@@ -421,6 +420,48 @@
// 瑙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) {
+ log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝杈撻��");
+ continue;
+ }
+ BasConveyor basConveyor = basConveyorService.getById(basConveyorSta.getConveyorId());
+ if (basConveyor == null) {
+ log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝杈撻��2");
+ continue;
+ }
+ DeviceBarcode deviceBarcode = deviceBarcodeService.getById(basConveyorSta.getBarcodeId());
+ if (deviceBarcode == null) {
+ log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝鏉$爜");
+ continue;
+ }
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, Integer.parseInt(deviceBarcode.getDeviceId()));
+ if (barcodeThread == null) {
+ log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝鏉$爜绾跨▼");
+ continue;
+ }
+ if (!barcodeThread.getBarcode().equals(task.getZpallet())) {
+ log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝鏉$爜涓嶇鍚堬紝浠诲姟鏉$爜锛�"+task.getZpallet()+",绾跨▼鏉$爜:"+barcodeThread.getBarcode());
+ continue;
+ }
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue());
+ if (devpThread == null) {
+ log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝杈撻�佺嚎绋�");
+ continue;
+ }
+ StaProtocol staProtocol = devpThread.getStation().get(basConveyorSta.getSiteNo());
+ if (staProtocol == null) {
+ log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝杈撻�佺珯鐐�");
+ continue;
+ }
+ if (!(staProtocol.isAutoing()
+ && staProtocol.isLoading()
+ && staProtocol.isInEnable())) {
+ log.error("瑙f瀽鍏ュ簱浠诲姟閫�鍑猴紝杈撻�佷俊鍙蜂笉绗﹀悎锛�"+staProtocol.isAutoing()+","+staProtocol.isLoading()+","+staProtocol.isInEnable());
+ continue;
+ }
+
+
if (Cools.isEmpty(task.getShuttleNo())) {
//鍒嗛厤灏忚溅
//鎼滅储绌洪棽杞�
@@ -439,8 +480,16 @@
}
// generate motion list
- List<Motion> motionList = analyzeService.generateMotion(task);
+ List<Motion> motionList = null;
+ try {
+ motionList = analyzeService.generateMotion(task);
+ }catch (Exception e) {
+ log.error("motion瑙f瀽鍑洪敊锛�"+e.getMessage());
+ continue;
+ }
+
if (motionList.isEmpty()) {
+ log.error("motion涓虹┖閫�鍑�");
continue;
}
motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId());
@@ -450,6 +499,38 @@
task.setUpdateTime(new Date());
if (!taskService.updateById(task)) {
News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo());
+ }else {
+ try {
+ if ("0601".equals(task.getMemo().substring(0, 4))) {
+ String response = "";
+ Map<String, Object> headers = new HashMap<>();
+ headers.put("Content-Type", "application/json;charset=UTF-8");
+ headers.put("X-lr-request-id", task.getWmsTaskNo());
+ headers.put("X-lr-version", 4.1);
+ headers.put("X-lr-trace-id", "{{$guid}}");
+
+ Map<String, Object> map = new HashMap<>();
+ map.put("carrierCode", task.getZpallet());
+ map.put("siteCode", "06YZ0001");
+ map.put("extra", null);
+ try {
+ response = new HttpHandler.Builder()
+ .setHeaders(headers)
+ .setUri("172.18.16.248:443")
+ .setHttps(true)
+ .setPath("/rcs/rtas/api/robot/controller/carrier/unbind")
+ .setJson(JSONObject.toJSONString(map))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ log.info("agv瑙g粦绠卞彿,璇锋眰浣�:" + JSONObject.toJSONString(map) + ",杩斿洖:" + response);
+ } catch (Exception e) {
+ log.info("agv瑙g粦绠卞彿璇锋眰鎶ラ敊" + e.getMessage());
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
}
}
@@ -570,18 +651,46 @@
}
}
+ // 瑙f瀽灏忚溅杞借揣绉诲姩宸ヤ綔妗�
+ public synchronized void analyzeLadenMoveTask() {
+ for (Task task : taskService.selectWaitAnalyzeLadenMoveTask()) {
+ if (Cools.isEmpty(task.getShuttleNo())) {
+ //鍒嗛厤灏忚溅
+ //鎼滅储绌洪棽杞�
+ ShuttleThread shuttleThread = shuttleDispatcher.searchIdleShuttle(task);
+ if (shuttleThread == null) {
+ News.info("{}浠诲姟鏈壘鍒扮┖闂茬┛姊溅", task.getTaskNo());
+ continue;
+ }
+
+ task.setShuttleNo(Integer.valueOf(shuttleThread.getDevice().getDeviceNo()));//淇濆瓨绌挎杞﹀彿
+ task.setUpdateTime(new Date());
+ if (!taskService.updateById(task)) {
+ News.info("{}浠诲姟鏇存柊绌挎杞﹀彿澶辫触", task.getTaskNo());
+ }
+ continue;
+ }
+
+ // generate motion list
+ List<Motion> motionList = analyzeService.generateShuttleLadenMoveMotion(task);
+ if (motionList.isEmpty()) {
+ continue;
+ }
+ motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId());
+
+ // 鏇存柊宸ヤ綔涓绘。
+ task.setTaskSts(TaskStsType.ANALYZE_LADEN_MOVE.sts); // 宸ヤ綔鐘舵��
+ task.setUpdateTime(new Date());
+ if (!taskService.updateById(task)) {
+ News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo());
+ }
+ }
+ }
+
/**
* 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數
*/
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))
@@ -618,7 +727,7 @@
//鎼滅储灏忚溅褰撳墠妤煎眰鍏呯數妗�
ArrayList<Loc> allChargeLoc = new ArrayList<>();
List<Loc> list1 = locService.list(new LambdaQueryWrapper<Loc>()
- .eq(Loc::getLocCtg, locCtg.getId())
+ .eq(Loc::getLocSts, LocStsType.C.val())
.eq(Loc::getStatus, 1)
.eq(Loc::getLev, lev));
if (!list1.isEmpty()) {
@@ -627,7 +736,7 @@
//鎼滅储鍏朵粬妤煎眰鍏呯數妗�
List<Loc> list2 = locService.list(new LambdaQueryWrapper<Loc>()
- .eq(Loc::getLocCtg, locCtg.getId())
+ .eq(Loc::getLocSts, LocStsType.C.val())
.eq(Loc::getStatus, 1)
.notIn(Loc::getLev, lev));
if (!list2.isEmpty()) {
--
Gitblit v1.9.1