From c6c9b7d3baa822765768c110304d27623f946286 Mon Sep 17 00:00:00 2001
From: pjb <123456>
Date: 星期二, 15 七月 2025 14:29:09 +0800
Subject: [PATCH] `1`
---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java | 154 +++++++++++++++++++++++++--------------------------
1 files changed, 75 insertions(+), 79 deletions(-)
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java
index 939b96d..eb14276 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.apis.wcs.entity.domain.SystemProperties;
@@ -33,6 +34,7 @@
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
+import java.util.stream.DoubleStream;
@Slf4j
@Service
@@ -60,9 +62,10 @@
@Autowired
private PlatformService platformService;
-
@Resource
private SystemProperties systemProperties;
+ @Autowired
+ private MobileService mobileService;
/**
@@ -79,20 +82,20 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public R containerArrivedNotify(ContainerArrivedParam arrivedParam, String taskType, Long hostId){
+ public R containerArrivedNotify(ContainerArrivedParam arrivedParam, String taskType, Long hostId) {
Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, arrivedParam.getContainerCode()));
if (task == null) {
return R.error("浠诲姟涓嶅瓨鍦紒锛�");
}
- log.info("瀹瑰櫒鍒拌揪鎺ユ敹锛屼换鍔″彿锛歿}锛屽綋鍓嶇姸鎬侊細{}锛屼笂鎶ョ姸鎬侊細{}, 鎺ユ敹鍙傛暟锛歿}",task.getTaskNo(),task.getTaskSts$(),TaskStsType.WCS_CONTAINER_RECEIVE.desc, JSONObject.toJSONString(arrivedParam));
+ log.info("瀹瑰櫒鍒拌揪鎺ユ敹锛屼换鍔″彿锛歿}锛屽綋鍓嶇姸鎬侊細{}锛屼笂鎶ョ姸鎬侊細{}, 鎺ユ敹鍙傛暟锛歿}", task.getTaskNo(), task.getTaskSts$(), TaskStsType.WCS_CONTAINER_RECEIVE.desc, JSONObject.toJSONString(arrivedParam));
- taskType = task.getTaskType() > 100 ? "outStock":"inStock";
+ taskType = task.getTaskType() > 100 ? "outStock" : "inStock";
if (taskType.equals("inStock")) {
if (task.getTaskSts() == 198) {
return R.error("鎾涓紒锛�");
}
- if (task.getTaskSts() == TaskStsType.WCS_EXECUTE_IN.id ) {
+ if (task.getTaskSts() == TaskStsType.WCS_EXECUTE_IN.id) {
//DONE 鏍规嵁ESS杩斿洖鐨勫鍣ㄧ紪鐮佷慨鏀逛换鍔℃。涓殑杈撻�佺嚎璧峰浣嶇疆鑺傜偣锛屽強浠诲姟妗e鍣ㄥ埌杈剧姸鎬�
taskService.update(new LambdaUpdateWrapper<Task>()
.set(Task::getTaskSts, TaskStsType.WCS_CONTAINER_RECEIVE.id)
@@ -100,40 +103,13 @@
.set(Task::getOriginSite, arrivedParam.getSlotCode())
.eq(Task::getBarcode, arrivedParam.getContainerCode()));
} else {
- log.warn("{}娌℃湁涓嬪彂浠诲姟",task.getTaskNo());
- R.error(task.getTaskNo()+"娌℃湁涓嬪彂浠诲姟");
+ log.warn("{}娌℃湁涓嬪彂浠诲姟", task.getTaskNo());
+ R.error(task.getTaskNo() + "娌℃湁涓嬪彂浠诲姟");
}
} else {
if (task.getTaskSts() == TaskStsType.WCS_EXECUTE_OUT_ARRIVED.id
- || task.getTaskSts() == TaskStsType.WCS_EXECUTE_OUT_TASK_DONE.id ) {
- // 鍒拌揪鎷i�変綅锛屾帶鍒舵挱绉嶅浜伅
- List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>()
- .eq(CacheSite::getBarcode, task.getBarcode()));
- if(cacheSites.size() == 0) {
- log.error("鏉$爜锛歿}锛屾湭鎵惧埌鎾澧欎寒鐏�",task.getBarcode());
- throw new CoolException("鏈壘鍒版挱绉嶅");
- }
- for (CacheSite cacheSite:cacheSites) {
- // 鑾峰彇浠诲姟鏄庣粏鏁伴噺
- List<TaskDetl> taskDetlByTaskId = taskDetlService.getTaskDetlByTaskId(task.getId());
- int sum = (int)taskDetlByTaskId.stream().mapToDouble(TaskDetl::getAnfme).sum();
- SlapLightControlParam slapLightControlParam = new SlapLightControlParam();
- slapLightControlParam
- .setControllerCode(cacheSite.getMemo())
- .setTagCode(cacheSite.getSiteNo())
- .setColor("GREEN")
- .setIndex(cacheSite.getIndex())
- .setMode("LIGHT")
- .setDisplay(sum + "");
- // 鍙戣捣浜伅璇锋眰
- log.info("浠诲姟{}鍒拌揪鎷i�変綅锛屾挱绉嶅浜伅涓嬪彂",task.getTaskNo(), JSONObject.toJSONString(slapLightControlParam));
- CommonReponse response = HttpEssUtils.post("鍒拌揪鎷i�変綅锛屾挱绉嶅浜伅", HttpEssUtils.PLT_SEND_COMMAND, slapLightControlParam);
- if (response.getCode().equals(0)) {
- log.info("浠诲姟{}鍒拌揪鎷i�変綅锛屾挱绉嶅{}浜伅鎴愬姛",task.getTaskNo(),cacheSite.getSiteNo());
- } else {
- log.info("浠诲姟{}鍒拌揪鎷i�変綅锛屾挱绉嶅{}浜伅澶辫触",task.getTaskNo(),cacheSite.getSiteNo());
- }
- }
+ || task.getTaskSts() == TaskStsType.WCS_EXECUTE_OUT_TASK_DONE.id) {
+
boolean update = taskService.update(new LambdaUpdateWrapper<Task>()
.set(Task::getTaskSts, TaskStsType.WAVE_SEED.id)
.set(Task::getOriginSite, arrivedParam.getSlotCode())
@@ -141,17 +117,16 @@
if (!update) {
throw new CoolException("瀹瑰櫒鍒拌揪浠诲姟鏇存柊澶辫触锛侊紒");
}
-
- } else if(task.getTaskSts().equals(TaskStsType.UPDATED_OUT.id)) {
+ } else if (task.getTaskSts().equals(TaskStsType.UPDATED_OUT.id)) {
ConveyorStarParam conveyorStarParam = new ConveyorStarParam();
conveyorStarParam.setSlotCode(task.getOriginSite())
.setContainerCode(task.getBarcode())
.setDirection("200");
// 鍑哄簱瀹屾垚锛屾竻闄よ緭閫佺嚎鏉$爜锛屽彇涓嬬瀛�
- CommonReponse response = HttpEssUtils.post("娓呴櫎杈撻�佺嚎鏉$爜", HttpEssUtils.CONVEYOR_START, conveyorStarParam);
- if (response.getCode().equals(200)) {
- log.info("{}鍑哄簱瀹屾垚锛屾竻闄}杈撻�佺嚎鏉$爜{}鎴愬姛",task.getTaskNo(),task.getOriginSite(),task.getBarcode());
- }
+ CommonReponse response = HttpEssUtils.post("娓呴櫎杈撻�佺嚎鏉$爜", HttpEssUtils.CONVEYOR_START, conveyorStarParam);
+ if (response.getCode().equals(200)) {
+ log.info("{}鍑哄簱瀹屾垚锛屾竻闄}杈撻�佺嚎鏉$爜{}鎴愬姛", task.getTaskNo(), task.getOriginSite(), task.getBarcode());
+ }
}
}
@@ -173,17 +148,17 @@
.eq(Task::getTaskNo, callbackParam.getTaskCode()));
if (!Collections.isEmpty(list)) {
list.forEach(task -> {
- log.info("瀹瑰櫒鎵ц鐘舵�佷笂鎶ワ紝浠诲姟鍙凤細{}锛屽綋鍓嶇姸鎬侊細{}锛屼笂鎶ョ姸鎬侊細{}",task.getTaskNo(),task.getTaskSts$(),callbackParam.getEventType());
+ log.info("瀹瑰櫒鎵ц鐘舵�佷笂鎶ワ紝浠诲姟鍙凤細{}锛屽綋鍓嶇姸鎬侊細{}锛屼笂鎶ョ姸鎬侊細{}", task.getTaskNo(), task.getTaskSts$(), callbackParam.getEventType());
if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_ALLOCATED.event)) {
return;
}
// ESS鍙兘閰嶇疆涓�涓姸鎬佷笂鎶ユ帴鍙o紝鏍规嵁浠诲姟鍙峰垽鏂槸鍏ュ簱浠诲姟鎴栧嚭搴撲换鍔�
- String taskType = task.getTaskType() > 100 ? "outStock":"inStock";
+ String taskType = task.getTaskType() > 100 ? "outStock" : "inStock";
TaskStsType taskStsType = null;
if (taskType.equals("inStock")) { //鍏ュ簱浠诲姟
if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_TOTE_LOAD.event)) { //涓婃姤鍙栫鐘舵��
// if (task.getTaskSts() == TaskStsType.WCS_CONVEYOR_START.id) {
- taskStsType = TaskStsType.WCS_TOTE_LOAD;
+ taskStsType = TaskStsType.WCS_TOTE_LOAD;
// } else {
// String errMsg = "浠诲姟缂栧彿锛�" + task.getTaskNo() + "鐘舵�佷负涓嶅尮閰嶏紝" + "涓嶈兘鎵ц锛�" + TaskStsType.WCS_TOTE_LOAD.desc + "浠诲姟";
// log.error(errMsg);
@@ -191,7 +166,7 @@
// }
} else if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_TOTE_UNLOAD.event)) { //涓婃姤鏀剧鐘舵��
// if (task.getTaskSts() == TaskStsType.WCS_TOTE_LOAD.id) {
- taskStsType = TaskStsType.WCS_TOTE_UNLOAD;
+ taskStsType = TaskStsType.WCS_TOTE_UNLOAD;
// } else {
// String errMsg = "浠诲姟缂栧彿锛�" + task.getTaskNo() + "鐘舵�佷负涓嶅尮閰嶏紝" + "涓嶈兘鎵ц锛�" + TaskStsType.WCS_TOTE_UNLOAD.desc + "浠诲姟";
// log.error(errMsg);
@@ -199,7 +174,7 @@
// }
} else if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_STATUS.event)) { //TODO 闇�纭涓婃姤浠诲姟涓紝浠诲姟瀹屾垚鏄摢涓簨浠讹紝鐩墠鏆傚畾task浜嬩欢
// if (task.getTaskSts() == TaskStsType.WCS_TOTE_UNLOAD.id) {
- taskStsType = TaskStsType.WCS_PUTAWAY_SUCESS;
+ taskStsType = TaskStsType.WCS_PUTAWAY_SUCESS;
// } else {
// String errMsg = "浠诲姟缂栧彿锛�" + task.getTaskNo() + "鐘舵�佷负涓嶅尮閰嶏紝" + "涓嶈兘鎵ц锛�" + TaskStsType.WCS_PUTAWAY_SUCESS.desc + "浠诲姟";
// log.error(errMsg);
@@ -223,7 +198,7 @@
} else { //鍑哄簱浠诲姟
if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_TOTE_LOAD.event)) { //涓婃姤鍙栫鐘舵��
// if (task.getTaskSts() == TaskStsType.WCS_EXECUTE_OUT.id ) {
- taskStsType = TaskStsType.WCS_EXECUTE_OUT_TOTE_LOAD;
+ taskStsType = TaskStsType.WCS_EXECUTE_OUT_TOTE_LOAD;
// } else {
// String errMsg = "浠诲姟缂栧彿锛�" + task.getTaskNo() + "鐘舵�佷负涓嶅尮閰嶏紝" + "涓嶈兘鎵ц锛�" + TaskStsType.WCS_EXECUTE_OUT_TOTE_LOAD.desc + "浠诲姟";
// log.error(errMsg);
@@ -231,7 +206,7 @@
// }
} else if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_TOTE_UNLOAD.event)) { //涓婃姤鏀剧鐘舵��
// if (task.getTaskSts() == TaskStsType.WCS_EXECUTE_OUT_TOTE_LOAD.id) {
- taskStsType = TaskStsType.WCS_EXECUTE_OUT_TOTE_UNLOAD;
+ taskStsType = TaskStsType.WCS_EXECUTE_OUT_TOTE_UNLOAD;
// } else {
// String errMsg = "浠诲姟缂栧彿锛�" + task.getTaskNo() + "鐘舵�佷负涓嶅尮閰嶏紝" + "涓嶈兘鎵ц锛�" + TaskStsType.WCS_EXECUTE_OUT_TOTE_UNLOAD.desc + "浠诲姟";
// log.error(errMsg);
@@ -239,8 +214,8 @@
// }
} else if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_STATUS.event)) { //涓婃姤瀹屾垚鐘舵��
// if (task.getTaskSts() == TaskStsType.WCS_EXECUTE_OUT_TOTE_UNLOAD.id || task.getTaskSts() == TaskStsType.WCS_EXECUTE_OUT_TASK_DONE.id) {
- //鍑哄簱浠诲姟瀹屾垚锛屼慨鏀圭姸鎬佷负瀹瑰櫒鍒拌揪锛屽畾鏃朵换鍔$敓鎴愭挱绉嶆尝娆�
- taskStsType = TaskStsType.WCS_EXECUTE_OUT_TASK_DONE;
+ //鍑哄簱浠诲姟瀹屾垚锛屼慨鏀圭姸鎬佷负瀹瑰櫒鍒拌揪锛屽畾鏃朵换鍔$敓鎴愭挱绉嶆尝娆�
+ taskStsType = TaskStsType.WCS_EXECUTE_OUT_TASK_DONE;
// } else {
// String errMsg = "浠诲姟缂栧彿锛�" + task.getTaskNo() + "鐘舵�佷负涓嶅尮閰嶏紝" + "涓嶈兘鎵ц锛�" + TaskStsType.WCS_EXECUTE_OUT_TASK_DONE.desc + "浠诲姟";
// log.error(errMsg);
@@ -277,11 +252,11 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public synchronized R containerConveryor(String code) throws Exception{
+ public synchronized R containerConveryor(String code) throws Exception {
Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, code));
if (Objects.isNull(task)) {
throw new CoolException("瀹瑰櫒鐮佷换鍔′笉瀛樺湪锛侊紒");
- }
+ }
try {
ConveyorStarParam conveyorStarParam = new ConveyorStarParam();
conveyorStarParam.setSlotCode(task.getOriginSite())
@@ -321,7 +296,7 @@
}
}
} catch (Exception ex) {
- log.error("UNK", ex);
+ log.error("UNK", ex);
}
return R.ok();
}
@@ -353,47 +328,69 @@
if (Objects.isNull(performs.stream().findFirst().get().getPlatformId())) {
throw new CoolException("璇锋墦鍗版槑缁嗭紝骞剁粦瀹氱洰鏍囬泦璐у尯");
}
-
//* 1. 鍒ゆ柇褰撳墠瀹瑰櫒鏄惁杩樻湁鐗╂枡鏈嫞锛屾湭鎷e畬闂伅锛屾嫞瀹岄�氱煡瀹瑰櫒娴佸姩锛屽苟鐏伅
SlapLightControlParam slapParam = new SlapLightControlParam();
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
+ Order one = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderNo));
+ if (Objects.isNull(one)) {
+ throw new CoolException("褰撳墠璁㈠崟鏄庣粏涓嶅瓨鍦紒锛�");
+ }
+
+ if (Cools.isEmpty(slapParam)) {
+ return null;
+ }
+
//鍒ゆ柇褰撳墠浠诲姟鏄惁杩樻湁鐗╂枡鏈嫞
if (!checked(orderNo, taskNo)) {
log.info("鏈畬鎴愰棯鐏姹傚湴鍧�锛歿}锛岃姹傚弬鏁帮細{}", SystemProperties.SLAP_LIGHT, JSONObject.toJSONString(slapParam));
//璋冪敤涓夋柟鎺ュ彛,闂伅涓嶅仛鎿嶄綔
// 璁剧疆璇锋眰鍙傛暟
- throw new CoolException("褰撳墠浠诲姟鏈畬鎴愶紝涓嶈兘鎵ц姝ゆ搷浣滐紒锛�");
+ mobileService.sowLightMange(siteNo, one, "LIGHT");
+// throw new CoolException("褰撳墠浠诲姟鏈畬鎴愶紝涓嶈兘鎵ц姝ゆ搷浣滐紒锛�");
// params.add("params", JSONObject.toJSONString(slapParam));
} else {
//璋冪敤涓夋柟鎺ュ彛,鐏伅閫氱煡瀹瑰櫒娴佸姩锛� 浼犵伃鐏弬鏁�
//todo 鍒ゆ柇褰撳墠璁㈠崟鏄惁瀹屾垚锛屽畬鎴愮伃鐏紝鏈畬鎴愪繚鎸佹嫞璐х姸鎬佷寒鐏�
- Order one = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderNo));
- if (Objects.isNull(one)) {
- throw new CoolException("褰撳墠璁㈠崟鏄庣粏涓嶅瓨鍦紒锛�");
- }
+
// //鑾峰彇鎾宸插畬鎴愮殑璁㈠崟鏄庣粏
// List<OrderDetl> detlList = orderDetls.stream().filter(detl -> {
// return detl.getPickStatus() == OrderPickStatus.ORDER_PICK_STATUS_DONE.val;
// }).collect(Collectors.toList());
-
//鍒ゆ柇鏁伴噺鏄惁涓庤鍗曟槑缁嗙殑闇�姹傞噺鐩稿悓锛岀浉鍚屽垯璁㈠崟瀹屾垚
- //鎾瀹屾垚锛岄噴鏀剧粦瀹氱珯鐐�
- List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>()
- .eq(!Objects.isNull(siteNo), CacheSite::getSiteNo, siteNo)
- .eq(CacheSite::getOrderNo, orderNo));
- for (CacheSite cacheSite : cacheSites) {
- if (!cacheSite.getSiteStatus().equals(CacheSiteStatusType.O.id)) {
- cacheSite.setSiteStatus(CacheSiteStatusType.O.id);
- cacheSite.setOrderId(null);
- cacheSite.setBarcode(null);
- cacheSite.setOrderNo(null);
- cacheSite.setPlatformId(null);
- cacheSite.setPlatformNo(null);
- cacheSite.setUpdateTime(new Date());
- if (!cacheSiteService.updateById(cacheSite)) {
- throw new CoolException("鎾绔欑偣鏇存柊澶辫触");
+
+ List<WaveSeed> seeds = waveSeedService.list(new LambdaQueryWrapper<WaveSeed>().eq(WaveSeed::getOrderNo, orderNo));
+ if (Objects.isNull(seeds)) {
+ throw new CoolException("鏁版嵁閿欒锛氭挱绉嶆暟鎹笉瀛樺湪锛侊紒");
+ }
+ Double tolAnfme = seeds.stream().mapToDouble(WaveSeed::getAnfme).sum();
+ Double toDouble = seeds.stream().mapToDouble(WaveSeed::getWorkQty).sum();
+ if (toDouble.compareTo(tolAnfme) >= 0) {
+ //鎾瀹屾垚锛岄噴鏀剧粦瀹氱珯鐐�
+ List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>()
+ .eq(!Objects.isNull(siteNo), CacheSite::getSiteNo, siteNo)
+ .eq(CacheSite::getOrderNo, orderNo));
+ for (CacheSite cacheSite : cacheSites) {
+ if (!cacheSite.getSiteStatus().equals(CacheSiteStatusType.O.id)) {
+ cacheSite.setSiteStatus(CacheSiteStatusType.O.id);
+ cacheSite.setOrderId(null);
+ cacheSite.setBarcode(null);
+ cacheSite.setOrderNo(null);
+ cacheSite.setPlatformId(null);
+ cacheSite.setPlatformNo(null);
+ cacheSite.setUpdateTime(new Date());
+ if (!cacheSiteService.updateById(cacheSite)) {
+ throw new CoolException("鎾绔欑偣鏇存柊澶辫触");
+ }
}
}
+ //璁㈠崟瀹屾垚锛岀伃鐏�
+ mobileService.sowLightMange(siteNo, one, "DARK");
+ log.info("瀹屾垚鐏伅璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", SystemProperties.SLAP_LIGHT, JSONObject.toJSONString(slapParam));
+ } else {
+ //璁㈠崟鏈畬鎴愶紝缁х画浜伅
+ mobileService.sowLightMange(siteNo, one, "LIGHT");
+ log.info("缁х画浜伅璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", SystemProperties.SLAP_LIGHT, JSONObject.toJSONString(slapParam));
+
}
params.add("params", JSONObject.toJSONString(slapParam));
log.info("瀹屾垚鐏伅璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", SystemProperties.SLAP_LIGHT, JSONObject.toJSONString(slapParam));
@@ -406,10 +403,9 @@
try {
containerConveryor(task.getBarcode());
} catch (Exception e) {
- log.error("鎵ц寮傚父:UNK", e);
+ log.error("鎵ц寮傚父:UNK", e);
throw new CoolException(e.getMessage());
}
-
return R.ok();
}
@@ -445,7 +441,7 @@
//鍒ゆ柇浠诲姟闇�姹傛�婚噺鏄惁绛夋挱绉嶆�绘暟閲�
if (taskNum == seedNum) {
return true;
- } else {
+ } else {
return false;
}
}
--
Gitblit v1.9.1