refactor(safety): 人员与车间字段全面改为主数据关联
问题:模块初版把「负责人/巡检人/上报人/整改人/复查人/申请人/审批人/监护人/
保管人/讲师/组织人/车间」全部做成纯文本,人名靠手打、车间靠手输,
与人力资源员工档案、MES 车间主数据完全脱节,无法核对、无法联动、无法追责。
改动(统一模式:xxx_id 关联 + xxx_name 保留为快照):
- 新增 SafetyRefResolver:模块内所有人员/车间引用统一走这里解析
· requireEmployee(id, errorCode) / findEmployee / employeeMap(ids)
· requireWorkshop(id) / findWorkshop / workshopMap(ids)
· 批量方法一次性查好,避免逐条 N+1
- 17 个字段新增 id 列(SQL: sql/mysql/safety_master_data_link_20261029.sql,幂等)
· safety_org.leader_id
· safety_inspection_point.workshop_id / owner_id
· safety_inspection.inspector_id
· safety_hazard.reporter_id / assignee_id / rechecker_id
· safety_work_permit.workshop_id / applicant_id / approver_id / guardian_id
· safety_work_permit_monitor.guardian_id
· safety_material.manager_id
· safety_training.trainer_id
· safety_drill.organizer_id
· safety_accident.workshop_id / reporter_id
- 保存时从主数据带出名称写快照;查询时用主数据最新值覆盖快照,
员工改名/调岗、车间改名后台账自动跟着变;主数据被删则回退快照保证可读
- 「整改人与复查人不能同一人」「申请人不能审批自己」改为按员工编号比较,
避免同名不同人误判;新增错误码 SAFETY_PERMIT_SELF_APPROVE 给出明确提示
- 台账导出全部走批量回填
- 证件分页改用 fillDisplayFieldsBatch,修掉逐条查员工的 N+1
- 修复单条 get 接口只返回快照不回填主数据的问题(巡检点位、安全组织)
验证:mvn compile/package 通过;8 类业务端到端跑通(含改名联动)
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ============================================================ |
| | | -- å®å
¨ç产 - 人åä¸è½¦é´å段å
¨é¢æ¹ä¸ºä¸»æ°æ®å
³è |
| | | -- çææ¶é´ï¼2026-10-29 |
| | | -- |
| | | -- èæ¯ï¼æ¨¡ååçæãè´è´£äºº / å·¡æ£äºº / 䏿¥äºº / æ´æ¹äºº / 夿¥äºº / ç³è¯·äºº / |
| | | -- 审æ¹äºº / çæ¤äºº / ä¿ç®¡äºº / è®²å¸ / ç»ç»äºº / 车é´ãå
¨é¨åæäºçº¯ææ¬ï¼ |
| | | -- ä¸äººåèµæºå工档æ¡ãMES 车é´ä¸»æ°æ®å®å
¨è±èï¼äººåé ææã车é´é æè¾ã |
| | | -- |
| | | -- åæ³ï¼ç»ä¸æ¨¡å¼ï¼ä¸ safety_certificate ä¸è´ï¼ï¼ |
| | | -- 1. æ°å¢ xxx_id å
³èä¸»æ°æ®ï¼employee å
³è hrm_employee.idï¼workshop å
³è mes_md_workshop.id |
| | | -- 2. åææ¬åä¿çï¼é级为ãå¿«ç
§ãï¼ä¿åæ¶ä»ä¸»æ°æ®å¸¦åºï¼æ¥è¯¢æ¶ç¨ä¸»æ°æ®ææ°å¼è¦çï¼ |
| | | -- ä¸»æ°æ®è¢«å æåå²èæ°æ®æ¶åéå°å¿«ç
§ï¼ä¿è¯èè®°å½ä»å¯è¯»ï¼å³ãç¹å«çå¯ä»¥ææãï¼ |
| | | -- 3. id åä¸å¾ NULL å
许ï¼é¿å
è¿ç§»å¡ä½å岿°æ® |
| | | -- |
| | | -- å¹çï¼å
¨é¨ç¨ information_schema 夿åå ALTERï¼å¯é夿§è¡ |
| | | -- ============================================================ |
| | | |
| | | -- ---------- éç¨ï¼æ°å¢åçè¿ç¨å¼åæ³ï¼MySQL æ ADD COLUMN IF NOT EXISTSï¼ ---------- |
| | | DROP PROCEDURE IF EXISTS sp_safety_add_col; |
| | | DELIMITER $$ |
| | | CREATE PROCEDURE sp_safety_add_col(IN p_table VARCHAR(64), IN p_col VARCHAR(64), |
| | | IN p_def VARCHAR(255), IN p_comment VARCHAR(255), IN p_after VARCHAR(64)) |
| | | BEGIN |
| | | IF NOT EXISTS (SELECT 1 FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = p_table AND column_name = p_col) THEN |
| | | SET @s = CONCAT('ALTER TABLE `', p_table, '` ADD COLUMN `', p_col, '` ', p_def, |
| | | ' COMMENT ''', p_comment, ''' AFTER `', p_after, '`'); |
| | | PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st; |
| | | END IF; |
| | | IF NOT EXISTS (SELECT 1 FROM information_schema.statistics |
| | | WHERE table_schema = DATABASE() AND table_name = p_table AND index_name = CONCAT('idx_', p_col)) THEN |
| | | SET @s2 = CONCAT('CREATE INDEX `idx_', p_col, '` ON `', p_table, '` (`', p_col, '`)'); |
| | | PREPARE st2 FROM @s2; EXECUTE st2; DEALLOCATE PREPARE st2; |
| | | END IF; |
| | | END$$ |
| | | DELIMITER ; |
| | | |
| | | -- ---------- 1. å®å
¨ç»ç»æ¶æï¼è´è´£äºº ---------- |
| | | CALL sp_safety_add_col('safety_org', 'leader_id', 'bigint NULL', 'è´è´£äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'name'); |
| | | |
| | | -- ---------- 2. å·¡æ£ç¹ä½ï¼æå±è½¦é´ + 责任人 ---------- |
| | | CALL sp_safety_add_col('safety_inspection_point', 'workshop_id', 'bigint NULL', 'æå±è½¦é´ï¼å
³è mes_md_workshop.idï¼', 'point_type'); |
| | | CALL sp_safety_add_col('safety_inspection_point', 'owner_id', 'bigint NULL', '责任人ï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'inspect_cycle'); |
| | | |
| | | -- ---------- 3. å·¡æ£è®°å½ï¼å·¡æ£äºº ---------- |
| | | CALL sp_safety_add_col('safety_inspection', 'inspector_id', 'bigint NULL', 'å·¡æ£äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'inspector'); |
| | | |
| | | -- ---------- 4. 鿣ï¼ä¸æ¥äºº / æ´æ¹è´£ä»»äºº / 夿¥äºº ---------- |
| | | CALL sp_safety_add_col('safety_hazard', 'reporter_id', 'bigint NULL', '䏿¥äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'reporter'); |
| | | CALL sp_safety_add_col('safety_hazard', 'assignee_id', 'bigint NULL', 'æ´æ¹è´£ä»»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'assignee'); |
| | | CALL sp_safety_add_col('safety_hazard', 'rechecker_id', 'bigint NULL', '夿¥äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'rechecker'); |
| | | |
| | | -- ---------- 5. é«å±ä½ä¸ç¥¨ï¼ä½ä¸è½¦é´ / ç³è¯·äºº / 审æ¹äºº / çæ¤äºº ---------- |
| | | CALL sp_safety_add_col('safety_work_permit', 'workshop_id', 'bigint NULL', 'ä½ä¸è½¦é´ï¼å
³è mes_md_workshop.idï¼', 'permit_type'); |
| | | CALL sp_safety_add_col('safety_work_permit', 'applicant_id', 'bigint NULL', 'ç³è¯·äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'applicant'); |
| | | CALL sp_safety_add_col('safety_work_permit', 'approver_id', 'bigint NULL', '审æ¹äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'approver'); |
| | | CALL sp_safety_add_col('safety_work_permit', 'guardian_id', 'bigint NULL', 'çæ¤äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'guardian'); |
| | | |
| | | -- ---------- 6. ä½ä¸çæ¤è®°å½ï¼çæ¤äºº ---------- |
| | | CALL sp_safety_add_col('safety_work_permit_monitor', 'guardian_id', 'bigint NULL', 'çæ¤äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'guardian'); |
| | | |
| | | -- ---------- 7. åºæ¥ç©èµï¼ä¿ç®¡äºº ---------- |
| | | CALL sp_safety_add_col('safety_material', 'manager_id', 'bigint NULL', 'ä¿ç®¡äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'manager'); |
| | | |
| | | -- ---------- 8. å®å
¨å¹è®ï¼è®²å¸/ç»ç»äºº ---------- |
| | | CALL sp_safety_add_col('safety_training', 'trainer_id', 'bigint NULL', '讲å¸/ç»ç»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'trainer'); |
| | | |
| | | -- ---------- 9. æ¶é²æ¼ç»ï¼ç»ç»äºº ---------- |
| | | CALL sp_safety_add_col('safety_drill', 'organizer_id', 'bigint NULL', 'ç»ç»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'organizer'); |
| | | |
| | | -- ---------- 10. äºæ
ç»è®°ï¼æå±è½¦é´ + ç»è®°äºº ---------- |
| | | CALL sp_safety_add_col('safety_accident', 'workshop_id', 'bigint NULL', 'æå±è½¦é´ï¼å
³è mes_md_workshop.idï¼', 'accident_type'); |
| | | CALL sp_safety_add_col('safety_accident', 'reporter_id', 'bigint NULL', 'ç»è®°äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼', 'reporter'); |
| | | |
| | | -- ---------- 11. åææ¬åæ³¨éæ¹ä¸ºãå¿«ç
§ãè¯ä¹ ---------- |
| | | ALTER TABLE `safety_org` MODIFY COLUMN `leader_name` varchar(50) DEFAULT NULL COMMENT 'è´è´£äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼'; |
| | | ALTER TABLE `safety_inspection_point` MODIFY COLUMN `workshop_name` varchar(100) DEFAULT NULL COMMENT 'æå±è½¦é´ï¼å¿«ç
§ï¼ç±è½¦é´ä¸»æ°æ®å¸¦åºï¼', |
| | | MODIFY COLUMN `owner_name` varchar(50) DEFAULT NULL COMMENT '责任人å§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼'; |
| | | ALTER TABLE `safety_inspection` MODIFY COLUMN `inspector` varchar(50) DEFAULT NULL COMMENT 'å·¡æ£äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼'; |
| | | ALTER TABLE `safety_hazard` MODIFY COLUMN `reporter` varchar(50) DEFAULT NULL COMMENT '䏿¥äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼', |
| | | MODIFY COLUMN `assignee` varchar(50) DEFAULT NULL COMMENT 'æ´æ¹è´£ä»»äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼', |
| | | MODIFY COLUMN `rechecker` varchar(50) DEFAULT NULL COMMENT '夿¥äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼'; |
| | | ALTER TABLE `safety_work_permit` MODIFY COLUMN `workshop_name` varchar(100) DEFAULT NULL COMMENT 'ä½ä¸è½¦é´ï¼å¿«ç
§ï¼ç±è½¦é´ä¸»æ°æ®å¸¦åºï¼', |
| | | MODIFY COLUMN `applicant` varchar(50) DEFAULT NULL COMMENT 'ç³è¯·äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼', |
| | | MODIFY COLUMN `approver` varchar(50) DEFAULT NULL COMMENT '审æ¹äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼', |
| | | MODIFY COLUMN `guardian` varchar(50) DEFAULT NULL COMMENT 'çæ¤äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼'; |
| | | ALTER TABLE `safety_work_permit_monitor` MODIFY COLUMN `guardian` varchar(50) DEFAULT NULL COMMENT 'çæ¤äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼'; |
| | | ALTER TABLE `safety_material` MODIFY COLUMN `manager` varchar(50) DEFAULT NULL COMMENT 'ä¿ç®¡äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼'; |
| | | ALTER TABLE `safety_training` MODIFY COLUMN `trainer` varchar(50) DEFAULT NULL COMMENT '讲å¸/ç»ç»äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼'; |
| | | ALTER TABLE `safety_drill` MODIFY COLUMN `organizer` varchar(50) DEFAULT NULL COMMENT 'ç»ç»äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼'; |
| | | ALTER TABLE `safety_accident` MODIFY COLUMN `workshop_name` varchar(100) DEFAULT NULL COMMENT 'æå±è½¦é´ï¼å¿«ç
§ï¼ç±è½¦é´ä¸»æ°æ®å¸¦åºï¼', |
| | | MODIFY COLUMN `reporter` varchar(50) DEFAULT NULL COMMENT 'ç»è®°äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼'; |
| | | |
| | | -- ---------- 12. æ¸
ç临æ¶è¿ç¨ ---------- |
| | | DROP PROCEDURE IF EXISTS sp_safety_add_col; |
| | | |
| | | -- ---------- 13. æ ¡éª ---------- |
| | | SELECT TABLE_NAME, COLUMN_NAME, COLUMN_COMMENT |
| | | FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND TABLE_NAME LIKE 'safety%' |
| | | AND (COLUMN_NAME LIKE '%\_id' OR COLUMN_NAME IN ('inspector','reporter','assignee','rechecker','applicant','approver','guardian','manager','trainer','organizer','workshop_name','leader_name')) |
| | | ORDER BY TABLE_NAME, ORDINAL_POSITION; |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:cert:query')") |
| | | public CommonResult<PageResult<SafetyCertificateRespVO>> page(@Valid SafetyCertificatePageReqVO reqVO) { |
| | | var page = certificateService.getCertificatePage(reqVO); |
| | | // æ¹éè¡¥å
¨æè¯äººææ°æ¡£æ¡ï¼å§å/å·¥å·/é¨é¨ï¼ï¼é¿å
éæ¡æ¥è¯¢ |
| | | // æ¹éè¡¥å
¨æè¯äººææ°æ¡£æ¡ï¼å§å/å·¥å·/é¨é¨ï¼ï¼ä¸æ¬¡æ§æ¥å¥½é¿å
N+1 |
| | | certificateService.fillEmployeeInfo(page.getList()); |
| | | var result = BeanUtils.toBean(page, SafetyCertificateRespVO.class); |
| | | for (int i = 0; i < page.getList().size(); i++) { |
| | | certificateService.fillDisplayFields(page.getList().get(i), result.getList().get(i)); |
| | | } |
| | | certificateService.fillDisplayFieldsBatch(page.getList(), result.getList()); |
| | | return success(result); |
| | | } |
| | | |
| | |
| | | List<cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyCertificateDO> certs = |
| | | certificateService.getExpiringCertificates(days); |
| | | certificateService.fillEmployeeInfo(certs); |
| | | List<SafetyCertificateRespVO> list = certs.stream() |
| | | .map(cert -> { |
| | | var resp = BeanUtils.toBean(cert, SafetyCertificateRespVO.class); |
| | | certificateService.fillDisplayFields(cert, resp); |
| | | return resp; |
| | | }).toList(); |
| | | return success(list); |
| | | var resps = BeanUtils.toBean(certs, SafetyCertificateRespVO.class); |
| | | certificateService.fillDisplayFieldsBatch(certs, resps); |
| | | return success(resps); |
| | | } |
| | | |
| | | } |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:hazard:query')") |
| | | public CommonResult<SafetyHazardRespVO> get(@RequestParam("id") Long id) { |
| | | var hazard = hazardService.getHazard(id); |
| | | hazardService.fillPersonNames(java.util.List.of(hazard)); |
| | | var resp = BeanUtils.toBean(hazard, SafetyHazardRespVO.class); |
| | | SafetyHazardService.fillHazardDisplay(hazard, resp); |
| | | return success(resp); |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:hazard:query')") |
| | | public CommonResult<PageResult<SafetyHazardRespVO>> page(@Valid SafetyHazardPageReqVO reqVO) { |
| | | var page = hazardService.getHazardPage(reqVO); |
| | | hazardService.fillPersonNames(page.getList()); |
| | | var result = BeanUtils.toBean(page, SafetyHazardRespVO.class); |
| | | for (int i = 0; i < page.getList().size(); i++) { |
| | | SafetyHazardService.fillHazardDisplay(page.getList().get(i), result.getList().get(i)); |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:inspection-point:query')") |
| | | public CommonResult<SafetyInspectionPointRespVO> getPoint(@RequestParam("id") Long id) { |
| | | var point = inspectionService.getPoint(id); |
| | | // åæ¡æ¥è¯¢ä¹è¦åå¡«ä¸»æ°æ®ææ°å¼ï¼ä¸è½åªè¿åå¿«ç
§ |
| | | inspectionService.fillPointRefs(java.util.List.of(point)); |
| | | var resp = BeanUtils.toBean(point, SafetyInspectionPointRespVO.class); |
| | | SafetyInspectionService.fillPointDisplay(point, resp); |
| | | resp.setLastInspectTime(inspectionService.getLastInspectTime(id)); |
| | |
| | | public CommonResult<PageResult<SafetyInspectionPointRespVO>> getPointPage( |
| | | @Valid SafetyInspectionPointPageReqVO reqVO) { |
| | | var page = inspectionService.getPointPage(reqVO); |
| | | inspectionService.fillPointRefs(page.getList()); |
| | | var result = BeanUtils.toBean(page, SafetyInspectionPointRespVO.class); |
| | | for (int i = 0; i < page.getList().size(); i++) { |
| | | SafetyInspectionService.fillPointDisplay(page.getList().get(i), result.getList().get(i)); |
| | |
| | | @Operation(summary = "è·å¾å¯ç¨ä¸çå·¡æ£ç¹ä½ç²¾ç®å表ï¼ç§»å¨ç«¯å·¡æ£éæ©ï¼") |
| | | @PreAuthorize("@ss.hasPermission('safety:inspection-point:query')") |
| | | public CommonResult<List<SafetyInspectionPointRespVO>> getPointSimpleList() { |
| | | List<SafetyInspectionPointRespVO> list = inspectionService.getEnabledPointList().stream() |
| | | var points = inspectionService.getEnabledPointList(); |
| | | inspectionService.fillPointRefs(points); |
| | | List<SafetyInspectionPointRespVO> list = points.stream() |
| | | .map(point -> { |
| | | var resp = BeanUtils.toBean(point, SafetyInspectionPointRespVO.class); |
| | | SafetyInspectionService.fillPointDisplay(point, resp); |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:inspection:query')") |
| | | public CommonResult<SafetyInspectionRespVO> getRecord(@RequestParam("id") Long id) { |
| | | var record = inspectionService.getInspection(id); |
| | | inspectionService.fillInspectorNames(java.util.List.of(record)); |
| | | var resp = BeanUtils.toBean(record, SafetyInspectionRespVO.class); |
| | | resp.setPointTypeName(cn.iocoder.yudao.module.mes.enums.safety.SafetyInspectionPointTypeEnum |
| | | .getNameByType(record.getPointType())); |
| | |
| | | public CommonResult<PageResult<SafetyInspectionRespVO>> getRecordPage( |
| | | @Valid SafetyInspectionPageReqVO reqVO) { |
| | | var page = inspectionService.getInspectionPage(reqVO); |
| | | inspectionService.fillInspectorNames(page.getList()); |
| | | var result = BeanUtils.toBean(page, SafetyInspectionRespVO.class); |
| | | for (int i = 0; i < page.getList().size(); i++) { |
| | | var record = page.getList().get(i); |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:material:query')") |
| | | public CommonResult<SafetyMaterialRespVO> get(@RequestParam("id") Long id) { |
| | | var material = materialService.getMaterial(id); |
| | | materialService.fillManagers(java.util.List.of(material)); |
| | | var resp = BeanUtils.toBean(material, SafetyMaterialRespVO.class); |
| | | SafetyMaterialService.fillMaterialDisplay(material, resp); |
| | | return success(resp); |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:material:query')") |
| | | public CommonResult<PageResult<SafetyMaterialRespVO>> page(@Valid SafetyMaterialPageReqVO reqVO) { |
| | | var page = materialService.getMaterialPage(reqVO); |
| | | materialService.fillManagers(page.getList()); |
| | | var result = BeanUtils.toBean(page, SafetyMaterialRespVO.class); |
| | | for (int i = 0; i < page.getList().size(); i++) { |
| | | SafetyMaterialService.fillMaterialDisplay(page.getList().get(i), result.getList().get(i)); |
| | |
| | | @Operation(summary = "è·å¾ä½äºå®å
¨åºåçç©èµå表ï¼é¢è¦ï¼") |
| | | @PreAuthorize("@ss.hasPermission('safety:material:query')") |
| | | public CommonResult<List<SafetyMaterialRespVO>> belowSafeStock() { |
| | | List<SafetyMaterialRespVO> list = materialService.getBelowSafeStockList().stream() |
| | | var materials = materialService.getBelowSafeStockList(); |
| | | materialService.fillManagers(materials); |
| | | List<SafetyMaterialRespVO> list = materials.stream() |
| | | .map(material -> { |
| | | var resp = BeanUtils.toBean(material, SafetyMaterialRespVO.class); |
| | | SafetyMaterialService.fillMaterialDisplay(material, resp); |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:material:query')") |
| | | public CommonResult<List<SafetyMaterialRespVO>> expiringList( |
| | | @RequestParam(value = "days", required = false) Integer days) { |
| | | List<SafetyMaterialRespVO> list = materialService.getExpiringList(days).stream() |
| | | var materials = materialService.getExpiringList(days); |
| | | materialService.fillManagers(materials); |
| | | List<SafetyMaterialRespVO> list = materials.stream() |
| | | .map(material -> { |
| | | var resp = BeanUtils.toBean(material, SafetyMaterialRespVO.class); |
| | | SafetyMaterialService.fillMaterialDisplay(material, resp); |
| | |
| | | var org = orgService.getOrg(id); |
| | | var resp = new SafetyOrgRespVO(); |
| | | org2resp(org, resp); |
| | | // è´è´£äººç¨åå·¥æ¡£æ¡ææ°å§åè¦çå¿«ç
§ |
| | | if (org.getLeaderId() != null) { |
| | | var employee = orgService.getLeader(org.getLeaderId()); |
| | | if (employee != null) { |
| | | resp.setLeaderName(employee.getName()); |
| | | resp.setLeaderPhone(employee.getPhone()); |
| | | } |
| | | } |
| | | return success(resp); |
| | | } |
| | | |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:training:query')") |
| | | public CommonResult<SafetyTrainingRespVO> get(@RequestParam("id") Long id) { |
| | | var training = trainingService.getTraining(id); |
| | | trainingService.fillTrainers(java.util.List.of(training)); |
| | | var resp = BeanUtils.toBean(training, SafetyTrainingRespVO.class); |
| | | SafetyTrainingService.fillTrainingDisplay(training, resp); |
| | | return success(resp); |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:training:query')") |
| | | public CommonResult<PageResult<SafetyTrainingRespVO>> page(@Valid SafetyTrainingPageReqVO reqVO) { |
| | | var page = trainingService.getTrainingPage(reqVO); |
| | | trainingService.fillTrainers(page.getList()); |
| | | var result = BeanUtils.toBean(page, SafetyTrainingRespVO.class); |
| | | for (int i = 0; i < page.getList().size(); i++) { |
| | | SafetyTrainingService.fillTrainingDisplay(page.getList().get(i), result.getList().get(i)); |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:drill:query')") |
| | | public CommonResult<SafetyDrillRespVO> getDrill(@RequestParam("id") Long id) { |
| | | var drill = trainingService.getDrill(id); |
| | | trainingService.fillOrganizers(java.util.List.of(drill)); |
| | | var resp = BeanUtils.toBean(drill, SafetyDrillRespVO.class); |
| | | SafetyTrainingService.fillDrillDisplay(drill, resp); |
| | | return success(resp); |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:drill:query')") |
| | | public CommonResult<PageResult<SafetyDrillRespVO>> drillPage(@Valid SafetyDrillPageReqVO reqVO) { |
| | | var page = trainingService.getDrillPage(reqVO); |
| | | trainingService.fillOrganizers(page.getList()); |
| | | var result = BeanUtils.toBean(page, SafetyDrillRespVO.class); |
| | | for (int i = 0; i < page.getList().size(); i++) { |
| | | SafetyTrainingService.fillDrillDisplay(page.getList().get(i), result.getList().get(i)); |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:accident:query')") |
| | | public CommonResult<SafetyAccidentRespVO> getAccident(@RequestParam("id") Long id) { |
| | | var accident = trainingService.getAccident(id); |
| | | trainingService.fillAccidentRefs(java.util.List.of(accident)); |
| | | var resp = BeanUtils.toBean(accident, SafetyAccidentRespVO.class); |
| | | SafetyTrainingService.fillAccidentDisplay(accident, resp); |
| | | return success(resp); |
| | |
| | | public CommonResult<PageResult<SafetyAccidentRespVO>> accidentPage( |
| | | @Valid SafetyAccidentPageReqVO reqVO) { |
| | | var page = trainingService.getAccidentPage(reqVO); |
| | | trainingService.fillAccidentRefs(page.getList()); |
| | | var result = BeanUtils.toBean(page, SafetyAccidentRespVO.class); |
| | | for (int i = 0; i < page.getList().size(); i++) { |
| | | SafetyTrainingService.fillAccidentDisplay(page.getList().get(i), result.getList().get(i)); |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:permit:query')") |
| | | public CommonResult<SafetyWorkPermitRespVO> get(@RequestParam("id") Long id) { |
| | | var permit = permitService.getPermit(id); |
| | | permitService.fillPermitRefs(java.util.List.of(permit)); |
| | | var resp = BeanUtils.toBean(permit, SafetyWorkPermitRespVO.class); |
| | | SafetyWorkPermitService.fillPermitDisplay(permit, resp); |
| | | return success(resp); |
| | |
| | | @PreAuthorize("@ss.hasPermission('safety:permit:query')") |
| | | public CommonResult<PageResult<SafetyWorkPermitRespVO>> page(@Valid SafetyWorkPermitPageReqVO reqVO) { |
| | | var page = permitService.getPermitPage(reqVO); |
| | | permitService.fillPermitRefs(page.getList()); |
| | | var result = BeanUtils.toBean(page, SafetyWorkPermitRespVO.class); |
| | | for (int i = 0; i < page.getList().size(); i++) { |
| | | SafetyWorkPermitService.fillPermitDisplay(page.getList().get(i), result.getList().get(i)); |
| | |
| | | @Parameter(name = "permitId", description = "ä½ä¸ç¥¨ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:permit:query')") |
| | | public CommonResult<List<SafetyWorkPermitMonitorRespVO>> monitorList(@RequestParam("permitId") Long permitId) { |
| | | return success(BeanUtils.toBean(permitService.getMonitorList(permitId), |
| | | SafetyWorkPermitMonitorRespVO.class)); |
| | | var monitors = permitService.getMonitorList(permitId); |
| | | permitService.fillMonitorGuardians(monitors); |
| | | return success(BeanUtils.toBean(monitors, SafetyWorkPermitMonitorRespVO.class)); |
| | | } |
| | | |
| | | @PostMapping("/monitor/create") |
| | |
| | | @NotNull(message = "鿣ç¼å·ä¸è½ä¸ºç©º") |
| | | private Long id; |
| | | |
| | | @Schema(description = "æ´æ¹è´£ä»»äºº", requiredMode = Schema.RequiredMode.REQUIRED, example = "èµµå
") |
| | | @NotBlank(message = "æ´æ¹è´£ä»»äººä¸è½ä¸ºç©º") |
| | | @Size(max = 50) |
| | | private String assignee; |
| | | @Schema(description = "æ´æ¹è´£ä»»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©æ´æ¹è´£ä»»äºº") |
| | | private Long assigneeId; |
| | | |
| | | @Schema(description = "æ´æ¹æé") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | |
| | | @NotNull(message = "鿣ç¼å·ä¸è½ä¸ºç©º") |
| | | private Long id; |
| | | |
| | | @Schema(description = "夿¥äºº", requiredMode = Schema.RequiredMode.REQUIRED, example = "é±ä¸") |
| | | @NotBlank(message = "夿¥äººä¸è½ä¸ºç©º") |
| | | @Size(max = 50) |
| | | private String rechecker; |
| | | @Schema(description = "夿¥äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©å¤æ¥äºº") |
| | | private Long recheckerId; |
| | | |
| | | @Schema(description = "夿¥ç»è®ºï¼PASSED-éè¿ï¼REJECTED-ä¸éè¿", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotBlank(message = "夿¥ç»è®ºä¸è½ä¸ºç©º") |
| | |
| | | private String location; |
| | | private String description; |
| | | private String photoUrls; |
| | | @Schema(description = "䏿¥äººç¼å·") |
| | | private Long reporterId; |
| | | private String reporter; |
| | | private LocalDateTime reportTime; |
| | | @Schema(description = "æ´æ¹è´£ä»»äººç¼å·") |
| | | private Long assigneeId; |
| | | private String assignee; |
| | | private LocalDateTime assignTime; |
| | | private LocalDate rectifyDeadline; |
| | |
| | | private String rectifyDesc; |
| | | private String rectifyPhotoUrls; |
| | | private LocalDateTime rectifyTime; |
| | | @Schema(description = "夿¥äººç¼å·") |
| | | private Long recheckerId; |
| | | private String rechecker; |
| | | private LocalDateTime recheckTime; |
| | | private String recheckResult; |
| | |
| | | @Size(max = 2000) |
| | | private String photoUrls; |
| | | |
| | | @Schema(description = "䏿¥äºº", requiredMode = Schema.RequiredMode.REQUIRED, example = "çäº") |
| | | @NotBlank(message = "䏿¥äººä¸è½ä¸ºç©º") |
| | | @Size(max = 50) |
| | | private String reporter; |
| | | @Schema(description = "䏿¥äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©ä¸æ¥äºº") |
| | | private Long reporterId; |
| | | |
| | | @Schema(description = "䏿¥æ¶é´") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | |
| | | private String pointType; |
| | | @Schema(description = "ç¹ä½ç±»ååç§°") |
| | | private String pointTypeName; |
| | | @Schema(description = "æå±è½¦é´ç¼å·") |
| | | private Long workshopId; |
| | | private String workshopName; |
| | | private String location; |
| | | private String inspectItems; |
| | | private String inspectCycle; |
| | | @Schema(description = "å·¡æ£å¨æåç§°") |
| | | private String inspectCycleName; |
| | | @Schema(description = "责任人ç¼å·") |
| | | private Long ownerId; |
| | | private String ownerName; |
| | | private Integer status; |
| | | @Schema(description = "æè¿ä¸æ¬¡å·¡æ£æ¶é´") |
| | |
| | | @Pattern(regexp = "HIGH_VOLTAGE_ROOM|UNIT_AREA|DANGER_CHEMICAL|FIRE_AREA|WORKSHOP|OTHER", message = "ç¹ä½ç±»åä¸åæ³") |
| | | private String pointType; |
| | | |
| | | @Schema(description = "æå±è½¦é´/åºå") |
| | | @Size(max = 100) |
| | | private String workshopName; |
| | | @Schema(description = "æå±è½¦é´ï¼å
³è mes_md_workshopï¼") |
| | | private Long workshopId; |
| | | |
| | | @Schema(description = "å
·ä½ä½ç½®") |
| | | @Size(max = 200) |
| | |
| | | @Pattern(regexp = "SHIFT|DAILY|WEEKLY|MONTHLY", message = "å·¡æ£å¨æä¸åæ³") |
| | | private String inspectCycle; |
| | | |
| | | @Schema(description = "责任人") |
| | | @Size(max = 50) |
| | | private String ownerName; |
| | | @Schema(description = "责任人ï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long ownerId; |
| | | |
| | | @Schema(description = "ç¶æï¼0-å¯ç¨ï¼1-åç¨", example = "0") |
| | | @NotNull(message = "ç¶æä¸è½ä¸ºç©º") |
| | |
| | | @Schema(description = "ç¹ä½ç±»ååç§°") |
| | | private String pointTypeName; |
| | | private LocalDateTime inspectTime; |
| | | @Schema(description = "å·¡æ£äººç¼å·") |
| | | private Long inspectorId; |
| | | private String inspector; |
| | | private String result; |
| | | @Schema(description = "å·¡æ£ç»æåç§°") |
| | |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private LocalDateTime inspectTime; |
| | | |
| | | @Schema(description = "å·¡æ£äºº", requiredMode = Schema.RequiredMode.REQUIRED, example = "æå") |
| | | @NotBlank(message = "å·¡æ£äººä¸è½ä¸ºç©º") |
| | | @Size(max = 50) |
| | | private String inspector; |
| | | @Schema(description = "å·¡æ£äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©å·¡æ£äºº") |
| | | private Long inspectorId; |
| | | |
| | | @Schema(description = "å·¡æ£ç»æ", example = "NORMAL") |
| | | @Pattern(regexp = "NORMAL|ABNORMAL", message = "å·¡æ£ç»æåªè½ä¸ºæ£å¸¸æå¼å¸¸") |
| | |
| | | @Schema(description = "è·æææå¤©æ°ï¼è´æ°è¡¨ç¤ºå·²è¿æ") |
| | | private Long expireRemainingDays; |
| | | private Integer validityMonths; |
| | | @Schema(description = "ä¿ç®¡äººç¼å·") |
| | | private Long managerId; |
| | | private String manager; |
| | | private Integer status; |
| | | private String remark; |
| | |
| | | @Min(value = 0, message = "æææææ°ä¸è½ä¸ºè´æ°") |
| | | private Integer validityMonths; |
| | | |
| | | @Schema(description = "ä¿ç®¡äºº") |
| | | @Size(max = 50) |
| | | private String manager; |
| | | @Schema(description = "ä¿ç®¡äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long managerId; |
| | | |
| | | @Schema(description = "ç¶æï¼0-å¯ç¨ï¼1-åç¨", example = "0") |
| | | @NotNull(message = "ç¶æä¸è½ä¸ºç©º") |
| | |
| | | private Long id; |
| | | private Long parentId; |
| | | private String name; |
| | | @Schema(description = "è´è´£äººï¼åå·¥ç¼å·ï¼") |
| | | private Long leaderId; |
| | | @Schema(description = "è´è´£äººå§åï¼å¿«ç
§ï¼") |
| | | private String leaderName; |
| | | private String leaderPhone; |
| | | private String memberNames; |
| | |
| | | @Size(max = 100, message = "ç»ç»åç§°é¿åº¦ä¸è½è¶
è¿ 100 å") |
| | | private String name; |
| | | |
| | | @Schema(description = "è´è´£äººå§å") |
| | | @Size(max = 50) |
| | | private String leaderName; |
| | | |
| | | @Schema(description = "è´è´£äººçµè¯") |
| | | @Size(max = 30) |
| | | private String leaderPhone; |
| | | @Schema(description = "è´è´£äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long leaderId; |
| | | |
| | | @Schema(description = "æåå§åï¼éå·åé") |
| | | @Size(max = 500) |
| | |
| | | @NotNull(message = "ä½ä¸ç¥¨ç¼å·ä¸è½ä¸ºç©º") |
| | | private Long id; |
| | | |
| | | @Schema(description = "审æ¹äºº", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotBlank(message = "审æ¹äººä¸è½ä¸ºç©º") |
| | | @Size(max = 50) |
| | | private String approver; |
| | | @Schema(description = "审æ¹äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©å®¡æ¹äºº") |
| | | private Long approverId; |
| | | |
| | | @Schema(description = "审æ¹ç»è®ºï¼APPROVED-éè¿ï¼REJECTED-驳å", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotBlank(message = "审æ¹ç»è®ºä¸è½ä¸ºç©º") |
| | |
| | | private Long id; |
| | | private Long permitId; |
| | | private LocalDateTime monitorTime; |
| | | @Schema(description = "çæ¤äººç¼å·") |
| | | private Long guardianId; |
| | | private String guardian; |
| | | private String monitorContent; |
| | | private String abnormal; |
| | |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private LocalDateTime monitorTime; |
| | | |
| | | @Schema(description = "çæ¤äºº", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotBlank(message = "çæ¤äººä¸è½ä¸ºç©º") |
| | | @Size(max = 50) |
| | | private String guardian; |
| | | @Schema(description = "çæ¤äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©çæ¤äºº") |
| | | private Long guardianId; |
| | | |
| | | @Schema(description = "çæ¤å
容䏿
åµ") |
| | | @Size(max = 1000) |
| | |
| | | @Schema(description = "ä½ä¸ç±»ååç§°") |
| | | private String permitTypeName; |
| | | private String title; |
| | | @Schema(description = "ä½ä¸è½¦é´ç¼å·") |
| | | private Long workshopId; |
| | | private String workshopName; |
| | | private String location; |
| | | private String workContent; |
| | | @Schema(description = "ç³è¯·äººç¼å·") |
| | | private Long applicantId; |
| | | private String applicant; |
| | | private LocalDateTime applyTime; |
| | | private LocalDateTime planStartTime; |
| | |
| | | @Schema(description = "é£é©ç级åç§°") |
| | | private String riskLevelName; |
| | | private String safetyMeasures; |
| | | @Schema(description = "审æ¹äººç¼å·") |
| | | private Long approverId; |
| | | private String approver; |
| | | private LocalDateTime approveTime; |
| | | private String approveComment; |
| | | @Schema(description = "çæ¤äººç¼å·") |
| | | private Long guardianId; |
| | | private String guardian; |
| | | private String status; |
| | | @Schema(description = "ç¶æåç§°") |
| | |
| | | @Size(max = 200) |
| | | private String title; |
| | | |
| | | @Schema(description = "ä½ä¸åºå/车é´") |
| | | @Size(max = 100) |
| | | private String workshopName; |
| | | @Schema(description = "ä½ä¸è½¦é´ï¼å
³è mes_md_workshopï¼") |
| | | private Long workshopId; |
| | | |
| | | @Schema(description = "ä½ä¸å°ç¹") |
| | | @Size(max = 200) |
| | |
| | | @Size(max = 2000) |
| | | private String workContent; |
| | | |
| | | @Schema(description = "ç³è¯·äºº", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotBlank(message = "ç³è¯·äººä¸è½ä¸ºç©º") |
| | | @Size(max = 50) |
| | | private String applicant; |
| | | @Schema(description = "ç³è¯·äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©ç³è¯·äºº") |
| | | private Long applicantId; |
| | | |
| | | @Schema(description = "ç³è¯·æ¶é´") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | |
| | | @Size(max = 2000) |
| | | private String safetyMeasures; |
| | | |
| | | @Schema(description = "çæ¤äºº") |
| | | @Size(max = 50) |
| | | private String guardian; |
| | | @Schema(description = "çæ¤äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long guardianId; |
| | | |
| | | @Schema(description = "ä½ä¸ç¥¨éä»¶ URLï¼éå·åé") |
| | | @Size(max = 2000) |
| | |
| | | private String levelName; |
| | | private LocalDateTime occurTime; |
| | | private String location; |
| | | @Schema(description = "æå±è½¦é´ç¼å·") |
| | | private Long workshopId; |
| | | private String workshopName; |
| | | private String casualtyDesc; |
| | | private BigDecimal economicLoss; |
| | |
| | | private String description; |
| | | private String causeAnalysis; |
| | | private String measures; |
| | | @Schema(description = "ç»è®°äººç¼å·") |
| | | private Long reporterId; |
| | | private String reporter; |
| | | private LocalDateTime reportTime; |
| | | private String status; |
| | |
| | | @Size(max = 200) |
| | | private String location; |
| | | |
| | | @Schema(description = "æå±è½¦é´/åºå") |
| | | @Size(max = 100) |
| | | private String workshopName; |
| | | @Schema(description = "æå±è½¦é´ï¼å
³è mes_md_workshopï¼") |
| | | private Long workshopId; |
| | | |
| | | @Schema(description = "伤亡æ
åµ") |
| | | @Size(max = 500) |
| | |
| | | @Size(max = 2000) |
| | | private String measures; |
| | | |
| | | @Schema(description = "ç»è®°äºº") |
| | | @Size(max = 50) |
| | | private String reporter; |
| | | @Schema(description = "ç»è®°äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long reporterId; |
| | | |
| | | @Schema(description = "ç»è®°æ¶é´") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | |
| | | private String drillTypeName; |
| | | private LocalDate drillDate; |
| | | private String location; |
| | | @Schema(description = "ç»ç»äººç¼å·") |
| | | private Long organizerId; |
| | | private String organizer; |
| | | private String participants; |
| | | private Integer participantCount; |
| | |
| | | @Size(max = 200) |
| | | private String location; |
| | | |
| | | @Schema(description = "ç»ç»äºº") |
| | | @Size(max = 50) |
| | | private String organizer; |
| | | @Schema(description = "ç»ç»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long organizerId; |
| | | |
| | | @Schema(description = "åå 人åå§åï¼éå·åé") |
| | | @Size(max = 2000) |
| | |
| | | private String trainingTypeName; |
| | | private LocalDate trainDate; |
| | | private BigDecimal durationHours; |
| | | @Schema(description = "讲å¸/ç»ç»äººç¼å·") |
| | | private Long trainerId; |
| | | private String trainer; |
| | | private String location; |
| | | private String participants; |
| | |
| | | @DecimalMin(value = "0", message = "å¹è®å¦æ¶ä¸è½ä¸ºè´æ°") |
| | | private BigDecimal durationHours; |
| | | |
| | | @Schema(description = "讲å¸/ç»ç»äºº") |
| | | @Size(max = 50) |
| | | private String trainer; |
| | | @Schema(description = "讲å¸/ç»ç»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long trainerId; |
| | | |
| | | @Schema(description = "å¹è®å°ç¹") |
| | | @Size(max = 200) |
| | |
| | | private LocalDateTime occurTime; |
| | | /** åçå°ç¹ */ |
| | | private String location; |
| | | /** æå±è½¦é´/åºå */ |
| | | /** æå±è½¦é´ï¼å
³è mes_md_workshop.idï¼ */ |
| | | private Long workshopId; |
| | | /** æå±è½¦é´åç§°ï¼å¿«ç
§ï¼ç±è½¦é´ä¸»æ°æ®å¸¦åºï¼ */ |
| | | private String workshopName; |
| | | /** 伤亡æ
åµ */ |
| | | private String casualtyDesc; |
| | |
| | | private String causeAnalysis; |
| | | /** å¤çæªæ½ä¸æ´æ¹è¦æ± */ |
| | | private String measures; |
| | | /** ç»è®°äºº */ |
| | | /** ç»è®°äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long reporterId; |
| | | /** ç»è®°äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String reporter; |
| | | /** ç»è®°æ¶é´ */ |
| | | private LocalDateTime reportTime; |
| | |
| | | private LocalDate drillDate; |
| | | /** æ¼ç»å°ç¹ */ |
| | | private String location; |
| | | /** ç»ç»äºº */ |
| | | /** ç»ç»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long organizerId; |
| | | /** ç»ç»äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String organizer; |
| | | /** åå 人åå§åï¼éå·åé */ |
| | | private String participants; |
| | |
| | | private String description; |
| | | /** ç°åºç
§ç URLï¼éå·åéï¼ç§»å¨ç«¯æç
§ä¸ä¼ ï¼ */ |
| | | private String photoUrls; |
| | | /** 䏿¥äºº */ |
| | | /** 䏿¥äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long reporterId; |
| | | /** 䏿¥äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String reporter; |
| | | /** 䏿¥æ¶é´ */ |
| | | private LocalDateTime reportTime; |
| | | /** æ´æ¹è´£ä»»äººï¼åæ´¾ï¼ */ |
| | | /** æ´æ¹è´£ä»»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long assigneeId; |
| | | /** æ´æ¹è´£ä»»äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String assignee; |
| | | /** åæ´¾æ¶é´ */ |
| | | private LocalDateTime assignTime; |
| | |
| | | private String rectifyPhotoUrls; |
| | | /** æ´æ¹å®ææ¶é´ */ |
| | | private LocalDateTime rectifyTime; |
| | | /** 夿¥äºº */ |
| | | /** 夿¥äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long recheckerId; |
| | | /** 夿¥äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String rechecker; |
| | | /** 夿¥æ¶é´ */ |
| | | private LocalDateTime recheckTime; |
| | |
| | | private String pointType; |
| | | /** å·¡æ£æ¶é´ */ |
| | | private LocalDateTime inspectTime; |
| | | /** å·¡æ£äºº */ |
| | | /** å·¡æ£äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long inspectorId; |
| | | /** å·¡æ£äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String inspector; |
| | | /** å·¡æ£ç»æï¼NORMAL-æ£å¸¸ï¼ABNORMAL-å¼å¸¸ */ |
| | | private String result; |
| | |
| | | private String name; |
| | | /** ç¹ä½ç±»åï¼è§ SafetyInspectionPointTypeEnum */ |
| | | private String pointType; |
| | | /** æå±è½¦é´/åºå */ |
| | | /** æå±è½¦é´ï¼å
³è mes_md_workshop.idï¼ */ |
| | | private Long workshopId; |
| | | /** æå±è½¦é´åç§°ï¼å¿«ç
§ï¼ç±è½¦é´ä¸»æ°æ®å¸¦åºï¼ */ |
| | | private String workshopName; |
| | | /** å
·ä½ä½ç½® */ |
| | | private String location; |
| | |
| | | private String inspectItems; |
| | | /** å·¡æ£å¨æï¼è§ SafetyInspectCycleEnum */ |
| | | private String inspectCycle; |
| | | /** 责任人 */ |
| | | /** 责任人ï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long ownerId; |
| | | /** 责任人å§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String ownerName; |
| | | /** ç¶æï¼0-å¯ç¨ï¼1-åç¨ */ |
| | | private Integer status; |
| | |
| | | private LocalDate expireDate; |
| | | /** æææææ° */ |
| | | private Integer validityMonths; |
| | | /** ä¿ç®¡äºº */ |
| | | /** ä¿ç®¡äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long managerId; |
| | | /** ä¿ç®¡äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String manager; |
| | | /** ç¶æï¼0-å¯ç¨ï¼1-åç¨ */ |
| | | private Integer status; |
| | |
| | | private Long parentId; |
| | | /** ç»ç»åç§°ï¼å¦å®å
¨ç产å§åä¼ãå®å
¨ç®¡çé¨ */ |
| | | private String name; |
| | | /** è´è´£äººå§å */ |
| | | /** è´è´£äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long leaderId; |
| | | /** è´è´£äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String leaderName; |
| | | /** è´è´£äººçµè¯ */ |
| | | private String leaderPhone; |
| | |
| | | private LocalDate trainDate; |
| | | /** å¹è®å¦æ¶ */ |
| | | private BigDecimal durationHours; |
| | | /** 讲å¸/ç»ç»äºº */ |
| | | /** 讲å¸/ç»ç»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long trainerId; |
| | | /** 讲å¸/ç»ç»äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String trainer; |
| | | /** å¹è®å°ç¹ */ |
| | | private String location; |
| | |
| | | private String permitType; |
| | | /** ä½ä¸åç§° */ |
| | | private String title; |
| | | /** ä½ä¸åºå/è½¦é´ */ |
| | | /** ä½ä¸è½¦é´ï¼å
³è mes_md_workshop.idï¼ */ |
| | | private Long workshopId; |
| | | /** ä½ä¸è½¦é´åç§°ï¼å¿«ç
§ï¼ç±è½¦é´ä¸»æ°æ®å¸¦åºï¼ */ |
| | | private String workshopName; |
| | | /** ä½ä¸å°ç¹ */ |
| | | private String location; |
| | | /** ä½ä¸å
容ä¸èå´ */ |
| | | private String workContent; |
| | | /** ç³è¯·äºº */ |
| | | /** ç³è¯·äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long applicantId; |
| | | /** ç³è¯·äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String applicant; |
| | | /** ç³è¯·æ¶é´ */ |
| | | private LocalDateTime applyTime; |
| | |
| | | private String riskLevel; |
| | | /** å®å
¨æªæ½ */ |
| | | private String safetyMeasures; |
| | | /** 审æ¹äºº */ |
| | | /** 审æ¹äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long approverId; |
| | | /** 审æ¹äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String approver; |
| | | /** å®¡æ¹æ¶é´ */ |
| | | private LocalDateTime approveTime; |
| | | /** å®¡æ¹æè§ */ |
| | | private String approveComment; |
| | | /** çæ¤äºº */ |
| | | /** çæ¤äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long guardianId; |
| | | /** çæ¤äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String guardian; |
| | | /** ç¶æï¼è§ SafetyPermitStatusEnum */ |
| | | private String status; |
| | |
| | | private Long permitId; |
| | | /** çæ¤æ¶é´ */ |
| | | private LocalDateTime monitorTime; |
| | | /** çæ¤äºº */ |
| | | /** çæ¤äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long guardianId; |
| | | /** çæ¤äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String guardian; |
| | | /** çæ¤å
容䏿
åµ */ |
| | | private String monitorContent; |
| | |
| | | ErrorCode SAFETY_PERMIT_TIME_INVALID = new ErrorCode(1_040_965_002, "计åç»ææ¶é´å¿
é¡»æäºå¼å§æ¶é´"); |
| | | ErrorCode SAFETY_PERMIT_NOT_APPROVED = new ErrorCode(1_040_965_003, "ä½ä¸ç¥¨æªå®¡æ¹éè¿ï¼ä¸è½å¼å§ä½ä¸"); |
| | | ErrorCode SAFETY_PERMIT_GUARDIAN_REQUIRED = new ErrorCode(1_040_965_004, "é«å±ä½ä¸å¿
é¡»æå®çæ¤äºº"); |
| | | ErrorCode SAFETY_PERMIT_SELF_APPROVE = new ErrorCode(1_040_965_005, "ç³è¯·äººä¸è½å®¡æ¹èªå·±çä½ä¸ç¥¨"); |
| | | ErrorCode SAFETY_PERMIT_MONITOR_NOT_EXISTS = new ErrorCode(1_040_965_010, "çæ¤è®°å½ä¸åå¨"); |
| | | |
| | | // ========== ç©èµå°è´¦ 1_040_966_xxx ========== |
| | |
| | | ErrorCode SAFETY_DRILL_NOT_EXISTS = new ErrorCode(1_040_967_010, "æ¼ç»è®°å½ä¸åå¨"); |
| | | ErrorCode SAFETY_ACCIDENT_NOT_EXISTS = new ErrorCode(1_040_967_020, "äºæ
è®°å½ä¸åå¨"); |
| | | |
| | | // ========== ä¸»æ°æ®å¼ç¨ 1_040_969_xxx ========== |
| | | ErrorCode SAFETY_WORKSHOP_NOT_EXISTS = new ErrorCode(1_040_969_000, "车é´ä¸åå¨ï¼è¯·ä»è½¦é´ä¸»æ°æ®ä¸éæ©"); |
| | | ErrorCode SAFETY_EMPLOYEE_REQUIRED = new ErrorCode(1_040_969_001, "è¯·éæ©åå·¥"); |
| | | |
| | | // ========== å°è´¦å¯¼åº 1_040_968_xxx ========== |
| | | ErrorCode SAFETY_LEDGER_EXPORT_ITEM_UNKNOWN = new ErrorCode(1_040_968_000, "æªç¥çå°è´¦å¯¼åºé¡¹"); |
| | | ErrorCode SAFETY_LEDGER_DATE_RANGE_INVALID = new ErrorCode(1_040_968_001, "å¼å§æ¥æä¸è½æäºç»ææ¥æ"); |
| | |
| | | private SafetyCertificateMapper certificateMapper; |
| | | @Resource |
| | | private HrmEmployeeApi hrmEmployeeApi; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | |
| | | public Long createCertificate(SafetyCertificateSaveReqVO reqVO) { |
| | | reqVO.setId(null); |
| | |
| | | } |
| | | |
| | | /** |
| | | * æ¹éè¡¥å
¨å±ç¤ºåæ®µï¼æè¯äººæ¡£æ¡ä¸æ¬¡æ§æ¥å¥½ï¼é¿å
éæ¡æ¥è¯¢ |
| | | */ |
| | | public void fillDisplayFieldsBatch(List<SafetyCertificateDO> certs, List<SafetyCertificateRespVO> resps) { |
| | | var employeeMap = refResolver.employeeMap(certs.stream().map(SafetyCertificateDO::getEmployeeId).toList()); |
| | | for (int i = 0; i < certs.size(); i++) { |
| | | fillDisplayFields(certs.get(i), resps.get(i), employeeMap.get(certs.get(i).getEmployeeId())); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å个è¯ä»¶çå±ç¤ºå段补å
¨ï¼ç±»ååç§°ãç¶æåç§°ãå©ä½å¤©æ°ãæè¯äººæ¡£æ¡ï¼ |
| | | */ |
| | | public void fillDisplayFields(SafetyCertificateDO cert, SafetyCertificateRespVO respVO) { |
| | | fillDisplayFields(cert, respVO, cert.getEmployeeId() == null ? null |
| | | : hrmEmployeeApi.getEmployee(cert.getEmployeeId())); |
| | | } |
| | | |
| | | private void fillDisplayFields(SafetyCertificateDO cert, SafetyCertificateRespVO respVO, |
| | | HrmEmployeeSimpleDTO employee) { |
| | | respVO.setCertTypeName(SafetyCertificateTypeEnum.getNameByType(cert.getCertType())); |
| | | String status = resolveStatus(cert.getExpireDate(), cert.getWarnDays(), cert.getStatus()); |
| | | respVO.setStatus(status); |
| | |
| | | if (cert.getExpireDate() != null) { |
| | | respVO.setRemainingDays(ChronoUnit.DAYS.between(LocalDate.now(), cert.getExpireDate())); |
| | | } |
| | | HrmEmployeeSimpleDTO employee = cert.getEmployeeId() == null ? null |
| | | : hrmEmployeeApi.getEmployee(cert.getEmployeeId()); |
| | | if (employee != null) { |
| | | respVO.setEmployeeName(employee.getName()); |
| | | respVO.setEmployeeNo(employee.getEmployeeNo()); |
| | |
| | | package cn.iocoder.yudao.module.mes.service.safety; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.List; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static cn.iocoder.yudao.module.mes.enums.SafetyErrorCodeConstants.*; |
| | |
| | | |
| | | @Resource |
| | | private SafetyHazardMapper hazardMapper; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | |
| | | /** |
| | | * 鿣䏿¥ï¼å«ç§»å¨ç«¯æç
§ä¸ä¼ ç photoUrlsï¼ |
| | |
| | | SafetyHazardDO hazard = BeanUtils.toBean(reqVO, SafetyHazardDO.class); |
| | | hazard.setCode(hazardMapper.selectNextCode("HZ" + LocalDate.now().format(CODE_DATE))); |
| | | hazard.setTitle(StrUtil.trim(reqVO.getTitle())); |
| | | hazard.setReporter(StrUtil.trim(reqVO.getReporter())); |
| | | hazard.setReporterId(reqVO.getReporterId()); |
| | | hazard.setReporter(refResolver.requireEmployee(reqVO.getReporterId(), SAFETY_EMPLOYEE_REQUIRED).getName()); |
| | | hazard.setLevel(StrUtil.blankToDefault(reqVO.getLevel(), SafetyHazardLevelEnum.GENERAL.getLevel())); |
| | | hazard.setSource(StrUtil.blankToDefault(reqVO.getSource(), SafetyHazardSourceEnum.SELF_CHECK.getSource())); |
| | | hazard.setReportTime(reqVO.getReportTime() == null ? LocalDateTime.now() : reqVO.getReportTime()); |
| | |
| | | && !SafetyHazardStatusEnum.REJECTED.getStatus().equals(hazard.getStatus())) { |
| | | throw exception(SAFETY_HAZARD_STATUS_ERROR); |
| | | } |
| | | if (StrUtil.isBlank(reqVO.getAssignee())) { |
| | | if (reqVO.getAssigneeId() == null) { |
| | | throw exception(SAFETY_HAZARD_ASSIGNEE_REQUIRED); |
| | | } |
| | | var assignee = refResolver.requireEmployee(reqVO.getAssigneeId(), SAFETY_HAZARD_ASSIGNEE_REQUIRED); |
| | | SafetyHazardDO update = new SafetyHazardDO(); |
| | | update.setId(hazard.getId()); |
| | | update.setAssignee(StrUtil.trim(reqVO.getAssignee())); |
| | | update.setAssigneeId(assignee.getId()); |
| | | update.setAssignee(assignee.getName()); |
| | | update.setAssignTime(LocalDateTime.now()); |
| | | update.setRectifyDeadline(reqVO.getRectifyDeadline()); |
| | | update.setStatus(SafetyHazardStatusEnum.RECTIFYING.getStatus()); |
| | |
| | | if (!SafetyHazardStatusEnum.RECHECKING.getStatus().equals(hazard.getStatus())) { |
| | | throw exception(SAFETY_HAZARD_STATUS_ERROR); |
| | | } |
| | | String rechecker = StrUtil.trim(reqVO.getRechecker()); |
| | | if (StrUtil.isNotBlank(hazard.getAssignee()) && hazard.getAssignee().equals(rechecker)) { |
| | | var rechecker = refResolver.requireEmployee(reqVO.getRecheckerId(), SAFETY_EMPLOYEE_REQUIRED); |
| | | // ç¨åå·¥ç¼å·æ¯è¾ï¼æ¯å§åæ¯è¾å¯é ï¼ååä¸å人 / æ¹åé½ä¸ä¼è¯¯å¤ï¼ |
| | | if (hazard.getAssigneeId() != null && hazard.getAssigneeId().equals(rechecker.getId())) { |
| | | throw exception(SAFETY_HAZARD_SAME_OPERATOR); |
| | | } |
| | | boolean passed = "PASSED".equals(reqVO.getRecheckResult()); |
| | | SafetyHazardDO update = new SafetyHazardDO(); |
| | | update.setId(hazard.getId()); |
| | | update.setRechecker(rechecker); |
| | | update.setRecheckerId(rechecker.getId()); |
| | | update.setRechecker(rechecker.getName()); |
| | | update.setRecheckTime(LocalDateTime.now()); |
| | | update.setRecheckResult(reqVO.getRecheckResult()); |
| | | update.setRecheckRemark(reqVO.getRecheckRemark()); |
| | |
| | | } |
| | | |
| | | /** |
| | | * æ¹éå填䏿¥äºº / æ´æ¹è´£ä»»äºº / 夿¥äººçææ°å§å |
| | | */ |
| | | public void fillPersonNames(List<SafetyHazardDO> hazards) { |
| | | if (CollUtil.isEmpty(hazards)) { |
| | | return; |
| | | } |
| | | var ids = new java.util.ArrayList<Long>(hazards.size() * 3); |
| | | hazards.forEach(h -> { ids.add(h.getReporterId()); ids.add(h.getAssigneeId()); ids.add(h.getRecheckerId()); }); |
| | | var employeeMap = refResolver.employeeMap(ids); |
| | | hazards.forEach(hazard -> { |
| | | var reporter = employeeMap.get(hazard.getReporterId()); |
| | | if (reporter != null) hazard.setReporter(reporter.getName()); |
| | | var assignee = employeeMap.get(hazard.getAssigneeId()); |
| | | if (assignee != null) hazard.setAssignee(assignee.getName()); |
| | | var rechecker = employeeMap.get(hazard.getRecheckerId()); |
| | | if (rechecker != null) hazard.setRechecker(rechecker.getName()); |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * å±ç¤ºå段补å
¨ï¼ç级/æ¥æº/ç¶æåç§°ãè¶
ææ è®°ï¼ |
| | | */ |
| | | public static void fillHazardDisplay(SafetyHazardDO hazard, SafetyHazardRespVO respVO) { |
| | |
| | | package cn.iocoder.yudao.module.mes.service.safety; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | |
| | | private SafetyInspectionPointMapper pointMapper; |
| | | @Resource |
| | | private SafetyInspectionMapper inspectionMapper; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | |
| | | // ==================== å·¡æ£ç¹ä½ ==================== |
| | | |
| | |
| | | point.setCode(code); |
| | | point.setName(StrUtil.trim(reqVO.getName())); |
| | | point.setInspectCycle(StrUtil.blankToDefault(reqVO.getInspectCycle(), SafetyInspectCycleEnum.DAILY.getCycle())); |
| | | applyPointRefs(point, reqVO.getWorkshopId(), reqVO.getOwnerId()); |
| | | pointMapper.insert(point); |
| | | return point.getId(); |
| | | } |
| | |
| | | SafetyInspectionPointDO point = BeanUtils.toBean(reqVO, SafetyInspectionPointDO.class); |
| | | point.setCode(code); |
| | | point.setName(StrUtil.trim(reqVO.getName())); |
| | | applyPointRefs(point, reqVO.getWorkshopId(), reqVO.getOwnerId()); |
| | | pointMapper.updateById(point); |
| | | } |
| | | |
| | |
| | | */ |
| | | public List<SafetyInspectionPointDO> getEnabledPointList() { |
| | | return pointMapper.selectListByStatus(0); |
| | | } |
| | | |
| | | /** |
| | | * ç¹ä½çä¸»æ°æ®å¼ç¨ï¼è½¦é´ + 责任人ï¼ä»ä¸»æ°æ®å¸¦åºåç§°è½å¿«ç
§ |
| | | */ |
| | | private void applyPointRefs(SafetyInspectionPointDO point, Long workshopId, Long ownerId) { |
| | | point.setWorkshopId(workshopId); |
| | | if (workshopId == null) { |
| | | point.setWorkshopName(""); |
| | | } else { |
| | | point.setWorkshopName(refResolver.requireWorkshop(workshopId).getName()); |
| | | } |
| | | point.setOwnerId(ownerId); |
| | | if (ownerId == null) { |
| | | point.setOwnerName(""); |
| | | } else { |
| | | point.setOwnerName(refResolver.requireEmployee(ownerId, SAFETY_EMPLOYEE_REQUIRED).getName()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ¹éåå¡«ç¹ä½ç车é´åä¸è´£ä»»äººå§åï¼ç¨ä¸»æ°æ®ææ°å¼è¦çå¿«ç
§ï¼ |
| | | */ |
| | | public void fillPointRefs(List<SafetyInspectionPointDO> points) { |
| | | if (CollUtil.isEmpty(points)) { |
| | | return; |
| | | } |
| | | var workshopMap = refResolver.workshopMap(points.stream().map(SafetyInspectionPointDO::getWorkshopId).toList()); |
| | | var employeeMap = refResolver.employeeMap(points.stream().map(SafetyInspectionPointDO::getOwnerId).toList()); |
| | | points.forEach(point -> { |
| | | var workshop = workshopMap.get(point.getWorkshopId()); |
| | | if (workshop != null) { |
| | | point.setWorkshopName(workshop.getName()); |
| | | } |
| | | var employee = employeeMap.get(point.getOwnerId()); |
| | | if (employee != null) { |
| | | point.setOwnerName(employee.getName()); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | public static void fillPointDisplay(SafetyInspectionPointDO point, SafetyInspectionPointRespVO respVO) { |
| | |
| | | inspection.setPointId(point.getId()); |
| | | inspection.setPointName(point.getName()); |
| | | inspection.setPointType(point.getPointType()); |
| | | inspection.setInspector(StrUtil.trim(reqVO.getInspector())); |
| | | inspection.setInspectorId(reqVO.getInspectorId()); |
| | | inspection.setInspector(refResolver.requireEmployee(reqVO.getInspectorId(), SAFETY_EMPLOYEE_REQUIRED).getName()); |
| | | inspection.setResult(StrUtil.blankToDefault(reqVO.getResult(), "NORMAL")); |
| | | inspection.setInspectTime(reqVO.getInspectTime() == null ? LocalDateTime.now() : reqVO.getInspectTime()); |
| | | inspection.setHazardCount(reqVO.getHazardCount() == null ? 0 : reqVO.getHazardCount()); |
| | |
| | | return inspection; |
| | | } |
| | | |
| | | /** |
| | | * æ¹éåå¡«å·¡æ£äººææ°å§å |
| | | */ |
| | | public void fillInspectorNames(List<SafetyInspectionDO> records) { |
| | | if (CollUtil.isEmpty(records)) { |
| | | return; |
| | | } |
| | | var employeeMap = refResolver.employeeMap(records.stream().map(SafetyInspectionDO::getInspectorId).toList()); |
| | | records.forEach(record -> { |
| | | var employee = employeeMap.get(record.getInspectorId()); |
| | | if (employee != null) { |
| | | record.setInspector(employee.getName()); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** æè¿ä¸æ¬¡å·¡æ£æ¶é´ï¼ç¨äºç¹ä½å表å±ç¤ºï¼ */ |
| | | public LocalDateTime getLastInspectTime(Long pointId) { |
| | | SafetyInspectionDO latest = inspectionMapper.selectLatestByPointId(pointId); |
| | |
| | | if (start != null && end != null) { |
| | | reqVO.setInspectTime(new java.time.LocalDateTime[]{start.atStartOfDay(), end.atTime(23, 59, 59)}); |
| | | } |
| | | List<List<Object>> rows = inspectionService.getInspectionPage(reqVO).getList().stream() |
| | | var inspections = inspectionService.getInspectionPage(reqVO).getList(); |
| | | inspectionService.fillInspectorNames(inspections); |
| | | List<List<Object>> rows = inspections.stream() |
| | | .map(i -> Arrays.<Object>asList( |
| | | dateTime(i.getInspectTime()), str(i.getPointName()), |
| | | SafetyInspectionPointTypeEnum.getNameByType(i.getPointType()), |
| | |
| | | if (start != null && end != null) { |
| | | reqVO.setReportTime(new java.time.LocalDateTime[]{start.atStartOfDay(), end.atTime(23, 59, 59)}); |
| | | } |
| | | List<List<Object>> rows = hazardService.getHazardPage(reqVO).getList().stream() |
| | | var hazards = hazardService.getHazardPage(reqVO).getList(); |
| | | hazardService.fillPersonNames(hazards); |
| | | List<List<Object>> rows = hazards.stream() |
| | | .map(h -> Arrays.<Object>asList( |
| | | str(h.getCode()), str(h.getTitle()), |
| | | SafetyHazardLevelEnum.getNameByLevel(h.getLevel()), |
| | |
| | | if (start != null && end != null) { |
| | | reqVO.setPlanStartTime(new java.time.LocalDateTime[]{start.atStartOfDay(), end.atTime(23, 59, 59)}); |
| | | } |
| | | List<List<Object>> rows = permitService.getPermitPage(reqVO).getList().stream() |
| | | var permits = permitService.getPermitPage(reqVO).getList(); |
| | | permitService.fillPermitRefs(permits); |
| | | List<List<Object>> rows = permits.stream() |
| | | .map(p -> Arrays.<Object>asList( |
| | | str(p.getCode()), SafetyPermitTypeEnum.getNameByType(p.getPermitType()), |
| | | str(p.getTitle()), str(p.getWorkshopName()), str(p.getLocation()), |
| | |
| | | reqVO.setPageSize(5_000); |
| | | List<List<Object>> rows = new ArrayList<>(); |
| | | for (SafetyWorkPermitDO permit : permitService.getPermitPage(reqVO).getList()) { |
| | | for (SafetyWorkPermitMonitorDO monitor : permitService.getMonitorList(permit.getId())) { |
| | | var monitors = permitService.getMonitorList(permit.getId()); |
| | | permitService.fillMonitorGuardians(monitors); |
| | | for (SafetyWorkPermitMonitorDO monitor : monitors) { |
| | | rows.add(Arrays.asList(str(permit.getCode()), dateTime(monitor.getMonitorTime()), |
| | | str(monitor.getGuardian()), str(monitor.getMonitorContent()), str(monitor.getAbnormal()))); |
| | | } |
| | |
| | | var reqVO = new cn.iocoder.yudao.module.mes.controller.admin.safety.vo.material.SafetyMaterialPageReqVO(); |
| | | reqVO.setPageNo(1); |
| | | reqVO.setPageSize(50_000); |
| | | List<List<Object>> rows = materialService.getMaterialPage(reqVO).getList().stream() |
| | | var materials = materialService.getMaterialPage(reqVO).getList(); |
| | | materialService.fillManagers(materials); |
| | | List<List<Object>> rows = materials.stream() |
| | | .map(m -> Arrays.<Object>asList( |
| | | str(m.getCode()), str(m.getName()), |
| | | SafetyMaterialCategoryEnum.getNameByCategory(m.getCategory()), |
| | |
| | | private Sheet trainingSheet(LocalDate start, LocalDate end) { |
| | | List<String> headers = List.of("å¹è®æ¥æ", "å¹è®ä¸»é¢", "å¹è®ç±»å", "妿¶", "讲å¸/ç»ç»äºº", |
| | | "å¹è®å°ç¹", "åå 人æ°", "å¹è®å
容", "èæ ¸æ
åµ"); |
| | | List<List<Object>> rows = trainingService.listTrainingBetween(start, end).stream() |
| | | var trainings = trainingService.listTrainingBetween(start, end); |
| | | trainingService.fillTrainers(trainings); |
| | | List<List<Object>> rows = trainings.stream() |
| | | .map(t -> Arrays.<Object>asList( |
| | | date(t.getTrainDate()), str(t.getTitle()), |
| | | SafetyTrainingTypeEnum.getNameByType(t.getTrainingType()), |
| | |
| | | private Sheet drillSheet(LocalDate start, LocalDate end) { |
| | | List<String> headers = List.of("æ¼ç»æ¥æ", "æ¼ç»åç§°", "æ¼ç»ç±»å", "å°ç¹", "ç»ç»äºº", |
| | | "åå 人æ°", "æ¶é¿(åé)", "æ¼ç»è¿ç¨", "æ»ç»ä¸æ¹è¿"); |
| | | List<List<Object>> rows = trainingService.listDrillBetween(start, end).stream() |
| | | var drills = trainingService.listDrillBetween(start, end); |
| | | trainingService.fillOrganizers(drills); |
| | | List<List<Object>> rows = drills.stream() |
| | | .map(d -> Arrays.<Object>asList( |
| | | date(d.getDrillDate()), str(d.getTitle()), |
| | | SafetyDrillTypeEnum.getNameByType(d.getDrillType()), str(d.getLocation()), |
| | |
| | | private Sheet accidentSheet(LocalDate start, LocalDate end) { |
| | | List<String> headers = List.of("äºæ
ç¼å·", "äºæ
åç§°", "äºæ
ç±»å", "ç级", "åçæ¶é´", "åçå°ç¹", |
| | | "伤亡æ
åµ", "ç»æµæå¤±(å
)", "äºæ
ç»è¿", "åå åæ", "å¤çæªæ½", "ç¶æ"); |
| | | List<List<Object>> rows = trainingService.listAccidentBetween(start, end).stream() |
| | | var accidents = trainingService.listAccidentBetween(start, end); |
| | | trainingService.fillAccidentRefs(accidents); |
| | | List<List<Object>> rows = accidents.stream() |
| | | .map(a -> Arrays.<Object>asList( |
| | | str(a.getCode()), str(a.getTitle()), |
| | | SafetyAccidentTypeEnum.getNameByType(a.getAccidentType()), |
| | |
| | | package cn.iocoder.yudao.module.mes.service.safety; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | |
| | | @Resource |
| | | private SafetyMaterialMapper materialMapper; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | @Resource |
| | | private SafetyMaterialStockMapper stockMapper; |
| | | |
| | | // ==================== ç©èµå°è´¦ ==================== |
| | |
| | | material.setCode(code); |
| | | material.setName(StrUtil.trim(reqVO.getName())); |
| | | material.setUnit(StrUtil.blankToDefault(reqVO.getUnit(), "个")); |
| | | applyManager(material, reqVO.getManagerId()); |
| | | material.setStockQty(reqVO.getStockQty() == null ? BigDecimal.ZERO : reqVO.getStockQty()); |
| | | material.setSafeStock(reqVO.getSafeStock() == null ? BigDecimal.ZERO : reqVO.getSafeStock()); |
| | | materialMapper.insert(material); |
| | |
| | | SafetyMaterialDO material = BeanUtils.toBean(reqVO, SafetyMaterialDO.class); |
| | | material.setCode(code); |
| | | material.setName(StrUtil.trim(reqVO.getName())); |
| | | applyManager(material, reqVO.getManagerId()); |
| | | // åºåæ°éåªè½éè¿åºå
¥åºååå¨ï¼ç¦æ¢ç´æ¥ç¼è¾ |
| | | material.setStockQty(null); |
| | | materialMapper.updateById(material); |
| | |
| | | return materialMapper.selectPage(reqVO); |
| | | } |
| | | |
| | | /** |
| | | * ä¿ç®¡äººï¼ä»å工档æ¡å¸¦åºå§åè½å¿«ç
§ |
| | | */ |
| | | private void applyManager(SafetyMaterialDO material, Long managerId) { |
| | | material.setManagerId(managerId); |
| | | material.setManager(managerId == null ? "" |
| | | : refResolver.requireEmployee(managerId, SAFETY_EMPLOYEE_REQUIRED).getName()); |
| | | } |
| | | |
| | | /** |
| | | * æ¹éåå¡«ä¿ç®¡äººææ°å§å |
| | | */ |
| | | public void fillManagers(List<SafetyMaterialDO> materials) { |
| | | if (CollUtil.isEmpty(materials)) { |
| | | return; |
| | | } |
| | | var employeeMap = refResolver.employeeMap(materials.stream().map(SafetyMaterialDO::getManagerId).toList()); |
| | | materials.forEach(material -> { |
| | | var employee = employeeMap.get(material.getManagerId()); |
| | | if (employee != null) material.setManager(employee.getName()); |
| | | }); |
| | | } |
| | | |
| | | public static void fillMaterialDisplay(SafetyMaterialDO material, SafetyMaterialRespVO respVO) { |
| | | respVO.setCategoryName(SafetyMaterialCategoryEnum.getNameByCategory(material.getCategory())); |
| | | BigDecimal stock = material.getStockQty() == null ? BigDecimal.ZERO : material.getStockQty(); |
| | |
| | | |
| | | @Resource |
| | | private SafetyOrgMapper safetyOrgMapper; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | |
| | | public Long createOrg(SafetyOrgSaveReqVO reqVO) { |
| | | reqVO.setId(null); |
| | | validateParent(reqVO.getParentId(), null); |
| | | SafetyOrgDO org = BeanUtils.toBean(reqVO, SafetyOrgDO.class); |
| | | org.setParentId(reqVO.getParentId() == null ? 0L : reqVO.getParentId()); |
| | | applyLeader(org, reqVO.getLeaderId()); |
| | | safetyOrgMapper.insert(org); |
| | | return org.getId(); |
| | | } |
| | |
| | | validateParent(reqVO.getParentId(), reqVO.getId()); |
| | | SafetyOrgDO org = BeanUtils.toBean(reqVO, SafetyOrgDO.class); |
| | | org.setParentId(reqVO.getParentId() == null ? 0L : reqVO.getParentId()); |
| | | applyLeader(org, reqVO.getLeaderId()); |
| | | safetyOrgMapper.updateById(org); |
| | | } |
| | | |
| | | /** |
| | | * è´è´£äººï¼ä»å工档æ¡å¸¦åºå§åä¸çµè¯å¹¶è½å¿«ç
§ |
| | | */ |
| | | private void applyLeader(SafetyOrgDO org, Long leaderId) { |
| | | org.setLeaderId(leaderId); |
| | | if (leaderId == null) { |
| | | org.setLeaderName(""); |
| | | return; |
| | | } |
| | | var employee = refResolver.requireEmployee(leaderId, SAFETY_EMPLOYEE_REQUIRED); |
| | | org.setLeaderName(employee.getName()); |
| | | org.setLeaderPhone(employee.getPhone()); |
| | | } |
| | | |
| | | public void deleteOrg(Long id) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * åè´è´£äººææ°æ¡£æ¡ï¼ä¾åæ¡æ¥è¯¢åå¡«ç¨ï¼ |
| | | */ |
| | | public cn.iocoder.yudao.module.hrm.api.employee.dto.HrmEmployeeSimpleDTO getLeader(Long leaderId) { |
| | | return refResolver.findEmployee(leaderId); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ç»ç»æ |
| | | */ |
| | | public List<SafetyOrgRespVO> getOrgTree() { |
| | | List<SafetyOrgDO> all = safetyOrgMapper.selectListOrdered(); |
| | | List<SafetyOrgRespVO> nodes = BeanUtils.toBean(all, SafetyOrgRespVO.class); |
| | | // è´è´£äººç¨åå·¥æ¡£æ¡ææ°å§åè¦çå¿«ç
§ï¼åå·¥æ¹å/è°å²åæ ä¹åæ¥ |
| | | var employeeMap = refResolver.employeeMap( |
| | | all.stream().map(SafetyOrgDO::getLeaderId).toList()); |
| | | nodes.forEach(node -> { |
| | | var employee = employeeMap.get(node.getLeaderId()); |
| | | if (employee != null) { |
| | | node.setLeaderName(employee.getName()); |
| | | } |
| | | }); |
| | | Map<Long, List<SafetyOrgRespVO>> grouped = nodes.stream() |
| | | .collect(Collectors.groupingBy(SafetyOrgRespVO::getParentId, Collectors.toList())); |
| | | nodes.forEach(node -> node.setChildren(grouped.getOrDefault(node.getId(), new ArrayList<>()))); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.service.safety; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.iocoder.yudao.module.hrm.api.employee.HrmEmployeeApi; |
| | | import cn.iocoder.yudao.module.hrm.api.employee.dto.HrmEmployeeSimpleDTO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkshopDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkshopMapper; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static cn.iocoder.yudao.module.mes.enums.SafetyErrorCodeConstants.*; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ä¸»æ°æ®å¼ç¨è§£æå¨ |
| | | * |
| | | * <p>模åå
ææã人åãä¸ã车é´ãåæ®µç»ä¸èµ°è¿éè§£æï¼é¿å
æ¯ä¸ª Service éå¤åä¸éã</p> |
| | | * |
| | | * <p>ç»ä¸çº¦å®ï¼ä¸å¡è¡¨å {@code xxxId} å
³èä¸»æ°æ®ï¼åæ¶ä¿ç {@code xxxName} ä½ä¸ºå¿«ç
§ã |
| | | * ä¿åæ¶ä»ä¸»æ°æ®æå称带åºåå¿«ç
§ï¼æ¥è¯¢æ¶ç¨ä¸»æ°æ®ææ°å¼è¦çå¿«ç
§ï¼ |
| | | * è¿æ ·åå·¥è°å²ãè½¦é´æ¹ååå°è´¦ä¼èªå¨è·çåï¼èä¸»æ°æ®è¢«å æ¶èè®°å½ä»è½é å¿«ç
§å±ç¤ºã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Component |
| | | public class SafetyRefResolver { |
| | | |
| | | @Resource |
| | | private HrmEmployeeApi hrmEmployeeApi; |
| | | @Resource |
| | | private MesMdWorkshopMapper workshopMapper; |
| | | |
| | | // ==================== åå·¥ ==================== |
| | | |
| | | /** |
| | | * æåå·¥ç¼å·ååå·¥ï¼å¿
é¡»åå¨ |
| | | * |
| | | * @throws cn.iocoder.yudao.framework.common.exception.ServiceException åå·¥ä¸å卿¶æåº |
| | | */ |
| | | public HrmEmployeeSimpleDTO requireEmployee(Long employeeId, cn.iocoder.yudao.framework.common.exception.ErrorCode errorCode) { |
| | | if (employeeId == null) { |
| | | throw exception(errorCode); |
| | | } |
| | | HrmEmployeeSimpleDTO employee = hrmEmployeeApi.getEmployee(employeeId); |
| | | if (employee == null) { |
| | | throw exception(errorCode); |
| | | } |
| | | return employee; |
| | | } |
| | | |
| | | /** |
| | | * å¯ç©ºçå工解æï¼id 为空è¿å nullï¼ä¸æ ¡éªå卿§ï¼ç¨äºéå¿
å¡«åæ®µï¼ |
| | | */ |
| | | public HrmEmployeeSimpleDTO findEmployee(Long employeeId) { |
| | | return employeeId == null ? null : hrmEmployeeApi.getEmployee(employeeId); |
| | | } |
| | | |
| | | /** |
| | | * æ¹éååå·¥ï¼è¿å id -> åå·¥ ç Map |
| | | */ |
| | | public Map<Long, HrmEmployeeSimpleDTO> employeeMap(Collection<Long> employeeIds) { |
| | | if (CollUtil.isEmpty(employeeIds)) { |
| | | return Map.of(); |
| | | } |
| | | List<Long> ids = employeeIds.stream().filter(Objects::nonNull).distinct().toList(); |
| | | if (ids.isEmpty()) { |
| | | return Map.of(); |
| | | } |
| | | return hrmEmployeeApi.getEmployeeList(ids).stream() |
| | | .collect(Collectors.toMap(HrmEmployeeSimpleDTO::getId, e -> e, (a, b) -> a)); |
| | | } |
| | | |
| | | // ==================== è½¦é´ ==================== |
| | | |
| | | /** |
| | | * æè½¦é´ç¼å·å车é´ï¼å¿
é¡»åå¨ |
| | | */ |
| | | public MesMdWorkshopDO requireWorkshop(Long workshopId) { |
| | | if (workshopId == null) { |
| | | throw exception(SAFETY_WORKSHOP_NOT_EXISTS); |
| | | } |
| | | MesMdWorkshopDO workshop = workshopMapper.selectById(workshopId); |
| | | if (workshop == null) { |
| | | throw exception(SAFETY_WORKSHOP_NOT_EXISTS); |
| | | } |
| | | return workshop; |
| | | } |
| | | |
| | | /** |
| | | * å¯ç©ºç车é´è§£æ |
| | | */ |
| | | public MesMdWorkshopDO findWorkshop(Long workshopId) { |
| | | return workshopId == null ? null : workshopMapper.selectById(workshopId); |
| | | } |
| | | |
| | | /** |
| | | * æ¹éå车é´ï¼è¿å id -> è½¦é´ ç Map |
| | | */ |
| | | public Map<Long, MesMdWorkshopDO> workshopMap(Collection<Long> workshopIds) { |
| | | if (CollUtil.isEmpty(workshopIds)) { |
| | | return Map.of(); |
| | | } |
| | | List<Long> ids = workshopIds.stream().filter(Objects::nonNull).distinct().toList(); |
| | | if (ids.isEmpty()) { |
| | | return Map.of(); |
| | | } |
| | | return workshopMapper.selectBatchIds(ids).stream() |
| | | .collect(Collectors.toMap(MesMdWorkshopDO::getId, w -> w, (a, b) -> a)); |
| | | } |
| | | |
| | | } |
| | |
| | | package cn.iocoder.yudao.module.mes.service.safety; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | |
| | | @Resource |
| | | private SafetyTrainingMapper trainingMapper; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | @Resource |
| | | private SafetyDrillMapper drillMapper; |
| | | @Resource |
| | | private SafetyAccidentMapper accidentMapper; |
| | |
| | | SafetyTrainingDO training = BeanUtils.toBean(reqVO, SafetyTrainingDO.class); |
| | | training.setTitle(StrUtil.trim(reqVO.getTitle())); |
| | | training.setTrainingType(StrUtil.blankToDefault(reqVO.getTrainingType(), SafetyTrainingTypeEnum.SAFETY.getType())); |
| | | training.setTrainerId(reqVO.getTrainerId()); |
| | | training.setTrainer(reqVO.getTrainerId() == null ? "" |
| | | : refResolver.requireEmployee(reqVO.getTrainerId(), SAFETY_EMPLOYEE_REQUIRED).getName()); |
| | | training.setParticipantCount(resolveCount(reqVO.getParticipantCount(), reqVO.getParticipants())); |
| | | training.setRemark(reqVO.getRemark() == null ? "" : reqVO.getRemark().trim()); |
| | | trainingMapper.insert(training); |
| | |
| | | return trainingMapper.selectPage(reqVO); |
| | | } |
| | | |
| | | /** |
| | | * äºæ
çä¸»æ°æ®å¼ç¨ï¼æå±è½¦é´ + ç»è®°äºº |
| | | */ |
| | | private void applyAccidentRefs(SafetyAccidentDO accident, SafetyAccidentSaveReqVO reqVO) { |
| | | accident.setWorkshopId(reqVO.getWorkshopId()); |
| | | accident.setWorkshopName(reqVO.getWorkshopId() == null ? "" |
| | | : refResolver.requireWorkshop(reqVO.getWorkshopId()).getName()); |
| | | accident.setReporterId(reqVO.getReporterId()); |
| | | accident.setReporter(reqVO.getReporterId() == null ? "" |
| | | : refResolver.requireEmployee(reqVO.getReporterId(), SAFETY_EMPLOYEE_REQUIRED).getName()); |
| | | } |
| | | |
| | | /** æ¹éåå¡«å¹è®è®²å¸ææ°å§å */ |
| | | public void fillTrainers(List<SafetyTrainingDO> trainings) { |
| | | if (CollUtil.isEmpty(trainings)) return; |
| | | var employeeMap = refResolver.employeeMap(trainings.stream().map(SafetyTrainingDO::getTrainerId).toList()); |
| | | trainings.forEach(t -> { |
| | | var e = employeeMap.get(t.getTrainerId()); |
| | | if (e != null) t.setTrainer(e.getName()); |
| | | }); |
| | | } |
| | | |
| | | /** æ¹éåå¡«æ¼ç»ç»ç»äººææ°å§å */ |
| | | public void fillOrganizers(List<SafetyDrillDO> drills) { |
| | | if (CollUtil.isEmpty(drills)) return; |
| | | var employeeMap = refResolver.employeeMap(drills.stream().map(SafetyDrillDO::getOrganizerId).toList()); |
| | | drills.forEach(d -> { |
| | | var e = employeeMap.get(d.getOrganizerId()); |
| | | if (e != null) d.setOrganizer(e.getName()); |
| | | }); |
| | | } |
| | | |
| | | /** æ¹éåå¡«äºæ
ç车é´åä¸ç»è®°äººå§å */ |
| | | public void fillAccidentRefs(List<SafetyAccidentDO> accidents) { |
| | | if (CollUtil.isEmpty(accidents)) return; |
| | | var workshopMap = refResolver.workshopMap(accidents.stream().map(SafetyAccidentDO::getWorkshopId).toList()); |
| | | var employeeMap = refResolver.employeeMap(accidents.stream().map(SafetyAccidentDO::getReporterId).toList()); |
| | | accidents.forEach(a -> { |
| | | var w = workshopMap.get(a.getWorkshopId()); |
| | | if (w != null) a.setWorkshopName(w.getName()); |
| | | var e = employeeMap.get(a.getReporterId()); |
| | | if (e != null) a.setReporter(e.getName()); |
| | | }); |
| | | } |
| | | |
| | | public static void fillTrainingDisplay(SafetyTrainingDO training, SafetyTrainingRespVO respVO) { |
| | | respVO.setTrainingTypeName(SafetyTrainingTypeEnum.getNameByType(training.getTrainingType())); |
| | | } |
| | |
| | | SafetyDrillDO drill = BeanUtils.toBean(reqVO, SafetyDrillDO.class); |
| | | drill.setTitle(StrUtil.trim(reqVO.getTitle())); |
| | | drill.setDrillType(StrUtil.blankToDefault(reqVO.getDrillType(), SafetyDrillTypeEnum.FIRE.getType())); |
| | | drill.setOrganizerId(reqVO.getOrganizerId()); |
| | | drill.setOrganizer(reqVO.getOrganizerId() == null ? "" |
| | | : refResolver.requireEmployee(reqVO.getOrganizerId(), SAFETY_EMPLOYEE_REQUIRED).getName()); |
| | | drill.setParticipantCount(resolveCount(reqVO.getParticipantCount(), reqVO.getParticipants())); |
| | | drill.setRemark(reqVO.getRemark() == null ? "" : reqVO.getRemark().trim()); |
| | | drillMapper.insert(drill); |
| | |
| | | accident.setTitle(StrUtil.trim(reqVO.getTitle())); |
| | | accident.setLevel(StrUtil.blankToDefault(reqVO.getLevel(), SafetyAccidentLevelEnum.GENERAL.getLevel())); |
| | | accident.setStatus(StrUtil.blankToDefault(reqVO.getStatus(), SafetyAccidentStatusEnum.REPORTED.getStatus())); |
| | | applyAccidentRefs(accident, reqVO); |
| | | accident.setReportTime(reqVO.getReportTime() == null ? LocalDateTime.now() : reqVO.getReportTime()); |
| | | accident.setRemark(reqVO.getRemark() == null ? "" : reqVO.getRemark().trim()); |
| | | accidentMapper.insert(accident); |
| | |
| | | validateAccidentExists(reqVO.getId()); |
| | | SafetyAccidentDO accident = BeanUtils.toBean(reqVO, SafetyAccidentDO.class); |
| | | accident.setCode(null); |
| | | applyAccidentRefs(accident, reqVO); |
| | | accidentMapper.updateById(accident); |
| | | } |
| | | |
| | |
| | | package cn.iocoder.yudao.module.mes.service.safety; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | |
| | | @Resource |
| | | private SafetyWorkPermitMapper permitMapper; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | @Resource |
| | | private SafetyWorkPermitMonitorMapper monitorMapper; |
| | | |
| | | /** |
| | |
| | | SafetyWorkPermitDO permit = BeanUtils.toBean(reqVO, SafetyWorkPermitDO.class); |
| | | permit.setCode(permitMapper.selectNextCode("WP" + LocalDate.now().format(CODE_DATE))); |
| | | permit.setTitle(StrUtil.trim(reqVO.getTitle())); |
| | | permit.setApplicant(StrUtil.trim(reqVO.getApplicant())); |
| | | applyPermitRefs(permit, reqVO); |
| | | permit.setApplyTime(reqVO.getApplyTime() == null ? LocalDateTime.now() : reqVO.getApplyTime()); |
| | | permit.setRiskLevel(StrUtil.blankToDefault(reqVO.getRiskLevel(), SafetyRiskLevelEnum.NORMAL.getLevel())); |
| | | permit.setStatus(SafetyPermitStatusEnum.PENDING.getStatus()); |
| | |
| | | SafetyWorkPermitDO update = BeanUtils.toBean(reqVO, SafetyWorkPermitDO.class); |
| | | update.setCode(null); |
| | | update.setStatus(null); |
| | | applyPermitRefs(update, reqVO); |
| | | permitMapper.updateById(update); |
| | | } |
| | | |
| | | /** |
| | | * ä½ä¸ç¥¨çä¸»æ°æ®å¼ç¨ï¼ä½ä¸è½¦é´ + ç³è¯·äºº + çæ¤äººï¼ä»ä¸»æ°æ®å¸¦åºåç§°è½å¿«ç
§ |
| | | */ |
| | | private void applyPermitRefs(SafetyWorkPermitDO permit, SafetyWorkPermitSaveReqVO reqVO) { |
| | | permit.setWorkshopId(reqVO.getWorkshopId()); |
| | | permit.setWorkshopName(reqVO.getWorkshopId() == null ? "" |
| | | : refResolver.requireWorkshop(reqVO.getWorkshopId()).getName()); |
| | | var applicant = refResolver.requireEmployee(reqVO.getApplicantId(), SAFETY_EMPLOYEE_REQUIRED); |
| | | permit.setApplicantId(applicant.getId()); |
| | | permit.setApplicant(applicant.getName()); |
| | | permit.setGuardianId(reqVO.getGuardianId()); |
| | | permit.setGuardian(reqVO.getGuardianId() == null ? "" |
| | | : refResolver.requireEmployee(reqVO.getGuardianId(), SAFETY_EMPLOYEE_REQUIRED).getName()); |
| | | } |
| | | |
| | | /** |
| | |
| | | public void approvePermit(SafetyWorkPermitApproveReqVO reqVO) { |
| | | SafetyWorkPermitDO permit = validatePermitExists(reqVO.getId()); |
| | | ensureStatus(permit, SafetyPermitStatusEnum.PENDING); |
| | | String approver = StrUtil.trim(reqVO.getApprover()); |
| | | // ç³è¯·äººä¸è½å®¡æ¹èªå·±çä½ä¸ç¥¨ |
| | | if (approver.equals(permit.getApplicant())) { |
| | | throw exception(SAFETY_PERMIT_STATUS_ERROR); |
| | | var approver = refResolver.requireEmployee(reqVO.getApproverId(), SAFETY_EMPLOYEE_REQUIRED); |
| | | // ç³è¯·äººä¸è½å®¡æ¹èªå·±çä½ä¸ç¥¨ï¼æåå·¥ç¼å·æ¯è¾ï¼é¿å
åå误å¤ï¼ |
| | | if (permit.getApplicantId() != null && permit.getApplicantId().equals(approver.getId())) { |
| | | throw exception(SAFETY_PERMIT_SELF_APPROVE); |
| | | } |
| | | boolean approved = "APPROVED".equals(reqVO.getDecision()); |
| | | if (approved && SafetyPermitTypeEnum.requiresGuardian(permit.getPermitType()) |
| | | && StrUtil.isBlank(permit.getGuardian())) { |
| | | && permit.getGuardianId() == null) { |
| | | throw exception(SAFETY_PERMIT_GUARDIAN_REQUIRED); |
| | | } |
| | | SafetyWorkPermitDO update = new SafetyWorkPermitDO(); |
| | | update.setId(permit.getId()); |
| | | update.setApprover(approver); |
| | | update.setApproverId(approver.getId()); |
| | | update.setApprover(approver.getName()); |
| | | update.setApproveTime(LocalDateTime.now()); |
| | | update.setApproveComment(reqVO.getApproveComment()); |
| | | update.setStatus(approved ? SafetyPermitStatusEnum.APPROVED.getStatus() |
| | |
| | | } |
| | | SafetyWorkPermitMonitorDO monitor = BeanUtils.toBean(reqVO, SafetyWorkPermitMonitorDO.class); |
| | | monitor.setId(null); |
| | | monitor.setGuardian(StrUtil.trim(reqVO.getGuardian())); |
| | | var guardian = refResolver.requireEmployee(reqVO.getGuardianId(), SAFETY_EMPLOYEE_REQUIRED); |
| | | monitor.setGuardianId(guardian.getId()); |
| | | monitor.setGuardian(guardian.getName()); |
| | | monitor.setMonitorTime(reqVO.getMonitorTime() == null ? LocalDateTime.now() : reqVO.getMonitorTime()); |
| | | monitorMapper.insert(monitor); |
| | | return monitor.getId(); |
| | |
| | | |
| | | // ==================== å±ç¤ºå段 ==================== |
| | | |
| | | /** |
| | | * æ¹éåå¡«ä½ä¸ç¥¨ç车é´åä¸ä¸ä¸ªäººåå§åï¼ç³è¯·äºº/审æ¹äºº/çæ¤äººï¼ |
| | | */ |
| | | public void fillPermitRefs(List<SafetyWorkPermitDO> permits) { |
| | | if (CollUtil.isEmpty(permits)) { |
| | | return; |
| | | } |
| | | var workshopMap = refResolver.workshopMap(permits.stream().map(SafetyWorkPermitDO::getWorkshopId).toList()); |
| | | var ids = new java.util.ArrayList<Long>(permits.size() * 3); |
| | | permits.forEach(p -> { ids.add(p.getApplicantId()); ids.add(p.getApproverId()); ids.add(p.getGuardianId()); }); |
| | | var employeeMap = refResolver.employeeMap(ids); |
| | | permits.forEach(permit -> { |
| | | var workshop = workshopMap.get(permit.getWorkshopId()); |
| | | if (workshop != null) permit.setWorkshopName(workshop.getName()); |
| | | var applicant = employeeMap.get(permit.getApplicantId()); |
| | | if (applicant != null) permit.setApplicant(applicant.getName()); |
| | | var approver = employeeMap.get(permit.getApproverId()); |
| | | if (approver != null) permit.setApprover(approver.getName()); |
| | | var guardian = employeeMap.get(permit.getGuardianId()); |
| | | if (guardian != null) permit.setGuardian(guardian.getName()); |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * æ¹éåå¡«çæ¤è®°å½ççæ¤äººææ°å§å |
| | | */ |
| | | public void fillMonitorGuardians(List<SafetyWorkPermitMonitorDO> monitors) { |
| | | if (CollUtil.isEmpty(monitors)) { |
| | | return; |
| | | } |
| | | var employeeMap = refResolver.employeeMap( |
| | | monitors.stream().map(SafetyWorkPermitMonitorDO::getGuardianId).toList()); |
| | | monitors.forEach(monitor -> { |
| | | var employee = employeeMap.get(monitor.getGuardianId()); |
| | | if (employee != null) monitor.setGuardian(employee.getName()); |
| | | }); |
| | | } |
| | | |
| | | public static void fillPermitDisplay(SafetyWorkPermitDO permit, SafetyWorkPermitRespVO respVO) { |
| | | respVO.setPermitTypeName(SafetyPermitTypeEnum.getNameByType(permit.getPermitType())); |
| | | respVO.setRiskLevelName(SafetyRiskLevelEnum.getNameByLevel(permit.getRiskLevel())); |