自动化立体仓库 - WMS系统
zjj
2025-01-07 e5cf12d2e3441b83cc3aeafd4f7f23d4075ab5fc
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -95,7 +95,7 @@
        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
        List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
//        List<String> batchs = param.getList().stream().map(FullStoreParam.MatCodeStore::getBatch).distinct().collect(Collectors.toList());
        StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), matnrs.get(0), null, null,locTypeDto);
        StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), matnrs.get(0), null, null,locTypeDto,matnrs.size()>1);
        if (Cools.isEmpty(dto)){
            throw new CoolException("查询库位失败!!==》startupFullPutStore ==》 commonService.getLocNo");
        }
@@ -260,23 +260,26 @@
                throw new CoolException("保存工作档失败,出库库位号:"+dto.getLocNo());
            }
            // 生成工作档明细
            for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
                WrkDetl wrkDetl = new WrkDetl();
                wrkDetl.sync(detlDto.getLocDetl());
                wrkDetl.setOrderNo(""); // 手动出库不需要带出库存中的单据编号
                wrkDetl.setWrkNo(workNo);
                wrkDetl.setIoTime(now);
                Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
                wrkDetl.setAnfme(anfme); // 数量
                wrkDetl.setAppeTime(now);
                wrkDetl.setAppeUser(userId);
                wrkDetl.setModiTime(now);
                wrkDetl.setModiUser(userId);
                if (!wrkDetlService.insert(wrkDetl)) {
                    throw new CoolException("保存工作档明细失败");
            if (ioType != 104){
                for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
                    if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
                    WrkDetl wrkDetl = new WrkDetl();
                    wrkDetl.sync(detlDto.getLocDetl());
                    wrkDetl.setOrderNo(""); // 手动出库不需要带出库存中的单据编号
                    wrkDetl.setWrkNo(workNo);
                    wrkDetl.setIoTime(now);
                    Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
                    wrkDetl.setAnfme(anfme); // 数量
                    wrkDetl.setAppeTime(now);
                    wrkDetl.setAppeUser(userId);
                    wrkDetl.setModiTime(now);
                    wrkDetl.setModiUser(userId);
                    if (!wrkDetlService.insert(wrkDetl)) {
                        throw new CoolException("保存工作档明细失败");
                    }
                }
            }
            // 修改库位状态:   F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中
            locMast = locMastService.selectById(dto.getLocNo());
            if (locMast.getLocSts().equals("F")) {
@@ -373,7 +376,7 @@
                inventoryCheckOrderDetl.setMaktx(detlDto.getLocDetl().getMaktx());
                inventoryCheckOrderDetl.setBatch(detlDto.getLocDetl().getBatch());
                inventoryCheckOrderDetl.setLocNo(detlDto.getLocDetl().getLocNo());
                inventoryCheckOrderDetl.setArea(wrkMast.getCrnNo$());
                inventoryCheckOrderDetl.setArea(detlDto.getLocDetl().getOrigin());
                inventoryCheckOrderDetl.setAnfme(detlDto.getLocDetl().getAnfme());
                inventoryCheckOrderDetl.setIoTime(now);
                inventoryCheckOrderDetl.setStatus("1");
@@ -502,7 +505,7 @@
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
        // 检索库位
        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
        StartupDto dto = commonService.getLocNo( 10, devpNo, null,null,null, locTypeDto);
        StartupDto dto = commonService.getLocNo( 10, devpNo, null,null,null, locTypeDto,false);
        int workNo = dto.getWorkNo();
        Date now = new Date();
        // 生成工作档
@@ -973,7 +976,7 @@
                locMastService.updateById(locMast);
            }
        // 出库取消(修改源库位)
        } else if (wrkMast.getIoType() >=100) {
        } else if (wrkMast.getIoType() >=100 && wrkMast.getIoType()<=200) {
            locNo = wrkMast.getSourceLocNo();
            // 出库 ===>> F.在库
            if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
@@ -994,6 +997,8 @@
                locMast.setModiUser(userId);
                locMastService.updateById(locMast);
            }
        } else if (wrkMast.getIoType() >=300) {
        } else {
            throw new CoolException("当前工作状态无法取消");
        }
@@ -1015,7 +1020,7 @@
        }
        //取消出库工作档时,查询单据管理表,回滚作业中数量
        if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) {
        if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 || wrkMast.getIoType() == 300) {
            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
            for (WrkDetl wrkDetl : wrkDetls) {
                if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
@@ -1082,18 +1087,25 @@
            boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
        }
        // 修改库位状态
        LocMast locMast = locMastService.selectById(locNo);
        if (Cools.isEmpty(locMast)) {
            throw new CoolException("取消工作档失败,库位不存在:"+ locNo);
        if (wrkMast.getIoType() != 300){
            // 修改库位状态
            LocMast locMast = locMastService.selectById(locNo);
            if (Cools.isEmpty(locMast)) {
                throw new CoolException("取消工作档失败,库位不存在:"+ locNo);
            }
            locMast.setLocSts(locSts);
            locMast.setModiTime(now);
            locMast.setModiUser(userId);
            boolean locMastRes = locMastService.updateById(locMast);
            if (!wrkMastRes || !locMastRes) {
                throw new CoolException("保存数据失败");
            }
        }else {
            if (!wrkMastRes) {
                throw new CoolException("保存数据失败");
            }
        }
        locMast.setLocSts(locSts);
        locMast.setModiTime(now);
        locMast.setModiUser(userId);
        boolean locMastRes = locMastService.updateById(locMast);
        if (!wrkMastRes || !locMastRes) {
            throw new CoolException("保存数据失败");
        }
    }
    @Override