fix(mes): 电力作业计划生成工单兼容编码规则缺失
- 生成工单时优先使用 PRO_WORK_ORDER_CODE 编码规则,规则不存在时降级为时间戳编码,避免被“编码规则不存在”阻断
- 新增 PRO_WORK_ORDER_CODE 编码规则幂等初始化 SQL
Co-Authored-By: Claude <noreply@anthropic.com>
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ============================================================ |
| | | -- ç产工åç¼ç è§åï¼PRO_WORK_ORDER_CODEï¼åå§å |
| | | -- |
| | | -- èæ¯ï¼ |
| | | -- çµåä½ä¸è®¡åâçæå·¥åâä¾èµç¼ç è§å PRO_WORK_ORDER_CODEï¼ |
| | | -- è¥åºä¸ç¼ºå°è¯¥è§åï¼ä¼æåºâç¼ç è§åä¸åå¨âã |
| | | -- |
| | | -- 说æï¼ |
| | | -- 1. èæ¬å¯é夿§è¡ï¼å·²åå¨åè·³è¿ï¼ã |
| | | -- 2. çæçç¼ç æ ¼å¼ï¼WO_yyyyMMdd + 3 使µæ°´å·ï¼ä¾å¦ WO_20261019001ã |
| | | -- 3. åæ®µç±»åï¼2=å½åæ¥æï¼3=åºå®å符ï¼4=æµæ°´å·ï¼ |
| | | -- å¾ªç¯æ¹å¼ï¼3=æå¤©ï¼è¡¥é½æ¹å¼ï¼1=左补é½ã |
| | | -- ============================================================ |
| | | |
| | | -- 1. ç¼ç è§å主表 |
| | | INSERT INTO mes_md_auto_code_rule |
| | | (code, name, description, max_length, padded, padded_char, padded_method, status, remark, creator, updater, create_time, update_time, deleted) |
| | | SELECT 'PRO_WORK_ORDER_CODE', 'ç产工åç¼ç ', 'ç产工åèªå¨ç¼ç ', 15, b'1', '0', 1, 0, NULL, '1', '1', NOW(), NOW(), b'0' |
| | | FROM DUAL |
| | | WHERE NOT EXISTS ( |
| | | SELECT 1 FROM mes_md_auto_code_rule WHERE code = 'PRO_WORK_ORDER_CODE' AND deleted = b'0' |
| | | ); |
| | | |
| | | -- 2. è§ååæ®µï¼åºå®åç¼ WO_ |
| | | INSERT INTO mes_md_auto_code_part |
| | | (rule_id, sort, type, length, date_format, fix_character, serial_start_no, serial_step, cycle_flag, cycle_method, remark, creator, updater, create_time, update_time, deleted) |
| | | SELECT r.id, 1, 3, 3, NULL, 'WO_', NULL, NULL, NULL, NULL, 'åºå®åç¼', '1', '1', NOW(), NOW(), b'0' |
| | | FROM mes_md_auto_code_rule r |
| | | WHERE r.code = 'PRO_WORK_ORDER_CODE' AND r.deleted = b'0' |
| | | AND NOT EXISTS ( |
| | | SELECT 1 FROM mes_md_auto_code_part p WHERE p.rule_id = r.id AND p.sort = 1 AND p.deleted = b'0' |
| | | ); |
| | | |
| | | -- 3. è§ååæ®µï¼æ¥æ yyyyMMdd |
| | | INSERT INTO mes_md_auto_code_part |
| | | (rule_id, sort, type, length, date_format, fix_character, serial_start_no, serial_step, cycle_flag, cycle_method, remark, creator, updater, create_time, update_time, deleted) |
| | | SELECT r.id, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, 'æ¥æ', '1', '1', NOW(), NOW(), b'0' |
| | | FROM mes_md_auto_code_rule r |
| | | WHERE r.code = 'PRO_WORK_ORDER_CODE' AND r.deleted = b'0' |
| | | AND NOT EXISTS ( |
| | | SELECT 1 FROM mes_md_auto_code_part p WHERE p.rule_id = r.id AND p.sort = 2 AND p.deleted = b'0' |
| | | ); |
| | | |
| | | -- 4. è§ååæ®µï¼æµæ°´å·ï¼æå¤©å¾ªç¯ï¼ä» 1 å¼å§ï¼æ¥é¿ 1ï¼ |
| | | INSERT INTO mes_md_auto_code_part |
| | | (rule_id, sort, type, length, date_format, fix_character, serial_start_no, serial_step, cycle_flag, cycle_method, remark, creator, updater, create_time, update_time, deleted) |
| | | SELECT r.id, 3, 4, 3, NULL, NULL, 1, 1, b'1', 3, 'æµæ°´å·', '1', '1', NOW(), NOW(), b'0' |
| | | FROM mes_md_auto_code_rule r |
| | | WHERE r.code = 'PRO_WORK_ORDER_CODE' AND r.deleted = b'0' |
| | | AND NOT EXISTS ( |
| | | SELECT 1 FROM mes_md_auto_code_part p WHERE p.rule_id = r.id AND p.sort = 3 AND p.deleted = b'0' |
| | | ); |
| | |
| | | } |
| | | // 3. ç»è£
å·¥å |
| | | MesProWorkOrderSaveReqVO workOrderReq = new MesProWorkOrderSaveReqVO(); |
| | | workOrderReq.setCode(autoCodeRecordService.generateAutoCode( |
| | | MesMdAutoCodeRuleCodeEnum.PRO_WORK_ORDER_CODE.getCode())); |
| | | workOrderReq.setCode(generateWorkOrderCode()); |
| | | workOrderReq.setName(plan.getName()); |
| | | workOrderReq.setType(convertPlanTypeToWorkOrderType(plan.getPlanType())); |
| | | workOrderReq.setOrderSourceType(MesProWorkOrderSourceTypeEnum.MAINTENANCE_PLAN.getType()); |
| | |
| | | + String.format("%03d", (int) (Math.random() * 1000)); |
| | | } |
| | | |
| | | /** |
| | | * çæå·¥åç¼ç |
| | | * |
| | | * ä¼å
使ç¨ç¼ç è§åï¼è¥ç¯å¢ä¸æªé
ç½® PRO_WORK_ORDER_CODE è§åï¼åé级为æ¶é´æ³ç¼ç ï¼é¿å
çæå·¥åè¢«é»æ |
| | | */ |
| | | private String generateWorkOrderCode() { |
| | | try { |
| | | return autoCodeRecordService.generateAutoCode( |
| | | MesMdAutoCodeRuleCodeEnum.PRO_WORK_ORDER_CODE.getCode()); |
| | | } catch (Exception e) { |
| | | log.warn("[generateWorkOrderCode] ç¼ç è§å {} ä¸åå¨ï¼ä½¿ç¨æ¶é´æ³çæ", |
| | | MesMdAutoCodeRuleCodeEnum.PRO_WORK_ORDER_CODE.getCode(), e); |
| | | return "WO" + DateUtil.format(java.time.LocalDateTime.now(), "yyyyMMddHHmmssSSS"); |
| | | } |
| | | } |
| | | |
| | | private MesProMaintenancePlanDO validatePlanExists(Long id) { |
| | | MesProMaintenancePlanDO plan = planMapper.selectById(id); |
| | | if (plan == null) { |