From 83b51a5a0774ea8ecb9a06304af3b956a21307c8 Mon Sep 17 00:00:00 2001
From: pjb <123456>
Date: 星期六, 08 三月 2025 09:06:55 +0800
Subject: [PATCH] CUT库条码T开头,截取后10位

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java |  210 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 198 insertions(+), 12 deletions(-)

diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java
index a4b8fa1..f4c9ce1 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java
@@ -1,12 +1,198 @@
-package com.zy.asrs.wms.asrs.service.impl;
-
-import com.zy.asrs.wms.asrs.mapper.CacheSiteMapper;
-import com.zy.asrs.wms.asrs.entity.CacheSite;
-import com.zy.asrs.wms.asrs.service.CacheSiteService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-@Service("cacheSiteService")
-public class CacheSiteServiceImpl extends ServiceImpl<CacheSiteMapper, CacheSite> implements CacheSiteService {
-
-}
+package com.zy.asrs.wms.asrs.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wms.asrs.entity.*;
+import com.zy.asrs.wms.asrs.entity.enums.CacheSiteStatusType;
+import com.zy.asrs.wms.asrs.entity.enums.TaskStsType;
+import com.zy.asrs.wms.asrs.entity.param.SeedCompleteParam;
+import com.zy.asrs.wms.asrs.mapper.CacheSiteMapper;
+import com.zy.asrs.wms.asrs.service.*;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service("cacheSiteService")
+public class CacheSiteServiceImpl extends ServiceImpl<CacheSiteMapper, CacheSite> implements CacheSiteService {
+
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private OrderDetlService orderDetlService;
+    @Autowired
+    private WaveSeedService waveSeedService;
+    @Autowired
+    private WaveSeedLogService waveSeedLogService;
+    @Autowired
+    private TaskService taskService;
+    @Autowired
+    private TaskDetlService taskDetlService;
+    @Autowired
+    private PlatformService platformService;
+    @Autowired
+    private PlatformDetlService platformDetlService;
+
+
+    @Override
+    public List<String> getChannelList() {
+        return this.baseMapper.getChannelList();
+    }
+
+    @Override
+    public boolean seedCompletePreview(SeedCompleteParam param) {
+        if (param == null) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
+        }
+
+        String siteNo = param.getSiteNo();
+        if (siteNo == null) {
+            throw new CoolException("鎾绔欑偣缂栧彿涓嶈兘涓虹┖");
+        }
+
+        CacheSite cacheSite = this.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getSiteNo, siteNo));
+        if(cacheSite == null){
+            throw new CoolException("鎾绔欑偣涓嶅瓨鍦�");
+        }
+
+        if (cacheSite.getSiteStatus().equals(CacheSiteStatusType.O.id)) {
+            throw new CoolException("绔欑偣鐘舵�佸紓甯�");
+        }
+
+        Long orderId = cacheSite.getOrderId();
+        Order order = orderService.getById(orderId);
+        if (order == null) {
+            throw new CoolException("璁㈠崟涓嶅瓨鍦�");
+        }
+
+        HashMap<Long, Double> stockMap = new HashMap<>();
+        List<WaveSeed> waveSeeds = waveSeedService.list(new LambdaQueryWrapper<WaveSeed>().eq(WaveSeed::getOrderId, orderId));
+       //fixme 鏍¢獙褰撳墠璁㈠崟鏄惁瀹屾垚鎾锛岄渶瑕佽幏鍙栧綋鍓嶆尝娆℃墍鏈変换鍔′腑A鐗╂枡鐨勬墽琛屾暟閲忔槸鍚︾瓑浜庤鍗曠殑鎬婚噺-宸插畬鎴愭暟閲�(anfme - qty) 鎴栬�� 浠诲姟涓凡鎵ц鏁伴噺鏄惁绛夎鍗曚腑鐨勬墽琛屾暟閲�  workQty = workQty
+        List<OrderDetl> orderDetls = orderDetlService.getOrderDetlByOrderId(orderId);
+
+        for (WaveSeed waveSeed : waveSeeds) {
+            Double anfme = stockMap.get(waveSeed.getOrderDetlId());
+            if (anfme == null) {
+                anfme = 0.0D;
+            }
+            anfme += waveSeed.getWorkQty();
+            stockMap.put(waveSeed.getOrderDetlId(), anfme);
+        }
+
+        boolean check = true;
+        for (OrderDetl orderDetl : orderDetls) {
+            Double anfme = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
+            Double workQty = stockMap.get(orderDetl.getId());
+            if (!anfme.equals(workQty)) {
+                check = false;
+                break;
+            }
+        }
+
+        return check;
+    }
+
+    @Override
+    public void seedComplete(SeedCompleteParam param) {
+        if (param == null) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
+        }
+
+        String siteNo = param.getSiteNo();
+        if (siteNo == null) {
+            throw new CoolException("鎾绔欑偣缂栧彿涓嶈兘涓虹┖");
+        }
+
+        CacheSite cacheSite = this.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getSiteNo, siteNo));
+        if(cacheSite == null){
+            throw new CoolException("鎾绔欑偣涓嶅瓨鍦�");
+        }
+
+        if (cacheSite.getSiteStatus().equals(CacheSiteStatusType.O.id)) {
+            throw new CoolException("绔欑偣鐘舵�佸紓甯�");
+        }
+
+        if (cacheSite.getPlatformId() == null) {
+            throw new CoolException("闆嗚揣鍖哄煙鏈粦瀹�");
+        }
+
+        Long orderId = cacheSite.getOrderId();
+        Order order = orderService.getById(orderId);
+        if (order == null) {
+            throw new CoolException("璁㈠崟涓嶅瓨鍦�");
+        }
+        Long waveId = order.getWaveId();
+
+        boolean check = this.seedCompletePreview(param);
+
+        if (!check) {//璁㈠崟鏈鐞嗗畬鎴�
+            List<Long> taskIds = new ArrayList<>();
+            List<TaskDetl> taskDetls = taskDetlService.list(new LambdaQueryWrapper<TaskDetl>().eq(TaskDetl::getWaveId, waveId));
+            for (TaskDetl taskDetl : taskDetls) {
+                if(!taskIds.contains(taskDetl.getTaskId())){
+                    taskIds.add(taskDetl.getTaskId());
+                }
+            }
+
+            if (!taskIds.isEmpty()) {
+                List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().in(Task::getId, taskIds).notIn(Task::getTaskSts, TaskStsType.COMPLETE_OUT.id, TaskStsType.UPDATED_OUT.id));
+                if (!tasks.isEmpty()) {
+                    throw new CoolException("瀛樺湪鏈畬鎴愪换鍔�");
+                }
+            }
+        }
+
+        Platform platform = platformService.getById(cacheSite.getPlatformId());
+        if(platform == null){
+            throw new CoolException("闆嗚揣鍖哄煙涓嶅瓨鍦�");
+        }
+
+        List<WaveSeed> waveSeeds = waveSeedService.list(new LambdaQueryWrapper<WaveSeed>().eq(WaveSeed::getOrderId, orderId));
+        if (waveSeeds.isEmpty()) {
+            throw new CoolException("鎾鏁版嵁涓嶅瓨鍦�");
+        }
+
+        for (WaveSeed waveSeed : waveSeeds) {
+            PlatformDetl platformDetl = new PlatformDetl();
+            platformDetl.setPlatformId(platform.getId());
+            platformDetl.setPlatformNo(platform.getPlatformNo());
+            platformDetl.setOrderId(orderId);
+            platformDetl.setOrderDetlId(waveSeed.getOrderDetlId());
+            platformDetl.setTaskDetlId(waveSeed.getTaskDetlId());
+            platformDetl.setMatnr(waveSeed.getMatnr());
+            platformDetl.setBatch(waveSeed.getBatch());
+            platformDetl.setFieldParams(waveSeed.getFieldParams());
+            platformDetl.setAnfme(waveSeed.getAnfme());
+            platformDetl.setQty(waveSeed.getWorkQty());
+
+            if (!platformDetlService.save(platformDetl)) {
+                throw new CoolException("闆嗚揣鍖哄煙搴撳瓨鎻掑叆澶辫触");
+            }
+
+
+            WaveSeedLog waveSeedLog = new WaveSeedLog();
+            waveSeedLog.sync(waveSeed);
+            waveSeedLog.setId(null);
+            if (!waveSeedLogService.save(waveSeedLog)) {
+                throw new CoolException("鎾鏁版嵁杞巻鍙插け璐�");
+            }
+
+            if (!waveSeedService.removeById(waveSeed.getId())) {
+                throw new CoolException("鎾鏁版嵁鍒犻櫎澶辫触");
+            }
+        }
+
+        cacheSite.setSiteStatus(CacheSiteStatusType.O.id);
+        cacheSite.setOrderId(null);
+        cacheSite.setOrderNo(null);
+        cacheSite.setPlatformId(null);
+        cacheSite.setPlatformNo(null);
+        cacheSite.setUpdateTime(new Date());
+        if (!this.updateById(cacheSite)) {
+            throw new CoolException("鏇存柊鎾绔欑偣鏁版嵁澶辫触");
+        }
+
+    }
+}

--
Gitblit v1.9.1