自动化立体仓库 - WMS系统
skyouc
昨天 c28812eb7e5afa79cb5e2f4fbee7f96c7d7767ed
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -11,6 +11,7 @@
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.ContainerType;
import com.zy.asrs.enums.LocAreaType;
import com.zy.asrs.mapper.LocMastMapper;
import com.zy.asrs.entity.result.FindLocNoAttributeVo;
@@ -120,6 +121,22 @@
//        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());
        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(param.getList().get(0));
//        BasContainer container = basContainerService.selectOne(new EntityWrapper<BasContainer>().eq("barcode", param.getBarcode()));
//        if (Objects.isNull(container)) {
//            throw new CoolException("容器编码未维护,请维护后再操作!!");
//        }
//
//        Integer whsType = 1;
//        Short lcoType = 1;
//        //用于判断料箱托盘,料箱,笼框
//        if (!container.getType().equals(ContainerType.CONTAINER_TYPE_BOX.type)) {
//            whsType = 2;
//            if (container.getType().equals(ContainerType.CONTAINER_TYPE_SALVER.type)) {
//                lcoType = 2;
//            }
//        }
        StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), sourceStaNo.getDevNo(), findLocNoAttributeVo, locTypeDto);
        if (Cools.isEmpty(dto)) {
            throw new CoolException("查询库位失败!!==》startupFullPutStore ==》 commonService.getLocNo");
@@ -478,6 +495,7 @@
            wrkDetl.setZpallet(wrkMast.getBarcode());
            wrkDetl.setIoTime(now);
            wrkDetl.setWrkNo(workNo);
            wrkDetl.setBoxType1(locDto.getBoxType1());
            wrkDetl.setBatch(locDto.getBatch());
            wrkDetl.setOrderNo(locDto.getOrderNo());
            wrkDetl.setAnfme(locDto.getAnfme()); // 数量
@@ -517,7 +535,8 @@
    @Transactional(rollbackFor = Exception.class)
    public void checkStockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
        Date now = new Date();
        List<LocDto> locDtos = taskDto.getLocDtos();
        List<LocDto> locDtos = taskDto.getLocDtos().stream().distinct().collect(Collectors.toList());
//        Map<String, List<LocDto>> collect = taskDto.getLocDtos().stream().collect(Collectors.groupingBy(LocDto::getLocNo));
        for (LocDto locDto : locDtos) {
            if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
                throw new CoolException("订单出库异常,请联系管理员");
@@ -554,27 +573,27 @@
            throw new CoolException("保存工作档失败,出库库位号:" + taskDto.getLocNo());
        }
        // 生成工作档明细
        for (LocDto locDto : taskDto.getLocDtos()) {
        for (LocDto locDto : locDtos) {
            if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
                continue;
            }
            List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>()
            CheckOrderDetl checkOrderDetls = checkOrderDetlService.selectOne(new EntityWrapper<CheckOrderDetl>()
                    .eq("loc_no", locDto.getLocNo())
                    .eq("matnr", locDto.getMatnr())
                    .eq(!Cools.isEmpty(locDto.getBatch()),"batch", locDto.getBatch())
                    .eq("order_no", locDto.getOrderNo())
            );
                    .eq("supp_code", locDto.getSuppCode())
                    .eq("order_no", locDto.getOrderNo()));
            if (checkOrderDetls.size() > 1) {
            if (Objects.isNull(checkOrderDetls)) {
                throw new CoolException("数据大于1,请检查数据");
            }
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.sync(checkOrderDetls.get(0));
            wrkDetl.setOrderId(checkOrderDetls.get(0).getId());
            wrkDetl.sync(checkOrderDetls);
            wrkDetl.setOrderId(checkOrderDetls.getId());
            wrkDetl.setZpallet(wrkMast.getBarcode());
            wrkDetl.setIoTime(now);
            wrkDetl.setBoxType1(locDto.getBoxType1());
            wrkDetl.setWrkNo(workNo);
            wrkDetl.setBatch(locDto.getBatch());
            wrkDetl.setOrderNo(locDto.getOrderNo());
@@ -587,8 +606,8 @@
                throw new CoolException("保存工作档明细失败");
            }
            // 修改订单明细
            checkOrderDetls.get(0).setStatus(2);
            if (!checkOrderDetlService.updateById(checkOrderDetls.get(0))) {
            checkOrderDetls.setStatus(2);
            if (!checkOrderDetlService.updateById(checkOrderDetls)) {
                throw new CoolException("保存订单明细失败");
            }
        }
@@ -618,9 +637,9 @@
        }
        // 获取库位
        LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", taskDto.getLocNo()));
        int ioType = (taskDto.isAll() ? 101 : 103);
        int ioType = 103;
        // 生成工作号
        int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
        int workNo = commonService.getWorkNo(4);
        Task task = new Task();
        task.setWrkNo(workNo)
@@ -665,6 +684,7 @@
                    .setIoTime(new Date())
                    .setOrderNo(locDto.getOrderNo())
                    .setAnfme(locDto.getAnfme())
                    .setBoxType1(locDto.getBoxType1())
                    .setZpallet(locCache.getBarcode())
                    .setBatch(locDto.getBatch())
                    .setAppeUser(userId)
@@ -690,7 +710,7 @@
            locCache.setLocSts(ioType == 101 ? "R" : "P");
            locCache.setModiUser(userId);
            locCache.setModiTime(now);
            if (!locCacheService.updateById(locCache)) {
            if (!locCacheService.update(locCache, new EntityWrapper<LocCache>().eq("loc_no", locCache.getLocNo()))) {
                throw new CoolException("预约库位状态失败,库位号:" + taskDto.getLocNo());
            }
        } else {
@@ -991,6 +1011,7 @@
            wrkDetl.sync(locDetl);
            wrkDetl.setWrkNo(workNo);
            wrkDetl.setIoTime(now);
            wrkDetl.setBoxType1(locDetl.getBoxType1());
            wrkDetl.setAnfme(locDetl.getAnfme());
            wrkDetl.setAppeTime(now);
            wrkDetl.setAppeUser(userId);
@@ -1109,11 +1130,21 @@
                if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
                    if (!locDetl.getAnfme().equals(adjust.getCount())) {
                        // todo 盘点记录
                        // 修改库存
                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
                                locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
                            throw new CoolException(locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "批号修改数量失败");
                        locDetl.setSuppCode(adjust.getSuppCode());
                        locDetl.setBoxType1(adjust.getBoxType1());
                        locDetl.setAnfme(adjust.getCount());
                        locDetl.setStandby1(adjust.getSuppCode());
//                        locDetl.setZpallet(locDetl.getZpallet());
                        if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locDetl.getLocNo()))) {
                            throw new CoolException(locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getSuppCode() + "供应商修改数量失败");
                        }
                        // 修改库存
//                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
//                                locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
//                            throw new CoolException(locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "批号修改数量失败");
//                        }
                        // 保存调整记录
                        AdjDetl adjDetl = new AdjDetl();
                        adjDetl.setLocNo(locDetl.getLocNo());
@@ -1125,8 +1156,10 @@
                        adjDetl.setModiUser(userId);
                        adjDetl.setAppeTime(now);
                        adjDetl.setAppeUser(userId);
                        adjDetlService.save(adjDetl, userId);
                        if (!adjDetlService.insert(adjDetl)) {
                            throw new CoolException("调整记录保存失败!!");
                        }
//                        adjDetlService.save(adjDetl, userId);
                        if (updateFlag) {
                            wrkMast.setWrkNo(commonService.getWorkNo(3));
                            wrkMast.setIoType(23);
@@ -1141,6 +1174,7 @@
                        WrkDetlLog wrkDetl = new WrkDetlLog();
                        wrkDetl.sync(locDetl);
                        wrkDetl.setWrkNo(wrkMast.getWrkNo());
                        wrkDetl.setBoxType1(locDetl.getBoxType1());
                        wrkDetl.setIoTime(wrkMast.getIoTime());
                        wrkDetl.setAnfme(adjust.getCount());
                        wrkDetl.setAppeTime(now);
@@ -1162,7 +1196,7 @@
            // todo 盘点记录
            if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
                    locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
                throw new CoolException("删除" + locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "批号库存明细失败");
//                throw new CoolException("删除" + locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "批号库存明细失败");
            }
            // 保存调整记录
            AdjDetl adjDetl = new AdjDetl();
@@ -1215,6 +1249,9 @@
            locDetl.setZpallet(locMast.getBarcode());
            locDetl.setAnfme(adjust.getCount()); // 数量
            locDetl.setModiUser(userId); // 操作人员信息
            locDetl.setSuppCode(adjust.getSuppCode());
            locDetl.setStandby1(adjust.getSuppCode());
            locDetl.setBoxType1(adjust.getBoxType1());
            locDetl.setModiTime(now);
            locDetl.setAppeUser(userId);
            locDetl.setAppeTime(now);
@@ -1249,6 +1286,7 @@
            wrkDetl.sync(locDetl);
            wrkDetl.setWrkNo(wrkMast.getWrkNo());
            wrkDetl.setIoTime(wrkMast.getIoTime());
            wrkDetl.setBoxType1(locDetl.getBoxType1());
            wrkDetl.setAnfme(adjust.getCount());
            wrkDetl.setAppeTime(now);
            wrkDetl.setModiTime(now);
@@ -1388,8 +1426,7 @@
        if (wrkMast.getIoType() == 107) {
            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
            if (!Cools.isEmpty(wrkDetls.get(0).getOrderNo())) {
            if (!Objects.isNull(wrkDetls) && !wrkDetls.isEmpty()) {
                for (WrkDetl wrkDetl : wrkDetls) {
                    CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectOne(new EntityWrapper<CheckOrderDetl>()
                            .eq("loc_no", wrkMast.getSourceLocNo())
@@ -1397,8 +1434,10 @@
                            .eq("batch", wrkDetl.getBatch())
                            .eq("order_no", wrkDetl.getOrderNo())
                    );
                    checkOrderDetl.setStatus(1);
                    checkOrderDetlService.updateById(checkOrderDetl);
                    if (!Objects.isNull(checkOrderDetl)) {
                        checkOrderDetl.setStatus(1);
                        checkOrderDetlService.updateById(checkOrderDetl);
                    }
                }
                CheckOrder checkOrder = checkOrderService.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", wrkDetls.get(0).getOrderNo()));
                List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", checkOrder.getId()));
@@ -1406,8 +1445,10 @@
                checkOrder.setSettle(is ? 1L : 12L);
                checkOrderService.updateById(checkOrder);
            }
//            if (!Cools.isEmpty(wrkDetls.get(0).getOrderNo())) {
//
//
//            }
        }
//        // 订单关联