云
2 天以前 251be431ad12399fe4ebce599c353d05dcec7888
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskServiceImpl.java
@@ -23,6 +23,7 @@
import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTaskStatusEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum;
import cn.iocoder.yudao.module.mes.framework.qrcode.MesTraceCodeUtils;
import cn.iocoder.yudao.module.mes.service.pro.batch.MesProBatchService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
@@ -285,22 +286,24 @@
    /**
     * 解析追溯码定位仓库批次:依次匹配批次号、袋码、托盘码,生产批次经桥接返回仓库批次
     */
    private MesWmBatchDO resolveWmBatchByScanCode(String scanCode) {
        if (StrUtil.isBlank(scanCode)) {
    private MesWmBatchDO resolveWmBatchByScanCode(String rawCode) {
        if (StrUtil.isBlank(rawCode)) {
            return null;
        }
        // 追溯二维码内容为「追溯网址?code=码值」,先统一提取码值再匹配
        String scanCode = MesTraceCodeUtils.extractCode(rawCode);
        // 1. 直接命中仓库批次号
        MesWmBatchDO wmBatch = mesWmBatchService.getBatchByCode(scanCode);
        if (wmBatch != null) {
            return wmBatch;
        }
        // 2. 命中袋码
        MesProBagCodeDO bag = bagCodeMapper.selectByCode(scanCode);
        MesProBagCodeDO bag = bagCodeMapper.selectByScanCode(scanCode);
        if (bag != null && bag.getBatchId() != null) {
            return bridgeProBatch(bag.getBatchId());
        }
        // 3. 命中托盘码
        MesProPalletDO pallet = palletMapper.selectByCode(scanCode);
        MesProPalletDO pallet = palletMapper.selectByScanCode(scanCode);
        if (pallet != null && pallet.getBatchId() != null) {
            return bridgeProBatch(pallet.getBatchId());
        }