From b646e9087e2e4dd701731cf8b6d3aa12ce64da28 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期二, 10 二月 2026 15:02:12 +0800
Subject: [PATCH] 空库位校验null防错
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 331 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 315 insertions(+), 16 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 b836ec9..4379309 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
@@ -29,6 +29,7 @@
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.service.impl.LocServiceImpl;
+import com.vincent.rsf.server.system.utils.SystemAuthUtils;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.manager.enums.LocStsType;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
@@ -44,6 +45,9 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Random;
@@ -77,6 +81,8 @@
private WaitPakinItemService waitPakinItemService;
@Autowired
private BasStationService basStationService;
+ @Autowired
+ private LocItemWorkingService locItemWorkingService;
@Autowired
private RestTemplate restTemplate;
@Autowired
@@ -118,8 +124,235 @@
// 楠岃瘉璁惧绔欑偣
DeviceSite deviceSite = validateDeviceSite(param);
- // 楠岃瘉缁勬嫋鐘舵��
- WaitPakin waitPakin = validateWaitPakin(param.getBarcode());
+ // 鎻愬墠瀹氫箟waitPakin锛岄伩鍏嶄綔鐢ㄥ煙闂
+ WaitPakin waitPakin = null;
+
+ // 鍏堥獙璇佺粍鎷栫姸鎬侊紝鑾峰彇缁勬墭鏄庣粏淇℃伅锛堢敤浜庢壒鍙峰尮閰嶅拰鍗曞彿妫�鏌ワ級
+ waitPakin = validateWaitPakin(param.getBarcode());
+ List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(
+ new LambdaQueryWrapper<WaitPakinItem>()
+ .eq(WaitPakinItem::getPakinId, waitPakin.getId()));
+
+ // 鍏堟鏌ユ槸鍚︽湁鎷f枡鍏ュ簱浠诲姟锛堥渶瑕佸悓鏃跺尮閰嶇鍙峰拰鎵瑰彿锛�
+ Task pickInTask = null;
+ // 妫�鏌ユ槸鍚︽湁鐩樼偣鍏ュ簱浠诲姟锛堥渶瑕佸悓鏃跺尮閰嶇鍙峰拰鎵瑰彿锛�
+ Task checkInTask = null;
+
+ if (!waitPakinItems.isEmpty()) {
+ // 鑾峰彇缁勬墭鏄庣粏涓殑鎵瑰彿鍒楄〃锛堝幓閲嶏級
+ List<String> batchList = waitPakinItems.stream()
+ .map(WaitPakinItem::getBatch)
+ .filter(Objects::nonNull)
+ .filter(batch -> !batch.trim().isEmpty())
+ .distinct()
+ .collect(Collectors.toList());
+
+ if (!batchList.isEmpty()) {
+ log.info("妫�鏌ョ粍鎵樻槑缁嗘壒鍙� - 鎵瑰彿鍒楄〃锛歿}", batchList);
+
+ // 鏌ヨ鎷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.WAVE_SEED.id)
+ .orderByDesc(Task::getCreateTime));
+
+ // 閫氳繃TaskItem鐨刡atch瀛楁鍖归厤鎵瑰彿
+ for (Task task : pickInTasks) {
+ List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>()
+ .eq(TaskItem::getTaskId, task.getId())
+ .in(TaskItem::getBatch, batchList));
+
+ if (!taskItems.isEmpty()) {
+ pickInTask = task;
+ log.info("鎵惧埌鍖归厤鐨勬嫞鏂欏叆搴撲换鍔★紙绠卞彿鍜屾壒鍙烽兘鍖归厤锛� - 浠诲姟缂栫爜锛歿}锛屾壒鍙凤細{}",
+ task.getTaskCode(), batchList);
+ break;
+ }
+ }
+
+ // 鏌ヨ鐩樼偣鍏ュ簱浠诲姟锛氱鍙峰尮閰嶄笖鐘舵�佷负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, TaskStsType.WAVE_SEED.id)
+ .orderByDesc(Task::getCreateTime));
+
+ // 閫氳繃TaskItem鐨刡atch瀛楁鍖归厤鎵瑰彿
+ for (Task task : checkInTasks) {
+ List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>()
+ .eq(TaskItem::getTaskId, task.getId())
+ .in(TaskItem::getBatch, batchList));
+
+ if (!taskItems.isEmpty()) {
+ checkInTask = task;
+ log.info("鎵惧埌鍖归厤鐨勭洏鐐瑰叆搴撲换鍔★紙绠卞彿鍜屾壒鍙烽兘鍖归厤锛� - 浠诲姟缂栫爜锛歿}锛屾壒鍙凤細{}",
+ task.getTaskCode(), batchList);
+ break;
+ }
+ }
+ }
+ }
+
+ // 濡傛灉鏄嫞鏂欏叆搴撲换鍔★紝鐩存帴杩斿洖锛屼笉鏍¢獙缁勬墭
+ if (Objects.nonNull(pickInTask)) {
+ 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()) &&
+ !param.getSourceStaNo().equals(pickInTask.getOrgSite())) {
+ log.info("鏇存柊鎷f枡鍏ュ簱浠诲姟鐨勫叆搴撶珯鐐� - 浠诲姟缂栫爜锛歿}锛屽師绔欑偣锛歿}锛屾柊绔欑偣锛歿}",
+ pickInTask.getTaskCode(), pickInTask.getOrgSite(), param.getSourceStaNo());
+ pickInTask.setOrgSite(param.getSourceStaNo());
+ if (!taskService.updateById(pickInTask)) {
+ log.warn("鏇存柊鎷f枡鍏ュ簱浠诲姟鐨勫叆搴撶珯鐐瑰け璐� - 浠诲姟缂栫爜锛歿}", pickInTask.getTaskCode());
+ }
+ }
+
+ // 杩斿洖鎷f枡鍏ュ簱浠诲姟鐨勪俊鎭�
+ InTaskMsgDto msgDto = new InTaskMsgDto();
+ msgDto.setWorkNo(pickInTask.getTaskCode());
+ msgDto.setTaskId(pickInTask.getId());
+ msgDto.setLocNo(pickInTask.getTargLoc());
+ msgDto.setSourceStaNo(pickInTask.getOrgSite());
+ msgDto.setStaNo(pickInTask.getTargSite());
+ return msgDto;
+ }
+
+ // 濡傛灉鏄洏鐐瑰叆搴撲换鍔★紝鐩存帴杩斿洖锛屼笉鏍¢獙缁勬墭
+ if (Objects.nonNull(checkInTask)) {
+ 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()) &&
+ !param.getSourceStaNo().equals(checkInTask.getOrgSite())) {
+ log.info("鏇存柊鐩樼偣鍏ュ簱浠诲姟鐨勫叆搴撶珯鐐� - 浠诲姟缂栫爜锛歿}锛屽師绔欑偣锛歿}锛屾柊绔欑偣锛歿}",
+ checkInTask.getTaskCode(), checkInTask.getOrgSite(), param.getSourceStaNo());
+ checkInTask.setOrgSite(param.getSourceStaNo());
+ if (!taskService.updateById(checkInTask)) {
+ log.warn("鏇存柊鐩樼偣鍏ュ簱浠诲姟鐨勫叆搴撶珯鐐瑰け璐� - 浠诲姟缂栫爜锛歿}", checkInTask.getTaskCode());
+ }
+ }
+
+ // 杩斿洖鐩樼偣鍏ュ簱浠诲姟鐨勪俊鎭�
+ InTaskMsgDto msgDto = new InTaskMsgDto();
+ msgDto.setWorkNo(checkInTask.getTaskCode());
+ msgDto.setTaskId(checkInTask.getId());
+ msgDto.setLocNo(checkInTask.getTargLoc());
+ msgDto.setSourceStaNo(checkInTask.getOrgSite());
+ msgDto.setStaNo(checkInTask.getTargSite());
+ return msgDto;
+ }
+
+ // 妫�鏌ュ叾浠栧叆搴撲换鍔$被鍨嬶紙鐢ㄧ鍙锋煡璇紝鐘舵�佷负1鎴�2锛�
+ // 娉ㄦ剰锛氱洏鐐瑰叆搴撳凡鍗曠嫭澶勭悊锛屼笉鍐嶅寘鍚湪姝ゅ垪琛ㄤ腑
+ List<Integer> otherInboundTaskTypes = Arrays.asList(
+ TaskType.TASK_TYPE_IN.type,
+ TaskType.TASK_TYPE_MERGE_IN.type,
+ TaskType.TASK_TYPE_EMPITY_IN.type
+ );
+
+ Task existingInTask = taskService.getOne(new LambdaQueryWrapper<Task>()
+ .eq(Task::getBarcode, param.getBarcode())
+ .in(Task::getTaskType, otherInboundTaskTypes)
+ .in(Task::getTaskStatus, TaskStsType.GENERATE_IN.id, TaskStsType.WCS_EXECUTE_IN.id)
+ .orderByDesc(Task::getCreateTime)
+ .last("LIMIT 1"));
+
+ if (Objects.nonNull(existingInTask)) {
+ log.info("鎵惧埌鍖归厤鐨勫叾浠栧叆搴撲换鍔� - 浠诲姟缂栫爜锛歿}锛屼换鍔$被鍨嬶細{}锛岀鍙凤細{}",
+ existingInTask.getTaskCode(), existingInTask.getTaskType(), param.getBarcode());
+
+ // 妫�鏌ョ粍鎵樻槑缁嗘槸鍚︽湁璁㈠崟缂栫爜锛堜换鍔$紪鍙凤級
+ List<WaitPakinItem> itemsWithAsnCode = waitPakinItems.stream()
+ .filter(item -> StringUtils.isNotBlank(item.getAsnCode()))
+ .collect(Collectors.toList());
+
+ if (!itemsWithAsnCode.isEmpty()) {
+ log.info("缁勬墭妗f湁浠诲姟缂栧彿锛屼娇鐢ㄧ幇鏈夊叆搴撲换鍔″崟鍙� - 浠诲姟缂栫爜锛歿}锛岀鍙凤細{}锛屼换鍔$紪鍙锋暟閲忥細{}",
+ existingInTask.getTaskCode(), param.getBarcode(), itemsWithAsnCode.size());
+
+ // 鏇存柊鍏ュ簱绔欑偣淇℃伅锛堝鏋滀笌褰撳墠鐢宠鐨勭珯鐐逛笉鍚岋級
+ if (StringUtils.isNotBlank(param.getSourceStaNo()) &&
+ !param.getSourceStaNo().equals(existingInTask.getOrgSite())) {
+ log.info("鏇存柊鍏ュ簱浠诲姟鐨勫叆搴撶珯鐐� - 浠诲姟缂栫爜锛歿}锛屽師绔欑偣锛歿}锛屾柊绔欑偣锛歿}",
+ existingInTask.getTaskCode(), existingInTask.getOrgSite(), param.getSourceStaNo());
+ existingInTask.setOrgSite(param.getSourceStaNo());
+ if (!taskService.updateById(existingInTask)) {
+ log.warn("鏇存柊鍏ュ簱浠诲姟鐨勫叆搴撶珯鐐瑰け璐� - 浠诲姟缂栫爜锛歿}", existingInTask.getTaskCode());
+ }
+ }
+
+ // 杩斿洖鐜版湁鍏ュ簱浠诲姟鐨勪俊鎭�
+ InTaskMsgDto msgDto = new InTaskMsgDto();
+ msgDto.setWorkNo(existingInTask.getTaskCode());
+ msgDto.setTaskId(existingInTask.getId());
+ msgDto.setLocNo(existingInTask.getTargLoc());
+ msgDto.setSourceStaNo(existingInTask.getOrgSite());
+ msgDto.setStaNo(existingInTask.getTargSite());
+ return msgDto;
+ } else {
+ log.info("缁勬墭妗f病鏈変换鍔$紪鍙凤紝缁х画鍒涘缓鏂颁换鍔� - 绠卞彿锛歿}", param.getBarcode());
+ }
+ } else {
+ log.info("鏈壘鍒板尮閰嶇殑鍏朵粬鍏ュ簱浠诲姟锛岀户缁垱寤烘柊浠诲姟 - 绠卞彿锛歿}", param.getBarcode());
+ }
// 鐢熸垚浠诲姟缂栫爜
String ruleCode = generateTaskCode();
@@ -140,7 +373,7 @@
updateLocStatus(task.getTargLoc(), waitPakin.getBarcode());
// 鑾峰彇骞堕獙璇佺粍鎷栨槑缁�
- List<WaitPakinItem> waitPakinItems = getWaitPakinItems(waitPakin.getId());
+ waitPakinItems = getWaitPakinItems(waitPakin.getId());
// 鍒涘缓骞朵繚瀛樹换鍔℃槑缁�
saveTaskItems(task.getId(), waitPakinItems, param.getUser());
@@ -676,6 +909,33 @@
throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛佸綋鍓嶄换鍔$姸鎬侊細" + task.getTaskStatus() + "锛岀洰鏍囩姸鎬侊細" + TaskStsType.COMPLETE_OUT.id);
}
log.info("鍑哄簱浠诲姟鐘舵�佹洿鏂版垚鍔� - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
+
+ // 鍏ㄧ増鍑哄簱鍦≧CS鍥炶皟鍚庡鐞嗗簱瀛樺苟璁剧疆涓�199锛岀瓑寰匬DA蹇�熸嫞璐х‘璁ゅ悗鏇存柊涓�200
+ if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)) {
+ log.info("鍏ㄧ増鍑哄簱浠诲姟锛屽紑濮嬪鐞嗗簱瀛樺苟鏇存柊鐘舵�佷负199 - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
+ try {
+ // 閲嶆柊鏌ヨ浠诲姟浠ヨ幏鍙栨渶鏂扮姸鎬侊紙198锛�
+ task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode()));
+
+ // 璋冪敤completeTask澶勭悊搴撳瓨锛堜細璁剧疆涓�199锛�
+ List<Task> taskList = new ArrayList<>();
+ taskList.add(task);
+ taskService.completeTask(taskList);
+
+ // 閲嶆柊鏌ヨ浠诲姟浠ヨ幏鍙栨渶鏂扮姸鎬侊紙199锛�
+ task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode()));
+
+ if (task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
+ log.info("鍏ㄧ増鍑哄簱浠诲姟鐘舵�佸凡鏇存柊涓�199锛堢瓑寰匬DA蹇�熸嫞璐х‘璁ゅ悗鏇存柊涓�200锛� - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
+ } else {
+ log.warn("鍏ㄧ増鍑哄簱浠诲姟鐘舵�佹洿鏂颁负199澶辫触 - 浠诲姟缂栫爜锛歿}锛屽綋鍓嶇姸鎬侊細{}",
+ task.getTaskCode(), task.getTaskStatus());
+ }
+ } catch (Exception e) {
+ log.error("鍏ㄧ増鍑哄簱浠诲姟澶勭悊澶辫触 - 浠诲姟缂栫爜锛歿}锛岄敊璇細{}", task.getTaskCode(), e.getMessage(), e);
+ // 涓嶆姏鍑哄紓甯革紝閬垮厤褰卞搷RCS鍥炶皟鐨勬甯歌繑鍥�
+ }
+ }
}
}
} else {
@@ -797,7 +1057,7 @@
String shallowLocNo = LocUtils.getShallowLoc(loc1.getCode());
// 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣�
Loc shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLocNo));
- if (shallowLoc != null && shallowLoc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+ if (shallowLoc != null && Objects.equals(shallowLoc.getUseStatus(), LocStsType.LOC_STS_TYPE_O.type)) {
if (LocUtils.locMoveCheckLocTypeComplete(shallowLoc, locTypeDto)) {
loc = shallowLoc;
channel = shallowLoc.getChannel();
@@ -980,7 +1240,7 @@
loc = null;
}
// 閫掑綊鏌ヨ
- if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+ if (Cools.isEmpty(loc) || !Objects.equals(loc.getUseStatus(), LocStsType.LOC_STS_TYPE_O.type)) {
// 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
if (times < rowCount * 2) {
times = times + 1;
@@ -1046,7 +1306,7 @@
inTaskMsgDto.setStaNo(deviceSite.getDeviceSite());
}
// 閫掑綊鏌ヨ
- if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+ if (Cools.isEmpty(loc) || !Objects.equals(loc.getUseStatus(), LocStsType.LOC_STS_TYPE_O.type)) {
// 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
if (times < 5) {
times = times + 1;
@@ -1096,18 +1356,57 @@
// 璇ユ柟娉曚細鎵ц浠ヤ笅娴佺▼锛�
// 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锛屼笉闇�瑕佹洿鏂�
+ Integer taskStatus = task.getTaskStatus();
+ if (taskStatus != null && taskStatus.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 (taskStatus != null && taskStatus.equals(TaskStsType.WCS_EXECUTE_IN.id)) {
+ log.info("鍏ュ簱浠诲姟鐘舵�佸凡缁忔槸2锛圧CS浠诲姟宸蹭笅鍙戯級锛屾棤闇�鏇存柊 - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
+ } else {
+ log.info("鍏ュ簱浠诲姟褰撳墠鐘舵�侊細{}锛孯CS鐢宠鍏ュ簱鏃朵繚鎸佸綋鍓嶇姸鎬� - 浠诲姟缂栫爜锛歿}",
+ taskStatus, 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