sql/mysql/fix_kyzn_mes_md_item_type_code_dup_20261102.sql
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ -- åº·ææºè½ mom-kyznï¼ç©æåç±»ç¼ç éå¤å¯¼è´ãç©æç®¡ç-ç©ææ°å¢ã500 ä¿®å¤èæ¬ -- ç°è±¡ï¼POST /admin-api/mdm/item/create è¿å {"code":500,"msg":"ç³»ç»å¼å¸¸"} -- org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2 -- ä½äº MesMdItemTypeMapper.selectByCode -> MesMdItemTypeServiceImpl.getItemTypeByCode -> MesMdItemApiImpl.buildSaveReqVO -- æ ¹å ï¼mes_md_item_type ä¸ãç¼çº¿ã(parent=3, IT_002) ä¸é¡¶å±ãè¾ æã(IT_002) ç¼ç éå¤ï¼ -- MDM ç©æåæ¥å° MES æ¶æ code æ¥ MES åç±»ï¼selectOne å½ä¸ 2 è¡ç´æ¥æå¼å¸¸ -> 500ã -- åæ¶ MDM 计éåä½ç¼ç 为 002/003(ç±³/ä»¶)ãåç±»ç¼ç (å¦ 004) ä¸ MES åç±»ç¼ç (IT_00x) ä¸éç¨ï¼ -- æ è¿éæãç¼çº¿ãçç¼ç æ¹ä¸ºä¸ MDM åä½ç¼ç ä¸è´ç 002ï¼ä½¿åæ¥é¾è·¯å¯ç¨ã -- æ§è¡åºï¼101.245.92.159:9000/mom-kyznï¼å®¹å¨ mysqlï¼ï¼å·²å¤ä»½ï¼/data/backup_mes_md_item_type_20261102.sql -- å¹çï¼æ id å®ä½ï¼å¯é夿§è¡ USE `mom-kyzn`; -- 1. æ¸ çæ¬æ¬¡ææ¥è¿ç¨ä¸æå ¥ç临æ¶è¡ï¼è¥åå¨ï¼ UPDATE mes_md_item_type SET deleted = 1 WHERE id = 17 AND code = '002'; -- 2. éå¤ç¼ç ä¿®æ£ï¼13/2 è®©åº IT_002ï¼ç¼çº¿(14) æ¹ä¸º 002ï¼ä¸ MDM åä½ãç±³ãç¼ç ä¸è´ï¼ UPDATE mes_md_item_type SET code = 'IT_010' WHERE id = 13 AND code = 'IT_002'; UPDATE mes_md_item_type SET code = 'IT_002-1' WHERE id = 2 AND code = 'IT_002'; UPDATE mes_md_item_type SET code = '002' WHERE id = 14 AND code = 'IT_002'; -- 3. æ ¡éªï¼ä¸åºåæéå¤ç¼ç SELECT code, COUNT(*) AS cnt FROM mes_md_item_type WHERE deleted = 0 GROUP BY code HAVING cnt > 1; SELECT id, code, name, parent_id FROM mes_md_item_type WHERE id IN (2, 13, 14) ORDER BY id; yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/enums/ErrorCodeConstants.java
@@ -26,6 +26,7 @@ ErrorCode MDM_ITEM_CATEGORY_PARENT_NOT_EXISTS = new ErrorCode(1_050_054, "ç¶åç±»ä¸åå¨"); ErrorCode MDM_ITEM_CATEGORY_EXISTS_CHILDREN = new ErrorCode(1_050_055, "åå¨ååç±»ï¼æ æ³å é¤"); ErrorCode MDM_ITEM_CATEGORY_EXISTS_ITEM = new ErrorCode(1_050_056, "åç±»ä¸åå¨ç©æï¼æ æ³å é¤"); ErrorCode MDM_ITEM_CATEGORY_NOT_SYNC_MES = new ErrorCode(1_050_057, "ç©æåç±»ï¼id={}ï¼å¨ MES ä¸ä¸åå¨ï¼æ æ³åæ¥ï¼è¯·å å¨ MES ç©æåç±»ä¸å建ç¼ç ä¸è´ä¸æªéå¤çåç±»"); // ========== 计éåä½ç¸å ³ 1-050-101 ~ 1-050-150 ========== ErrorCode MDM_UNIT_MEASURE_NOT_EXISTS = new ErrorCode(1_050_101, "计éåä½ä¸åå¨"); yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/item/MdmItemServiceImpl.java
@@ -152,6 +152,11 @@ String itemTypeCode = null; if (reqVO.getCategoryId() != null) { CommonResult<MesMdItemTypeRespDTO> itemType = mesMdItemTypeApi.getItemType(reqVO.getCategoryId()); // åç±»å¨ MES ä¾§ä¸å卿¶ï¼å¦å岿°æ®ä¸ MDM åç±»ä¸ MES åç±»ä¸åæ¥ï¼ï¼ // ç»åºæç¡®çä¸å¡æç¤ºï¼è䏿¯æ NullPointerException åæ 500 if (itemType == null || itemType.getData() == null) { throw exception(MDM_ITEM_CATEGORY_NOT_SYNC_MES, reqVO.getCategoryId()); } itemTypeCode = itemType.getData().getCode(); } // ç»è£ 忥 DTO yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/item/MesMdItemTypeMapper.java
@@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemTypeDO; import org.apache.ibatis.annotations.Mapper; import java.util.Comparator; import java.util.List; /** @@ -31,8 +32,21 @@ return selectOne(MesMdItemTypeDO::getParentId, parentId, MesMdItemTypeDO::getCode, code); } default List<MesMdItemTypeDO> selectListByCode(String code) { return selectList(MesMdItemTypeDO::getCode, code); } default MesMdItemTypeDO selectByCode(String code) { return selectOne(MesMdItemTypeDO::getCode, code); // ç¼ç å¨å岿°æ®ä¸å¹¶ä¸æ¯å¯ä¸çº¦æï¼å¦ç¶åç±»ä¸çãç¼çº¿ãä¸é¡¶å±ãè¾ æã齿¾ç¨è¿ IT_002ï¼ï¼ // ç´æ¥ç¨ selectOne ä¼å¨å½ä¸å¤è¡æ¶æ TooManyResultsExceptionï¼è¿éæ¹ä¸ºæå表æ¥è¯¢ã List<MesMdItemTypeDO> list = selectListByCode(code); if (list.isEmpty()) { return null; } // å½ä¸å¤è¡æ¶å id æå°ç䏿¡ï¼ææ©å建çåç±»ï¼ï¼ä¿è¯åæ¥é¾è·¯å¯ç¨ return list.stream() .min(Comparator.comparing(MesMdItemTypeDO::getId)) .orElse(null); } default Long selectCountByParentId(Long parentId) {