From 4f9902403a176d8e97def29caaf525dde3585393 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 23 七月 2025 12:43:49 +0800
Subject: [PATCH] 盘点差异单功能优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java |   41 ++++++++++++++++++++++++++++++-----------
 1 files changed, 30 insertions(+), 11 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 71a4afc..41323b5 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
@@ -1037,10 +1037,14 @@
         List<LocItemWorking> workings = new ArrayList<>();
         List<TaskItem> items = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
         items.forEach(taskItem -> {
-            LocItemWorking itemWorking = new LocItemWorking();
-            BeanUtils.copyProperties(taskItem, itemWorking);
-            itemWorking.setTaskId(task.getId()).setLocId(loc1.getId()).setLocCode(loc1.getCode());
-            workings.add(itemWorking);
+            if (taskItem.getAnfme() > 0) {
+                LocItemWorking itemWorking = new LocItemWorking();
+                BeanUtils.copyProperties(taskItem, itemWorking);
+                itemWorking.setTaskId(task.getId())
+                        .setLocId(loc1.getId())
+                        .setLocCode(loc1.getCode());
+                workings.add(itemWorking);
+            }
         });
 
         if (!locItemWorkingService.saveBatch(workings)) {
@@ -1389,14 +1393,29 @@
         List<LocItem> locItems = new ArrayList<>();
         items.forEach(taskItem -> {
             Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTargLoc()), false);
+            if (Objects.isNull(loc)) {
+                throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�");
+            }
             LocItem item = new LocItem();
-            BeanUtils.copyProperties(taskItem, item);
-            item.setLocCode(loc.getCode()).setId(null)
-                    .setLocId(loc.getId())
-                    .setUpdateBy(loginUserId)
-                    .setWkType(taskItem.getWkType())
-                    .setType(taskItem.getOrderType());
-            locItems.add(item);
+            LocItem locItem = locItemService.getOne(new LambdaQueryWrapper<LocItem>()
+                    .eq(LocItem::getMatnrId, taskItem.getMatnrId())
+                    .eq(LocItem::getLocId, loc.getId())
+                    .eq(StringUtils.isNoneBlank(taskItem.getBatch()), LocItem::getBatch, taskItem.getBatch())
+                    .eq(StringUtils.isNoneBlank(taskItem.getFieldsIndex()), LocItem::getFieldsIndex, taskItem.getFieldsIndex()));
+            if (Objects.isNull(locItem)) {
+                BeanUtils.copyProperties(taskItem, item);
+                item.setLocCode(loc.getCode())
+                        .setId(null)
+                        .setLocId(loc.getId())
+                        .setUpdateBy(loginUserId)
+                        .setWkType(taskItem.getWkType())
+                        .setType(taskItem.getOrderType());
+                locItems.add(item);
+            } else {
+                locItem.setAnfme(Math.round((locItem.getAnfme() + taskItem.getAnfme()) * 10000) / 10000.0)
+                        .setUpdateTime(new Date());
+                locItems.add(locItem);
+            }
         });
         if (!locItemService.saveBatch(locItems)) {
             throw new CoolException("搴撲綅鏄庣粏鏇存柊澶辫触锛侊紒");

--
Gitblit v1.9.1