From cfe049492f81d2c650a2b17348593edbc5054498 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期三, 18 三月 2026 07:52:44 +0800
Subject: [PATCH] #3.5

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java |  103 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 84 insertions(+), 19 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
index 08e424b..2bdd486 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -1,6 +1,7 @@
 package com.vincent.rsf.server.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.api.controller.erp.params.TaskInParam;
 import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
@@ -11,7 +12,10 @@
 import com.vincent.rsf.server.manager.controller.params.LocToTaskParams;
 import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.enums.*;
+import com.vincent.rsf.server.manager.mapper.AsnOrderMapper;
 import com.vincent.rsf.server.manager.mapper.LocItemMapper;
+import com.vincent.rsf.server.manager.mapper.TaskMapper;
+import com.vincent.rsf.server.manager.mapper.WaveMapper;
 import com.vincent.rsf.server.manager.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
@@ -22,6 +26,7 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -36,23 +41,26 @@
     @Autowired
     private LocService locService;
     @Autowired
-    private TaskService taskService;
+    private TaskMapper taskMapper;
     @Autowired
     private TaskItemService taskItemService;
     @Autowired
-    private LocItemService locItemService;
-    @Autowired
     private DeviceSiteService deviceSiteService;
     @Autowired
+    @Lazy
     private WcsService wcsService;
     @Autowired
-    private OutStockService outStockService;
+    private AsnOrderMapper asnOrderMapper;
     @Autowired
-    private WaveService waveService;
+    private WaveMapper waveMapper;
     @Autowired
     private BasStationService basStationService;
     @Autowired
     private LocItemWorkingService locItemWorkingService;
+    @Autowired
+    private CheckDiffService checkDiffService;
+    @Autowired
+    private CheckDiffItemService checkDiffItemService;
 
 
     /**
@@ -117,7 +125,7 @@
             throw new CoolException("绌哄鍣ㄥ嚭搴擄紒锛佸叾浠栫被鍨嬫棤鏁堬紝杩涘叆绫诲瀷锛�"+map.getType());
         }
 
-        if (!taskService.save(task)) {
+        if (taskMapper.insert(task) <= 0) {
             throw new CoolException("浠诲姟鍒涘缓澶辫触锛侊紒");
         }
     }
@@ -150,10 +158,10 @@
         if (!Objects.isNull(map.getSourceId())) {
             if (map.getType().equals(Constants.TASK_TYPE_WAVE_OUT_STOCK)) {
                 order = new WkOrder();
-                wave = waveService.getById(map.getSourceId());
+                wave = waveMapper.selectById(map.getSourceId());
             } else {
                 wave = new Wave();
-                order = outStockService.getById(map.getSourceId());
+                order = asnOrderMapper.selectById(map.getSourceId());
             }
         } else {
             wave = new Wave();
@@ -178,8 +186,7 @@
             }
 
             //澧炲姞瀵瑰璐у崟鐨勫垽鏂�
-            Integer taskStatus = resouce.equals(TaskResouceType.TASK_RESOUCE_STOCK_UP.val)
-                    ? TaskStsType.MISSION_INITIAL.id:TaskStsType.MISSION_INITIAL.id;
+            Integer taskStatus = TaskStsType.MISSION_INITIAL.id;
 
             Task moveTask = new Task();
             String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
@@ -221,7 +228,7 @@
                     }
                     task.setTaskType(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type).setWarehType(deviceSite.getDevice());
                 } else {
-                    if (resouce.equals(TaskResouceType.TASK_RESOUCE_STOCK_UP.val)){
+                    if (resouce.equals(TaskResouceType.TASK_RESOUCE_STOCK_NOT_OUT.val)){
                         //鍏ㄦ澘鍑哄簱
                         DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
                                 .eq(DeviceSite::getSite, siteNo).eq(DeviceSite::getType, TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type)
@@ -254,7 +261,7 @@
                 task.setTaskType(TaskType.TASK_TYPE_CHECK_OUT.type).setWarehType(deviceSite.getDevice());
             }
 
-            if (!taskService.save(task)) {
+            if (taskMapper.insert(task) <= 0) {
                 throw new CoolException("浠诲姟鍒涘缓澶辫触锛侊紒");
             }
 
@@ -282,11 +289,11 @@
 
             if (!Objects.isNull(moveTask.getId())) {
                 moveTask.setParentId(task.getId()).setSort(moveTask.getSort() + 1);
-                if (!taskService.saveOrUpdate(moveTask)) {
+                if ((Objects.isNull(moveTask.getId()) ? taskMapper.insert(moveTask) : taskMapper.updateById(moveTask)) <= 0) {
                     throw new CoolException("浠诲姟淇℃伅淇敼澶辫触锛侊紒");
                 }
                 task.setParentId(moveTask.getId());
-                if (!taskService.updateById(task)) {
+                if (taskMapper.updateById(task) <= 0) {
                     throw new CoolException("涓讳换鍔″叧鑱斿け璐ワ紒锛�");
                 }
             }
@@ -323,7 +330,7 @@
                 taskItems.add(taskItem);
 
                 Double qty = Math.round((item.getWorkQty() + item.getOutQty()) * 10000) / 10000.0;
-                LocItem locItem = locItemService.getById(item.getId());
+                LocItem locItem = this.getById(item.getId());
                 if (Objects.isNull(locItem)) {
                     throw new CoolException("搴撳瓨淇℃伅涓嶅瓨鍦紒");
                 }
@@ -340,7 +347,7 @@
                 }
                 item.setUpdateBy(loginUserId).setUpdateTime(new Date());
 
-                if (!locItemService.updateById(item)) {
+                if (!this.updateById(item)) {
                     throw new CoolException("搴撳瓨淇℃伅淇敼澶辫触锛侊紒");
                 }
 
@@ -366,6 +373,63 @@
 
             if (!taskItemService.saveBatch(taskItems)) {
                 throw new CoolException("浠诲姟鏄庣粏鐢熸垚澶辫触锛侊紒");
+            }
+
+            // 鏃犲崟鐩樼偣锛氭彁鍙栧嚭搴撴椂鍗崇敓鎴愮洏鐐瑰樊寮傚崟锛屼究浜� PDA 鎸夊樊寮傚崟鏍¢獙
+            if (map.getType().equals(Constants.TASK_TYPE_OUT_CHECK)) {
+                Date now = new Date();
+                double sumAnfme = taskItems.stream().mapToDouble(ti -> ti.getAnfme() != null ? ti.getAnfme() : 0).sum();
+                CheckDiff checkDiff = new CheckDiff();
+                checkDiff.setOrderCode(task.getTaskCode())
+                        .setOrderId(null)
+                        .setCheckType(0)
+                        .setExceStatus(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_INIT.val)
+                        .setAnfme(sumAnfme)
+                        .setCheckQty(0D)
+                        .setStatus(1)
+                        .setDeleted(0)
+                        .setTenantId(task.getTenantId())
+                        .setCreateBy(loginUserId)
+                        .setCreateTime(now)
+                        .setUpdateBy(loginUserId)
+                        .setUpdateTime(now);
+                if (loc.getAreaId() != null) {
+                    checkDiff.setAreaId(loc.getAreaId()).setAreaName(loc.getAreaId$());
+                }
+                if (!checkDiffService.save(checkDiff)) {
+                    throw new CoolException("鏃犲崟鐩樼偣宸紓鍗曞垱寤哄け璐ワ紒锛�");
+                }
+                List<CheckDiffItem> diffItems = new ArrayList<>();
+                for (TaskItem ti : taskItems) {
+                    CheckDiffItem diffItem = new CheckDiffItem();
+                    diffItem.setCheckId(checkDiff.getId())
+                            .setOrderCode(task.getTaskCode())
+                            .setTaskId(task.getId())
+                            .setTaskItemId(ti.getId())
+                            .setBarcode(task.getBarcode())
+                            .setAnfme(ti.getAnfme() != null ? ti.getAnfme() : 0D)
+                            .setCheckQty(ti.getAnfme() != null ? ti.getAnfme() : 0D)
+                            .setMatnrCode(ti.getMatnrCode())
+                            .setMaktx(ti.getMaktx())
+                            .setBatch(ti.getBatch())
+                            .setSpec(ti.getSpec())
+                            .setModel(ti.getModel())
+                            .setExceStatus(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_INIT.val)
+                            .setStatus(1)
+                            .setDeleted(0)
+                            .setTenantId(task.getTenantId())
+                            .setCreateBy(loginUserId)
+                            .setCreateTime(now)
+                            .setUpdateBy(loginUserId)
+                            .setUpdateTime(now);
+                    diffItems.add(diffItem);
+                }
+                if (!checkDiffItemService.saveBatch(diffItems)) {
+                    throw new CoolException("鏃犲崟鐩樼偣宸紓鏄庣粏鍒涘缓澶辫触锛侊紒");
+                }
+                taskItemService.update(new LambdaUpdateWrapper<TaskItem>()
+                        .set(TaskItem::getSourceCode, task.getTaskCode())
+                        .eq(TaskItem::getTaskId, task.getId()));
             }
         });
     }
@@ -430,6 +494,7 @@
         }
 
         targetLoc.setUseStatus(LocStsType.LOC_STS_TYPE_S.type);
+        targetLoc.setBarcode(orgLoc.getBarcode());
 
         if (!locService.updateById(targetLoc)) {
             throw new CoolException("鐩爣搴撲綅棰勭害澶辫触锛侊紒");
@@ -448,11 +513,11 @@
                 .setBarcode(orgLoc.getBarcode())
                 .setMemo(map.getMemo());
 
-        if (!taskService.save(task)) {
+        if (taskMapper.insert(task) <= 0) {
             throw new CoolException("鏂板缓绉诲簱浠诲姟澶辫触锛侊紒");
         }
 
-        List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, orgLoc.getId()));
+        List<LocItem> locItems = this.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, orgLoc.getId()));
         if (!locItems.isEmpty()) {
             List<TaskItem> taskItems = new ArrayList<>();
             for (LocItem item : locItems) {
@@ -492,6 +557,6 @@
                 .eq(StringUtils.isNotBlank(matnr.getLocCode()), LocItem::getLocCode, matnr.getLocCode())
 //                .eq(StringUtils.isNotBlank(matnr.getChannel()), LocItem::getChannel, matnr.getChannel())
                 .in(!matnr.getMatnrCode().isEmpty(), LocItem::getMatnrCode, matnr.getMatnrCode());
-        return  this.baseMapper.listByMatnr(LocStsType.LOC_STS_TYPE_F.type, matnr.getChannel(), wrapper);
+        return this.baseMapper.listByMatnr(LocStsType.LOC_STS_TYPE_F.type, matnr.getChannel(), wrapper);
     }
 }

--
Gitblit v1.9.1