feat(safety): 从长辉分支移植安全生产模块
来源:dev_新疆_长辉 分支(安全生产一期~七期),整体覆盖康意版本。
后端(101 个 Java 文件):
- controller/admin/safety:组织架构、特种作业证、安全巡检(点位/记录)、隐患闭环、
高危作业票(含监护)、应急物资(台账/出入库)、培训演练、事故登记、标准化台账、
附件上传,共 9 个 Controller
- dal/dataobject/safety + dal/mysql/safety:12 个 DO 与对应 Mapper
- service/safety:11 个 Service,含 SafetyRefResolver 统一解析员工/车间主数据
- enums/safety + SafetyErrorCodeConstants:错误码区间 1_040_961_xxx ~ 1_040_968_xxx
依赖:
- yudao-module-mes/pom.xml 增加 yudao-module-hrm-api(按员工档案解析持证人/负责人)
数据库(sql/mysql/):
- safety_module_tables_20261029.sql:12 张安全表
- safety_certificate_employee_20261029.sql:证件持证人关联员工档案
- safety_master_data_link_20261029.sql:人员/车间字段改为主数据关联
- safety_fix_code_index_20261029.sql:去掉 (code, deleted) 唯一键,改普通索引
- safety_module_menu_20261029.sql:76 条菜单与权限(1075600~1075678)
移植适配:
- 康意库原有一套无数据表支撑、无角色授权的旧菜单(1075502~1075512),已在库中清理
- 修复 SafetyRefResolver / SafetyCertificateService 空集合返回 Map.of() 导致
以 null 作为 key 查询时抛 NPE(SafetyOrgService 组织树、证件列表直接 500)
验证:
- 安全生产模块 70 个接口全量探测,500 数量为 0
- 组织架构新增/查询链路实测通过(测试数据已清理)
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ============================================================ |
| | | -- å®å
¨ç产 - ç¹ç§ä½ä¸è¯æè¯äººæ¹ä¸ºå
³èåå·¥æ¡£æ¡ |
| | | -- çææ¶é´ï¼2026-10-29 |
| | | -- èæ¯ï¼å设计ææè¯äººåæçº¯ææ¬å§åï¼employee_name / employee_no / dept_nameï¼ï¼ |
| | | -- æ æ³ä¸äººåèµæºçå工档æ¡ãç³»ç»ç¨æ·æéã |
| | | -- åæ³ï¼æ°å¢ employee_id å
³è hrm_employee.idï¼å§å/å·¥å·/é¨é¨æ¹ä¸ºå工档æ¡å¸¦åºï¼ |
| | | -- æ§ææ¬å段ä¿ç为快ç
§ï¼ä¾¿äºå工档æ¡åæ´åä»å¯è¿½æº¯å¼è¯æ¶ç人äºä¿¡æ¯ã |
| | | -- 说æï¼å¹çï¼å¯é夿§è¡ |
| | | -- ============================================================ |
| | | |
| | | -- ---------- 1. æ°å¢ employee_id åæ®µ ---------- |
| | | SET @exist_col = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'safety_certificate' AND column_name = 'employee_id'); |
| | | SET @sql = IF(@exist_col = 0, |
| | | 'ALTER TABLE `safety_certificate` ADD COLUMN `employee_id` bigint NULL COMMENT ''æè¯äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼'' AFTER `id`', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; |
| | | EXECUTE stmt; |
| | | DEALLOCATE PREPARE stmt; |
| | | |
| | | -- ---------- 2. ç´¢å¼ ---------- |
| | | SET @exist_idx = (SELECT COUNT(*) FROM information_schema.statistics |
| | | WHERE table_schema = DATABASE() AND table_name = 'safety_certificate' AND index_name = 'idx_employee_id'); |
| | | SET @sql2 = IF(@exist_idx = 0, |
| | | 'CREATE INDEX `idx_employee_id` ON `safety_certificate` (`employee_id`)', |
| | | 'SELECT 1'); |
| | | PREPARE stmt2 FROM @sql2; |
| | | EXECUTE stmt2; |
| | | DEALLOCATE PREPARE stmt2; |
| | | |
| | | -- ---------- 3. åä¸åæ¹ä¸ºå¿«ç
§è¯ä¹ï¼ä¿çï¼ä¸åä½ä¸ºå¯ä¸æ¥æºï¼ ---------- |
| | | ALTER TABLE `safety_certificate` |
| | | MODIFY COLUMN `employee_name` varchar(50) NULL COMMENT 'æè¯äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼', |
| | | MODIFY COLUMN `employee_no` varchar(50) NULL COMMENT 'å·¥å·ï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼', |
| | | MODIFY COLUMN `dept_name` varchar(100) NULL COMMENT 'æå±é¨é¨ï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼'; |
| | | |
| | | -- ---------- 4. æ ¡éª ---------- |
| | | SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_COMMENT |
| | | FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'safety_certificate' |
| | | AND COLUMN_NAME IN ('employee_id', 'employee_name', 'employee_no', 'dept_name') |
| | | ORDER BY ORDINAL_POSITION; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ============================================================ |
| | | -- å®å
¨ç产 - ä¿®å¤ uk_code å¯ä¸ç´¢å¼å¯¼è´ãç¬¬äºæ¬¡è½¯å é¤åç¼ç ãæ¥é |
| | | -- çææ¶é´ï¼2026-10-29 |
| | | -- |
| | | -- ç°è±¡ï¼å·¡æ£ç¹ä½ PD-001 å
被软å 䏿¬¡ï¼ä¹åæ°å»ºåç¼ç PD-001 åå 餿¶æ¥ |
| | | -- Duplicate entry 'PD-001-\x01' for key 'safety_inspection_point.uk_code' |
| | | -- æ¥å£è¿åãç³»ç»å¼å¸¸ã(500) |
| | | -- |
| | | -- åå ï¼uk_code å»ºå¨ (code, deleted) ä¸ï¼deleted æ¯ bit(1)ã |
| | | -- 软å é¤å deleted=b'1'ï¼è¥åå²ä¸å·²æä¸æ¡åç¼ç ä¸å·²è½¯å çè®°å½ï¼ |
| | | -- ç¬¬äºæ¬¡è½¯å é¤å°±ä¼æå
¥éå¤ç (code, b'1') ç»åï¼æå¯ä¸é®ã |
| | | -- |
| | | -- ä¿®å¤ï¼å»æ (code, deleted) å¯ä¸çº¦æï¼æ¹ææ®éç´¢å¼ idx_code ç¨äºæ¥è¯¢ï¼ |
| | | -- ç¼ç å¯ä¸æ§ç± Service å±ä¿è¯ï¼æ°å¢/ä¿®æ¹æ¶ selectByCode æ¥æ´»è·è®°å½å¤éï¼ |
| | | -- ä¸ yudao å
¶å®ä¸å¡è¡¨ä¸è´ï¼ä¾å¦ mes_dv_machinery 就没æ code å¯ä¸é®ï¼ã |
| | | -- |
| | | -- å¹çï¼å
å¤æç´¢å¼æ¯å¦åå¨åæä½ï¼å¯é夿§è¡ |
| | | -- ============================================================ |
| | | |
| | | DROP PROCEDURE IF EXISTS sp_safety_fix_code_index; |
| | | DELIMITER $$ |
| | | CREATE PROCEDURE sp_safety_fix_code_index(IN p_table VARCHAR(64)) |
| | | BEGIN |
| | | -- 1. å ææ§ç (code, deleted) å¯ä¸é® |
| | | IF EXISTS (SELECT 1 FROM information_schema.statistics |
| | | WHERE table_schema = DATABASE() AND table_name = p_table AND index_name = 'uk_code') THEN |
| | | SET @s = CONCAT('ALTER TABLE `', p_table, '` DROP INDEX `uk_code`'); |
| | | PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st; |
| | | END IF; |
| | | -- 2. è¡¥ä¸ä¸ªæ®éç´¢å¼ï¼ä¿è¯æç¼ç æ¥è¯¢çæ§è½ |
| | | IF NOT EXISTS (SELECT 1 FROM information_schema.statistics |
| | | WHERE table_schema = DATABASE() AND table_name = p_table AND index_name = 'idx_code') THEN |
| | | SET @s2 = CONCAT('CREATE INDEX `idx_code` ON `', p_table, '` (`code`)'); |
| | | PREPARE st2 FROM @s2; EXECUTE st2; DEALLOCATE PREPARE st2; |
| | | END IF; |
| | | END$$ |
| | | DELIMITER ; |
| | | |
| | | CALL sp_safety_fix_code_index('safety_inspection_point'); |
| | | CALL sp_safety_fix_code_index('safety_hazard'); |
| | | CALL sp_safety_fix_code_index('safety_material'); |
| | | CALL sp_safety_fix_code_index('safety_work_permit'); |
| | | CALL sp_safety_fix_code_index('safety_accident'); |
| | | |
| | | DROP PROCEDURE IF EXISTS sp_safety_fix_code_index; |
| | | |
| | | -- ---------- æ ¡éªï¼ç¡®è®¤å·²æ uk_codeï¼ä¸æ idx_code ---------- |
| | | SELECT TABLE_NAME, INDEX_NAME, NON_UNIQUE, |
| | | GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX) AS cols |
| | | FROM information_schema.statistics |
| | | WHERE table_schema = DATABASE() AND TABLE_NAME LIKE 'safety%' |
| | | AND INDEX_NAME IN ('uk_code', 'idx_code') |
| | | GROUP BY TABLE_NAME, INDEX_NAME, NON_UNIQUE |
| | | ORDER BY TABLE_NAME; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ============================================================ |
| | | -- å®å
¨ç产 - 人åä¸è½¦é´å段å
¨é¢æ¹ä¸ºä¸»æ°æ®å
³è |
| | | -- çææ¶é´ï¼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; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ============================================================ |
| | | -- å®å
¨ç产模å - èå + è§è²ææ |
| | | -- çææ¶é´ï¼2026-10-29 |
| | | -- 说æï¼é¡¶çº§èåãå®å
¨ç产ã/safetyï¼sort=67ï¼æå¨è½è管ç 65 ä¸å®å管ç 70 ä¹é´ï¼ |
| | | -- æ¬èæ¬å¹çï¼å¯é夿§è¡ |
| | | -- ============================================================ |
| | | |
| | | -- ---------- 1. 顶级èå ---------- |
| | | INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) |
| | | VALUES (1075600, 'å®å
¨ç产', '', 1, 67, 0, '/safety', 'ep:first-aid-kit', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0') |
| | | ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `sort`=VALUES(`sort`), `path`=VALUES(`path`), `icon`=VALUES(`icon`), `status`=0, `deleted`=b'0'; |
| | | |
| | | -- ---------- 2. äºçº§ç®å½ ---------- |
| | | INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) |
| | | VALUES |
| | | (1075601, 'å®å
¨ç»ç»æ¶æ', '', 2, 1, 1075600, 'org', 'ep:user-filled', 'safety/org/index', 'SafetyOrg', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075602, 'ç¹ç§ä½ä¸è¯', '', 2, 2, 1075600, 'cert', 'ep:postcard', 'safety/cert/index', 'SafetyCert', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075603, 'å®å
¨å·¡æ£', '', 1, 3, 1075600, 'inspection', 'ep:view', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075604, '鿣éç¯', '', 1, 4, 1075600, 'hazard', 'ep:warning-filled', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075605, 'é«å±ä½ä¸ç¥¨', '', 2, 5, 1075600, 'permit', 'ep:document-checked', 'safety/permit/index', 'SafetyPermit', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075606, 'åºæ¥ç©èµ', '', 1, 6, 1075600, 'material', 'ep:box', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075607, 'å¹è®æ¼ç»', '', 1, 7, 1075600, 'training', 'ep:reading', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075608, 'äºæ
ç»è®°', '', 2, 8, 1075600, 'accident', 'ep:first-aid-kit', 'safety/accident/index', 'SafetyAccident', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075609, 'æ ååå°è´¦', '', 2, 9, 1075600, 'ledger', 'ep:files', 'safety/ledger/index', 'SafetyLedger', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0') |
| | | ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `sort`=VALUES(`sort`), `path`=VALUES(`path`), `component`=VALUES(`component`), `component_name`=VALUES(`component_name`), `status`=0, `deleted`=b'0'; |
| | | |
| | | -- ---------- 3. ä¸çº§é¡µé¢ ---------- |
| | | INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) |
| | | VALUES |
| | | (1075610, 'å·¡æ£ç¹ä½', '', 2, 1, 1075603, 'point', 'ep:location', 'safety/inspection/point/index', 'SafetyInspectionPoint', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075611, 'å·¡æ£è®°å½', '', 2, 2, 1075603, 'record', 'ep:tickets', 'safety/inspection/record/index', 'SafetyInspectionRecord', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075612, '鿣å°è´¦', '', 2, 1, 1075604, 'list', 'ep:list', 'safety/hazard/index', 'SafetyHazard', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075613, 'ç©èµå°è´¦', '', 2, 1, 1075606, 'list', 'ep:goods', 'safety/material/index', 'SafetyMaterial', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075614, 'åºå
¥åºæµæ°´', '', 2, 2, 1075606, 'stock', 'ep:sort', 'safety/material/stock/index', 'SafetyMaterialStock', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075615, 'å®å
¨å¹è®', '', 2, 1, 1075607, 'training', 'ep:notebook', 'safety/training/index', 'SafetyTraining', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075616, 'æ¶é²æ¼ç»', '', 2, 2, 1075607, 'drill', 'ep:alarm-clock', 'safety/drill/index', 'SafetyDrill', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0') |
| | | ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `sort`=VALUES(`sort`), `path`=VALUES(`path`), `component`=VALUES(`component`), `component_name`=VALUES(`component_name`), `status`=0, `deleted`=b'0'; |
| | | |
| | | -- ---------- 4. æé®æé ---------- |
| | | INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) |
| | | VALUES |
| | | -- ç»ç»æ¶æ |
| | | (1075620, 'ç»ç»æ¥è¯¢', 'safety:org:query', 3, 1, 1075601, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075621, 'ç»ç»æ°å¢', 'safety:org:create', 3, 2, 1075601, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075622, 'ç»ç»ä¿®æ¹', 'safety:org:update', 3, 3, 1075601, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075623, 'ç»ç»å é¤', 'safety:org:delete', 3, 4, 1075601, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | -- ç¹ç§ä½ä¸è¯ |
| | | (1075624, 'è¯ä»¶æ¥è¯¢', 'safety:cert:query', 3, 1, 1075602, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075625, 'è¯ä»¶æ°å¢', 'safety:cert:create', 3, 2, 1075602, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075626, 'è¯ä»¶ä¿®æ¹', 'safety:cert:update', 3, 3, 1075602, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075627, 'è¯ä»¶å é¤', 'safety:cert:delete', 3, 4, 1075602, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075628, 'è¯ä»¶å¯¼åº', 'safety:cert:export', 3, 5, 1075602, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | -- å·¡æ£ç¹ä½ |
| | | (1075629, 'ç¹ä½æ¥è¯¢', 'safety:inspection-point:query', 3, 1, 1075610, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075630, 'ç¹ä½æ°å¢', 'safety:inspection-point:create', 3, 2, 1075610, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075631, 'ç¹ä½ä¿®æ¹', 'safety:inspection-point:update', 3, 3, 1075610, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075632, 'ç¹ä½å é¤', 'safety:inspection-point:delete', 3, 4, 1075610, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | -- å·¡æ£è®°å½ |
| | | (1075633, 'å·¡æ£æ¥è¯¢', 'safety:inspection:query', 3, 1, 1075611, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075634, 'å·¡æ£æ°å¢', 'safety:inspection:create', 3, 2, 1075611, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075635, 'å·¡æ£ä¿®æ¹', 'safety:inspection:update', 3, 3, 1075611, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075636, 'å·¡æ£å é¤', 'safety:inspection:delete', 3, 4, 1075611, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075637, 'å·¡æ£å¯¼åº', 'safety:inspection:export', 3, 5, 1075611, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | -- 鿣 |
| | | (1075638, '鿣æ¥è¯¢', 'safety:hazard:query', 3, 1, 1075612, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075639, '鿣䏿¥', 'safety:hazard:create', 3, 2, 1075612, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075640, 'éæ£ä¿®æ¹', 'safety:hazard:update', 3, 3, 1075612, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075641, '鿣忴¾', 'safety:hazard:assign', 3, 4, 1075612, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075642, 'éæ£æ´æ¹', 'safety:hazard:rectify', 3, 5, 1075612, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075643, '鿣夿¥', 'safety:hazard:recheck', 3, 6, 1075612, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075644, '鿣å é¤', 'safety:hazard:delete', 3, 7, 1075612, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075645, '鿣坼åº', 'safety:hazard:export', 3, 8, 1075612, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | -- é«å±ä½ä¸ç¥¨ |
| | | (1075646, 'ä½ä¸ç¥¨æ¥è¯¢', 'safety:permit:query', 3, 1, 1075605, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075647, 'ä½ä¸ç¥¨ç³è¯·', 'safety:permit:create', 3, 2, 1075605, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075648, 'ä½ä¸ç¥¨ä¿®æ¹', 'safety:permit:update', 3, 3, 1075605, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075649, 'ä½ä¸ç¥¨å®¡æ¹', 'safety:permit:approve', 3, 4, 1075605, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075650, 'ä½ä¸ç¥¨å é¤', 'safety:permit:delete', 3, 5, 1075605, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075651, 'ä½ä¸ç¥¨å¯¼åº', 'safety:permit:export', 3, 6, 1075605, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | -- ç©èµå°è´¦ |
| | | (1075652, 'ç©èµæ¥è¯¢', 'safety:material:query', 3, 1, 1075613, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075653, 'ç©èµæ°å¢', 'safety:material:create', 3, 2, 1075613, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075654, 'ç©èµä¿®æ¹', 'safety:material:update', 3, 3, 1075613, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075655, 'ç©èµå é¤', 'safety:material:delete', 3, 4, 1075613, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075656, 'ç©èµå¯¼åº', 'safety:material:export', 3, 5, 1075613, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | -- åºå
¥åºæµæ°´ |
| | | (1075657, 'æµæ°´æ¥è¯¢', 'safety:material-stock:query', 3, 1, 1075614, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075658, 'å
¥åºç»è®°', 'safety:material-stock:in', 3, 2, 1075614, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075659, 'åºåºç»è®°', 'safety:material-stock:out', 3, 3, 1075614, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075660, 'æµæ°´å¯¼åº', 'safety:material-stock:export', 3, 4, 1075614, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | -- å¹è® |
| | | (1075661, 'å¹è®æ¥è¯¢', 'safety:training:query', 3, 1, 1075615, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075662, 'å¹è®æ°å¢', 'safety:training:create', 3, 2, 1075615, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075663, 'å¹è®ä¿®æ¹', 'safety:training:update', 3, 3, 1075615, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075664, 'å¹è®å é¤', 'safety:training:delete', 3, 4, 1075615, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075665, 'å¹è®å¯¼åº', 'safety:training:export', 3, 5, 1075615, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | -- æ¼ç» |
| | | (1075666, 'æ¼ç»æ¥è¯¢', 'safety:drill:query', 3, 1, 1075616, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075667, 'æ¼ç»æ°å¢', 'safety:drill:create', 3, 2, 1075616, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075668, 'æ¼ç»ä¿®æ¹', 'safety:drill:update', 3, 3, 1075616, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075669, 'æ¼ç»å é¤', 'safety:drill:delete', 3, 4, 1075616, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075670, 'æ¼ç»å¯¼åº', 'safety:drill:export', 3, 5, 1075616, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | -- äºæ
|
| | | (1075671, 'äºæ
æ¥è¯¢', 'safety:accident:query', 3, 1, 1075608, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075672, 'äºæ
ç»è®°', 'safety:accident:create', 3, 2, 1075608, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075673, 'äºæ
ä¿®æ¹', 'safety:accident:update', 3, 3, 1075608, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075674, 'äºæ
å é¤', 'safety:accident:delete', 3, 4, 1075608, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075675, 'äºæ
导åº', 'safety:accident:export', 3, 5, 1075608, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | -- æ ååå°è´¦ |
| | | (1075676, 'å°è´¦æ¥è¯¢', 'safety:ledger:query', 3, 1, 1075609, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1075677, 'å°è´¦å¯¼åº', 'safety:ledger:export', 3, 2, 1075609, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | -- éä»¶ä¸ä¼ ï¼ç§»å¨ç«¯æç
§ï¼ |
| | | (1075678, 'éä»¶ä¸ä¼ ', 'safety:file:upload', 3, 1, 1075600, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0') |
| | | ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `permission`=VALUES(`permission`), `status`=0, `deleted`=b'0'; |
| | | |
| | | -- ---------- 5. è¶
管è§è²ææï¼role_id=1 为è¶
级管çåï¼å®é
ç± hasAnySuperAdmin å
åºï¼æ¤å¤ææç»æ®éè§è² 2ï¼ ---------- |
| | | INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) |
| | | SELECT 2, m.`id`, '1', NOW(), '1', NOW(), b'0', 1 |
| | | FROM `system_menu` m |
| | | LEFT JOIN `system_role_menu` rm ON rm.`role_id` = 2 AND rm.`menu_id` = m.`id` AND rm.`deleted` = b'0' AND rm.`tenant_id` = 1 |
| | | WHERE m.`id` BETWEEN 1075600 AND 1075678 AND m.`deleted` = b'0' AND rm.`id` IS NULL; |
| | | |
| | | -- ---------- 6. æ ¡éª ---------- |
| | | SELECT COUNT(*) AS safety_menus FROM `system_menu` WHERE `id` BETWEEN 1075600 AND 1075678 AND `deleted` = b'0'; |
| | | SELECT `id`, `name`, `parent_id`, `path`, `component` FROM `system_menu` WHERE `id` BETWEEN 1075600 AND 1075616 AND `deleted` = b'0' ORDER BY `id`; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ============================================================ |
| | | -- å®å
¨ç产模å - è¡¨ç»æ + èåï¼çµåè¡ä¸å®å
¨ç产æ ååï¼ |
| | | -- çææ¶é´ï¼2026-10-29 |
| | | -- éç¨ï¼MySQL 8.4+ |
| | | -- å
å®¹ï¼ |
| | | -- 1. å®å
¨ç»ç»æ¶æ safety_org |
| | | -- 2. ç¹ç§ä½ä¸è¯å°è´¦ safety_certificateï¼çµå·¥è¯/é«åæä½è¯çï¼å°æé¢è¦ï¼ |
| | | -- 3. å®å
¨å·¡æ£ç¹ä½ safety_inspection_point |
| | | -- 4. å®å
¨å·¡æ£è®°å½ safety_inspection |
| | | -- 5. 鿣ç»è®°ä¸éç¯ safety_hazardï¼ä¸æ¥-åæ´¾-æ´æ¹-夿¥ï¼ |
| | | -- 6. é«å±ä½ä¸ç¥¨ safety_work_permitï¼å¨ç«/é«å带çµ/æé空é´çï¼ |
| | | -- 7. ä½ä¸çæ¤è®°å½ safety_work_permit_monitor |
| | | -- 8. åºæ¥ç©èµå°è´¦ safety_materialï¼ç»ç¼/å±å/æ¶é²ï¼ |
| | | -- 9. ç©èµåºå
¥åºæµæ°´ safety_material_stock |
| | | -- 10. å®å
¨å¹è®è®°å½ safety_training |
| | | -- 11. æ¶é²æ¼ç»è®°å½ safety_drill |
| | | -- 12. äºæ
ç»è®° safety_accident |
| | | -- 说æï¼æ¬èæ¬å¹çï¼IF NOT EXISTS / ON DUPLICATE KEY UPDATEï¼ï¼å¯é夿§è¡ |
| | | -- ============================================================ |
| | | |
| | | -- ---------- 1. å®å
¨ç»ç»æ¶æ ---------- |
| | | CREATE TABLE IF NOT EXISTS `safety_org` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `parent_id` bigint NOT NULL DEFAULT 0 COMMENT 'ç¶çº§ç¼å·ï¼0 为顶级ï¼', |
| | | `name` varchar(100) NOT NULL COMMENT 'ç»ç»åç§°', |
| | | `leader_name` varchar(50) DEFAULT NULL COMMENT 'è´è´£äººå§å', |
| | | `leader_phone` varchar(30) DEFAULT NULL COMMENT 'è´è´£äººçµè¯', |
| | | `member_names` varchar(500) DEFAULT NULL COMMENT 'æåå§åï¼éå·åé', |
| | | `duty` varchar(500) DEFAULT NULL COMMENT 'å®å
¨èè´£', |
| | | `sort` int NOT NULL DEFAULT 0 COMMENT 'æ¾ç¤ºé¡ºåº', |
| | | `status` tinyint NOT NULL DEFAULT 0 COMMENT 'ç¶æï¼0-å¯ç¨ï¼1-åç¨', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | KEY `idx_parent_id` (`parent_id`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='å®å
¨ç产-ç»ç»æ¶æ'; |
| | | |
| | | -- ---------- 2. ç¹ç§ä½ä¸è¯å°è´¦ï¼å°æèªå¨é¢è¦ï¼ ---------- |
| | | CREATE TABLE IF NOT EXISTS `safety_certificate` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `employee_name` varchar(50) NOT NULL COMMENT 'æè¯äººå§å', |
| | | `employee_no` varchar(50) DEFAULT NULL COMMENT 'å·¥å·', |
| | | `dept_name` varchar(100) DEFAULT NULL COMMENT 'æå±é¨é¨', |
| | | `cert_type` varchar(50) NOT NULL COMMENT 'è¯ä»¶ç±»åï¼LOW_VOLTAGE_ELECTRICIAN/HIGH_VOLTAGE_OPERATION/WELDING/HOIST/HEIGHT/LIMITED_SPACE/WORK_AT_HEIGHT/OTHER', |
| | | `cert_no` varchar(64) NOT NULL COMMENT 'è¯ä»¶ç¼å·', |
| | | `issuer` varchar(100) DEFAULT NULL COMMENT 'åè¯æºå
³', |
| | | `issue_date` date DEFAULT NULL COMMENT 'åè¯æ¥æ', |
| | | `expire_date` date NOT NULL COMMENT 'æææè³', |
| | | `review_date` date DEFAULT NULL COMMENT '䏿¬¡å¤å®¡æ¥æ', |
| | | `warn_days` int NOT NULL DEFAULT 30 COMMENT 'å°æé¢è¦æå天æ°', |
| | | `status` varchar(20) NOT NULL DEFAULT 'VALID' COMMENT 'ç¶æï¼VALID-ææï¼EXPIRING-å³å°å°æï¼EXPIRED-å·²è¿æï¼REVOKED-已注é', |
| | | `attachment` varchar(500) DEFAULT NULL COMMENT 'è¯ä»¶æ«æä»¶ URLï¼éå·åé', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | KEY `idx_employee_name` (`employee_name`), |
| | | KEY `idx_cert_type` (`cert_type`), |
| | | KEY `idx_expire_date` (`expire_date`), |
| | | KEY `idx_status` (`status`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='å®å
¨ç产-ç¹ç§ä½ä¸è¯å°è´¦'; |
| | | |
| | | -- ---------- 3. å®å
¨å·¡æ£ç¹ä½ ---------- |
| | | CREATE TABLE IF NOT EXISTS `safety_inspection_point` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `code` varchar(64) NOT NULL COMMENT 'ç¹ä½ç¼ç ', |
| | | `name` varchar(100) NOT NULL COMMENT 'ç¹ä½åç§°', |
| | | `point_type` varchar(30) NOT NULL COMMENT 'ç¹ä½ç±»åï¼HIGH_VOLTAGE_ROOM-é«åé
çµå®¤ï¼UNIT_AREA-æºç»åºï¼DANGER_CHEMICAL-å±åååºï¼FIRE_AREA-æ¶é²éç¹é¨ä½ï¼OTHER-å
¶ä»', |
| | | `workshop_name` varchar(100) DEFAULT NULL COMMENT 'æå±è½¦é´/åºå', |
| | | `location` varchar(200) DEFAULT NULL COMMENT 'å
·ä½ä½ç½®', |
| | | `inspect_items` varchar(2000) DEFAULT NULL COMMENT 'å·¡æ£é¡¹ç®æ¸
åï¼æè¡åé', |
| | | `inspect_cycle` varchar(20) NOT NULL DEFAULT 'DAILY' COMMENT 'å·¡æ£å¨æï¼SHIFT-æ¯çï¼DAILY-æ¯æ¥ï¼WEEKLY-æ¯å¨ï¼MONTHLY-æ¯æ', |
| | | `owner_name` varchar(50) DEFAULT NULL COMMENT '责任人', |
| | | `status` tinyint NOT NULL DEFAULT 0 COMMENT 'ç¶æï¼0-å¯ç¨ï¼1-åç¨', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | UNIQUE KEY `uk_code` (`code`, `deleted`), |
| | | KEY `idx_point_type` (`point_type`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='å®å
¨ç产-å·¡æ£ç¹ä½'; |
| | | |
| | | -- ---------- 4. å®å
¨å·¡æ£è®°å½ ---------- |
| | | CREATE TABLE IF NOT EXISTS `safety_inspection` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `point_id` bigint DEFAULT NULL COMMENT 'å·¡æ£ç¹ä½ç¼å·', |
| | | `point_name` varchar(100) DEFAULT NULL COMMENT 'ç¹ä½åç§°ï¼å¿«ç
§ï¼', |
| | | `point_type` varchar(30) DEFAULT NULL COMMENT 'ç¹ä½ç±»åï¼å¿«ç
§ï¼', |
| | | `inspect_time` datetime NOT NULL COMMENT 'å·¡æ£æ¶é´', |
| | | `inspector` varchar(50) NOT NULL COMMENT 'å·¡æ£äºº', |
| | | `result` varchar(20) NOT NULL DEFAULT 'NORMAL' COMMENT 'å·¡æ£ç»æï¼NORMAL-æ£å¸¸ï¼ABNORMAL-å¼å¸¸', |
| | | `content` varchar(2000) DEFAULT NULL COMMENT 'å·¡æ£å
容䏿
åµ', |
| | | `photo_urls` varchar(2000) DEFAULT NULL COMMENT 'ç°åºç
§ç URLï¼éå·åé', |
| | | `hazard_count` int NOT NULL DEFAULT 0 COMMENT 'æ¬æ¬¡åç°ç鿣æ°', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | KEY `idx_point_id` (`point_id`), |
| | | KEY `idx_inspect_time` (`inspect_time`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='å®å
¨ç产-å·¡æ£è®°å½'; |
| | | |
| | | -- ---------- 5. 鿣ç»è®°ä¸éç¯ï¼ä¸æ¥-åæ´¾-æ´æ¹-夿¥ï¼ ---------- |
| | | CREATE TABLE IF NOT EXISTS `safety_hazard` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `code` varchar(64) NOT NULL COMMENT '鿣ç¼å·', |
| | | `title` varchar(200) NOT NULL COMMENT '鿣æ é¢', |
| | | `level` varchar(20) NOT NULL DEFAULT 'GENERAL' COMMENT '鿣ç级ï¼GENERAL-ä¸è¬ï¼MAJOR-é大', |
| | | `source` varchar(30) NOT NULL DEFAULT 'INSPECTION' COMMENT 'æ¥æºï¼INSPECTION-å·¡æ£åç°ï¼SELF_CHECK-èªæ¥ä¸æ¥ï¼REPORT-å工䏿¥ï¼EXTERNAL-å¤é¨æ£æ¥', |
| | | `inspection_id` bigint DEFAULT NULL COMMENT 'å
³èå·¡æ£è®°å½ç¼å·', |
| | | `point_id` bigint DEFAULT NULL COMMENT 'å
³èå·¡æ£ç¹ä½ç¼å·', |
| | | `point_name` varchar(100) DEFAULT NULL COMMENT 'ç¹ä½åç§°', |
| | | `location` varchar(200) DEFAULT NULL COMMENT '鿣ä½ç½®', |
| | | `description` varchar(2000) DEFAULT NULL COMMENT '鿣æè¿°', |
| | | `photo_urls` varchar(2000) DEFAULT NULL COMMENT 'ç°åºç
§ç URLï¼éå·åéï¼ç§»å¨ç«¯æç
§ä¸ä¼ ï¼', |
| | | `reporter` varchar(50) NOT NULL COMMENT '䏿¥äºº', |
| | | `report_time` datetime NOT NULL COMMENT '䏿¥æ¶é´', |
| | | `assignee` varchar(50) DEFAULT NULL COMMENT 'æ´æ¹è´£ä»»äººï¼åæ´¾ï¼', |
| | | `assign_time` datetime DEFAULT NULL COMMENT 'åæ´¾æ¶é´', |
| | | `rectify_deadline` date DEFAULT NULL COMMENT 'æ´æ¹æé', |
| | | `rectify_desc` varchar(2000) DEFAULT NULL COMMENT 'æ´æ¹æªæ½ä¸ç»æ', |
| | | `rectify_photo_urls` varchar(2000) DEFAULT NULL COMMENT 'æ´æ¹åç
§ç URLï¼éå·åé', |
| | | `rectify_time` datetime DEFAULT NULL COMMENT 'æ´æ¹å®ææ¶é´', |
| | | `rechecker` varchar(50) DEFAULT NULL COMMENT '夿¥äºº', |
| | | `recheck_time` datetime DEFAULT NULL COMMENT '夿¥æ¶é´', |
| | | `recheck_result` varchar(20) DEFAULT NULL COMMENT '夿¥ç»è®ºï¼PASSED-éè¿ï¼REJECTED-ä¸éè¿éåæ´æ¹', |
| | | `recheck_remark` varchar(500) DEFAULT NULL COMMENT '夿¥æè§', |
| | | `status` varchar(20) NOT NULL DEFAULT 'REPORTED' COMMENT 'ç¶æï¼REPORTED-已䏿¥ï¼ASSIGNED-已忴¾ï¼RECTIFYING-æ´æ¹ä¸ï¼RECHECKING-å¾
夿¥ï¼CLOSED-å·²éç¯ï¼REJECTED-夿¥ä¸éè¿', |
| | | `close_time` datetime DEFAULT NULL COMMENT 'éç¯æ¶é´', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | UNIQUE KEY `uk_code` (`code`, `deleted`), |
| | | KEY `idx_status` (`status`), |
| | | KEY `idx_report_time` (`report_time`), |
| | | KEY `idx_inspection_id` (`inspection_id`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='å®å
¨ç产-鿣ç»è®°ä¸éç¯'; |
| | | |
| | | -- ---------- 6. é«å±ä½ä¸ç¥¨ ---------- |
| | | CREATE TABLE IF NOT EXISTS `safety_work_permit` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `code` varchar(64) NOT NULL COMMENT 'ä½ä¸ç¥¨ç¼å·', |
| | | `permit_type` varchar(30) NOT NULL COMMENT 'ä½ä¸ç±»åï¼HOT_WORK-å¨ç«ä½ä¸ï¼LIVE_HIGH_VOLTAGE-é«å带çµä½ä¸ï¼LIMITED_SPACE-æé空é´ä½ä¸ï¼WORK_AT_HEIGHT-é«å¤ä½ä¸ï¼LIFTING-åè£
ä½ä¸ï¼TEMP_ELECTRIC-临æ¶ç¨çµä½ä¸ï¼OTHER-å
¶ä»', |
| | | `title` varchar(200) NOT NULL COMMENT 'ä½ä¸åç§°', |
| | | `workshop_name` varchar(100) DEFAULT NULL COMMENT 'ä½ä¸åºå/车é´', |
| | | `location` varchar(200) DEFAULT NULL COMMENT 'ä½ä¸å°ç¹', |
| | | `work_content` varchar(2000) DEFAULT NULL COMMENT 'ä½ä¸å
容ä¸èå´', |
| | | `applicant` varchar(50) NOT NULL COMMENT 'ç³è¯·äºº', |
| | | `apply_time` datetime NOT NULL COMMENT 'ç³è¯·æ¶é´', |
| | | `plan_start_time` datetime NOT NULL COMMENT '计åå¼å§æ¶é´', |
| | | `plan_end_time` datetime NOT NULL COMMENT '计åç»ææ¶é´', |
| | | `actual_start_time` datetime DEFAULT NULL COMMENT 'å®é
å¼å§æ¶é´', |
| | | `actual_end_time` datetime DEFAULT NULL COMMENT 'å®é
ç»ææ¶é´', |
| | | `risk_level` varchar(20) NOT NULL DEFAULT 'NORMAL' COMMENT 'é£é©ç级ï¼LOW-ä½ï¼NORMAL-ä¸è¬ï¼HIGH-é«ï¼VERY_HIGH-æé«', |
| | | `safety_measures` varchar(2000) DEFAULT NULL COMMENT 'å®å
¨æªæ½', |
| | | `approver` varchar(50) DEFAULT NULL COMMENT '审æ¹äºº', |
| | | `approve_time` datetime DEFAULT NULL COMMENT 'å®¡æ¹æ¶é´', |
| | | `approve_comment` varchar(500) DEFAULT NULL COMMENT 'å®¡æ¹æè§', |
| | | `guardian` varchar(50) DEFAULT NULL COMMENT 'çæ¤äºº', |
| | | `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT 'ç¶æï¼DRAFT-è稿ï¼PENDING-å¾
审æ¹ï¼APPROVED-å·²æ¹åï¼REJECTED-已驳åï¼IN_PROGRESS-ä½ä¸ä¸ï¼CLOSED-å·²å®ç»ï¼CANCELLED-å·²ä½åº', |
| | | `attachment` varchar(2000) DEFAULT NULL COMMENT 'ä½ä¸ç¥¨éä»¶ URLï¼éå·åé', |
| | | `photo_urls` varchar(2000) DEFAULT NULL COMMENT 'ç°åºç
§ç URLï¼éå·åé', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | UNIQUE KEY `uk_code` (`code`, `deleted`), |
| | | KEY `idx_permit_type` (`permit_type`), |
| | | KEY `idx_status` (`status`), |
| | | KEY `idx_plan_start_time` (`plan_start_time`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='å®å
¨ç产-é«å±ä½ä¸ç¥¨'; |
| | | |
| | | -- ---------- 7. ä½ä¸çæ¤è®°å½ ---------- |
| | | CREATE TABLE IF NOT EXISTS `safety_work_permit_monitor` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `permit_id` bigint NOT NULL COMMENT 'ä½ä¸ç¥¨ç¼å·', |
| | | `monitor_time` datetime NOT NULL COMMENT 'çæ¤æ¶é´', |
| | | `guardian` varchar(50) NOT NULL COMMENT 'çæ¤äºº', |
| | | `monitor_content` varchar(1000) DEFAULT NULL COMMENT 'çæ¤å
容䏿
åµ', |
| | | `abnormal` varchar(500) DEFAULT NULL COMMENT 'å¼å¸¸æ
åµä¸å¤ç½®', |
| | | `photo_urls` varchar(2000) DEFAULT NULL COMMENT 'ç°åºç
§ç URLï¼éå·åé', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | KEY `idx_permit_id` (`permit_id`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='å®å
¨ç产-ä½ä¸çæ¤è®°å½'; |
| | | |
| | | -- ---------- 8. åºæ¥/å®å
¨ç©èµå°è´¦ ---------- |
| | | CREATE TABLE IF NOT EXISTS `safety_material` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `code` varchar(64) NOT NULL COMMENT 'ç©èµç¼ç ', |
| | | `name` varchar(100) NOT NULL COMMENT 'ç©èµåç§°', |
| | | `category` varchar(30) NOT NULL COMMENT 'ç±»å«ï¼INSULATING-çµåç»ç¼ï¼HAZARD_CHEMICAL-å±ååï¼FIRE-æ¶é²ç©èµï¼PPE-å³ä¿ç¨åï¼OTHER-å
¶ä»', |
| | | `spec` varchar(100) DEFAULT NULL COMMENT 'è§æ ¼åå·', |
| | | `unit` varchar(20) NOT NULL DEFAULT '个' COMMENT '计éåä½', |
| | | `stock_qty` decimal(18,3) NOT NULL DEFAULT 0 COMMENT 'å½ååºåæ°é', |
| | | `safe_stock` decimal(18,3) NOT NULL DEFAULT 0 COMMENT 'å®å
¨åºåï¼ä½äºåé¢è¦ï¼', |
| | | `storage_location` varchar(100) DEFAULT NULL COMMENT 'åæ¾ä½ç½®', |
| | | `expire_date` date DEFAULT NULL COMMENT 'æææè³ï¼ç»ç¼/å±ååå¿
å¡«ï¼', |
| | | `validity_months` int DEFAULT NULL COMMENT 'æææææ°ï¼å¦ç»ç¼æå¥ 6 个æï¼', |
| | | `manager` varchar(50) DEFAULT NULL COMMENT 'ä¿ç®¡äºº', |
| | | `status` tinyint NOT NULL DEFAULT 0 COMMENT 'ç¶æï¼0-å¯ç¨ï¼1-åç¨', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | UNIQUE KEY `uk_code` (`code`, `deleted`), |
| | | KEY `idx_category` (`category`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='å®å
¨ç产-åºæ¥ç©èµå°è´¦'; |
| | | |
| | | -- ---------- 9. ç©èµåºå
¥åºæµæ°´ ---------- |
| | | CREATE TABLE IF NOT EXISTS `safety_material_stock` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `material_id` bigint NOT NULL COMMENT 'ç©èµç¼å·', |
| | | `material_name` varchar(100) DEFAULT NULL COMMENT 'ç©èµåç§°ï¼å¿«ç
§ï¼', |
| | | `category` varchar(30) DEFAULT NULL COMMENT 'ç©èµç±»å«ï¼å¿«ç
§ï¼', |
| | | `biz_type` varchar(20) NOT NULL COMMENT 'ä¸å¡ç±»åï¼IN-å
¥åºï¼OUT-åºåº', |
| | | `quantity` decimal(18,3) NOT NULL COMMENT 'æ°é', |
| | | `stock_before` decimal(18,3) NOT NULL DEFAULT 0 COMMENT 'æä½ååºå', |
| | | `stock_after` decimal(18,3) NOT NULL DEFAULT 0 COMMENT 'æä½ååºå', |
| | | `biz_date` date NOT NULL COMMENT 'ä¸å¡æ¥æ', |
| | | `operator` varchar(50) NOT NULL COMMENT 'ç»å人', |
| | | `receiver` varchar(50) DEFAULT NULL COMMENT 'é¢ç¨äººï¼åºåºï¼', |
| | | `purpose` varchar(200) DEFAULT NULL COMMENT 'ç¨é/å»å', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | KEY `idx_material_id` (`material_id`), |
| | | KEY `idx_biz_date` (`biz_date`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='å®å
¨ç产-ç©èµåºå
¥åºæµæ°´'; |
| | | |
| | | -- ---------- 10. å®å
¨å¹è®è®°å½ ---------- |
| | | CREATE TABLE IF NOT EXISTS `safety_training` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `title` varchar(200) NOT NULL COMMENT 'å¹è®ä¸»é¢', |
| | | `training_type` varchar(30) NOT NULL DEFAULT 'SAFETY' COMMENT 'å¹è®ç±»åï¼SAFETY-å®å
¨å¹è®ï¼SKILL-æè½å¹è®ï¼LAW-æ³è§å®£è´¯ï¼EMERGENCY-åºæ¥æ¼ç»å¹è®ï¼OTHER-å
¶ä»', |
| | | `train_date` date NOT NULL COMMENT 'å¹è®æ¥æ', |
| | | `duration_hours` decimal(8,1) DEFAULT NULL COMMENT 'å¹è®å¦æ¶', |
| | | `trainer` varchar(50) DEFAULT NULL COMMENT '讲å¸/ç»ç»äºº', |
| | | `location` varchar(200) DEFAULT NULL COMMENT 'å¹è®å°ç¹', |
| | | `participants` varchar(2000) DEFAULT NULL COMMENT 'åå 人åå§åï¼éå·åé', |
| | | `participant_count` int NOT NULL DEFAULT 0 COMMENT 'åå 人æ°', |
| | | `content` varchar(2000) DEFAULT NULL COMMENT 'å¹è®å
容', |
| | | `exam_result` varchar(2000) DEFAULT NULL COMMENT 'èæ ¸æ
åµ', |
| | | `attachment` varchar(2000) DEFAULT NULL COMMENT 'ç¾å°è¡¨/课件/ç
§ç URLï¼éå·åé', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | KEY `idx_train_date` (`train_date`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='å®å
¨ç产-å¹è®è®°å½'; |
| | | |
| | | -- ---------- 11. æ¶é²æ¼ç»è®°å½ ---------- |
| | | CREATE TABLE IF NOT EXISTS `safety_drill` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `title` varchar(200) NOT NULL COMMENT 'æ¼ç»åç§°', |
| | | `drill_type` varchar(30) NOT NULL DEFAULT 'FIRE' COMMENT 'æ¼ç»ç±»åï¼FIRE-æ¶é²æ¼ç»ï¼EMERGENCY_EVAC-åºæ¥çæ£ï¼ELECTRIC_ACCIDENT-触çµäºæ
ï¼CHEMICAL_LEAK-å±ååæ³æ¼ï¼OTHER-å
¶ä»', |
| | | `drill_date` date NOT NULL COMMENT 'æ¼ç»æ¥æ', |
| | | `location` varchar(200) DEFAULT NULL COMMENT 'æ¼ç»å°ç¹', |
| | | `organizer` varchar(50) DEFAULT NULL COMMENT 'ç»ç»äºº', |
| | | `participants` varchar(2000) DEFAULT NULL COMMENT 'åå 人åå§åï¼éå·åé', |
| | | `participant_count` int NOT NULL DEFAULT 0 COMMENT 'åå 人æ°', |
| | | `plan_desc` varchar(2000) DEFAULT NULL COMMENT 'æ¼ç»æ¹æ¡', |
| | | `process_desc` varchar(2000) DEFAULT NULL COMMENT 'æ¼ç»è¿ç¨è®°å½', |
| | | `summary` varchar(2000) DEFAULT NULL COMMENT 'æ¼ç»æ»ç»ä¸æ¹è¿', |
| | | `duration_minutes` int DEFAULT NULL COMMENT 'æ¼ç»æ¶é¿ï¼åéï¼', |
| | | `attachment` varchar(2000) DEFAULT NULL COMMENT 'æ¼ç»ç
§ç/è®°å½è¡¨ URLï¼éå·åé', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | KEY `idx_drill_date` (`drill_date`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='å®å
¨ç产-æ¶é²æ¼ç»è®°å½'; |
| | | |
| | | -- ---------- 12. å®å
¨äºæ
ç»è®° ---------- |
| | | CREATE TABLE IF NOT EXISTS `safety_accident` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `code` varchar(64) NOT NULL COMMENT 'äºæ
ç¼å·', |
| | | `title` varchar(200) NOT NULL COMMENT 'äºæ
åç§°', |
| | | `accident_type` varchar(30) NOT NULL COMMENT 'äºæ
ç±»åï¼ELECTRIC_SHOCK-触çµï¼FIRE-ç«ç¾ï¼FALL-é«å¤å è½ï¼OBJECT_STRIKE-ç©ä½æå»ï¼MECHANICAL-æºæ¢°ä¼¤å®³ï¼CHEMICAL-䏿¯çªæ¯ï¼OTHER-å
¶ä»', |
| | | `level` varchar(20) NOT NULL DEFAULT 'GENERAL' COMMENT 'äºæ
ç级ï¼SLIGHT-轻伤ï¼GENERAL-ä¸è¬ï¼SEVERE-é伤ï¼MAJOR-é大', |
| | | `occur_time` datetime NOT NULL COMMENT 'åçæ¶é´', |
| | | `location` varchar(200) DEFAULT NULL COMMENT 'åçå°ç¹', |
| | | `workshop_name` varchar(100) DEFAULT NULL COMMENT 'æå±è½¦é´/åºå', |
| | | `casualty_desc` varchar(500) DEFAULT NULL COMMENT '伤亡æ
åµ', |
| | | `economic_loss` decimal(18,2) DEFAULT NULL COMMENT 'ç´æ¥ç»æµæå¤±ï¼å
ï¼', |
| | | `involved_persons` varchar(500) DEFAULT NULL COMMENT 'æ¶äºäººåå§åï¼éå·åé', |
| | | `description` varchar(2000) DEFAULT NULL COMMENT 'äºæ
ç»è¿', |
| | | `cause_analysis` varchar(2000) DEFAULT NULL COMMENT 'åå åæ', |
| | | `measures` varchar(2000) DEFAULT NULL COMMENT 'å¤çæªæ½ä¸æ´æ¹è¦æ±', |
| | | `reporter` varchar(50) DEFAULT NULL COMMENT 'ç»è®°äºº', |
| | | `report_time` datetime DEFAULT NULL COMMENT 'ç»è®°æ¶é´', |
| | | `status` varchar(20) NOT NULL DEFAULT 'REPORTED' COMMENT 'ç¶æï¼REPORTED-å·²ç»è®°ï¼INVESTIGATING-è°æ¥ä¸ï¼HANDLED-å·²å¤çï¼CLOSED-å·²ç»æ¡', |
| | | `attachment` varchar(2000) DEFAULT NULL COMMENT 'ç°åºç
§ç/è°æ¥æ¥å URLï¼éå·åé', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | UNIQUE KEY `uk_code` (`code`, `deleted`), |
| | | KEY `idx_occur_time` (`occur_time`), |
| | | KEY `idx_accident_type` (`accident_type`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='å®å
¨ç产-äºæ
ç»è®°'; |
| | | |
| | | SELECT 'å®å
¨ç产模åè¡¨ç»æåå»ºå®æ' AS result; |
| | |
| | | <version>${revision}</version> |
| | | </dependency> |
| | | |
| | | <!-- HRM äººèµ APIï¼å®å
¨ç产模åéè¦æå工档æ¡è§£ææè¯äºº/è´è´£äºº --> |
| | | <dependency> |
| | | <groupId>cn.iocoder.boot</groupId> |
| | | <artifactId>yudao-module-hrm-api</artifactId> |
| | | <version>${revision}</version> |
| | | </dependency> |
| | | |
| | | <!-- CRM 客æ·ç®¡ç API --> |
| | | <dependency> |
| | | <groupId>cn.iocoder.boot</groupId> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| | | 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.safety.vo.cert.SafetyCertificatePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.cert.SafetyCertificateRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.cert.SafetyCertificateSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.service.safety.SafetyCertificateService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.annotation.Resource; |
| | | import jakarta.validation.Valid; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç¹ç§ä½ä¸è¯å°è´¦ï¼å«å°æèªå¨é¢è¦ï¼ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Tag(name = "管çåå° - å®å
¨ç产-ç¹ç§ä½ä¸è¯") |
| | | @RestController |
| | | @RequestMapping("/safety/certificate") |
| | | @Validated |
| | | public class SafetyCertificateController { |
| | | |
| | | @Resource |
| | | private SafetyCertificateService certificateService; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "æ°å¢ç¹ç§ä½ä¸è¯") |
| | | @PreAuthorize("@ss.hasPermission('safety:cert:create')") |
| | | public CommonResult<Long> create(@Valid @RequestBody SafetyCertificateSaveReqVO reqVO) { |
| | | return success(certificateService.createCertificate(reqVO)); |
| | | } |
| | | |
| | | @PutMapping("/update") |
| | | @Operation(summary = "ä¿®æ¹ç¹ç§ä½ä¸è¯") |
| | | @PreAuthorize("@ss.hasPermission('safety:cert:update')") |
| | | public CommonResult<Boolean> update(@Valid @RequestBody SafetyCertificateSaveReqVO reqVO) { |
| | | certificateService.updateCertificate(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @DeleteMapping("/delete") |
| | | @Operation(summary = "å é¤ç¹ç§ä½ä¸è¯") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:cert:delete')") |
| | | public CommonResult<Boolean> delete(@RequestParam("id") Long id) { |
| | | certificateService.deleteCertificate(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/get") |
| | | @Operation(summary = "è·å¾ç¹ç§ä½ä¸è¯") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:cert:query')") |
| | | public CommonResult<SafetyCertificateRespVO> get(@RequestParam("id") Long id) { |
| | | var cert = certificateService.getCertificate(id); |
| | | var resp = BeanUtils.toBean(cert, SafetyCertificateRespVO.class); |
| | | certificateService.fillDisplayFields(cert, resp); |
| | | return success(resp); |
| | | } |
| | | |
| | | @GetMapping("/page") |
| | | @Operation(summary = "è·å¾ç¹ç§ä½ä¸è¯å页") |
| | | @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); |
| | | certificateService.fillDisplayFieldsBatch(page.getList(), result.getList()); |
| | | return success(result); |
| | | } |
| | | |
| | | @GetMapping("/expiring-list") |
| | | @Operation(summary = "è·å¾å³å°å°æ/å·²è¿æçç¹ç§ä½ä¸è¯ï¼å°æèªå¨é¢è¦ï¼") |
| | | @Parameter(name = "days", description = "æåé¢è¦å¤©æ°ï¼é»è®¤ 30 天") |
| | | @PreAuthorize("@ss.hasPermission('safety:cert:query')") |
| | | public CommonResult<List<SafetyCertificateRespVO>> expiringList( |
| | | @RequestParam(value = "days", required = false) Integer days) { |
| | | List<cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyCertificateDO> certs = |
| | | certificateService.getExpiringCertificates(days); |
| | | certificateService.fillEmployeeInfo(certs); |
| | | var resps = BeanUtils.toBean(certs, SafetyCertificateRespVO.class); |
| | | certificateService.fillDisplayFieldsBatch(certs, resps); |
| | | return success(resps); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| | | import cn.iocoder.yudao.module.mes.service.safety.SafetyFileService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.List; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç§»å¨ç«¯ç°åºæç
§ä¸ä¼ |
| | | * |
| | | * <p>å·¡æ£ã鿣䏿¥ãä½ä¸ç¥¨ãæ¼ç»çç¯èçç
§çç»ä¸èµ°æ¤æ¥å£ï¼ |
| | | * è¿åå¯è®¿é® URLï¼åç«¯æ¼æéå·ä¸²åå
¥ä¸å¡è¡¨ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Tag(name = "管çåå° - å®å
¨ç产-éä»¶ä¸ä¼ ") |
| | | @RestController |
| | | @RequestMapping("/safety/file") |
| | | @Validated |
| | | public class SafetyFileController { |
| | | |
| | | @Resource |
| | | private SafetyFileService fileService; |
| | | |
| | | @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) |
| | | @Operation(summary = "ä¸ä¼ å个éä»¶ï¼ç§»å¨ç«¯æç
§ï¼") |
| | | @Parameter(name = "file", description = "æä»¶", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:file:upload')") |
| | | public CommonResult<String> upload(@RequestPart("file") MultipartFile file, |
| | | @RequestParam(value = "bizType", required = false) String bizType) { |
| | | return success(fileService.upload(file, bizType)); |
| | | } |
| | | |
| | | @PostMapping(value = "/upload-batch", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) |
| | | @Operation(summary = "æ¹éä¸ä¼ éä»¶ï¼ç§»å¨ç«¯ä¸æ¬¡å¤å¼ ï¼") |
| | | @PreAuthorize("@ss.hasPermission('safety:file:upload')") |
| | | public CommonResult<List<String>> uploadBatch(@RequestPart("files") List<MultipartFile> files, |
| | | @RequestParam(value = "bizType", required = false) String bizType) { |
| | | return success(fileService.uploadBatch(files, bizType)); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| | | 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.safety.vo.hazard.*; |
| | | import cn.iocoder.yudao.module.mes.service.safety.SafetyHazardService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.annotation.Resource; |
| | | import jakarta.validation.Valid; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - 鿣䏿¥ä¸éç¯ï¼ä¸æ¥-åæ´¾-æ´æ¹-夿¥ï¼ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Tag(name = "管çåå° - å®å
¨ç产-鿣éç¯") |
| | | @RestController |
| | | @RequestMapping("/safety/hazard") |
| | | @Validated |
| | | public class SafetyHazardController { |
| | | |
| | | @Resource |
| | | private SafetyHazardService hazardService; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "鿣䏿¥ï¼æ¯æç§»å¨ç«¯æç
§ä¸ä¼ ç photoUrlsï¼") |
| | | @PreAuthorize("@ss.hasPermission('safety:hazard:create')") |
| | | public CommonResult<Long> create(@Valid @RequestBody SafetyHazardSaveReqVO reqVO) { |
| | | return success(hazardService.createHazard(reqVO)); |
| | | } |
| | | |
| | | @PutMapping("/update") |
| | | @Operation(summary = "ä¿®æ¹éæ£åºç¡ä¿¡æ¯") |
| | | @PreAuthorize("@ss.hasPermission('safety:hazard:update')") |
| | | public CommonResult<Boolean> update(@Valid @RequestBody SafetyHazardSaveReqVO reqVO) { |
| | | hazardService.updateHazard(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @DeleteMapping("/delete") |
| | | @Operation(summary = "å é¤éæ£") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:hazard:delete')") |
| | | public CommonResult<Boolean> delete(@RequestParam("id") Long id) { |
| | | hazardService.deleteHazard(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/get") |
| | | @Operation(summary = "è·å¾éæ£") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @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); |
| | | } |
| | | |
| | | @GetMapping("/page") |
| | | @Operation(summary = "è·å¾éæ£å页") |
| | | @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)); |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | @PutMapping("/assign") |
| | | @Operation(summary = "åæ´¾éæ£æ´æ¹è´£ä»»äºº") |
| | | @PreAuthorize("@ss.hasPermission('safety:hazard:assign')") |
| | | public CommonResult<Boolean> assign(@Valid @RequestBody SafetyHazardAssignReqVO reqVO) { |
| | | hazardService.assignHazard(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @PutMapping("/rectify") |
| | | @Operation(summary = "æäº¤éæ£æ´æ¹ç»æ") |
| | | @PreAuthorize("@ss.hasPermission('safety:hazard:rectify')") |
| | | public CommonResult<Boolean> rectify(@Valid @RequestBody SafetyHazardRectifyReqVO reqVO) { |
| | | hazardService.rectifyHazard(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @PutMapping("/recheck") |
| | | @Operation(summary = "鿣夿¥ï¼éè¿åéç¯ï¼ä¸éè¿éåæ´æ¹ï¼") |
| | | @PreAuthorize("@ss.hasPermission('safety:hazard:recheck')") |
| | | public CommonResult<Boolean> recheck(@Valid @RequestBody SafetyHazardRecheckReqVO reqVO) { |
| | | hazardService.recheckHazard(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| | | 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.safety.vo.inspection.*; |
| | | import cn.iocoder.yudao.module.mes.service.safety.SafetyInspectionService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.annotation.Resource; |
| | | import jakarta.validation.Valid; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£ç¹ä½ä¸å·¡æ£è®°å½ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Tag(name = "管çåå° - å®å
¨ç产-å®å
¨å·¡æ£") |
| | | @RestController |
| | | @RequestMapping("/safety/inspection") |
| | | @Validated |
| | | public class SafetyInspectionController { |
| | | |
| | | @Resource |
| | | private SafetyInspectionService inspectionService; |
| | | |
| | | // ==================== å·¡æ£ç¹ä½ ==================== |
| | | |
| | | @PostMapping("/point/create") |
| | | @Operation(summary = "æ°å¢å·¡æ£ç¹ä½") |
| | | @PreAuthorize("@ss.hasPermission('safety:inspection-point:create')") |
| | | public CommonResult<Long> createPoint(@Valid @RequestBody SafetyInspectionPointSaveReqVO reqVO) { |
| | | return success(inspectionService.createPoint(reqVO)); |
| | | } |
| | | |
| | | @PutMapping("/point/update") |
| | | @Operation(summary = "ä¿®æ¹å·¡æ£ç¹ä½") |
| | | @PreAuthorize("@ss.hasPermission('safety:inspection-point:update')") |
| | | public CommonResult<Boolean> updatePoint(@Valid @RequestBody SafetyInspectionPointSaveReqVO reqVO) { |
| | | inspectionService.updatePoint(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @DeleteMapping("/point/delete") |
| | | @Operation(summary = "å é¤å·¡æ£ç¹ä½") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:inspection-point:delete')") |
| | | public CommonResult<Boolean> deletePoint(@RequestParam("id") Long id) { |
| | | inspectionService.deletePoint(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/point/get") |
| | | @Operation(summary = "è·å¾å·¡æ£ç¹ä½") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @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)); |
| | | return success(resp); |
| | | } |
| | | |
| | | @GetMapping("/point/page") |
| | | @Operation(summary = "è·å¾å·¡æ£ç¹ä½å页") |
| | | @PreAuthorize("@ss.hasPermission('safety:inspection-point:query')") |
| | | 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)); |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | @GetMapping("/point/simple-list") |
| | | @Operation(summary = "è·å¾å¯ç¨ä¸çå·¡æ£ç¹ä½ç²¾ç®å表ï¼ç§»å¨ç«¯å·¡æ£éæ©ï¼") |
| | | @PreAuthorize("@ss.hasPermission('safety:inspection-point:query')") |
| | | public CommonResult<List<SafetyInspectionPointRespVO>> getPointSimpleList() { |
| | | 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); |
| | | return resp; |
| | | }).toList(); |
| | | return success(list); |
| | | } |
| | | |
| | | // ==================== å·¡æ£è®°å½ ==================== |
| | | |
| | | @PostMapping("/record/create") |
| | | @Operation(summary = "æ°å¢å·¡æ£è®°å½") |
| | | @PreAuthorize("@ss.hasPermission('safety:inspection:create')") |
| | | public CommonResult<Long> createRecord(@Valid @RequestBody SafetyInspectionSaveReqVO reqVO) { |
| | | return success(inspectionService.createInspection(reqVO)); |
| | | } |
| | | |
| | | @PutMapping("/record/update") |
| | | @Operation(summary = "ä¿®æ¹å·¡æ£è®°å½") |
| | | @PreAuthorize("@ss.hasPermission('safety:inspection:update')") |
| | | public CommonResult<Boolean> updateRecord(@Valid @RequestBody SafetyInspectionSaveReqVO reqVO) { |
| | | inspectionService.updateInspection(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @DeleteMapping("/record/delete") |
| | | @Operation(summary = "å é¤å·¡æ£è®°å½") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:inspection:delete')") |
| | | public CommonResult<Boolean> deleteRecord(@RequestParam("id") Long id) { |
| | | inspectionService.deleteInspection(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/record/get") |
| | | @Operation(summary = "è·å¾å·¡æ£è®°å½") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @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())); |
| | | resp.setResultName("NORMAL".equals(record.getResult()) ? "æ£å¸¸" : "å¼å¸¸"); |
| | | return success(resp); |
| | | } |
| | | |
| | | @GetMapping("/record/page") |
| | | @Operation(summary = "è·å¾å·¡æ£è®°å½å页") |
| | | @PreAuthorize("@ss.hasPermission('safety:inspection:query')") |
| | | 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); |
| | | var resp = result.getList().get(i); |
| | | resp.setPointTypeName(cn.iocoder.yudao.module.mes.enums.safety.SafetyInspectionPointTypeEnum |
| | | .getNameByType(record.getPointType())); |
| | | resp.setResultName("NORMAL".equals(record.getResult()) ? "æ£å¸¸" : "å¼å¸¸"); |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.ledger.SafetyLedgerExportReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.ledger.SafetyOverviewRespVO; |
| | | import cn.iocoder.yudao.module.mes.service.safety.SafetyLedgerExportService; |
| | | import cn.iocoder.yudao.module.mes.service.safety.SafetyOverviewService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.annotation.Resource; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import jakarta.validation.Valid; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.io.IOException; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - æ»è§ç»è®¡ä¸æ ååå°è´¦å¯¼åº |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Tag(name = "管çåå° - å®å
¨ç产-å°è´¦ä¸ç»è®¡") |
| | | @RestController |
| | | @RequestMapping("/safety/ledger") |
| | | @Validated |
| | | public class SafetyLedgerController { |
| | | |
| | | @Resource |
| | | private SafetyOverviewService overviewService; |
| | | @Resource |
| | | private SafetyLedgerExportService ledgerExportService; |
| | | |
| | | @GetMapping("/overview") |
| | | @Operation(summary = "è·å¾å®å
¨ç产æ»è§ç»è®¡") |
| | | @PreAuthorize("@ss.hasPermission('safety:ledger:query')") |
| | | public CommonResult<SafetyOverviewRespVO> overview() { |
| | | return success(overviewService.getOverview()); |
| | | } |
| | | |
| | | @GetMapping("/export") |
| | | @Operation(summary = "导åºçµåè¡ä¸å®å
¨æ ååå°è´¦ï¼å
¨å¥æå¤éå
¶ä¸ï¼") |
| | | @PreAuthorize("@ss.hasPermission('safety:ledger:export')") |
| | | public void export(@Valid SafetyLedgerExportReqVO reqVO, HttpServletResponse response) throws IOException { |
| | | ledgerExportService.export(reqVO, response); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| | | 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.safety.vo.material.*; |
| | | import cn.iocoder.yudao.module.mes.service.safety.SafetyMaterialService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.annotation.Resource; |
| | | import jakarta.validation.Valid; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - åºæ¥ç©èµå°è´¦ä¸åºå
¥åºï¼ç»ç¼ç¨å
· / å±åå / æ¶é²ç©èµï¼ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Tag(name = "管çåå° - å®å
¨ç产-åºæ¥ç©èµ") |
| | | @RestController |
| | | @RequestMapping("/safety/material") |
| | | @Validated |
| | | public class SafetyMaterialController { |
| | | |
| | | @Resource |
| | | private SafetyMaterialService materialService; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "æ°å¢ç©èµ") |
| | | @PreAuthorize("@ss.hasPermission('safety:material:create')") |
| | | public CommonResult<Long> create(@Valid @RequestBody SafetyMaterialSaveReqVO reqVO) { |
| | | return success(materialService.createMaterial(reqVO)); |
| | | } |
| | | |
| | | @PutMapping("/update") |
| | | @Operation(summary = "ä¿®æ¹ç©èµï¼åºåæ°éåªè½éè¿åºå
¥åºåå¨ï¼") |
| | | @PreAuthorize("@ss.hasPermission('safety:material:update')") |
| | | public CommonResult<Boolean> update(@Valid @RequestBody SafetyMaterialSaveReqVO reqVO) { |
| | | materialService.updateMaterial(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @DeleteMapping("/delete") |
| | | @Operation(summary = "å é¤ç©èµ") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:material:delete')") |
| | | public CommonResult<Boolean> delete(@RequestParam("id") Long id) { |
| | | materialService.deleteMaterial(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/get") |
| | | @Operation(summary = "è·å¾ç©èµ") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @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); |
| | | } |
| | | |
| | | @GetMapping("/page") |
| | | @Operation(summary = "è·å¾ç©èµå页") |
| | | @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)); |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | @GetMapping("/below-safe-stock") |
| | | @Operation(summary = "è·å¾ä½äºå®å
¨åºåçç©èµå表ï¼é¢è¦ï¼") |
| | | @PreAuthorize("@ss.hasPermission('safety:material:query')") |
| | | public CommonResult<List<SafetyMaterialRespVO>> belowSafeStock() { |
| | | 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); |
| | | return resp; |
| | | }).toList(); |
| | | return success(list); |
| | | } |
| | | |
| | | @GetMapping("/expiring-list") |
| | | @Operation(summary = "è·å¾å³å°å°æçç©èµå表ï¼é¢è¦ï¼") |
| | | @Parameter(name = "days", description = "æåé¢è¦å¤©æ°ï¼é»è®¤ 30 天") |
| | | @PreAuthorize("@ss.hasPermission('safety:material:query')") |
| | | public CommonResult<List<SafetyMaterialRespVO>> expiringList( |
| | | @RequestParam(value = "days", required = false) Integer days) { |
| | | 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); |
| | | return resp; |
| | | }).toList(); |
| | | return success(list); |
| | | } |
| | | |
| | | // ==================== åºå
¥åº ==================== |
| | | |
| | | @PostMapping("/stock/create") |
| | | @Operation(summary = "åºå
¥åºç»è®°ï¼èªå¨æ´æ°åºåï¼") |
| | | @PreAuthorize("@ss.hasPermission('safety:material-stock:in') or @ss.hasPermission('safety:material-stock:out')") |
| | | public CommonResult<Long> createStock(@Valid @RequestBody SafetyMaterialStockSaveReqVO reqVO) { |
| | | return success(materialService.createStock(reqVO)); |
| | | } |
| | | |
| | | @GetMapping("/stock/page") |
| | | @Operation(summary = "è·å¾åºå
¥åºæµæ°´å页") |
| | | @PreAuthorize("@ss.hasPermission('safety:material-stock:query')") |
| | | public CommonResult<PageResult<SafetyMaterialStockRespVO>> stockPage( |
| | | @Valid SafetyMaterialStockPageReqVO reqVO) { |
| | | var page = materialService.getStockPage(reqVO); |
| | | var result = BeanUtils.toBean(page, SafetyMaterialStockRespVO.class); |
| | | for (int i = 0; i < page.getList().size(); i++) { |
| | | SafetyMaterialService.fillStockDisplay(page.getList().get(i), result.getList().get(i)); |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.org.SafetyOrgRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.org.SafetyOrgSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.service.safety.SafetyOrgService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.annotation.Resource; |
| | | import jakarta.validation.Valid; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å®å
¨ç»ç»æ¶æ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Tag(name = "管çåå° - å®å
¨ç产-ç»ç»æ¶æ") |
| | | @RestController |
| | | @RequestMapping("/safety/org") |
| | | @Validated |
| | | public class SafetyOrgController { |
| | | |
| | | @Resource |
| | | private SafetyOrgService orgService; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "æ°å¢å®å
¨ç»ç»") |
| | | @PreAuthorize("@ss.hasPermission('safety:org:create')") |
| | | public CommonResult<Long> create(@Valid @RequestBody SafetyOrgSaveReqVO reqVO) { |
| | | return success(orgService.createOrg(reqVO)); |
| | | } |
| | | |
| | | @PutMapping("/update") |
| | | @Operation(summary = "ä¿®æ¹å®å
¨ç»ç»") |
| | | @PreAuthorize("@ss.hasPermission('safety:org:update')") |
| | | public CommonResult<Boolean> update(@Valid @RequestBody SafetyOrgSaveReqVO reqVO) { |
| | | orgService.updateOrg(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @DeleteMapping("/delete") |
| | | @Operation(summary = "å é¤å®å
¨ç»ç»") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:org:delete')") |
| | | public CommonResult<Boolean> delete(@RequestParam("id") Long id) { |
| | | orgService.deleteOrg(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/get") |
| | | @Operation(summary = "è·å¾å®å
¨ç»ç»") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:org:query')") |
| | | public CommonResult<SafetyOrgRespVO> get(@RequestParam("id") Long id) { |
| | | 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); |
| | | } |
| | | |
| | | @GetMapping("/tree") |
| | | @Operation(summary = "è·å¾å®å
¨ç»ç»æ ") |
| | | @PreAuthorize("@ss.hasPermission('safety:org:query')") |
| | | public CommonResult<List<SafetyOrgRespVO>> tree() { |
| | | return success(orgService.getOrgTree()); |
| | | } |
| | | |
| | | private static void org2resp(cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyOrgDO org, |
| | | SafetyOrgRespVO resp) { |
| | | resp.setId(org.getId()); |
| | | resp.setParentId(org.getParentId()); |
| | | resp.setName(org.getName()); |
| | | resp.setLeaderName(org.getLeaderName()); |
| | | resp.setLeaderPhone(org.getLeaderPhone()); |
| | | resp.setMemberNames(org.getMemberNames()); |
| | | resp.setDuty(org.getDuty()); |
| | | resp.setSort(org.getSort()); |
| | | resp.setStatus(org.getStatus()); |
| | | resp.setRemark(org.getRemark()); |
| | | resp.setCreateTime(org.getCreateTime()); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| | | 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.safety.vo.train.*; |
| | | import cn.iocoder.yudao.module.mes.service.safety.SafetyTrainingService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.annotation.Resource; |
| | | import jakarta.validation.Valid; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å¹è®ãæ¼ç»ãäºæ
ç»è®°çµåå彿¡£ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Tag(name = "管çåå° - å®å
¨ç产-å¹è®ä¸äºæ
") |
| | | @RestController |
| | | @RequestMapping("/safety/training") |
| | | @Validated |
| | | public class SafetyTrainingController { |
| | | |
| | | @Resource |
| | | private SafetyTrainingService trainingService; |
| | | |
| | | // ==================== å¹è® ==================== |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "æ°å¢å®å
¨å¹è®è®°å½") |
| | | @PreAuthorize("@ss.hasPermission('safety:training:create')") |
| | | public CommonResult<Long> create(@Valid @RequestBody SafetyTrainingSaveReqVO reqVO) { |
| | | return success(trainingService.createTraining(reqVO)); |
| | | } |
| | | |
| | | @PutMapping("/update") |
| | | @Operation(summary = "ä¿®æ¹å®å
¨å¹è®è®°å½") |
| | | @PreAuthorize("@ss.hasPermission('safety:training:update')") |
| | | public CommonResult<Boolean> update(@Valid @RequestBody SafetyTrainingSaveReqVO reqVO) { |
| | | trainingService.updateTraining(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @DeleteMapping("/delete") |
| | | @Operation(summary = "å é¤å®å
¨å¹è®è®°å½") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:training:delete')") |
| | | public CommonResult<Boolean> delete(@RequestParam("id") Long id) { |
| | | trainingService.deleteTraining(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/get") |
| | | @Operation(summary = "è·å¾å®å
¨å¹è®è®°å½") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @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); |
| | | } |
| | | |
| | | @GetMapping("/page") |
| | | @Operation(summary = "è·å¾å®å
¨å¹è®è®°å½å页") |
| | | @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)); |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | // ==================== æ¼ç» ==================== |
| | | |
| | | @PostMapping("/drill/create") |
| | | @Operation(summary = "æ°å¢æ¶é²æ¼ç»è®°å½") |
| | | @PreAuthorize("@ss.hasPermission('safety:drill:create')") |
| | | public CommonResult<Long> createDrill(@Valid @RequestBody SafetyDrillSaveReqVO reqVO) { |
| | | return success(trainingService.createDrill(reqVO)); |
| | | } |
| | | |
| | | @PutMapping("/drill/update") |
| | | @Operation(summary = "ä¿®æ¹æ¶é²æ¼ç»è®°å½") |
| | | @PreAuthorize("@ss.hasPermission('safety:drill:update')") |
| | | public CommonResult<Boolean> updateDrill(@Valid @RequestBody SafetyDrillSaveReqVO reqVO) { |
| | | trainingService.updateDrill(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @DeleteMapping("/drill/delete") |
| | | @Operation(summary = "å 餿¶é²æ¼ç»è®°å½") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:drill:delete')") |
| | | public CommonResult<Boolean> deleteDrill(@RequestParam("id") Long id) { |
| | | trainingService.deleteDrill(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/drill/get") |
| | | @Operation(summary = "è·å¾æ¶é²æ¼ç»è®°å½") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @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); |
| | | } |
| | | |
| | | @GetMapping("/drill/page") |
| | | @Operation(summary = "è·å¾æ¶é²æ¼ç»è®°å½å页") |
| | | @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)); |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | // ==================== äºæ
==================== |
| | | |
| | | @PostMapping("/accident/create") |
| | | @Operation(summary = "æ°å¢äºæ
ç»è®°") |
| | | @PreAuthorize("@ss.hasPermission('safety:accident:create')") |
| | | public CommonResult<Long> createAccident(@Valid @RequestBody SafetyAccidentSaveReqVO reqVO) { |
| | | return success(trainingService.createAccident(reqVO)); |
| | | } |
| | | |
| | | @PutMapping("/accident/update") |
| | | @Operation(summary = "ä¿®æ¹äºæ
ç»è®°") |
| | | @PreAuthorize("@ss.hasPermission('safety:accident:update')") |
| | | public CommonResult<Boolean> updateAccident(@Valid @RequestBody SafetyAccidentSaveReqVO reqVO) { |
| | | trainingService.updateAccident(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @DeleteMapping("/accident/delete") |
| | | @Operation(summary = "å é¤äºæ
ç»è®°") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:accident:delete')") |
| | | public CommonResult<Boolean> deleteAccident(@RequestParam("id") Long id) { |
| | | trainingService.deleteAccident(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/accident/get") |
| | | @Operation(summary = "è·å¾äºæ
ç»è®°") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @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); |
| | | } |
| | | |
| | | @GetMapping("/accident/page") |
| | | @Operation(summary = "è·å¾äºæ
ç»è®°å页") |
| | | @PreAuthorize("@ss.hasPermission('safety:accident:query')") |
| | | 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)); |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| | | 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.safety.vo.permit.*; |
| | | import cn.iocoder.yudao.module.mes.service.safety.SafetyWorkPermitService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.annotation.Resource; |
| | | import jakarta.validation.Valid; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - é«å±ä½ä¸ç¥¨ï¼å¨ç« / é«åå¸¦çµ / æé空é´çï¼å®¡æ¹ä¸çµåçå |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Tag(name = "管çåå° - å®å
¨ç产-é«å±ä½ä¸ç¥¨") |
| | | @RestController |
| | | @RequestMapping("/safety/permit") |
| | | @Validated |
| | | public class SafetyWorkPermitController { |
| | | |
| | | @Resource |
| | | private SafetyWorkPermitService permitService; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "æäº¤é«å±ä½ä¸ç³è¯·") |
| | | @PreAuthorize("@ss.hasPermission('safety:permit:create')") |
| | | public CommonResult<Long> create(@Valid @RequestBody SafetyWorkPermitSaveReqVO reqVO) { |
| | | return success(permitService.createPermit(reqVO)); |
| | | } |
| | | |
| | | @PutMapping("/update") |
| | | @Operation(summary = "ä¿®æ¹ä½ä¸ç¥¨") |
| | | @PreAuthorize("@ss.hasPermission('safety:permit:update')") |
| | | public CommonResult<Boolean> update(@Valid @RequestBody SafetyWorkPermitSaveReqVO reqVO) { |
| | | permitService.updatePermit(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @DeleteMapping("/delete") |
| | | @Operation(summary = "å é¤ä½ä¸ç¥¨ï¼è¿åçæ¤è®°å½ï¼") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:permit:delete')") |
| | | public CommonResult<Boolean> delete(@RequestParam("id") Long id) { |
| | | permitService.deletePermit(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/get") |
| | | @Operation(summary = "è·å¾ä½ä¸ç¥¨") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @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); |
| | | } |
| | | |
| | | @GetMapping("/page") |
| | | @Operation(summary = "è·å¾ä½ä¸ç¥¨å页") |
| | | @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)); |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | @PutMapping("/approve") |
| | | @Operation(summary = "审æ¹ä½ä¸ç¥¨ï¼éè¿/驳åï¼") |
| | | @PreAuthorize("@ss.hasPermission('safety:permit:approve')") |
| | | public CommonResult<Boolean> approve(@Valid @RequestBody SafetyWorkPermitApproveReqVO reqVO) { |
| | | permitService.approvePermit(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @PutMapping("/start") |
| | | @Operation(summary = "å¼å§ä½ä¸") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:permit:update')") |
| | | public CommonResult<Boolean> start(@RequestParam("id") Long id) { |
| | | permitService.startPermit(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @PutMapping("/close") |
| | | @Operation(summary = "ç»æä½ä¸å¹¶å½æ¡£") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:permit:update')") |
| | | public CommonResult<Boolean> close(@RequestParam("id") Long id) { |
| | | permitService.closePermit(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @PutMapping("/cancel") |
| | | @Operation(summary = "ä½åºä½ä¸ç¥¨") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:permit:update')") |
| | | public CommonResult<Boolean> cancel(@RequestParam("id") Long id) { |
| | | permitService.cancelPermit(id); |
| | | return success(true); |
| | | } |
| | | |
| | | // ==================== çæ¤è®°å½ ==================== |
| | | |
| | | @GetMapping("/monitor/list") |
| | | @Operation(summary = "è·å¾ä½ä¸çæ¤è®°å½å表") |
| | | @Parameter(name = "permitId", description = "ä½ä¸ç¥¨ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:permit:query')") |
| | | public CommonResult<List<SafetyWorkPermitMonitorRespVO>> monitorList(@RequestParam("permitId") Long permitId) { |
| | | var monitors = permitService.getMonitorList(permitId); |
| | | permitService.fillMonitorGuardians(monitors); |
| | | return success(BeanUtils.toBean(monitors, SafetyWorkPermitMonitorRespVO.class)); |
| | | } |
| | | |
| | | @PostMapping("/monitor/create") |
| | | @Operation(summary = "æ°å¢ä½ä¸çæ¤è®°å½") |
| | | @PreAuthorize("@ss.hasPermission('safety:permit:update')") |
| | | public CommonResult<Long> createMonitor(@Valid @RequestBody SafetyWorkPermitMonitorSaveReqVO reqVO) { |
| | | return success(permitService.createMonitor(reqVO)); |
| | | } |
| | | |
| | | @DeleteMapping("/monitor/delete") |
| | | @Operation(summary = "å é¤ä½ä¸çæ¤è®°å½") |
| | | @Parameter(name = "id", description = "ç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('safety:permit:update')") |
| | | public CommonResult<Boolean> deleteMonitor(@RequestParam("id") Long id) { |
| | | permitService.deleteMonitor(id); |
| | | return success(true); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.cert; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç¹ç§ä½ä¸è¯å页 Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - ç¹ç§ä½ä¸è¯å页 Request VO") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyCertificatePageReqVO extends PageParam { |
| | | |
| | | @Schema(description = "æè¯äººï¼åå·¥ç¼å·ï¼") |
| | | private Long employeeId; |
| | | |
| | | @Schema(description = "æè¯äººå§åï¼æ¨¡ç³å¹é
ï¼") |
| | | private String employeeName; |
| | | |
| | | @Schema(description = "å·¥å·") |
| | | private String employeeNo; |
| | | |
| | | @Schema(description = "æå±é¨é¨") |
| | | private String deptName; |
| | | |
| | | @Schema(description = "è¯ä»¶ç±»å") |
| | | private String certType; |
| | | |
| | | @Schema(description = "è¯ä»¶ç¼å·") |
| | | private String certNo; |
| | | |
| | | @Schema(description = "ç¶æ") |
| | | private String status; |
| | | |
| | | @Schema(description = "æææå¼å§") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | | private LocalDate expireDateStart; |
| | | |
| | | @Schema(description = "ææææªæ¢") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | | private LocalDate expireDateEnd; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.cert; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç¹ç§ä½ä¸è¯ Response VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - ç¹ç§ä½ä¸è¯ Response VO") |
| | | @Data |
| | | public class SafetyCertificateRespVO { |
| | | |
| | | private Long id; |
| | | @Schema(description = "æè¯äººï¼åå·¥ç¼å·ï¼") |
| | | private Long employeeId; |
| | | @Schema(description = "æè¯äººå
³èçç³»ç»ç¨æ·ç¼å·") |
| | | private Long userId; |
| | | private String employeeName; |
| | | private String employeeNo; |
| | | private String deptName; |
| | | private String phone; |
| | | private String certType; |
| | | @Schema(description = "è¯ä»¶ç±»ååç§°") |
| | | private String certTypeName; |
| | | private String certNo; |
| | | private String issuer; |
| | | private LocalDate issueDate; |
| | | private LocalDate expireDate; |
| | | private LocalDate reviewDate; |
| | | private Integer warnDays; |
| | | private String status; |
| | | @Schema(description = "ç¶æåç§°") |
| | | private String statusName; |
| | | @Schema(description = "è·å°æå¤©æ°ï¼è´æ°è¡¨ç¤ºå·²è¿æ") |
| | | private Long remainingDays; |
| | | private String attachment; |
| | | private String remark; |
| | | private LocalDateTime createTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.cert; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.*; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç¹ç§ä½ä¸è¯æ°å¢/ä¿®æ¹ Request VO |
| | | * |
| | | * <p>æè¯äººéè¿ employeeId å
³èå工档æ¡ï¼å§åä¸é¨é¨ç±åç«¯ä»æ¡£æ¡å¸¦åºï¼ |
| | | * å端åªéé人ï¼ä¸æå·¥å¡«åï¼é¿å
ä¸äººåèµæºæ°æ®ä¸ä¸è´ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - ç¹ç§ä½ä¸è¯æ°å¢/ä¿®æ¹ Request VO") |
| | | @Data |
| | | public class SafetyCertificateSaveReqVO { |
| | | |
| | | private Long id; |
| | | |
| | | @Schema(description = "æè¯äººï¼åå·¥ç¼å·ï¼", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| | | @NotNull(message = "è¯·éæ©æè¯äºº") |
| | | private Long employeeId; |
| | | |
| | | @Schema(description = "è¯ä»¶ç±»å", requiredMode = Schema.RequiredMode.REQUIRED, example = "HIGH_VOLTAGE_OPERATION") |
| | | @NotBlank(message = "è¯ä»¶ç±»åä¸è½ä¸ºç©º") |
| | | @Pattern(regexp = "LOW_VOLTAGE_ELECTRICIAN|HIGH_VOLTAGE_OPERATION|WELDING|HOIST|HEIGHT_WORK|LIMITED_SPACE|FORKLIFT|BOILER|OTHER", |
| | | message = "è¯ä»¶ç±»åä¸åæ³") |
| | | private String certType; |
| | | |
| | | @Schema(description = "è¯ä»¶ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED, example = "T330102199001011234") |
| | | @NotBlank(message = "è¯ä»¶ç¼å·ä¸è½ä¸ºç©º") |
| | | @Size(max = 64) |
| | | private String certNo; |
| | | |
| | | @Schema(description = "åè¯æºå
³") |
| | | @Size(max = 100) |
| | | private String issuer; |
| | | |
| | | @Schema(description = "åè¯æ¥æ") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | | private LocalDate issueDate; |
| | | |
| | | @Schema(description = "æææè³", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "æææä¸è½ä¸ºç©º") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | | private LocalDate expireDate; |
| | | |
| | | @Schema(description = "䏿¬¡å¤å®¡æ¥æ") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | | private LocalDate reviewDate; |
| | | |
| | | @Schema(description = "å°æé¢è¦æå天æ°", example = "30") |
| | | @Min(value = 0, message = "é¢è¦å¤©æ°ä¸è½ä¸ºè´æ°") |
| | | @Max(value = 365, message = "é¢è¦å¤©æ°ä¸è½è¶
è¿ 365 天") |
| | | private Integer warnDays; |
| | | |
| | | @Schema(description = "ç¶æ", example = "VALID") |
| | | @Pattern(regexp = "VALID|EXPIRING|EXPIRED|REVOKED", message = "ç¶æä¸åæ³") |
| | | private String status; |
| | | |
| | | @Schema(description = "è¯ä»¶æ«æä»¶ URLï¼éå·åé") |
| | | @Size(max = 500) |
| | | private String attachment; |
| | | |
| | | @Schema(description = "夿³¨") |
| | | @Size(max = 500) |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.hazard; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import jakarta.validation.constraints.Size; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - 鿣忴¾ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - 鿣忴¾ Request VO") |
| | | @Data |
| | | public class SafetyHazardAssignReqVO { |
| | | |
| | | @Schema(description = "鿣ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "鿣ç¼å·ä¸è½ä¸ºç©º") |
| | | private Long id; |
| | | |
| | | @Schema(description = "æ´æ¹è´£ä»»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©æ´æ¹è´£ä»»äºº") |
| | | private Long assigneeId; |
| | | |
| | | @Schema(description = "æ´æ¹æé") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | | private LocalDate rectifyDeadline; |
| | | |
| | | @Schema(description = "åæ´¾è¯´æ") |
| | | @Size(max = 500) |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.hazard; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - 鿣å页 Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - 鿣å页 Request VO") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyHazardPageReqVO extends PageParam { |
| | | |
| | | private String code; |
| | | private String title; |
| | | private String level; |
| | | private String source; |
| | | private String status; |
| | | private String assignee; |
| | | private String location; |
| | | |
| | | @Schema(description = "䏿¥æ¶é´èå´") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime[] reportTime; |
| | | |
| | | @Schema(description = "䏿¥æ¶é´å¼å§ï¼å
é¨ä½¿ç¨ï¼", hidden = true) |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private LocalDateTime reportTimeStart; |
| | | |
| | | @Schema(description = "䏿¥æ¶é´ç»æï¼å
é¨ä½¿ç¨ï¼", hidden = true) |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private LocalDateTime reportTimeEnd; |
| | | |
| | | public void normalizeTimeRange() { |
| | | if (reportTime != null && reportTime.length == 2) { |
| | | this.reportTimeStart = reportTime[0]; |
| | | this.reportTimeEnd = reportTime[1]; |
| | | } |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.hazard; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import jakarta.validation.constraints.Pattern; |
| | | import jakarta.validation.constraints.Size; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - 鿣夿¥ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - 鿣夿¥ Request VO") |
| | | @Data |
| | | public class SafetyHazardRecheckReqVO { |
| | | |
| | | @Schema(description = "鿣ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "鿣ç¼å·ä¸è½ä¸ºç©º") |
| | | private Long id; |
| | | |
| | | @Schema(description = "夿¥äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©å¤æ¥äºº") |
| | | private Long recheckerId; |
| | | |
| | | @Schema(description = "夿¥ç»è®ºï¼PASSED-éè¿ï¼REJECTED-ä¸éè¿", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotBlank(message = "夿¥ç»è®ºä¸è½ä¸ºç©º") |
| | | @Pattern(regexp = "PASSED|REJECTED", message = "夿¥ç»è®ºåªè½ä¸ºéè¿æä¸éè¿") |
| | | private String recheckResult; |
| | | |
| | | @Schema(description = "夿¥æè§") |
| | | @Size(max = 500) |
| | | private String recheckRemark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.hazard; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import jakarta.validation.constraints.Size; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - éæ£æ´æ¹ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - éæ£æ´æ¹ Request VO") |
| | | @Data |
| | | public class SafetyHazardRectifyReqVO { |
| | | |
| | | @Schema(description = "鿣ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "鿣ç¼å·ä¸è½ä¸ºç©º") |
| | | private Long id; |
| | | |
| | | @Schema(description = "æ´æ¹æªæ½ä¸ç»æ", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotBlank(message = "æ´æ¹æªæ½ä¸ç»æä¸è½ä¸ºç©º") |
| | | @Size(max = 2000) |
| | | private String rectifyDesc; |
| | | |
| | | @Schema(description = "æ´æ¹åç
§ç URLï¼éå·åé") |
| | | @Size(max = 2000) |
| | | private String rectifyPhotoUrls; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.hazard; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - 鿣 Response VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - 鿣 Response VO") |
| | | @Data |
| | | public class SafetyHazardRespVO { |
| | | |
| | | private Long id; |
| | | private String code; |
| | | private String title; |
| | | private String level; |
| | | @Schema(description = "鿣ç级åç§°") |
| | | private String levelName; |
| | | private String source; |
| | | @Schema(description = "æ¥æºåç§°") |
| | | private String sourceName; |
| | | private Long inspectionId; |
| | | private Long pointId; |
| | | private String pointName; |
| | | 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; |
| | | @Schema(description = "æ¯å¦å·²è¶
æ") |
| | | private Boolean overdue; |
| | | private String rectifyDesc; |
| | | private String rectifyPhotoUrls; |
| | | private LocalDateTime rectifyTime; |
| | | @Schema(description = "夿¥äººç¼å·") |
| | | private Long recheckerId; |
| | | private String rechecker; |
| | | private LocalDateTime recheckTime; |
| | | private String recheckResult; |
| | | @Schema(description = "夿¥ç»è®ºåç§°") |
| | | private String recheckResultName; |
| | | private String recheckRemark; |
| | | private String status; |
| | | @Schema(description = "ç¶æåç§°") |
| | | private String statusName; |
| | | private LocalDateTime closeTime; |
| | | private String remark; |
| | | private LocalDateTime createTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.hazard; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.*; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - 鿣䏿¥/ä¿®æ¹ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - 鿣䏿¥/ä¿®æ¹ Request VO") |
| | | @Data |
| | | public class SafetyHazardSaveReqVO { |
| | | |
| | | private Long id; |
| | | |
| | | @Schema(description = "鿣æ é¢", requiredMode = Schema.RequiredMode.REQUIRED, example = "é
çµå®¤é¨æªä¸é") |
| | | @NotBlank(message = "鿣æ é¢ä¸è½ä¸ºç©º") |
| | | @Size(max = 200) |
| | | private String title; |
| | | |
| | | @Schema(description = "鿣ç级", example = "GENERAL") |
| | | @Pattern(regexp = "GENERAL|MAJOR", message = "鿣ç级ä¸åæ³") |
| | | private String level; |
| | | |
| | | @Schema(description = "æ¥æº", example = "INSPECTION") |
| | | @Pattern(regexp = "INSPECTION|SELF_CHECK|REPORT|EXTERNAL", message = "éæ£æ¥æºä¸åæ³") |
| | | private String source; |
| | | |
| | | @Schema(description = "å
³èå·¡æ£è®°å½ç¼å·") |
| | | private Long inspectionId; |
| | | |
| | | @Schema(description = "å
³èå·¡æ£ç¹ä½ç¼å·") |
| | | private Long pointId; |
| | | |
| | | @Schema(description = "ç¹ä½åç§°") |
| | | @Size(max = 100) |
| | | private String pointName; |
| | | |
| | | @Schema(description = "鿣ä½ç½®") |
| | | @Size(max = 200) |
| | | private String location; |
| | | |
| | | @Schema(description = "鿣æè¿°") |
| | | @Size(max = 2000) |
| | | private String description; |
| | | |
| | | @Schema(description = "ç°åºç
§ç URLï¼éå·åéï¼ç§»å¨ç«¯æç
§ä¸ä¼ ï¼") |
| | | @Size(max = 2000) |
| | | private String photoUrls; |
| | | |
| | | @Schema(description = "䏿¥äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©ä¸æ¥äºº") |
| | | private Long reporterId; |
| | | |
| | | @Schema(description = "䏿¥æ¶é´") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private LocalDateTime reportTime; |
| | | |
| | | @Schema(description = "æ´æ¹æé") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | | private LocalDate rectifyDeadline; |
| | | |
| | | @Schema(description = "夿³¨") |
| | | @Size(max = 500) |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.inspection; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£è®°å½å页 Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - å·¡æ£è®°å½å页 Request VO") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyInspectionPageReqVO extends PageParam { |
| | | |
| | | private Long pointId; |
| | | private String pointType; |
| | | private String inspector; |
| | | private String result; |
| | | |
| | | @Schema(description = "å·¡æ£æ¶é´èå´") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime[] inspectTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.inspection; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£ç¹ä½å页 Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - å·¡æ£ç¹ä½å页 Request VO") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyInspectionPointPageReqVO extends PageParam { |
| | | |
| | | private String code; |
| | | private String name; |
| | | private String pointType; |
| | | private String workshopName; |
| | | private Integer status; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.inspection; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£ç¹ä½ Response VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - å·¡æ£ç¹ä½ Response VO") |
| | | @Data |
| | | public class SafetyInspectionPointRespVO { |
| | | |
| | | private Long id; |
| | | private String code; |
| | | private String name; |
| | | 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 = "æè¿ä¸æ¬¡å·¡æ£æ¶é´") |
| | | private LocalDateTime lastInspectTime; |
| | | private String remark; |
| | | private LocalDateTime createTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.inspection; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.*; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£ç¹ä½æ°å¢/ä¿®æ¹ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - å·¡æ£ç¹ä½æ°å¢/ä¿®æ¹ Request VO") |
| | | @Data |
| | | public class SafetyInspectionPointSaveReqVO { |
| | | |
| | | private Long id; |
| | | |
| | | @Schema(description = "ç¹ä½ç¼ç ", requiredMode = Schema.RequiredMode.REQUIRED, example = "PD-001") |
| | | @NotBlank(message = "ç¹ä½ç¼ç ä¸è½ä¸ºç©º") |
| | | @Size(max = 64) |
| | | private String code; |
| | | |
| | | @Schema(description = "ç¹ä½åç§°", requiredMode = Schema.RequiredMode.REQUIRED, example = "1#é«åé
çµå®¤") |
| | | @NotBlank(message = "ç¹ä½åç§°ä¸è½ä¸ºç©º") |
| | | @Size(max = 100) |
| | | private String name; |
| | | |
| | | @Schema(description = "ç¹ä½ç±»å", requiredMode = Schema.RequiredMode.REQUIRED, example = "HIGH_VOLTAGE_ROOM") |
| | | @NotBlank(message = "ç¹ä½ç±»åä¸è½ä¸ºç©º") |
| | | @Pattern(regexp = "HIGH_VOLTAGE_ROOM|UNIT_AREA|DANGER_CHEMICAL|FIRE_AREA|WORKSHOP|OTHER", message = "ç¹ä½ç±»åä¸åæ³") |
| | | private String pointType; |
| | | |
| | | @Schema(description = "æå±è½¦é´ï¼å
³è mes_md_workshopï¼") |
| | | private Long workshopId; |
| | | |
| | | @Schema(description = "å
·ä½ä½ç½®") |
| | | @Size(max = 200) |
| | | private String location; |
| | | |
| | | @Schema(description = "å·¡æ£é¡¹ç®æ¸
åï¼æè¡åé") |
| | | @Size(max = 2000) |
| | | private String inspectItems; |
| | | |
| | | @Schema(description = "å·¡æ£å¨æ", example = "DAILY") |
| | | @Pattern(regexp = "SHIFT|DAILY|WEEKLY|MONTHLY", message = "å·¡æ£å¨æä¸åæ³") |
| | | private String inspectCycle; |
| | | |
| | | @Schema(description = "责任人ï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long ownerId; |
| | | |
| | | @Schema(description = "ç¶æï¼0-å¯ç¨ï¼1-åç¨", example = "0") |
| | | @NotNull(message = "ç¶æä¸è½ä¸ºç©º") |
| | | private Integer status; |
| | | |
| | | @Schema(description = "夿³¨") |
| | | @Size(max = 500) |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.inspection; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£è®°å½ Response VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - å·¡æ£è®°å½ Response VO") |
| | | @Data |
| | | public class SafetyInspectionRespVO { |
| | | |
| | | private Long id; |
| | | private Long pointId; |
| | | private String pointName; |
| | | private String pointType; |
| | | @Schema(description = "ç¹ä½ç±»ååç§°") |
| | | private String pointTypeName; |
| | | private LocalDateTime inspectTime; |
| | | @Schema(description = "å·¡æ£äººç¼å·") |
| | | private Long inspectorId; |
| | | private String inspector; |
| | | private String result; |
| | | @Schema(description = "å·¡æ£ç»æåç§°") |
| | | private String resultName; |
| | | private String content; |
| | | private String photoUrls; |
| | | private Integer hazardCount; |
| | | private String remark; |
| | | private LocalDateTime createTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.inspection; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.*; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£è®°å½æ°å¢/ä¿®æ¹ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - å·¡æ£è®°å½æ°å¢/ä¿®æ¹ Request VO") |
| | | @Data |
| | | public class SafetyInspectionSaveReqVO { |
| | | |
| | | private Long id; |
| | | |
| | | @Schema(description = "å·¡æ£ç¹ä½ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "å·¡æ£ç¹ä½ä¸è½ä¸ºç©º") |
| | | private Long pointId; |
| | | |
| | | @Schema(description = "å·¡æ£æ¶é´", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "å·¡æ£æ¶é´ä¸è½ä¸ºç©º") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private LocalDateTime inspectTime; |
| | | |
| | | @Schema(description = "å·¡æ£äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©å·¡æ£äºº") |
| | | private Long inspectorId; |
| | | |
| | | @Schema(description = "å·¡æ£ç»æ", example = "NORMAL") |
| | | @Pattern(regexp = "NORMAL|ABNORMAL", message = "å·¡æ£ç»æåªè½ä¸ºæ£å¸¸æå¼å¸¸") |
| | | private String result; |
| | | |
| | | @Schema(description = "å·¡æ£å
容䏿
åµ") |
| | | @Size(max = 2000) |
| | | private String content; |
| | | |
| | | @Schema(description = "ç°åºç
§ç URLï¼éå·åé") |
| | | @Size(max = 2000) |
| | | private String photoUrls; |
| | | |
| | | @Schema(description = "æ¬æ¬¡åç°ç鿣æ°", example = "0") |
| | | @Min(value = 0, message = "鿣æ°ä¸è½ä¸ºè´æ°") |
| | | private Integer hazardCount; |
| | | |
| | | @Schema(description = "夿³¨") |
| | | @Size(max = 500) |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.ledger; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.Pattern; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - æ ååå°è´¦å¯¼åº Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - æ ååå°è´¦å¯¼åº Request VO") |
| | | @Data |
| | | public class SafetyLedgerExportReqVO { |
| | | |
| | | @Schema(description = "å°è´¦ç±»åï¼ALL-å
¨å¥ï¼CERT-ç¹ç§ä½ä¸è¯ï¼HAZARD-鿣ï¼PERMIT-ä½ä¸ç¥¨ï¼MATERIAL-ç©èµï¼TRAINING-å¹è®ï¼DRILL-æ¼ç»ï¼ACCIDENT-äºæ
ï¼INSPECTION-å·¡æ£", |
| | | example = "ALL") |
| | | @Pattern(regexp = "ALL|CERT|HAZARD|PERMIT|MATERIAL|TRAINING|DRILL|ACCIDENT|INSPECTION", message = "å°è´¦ç±»åä¸åæ³") |
| | | private String type; |
| | | |
| | | @Schema(description = "å¼å§æ¥æ") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | | private LocalDate startDate; |
| | | |
| | | @Schema(description = "ç»ææ¥æ") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | | private LocalDate endDate; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.ledger; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - æ»è§ç»è®¡ Response VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - å®å
¨ç产æ»è§ç»è®¡ Response VO") |
| | | @Data |
| | | public class SafetyOverviewRespVO { |
| | | |
| | | @Schema(description = "ç¹ç§ä½ä¸è¯æ»æ°") |
| | | private Long certTotal; |
| | | @Schema(description = "å³å°å°æè¯ä»¶æ°") |
| | | private Long certExpiring; |
| | | @Schema(description = "å·²è¿æè¯ä»¶æ°") |
| | | private Long certExpired; |
| | | @Schema(description = "éæ£æ»æ°") |
| | | private Long hazardTotal; |
| | | @Schema(description = "æªéç¯éæ£æ°") |
| | | private Long hazardOpen; |
| | | @Schema(description = "å·²è¶
ææªéç¯éæ£æ°") |
| | | private Long hazardOverdue; |
| | | @Schema(description = "鿣éç¯çï¼0-100ï¼") |
| | | private Integer hazardCloseRate; |
| | | @Schema(description = "å¾
审æ¹ä½ä¸ç¥¨æ°") |
| | | private Long permitPending; |
| | | @Schema(description = "è¿è¡ä¸ä½ä¸ç¥¨æ°") |
| | | private Long permitInProgress; |
| | | @Schema(description = "ç©èµä½äºå®å
¨åºåæ°") |
| | | private Long materialBelowSafeStock; |
| | | @Schema(description = "ç©èµä¸´è¿ææææ°") |
| | | private Long materialExpiring; |
| | | @Schema(description = "æ¬æå¹è®åºæ¬¡") |
| | | private Long trainingThisMonth; |
| | | @Schema(description = "æ¬ææ¼ç»åºæ¬¡") |
| | | private Long drillThisMonth; |
| | | @Schema(description = "æ¬æäºæ
æ°") |
| | | private Long accidentThisMonth; |
| | | |
| | | @Schema(description = "鿣è¶å¿ï¼è¿ 6 个æï¼ææï¼") |
| | | private List<MonthlyCount> hazardTrend; |
| | | @Schema(description = "äºæ
è¶å¿ï¼è¿ 6 个æï¼ææï¼") |
| | | private List<MonthlyCount> accidentTrend; |
| | | |
| | | /** |
| | | * ææè®¡æ° |
| | | */ |
| | | @Data |
| | | public static class MonthlyCount { |
| | | @Schema(description = "æä»½ï¼æ ¼å¼ yyyy-MM", example = "2026-10") |
| | | private String month; |
| | | @Schema(description = "æ°é") |
| | | private Long count; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.material; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç©èµå°è´¦å页 Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - ç©èµå°è´¦å页 Request VO") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyMaterialPageReqVO extends PageParam { |
| | | |
| | | private String code; |
| | | private String name; |
| | | private String category; |
| | | private String storageLocation; |
| | | private Integer status; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.material; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç©èµå°è´¦ Response VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - ç©èµå°è´¦ Response VO") |
| | | @Data |
| | | public class SafetyMaterialRespVO { |
| | | |
| | | private Long id; |
| | | private String code; |
| | | private String name; |
| | | private String category; |
| | | @Schema(description = "ç±»å«åç§°") |
| | | private String categoryName; |
| | | private String spec; |
| | | private String unit; |
| | | private BigDecimal stockQty; |
| | | private BigDecimal safeStock; |
| | | @Schema(description = "æ¯å¦ä½äºå®å
¨åºå") |
| | | private Boolean belowSafeStock; |
| | | private String storageLocation; |
| | | private LocalDate expireDate; |
| | | @Schema(description = "è·æææå¤©æ°ï¼è´æ°è¡¨ç¤ºå·²è¿æ") |
| | | private Long expireRemainingDays; |
| | | private Integer validityMonths; |
| | | @Schema(description = "ä¿ç®¡äººç¼å·") |
| | | private Long managerId; |
| | | private String manager; |
| | | private Integer status; |
| | | private String remark; |
| | | private LocalDateTime createTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.material; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.*; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç©èµå°è´¦æ°å¢/ä¿®æ¹ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - ç©èµå°è´¦æ°å¢/ä¿®æ¹ Request VO") |
| | | @Data |
| | | public class SafetyMaterialSaveReqVO { |
| | | |
| | | private Long id; |
| | | |
| | | @Schema(description = "ç©èµç¼ç ", requiredMode = Schema.RequiredMode.REQUIRED, example = "PM-001") |
| | | @NotBlank(message = "ç©èµç¼ç ä¸è½ä¸ºç©º") |
| | | @Size(max = 64) |
| | | private String code; |
| | | |
| | | @Schema(description = "ç©èµåç§°", requiredMode = Schema.RequiredMode.REQUIRED, example = "10kV ç»ç¼æå¥") |
| | | @NotBlank(message = "ç©èµåç§°ä¸è½ä¸ºç©º") |
| | | @Size(max = 100) |
| | | private String name; |
| | | |
| | | @Schema(description = "ç±»å«", requiredMode = Schema.RequiredMode.REQUIRED, example = "INSULATING") |
| | | @NotBlank(message = "ç©èµç±»å«ä¸è½ä¸ºç©º") |
| | | @Pattern(regexp = "INSULATING|HAZARD_CHEMICAL|FIRE|PPE|OTHER", message = "ç©èµç±»å«ä¸åæ³") |
| | | private String category; |
| | | |
| | | @Schema(description = "è§æ ¼åå·") |
| | | @Size(max = 100) |
| | | private String spec; |
| | | |
| | | @Schema(description = "计éåä½", example = "å") |
| | | @Size(max = 20) |
| | | private String unit; |
| | | |
| | | @Schema(description = "å½ååºåæ°é") |
| | | @DecimalMin(value = "0", message = "åºåæ°éä¸è½ä¸ºè´æ°") |
| | | private BigDecimal stockQty; |
| | | |
| | | @Schema(description = "å®å
¨åºå") |
| | | @DecimalMin(value = "0", message = "å®å
¨åºåä¸è½ä¸ºè´æ°") |
| | | private BigDecimal safeStock; |
| | | |
| | | @Schema(description = "åæ¾ä½ç½®") |
| | | @Size(max = 100) |
| | | private String storageLocation; |
| | | |
| | | @Schema(description = "æææè³") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | | private LocalDate expireDate; |
| | | |
| | | @Schema(description = "æææææ°") |
| | | @Min(value = 0, message = "æææææ°ä¸è½ä¸ºè´æ°") |
| | | private Integer validityMonths; |
| | | |
| | | @Schema(description = "ä¿ç®¡äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long managerId; |
| | | |
| | | @Schema(description = "ç¶æï¼0-å¯ç¨ï¼1-åç¨", example = "0") |
| | | @NotNull(message = "ç¶æä¸è½ä¸ºç©º") |
| | | private Integer status; |
| | | |
| | | @Schema(description = "夿³¨") |
| | | @Size(max = 500) |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.material; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç©èµåºå
¥åºæµæ°´å页 Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - ç©èµåºå
¥åºæµæ°´å页 Request VO") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyMaterialStockPageReqVO extends PageParam { |
| | | |
| | | private Long materialId; |
| | | private String materialName; |
| | | private String category; |
| | | private String bizType; |
| | | |
| | | @Schema(description = "ä¸å¡æ¥æèå´") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private LocalDate[] bizDate; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.material; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç©èµåºå
¥åºæµæ°´ Response VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - ç©èµåºå
¥åºæµæ°´ Response VO") |
| | | @Data |
| | | public class SafetyMaterialStockRespVO { |
| | | |
| | | private Long id; |
| | | private Long materialId; |
| | | private String materialName; |
| | | private String category; |
| | | @Schema(description = "ç±»å«åç§°") |
| | | private String categoryName; |
| | | private String bizType; |
| | | @Schema(description = "ä¸å¡ç±»ååç§°") |
| | | private String bizTypeName; |
| | | private BigDecimal quantity; |
| | | private BigDecimal stockBefore; |
| | | private BigDecimal stockAfter; |
| | | private LocalDate bizDate; |
| | | private String operator; |
| | | private String receiver; |
| | | private String purpose; |
| | | private String remark; |
| | | private LocalDateTime createTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.material; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.*; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç©èµåºå
¥åºç»è®° Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - ç©èµåºå
¥åºç»è®° Request VO") |
| | | @Data |
| | | public class SafetyMaterialStockSaveReqVO { |
| | | |
| | | @Schema(description = "ç©èµç¼å·", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "ç©èµä¸è½ä¸ºç©º") |
| | | private Long materialId; |
| | | |
| | | @Schema(description = "ä¸å¡ç±»åï¼IN-å
¥åºï¼OUT-åºåº", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotBlank(message = "ä¸å¡ç±»åä¸è½ä¸ºç©º") |
| | | @Pattern(regexp = "IN|OUT", message = "ä¸å¡ç±»ååªè½ä¸ºå
¥åºæåºåº") |
| | | private String bizType; |
| | | |
| | | @Schema(description = "æ°é", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") |
| | | @NotNull(message = "æ°éä¸è½ä¸ºç©º") |
| | | @DecimalMin(value = "0", inclusive = false, message = "æ°éå¿
须大äºé¶") |
| | | @Digits(integer = 15, fraction = 3) |
| | | private BigDecimal quantity; |
| | | |
| | | @Schema(description = "ä¸å¡æ¥æ") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | | private LocalDate bizDate; |
| | | |
| | | @Schema(description = "ç»å人", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotBlank(message = "ç»å人ä¸è½ä¸ºç©º") |
| | | @Size(max = 50) |
| | | private String operator; |
| | | |
| | | @Schema(description = "é¢ç¨äººï¼åºåºå¡«åï¼") |
| | | @Size(max = 50) |
| | | private String receiver; |
| | | |
| | | @Schema(description = "ç¨é/å»å") |
| | | @Size(max = 200) |
| | | private String purpose; |
| | | |
| | | @Schema(description = "夿³¨") |
| | | @Size(max = 500) |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.org; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å®å
¨ç»ç» Response VOï¼æ å½¢ï¼ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - å®å
¨ç»ç» Response VO") |
| | | @Data |
| | | public class SafetyOrgRespVO { |
| | | |
| | | 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; |
| | | private String duty; |
| | | private Integer sort; |
| | | private Integer status; |
| | | private String remark; |
| | | private LocalDateTime createTime; |
| | | |
| | | @Schema(description = "åç»ç»") |
| | | private List<SafetyOrgRespVO> children; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.org; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import jakarta.validation.constraints.Size; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å®å
¨ç»ç»æ°å¢/ä¿®æ¹ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - å®å
¨ç»ç»æ°å¢/ä¿®æ¹ Request VO") |
| | | @Data |
| | | public class SafetyOrgSaveReqVO { |
| | | |
| | | private Long id; |
| | | |
| | | @Schema(description = "ç¶çº§ç¼å·ï¼0 为顶级", example = "0") |
| | | private Long parentId; |
| | | |
| | | @Schema(description = "ç»ç»åç§°", requiredMode = Schema.RequiredMode.REQUIRED, example = "å®å
¨ç产å§åä¼") |
| | | @NotBlank(message = "ç»ç»åç§°ä¸è½ä¸ºç©º") |
| | | @Size(max = 100, message = "ç»ç»åç§°é¿åº¦ä¸è½è¶
è¿ 100 å") |
| | | private String name; |
| | | |
| | | @Schema(description = "è´è´£äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long leaderId; |
| | | |
| | | @Schema(description = "æåå§åï¼éå·åé") |
| | | @Size(max = 500) |
| | | private String memberNames; |
| | | |
| | | @Schema(description = "å®å
¨èè´£") |
| | | @Size(max = 500) |
| | | private String duty; |
| | | |
| | | @Schema(description = "æ¾ç¤ºé¡ºåº", example = "1") |
| | | @NotNull(message = "æ¾ç¤ºé¡ºåºä¸è½ä¸ºç©º") |
| | | private Integer sort; |
| | | |
| | | @Schema(description = "ç¶æï¼0-å¯ç¨ï¼1-åç¨", example = "0") |
| | | @NotNull(message = "ç¶æä¸è½ä¸ºç©º") |
| | | private Integer status; |
| | | |
| | | @Schema(description = "夿³¨") |
| | | @Size(max = 500) |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.permit; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import jakarta.validation.constraints.Pattern; |
| | | import jakarta.validation.constraints.Size; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - é«å±ä½ä¸ç¥¨å®¡æ¹ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - é«å±ä½ä¸ç¥¨å®¡æ¹ Request VO") |
| | | @Data |
| | | public class SafetyWorkPermitApproveReqVO { |
| | | |
| | | @Schema(description = "ä½ä¸ç¥¨ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "ä½ä¸ç¥¨ç¼å·ä¸è½ä¸ºç©º") |
| | | private Long id; |
| | | |
| | | @Schema(description = "审æ¹äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©å®¡æ¹äºº") |
| | | private Long approverId; |
| | | |
| | | @Schema(description = "审æ¹ç»è®ºï¼APPROVED-éè¿ï¼REJECTED-驳å", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotBlank(message = "审æ¹ç»è®ºä¸è½ä¸ºç©º") |
| | | @Pattern(regexp = "APPROVED|REJECTED", message = "审æ¹ç»è®ºåªè½ä¸ºéè¿æé©³å") |
| | | private String decision; |
| | | |
| | | @Schema(description = "å®¡æ¹æè§") |
| | | @Size(max = 500) |
| | | private String approveComment; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.permit; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ä½ä¸çæ¤è®°å½ Response VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - ä½ä¸çæ¤è®°å½ Response VO") |
| | | @Data |
| | | public class SafetyWorkPermitMonitorRespVO { |
| | | |
| | | private Long id; |
| | | private Long permitId; |
| | | private LocalDateTime monitorTime; |
| | | @Schema(description = "çæ¤äººç¼å·") |
| | | private Long guardianId; |
| | | private String guardian; |
| | | private String monitorContent; |
| | | private String abnormal; |
| | | private String photoUrls; |
| | | private LocalDateTime createTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.permit; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import jakarta.validation.constraints.Size; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ä½ä¸çæ¤è®°å½æ°å¢ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - ä½ä¸çæ¤è®°å½æ°å¢ Request VO") |
| | | @Data |
| | | public class SafetyWorkPermitMonitorSaveReqVO { |
| | | |
| | | private Long id; |
| | | |
| | | @Schema(description = "ä½ä¸ç¥¨ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "ä½ä¸ç¥¨ç¼å·ä¸è½ä¸ºç©º") |
| | | private Long permitId; |
| | | |
| | | @Schema(description = "çæ¤æ¶é´") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private LocalDateTime monitorTime; |
| | | |
| | | @Schema(description = "çæ¤äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©çæ¤äºº") |
| | | private Long guardianId; |
| | | |
| | | @Schema(description = "çæ¤å
容䏿
åµ") |
| | | @Size(max = 1000) |
| | | private String monitorContent; |
| | | |
| | | @Schema(description = "å¼å¸¸æ
åµä¸å¤ç½®") |
| | | @Size(max = 500) |
| | | private String abnormal; |
| | | |
| | | @Schema(description = "ç°åºç
§ç URLï¼éå·åé") |
| | | @Size(max = 2000) |
| | | private String photoUrls; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.permit; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - é«å±ä½ä¸ç¥¨å页 Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - é«å±ä½ä¸ç¥¨å页 Request VO") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyWorkPermitPageReqVO extends PageParam { |
| | | |
| | | private String code; |
| | | private String title; |
| | | private String permitType; |
| | | private String status; |
| | | private String riskLevel; |
| | | private String applicant; |
| | | private String workshopName; |
| | | |
| | | @Schema(description = "计åå¼å§æ¶é´èå´") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime[] planStartTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.permit; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - é«å±ä½ä¸ç¥¨ Response VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - é«å±ä½ä¸ç¥¨ Response VO") |
| | | @Data |
| | | public class SafetyWorkPermitRespVO { |
| | | |
| | | private Long id; |
| | | private String code; |
| | | private String permitType; |
| | | @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; |
| | | private LocalDateTime planEndTime; |
| | | private LocalDateTime actualStartTime; |
| | | private LocalDateTime actualEndTime; |
| | | private String riskLevel; |
| | | @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 = "ç¶æåç§°") |
| | | private String statusName; |
| | | private String attachment; |
| | | private String photoUrls; |
| | | @Schema(description = "çæ¤äººæ¯å¦å¿
å¡«ï¼å¨ç«/é«å带çµ/æé空é´ï¼") |
| | | private Boolean guardianRequired; |
| | | private String remark; |
| | | private LocalDateTime createTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.permit; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.*; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - é«å±ä½ä¸ç¥¨ç³è¯·/ä¿®æ¹ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - é«å±ä½ä¸ç¥¨ç³è¯·/ä¿®æ¹ Request VO") |
| | | @Data |
| | | public class SafetyWorkPermitSaveReqVO { |
| | | |
| | | private Long id; |
| | | |
| | | @Schema(description = "ä½ä¸ç±»å", requiredMode = Schema.RequiredMode.REQUIRED, example = "HOT_WORK") |
| | | @NotBlank(message = "ä½ä¸ç±»åä¸è½ä¸ºç©º") |
| | | @Pattern(regexp = "HOT_WORK|LIVE_HIGH_VOLTAGE|LIMITED_SPACE|WORK_AT_HEIGHT|LIFTING|TEMP_ELECTRIC|OTHER", |
| | | message = "ä½ä¸ç±»åä¸åæ³") |
| | | private String permitType; |
| | | |
| | | @Schema(description = "ä½ä¸åç§°", requiredMode = Schema.RequiredMode.REQUIRED, example = "2#ä¸»åæ£ä¿®å¨ç«") |
| | | @NotBlank(message = "ä½ä¸åç§°ä¸è½ä¸ºç©º") |
| | | @Size(max = 200) |
| | | private String title; |
| | | |
| | | @Schema(description = "ä½ä¸è½¦é´ï¼å
³è mes_md_workshopï¼") |
| | | private Long workshopId; |
| | | |
| | | @Schema(description = "ä½ä¸å°ç¹") |
| | | @Size(max = 200) |
| | | private String location; |
| | | |
| | | @Schema(description = "ä½ä¸å
容ä¸èå´") |
| | | @Size(max = 2000) |
| | | private String workContent; |
| | | |
| | | @Schema(description = "ç³è¯·äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "è¯·éæ©ç³è¯·äºº") |
| | | private Long applicantId; |
| | | |
| | | @Schema(description = "ç³è¯·æ¶é´") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private LocalDateTime applyTime; |
| | | |
| | | @Schema(description = "计åå¼å§æ¶é´", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "计åå¼å§æ¶é´ä¸è½ä¸ºç©º") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private LocalDateTime planStartTime; |
| | | |
| | | @Schema(description = "计åç»ææ¶é´", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "计åç»ææ¶é´ä¸è½ä¸ºç©º") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private LocalDateTime planEndTime; |
| | | |
| | | @Schema(description = "é£é©ç级", example = "HIGH") |
| | | @Pattern(regexp = "LOW|NORMAL|HIGH|VERY_HIGH", message = "é£é©ç级ä¸åæ³") |
| | | private String riskLevel; |
| | | |
| | | @Schema(description = "å®å
¨æªæ½") |
| | | @Size(max = 2000) |
| | | private String safetyMeasures; |
| | | |
| | | @Schema(description = "çæ¤äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long guardianId; |
| | | |
| | | @Schema(description = "ä½ä¸ç¥¨éä»¶ URLï¼éå·åé") |
| | | @Size(max = 2000) |
| | | private String attachment; |
| | | |
| | | @Schema(description = "ç°åºç
§ç URLï¼éå·åé") |
| | | @Size(max = 2000) |
| | | private String photoUrls; |
| | | |
| | | @Schema(description = "夿³¨") |
| | | @Size(max = 500) |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.train; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - äºæ
ç»è®°å页 Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - äºæ
ç»è®°å页 Request VO") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyAccidentPageReqVO extends PageParam { |
| | | |
| | | private String code; |
| | | private String title; |
| | | private String accidentType; |
| | | private String level; |
| | | private String status; |
| | | |
| | | @Schema(description = "åçæ¶é´èå´") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime[] occurTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.train; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - äºæ
ç»è®° Response VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - äºæ
ç»è®° Response VO") |
| | | @Data |
| | | public class SafetyAccidentRespVO { |
| | | |
| | | private Long id; |
| | | private String code; |
| | | private String title; |
| | | private String accidentType; |
| | | @Schema(description = "äºæ
ç±»ååç§°") |
| | | private String accidentTypeName; |
| | | private String level; |
| | | @Schema(description = "äºæ
ç级åç§°") |
| | | 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 involvedPersons; |
| | | private String description; |
| | | private String causeAnalysis; |
| | | private String measures; |
| | | @Schema(description = "ç»è®°äººç¼å·") |
| | | private Long reporterId; |
| | | private String reporter; |
| | | private LocalDateTime reportTime; |
| | | private String status; |
| | | @Schema(description = "ç¶æåç§°") |
| | | private String statusName; |
| | | private String attachment; |
| | | private String remark; |
| | | private LocalDateTime createTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.train; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.*; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - äºæ
ç»è®°æ°å¢/ä¿®æ¹ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - äºæ
ç»è®°æ°å¢/ä¿®æ¹ Request VO") |
| | | @Data |
| | | public class SafetyAccidentSaveReqVO { |
| | | |
| | | private Long id; |
| | | |
| | | @Schema(description = "äºæ
åç§°", requiredMode = Schema.RequiredMode.REQUIRED, example = "10kV å¼å
³æè¯¯æä½è§¦çµ") |
| | | @NotBlank(message = "äºæ
åç§°ä¸è½ä¸ºç©º") |
| | | @Size(max = 200) |
| | | private String title; |
| | | |
| | | @Schema(description = "äºæ
ç±»å", requiredMode = Schema.RequiredMode.REQUIRED, example = "ELECTRIC_SHOCK") |
| | | @NotBlank(message = "äºæ
ç±»åä¸è½ä¸ºç©º") |
| | | @Pattern(regexp = "ELECTRIC_SHOCK|FIRE|FALL|OBJECT_STRIKE|MECHANICAL|CHEMICAL|VEHICLE|OTHER", message = "äºæ
ç±»åä¸åæ³") |
| | | private String accidentType; |
| | | |
| | | @Schema(description = "äºæ
ç级", example = "GENERAL") |
| | | @Pattern(regexp = "SLIGHT|GENERAL|SEVERE|MAJOR", message = "äºæ
ç级ä¸åæ³") |
| | | private String level; |
| | | |
| | | @Schema(description = "åçæ¶é´", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "åçæ¶é´ä¸è½ä¸ºç©º") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private LocalDateTime occurTime; |
| | | |
| | | @Schema(description = "åçå°ç¹") |
| | | @Size(max = 200) |
| | | private String location; |
| | | |
| | | @Schema(description = "æå±è½¦é´ï¼å
³è mes_md_workshopï¼") |
| | | private Long workshopId; |
| | | |
| | | @Schema(description = "伤亡æ
åµ") |
| | | @Size(max = 500) |
| | | private String casualtyDesc; |
| | | |
| | | @Schema(description = "ç´æ¥ç»æµæå¤±ï¼å
ï¼") |
| | | @DecimalMin(value = "0", message = "ç»æµæå¤±ä¸è½ä¸ºè´æ°") |
| | | private BigDecimal economicLoss; |
| | | |
| | | @Schema(description = "æ¶äºäººåå§åï¼éå·åé") |
| | | @Size(max = 500) |
| | | private String involvedPersons; |
| | | |
| | | @Schema(description = "äºæ
ç»è¿") |
| | | @Size(max = 2000) |
| | | private String description; |
| | | |
| | | @Schema(description = "åå åæ") |
| | | @Size(max = 2000) |
| | | private String causeAnalysis; |
| | | |
| | | @Schema(description = "å¤çæªæ½ä¸æ´æ¹è¦æ±") |
| | | @Size(max = 2000) |
| | | private String measures; |
| | | |
| | | @Schema(description = "ç»è®°äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long reporterId; |
| | | |
| | | @Schema(description = "ç»è®°æ¶é´") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private LocalDateTime reportTime; |
| | | |
| | | @Schema(description = "ç¶æ", example = "REPORTED") |
| | | @Pattern(regexp = "REPORTED|INVESTIGATING|HANDLED|CLOSED", message = "ç¶æä¸åæ³") |
| | | private String status; |
| | | |
| | | @Schema(description = "ç°åºç
§ç/è°æ¥æ¥å URLï¼éå·åé") |
| | | @Size(max = 2000) |
| | | private String attachment; |
| | | |
| | | @Schema(description = "夿³¨") |
| | | @Size(max = 500) |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.train; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - æ¼ç»è®°å½å页 Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - æ¼ç»è®°å½å页 Request VO") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyDrillPageReqVO extends PageParam { |
| | | |
| | | private String title; |
| | | private String drillType; |
| | | private String organizer; |
| | | |
| | | @Schema(description = "æ¼ç»æ¥æèå´") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private LocalDate[] drillDate; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.train; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - æ¼ç»è®°å½ Response VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - æ¼ç»è®°å½ Response VO") |
| | | @Data |
| | | public class SafetyDrillRespVO { |
| | | |
| | | private Long id; |
| | | private String title; |
| | | private String drillType; |
| | | @Schema(description = "æ¼ç»ç±»ååç§°") |
| | | private String drillTypeName; |
| | | private LocalDate drillDate; |
| | | private String location; |
| | | @Schema(description = "ç»ç»äººç¼å·") |
| | | private Long organizerId; |
| | | private String organizer; |
| | | private String participants; |
| | | private Integer participantCount; |
| | | private String planDesc; |
| | | private String processDesc; |
| | | private String summary; |
| | | private Integer durationMinutes; |
| | | private String attachment; |
| | | private String remark; |
| | | private LocalDateTime createTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.train; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.*; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - æ¶é²æ¼ç»è®°å½æ°å¢/ä¿®æ¹ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - æ¶é²æ¼ç»è®°å½æ°å¢/ä¿®æ¹ Request VO") |
| | | @Data |
| | | public class SafetyDrillSaveReqVO { |
| | | |
| | | private Long id; |
| | | |
| | | @Schema(description = "æ¼ç»åç§°", requiredMode = Schema.RequiredMode.REQUIRED, example = "2026 年度æ¶é²çæ£æ¼ç»") |
| | | @NotBlank(message = "æ¼ç»åç§°ä¸è½ä¸ºç©º") |
| | | @Size(max = 200) |
| | | private String title; |
| | | |
| | | @Schema(description = "æ¼ç»ç±»å", example = "FIRE") |
| | | @Pattern(regexp = "FIRE|EMERGENCY_EVAC|ELECTRIC_ACCIDENT|CHEMICAL_LEAK|OTHER", message = "æ¼ç»ç±»åä¸åæ³") |
| | | private String drillType; |
| | | |
| | | @Schema(description = "æ¼ç»æ¥æ", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "æ¼ç»æ¥æä¸è½ä¸ºç©º") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | | private LocalDate drillDate; |
| | | |
| | | @Schema(description = "æ¼ç»å°ç¹") |
| | | @Size(max = 200) |
| | | private String location; |
| | | |
| | | @Schema(description = "ç»ç»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long organizerId; |
| | | |
| | | @Schema(description = "åå 人åå§åï¼éå·åé") |
| | | @Size(max = 2000) |
| | | private String participants; |
| | | |
| | | @Schema(description = "åå 人æ°") |
| | | @Min(value = 0, message = "åå 人æ°ä¸è½ä¸ºè´æ°") |
| | | private Integer participantCount; |
| | | |
| | | @Schema(description = "æ¼ç»æ¹æ¡") |
| | | @Size(max = 2000) |
| | | private String planDesc; |
| | | |
| | | @Schema(description = "æ¼ç»è¿ç¨è®°å½") |
| | | @Size(max = 2000) |
| | | private String processDesc; |
| | | |
| | | @Schema(description = "æ¼ç»æ»ç»ä¸æ¹è¿") |
| | | @Size(max = 2000) |
| | | private String summary; |
| | | |
| | | @Schema(description = "æ¼ç»æ¶é¿ï¼åéï¼") |
| | | @Min(value = 0, message = "æ¼ç»æ¶é¿ä¸è½ä¸ºè´æ°") |
| | | private Integer durationMinutes; |
| | | |
| | | @Schema(description = "æ¼ç»ç
§ç/è®°å½è¡¨ URLï¼éå·åé") |
| | | @Size(max = 2000) |
| | | private String attachment; |
| | | |
| | | @Schema(description = "夿³¨") |
| | | @Size(max = 500) |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.train; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å¹è®è®°å½å页 Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - å¹è®è®°å½å页 Request VO") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyTrainingPageReqVO extends PageParam { |
| | | |
| | | private String title; |
| | | private String trainingType; |
| | | private String trainer; |
| | | |
| | | @Schema(description = "å¹è®æ¥æèå´") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private LocalDate[] trainDate; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.train; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å¹è®è®°å½ Response VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - å¹è®è®°å½ Response VO") |
| | | @Data |
| | | public class SafetyTrainingRespVO { |
| | | |
| | | private Long id; |
| | | private String title; |
| | | private String trainingType; |
| | | @Schema(description = "å¹è®ç±»ååç§°") |
| | | private String trainingTypeName; |
| | | private LocalDate trainDate; |
| | | private BigDecimal durationHours; |
| | | @Schema(description = "讲å¸/ç»ç»äººç¼å·") |
| | | private Long trainerId; |
| | | private String trainer; |
| | | private String location; |
| | | private String participants; |
| | | private Integer participantCount; |
| | | private String content; |
| | | private String examResult; |
| | | private String attachment; |
| | | private String remark; |
| | | private LocalDateTime createTime; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.safety.vo.train; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.*; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å¹è®è®°å½æ°å¢/ä¿®æ¹ Request VO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Schema(description = "管çåå° - å¹è®è®°å½æ°å¢/ä¿®æ¹ Request VO") |
| | | @Data |
| | | public class SafetyTrainingSaveReqVO { |
| | | |
| | | private Long id; |
| | | |
| | | @Schema(description = "å¹è®ä¸»é¢", requiredMode = Schema.RequiredMode.REQUIRED, example = "年度å®å
¨è§ç¨å¹è®") |
| | | @NotBlank(message = "å¹è®ä¸»é¢ä¸è½ä¸ºç©º") |
| | | @Size(max = 200) |
| | | private String title; |
| | | |
| | | @Schema(description = "å¹è®ç±»å", example = "SAFETY") |
| | | @Pattern(regexp = "SAFETY|SKILL|LAW|EMERGENCY|INDUCTION|OTHER", message = "å¹è®ç±»åä¸åæ³") |
| | | private String trainingType; |
| | | |
| | | @Schema(description = "å¹è®æ¥æ", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull(message = "å¹è®æ¥æä¸è½ä¸ºç©º") |
| | | @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) |
| | | private LocalDate trainDate; |
| | | |
| | | @Schema(description = "å¹è®å¦æ¶", example = "2.0") |
| | | @DecimalMin(value = "0", message = "å¹è®å¦æ¶ä¸è½ä¸ºè´æ°") |
| | | private BigDecimal durationHours; |
| | | |
| | | @Schema(description = "讲å¸/ç»ç»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employeeï¼") |
| | | private Long trainerId; |
| | | |
| | | @Schema(description = "å¹è®å°ç¹") |
| | | @Size(max = 200) |
| | | private String location; |
| | | |
| | | @Schema(description = "åå 人åå§åï¼éå·åé") |
| | | @Size(max = 2000) |
| | | private String participants; |
| | | |
| | | @Schema(description = "åå 人æ°") |
| | | @Min(value = 0, message = "åå 人æ°ä¸è½ä¸ºè´æ°") |
| | | private Integer participantCount; |
| | | |
| | | @Schema(description = "å¹è®å
容") |
| | | @Size(max = 2000) |
| | | private String content; |
| | | |
| | | @Schema(description = "èæ ¸æ
åµ") |
| | | @Size(max = 2000) |
| | | private String examResult; |
| | | |
| | | @Schema(description = "ç¾å°è¡¨/课件/ç
§ç URLï¼éå·åé") |
| | | @Size(max = 2000) |
| | | private String attachment; |
| | | |
| | | @Schema(description = "夿³¨") |
| | | @Size(max = 500) |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.dataobject.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - äºæ
ç»è®° DO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @TableName("safety_accident") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyAccidentDO extends BaseDO { |
| | | |
| | | @TableId |
| | | private Long id; |
| | | /** äºæ
ç¼å· */ |
| | | private String code; |
| | | /** äºæ
åç§° */ |
| | | private String title; |
| | | /** äºæ
ç±»åï¼è§ SafetyAccidentTypeEnum */ |
| | | private String accidentType; |
| | | /** äºæ
ç级ï¼è§ SafetyAccidentLevelEnum */ |
| | | private String level; |
| | | /** åçæ¶é´ */ |
| | | private LocalDateTime occurTime; |
| | | /** åçå°ç¹ */ |
| | | private String location; |
| | | /** æå±è½¦é´ï¼å
³è mes_md_workshop.idï¼ */ |
| | | private Long workshopId; |
| | | /** æå±è½¦é´åç§°ï¼å¿«ç
§ï¼ç±è½¦é´ä¸»æ°æ®å¸¦åºï¼ */ |
| | | private String workshopName; |
| | | /** 伤亡æ
åµ */ |
| | | private String casualtyDesc; |
| | | /** ç´æ¥ç»æµæå¤±ï¼å
ï¼ */ |
| | | private BigDecimal economicLoss; |
| | | /** æ¶äºäººåå§åï¼éå·åé */ |
| | | private String involvedPersons; |
| | | /** äºæ
ç»è¿ */ |
| | | private String description; |
| | | /** åå åæ */ |
| | | private String causeAnalysis; |
| | | /** å¤çæªæ½ä¸æ´æ¹è¦æ± */ |
| | | private String measures; |
| | | /** ç»è®°äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long reporterId; |
| | | /** ç»è®°äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String reporter; |
| | | /** ç»è®°æ¶é´ */ |
| | | private LocalDateTime reportTime; |
| | | /** ç¶æï¼è§ SafetyAccidentStatusEnum */ |
| | | private String status; |
| | | /** ç°åºç
§ç/è°æ¥æ¥å URLï¼éå·åé */ |
| | | private String attachment; |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.dataobject.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç¹ç§ä½ä¸è¯å°è´¦ DO |
| | | * |
| | | * <p>è¦ççµå·¥è¯ãé«åæä½è¯çç¹ç§ä½ä¸èµæ ¼è¯ä»¶ï¼ææææèªå¨å¤æç¶æå¹¶é¢è¦ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @TableName("safety_certificate") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyCertificateDO extends BaseDO { |
| | | |
| | | @TableId |
| | | private Long id; |
| | | /** |
| | | * æè¯äººï¼åå·¥ç¼å·ï¼ |
| | | * |
| | | * å
³è HrmEmployeeDO#getId()ï¼å§å/å·¥å·/é¨é¨åç±æ¤å
³èå¸¦åº |
| | | */ |
| | | private Long employeeId; |
| | | /** æè¯äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ç¨äºå工档æ¡åæ´å追溯å¼è¯æ¶ä¿¡æ¯ï¼ */ |
| | | private String employeeName; |
| | | /** å·¥å·ï¼å¿«ç
§ï¼ */ |
| | | private String employeeNo; |
| | | /** æå±é¨é¨ï¼å¿«ç
§ï¼ */ |
| | | private String deptName; |
| | | /** è¯ä»¶ç±»åï¼è§ SafetyCertificateTypeEnum */ |
| | | private String certType; |
| | | /** è¯ä»¶ç¼å· */ |
| | | private String certNo; |
| | | /** åè¯æºå
³ */ |
| | | private String issuer; |
| | | /** åè¯æ¥æ */ |
| | | private LocalDate issueDate; |
| | | /** æææè³ */ |
| | | private LocalDate expireDate; |
| | | /** 䏿¬¡å¤å®¡æ¥æ */ |
| | | private LocalDate reviewDate; |
| | | /** å°æé¢è¦æåå¤©æ° */ |
| | | private Integer warnDays; |
| | | /** ç¶æï¼è§ SafetyCertificateStatusEnum */ |
| | | private String status; |
| | | /** è¯ä»¶æ«æä»¶ URLï¼éå·åé */ |
| | | private String attachment; |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.dataobject.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - æ¶é²æ¼ç»è®°å½ DO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @TableName("safety_drill") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyDrillDO extends BaseDO { |
| | | |
| | | @TableId |
| | | private Long id; |
| | | /** æ¼ç»åç§° */ |
| | | private String title; |
| | | /** æ¼ç»ç±»åï¼è§ SafetyDrillTypeEnum */ |
| | | private String drillType; |
| | | /** æ¼ç»æ¥æ */ |
| | | private LocalDate drillDate; |
| | | /** æ¼ç»å°ç¹ */ |
| | | private String location; |
| | | /** ç»ç»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long organizerId; |
| | | /** ç»ç»äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String organizer; |
| | | /** åå 人åå§åï¼éå·åé */ |
| | | private String participants; |
| | | /** åå äººæ° */ |
| | | private Integer participantCount; |
| | | /** æ¼ç»æ¹æ¡ */ |
| | | private String planDesc; |
| | | /** æ¼ç»è¿ç¨è®°å½ */ |
| | | private String processDesc; |
| | | /** æ¼ç»æ»ç»ä¸æ¹è¿ */ |
| | | private String summary; |
| | | /** æ¼ç»æ¶é¿ï¼åéï¼ */ |
| | | private Integer durationMinutes; |
| | | /** æ¼ç»ç
§ç/è®°å½è¡¨ URLï¼éå·åé */ |
| | | private String attachment; |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.dataobject.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - 鿣ç»è®°ä¸éç¯ DO |
| | | * |
| | | * <p>宿´éç¯ï¼ä¸æ¥ â åæ´¾ â æ´æ¹ â 夿¥ï¼éè¿åéç¯ï¼ä¸éè¿éåæ´æ¹ï¼ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @TableName("safety_hazard") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyHazardDO extends BaseDO { |
| | | |
| | | @TableId |
| | | private Long id; |
| | | /** 鿣ç¼å· */ |
| | | private String code; |
| | | /** 鿣æ é¢ */ |
| | | private String title; |
| | | /** 鿣ç级ï¼è§ SafetyHazardLevelEnum */ |
| | | private String level; |
| | | /** æ¥æºï¼è§ SafetyHazardSourceEnum */ |
| | | private String source; |
| | | /** å
³èå·¡æ£è®°å½ç¼å· */ |
| | | private Long inspectionId; |
| | | /** å
³èå·¡æ£ç¹ä½ç¼å· */ |
| | | private Long pointId; |
| | | /** ç¹ä½åç§° */ |
| | | private String pointName; |
| | | /** 鿣ä½ç½® */ |
| | | private String location; |
| | | /** 鿣æè¿° */ |
| | | 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 LocalDate rectifyDeadline; |
| | | /** æ´æ¹æªæ½ä¸ç»æ */ |
| | | private String rectifyDesc; |
| | | /** æ´æ¹åç
§ç URLï¼éå·åé */ |
| | | private String rectifyPhotoUrls; |
| | | /** æ´æ¹å®ææ¶é´ */ |
| | | private LocalDateTime rectifyTime; |
| | | /** 夿¥äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long recheckerId; |
| | | /** 夿¥äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String rechecker; |
| | | /** 夿¥æ¶é´ */ |
| | | private LocalDateTime recheckTime; |
| | | /** 夿¥ç»è®ºï¼PASSED-éè¿ï¼REJECTED-ä¸éè¿ */ |
| | | private String recheckResult; |
| | | /** 夿¥æè§ */ |
| | | private String recheckRemark; |
| | | /** ç¶æï¼è§ SafetyHazardStatusEnum */ |
| | | private String status; |
| | | /** éç¯æ¶é´ */ |
| | | private LocalDateTime closeTime; |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.dataobject.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£è®°å½ DO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @TableName("safety_inspection") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyInspectionDO extends BaseDO { |
| | | |
| | | @TableId |
| | | private Long id; |
| | | /** å·¡æ£ç¹ä½ç¼å· */ |
| | | private Long pointId; |
| | | /** ç¹ä½åç§°ï¼å¿«ç
§ï¼ */ |
| | | private String pointName; |
| | | /** ç¹ä½ç±»åï¼å¿«ç
§ï¼ */ |
| | | private String pointType; |
| | | /** å·¡æ£æ¶é´ */ |
| | | private LocalDateTime inspectTime; |
| | | /** å·¡æ£äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long inspectorId; |
| | | /** å·¡æ£äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String inspector; |
| | | /** å·¡æ£ç»æï¼NORMAL-æ£å¸¸ï¼ABNORMAL-å¼å¸¸ */ |
| | | private String result; |
| | | /** å·¡æ£å
容䏿
åµ */ |
| | | private String content; |
| | | /** ç°åºç
§ç URLï¼éå·åé */ |
| | | private String photoUrls; |
| | | /** æ¬æ¬¡åç°çéæ£æ° */ |
| | | private Integer hazardCount; |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.dataobject.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£ç¹ä½ DO |
| | | * |
| | | * <p>é«åé
çµå®¤ãæºç»åºçæ¥å¸¸å®å
¨å·¡æ£ç¹ä½ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @TableName("safety_inspection_point") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyInspectionPointDO extends BaseDO { |
| | | |
| | | @TableId |
| | | private Long id; |
| | | /** ç¹ä½ç¼ç */ |
| | | private String code; |
| | | /** ç¹ä½åç§° */ |
| | | 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 String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.dataobject.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - åºæ¥/å®å
¨ç©èµå°è´¦ DO |
| | | * |
| | | * <p>çµåç»ç¼ç¨å
·ãå±ååãæ¶é²ç©èµçã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @TableName("safety_material") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyMaterialDO extends BaseDO { |
| | | |
| | | @TableId |
| | | private Long id; |
| | | /** ç©èµç¼ç */ |
| | | private String code; |
| | | /** ç©èµåç§° */ |
| | | private String name; |
| | | /** ç±»å«ï¼è§ SafetyMaterialCategoryEnum */ |
| | | private String category; |
| | | /** è§æ ¼åå· */ |
| | | private String spec; |
| | | /** 计éåä½ */ |
| | | private String unit; |
| | | /** å½ååºåæ°é */ |
| | | private BigDecimal stockQty; |
| | | /** å®å
¨åºåï¼ä½äºåé¢è¦ï¼ */ |
| | | private BigDecimal safeStock; |
| | | /** åæ¾ä½ç½® */ |
| | | private String storageLocation; |
| | | /** æææè³ï¼ç»ç¼/å±ååå¿
å¡«ï¼ */ |
| | | private LocalDate expireDate; |
| | | /** æææææ° */ |
| | | private Integer validityMonths; |
| | | /** ä¿ç®¡äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long managerId; |
| | | /** ä¿ç®¡äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String manager; |
| | | /** ç¶æï¼0-å¯ç¨ï¼1-åç¨ */ |
| | | private Integer status; |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.dataobject.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç©èµåºå
¥åºæµæ°´ DO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @TableName("safety_material_stock") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyMaterialStockDO extends BaseDO { |
| | | |
| | | @TableId |
| | | private Long id; |
| | | /** ç©èµç¼å· */ |
| | | private Long materialId; |
| | | /** ç©èµåç§°ï¼å¿«ç
§ï¼ */ |
| | | private String materialName; |
| | | /** ç©èµç±»å«ï¼å¿«ç
§ï¼ */ |
| | | private String category; |
| | | /** ä¸å¡ç±»åï¼IN-å
¥åºï¼OUT-åºåº */ |
| | | private String bizType; |
| | | /** æ°é */ |
| | | private BigDecimal quantity; |
| | | /** æä½ååºå */ |
| | | private BigDecimal stockBefore; |
| | | /** æä½ååºå */ |
| | | private BigDecimal stockAfter; |
| | | /** ä¸å¡æ¥æ */ |
| | | private LocalDate bizDate; |
| | | /** ç»å人 */ |
| | | private String operator; |
| | | /** é¢ç¨äººï¼åºåºï¼ */ |
| | | private String receiver; |
| | | /** ç¨é/å»å */ |
| | | private String purpose; |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.dataobject.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å®å
¨ç»ç»æ¶æ DO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @TableName("safety_org") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyOrgDO extends BaseDO { |
| | | |
| | | @TableId |
| | | private Long id; |
| | | /** ç¶çº§ç¼å·ï¼0 为顶级 */ |
| | | private Long parentId; |
| | | /** ç»ç»åç§°ï¼å¦å®å
¨ç产å§åä¼ãå®å
¨ç®¡çé¨ */ |
| | | private String name; |
| | | /** è´è´£äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long leaderId; |
| | | /** è´è´£äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String leaderName; |
| | | /** è´è´£äººçµè¯ */ |
| | | private String leaderPhone; |
| | | /** æåå§åï¼éå·åé */ |
| | | private String memberNames; |
| | | /** å®å
¨èè´£ */ |
| | | private String duty; |
| | | /** æ¾ç¤ºé¡ºåº */ |
| | | private Integer sort; |
| | | /** ç¶æï¼0-å¯ç¨ï¼1-åç¨ */ |
| | | private Integer status; |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.dataobject.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å®å
¨å¹è®è®°å½ DO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @TableName("safety_training") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyTrainingDO extends BaseDO { |
| | | |
| | | @TableId |
| | | private Long id; |
| | | /** å¹è®ä¸»é¢ */ |
| | | private String title; |
| | | /** å¹è®ç±»åï¼è§ SafetyTrainingTypeEnum */ |
| | | private String trainingType; |
| | | /** å¹è®æ¥æ */ |
| | | private LocalDate trainDate; |
| | | /** å¹è®å¦æ¶ */ |
| | | private BigDecimal durationHours; |
| | | /** 讲å¸/ç»ç»äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long trainerId; |
| | | /** 讲å¸/ç»ç»äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String trainer; |
| | | /** å¹è®å°ç¹ */ |
| | | private String location; |
| | | /** åå 人åå§åï¼éå·åé */ |
| | | private String participants; |
| | | /** åå äººæ° */ |
| | | private Integer participantCount; |
| | | /** å¹è®å
容 */ |
| | | private String content; |
| | | /** èæ ¸æ
åµ */ |
| | | private String examResult; |
| | | /** ç¾å°è¡¨/课件/ç
§ç URLï¼éå·åé */ |
| | | private String attachment; |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.dataobject.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - é«å±ä½ä¸ç¥¨ DO |
| | | * |
| | | * <p>å¨ç«ãé«å带çµãæé空é´çä½ä¸ç线ä¸å®¡æ¹ä¸çµåçåã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @TableName("safety_work_permit") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyWorkPermitDO extends BaseDO { |
| | | |
| | | @TableId |
| | | private Long id; |
| | | /** ä½ä¸ç¥¨ç¼å· */ |
| | | private String code; |
| | | /** ä½ä¸ç±»åï¼è§ SafetyPermitTypeEnum */ |
| | | 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 LocalDateTime planStartTime; |
| | | /** 计åç»ææ¶é´ */ |
| | | private LocalDateTime planEndTime; |
| | | /** å®é
å¼å§æ¶é´ */ |
| | | private LocalDateTime actualStartTime; |
| | | /** å®é
ç»ææ¶é´ */ |
| | | private LocalDateTime actualEndTime; |
| | | /** é£é©ç级ï¼è§ SafetyRiskLevelEnum */ |
| | | 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; |
| | | /** ä½ä¸ç¥¨éä»¶ URLï¼éå·åé */ |
| | | private String attachment; |
| | | /** ç°åºç
§ç URLï¼éå·åé */ |
| | | private String photoUrls; |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.dataobject.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ä½ä¸çæ¤è®°å½ DO |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @TableName("safety_work_permit_monitor") |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SafetyWorkPermitMonitorDO extends BaseDO { |
| | | |
| | | @TableId |
| | | private Long id; |
| | | /** ä½ä¸ç¥¨ç¼å· */ |
| | | private Long permitId; |
| | | /** çæ¤æ¶é´ */ |
| | | private LocalDateTime monitorTime; |
| | | /** çæ¤äººï¼åå·¥ç¼å·ï¼å
³è hrm_employee.idï¼ */ |
| | | private Long guardianId; |
| | | /** çæ¤äººå§åï¼å¿«ç
§ï¼ç±å工档æ¡å¸¦åºï¼ */ |
| | | private String guardian; |
| | | /** çæ¤å
容䏿
åµ */ |
| | | private String monitorContent; |
| | | /** å¼å¸¸æ
åµä¸å¤ç½® */ |
| | | private String abnormal; |
| | | /** ç°åºç
§ç URLï¼éå·åé */ |
| | | private String photoUrls; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.train.SafetyAccidentPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyAccidentDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.apache.ibatis.annotations.Select; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - äºæ
ç»è®° Mapper |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Mapper |
| | | public interface SafetyAccidentMapper extends BaseMapperX<SafetyAccidentDO> { |
| | | |
| | | default PageResult<SafetyAccidentDO> selectPage(SafetyAccidentPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<SafetyAccidentDO>() |
| | | .likeIfPresent(SafetyAccidentDO::getCode, reqVO.getCode()) |
| | | .likeIfPresent(SafetyAccidentDO::getTitle, reqVO.getTitle()) |
| | | .eqIfPresent(SafetyAccidentDO::getAccidentType, reqVO.getAccidentType()) |
| | | .eqIfPresent(SafetyAccidentDO::getLevel, reqVO.getLevel()) |
| | | .eqIfPresent(SafetyAccidentDO::getStatus, reqVO.getStatus()) |
| | | .betweenIfPresent(SafetyAccidentDO::getOccurTime, reqVO.getOccurTime()) |
| | | .orderByDesc(SafetyAccidentDO::getOccurTime) |
| | | .orderByDesc(SafetyAccidentDO::getId)); |
| | | } |
| | | |
| | | default List<SafetyAccidentDO> selectListBetween(java.time.LocalDateTime begin, java.time.LocalDateTime end) { |
| | | return selectList(new LambdaQueryWrapperX<SafetyAccidentDO>() |
| | | .geIfPresent(SafetyAccidentDO::getOccurTime, begin) |
| | | .leIfPresent(SafetyAccidentDO::getOccurTime, end) |
| | | .orderByAsc(SafetyAccidentDO::getOccurTime)); |
| | | } |
| | | |
| | | @Select("SELECT CONCAT(#{prefix}, LPAD(COUNT(*) + 1, 4, '0')) FROM safety_accident WHERE code LIKE CONCAT(#{prefix}, '%')") |
| | | String selectNextCode(@Param("prefix") String prefix); |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.cert.SafetyCertificatePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyCertificateDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç¹ç§ä½ä¸è¯ Mapper |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Mapper |
| | | public interface SafetyCertificateMapper extends BaseMapperX<SafetyCertificateDO> { |
| | | |
| | | default PageResult<SafetyCertificateDO> selectPage(SafetyCertificatePageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<SafetyCertificateDO>() |
| | | .likeIfPresent(SafetyCertificateDO::getEmployeeName, reqVO.getEmployeeName()) |
| | | .likeIfPresent(SafetyCertificateDO::getEmployeeNo, reqVO.getEmployeeNo()) |
| | | .likeIfPresent(SafetyCertificateDO::getDeptName, reqVO.getDeptName()) |
| | | .eqIfPresent(SafetyCertificateDO::getCertType, reqVO.getCertType()) |
| | | .eqIfPresent(SafetyCertificateDO::getStatus, reqVO.getStatus()) |
| | | .likeIfPresent(SafetyCertificateDO::getCertNo, reqVO.getCertNo()) |
| | | .geIfPresent(SafetyCertificateDO::getExpireDate, reqVO.getExpireDateStart()) |
| | | .leIfPresent(SafetyCertificateDO::getExpireDate, reqVO.getExpireDateEnd()) |
| | | .orderByAsc(SafetyCertificateDO::getExpireDate) |
| | | .orderByDesc(SafetyCertificateDO::getId)); |
| | | } |
| | | |
| | | default SafetyCertificateDO selectByCertNo(String certNo) { |
| | | return selectOne(SafetyCertificateDO::getCertNo, certNo); |
| | | } |
| | | |
| | | /** æ¥è¯¢å³å°å°ææå·²è¿æçè¯ä»¶ï¼expireDate <= æªæ¢æ¥æï¼ */ |
| | | default List<SafetyCertificateDO> selectExpiringBefore(LocalDate deadline) { |
| | | return selectList(new LambdaQueryWrapperX<SafetyCertificateDO>() |
| | | .le(SafetyCertificateDO::getExpireDate, deadline) |
| | | .orderByAsc(SafetyCertificateDO::getExpireDate)); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.train.SafetyDrillPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyDrillDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - æ¼ç»è®°å½ Mapper |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Mapper |
| | | public interface SafetyDrillMapper extends BaseMapperX<SafetyDrillDO> { |
| | | |
| | | default PageResult<SafetyDrillDO> selectPage(SafetyDrillPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<SafetyDrillDO>() |
| | | .likeIfPresent(SafetyDrillDO::getTitle, reqVO.getTitle()) |
| | | .eqIfPresent(SafetyDrillDO::getDrillType, reqVO.getDrillType()) |
| | | .likeIfPresent(SafetyDrillDO::getOrganizer, reqVO.getOrganizer()) |
| | | .betweenIfPresent(SafetyDrillDO::getDrillDate, reqVO.getDrillDate()) |
| | | .orderByDesc(SafetyDrillDO::getDrillDate) |
| | | .orderByDesc(SafetyDrillDO::getId)); |
| | | } |
| | | |
| | | default List<SafetyDrillDO> selectListBetween(java.time.LocalDate begin, java.time.LocalDate end) { |
| | | return selectList(new LambdaQueryWrapperX<SafetyDrillDO>() |
| | | .geIfPresent(SafetyDrillDO::getDrillDate, begin) |
| | | .leIfPresent(SafetyDrillDO::getDrillDate, end) |
| | | .orderByAsc(SafetyDrillDO::getDrillDate)); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.hazard.SafetyHazardPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyHazardDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.apache.ibatis.annotations.Select; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - 鿣 Mapper |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Mapper |
| | | public interface SafetyHazardMapper extends BaseMapperX<SafetyHazardDO> { |
| | | |
| | | default PageResult<SafetyHazardDO> selectPage(SafetyHazardPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<SafetyHazardDO>() |
| | | .likeIfPresent(SafetyHazardDO::getCode, reqVO.getCode()) |
| | | .likeIfPresent(SafetyHazardDO::getTitle, reqVO.getTitle()) |
| | | .eqIfPresent(SafetyHazardDO::getLevel, reqVO.getLevel()) |
| | | .eqIfPresent(SafetyHazardDO::getSource, reqVO.getSource()) |
| | | .eqIfPresent(SafetyHazardDO::getStatus, reqVO.getStatus()) |
| | | .likeIfPresent(SafetyHazardDO::getAssignee, reqVO.getAssignee()) |
| | | .likeIfPresent(SafetyHazardDO::getLocation, reqVO.getLocation()) |
| | | .geIfPresent(SafetyHazardDO::getReportTime, reqVO.getReportTimeStart()) |
| | | .leIfPresent(SafetyHazardDO::getReportTime, reqVO.getReportTimeEnd()) |
| | | .orderByDesc(SafetyHazardDO::getReportTime) |
| | | .orderByDesc(SafetyHazardDO::getId)); |
| | | } |
| | | |
| | | /** è¶
è¿æ´æ¹æé䏿ªéç¯ç鿣 */ |
| | | default List<SafetyHazardDO> selectOverdue(java.time.LocalDate today) { |
| | | return selectList(new LambdaQueryWrapperX<SafetyHazardDO>() |
| | | .lt(SafetyHazardDO::getRectifyDeadline, today) |
| | | .notIn(SafetyHazardDO::getStatus, "CLOSED") |
| | | .orderByAsc(SafetyHazardDO::getRectifyDeadline)); |
| | | } |
| | | |
| | | /** çæéæ£ç¼å·ï¼HZ + yyyyMMdd + 4 使µæ°´ */ |
| | | @Select("SELECT CONCAT(#{prefix}, LPAD(COUNT(*) + 1, 4, '0')) FROM safety_hazard WHERE code LIKE CONCAT(#{prefix}, '%')") |
| | | String selectNextCode(@Param("prefix") String prefix); |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.inspection.SafetyInspectionPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyInspectionDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£è®°å½ Mapper |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Mapper |
| | | public interface SafetyInspectionMapper extends BaseMapperX<SafetyInspectionDO> { |
| | | |
| | | default PageResult<SafetyInspectionDO> selectPage(SafetyInspectionPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<SafetyInspectionDO>() |
| | | .eqIfPresent(SafetyInspectionDO::getPointId, reqVO.getPointId()) |
| | | .eqIfPresent(SafetyInspectionDO::getPointType, reqVO.getPointType()) |
| | | .likeIfPresent(SafetyInspectionDO::getInspector, reqVO.getInspector()) |
| | | .eqIfPresent(SafetyInspectionDO::getResult, reqVO.getResult()) |
| | | .betweenIfPresent(SafetyInspectionDO::getInspectTime, reqVO.getInspectTime()) |
| | | .orderByDesc(SafetyInspectionDO::getInspectTime) |
| | | .orderByDesc(SafetyInspectionDO::getId)); |
| | | } |
| | | |
| | | default List<SafetyInspectionDO> selectListByTimeRange(LocalDateTime begin, LocalDateTime end) { |
| | | return selectList(new LambdaQueryWrapperX<SafetyInspectionDO>() |
| | | .geIfPresent(SafetyInspectionDO::getInspectTime, begin) |
| | | .leIfPresent(SafetyInspectionDO::getInspectTime, end) |
| | | .orderByAsc(SafetyInspectionDO::getInspectTime)); |
| | | } |
| | | |
| | | default Long selectCountByPointId(Long pointId) { |
| | | return selectCount(SafetyInspectionDO::getPointId, pointId); |
| | | } |
| | | |
| | | /** æ¥è¯¢æç¹ä½æè¿ä¸æ¬¡å·¡æ£è®°å½ */ |
| | | default SafetyInspectionDO selectLatestByPointId(Long pointId) { |
| | | return selectOne(new LambdaQueryWrapperX<SafetyInspectionDO>() |
| | | .eq(SafetyInspectionDO::getPointId, pointId) |
| | | .orderByDesc(SafetyInspectionDO::getInspectTime) |
| | | .last("LIMIT 1")); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.inspection.SafetyInspectionPointPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyInspectionPointDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£ç¹ä½ Mapper |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Mapper |
| | | public interface SafetyInspectionPointMapper extends BaseMapperX<SafetyInspectionPointDO> { |
| | | |
| | | default PageResult<SafetyInspectionPointDO> selectPage(SafetyInspectionPointPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<SafetyInspectionPointDO>() |
| | | .likeIfPresent(SafetyInspectionPointDO::getCode, reqVO.getCode()) |
| | | .likeIfPresent(SafetyInspectionPointDO::getName, reqVO.getName()) |
| | | .eqIfPresent(SafetyInspectionPointDO::getPointType, reqVO.getPointType()) |
| | | .likeIfPresent(SafetyInspectionPointDO::getWorkshopName, reqVO.getWorkshopName()) |
| | | .eqIfPresent(SafetyInspectionPointDO::getStatus, reqVO.getStatus()) |
| | | .orderByAsc(SafetyInspectionPointDO::getCode)); |
| | | } |
| | | |
| | | default SafetyInspectionPointDO selectByCode(String code) { |
| | | return selectOne(SafetyInspectionPointDO::getCode, code); |
| | | } |
| | | |
| | | default List<SafetyInspectionPointDO> selectListByStatus(Integer status) { |
| | | return selectList(new LambdaQueryWrapperX<SafetyInspectionPointDO>() |
| | | .eq(SafetyInspectionPointDO::getStatus, status) |
| | | .orderByAsc(SafetyInspectionPointDO::getCode)); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.material.SafetyMaterialPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyMaterialDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.apache.ibatis.annotations.Select; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç©èµå°è´¦ Mapper |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Mapper |
| | | public interface SafetyMaterialMapper extends BaseMapperX<SafetyMaterialDO> { |
| | | |
| | | default PageResult<SafetyMaterialDO> selectPage(SafetyMaterialPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<SafetyMaterialDO>() |
| | | .likeIfPresent(SafetyMaterialDO::getCode, reqVO.getCode()) |
| | | .likeIfPresent(SafetyMaterialDO::getName, reqVO.getName()) |
| | | .eqIfPresent(SafetyMaterialDO::getCategory, reqVO.getCategory()) |
| | | .eqIfPresent(SafetyMaterialDO::getStatus, reqVO.getStatus()) |
| | | .likeIfPresent(SafetyMaterialDO::getStorageLocation, reqVO.getStorageLocation()) |
| | | .orderByAsc(SafetyMaterialDO::getCategory) |
| | | .orderByAsc(SafetyMaterialDO::getCode)); |
| | | } |
| | | |
| | | default SafetyMaterialDO selectByCode(String code) { |
| | | return selectOne(SafetyMaterialDO::getCode, code); |
| | | } |
| | | |
| | | /** éå®åºåè¡ï¼é¿å
å¹¶ååºå
¥åºå¯¼è´åºåéä¹± */ |
| | | @Select("SELECT * FROM safety_material WHERE id = #{id} AND deleted = b'0' FOR UPDATE") |
| | | SafetyMaterialDO selectByIdForUpdate(@Param("id") Long id); |
| | | |
| | | /** ä½äºå®å
¨åºåçç©èµ */ |
| | | default List<SafetyMaterialDO> selectBelowSafeStock() { |
| | | return selectList(new LambdaQueryWrapperX<SafetyMaterialDO>() |
| | | .apply("stock_qty < safe_stock") |
| | | .orderByAsc(SafetyMaterialDO::getCode)); |
| | | } |
| | | |
| | | /** æææä¸´è¿çç©èµ */ |
| | | default List<SafetyMaterialDO> selectExpiringBefore(LocalDate deadline) { |
| | | return selectList(new LambdaQueryWrapperX<SafetyMaterialDO>() |
| | | .isNotNull(SafetyMaterialDO::getExpireDate) |
| | | .le(SafetyMaterialDO::getExpireDate, deadline) |
| | | .orderByAsc(SafetyMaterialDO::getExpireDate)); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.material.SafetyMaterialStockPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyMaterialStockDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç©èµåºå
¥åºæµæ°´ Mapper |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Mapper |
| | | public interface SafetyMaterialStockMapper extends BaseMapperX<SafetyMaterialStockDO> { |
| | | |
| | | default PageResult<SafetyMaterialStockDO> selectPage(SafetyMaterialStockPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<SafetyMaterialStockDO>() |
| | | .eqIfPresent(SafetyMaterialStockDO::getMaterialId, reqVO.getMaterialId()) |
| | | .likeIfPresent(SafetyMaterialStockDO::getMaterialName, reqVO.getMaterialName()) |
| | | .eqIfPresent(SafetyMaterialStockDO::getCategory, reqVO.getCategory()) |
| | | .eqIfPresent(SafetyMaterialStockDO::getBizType, reqVO.getBizType()) |
| | | .betweenIfPresent(SafetyMaterialStockDO::getBizDate, reqVO.getBizDate()) |
| | | .orderByDesc(SafetyMaterialStockDO::getBizDate) |
| | | .orderByDesc(SafetyMaterialStockDO::getId)); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyOrgDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç»ç»æ¶æ Mapper |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Mapper |
| | | public interface SafetyOrgMapper extends BaseMapperX<SafetyOrgDO> { |
| | | |
| | | default List<SafetyOrgDO> selectListOrdered() { |
| | | return selectList(new LambdaQueryWrapperX<SafetyOrgDO>() |
| | | .orderByAsc(SafetyOrgDO::getSort) |
| | | .orderByAsc(SafetyOrgDO::getId)); |
| | | } |
| | | |
| | | default List<SafetyOrgDO> selectListByParentId(Long parentId) { |
| | | return selectList(new LambdaQueryWrapperX<SafetyOrgDO>() |
| | | .eq(SafetyOrgDO::getParentId, parentId) |
| | | .orderByAsc(SafetyOrgDO::getSort)); |
| | | } |
| | | |
| | | default Long selectCountByParentId(Long parentId) { |
| | | return selectCount(SafetyOrgDO::getParentId, parentId); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.train.SafetyTrainingPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyTrainingDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å¹è®è®°å½ Mapper |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Mapper |
| | | public interface SafetyTrainingMapper extends BaseMapperX<SafetyTrainingDO> { |
| | | |
| | | default PageResult<SafetyTrainingDO> selectPage(SafetyTrainingPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<SafetyTrainingDO>() |
| | | .likeIfPresent(SafetyTrainingDO::getTitle, reqVO.getTitle()) |
| | | .eqIfPresent(SafetyTrainingDO::getTrainingType, reqVO.getTrainingType()) |
| | | .likeIfPresent(SafetyTrainingDO::getTrainer, reqVO.getTrainer()) |
| | | .betweenIfPresent(SafetyTrainingDO::getTrainDate, reqVO.getTrainDate()) |
| | | .orderByDesc(SafetyTrainingDO::getTrainDate) |
| | | .orderByDesc(SafetyTrainingDO::getId)); |
| | | } |
| | | |
| | | default List<SafetyTrainingDO> selectListBetween(java.time.LocalDate begin, java.time.LocalDate end) { |
| | | return selectList(new LambdaQueryWrapperX<SafetyTrainingDO>() |
| | | .geIfPresent(SafetyTrainingDO::getTrainDate, begin) |
| | | .leIfPresent(SafetyTrainingDO::getTrainDate, end) |
| | | .orderByAsc(SafetyTrainingDO::getTrainDate)); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.permit.SafetyWorkPermitPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyWorkPermitDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.apache.ibatis.annotations.Select; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - é«å±ä½ä¸ç¥¨ Mapper |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Mapper |
| | | public interface SafetyWorkPermitMapper extends BaseMapperX<SafetyWorkPermitDO> { |
| | | |
| | | default PageResult<SafetyWorkPermitDO> selectPage(SafetyWorkPermitPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<SafetyWorkPermitDO>() |
| | | .likeIfPresent(SafetyWorkPermitDO::getCode, reqVO.getCode()) |
| | | .likeIfPresent(SafetyWorkPermitDO::getTitle, reqVO.getTitle()) |
| | | .eqIfPresent(SafetyWorkPermitDO::getPermitType, reqVO.getPermitType()) |
| | | .eqIfPresent(SafetyWorkPermitDO::getStatus, reqVO.getStatus()) |
| | | .eqIfPresent(SafetyWorkPermitDO::getRiskLevel, reqVO.getRiskLevel()) |
| | | .likeIfPresent(SafetyWorkPermitDO::getApplicant, reqVO.getApplicant()) |
| | | .likeIfPresent(SafetyWorkPermitDO::getWorkshopName, reqVO.getWorkshopName()) |
| | | .betweenIfPresent(SafetyWorkPermitDO::getPlanStartTime, reqVO.getPlanStartTime()) |
| | | .orderByDesc(SafetyWorkPermitDO::getApplyTime) |
| | | .orderByDesc(SafetyWorkPermitDO::getId)); |
| | | } |
| | | |
| | | @Select("SELECT CONCAT(#{prefix}, LPAD(COUNT(*) + 1, 4, '0')) FROM safety_work_permit WHERE code LIKE CONCAT(#{prefix}, '%')") |
| | | String selectNextCode(@Param("prefix") String prefix); |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.safety; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyWorkPermitMonitorDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ä½ä¸çæ¤è®°å½ Mapper |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Mapper |
| | | public interface SafetyWorkPermitMonitorMapper extends BaseMapperX<SafetyWorkPermitMonitorDO> { |
| | | |
| | | default List<SafetyWorkPermitMonitorDO> selectListByPermitId(Long permitId) { |
| | | return selectList(new LambdaQueryWrapperX<SafetyWorkPermitMonitorDO>() |
| | | .eq(SafetyWorkPermitMonitorDO::getPermitId, permitId) |
| | | .orderByDesc(SafetyWorkPermitMonitorDO::getMonitorTime)); |
| | | } |
| | | |
| | | default int deleteByPermitId(Long permitId) { |
| | | return delete(SafetyWorkPermitMonitorDO::getPermitId, permitId); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums; |
| | | |
| | | import cn.iocoder.yudao.framework.common.exception.ErrorCode; |
| | | |
| | | /** |
| | | * MES 模åé误ç - å®å
¨çäº§åæ¨¡å |
| | | * |
| | | * å®å
¨ç产模åé误ç åºé´ï¼1_040_960_xxx |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | public interface SafetyErrorCodeConstants { |
| | | |
| | | // ========== å®å
¨ç»ç»æ¶æ 1_040_961_xxx ========== |
| | | ErrorCode SAFETY_ORG_NOT_EXISTS = new ErrorCode(1_040_961_000, "å®å
¨ç»ç»ä¸åå¨"); |
| | | ErrorCode SAFETY_ORG_PARENT_NOT_EXISTS = new ErrorCode(1_040_961_001, "ç¶çº§å®å
¨ç»ç»ä¸åå¨"); |
| | | ErrorCode SAFETY_ORG_PARENT_IS_SELF = new ErrorCode(1_040_961_002, "ä¸çº§ç»ç»ä¸è½éæ©èªå·±"); |
| | | ErrorCode SAFETY_ORG_PARENT_IS_CHILD = new ErrorCode(1_040_961_003, "ä¸çº§ç»ç»ä¸è½éæ©èªå·±çåç»ç»"); |
| | | ErrorCode SAFETY_ORG_HAS_CHILDREN = new ErrorCode(1_040_961_004, "åå¨åç»ç»ï¼æ æ³å é¤"); |
| | | |
| | | // ========== ç¹ç§ä½ä¸è¯ 1_040_962_xxx ========== |
| | | ErrorCode SAFETY_CERT_NOT_EXISTS = new ErrorCode(1_040_962_000, "ç¹ç§ä½ä¸è¯ä¸åå¨"); |
| | | ErrorCode SAFETY_CERT_NO_DUPLICATE = new ErrorCode(1_040_962_001, "è¯ä»¶ç¼å·å·²åå¨"); |
| | | ErrorCode SAFETY_CERT_EXPIRE_BEFORE_ISSUE = new ErrorCode(1_040_962_002, "æææä¸è½æ©äºåè¯æ¥æ"); |
| | | ErrorCode SAFETY_CERT_EMPLOYEE_NOT_EXISTS = new ErrorCode(1_040_962_003, "æè¯äººä¸åå¨ï¼è¯·ä»å工档æ¡ä¸éæ©"); |
| | | |
| | | // ========== å·¡æ£ç¹ä½ / å·¡æ£è®°å½ 1_040_963_xxx ========== |
| | | ErrorCode SAFETY_POINT_NOT_EXISTS = new ErrorCode(1_040_963_000, "å·¡æ£ç¹ä½ä¸åå¨"); |
| | | ErrorCode SAFETY_POINT_CODE_DUPLICATE = new ErrorCode(1_040_963_001, "ç¹ä½ç¼ç å·²åå¨"); |
| | | ErrorCode SAFETY_POINT_DISABLED = new ErrorCode(1_040_963_002, "å·¡æ£ç¹ä½å·²åç¨"); |
| | | ErrorCode SAFETY_INSPECTION_NOT_EXISTS = new ErrorCode(1_040_963_010, "å·¡æ£è®°å½ä¸åå¨"); |
| | | |
| | | // ========== 鿣éç¯ 1_040_964_xxx ========== |
| | | ErrorCode SAFETY_HAZARD_NOT_EXISTS = new ErrorCode(1_040_964_000, "éæ£è®°å½ä¸åå¨"); |
| | | ErrorCode SAFETY_HAZARD_STATUS_ERROR = new ErrorCode(1_040_964_001, "å½åéæ£ç¶æä¸å
许该æä½"); |
| | | ErrorCode SAFETY_HAZARD_ASSIGNEE_REQUIRED = new ErrorCode(1_040_964_002, "åæ´¾å¿
é¡»æå®æ´æ¹è´£ä»»äºº"); |
| | | ErrorCode SAFETY_HAZARD_SAME_OPERATOR = new ErrorCode(1_040_964_003, "æ´æ¹äººä¸å¤æ¥äººä¸è½æ¯åä¸äºº"); |
| | | |
| | | // ========== é«å±ä½ä¸ç¥¨ 1_040_965_xxx ========== |
| | | ErrorCode SAFETY_PERMIT_NOT_EXISTS = new ErrorCode(1_040_965_000, "ä½ä¸ç¥¨ä¸åå¨"); |
| | | ErrorCode SAFETY_PERMIT_STATUS_ERROR = new ErrorCode(1_040_965_001, "å½åä½ä¸ç¥¨ç¶æä¸å
许该æä½"); |
| | | 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_MATERIAL_NOT_EXISTS = new ErrorCode(1_040_966_000, "ç©èµä¸åå¨"); |
| | | ErrorCode SAFETY_MATERIAL_CODE_DUPLICATE = new ErrorCode(1_040_966_001, "ç©èµç¼ç å·²åå¨"); |
| | | ErrorCode SAFETY_MATERIAL_STOCK_NOT_ENOUGH = new ErrorCode(1_040_966_002, "åºåä¸è¶³ï¼æ æ³åºåº"); |
| | | ErrorCode SAFETY_MATERIAL_STOCK_RECORD_NOT_EXISTS = new ErrorCode(1_040_966_010, "åºå
¥åºæµæ°´ä¸åå¨"); |
| | | |
| | | // ========== å¹è® / æ¼ç» / äºæ
1_040_967_xxx ========== |
| | | ErrorCode SAFETY_TRAINING_NOT_EXISTS = new ErrorCode(1_040_967_000, "å¹è®è®°å½ä¸åå¨"); |
| | | 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, "å¼å§æ¥æä¸è½æäºç»ææ¥æ"); |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - äºæ
ç级æä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyAccidentLevelEnum { |
| | | |
| | | SLIGHT("SLIGHT", "è½»ä¼¤äºæ
"), |
| | | GENERAL("GENERAL", "ä¸è¬äºæ
"), |
| | | SEVERE("SEVERE", "éä¼¤äºæ
"), |
| | | MAJOR("MAJOR", "éå¤§äºæ
"); |
| | | |
| | | private final String level; |
| | | private final String name; |
| | | |
| | | public static String getNameByLevel(String level) { |
| | | for (SafetyAccidentLevelEnum value : values()) { |
| | | if (value.getLevel().equals(level)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return level; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - äºæ
å¤çç¶ææä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyAccidentStatusEnum { |
| | | |
| | | REPORTED("REPORTED", "å·²ç»è®°"), |
| | | INVESTIGATING("INVESTIGATING", "è°æ¥ä¸"), |
| | | HANDLED("HANDLED", "å·²å¤ç"), |
| | | CLOSED("CLOSED", "å·²ç»æ¡"); |
| | | |
| | | private final String status; |
| | | private final String name; |
| | | |
| | | public static String getNameByStatus(String status) { |
| | | for (SafetyAccidentStatusEnum value : values()) { |
| | | if (value.getStatus().equals(status)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return status; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - äºæ
ç±»åæä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyAccidentTypeEnum { |
| | | |
| | | ELECTRIC_SHOCK("ELECTRIC_SHOCK", "触çµ"), |
| | | FIRE("FIRE", "ç«ç¾"), |
| | | FALL("FALL", "é«å¤å è½"), |
| | | OBJECT_STRIKE("OBJECT_STRIKE", "ç©ä½æå»"), |
| | | MECHANICAL("MECHANICAL", "æºæ¢°ä¼¤å®³"), |
| | | CHEMICAL("CHEMICAL", "䏿¯çªæ¯"), |
| | | VEHICLE("VEHICLE", "车è¾ä¼¤å®³"), |
| | | OTHER("OTHER", "å
¶ä»"); |
| | | |
| | | private final String type; |
| | | private final String name; |
| | | |
| | | public static String getNameByType(String type) { |
| | | for (SafetyAccidentTypeEnum value : values()) { |
| | | if (value.getType().equals(type)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return type; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç¹ç§ä½ä¸è¯ç¶ææä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyCertificateStatusEnum { |
| | | |
| | | VALID("VALID", "ææ"), |
| | | EXPIRING("EXPIRING", "å³å°å°æ"), |
| | | EXPIRED("EXPIRED", "å·²è¿æ"), |
| | | REVOKED("REVOKED", "已注é"); |
| | | |
| | | private final String status; |
| | | private final String name; |
| | | |
| | | public static String getNameByStatus(String status) { |
| | | for (SafetyCertificateStatusEnum value : values()) { |
| | | if (value.getStatus().equals(status)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return status; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç¹ç§ä½ä¸è¯ç±»åæä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyCertificateTypeEnum { |
| | | |
| | | LOW_VOLTAGE_ELECTRICIAN("LOW_VOLTAGE_ELECTRICIAN", "ä½åçµå·¥è¯"), |
| | | HIGH_VOLTAGE_OPERATION("HIGH_VOLTAGE_OPERATION", "é«åæä½è¯"), |
| | | WELDING("WELDING", "çæ¥ä¸çåå²ä½ä¸è¯"), |
| | | HOIST("HOIST", "èµ·éæºæ¢°ä½ä¸è¯"), |
| | | HEIGHT_WORK("HEIGHT_WORK", "é«å¤ä½ä¸è¯"), |
| | | LIMITED_SPACE("LIMITED_SPACE", "æé空é´ä½ä¸è¯"), |
| | | FORKLIFT("FORKLIFT", "å车ä½ä¸è¯"), |
| | | BOILER("BOILER", "é
çä½ä¸è¯"), |
| | | OTHER("OTHER", "å
¶ä»ç¹ç§ä½ä¸è¯"); |
| | | |
| | | private final String type; |
| | | private final String name; |
| | | |
| | | public static String getNameByType(String type) { |
| | | for (SafetyCertificateTypeEnum value : values()) { |
| | | if (value.getType().equals(type)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return type; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - æ¼ç»ç±»åæä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyDrillTypeEnum { |
| | | |
| | | FIRE("FIRE", "æ¶é²æ¼ç»"), |
| | | EMERGENCY_EVAC("EMERGENCY_EVAC", "åºæ¥çæ£æ¼ç»"), |
| | | ELECTRIC_ACCIDENT("ELECTRIC_ACCIDENT", "触çµäºæ
æ¼ç»"), |
| | | CHEMICAL_LEAK("CHEMICAL_LEAK", "å±ååæ³æ¼æ¼ç»"), |
| | | OTHER("OTHER", "å
¶ä»æ¼ç»"); |
| | | |
| | | private final String type; |
| | | private final String name; |
| | | |
| | | public static String getNameByType(String type) { |
| | | for (SafetyDrillTypeEnum value : values()) { |
| | | if (value.getType().equals(type)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return type; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - 鿣ç级æä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyHazardLevelEnum { |
| | | |
| | | GENERAL("GENERAL", "ä¸è¬éæ£"), |
| | | MAJOR("MAJOR", "é大鿣"); |
| | | |
| | | private final String level; |
| | | private final String name; |
| | | |
| | | public static String getNameByLevel(String level) { |
| | | for (SafetyHazardLevelEnum value : values()) { |
| | | if (value.getLevel().equals(level)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return level; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - éæ£æ¥æºæä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyHazardSourceEnum { |
| | | |
| | | INSPECTION("INSPECTION", "å·¡æ£åç°"), |
| | | SELF_CHECK("SELF_CHECK", "èªæ¥ä¸æ¥"), |
| | | REPORT("REPORT", "å工䏿¥"), |
| | | EXTERNAL("EXTERNAL", "å¤é¨æ£æ¥"); |
| | | |
| | | private final String source; |
| | | private final String name; |
| | | |
| | | public static String getNameBySource(String source) { |
| | | for (SafetyHazardSourceEnum value : values()) { |
| | | if (value.getSource().equals(source)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return source; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - éæ£ç¶ææä¸¾ |
| | | * |
| | | * <p>æµè½¬é¡ºåºï¼ä¸æ¥ â åæ´¾ â æ´æ¹ä¸ â å¾
夿¥ â å·²éç¯ / 夿¥ä¸éè¿ï¼éåæ´æ¹ï¼ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyHazardStatusEnum { |
| | | |
| | | REPORTED("REPORTED", "已䏿¥"), |
| | | ASSIGNED("ASSIGNED", "已忴¾"), |
| | | RECTIFYING("RECTIFYING", "æ´æ¹ä¸"), |
| | | RECHECKING("RECHECKING", "å¾
夿¥"), |
| | | REJECTED("REJECTED", "夿¥ä¸éè¿"), |
| | | CLOSED("CLOSED", "å·²éç¯"); |
| | | |
| | | private final String status; |
| | | private final String name; |
| | | |
| | | public static String getNameByStatus(String status) { |
| | | for (SafetyHazardStatusEnum value : values()) { |
| | | if (value.getStatus().equals(status)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return status; |
| | | } |
| | | |
| | | public static boolean isFinished(String status) { |
| | | return CLOSED.getStatus().equals(status); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£å¨ææä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyInspectCycleEnum { |
| | | |
| | | SHIFT("SHIFT", "æ¯ç"), |
| | | DAILY("DAILY", "æ¯æ¥"), |
| | | WEEKLY("WEEKLY", "æ¯å¨"), |
| | | MONTHLY("MONTHLY", "æ¯æ"); |
| | | |
| | | private final String cycle; |
| | | private final String name; |
| | | |
| | | public static String getNameByCycle(String cycle) { |
| | | for (SafetyInspectCycleEnum value : values()) { |
| | | if (value.getCycle().equals(cycle)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return cycle; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£ç¹ä½ç±»åæä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyInspectionPointTypeEnum { |
| | | |
| | | HIGH_VOLTAGE_ROOM("HIGH_VOLTAGE_ROOM", "é«åé
çµå®¤"), |
| | | UNIT_AREA("UNIT_AREA", "æºç»åº"), |
| | | DANGER_CHEMICAL("DANGER_CHEMICAL", "å±åååº"), |
| | | FIRE_AREA("FIRE_AREA", "æ¶é²éç¹é¨ä½"), |
| | | WORKSHOP("WORKSHOP", "ç产车é´"), |
| | | OTHER("OTHER", "å
¶ä»"); |
| | | |
| | | private final String type; |
| | | private final String name; |
| | | |
| | | public static String getNameByType(String type) { |
| | | for (SafetyInspectionPointTypeEnum value : values()) { |
| | | if (value.getType().equals(type)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return type; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç©èµç±»å«æä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyMaterialCategoryEnum { |
| | | |
| | | INSULATING("INSULATING", "çµåç»ç¼ç¨å
·"), |
| | | HAZARD_CHEMICAL("HAZARD_CHEMICAL", "å±åå"), |
| | | FIRE("FIRE", "æ¶é²ç©èµ"), |
| | | PPE("PPE", "å³ä¿ç¨å"), |
| | | OTHER("OTHER", "å
¶ä»"); |
| | | |
| | | private final String category; |
| | | private final String name; |
| | | |
| | | public static String getNameByCategory(String category) { |
| | | for (SafetyMaterialCategoryEnum value : values()) { |
| | | if (value.getCategory().equals(category)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return category; |
| | | } |
| | | |
| | | /** æ¯å¦éè¦æææç®¡çï¼ç»ç¼ç¨å
·ä¸å±ååæä¿è´¨æï¼ */ |
| | | public static boolean requiresExpireDate(String category) { |
| | | return INSULATING.getCategory().equals(category) || HAZARD_CHEMICAL.getCategory().equals(category); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - é«å±ä½ä¸ç¥¨ç¶ææä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyPermitStatusEnum { |
| | | |
| | | DRAFT("DRAFT", "è稿"), |
| | | PENDING("PENDING", "å¾
审æ¹"), |
| | | APPROVED("APPROVED", "å·²æ¹å"), |
| | | REJECTED("REJECTED", "已驳å"), |
| | | IN_PROGRESS("IN_PROGRESS", "ä½ä¸ä¸"), |
| | | CLOSED("CLOSED", "å·²å®ç»"), |
| | | CANCELLED("CANCELLED", "å·²ä½åº"); |
| | | |
| | | private final String status; |
| | | private final String name; |
| | | |
| | | public static String getNameByStatus(String status) { |
| | | for (SafetyPermitStatusEnum value : values()) { |
| | | if (value.getStatus().equals(status)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return status; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - é«å±ä½ä¸ç¥¨ç±»åæä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyPermitTypeEnum { |
| | | |
| | | HOT_WORK("HOT_WORK", "å¨ç«ä½ä¸"), |
| | | LIVE_HIGH_VOLTAGE("LIVE_HIGH_VOLTAGE", "é«å带çµä½ä¸"), |
| | | LIMITED_SPACE("LIMITED_SPACE", "æé空é´ä½ä¸"), |
| | | WORK_AT_HEIGHT("WORK_AT_HEIGHT", "é«å¤ä½ä¸"), |
| | | LIFTING("LIFTING", "åè£
ä½ä¸"), |
| | | TEMP_ELECTRIC("TEMP_ELECTRIC", "临æ¶ç¨çµä½ä¸"), |
| | | OTHER("OTHER", "å
¶ä»ä½ä¸"); |
| | | |
| | | private final String type; |
| | | private final String name; |
| | | |
| | | public static String getNameByType(String type) { |
| | | for (SafetyPermitTypeEnum value : values()) { |
| | | if (value.getType().equals(type)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return type; |
| | | } |
| | | |
| | | /** æ¯å¦å¿
é¡»æå®çæ¤äºº */ |
| | | public static boolean requiresGuardian(String type) { |
| | | return HOT_WORK.getType().equals(type) || LIVE_HIGH_VOLTAGE.getType().equals(type) |
| | | || LIMITED_SPACE.getType().equals(type); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - é£é©ç级æä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyRiskLevelEnum { |
| | | |
| | | LOW("LOW", "ä½"), |
| | | NORMAL("NORMAL", "ä¸è¬"), |
| | | HIGH("HIGH", "é«"), |
| | | VERY_HIGH("VERY_HIGH", "æé«"); |
| | | |
| | | private final String level; |
| | | private final String name; |
| | | |
| | | public static String getNameByLevel(String level) { |
| | | for (SafetyRiskLevelEnum value : values()) { |
| | | if (value.getLevel().equals(level)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return level; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.safety; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å¹è®ç±»åæä¸¾ |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum SafetyTrainingTypeEnum { |
| | | |
| | | SAFETY("SAFETY", "å®å
¨å¹è®"), |
| | | SKILL("SKILL", "æè½å¹è®"), |
| | | LAW("LAW", "æ³è§å®£è´¯"), |
| | | EMERGENCY("EMERGENCY", "åºæ¥æ¼ç»å¹è®"), |
| | | INDUCTION("INDUCTION", "ä¸çº§å®å
¨æè²"), |
| | | OTHER("OTHER", "å
¶ä»"); |
| | | |
| | | private final String type; |
| | | private final String name; |
| | | |
| | | public static String getNameByType(String type) { |
| | | for (SafetyTrainingTypeEnum value : values()) { |
| | | if (value.getType().equals(type)) { |
| | | return value.getName(); |
| | | } |
| | | } |
| | | return type; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 cn.iocoder.yudao.module.hrm.api.employee.HrmEmployeeApi; |
| | | import cn.iocoder.yudao.module.hrm.api.employee.dto.HrmEmployeeSimpleDTO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.cert.SafetyCertificatePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.cert.SafetyCertificateRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.cert.SafetyCertificateSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyCertificateDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyCertificateMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.safety.SafetyCertificateStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.safety.SafetyCertificateTypeEnum; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.util.HashMap; |
| | | 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.*; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç¹ç§ä½ä¸è¯å°è´¦ Service |
| | | * |
| | | * <p>æ ¸å¿è½åï¼è¯ä¹¦å°æèªå¨é¢è¦ãç¶æç± {@link #resolveStatus} æ ¹æ®æææå®æ¶æ¨å¯¼ï¼ |
| | | * ä¸ä¾èµæå·¥ç»´æ¤ï¼é¿å
è¿ææªåæ¶æ´æ°ç¶æã</p> |
| | | * |
| | | * <p>æè¯äººéè¿ employeeId å
³è人åèµæºçå工档æ¡ï¼ |
| | | * æ°å¢/ä¿®æ¹æ¶ä»æ¡£æ¡å¸¦åºå§åãå·¥å·ãé¨é¨å¹¶è½ä¸ºå¿«ç
§ï¼æ¥è¯¢æ¶å®æ¶åå¡«ææ°æ¡£æ¡ä¿¡æ¯ï¼ |
| | | * åå·¥è°å²åè¯ä»¶å表ä¹ä¼è·çæ¾ç¤ºæ°é¨é¨ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Service |
| | | @Validated |
| | | public class SafetyCertificateService { |
| | | |
| | | /** é»è®¤æåé¢è¦å¤©æ° */ |
| | | public static final int DEFAULT_WARN_DAYS = 30; |
| | | |
| | | @Resource |
| | | private SafetyCertificateMapper certificateMapper; |
| | | @Resource |
| | | private HrmEmployeeApi hrmEmployeeApi; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | |
| | | public Long createCertificate(SafetyCertificateSaveReqVO reqVO) { |
| | | reqVO.setId(null); |
| | | validateCertificateForCreate(reqVO); |
| | | SafetyCertificateDO cert = buildCertificate(reqVO, null); |
| | | certificateMapper.insert(cert); |
| | | return cert.getId(); |
| | | } |
| | | |
| | | public void updateCertificate(SafetyCertificateSaveReqVO reqVO) { |
| | | SafetyCertificateDO old = validateCertificateExists(reqVO.getId()); |
| | | validateCertificateForUpdate(reqVO, old); |
| | | SafetyCertificateDO cert = buildCertificate(reqVO, old); |
| | | certificateMapper.updateById(cert); |
| | | } |
| | | |
| | | public void deleteCertificate(Long id) { |
| | | validateCertificateExists(id); |
| | | certificateMapper.deleteById(id); |
| | | } |
| | | |
| | | public SafetyCertificateDO getCertificate(Long id) { |
| | | return validateCertificateExists(id); |
| | | } |
| | | |
| | | public PageResult<SafetyCertificateDO> getCertificatePage(SafetyCertificatePageReqVO reqVO) { |
| | | return certificateMapper.selectPage(reqVO); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢å³å°å°æ / å·²è¿æçè¯ä»¶å表 |
| | | * |
| | | * @param days æåé¢è¦å¤©æ°ï¼ä¸ºç©ºä½¿ç¨é»è®¤ 30 天 |
| | | */ |
| | | public List<SafetyCertificateDO> getExpiringCertificates(Integer days) { |
| | | int warnDays = days == null || days <= 0 ? DEFAULT_WARN_DAYS : days; |
| | | return certificateMapper.selectExpiringBefore(LocalDate.now().plusDays(warnDays)); |
| | | } |
| | | |
| | | /** |
| | | * æ¹éè¡¥å
¨æè¯äººçææ°å工档æ¡ä¿¡æ¯ï¼å§åãå·¥å·ãé¨é¨ãææºãå
³èç¨æ·ï¼ |
| | | * |
| | | * <p>æ¥è¯¢æ¶ç¨æ¡£æ¡å®æ¶å¼è¦çå¿«ç
§å¼ï¼ä¿è¯åå·¥è°å²åå°è´¦åæ¥ï¼ |
| | | * å工档æ¡å·²è¢«å 餿¶åéå°å¿«ç
§å¼ï¼ä¿è¯åå²è¯ä»¶ä»å¯å±ç¤ºã</p> |
| | | */ |
| | | public void fillEmployeeInfo(List<SafetyCertificateDO> certs) { |
| | | List<Long> employeeIds = certs.stream() |
| | | .map(SafetyCertificateDO::getEmployeeId) |
| | | .filter(Objects::nonNull).distinct().toList(); |
| | | // 注æï¼employeeMap åç»ä¼ç¨ cert.getEmployeeId()ï¼å¯è½ä¸º nullï¼å» getï¼ |
| | | // è Map.of() 䏿¥å null keyãget(null) 伿 NPEï¼æä»¥ç©ºéåå¿
é¡»è¿å HashMap |
| | | Map<Long, HrmEmployeeSimpleDTO> employeeMap = employeeIds.isEmpty() ? new HashMap<>() |
| | | : hrmEmployeeApi.getEmployeeList(employeeIds).stream() |
| | | .collect(Collectors.toMap(HrmEmployeeSimpleDTO::getId, e -> e, (a, b) -> a)); |
| | | certs.forEach(cert -> { |
| | | HrmEmployeeSimpleDTO employee = employeeMap.get(cert.getEmployeeId()); |
| | | if (employee != null) { |
| | | cert.setEmployeeName(employee.getName()); |
| | | cert.setEmployeeNo(employee.getEmployeeNo()); |
| | | cert.setDeptName(employee.getDeptName()); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * æ¹éè¡¥å
¨å±ç¤ºåæ®µï¼æè¯äººæ¡£æ¡ä¸æ¬¡æ§æ¥å¥½ï¼é¿å
éæ¡æ¥è¯¢ |
| | | */ |
| | | 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); |
| | | respVO.setStatusName(SafetyCertificateStatusEnum.getNameByStatus(status)); |
| | | if (cert.getExpireDate() != null) { |
| | | respVO.setRemainingDays(ChronoUnit.DAYS.between(LocalDate.now(), cert.getExpireDate())); |
| | | } |
| | | if (employee != null) { |
| | | respVO.setEmployeeName(employee.getName()); |
| | | respVO.setEmployeeNo(employee.getEmployeeNo()); |
| | | respVO.setDeptName(employee.getDeptName()); |
| | | respVO.setPhone(employee.getPhone()); |
| | | respVO.setUserId(employee.getUserId()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ææææ¨å¯¼ç¶æï¼å·²æ³¨éä¿æä¸åï¼è¿æ â EXPIREDï¼å¨é¢è¦æå
â EXPIRINGï¼å¦å VALID |
| | | * |
| | | * @param expireDate æææ |
| | | * @param warnDays æåé¢è¦å¤©æ° |
| | | * @param current å½åç¶æï¼ç¨äºä¿æ¤ REVOKED |
| | | */ |
| | | public static String resolveStatus(LocalDate expireDate, Integer warnDays, String current) { |
| | | if (SafetyCertificateStatusEnum.REVOKED.getStatus().equals(current)) { |
| | | return SafetyCertificateStatusEnum.REVOKED.getStatus(); |
| | | } |
| | | if (expireDate == null) { |
| | | return SafetyCertificateStatusEnum.VALID.getStatus(); |
| | | } |
| | | LocalDate today = LocalDate.now(); |
| | | if (expireDate.isBefore(today)) { |
| | | return SafetyCertificateStatusEnum.EXPIRED.getStatus(); |
| | | } |
| | | int days = warnDays == null || warnDays <= 0 ? DEFAULT_WARN_DAYS : warnDays; |
| | | if (!expireDate.isAfter(today.plusDays(days))) { |
| | | return SafetyCertificateStatusEnum.EXPIRING.getStatus(); |
| | | } |
| | | return SafetyCertificateStatusEnum.VALID.getStatus(); |
| | | } |
| | | |
| | | /** |
| | | * æå»º DOï¼æè¯äººå§å/å·¥å·/é¨é¨ä»å工档æ¡å¸¦åºå¹¶è½ä¸ºå¿«ç
§ |
| | | */ |
| | | private SafetyCertificateDO buildCertificate(SafetyCertificateSaveReqVO reqVO, SafetyCertificateDO old) { |
| | | HrmEmployeeSimpleDTO employee = hrmEmployeeApi.getEmployee(reqVO.getEmployeeId()); |
| | | if (employee == null) { |
| | | throw exception(SAFETY_CERT_EMPLOYEE_NOT_EXISTS); |
| | | } |
| | | SafetyCertificateDO cert = BeanUtils.toBean(reqVO, SafetyCertificateDO.class); |
| | | cert.setEmployeeId(employee.getId()); |
| | | cert.setEmployeeName(employee.getName()); |
| | | cert.setEmployeeNo(employee.getEmployeeNo()); |
| | | cert.setDeptName(employee.getDeptName()); |
| | | cert.setCertNo(StrUtil.trim(reqVO.getCertNo())); |
| | | cert.setWarnDays(reqVO.getWarnDays() == null ? DEFAULT_WARN_DAYS : reqVO.getWarnDays()); |
| | | // 已注éç¶æä¸å
许éè¿ç¼è¾æ¹å |
| | | String currentStatus = old == null ? reqVO.getStatus() : old.getStatus(); |
| | | cert.setStatus(resolveStatus(reqVO.getExpireDate(), cert.getWarnDays(), currentStatus)); |
| | | cert.setRemark(reqVO.getRemark() == null ? "" : reqVO.getRemark().trim()); |
| | | return cert; |
| | | } |
| | | |
| | | private void validateCertificateForCreate(SafetyCertificateSaveReqVO reqVO) { |
| | | validateExpireAfterIssue(reqVO); |
| | | if (certificateMapper.selectByCertNo(StrUtil.trim(reqVO.getCertNo())) != null) { |
| | | throw exception(SAFETY_CERT_NO_DUPLICATE); |
| | | } |
| | | } |
| | | |
| | | private void validateCertificateForUpdate(SafetyCertificateSaveReqVO reqVO, SafetyCertificateDO old) { |
| | | validateExpireAfterIssue(reqVO); |
| | | SafetyCertificateDO byCertNo = certificateMapper.selectByCertNo(StrUtil.trim(reqVO.getCertNo())); |
| | | if (byCertNo != null && !byCertNo.getId().equals(old.getId())) { |
| | | throw exception(SAFETY_CERT_NO_DUPLICATE); |
| | | } |
| | | } |
| | | |
| | | private void validateExpireAfterIssue(SafetyCertificateSaveReqVO reqVO) { |
| | | if (reqVO.getIssueDate() != null && reqVO.getExpireDate() != null |
| | | && !Objects.requireNonNull(reqVO.getExpireDate()).isAfter(reqVO.getIssueDate())) { |
| | | throw exception(SAFETY_CERT_EXPIRE_BEFORE_ISSUE); |
| | | } |
| | | } |
| | | |
| | | private SafetyCertificateDO validateCertificateExists(Long id) { |
| | | SafetyCertificateDO cert = id == null ? null : certificateMapper.selectById(id); |
| | | if (cert == null) { |
| | | throw exception(SAFETY_CERT_NOT_EXISTS); |
| | | } |
| | | return cert; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.service.safety; |
| | | |
| | | import cn.hutool.core.io.IoUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.module.infra.api.file.FileApi; |
| | | import jakarta.annotation.Resource; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - ç§»å¨ç«¯éä»¶ä¸ä¼ Service |
| | | * |
| | | * <p>å·¡æ£ã鿣ãä½ä¸ç¥¨ãæ¼ç»çç¯èçç°åºæç
§ç»ä¸èµ°è¿éï¼ |
| | | * è½å° infra æä»¶åå¨ï¼è¿åå¯è®¿é® URLï¼å¤ä¸ªéä»¶éå·æ¼æ¥ååå
¥ä¸å¡è¡¨ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Service |
| | | @Slf4j |
| | | public class SafetyFileService { |
| | | |
| | | /** å个æä»¶æå¤§ 20MBï¼ææºåå¾è£ååè¶³å¤ */ |
| | | private static final long MAX_SIZE = 20L * 1024 * 1024; |
| | | /** å
许çå¾çç±»å */ |
| | | private static final List<String> ALLOWED_EXT = List.of( |
| | | "jpg", "jpeg", "png", "webp", "heic", "gif", "bmp", "pdf", "doc", "docx", "xls", "xlsx"); |
| | | |
| | | @Resource |
| | | private FileApi fileApi; |
| | | |
| | | /** |
| | | * ä¸ä¼ å个æä»¶ |
| | | * |
| | | * @param file æä»¶ |
| | | * @param bizType ä¸å¡ç±»åï¼safety/inspectionãsafety/hazard çï¼ï¼ç¨ä½åå¨ç®å½ |
| | | * @return æä»¶è®¿é® URL |
| | | */ |
| | | public String upload(MultipartFile file, String bizType) { |
| | | if (file == null || file.isEmpty()) { |
| | | throw new IllegalArgumentException("ä¸ä¼ æä»¶ä¸è½ä¸ºç©º"); |
| | | } |
| | | if (file.getSize() > MAX_SIZE) { |
| | | throw new IllegalArgumentException("å个æä»¶ä¸è½è¶
è¿ 20MB"); |
| | | } |
| | | String originalName = StrUtil.blankToDefault(file.getOriginalFilename(), "photo.jpg"); |
| | | String ext = StrUtil.subAfter(originalName, ".", true).toLowerCase(); |
| | | if (StrUtil.isNotBlank(ext) && !ALLOWED_EXT.contains(ext)) { |
| | | throw new IllegalArgumentException("䏿¯æçæä»¶ç±»åï¼" + ext); |
| | | } |
| | | byte[] content; |
| | | try { |
| | | content = IoUtil.readBytes(file.getInputStream()); |
| | | } catch (IOException e) { |
| | | throw new IllegalStateException("读åä¸ä¼ æä»¶å¤±è´¥", e); |
| | | } |
| | | String directory = StrUtil.blankToDefault(bizType, "safety") + "/" + java.time.LocalDate.now(); |
| | | return fileApi.createFile(content, originalName, directory, file.getContentType()); |
| | | } |
| | | |
| | | /** |
| | | * æ¹éä¸ä¼ ï¼ç§»å¨ç«¯ä¸æ¬¡æå¤å¼ ï¼ |
| | | * |
| | | * @return æä»¶ URL å表 |
| | | */ |
| | | public List<String> uploadBatch(List<MultipartFile> files, String bizType) { |
| | | if (files == null || files.isEmpty()) { |
| | | return List.of(); |
| | | } |
| | | if (files.size() > 9) { |
| | | throw new IllegalArgumentException("忬¡æå¤ä¸ä¼ 9 å¼ "); |
| | | } |
| | | List<String> urls = new ArrayList<>(); |
| | | for (MultipartFile file : files) { |
| | | urls.add(upload(file, bizType)); |
| | | } |
| | | return urls; |
| | | } |
| | | |
| | | /** |
| | | * å é¤éä»¶ï¼ä»éå·ä¸²éåé¤æä¸ª URLï¼ |
| | | */ |
| | | public String removeUrl(String urls, String target) { |
| | | if (StrUtil.isBlank(urls) || StrUtil.isBlank(target)) { |
| | | return urls; |
| | | } |
| | | return Arrays.stream(urls.split(",")) |
| | | .map(String::trim) |
| | | .filter(url -> !url.equals(target.trim())) |
| | | .reduce((a, b) -> a + "," + b) |
| | | .orElse(""); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 cn.iocoder.yudao.module.mes.controller.admin.safety.vo.hazard.*; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyHazardDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyHazardMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.safety.SafetyHazardLevelEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.safety.SafetyHazardSourceEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.safety.SafetyHazardStatusEnum; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | 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.*; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - 鿣ç»è®°ä¸éç¯ Service |
| | | * |
| | | * <p>宿´éç¯ï¼ä¸æ¥ â åæ´¾ â æ´æ¹ â 夿¥ï¼éè¿åéç¯ï¼ä¸éè¿éåæ´æ¹ï¼ã |
| | | * æ¯ä¸ªç¯è齿 ¡éªå½åç¶æï¼é²æ¢è·³æ¥æé夿ä½ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Service |
| | | @Validated |
| | | public class SafetyHazardService { |
| | | |
| | | private static final DateTimeFormatter CODE_DATE = DateTimeFormatter.ofPattern("yyyyMMdd"); |
| | | |
| | | @Resource |
| | | private SafetyHazardMapper hazardMapper; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | |
| | | /** |
| | | * 鿣䏿¥ï¼å«ç§»å¨ç«¯æç
§ä¸ä¼ ç photoUrlsï¼ |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Long createHazard(SafetyHazardSaveReqVO reqVO) { |
| | | reqVO.setId(null); |
| | | SafetyHazardDO hazard = BeanUtils.toBean(reqVO, SafetyHazardDO.class); |
| | | hazard.setCode(hazardMapper.selectNextCode("HZ" + LocalDate.now().format(CODE_DATE))); |
| | | hazard.setTitle(StrUtil.trim(reqVO.getTitle())); |
| | | 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()); |
| | | hazard.setStatus(SafetyHazardStatusEnum.REPORTED.getStatus()); |
| | | hazard.setRemark(reqVO.getRemark() == null ? "" : reqVO.getRemark().trim()); |
| | | hazardMapper.insert(hazard); |
| | | return hazard.getId(); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹éæ£åºç¡ä¿¡æ¯ï¼ä»
æªåæ´¾åå
许æ¹å
³é®åæ®µï¼ |
| | | */ |
| | | public void updateHazard(SafetyHazardSaveReqVO reqVO) { |
| | | SafetyHazardDO old = validateHazardExists(reqVO.getId()); |
| | | if (!SafetyHazardStatusEnum.REPORTED.getStatus().equals(old.getStatus()) |
| | | && !SafetyHazardStatusEnum.ASSIGNED.getStatus().equals(old.getStatus())) { |
| | | throw exception(SAFETY_HAZARD_STATUS_ERROR); |
| | | } |
| | | SafetyHazardDO update = BeanUtils.toBean(reqVO, SafetyHazardDO.class); |
| | | // ç¼å·ä¸ç¶æä¸å
许éè¿æ®éç¼è¾ä¿®æ¹ |
| | | update.setCode(null); |
| | | update.setStatus(null); |
| | | hazardMapper.updateById(update); |
| | | } |
| | | |
| | | /** |
| | | * åæ´¾æ´æ¹è´£ä»»äºº |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void assignHazard(SafetyHazardAssignReqVO reqVO) { |
| | | SafetyHazardDO hazard = validateHazardExists(reqVO.getId()); |
| | | if (!SafetyHazardStatusEnum.REPORTED.getStatus().equals(hazard.getStatus()) |
| | | && !SafetyHazardStatusEnum.REJECTED.getStatus().equals(hazard.getStatus())) { |
| | | throw exception(SAFETY_HAZARD_STATUS_ERROR); |
| | | } |
| | | 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.setAssigneeId(assignee.getId()); |
| | | update.setAssignee(assignee.getName()); |
| | | update.setAssignTime(LocalDateTime.now()); |
| | | update.setRectifyDeadline(reqVO.getRectifyDeadline()); |
| | | update.setStatus(SafetyHazardStatusEnum.RECTIFYING.getStatus()); |
| | | if (StrUtil.isNotBlank(reqVO.getRemark())) { |
| | | update.setRemark(reqVO.getRemark().trim()); |
| | | } |
| | | hazardMapper.updateById(update); |
| | | } |
| | | |
| | | /** |
| | | * æäº¤æ´æ¹ç»æ |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void rectifyHazard(SafetyHazardRectifyReqVO reqVO) { |
| | | SafetyHazardDO hazard = validateHazardExists(reqVO.getId()); |
| | | if (!SafetyHazardStatusEnum.RECTIFYING.getStatus().equals(hazard.getStatus()) |
| | | && !SafetyHazardStatusEnum.REJECTED.getStatus().equals(hazard.getStatus())) { |
| | | throw exception(SAFETY_HAZARD_STATUS_ERROR); |
| | | } |
| | | SafetyHazardDO update = new SafetyHazardDO(); |
| | | update.setId(hazard.getId()); |
| | | update.setRectifyDesc(reqVO.getRectifyDesc().trim()); |
| | | update.setRectifyPhotoUrls(reqVO.getRectifyPhotoUrls()); |
| | | update.setRectifyTime(LocalDateTime.now()); |
| | | update.setStatus(SafetyHazardStatusEnum.RECHECKING.getStatus()); |
| | | hazardMapper.updateById(update); |
| | | } |
| | | |
| | | /** |
| | | * 夿¥ï¼éè¿åéç¯ï¼ä¸éè¿éåæ´æ¹ã |
| | | * |
| | | * <p>æ ¡éªæ´æ¹äººä¸å¤æ¥äººä¸è½æ¯åä¸äººï¼ä¿è¯éç¯ç两级å离ã</p> |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void recheckHazard(SafetyHazardRecheckReqVO reqVO) { |
| | | SafetyHazardDO hazard = validateHazardExists(reqVO.getId()); |
| | | if (!SafetyHazardStatusEnum.RECHECKING.getStatus().equals(hazard.getStatus())) { |
| | | throw exception(SAFETY_HAZARD_STATUS_ERROR); |
| | | } |
| | | 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.setRecheckerId(rechecker.getId()); |
| | | update.setRechecker(rechecker.getName()); |
| | | update.setRecheckTime(LocalDateTime.now()); |
| | | update.setRecheckResult(reqVO.getRecheckResult()); |
| | | update.setRecheckRemark(reqVO.getRecheckRemark()); |
| | | if (passed) { |
| | | update.setStatus(SafetyHazardStatusEnum.CLOSED.getStatus()); |
| | | update.setCloseTime(LocalDateTime.now()); |
| | | } else { |
| | | update.setStatus(SafetyHazardStatusEnum.REJECTED.getStatus()); |
| | | } |
| | | hazardMapper.updateById(update); |
| | | } |
| | | |
| | | public void deleteHazard(Long id) { |
| | | validateHazardExists(id); |
| | | hazardMapper.deleteById(id); |
| | | } |
| | | |
| | | public SafetyHazardDO getHazard(Long id) { |
| | | return validateHazardExists(id); |
| | | } |
| | | |
| | | public PageResult<SafetyHazardDO> getHazardPage(SafetyHazardPageReqVO reqVO) { |
| | | reqVO.normalizeTimeRange(); |
| | | return hazardMapper.selectPage(reqVO); |
| | | } |
| | | |
| | | /** |
| | | * æ¹éå填䏿¥äºº / æ´æ¹è´£ä»»äºº / 夿¥äººçææ°å§å |
| | | */ |
| | | 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) { |
| | | respVO.setLevelName(SafetyHazardLevelEnum.getNameByLevel(hazard.getLevel())); |
| | | respVO.setSourceName(SafetyHazardSourceEnum.getNameBySource(hazard.getSource())); |
| | | respVO.setStatusName(SafetyHazardStatusEnum.getNameByStatus(hazard.getStatus())); |
| | | respVO.setRecheckResultName(switch (StrUtil.blankToDefault(hazard.getRecheckResult(), "")) { |
| | | case "PASSED" -> "éè¿"; |
| | | case "REJECTED" -> "ä¸éè¿"; |
| | | default -> ""; |
| | | }); |
| | | boolean overdue = hazard.getRectifyDeadline() != null |
| | | && hazard.getRectifyDeadline().isBefore(LocalDate.now()) |
| | | && !SafetyHazardStatusEnum.isFinished(hazard.getStatus()); |
| | | respVO.setOverdue(overdue); |
| | | } |
| | | |
| | | private SafetyHazardDO validateHazardExists(Long id) { |
| | | SafetyHazardDO hazard = id == null ? null : hazardMapper.selectById(id); |
| | | if (hazard == null) { |
| | | throw exception(SAFETY_HAZARD_NOT_EXISTS); |
| | | } |
| | | return hazard; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 cn.iocoder.yudao.module.mes.controller.admin.safety.vo.inspection.*; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyInspectionDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyInspectionPointDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyInspectionMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyInspectionPointMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.safety.SafetyInspectCycleEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.safety.SafetyInspectionPointTypeEnum; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static cn.iocoder.yudao.module.mes.enums.SafetyErrorCodeConstants.*; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å·¡æ£ç¹ä½ä¸å·¡æ£è®°å½ Service |
| | | * |
| | | * <p>è¦çé«åé
çµå®¤ãæºç»åºçæ¥å¸¸å®å
¨å·¡æ£ãå·¡æ£åç°å¼å¸¸æ¶å¯ç´æ¥è½¬éæ£ä¸æ¥ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Service |
| | | @Validated |
| | | public class SafetyInspectionService { |
| | | |
| | | @Resource |
| | | private SafetyInspectionPointMapper pointMapper; |
| | | @Resource |
| | | private SafetyInspectionMapper inspectionMapper; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | |
| | | // ==================== å·¡æ£ç¹ä½ ==================== |
| | | |
| | | public Long createPoint(SafetyInspectionPointSaveReqVO reqVO) { |
| | | reqVO.setId(null); |
| | | String code = StrUtil.trim(reqVO.getCode()); |
| | | if (pointMapper.selectByCode(code) != null) { |
| | | throw exception(SAFETY_POINT_CODE_DUPLICATE); |
| | | } |
| | | SafetyInspectionPointDO point = BeanUtils.toBean(reqVO, SafetyInspectionPointDO.class); |
| | | 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(); |
| | | } |
| | | |
| | | public void updatePoint(SafetyInspectionPointSaveReqVO reqVO) { |
| | | SafetyInspectionPointDO old = validatePointExists(reqVO.getId()); |
| | | String code = StrUtil.trim(reqVO.getCode()); |
| | | SafetyInspectionPointDO byCode = pointMapper.selectByCode(code); |
| | | if (byCode != null && !byCode.getId().equals(old.getId())) { |
| | | throw exception(SAFETY_POINT_CODE_DUPLICATE); |
| | | } |
| | | 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 void deletePoint(Long id) { |
| | | validatePointExists(id); |
| | | pointMapper.deleteById(id); |
| | | } |
| | | |
| | | public SafetyInspectionPointDO getPoint(Long id) { |
| | | return validatePointExists(id); |
| | | } |
| | | |
| | | public PageResult<SafetyInspectionPointDO> getPointPage(SafetyInspectionPointPageReqVO reqVO) { |
| | | return pointMapper.selectPage(reqVO); |
| | | } |
| | | |
| | | /** |
| | | * å¯ç¨ä¸çå·¡æ£ç¹ä½å表ï¼ç§»å¨ç«¯å·¡æ£éæ©ç¨ï¼ |
| | | */ |
| | | 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) { |
| | | respVO.setPointTypeName(SafetyInspectionPointTypeEnum.getNameByType(point.getPointType())); |
| | | respVO.setInspectCycleName(SafetyInspectCycleEnum.getNameByCycle(point.getInspectCycle())); |
| | | } |
| | | |
| | | // ==================== å·¡æ£è®°å½ ==================== |
| | | |
| | | public Long createInspection(SafetyInspectionSaveReqVO reqVO) { |
| | | reqVO.setId(null); |
| | | SafetyInspectionPointDO point = validatePointExists(reqVO.getPointId()); |
| | | if (Integer.valueOf(1).equals(point.getStatus())) { |
| | | throw exception(SAFETY_POINT_DISABLED); |
| | | } |
| | | SafetyInspectionDO inspection = buildInspection(reqVO, point); |
| | | inspectionMapper.insert(inspection); |
| | | return inspection.getId(); |
| | | } |
| | | |
| | | public void updateInspection(SafetyInspectionSaveReqVO reqVO) { |
| | | SafetyInspectionDO old = validateInspectionExists(reqVO.getId()); |
| | | SafetyInspectionPointDO point = validatePointExists(reqVO.getPointId()); |
| | | SafetyInspectionDO inspection = buildInspection(reqVO, point); |
| | | inspection.setId(old.getId()); |
| | | inspectionMapper.updateById(inspection); |
| | | } |
| | | |
| | | public void deleteInspection(Long id) { |
| | | validateInspectionExists(id); |
| | | inspectionMapper.deleteById(id); |
| | | } |
| | | |
| | | public SafetyInspectionDO getInspection(Long id) { |
| | | return validateInspectionExists(id); |
| | | } |
| | | |
| | | public PageResult<SafetyInspectionDO> getInspectionPage(SafetyInspectionPageReqVO reqVO) { |
| | | return inspectionMapper.selectPage(reqVO); |
| | | } |
| | | |
| | | private SafetyInspectionDO buildInspection(SafetyInspectionSaveReqVO reqVO, SafetyInspectionPointDO point) { |
| | | SafetyInspectionDO inspection = BeanUtils.toBean(reqVO, SafetyInspectionDO.class); |
| | | inspection.setPointId(point.getId()); |
| | | inspection.setPointName(point.getName()); |
| | | inspection.setPointType(point.getPointType()); |
| | | 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()); |
| | | inspection.setRemark(reqVO.getRemark() == null ? "" : reqVO.getRemark().trim()); |
| | | 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); |
| | | return latest == null ? null : latest.getInspectTime(); |
| | | } |
| | | |
| | | private SafetyInspectionPointDO validatePointExists(Long id) { |
| | | SafetyInspectionPointDO point = id == null ? null : pointMapper.selectById(id); |
| | | if (point == null) { |
| | | throw exception(SAFETY_POINT_NOT_EXISTS); |
| | | } |
| | | return point; |
| | | } |
| | | |
| | | private SafetyInspectionDO validateInspectionExists(Long id) { |
| | | SafetyInspectionDO inspection = id == null ? null : inspectionMapper.selectById(id); |
| | | if (inspection == null) { |
| | | throw exception(SAFETY_INSPECTION_NOT_EXISTS); |
| | | } |
| | | return inspection; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.service.safety; |
| | | |
| | | import cn.idev.excel.FastExcelFactory; |
| | | import cn.iocoder.yudao.framework.common.util.http.HttpUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.ledger.SafetyLedgerExportReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.*; |
| | | import cn.iocoder.yudao.module.mes.enums.safety.*; |
| | | import jakarta.annotation.Resource; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.io.IOException; |
| | | import java.time.LocalDate; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static cn.iocoder.yudao.module.mes.enums.SafetyErrorCodeConstants.SAFETY_LEDGER_DATE_RANGE_INVALID; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - çµåè¡ä¸æ ååå°è´¦å¯¼åº Service |
| | | * |
| | | * <p>æãå
¨å¥ãå¯¼åºæ¶ä¸æ¬¡çæå¤ Sheet å·¥ä½ç°¿ï¼è¦çå®å
¨æ ååæ£æ¥æéçå
¨é¨å°è´¦ï¼ |
| | | * ç»ç»æ¶æãç¹ç§ä½ä¸è¯ãå·¡æ£è®°å½ã鿣å°è´¦ãä½ä¸ç¥¨ãçæ¤è®°å½ãç©èµå°è´¦ã |
| | | * åºå
¥åºæµæ°´ãå¹è®è®°å½ãæ¼ç»è®°å½ãäºæ
ç»è®°ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Service |
| | | public class SafetyLedgerExportService { |
| | | |
| | | @Resource |
| | | private SafetyOrgService orgService; |
| | | @Resource |
| | | private SafetyCertificateService certificateService; |
| | | @Resource |
| | | private SafetyInspectionService inspectionService; |
| | | @Resource |
| | | private SafetyHazardService hazardService; |
| | | @Resource |
| | | private SafetyWorkPermitService permitService; |
| | | @Resource |
| | | private SafetyMaterialService materialService; |
| | | @Resource |
| | | private SafetyTrainingService trainingService; |
| | | |
| | | /** |
| | | * å¯¼åºæ ååå°è´¦ |
| | | */ |
| | | public void export(SafetyLedgerExportReqVO reqVO, HttpServletResponse response) throws IOException { |
| | | LocalDate start = reqVO.getStartDate(); |
| | | LocalDate end = reqVO.getEndDate(); |
| | | if (start != null && end != null && start.isAfter(end)) { |
| | | throw exception(SAFETY_LEDGER_DATE_RANGE_INVALID); |
| | | } |
| | | String type = reqVO.getType() == null ? "ALL" : reqVO.getType(); |
| | | List<Sheet> sheets = new ArrayList<>(); |
| | | if ("ALL".equals(type) || "CERT".equals(type)) { |
| | | sheets.add(certSheet()); |
| | | } |
| | | if ("ALL".equals(type) || "INSPECTION".equals(type)) { |
| | | sheets.add(inspectionSheet(start, end)); |
| | | } |
| | | if ("ALL".equals(type) || "HAZARD".equals(type)) { |
| | | sheets.add(hazardSheet(start, end)); |
| | | } |
| | | if ("ALL".equals(type) || "PERMIT".equals(type)) { |
| | | sheets.add(permitSheet(start, end)); |
| | | sheets.add(monitorSheet()); |
| | | } |
| | | if ("ALL".equals(type) || "MATERIAL".equals(type)) { |
| | | sheets.add(materialSheet()); |
| | | sheets.add(stockSheet(start, end)); |
| | | } |
| | | if ("ALL".equals(type) || "TRAINING".equals(type)) { |
| | | sheets.add(trainingSheet(start, end)); |
| | | } |
| | | if ("ALL".equals(type) || "DRILL".equals(type)) { |
| | | sheets.add(drillSheet(start, end)); |
| | | } |
| | | if ("ALL".equals(type) || "ACCIDENT".equals(type)) { |
| | | sheets.add(accidentSheet(start, end)); |
| | | } |
| | | String filename = switch (type) { |
| | | case "CERT" -> "ç¹ç§ä½ä¸è¯å°è´¦.xlsx"; |
| | | case "INSPECTION" -> "å®å
¨å·¡æ£å°è´¦.xlsx"; |
| | | case "HAZARD" -> "鿣å°è´¦.xlsx"; |
| | | case "PERMIT" -> "é«å±ä½ä¸ç¥¨å°è´¦.xlsx"; |
| | | case "MATERIAL" -> "åºæ¥ç©èµå°è´¦.xlsx"; |
| | | case "TRAINING" -> "å®å
¨å¹è®å°è´¦.xlsx"; |
| | | case "DRILL" -> "æ¶é²æ¼ç»å°è´¦.xlsx"; |
| | | case "ACCIDENT" -> "äºæ
ç»è®°å°è´¦.xlsx"; |
| | | default -> "å®å
¨ç产æ ååå°è´¦.xlsx"; |
| | | }; |
| | | write(response, filename, sheets); |
| | | } |
| | | |
| | | // ==================== å Sheet ==================== |
| | | |
| | | private Sheet certSheet() { |
| | | List<String> headers = List.of("æè¯äºº", "å·¥å·", "é¨é¨", "è¯ä»¶ç±»å", "è¯ä»¶ç¼å·", "åè¯æºå
³", |
| | | "åè¯æ¥æ", "æææè³", "䏿¬¡å¤å®¡", "ç¶æ", "é¢è¦å¤©æ°", "夿³¨"); |
| | | var pageReqVO = new cn.iocoder.yudao.module.mes.controller.admin.safety.vo.cert.SafetyCertificatePageReqVO(); |
| | | pageReqVO.setPageNo(1); |
| | | pageReqVO.setPageSize(50_000); |
| | | var certs = certificateService.getCertificatePage(pageReqVO).getList(); |
| | | // å¯¼åºæ¶ç¨å工档æ¡çææ°å§å/å·¥å·/é¨é¨ |
| | | certificateService.fillEmployeeInfo(certs); |
| | | List<List<Object>> rows = certs.stream() |
| | | .map(c -> Arrays.<Object>asList( |
| | | str(c.getEmployeeName()), str(c.getEmployeeNo()), str(c.getDeptName()), |
| | | SafetyCertificateTypeEnum.getNameByType(c.getCertType()), str(c.getCertNo()), |
| | | str(c.getIssuer()), date(c.getIssueDate()), date(c.getExpireDate()), |
| | | date(c.getReviewDate()), |
| | | SafetyCertificateStatusEnum.getNameByStatus(SafetyCertificateService.resolveStatus( |
| | | c.getExpireDate(), c.getWarnDays(), c.getStatus())), |
| | | Objects.toString(c.getWarnDays(), ""), str(c.getRemark()))) |
| | | .toList(); |
| | | return new Sheet("ç¹ç§ä½ä¸è¯å°è´¦", headers, rows); |
| | | } |
| | | |
| | | private Sheet inspectionSheet(LocalDate start, LocalDate end) { |
| | | List<String> headers = List.of("å·¡æ£æ¶é´", "ç¹ä½åç§°", "ç¹ä½ç±»å", "å·¡æ£äºº", "ç»æ", "å·¡æ£æ
åµ", "åç°éæ£æ°"); |
| | | var reqVO = new cn.iocoder.yudao.module.mes.controller.admin.safety.vo.inspection.SafetyInspectionPageReqVO(); |
| | | reqVO.setPageNo(1); |
| | | reqVO.setPageSize(50_000); |
| | | if (start != null && end != null) { |
| | | reqVO.setInspectTime(new java.time.LocalDateTime[]{start.atStartOfDay(), end.atTime(23, 59, 59)}); |
| | | } |
| | | 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()), |
| | | str(i.getInspector()), |
| | | "NORMAL".equals(i.getResult()) ? "æ£å¸¸" : "å¼å¸¸", |
| | | str(i.getContent()), Objects.toString(i.getHazardCount(), "0"))) |
| | | .toList(); |
| | | return new Sheet("å®å
¨å·¡æ£å°è´¦", headers, rows); |
| | | } |
| | | |
| | | private Sheet hazardSheet(LocalDate start, LocalDate end) { |
| | | List<String> headers = List.of("鿣ç¼å·", "æ é¢", "ç级", "æ¥æº", "ä½ç½®", "䏿¥äºº", "䏿¥æ¶é´", |
| | | "æ´æ¹è´£ä»»äºº", "æ´æ¹æé", "æ´æ¹æªæ½", "æ´æ¹æ¶é´", "夿¥äºº", "夿¥æ¶é´", "夿¥ç»è®º", "ç¶æ", "éç¯æ¶é´"); |
| | | var reqVO = new cn.iocoder.yudao.module.mes.controller.admin.safety.vo.hazard.SafetyHazardPageReqVO(); |
| | | reqVO.setPageNo(1); |
| | | reqVO.setPageSize(50_000); |
| | | if (start != null && end != null) { |
| | | reqVO.setReportTime(new java.time.LocalDateTime[]{start.atStartOfDay(), end.atTime(23, 59, 59)}); |
| | | } |
| | | 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()), |
| | | SafetyHazardSourceEnum.getNameBySource(h.getSource()), |
| | | str(h.getLocation()), str(h.getReporter()), dateTime(h.getReportTime()), |
| | | str(h.getAssignee()), date(h.getRectifyDeadline()), str(h.getRectifyDesc()), |
| | | dateTime(h.getRectifyTime()), str(h.getRechecker()), dateTime(h.getRecheckTime()), |
| | | "PASSED".equals(str(h.getRecheckResult())) ? "éè¿" |
| | | : "REJECTED".equals(str(h.getRecheckResult())) ? "ä¸éè¿" : "", |
| | | SafetyHazardStatusEnum.getNameByStatus(h.getStatus()), dateTime(h.getCloseTime()))) |
| | | .toList(); |
| | | return new Sheet("鿣å°è´¦", headers, rows); |
| | | } |
| | | |
| | | private Sheet permitSheet(LocalDate start, LocalDate end) { |
| | | List<String> headers = List.of("ä½ä¸ç¥¨ç¼å·", "ä½ä¸ç±»å", "ä½ä¸åç§°", "ä½ä¸åºå", "ä½ä¸å°ç¹", "ç³è¯·äºº", |
| | | "ç³è¯·æ¶é´", "计åå¼å§", "计åç»æ", "å®é
å¼å§", "å®é
ç»æ", "é£é©ç级", "çæ¤äºº", |
| | | "审æ¹äºº", "å®¡æ¹æ¶é´", "å®¡æ¹æè§", "ç¶æ"); |
| | | var reqVO = new cn.iocoder.yudao.module.mes.controller.admin.safety.vo.permit.SafetyWorkPermitPageReqVO(); |
| | | reqVO.setPageNo(1); |
| | | reqVO.setPageSize(50_000); |
| | | if (start != null && end != null) { |
| | | reqVO.setPlanStartTime(new java.time.LocalDateTime[]{start.atStartOfDay(), end.atTime(23, 59, 59)}); |
| | | } |
| | | 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()), |
| | | str(p.getApplicant()), dateTime(p.getApplyTime()), dateTime(p.getPlanStartTime()), |
| | | dateTime(p.getPlanEndTime()), dateTime(p.getActualStartTime()), dateTime(p.getActualEndTime()), |
| | | SafetyRiskLevelEnum.getNameByLevel(p.getRiskLevel()), str(p.getGuardian()), |
| | | str(p.getApprover()), dateTime(p.getApproveTime()), str(p.getApproveComment()), |
| | | SafetyPermitStatusEnum.getNameByStatus(p.getStatus()))) |
| | | .toList(); |
| | | return new Sheet("é«å±ä½ä¸ç¥¨å°è´¦", headers, rows); |
| | | } |
| | | |
| | | private Sheet monitorSheet() { |
| | | List<String> headers = List.of("ä½ä¸ç¥¨ç¼å·", "çæ¤æ¶é´", "çæ¤äºº", "çæ¤å
容", "å¼å¸¸æ
åµ"); |
| | | var reqVO = new cn.iocoder.yudao.module.mes.controller.admin.safety.vo.permit.SafetyWorkPermitPageReqVO(); |
| | | reqVO.setPageNo(1); |
| | | reqVO.setPageSize(5_000); |
| | | List<List<Object>> rows = new ArrayList<>(); |
| | | for (SafetyWorkPermitDO permit : permitService.getPermitPage(reqVO).getList()) { |
| | | 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()))); |
| | | } |
| | | } |
| | | return new Sheet("ä½ä¸çæ¤è®°å½", headers, rows); |
| | | } |
| | | |
| | | private Sheet materialSheet() { |
| | | List<String> headers = List.of("ç©èµç¼ç ", "ç©èµåç§°", "ç±»å«", "è§æ ¼åå·", "åä½", "åºåæ°é", |
| | | "å®å
¨åºå", "åæ¾ä½ç½®", "æææè³", "ä¿ç®¡äºº", "ç¶æ"); |
| | | var reqVO = new cn.iocoder.yudao.module.mes.controller.admin.safety.vo.material.SafetyMaterialPageReqVO(); |
| | | reqVO.setPageNo(1); |
| | | reqVO.setPageSize(50_000); |
| | | 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()), |
| | | str(m.getSpec()), str(m.getUnit()), number(m.getStockQty()), number(m.getSafeStock()), |
| | | str(m.getStorageLocation()), date(m.getExpireDate()), str(m.getManager()), |
| | | Integer.valueOf(0).equals(m.getStatus()) ? "å¯ç¨" : "åç¨")) |
| | | .toList(); |
| | | return new Sheet("åºæ¥ç©èµå°è´¦", headers, rows); |
| | | } |
| | | |
| | | private Sheet stockSheet(LocalDate start, LocalDate end) { |
| | | List<String> headers = List.of("ä¸å¡æ¥æ", "ç©èµåç§°", "ç±»å«", "ä¸å¡ç±»å", "æ°é", |
| | | "æä½ååºå", "æä½ååºå", "ç»å人", "é¢ç¨äºº", "ç¨é/å»å"); |
| | | var reqVO = new cn.iocoder.yudao.module.mes.controller.admin.safety.vo.material.SafetyMaterialStockPageReqVO(); |
| | | reqVO.setPageNo(1); |
| | | reqVO.setPageSize(50_000); |
| | | if (start != null && end != null) { |
| | | reqVO.setBizDate(new LocalDate[]{start, end}); |
| | | } |
| | | List<List<Object>> rows = materialService.getStockPage(reqVO).getList().stream() |
| | | .map(s -> Arrays.<Object>asList( |
| | | date(s.getBizDate()), str(s.getMaterialName()), |
| | | SafetyMaterialCategoryEnum.getNameByCategory(s.getCategory()), |
| | | "IN".equals(s.getBizType()) ? "å
¥åº" : "åºåº", |
| | | number(s.getQuantity()), number(s.getStockBefore()), number(s.getStockAfter()), |
| | | str(s.getOperator()), str(s.getReceiver()), str(s.getPurpose()))) |
| | | .toList(); |
| | | return new Sheet("ç©èµåºå
¥åºæµæ°´", headers, rows); |
| | | } |
| | | |
| | | private Sheet trainingSheet(LocalDate start, LocalDate end) { |
| | | List<String> headers = List.of("å¹è®æ¥æ", "å¹è®ä¸»é¢", "å¹è®ç±»å", "妿¶", "讲å¸/ç»ç»äºº", |
| | | "å¹è®å°ç¹", "åå 人æ°", "å¹è®å
容", "èæ ¸æ
åµ"); |
| | | 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()), |
| | | number(t.getDurationHours()), str(t.getTrainer()), str(t.getLocation()), |
| | | Objects.toString(t.getParticipantCount(), "0"), |
| | | str(t.getContent()), str(t.getExamResult()))) |
| | | .toList(); |
| | | return new Sheet("å®å
¨å¹è®å°è´¦", headers, rows); |
| | | } |
| | | |
| | | private Sheet drillSheet(LocalDate start, LocalDate end) { |
| | | List<String> headers = List.of("æ¼ç»æ¥æ", "æ¼ç»åç§°", "æ¼ç»ç±»å", "å°ç¹", "ç»ç»äºº", |
| | | "åå 人æ°", "æ¶é¿(åé)", "æ¼ç»è¿ç¨", "æ»ç»ä¸æ¹è¿"); |
| | | 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()), |
| | | str(d.getOrganizer()), Objects.toString(d.getParticipantCount(), "0"), |
| | | Objects.toString(d.getDurationMinutes(), ""), |
| | | str(d.getProcessDesc()), str(d.getSummary()))) |
| | | .toList(); |
| | | return new Sheet("æ¶é²æ¼ç»å°è´¦", headers, rows); |
| | | } |
| | | |
| | | private Sheet accidentSheet(LocalDate start, LocalDate end) { |
| | | List<String> headers = List.of("äºæ
ç¼å·", "äºæ
åç§°", "äºæ
ç±»å", "ç级", "åçæ¶é´", "åçå°ç¹", |
| | | "伤亡æ
åµ", "ç»æµæå¤±(å
)", "äºæ
ç»è¿", "åå åæ", "å¤çæªæ½", "ç¶æ"); |
| | | 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()), |
| | | SafetyAccidentLevelEnum.getNameByLevel(a.getLevel()), |
| | | dateTime(a.getOccurTime()), str(a.getLocation()), str(a.getCasualtyDesc()), |
| | | number(a.getEconomicLoss()), str(a.getDescription()), str(a.getCauseAnalysis()), |
| | | str(a.getMeasures()), SafetyAccidentStatusEnum.getNameByStatus(a.getStatus()))) |
| | | .toList(); |
| | | return new Sheet("äºæ
ç»è®°å°è´¦", headers, rows); |
| | | } |
| | | |
| | | // ==================== å·¥å
·æ¹æ³ ==================== |
| | | |
| | | private static String str(String value) { |
| | | return value == null ? "" : value; |
| | | } |
| | | |
| | | private static String date(LocalDate value) { |
| | | return value == null ? "" : value.toString(); |
| | | } |
| | | |
| | | private static String dateTime(java.time.LocalDateTime value) { |
| | | return value == null ? "" : value.toString().replace('T', ' '); |
| | | } |
| | | |
| | | private static String number(java.math.BigDecimal value) { |
| | | return value == null ? "" : value.stripTrailingZeros().toPlainString(); |
| | | } |
| | | |
| | | private record Sheet(String name, List<String> headers, List<List<Object>> rows) { |
| | | } |
| | | |
| | | private void write(HttpServletResponse response, String filename, List<Sheet> sheets) throws IOException { |
| | | response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); |
| | | response.setHeader("Content-Disposition", "attachment;filename=" + HttpUtils.encodeUtf8(filename)); |
| | | try (var writer = FastExcelFactory.write(response.getOutputStream()).autoCloseStream(false).build()) { |
| | | for (int i = 0; i < sheets.size(); i++) { |
| | | Sheet sheet = sheets.get(i); |
| | | writer.write(sheet.rows(), FastExcelFactory.writerSheet(i, sheet.name()) |
| | | .head(sheet.headers().stream().map(List::of).toList()).build()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 cn.iocoder.yudao.module.mes.controller.admin.safety.vo.material.*; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyMaterialDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyMaterialStockDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyMaterialMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyMaterialStockMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.safety.SafetyMaterialCategoryEnum; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.util.List; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static cn.iocoder.yudao.module.mes.enums.SafetyErrorCodeConstants.*; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - åºæ¥ç©èµå°è´¦ä¸åºå
¥åº Service |
| | | * |
| | | * <p>è¦ççµåç»ç¼ç¨å
·ãå±ååãæ¶é²ç©èµãåºåºæ¶è¡éæ ¡éªåºåï¼é¿å
并忣å为è´ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Service |
| | | @Validated |
| | | public class SafetyMaterialService { |
| | | |
| | | @Resource |
| | | private SafetyMaterialMapper materialMapper; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | @Resource |
| | | private SafetyMaterialStockMapper stockMapper; |
| | | |
| | | // ==================== ç©èµå°è´¦ ==================== |
| | | |
| | | public Long createMaterial(SafetyMaterialSaveReqVO reqVO) { |
| | | reqVO.setId(null); |
| | | String code = StrUtil.trim(reqVO.getCode()); |
| | | if (materialMapper.selectByCode(code) != null) { |
| | | throw exception(SAFETY_MATERIAL_CODE_DUPLICATE); |
| | | } |
| | | SafetyMaterialDO material = BeanUtils.toBean(reqVO, SafetyMaterialDO.class); |
| | | 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); |
| | | return material.getId(); |
| | | } |
| | | |
| | | public void updateMaterial(SafetyMaterialSaveReqVO reqVO) { |
| | | SafetyMaterialDO old = validateMaterialExists(reqVO.getId()); |
| | | String code = StrUtil.trim(reqVO.getCode()); |
| | | SafetyMaterialDO byCode = materialMapper.selectByCode(code); |
| | | if (byCode != null && !byCode.getId().equals(old.getId())) { |
| | | throw exception(SAFETY_MATERIAL_CODE_DUPLICATE); |
| | | } |
| | | 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); |
| | | } |
| | | |
| | | public void deleteMaterial(Long id) { |
| | | validateMaterialExists(id); |
| | | materialMapper.deleteById(id); |
| | | } |
| | | |
| | | public SafetyMaterialDO getMaterial(Long id) { |
| | | return validateMaterialExists(id); |
| | | } |
| | | |
| | | public PageResult<SafetyMaterialDO> getMaterialPage(SafetyMaterialPageReqVO reqVO) { |
| | | 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(); |
| | | BigDecimal safe = material.getSafeStock() == null ? BigDecimal.ZERO : material.getSafeStock(); |
| | | respVO.setBelowSafeStock(safe.signum() > 0 && stock.compareTo(safe) < 0); |
| | | if (material.getExpireDate() != null) { |
| | | respVO.setExpireRemainingDays(ChronoUnit.DAYS.between(LocalDate.now(), material.getExpireDate())); |
| | | } |
| | | } |
| | | |
| | | // ==================== åºå
¥åº ==================== |
| | | |
| | | /** |
| | | * åºå
¥åºç»è®°ï¼è¡é读ååºå â 计ç®åå¨ â åæµæ°´ â åååºå |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Long createStock(SafetyMaterialStockSaveReqVO reqVO) { |
| | | SafetyMaterialDO material = materialMapper.selectByIdForUpdate(reqVO.getMaterialId()); |
| | | if (material == null) { |
| | | throw exception(SAFETY_MATERIAL_NOT_EXISTS); |
| | | } |
| | | BigDecimal before = material.getStockQty() == null ? BigDecimal.ZERO : material.getStockQty(); |
| | | boolean inbound = "IN".equals(reqVO.getBizType()); |
| | | BigDecimal after = inbound ? before.add(reqVO.getQuantity()) : before.subtract(reqVO.getQuantity()); |
| | | if (!inbound && after.signum() < 0) { |
| | | throw exception(SAFETY_MATERIAL_STOCK_NOT_ENOUGH); |
| | | } |
| | | SafetyMaterialStockDO stock = BeanUtils.toBean(reqVO, SafetyMaterialStockDO.class); |
| | | stock.setId(null); |
| | | stock.setMaterialName(material.getName()); |
| | | stock.setCategory(material.getCategory()); |
| | | stock.setQuantity(reqVO.getQuantity()); |
| | | stock.setStockBefore(before); |
| | | stock.setStockAfter(after); |
| | | stock.setBizDate(reqVO.getBizDate() == null ? LocalDate.now() : reqVO.getBizDate()); |
| | | stock.setOperator(StrUtil.trim(reqVO.getOperator())); |
| | | stockMapper.insert(stock); |
| | | |
| | | SafetyMaterialDO update = new SafetyMaterialDO(); |
| | | update.setId(material.getId()); |
| | | update.setStockQty(after); |
| | | materialMapper.updateById(update); |
| | | return stock.getId(); |
| | | } |
| | | |
| | | public PageResult<SafetyMaterialStockDO> getStockPage(SafetyMaterialStockPageReqVO reqVO) { |
| | | return stockMapper.selectPage(reqVO); |
| | | } |
| | | |
| | | public static void fillStockDisplay(SafetyMaterialStockDO stock, SafetyMaterialStockRespVO respVO) { |
| | | respVO.setCategoryName(SafetyMaterialCategoryEnum.getNameByCategory(stock.getCategory())); |
| | | respVO.setBizTypeName("IN".equals(stock.getBizType()) ? "å
¥åº" : "åºåº"); |
| | | } |
| | | |
| | | /** |
| | | * é¢è¦æ¸
åï¼ä½äºå®å
¨åºåçç©èµ |
| | | */ |
| | | public List<SafetyMaterialDO> getBelowSafeStockList() { |
| | | return materialMapper.selectBelowSafeStock(); |
| | | } |
| | | |
| | | /** |
| | | * é¢è¦æ¸
åï¼æææä¸´è¿ï¼é»è®¤ 30 天å
ï¼çç©èµ |
| | | */ |
| | | public List<SafetyMaterialDO> getExpiringList(Integer days) { |
| | | int warnDays = days == null || days <= 0 ? 30 : days; |
| | | return materialMapper.selectExpiringBefore(LocalDate.now().plusDays(warnDays)); |
| | | } |
| | | |
| | | private SafetyMaterialDO validateMaterialExists(Long id) { |
| | | SafetyMaterialDO material = id == null ? null : materialMapper.selectById(id); |
| | | if (material == null) { |
| | | throw exception(SAFETY_MATERIAL_NOT_EXISTS); |
| | | } |
| | | return material; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.service.safety; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.org.SafetyOrgRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.org.SafetyOrgSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyOrgDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyOrgMapper; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | 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.*; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å®å
¨ç»ç»æ¶æ Service |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Service |
| | | @Validated |
| | | public class SafetyOrgService { |
| | | |
| | | @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(); |
| | | } |
| | | |
| | | public void updateOrg(SafetyOrgSaveReqVO reqVO) { |
| | | validateOrgExists(reqVO.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) { |
| | | validateOrgExists(id); |
| | | if (safetyOrgMapper.selectCountByParentId(id) > 0) { |
| | | throw exception(SAFETY_ORG_HAS_CHILDREN); |
| | | } |
| | | safetyOrgMapper.deleteById(id); |
| | | } |
| | | |
| | | public SafetyOrgDO getOrg(Long id) { |
| | | return validateOrgExists(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<>()))); |
| | | List<SafetyOrgRespVO> roots = grouped.getOrDefault(0L, new ArrayList<>()); |
| | | if (CollUtil.isEmpty(roots)) { |
| | | // å
¼å®¹ parentId 为空çèæ°æ® |
| | | roots = nodes.stream().filter(n -> n.getParentId() == null || n.getParentId() == 0L).toList(); |
| | | } |
| | | return roots; |
| | | } |
| | | |
| | | private void validateParent(Long parentId, Long selfId) { |
| | | if (parentId == null || parentId == 0L) { |
| | | return; |
| | | } |
| | | if (parentId.equals(selfId)) { |
| | | throw exception(SAFETY_ORG_PARENT_IS_SELF); |
| | | } |
| | | SafetyOrgDO parent = safetyOrgMapper.selectById(parentId); |
| | | if (parent == null) { |
| | | throw exception(SAFETY_ORG_PARENT_NOT_EXISTS); |
| | | } |
| | | // 鲿¢æç¶èç¹æå°èªå·±çååä¸ï¼å½¢æç¯ |
| | | if (selfId != null && isDescendant(parentId, selfId)) { |
| | | throw exception(SAFETY_ORG_PARENT_IS_CHILD); |
| | | } |
| | | } |
| | | |
| | | private boolean isDescendant(Long candidateId, Long ancestorId) { |
| | | Long current = candidateId; |
| | | int guard = 0; |
| | | while (current != null && current != 0L && guard++ < 100) { |
| | | if (current.equals(ancestorId)) { |
| | | return true; |
| | | } |
| | | SafetyOrgDO node = safetyOrgMapper.selectById(current); |
| | | if (node == null) { |
| | | return false; |
| | | } |
| | | current = node.getParentId(); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | private SafetyOrgDO validateOrgExists(Long id) { |
| | | if (id == null) { |
| | | throw exception(SAFETY_ORG_NOT_EXISTS); |
| | | } |
| | | SafetyOrgDO org = safetyOrgMapper.selectById(id); |
| | | if (org == null) { |
| | | throw exception(SAFETY_ORG_NOT_EXISTS); |
| | | } |
| | | return org; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.service.safety; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.*; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.safety.*; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.ledger.SafetyOverviewRespVO; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.YearMonth; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.LinkedHashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - æ»è§ç»è®¡ Service |
| | | * |
| | | * <p>æä¾é¦é¡µ KPI ä¸è¶å¿æ°æ®ï¼å
¨é¨åºäºç°æå°è´¦å®æ¶è®¡ç®ï¼ä¸ååä½ç»è®¡è¡¨ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Service |
| | | public class SafetyOverviewService { |
| | | |
| | | private static final DateTimeFormatter MONTH_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM"); |
| | | /** è¶å¿å±ç¤ºææ° */ |
| | | private static final int TREND_MONTHS = 6; |
| | | |
| | | @Resource |
| | | private SafetyCertificateMapper certificateMapper; |
| | | @Resource |
| | | private SafetyHazardMapper hazardMapper; |
| | | @Resource |
| | | private SafetyWorkPermitMapper permitMapper; |
| | | @Resource |
| | | private SafetyMaterialMapper materialMapper; |
| | | @Resource |
| | | private SafetyTrainingMapper trainingMapper; |
| | | @Resource |
| | | private SafetyDrillMapper drillMapper; |
| | | @Resource |
| | | private SafetyAccidentMapper accidentMapper; |
| | | |
| | | public SafetyOverviewRespVO getOverview() { |
| | | SafetyOverviewRespVO overview = new SafetyOverviewRespVO(); |
| | | LocalDate today = LocalDate.now(); |
| | | |
| | | // ---------- ç¹ç§ä½ä¸è¯ ---------- |
| | | List<SafetyCertificateDO> certs = certificateMapper.selectList(); |
| | | long expiring = 0; |
| | | long expired = 0; |
| | | for (SafetyCertificateDO cert : certs) { |
| | | String status = SafetyCertificateService.resolveStatus( |
| | | cert.getExpireDate(), cert.getWarnDays(), cert.getStatus()); |
| | | if ("EXPIRED".equals(status)) { |
| | | expired++; |
| | | } else if ("EXPIRING".equals(status)) { |
| | | expiring++; |
| | | } |
| | | } |
| | | overview.setCertTotal((long) certs.size()); |
| | | overview.setCertExpiring(expiring); |
| | | overview.setCertExpired(expired); |
| | | |
| | | // ---------- 鿣 ---------- |
| | | List<SafetyHazardDO> hazards = hazardMapper.selectList(); |
| | | long hazardOpen = hazards.stream() |
| | | .filter(h -> !"CLOSED".equals(h.getStatus())).count(); |
| | | long hazardOverdue = hazardMapper.selectOverdue(today).size(); |
| | | long hazardClosed = hazards.size() - hazardOpen; |
| | | overview.setHazardTotal((long) hazards.size()); |
| | | overview.setHazardOpen(hazardOpen); |
| | | overview.setHazardOverdue(hazardOverdue); |
| | | overview.setHazardCloseRate(hazards.isEmpty() ? 0 |
| | | : (int) Math.round(hazardClosed * 100.0 / hazards.size())); |
| | | |
| | | // ---------- ä½ä¸ç¥¨ ---------- |
| | | List<SafetyWorkPermitDO> permits = permitMapper.selectList(); |
| | | overview.setPermitPending(permits.stream() |
| | | .filter(p -> "PENDING".equals(p.getStatus())).count()); |
| | | overview.setPermitInProgress(permits.stream() |
| | | .filter(p -> "IN_PROGRESS".equals(p.getStatus())).count()); |
| | | |
| | | // ---------- ç©èµ ---------- |
| | | overview.setMaterialBelowSafeStock((long) materialMapper.selectBelowSafeStock().size()); |
| | | overview.setMaterialExpiring((long) materialMapper.selectExpiringBefore(today.plusDays(30)).size()); |
| | | |
| | | // ---------- æ¬ææ´»å¨ ---------- |
| | | YearMonth currentMonth = YearMonth.from(today); |
| | | LocalDate monthStart = currentMonth.atDay(1); |
| | | LocalDate monthEnd = currentMonth.atEndOfMonth(); |
| | | overview.setTrainingThisMonth((long) trainingMapper.selectListBetween(monthStart, monthEnd).size()); |
| | | overview.setDrillThisMonth((long) drillMapper.selectListBetween(monthStart, monthEnd).size()); |
| | | overview.setAccidentThisMonth((long) accidentMapper.selectListBetween( |
| | | monthStart.atStartOfDay(), monthEnd.atTime(23, 59, 59)).size()); |
| | | |
| | | // ---------- è¶å¿ï¼è¿ 6 个æï¼ ---------- |
| | | overview.setHazardTrend(buildTrend(hazards.stream().map(SafetyHazardDO::getReportTime).toList())); |
| | | overview.setAccidentTrend(buildTrend(hazards.isEmpty() ? List.of() |
| | | : accidentMapper.selectList().stream().map(SafetyAccidentDO::getOccurTime).toList())); |
| | | |
| | | return overview; |
| | | } |
| | | |
| | | /** |
| | | * ææèåæ¶é´ç¹ï¼è¾åºè¿ N 个æçè¿ç»åºåï¼æ æ°æ®çæä»½è¡¥ 0ï¼ |
| | | */ |
| | | private List<SafetyOverviewRespVO.MonthlyCount> buildTrend(List<LocalDateTime> times) { |
| | | Map<String, Long> counts = new LinkedHashMap<>(); |
| | | YearMonth current = YearMonth.from(LocalDate.now()); |
| | | List<YearMonth> months = new ArrayList<>(); |
| | | for (int i = TREND_MONTHS - 1; i >= 0; i--) { |
| | | YearMonth month = current.minusMonths(i); |
| | | months.add(month); |
| | | counts.put(month.format(MONTH_FORMAT), 0L); |
| | | } |
| | | for (LocalDateTime time : times) { |
| | | if (time == null) { |
| | | continue; |
| | | } |
| | | String key = YearMonth.from(time).format(MONTH_FORMAT); |
| | | if (counts.containsKey(key)) { |
| | | counts.put(key, counts.get(key) + 1); |
| | | } |
| | | } |
| | | return months.stream().map(month -> { |
| | | SafetyOverviewRespVO.MonthlyCount item = new SafetyOverviewRespVO.MonthlyCount(); |
| | | item.setMonth(month.format(MONTH_FORMAT)); |
| | | item.setCount(counts.get(month.format(MONTH_FORMAT))); |
| | | return item; |
| | | }).toList(); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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.HashMap; |
| | | 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 new HashMap<>(); |
| | | } |
| | | List<Long> ids = employeeIds.stream().filter(Objects::nonNull).distinct().toList(); |
| | | if (ids.isEmpty()) { |
| | | return new HashMap<>(); |
| | | } |
| | | 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 new HashMap<>(); |
| | | } |
| | | List<Long> ids = workshopIds.stream().filter(Objects::nonNull).distinct().toList(); |
| | | if (ids.isEmpty()) { |
| | | return new HashMap<>(); |
| | | } |
| | | 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; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.train.*; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyAccidentDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyDrillDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyTrainingDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyAccidentMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyDrillMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyTrainingMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.safety.*; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | 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.*; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - å¹è®ãæ¼ç»ãäºæ
ç»è®° Service |
| | | * |
| | | * <p>ä¸ç±»è®°å½ç»ä¸å½æ¡£ï¼ä¾æ ååå°è´¦å¯¼åºä½¿ç¨ã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Service |
| | | @Validated |
| | | public class SafetyTrainingService { |
| | | |
| | | private static final DateTimeFormatter CODE_DATE = DateTimeFormatter.ofPattern("yyyyMMdd"); |
| | | |
| | | @Resource |
| | | private SafetyTrainingMapper trainingMapper; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | @Resource |
| | | private SafetyDrillMapper drillMapper; |
| | | @Resource |
| | | private SafetyAccidentMapper accidentMapper; |
| | | |
| | | // ==================== å¹è® ==================== |
| | | |
| | | public Long createTraining(SafetyTrainingSaveReqVO reqVO) { |
| | | reqVO.setId(null); |
| | | 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 training.getId(); |
| | | } |
| | | |
| | | public void updateTraining(SafetyTrainingSaveReqVO reqVO) { |
| | | validateTrainingExists(reqVO.getId()); |
| | | SafetyTrainingDO training = BeanUtils.toBean(reqVO, SafetyTrainingDO.class); |
| | | training.setTitle(StrUtil.trim(reqVO.getTitle())); |
| | | training.setParticipantCount(resolveCount(reqVO.getParticipantCount(), reqVO.getParticipants())); |
| | | trainingMapper.updateById(training); |
| | | } |
| | | |
| | | public void deleteTraining(Long id) { |
| | | validateTrainingExists(id); |
| | | trainingMapper.deleteById(id); |
| | | } |
| | | |
| | | public SafetyTrainingDO getTraining(Long id) { |
| | | return validateTrainingExists(id); |
| | | } |
| | | |
| | | public PageResult<SafetyTrainingDO> getTrainingPage(SafetyTrainingPageReqVO reqVO) { |
| | | 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())); |
| | | } |
| | | |
| | | // ==================== æ¼ç» ==================== |
| | | |
| | | public Long createDrill(SafetyDrillSaveReqVO reqVO) { |
| | | reqVO.setId(null); |
| | | 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); |
| | | return drill.getId(); |
| | | } |
| | | |
| | | public void updateDrill(SafetyDrillSaveReqVO reqVO) { |
| | | validateDrillExists(reqVO.getId()); |
| | | SafetyDrillDO drill = BeanUtils.toBean(reqVO, SafetyDrillDO.class); |
| | | drill.setTitle(StrUtil.trim(reqVO.getTitle())); |
| | | drill.setParticipantCount(resolveCount(reqVO.getParticipantCount(), reqVO.getParticipants())); |
| | | drillMapper.updateById(drill); |
| | | } |
| | | |
| | | public void deleteDrill(Long id) { |
| | | validateDrillExists(id); |
| | | drillMapper.deleteById(id); |
| | | } |
| | | |
| | | public SafetyDrillDO getDrill(Long id) { |
| | | return validateDrillExists(id); |
| | | } |
| | | |
| | | public PageResult<SafetyDrillDO> getDrillPage(SafetyDrillPageReqVO reqVO) { |
| | | return drillMapper.selectPage(reqVO); |
| | | } |
| | | |
| | | public static void fillDrillDisplay(SafetyDrillDO drill, SafetyDrillRespVO respVO) { |
| | | respVO.setDrillTypeName(SafetyDrillTypeEnum.getNameByType(drill.getDrillType())); |
| | | } |
| | | |
| | | // ==================== äºæ
==================== |
| | | |
| | | public Long createAccident(SafetyAccidentSaveReqVO reqVO) { |
| | | reqVO.setId(null); |
| | | SafetyAccidentDO accident = BeanUtils.toBean(reqVO, SafetyAccidentDO.class); |
| | | accident.setCode(accidentMapper.selectNextCode("AC" + LocalDate.now().format(CODE_DATE))); |
| | | 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); |
| | | return accident.getId(); |
| | | } |
| | | |
| | | public void updateAccident(SafetyAccidentSaveReqVO reqVO) { |
| | | validateAccidentExists(reqVO.getId()); |
| | | SafetyAccidentDO accident = BeanUtils.toBean(reqVO, SafetyAccidentDO.class); |
| | | accident.setCode(null); |
| | | applyAccidentRefs(accident, reqVO); |
| | | accidentMapper.updateById(accident); |
| | | } |
| | | |
| | | public void deleteAccident(Long id) { |
| | | validateAccidentExists(id); |
| | | accidentMapper.deleteById(id); |
| | | } |
| | | |
| | | public SafetyAccidentDO getAccident(Long id) { |
| | | return validateAccidentExists(id); |
| | | } |
| | | |
| | | public PageResult<SafetyAccidentDO> getAccidentPage(SafetyAccidentPageReqVO reqVO) { |
| | | return accidentMapper.selectPage(reqVO); |
| | | } |
| | | |
| | | public static void fillAccidentDisplay(SafetyAccidentDO accident, SafetyAccidentRespVO respVO) { |
| | | respVO.setAccidentTypeName(SafetyAccidentTypeEnum.getNameByType(accident.getAccidentType())); |
| | | respVO.setLevelName(SafetyAccidentLevelEnum.getNameByLevel(accident.getLevel())); |
| | | respVO.setStatusName(SafetyAccidentStatusEnum.getNameByStatus(accident.getStatus())); |
| | | } |
| | | |
| | | // ==================== å°è´¦å¯¼åºç¨æ¥è¯¢ ==================== |
| | | |
| | | public List<SafetyTrainingDO> listTrainingBetween(LocalDate begin, LocalDate end) { |
| | | return trainingMapper.selectListBetween(begin, end); |
| | | } |
| | | |
| | | public List<SafetyDrillDO> listDrillBetween(LocalDate begin, LocalDate end) { |
| | | return drillMapper.selectListBetween(begin, end); |
| | | } |
| | | |
| | | public List<SafetyAccidentDO> listAccidentBetween(LocalDate begin, LocalDate end) { |
| | | return accidentMapper.selectListBetween( |
| | | begin == null ? null : begin.atStartOfDay(), |
| | | end == null ? null : end.atTime(23, 59, 59)); |
| | | } |
| | | |
| | | // ==================== ç§æ ==================== |
| | | |
| | | /** åå äººæ°æªå¡«æ¶ï¼æå§åéå·å鿰鿍æ */ |
| | | private static int resolveCount(Integer count, String participants) { |
| | | if (count != null && count > 0) { |
| | | return count; |
| | | } |
| | | if (StrUtil.isBlank(participants)) { |
| | | return 0; |
| | | } |
| | | return (int) java.util.Arrays.stream(participants.split("[,ï¼ã]")) |
| | | .map(String::trim).filter(StrUtil::isNotBlank).count(); |
| | | } |
| | | |
| | | private SafetyTrainingDO validateTrainingExists(Long id) { |
| | | SafetyTrainingDO training = id == null ? null : trainingMapper.selectById(id); |
| | | if (training == null) { |
| | | throw exception(SAFETY_TRAINING_NOT_EXISTS); |
| | | } |
| | | return training; |
| | | } |
| | | |
| | | private SafetyDrillDO validateDrillExists(Long id) { |
| | | SafetyDrillDO drill = id == null ? null : drillMapper.selectById(id); |
| | | if (drill == null) { |
| | | throw exception(SAFETY_DRILL_NOT_EXISTS); |
| | | } |
| | | return drill; |
| | | } |
| | | |
| | | private SafetyAccidentDO validateAccidentExists(Long id) { |
| | | SafetyAccidentDO accident = id == null ? null : accidentMapper.selectById(id); |
| | | if (accident == null) { |
| | | throw exception(SAFETY_ACCIDENT_NOT_EXISTS); |
| | | } |
| | | return 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; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.permit.*; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyWorkPermitDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyWorkPermitMonitorDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyWorkPermitMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyWorkPermitMonitorMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.safety.SafetyPermitStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.safety.SafetyPermitTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.safety.SafetyRiskLevelEnum; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | 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.*; |
| | | |
| | | /** |
| | | * å®å
¨ç产 - é«å±ä½ä¸ç¥¨ Service |
| | | * |
| | | * <p>å¨ç«ãé«å带çµãæé空é´çä½ä¸ç线ä¸å®¡æ¹ä¸çµåçåã |
| | | * ç¶ææµè½¬ï¼è稿 â å¾
å®¡æ¹ â å·²æ¹å â ä½ä¸ä¸ â å·²å®ç»ï¼é©³å/ä½åºä¸ºç»æ¢æã</p> |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Service |
| | | @Validated |
| | | public class SafetyWorkPermitService { |
| | | |
| | | private static final DateTimeFormatter CODE_DATE = DateTimeFormatter.ofPattern("yyyyMMdd"); |
| | | |
| | | @Resource |
| | | private SafetyWorkPermitMapper permitMapper; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | @Resource |
| | | private SafetyWorkPermitMonitorMapper monitorMapper; |
| | | |
| | | /** |
| | | * æäº¤ä½ä¸ç³è¯·ï¼è稿æå¾
审æ¹ï¼ |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Long createPermit(SafetyWorkPermitSaveReqVO reqVO) { |
| | | reqVO.setId(null); |
| | | validateTimeRange(reqVO); |
| | | SafetyWorkPermitDO permit = BeanUtils.toBean(reqVO, SafetyWorkPermitDO.class); |
| | | permit.setCode(permitMapper.selectNextCode("WP" + LocalDate.now().format(CODE_DATE))); |
| | | permit.setTitle(StrUtil.trim(reqVO.getTitle())); |
| | | 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()); |
| | | permit.setRemark(reqVO.getRemark() == null ? "" : reqVO.getRemark().trim()); |
| | | permitMapper.insert(permit); |
| | | return permit.getId(); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹ä½ä¸ç¥¨ï¼ä»
è稿/å¾
审æ¹å¯æ¹ï¼ |
| | | */ |
| | | public void updatePermit(SafetyWorkPermitSaveReqVO reqVO) { |
| | | SafetyWorkPermitDO old = validatePermitExists(reqVO.getId()); |
| | | ensureStatus(old, SafetyPermitStatusEnum.DRAFT, SafetyPermitStatusEnum.PENDING); |
| | | validateTimeRange(reqVO); |
| | | 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()); |
| | | } |
| | | |
| | | /** |
| | | * 审æ¹ä½ä¸ç¥¨ |
| | | * |
| | | * <p>æ¹åæ¶æ ¡éªé«å±ä½ä¸ï¼å¨ç«/é«å带çµ/æé空é´ï¼å¿
é¡»æå®çæ¤äººï¼ |
| | | * ä¿è¯ä½ä¸ç¥¨çµåçåç宿´æ§ã</p> |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void approvePermit(SafetyWorkPermitApproveReqVO reqVO) { |
| | | SafetyWorkPermitDO permit = validatePermitExists(reqVO.getId()); |
| | | ensureStatus(permit, SafetyPermitStatusEnum.PENDING); |
| | | 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()) |
| | | && permit.getGuardianId() == null) { |
| | | throw exception(SAFETY_PERMIT_GUARDIAN_REQUIRED); |
| | | } |
| | | SafetyWorkPermitDO update = new SafetyWorkPermitDO(); |
| | | update.setId(permit.getId()); |
| | | update.setApproverId(approver.getId()); |
| | | update.setApprover(approver.getName()); |
| | | update.setApproveTime(LocalDateTime.now()); |
| | | update.setApproveComment(reqVO.getApproveComment()); |
| | | update.setStatus(approved ? SafetyPermitStatusEnum.APPROVED.getStatus() |
| | | : SafetyPermitStatusEnum.REJECTED.getStatus()); |
| | | permitMapper.updateById(update); |
| | | } |
| | | |
| | | /** |
| | | * å¼å§ä½ä¸ï¼é¡»å·²æ¹åï¼ |
| | | */ |
| | | public void startPermit(Long id) { |
| | | SafetyWorkPermitDO permit = validatePermitExists(id); |
| | | if (!SafetyPermitStatusEnum.APPROVED.getStatus().equals(permit.getStatus())) { |
| | | throw exception(SAFETY_PERMIT_NOT_APPROVED); |
| | | } |
| | | SafetyWorkPermitDO update = new SafetyWorkPermitDO(); |
| | | update.setId(id); |
| | | update.setActualStartTime(LocalDateTime.now()); |
| | | update.setStatus(SafetyPermitStatusEnum.IN_PROGRESS.getStatus()); |
| | | permitMapper.updateById(update); |
| | | } |
| | | |
| | | /** |
| | | * ç»æä½ä¸å¹¶å½æ¡£ |
| | | */ |
| | | public void closePermit(Long id) { |
| | | SafetyWorkPermitDO permit = validatePermitExists(id); |
| | | ensureStatus(permit, SafetyPermitStatusEnum.IN_PROGRESS); |
| | | SafetyWorkPermitDO update = new SafetyWorkPermitDO(); |
| | | update.setId(id); |
| | | update.setActualEndTime(LocalDateTime.now()); |
| | | update.setStatus(SafetyPermitStatusEnum.CLOSED.getStatus()); |
| | | permitMapper.updateById(update); |
| | | } |
| | | |
| | | /** |
| | | * ä½åºä½ä¸ç¥¨ï¼æªå®ç»ååå¯ä½åºï¼ |
| | | */ |
| | | public void cancelPermit(Long id) { |
| | | SafetyWorkPermitDO permit = validatePermitExists(id); |
| | | if (SafetyPermitStatusEnum.CLOSED.getStatus().equals(permit.getStatus()) |
| | | || SafetyPermitStatusEnum.CANCELLED.getStatus().equals(permit.getStatus())) { |
| | | throw exception(SAFETY_PERMIT_STATUS_ERROR); |
| | | } |
| | | SafetyWorkPermitDO update = new SafetyWorkPermitDO(); |
| | | update.setId(id); |
| | | update.setStatus(SafetyPermitStatusEnum.CANCELLED.getStatus()); |
| | | permitMapper.updateById(update); |
| | | } |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void deletePermit(Long id) { |
| | | validatePermitExists(id); |
| | | monitorMapper.deleteByPermitId(id); |
| | | permitMapper.deleteById(id); |
| | | } |
| | | |
| | | public SafetyWorkPermitDO getPermit(Long id) { |
| | | return validatePermitExists(id); |
| | | } |
| | | |
| | | public PageResult<SafetyWorkPermitDO> getPermitPage(SafetyWorkPermitPageReqVO reqVO) { |
| | | return permitMapper.selectPage(reqVO); |
| | | } |
| | | |
| | | // ==================== çæ¤è®°å½ ==================== |
| | | |
| | | public Long createMonitor(SafetyWorkPermitMonitorSaveReqVO reqVO) { |
| | | SafetyWorkPermitDO permit = validatePermitExists(reqVO.getPermitId()); |
| | | if (!SafetyPermitStatusEnum.IN_PROGRESS.getStatus().equals(permit.getStatus()) |
| | | && !SafetyPermitStatusEnum.APPROVED.getStatus().equals(permit.getStatus())) { |
| | | throw exception(SAFETY_PERMIT_STATUS_ERROR); |
| | | } |
| | | SafetyWorkPermitMonitorDO monitor = BeanUtils.toBean(reqVO, SafetyWorkPermitMonitorDO.class); |
| | | monitor.setId(null); |
| | | 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 deleteMonitor(Long id) { |
| | | if (id == null || monitorMapper.selectById(id) == null) { |
| | | throw exception(SAFETY_PERMIT_MONITOR_NOT_EXISTS); |
| | | } |
| | | monitorMapper.deleteById(id); |
| | | } |
| | | |
| | | public List<SafetyWorkPermitMonitorDO> getMonitorList(Long permitId) { |
| | | return monitorMapper.selectListByPermitId(permitId); |
| | | } |
| | | |
| | | // ==================== å±ç¤ºå段 ==================== |
| | | |
| | | /** |
| | | * æ¹éåå¡«ä½ä¸ç¥¨ç车é´åä¸ä¸ä¸ªäººåå§åï¼ç³è¯·äºº/审æ¹äºº/çæ¤äººï¼ |
| | | */ |
| | | 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())); |
| | | respVO.setStatusName(SafetyPermitStatusEnum.getNameByStatus(permit.getStatus())); |
| | | respVO.setGuardianRequired(SafetyPermitTypeEnum.requiresGuardian(permit.getPermitType())); |
| | | } |
| | | |
| | | private void validateTimeRange(SafetyWorkPermitSaveReqVO reqVO) { |
| | | if (reqVO.getPlanStartTime() != null && reqVO.getPlanEndTime() != null |
| | | && !reqVO.getPlanEndTime().isAfter(reqVO.getPlanStartTime())) { |
| | | throw exception(SAFETY_PERMIT_TIME_INVALID); |
| | | } |
| | | } |
| | | |
| | | private void ensureStatus(SafetyWorkPermitDO permit, SafetyPermitStatusEnum... allowed) { |
| | | for (SafetyPermitStatusEnum status : allowed) { |
| | | if (status.getStatus().equals(permit.getStatus())) { |
| | | return; |
| | | } |
| | | } |
| | | throw exception(SAFETY_PERMIT_STATUS_ERROR); |
| | | } |
| | | |
| | | private SafetyWorkPermitDO validatePermitExists(Long id) { |
| | | SafetyWorkPermitDO permit = id == null ? null : permitMapper.selectById(id); |
| | | if (permit == null) { |
| | | throw exception(SAFETY_PERMIT_NOT_EXISTS); |
| | | } |
| | | return permit; |
| | | } |
| | | |
| | | } |