自动化立体仓库 - WMS系统
skyouc
2 天以前 90aea4830974e3687222aa266952923d59aa088f
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -4,7 +4,10 @@
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.enums.LocAreaType;
import com.zy.asrs.enums.LocStsType;
import com.zy.asrs.enums.TaskIOType;
import com.zy.asrs.enums.TaskStatusType;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.*;
import com.zy.asrs.task.AbstractHandler;
@@ -60,6 +63,8 @@
    private WaitPakinLogService waitPakinLogService;
    @Autowired
    private BasStationDetlService basStationDetlService;
    @Autowired
    private BasAreasService basAreasService;
    public ReturnT<String> start(WrkMast wrkMast) {
        // 4.入库完成
@@ -75,6 +80,12 @@
    public ReturnT<String> doIn(WrkMast wrkMast) {
        Date now = new Date();
        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
        BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_CRN.type));
        if (Objects.isNull(basAreas)) {
            throw new CoolException("数据错误:库区不存在!!");
        }
        locMast.setAreaId(basAreas.getId());
        locMast.setAreaName(basAreas.getName());
        try {
            if (null == locMast) {
                // exceptionHandle("工作档[workNo={0}]库位号错误[locNo={1}]", wrkMast.getWrkNo(),
@@ -122,7 +133,6 @@
                    }
                    // 遍历工作明细,更新库存明细和入库通知档
                    for (WrkDetl wrkDetl : wrkDetls) {
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(),
                                wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
                                wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(),
@@ -233,6 +243,8 @@
                            locDetl.sync(wrkDetl);
                            locDetl.setLocNo(wrkMast.getLocNo()); // 库位号
                            locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
                            locDetl.setAreaId(locMast.getAreaId());
                            locMast.setAreaName(locMast.getAreaName());
                            locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码
                            locDetl.setModiTime(now);
                            locDetl.setAppeTime(now);
@@ -345,7 +357,6 @@
                    }
                    // 修改库存明细数量,如无库存,曾新增
                    for (WrkDetl wrkDetl : wrkDetls54) {
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(),
                                wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
                                wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(),
@@ -366,6 +377,8 @@
                            locDetl.sync(wrkDetl);
                            locDetl.setLocNo(wrkMast.getLocNo()); // 库位号
                            locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
                            locDetl.setAreaId(locMast.getAreaId());
                            locMast.setAreaName(locMast.getAreaName());
                            locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码
                            locDetl.setModiTime(now);
                            locDetl.setAppeTime(now);
@@ -411,6 +424,24 @@
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                            return FAIL.setMsg("并板入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                    + wrkMast.getLocNo() + "]");
                        }
                    }
                    String agvSta = null;
                    if (wrkMast.getIoType() == TaskIOType.MERGE_IN.type) {
                        agvSta = wrkMast.getPauseMk();
                    }
                    // . 删除缓存站点明细
                    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_D.type);
                        if (!basStationService.updateById(station)) {
                            throw new CoolException("站点状态更新失败!!");
                        }
                    }
                    break;
@@ -697,10 +728,10 @@
    @Transactional(rollbackFor = Exception.class)
    public ReturnT<String> AgvStart(Task task) {
        // 4.入库完成
        if (task.getWrkSts() == 4) {
        if (task.getWrkSts().equals(TaskStatusType.AGV_TASK_FINISHED_IN.type)) {
            return agvDoIn(task);
            // 14.出库完成
        } else if (task.getWrkSts() == 14) {
        } else if (task.getWrkSts().equals(TaskStatusType.AGV_TASK_FINISHED_OUT.type)) {
            return agvDoOut(task);
        }
        return SUCCESS;
@@ -709,7 +740,7 @@
    /**
     * @author Ryan
     * @date 2025/9/25
     * @description: AGV出库任务
     * @description: AGV出库任
     * @version 1.0
     */
    @Transactional(rollbackFor = Exception.class)
@@ -735,6 +766,7 @@
                throw new CoolException("站点:" + task.getSourceStaNo() + ", 不存在!!");
            }
            devNo.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
            devNo.setBarcode(task.getBarcode());
            devNo.setModiTime(new Date());
            if (!basStationService.updateById(devNo)) {
                throw new CoolException("站点信息修改失败!!");
@@ -797,9 +829,7 @@
                throw new CoolException("当前库位状态" + locMast.getLocSts() + ", 无法执行出库操作!!");
            }
            task.setWrkSts(15L);
            task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type);
            if (!taskService.updateById(task)) {
                throw new CoolException("任务状态修改失败!!");
            }
@@ -835,7 +865,7 @@
            if (!basStationService.updateById(devNo)) {
                throw new CoolException("站点信息修改失败!!");
            }
            task.setWrkSts(15L);
            task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type);
            if (!taskService.updateById(task)) {
                throw new CoolException("任务状态修改失败!!");
            }
@@ -848,6 +878,19 @@
    @Transactional(rollbackFor = Exception.class)
    public ReturnT<String> agvDoIn(Task wrkMast) {
        LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
        if (!Objects.isNull(wrkMast.getSourceStaNo())) {
            BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>()
                    .eq("dev_no", wrkMast.getSourceStaNo()));
            if (!Objects.isNull(station)) {
                List<String> list = Arrays.asList(LocStsType.LOC_STS_TYPE_O.type, LocStsType.LOC_STS_TYPE_D.type);
                if (!list.contains(station.getLocSts())) {
                    station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
                }
                station.setBarcode("");
                basStationService.updateById(station);
            }
        }
        if(wrkMast.getIoType().equals(1)){
            if (Objects.isNull(locCache)) {
                throw new CoolException("数据错误,库位不存在!!");
@@ -920,7 +963,7 @@
            if (!locCacheService.updateById(locCache)) {
                throw new CoolException("库位状态修改失败!");
            }
            wrkMast.setWrkSts(5L);
            wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
            wrkMast.setModiTime(new Date());
            if (!taskService.updateById(wrkMast)) {
                throw new CoolException("任务状态修改失败!!");
@@ -1015,7 +1058,7 @@
            }
            // 修改工作主档状态
            wrkMast.setWrkSts(5L);
            wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
            wrkMast.setModiTime(now);
            if (!taskService.updateById(wrkMast)) {
                // exceptionHandle("更新入库完成状态失败;[workNo={0}]", wrkMast.getWrkNo());