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/service/impl/TaskServiceImpl.java | 13 ++++-- rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java | 7 +-- rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java | 60 +++++++++++++++++++++++++----- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 2 5 files changed, 64 insertions(+), 20 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java index 4231b53..98ddf08 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java @@ -12,6 +12,7 @@ import com.vincent.rsf.server.manager.enums.TaskStsType; import com.vincent.rsf.server.manager.service.*; import lombok.Synchronized; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -125,14 +126,12 @@ for (WkOrder wkOrder : wkOrderList) { WkOrderItem orderItem = asnOrderItemService.getOne(new LambdaQueryWrapper<WkOrderItem>() .eq(WkOrderItem::getOrderId, wkOrder.getId()) - .eq(WkOrderItem::getMatnrCode, taskItem.getMatnrCode()) - .eq(WkOrderItem::getSplrBatch, taskItem.getBatch()) + .eq(StringUtils.isNotEmpty(taskItem.getMatnrCode()), WkOrderItem::getMatnrCode, taskItem.getMatnrCode()) + .eq(StringUtils.isNotEmpty(taskItem.getBatch()), WkOrderItem::getSplrBatch, taskItem.getBatch()) ); if (null != orderItem) { list.add(orderItem); } - - } containerWaveDto.setWkOrderItems(list); containerWaveDtos.add(containerWaveDto); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java index 8b917c4..e7d2bc5 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java @@ -531,7 +531,7 @@ if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode()) .lt(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id) - .set(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id))) { + .set(Task::getTaskStatus, TaskStsType.AWAIT.id))) { throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�"); } } 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 cd79ed4..cf4b173 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 @@ -18,7 +18,7 @@ private List<staListDto> staNos; - private String siteNo; + private String sitesNo; private String sourceId; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java index ed192ce..82a7389 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java @@ -93,6 +93,8 @@ private CheckDiffService checkDiffService; @Autowired private CheckDiffItemService checkDiffItemService; + @Autowired + private BasContainerService basContainerService; @Override @Transactional(rollbackFor = Exception.class) @@ -305,8 +307,10 @@ throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�"); } waitPakins.forEach(pakin -> { + BasContainer container = basContainerService.getOne(new LambdaUpdateWrapper<BasContainer>() + .eq(BasContainer::getCode, pakin.getBarcode())); /**鑾峰彇搴撲綅*/ - String targetLoc = LocManageUtil.getTargetLoc(warehouseArea.getId()); + String targetLoc = LocManageUtil.getTargetLoc(warehouseArea.getId(), container.getContainerType()); if (Cools.isEmpty(targetLoc)) { throw new CoolException("璇ョ珯鐐瑰搴斿簱鍖烘湭鎵惧埌搴撲綅"); } @@ -347,13 +351,14 @@ if (!this.save(task)) { throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒"); } - BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, deviceSite.getSite())); - if (Objects.isNull(station) || station.getUseStatus() != LocStsType.LOC_STS_TYPE_O.type) { + BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>() + .eq(BasStation::getStationName, deviceSite.getSite())); + if (Objects.isNull(station) || !station.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) { throw new CoolException("绔欑偣涓嶅瓨鍦ㄦ垨绔欑偣涓嶅浜庣┖搴撶姸鎬侊紒锛�"); } station.setUseStatus(LocStsType.LOC_STS_TYPE_R.type); - if (basStationService.updateById(station)) { + if (!basStationService.updateById(station)) { throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�"); } 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 b2962f7..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,18 @@ 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.*; @@ -21,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; @@ -43,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); @@ -58,6 +88,7 @@ /** * 鍑哄簱绛栫暐锛�--銆堟晥鐜囦紭鍖栥�� + * * @param matnrCode * @param splrBatch * @param anfme @@ -88,6 +119,7 @@ /** * 鍑哄簱绛栫暐锛�--<鍏堣繘鍏堝嚭> + * * @param matnrCode * @param splrBatch * @param anfme @@ -113,6 +145,7 @@ /** * 鑾峰彇鍑哄簱搴撲綅淇℃伅 + * * @param params * @param waveRule * @return @@ -172,7 +205,14 @@ 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()) -- Gitblit v1.9.1