From 3cb931b3799846e1b8ef708da6c447bb9a9e0a0e Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期一, 15 十二月 2025 11:17:41 +0800
Subject: [PATCH] 并板出库功能优化
---
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 51 +++++++++++++++++++++++++++++----------------------
1 files changed, 29 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index c39967e..d309d42 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -6,8 +6,6 @@
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.*;
import com.core.exception.CoolException;
-import com.zy.api.enums.MatLocType;
-import com.zy.api.enums.MatType;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.FindLocNoAttributeVo;
@@ -29,7 +27,6 @@
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.MesCombParam;
import com.zy.common.model.StartupDto;
-import com.zy.common.model.enums.IoWorkType;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
@@ -1655,7 +1652,7 @@
throw new CoolException("缁勬墭鐗╂枡绫诲瀷涓嶄竴鑷达紝鍙湁鐩稿悓鐨勭墿鏂欏垎绫绘墠鍙互缁勬墭锛侊紒");
}
// 杩樺彲浠ユ斁鍏ュ灏戠鐗╂枡
- Integer suplus = container.getMixMax();
+ Double suplus = container.getMixMax();
Date now = new Date();
for (DetlDto detlDto : detlDtos) {
Mat mat = matService.selectByMatnr(detlDto.getMatnr());
@@ -1723,6 +1720,19 @@
if (v1.compareTo(stationDetl.getAnfme()) >= 0) {
if (!basStationDetlService.deleteById(stationDetl)) {
throw new CoolException("鍘熷鏁版嵁绉婚櫎澶辫触锛�");
+ }
+ }
+
+ List<BasStationDetl> stas = basStationDetlService.selectList(new EntityWrapper<BasStationDetl>()
+ .eq("dev_no", stationDetl.getDevNo()));
+ if (Objects.isNull(stas) || stas.isEmpty()) {
+ BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", stationDetl.getDevNo()));
+ if (Objects.isNull(station)) {
+ throw new CoolException("鏁版嵁閿欒锛岀珯鐐逛笉瀛樺湪锛侊紒");
+ }
+ station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+ if (!basStationService.updateById(station)) {
+ throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
}
}
}
@@ -2065,13 +2075,14 @@
BasDevp basDevp = devps.stream().findFirst().get();
List<LocMast> locMasts = new ArrayList<>();
Map<String, List<LocDetl>> listMap = locDetls.stream().collect(Collectors.groupingBy(LocDetl::getMatnr));
- AtomicReference<Double> totalOut = new AtomicReference<>(
- locDetls.stream().mapToDouble(LocDetl::getAnfme).sum());
+ //鑾峰彇鏌ュ簱瀛樻�绘暟閲�
+ AtomicReference<Double> totalOut = new AtomicReference<>(0.0);
listMap.forEach((matnr, detls) -> {
- // 鏍规嵁supId(渚涘簲鍟�)鍒嗙被锛屽緱鍒板嚭搴撴�绘暟
Map<String, List<LocDetl>> supIds = detls.stream().collect(Collectors.groupingBy(LocDetl::getStandby1));
supIds.forEach((supId, sups) -> {
+ // 鏍规嵁supId(渚涘簲鍟�)鍒嗙被锛屽緱鍒伴渶瑕佸瓨鏀剧殑鎬荤┖搴撳瓨鏁伴噺
Double sum = sups.stream().mapToDouble(LocDetl::getAnfme).sum();
+ AtomicReference<Double> itemed = new AtomicReference<>(0.0);
// 鑾峰彇褰撳墠渚涘簲鍟�+ 鐗╂枡鍦ㄥ簱
List<LocDetl> detlList = locDetlService.selectList(new EntityWrapper<LocDetl>()
.eq("matnr", matnr)
@@ -2094,17 +2105,20 @@
Set<String> sets = adetls.stream().map(LocDetl::getMatnr).collect(Collectors.toSet());
// 鍒ゆ柇瀹瑰櫒鏄惁杩樺彲娣锋斁,鍙婂綋鍓嶇墿鏂欏彲鏀惧灏�
if (container.getMixMax() > sets.size()) {
- int suplus = container.getMixMax() - sets.size();
+ //浣欎笅鍙贩鏀剧绫�
+ long suplus = Math.round((container.getMixMax() - sets.size()) * 10000) / 10000;
Mat mats = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", matnr));
if (Objects.isNull(mats)) {
throw new CoolException("鐗╂枡涓嶅瓨鍦紒锛�");
}
- Double v = mats.getUpQty() * suplus;
- // 灏忎簬闆�
- if (sum.compareTo(v) <= 0) {
+ //浣欎笅鏈�澶у彲鏀炬暟閲�
+ Double v = Math.round((mats.getUpQty() * suplus) * 10000) / 10000.0;
+ // 鍏ュ簱鏁伴噺灏忎簬闆朵笖鍏ュ簱鏁伴噺鍑忓幓宸插嚭鏁伴噺澶т簬闆讹紙锛�
+ if (sum.compareTo(v) <= 0 && sum.compareTo(itemed.get()) > 0) {
+ itemed.set(Math.round((itemed.get() + v) * 10000) / 10000.0);
// 鍙斁涓�
locMasts.add(locMast);
- totalOut.set(Math.round((totalOut.get() - sum) * 10000) / 10000.0);
+ totalOut.set(Math.round((totalOut.get() + itemed.get()) * 10000) / 10000.0);
}
}
});
@@ -2114,10 +2128,9 @@
// 鍒ゆ柇鏍规嵁鍒嗘嫞鍑哄簱鍚�,杩橀渶瑕佸嚭澶氬皯鎵樼洏鎴栨枡绠�;濡傛灉浣欐枡澶т簬0, 鍑烘柊鎵樼洏鎴栨枡绠�
if (totalOut.get().compareTo(0.0) > 0) {
- // Set<String> matnrs =
- // locDetls.stream().map(LocDetl::getMatnr).collect(Collectors.toSet());
- // List<Mat> mats = matService.selectList(new EntityWrapper<Mat>().in("matnr",
- // matnrs));
+ generateTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId);
+ //TODO 缁嗗寲鍖哄垎锛屽綋鍓嶅嚭搴撴墭鐩樻槸婊炴弧瓒虫嫞璐ф暟閲�
+ } else {
LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
// todo 鏍规嵁鐗╂枡绉嶇被,鍖哄垎搴撳尯绫诲瀷
.eq("loc_sts", LocStsType.LOC_STS_TYPE_D.type)
@@ -2126,12 +2139,6 @@
locMasts.add(locMast);
// 绌烘澘鍑哄簱
generateTask(locMasts, TaskIOType.EMPTY_OUT.type, basDevp, userId);
- } else {
- // 鐢熸垚鍫嗗灈鏈哄嚭搴撲换鍔�
- generateTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId);
- // if (!locMasts.isEmpty()) {
- //
- // }
}
}
--
Gitblit v1.9.1