From adb83050b74c2d7fa1845f18e016ef3b18496543 Mon Sep 17 00:00:00 2001
From: zc <zyzc>
Date: 星期三, 22 十月 2025 17:15:43 +0800
Subject: [PATCH] pda波次揀貨優化 放貨成功上報優化 出入庫站點功能優化
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java | 70 ++++++++++++++++++++++++++++-------
1 files changed, 56 insertions(+), 14 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 ccad70d..aa46ba7 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
@@ -2,15 +2,19 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.SpringUtils;
+import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.utils.LocUtils;
import com.vincent.rsf.server.manager.controller.dto.ExistDto;
import com.vincent.rsf.server.manager.controller.dto.OrderOutItemDto;
import com.vincent.rsf.server.manager.controller.params.WaveToLocParams;
import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.ContainerType;
import com.vincent.rsf.server.manager.enums.TaskType;
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.*;
import java.math.BigDecimal;
@@ -20,21 +24,48 @@
public class LocManageUtil {
/**
- * @author Ryan
- * @description 鑾峰彇鐩爣搴撲綅, 鍖呭惈搴撲綅鑾峰彇绛栫暐
* @param
* @return
+ * @author Ryan
+ * @description 鑾峰彇鐩爣搴撲綅, 鍖呭惈搴撲綅鑾峰彇绛栫暐
* @time 2025/3/31 08:50
*/
public static String getTargetLoc(Long areaId) {
//TODO 搴撲綅绛栫暐鍚庣画鎺掓湡
+
+ return getTargetLoc(areaId, null);
+ }
+
+ public static String getTargetLoc(Long areaId, Long containerType) {
+ Long locType = null;
+ if (!Objects.isNull(containerType)) {
+ LocTypeService locService = SpringUtils.getBean(LocTypeService.class);
+ if (containerType.equals(ContainerType.CONTAINER_TYPE_NORMAL.val)) {
+ LocType low = locService.getOne(new LambdaQueryWrapper<LocType>()
+ .eq(LocType::getCode, "L"));
+ if (Objects.isNull(low)) {
+ throw new CoolException("搴綅椤炲瀷涓嶅瓨鍦紒锛�");
+ }
+ locType = low.getId();
+ } else {
+ LocType low = locService.getOne(new LambdaQueryWrapper<LocType>()
+ .eq(LocType::getCode, "H"));
+ if (Objects.isNull(low)) {
+ throw new CoolException("搴綅椤炲瀷涓嶅瓨鍦紒锛�");
+ }
+ locType = low.getId();
+ }
+ }
+ //TODO 搴撲綅绛栫暐鍚庣画鎺掓湡
LocService locService = SpringUtils.getBean(LocService.class);
Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>()
+ .eq(!Objects.isNull(locType), Loc::getType, locType)
.eq(Loc::getAreaId, areaId)
+ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.orderByAsc(Loc::getLev)
.orderByAsc(Loc::getCol)
.orderByAsc(Loc::getRow)
- .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type), false
+ .last("LIMIT 1")
);
return !Objects.isNull(loc) ? loc.getCode() : null;
@@ -42,12 +73,12 @@
/**
- * @author Ryan
- * @description 鑾峰彇鐩爣绔欑偣
- * @param
- * @return
- * @time 2025/3/31 09:49
- */
+ * @param
+ * @return
+ * @author Ryan
+ * @description 鑾峰彇鐩爣绔欑偣
+ * @time 2025/3/31 09:49
+ */
public static String getTargetSite() {
//TODO 绔欑偣绛栫暐鍚庣画鎺掓湡
DeviceSiteService deviceSite = SpringUtils.getBean(DeviceSiteService.class);
@@ -57,6 +88,7 @@
/**
* 鍑哄簱绛栫暐锛�--銆堟晥鐜囦紭鍖栥��
+ *
* @param matnrCode
* @param splrBatch
* @param anfme
@@ -65,7 +97,7 @@
public static List<LocItem> getEfficiencyFirstItemList(String matnrCode, String splrBatch, Double anfme) {
LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>();
locItemQueryWrapper.eq(LocItem::getMatnrCode, matnrCode);
- locItemQueryWrapper.eq(LocItem::getBatch, splrBatch);
+ locItemQueryWrapper.eq(StringUtils.isNotBlank(splrBatch), LocItem::getBatch, splrBatch);
String applySql = String.format(
"EXISTS (SELECT 1 FROM man_loc ml " +
"WHERE ml.use_status = '%s'" +
@@ -87,6 +119,7 @@
/**
* 鍑哄簱绛栫暐锛�--<鍏堣繘鍏堝嚭>
+ *
* @param matnrCode
* @param splrBatch
* @param anfme
@@ -95,7 +128,7 @@
public static List<LocItem> getFirstInFirstOutItemList(String matnrCode, String splrBatch, Double anfme) {
LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>();
locItemQueryWrapper.eq(LocItem::getMatnrCode, matnrCode);
- locItemQueryWrapper.eq(LocItem::getBatch, splrBatch);
+ locItemQueryWrapper.eq(StringUtils.isNotEmpty(splrBatch), LocItem::getBatch, splrBatch);
locItemQueryWrapper.orderByAsc(LocItem::getCreateTime);
String applySql = String.format(
"EXISTS (SELECT 1 FROM man_loc ml " +
@@ -112,6 +145,7 @@
/**
* 鑾峰彇鍑哄簱搴撲綅淇℃伅
+ *
* @param params
* @param waveRule
* @return
@@ -156,7 +190,7 @@
orderOutItemDto.setLocItem(locItem);
List<DeviceSite> deviceSites = deviceSiteService.list(new LambdaQueryWrapper<DeviceSite>()
- .eq(DeviceSite::getChannel, loc.getChannel())
+ .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)
);
@@ -171,10 +205,18 @@
orderOutItemDto.setStaNos(maps);
//榛樿鑾峰彇绗竴绔欑偣
DeviceSite deviceSite = deviceSites.stream().findFirst().get();
- orderOutItemDto.setSiteNo(deviceSite.getSite());
+ 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());
+ orderOutItemDto.setSource(item.getItemId())
+ .setSourceId(item.getWaveId());
list.add(orderOutItemDto);
--
Gitblit v1.9.1