From 3217d6f977040632c116293dbe483e0d22712e81 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 13 十一月 2025 18:14:16 +0800
Subject: [PATCH] 拣货功能优化
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java | 61 +++++++++++++++++-------------
1 files changed, 35 insertions(+), 26 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
index aa46ba7..f16250a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
@@ -13,7 +13,7 @@
import com.vincent.rsf.server.manager.enums.WaveRuleType;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.enums.LocStsType;
-import io.swagger.models.auth.In;
+
import org.apache.commons.lang3.StringUtils;
import javax.swing.*;
@@ -156,7 +156,10 @@
DeviceSiteService deviceSiteService = SpringUtils.getBean(DeviceSiteService.class);
List<OrderOutItemDto> list = new ArrayList<>();
- Set<ExistDto> existDtos = new HashSet<>();
+ //涓嶈绔欑偣閲嶅浣跨敤闂
+ List<BasStation> stations = new ArrayList<>();
+ List<ExistDto> existDtos = new ArrayList<>();
+ Set<Loc> locs = new HashSet<>();
for (WaveToLocParams item : params) {
BigDecimal issued = new BigDecimal(item.getAnfme().toString())
.subtract(new BigDecimal(item.getWorkQty().toString()));
@@ -175,7 +178,6 @@
locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme());
}
}
-
for (LocItem locItem : locItems) {
Loc loc = locService.getById(locItem.getLocId());
List<LocItem> itemList = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocCode, locItem.getLocCode()));
@@ -184,39 +186,46 @@
if (existDtos.add(existDto)) {
locItem.setOutQty(issued.doubleValue() >= locItem.getAnfme() ? locItem.getAnfme() : issued.doubleValue());
locItem.setBarcode(loc.getBarcode())
- .setSourceId(item.getWaveId())
- .setSource(item.getItemId());
+ .setSourceId(item.getWaveId())//娉㈡ID
+ .setSource(item.getItemId());//娉㈡鏄庣粏ID
OrderOutItemDto orderOutItemDto = new OrderOutItemDto();
orderOutItemDto.setLocItem(locItem);
-
+ orderOutItemDto.setSource(item.getItemId())
+ .setSourceId(item.getWaveId());
List<DeviceSite> deviceSites = deviceSiteService.list(new LambdaQueryWrapper<DeviceSite>()
.eq(!Objects.isNull(loc.getChannel()), DeviceSite::getChannel, loc.getChannel())
.eq(DeviceSite::getType, issued.doubleValue() >= locItem.getAnfme() && itemList.size() == 1 ? TaskType.TASK_TYPE_OUT.type : TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)
);
- if (!deviceSites.isEmpty()) {
- List<OrderOutItemDto.staListDto> maps = new ArrayList<>();
- for (DeviceSite sta : deviceSites) {
- OrderOutItemDto.staListDto staListDto = new OrderOutItemDto.staListDto();
- staListDto.setStaNo(sta.getSite());
- staListDto.setStaName(sta.getSite());
- maps.add(staListDto);
+ if (locs.add(loc)) {
+ if (!deviceSites.isEmpty()) {
+ List<OrderOutItemDto.staListDto> maps = new ArrayList<>();
+ for (DeviceSite sta : deviceSites) {
+ OrderOutItemDto.staListDto staListDto = new OrderOutItemDto.staListDto();
+ staListDto.setStaNo(sta.getSite());
+ staListDto.setStaName(sta.getSite());
+ maps.add(staListDto);
+ }
+ orderOutItemDto.setStaNos(maps);
+ //鑾峰彇婊¤冻鏉′欢绔欑偣
+ Set<String> stationSet = deviceSites.stream().map(DeviceSite::getSite).collect(Collectors.toSet());
+ //宸蹭娇鐢ㄧ珯鐐�
+ Set<String> stas = stations.stream().map(BasStation::getStationName).collect(Collectors.toSet());
+ BasStationService basStationService = SpringUtils.getBean(BasStationService.class);
+ BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+ .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
+ .in(BasStation::getStationName, stationSet)
+ .notIn(!stas.isEmpty(), BasStation::getStationName, stas)
+ .last("LIMIT 1"));
+ stations.add(basStation);
+
+ if (Objects.isNull(basStation)) {
+ throw new CoolException("绔欓粸涓嶅瓨鍦紒锛�");
+ }
+ orderOutItemDto.setSitesNo(basStation.getStationName());
}
- orderOutItemDto.setStaNos(maps);
- //榛樿鑾峰彇绗竴绔欑偣
- DeviceSite deviceSite = deviceSites.stream().findFirst().get();
- BasStationService basStationService = SpringUtils.getBean(BasStationService.class);
- BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
- .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
- .last("LIMIT 1"));
- if (Objects.isNull(basStation)) {
- throw new CoolException("绔欓粸涓嶅瓨鍦紒锛�");
- }
- orderOutItemDto.setSitesNo(basStation.getStationName());
}
- orderOutItemDto.setSource(item.getItemId())
- .setSourceId(item.getWaveId());
list.add(orderOutItemDto);
--
Gitblit v1.9.1