| | |
| | | private void validateItemSaveData(MesMdItemSaveReqVO reqVO) { |
| | | // 校验物料编码的唯一性 |
| | | validateItemCodeUnique(reqVO.getId(), reqVO.getCode()); |
| | | // 校验物料名称的唯一性 |
| | | // 校验物料名称的唯一性:MDM 主数据以编码为唯一标识,允许同名不同规格 |
| | | if (reqVO.getMdmItemId() == null) { |
| | | validateItemNameUnique(reqVO.getId(), reqVO.getName()); |
| | | } |
| | | // 校验物料分类存在 |
| | | validateItemTypeExists(reqVO.getItemTypeId()); |
| | | // 校验计量单位存在 |
| | |
| | | } |
| | | |
| | | private void validateItemNameUnique(Long id, String name) { |
| | | MesMdItemDO item = itemMapper.selectByName(name); |
| | | if (item == null) { |
| | | return; |
| | | } |
| | | if (ObjUtil.notEqual(item.getId(), id)) { |
| | | // 使用列表查询:存量数据可能存在同名物料,避免 selectOne 直接抛异常 |
| | | List<MesMdItemDO> items = itemMapper.selectList(MesMdItemDO::getName, name); |
| | | if (items.stream().anyMatch(item -> ObjUtil.notEqual(item.getId(), id))) { |
| | | throw exception(MD_ITEM_NAME_DUPLICATE); |
| | | } |
| | | } |