| | |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.MesMdItemPageReqVO; |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void updateItem(MesMdItemSaveReqVO updateReqVO) { |
| | | // 校验存在 |
| | | validateItemExists(updateReqVO.getId()); |
| | | MesMdItemDO existingItem = validateItemExists(updateReqVO.getId()); |
| | | // 校验数据 |
| | | validateItemSaveData(updateReqVO); |
| | | validateItemSaveData(updateReqVO, existingItem); |
| | | |
| | | // 更新 |
| | | MesMdItemDO updateObj = BeanUtils.toBean(updateReqVO, MesMdItemDO.class); |
| | |
| | | } |
| | | |
| | | private void validateItemSaveData(MesMdItemSaveReqVO reqVO) { |
| | | validateItemSaveData(reqVO, null); |
| | | } |
| | | |
| | | private void validateItemSaveData(MesMdItemSaveReqVO reqVO, MesMdItemDO existingItem) { |
| | | // 校验物料编码的唯一性 |
| | | validateItemCodeUnique(reqVO.getId(), reqVO.getCode()); |
| | | // 校验物料名称的唯一性:MDM 主数据以编码为唯一标识,允许同名不同规格 |
| | | if (reqVO.getMdmItemId() == null) { |
| | | // 校验物料名称的唯一性:MDM 主数据以编码为唯一标识,允许同名不同规格。 |
| | | // 更新时前端可能未回传 mdmItemId,需要以库中记录的来源为准,否则会误判为本地物料 |
| | | boolean mdmItem = reqVO.getMdmItemId() != null |
| | | || (existingItem != null && existingItem.getMdmItemId() != null); |
| | | if (!mdmItem) { |
| | | validateItemNameUnique(reqVO.getId(), reqVO.getName()); |
| | | } |
| | | // 校验物料分类存在 |
| | |
| | | List<MesMdItemTypeDO> children = itemTypeService.getItemTypeChildrenList(pageReqVO.getItemTypeId()); |
| | | itemTypeIds.addAll(convertSet(children, MesMdItemTypeDO::getId)); |
| | | } |
| | | // 生产物料管理等页面可按分类编码排除设备及其子分类;底层设备主数据仍保留给设备仓和库存流水使用。 |
| | | Set<Long> excludedItemTypeIds = null; |
| | | if (StrUtil.isNotBlank(pageReqVO.getExcludeItemTypeCode())) { |
| | | MesMdItemTypeDO excludedType = itemTypeService.getItemTypeByCode(pageReqVO.getExcludeItemTypeCode()); |
| | | if (excludedType != null) { |
| | | excludedItemTypeIds = new HashSet<>(); |
| | | excludedItemTypeIds.add(excludedType.getId()); |
| | | List<MesMdItemTypeDO> children = itemTypeService.getItemTypeChildrenList(excludedType.getId()); |
| | | excludedItemTypeIds.addAll(convertSet(children, MesMdItemTypeDO::getId)); |
| | | } |
| | | } |
| | | // 分页查询 |
| | | return itemMapper.selectPage(pageReqVO, itemTypeIds); |
| | | return itemMapper.selectPage(pageReqVO, itemTypeIds, excludedItemTypeIds); |
| | | } |
| | | |
| | | @Override |
| | |
| | | return item; |
| | | } |
| | | |
| | | } |
| | | } |