03-aegis.sql 143 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371
  1. -- ----------------------------
  2. -- AEGIS 系统数据库脚本
  3. -- ----------------------------
  4. -- 设置连接字符集为utf8mb4
  5. SET NAMES utf8mb4;
  6. SET CHARACTER_SET_CLIENT = utf8mb4;
  7. SET CHARACTER_SET_CONNECTION = utf8mb4;
  8. SET CHARACTER_SET_RESULTS = utf8mb4;
  9. USE `aegis`;
  10. -- ----------------------------
  11. -- 资源模块 - 队伍管理相关表
  12. -- ----------------------------
  13. -- 1、应急队伍表
  14. DROP TABLE IF EXISTS aegis.`resource_team`;
  15. CREATE TABLE `resource_team` (
  16. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '队伍ID',
  17. `team_name` varchar(100) NOT NULL COMMENT '队伍名称',
  18. `team_type` varchar(32) DEFAULT NULL COMMENT '队伍类型',
  19. `belong_org_name` varchar(128) DEFAULT NULL COMMENT '所属单位名称(交通委/公安/消防/医疗/社会企业等)',
  20. `belong_org_type` varchar(32) DEFAULT NULL COMMENT '所属单位类型:transportation/police/firefighting/medical/emergency/company/other',
  21. `external_flag` char(1) DEFAULT 'Y' COMMENT '是否外部单位:Y-外部联动单位,N-本系统内部单位',
  22. `status` varchar(16) DEFAULT 'available' COMMENT '状态:available-可用,busy-占用,offline-停用',
  23. `capabilities` varchar(500) DEFAULT NULL COMMENT '能力标签(JSON数组)',
  24. `contact_person` varchar(64) DEFAULT NULL COMMENT '联系人',
  25. `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
  26. `contact_address` varchar(255) DEFAULT NULL COMMENT '联系地址',
  27. `location_name` varchar(128) DEFAULT NULL COMMENT '驻扎点/常驻位置名称(如XX收费站)',
  28. `longitude` decimal(10,7) DEFAULT NULL COMMENT '经度',
  29. `latitude` decimal(10,7) DEFAULT NULL COMMENT '纬度',
  30. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  31. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  32. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  33. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  34. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  35. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  36. PRIMARY KEY (`id`),
  37. KEY `idx_team_name` (`team_name`),
  38. KEY `idx_status` (`status`),
  39. KEY `idx_org_type` (`belong_org_type`)
  40. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应急队伍表';
  41. -- 2、队伍成员表
  42. DROP TABLE IF EXISTS aegis.`resource_team_member`;
  43. CREATE TABLE `resource_team_member` (
  44. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '成员ID',
  45. `team_id` bigint(20) NOT NULL COMMENT '队伍ID',
  46. `user_id` bigint(20) DEFAULT NULL COMMENT '关联的系统用户ID',
  47. `member_name` varchar(64) NOT NULL COMMENT '成员姓名',
  48. `member_code` varchar(50) DEFAULT NULL COMMENT '成员编号',
  49. `id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
  50. `phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
  51. `position` varchar(64) DEFAULT NULL COMMENT '职位/角色',
  52. `specialty` varchar(200) DEFAULT NULL COMMENT '专长',
  53. `status` varchar(16) DEFAULT 'active' COMMENT '状态:active-在岗,leave-请假,retired-退休',
  54. `join_date` date DEFAULT NULL COMMENT '加入日期',
  55. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  56. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  57. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  58. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  59. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  60. PRIMARY KEY (`id`),
  61. KEY `idx_team_id` (`team_id`),
  62. KEY `idx_member_name` (`member_name`),
  63. KEY `idx_user_id` (`user_id`)
  64. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='队伍成员表';
  65. -- 3、队伍操作日志表
  66. DROP TABLE IF EXISTS aegis.`resource_team_log`;
  67. CREATE TABLE `resource_team_log` (
  68. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID',
  69. `team_id` bigint(20) NOT NULL COMMENT '队伍ID',
  70. `action` varchar(32) NOT NULL COMMENT '操作类型:create/update/member_add/member_update/member_remove/status_change/requisition_start/requisition_end/dispatch_assign/dispatch_release',
  71. `from_status` varchar(16) DEFAULT NULL COMMENT '原状态',
  72. `to_status` varchar(16) DEFAULT NULL COMMENT '新状态',
  73. `member_id` bigint(20) DEFAULT NULL COMMENT '成员ID(操作成员时)',
  74. `requisition_id` bigint(20) DEFAULT NULL COMMENT '征用ID(操作征用时)',
  75. `dispatch_id` bigint(20) DEFAULT NULL COMMENT '调度ID(操作调度时)',
  76. `event_id` bigint(20) DEFAULT NULL COMMENT '事件ID(操作事件时)',
  77. `diff` text COMMENT '变更内容(JSON格式)',
  78. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  79. `operator_id` bigint(20) DEFAULT NULL COMMENT '操作人ID',
  80. `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人姓名',
  81. `request_id` varchar(64) DEFAULT NULL COMMENT '请求ID(用于追踪)',
  82. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  83. PRIMARY KEY (`id`),
  84. KEY `idx_team_id` (`team_id`),
  85. KEY `idx_action` (`action`),
  86. KEY `idx_created_at` (`created_at`)
  87. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='队伍操作日志表';
  88. -- 4、队伍所属单位类型字典
  89. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  90. SELECT '队伍所属单位类型', 'team_org_type', '0', 'admin', sysdate(), '资源队伍所属单位类型'
  91. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'team_org_type');
  92. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  93. SELECT 1, '交通委', 'transportation', 'team_org_type', '', 'primary', 'N', '0', 'admin', sysdate(), '交通运输委员会'
  94. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'team_org_type' AND dict_value = 'transportation');
  95. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  96. SELECT 2, '公安', 'police', 'team_org_type', '', 'info', 'N', '0', 'admin', sysdate(), '公安机关'
  97. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'team_org_type' AND dict_value = 'police');
  98. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  99. SELECT 3, '消防救援', 'firefighting', 'team_org_type', '', 'danger', 'N', '0', 'admin', sysdate(), '消防救援机构'
  100. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'team_org_type' AND dict_value = 'firefighting');
  101. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  102. SELECT 4, '医疗急救', 'medical', 'team_org_type', '', 'success', 'N', '0', 'admin', sysdate(), '医疗卫生/急救机构'
  103. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'team_org_type' AND dict_value = 'medical');
  104. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  105. SELECT 5, '应急管理', 'emergency', 'team_org_type', '', 'warning', 'N', '0', 'admin', sysdate(), '应急管理部门'
  106. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'team_org_type' AND dict_value = 'emergency');
  107. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  108. SELECT 6, '社会企业', 'company', 'team_org_type', '', 'primary', 'N', '0', 'admin', sysdate(), '社会企业/志愿组织'
  109. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'team_org_type' AND dict_value = 'company');
  110. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  111. SELECT 7, '其他', 'other', 'team_org_type', '', 'default', 'N', '0', 'admin', sysdate(), '其他单位'
  112. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'team_org_type' AND dict_value = 'other');
  113. -- ----------------------------
  114. -- 预案管理模块
  115. -- ----------------------------
  116. DROP TABLE IF EXISTS aegis.`plan`;
  117. CREATE TABLE `plan` (
  118. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '预案ID',
  119. `plan_no` varchar(64) NOT NULL COMMENT '预案编号',
  120. `plan_name` varchar(200) NOT NULL COMMENT '预案名称',
  121. `plan_type` varchar(32) DEFAULT NULL COMMENT '预案类型:overall/special',
  122. `event_type` varchar(64) DEFAULT NULL COMMENT '适用事件类型',
  123. `event_level` varchar(16) DEFAULT NULL COMMENT '适用事件级别',
  124. `version` varchar(32) DEFAULT NULL COMMENT '版本号',
  125. `status` varchar(32) DEFAULT 'draft' COMMENT '状态:draft/approving/published/archived',
  126. `is_current` tinyint(1) DEFAULT 1 COMMENT '是否当前版本',
  127. `description` text COMMENT '预案描述',
  128. `creator_id` bigint(20) DEFAULT NULL COMMENT '创建人ID',
  129. `approver_id` bigint(20) DEFAULT NULL COMMENT '审批人ID',
  130. `approval_time` datetime DEFAULT NULL COMMENT '审批时间',
  131. `publish_time` datetime DEFAULT NULL COMMENT '发布时间',
  132. `usage_count` int(11) DEFAULT 0 COMMENT '使用次数',
  133. `last_used_at` datetime DEFAULT NULL COMMENT '最后使用时间',
  134. `average_rating` decimal(10,2) DEFAULT NULL COMMENT '平均评分',
  135. `referenced_workbench` varchar(32) DEFAULT NULL COMMENT '最近引用来源:dispatch/disposal',
  136. `last_feedback_summary` varchar(500) DEFAULT NULL COMMENT '最近反馈摘要',
  137. `change_log` text COMMENT '变更说明',
  138. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  139. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  140. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  141. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  142. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  143. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  144. PRIMARY KEY (`id`),
  145. KEY `idx_plan_no` (`plan_no`),
  146. KEY `idx_plan_status` (`status`),
  147. KEY `idx_plan_event_type` (`event_type`)
  148. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应急预案主表';
  149. DROP TABLE IF EXISTS aegis.`plan_version`;
  150. CREATE TABLE `plan_version` (
  151. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '版本记录ID',
  152. `plan_id` bigint(20) NOT NULL COMMENT '关联预案ID',
  153. `version` varchar(32) NOT NULL COMMENT '版本号',
  154. `parent_plan_id` bigint(20) DEFAULT NULL COMMENT '父版本预案ID',
  155. `change_log` text COMMENT '变更说明',
  156. `snapshot` json DEFAULT NULL COMMENT '预案快照JSON',
  157. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  158. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  159. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  160. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  161. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  162. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  163. PRIMARY KEY (`id`),
  164. KEY `idx_plan_version_plan` (`plan_id`),
  165. KEY `idx_plan_version_parent` (`parent_plan_id`)
  166. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预案版本记录表';
  167. DROP TABLE IF EXISTS aegis.`plan_approval`;
  168. CREATE TABLE `plan_approval` (
  169. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '审批记录ID',
  170. `plan_id` bigint(20) NOT NULL COMMENT '预案ID',
  171. `approver_id` bigint(20) DEFAULT NULL COMMENT '审批人ID',
  172. `approver_name` varchar(64) DEFAULT NULL COMMENT '审批人姓名',
  173. `approval_status` varchar(16) DEFAULT NULL COMMENT '审批状态:approved/rejected',
  174. `approval_comment` varchar(500) DEFAULT NULL COMMENT '审批意见',
  175. `approval_time` datetime DEFAULT NULL COMMENT '审批时间',
  176. `approval_order` int(11) DEFAULT 1 COMMENT '审批顺序',
  177. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  178. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  179. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  180. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  181. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  182. PRIMARY KEY (`id`),
  183. KEY `idx_plan_approval_plan` (`plan_id`)
  184. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预案审批记录表';
  185. DROP TABLE IF EXISTS aegis.`plan_participant`;
  186. CREATE TABLE `plan_participant` (
  187. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '模板ID',
  188. `plan_id` bigint(20) NOT NULL COMMENT '预案ID',
  189. `participant_type` varchar(32) NOT NULL COMMENT '执行对象类型:TEAM_MEMBER/EXPERT',
  190. `reference_team_id` bigint(20) DEFAULT NULL COMMENT '队伍ID(团队成员)',
  191. `reference_member_id` bigint(20) DEFAULT NULL COMMENT '队伍成员ID',
  192. `reference_expert_id` bigint(20) DEFAULT NULL COMMENT '专家ID',
  193. `display_name` varchar(200) DEFAULT NULL COMMENT '展示名称',
  194. `role` varchar(200) DEFAULT NULL COMMENT '角色/职责',
  195. `contact_snapshot` text COMMENT '联系方式快照(JSON)',
  196. `sort_order` int(11) DEFAULT 0 COMMENT '排序',
  197. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  198. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  199. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  200. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  201. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  202. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  203. PRIMARY KEY (`id`),
  204. KEY `idx_plan_participant_plan` (`plan_id`)
  205. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预案执行对象模板表';
  206. DROP TABLE IF EXISTS aegis.`plan_step`;
  207. CREATE TABLE `plan_step` (
  208. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '行动项模板ID',
  209. `plan_id` bigint(20) NOT NULL COMMENT '预案ID',
  210. `step_name` varchar(200) NOT NULL COMMENT '行动项名称',
  211. `step_order` int(11) DEFAULT NULL COMMENT '顺序',
  212. `description` text COMMENT '行动项描述',
  213. `suggested_participant_id` bigint(20) DEFAULT NULL COMMENT '建议执行方模板ID',
  214. `estimated_duration` int(11) DEFAULT NULL COMMENT '预计耗时(分钟)',
  215. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  216. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  217. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  218. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  219. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  220. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  221. PRIMARY KEY (`id`),
  222. KEY `idx_plan_step_plan` (`plan_id`)
  223. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预案行动项模板表';
  224. DROP TABLE IF EXISTS aegis.`plan_step_resource`;
  225. CREATE TABLE `plan_step_resource` (
  226. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '关联ID',
  227. `plan_id` bigint(20) NOT NULL COMMENT '预案ID',
  228. `step_id` bigint(20) NOT NULL COMMENT '行动项ID',
  229. `resource_type` varchar(32) NOT NULL COMMENT '资源类型:material/equipment/vehicle',
  230. `resource_ref_id` bigint(20) DEFAULT NULL COMMENT '资源ID',
  231. `suggested_quantity` int(11) DEFAULT NULL COMMENT '建议数量',
  232. `required` tinyint(1) DEFAULT 0 COMMENT '是否必需',
  233. `usage_note` varchar(500) DEFAULT NULL COMMENT '使用说明',
  234. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  235. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  236. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  237. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  238. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  239. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  240. PRIMARY KEY (`id`),
  241. KEY `idx_plan_step_resource_plan` (`plan_id`),
  242. KEY `idx_plan_step_resource_step` (`step_id`)
  243. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='行动项资源模板表';
  244. DROP TABLE IF EXISTS aegis.`plan_usage`;
  245. CREATE TABLE `plan_usage` (
  246. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '使用记录ID',
  247. `plan_id` bigint(20) NOT NULL COMMENT '预案ID',
  248. `dispatch_task_id` bigint(20) DEFAULT NULL COMMENT '调度任务ID',
  249. `source` varchar(32) DEFAULT NULL COMMENT '来源:dispatch/disposal',
  250. `remark` varchar(500) DEFAULT NULL COMMENT '备注/反馈',
  251. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  252. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  253. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  254. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  255. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  256. PRIMARY KEY (`id`),
  257. KEY `idx_plan_usage_plan` (`plan_id`),
  258. KEY `idx_plan_usage_dispatch` (`dispatch_task_id`)
  259. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预案使用记录表';
  260. -- ----------------------------
  261. -- 资源模块 - 仓库管理相关表
  262. -- ----------------------------
  263. -- 1、仓库表
  264. DROP TABLE IF EXISTS aegis.`resource_warehouse`;
  265. CREATE TABLE `resource_warehouse` (
  266. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '仓库ID',
  267. `warehouse_code` varchar(50) NOT NULL COMMENT '仓库编码',
  268. `warehouse_name` varchar(100) NOT NULL COMMENT '仓库名称',
  269. `warehouse_type` varchar(32) DEFAULT NULL COMMENT '仓库类型(危化装备/排水设备/交通物资等)',
  270. `belong_org_name` varchar(128) DEFAULT NULL COMMENT '所属单位名称',
  271. `belong_org_type` varchar(32) DEFAULT NULL COMMENT '所属单位类型(交通委/应急局/市政/企业等)',
  272. `address` varchar(500) DEFAULT NULL COMMENT '详细地址',
  273. `longitude` decimal(10,7) DEFAULT NULL COMMENT '经度(WGS-84)',
  274. `latitude` decimal(10,7) DEFAULT NULL COMMENT '纬度(WGS-84)',
  275. `manager` varchar(64) DEFAULT NULL COMMENT '负责人',
  276. `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
  277. `capacity` decimal(10,2) DEFAULT NULL COMMENT '容量(平方米或立方米)',
  278. `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
  279. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  280. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  281. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  282. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  283. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  284. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  285. PRIMARY KEY (`id`),
  286. UNIQUE KEY `uk_warehouse_code` (`warehouse_code`),
  287. KEY `idx_warehouse_name` (`warehouse_name`),
  288. KEY `idx_status` (`status`)
  289. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='仓库表';
  290. -- ----------------------------
  291. -- 资源模块 - 车辆管理相关表
  292. -- ----------------------------
  293. -- 1、车辆表
  294. DROP TABLE IF EXISTS aegis.`resource_vehicle`;
  295. CREATE TABLE `resource_vehicle` (
  296. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '车辆ID',
  297. `vehicle_name` varchar(100) NOT NULL COMMENT '车辆名称',
  298. `plate_no` varchar(32) DEFAULT NULL COMMENT '车牌号/编号',
  299. `vehicle_type` varchar(32) DEFAULT NULL COMMENT '车辆类型',
  300. `team_id` bigint(20) DEFAULT NULL COMMENT '所属队伍ID',
  301. `status` varchar(16) DEFAULT 'available' COMMENT '状态:available-可用,busy-占用,maintenance-检修,offline-停用,scrap-报废',
  302. `capabilities` varchar(500) DEFAULT NULL COMMENT '能力标签(JSON数组)',
  303. `device_id` varchar(64) DEFAULT NULL COMMENT '定位设备ID',
  304. `device_provider` varchar(32) DEFAULT NULL COMMENT '设备提供商/协议类型',
  305. `gps_lat` decimal(10,7) DEFAULT NULL COMMENT '最新定位纬度',
  306. `gps_lng` decimal(10,7) DEFAULT NULL COMMENT '最新定位经度',
  307. `last_seen_at` datetime DEFAULT NULL COMMENT '最后定位时间',
  308. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  309. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  310. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  311. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  312. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  313. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  314. PRIMARY KEY (`id`),
  315. UNIQUE KEY `uk_plate_no` (`plate_no`),
  316. KEY `idx_team_id` (`team_id`),
  317. KEY `idx_status` (`status`)
  318. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆表';
  319. -- ----------------------------
  320. -- 资源模块 - 专家管理相关表
  321. -- ----------------------------
  322. -- 1、专家表
  323. DROP TABLE IF EXISTS aegis.`resource_expert`;
  324. CREATE TABLE `resource_expert` (
  325. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '专家ID',
  326. `expert_name` varchar(64) NOT NULL COMMENT '专家姓名',
  327. `expert_code` varchar(50) DEFAULT NULL COMMENT '专家编号',
  328. `id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
  329. `organization` varchar(200) DEFAULT NULL COMMENT '所属单位',
  330. `specialties` varchar(500) DEFAULT NULL COMMENT '专长领域(JSON数组)',
  331. `phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
  332. `email` varchar(100) DEFAULT NULL COMMENT '邮箱',
  333. `sys_user_id` bigint(20) DEFAULT NULL COMMENT '关联系统用户ID',
  334. `status` varchar(16) DEFAULT 'active' COMMENT '状态:active-启用,inactive-停用,blacklisted-黑名单',
  335. `rating` int(1) DEFAULT 5 COMMENT '评分(1-5)',
  336. `capabilities` varchar(500) DEFAULT NULL COMMENT '能力标签(JSON数组)',
  337. `contacts` text COMMENT '联系方式(JSON格式)',
  338. `location_name` varchar(255) DEFAULT NULL COMMENT '常驻地点名称/地址描述',
  339. `longitude` decimal(10,7) DEFAULT NULL COMMENT '经度',
  340. `latitude` decimal(10,7) DEFAULT NULL COMMENT '纬度',
  341. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  342. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  343. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  344. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  345. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  346. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  347. PRIMARY KEY (`id`),
  348. UNIQUE KEY `uk_expert_code` (`expert_code`),
  349. UNIQUE KEY `uk_resource_expert_sys_user` (`sys_user_id`),
  350. KEY `idx_expert_name` (`expert_name`),
  351. KEY `idx_status` (`status`),
  352. KEY `idx_rating` (`rating`),
  353. CONSTRAINT `fk_resource_expert_sys_user` FOREIGN KEY (`sys_user_id`) REFERENCES `sys_user` (`user_id`)
  354. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='专家表';
  355. -- ----------------------------
  356. -- 资源模块 - 物资分类管理相关表
  357. -- ----------------------------
  358. -- 1、物资分类表
  359. DROP TABLE IF EXISTS aegis.`resource_material_category`;
  360. CREATE TABLE `resource_material_category` (
  361. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类ID',
  362. `parent_id` bigint(20) DEFAULT 0 COMMENT '父分类ID(0表示顶级)',
  363. `ancestors` varchar(500) DEFAULT '' COMMENT '祖级列表',
  364. `category_code` varchar(50) NOT NULL COMMENT '分类编码',
  365. `category_name` varchar(100) NOT NULL COMMENT '分类名称',
  366. `order_num` int(4) DEFAULT 0 COMMENT '显示顺序',
  367. `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
  368. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  369. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  370. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  371. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  372. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  373. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  374. PRIMARY KEY (`id`),
  375. UNIQUE KEY `uk_category_code` (`category_code`),
  376. KEY `idx_parent_id` (`parent_id`),
  377. KEY `idx_category_name` (`category_name`)
  378. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物资分类表';
  379. -- ----------------------------
  380. -- 资源模块 - 物资管理相关表
  381. -- ----------------------------
  382. -- 1、物资表
  383. DROP TABLE IF EXISTS aegis.`resource_material`;
  384. CREATE TABLE `resource_material` (
  385. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '物资ID',
  386. `material_code` varchar(50) NOT NULL COMMENT '物资编码',
  387. `material_name` varchar(200) NOT NULL COMMENT '物资名称',
  388. `category_id` bigint(20) DEFAULT NULL COMMENT '分类ID',
  389. `unit` varchar(16) DEFAULT NULL COMMENT '单位',
  390. `spec` varchar(200) DEFAULT NULL COMMENT '规格',
  391. `brand` varchar(100) DEFAULT NULL COMMENT '品牌',
  392. `batch_no` varchar(64) DEFAULT NULL COMMENT '批次号',
  393. `expire_date` date DEFAULT NULL COMMENT '过期日期',
  394. `reusable` tinyint(1) DEFAULT 0 COMMENT '是否可重复使用:0-否,1-是',
  395. `recycle_policy` varchar(200) DEFAULT NULL COMMENT '回收政策',
  396. `sterilize_required` tinyint(1) DEFAULT 0 COMMENT '是否需要消毒:0-否,1-是',
  397. `threshold` decimal(10,2) DEFAULT 0.00 COMMENT '报警阈值',
  398. `locked_qty` decimal(10,2) DEFAULT 0.00 COMMENT '锁定数量',
  399. `used_qty` decimal(10,2) DEFAULT 0.00 COMMENT '已使用数量',
  400. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  401. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  402. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  403. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  404. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  405. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  406. PRIMARY KEY (`id`),
  407. UNIQUE KEY `uk_material_code` (`material_code`),
  408. KEY `idx_category_id` (`category_id`)
  409. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物资表';
  410. -- 2、物资库存表
  411. DROP TABLE IF EXISTS aegis.`resource_material_inventory`;
  412. CREATE TABLE `resource_material_inventory` (
  413. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '库存ID',
  414. `material_id` bigint(20) NOT NULL COMMENT '物资ID',
  415. `warehouse_id` bigint(20) DEFAULT NULL COMMENT '仓库ID',
  416. `total_qty` decimal(10,2) DEFAULT 0.00 COMMENT '总数量',
  417. `available_qty` decimal(10,2) DEFAULT 0.00 COMMENT '可用数量',
  418. `locked_qty` decimal(10,2) DEFAULT 0.00 COMMENT '锁定数量',
  419. `used_qty` decimal(10,2) DEFAULT 0.00 COMMENT '已使用数量',
  420. `version` int(11) DEFAULT 1 COMMENT '版本号(乐观锁)',
  421. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  422. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  423. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  424. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  425. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  426. PRIMARY KEY (`id`),
  427. UNIQUE KEY `uk_material_warehouse` (`material_id`, `warehouse_id`),
  428. KEY `idx_material_id` (`material_id`),
  429. KEY `idx_warehouse_id` (`warehouse_id`),
  430. KEY `idx_inventory_alert` (`warehouse_id`, `material_id`, `available_qty`)
  431. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物资库存表';
  432. -- 3、物资使用记录表
  433. DROP TABLE IF EXISTS aegis.`resource_material_usage`;
  434. CREATE TABLE `resource_material_usage` (
  435. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '使用记录ID',
  436. `material_id` bigint(20) NOT NULL COMMENT '物资ID',
  437. `warehouse_id` bigint(20) DEFAULT NULL COMMENT '仓库ID',
  438. `event_id` bigint(20) DEFAULT NULL COMMENT '事件ID',
  439. `task_id` bigint(20) DEFAULT NULL COMMENT '任务ID',
  440. `qty` decimal(10,2) NOT NULL COMMENT '数量',
  441. `action` varchar(16) NOT NULL COMMENT '操作类型:lock-占用,unlock-释放,consume-消耗,return-归还',
  442. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  443. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  444. PRIMARY KEY (`id`),
  445. KEY `idx_material_id` (`material_id`),
  446. KEY `idx_warehouse_id` (`warehouse_id`),
  447. KEY `idx_event_id` (`event_id`),
  448. KEY `idx_created_at` (`created_at`),
  449. KEY `idx_action_created_at` (`action`, `created_at`)
  450. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物资使用记录表';
  451. -- ----------------------------
  452. -- 资源模块 - 专家专长字典数据
  453. -- ----------------------------
  454. -- 1、创建专家专长字典类型(如果不存在)
  455. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  456. SELECT '专家专长', 'expert_specialty', '0', 'admin', sysdate(), '专家专长领域列表'
  457. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'expert_specialty');
  458. -- 2、添加专家专长字典数据(如果不存在)
  459. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  460. SELECT 1, '应急救援', 'emergency_rescue', 'expert_specialty', '', 'primary', 'N', '0', 'admin', sysdate(), '应急救援'
  461. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'expert_specialty' AND dict_value = 'emergency_rescue');
  462. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  463. SELECT 2, '医疗救护', 'medical_rescue', 'expert_specialty', '', 'success', 'N', '0', 'admin', sysdate(), '医疗救护'
  464. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'expert_specialty' AND dict_value = 'medical_rescue');
  465. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  466. SELECT 3, '消防', 'fire_fighting', 'expert_specialty', '', 'danger', 'N', '0', 'admin', sysdate(), '消防'
  467. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'expert_specialty' AND dict_value = 'fire_fighting');
  468. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  469. SELECT 4, '通信', 'communication', 'expert_specialty', '', 'info', 'N', '0', 'admin', sysdate(), '通信'
  470. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'expert_specialty' AND dict_value = 'communication');
  471. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  472. SELECT 5, '电力', 'power', 'expert_specialty', '', 'warning', 'N', '0', 'admin', sysdate(), '电力'
  473. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'expert_specialty' AND dict_value = 'power');
  474. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  475. SELECT 6, '水利', 'water_conservancy', 'expert_specialty', '', 'primary', 'N', '0', 'admin', sysdate(), '水利'
  476. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'expert_specialty' AND dict_value = 'water_conservancy');
  477. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  478. SELECT 7, '地质', 'geology', 'expert_specialty', '', 'success', 'N', '0', 'admin', sysdate(), '地质'
  479. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'expert_specialty' AND dict_value = 'geology');
  480. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  481. SELECT 8, '气象', 'meteorology', 'expert_specialty', '', 'info', 'N', '0', 'admin', sysdate(), '气象'
  482. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'expert_specialty' AND dict_value = 'meteorology');
  483. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  484. SELECT 9, '交通', 'transportation', 'expert_specialty', '', 'warning', 'N', '0', 'admin', sysdate(), '交通'
  485. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'expert_specialty' AND dict_value = 'transportation');
  486. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  487. SELECT 10, '建筑', 'construction', 'expert_specialty', '', 'primary', 'N', '0', 'admin', sysdate(), '建筑'
  488. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'expert_specialty' AND dict_value = 'construction');
  489. -- ----------------------------
  490. -- 资源模块 - 专家状态字典数据
  491. -- ----------------------------
  492. -- 1、创建专家状态字典类型(如果不存在)
  493. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  494. SELECT '专家状态', 'expert_status', '0', 'admin', sysdate(), '专家状态列表'
  495. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'expert_status');
  496. -- 2、添加专家状态字典数据(如果不存在)
  497. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  498. SELECT 1, '启用', 'active', 'expert_status', '', 'success', 'Y', '0', 'admin', sysdate(), '专家启用状态'
  499. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'expert_status' AND dict_value = 'active');
  500. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  501. SELECT 2, '停用', 'inactive', 'expert_status', '', 'info', 'N', '0', 'admin', sysdate(), '专家停用状态'
  502. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'expert_status' AND dict_value = 'inactive');
  503. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  504. SELECT 3, '黑名单', 'blacklisted', 'expert_status', '', 'danger', 'N', '0', 'admin', sysdate(), '专家黑名单状态'
  505. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'expert_status' AND dict_value = 'blacklisted');
  506. -- ----------------------------
  507. -- 资源模块 - 装备管理字典数据
  508. -- ----------------------------
  509. -- 1、创建装备状态字典类型(如果不存在)
  510. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  511. SELECT '装备状态', 'equipment_status', '0', 'admin', sysdate(), '装备状态列表'
  512. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'equipment_status');
  513. -- 2、添加装备状态字典数据(如果不存在)
  514. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  515. SELECT 1, '可用', 'available', 'equipment_status', '', 'success', 'Y', '0', 'admin', sysdate(), '装备可用状态'
  516. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'equipment_status' AND dict_value = 'available');
  517. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  518. SELECT 2, '占用', 'busy', 'equipment_status', '', 'warning', 'N', '0', 'admin', sysdate(), '装备占用状态'
  519. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'equipment_status' AND dict_value = 'busy');
  520. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  521. SELECT 3, '维修', 'repair', 'equipment_status', '', 'info', 'N', '0', 'admin', sysdate(), '装备维修状态'
  522. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'equipment_status' AND dict_value = 'repair');
  523. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  524. SELECT 4, '报废', 'scrap', 'equipment_status', '', 'danger', 'N', '0', 'admin', sysdate(), '装备报废状态(终态)'
  525. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'equipment_status' AND dict_value = 'scrap');
  526. -- 3、创建装备类型字典类型(如果不存在)
  527. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  528. SELECT '装备类型', 'equipment_type', '0', 'admin', sysdate(), '装备类型列表'
  529. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'equipment_type');
  530. -- 4、添加装备类型字典数据(如果不存在)
  531. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  532. SELECT 1, '通信设备', 'communication', 'equipment_type', '', 'info', 'Y', '0', 'admin', sysdate(), '通信类装备'
  533. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'equipment_type' AND dict_value = 'communication');
  534. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  535. SELECT 2, '救援设备', 'rescue', 'equipment_type', '', 'danger', 'N', '0', 'admin', sysdate(), '救援类装备'
  536. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'equipment_type' AND dict_value = 'rescue');
  537. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  538. SELECT 3, '医疗设备', 'medical', 'equipment_type', '', 'success', 'N', '0', 'admin', sysdate(), '医疗类装备'
  539. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'equipment_type' AND dict_value = 'medical');
  540. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  541. SELECT 4, '工程设备', 'engineering', 'equipment_type', '', 'warning', 'N', '0', 'admin', sysdate(), '工程类装备'
  542. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'equipment_type' AND dict_value = 'engineering');
  543. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  544. SELECT 5, '运输设备', 'transportation', 'equipment_type', '', 'primary', 'N', '0', 'admin', sysdate(), '运输类装备'
  545. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'equipment_type' AND dict_value = 'transportation');
  546. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  547. SELECT 6, '监测设备', 'monitoring', 'equipment_type', '', 'info', 'N', '0', 'admin', sysdate(), '监测类装备'
  548. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'equipment_type' AND dict_value = 'monitoring');
  549. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  550. SELECT 7, '其他', 'other', 'equipment_type', '', '', 'N', '0', 'admin', sysdate(), '其他类型装备'
  551. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'equipment_type' AND dict_value = 'other');
  552. -- ----------------------------
  553. -- 资源模块 - 仓库管理字典数据
  554. -- ----------------------------
  555. -- 1、创建仓库状态字典类型(如果不存在)
  556. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  557. SELECT '仓库状态', 'warehouse_status', '0', 'admin', sysdate(), '仓库状态列表'
  558. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'warehouse_status');
  559. -- 2、添加仓库状态字典数据(如果不存在)
  560. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  561. SELECT 1, '正常', '0', 'warehouse_status', '', 'success', 'Y', '0', 'admin', sysdate(), '仓库正常状态'
  562. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'warehouse_status' AND dict_value = '0');
  563. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  564. SELECT 2, '停用', '1', 'warehouse_status', '', 'danger', 'N', '0', 'admin', sysdate(), '仓库停用状态'
  565. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'warehouse_status' AND dict_value = '1');
  566. -- 3、创建仓库类型字典类型(如果不存在)
  567. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  568. SELECT '仓库类型', 'warehouse_type', '0', 'admin', sysdate(), '仓库类型列表'
  569. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'warehouse_type');
  570. -- 4、添加仓库类型字典数据(如果不存在)
  571. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  572. SELECT 1, '中心仓库', 'center', 'warehouse_type', '', 'primary', 'Y', '0', 'admin', sysdate(), '中心仓库'
  573. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'warehouse_type' AND dict_value = 'center');
  574. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  575. SELECT 2, '临时仓库', 'temporary', 'warehouse_type', '', 'warning', 'N', '0', 'admin', sysdate(), '临时仓库'
  576. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'warehouse_type' AND dict_value = 'temporary');
  577. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  578. SELECT 3, '应急仓库', 'emergency', 'warehouse_type', '', 'danger', 'N', '0', 'admin', sysdate(), '应急仓库'
  579. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'warehouse_type' AND dict_value = 'emergency');
  580. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  581. SELECT 4, '储备仓库', 'reserve', 'warehouse_type', '', 'info', 'N', '0', 'admin', sysdate(), '储备仓库'
  582. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'warehouse_type' AND dict_value = 'reserve');
  583. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  584. SELECT 5, '其他', 'other', 'warehouse_type', '', '', 'N', '0', 'admin', sysdate(), '其他类型仓库'
  585. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'warehouse_type' AND dict_value = 'other');
  586. -- ----------------------------
  587. -- 资源模块 - 装备管理相关表
  588. -- ----------------------------
  589. -- 1、装备表
  590. DROP TABLE IF EXISTS aegis.`resource_equipment`;
  591. CREATE TABLE `resource_equipment` (
  592. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '装备ID',
  593. `equipment_code` varchar(50) NOT NULL COMMENT '装备编码',
  594. `equipment_name` varchar(200) NOT NULL COMMENT '装备名称',
  595. `equipment_type` varchar(64) DEFAULT NULL COMMENT '装备类型',
  596. `brand` varchar(100) DEFAULT NULL COMMENT '品牌',
  597. `model` varchar(100) DEFAULT NULL COMMENT '型号',
  598. `team_id` bigint(20) DEFAULT NULL COMMENT '所属队伍ID',
  599. `warehouse_id` bigint(20) DEFAULT NULL COMMENT '所属仓库ID',
  600. `status` varchar(16) DEFAULT 'available' COMMENT '状态:available-可用,busy-占用,repair-维修,scrap-报废',
  601. `capabilities` varchar(500) DEFAULT NULL COMMENT '能力标签(JSON数组)',
  602. `purchase_date` date DEFAULT NULL COMMENT '采购日期',
  603. `warranty_date` date DEFAULT NULL COMMENT '保修到期日期',
  604. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  605. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  606. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  607. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  608. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  609. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  610. PRIMARY KEY (`id`),
  611. UNIQUE KEY `uk_equipment_code` (`equipment_code`),
  612. KEY `idx_equipment_name` (`equipment_name`),
  613. KEY `idx_team_id` (`team_id`),
  614. KEY `idx_warehouse_id` (`warehouse_id`),
  615. KEY `idx_status` (`status`)
  616. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='装备表';
  617. -- 2、装备操作日志表
  618. DROP TABLE IF EXISTS aegis.`resource_equipment_log`;
  619. CREATE TABLE `resource_equipment_log` (
  620. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID',
  621. `equipment_id` bigint(20) NOT NULL COMMENT '装备ID',
  622. `action` varchar(32) NOT NULL COMMENT '操作类型:assign/release/send_repair/finish_repair/scrap',
  623. `from_status` varchar(16) DEFAULT NULL COMMENT '原状态',
  624. `to_status` varchar(16) DEFAULT NULL COMMENT '新状态',
  625. `dispatch_id` bigint(20) DEFAULT NULL COMMENT '调度ID(操作调度时)',
  626. `event_id` bigint(20) DEFAULT NULL COMMENT '事件ID(操作事件时)',
  627. `diff` text COMMENT '变更内容(JSON格式)',
  628. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  629. `operator_id` bigint(20) DEFAULT NULL COMMENT '操作人ID',
  630. `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人姓名',
  631. `request_id` varchar(64) DEFAULT NULL COMMENT '请求ID(用于追踪)',
  632. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  633. PRIMARY KEY (`id`),
  634. KEY `idx_equipment_id` (`equipment_id`),
  635. KEY `idx_action` (`action`),
  636. KEY `idx_created_at` (`created_at`),
  637. KEY `idx_action_created_at` (`action`, `created_at`)
  638. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='装备操作日志表';
  639. -- ----------------------------
  640. -- 资源模块 - 供应商管理相关表
  641. -- ----------------------------
  642. -- 1、供应商表
  643. DROP TABLE IF EXISTS aegis.`resource_supplier`;
  644. CREATE TABLE `resource_supplier` (
  645. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '供应商ID',
  646. `supplier_code` varchar(50) NOT NULL COMMENT '供应商编码',
  647. `supplier_name` varchar(200) NOT NULL COMMENT '供应商名称',
  648. `credit_code` varchar(64) DEFAULT NULL COMMENT '统一社会信用代码',
  649. `category` varchar(64) DEFAULT NULL COMMENT '供应商分类',
  650. `area` varchar(100) DEFAULT NULL COMMENT '所在区域',
  651. `contact_person` varchar(64) DEFAULT NULL COMMENT '联系人',
  652. `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
  653. `email` varchar(100) DEFAULT NULL COMMENT '邮箱',
  654. `address` varchar(500) DEFAULT NULL COMMENT '地址',
  655. `status` varchar(16) DEFAULT 'active' COMMENT '状态:active-启用,inactive-停用,blacklisted-黑名单',
  656. `rating` int(1) DEFAULT 5 COMMENT '评分(1-5星)',
  657. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  658. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  659. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  660. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  661. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  662. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  663. PRIMARY KEY (`id`),
  664. UNIQUE KEY `uk_supplier_code` (`supplier_code`),
  665. KEY `idx_supplier_name` (`supplier_name`),
  666. KEY `idx_category` (`category`),
  667. KEY `idx_status` (`status`),
  668. KEY `idx_rating` (`rating`)
  669. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商表';
  670. -- 2、供应商资质表
  671. DROP TABLE IF EXISTS aegis.`resource_supplier_license`;
  672. CREATE TABLE `resource_supplier_license` (
  673. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '资质ID',
  674. `supplier_id` bigint(20) NOT NULL COMMENT '供应商ID',
  675. `license_type` varchar(100) NOT NULL COMMENT '资质类型',
  676. `license_no` varchar(100) DEFAULT NULL COMMENT '资质编号',
  677. `issuing_authority` varchar(200) DEFAULT NULL COMMENT '发证机关',
  678. `valid_from` date DEFAULT NULL COMMENT '有效期开始日期',
  679. `valid_to` date DEFAULT NULL COMMENT '有效期结束日期',
  680. `attachment_url` varchar(500) DEFAULT NULL COMMENT '附件URL(文件ID)',
  681. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  682. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  683. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  684. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  685. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  686. PRIMARY KEY (`id`),
  687. KEY `idx_supplier_id` (`supplier_id`),
  688. KEY `idx_license_type` (`license_type`),
  689. KEY `idx_valid_to` (`valid_to`)
  690. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商资质表';
  691. -- ----------------------------
  692. -- 资源模块 - 摄像头管理相关表
  693. -- ----------------------------
  694. -- 摄像头表
  695. DROP TABLE IF EXISTS aegis.`camera`;
  696. CREATE TABLE `camera` (
  697. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '摄像头ID',
  698. `camera_code` varchar(64) NOT NULL COMMENT '摄像头编码/设备ID',
  699. `camera_name` varchar(100) NOT NULL COMMENT '摄像头名称',
  700. `protocol` varchar(32) DEFAULT NULL COMMENT '协议:rtsp/gb28181/rtmp/onvif',
  701. `org_name` varchar(100) DEFAULT NULL COMMENT '所属机构',
  702. `longitude` decimal(10,7) DEFAULT NULL COMMENT '经度',
  703. `latitude` decimal(10,7) DEFAULT NULL COMMENT '纬度',
  704. `address` varchar(200) DEFAULT NULL COMMENT '地址',
  705. `status` varchar(16) DEFAULT 'offline' COMMENT '状态:online/offline',
  706. `extra_config` text COMMENT '扩展配置(JSON字符串)',
  707. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  708. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  709. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  710. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  711. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  712. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  713. PRIMARY KEY (`id`),
  714. KEY `idx_protocol` (`protocol`),
  715. KEY `idx_status` (`status`),
  716. KEY `idx_org_name` (`org_name`)
  717. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='摄像头表';
  718. -- ----------------------------
  719. -- 资源模块 - 采购管理相关表
  720. -- ----------------------------
  721. -- 1、采购申请表
  722. DROP TABLE IF EXISTS aegis.`resource_procurement`;
  723. CREATE TABLE `resource_procurement` (
  724. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '采购ID',
  725. `procurement_no` varchar(50) NOT NULL COMMENT '采购编号',
  726. `title` varchar(200) NOT NULL COMMENT '采购标题',
  727. `urgency` varchar(16) DEFAULT 'normal' COMMENT '紧急程度:low-低,normal-普通,high-高,urgent-紧急',
  728. `status` varchar(16) DEFAULT 'draft' COMMENT '状态:draft-草稿,submitted-已提交,approved-已审核,rejected-已驳回,in_progress-进行中,received-已入库',
  729. `awarded_supplier_id` bigint(20) DEFAULT NULL COMMENT '中标供应商ID',
  730. `awarded_at` datetime DEFAULT NULL COMMENT '中标时间',
  731. `approver_id` bigint(20) DEFAULT NULL COMMENT '审核人ID',
  732. `approver_name` varchar(64) DEFAULT NULL COMMENT '审核人姓名',
  733. `approved_at` datetime DEFAULT NULL COMMENT '审核时间',
  734. `approval_comment` varchar(500) DEFAULT NULL COMMENT '审核意见',
  735. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  736. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  737. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  738. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  739. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  740. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  741. PRIMARY KEY (`id`),
  742. UNIQUE KEY `uk_procurement_no` (`procurement_no`),
  743. KEY `idx_status` (`status`),
  744. KEY `idx_urgency` (`urgency`),
  745. KEY `idx_awarded_supplier_id` (`awarded_supplier_id`)
  746. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购申请表';
  747. -- 2、采购明细表
  748. DROP TABLE IF EXISTS aegis.`resource_procurement_item`;
  749. CREATE TABLE `resource_procurement_item` (
  750. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  751. `procurement_id` bigint(20) NOT NULL COMMENT '采购申请ID',
  752. `category` varchar(16) NOT NULL COMMENT '分类:material-物资,equipment-装备',
  753. `spec` varchar(500) DEFAULT NULL COMMENT '规格描述',
  754. `qty` decimal(10,2) NOT NULL COMMENT '数量',
  755. `unit` varchar(16) DEFAULT NULL COMMENT '单位',
  756. `is_reusable` tinyint(1) DEFAULT 0 COMMENT '是否可重复使用:0-否,1-是',
  757. `target_material_id` bigint(20) DEFAULT NULL COMMENT '目标物资ID(入库时关联)',
  758. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  759. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  760. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  761. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  762. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  763. PRIMARY KEY (`id`),
  764. KEY `idx_procurement_id` (`procurement_id`),
  765. KEY `idx_category` (`category`),
  766. KEY `idx_target_material_id` (`target_material_id`)
  767. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购明细表';
  768. -- 3、供应商报价表
  769. DROP TABLE IF EXISTS aegis.`resource_procurement_quote`;
  770. CREATE TABLE `resource_procurement_quote` (
  771. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '报价ID',
  772. `procurement_id` bigint(20) NOT NULL COMMENT '采购申请ID',
  773. `supplier_id` bigint(20) NOT NULL COMMENT '供应商ID',
  774. `total_price` decimal(10,2) NOT NULL COMMENT '总价',
  775. `eta` varchar(100) DEFAULT NULL COMMENT '预计交货时间',
  776. `note` varchar(500) DEFAULT NULL COMMENT '报价说明',
  777. `is_awarded` tinyint(1) DEFAULT 0 COMMENT '是否中标:0-未中标,1-已中标',
  778. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  779. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  780. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  781. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  782. PRIMARY KEY (`id`),
  783. KEY `idx_procurement_id` (`procurement_id`),
  784. KEY `idx_supplier_id` (`supplier_id`),
  785. KEY `idx_is_awarded` (`is_awarded`),
  786. UNIQUE KEY `uk_procurement_supplier` (`procurement_id`, `supplier_id`)
  787. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商报价表';
  788. -- ----------------------------
  789. -- 资源模块 - 征用管理相关表
  790. -- ----------------------------
  791. -- 1、征用申请表
  792. DROP TABLE IF EXISTS aegis.`resource_requisition`;
  793. CREATE TABLE `resource_requisition` (
  794. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '征用ID',
  795. `team_id` bigint(20) NOT NULL COMMENT '队伍ID',
  796. `requisition_no` varchar(50) NOT NULL COMMENT '征用编号',
  797. `reason` varchar(500) DEFAULT NULL COMMENT '征用原因',
  798. `status` varchar(16) DEFAULT 'draft' COMMENT '状态:draft-草稿,approved-已审批,active-进行中,ended-已结束,rejected-已驳回',
  799. `start_at` datetime DEFAULT NULL COMMENT '开始时间',
  800. `end_at` datetime DEFAULT NULL COMMENT '结束时间',
  801. `approver_id` bigint(20) DEFAULT NULL COMMENT '审批人ID',
  802. `approver_name` varchar(64) DEFAULT NULL COMMENT '审批人姓名',
  803. `approved_at` datetime DEFAULT NULL COMMENT '审批时间',
  804. `approval_comment` varchar(500) DEFAULT NULL COMMENT '审批意见',
  805. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  806. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  807. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  808. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  809. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  810. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  811. PRIMARY KEY (`id`),
  812. UNIQUE KEY `uk_requisition_no` (`requisition_no`),
  813. KEY `idx_team_id` (`team_id`),
  814. KEY `idx_status` (`status`)
  815. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='征用申请表';
  816. -- 2、征用协议表
  817. DROP TABLE IF EXISTS aegis.`resource_requisition_agreement`;
  818. CREATE TABLE `resource_requisition_agreement` (
  819. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '协议ID',
  820. `requisition_id` bigint(20) NOT NULL COMMENT '征用ID',
  821. `service_scope` varchar(500) DEFAULT NULL COMMENT '服务范围',
  822. `billing_type` varchar(16) DEFAULT 'hour' COMMENT '计费方式:hour-按小时,day-按天,task-按任务',
  823. `unit_price` decimal(10,2) DEFAULT NULL COMMENT '单价',
  824. `currency` varchar(16) DEFAULT 'CNY' COMMENT '币种',
  825. `effective_from` datetime DEFAULT NULL COMMENT '生效开始时间',
  826. `effective_to` datetime DEFAULT NULL COMMENT '生效结束时间',
  827. `terms` text COMMENT '协议条款',
  828. `attachment_url` varchar(500) DEFAULT NULL COMMENT '附件URL(文件ID)',
  829. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  830. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  831. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  832. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  833. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  834. PRIMARY KEY (`id`),
  835. KEY `idx_requisition_id` (`requisition_id`),
  836. KEY `idx_effective_from` (`effective_from`),
  837. KEY `idx_effective_to` (`effective_to`)
  838. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='征用协议表';
  839. -- 3、补偿记录表
  840. DROP TABLE IF EXISTS aegis.`resource_requisition_compensation`;
  841. CREATE TABLE `resource_requisition_compensation` (
  842. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '补偿ID',
  843. `requisition_id` bigint(20) NOT NULL COMMENT '征用ID',
  844. `workload` decimal(10,2) DEFAULT NULL COMMENT '工作量(小时/天/任务数)',
  845. `workload_unit` varchar(16) DEFAULT NULL COMMENT '工作量单位:hour/day/task',
  846. `unit_price` decimal(10,2) NOT NULL COMMENT '单价',
  847. `amount` decimal(10,2) NOT NULL COMMENT '金额',
  848. `currency` varchar(16) DEFAULT 'CNY' COMMENT '币种',
  849. `invoice_no` varchar(100) DEFAULT NULL COMMENT '发票号',
  850. `paid_at` datetime DEFAULT NULL COMMENT '支付时间',
  851. `status` varchar(16) DEFAULT 'pending' COMMENT '状态:pending-待结算,settled-已结算',
  852. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  853. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  854. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  855. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  856. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  857. PRIMARY KEY (`id`),
  858. KEY `idx_requisition_id` (`requisition_id`),
  859. KEY `idx_status` (`status`),
  860. KEY `idx_paid_at` (`paid_at`)
  861. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='补偿记录表';
  862. -- ----------------------------
  863. -- 通知模块 - 通知管理相关表
  864. -- ----------------------------
  865. -- 1、通知消息表
  866. DROP TABLE IF EXISTS aegis.`sys_notification`;
  867. CREATE TABLE `sys_notification` (
  868. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '通知ID',
  869. `title` varchar(200) NOT NULL COMMENT '通知标题',
  870. `content` text COMMENT '通知内容',
  871. `template_id` bigint(20) DEFAULT NULL COMMENT '模板ID(可选)',
  872. `channel` varchar(16) NOT NULL DEFAULT 'station' COMMENT '通知渠道:station-站内消息,sms-短信,email-邮件,push-推送',
  873. `receiver_id` bigint(20) NOT NULL COMMENT '接收者用户ID',
  874. `receiver_name` varchar(64) DEFAULT NULL COMMENT '接收者姓名(冗余字段)',
  875. `sender_id` bigint(20) DEFAULT NULL COMMENT '发送者用户ID(系统通知为NULL)',
  876. `sender_name` varchar(64) DEFAULT NULL COMMENT '发送者姓名(冗余字段)',
  877. `business_type` varchar(64) DEFAULT NULL COMMENT '业务类型:plan_publish-预案发布,plan_approve-预案审批,inventory_alert-库存报警等',
  878. `business_id` bigint(20) DEFAULT NULL COMMENT '业务ID(如预案ID、事件ID等)',
  879. `status` varchar(16) DEFAULT 'pending' COMMENT '通知状态:pending-待发送,sent-已发送,read-已读,failed-发送失败',
  880. `read_time` datetime DEFAULT NULL COMMENT '已读时间',
  881. `send_time` datetime DEFAULT NULL COMMENT '发送时间',
  882. `expire_time` datetime DEFAULT NULL COMMENT '过期时间(可选)',
  883. `priority` varchar(16) DEFAULT 'normal' COMMENT '优先级:low-低,normal-普通,high-高,urgent-紧急',
  884. `extra_data` text COMMENT '扩展数据(JSON格式)',
  885. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  886. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  887. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  888. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  889. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  890. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  891. PRIMARY KEY (`id`),
  892. KEY `idx_receiver_id` (`receiver_id`),
  893. KEY `idx_status` (`status`),
  894. KEY `idx_channel` (`channel`),
  895. KEY `idx_business` (`business_type`, `business_id`),
  896. KEY `idx_create_time` (`create_time`)
  897. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知消息表';
  898. -- 2、通知模板表
  899. DROP TABLE IF EXISTS aegis.`sys_notification_template`;
  900. CREATE TABLE `sys_notification_template` (
  901. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '模板ID',
  902. `template_code` varchar(64) NOT NULL COMMENT '模板编码(唯一)',
  903. `template_name` varchar(100) NOT NULL COMMENT '模板名称',
  904. `business_type` varchar(64) NOT NULL COMMENT '业务类型:plan_publish-预案发布,plan_approve-预案审批等',
  905. `channel` varchar(16) NOT NULL COMMENT '通知渠道:station-站内消息,sms-短信,email-邮件',
  906. `title_template` varchar(200) NOT NULL COMMENT '标题模板(支持变量:${变量名})',
  907. `content_template` text NOT NULL COMMENT '内容模板(支持变量:${变量名})',
  908. `variables` text COMMENT '模板变量说明(JSON格式)',
  909. `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
  910. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  911. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  912. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  913. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  914. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  915. PRIMARY KEY (`id`),
  916. UNIQUE KEY `uk_template_code` (`template_code`),
  917. KEY `idx_business_type` (`business_type`)
  918. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知模板表';
  919. -- 3、通知渠道配置表
  920. DROP TABLE IF EXISTS aegis.`sys_notification_channel_config`;
  921. CREATE TABLE `sys_notification_channel_config` (
  922. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '配置ID',
  923. `channel` varchar(16) NOT NULL COMMENT '通知渠道:sms-短信,email-邮件',
  924. `config_key` varchar(64) NOT NULL COMMENT '配置键',
  925. `config_value` text COMMENT '配置值(加密存储)',
  926. `description` varchar(200) DEFAULT NULL COMMENT '配置说明',
  927. `status` char(1) DEFAULT '0' COMMENT '状态(0启用 1停用)',
  928. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  929. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  930. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  931. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  932. PRIMARY KEY (`id`),
  933. UNIQUE KEY `uk_channel_key` (`channel`, `config_key`)
  934. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知渠道配置表';
  935. -- ----------------------------
  936. -- 文件模块 - 文件管理相关表
  937. -- ----------------------------
  938. -- 文件信息表
  939. DROP TABLE IF EXISTS aegis.`sys_file_info`;
  940. CREATE TABLE `sys_file_info` (
  941. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文件ID',
  942. `file_path` varchar(500) NOT NULL COMMENT '文件存储路径(相对路径,如:/profile/upload/2025/11/05/test_123456.pdf)',
  943. `original_name` varchar(255) NOT NULL COMMENT '原始文件名',
  944. `file_size` bigint(20) NOT NULL COMMENT '文件大小(字节)',
  945. `file_type` varchar(64) DEFAULT NULL COMMENT '文件类型(扩展名,如jpg、pdf)',
  946. `mime_type` varchar(128) DEFAULT NULL COMMENT 'MIME类型',
  947. `upload_user_id` bigint(20) DEFAULT NULL COMMENT '上传者用户ID',
  948. `upload_user_name` varchar(64) DEFAULT NULL COMMENT '上传者姓名(冗余字段)',
  949. `file_category` varchar(64) DEFAULT NULL COMMENT '文件分类:document-文档,image-图片,video-视频等',
  950. `status` varchar(16) DEFAULT 'normal' COMMENT '文件状态:normal-正常,deleted-已删除',
  951. `download_count` int(11) DEFAULT 0 COMMENT '下载次数',
  952. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  953. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  954. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  955. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  956. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  957. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  958. PRIMARY KEY (`id`),
  959. KEY `idx_file_path` (`file_path`),
  960. KEY `idx_upload_user` (`upload_user_id`),
  961. KEY `idx_create_time` (`create_time`),
  962. KEY `idx_status` (`status`),
  963. KEY `idx_file_category` (`file_category`)
  964. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文件信息表';
  965. -- ----------------------------
  966. -- 应急调度模块 - 值守接警相关表
  967. -- ----------------------------
  968. -- 1、值班排班表
  969. DROP TABLE IF EXISTS aegis.`duty_shift`;
  970. CREATE TABLE `duty_shift` (
  971. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '排班ID',
  972. `shift_date` date NOT NULL COMMENT '排班日期',
  973. `shift_type` varchar(32) DEFAULT NULL COMMENT '班次类型:day-白班,night-夜班,all-全天',
  974. `start_time` time DEFAULT NULL COMMENT '开始时间',
  975. `end_time` time DEFAULT NULL COMMENT '结束时间',
  976. `status` varchar(16) DEFAULT 'active' COMMENT '状态:active-有效,cancelled-已取消',
  977. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  978. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  979. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  980. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  981. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  982. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  983. PRIMARY KEY (`id`),
  984. KEY `idx_shift_date` (`shift_date`),
  985. KEY `idx_shift_type` (`shift_type`),
  986. KEY `idx_status` (`status`)
  987. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班排班表';
  988. -- 1.1、排班成员关联表
  989. DROP TABLE IF EXISTS aegis.`duty_shift_member`;
  990. CREATE TABLE `duty_shift_member` (
  991. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '关联ID',
  992. `shift_id` bigint(20) NOT NULL COMMENT '排班ID',
  993. `user_id` bigint(20) NOT NULL COMMENT '用户ID',
  994. `role` varchar(32) DEFAULT NULL COMMENT '角色:leader-组长,member-成员',
  995. `phone` varchar(20) DEFAULT NULL COMMENT '联系电话(冗余字段,记录排班时的联系方式)',
  996. `check_in_time` datetime DEFAULT NULL COMMENT '签到时间',
  997. `check_out_time` datetime DEFAULT NULL COMMENT '签退时间',
  998. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  999. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  1000. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  1001. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  1002. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  1003. PRIMARY KEY (`id`),
  1004. KEY `idx_shift_id` (`shift_id`),
  1005. KEY `idx_user_id` (`user_id`),
  1006. UNIQUE KEY `uk_shift_user` (`shift_id`, `user_id`)
  1007. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='排班成员关联表';
  1008. -- 2、警情主表
  1009. DROP TABLE IF EXISTS aegis.`duty_alert`;
  1010. CREATE TABLE `duty_alert` (
  1011. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '警情ID',
  1012. `alert_no` varchar(50) NOT NULL COMMENT '警情编号(唯一)',
  1013. `source_channel` varchar(32) DEFAULT NULL COMMENT '来源渠道(字典:alert_source_channel)',
  1014. `caller_number` varchar(20) DEFAULT NULL COMMENT '来电号码(电话渠道使用:122、12345、110)',
  1015. `source_ext_info` text COMMENT '来源扩展信息(JSON格式,不同渠道存储不同信息:转办渠道-转办单位/转办人/转办时间,监测渠道-设备ID/监测数据,媒体渠道-媒体来源/链接/发布时间等)',
  1016. `summary` varchar(1000) DEFAULT NULL COMMENT '警情摘要',
  1017. `initial_level` varchar(16) DEFAULT NULL COMMENT '初判等级:level1-一级,level2-二级,level3-三级,level4-四级',
  1018. `status` varchar(32) DEFAULT 'draft' COMMENT '警情状态:draft-草稿,pending_review-待审核,reviewed-已审核,transferred-已转警,converted-已转事件,closed-已关闭(审核详情见duty_alert_log,转警详情见duty_alert_transfer,转事件详情见duty_alert_convert)',
  1019. `occurred_at` datetime DEFAULT NULL COMMENT '发生时间',
  1020. `location` varchar(255) DEFAULT NULL COMMENT '发生地点',
  1021. `longitude` decimal(10,7) DEFAULT NULL COMMENT '经度',
  1022. `latitude` decimal(10,7) DEFAULT NULL COMMENT '纬度',
  1023. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  1024. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  1025. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  1026. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  1027. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  1028. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  1029. PRIMARY KEY (`id`),
  1030. UNIQUE KEY `uk_alert_no` (`alert_no`),
  1031. KEY `idx_source_channel` (`source_channel`),
  1032. KEY `idx_status` (`status`),
  1033. KEY `idx_occurred_at` (`occurred_at`),
  1034. KEY `idx_caller_number` (`caller_number`)
  1035. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='警情主表';
  1036. -- 3、警情操作日志表
  1037. DROP TABLE IF EXISTS aegis.`duty_alert_log`;
  1038. CREATE TABLE `duty_alert_log` (
  1039. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID',
  1040. `alert_id` bigint(20) NOT NULL COMMENT '警情ID',
  1041. `action` varchar(32) NOT NULL COMMENT '操作类型:alert_create/alert_update/alert_close/alert_review_submit/alert_review_approve/alert_review_reject/transfer_apply/transfer_approve/transfer_reject/transfer_feedback/transfer_processed/convert_apply/convert_approve/convert_reject/convert_event_created 等',
  1042. `payload` text COMMENT '操作详情(JSON格式)',
  1043. `operator_id` bigint(20) DEFAULT NULL COMMENT '操作人ID',
  1044. `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人姓名',
  1045. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  1046. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  1047. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  1048. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  1049. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  1050. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  1051. PRIMARY KEY (`id`),
  1052. KEY `idx_alert_id` (`alert_id`),
  1053. KEY `idx_action` (`action`),
  1054. KEY `idx_operator_id` (`operator_id`),
  1055. KEY `idx_created_at` (`created_at`)
  1056. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='警情操作日志表';
  1057. -- 4、转警记录表
  1058. DROP TABLE IF EXISTS aegis.`duty_alert_transfer`;
  1059. CREATE TABLE `duty_alert_transfer` (
  1060. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '转警记录ID',
  1061. `alert_id` bigint(20) NOT NULL COMMENT '警情ID',
  1062. `target_org` varchar(200) NOT NULL COMMENT '目标单位名称',
  1063. `contact` varchar(64) NOT NULL COMMENT '联系人姓名',
  1064. `mobile` varchar(20) NOT NULL COMMENT '联系电话',
  1065. `transfer_desc` varchar(500) DEFAULT NULL COMMENT '转警说明/原因',
  1066. `transfer_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '转警时间',
  1067. `feedback` text COMMENT '回执反馈内容',
  1068. `feedback_time` datetime DEFAULT NULL COMMENT '反馈时间',
  1069. `status` varchar(32) DEFAULT 'pending_review' COMMENT '转警状态:pending_review-待审核,pending_feedback-待反馈,feedback_received-已反馈,processed-已处理,rejected-已驳回',
  1070. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  1071. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  1072. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  1073. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  1074. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  1075. PRIMARY KEY (`id`),
  1076. KEY `idx_alert_id` (`alert_id`),
  1077. KEY `idx_status` (`status`),
  1078. KEY `idx_transfer_time` (`transfer_time`)
  1079. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='转警记录表';
  1080. -- 5、转事件记录表
  1081. DROP TABLE IF EXISTS aegis.`duty_alert_convert`;
  1082. CREATE TABLE `duty_alert_convert` (
  1083. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '转事件记录ID',
  1084. `alert_id` bigint(20) NOT NULL COMMENT '警情ID',
  1085. `event_id` bigint(20) DEFAULT NULL COMMENT '事件ID(审核通过后创建事件时填充)',
  1086. `convert_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '转事件时间',
  1087. `convert_reason` varchar(500) DEFAULT NULL COMMENT '转事件原因/说明',
  1088. `operator_id` bigint(20) DEFAULT NULL COMMENT '操作人ID',
  1089. `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人姓名',
  1090. `review_required` tinyint(1) DEFAULT 0 COMMENT '是否需要审核:0-否,1-是',
  1091. `review_status` varchar(16) DEFAULT 'none' COMMENT '审核状态:none-无需审核,pending-待审核,approved-已审核,rejected-已驳回',
  1092. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  1093. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  1094. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  1095. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  1096. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  1097. PRIMARY KEY (`id`),
  1098. UNIQUE KEY `uk_alert_id` (`alert_id`),
  1099. KEY `idx_event_id` (`event_id`),
  1100. KEY `idx_operator_id` (`operator_id`),
  1101. KEY `idx_convert_time` (`convert_time`)
  1102. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='转事件记录表';
  1103. -- ----------------------------
  1104. -- 应急调度模块 - 事件管理相关表
  1105. -- ----------------------------
  1106. -- 1、事件主表
  1107. DROP TABLE IF EXISTS aegis.`event`;
  1108. CREATE TABLE `event` (
  1109. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '事件ID',
  1110. `event_no` varchar(50) NOT NULL COMMENT '事件编号(唯一)',
  1111. `title` varchar(200) NOT NULL COMMENT '事件标题',
  1112. `type` varchar(64) NOT NULL COMMENT '事件类型(字典值)',
  1113. `level` varchar(32) NOT NULL COMMENT '事件级别:I/II/III/IV',
  1114. `status` varchar(32) NOT NULL DEFAULT 'draft' COMMENT '事件状态:draft-草稿,pending-待处理,processing-处理中,completed-已完成,archived-归档',
  1115. `important_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否重点事件:0-否,1-是',
  1116. `important_by` varchar(64) DEFAULT NULL COMMENT '标记人为重点的操作人',
  1117. `important_time` datetime DEFAULT NULL COMMENT '标记为重点的时间',
  1118. `occurred_at` datetime NOT NULL COMMENT '事件发生时间',
  1119. `location` varchar(255) DEFAULT NULL COMMENT '地点描述',
  1120. `longitude` decimal(10,7) DEFAULT NULL COMMENT '经度',
  1121. `latitude` decimal(10,7) DEFAULT NULL COMMENT '纬度',
  1122. `source` varchar(64) DEFAULT NULL COMMENT '来源渠道:manual-人工录入,alert-接警转入,other-预留',
  1123. `alert_id` bigint(20) DEFAULT NULL COMMENT '接警记录ID(若来自接警转换)',
  1124. `summary` text COMMENT '事件摘要',
  1125. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  1126. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  1127. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  1128. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  1129. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  1130. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  1131. PRIMARY KEY (`id`),
  1132. UNIQUE KEY `uk_event_no` (`event_no`),
  1133. KEY `idx_type` (`type`),
  1134. KEY `idx_level` (`level`),
  1135. KEY `idx_status` (`status`),
  1136. KEY `idx_occurred_at` (`occurred_at`),
  1137. KEY `idx_alert_id` (`alert_id`),
  1138. CONSTRAINT `fk_event_alert` FOREIGN KEY (`alert_id`) REFERENCES `duty_alert` (`id`)
  1139. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='事件主表';
  1140. -- 2、事件日志表
  1141. DROP TABLE IF EXISTS aegis.`event_log`;
  1142. CREATE TABLE `event_log` (
  1143. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID',
  1144. `event_id` bigint(20) NOT NULL COMMENT '事件ID',
  1145. `action` varchar(64) NOT NULL COMMENT '操作类型:event_created/event_updated/status_changed/dispatch_linked/report_submitted等',
  1146. `payload` text COMMENT '操作详情(JSON格式)',
  1147. `operator_id` bigint(20) DEFAULT NULL COMMENT '操作人ID',
  1148. `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人姓名',
  1149. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  1150. PRIMARY KEY (`id`),
  1151. KEY `idx_event_id` (`event_id`),
  1152. KEY `idx_action` (`action`),
  1153. KEY `idx_created_at` (`created_at`),
  1154. CONSTRAINT `fk_event_log_event` FOREIGN KEY (`event_id`) REFERENCES `event` (`id`)
  1155. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='事件日志表';
  1156. -- ----------------------------
  1157. -- 应急调度模块 - 上报模板管理
  1158. -- ----------------------------
  1159. -- 上报模板表
  1160. DROP TABLE IF EXISTS aegis.`report_template`;
  1161. CREATE TABLE `report_template` (
  1162. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '模板ID',
  1163. `name` varchar(50) NOT NULL COMMENT '模板名称',
  1164. `description` varchar(200) DEFAULT NULL COMMENT '模板描述',
  1165. `fields` json DEFAULT NULL COMMENT '字段配置(JSON格式,支持嵌套结构:groups, lists, fields)',
  1166. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  1167. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  1168. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  1169. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  1170. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  1171. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  1172. PRIMARY KEY (`id`),
  1173. KEY `idx_name` (`name`),
  1174. KEY `idx_del_flag` (`del_flag`)
  1175. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='上报模板表';
  1176. -- 省厅上报记录表
  1177. DROP TABLE IF EXISTS aegis.`event_province_report`;
  1178. CREATE TABLE `event_province_report` (
  1179. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '上报记录ID',
  1180. `event_id` bigint(20) NOT NULL COMMENT '事件ID(外键关联event.id)',
  1181. `template_id` bigint(20) NOT NULL COMMENT '使用的模板ID(外键关联report_template.id)',
  1182. `report_type` varchar(16) NOT NULL DEFAULT 'initial' COMMENT '上报类型:initial-首次上报,followup-续报',
  1183. `report_sequence` int NOT NULL DEFAULT 1 COMMENT '上报序号(第几次上报,从1开始)',
  1184. `fields` json DEFAULT NULL COMMENT '动态字段数据(JSON格式,根据模板fields结构存储)',
  1185. `status` varchar(32) NOT NULL DEFAULT 'pending' COMMENT '上报状态:pending-待上报,submitting-上报中,success-成功,failed-失败,retry-重试中',
  1186. `request_payload` json DEFAULT NULL COMMENT '请求数据(发送给省厅的完整请求体,JSON格式)',
  1187. `response_payload` json DEFAULT NULL COMMENT '响应数据(省厅返回的响应体,JSON格式)',
  1188. `retry_count` int DEFAULT 0 COMMENT '重试次数(最多3次)',
  1189. `last_retry_time` datetime DEFAULT NULL COMMENT '最后重试时间',
  1190. `error_message` varchar(500) DEFAULT NULL COMMENT '错误信息(失败时记录)',
  1191. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  1192. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  1193. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  1194. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  1195. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  1196. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  1197. PRIMARY KEY (`id`),
  1198. KEY `idx_event_id` (`event_id`),
  1199. KEY `idx_template_id` (`template_id`),
  1200. KEY `idx_status` (`status`),
  1201. KEY `idx_report_type` (`report_type`),
  1202. KEY `idx_create_time` (`create_time`),
  1203. CONSTRAINT `fk_province_report_event` FOREIGN KEY (`event_id`) REFERENCES `event` (`id`),
  1204. CONSTRAINT `fk_province_report_template` FOREIGN KEY (`template_id`) REFERENCES `report_template` (`id`)
  1205. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='省厅上报记录表';
  1206. -- ----------------------------
  1207. -- 资源模块 - 物资管理字典数据
  1208. -- ----------------------------
  1209. -- 1、创建物资单位字典类型(如果不存在)
  1210. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1211. SELECT '物资单位', 'material_unit', '0', 'admin', sysdate(), '物资单位列表'
  1212. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'material_unit');
  1213. -- 2、添加物资单位字典数据(如果不存在)
  1214. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1215. SELECT 1, '个', 'piece', 'material_unit', '', '', 'Y', '0', 'admin', sysdate(), '个'
  1216. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_unit' AND dict_value = 'piece');
  1217. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1218. SELECT 2, '件', 'item', 'material_unit', '', '', 'N', '0', 'admin', sysdate(), '件'
  1219. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_unit' AND dict_value = 'item');
  1220. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1221. SELECT 3, '箱', 'box', 'material_unit', '', '', 'N', '0', 'admin', sysdate(), '箱'
  1222. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_unit' AND dict_value = 'box');
  1223. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1224. SELECT 4, '包', 'pack', 'material_unit', '', '', 'N', '0', 'admin', sysdate(), '包'
  1225. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_unit' AND dict_value = 'pack');
  1226. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1227. SELECT 5, '升', 'liter', 'material_unit', '', '', 'N', '0', 'admin', sysdate(), '升'
  1228. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_unit' AND dict_value = 'liter');
  1229. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1230. SELECT 6, '公斤', 'kilogram', 'material_unit', '', '', 'N', '0', 'admin', sysdate(), '公斤'
  1231. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_unit' AND dict_value = 'kilogram');
  1232. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1233. SELECT 7, '吨', 'ton', 'material_unit', '', '', 'N', '0', 'admin', sysdate(), '吨'
  1234. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_unit' AND dict_value = 'ton');
  1235. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1236. SELECT 8, '米', 'meter', 'material_unit', '', '', 'N', '0', 'admin', sysdate(), '米'
  1237. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_unit' AND dict_value = 'meter');
  1238. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1239. SELECT 9, '平方米', 'square_meter', 'material_unit', '', '', 'N', '0', 'admin', sysdate(), '平方米'
  1240. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_unit' AND dict_value = 'square_meter');
  1241. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1242. SELECT 10, '立方米', 'cubic_meter', 'material_unit', '', '', 'N', '0', 'admin', sysdate(), '立方米'
  1243. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_unit' AND dict_value = 'cubic_meter');
  1244. -- 3、创建是否可重复使用字典类型(如果不存在)
  1245. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1246. SELECT '是否可重复使用', 'material_reusable', '0', 'admin', sysdate(), '是否可重复使用列表'
  1247. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'material_reusable');
  1248. -- 4、添加是否可重复使用字典数据(如果不存在)
  1249. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1250. SELECT 1, '否', '0', 'material_reusable', '', '', 'Y', '0', 'admin', sysdate(), '不可重复使用'
  1251. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_reusable' AND dict_value = '0');
  1252. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1253. SELECT 2, '是', '1', 'material_reusable', '', '', 'N', '0', 'admin', sysdate(), '可重复使用'
  1254. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_reusable' AND dict_value = '1');
  1255. -- 5、创建是否需要消毒字典类型(如果不存在)
  1256. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1257. SELECT '是否需要消毒', 'material_sterilize_required', '0', 'admin', sysdate(), '是否需要消毒列表'
  1258. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'material_sterilize_required');
  1259. -- 6、添加是否需要消毒字典数据(如果不存在)
  1260. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1261. SELECT 1, '否', '0', 'material_sterilize_required', '', '', 'Y', '0', 'admin', sysdate(), '不需要消毒'
  1262. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_sterilize_required' AND dict_value = '0');
  1263. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1264. SELECT 2, '是', '1', 'material_sterilize_required', '', '', 'N', '0', 'admin', sysdate(), '需要消毒'
  1265. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'material_sterilize_required' AND dict_value = '1');
  1266. -- 7、创建库存调整原因字典类型(如果不存在)
  1267. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1268. SELECT '库存调整原因', 'inventory_adjustment_reason', '0', 'admin', sysdate(), '库存调整原因列表'
  1269. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'inventory_adjustment_reason');
  1270. -- 8、添加库存调整原因字典数据(如果不存在)
  1271. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1272. SELECT 1, '盘点', 'physical_count', 'inventory_adjustment_reason', '', 'primary', 'N', '0', 'admin', sysdate(), '物理盘点差异'
  1273. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'inventory_adjustment_reason' AND dict_value = 'physical_count');
  1274. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1275. SELECT 2, '损失', 'loss', 'inventory_adjustment_reason', '', 'danger', 'N', '0', 'admin', sysdate(), '库存损失'
  1276. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'inventory_adjustment_reason' AND dict_value = 'loss');
  1277. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1278. SELECT 3, '损坏', 'damage', 'inventory_adjustment_reason', '', 'warning', 'N', '0', 'admin', sysdate(), '物资损坏'
  1279. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'inventory_adjustment_reason' AND dict_value = 'damage');
  1280. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1281. SELECT 4, '盗窃', 'theft', 'inventory_adjustment_reason', '', 'danger', 'N', '0', 'admin', sysdate(), '盗窃损失'
  1282. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'inventory_adjustment_reason' AND dict_value = 'theft');
  1283. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1284. SELECT 5, '发现', 'found', 'inventory_adjustment_reason', '', 'success', 'N', '0', 'admin', sysdate(), '发现未登记物资'
  1285. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'inventory_adjustment_reason' AND dict_value = 'found');
  1286. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1287. SELECT 6, '过期', 'expired', 'inventory_adjustment_reason', '', 'warning', 'N', '0', 'admin', sysdate(), '物资过期'
  1288. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'inventory_adjustment_reason' AND dict_value = 'expired');
  1289. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1290. SELECT 7, '淘汰', 'obsolete', 'inventory_adjustment_reason', '', 'info', 'N', '0', 'admin', sysdate(), '物资淘汰'
  1291. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'inventory_adjustment_reason' AND dict_value = 'obsolete');
  1292. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1293. SELECT 8, '更正', 'correction', 'inventory_adjustment_reason', '', '', 'N', '0', 'admin', sysdate(), '数据更正'
  1294. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'inventory_adjustment_reason' AND dict_value = 'correction');
  1295. -- ----------------------------
  1296. -- 资源模块 - 供应商管理字典配置
  1297. -- ----------------------------
  1298. -- 1、创建供应商状态字典类型(如果不存在)
  1299. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1300. SELECT '供应商状态', 'supplier_status', '0', 'admin', sysdate(), '供应商状态列表'
  1301. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'supplier_status');
  1302. -- 2、添加供应商状态字典数据(如果不存在)
  1303. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1304. SELECT 1, '启用', 'active', 'supplier_status', '', 'success', 'Y', '0', 'admin', sysdate(), '供应商启用状态'
  1305. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_status' AND dict_value = 'active');
  1306. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1307. SELECT 2, '停用', 'inactive', 'supplier_status', '', 'info', 'N', '0', 'admin', sysdate(), '供应商停用状态'
  1308. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_status' AND dict_value = 'inactive');
  1309. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1310. SELECT 3, '黑名单', 'blacklisted', 'supplier_status', '', 'danger', 'N', '0', 'admin', sysdate(), '供应商黑名单状态'
  1311. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_status' AND dict_value = 'blacklisted');
  1312. -- 3、创建供应商分类字典类型(如果不存在)
  1313. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1314. SELECT '供应商分类', 'supplier_category', '0', 'admin', sysdate(), '供应商分类列表'
  1315. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'supplier_category');
  1316. -- 4、添加供应商分类字典数据(如果不存在)
  1317. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1318. SELECT 1, '设备供应商', 'equipment', 'supplier_category', '', 'primary', 'Y', '0', 'admin', sysdate(), '设备类供应商'
  1319. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_category' AND dict_value = 'equipment');
  1320. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1321. SELECT 2, '物资供应商', 'material', 'supplier_category', '', 'success', 'N', '0', 'admin', sysdate(), '物资类供应商'
  1322. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_category' AND dict_value = 'material');
  1323. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1324. SELECT 3, '服务供应商', 'service', 'supplier_category', '', 'info', 'N', '0', 'admin', sysdate(), '服务类供应商'
  1325. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_category' AND dict_value = 'service');
  1326. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1327. SELECT 4, '其他', 'other', 'supplier_category', '', '', 'N', '0', 'admin', sysdate(), '其他类型供应商'
  1328. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_category' AND dict_value = 'other');
  1329. -- 5、创建供应商所在区域字典类型(如果不存在)
  1330. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1331. SELECT '供应商所在区域', 'supplier_area', '0', 'admin', sysdate(), '供应商所在区域列表'
  1332. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'supplier_area');
  1333. -- 6、添加供应商所在区域字典数据(如果不存在)
  1334. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1335. SELECT 1, '华东', 'east', 'supplier_area', '', 'primary', 'Y', '0', 'admin', sysdate(), '华东地区'
  1336. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_area' AND dict_value = 'east');
  1337. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1338. SELECT 2, '华南', 'south', 'supplier_area', '', 'success', 'N', '0', 'admin', sysdate(), '华南地区'
  1339. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_area' AND dict_value = 'south');
  1340. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1341. SELECT 3, '华北', 'north', 'supplier_area', '', 'info', 'N', '0', 'admin', sysdate(), '华北地区'
  1342. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_area' AND dict_value = 'north');
  1343. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1344. SELECT 4, '西南', 'southwest', 'supplier_area', '', 'warning', 'N', '0', 'admin', sysdate(), '西南地区'
  1345. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_area' AND dict_value = 'southwest');
  1346. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1347. SELECT 5, '西北', 'northwest', 'supplier_area', '', '', 'N', '0', 'admin', sysdate(), '西北地区'
  1348. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_area' AND dict_value = 'northwest');
  1349. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1350. SELECT 6, '东北', 'northeast', 'supplier_area', '', '', 'N', '0', 'admin', sysdate(), '东北地区'
  1351. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_area' AND dict_value = 'northeast');
  1352. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1353. SELECT 7, '华中', 'central', 'supplier_area', '', '', 'N', '0', 'admin', sysdate(), '华中地区'
  1354. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'supplier_area' AND dict_value = 'central');
  1355. -- ----------------------------
  1356. -- 应急调度模块 - 调度任务相关表
  1357. -- ----------------------------
  1358. -- 1、调度任务主表
  1359. DROP TABLE IF EXISTS aegis.`dispatch_task`;
  1360. CREATE TABLE `dispatch_task` (
  1361. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务ID',
  1362. `task_no` varchar(64) NOT NULL COMMENT '任务编号(唯一)',
  1363. `event_id` bigint(20) DEFAULT NULL COMMENT '关联事件ID',
  1364. `name` varchar(200) NOT NULL COMMENT '任务名称',
  1365. `status` varchar(32) NOT NULL DEFAULT 'draft' COMMENT '任务状态:draft/published/in_progress/closed',
  1366. `plan_template_id` bigint(20) DEFAULT NULL COMMENT '预案模板ID',
  1367. `description` text COMMENT '任务描述',
  1368. `assignee_id` bigint(20) DEFAULT NULL COMMENT '责任人/调度员ID',
  1369. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  1370. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  1371. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  1372. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  1373. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  1374. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  1375. PRIMARY KEY (`id`),
  1376. UNIQUE KEY `uk_dispatch_task_no` (`task_no`),
  1377. KEY `idx_dispatch_task_event` (`event_id`),
  1378. KEY `idx_dispatch_task_status` (`status`)
  1379. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='调度任务表';
  1380. -- 2、调度任务行动项表
  1381. DROP TABLE IF EXISTS aegis.`dispatch_task_step`;
  1382. CREATE TABLE `dispatch_task_step` (
  1383. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '行动项ID',
  1384. `task_id` bigint(20) NOT NULL COMMENT '任务ID',
  1385. `step_order` int(11) DEFAULT NULL COMMENT '步骤顺序',
  1386. `title` varchar(200) DEFAULT NULL COMMENT '标题',
  1387. `description` text COMMENT '行动项描述',
  1388. `status` varchar(32) DEFAULT 'pending' COMMENT '状态:pending/in_progress/completed/failed',
  1389. `executor_id` bigint(20) DEFAULT NULL COMMENT '执行方参与记录ID(引用 dispatch_task_participant.id)',
  1390. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  1391. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  1392. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  1393. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  1394. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  1395. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  1396. PRIMARY KEY (`id`),
  1397. KEY `idx_dispatch_step_task` (`task_id`),
  1398. KEY `idx_dispatch_step_status` (`status`)
  1399. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='调度任务行动项表';
  1400. -- 3、调度任务参与方表
  1401. DROP TABLE IF EXISTS aegis.`dispatch_task_participant`;
  1402. CREATE TABLE `dispatch_task_participant` (
  1403. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '参与方ID',
  1404. `task_id` bigint(20) NOT NULL COMMENT '任务ID',
  1405. `person_id` bigint(20) DEFAULT NULL COMMENT '人员ID(引用资源模块)',
  1406. `team_id` bigint(20) DEFAULT NULL COMMENT '所属队伍ID',
  1407. `person_snapshot` text COMMENT '人员快照(JSON)',
  1408. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  1409. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  1410. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  1411. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  1412. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  1413. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  1414. PRIMARY KEY (`id`),
  1415. KEY `idx_dispatch_participant_task` (`task_id`),
  1416. KEY `idx_dispatch_participant_person` (`person_id`)
  1417. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='调度任务参与方表';
  1418. -- 4、调度任务处置记录表
  1419. DROP TABLE IF EXISTS aegis.`dispatch_task_disposal`;
  1420. CREATE TABLE `dispatch_task_disposal` (
  1421. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '处置记录ID',
  1422. `task_id` bigint(20) NOT NULL COMMENT '任务ID',
  1423. `step_id` bigint(20) DEFAULT NULL COMMENT '关联行动项ID',
  1424. `participant_id` bigint(20) DEFAULT NULL COMMENT '参与方ID',
  1425. `description` text COMMENT '处置描述',
  1426. `outcome` varchar(32) DEFAULT NULL COMMENT '处置结果:success/partial/failed',
  1427. `attachment_ids` text COMMENT '附件ID列表(JSON)',
  1428. `location_snapshot` text COMMENT '位置快照(JSON)',
  1429. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  1430. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  1431. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  1432. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  1433. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  1434. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  1435. PRIMARY KEY (`id`),
  1436. KEY `idx_dispatch_disposal_task` (`task_id`),
  1437. KEY `idx_dispatch_disposal_participant` (`participant_id`)
  1438. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='调度任务处置记录表';
  1439. -- 5、调度任务与资源 usage 关联表
  1440. DROP TABLE IF EXISTS aegis.`dispatch_resource_usage_link`;
  1441. CREATE TABLE `dispatch_resource_usage_link` (
  1442. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '关联ID',
  1443. `task_id` bigint(20) NOT NULL COMMENT '任务ID',
  1444. `step_id` bigint(20) DEFAULT NULL COMMENT '关联的行动项ID(可选,null表示任务级资源,非null表示行动项级资源)',
  1445. `resource_type` varchar(32) NOT NULL COMMENT '资源类型:equipment/material/vehicle',
  1446. `resource_id` bigint(20) DEFAULT NULL COMMENT '资源ID',
  1447. `usage_record_id` bigint(20) DEFAULT NULL COMMENT '资源模块 usage 记录ID',
  1448. `status` varchar(32) DEFAULT NULL COMMENT '调拨状态快照',
  1449. `note` text COMMENT '备注/上下文信息',
  1450. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  1451. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  1452. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  1453. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  1454. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  1455. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  1456. PRIMARY KEY (`id`),
  1457. KEY `idx_dispatch_resource_task` (`task_id`),
  1458. KEY `idx_dispatch_resource_step` (`step_id`),
  1459. KEY `idx_dispatch_resource_type` (`resource_type`),
  1460. KEY `idx_dispatch_resource_usage` (`usage_record_id`)
  1461. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='调度任务与资源使用关联表';
  1462. -- 6、调度任务操作日志表
  1463. DROP TABLE IF EXISTS aegis.`dispatch_task_log`;
  1464. CREATE TABLE `dispatch_task_log` (
  1465. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID',
  1466. `task_id` bigint(20) NOT NULL COMMENT '任务ID',
  1467. `action` varchar(64) NOT NULL COMMENT '操作类型',
  1468. `payload` text COMMENT '操作详情(JSON)',
  1469. `operator_id` bigint(20) DEFAULT NULL COMMENT '操作人ID',
  1470. `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人姓名',
  1471. `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  1472. PRIMARY KEY (`id`),
  1473. KEY `idx_dispatch_log_task` (`task_id`),
  1474. KEY `idx_dispatch_log_action` (`action`)
  1475. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='调度任务操作日志表';
  1476. -- ----------------------------
  1477. -- 资源模块 - 采购管理字典数据
  1478. -- ----------------------------
  1479. -- 1、创建采购状态字典类型(如果不存在)
  1480. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1481. SELECT '采购状态', 'procurement_status', '0', 'admin', sysdate(), '采购申请状态列表'
  1482. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'procurement_status');
  1483. -- 2、添加采购状态字典数据(如果不存在)
  1484. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1485. SELECT 1, '草稿', 'draft', 'procurement_status', '', 'info', 'N', '0', 'admin', sysdate(), '草稿状态'
  1486. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'procurement_status' AND dict_value = 'draft');
  1487. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1488. SELECT 2, '已提交', 'submitted', 'procurement_status', '', 'primary', 'N', '0', 'admin', sysdate(), '已提交审核'
  1489. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'procurement_status' AND dict_value = 'submitted');
  1490. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1491. SELECT 3, '已审核', 'approved', 'procurement_status', '', 'success', 'N', '0', 'admin', sysdate(), '已审核通过'
  1492. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'procurement_status' AND dict_value = 'approved');
  1493. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1494. SELECT 4, '已驳回', 'rejected', 'procurement_status', '', 'warning', 'N', '0', 'admin', sysdate(), '已驳回'
  1495. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'procurement_status' AND dict_value = 'rejected');
  1496. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1497. SELECT 5, '进行中', 'in_progress', 'procurement_status', '', '', 'N', '0', 'admin', sysdate(), '采购进行中'
  1498. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'procurement_status' AND dict_value = 'in_progress');
  1499. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1500. SELECT 6, '已入库', 'received', 'procurement_status', '', 'success', 'N', '0', 'admin', sysdate(), '已入库'
  1501. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'procurement_status' AND dict_value = 'received');
  1502. -- 3、创建紧急程度字典类型(如果不存在)
  1503. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1504. SELECT '紧急程度', 'procurement_urgency', '0', 'admin', sysdate(), '采购申请紧急程度列表'
  1505. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'procurement_urgency');
  1506. -- 4、添加紧急程度字典数据(如果不存在)
  1507. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1508. SELECT 1, '低', 'low', 'procurement_urgency', '', 'info', 'N', '0', 'admin', sysdate(), '低紧急程度'
  1509. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'procurement_urgency' AND dict_value = 'low');
  1510. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1511. SELECT 2, '普通', 'normal', 'procurement_urgency', '', 'primary', 'Y', '0', 'admin', sysdate(), '普通紧急程度'
  1512. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'procurement_urgency' AND dict_value = 'normal');
  1513. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1514. SELECT 3, '高', 'high', 'procurement_urgency', '', 'warning', 'N', '0', 'admin', sysdate(), '高紧急程度'
  1515. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'procurement_urgency' AND dict_value = 'high');
  1516. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1517. SELECT 4, '紧急', 'urgent', 'procurement_urgency', '', 'danger', 'N', '0', 'admin', sysdate(), '紧急'
  1518. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'procurement_urgency' AND dict_value = 'urgent');
  1519. -- ----------------------------
  1520. -- 应急调度模块 - 菜单
  1521. -- ----------------------------
  1522. INSERT INTO aegis.sys_menu (
  1523. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1524. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1525. create_by, create_time, update_by, update_time, remark
  1526. )
  1527. SELECT
  1528. 3303, '调度工作台', 3300, 3, 'dispatch/workbench',
  1529. 'emergency/dispatch/workbench/index', '', 'DispatchWorkbench',
  1530. 1, 0, 'C', '0', '0', 'emergency:dispatch:workbench:view', 'guide',
  1531. 'admin', SYSDATE(), '', NULL, '调度工作台菜单'
  1532. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3303);
  1533. INSERT INTO aegis.sys_menu (
  1534. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1535. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1536. create_by, create_time, update_by, update_time, remark
  1537. )
  1538. SELECT
  1539. 3304, '处置工作台', 3300, 4, 'disposal/console',
  1540. 'emergency/disposal/console', '', 'DisposalConsole',
  1541. 1, 0, 'C', '0', '0', 'emergency:disposal:list', 'form',
  1542. 'admin', SYSDATE(), '', NULL, '处置工作台(执行端)'
  1543. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3304);
  1544. -- 5、创建采购明细分类字典类型(如果不存在)
  1545. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1546. SELECT '采购明细分类', 'procurement_item_category', '0', 'admin', sysdate(), '采购明细分类列表'
  1547. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'procurement_item_category');
  1548. -- 6、添加采购明细分类字典数据(如果不存在)
  1549. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1550. SELECT 1, '物资', 'material', 'procurement_item_category', '', 'primary', 'N', '0', 'admin', sysdate(), '物资类'
  1551. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'procurement_item_category' AND dict_value = 'material');
  1552. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1553. SELECT 2, '装备', 'equipment', 'procurement_item_category', '', 'success', 'N', '0', 'admin', sysdate(), '装备类'
  1554. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'procurement_item_category' AND dict_value = 'equipment');
  1555. -- ----------------------------
  1556. -- 资源模块 - 征用管理字典数据
  1557. -- ----------------------------
  1558. -- 1、创建征用状态字典类型(如果不存在)
  1559. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1560. SELECT '征用状态', 'requisition_status', '0', 'admin', sysdate(), '征用申请状态列表'
  1561. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'requisition_status');
  1562. -- 2、添加征用状态字典数据(如果不存在)
  1563. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1564. SELECT 1, '草稿', 'draft', 'requisition_status', '', 'info', 'N', '0', 'admin', sysdate(), '草稿状态'
  1565. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'requisition_status' AND dict_value = 'draft');
  1566. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1567. SELECT 2, '已审批', 'approved', 'requisition_status', '', 'success', 'N', '0', 'admin', sysdate(), '已审批通过'
  1568. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'requisition_status' AND dict_value = 'approved');
  1569. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1570. SELECT 3, '进行中', 'active', 'requisition_status', '', 'primary', 'N', '0', 'admin', sysdate(), '征用进行中'
  1571. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'requisition_status' AND dict_value = 'active');
  1572. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1573. SELECT 4, '已结束', 'ended', 'requisition_status', '', 'success', 'N', '0', 'admin', sysdate(), '征用已结束'
  1574. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'requisition_status' AND dict_value = 'ended');
  1575. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1576. SELECT 5, '已驳回', 'rejected', 'requisition_status', '', 'warning', 'N', '0', 'admin', sysdate(), '已驳回'
  1577. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'requisition_status' AND dict_value = 'rejected');
  1578. -- 3、创建计费方式字典类型(如果不存在)
  1579. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1580. SELECT '计费方式', 'requisition_billing_type', '0', 'admin', sysdate(), '征用协议计费方式列表'
  1581. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'requisition_billing_type');
  1582. -- 4、添加计费方式字典数据(如果不存在)
  1583. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1584. SELECT 1, '按小时', 'hour', 'requisition_billing_type', '', 'primary', 'N', '0', 'admin', sysdate(), '按小时计费'
  1585. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'requisition_billing_type' AND dict_value = 'hour');
  1586. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1587. SELECT 2, '按天', 'day', 'requisition_billing_type', '', 'primary', 'N', '0', 'admin', sysdate(), '按天计费'
  1588. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'requisition_billing_type' AND dict_value = 'day');
  1589. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1590. SELECT 3, '按任务', 'task', 'requisition_billing_type', '', 'primary', 'N', '0', 'admin', sysdate(), '按任务计费'
  1591. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'requisition_billing_type' AND dict_value = 'task');
  1592. -- 5、创建工作量单位字典类型(如果不存在)
  1593. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1594. SELECT '工作量单位', 'requisition_workload_unit', '0', 'admin', sysdate(), '补偿记录工作量单位列表'
  1595. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'requisition_workload_unit');
  1596. -- 6、添加工作量单位字典数据(如果不存在)
  1597. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1598. SELECT 1, '小时', 'hour', 'requisition_workload_unit', '', 'primary', 'N', '0', 'admin', sysdate(), '小时'
  1599. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'requisition_workload_unit' AND dict_value = 'hour');
  1600. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1601. SELECT 2, '天', 'day', 'requisition_workload_unit', '', 'primary', 'N', '0', 'admin', sysdate(), '天'
  1602. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'requisition_workload_unit' AND dict_value = 'day');
  1603. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1604. SELECT 3, '任务', 'task', 'requisition_workload_unit', '', 'primary', 'N', '0', 'admin', sysdate(), '任务'
  1605. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'requisition_workload_unit' AND dict_value = 'task');
  1606. -- 7、创建补偿状态字典类型(如果不存在)
  1607. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1608. SELECT '补偿状态', 'requisition_compensation_status', '0', 'admin', sysdate(), '补偿记录状态列表'
  1609. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'requisition_compensation_status');
  1610. -- 8、添加补偿状态字典数据(如果不存在)
  1611. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1612. SELECT 1, '待结算', 'pending', 'requisition_compensation_status', '', 'warning', 'N', '0', 'admin', sysdate(), '待结算'
  1613. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'requisition_compensation_status' AND dict_value = 'pending');
  1614. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1615. SELECT 2, '已结算', 'settled', 'requisition_compensation_status', '', 'success', 'N', '0', 'admin', sysdate(), '已结算'
  1616. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'requisition_compensation_status' AND dict_value = 'settled');
  1617. -- 9、创建币种字典类型(如果不存在)
  1618. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1619. SELECT '币种', 'currency', '0', 'admin', sysdate(), '货币类型列表'
  1620. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'currency');
  1621. -- 10、添加币种字典数据(如果不存在)
  1622. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1623. SELECT 1, '人民币', 'CNY', 'currency', '', 'primary', 'Y', '0', 'admin', sysdate(), '人民币'
  1624. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'currency' AND dict_value = 'CNY');
  1625. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1626. SELECT 2, '美元', 'USD', 'currency', '', 'primary', 'N', '0', 'admin', sysdate(), '美元'
  1627. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'currency' AND dict_value = 'USD');
  1628. -- ----------------------------
  1629. -- 应急调度模块 - 值守接警字典数据
  1630. -- ----------------------------
  1631. -- 1、创建警情来源渠道字典类型(如果不存在)
  1632. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1633. SELECT '警情来源渠道', 'alert_source_channel', '0', 'admin', sysdate(), '警情来源渠道列表'
  1634. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'alert_source_channel');
  1635. -- 2、添加警情来源渠道字典数据(如果不存在)
  1636. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1637. SELECT 1, '122交通事故报警', '122', 'alert_source_channel', '', 'danger', 'Y', '0', 'admin', sysdate(), '122交通事故报警电话'
  1638. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'alert_source_channel' AND dict_value = '122');
  1639. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1640. SELECT 2, '12345市民热线', '12345', 'alert_source_channel', '', 'primary', 'N', '0', 'admin', sysdate(), '12345市民服务热线'
  1641. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'alert_source_channel' AND dict_value = '12345');
  1642. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1643. SELECT 3, '110报警电话', '110', 'alert_source_channel', '', 'warning', 'N', '0', 'admin', sysdate(), '110报警电话'
  1644. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'alert_source_channel' AND dict_value = '110');
  1645. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1646. SELECT 4, '上级转办', 'superior', 'alert_source_channel', '', 'info', 'N', '0', 'admin', sysdate(), '上级部门转办'
  1647. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'alert_source_channel' AND dict_value = 'superior');
  1648. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1649. SELECT 5, '下级上报', 'subordinate', 'alert_source_channel', '', 'info', 'N', '0', 'admin', sysdate(), '下级部门上报'
  1650. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'alert_source_channel' AND dict_value = 'subordinate');
  1651. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1652. SELECT 6, '其他部门转办', 'other_dept', 'alert_source_channel', '', 'info', 'N', '0', 'admin', sysdate(), '其他部门转办'
  1653. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'alert_source_channel' AND dict_value = 'other_dept');
  1654. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1655. SELECT 7, '系统监测', 'monitor', 'alert_source_channel', '', 'success', 'N', '0', 'admin', sysdate(), '系统自动监测'
  1656. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'alert_source_channel' AND dict_value = 'monitor');
  1657. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1658. SELECT 8, '媒体舆情', 'media', 'alert_source_channel', '', 'warning', 'N', '0', 'admin', sysdate(), '媒体舆情'
  1659. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'alert_source_channel' AND dict_value = 'media');
  1660. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1661. SELECT 9, '手工录入', 'manual', 'alert_source_channel', '', '', 'N', '0', 'admin', sysdate(), '手工录入'
  1662. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'alert_source_channel' AND dict_value = 'manual');
  1663. -- 3、创建班次类型字典类型(如果不存在)
  1664. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1665. SELECT '班次类型', 'duty_shift_type', '0', 'admin', sysdate(), '值班排班班次类型列表'
  1666. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'duty_shift_type');
  1667. -- 4、添加班次类型字典数据(如果不存在)
  1668. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1669. SELECT 1, '白班', 'day', 'duty_shift_type', '', 'primary', 'N', '0', 'admin', sysdate(), '白班'
  1670. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'duty_shift_type' AND dict_value = 'day');
  1671. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1672. SELECT 2, '夜班', 'night', 'duty_shift_type', '', 'info', 'N', '0', 'admin', sysdate(), '夜班'
  1673. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'duty_shift_type' AND dict_value = 'night');
  1674. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1675. SELECT 3, '全天', 'all', 'duty_shift_type', '', 'success', 'N', '0', 'admin', sysdate(), '全天'
  1676. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'duty_shift_type' AND dict_value = 'all');
  1677. -- 5、创建排班状态字典类型(如果不存在)
  1678. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1679. SELECT '排班状态', 'duty_shift_status', '0', 'admin', sysdate(), '值班排班状态列表'
  1680. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'duty_shift_status');
  1681. -- 6、添加排班状态字典数据(如果不存在)
  1682. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1683. SELECT 1, '有效', 'active', 'duty_shift_status', '', 'success', 'Y', '0', 'admin', sysdate(), '排班有效状态'
  1684. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'duty_shift_status' AND dict_value = 'active');
  1685. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1686. SELECT 2, '已取消', 'cancelled', 'duty_shift_status', '', 'danger', 'N', '0', 'admin', sysdate(), '排班已取消状态'
  1687. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'duty_shift_status' AND dict_value = 'cancelled');
  1688. -- 7、创建排班成员角色字典类型(如果不存在)
  1689. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  1690. SELECT '排班成员角色', 'duty_shift_member_role', '0', 'admin', sysdate(), '排班成员角色列表'
  1691. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'duty_shift_member_role');
  1692. -- 8、添加排班成员角色字典数据(如果不存在)
  1693. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1694. SELECT 1, '组长', 'leader', 'duty_shift_member_role', '', 'warning', 'N', '0', 'admin', sysdate(), '排班组长'
  1695. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'duty_shift_member_role' AND dict_value = 'leader');
  1696. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  1697. SELECT 2, '成员', 'member', 'duty_shift_member_role', '', 'primary', 'Y', '0', 'admin', sysdate(), '排班成员'
  1698. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'duty_shift_member_role' AND dict_value = 'member');
  1699. -- ----------------------------
  1700. -- 应急调度模块 - 菜单初始化
  1701. -- ----------------------------
  1702. INSERT INTO sys_menu (
  1703. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1704. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1705. create_by, create_time, update_by, update_time, remark
  1706. )
  1707. SELECT
  1708. 3300, '应急调度', 0, 1, 'duty', NULL, '', '',
  1709. 1, 0, 'M', '0', '0', '', 'guide',
  1710. 'admin', sysdate(), '', NULL, '应急调度目录'
  1711. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3300);
  1712. INSERT INTO sys_menu (
  1713. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1714. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1715. create_by, create_time, update_by, update_time, remark
  1716. )
  1717. SELECT
  1718. 3301, '排班管理', 3300, 1, 'shift', 'duty/shift/index', '', 'DutyShift',
  1719. 1, 0, 'C', '0', '0', 'emergency:duty:shift', 'date',
  1720. 'admin', sysdate(), '', NULL, '值守接警排班管理'
  1721. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3301);
  1722. INSERT INTO sys_menu (
  1723. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1724. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1725. create_by, create_time, update_by, update_time, remark
  1726. )
  1727. SELECT
  1728. 3302, '接警工作台', 3300, 2, 'alert/console', 'duty/alert/console', '', 'DutyAlertConsole',
  1729. 1, 0, 'C', '0', '0', 'emergency:duty:console', 'phone',
  1730. 'admin', sysdate(), '', NULL, '接警工作台(静态版)'
  1731. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3302);
  1732. -- 数据报送目录与页面
  1733. INSERT INTO sys_menu (
  1734. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1735. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1736. create_by, create_time, update_by, update_time, remark
  1737. )
  1738. SELECT
  1739. 3350, '数据报送', 0, 2, 'data-reporting', NULL, '', '',
  1740. 1, 0, 'M', '0', '0', '', 'international',
  1741. 'admin', sysdate(), '', NULL, '数据报送一级目录'
  1742. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3350);
  1743. INSERT INTO sys_menu (
  1744. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1745. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1746. create_by, create_time, update_by, update_time, remark
  1747. )
  1748. SELECT
  1749. 3351, '上级报送', 3350, 1, 'province', 'emergency/report/province/index', '', 'EmergencyProvinceReporting',
  1750. 1, 0, 'C', '0', '0', 'emergency:data:province', 'upload',
  1751. 'admin', sysdate(), '', NULL, '上级报送列表'
  1752. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3351);
  1753. INSERT INTO sys_menu (
  1754. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1755. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1756. create_by, create_time, update_by, update_time, remark
  1757. )
  1758. SELECT
  1759. 3352, '模板配置', 3350, 2, 'templates', 'emergency/report/template/index', '', 'EmergencyTemplateConfig',
  1760. 1, 0, 'C', '0', '0', 'emergency:data:template', 'form',
  1761. 'admin', sysdate(), '', NULL, '上级报送模板配置'
  1762. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3352);
  1763. -- 预案管理菜单
  1764. INSERT INTO sys_menu (
  1765. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1766. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1767. create_by, create_time, update_by, update_time, remark
  1768. )
  1769. SELECT
  1770. 3360, '预案管理', 0, 3, 'plan', 'emergency/plan/index', '', 'PlanCenter',
  1771. 1, 0, 'C', '0', '0', 'emergency:plan:list', 'documentation',
  1772. 'admin', sysdate(), '', NULL, '预案管理'
  1773. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3360);
  1774. -- 预案按钮权限(用于权限控制,不在导航菜单显示)
  1775. INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1776. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1777. create_by, create_time, update_by, update_time, remark)
  1778. SELECT 3364, '预案新增', 3360, 1, '#', NULL, '', '',
  1779. 1, 0, 'F', '0', '0', 'emergency:plan:add', '#',
  1780. 'admin', sysdate(), '', NULL, '预案新增按钮'
  1781. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3364);
  1782. INSERT INTO sys_menu (
  1783. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1784. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1785. create_by, create_time, update_by, update_time, remark)
  1786. SELECT 3365, '预案编辑', 3360, 2, '#', NULL, '', '',
  1787. 1, 0, 'F', '0', '0', 'emergency:plan:edit', '#',
  1788. 'admin', sysdate(), '', NULL, '预案编辑按钮'
  1789. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3365);
  1790. INSERT INTO sys_menu (
  1791. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1792. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1793. create_by, create_time, update_by, update_time, remark)
  1794. SELECT 3366, '预案删除', 3360, 3, '#', NULL, '', '',
  1795. 1, 0, 'F', '0', '0', 'emergency:plan:remove', '#',
  1796. 'admin', sysdate(), '', NULL, '预案删除按钮'
  1797. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3366);
  1798. INSERT INTO sys_menu (
  1799. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1800. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1801. create_by, create_time, update_by, update_time, remark)
  1802. SELECT 3367, '预案发布', 3360, 4, '#', NULL, '', '',
  1803. 1, 0, 'F', '0', '0', 'emergency:plan:publish', '#',
  1804. 'admin', sysdate(), '', NULL, '预案发布按钮'
  1805. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3367);
  1806. INSERT INTO sys_menu (
  1807. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1808. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1809. create_by, create_time, update_by, update_time, remark)
  1810. SELECT 3363, '预案查询', 3360, 5, '#', NULL, '', '',
  1811. 1, 0, 'F', '0', '0', 'emergency:plan:query', '#',
  1812. 'admin', sysdate(), '', NULL, '预案查询按钮'
  1813. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3363);
  1814. INSERT INTO sys_menu (
  1815. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1816. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1817. create_by, create_time, update_by, update_time, remark)
  1818. SELECT 3368, '执行对象查看', 3360, 6, '#', NULL, '', '',
  1819. 1, 0, 'F', '0', '0', 'emergency:plan:participant:list', '#',
  1820. 'admin', sysdate(), '', NULL, '执行对象列表'
  1821. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3368);
  1822. INSERT INTO sys_menu (
  1823. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1824. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1825. create_by, create_time, update_by, update_time, remark)
  1826. SELECT 3369, '执行对象新增', 3360, 7, '#', NULL, '', '',
  1827. 1, 0, 'F', '0', '0', 'emergency:plan:participant:add', '#',
  1828. 'admin', sysdate(), '', NULL, '执行对象新增'
  1829. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3369);
  1830. INSERT INTO sys_menu (
  1831. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1832. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1833. create_by, create_time, update_by, update_time, remark)
  1834. SELECT 3370, '执行对象编辑', 3360, 8, '#', NULL, '', '',
  1835. 1, 0, 'F', '0', '0', 'emergency:plan:participant:edit', '#',
  1836. 'admin', sysdate(), '', NULL, '执行对象编辑'
  1837. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3370);
  1838. INSERT INTO sys_menu (
  1839. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1840. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1841. create_by, create_time, update_by, update_time, remark)
  1842. SELECT 3371, '执行对象删除', 3360, 9, '#', NULL, '', '',
  1843. 1, 0, 'F', '0', '0', 'emergency:plan:participant:remove', '#',
  1844. 'admin', sysdate(), '', NULL, '执行对象删除'
  1845. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3371);
  1846. INSERT INTO sys_menu (
  1847. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1848. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1849. create_by, create_time, update_by, update_time, remark)
  1850. SELECT 3372, '行动项查看', 3360, 10, '#', NULL, '', '',
  1851. 1, 0, 'F', '0', '0', 'emergency:plan:step:list', '#',
  1852. 'admin', sysdate(), '', NULL, '行动项查看'
  1853. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3372);
  1854. INSERT INTO sys_menu (
  1855. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1856. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1857. create_by, create_time, update_by, update_time, remark)
  1858. SELECT 3373, '行动项新增', 3360, 11, '#', NULL, '', '',
  1859. 1, 0, 'F', '0', '0', 'emergency:plan:step:add', '#',
  1860. 'admin', sysdate(), '', NULL, '行动项新增'
  1861. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3373);
  1862. INSERT INTO sys_menu (
  1863. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1864. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1865. create_by, create_time, update_by, update_time, remark)
  1866. SELECT 3374, '行动项编辑', 3360, 12, '#', NULL, '', '',
  1867. 1, 0, 'F', '0', '0', 'emergency:plan:step:edit', '#',
  1868. 'admin', sysdate(), '', NULL, '行动项编辑'
  1869. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3374);
  1870. INSERT INTO sys_menu (
  1871. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1872. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1873. create_by, create_time, update_by, update_time, remark)
  1874. SELECT 3375, '行动项删除', 3360, 13, '#', NULL, '', '',
  1875. 1, 0, 'F', '0', '0', 'emergency:plan:step:remove', '#',
  1876. 'admin', sysdate(), '', NULL, '行动项删除'
  1877. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3375);
  1878. INSERT INTO sys_menu (
  1879. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1880. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1881. create_by, create_time, update_by, update_time, remark)
  1882. SELECT 3376, '资源查看', 3360, 14, '#', NULL, '', '',
  1883. 1, 0, 'F', '0', '0', 'emergency:plan:resource:list', '#',
  1884. 'admin', sysdate(), '', NULL, '资源查看'
  1885. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3376);
  1886. INSERT INTO sys_menu (
  1887. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1888. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1889. create_by, create_time, update_by, update_time, remark)
  1890. SELECT 3377, '资源新增', 3360, 15, '#', NULL, '', '',
  1891. 1, 0, 'F', '0', '0', 'emergency:plan:resource:add', '#',
  1892. 'admin', sysdate(), '', NULL, '资源新增'
  1893. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3377);
  1894. INSERT INTO sys_menu (
  1895. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1896. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1897. create_by, create_time, update_by, update_time, remark)
  1898. SELECT 3378, '资源编辑', 3360, 16, '#', NULL, '', '',
  1899. 1, 0, 'F', '0', '0', 'emergency:plan:resource:edit', '#',
  1900. 'admin', sysdate(), '', NULL, '资源编辑'
  1901. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3378);
  1902. INSERT INTO sys_menu (
  1903. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1904. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1905. create_by, create_time, update_by, update_time, remark)
  1906. SELECT 3379, '资源删除', 3360, 17, '#', NULL, '', '',
  1907. 1, 0, 'F', '0', '0', 'emergency:plan:resource:remove', '#',
  1908. 'admin', sysdate(), '', NULL, '资源删除'
  1909. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3379);
  1910. INSERT INTO sys_menu (
  1911. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1912. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1913. create_by, create_time, update_by, update_time, remark)
  1914. SELECT 3380, '版本查看', 3360, 18, '#', NULL, '', '',
  1915. 1, 0, 'F', '0', '0', 'emergency:plan:version:list', '#',
  1916. 'admin', sysdate(), '', NULL, '版本查看'
  1917. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3380);
  1918. INSERT INTO sys_menu (
  1919. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1920. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1921. create_by, create_time, update_by, update_time, remark)
  1922. SELECT 3382, '版本恢复', 3360, 19, '#', NULL, '', '',
  1923. 1, 0, 'F', '0', '0', 'emergency:plan:version:restore', '#',
  1924. 'admin', sysdate(), '', NULL, '版本恢复'
  1925. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3382);
  1926. INSERT INTO sys_menu (
  1927. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1928. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1929. create_by, create_time, update_by, update_time, remark)
  1930. SELECT 3386, '审批查看', 3360, 20, '#', NULL, '', '',
  1931. 1, 0, 'F', '0', '0', 'emergency:plan:approval:list', '#',
  1932. 'admin', sysdate(), '', NULL, '审批记录查看'
  1933. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3386);
  1934. INSERT INTO sys_menu (
  1935. menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
  1936. is_frame, is_cache, menu_type, visible, status, perms, icon,
  1937. create_by, create_time, update_by, update_time, remark)
  1938. SELECT 3384, '使用记录查看', 3360, 21, '#', NULL, '', '',
  1939. 1, 0, 'F', '0', '0', 'emergency:plan:usage:list', '#',
  1940. 'admin', sysdate(), '', NULL, '使用记录查看'
  1941. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 3384);
  1942. -- 将预案管理菜单及其所有按钮权限分配给管理员角色(role_id = 1)
  1943. -- 如果管理员角色ID不是1,请先查询:SELECT role_id FROM sys_role WHERE role_key = 'admin';
  1944. INSERT INTO sys_role_menu (role_id, menu_id)
  1945. SELECT 1, menu_id
  1946. FROM sys_menu
  1947. WHERE (menu_id = 3360 OR parent_id = 3360)
  1948. AND NOT EXISTS (
  1949. SELECT 1 FROM sys_role_menu rm
  1950. WHERE rm.role_id = 1 AND rm.menu_id = sys_menu.menu_id
  1951. );
  1952. -- 修复菜单顺序冲突:将 menu_id = 3000 移到 order_num = 4(如果存在且冲突)
  1953. UPDATE sys_menu
  1954. SET order_num = 4,
  1955. update_time = sysdate()
  1956. WHERE menu_id = 3000
  1957. AND parent_id = 0
  1958. AND order_num = 3;
  1959. -- 确保预案管理菜单状态正确
  1960. UPDATE sys_menu
  1961. SET status = '0',
  1962. visible = '0',
  1963. update_time = sysdate()
  1964. WHERE menu_id = 3360 OR parent_id = 3360;
  1965. -- ----------------------------
  1966. -- 菜单顺序调整:确保预案管理位于数据报送之后、资源管理之前
  1967. -- ----------------------------
  1968. -- 1. 确保"数据报送"菜单 order_num = 2
  1969. UPDATE sys_menu
  1970. SET order_num = 2,
  1971. update_time = sysdate()
  1972. WHERE menu_id = 3350
  1973. AND parent_id = 0
  1974. AND order_num != 2;
  1975. -- 2. 确保"预案管理"菜单 order_num = 3
  1976. UPDATE sys_menu
  1977. SET order_num = 3,
  1978. update_time = sysdate()
  1979. WHERE menu_id = 3360
  1980. AND parent_id = 0
  1981. AND order_num != 3;
  1982. -- 3. 将"资源管理"相关菜单移到 order_num = 4 或更高(如果存在)
  1983. -- 查找并更新所有包含"资源"的顶级菜单
  1984. UPDATE sys_menu
  1985. SET order_num = 4,
  1986. update_time = sysdate()
  1987. WHERE parent_id = 0
  1988. AND menu_id NOT IN (3300, 3350, 3360) -- 排除应急调度、数据报送、预案管理
  1989. AND (menu_name LIKE '%资源%' OR menu_name LIKE '%resource%' OR menu_name LIKE '%Resource%')
  1990. AND order_num <= 3;
  1991. -- 4. 将所有其他可能冲突的顶级菜单移到 order_num = 5 或更高
  1992. -- 先标记资源管理菜单,然后处理其他冲突菜单
  1993. UPDATE sys_menu
  1994. SET order_num = 5,
  1995. update_time = sysdate()
  1996. WHERE parent_id = 0
  1997. AND menu_id NOT IN (3300, 3350, 3360)
  1998. AND order_num <= 3
  1999. AND order_num > 0
  2000. AND NOT (menu_name LIKE '%资源%' OR menu_name LIKE '%resource%' OR menu_name LIKE '%Resource%');
  2001. -- ----------------------------
  2002. -- 知识库模块 - 知识管理相关表
  2003. -- ----------------------------
  2004. -- 1、知识库分类表
  2005. DROP TABLE IF EXISTS aegis.`knowledge_category`;
  2006. CREATE TABLE `knowledge_category` (
  2007. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类ID',
  2008. `name` varchar(100) NOT NULL COMMENT '分类名称(如:法律法规、政策规定、标准规范)',
  2009. `code` varchar(50) DEFAULT NULL COMMENT '分类代码',
  2010. `parent_id` bigint(20) DEFAULT NULL COMMENT '父分类ID(支持多级分类)',
  2011. `sort_order` int(11) DEFAULT 0 COMMENT '排序',
  2012. `description` varchar(500) DEFAULT NULL COMMENT '描述',
  2013. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  2014. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  2015. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  2016. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  2017. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  2018. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  2019. PRIMARY KEY (`id`),
  2020. KEY `idx_parent` (`parent_id`),
  2021. KEY `idx_code` (`code`)
  2022. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识库分类表';
  2023. -- 2、知识库文档表
  2024. DROP TABLE IF EXISTS aegis.`knowledge_document`;
  2025. CREATE TABLE `knowledge_document` (
  2026. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文档ID',
  2027. `title` varchar(200) NOT NULL COMMENT '文档标题',
  2028. `category_id` bigint(20) DEFAULT NULL COMMENT '分类ID',
  2029. `file_id` bigint(20) DEFAULT NULL COMMENT '文件ID(关联文件表file_info.id)',
  2030. `file_name` varchar(255) DEFAULT NULL COMMENT '原始文件名',
  2031. `file_size` bigint(20) DEFAULT NULL COMMENT '文件大小(字节)',
  2032. `file_type` varchar(50) DEFAULT NULL COMMENT '文件类型(PDF、DOC、DOCX等)',
  2033. `tags` varchar(500) DEFAULT NULL COMMENT '标签(逗号分隔,如:交通,应急,法规)',
  2034. `keywords` varchar(500) DEFAULT NULL COMMENT '关键词(逗号分隔,用于搜索和自动调取)',
  2035. `summary` varchar(1000) DEFAULT NULL COMMENT '摘要/描述',
  2036. `view_count` int(11) DEFAULT 0 COMMENT '查看次数',
  2037. `download_count` int(11) DEFAULT 0 COMMENT '下载次数',
  2038. `is_featured` tinyint(1) DEFAULT 0 COMMENT '是否推荐',
  2039. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  2040. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  2041. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  2042. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  2043. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  2044. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  2045. PRIMARY KEY (`id`),
  2046. KEY `idx_category` (`category_id`),
  2047. KEY `idx_title` (`title`),
  2048. KEY `idx_keywords` (`keywords`),
  2049. KEY `idx_file_id` (`file_id`),
  2050. KEY `idx_create_time` (`create_time`)
  2051. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识库文档表';
  2052. -- ----------------------------
  2053. -- 案例库模块 - 案例管理相关表
  2054. -- ----------------------------
  2055. -- 1、案例表
  2056. DROP TABLE IF EXISTS aegis.`case`;
  2057. CREATE TABLE `case` (
  2058. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '案例ID',
  2059. `case_no` varchar(64) DEFAULT NULL COMMENT '案例编号',
  2060. `title` varchar(200) NOT NULL COMMENT '案例标题',
  2061. `event_type` varchar(64) DEFAULT NULL COMMENT '事件类型(字典值)',
  2062. `event_level` varchar(10) DEFAULT NULL COMMENT '事件级别(I/II/III/IV)',
  2063. `location` varchar(200) DEFAULT NULL COMMENT '发生地点',
  2064. `occurred_time` datetime DEFAULT NULL COMMENT '发生时间',
  2065. `description` varchar(2000) DEFAULT NULL COMMENT '案例描述',
  2066. `disposal_summary` varchar(2000) DEFAULT NULL COMMENT '处置摘要',
  2067. `tags` varchar(500) DEFAULT NULL COMMENT '标签(逗号分隔)',
  2068. `is_typical` tinyint(1) DEFAULT 0 COMMENT '是否典型案例',
  2069. `view_count` int(11) DEFAULT 0 COMMENT '查看次数',
  2070. `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  2071. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  2072. `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  2073. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  2074. `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  2075. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  2076. PRIMARY KEY (`id`),
  2077. KEY `idx_event_type` (`event_type`),
  2078. KEY `idx_title` (`title`),
  2079. KEY `idx_is_typical` (`is_typical`),
  2080. KEY `idx_create_time` (`create_time`)
  2081. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='案例表';
  2082. -- 2、事件类型字典(如果不存在)
  2083. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  2084. SELECT '事件类型', 'event_type', '0', 'admin', sysdate(), '事件类型列表'
  2085. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'event_type');
  2086. -- 事件类型字典数据(示例)
  2087. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  2088. SELECT 1, '交通事故', 'traffic_accident', 'event_type', '', 'danger', 'Y', '0', 'admin', sysdate(), '交通事故'
  2089. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'event_type' AND dict_value = 'traffic_accident');
  2090. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  2091. SELECT 2, '自然灾害', 'natural_disaster', 'event_type', '', 'warning', 'N', '0', 'admin', sysdate(), '自然灾害'
  2092. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'event_type' AND dict_value = 'natural_disaster');
  2093. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  2094. SELECT 3, '公共卫生事件', 'public_health', 'event_type', '', 'info', 'N', '0', 'admin', sysdate(), '公共卫生事件'
  2095. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'event_type' AND dict_value = 'public_health');
  2096. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  2097. SELECT 4, '社会安全事件', 'social_security', 'event_type', '', 'danger', 'N', '0', 'admin', sysdate(), '社会安全事件'
  2098. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'event_type' AND dict_value = 'social_security');
  2099. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  2100. SELECT 5, '其他', 'other', 'event_type', '', '', 'N', '0', 'admin', sysdate(), '其他事件类型'
  2101. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'event_type' AND dict_value = 'other');