xiaoyi
昨天 4bec63c802692a402039f0d99eae068d26d63c55
yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/item/MdmItemServiceImpl.java
@@ -107,7 +107,7 @@
    @Transactional(rollbackFor = Exception.class)
    public void updateItem(MdmItemSaveReqVO updateReqVO) {
        // 校验存在
        validateItemExists(updateReqVO.getId());
        MdmItemDO previousItem = validateItemExists(updateReqVO.getId());
        // 校验数据
        validateItemSaveData(updateReqVO);
@@ -120,7 +120,7 @@
        // 根据同步开关决定:打开则同步到 MES,关闭则取消同步(从 MES 删除)
        if (Boolean.TRUE.equals(updateReqVO.getSyncMes())) {
            syncItemToMes(updateReqVO);
            syncItemToMes(updateReqVO, previousItem.getCode());
        } else {
            mesMdItemApi.deleteItem(updateReqVO.getId());
        }
@@ -139,6 +139,10 @@
     * 同步失败将抛出异常,回滚本行事务(本行的 MDM 操作一并回滚,不影响其它行)。
     */
    private void syncItemToMes(MdmItemSaveReqVO reqVO) {
        syncItemToMes(reqVO, null);
    }
    private void syncItemToMes(MdmItemSaveReqVO reqVO, String previousCode) {
        // 解析计量单位 id -> code
        String unitCode = null;
        if (reqVO.getUnitMeasureId() != null) {
@@ -157,9 +161,11 @@
        // 组装同步 DTO
        MesMdItemSyncReqDTO syncReqDTO = new MesMdItemSyncReqDTO();
        syncReqDTO.setCode(reqVO.getCode());
        syncReqDTO.setPreviousCode(previousCode);
        syncReqDTO.setMdmItemId(reqVO.getId());
        syncReqDTO.setName(reqVO.getName());
        syncReqDTO.setSpecification(reqVO.getSpecification());
        syncReqDTO.setColor(reqVO.getColor());
        syncReqDTO.setUnitCode(unitCode);
        syncReqDTO.setItemTypeCode(itemTypeCode);
        syncReqDTO.setSafeStockFlag(Boolean.TRUE); // 保留 MDM 的 minStock/maxStock,避免被 MES 清零
@@ -515,6 +521,7 @@
            saveReqVO.setName(importVO.getName());
            saveReqVO.setBarCode(importVO.getBarCode());
            saveReqVO.setSpecification(importVO.getSpecification());
            saveReqVO.setColor(importVO.getColor());
            saveReqVO.setCategoryId(categoryId);
            saveReqVO.setUnitMeasureId(unitMeasureId);
            saveReqVO.setUnitMeasureId2(unitMeasureId2);
@@ -587,4 +594,4 @@
                StrUtil.blankToDefault(importVO.getName(), "(名称和编码为空的行)"));
    }
}
}