zc
8 小时以前 adb83050b74c2d7fa1845f18e016ef3b18496543
pda波次揀貨優化
放貨成功上報優化
出入庫站點功能優化
5个文件已修改
84 ■■■■ 已修改文件
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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())