自动化立体仓库 - WMS系统
skyouc
2 天以前 050d5a7376fd47a596036bc3aa6467125bb6e590
并托出库添加AGV站点字段
3个文件已修改
67 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/WrkMast.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -251,6 +251,11 @@
    @TableField("pause_mk")
    private String pauseMk;
    @ApiModelProperty("并板出库(缓存区AGV站点)")
    @TableField(exist = false)
    private String avgSta;
    @ApiModelProperty(value= "")
    @TableField("error_time")
    private Date errorTime;
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -2178,8 +2178,8 @@
        // 判断根据分拣出库后,还需要出多少托盘或料箱;如果余料大于0, 出新托盘或料箱
        if (totalOut.get().compareTo(0.0) > 0) {
            generateTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId);
            //TODO 细化区分,当前出库托盘是滞满足拣货数量
            generateTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId, station);
            //TODO 细化区分,当前出库托盘是满足拣货数量
        } else {
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                    // todo 根据物料种类,区分库区类型
@@ -2189,7 +2189,7 @@
            CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(locMast.getLocNo()).setLocDetlList(locDetls);
            locMasts.add(crnTaskDetlDTO);
            // 空板出库
            generateTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId);
            generateTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId, station);
        }
    }
@@ -2197,11 +2197,12 @@
     * 生成堆垛机出库任务
     *
     * @param locMasts
     * @param station
     * @author Ryan
     * @date 2025/12/6 14:44
     */
    @Transactional(rollbackFor = Exception.class)
    public void generateTask(List<CrnTaskDetlDTO> locMasts, Integer ioType, BasDevp devp, Long userId) {
    public void generateTask(List<CrnTaskDetlDTO> locMasts, Integer ioType, BasDevp devp, Long userId, BasStation station) {
        Date now = new Date();
        for (CrnTaskDetlDTO crnTaskDetlDTO : locMasts) {
@@ -2228,6 +2229,8 @@
                wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 源站
                wrkMast.setStaNo(staDesc.getStnNo() + ""); // 目标站
                wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位
                //小松项目,缓存出库AGV站点,用于清空缓存区库存
                wrkMast.setAvgSta(station.getDevNo());
                wrkMast.setFullPlt("Y"); // 满板:Y
                wrkMast.setPicking("N"); // 拣料
                wrkMast.setExitMk("N"); // 退出
@@ -2251,6 +2254,8 @@
                wrkDetl.setOrderNo(""); // 手动出库不需要带出库存中的单据编号
                wrkDetl.setWrkNo(workNo);
                wrkDetl.setIoTime(now);
                wrkDetl.setZpallet(null);
                wrkDetl.setBarcode(null);
                wrkDetl.setAppeTime(now);
                wrkDetl.setAppeUser(userId);
                wrkDetl.setModiTime(now);
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -12,6 +12,9 @@
import com.zy.asrs.entity.param.FullStoreParam;
import com.zy.asrs.entity.param.LocDetlAdjustParam;
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.enums.LocAreaType;
import com.zy.asrs.enums.LocStsType;
import com.zy.asrs.enums.TaskIOType;
import com.zy.asrs.mapper.LocMastMapper;
import com.zy.asrs.entity.result.FindLocNoAttributeVo;
import com.zy.asrs.service.*;
@@ -99,6 +102,12 @@
    private TaskService taskService;
    @Autowired
    private TaskDetlService taskDetlService;
    @Autowired
    private BasStationService basStationService;
    @Autowired
    private BasStationDetlService basStationDetlService;
    @Autowired
    private BasAreasService basAreasService;
    @Override
    @Transactional
@@ -1457,6 +1466,10 @@
        if (Cools.isEmpty(wrkMast)) {
            throw new CoolException(workNo + "工作档不存在");
        }
        BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_CRN.type));
        if (Objects.isNull(basAreas)) {
            throw new CoolException("数据错误,库区不存在!!");
        }
        // 入出库类型判断
        if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) {
            throw new CoolException("当前入出库类型无法进行操作");
@@ -1465,6 +1478,11 @@
        if (wrkMast.getWrkSts() < 11 || wrkMast.getWrkSts() == 15) {
            throw new CoolException("当前工作状态无法进行操作");
        }
        String agvSta = null;
        if (wrkMast.getIoType() == TaskIOType.MERGE_OUT.type) {
            agvSta = wrkMast.getAvgSta();
        }
        // 保存工作明细档历史档
//        if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
//            throw new CoolException("保存工作明细档历史档失败");
@@ -1500,12 +1518,43 @@
        // 修改库位状态 Q.拣料/盘点/并板再入库
        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
        locMast.setLocSts("Q");
        locMast.setAreaId(basAreas.getId());
        locMast.setAreaName(basAreas.getName());
        locMast.setBarcode(locMast.getBarcode());
        locMast.setModiTime(now);
        locMast.setModiUser(userId);
        if (!locMastService.updateById(locMast)) {
            throw new CoolException("修改库位状态失败");
        }
        // . 删除缓存站点明细
        if (!Objects.isNull(agvSta)) {
            // 修改目标站点信息
            BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", agvSta));
            if (Objects.isNull(station)) {
                throw new CoolException("站点不存在!!");
            }
            basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
            station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
            if (!basStationService.updateById(station)) {
                throw new CoolException("站点状态更新失败!!");
            }
        }
        // .修改并托入库明细托码码
        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
                        .eq("area_id", locMast.getAreaId())
                .eq("loc_no", locMast.getLocNo()));
        if (!Objects.isNull(locDetls) && !locDetls.isEmpty()) {
            locDetls.forEach(locDetl -> {
                locDetl.setZpallet(locMast.getBarcode());
                locDetl.setBarcode(locMast.getBarcode());
                if (!locDetlService.updateById(locDetl)) {
                    throw new CoolException("库存明细修改失败!!");
                }
            });
        }
    }
    @Override