自动化立体仓库 - WMS系统
1
zhang
19 小时以前 be5373a650a8a40e808ab1664e59c60807809a7c
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -99,6 +99,9 @@
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private WrkDetlLogService wrkDetlLogService;
    @Resource
    private MatMapper matMapper;
@@ -116,6 +119,14 @@
    @Resource
    private BasCrnpMapper basCrnpMapper;
    @Resource
    private ReviewService reviewService;
    @Resource
    private ReviewDetlService reviewDetlService;
    @Override
    @Transactional
@@ -1254,6 +1265,43 @@
                    if (zpalletCount2 > 0) {
                        throw new CoolException("包装组号已存在:" + obj.getPackageGroupNo());
                    }
                    // 卷号
                    HashMap<String, Object> yy = new HashMap<>();
                    // 箱号
                    HashMap<String, Object> zz = new HashMap<>();
                    List<GwmsGenerateInventoryDto.Rolls> rolls = obj.getRolls();
                    for (GwmsGenerateInventoryDto.Rolls roll : rolls) {
                        barcodeCount2 = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("model", roll.getRollNo()));
                        if (barcodeCount2 > 0) {
                            throw new CoolException("卷号已存在工作档(输送线):" + roll.getRollNo());
                        }
                        zpalletCount2 = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("model", roll.getRollNo()));
                        if (zpalletCount2 > 0) {
                            throw new CoolException("卷号已存在库存:" + roll.getRollNo());
                        }
                        barcodeCount2 = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("unit", roll.getBoxNo()));
                        if (barcodeCount2 > 0) {
                            throw new CoolException("箱号已存在工作档(输送线):" + roll.getBoxNo());
                        }
                        zpalletCount2 = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("unit", roll.getBoxNo()));
                        if (zpalletCount2 > 0) {
                            throw new CoolException("箱号已存在库存:" + roll.getBoxNo());
                        }
                        if (yy.get(roll.getRollNo()) != null) {
                            throw new CoolException("明细中存在2条相同的卷号:" + roll.getRollNo());
                        } else {
                            yy.put(roll.getRollNo(), roll.getRollNo());
                        }
                        if (zz.get(roll.getBoxNo()) != null) {
                            throw new CoolException("明细中存在2条相同的箱号:" + roll.getBoxNo());
                        } else {
                            zz.put(roll.getBoxNo(), roll.getBoxNo());
                        }
                    }
                    if (xx.get(obj.getPackageGroupNo()) != null) {
                        throw new CoolException("明细中存在2条相同的包装组号:" + obj.getPackageGroupNo());
                    } else {
@@ -1535,7 +1583,7 @@
        return "出库结果上报成功";
    }
    private void ckjgsbPushMes(WrkMast wrkMast, List<WrkDetl> wrkDetls) {
    public void ckjgsbPushMes(WrkMast wrkMast, List<WrkDetl> wrkDetls) {
        GwmsGenerateInventoryDto gwmsGenerateInventoryDto = new GwmsGenerateInventoryDto();
        gwmsGenerateInventoryDto.setWarehouseType(4);
        gwmsGenerateInventoryDto.setBarcode(wrkMast.getBarcode());
@@ -1562,8 +1610,8 @@
                matList.setStockType(wrkMast.getStaNo() == 2041 ? "返修出库" : "成品出库");
                matList.setBoxType(wrkDetl.getColor());
                matList.setRollType(wrkDetl.getManu());
                matList.setWideInWidth(wrkDetl.getSku());
                matList.setThickness(wrkDetl.getItemNum());
                matList.setWideInWidth(wrkDetl.getItemNum());
                matList.setThickness(wrkDetl.getSku());
                List<GwmsGenerateInventoryDto.Rolls> rollsList = new ArrayList<>();
                GwmsGenerateInventoryDto.Rolls roll = new GwmsGenerateInventoryDto.Rolls(wrkDetl.getModel(),
                        wrkDetl.getUnit(), wrkDetl.getMaktx(), wrkDetl.getLength(),
@@ -1645,7 +1693,7 @@
        // 寻找空托盘库位,先找浅库位
        List<LocMast> locMasts;
        locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D")
                .orderAsc(Arrays.asList("row1", "lev1", "bay1")).in("crn_no", crnNoList).in("row1", 3, 4, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23));
                .orderAsc(Arrays.asList("row1", "lev1", "bay1")).in("crn_no", crnNoList).in("row1", 2, 3, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23));
        if (locMasts.isEmpty()) {
            locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D")
                    .orderAsc(Arrays.asList("row1", "lev1", "bay1")).in("crn_no", crnNoList).in("row1", 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24));
@@ -1673,7 +1721,7 @@
        wrkMast.setIoTime(now);
        wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID
        wrkMast.setIoType(110); // 入出库状态: 110.空板出库
        wrkMast.setIoPri(10D);
        wrkMast.setIoPri(14D);
        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站
        wrkMast.setStaNo(staDesc.getStnNo()); // 目标站
        wrkMast.setCrnNo(locMast.getCrnNo());
@@ -2348,6 +2396,70 @@
    @Override
    @Transactional
    public R groupOrderConfirmV2(GroupOrderConfirmParam param) {
        // 1. 查询单据是否存在
        String time = DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmss_F);
        Review review = reviewService.selectOne(new EntityWrapper<Review>().eq("order_no", param.getGroupOrderNumber()));
        if (review == null) {
            review = new Review();
            review.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
            review.setOrderNo(param.getGroupOrderNumber());
            review.setOrderTime(time);
            review.setDefNumber("系统同步");
            review.setSettle(1L);
            review.setStatus(1);
            review.setCreateBy(9527L);
            review.setCreateTime(new Date());
            reviewService.insert(review);
            review = reviewService.selectOne(new EntityWrapper<Review>().eq("order_no", param.getGroupOrderNumber()));
        } else {
            // 1.2 存在,更新单据状态
            review.setSettle(1L);
            reviewService.updateById(review);
        }
        reviewService.delete(
                new EntityWrapper<Review>().eq("order_no", param.getGroupOrderNumber())
        );
        // 2. 一一对应遍历
        List<GroupOrderConfirmParam.PackageGroupNo> pkgList = param.getPackageGroupNos();
        List<GroupOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
        int size = Math.min(pkgList.size(), volList.size()); // 防止越界
        for (int i = 0; i < size; i++) {
            GroupOrderConfirmParam.PackageGroupNo pg = pkgList.get(i);
            GroupOrderConfirmParam.VolumeNumber vn = volList.get(i);
            // 查询是否已存在该 detl
            ReviewDetl detl = reviewDetlService.selectOne(new EntityWrapper<ReviewDetl>().eq("order_no", param.getGroupOrderNumber()).eq("brand", pg.getPackageGroupNo()).eq("model", vn.getVolumeNumber()));
            if (detl == null) {
                List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectList(new EntityWrapper<WrkDetlLog>().eq("brand", pg.getPackageGroupNo()).eq("model", vn.getVolumeNumber()));
                detl = new ReviewDetl();
                if (wrkDetlLogs != null && !wrkDetlLogs.isEmpty() && wrkDetlLogs.size() >= 1) {
                    detl.setSpecs(wrkDetlLogs.get(0).getSpecs());
                    detl.setBatch(wrkDetlLogs.get(0).getBatch());
                    detl.setAnfme(wrkDetlLogs.get(0).getAnfme());
                    detl.setMatnr(wrkDetlLogs.get(0).getMatnr());
                    detl.setMaktx(wrkDetlLogs.get(0).getMaktx());
                    detl.setUnit(wrkDetlLogs.get(0).getUnit());
                    detl.setDeadTime(wrkDetlLogs.get(0).getModiTime$());
                }
                detl.setOrderId(review.getId());
                detl.setOrderNo(param.getGroupOrderNumber());
                detl.setCreateTime(new Date());
                detl.setBrand(pg.getPackageGroupNo());   // 包装组号
                detl.setModel(vn.getVolumeNumber());     // 卷号
                reviewDetlService.insert(detl);
            }
        }
        return R.ok("组货确认成功");
    }
    @Override
    @Transactional
    public R returnOrder(ReturnOrderConfirmParam param) {
        if (Cools.isEmpty(param.getOrderNumber())) {
            param.setOrderNumber("THCK" + DateUtils.convert(new Date(), DateUtils.yyyyMMdd));
@@ -2365,6 +2477,7 @@
            order.setCreateTime(new Date());
            order.setSettle(1L);
            order.setDocType(26L);
            order.setMemo(param.getMemo());
            orderMapper.insert(order);
        } else {
            // 1.2 存在,更新单据状态
@@ -2394,7 +2507,10 @@
                detl.setAnfme(1.0);
                detl.setBrand(param.getPackageGroupNo());   // 包装组号
                detl.setModel(vn.getVolumeNumber());     // 卷号
                detl.setMemo(param.getMemo());
                orderDetlMapper.insert(detl);
            } else {
                throw new RuntimeException("该单据的卷号已存在," + vn.getVolumeNumber());
            }
        }
@@ -2403,7 +2519,7 @@
    @Override
    @Transactional
    public R unQualifiedOrder(ReturnOrderConfirmParam param) {
    public R unQualifiedOrder(UnQualifiedOrderConfirmParam param) {
        if (Cools.isEmpty(param.getOrderNumber())) {
            param.setOrderNumber("UQCK" + DateUtils.convert(new Date(), DateUtils.yyyyMMdd));
        }
@@ -2420,6 +2536,7 @@
            order.setCreateTime(new Date());
            order.setSettle(1L);
            order.setDocType(27L);
            order.setMemo(param.getMemo());
            orderMapper.insert(order);
        } else {
            // 1.2 存在,更新单据状态
@@ -2431,14 +2548,14 @@
        // 2. 一一对应遍历
        List<ReturnOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
        List<UnQualifiedOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
        for (int i = 0; i < volList.size(); i++) {
            ReturnOrderConfirmParam.VolumeNumber vn = volList.get(i);
            UnQualifiedOrderConfirmParam.VolumeNumber vn = volList.get(i);
            // 查询是否已存在该 detl
            OrderDetl detl = orderDetlMapper.selectByOrderNoAndPkgGroupNoAndVolumeNo(
                    param.getOrderNumber(), param.getPackageGroupNo(), vn.getVolumeNumber()
            OrderDetl detl = orderDetlMapper.selectByOrderNoAndVolumeNo(
                    param.getOrderNumber(), vn.getVolumeNumber()
            );
            if (detl == null) {
@@ -2447,9 +2564,11 @@
                detl.setOrderNo(param.getOrderNumber());
                detl.setCreateTime(new Date());
                detl.setAnfme(1.0);
                detl.setBrand(param.getPackageGroupNo());   // 包装组号
                detl.setModel(vn.getVolumeNumber());     // 卷号
                detl.setMemo(param.getMemo());
                orderDetlMapper.insert(detl);
            } else {
                throw new RuntimeException("该单据的卷号已存在," + vn.getVolumeNumber());
            }
        }