自动化立体仓库 - WMS系统
lty
9 天以前 f3a7b17ceb5da091ec7987a7a78b23996364b687
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -949,10 +949,10 @@
            throw new CoolException("当前工作档已完成");
        }
        // 入库 + 库位转移
        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType() == 11)) {
        if (wrkMast.getWrkSts() < 4 ) {
            wrkMast.setWrkSts(4L);
            WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", wrkMast.getBarcode()).eq("wrk_sts",15L));
            if (!Cools.isEmpty(wrkMast)) {
            if (!Cools.isEmpty(wrkMast) &&(wrkMast.getIoType()==1||wrkMast.getIoType()==11||wrkMast.getIoType()==10)) {
                mast.setOveMk("Y");
                wrkMast.setModiTime(new  Date());
                wrkMastService.updateById(mast);
@@ -1503,6 +1503,11 @@
        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
        StartupDto locNo = commonService.getLocNo1(locMast1.getCrnNo());
        if(Cools.isEmpty(locNo)) {
            return R.error("没有空库位");
        }
//        if()
        Date now = new Date();
        // 堆垛机站点(目标站)
        Integer staNo = staDesc.getCrnStn();
@@ -1510,13 +1515,14 @@
        BeanUtils.copyProperties(wrkMast, mast);
        mast.setWrkNo(wokNo);
        // 更新工作档数据状态
        mast.setIoType(ioType); // 入出库类型: 103->53,104->54,107->57
        mast.setWrkSts(1L); // 工作状态: 2.设备上走
        mast.setIoType(ioType); // 1余料回库,10空轴回库
        mast.setWrkSts(1L); // 生成回库id
        mast.setSourceStaNo(""); // 源站
        mast.setStaNo(""); // 目标站
        mast.setSourceLocNo(wrkMast.getLocNo());
        mast.setLocNo(locNo.getLocNo()); // 目标库位 = 出库时的源库位
        mast.setModiTime(now);
        mast.setWrkCode(workNo);
        mast.setModiUser(userId);
        if (!wrkMastService.insert(mast)) {
            return R.error("更新工作档数据状态失败");
@@ -1576,6 +1582,115 @@
        return R.ok("生成回库任务成功!!");
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R backLocOperationV2(String workNo, Long userId) {
        WrkMast wrkMast = wrkMastService.selectById(workNo);
        if (Cools.isEmpty(wrkMast)) {
            return R.error(workNo+"工作档不存在");
        }
        if (wrkMast.getWrkSts() != 15) {
            return R.error("当前任务状态不能执行此操作!");
        }
        Integer ioType = 101;
        Integer wokNo;
        if (Objects.isNull(wrkMast.getIsSuplus())) {
            return R.error("回库类型不能为空!!");
        }
        wokNo = commonService.getWorkNo(0);
        LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getLocNo()));
        // 获取目标站
        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", ioType)
                .eq("stn_no", 1070) // 1070
                .eq("crn_no", locMast1.getCrnNo()); // 堆垛机号
        StaDesc staDesc = staDescService.selectOne(wrapper);
        if (Cools.isEmpty(staDesc)) {
            return R.error("出库路径不存在");
        }
        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", wrkMast.getBarcode()));
        if (count >= 2) {
            return R.error("任务档已生成,不可以重复生成相同的子任务!!");
        }
        WrkDetl detl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
        LocDetl locDetl = new LocDetl();
        BeanUtils.copyProperties(detl, locDetl);
        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl);
        // 源站点状态检测
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(staDesc.getCrnStn(), false);
        sourceStaNo.setLocType1((short) 1);
        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
        String locNo = wrkMast.getSourceLocNo();
        if(Cools.isEmpty(locNo)) {
            return R.error("没有空库位");
        }
        Date now = new Date();
        // 堆垛机站点(目标站)
        Integer staNo = staDesc.getCrnStn();
        WrkMast mast = new WrkMast();
        BeanUtils.copyProperties(wrkMast, mast);
        mast.setWrkNo(wokNo);
        // 更新工作档数据状态
        mast.setIoType(ioType); // 110先出库到1070
        mast.setWrkSts(11L); // 生成出库id
        mast.setSourceStaNo(String.valueOf(staDesc.getCrnStn())); // 源站
        mast.setStaNo(String.valueOf(staDesc.getStnNo())); // 目标站
        mast.setSourceLocNo(wrkMast.getLocNo()); //出库位
        mast.setLocNo(locNo); // 目标库位 = 出库时的源库位,用于判断巷道
        mast.setModiTime(now);
        mast.setWrkCode(null);
        mast.setPacked(workNo);
        mast.setModiUser(userId);
        if (!wrkMastService.insert(mast)) {
            return R.error("更新工作档数据状态失败");
        }
        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
        if (Cools.isEmpty(wrkDetls)) {
            return R.error("数据错误,任务档明细不存在 !!");
        }
        LocAroundBind aroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", mast.getSourceLocNo()));
        if (!Objects.isNull(aroundBind)) {
            aroundBind.setLocType(LocStsType.LOC_STS_TYPE_R.type);
            if (!locAroundBindService.updateById(aroundBind)) {
                return R.error("工位状态修改失败!!");
            }
        }
        wrkDetls.forEach(wrkDetl -> {
            WrkDetl wrkDetl1 = new WrkDetl();
            BeanUtils.copyProperties(wrkDetl, wrkDetl1);
            wrkDetl1.setAnfme(wrkDetl.getStockQty() - wrkDetl.getAnfme());
            wrkDetl1.setWrkNo(wokNo);
            if (!wrkDetlService.insert(wrkDetl1)) {
                throw new CoolException("任务档明细保存失败!!");
            }
        });
        //修改作业库位状态
        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
        locMast.setLocSts("R");
        locMast.setModiTime(now);
        locMast.setModiUser(userId);
        if (!locMastService.updateById(locMast)) {
            return R.error("修改库位状态失败");
        }
        if (Cools.isEmpty(mast)) {
            return R.error("没有生成任务");
        }
        return R.ok("生成回库任务成功!!");
    }
    @Override
    public StartupDto createWaitPainWrkMastStart(List<WaitPakin> list, Long userId) {