From 9219e85f544780fa955945fc6c0c63e08d862ce3 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 03 七月 2025 16:43:55 +0800
Subject: [PATCH] 出库优先先进先出
---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java | 91 ++++++++++++++++++++++++++++-----------------
1 files changed, 56 insertions(+), 35 deletions(-)
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
index b60555e..26e4738 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
@@ -1,15 +1,13 @@
package com.zy.asrs.wms.asrs.manage;
import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mysql.cj.util.StringUtils;
import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wms.asrs.entity.*;
import com.zy.asrs.wms.asrs.entity.dto.*;
-import com.zy.asrs.wms.asrs.entity.dto.OrderOutMergeDto;
import com.zy.asrs.wms.asrs.entity.enums.*;
import com.zy.asrs.wms.asrs.entity.param.*;
-import com.zy.asrs.wms.asrs.entity.*;
import com.zy.asrs.wms.asrs.service.*;
import com.zy.asrs.wms.utils.OrderUtils;
import com.zy.asrs.wms.utils.OutUtils;
@@ -25,7 +23,6 @@
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
/**
* 鍑哄簱绠$悊
@@ -555,12 +552,17 @@
List<MergePreviewResultDto> resultDtos = new ArrayList<>();
//浼樺厛鏌ヨ骞冲簱鏁版嵁
param.forEach(pars -> {
+ if (pars.getStatus() == 1) {
+ return;
+ }
List<MergePreviewResultLocDto> locDtos = new ArrayList<>();
MergePreviewResultDto resultDto = new MergePreviewResultDto();
resultDto.sync(pars);
resultDto.setOrderIds(pars.getOrderIds());
+ //鎬婚渶姹傛暟閲�
+ resultDto.setAnfme(pars.getAnfme());
resultDto.setLocs(locDtos);
-
+ //鏌ヨ骞冲簱涓鍚堟潯浠剁殑搴撳瓨
List<LocDetl> locs = locDetlService.queryFlatStock(pars.getMatnr(), pars.getBatch(), pars.getFieldParams());
if (!locs.isEmpty()) {
double anfme = pars.getAnfme() - pars.getWorkQty();
@@ -578,44 +580,61 @@
locDto.setLocNo(detl.getLocNo());
locDto.setTypeId(LocAreaTypeSts.LOC_AREA_TYPE_FLAT.id);
locDto.setLocDetlId(detl.getId());
-
+ locDto.setAnfme(detl.getAnfme());
+ locDto.setWorkQty(detl.getWorkQty());
locDtos.add(locDto);
//搴撲綅瀹為檯鍙敤鏁伴噺
- double surplusQty = detl.getAnfme() - detl.getWorkQty();
+ Double surplusQty = Math.round((detl.getAnfme() - detl.getWorkQty()) * 10000) / 10000.0;
+ if (surplusQty <= 0) {
+ continue;
+ }
//娉㈡鏁伴噺鍑忓幓搴撲綅鍙敤鏁伴噺鍚庯紝鐩堜綑鏁伴噺
anfme = anfme - surplusQty;
if (anfme > 0) {
- locDto.setAnfme(detl.getAnfme());
- locDto.setWorkQty(surplusQty);
+ //褰撳墠鍙娇鐢ㄦ暟閲�
+ resultDto.setFetchQty(surplusQty);
+ //浣欎笅闇�姹傛暟閲�
+ pars.setStatus(2);
+ pars.setWorkQty(pars.getWorkQty() + surplusQty);
+ pars.setAnfme(anfme);
} else {
- locDto.setAnfme(pars.getAnfme() - pars.getWorkQty());
- locDto.setWorkQty(pars.getAnfme() - pars.getWorkQty());
+ //褰撳墠浣跨敤鏁伴噺
+ resultDto.setFetchQty(pars.getAnfme());
+ //浣欎笅闇�姹�
+ pars.setWorkQty(pars.getWorkQty() + pars.getAnfme());
+ pars.setStatus(1);
+ pars.setAnfme(0.0);
break;
}
}
- //淇濆瓨鍑哄簱鏁伴噺锛堝钩搴擄級
- pars.setWorkQty(pars.getAnfme() - pars.getWorkQty() - anfme);
- resultDto.setOtherLocs(new ArrayList<>());
+ if (!Objects.isNull(resultDto.getFetchQty()) && !(new BigDecimal(resultDto.getFetchQty()).compareTo(new BigDecimal("0.00")) == 0)) {
+ resultDto.setOtherLocs(new ArrayList<>());
- resultDto.setAnfme(pars.getAnfme());
+ resultDto.setType(LocAreaTypeSts.LOC_AREA_TYPE_FLAT.desc);
- resultDtos.add(resultDto);
-
+ resultDtos.add(resultDto);
+ }
}
});
+
//骞冲簱鏌ヨ瀹屾垚鍚庯紝鍐嶆煡璇CU
for (MergePreviewDto dto : param) {
- Double anfme = dto.getAnfme() - dto.getWorkQty();
- //鍑忓幓骞冲簱鏁伴噺鍚庯紝灏忎簬绛変簬0锛岃烦鍑哄鐞�
- if (anfme <= 0) {
+ //鍗曟嵁宸插畬鎴愶紝璺冲嚭
+ if (dto.getStatus() == 1) {
continue;
}
+// Double anfme = dto.getAnfme() - dto.getWorkQty();
+// //鍑忓幓骞冲簱鏁伴噺鍚庯紝灏忎簬绛変簬0锛岃烦鍑哄鐞�
+// if (anfme <= 0) {
+// continue;
+// }
List<LocDetl> locDetls = locDetlService.queryStock(dto.getMatnr(), dto.getBatch(), dto.getFieldParams(), sortParams);
if (locDetls.isEmpty()) {
MergePreviewResultDto resultDto = new MergePreviewResultDto();
resultDto.sync(dto);
resultDto.setLocs(new ArrayList<>());
+ resultDto.setType(LocAreaTypeSts.LOC_AREA_TYPE_UTC.desc);
resultDto.setOrderIds(dto.getOrderIds());
resultDto.setAnfme(dto.getAnfme());
resultDtos.add(resultDto);
@@ -627,7 +646,7 @@
MergePreviewResultDto resultDto = new MergePreviewResultDto();
resultDto.sync(dto);
resultDto.setOrderIds(dto.getOrderIds());
-// Double anfme = dto.getAnfme();
+ Double anfme = dto.getAnfme();
resultDto.setLocs(locDtos);
for (LocDetl locDetl : locDetls) {
Loc loc = locService.getById(locDetl.getLocId());
@@ -675,6 +694,8 @@
resultDto.setOtherLocs(otherLocDtos);
resultDto.setAnfme(dto.getAnfme());
+
+ resultDto.setType(LocAreaTypeSts.LOC_AREA_TYPE_UTC.desc);
resultDtos.add(resultDto);
}
@@ -914,9 +935,9 @@
/**
* 娉㈡鍚堝苟鍑哄簱
- * 1. 鍒ゆ柇鏄钩搴撹繕TCU搴�
+ * 1. 鍒ゆ柇鏄钩搴撹繕CTU搴�
* 2. 骞冲簱鐢熸垚鎷h揣鍗�
- * 3. TCU搴撶敓鎴愪换鍔″崟
+ * 3. CTU搴撶敓鎴愪换鍔″崟
*/
outStockByArea(dto, wave);
@@ -1028,12 +1049,10 @@
//骞冲簱鍑哄簱
outStockByFlat(flatOrders, wave);
}
-
if (!tucOrders.isEmpty()) {
//CTU鍑哄簱
outStockByTUC(tucOrders, wave);
}
-
}
/**
@@ -1132,7 +1151,8 @@
throw new CoolException("褰撳墠娉㈡璁㈠崟涓嶅瓨鍦紒锛�");
}
- List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id).orderByAsc(CacheSite::getChannel));
+ List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>()
+ .eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id).eq(CacheSite::getChannel,task.getTargetSite()));
if (cacheSites.isEmpty()) {
throw new CoolException("缂撳瓨绔欑┖闂翠笉瓒筹紝璇风◢鍚庡啀璇�");
@@ -1147,6 +1167,7 @@
cacheSite.setOrderId(orders.get(i).getId());
cacheSite.setOrderNo(orders.get(i).getOrderNo());
cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
+ cacheSite.setBarcode(loc.getBarcode());
cacheSite.setUpdateTime(new Date());
if (!cacheSiteService.updateById(cacheSite)) {
throw new CoolException("缂撳瓨绔欐洿鏂板け璐�");
@@ -1410,15 +1431,15 @@
}
CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, order.getId()));
- if (cacheSite == null) {
- throw new CoolException("缂撳瓨绔欎笉瀛樺湪");
- }
- cacheSite.setSiteStatus(CacheSiteStatusType.O.id);
- cacheSite.setOrderId(null);
- cacheSite.setOrderNo(null);
- cacheSite.setUpdateTime(new Date());
- if (!cacheSiteService.updateById(cacheSite)) {
- throw new CoolException("缂撳瓨绔欐竻绌哄け璐�");
+ if (cacheSite != null) {
+ cacheSite.setSiteStatus(CacheSiteStatusType.O.id);
+ cacheSite.setOrderId(null);
+ cacheSite.setOrderNo(null);
+ cacheSite.setBarcode(null);
+ cacheSite.setUpdateTime(new Date());
+ if (!cacheSiteService.updateById(cacheSite)) {
+ throw new CoolException("缂撳瓨绔欐竻绌哄け璐�");
+ }
}
}
--
Gitblit v1.9.1