From ed170766d35e68256f60ab48e3fd7071326455a9 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期一, 09 二月 2026 09:32:24 +0800
Subject: [PATCH] pda确认流程优化
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 158 ++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 114 insertions(+), 44 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
index 266582d..5f450cc 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -150,11 +150,11 @@
if (!batchList.isEmpty()) {
log.info("妫�鏌ョ粍鎵樻槑缁嗘壒鍙� - 鎵瑰彿鍒楄〃锛歿}", batchList);
- // 鏌ヨ鎷f枡鍏ュ簱浠诲姟锛氱鍙峰尮閰嶄笖鐘舵�佷负1鎴�2
+ // 鏌ヨ鎷f枡鍏ュ簱浠诲姟锛氱鍙峰尮閰嶄笖鐘舵�佷负1銆�2鎴�199锛圧CS鐢宠鍏ュ簱鏃讹紝鐘舵��199闇�瑕佸彉鎴�2锛�
List<Task> pickInTasks = taskService.list(new LambdaQueryWrapper<Task>()
.eq(Task::getBarcode, param.getBarcode())
.eq(Task::getTaskType, TaskType.TASK_TYPE_PICK_IN.type)
- .in(Task::getTaskStatus, TaskStsType.GENERATE_IN.id, TaskStsType.WCS_EXECUTE_IN.id)
+ .in(Task::getTaskStatus, TaskStsType.GENERATE_IN.id, TaskStsType.WAVE_SEED.id)
.orderByDesc(Task::getCreateTime));
// 閫氳繃TaskItem鐨刡atch瀛楁鍖归厤鎵瑰彿
@@ -171,11 +171,11 @@
}
}
- // 鏌ヨ鐩樼偣鍏ュ簱浠诲姟锛氱鍙峰尮閰嶄笖鐘舵�佷负1鎴�2
+ // 鏌ヨ鐩樼偣鍏ュ簱浠诲姟锛氱鍙峰尮閰嶄笖鐘舵�佷负1銆�2鎴�199锛圧CS鐢宠鍏ュ簱鏃讹紝鐘舵��199闇�瑕佸彉鎴�2锛�
List<Task> checkInTasks = taskService.list(new LambdaQueryWrapper<Task>()
.eq(Task::getBarcode, param.getBarcode())
.eq(Task::getTaskType, TaskType.TASK_TYPE_CHECK_IN.type)
- .in(Task::getTaskStatus, TaskStsType.GENERATE_IN.id, TaskStsType.WCS_EXECUTE_IN.id)
+ .in(Task::getTaskStatus, TaskStsType.GENERATE_IN.id, TaskStsType.WCS_EXECUTE_IN.id, TaskStsType.WAVE_SEED.id)
.orderByDesc(Task::getCreateTime));
// 閫氳繃TaskItem鐨刡atch瀛楁鍖归厤鎵瑰彿
@@ -196,7 +196,35 @@
// 濡傛灉鏄嫞鏂欏叆搴撲换鍔★紝鐩存帴杩斿洖锛屼笉鏍¢獙缁勬墭
if (Objects.nonNull(pickInTask)) {
- log.info("鎷f枡鍏ュ簱浠诲姟锛岀洿鎺ヨ繑鍥烇紝涓嶆牎楠岀粍鎵� - 浠诲姟缂栫爜锛歿}", pickInTask.getTaskCode());
+ log.info("鎷f枡鍏ュ簱浠诲姟锛岀洿鎺ヨ繑鍥烇紝涓嶆牎楠岀粍鎵� - 浠诲姟缂栫爜锛歿}锛屽綋鍓嶇姸鎬侊細{}",
+ pickInTask.getTaskCode(), pickInTask.getTaskStatus());
+
+ // 濡傛灉鐘舵�佹槸199锛孯CS鐢宠鍏ュ簱鏃跺簲璇ュ彉鎴愮姸鎬�2锛圧CS浠诲姟宸蹭笅鍙戯級
+ if (pickInTask.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
+ log.info("鎷f枡鍏ュ簱浠诲姟鐘舵�佷负199锛孯CS鐢宠鍏ュ簱鏃舵洿鏂颁负鐘舵��2 - 浠诲姟缂栫爜锛歿}", pickInTask.getTaskCode());
+ Long loginUserId = SystemAuthUtils.getLoginUserId();
+ if (loginUserId == null) {
+ log.warn("鏃犳硶鑾峰彇绯荤粺鐢ㄦ埛ID锛屼娇鐢ㄩ粯璁ゅ��1");
+ loginUserId = 1L;
+ }
+
+ // 鏇存柊鐘舵�佷负2锛圧CS浠诲姟宸蹭笅鍙戯級
+ boolean statusUpdated = taskService.update(new LambdaUpdateWrapper<Task>()
+ .eq(Task::getId, pickInTask.getId())
+ .eq(Task::getTaskStatus, TaskStsType.WAVE_SEED.id)
+ .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_IN.id)
+ .set(Task::getUpdateBy, loginUserId)
+ .set(Task::getUpdateTime, new Date()));
+
+ if (statusUpdated) {
+ log.info("鎷f枡鍏ュ簱浠诲姟鐘舵�佸凡鏇存柊涓�2锛圧CS浠诲姟宸蹭笅鍙戯級 - 浠诲姟缂栫爜锛歿}", pickInTask.getTaskCode());
+ // 閲嶆柊鏌ヨ浠诲姟浠ヨ幏鍙栨渶鏂扮姸鎬�
+ pickInTask = taskService.getById(pickInTask.getId());
+ } else {
+ log.warn("鎷f枡鍏ュ簱浠诲姟鐘舵�佹洿鏂颁负2澶辫触锛屽彲鑳界姸鎬佸凡鍙樻洿 - 浠诲姟缂栫爜锛歿}锛屽綋鍓嶇姸鎬侊細{}",
+ pickInTask.getTaskCode(), pickInTask.getTaskStatus());
+ }
+ }
// 鏇存柊鍏ュ簱绔欑偣淇℃伅锛堝鏋滀笌褰撳墠鐢宠鐨勭珯鐐逛笉鍚岋級
if (StringUtils.isNotBlank(param.getSourceStaNo()) &&
@@ -221,7 +249,35 @@
// 濡傛灉鏄洏鐐瑰叆搴撲换鍔★紝鐩存帴杩斿洖锛屼笉鏍¢獙缁勬墭
if (Objects.nonNull(checkInTask)) {
- log.info("鐩樼偣鍏ュ簱浠诲姟锛岀洿鎺ヨ繑鍥烇紝涓嶆牎楠岀粍鎵� - 浠诲姟缂栫爜锛歿}", checkInTask.getTaskCode());
+ log.info("鐩樼偣鍏ュ簱浠诲姟锛岀洿鎺ヨ繑鍥烇紝涓嶆牎楠岀粍鎵� - 浠诲姟缂栫爜锛歿}锛屽綋鍓嶇姸鎬侊細{}",
+ checkInTask.getTaskCode(), checkInTask.getTaskStatus());
+
+ // 濡傛灉鐘舵�佹槸199锛孯CS鐢宠鍏ュ簱鏃跺簲璇ュ彉鎴愮姸鎬�2锛圧CS浠诲姟宸蹭笅鍙戯級
+ if (checkInTask.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
+ log.info("鐩樼偣鍏ュ簱浠诲姟鐘舵�佷负199锛孯CS鐢宠鍏ュ簱鏃舵洿鏂颁负鐘舵��2 - 浠诲姟缂栫爜锛歿}", checkInTask.getTaskCode());
+ Long loginUserId = SystemAuthUtils.getLoginUserId();
+ if (loginUserId == null) {
+ log.warn("鏃犳硶鑾峰彇绯荤粺鐢ㄦ埛ID锛屼娇鐢ㄩ粯璁ゅ��1");
+ loginUserId = 1L;
+ }
+
+ // 鏇存柊鐘舵�佷负2锛圧CS浠诲姟宸蹭笅鍙戯級
+ boolean statusUpdated = taskService.update(new LambdaUpdateWrapper<Task>()
+ .eq(Task::getId, checkInTask.getId())
+ .eq(Task::getTaskStatus, TaskStsType.WAVE_SEED.id)
+ .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_IN.id)
+ .set(Task::getUpdateBy, loginUserId)
+ .set(Task::getUpdateTime, new Date()));
+
+ if (statusUpdated) {
+ log.info("鐩樼偣鍏ュ簱浠诲姟鐘舵�佸凡鏇存柊涓�2锛圧CS浠诲姟宸蹭笅鍙戯級 - 浠诲姟缂栫爜锛歿}", checkInTask.getTaskCode());
+ // 閲嶆柊鏌ヨ浠诲姟浠ヨ幏鍙栨渶鏂扮姸鎬�
+ checkInTask = taskService.getById(checkInTask.getId());
+ } else {
+ log.warn("鐩樼偣鍏ュ簱浠诲姟鐘舵�佹洿鏂颁负2澶辫触锛屽彲鑳界姸鎬佸凡鍙樻洿 - 浠诲姟缂栫爜锛歿}锛屽綋鍓嶇姸鎬侊細{}",
+ checkInTask.getTaskCode(), checkInTask.getTaskStatus());
+ }
+ }
// 鏇存柊鍏ュ簱绔欑偣淇℃伅锛堝鏋滀笌褰撳墠鐢宠鐨勭珯鐐逛笉鍚岋級
if (StringUtils.isNotBlank(param.getSourceStaNo()) &&
@@ -854,9 +910,9 @@
}
log.info("鍑哄簱浠诲姟鐘舵�佹洿鏂版垚鍔� - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
- // 鍏ㄧ増鍑哄簱鍦≧CS鍥炶皟鍚庣洿鎺ュ鐞嗗苟璁剧疆涓�200
+ // 鍏ㄧ増鍑哄簱鍦≧CS鍥炶皟鍚庡鐞嗗簱瀛樺苟璁剧疆涓�199锛岀瓑寰匬DA蹇�熸嫞璐х‘璁ゅ悗鏇存柊涓�200
if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)) {
- log.info("鍏ㄧ増鍑哄簱浠诲姟锛屽紑濮嬪鐞嗗簱瀛樺苟鏇存柊鐘舵�佷负200 - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
+ log.info("鍏ㄧ増鍑哄簱浠诲姟锛屽紑濮嬪鐞嗗簱瀛樺苟鏇存柊鐘舵�佷负199 - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
try {
// 閲嶆柊鏌ヨ浠诲姟浠ヨ幏鍙栨渶鏂扮姸鎬侊紙198锛�
task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode()));
@@ -869,34 +925,10 @@
// 閲嶆柊鏌ヨ浠诲姟浠ヨ幏鍙栨渶鏂扮姸鎬侊紙199锛�
task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode()));
- // 濡傛灉鐘舵�佸凡缁忔槸199锛岀户缁鐞嗗苟璁剧疆涓�200
if (task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
- Long loginUserId = SystemAuthUtils.getLoginUserId();
- if (loginUserId == null) {
- log.warn("鏃犳硶鑾峰彇绯荤粺鐢ㄦ埛ID锛屼娇鐢ㄩ粯璁ゅ��1");
- loginUserId = 1L;
- }
-
- // 鍒犻櫎浣滀笟涓簱瀛樿褰曪紙LocItemWorking锛�
- locItemWorkingService.remove(new LambdaQueryWrapper<LocItemWorking>()
- .eq(LocItemWorking::getTaskId, task.getId()));
-
- // 鏇存柊浠诲姟鐘舵�佷负搴撳瓨鏇存柊瀹屾垚锛�200锛�
- boolean finalUpdated = taskService.update(new LambdaUpdateWrapper<Task>()
- .eq(Task::getTaskCode, task.getTaskCode())
- .eq(Task::getTaskStatus, TaskStsType.WAVE_SEED.id)
- .set(Task::getTaskStatus, TaskStsType.UPDATED_OUT.id)
- .set(Task::getUpdateBy, loginUserId)
- .set(Task::getUpdateTime, new Date()));
-
- if (!finalUpdated) {
- log.warn("鍏ㄧ増鍑哄簱浠诲姟鐘舵�佹洿鏂颁负200澶辫触锛屽彲鑳界姸鎬佸凡鍙樻洿 - 浠诲姟缂栫爜锛歿}锛屽綋鍓嶇姸鎬侊細{}",
- task.getTaskCode(), task.getTaskStatus());
- } else {
- log.info("鍏ㄧ増鍑哄簱浠诲姟鐘舵�佸凡鏇存柊涓�200锛堝簱瀛樻洿鏂板畬鎴愶級 - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
- }
+ log.info("鍏ㄧ増鍑哄簱浠诲姟鐘舵�佸凡鏇存柊涓�199锛堢瓑寰匬DA蹇�熸嫞璐х‘璁ゅ悗鏇存柊涓�200锛� - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
} else {
- log.warn("鍏ㄧ増鍑哄簱浠诲姟鐘舵�佷笉鏄�199锛屾棤娉曟洿鏂颁负200 - 浠诲姟缂栫爜锛歿}锛屽綋鍓嶇姸鎬侊細{}",
+ log.warn("鍏ㄧ増鍑哄簱浠诲姟鐘舵�佹洿鏂颁负199澶辫触 - 浠诲姟缂栫爜锛歿}锛屽綋鍓嶇姸鎬侊細{}",
task.getTaskCode(), task.getTaskStatus());
}
} catch (Exception e) {
@@ -1324,18 +1356,56 @@
// 璇ユ柟娉曚細鎵ц浠ヤ笅娴佺▼锛�
// 1. 楠岃瘉璁惧绔欑偣
// 2. 楠岃瘉缁勬嫋鐘舵��
- // 3. 鐢熸垚浠诲姟缂栫爜
- // 4. 鑾峰彇搴撲綅鍙�
- // 5. 鍒涘缓骞朵繚瀛樹换鍔�
- // 6. 鏇存柊搴撲綅鐘舵��
- // 7. 鑾峰彇骞堕獙璇佺粍鎷栨槑缁�
- // 8. 鍒涘缓骞朵繚瀛樹换鍔℃槑缁�
- // 9. 鏇存柊缁勬墭鐘舵��
+ // 3. 妫�鏌ユ槸鍚︽湁鍖归厤鐨勫叆搴撲换鍔★紙鎷f枡/鐩樼偣鍏ュ簱浼氬尮閰嶇姸鎬�199骞舵洿鏂颁负2锛�
+ // 4. 鐢熸垚浠诲姟缂栫爜锛堝鏋滈渶瑕佸垱寤烘柊浠诲姟锛�
+ // 5. 鑾峰彇搴撲綅鍙�
+ // 6. 鍒涘缓骞朵繚瀛樹换鍔★紙濡傛灉闇�瑕佸垱寤烘柊浠诲姟锛�
+ // 7. 鏇存柊搴撲綅鐘舵��
+ // 8. 鑾峰彇骞堕獙璇佺粍鎷栨槑缁�
+ // 9. 鍒涘缓骞朵繚瀛樹换鍔℃槑缁�
+ // 10. 鏇存柊缁勬墭鐘舵��
InTaskMsgDto msgDto = createInTask(param);
- //RCS宸茬粡鍦ㄨ緭閫佺嚎涓婏紝鎵�浠ヤ笉闇�瑕佷笅鍙戜换鍔�
- taskService.updateById(new Task(){{setId(msgDto.getTaskId());setTaskStatus(2);}});
+
+ // 鏌ヨ浠诲姟褰撳墠鐘舵��
+ Task task = taskService.getById(msgDto.getTaskId());
+ if (Objects.isNull(task)) {
+ throw new CoolException("浠诲姟涓嶅瓨鍦紝浠诲姟ID锛�" + msgDto.getTaskId());
+ }
+
+ // RCS鐢宠鍏ュ簱鏃讹紝闇�瑕佸皢浠诲姟鐘舵�佹洿鏂颁负2锛圧CS浠诲姟宸蹭笅鍙戯級
+ // 鎯呭喌1锛氬鏋滄槸鎷f枡/鐩樼偣鍏ュ簱浠诲姟锛岀姸鎬�199宸茬粡鍦╟reateInTask涓洿鏂颁负2浜�
+ // 鎯呭喌2锛氬鏋滄槸鏂板垱寤虹殑浠诲姟锛堟棤璁㈠崟鍙风粍鎵橈級锛岀姸鎬佹槸1锛岄渶瑕佹洿鏂颁负2
+ // 鎯呭喌3锛氬鏋滅姸鎬佸凡缁忔槸2锛屼笉闇�瑕佹洿鏂�
+ if (task.getTaskStatus().equals(TaskStsType.GENERATE_IN.id)) {
+ log.info("鏂板垱寤虹殑鍏ュ簱浠诲姟锛堟棤璁㈠崟鍙风粍鎵橈級锛孯CS鐢宠鍏ュ簱鏃舵洿鏂颁负鐘舵��2 - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
+ Long loginUserId = SystemAuthUtils.getLoginUserId();
+ if (loginUserId == null) {
+ log.warn("鏃犳硶鑾峰彇绯荤粺鐢ㄦ埛ID锛屼娇鐢ㄩ粯璁ゅ��1");
+ loginUserId = 1L;
+ }
+
+ boolean statusUpdated = taskService.update(new LambdaUpdateWrapper<Task>()
+ .eq(Task::getId, task.getId())
+ .eq(Task::getTaskStatus, TaskStsType.GENERATE_IN.id)
+ .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_IN.id)
+ .set(Task::getUpdateBy, loginUserId)
+ .set(Task::getUpdateTime, new Date()));
+
+ if (statusUpdated) {
+ log.info("鏂板垱寤虹殑鍏ュ簱浠诲姟鐘舵�佸凡鏇存柊涓�2锛圧CS浠诲姟宸蹭笅鍙戯級 - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
+ } else {
+ log.warn("鏂板垱寤虹殑鍏ュ簱浠诲姟鐘舵�佹洿鏂颁负2澶辫触锛屽彲鑳界姸鎬佸凡鍙樻洿 - 浠诲姟缂栫爜锛歿}锛屽綋鍓嶇姸鎬侊細{}",
+ task.getTaskCode(), task.getTaskStatus());
+ }
+ } else if (task.getTaskStatus().equals(TaskStsType.WCS_EXECUTE_IN.id)) {
+ log.info("鍏ュ簱浠诲姟鐘舵�佸凡缁忔槸2锛圧CS浠诲姟宸蹭笅鍙戯級锛屾棤闇�鏇存柊 - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
+ } else {
+ log.info("鍏ュ簱浠诲姟褰撳墠鐘舵�侊細{}锛孯CS鐢宠鍏ュ簱鏃朵繚鎸佸綋鍓嶇姸鎬� - 浠诲姟缂栫爜锛歿}",
+ task.getTaskStatus(), task.getTaskCode());
+ }
+
log.info("========== RCS-鐢宠鍏ュ簱浠诲姟鎴愬姛 ==========");
- log.info("RCS-杩斿洖 浠诲姟缂栫爜锛歿}锛屽簱浣嶅彿锛歿}", msgDto.getWorkNo(), msgDto.getLocNo());
+ log.info("RCS-杩斿洖 浠诲姟缂栫爜锛歿}锛屽簱浣嶅彿锛歿}锛屼换鍔$姸鎬侊細{}", msgDto.getWorkNo(), msgDto.getLocNo(), task.getTaskStatus());
// 杩斿洖缁撴灉锛屽彧杩斿洖搴撲綅鍙凤紙鏍规嵁鎺ュ彛鏂囨。瑕佹眰锛�
JSONObject result = new JSONObject();
--
Gitblit v1.9.1