From b71ca6faa130dbd9baed68d1402365ccc63e79c2 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期三, 15 四月 2026 16:38:26 +0800
Subject: [PATCH] lsh#
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java | 1
asrs-schedule/src/main/java/com/vincent/rsf/schedule/api/entity/constant/RcsConstant.java | 1
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java | 16 +++++--
asrs-schedule/src/main/java/com/vincent/rsf/schedule/api/service/impl/ReportMsgServiceImpl.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java | 77 ++++++++++++++++++++++++++++++++++++--
5 files changed, 87 insertions(+), 10 deletions(-)
diff --git a/asrs-schedule/src/main/java/com/vincent/rsf/schedule/api/entity/constant/RcsConstant.java b/asrs-schedule/src/main/java/com/vincent/rsf/schedule/api/entity/constant/RcsConstant.java
index bb42c7b..cc4c988 100644
--- a/asrs-schedule/src/main/java/com/vincent/rsf/schedule/api/entity/constant/RcsConstant.java
+++ b/asrs-schedule/src/main/java/com/vincent/rsf/schedule/api/entity/constant/RcsConstant.java
@@ -10,6 +10,7 @@
//涓婃姤璁㈠崟淇℃伅
public static String REPORT_ORDERS = "/rsf-open-api/erp/report/order";
+ public static String REPORT_ORDERS_NEW = "/rsf-open-api/erp/report/order/new";
public static String REPORT_TASKS = "/rsf-open-api/mes/reportTaskExecute";
diff --git a/asrs-schedule/src/main/java/com/vincent/rsf/schedule/api/service/impl/ReportMsgServiceImpl.java b/asrs-schedule/src/main/java/com/vincent/rsf/schedule/api/service/impl/ReportMsgServiceImpl.java
index cd3af17..635c1a8 100644
--- a/asrs-schedule/src/main/java/com/vincent/rsf/schedule/api/service/impl/ReportMsgServiceImpl.java
+++ b/asrs-schedule/src/main/java/com/vincent/rsf/schedule/api/service/impl/ReportMsgServiceImpl.java
@@ -193,7 +193,7 @@
throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
/**WMS鍩虹閰嶇疆閾炬帴*/
- String rcsUrl = rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.REPORT_ORDERS;
+ String rcsUrl = rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.REPORT_ORDERS_NEW;
log.info("涓婃姤宸插畬鎴愯鍗曪細{}锛� 璇锋眰鍙傛暟锛� {}", rcsUrl, JSONObject.toJSONString(params));
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
index e6f051c..f2dec87 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -301,6 +301,7 @@
.setSourceId(item.getLocId())
.setSourceCode(item.getLocCode());
}
+ taskItem.setId(null);
taskItems.add(taskItem);
Double qty = Math.round((item.getWorkQty() + item.getOutQty()) * 10000) / 10000.0;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java
index 218fa07..2629327 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java
@@ -66,8 +66,9 @@
if (Objects.isNull(itemParams) || itemParams.isEmpty()) {
throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
- String waveId = map.get("wave").toString();
- Wave waves = this.getById(Long.parseLong(waveId));
+// Wave waveId = (Wave) map.get("wave");
+ Wave wave = JSON.parseObject(JSON.toJSONString(map.get("wave")), Wave.class);
+ Wave waves = this.getById(wave.getId());
if (Objects.isNull(waves)) {
throw new CoolException("娉㈡鏁版嵁涓嶅瓨鍦紒锛�");
}
@@ -390,13 +391,18 @@
private List<WaveItem> getLocs(List<WaveItem> waveItems) throws Exception {
//TODO 鏍规嵁鐗╂枡缂栫爜锛屾壒娆★紝鍔ㄦ�佸瓧娈� 鏌ヨ绗﹀悎鐨勫簱浣嶏紝鍐嶆牴鎹簱浣嶄腑鐗╂枡鐨勬暟閲忛�夋嫨鏈�閫傚悎鐨勫簱浣�
waveItems.forEach(waveItem -> {
- List<LocItem> locItems = locItemService.list(new QueryWrapper<LocItem>()
+ LambdaQueryWrapper<LocItem> locItemLambdaQueryWrapper = new QueryWrapper<LocItem>()
.select("id", "loc_id", "loc_code", "order_id", "SUM(anfme) anfme", "SUM(qty) qty", "SUM(work_qty) work_qty", "splr_batch", "fields_index", "matnr_code")
.lambda()
.eq(LocItem::getMatnrCode, waveItem.getMatnrCode())
.eq(LocItem::getSplrBatch, waveItem.getSplrBatch())
- .eq(StringUtils.isNotBlank(waveItem.getFieldsIndex()), LocItem::getFieldsIndex, waveItem.getFieldsIndex())
- .groupBy(LocItem::getMatnrCode, LocItem::getSplrBatch, LocItem::getFieldsIndex, LocItem::getId));
+ .eq(StringUtils.isNotBlank(waveItem.getFieldsIndex()), LocItem::getFieldsIndex, waveItem.getFieldsIndex());
+ Wave wave = this.getById(waveItem.getWaveId());
+ if (!Cools.isEmpty(wave.getLocCode())) {
+ locItemLambdaQueryWrapper.eq(LocItem::getLocCode, wave.getLocCode());
+ }
+ locItemLambdaQueryWrapper.groupBy(LocItem::getMatnrCode, LocItem::getSplrBatch, LocItem::getFieldsIndex, LocItem::getId);
+ List<LocItem> locItems = locItemService.list(locItemLambdaQueryWrapper);
List<Double> doubles1 = locItems.stream().map(LocItem::getAnfme).collect(Collectors.toList());
double[] doubles = doubles1.stream().mapToDouble(Double::doubleValue).toArray();
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 f5d8e89..9bcebaa 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
@@ -124,6 +124,39 @@
return locItems;
}
+ /**
+ * 鍑哄簱绛栫暐锛�--銆堟晥鐜囦紭鍖栥��
+ *
+ * @param matnrCode
+ * @param splrBatch
+ * @param anfme
+ * @return
+ */
+ public static List<LocItem> getEfficiencyFirstItemList(String matnrCode, String splrBatch, Double anfme,String locCode) {
+ LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>();
+ locItemQueryWrapper.eq(LocItem::getMatnrCode, matnrCode);
+ if (!Cools.isEmpty(locCode)){
+ locItemQueryWrapper.eq(LocItem::getLocCode, locCode);
+ }
+ locItemQueryWrapper.eq(StringUtils.isNotBlank(splrBatch), LocItem::getBatch, splrBatch);
+ 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);
+ LocItemService locItemService = SpringUtils.getBean(LocItemService.class);
+ List<LocItem> locItems = locItemService.list(locItemQueryWrapper);
+ locItems.sort(Comparator.comparing((LocItem item) -> !LocUtils.isShallowLoc(item.getLocCode())));
+ List<LocItem> locsSet = locItems.stream().filter(locItem -> locItem.getAnfme().compareTo(anfme) == 0.0).collect(Collectors.toList());
+ if (!locsSet.isEmpty()) {
+ return locsSet;
+ }
+ return locItems;
+ }
+
/**
* 鍑哄簱绛栫暐锛�--<鍏堣繘鍏堝嚭>
@@ -136,6 +169,41 @@
public static List<LocItem> getFirstInFirstOutItemList(String matnrCode, String splrBatch, Double anfme) {
LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>();
locItemQueryWrapper.eq(LocItem::getMatnrCode, matnrCode);
+ locItemQueryWrapper.eq(StringUtils.isNotEmpty(splrBatch), LocItem::getBatch, splrBatch);
+ //濡傛灉鎵规涓嶄负绌猴紝鎸夋壒娆″厛鍚庡嚭搴�
+ if (StringUtils.isNotBlank(splrBatch)) {
+ locItemQueryWrapper.orderByAsc(LocItem::getBatch);
+ } else {
+ 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);
+ LocItemService locItemService = SpringUtils.getBean(LocItemService.class);
+ List<LocItem> locItems = locItemService.list(locItemQueryWrapper);
+ return locItems;
+ }
+
+
+ /**
+ * 鍑哄簱绛栫暐锛�--<鍏堣繘鍏堝嚭>
+ *
+ * @param matnrCode
+ * @param splrBatch
+ * @param anfme
+ * @return
+ */
+ public static List<LocItem> getFirstInFirstOutItemList(String matnrCode, String splrBatch, Double anfme,String locCode) {
+ LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>();
+ locItemQueryWrapper.eq(LocItem::getMatnrCode, matnrCode);
+ if (!Cools.isEmpty(locCode)){
+ locItemQueryWrapper.eq(LocItem::getLocCode, locCode);
+ }
locItemQueryWrapper.eq(StringUtils.isNotEmpty(splrBatch), LocItem::getBatch, splrBatch);
//濡傛灉鎵规涓嶄负绌猴紝鎸夋壒娆″厛鍚庡嚭搴�
if (StringUtils.isNotBlank(splrBatch)) {
@@ -180,14 +248,14 @@
}
List<LocItem> locItems;
if (Objects.isNull(waveRule)) {
- locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme());
+ locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme(),locCode);
} else {
if (WaveRuleType.Efficiency_First.type.equals(waveRule.getType())) {
- locItems = LocManageUtil.getEfficiencyFirstItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme());
+ locItems = LocManageUtil.getEfficiencyFirstItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme(),locCode);
} else if (WaveRuleType.First_In_First_Out.type.equals(waveRule.getType())) {
- locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme());
+ locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme(),locCode);
} else {
- locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme());
+ locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme(),locCode);
}
}
for (LocItem locItem : locItems) {
@@ -233,6 +301,7 @@
.apply("cross_zone_area != '[]'") // 涓嶆槸绌烘暟缁�
.apply("container_type != '[]'")
.apply("station_alias != '[]'")
+ .apply("station_alias_sta_no != '[]'")
.apply("JSON_CONTAINS(cross_zone_area, {0}) = 1", loc.getAreaId().toString())//鍙墽琛屽簱鍖哄尯鍖哄煙id
.apply("JSON_CONTAINS(container_type, {0}) = 1", containerType.getContainerType().toString())//瀹瑰櫒绫诲瀷
.eq(BasStationArea::getDeleted, 0));
--
Gitblit v1.9.1