From 50435a81915932eda06b7f1afd48f9ff1ae84f19 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期四, 10 四月 2025 17:50:28 +0800
Subject: [PATCH] 1
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java | 637 +++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 432 insertions(+), 205 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 1ac7110..e5efb23 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
@@ -8,21 +8,16 @@
import com.zy.asrs.common.domain.param.SearchLocParam;
import com.zy.asrs.common.utils.HttpHandler;
import com.zy.asrs.framework.common.Cools;
-import com.zy.asrs.framework.common.R;
import com.zy.asrs.framework.common.SnowflakeIdWorker;
-import com.zy.asrs.wcs.core.domain.dto.MatDto;
+import com.zy.asrs.wcs.core.action.LiftAction;
import com.zy.asrs.wcs.core.domain.dto.RedisMapDto;
import com.zy.asrs.wcs.core.domain.dto.StaDto;
-import com.zy.asrs.wcs.core.domain.param.CreateInTaskParam;
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.*;
import com.zy.asrs.wcs.core.service.*;
-import com.zy.asrs.wcs.core.utils.OpenUtils;
-import com.zy.asrs.wcs.core.utils.RedisUtil;
-import com.zy.asrs.wcs.core.utils.ShuttleDispatcher;
-import com.zy.asrs.wcs.core.utils.Utils;
+import com.zy.asrs.wcs.core.utils.*;
import com.zy.asrs.wcs.rcs.News;
import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
import com.zy.asrs.wcs.rcs.constant.DeviceRedisConstant;
@@ -33,9 +28,9 @@
import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol;
import com.zy.asrs.wcs.rcs.model.protocol.StaProtocol;
import com.zy.asrs.wcs.rcs.service.DeviceService;
-import com.zy.asrs.wcs.rcs.thread.BarcodeThread;
import com.zy.asrs.wcs.rcs.thread.DevpThread;
import com.zy.asrs.wcs.rcs.thread.LedThread;
+import com.zy.asrs.wcs.rcs.thread.LiftThread;
import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
import com.zy.asrs.wcs.system.entity.Dict;
import com.zy.asrs.wcs.system.service.DictService;
@@ -43,7 +38,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
import java.util.*;
/**
@@ -91,6 +86,77 @@
private ShuttleChargeStaService shuttleChargeStaService;
@Autowired
private OpenUtils openUtils;
+ @Autowired
+ private LiftAction liftAction;
+ @Autowired
+ private LiftDispatcher liftDispatcher;
+ @Autowired
+ private ShuttleStandbyService shuttleStandbyService;
+
+
+ private boolean isInEnable(DevpThread devpThread, Integer staNo) {
+ if (staNo == null) {
+ return false;
+ }
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ switch (staNo) {
+ case 1011:
+ case 1012:
+ devpThread.getStation().get(1012).isInEnable();
+ break;
+ case 1021:
+ case 1022:
+ case 1023:
+ devpThread.getStation().get(1022).isInEnable();
+ break;
+ case 1031:
+ case 1032:
+ devpThread.getStation().get(1032).isInEnable();
+ break;
+ case 1025:
+ case 1026:
+ devpThread.getStation().get(1025).isInEnable();
+ break;
+ case 1013:
+ case 1014:
+ case 1015:
+ devpThread.getStation().get(1014).isInEnable();
+ break;
+ }
+ return false;
+ }
+
+ private boolean isOutEnable(DevpThread devpThread, Integer staNo) {
+ if (staNo == null) {
+ return false;
+ }
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ switch (staNo) {
+ case 1011:
+ case 1012:
+ devpThread.getStation().get(1012).isOutEnable();
+ break;
+ case 1021:
+ case 1022:
+ case 1023:
+ devpThread.getStation().get(1022).isOutEnable();
+ break;
+ case 1031:
+ case 1032:
+ devpThread.getStation().get(1032).isOutEnable();
+ break;
+ case 1025:
+ case 1026:
+ devpThread.getStation().get(1025).isOutEnable();
+ break;
+ case 1013:
+ case 1014:
+ case 1015:
+ devpThread.getStation().get(1014).isOutEnable();
+ break;
+ }
+ return false;
+ }
/**
* 缁勬墭
@@ -107,7 +173,7 @@
// 閬嶅巻鍏ュ簱鍙�
for (StaDto inSta : JSON.parseArray(basConveyor.getInSta(), StaDto.class)) {
BasConveyorSta basConveyorSta = basConveyorStaService.selectBySiteNo(inSta.getStaNo().toString());
- if(basConveyorSta == null) {
+ if (basConveyorSta == null) {
continue;
}
@@ -163,38 +229,33 @@
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing() && staProtocol.isLoading()
- && staProtocol.isInEnable()
+ && isInEnable(devpThread, inSta.getStaNo())
&& !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999))
&& staProtocol.isPakMk()
) {
- // 鑾峰彇鏉$爜鎵弿浠俊鎭�
- DeviceBarcode deviceBarcode = deviceBarcodeService.getById(basConveyorSta.getBarcodeId());
- if(deviceBarcode == null) {
+ Object object = redisUtil.get(DeviceRedisConstant.LIFT_PALLET_INBOUND + inSta.getStaNo());
+ if (object != null) {
continue;
}
- BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, Integer.parseInt(deviceBarcode.getDeviceId()));
- if (barcodeThread == null) {
- continue;
- }
- String barcode = barcodeThread.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("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", deviceBarcode.getId(), barcode);
+// }
+
+ String barcode = staProtocol.getBarcode();
if (!Cools.isEmpty(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());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- devpThread.writeWorkSta(staProtocol.getSiteId(), (short) 32002, inSta.getBackSta().shortValue());
-
- // led 寮傚父鏄剧ず
- LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
- if (ledThread != null) {
- String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
- ledThread.error(errorMsg);
- }
- continue;
- }
+ News.info("鏉$爜鎵弿鍣ㄦ娴嬫潯鐮佷俊鎭細{}", barcode);
}
// 鍒ゆ柇閲嶅宸ヤ綔妗�
@@ -238,43 +299,43 @@
if (code.equals(200)) {
StartupDto dto = jsonObject.getObject("data", StartupDto.class);
- String wmsLocNo = dto.getLocNo();
- int row = Integer.parseInt(wmsLocNo.substring(0, 2));
- int bay = Integer.parseInt(wmsLocNo.substring(2, 5));
- int lev = Integer.parseInt(wmsLocNo.substring(5, 7));
- row -= 16;
- String wcsLocNo = Utils.getLocNo(row, bay, lev);
+// String wmsLocNo = dto.getLocNo();
+// int row = Integer.parseInt(wmsLocNo.substring(0, 2));
+// int bay = Integer.parseInt(wmsLocNo.substring(2, 5));
+// int lev = Integer.parseInt(wmsLocNo.substring(5, 7));
+// String wcsLocNo = Utils.getLocNo(row, bay, lev);
+//
+// CreateInTaskParam createInTaskParam = new CreateInTaskParam();
+// createInTaskParam.setTaskNo(String.valueOf(dto.getWorkNo()));
+// createInTaskParam.setDestLoc(wcsLocNo);
+// createInTaskParam.setOriginSite(dto.getSourceStaNo().toString());
+// createInTaskParam.setDestSite(dto.getStaNo().toString());
+// createInTaskParam.setPriority(11);
+// createInTaskParam.setBarcode(barcode);
+//
+// R result = openUtils.createInTask(createInTaskParam);
+// News.info("鍒涘缓鍏ュ簱浠诲姟锛屼换鍔℃暟鎹�={}锛學MS鍝嶅簲={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject), JSON.toJSON(result));
+// try{
+// String msg = "";
+// HashMap<String, String> hashMap = new HashMap<>();
+// hashMap.put("msg", msg);
+// hashMap.put("sta", inSta.getStaNo().toString());
+// new HttpHandler.Builder()
+// .setUri(wmsUrl)
+// .setPath("/rpc/led/getError")
+// .setJson(JSON.toJSONString(hashMap))
+// .build()
+// .doPost();
+// }catch (Exception e){
+//
+// }
- CreateInTaskParam createInTaskParam = new CreateInTaskParam();
- createInTaskParam.setTaskNo(String.valueOf(dto.getWorkNo()));
- createInTaskParam.setDestLoc(wcsLocNo);
- createInTaskParam.setOriginSite("31002");
- createInTaskParam.setDestSite("31004");
- createInTaskParam.setPriority(11);
- createInTaskParam.setBarcode(barcode);
-
- R result = openUtils.createInTask(createInTaskParam);
- News.info("鍒涘缓鍏ュ簱浠诲姟锛屼换鍔℃暟鎹�={}锛學MS鍝嶅簲={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject), JSON.toJSON(result));
- try{
- String msg = "";
- HashMap<String, String> hashMap = new HashMap<>();
- hashMap.put("msg", msg);
- hashMap.put("sta", "31001");
- new HttpHandler.Builder()
- .setUri(wmsUrl)
- .setPath("/rpc/led/getError")
- .setJson(JSON.toJSONString(hashMap))
- .build()
- .doPost();
- }catch (Exception e){
-
- }
-
- }else {
+ redisUtil.set(DeviceRedisConstant.LIFT_PALLET_INBOUND + inSta.getStaNo(), "in", 10);
+ } else {
String msg = jsonObject.getString("msg");
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("msg", msg);
- hashMap.put("sta", "31001");
+ hashMap.put("sta", inSta.getStaNo().toString());
new HttpHandler.Builder()
.setUri(wmsUrl)
.setPath("/rpc/led/getError")
@@ -347,10 +408,10 @@
mapNode.setXBase(object.getInteger("refx"));
mapNode.setYBase(object.getInteger("refy"));
- if(mapNode.getValue() == MapNodeType.CONVEYOR.id) {
+ if (mapNode.getValue() == MapNodeType.CONVEYOR.id) {
//杈撻�佺嚎,鍒ゆ柇灏忚溅鏄惁鍙蛋
if (object.containsKey("conveyorHasGo")) {
- if(object.getBoolean("conveyorHasGo")) {
+ if (object.getBoolean("conveyorHasGo")) {
//灏忚溅鍙蛋
mapNode.setValue(MapNodeType.CONVEYOR_CAR_GO.id);
}
@@ -444,7 +505,7 @@
ArrayList<MapNode> headNodes = new ArrayList<>();
ArrayList<MapNode> footerNodes = new ArrayList<>();
- for (int i = 0; i < row+2; i++) {
+ for (int i = 0; i < row + 2; i++) {
headNodes.add(mapNode.clone());
footerNodes.add(mapNode.clone());
}
@@ -462,6 +523,7 @@
//灏嗗湴鍥炬暟鎹瓨鍏edis
redisUtil.set(DeviceRedisConstant.MAP + lev, JSON.toJSONString(map));
+ redisUtil.set(DeviceRedisConstant.BASE_MAP + lev, JSON.toJSONString(map));
}
} catch (Exception e) {
e.printStackTrace();
@@ -470,86 +532,202 @@
// 瑙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.getTaskNo())){
- 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;
- }
+ try {
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ List<Device> list = deviceService.list(new LambdaQueryWrapper<Device>()
+ .eq(Device::getDeviceType, DeviceCtgType.CONVEYOR.val())
+ .eq(Device::getStatus, 1));
+ for (Device devp : list) {
+ BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>().eq(BasConveyor::getDeviceId, devp.getId()).eq(BasConveyor::getHostId, devp.getHostId()));
+ // 閬嶅巻鍏ュ簱鍙�
+ for (StaDto inSta : JSON.parseArray(basConveyor.getDeviceInSta(), StaDto.class)) {
+ BasConveyorSta basConveyorSta = basConveyorStaService.selectBySiteNo(inSta.getStaNo().toString());
+ if (basConveyorSta == null) {
+ continue;
+ }
- //瑙f瀽鍓嶅垽鏂唴閮ㄧ洰鏍囧�兼槸鍚︽湁鐗� 鏈夊伐浣滃彿
- StaProtocol staProtocolInside = devpThread.getStation().get(Utils.getStaByLev(Utils.getLev(task.getDestLoc())));
- if (staProtocolInside == null) {
- continue;
- }
- if (staProtocolInside.isLoading() || staProtocolInside.getWorkNo() !=0) {
- continue;
- }
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, devp.getId().intValue());
+ StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ int workNo = 0;
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if ((staProtocol.getSiteId() == 1015 || staProtocol.getSiteId() == 1023 || staProtocol.getSiteId() == 1026 || staProtocol.getSiteId() == 1032) &&
+ staProtocol.isAutoing() && staProtocol.isLoading()) {
+ workNo = staProtocol.getFinishWorkNo().intValue();
+ } else if ((staProtocol.getSiteId() == 1012) && staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) {
+ workNo = staProtocol.getWorkNo().intValue();
+ } else {
+ continue;
+ }
- if (Cools.isEmpty(task.getShuttleNo())) {
- //鍒嗛厤灏忚溅
- //鎼滅储绌洪棽杞�
- ShuttleThread shuttleThread = shuttleDispatcher.searchIdleShuttle(task);
- if (shuttleThread == null) {
- News.info("{}浠诲姟鏈壘鍒扮┖闂茬┛姊溅", task.getTaskNo());
- continue;
+ Task task = taskService.getOne(new LambdaQueryWrapper<Task>()
+ .in(Task::getTaskSts, TaskStsType.NEW_INBOUND.sts)
+ .eq(Task::getTaskNo, workNo));
+ if (task != null) {
+ if (!Cools.isEmpty(task.getLiftNo())) {
+ if (task.getLiftNo() > 0) {
+ task.setLiftNo(0);
+ task.setUpdateTime(new Date());
+ if (!taskService.updateById(task)) {
+ News.info("{}浠诲姟鏇存柊閲婃斁鎻愬崌鏈哄け璐�", task.getTaskNo());
+ }
+ }
+ }
+
+ //鑾峰彇璺濈鐩爣浣嶇疆鏈�杩戠殑鍙崲灞傛彁鍗囨満(鍙兘涓嶇┖闂�)
+ LiftThread liftThread = liftDispatcher.searchLift(task.getDestLoc(), task.getHostId(), true);
+ if (liftThread == null) {
+ continue;
+ }
+ Device transferLiftDevice = liftThread.getDevice();
+ //鑾峰彇灏忚溅寰呮満搴撲綅 ==> 杩涙彁鍗囨満
+ ShuttleStandby shuttleStandbyTo = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
+ .eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId())
+ .eq(ShuttleStandby::getDeviceLev, Utils.getLev(task.getDestLoc()))
+ .eq(ShuttleStandby::getStatus, 1));
+ //绌挎杞﹁繘鎻愬崌鏈哄簱浣嶅彿
+ String liftLocNoTo = shuttleStandbyTo.getDeviceLoc();
+ //绌挎杞﹁繘鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� 杈撻�佺嚎浣嶇疆
+ String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc();
+
+ //涓嶈蛋鎻愬崌鏈�
+ if (staProtocol.getSiteId() == 1015 || staProtocol.getSiteId() == 1026) {
+ standbyLocNoTo = staProtocol.getLocNo();
+ }
+
+ if (Cools.isEmpty(task.getShuttleNo())) {
+ //鍒嗛厤灏忚溅
+ //璋冨害绌洪棽杞﹀幓鍙栬揣寰呮満浣�
+ Device shuttleDevice = shuttleDispatcher.dispatchShuttle(task, standbyLocNoTo);
+ if (shuttleDevice == null) {
+ News.info("{}浠诲姟鏈壘鍒扮┖闂茬┛姊溅", task.getTaskNo());
+ continue;
+ }
+
+ task.setShuttleNo(Integer.valueOf(shuttleDevice.getDeviceNo()));//淇濆瓨绌挎杞﹀彿
+ task.setUpdateTime(new Date());
+ if (!taskService.updateById(task)) {
+ News.info("{}浠诲姟鏇存柊绌挎杞﹀彿澶辫触", task.getTaskNo());
+ }
+ continue;
+ }
+
+ //鍒ゆ柇灏忚溅鏄惁鍒拌揪鍙栬揣寰呮満浣嶇疆
+ String shuttleLocNo = shuttleDispatcher.findShuttleLocNo(task.getShuttleNo(), task.getHostId());
+ if (shuttleLocNo == null) {
+ continue;
+ }
+
+ if (!standbyLocNoTo.equals(shuttleLocNo)) {
+ continue;
+ }
+
+ // generate motion list
+ List<Motion> motionList = analyzeService.generateMotion(task);
+ if (motionList.isEmpty()) {
+ continue;
+ }
+ motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId());
+
+ // 鏇存柊宸ヤ綔涓绘。
+ task.setTaskSts(TaskStsType.ANALYZE_INBOUND.sts); // 宸ヤ綔鐘舵��
+ task.setUpdateTime(new Date());
+ if (!taskService.updateById(task)) {
+ News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo());
+ }
+ break;
+ }
}
-
- 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.generateMotion(task);
- if (motionList.isEmpty()) {
- continue;
- }
- motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId());
-
- // 鏇存柊宸ヤ綔涓绘。
- task.setTaskSts(TaskStsType.ANALYZE_INBOUND.sts); // 宸ヤ綔鐘舵��
- task.setUpdateTime(new Date());
- if (!taskService.updateById(task)) {
- News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo());
- }
+ } catch (Exception e) {
+ e.printStackTrace();
}
+
+// 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.getTaskNo())){
+// 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;
+// }
+//
+// //瑙f瀽鍓嶅垽鏂唴閮ㄧ洰鏍囧�兼槸鍚︽湁鐗� 鏈夊伐浣滃彿
+// StaProtocol staProtocolInside = devpThread.getStation().get(Utils.getStaByLev(Utils.getLev(task.getDestLoc())));
+// if (staProtocolInside == null) {
+// continue;
+// }
+// if (staProtocolInside.isLoading() || staProtocolInside.getWorkNo() !=0) {
+// continue;
+// }
+//
+// 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.generateMotion(task);
+// if (motionList.isEmpty()) {
+// continue;
+// }
+// motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId());
+//
+// // 鏇存柊宸ヤ綔涓绘。
+// task.setTaskSts(TaskStsType.ANALYZE_INBOUND.sts); // 宸ヤ綔鐘舵��
+// task.setUpdateTime(new Date());
+// if (!taskService.updateById(task)) {
+// News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo());
+// }
+// }
}
/**
@@ -562,40 +740,26 @@
}
for (Task task : tasks) {
- BasConveyorSta originStaObj = basConveyorStaService.selectBySiteNo(task.getOriginSite());//鑾峰彇婧愮珯
- if (originStaObj == null) {
+ BasConveyorSta destStaObj = basConveyorStaService.selectBySiteNo(task.getDestSite());//鑾峰彇鐩爣绔�
+ if (destStaObj == null) {
continue;
}
- BasConveyor basConveyor = basConveyorService.getById(originStaObj.getConveyorId());
- if(basConveyor == null) {
+ BasConveyor basConveyor = basConveyorService.getById(destStaObj.getConveyorId());
+ if (basConveyor == null) {
continue;
}
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue());
- StaProtocol staProtocol = devpThread.getStation().get(Integer.parseInt(task.getOriginSite()));//婧愮珯
-// StaProtocol staProtocol1 = devpThread.getStation().get(Integer.parseInt(task.getDestSite()));//鐩爣绔�
+ StaProtocol staProtocol = devpThread.getStation().get(Integer.parseInt(task.getDestSite()));//鐩爣绔�
if (staProtocol == null) {
continue;
} else {
staProtocol = staProtocol.clone();
-// staProtocol1 = staProtocol1.clone();
}
// 鍒ゆ柇鍑哄簱绔欑姸鎬�
if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
-// if (!(staProtocol1.isAutoing() && !staProtocol1.isLoading() && staProtocol1.getWorkNo() == 0 && staProtocol1.isOutEnable())) {
-// continue;
-// }
-
-// //鍚屽簱浣嶇粍鏍¢獙
-// List<String> outerLoc = Utils.getGroupOuterLoc(wrkMast.getSourceLocNo());
-// List<LocMast> outerLocMasts = locMastService.selectNotEmptyLocNos(outerLoc);
-// if (!outerLocMasts.isEmpty()) {
-// News.info("{}浠诲姟锛屾祬搴撲綅瀛樺湪璐х墿锛岀郴缁熺瓑寰呬腑", wrkMast.getWrkNo());
-// continue;//娴呭簱浣嶅瓨鍦ㄦ湭鎵ц浠诲姟
-// }
-
if (Cools.isEmpty(task.getShuttleNo())) {
//鍒嗛厤灏忚溅
//鎼滅储绌洪棽杞�
@@ -616,7 +780,7 @@
// generate motion list
List<Motion> motionList = analyzeService.generateMotion(task);
if (Cools.isEmpty(motionList)) {
- log.error("鍑哄簱 ===>> 鏆傛椂娌℃湁绌洪棽灏忚溅, 浠诲姟鍙�={}", task.getTaskNo());
+ log.error("鍑哄簱 ===>> 浠诲姟瑙f瀽澶辫触, 浠诲姟鍙�={}", task.getTaskNo());
continue;
}
motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId());
@@ -635,23 +799,6 @@
// 瑙f瀽灏忚溅绉诲姩宸ヤ綔妗�
public synchronized void analyzeMoveTask() {
for (Task task : taskService.selectWaitAnalyzeMoveTask()) {
- 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.generateShuttleMoveMotion(task);
if (motionList.isEmpty()) {
@@ -661,6 +808,54 @@
// 鏇存柊宸ヤ綔涓绘。
task.setTaskSts(TaskStsType.ANALYZE_MOVE.sts); // 宸ヤ綔鐘舵��
+ task.setUpdateTime(new Date());
+ if (!taskService.updateById(task)) {
+ News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo());
+ }
+ }
+ }
+
+ // 瑙f瀽灏忚溅鍏呯數宸ヤ綔妗�
+ public synchronized void analyzeChargeTask() {
+ List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, TaskStsType.NEW_CHARGE.sts));
+ for (Task task : list) {
+ String locNo = task.getDestLoc();
+
+ Device shuttleDevice = deviceService.getOne(new LambdaQueryWrapper<Device>()
+ .eq(Device::getDeviceNo, task.getShuttleNo())
+ .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val())
+ .eq(Device::getHostId, task.getHostId())
+ .eq(Device::getStatus, 1));
+ if (shuttleDevice == null) {
+ continue;
+ }
+
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleDevice.getId().intValue());
+ if (shuttleThread == null) {
+ continue;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
+ continue;
+ }
+ String shuttleLocNo = task.getOriginLoc();
+
+ if (Utils.getLev(locNo) != Utils.getLev(shuttleLocNo)) {
+ shuttleDispatcher.dispatchShuttle(task, task.getDestLoc());
+ continue;
+ }
+
+ // generate motion list
+ List<Motion> motionList = analyzeService.generateChargeMotion(task);
+ if (Cools.isEmpty(motionList)) {
+ News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", task.getTaskNo());
+ continue;
+ }
+ motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId());
+
+ // 鏇存柊宸ヤ綔涓绘。
+ task.setTaskSts(TaskStsType.ANALYZE_CHARGE.sts);
task.setUpdateTime(new Date());
if (!taskService.updateById(task)) {
News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo());
@@ -795,15 +990,6 @@
task.setMemo("charge");
task.setShuttleNo(Integer.valueOf(device.getDeviceNo()));
- // generate motion list
- List<Motion> motionList = analyzeService.generateChargeMotion(task);
- if (Cools.isEmpty(motionList)) {
- News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", device.getDeviceNo());
- continue;
- }
- motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId());
-
- task.setTaskSts(TaskStsType.ANALYZE_CHARGE.sts);
if (!taskService.save(task)) {
News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", device.getDeviceNo());
continue;
@@ -885,7 +1071,7 @@
task.setTaskCtg(taskCtg.getId());
task.setPriority(10);
task.setOriginSite(null);
- task.setOriginLoc(null);
+ task.setOriginLoc(shuttleProtocol.getCurrentLocNo());
task.setDestSite(null);
task.setDestLoc(standByLocNo); // 閬胯浣嶇疆
task.setIoTime(new Date());
@@ -950,19 +1136,22 @@
} else {
staProtocol = staProtocol.clone();
}
- if (!staProtocol.isOutEnable()){
- continue;
- }
String taskNo = "0";
- if (0 != staProtocol.getWorkNo()){
- Motion motion = motionService.getOne(new LambdaQueryWrapper<Motion>().eq(Motion::getMotionCtg, 9).eq(Motion::getTemp, staProtocol.getWorkNo()));
- // 鑾峰彇宸ヤ綔妗f暟鎹�
- Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskNo, motion.getTaskNo()));
- if (null == task) {
- continue;
+ if (staProtocol.isOutEnable() && staProtocol.getSiteId() == 31001) {
+ if (0 != staProtocol.getWorkNo()) {
+ Motion motion = motionService.getOne(new LambdaQueryWrapper<Motion>().eq(Motion::getMotionCtg, 9).eq(Motion::getTemp, staProtocol.getWorkNo()));
+ // 鑾峰彇宸ヤ綔妗f暟鎹�
+ Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskNo, motion.getTaskNo()));
+ if (null == task) {
+ continue;
+ }
+ taskNo = task.getWmsTaskNo();
}
- taskNo = task.getWmsTaskNo();
+
+ } else if (staProtocol.isInEnable() && staProtocol.getSiteId() == 31002) {
+ taskNo = staProtocol.getStaNo().toString();
}
+
try {
//鑾峰彇WMS鍦板潃
Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getFlag, "WMS_URL").eq(Dict::getStatus, 1));
@@ -971,7 +1160,7 @@
HashMap<String, Object> param = new HashMap<>();
param.put("taskNo", taskNo);
- param.put("sta",staNo);
+ param.put("sta", staNo);
String response = new HttpHandler.Builder()
.setUri(wmsUrl)
.setPath("/rpc/led/getTask")
@@ -987,6 +1176,7 @@
} catch (Exception e) {
e.printStackTrace();
}
+
}
}
}
@@ -1052,7 +1242,9 @@
for (Integer staNo : staArr) {
// 鑾峰彇鍙夎溅绔欑偣
StaProtocol staProtocol = devpThread.getStation().get(staNo);
- if (staProtocol == null) { continue; }
+ if (staProtocol == null) {
+ continue;
+ }
if (staProtocol.getWorkNo() != 0) {
reset = false;
break;
@@ -1068,4 +1260,39 @@
}
}
+ // 瑙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());
+ }
+ }
+ }
}
--
Gitblit v1.9.1