From 2191824072549f0da35d73686a075e59b0196321 Mon Sep 17 00:00:00 2001
From: ZY <zc857179121@qq.com>
Date: 星期三, 25 九月 2024 15:02:25 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wms-dev' into wms-dev
---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java | 186 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 184 insertions(+), 2 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..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,12 +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.*;
@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