From 8f82164ccc074676e995f762a56036face7186fc Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 24 九月 2024 15:00:12 +0800
Subject: [PATCH] #

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java |  182 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 179 insertions(+), 3 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 67e213a..6c0acd9 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,18 +1,194 @@
 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.entity.CacheSite;
-import com.zy.asrs.wms.asrs.service.CacheSiteService;
+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.List;
+import java.util.*;
 
 @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));
+        for (WaveSeed waveSeed : waveSeeds) {
+            Double anfme = stockMap.get(waveSeed.getOrderDetlId());
+            if (anfme == null) {
+                anfme = 0.0D;
+            }
+            anfme += waveSeed.getWorkQty();
+            stockMap.put(waveSeed.getOrderDetlId(), anfme);
+        }
+
+        List<OrderDetl> orderDetls = orderDetlService.getOrderDetlByOrderId(orderId);
+        boolean check = true;
+        for (OrderDetl orderDetl : orderDetls) {
+            Double anfme = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty() - 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