From b003a49794f49a329e2702918ecfc8d14b371d0d Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期三, 04 三月 2026 14:51:25 +0800
Subject: [PATCH] 云仓WMS接口流程
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 136 ++++++++++++++++++++++++++++++---------------
1 files changed, 90 insertions(+), 46 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
index 09c9ea8..07a4621 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -8,7 +8,6 @@
import com.fasterxml.jackson.databind.cfg.CoercionAction;
import com.fasterxml.jackson.databind.cfg.CoercionInputShape;
import com.vincent.rsf.framework.common.Cools;
-import com.vincent.rsf.framework.common.DateUtils;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.config.RemotesInfoProperties;
@@ -105,10 +104,11 @@
/**
- * @param
- * @return
+ * 瀹屾垚鍏ュ簱锛屾洿鏂板簱浣嶆槑缁嗐�佺粍鎵樼姸鎬侊紝骞跺湪姝ょ粺涓�鎵ц 9.1 鍏�/鍑哄簱缁撴灉涓婃姤浜戜粨銆�
+ * 涓� RCS 鍥炶皟褰㈡垚闂幆锛歊CS 涓婃姤浠诲姟缁撴潫鍚庝粎灏嗕换鍔$姸鎬佺疆涓� COMPLETE_IN锛堣 WcsServiceImpl.receiveExMsg锛夛紝
+ * 鏈畾鏃朵换鍔℃壂鎻� COMPLETE_IN 骞舵墽琛� complateInTask锛堝簱浣嶃�佺粍鎵樸��9.1 涓婃姤浜戜粨锛夈��
+ *
* @author Ryan
- * @description 瀹屾垚鍏ュ簱锛屾洿鏂板簱瀛�
* @time 2025/4/2 12:37
*/
@Scheduled(cron = "0/3 * * * * ?")
@@ -123,10 +123,12 @@
}
/**
+ * 瀹屾垚鍑哄簱浠诲姟锛屾洿鏂板簱浣�/鍑哄簱鍗曪紝骞跺湪姝ょ粺涓�鎵ц 9.1 鍏�/鍑哄簱缁撴灉涓婃姤浜戜粨銆�
+ * 涓� RCS 鍥炶皟褰㈡垚闂幆锛歊CS 涓婃姤 END 鍚庝粎灏嗗嚭搴撲换鍔$姸鎬佺疆涓� COMPLETE_OUT锛堣 WcsServiceImpl.receiveExMsg锛夛紝
+ * 鏈畾鏃朵换鍔℃壂鎻� COMPLETE_OUT 骞舵墽琛� completeTask锛堟墸搴撲綅銆佹洿鏂板嚭搴撳崟銆�9.1 涓婃姤浜戜粨锛夈��
+ *
* @author Ryan
* @date 2025/5/20
- * @description: 瀹屾垚鍑哄簱浠诲姟锛屾洿鏂板簱瀛�
- * @version 1.0
*/
@Scheduled(cron = "0/5 * * * * ? ")
@Transactional(rollbackFor = Exception.class)
@@ -249,25 +251,39 @@
/**
* 闈炲厜鐢电珯鐐逛换鍔′笅鍙�
*/
- @Scheduled(cron = "0/55 * * * * ? ")
+ @Scheduled(cron = "0/35 * * * * ? ")
@Transactional(rollbackFor = Exception.class)
public void pubTaskToWcs() {
+ log.info("瀹氭椂浠诲姟寮�濮嬫墽琛岋細浠诲姟涓嬪彂鍒癛CS");
Long loginUserId = SystemAuthUtils.getLoginUserId();
- List<Integer> list = Arrays.asList(TaskType.TASK_TYPE_IN.type, TaskType.TASK_TYPE_OUT.type, TaskType.TASK_TYPE_LOC_MOVE.type, TaskType.TASK_TYPE_EMPITY_IN.type
- , TaskType.TASK_TYPE_CHECK_IN.type, TaskType.TASK_TYPE_MERGE_IN.type, TaskType.TASK_TYPE_EMPITY_OUT.type, TaskType.TASK_TYPE_PICK_IN.type,
- TaskType.TASK_TYPE_PICK_AGAIN_OUT.type, TaskType.TASK_TYPE_CHECK_OUT.type, TaskType.TASK_TYPE_MERGE_OUT.type);
- List<Integer> integers = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
+ List<Integer> list = Arrays.asList(
+ TaskType.TASK_TYPE_LOC_MOVE.type
+ ,TaskType.TASK_TYPE_OUT.type
+ ,TaskType.TASK_TYPE_EMPITY_OUT.type
+ ,TaskType.TASK_TYPE_CHECK_OUT.type
+ ,TaskType.TASK_TYPE_MERGE_OUT.type
+ ,TaskType.TASK_TYPE_PICK_AGAIN_OUT.type
+ ,TaskType.TASK_TYPE_IN.type
+ ,TaskType.TASK_TYPE_EMPITY_IN.type
+ ,TaskType.TASK_TYPE_CHECK_IN.type
+ ,TaskType.TASK_TYPE_MERGE_IN.type
+ ,TaskType.TASK_TYPE_PICK_IN.type
+ );
+ List<Integer> integers = Arrays.asList(/*TaskStsType.GENERATE_IN.id,*/ TaskStsType.GENERATE_OUT.id);
List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
.in(Task::getTaskType, list)
.in(Task::getTaskStatus, integers)
.orderByDesc(Task::getSort));
+ log.info("鏌ヨ鍒板緟涓嬪彂浠诲姟鏁伴噺锛歿}", tasks.size());
if (tasks.isEmpty()) {
+ log.debug("娌℃湁寰呬笅鍙戠殑浠诲姟锛屽畾鏃朵换鍔$粨鏉�");
return;
}
Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_RUN_CHECK_ORDERS));
if (!Objects.isNull(config) && !Objects.isNull(config.getVal())) {
if (Boolean.parseBoolean(config.getVal())) {
- return;
+ log.info("閰嶇疆椤笰UTO_RUN_CHECK_ORDERS涓簍rue锛岃烦杩囦换鍔′笅鍙�");
+ return;
}
}
// for (Task task : tasks) {
@@ -282,7 +298,9 @@
// }
// }
/**涓嬪彂鏅�氱珯鐐逛换鍔★紝鎶ラ敊鍥炴粴锛屼笉鍐嶅線涓嬫墽琛�*/
+ log.info("寮�濮嬩笅鍙憑}涓换鍔″埌RCS", tasks.size());
taskService.pubTaskToWcs(tasks);
+ log.info("瀹氭椂浠诲姟鎵ц瀹屾垚锛氫换鍔′笅鍙戝埌RCS");
}
/**
@@ -357,7 +375,7 @@
/**
* 姣忎簲绉掓牎楠屾繁搴撲綅鏄惁涓虹┖锛屽鏋滄祬搴撲綅鏈夎揣锛屽皢娴呭簱浣嶇Щ鑷虫繁搴撲綅
- *///TODO 鐢熸垚绉诲簱浠诲姟鍓嶏紝闇�瑕佹鏌ユ槸鍚︽湁浠诲姟鍓嶅線褰撳墠鎵樼洏
+ *///TODO 鐢熸垚绉诲簱浠诲姟鍓嶏紝闇�瑕佹鏌ユ槸鍚︽湁浠诲姟鍓嶅線褰撳墠鏂欑
// @Scheduled(cron = "0/35 * * * * ? ")
// @Transactional(rollbackFor = Exception.class)
// public void shallocToDeep() throws Exception {
@@ -602,47 +620,73 @@
} else if ((task.getTaskType() >= TaskType.TASK_TYPE_OUT.type && task.getTaskType() <= TaskType.TASK_TYPE_EMPITY_OUT.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)) {
/**鍒ゆ柇鍗曟嵁鏄惁瀹屾垚**/
- Set<Long> longSet = taskItems.stream().map(TaskItem::getSourceId).collect(Collectors.toSet());
- List<WaveOrderRela> waveOrderRelas = waveOrderRelaService.list(new LambdaQueryWrapper<WaveOrderRela>()
- .in(WaveOrderRela::getWaveId, longSet));
- if (Cools.isEmpty(waveOrderRelas)) {
- throw new CoolException("娉㈡瀵瑰簲鍏宠仈鍗曟湭鎵惧埌");
- }
- Set<Long> orderIds = waveOrderRelas.stream().map(WaveOrderRela::getOrderId).collect(Collectors.toSet());
- List<WkOrder> wkOrders = asnOrderService.listByIds(orderIds);
- if (wkOrders.isEmpty()) {
- throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
- }
-
- Config allowChang = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.ALLOW_OVER_CHANGE));
-
- wkOrders.forEach(order -> {
- //鍒ゆ柇鏄惁鍏佽瓒呮敹锛屼笉鍏佽瓒呮敹娣诲姞鎷掓敹鍒ゆ柇
- if (!Objects.isNull(allowChang)) {
- if (!Boolean.parseBoolean(allowChang.getVal())) {
- if (order.getAnfme().compareTo(order.getQty()) == 0) {
- order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val);
- if (!asnOrderService.updateById(order)) {
- throw new CoolException("鍑哄簱鍗曟洿鏂扮姸鎬佸け璐�");
- }
- }
+ // 鍙湁娉㈡绫诲瀷鐨勪换鍔℃墠闇�瑕佹煡璇㈡尝娆″叧鑱斿崟
+ if (task.getResource() != null && task.getResource().equals(TaskResouceType.TASK_RESOUCE_WAVE_TYPE.val)) {
+ Set<Long> longSet = taskItems.stream()
+ .map(TaskItem::getSourceId)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toSet());
+
+ if (longSet.isEmpty()) {
+ logger.warn("浠诲姟{}鐨勪换鍔℃槑缁嗕腑娌℃湁鏈夋晥鐨剆ourceId锛岃烦杩囨尝娆″叧鑱斿崟鏌ヨ銆備换鍔$紪鐮侊細{}锛屼换鍔$被鍨嬶細{}",
+ task.getId(), task.getTaskCode(), task.getTaskType());
+ } else {
+ List<WaveOrderRela> waveOrderRelas = waveOrderRelaService.list(new LambdaQueryWrapper<WaveOrderRela>()
+ .in(WaveOrderRela::getWaveId, longSet));
+ if (Cools.isEmpty(waveOrderRelas)) {
+ logger.warn("浠诲姟{}鐨勬尝娆″搴斿叧鑱斿崟鏈壘鍒帮紝鍙兘鏄暟鎹笉涓�鑷存垨浠诲姟涓嶆槸閫氳繃娉㈡鍒涘缓鐨勩�備换鍔$紪鐮侊細{}锛宻ourceIds锛歿}",
+ task.getId(), task.getTaskCode(), longSet);
} else {
- if (order.getAnfme().compareTo(order.getQty()) <= 0) {
- order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val);
- if (!asnOrderService.updateById(order)) {
- throw new CoolException("鍑哄簱鍗曟洿鏂扮姸鎬佸け璐�");
- }
+ Set<Long> orderIds = waveOrderRelas.stream().map(WaveOrderRela::getOrderId).collect(Collectors.toSet());
+ List<WkOrder> wkOrders = asnOrderService.listByIds(orderIds);
+ if (wkOrders.isEmpty()) {
+ logger.warn("浠诲姟{}鐨勫叧鑱斿崟鎹笉瀛樺湪銆備换鍔$紪鐮侊細{}锛宱rderIds锛歿}",
+ task.getId(), task.getTaskCode(), orderIds);
+ } else {
+ Config allowChang = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.ALLOW_OVER_CHANGE));
+
+ wkOrders.forEach(order -> {
+ //鍒ゆ柇鏄惁鍏佽瓒呮敹锛屼笉鍏佽瓒呮敹娣诲姞鎷掓敹鍒ゆ柇
+ if (!Objects.isNull(allowChang)) {
+ if (!Boolean.parseBoolean(allowChang.getVal())) {
+ if (order.getAnfme().compareTo(order.getQty()) == 0) {
+ order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val);
+ if (order.getQty() == null || order.getQty().compareTo(0.0) == 0) {
+ order.setQty(order.getWorkQty() != null ? order.getWorkQty() : 0.0);
+ }
+ if (!asnOrderService.updateById(order)) {
+ logger.error("鍑哄簱鍗曟洿鏂扮姸鎬佸け璐ャ�傝鍗旾D锛歿}锛岃鍗曠紪鐮侊細{}", order.getId(), order.getCode());
+ }
+ }
+ } else {
+ if (order.getAnfme().compareTo(order.getQty()) <= 0) {
+ order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val);
+ if (order.getQty() == null || order.getQty().compareTo(0.0) == 0) {
+ order.setQty(order.getWorkQty() != null ? order.getWorkQty() : 0.0);
+ }
+ if (!asnOrderService.updateById(order)) {
+ logger.error("鍑哄簱鍗曟洿鏂扮姸鎬佸け璐ャ�傝鍗旾D锛歿}锛岃鍗曠紪鐮侊細{}", order.getId(), order.getCode());
+ }
+ }
+ }
+ }
+ //妫�鏌ュ崟鎹槸鍚﹀畬鎴�
+
+ });
}
}
}
- //妫�鏌ュ崟鎹槸鍚﹀畬鎴�
-
- });
+ } else {
+ logger.debug("浠诲姟{}涓嶆槸娉㈡绫诲瀷浠诲姟锛堣祫婧愮被鍨嬶細{}锛夛紝璺宠繃娉㈡鍏宠仈鍗曟煡璇€�備换鍔$紪鐮侊細{}",
+ task.getId(), task.getResource(), task.getTaskCode());
+ }
+
//鍑哄簱鍗曚笂鎶CS淇敼搴撲綅鐘舵��
try {
reportStationStatus(task);
} catch (Exception e) {
- throw new CoolException(e.getMessage());
+ logger.error("浠诲姟{}涓婃姤RCS淇敼搴撲綅鐘舵�佸け璐ャ�備换鍔$紪鐮侊細{}", task.getId(), task.getTaskCode(), e);
+ // 涓嶆姏鍑哄紓甯革紝閬垮厤涓柇瀹氭椂浠诲姟
}
}
--
Gitblit v1.9.1