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); 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("任务状态修改失败!!"); } } 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; 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("站点状态更新失败!!"); } 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())