1
1 天以前 33df2026a4a69be7badbc0342fff7e1f544c58a8
lsh#自动组托完善
5个文件已修改
63 ■■■■ 已修改文件
rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java
@@ -18,4 +18,5 @@
    R AGVBindAndInTaskStart(WaitPakinParam waitPakinPda, Long loginUserId);
    R AGVBindAndInTaskStart(String barcode);
    boolean AGVBindAndInTaskStart(String barcode, String sta);
}
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
@@ -63,6 +63,14 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean AGVBindAndInTaskStart(String barcode, String sta) {
        //验证条码
        checkStaStatus(barcode,sta);
        return true;
    }
    @Override
    public R getStaMsgSelect(Map<String, Object> params) {
        String sta = params.get("sta").toString();
        if (Cools.isEmpty(sta)) {
@@ -248,15 +256,9 @@
            throw new CoolException("容器码不能为空");
        }
        if (Cools.isEmpty(sta)) {
            throw new CoolException("接驳位条码不能为空");
            throw new CoolException("站点信息不能为空");
        }
        WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
                .eq(WaitPakin::getBarcode, barcode)
                .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val)
        );
        if (Cools.isEmpty(waitPakin)) {
            throw new CoolException("容器码未找到组托信息,请检查组托状态");
        }
        BasStation isBarcodeSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                        .eq(BasStation::getBarcode, barcode)
                , false
@@ -269,9 +271,6 @@
        );
        if (Cools.isEmpty(basStation)) {
            throw new CoolException("未找到站点信息");
        }
        if (!basStation.getUseStatus().equals("O")) {
            throw new CoolException("站点状态不为空闲");
        }
        if (!Cools.isEmpty(basStation.getContainerType())) {
            List<Long> longs1 = JSONObject.parseArray(basStation.getContainerType(), Long.class);
@@ -287,9 +286,6 @@
                    break;  // 找到匹配的就退出循环
                }
            }
//            boolean matches = containers.stream()
//                    .map(BasContainer::getCodeType)
//                    .anyMatch(codeType -> barcode.matches(codeType));
            if (!matches) {
                throw new CoolException("条码与站点不匹配");
            }
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -506,6 +506,10 @@
                    //组托
                    WaitPakinParam pakinParam = new WaitPakinParam();
                    pakinParam.setBarcode(palletId.get());
                    pakinParam.setStaNo(syncOrder.getStationId());
                    boolean itemsCheck = waitPakinService.mergeItemsCheck(pakinParam, loginUserId);
                    if (itemsCheck) {
                    CompletableFuture.runAsync(() -> {
                        try {
                            asyncMergeItemsWcs(pakinParam, syncOrder.getOrderNo(), loginUserId);
@@ -514,6 +518,7 @@
                        }
                    });
                }
                }
            });
        }
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java
@@ -11,6 +11,7 @@
    WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId);
    WaitPakin mergeItemsWcs(WaitPakinParam waitPakin, Long userId);
    boolean mergeItemsCheck(WaitPakinParam waitPakin, Long userId);
    WaitPakin unBind(WaitPakinParam param);
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -177,6 +177,38 @@
        return pakin;
    }
    /**
     * @author Munch D. Luffy
     * @date 2026/01/23
     * @description: PDA组拖前置检查
     * @version 1.0
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public synchronized boolean mergeItemsCheck(WaitPakinParam waitPakin, Long userId) {
        if (StringUtils.isBlank(waitPakin.getBarcode())) {
            throw new CoolException("参数错误:托盘码为空!!");
        }
        WaitPakin pakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
                .eq(WaitPakin::getBarcode, waitPakin.getBarcode()));
        if (!Objects.isNull(pakin)) {
            throw new CoolException("托盘码:" + waitPakin.getBarcode() + "已被组托单:" + pakin.getCode() + "使用!!");
        }
        List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, waitPakin.getBarcode()));
        if (!locs.isEmpty()) {
            List<String> locCodes = locs.stream().map(Loc::getCode).collect(Collectors.toList());
            String join = StringUtils.join(locCodes, ",");
            throw new CoolException("托盘码:" + waitPakin.getBarcode() + "已被库位:" + join + "使用!!");
        }
        String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_WAIT_PAKIN_CODE, null);
        if (StringUtils.isBlank(ruleCode)) {
            throw new CoolException("编码规则错误: 编码规则「SYS_WAIT_PAKIN_CODE」规则是不存在");
        }
        return agvService.AGVBindAndInTaskStart(waitPakin.getBarcode(),waitPakin.getStaNo());
    }
    /**