自动化立体仓库 - WMS系统
1
zhang
2025-05-05 89bbaa9135a0b370da669c631c370a21468513c3
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -181,8 +181,15 @@
        if (!locDetlDtos.isEmpty()) {
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
            if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) {
                // 启动出库开始 101.出库
                stockOut(staNo, locDetlDtos, null, userId);
                if (staNo.getDevNo() == 1135 && locMast.getLocType1() == 2) {
                    throw new CoolException("所选库位不是低库位无法调拨,库位号:{}" + locMast.getLocNo());
                }
                if(staNo.getDevNo()>=1100){
                    // 启动出库开始 101.出库
                    stockOut(staNo, locDetlDtos, null, userId);
                }else {
                    stockOutSXK(staNo, locDetlDtos, null, userId);
                }
            } else {
                throw new CoolException("所选库位存在状态不为F、D的库位,库位号:" + locMast.getLocNo() + " 、当前状态:" + locMast.getLocSts() + "-" + locMast.getLocSts$());
            }
@@ -228,6 +235,11 @@
            LocMast locMast = locMastService.selectById(dto.getLocNo());
            Integer outSta = staNo.getDevNo();
            if (outSta == 1135 || outSta == 1031) {
                if (101 != ioType) {
                    throw new CoolException("该站点必须全板出库,出库库位号:" + dto.getLocNo());
                }
            }
//            //2号堆垛机全板出库站指定为204站,拣料站指定为202
//            if(locMast.getCrnNo()==2){
//                outSta = ioType == 101 ? 204 : 202;
@@ -526,30 +538,25 @@
        LocMast locMast = locMastService.selectById(taskDto.getLocNo());
        List<LocMast> locMasts = new ArrayList<>();
        if ((locMast.getBay1() >= 1 && locMast.getBay1() <= 2) || (locMast.getBay1() >= 6 && locMast.getBay1() <= 7 && locMast.getRow1() != 36 && locMast.getRow1() != 29) || (locMast.getBay1() >= 11 && locMast.getBay1() <= 12)) {
        if ((locMast.getBay1() >= 3 && locMast.getBay1() <= 6) ) {
            locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                    .eq("gro1", locMast.getGro1())
                    .eq("crn_no", 7)
                    .eq("loc_type1", locMast.getLocType1())
                    .orderBy("bay1", false));
        } else {
            locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                    .eq("gro1", locMast.getGro1())
                    .eq("row1", locMast.getBay1())
                    .eq("crn_no", 7)
                    .eq("loc_type1", locMast.getLocType1())
                    .orderBy("bay1", true));
        }
        for (LocMast locMast1 : locMasts) {
            if (locMast1.getLocNo().equals(taskDto.getLocNo())) {
                break;
            }
            if (locMast1.getLocSts().equals("X")) {
                throw new CoolException(taskDto.getLocNo() + "库位前方有锁定库位,禁止出库");
            }
            if (locMast1.getLocSts().equals("F")) {
                moveLocForDeepLoc(locMast1);
            for (LocMast locMast1 : locMasts) {
                if (locMast1.getLocNo().equals(taskDto.getLocNo())) {
                    break;
                }
                if (locMast1.getLocSts().equals("X")) {
                    throw new CoolException(taskDto.getLocNo() + "库位前方有锁定库位,禁止出库");
                }
                if (locMast1.getLocSts().equals("F")) {
                    locMast = locMast1;
                }
            }
        }
        // 获取路径
        int ioType = taskDto.isAll() ? 101 : 103;
@@ -1876,9 +1883,11 @@
        WrkMast wrkMast = new WrkMast();
        wrkMast.setWrkNo(workNo);
        wrkMast.setIoTime(new Date());
        wrkMast.setWrkSts(1L); // 工作状态:1.生成入库ID
        wrkMast.setIoType(1); // 入出库状态: 1.库格移载
        wrkMast.setWrkSts(2L); // 工作状态:1.生成入库ID
        wrkMast.setIoType(wrkMastold.getIoType() - 100); // 入出库状态: 1.库格移载
        wrkMast.setIoPri(12D);
        wrkMast.setStaNo(1032);
        wrkMast.setSourceStaNo(1031);
        wrkMast.setCrnNo(7);
        wrkMast.setLocNo(dto.getLocNo()); // 目标库位
        wrkMast.setFullPlt("Y"); // 满板
@@ -1894,16 +1903,18 @@
            throw new CoolException("保存工作档失败");
        }
        // 工作档明细保存
        for (WrkDetl wrk : wrkDetls) {
            WrkDetl wrkDetl = new WrkDetl();
            Synchro.Copy(wrk, wrkDetl);
            wrkDetl.setWrkNo(workNo);
            wrkDetl.setIoTime(new Date());
            wrkDetl.setAnfme(wrk.getAnfme());
            wrkDetl.setAppeTime(new Date());
            wrkDetl.setModiTime(new Date());
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作档明细失败");
        if (wrkDetls != null) {
            for (WrkDetl wrk : wrkDetls) {
                WrkDetl wrkDetl = new WrkDetl();
                Synchro.Copy(wrk, wrkDetl);
                wrkDetl.setWrkNo(workNo);
                wrkDetl.setIoTime(new Date());
                wrkDetl.setAnfme(wrk.getAnfme());
                wrkDetl.setAppeTime(new Date());
                wrkDetl.setModiTime(new Date());
                if (!wrkDetlService.insert(wrkDetl)) {
                    throw new CoolException("保存工作档明细失败");
                }
            }
        }
        // 修改目标库位状态
@@ -1923,7 +1934,7 @@
    public void toCrn(WrkMast wrkMastold, List<WrkDetl> wrkDetls, Short locType) {
        LocTypeDto locTypeDto = new LocTypeDto();
        locTypeDto.setLocType1(locType);
        StartupDto dto = commonService.getLocNo(1, 1035, null, null, null, locTypeDto, false);
        StartupDto dto = commonService.getLocNo(1, 1135, null, null, null, locTypeDto, false);
        if (Cools.isEmpty(dto)) {
            throw new CoolException("去堆垛机未找到库位");
        }
@@ -1935,14 +1946,16 @@
        wrkMast.setWrkNo(workNo);
        wrkMast.setIoTime(new Date());
        wrkMast.setWrkSts(1L); // 工作状态:1.生成入库ID
        wrkMast.setIoType(1); // 入出库状态: 1.入库
        wrkMast.setIoType(wrkMastold.getIoType() - 100);  // 入出库状态: 1.入库
        wrkMast.setIoPri(12D);
        wrkMast.setCrnNo(7);
        wrkMast.setCrnNo(1);
        wrkMast.setStaNo(1131);
        wrkMast.setSourceStaNo(1135);
        wrkMast.setLocNo(dto.getLocNo()); // 目标库位
        wrkMast.setFullPlt("Y"); // 满板
        wrkMast.setFullPlt(wrkDetls == null ? "N" : "Y"); // 满板
        wrkMast.setPicking("N"); // 拣料
        wrkMast.setExitMk("N"); // 退出
        wrkMast.setEmptyMk("Y"); // 空板
        wrkMast.setEmptyMk(wrkDetls != null ? "N" : "Y"); // 空板
        wrkMast.setBarcode(wrkMastold.getBarcode()); // 托盘码
        wrkMast.setLinkMis("N");
        wrkMast.setAppeTime(new Date());
@@ -1952,16 +1965,18 @@
            throw new CoolException("保存工作档失败");
        }
        // 工作档明细保存
        for (WrkDetl wrk : wrkDetls) {
            WrkDetl wrkDetl = new WrkDetl();
            Synchro.Copy(wrk, wrkDetl);
            wrkDetl.setWrkNo(workNo);
            wrkDetl.setIoTime(new Date());
            wrkDetl.setAnfme(wrk.getAnfme());
            wrkDetl.setAppeTime(new Date());
            wrkDetl.setModiTime(new Date());
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作档明细失败");
        if (wrkDetls != null) {
            for (WrkDetl wrk : wrkDetls) {
                WrkDetl wrkDetl = new WrkDetl();
                Synchro.Copy(wrk, wrkDetl);
                wrkDetl.setWrkNo(workNo);
                wrkDetl.setIoTime(new Date());
                wrkDetl.setAnfme(wrk.getAnfme());
                wrkDetl.setAppeTime(new Date());
                wrkDetl.setModiTime(new Date());
                if (!wrkDetlService.insert(wrkDetl)) {
                    throw new CoolException("保存工作档明细失败");
                }
            }
        }
        // 修改目标库位状态
@@ -1976,4 +1991,5 @@
        }
    }
}