From a488088a18a9b8808bc57124681cee8c4ada7299 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期二, 10 三月 2026 17:23:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/devlop-phyz' into devlop-phyz
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 90 ++++++++++++++++++++++++++++++--------------
1 files changed, 61 insertions(+), 29 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index db8643e..68a4b56 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.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.server.api.config.RemotesInfoProperties;
import com.vincent.rsf.server.api.controller.erp.params.TaskInParam;
import com.vincent.rsf.server.api.entity.CommonResponse;
@@ -34,7 +33,6 @@
import com.vincent.rsf.server.manager.enums.LocStsType;
import com.vincent.rsf.server.system.entity.Config;
import com.vincent.rsf.server.system.service.ConfigService;
-import com.vincent.rsf.server.system.service.impl.ConfigServiceImpl;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import com.vincent.rsf.server.system.utils.SystemAuthUtils;
import lombok.Synchronized;
@@ -764,7 +762,7 @@
//绉诲簱
moveInStock(task, loginUserId);
} else if (task.getTaskType().equals(TaskType.TASK_TYPE_EMPTY_IN.type)) {
- //绉诲簱
+ //绌烘澘鍏ュ簱
complateInstockE(task, loginUserId);
} else if (task.getTaskType().equals(TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type)) {
//瓒婂簱
@@ -932,7 +930,7 @@
}
List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
-
+ String type = LocStsType.LOC_STS_TYPE_F.type;
if (!taskItems.isEmpty()) {
//绉诲簱鏈夊彲鑳芥槸绌烘澘
try {
@@ -945,12 +943,14 @@
if (!locItemService.remove(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocCode, task.getOrgLoc()))) {
throw new CoolException("婧愬簱浣嶆槑缁嗗垹闄ゅけ璐ワ紒");
}
+ } else {
+ type = LocStsType.LOC_STS_TYPE_D.type;
}
/**淇敼搴撲綅鐘舵�佷负F.鍦ㄥ簱*/
if (!locService.update(new LambdaUpdateWrapper<Loc>()
.set(Loc::getBarcode, task.getBarcode())
- .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type)
+ .set(Loc::getUseStatus, type)
.set(Loc::getUpdateBy, loginUserId)
.set(Loc::getUpdateTime, new Date())
.eq(Loc::getCode, task.getTargLoc()))) {
@@ -995,14 +995,14 @@
} else if (task.getTaskType().equals(TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type)) {
//109.澶囪揣
complateOutStockDocking(task, loginUserId);
- } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)) {
+ } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type) || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)) {
//107.鐩�
// pickOrCheckTask(task.getId(), Constants.TASK_TYPE_OUT_CHECK);
complateOutStock2(task, loginUserId);
- } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)) {
- //103.鎷i��
-// pickOrCheckTask(task.getId(), Constants.TASK_TYPE_OUT_PICK);
- complateOutStock2(task, loginUserId);
+// } else if () {
+// //103.鎷i��
+//// pickOrCheckTask(task.getId(), Constants.TASK_TYPE_OUT_PICK);
+// complateOutStock2(task, loginUserId);
} else {
complateOutStock(task, loginUserId);
}
@@ -1051,7 +1051,7 @@
.eq(LocItemWorking::getTaskId, taskItem.getTaskId())
.eq(LocItemWorking::getFieldsIndex, taskItem.getFieldsIndex())
.eq(StringUtils.isNotEmpty(taskItem.getBatch()), LocItemWorking::getBatch, taskItem.getBatch())
- .eq(LocItemWorking::getMatnrId, taskItem.getMatnrId()));
+ .eq(LocItemWorking::getMatnrId, taskItem.getMatnrId()).last("limit 1"));
if (Objects.isNull(locWorking)) {
continue;
}
@@ -1134,7 +1134,39 @@
if (!taskService.updateById(task)) {
throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
}
+ // 鐩樼偣鍐嶅叆搴撲换鍔$粨鏉燂細灏嗗叧鑱旂殑鐩樼偣宸紓鍗曠疆涓哄凡瀹℃牳
+ if (TaskType.TASK_TYPE_CHECK_IN.type.equals(task.getTaskType())) {
+ markCheckDiffApprovedWhenCheckInDone(task);
+ }
+ }
+ /**
+ * 鐩樼偣鍐嶅叆搴撳畬鎴愬悗锛屽皢鍏宠仈鐨勭洏鐐瑰樊寮傚崟缃负宸插鏍革紙鏈夊崟鎸� orderId锛屾棤鍗曟寜 鍑哄簱浠诲姟鍙� orderCode锛�
+ */
+ @Override
+ public void markCheckDiffApprovedWhenCheckInDone(Task checkInTask) {
+ List<TaskItem> items = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, checkInTask.getId()).last("limit 1"));
+ Long orderId = items.isEmpty() ? null : items.get(0).getOrderId();
+ CheckDiff checkDiff = null;
+ if (orderId != null && !orderId.equals(0L)) {
+ checkDiff = checkDiffService.getOne(new LambdaQueryWrapper<CheckDiff>().eq(CheckDiff::getOrderId, orderId).last("limit 1"));
+ } else {
+ Task outTask = taskService.getOne(new LambdaQueryWrapper<Task>()
+ .eq(Task::getBarcode, checkInTask.getBarcode())
+ .eq(Task::getTaskType, TaskType.TASK_TYPE_CHECK_OUT.type)
+ .last("limit 1"));
+ if (outTask != null) {
+ checkDiff = checkDiffService.getOne(new LambdaQueryWrapper<CheckDiff>()
+ .eq(CheckDiff::getOrderCode, outTask.getTaskCode())
+ .and(w -> w.isNull(CheckDiff::getOrderId).or().eq(CheckDiff::getOrderId, 0))
+ .last("limit 1"));
+ }
+ }
+ if (checkDiff != null && !CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_END.val.equals(checkDiff.getExceStatus())) {
+ checkDiffService.update(new LambdaUpdateWrapper<CheckDiff>()
+ .eq(CheckDiff::getId, checkDiff.getId())
+ .set(CheckDiff::getExceStatus, CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_END.val));
+ }
}
/**
@@ -1380,7 +1412,7 @@
Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, task.getOrgLoc()));
if (Objects.isNull(loc)) {
- throw new CoolException("娌℃湁绌哄簱浣嶏紒锛�");
+ throw new CoolException("婧愬簱浣嶄笉瀛樺湪锛侊紒");
}
String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, task);
@@ -1426,9 +1458,9 @@
if (taskItem.getFieldsIndex().equals(working.getFieldsIndex())) {
Double minQty = taskItem.getAnfme();
if (!task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) {
- minQty = Math.round((working.getAnfme() - taskItem.getQty()) * 1000000) / 1000000.0;
+ minQty = Math.round((working.getAnfme() - taskItem.getAnfme()) * 1000000) / 1000000.0;
}
- if (minQty.compareTo(0.0) >= 0) {
+ if (!minQty.equals(0D) && minQty>0D) {
taskItem.setAnfme(minQty);
if (!taskItemService.updateById(taskItem)) {
throw new CoolException("浠诲姟鏄庣粏淇敼澶辫触锛侊紒");
@@ -1527,21 +1559,21 @@
throw new CoolException("搴撲綅鏄庣粏涓嶅瓨鍦紒锛�");
}
- List<LocItemWorking> workings = new ArrayList<>();
- for (LocItem item : locItems) {
- LocItemWorking working = new LocItemWorking();
- BeanUtils.copyProperties(item, working);
- working.setId(null)
- .setTaskId(task.getId())
- .setLocItemId(item.getId())
- .setUpdateBy(loginUserId)
- .setUpdateTime(new Date());
- workings.add(working);
- }
-
- if (!locItemWorkingService.saveBatch(workings)) {
- throw new CoolException("涓存椂搴撳瓨淇濆瓨澶辫触锛侊紒");
- }
+// List<LocItemWorking> workings = new ArrayList<>();
+// for (LocItem item : locItems) {
+// LocItemWorking working = new LocItemWorking();
+// BeanUtils.copyProperties(item, working);
+// working.setId(null)
+// .setTaskId(task.getId())
+// .setLocItemId(item.getId())
+// .setUpdateBy(loginUserId)
+// .setUpdateTime(new Date());
+// workings.add(working);
+// }
+//
+// if (!locItemWorkingService.saveBatch(workings)) {
+// throw new CoolException("涓存椂搴撳瓨淇濆瓨澶辫触锛侊紒");
+// }
try {
//鏇存柊搴撲綅鏄庣粏
--
Gitblit v1.9.1