yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/MesMdItemController.java
@@ -81,6 +81,14 @@ return success(buildItemVO(item)); } @GetMapping("/get-by-mdm-item-id") @Operation(summary = "æ ¹æ® MDM ç©æç¼å·è·å¾ MES ç©æäº§å") @Parameter(name = "mdmItemId", description = "MDM ç©æç¼å·", required = true, example = "1024") public CommonResult<MesMdItemRespVO> getItemByMdmItemId(@RequestParam("mdmItemId") Long mdmItemId) { MesMdItemDO item = itemService.getItemByMdmItemId(mdmItemId); return success(buildItemVO(item)); } @GetMapping("/page") @Operation(summary = "è·å¾ç©æäº§åå页") public CommonResult<PageResult<MesMdItemRespVO>> getItemPage(@Valid MesMdItemPageReqVO pageReqVO) { yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/vo/MesMdItemPageReqVO.java
@@ -30,6 +30,9 @@ @Schema(description = "ç©æåç±»ç¼å·", example = "1") private Long itemTypeId; @Schema(description = "æé¤çç©æåç±»ç¼ç ï¼åæ¶æé¤å ¶ååç±»ï¼", example = "EQUIPMENT") private String excludeItemTypeCode; @Schema(description = "ç¶æ", example = "0") private Integer status; yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/vo/MesMdItemRespVO.java
@@ -20,6 +20,9 @@ @ExcelProperty("ç©æç¼å·") private Long id; @Schema(description = "MDM ç©æç¼å·", example = "1024") private Long mdmItemId; /** æåºï¼æ°å¼è¶å°è¶é å */ private Integer sort; yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/item/MesMdItemMapper.java
@@ -26,14 +26,19 @@ @Mapper public interface MesMdItemMapper extends BaseMapperX<MesMdItemDO> { default PageResult<MesMdItemDO> selectPage(MesMdItemPageReqVO reqVO, Collection<Long> itemTypeIds) { return selectPage(reqVO, new LambdaQueryWrapperX<MesMdItemDO>() default PageResult<MesMdItemDO> selectPage(MesMdItemPageReqVO reqVO, Collection<Long> itemTypeIds, Collection<Long> excludedItemTypeIds) { LambdaQueryWrapperX<MesMdItemDO> query = new LambdaQueryWrapperX<MesMdItemDO>() .inIfPresent(MesMdItemDO::getId, reqVO.getIds()) .likeIfPresent(MesMdItemDO::getCode, reqVO.getCode()) .likeIfPresent(MesMdItemDO::getName, reqVO.getName()) .inIfPresent(MesMdItemDO::getItemTypeId, itemTypeIds) .eqIfPresent(MesMdItemDO::getStatus, reqVO.getStatus()) .betweenIfPresent(MesMdItemDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(MesMdItemDO::getCreateTime, reqVO.getCreateTime()); if (CollUtil.isNotEmpty(excludedItemTypeIds)) { query.notIn(MesMdItemDO::getItemTypeId, excludedItemTypeIds); } return selectPage(reqVO, query .orderByAsc(MesMdItemDO::getSort) .orderByDesc(MesMdItemDO::getId)); } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemServiceImpl.java
@@ -2,6 +2,7 @@ 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; @@ -290,8 +291,19 @@ 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 @@ -419,4 +431,4 @@ return item; } } } yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemServiceImplTest.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,49 @@ package cn.iocoder.yudao.module.mes.service.md.item; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.MesMdItemPageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemTypeDO; import cn.iocoder.yudao.module.mes.dal.mysql.md.item.MesMdItemMapper; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import java.util.List; import java.util.Set; import static org.junit.jupiter.api.Assertions.assertSame; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) class MesMdItemServiceImplTest { @InjectMocks private MesMdItemServiceImpl itemService; @Mock private MesMdItemMapper itemMapper; @Mock private MesMdItemTypeService itemTypeService; @Test void getItemPage_excludesEquipmentAndItsChildren() { MesMdItemPageReqVO reqVO = new MesMdItemPageReqVO(); reqVO.setExcludeItemTypeCode("EQUIPMENT"); MesMdItemTypeDO equipment = new MesMdItemTypeDO().setId(100L).setCode("EQUIPMENT"); MesMdItemTypeDO equipmentChild = new MesMdItemTypeDO().setId(101L).setParentId(100L); PageResult<MesMdItemDO> expected = new PageResult<>(List.of(), 0L); when(itemTypeService.getItemTypeByCode("EQUIPMENT")).thenReturn(equipment); when(itemTypeService.getItemTypeChildrenList(100L)).thenReturn(List.of(equipmentChild)); when(itemMapper.selectPage(reqVO, null, Set.of(100L, 101L))).thenReturn(expected); PageResult<MesMdItemDO> result = itemService.getItemPage(reqVO); assertSame(expected, result); verify(itemMapper).selectPage(reqVO, null, Set.of(100L, 101L)); } }