From d7bb8c43b17253b46c6a466cff5545e8b4bcaad3 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 10 六月 2025 11:10:46 +0800
Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java | 53 +++++++++++++++++++++++++++++++++++------------------
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mcp/McpController.java | 2 +-
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java | 5 ++---
3 files changed, 38 insertions(+), 22 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mcp/McpController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mcp/McpController.java
index f4be3d9..1819d59 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mcp/McpController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mcp/McpController.java
@@ -92,7 +92,7 @@
throw new RuntimeException(e);
}
- return R.ok();
+ return R.ok("浠诲姟鐢熸垚鎴愬姛");
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java
index bb48d74..17feb1e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java
@@ -2,7 +2,6 @@
import com.vincent.rsf.server.manager.entity.LocItem;
import com.vincent.rsf.server.manager.utils.Synchro;
-import io.swagger.annotations.ApiOperation;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@@ -15,8 +14,7 @@
@Accessors(chain = true)
public class OrderOutItemDto {
-
- @Delegate(excludes = Synchro.class)
+ @Delegate(types = LocItem.class)
private LocItem locItem;
private List<staListDto> staNos;
@@ -29,6 +27,7 @@
private String staName;
}
+
public void sync(Object source) {
Synchro.Copy(source, this);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
index 990e9ac..b494ac5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -421,16 +421,13 @@
throw new CoolException("鏈壘鍒板綋鍓嶇瓥鐣�");
}
List<OrderOutItemDto> locItems = null;
- if (WaveRuleType.Efficiency_First.type.equals(waveRule.getType())) {
- locItems = efficiencyFirst(param.getOrderId());
- } else if (WaveRuleType.First_In_First_Out.type.equals(waveRule.getType())) {
-
- }
+ locItems = getOutOrderList(param.getOrderId(), waveRule);
return R.ok(locItems);
}
/**
* 鐢熸垚鍑哄簱浠诲姟
+ *
* @param params
* @return
*/
@@ -474,10 +471,11 @@
return R.ok();
}
+
private List<LocItem> getEfficiencyFirstItemList(AsnOrderItem asnOrderItem) {
- QueryWrapper<LocItem> locItemQueryWrapper = new QueryWrapper<>();
- locItemQueryWrapper.eq("matnr_code", asnOrderItem.getMatnrCode());
- locItemQueryWrapper.eq("batch", asnOrderItem.getSplrBatch());
+ LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>();
+ locItemQueryWrapper.eq(LocItem::getMatnrCode, asnOrderItem.getMatnrCode());
+ locItemQueryWrapper.eq(LocItem::getBatch, asnOrderItem.getSplrBatch());
String applySql = String.format(
"EXISTS (SELECT 1 FROM man_loc ml " +
"WHERE ml.use_status = '%s'" +
@@ -487,18 +485,34 @@
);
locItemQueryWrapper.apply(applySql);
List<LocItem> locItems = locItemService.list(locItemQueryWrapper);
- locItems.sort((s1, s2) -> LocUtils.isShallowLoc(s1.getLocCode()) ? -1 : 0);
+ locItems.sort(Comparator
+ .comparing((LocItem item) -> !LocUtils.isShallowLoc(item.getLocCode()))
+ );
return locItems;
}
- private List<OrderOutItemDto> efficiencyFirst(Long orderId) {
+ private List<LocItem> getFirstInFirstOutItemList(AsnOrderItem asnOrderItem) {
+ LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>();
+ locItemQueryWrapper.eq(LocItem::getMatnrCode, asnOrderItem.getMatnrCode());
+ locItemQueryWrapper.eq(LocItem::getBatch, asnOrderItem.getSplrBatch());
+ locItemQueryWrapper.orderByAsc(LocItem::getCreateTime);
+ String applySql = String.format(
+ "EXISTS (SELECT 1 FROM man_loc ml " +
+ "WHERE ml.use_status = '%s'" +
+ "AND ml.id = man_loc_item.loc_id " +
+ ")",
+ LocStsType.LOC_STS_TYPE_F.type
+ );
+ locItemQueryWrapper.apply(applySql);
+ List<LocItem> locItems = locItemService.list(locItemQueryWrapper);
+ return locItems;
+ }
+
+ private List<OrderOutItemDto> getOutOrderList(Long orderId, WaveRule waveRule) {
List<AsnOrderItem> asnOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>()
.eq(AsnOrderItem::getAsnId, orderId)
);
-
List<OrderOutItemDto> list = new ArrayList<>();
-
- Set<String> exist = new HashSet<>();
Set<ExistDto> existDtos = new HashSet<>();
for (AsnOrderItem asnOrderItem : asnOrderItems) {
@@ -509,7 +523,13 @@
continue;
}
List<LocItem> locItems = null;
- locItems = getEfficiencyFirstItemList(asnOrderItem);
+ if (WaveRuleType.Efficiency_First.type.equals(waveRule.getType())) {
+ locItems = getEfficiencyFirstItemList(asnOrderItem);
+ } else if (WaveRuleType.First_In_First_Out.type.equals(waveRule.getType())) {
+ locItems = getFirstInFirstOutItemList(asnOrderItem);
+ } else {
+ locItems = getFirstInFirstOutItemList(asnOrderItem);
+ }
for (LocItem locItem : locItems) {
Loc loc = locService.getById(locItem.getLocId());
List<LocItem> itemList = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocCode, locItem.getLocCode()));
@@ -520,14 +540,11 @@
locItem.setBarcode(loc.getBarcode());
OrderOutItemDto orderOutItemDto = new OrderOutItemDto();
orderOutItemDto.setLocItem(locItem);
+
List<DeviceSite> deviceSites = deviceSiteService.list(new LambdaQueryWrapper<DeviceSite>()
.eq(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()) {
- DeviceSite deviceSite = deviceSites.stream().findFirst().get();
- orderOutItemDto.setSiteNo(deviceSite.getSite());
- }
List<OrderOutItemDto.staListDto> maps = new ArrayList<>();
for (DeviceSite sta : deviceSites) {
OrderOutItemDto.staListDto staListDto = new OrderOutItemDto.staListDto();
--
Gitblit v1.9.1