Procházet zdrojové kódy

feat(wm-dispatch): #69 调度指令全生命周期管理

- 实现调度指令全生命周期:DRAFT → ISSUED → RECEIVED → EXECUTING → COMPLETED/REJECTED/CANCELLED
- 添加完整状态机服务:CommandLifecycleService(18个API端点)
- 实现指令台账管理:CommandLedgerService(多维度查询/统计/导出)
- 提供全过程追踪:CommandTrackingService(时间线追踪)
- 支持分页查询、状态统计、追踪日志查询
- 完整的调度指令实体、服务、控制器
- 提供指令台账列表查询和统计概览功能
bot_dev1 před 2 dny
rodič
revize
39d5bc84ff

+ 15
- 0
wm-dispatch/target/classes/application.yml Zobrazit soubor

@@ -0,0 +1,15 @@
1
+server:
2
+  port: 9050
3
+spring:
4
+  application:
5
+    name: wm-dispatch
6
+  datasource:
7
+    url: jdbc:postgresql://localhost:5432/water_dispatch
8
+    username: water
9
+    password: water123
10
+mybatis-plus:
11
+  configuration:
12
+    map-underscore-to-camel-case: true
13
+  global-config:
14
+    db-config:
15
+      id-type: auto

+ 33
- 0
wm-dispatch/target/classes/db/V1__dispatch.sql Zobrazit soubor

@@ -0,0 +1,33 @@
1
+CREATE TABLE IF NOT EXISTS dispatch_duty_schedule (
2
+    id BIGSERIAL PRIMARY KEY, user_id BIGINT, user_name VARCHAR(50),
3
+    duty_date DATE, start_time TIME, end_time TIME, area VARCHAR(100),
4
+    created_time TIMESTAMP DEFAULT NOW(), updated_time TIMESTAMP DEFAULT NOW()
5
+);
6
+CREATE TABLE IF NOT EXISTS dispatch_command (
7
+    id BIGSERIAL PRIMARY KEY, cmd_no VARCHAR(50) UNIQUE, title VARCHAR(200),
8
+    content TEXT, type VARCHAR(20), status INT DEFAULT 0,
9
+    issued_time TIMESTAMP, completed_time TIMESTAMP,
10
+    created_time TIMESTAMP DEFAULT NOW(), updated_time TIMESTAMP DEFAULT NOW()
11
+);
12
+CREATE TABLE IF NOT EXISTS dispatch_work_order (
13
+    id BIGSERIAL PRIMARY KEY, order_no VARCHAR(50) UNIQUE, title VARCHAR(200),
14
+    description TEXT, type VARCHAR(20), priority VARCHAR(10), status INT DEFAULT 0,
15
+    assignee_id BIGINT, creator_id BIGINT, deadline TIMESTAMP, completed_at TIMESTAMP,
16
+    created_time TIMESTAMP DEFAULT NOW(), updated_time TIMESTAMP DEFAULT NOW()
17
+);
18
+CREATE TABLE IF NOT EXISTS dispatch_duty_log (
19
+    id BIGSERIAL PRIMARY KEY, schedule_id BIGINT, user_id BIGINT,
20
+    log_type VARCHAR(20), content TEXT, attachments TEXT,
21
+    created_time TIMESTAMP DEFAULT NOW()
22
+);
23
+CREATE TABLE IF NOT EXISTS dispatch_strategy (
24
+    id BIGSERIAL PRIMARY KEY, name VARCHAR(100), type VARCHAR(20),
25
+    description TEXT, rule_config TEXT, status INT DEFAULT 1,
26
+    created_time TIMESTAMP DEFAULT NOW(), updated_time TIMESTAMP DEFAULT NOW()
27
+);
28
+CREATE TABLE IF NOT EXISTS dispatch_emergency_plan (
29
+    id BIGSERIAL PRIMARY KEY, plan_no VARCHAR(50) UNIQUE, name VARCHAR(100),
30
+    type VARCHAR(20), content TEXT, resource_config TEXT,
31
+    status INT DEFAULT 0, creator_id BIGINT,
32
+    created_time TIMESTAMP DEFAULT NOW(), updated_time TIMESTAMP DEFAULT NOW()
33
+);

+ 73
- 0
wm-dispatch/target/classes/db/V2__command_lifecycle.sql Zobrazit soubor

@@ -0,0 +1,73 @@
1
+-- V2: 调度指令全生命周期管理
2
+-- 新增/重建表,支持 创建→下发→接收确认→执行反馈→完成归档 全流程
3
+
4
+-- 1. 调度指令主表(增强)
5
+CREATE TABLE IF NOT EXISTS disp_dispatch_command (
6
+    id              BIGSERIAL PRIMARY KEY,
7
+    command_no      VARCHAR(64)  NOT NULL UNIQUE,
8
+    title           VARCHAR(200) NOT NULL,
9
+    content         TEXT,
10
+    command_type    VARCHAR(30)  NOT NULL DEFAULT 'NORMAL',   -- NORMAL / EMERGENCY / MAINTENANCE
11
+    priority        VARCHAR(20)  NOT NULL DEFAULT 'MEDIUM',   -- LOW / MEDIUM / HIGH / URGENT
12
+    status          VARCHAR(30)  NOT NULL DEFAULT 'DRAFT',    -- DRAFT / ISSUED / RECEIVED / EXECUTING / COMPLETED / REJECTED / CANCELLED
13
+    issuer_id       BIGINT,
14
+    issuer_name     VARCHAR(64),
15
+    receiver_id     BIGINT,
16
+    receiver_name   VARCHAR(64),
17
+    facility_id     BIGINT,
18
+    deadline        TIMESTAMP,
19
+    issued_at       TIMESTAMP,
20
+    received_at     TIMESTAMP,
21
+    executed_at     TIMESTAMP,
22
+    completed_at    TIMESTAMP,
23
+    rejected_at     TIMESTAMP,
24
+    reject_reason   TEXT,
25
+    execute_result  TEXT,
26
+    remark          TEXT,
27
+    deleted         INT DEFAULT 0,
28
+    created_at      TIMESTAMP DEFAULT NOW(),
29
+    updated_at      TIMESTAMP DEFAULT NOW()
30
+);
31
+
32
+CREATE INDEX idx_cmd_status      ON disp_dispatch_command(status);
33
+CREATE INDEX idx_cmd_type        ON disp_dispatch_command(command_type);
34
+CREATE INDEX idx_cmd_priority    ON disp_dispatch_command(priority);
35
+CREATE INDEX idx_cmd_issuer      ON disp_dispatch_command(issuer_id);
36
+CREATE INDEX idx_cmd_receiver    ON disp_dispatch_command(receiver_id);
37
+CREATE INDEX idx_cmd_deadline    ON disp_dispatch_command(deadline);
38
+CREATE INDEX idx_cmd_created_at  ON disp_dispatch_command(created_at);
39
+
40
+-- 2. 执行记录表
41
+CREATE TABLE IF NOT EXISTS disp_command_execution_record (
42
+    id              BIGSERIAL PRIMARY KEY,
43
+    command_id      BIGINT       NOT NULL,
44
+    command_no      VARCHAR(64),
45
+    executor_id     BIGINT       NOT NULL,
46
+    executor_name   VARCHAR(64),
47
+    action          VARCHAR(30)  NOT NULL,    -- RECEIVE / START / PROGRESS / COMPLETE / REJECT
48
+    description     TEXT,
49
+    attachments     TEXT,                      -- JSON array of file URLs
50
+    progress        INT DEFAULT 0,            -- 0-100
51
+    created_at      TIMESTAMP DEFAULT NOW()
52
+);
53
+
54
+CREATE INDEX idx_exec_cmd_id ON disp_command_execution_record(command_id);
55
+CREATE INDEX idx_exec_cmd_no ON disp_command_execution_record(command_no);
56
+
57
+-- 3. 过程追踪表(时间线)
58
+CREATE TABLE IF NOT EXISTS disp_command_tracking (
59
+    id              BIGSERIAL PRIMARY KEY,
60
+    command_id      BIGINT       NOT NULL,
61
+    command_no      VARCHAR(64),
62
+    stage           VARCHAR(30)  NOT NULL,    -- CREATED / ISSUED / RECEIVED / EXECUTING / COMPLETED / REJECTED / CANCELLED
63
+    operator_id     BIGINT,
64
+    operator_name   VARCHAR(64),
65
+    action_desc     VARCHAR(500),
66
+    from_status     VARCHAR(30),
67
+    to_status       VARCHAR(30),
68
+    created_at      TIMESTAMP DEFAULT NOW()
69
+);
70
+
71
+CREATE INDEX idx_track_cmd_id ON disp_command_tracking(command_id);
72
+CREATE INDEX idx_track_cmd_no ON disp_command_tracking(command_no);
73
+CREATE INDEX idx_track_stage  ON disp_command_tracking(stage);

+ 67
- 0
wm-dispatch/target/classes/db/V2__emergency_drill.sql Zobrazit soubor

@@ -0,0 +1,67 @@
1
+-- Emergency Drill & Response DDL
2
+CREATE TABLE IF NOT EXISTS disp_pipe_burst_simulation (
3
+    id BIGSERIAL PRIMARY KEY,
4
+    simulation_no VARCHAR(50) UNIQUE,
5
+    location VARCHAR(200),
6
+    lng DOUBLE PRECISION,
7
+    lat DOUBLE PRECISION,
8
+    pipe_diameter DOUBLE PRECISION,
9
+    pipe_material VARCHAR(50),
10
+    affected_radius INT,
11
+    affected_users INT,
12
+    estimated_water_loss DOUBLE PRECISION,
13
+    estimated_repair_hours INT,
14
+    pressure_drop DOUBLE PRECISION,
15
+    affected_valves TEXT,
16
+    status VARCHAR(20) DEFAULT 'COMPLETED',
17
+    created_time TIMESTAMP DEFAULT NOW()
18
+);
19
+
20
+CREATE TABLE IF NOT EXISTS disp_water_quality_incident (
21
+    id BIGSERIAL PRIMARY KEY,
22
+    incident_no VARCHAR(50) UNIQUE,
23
+    location VARCHAR(200),
24
+    pollutant_type VARCHAR(50),
25
+    detected_value DOUBLE PRECISION,
26
+    standard_value DOUBLE PRECISION,
27
+    severity VARCHAR(20),
28
+    status VARCHAR(20) DEFAULT 'DETECTED',
29
+    matched_plan VARCHAR(200),
30
+    detected_time TIMESTAMP,
31
+    response_start_time TIMESTAMP,
32
+    resolved_time TIMESTAMP,
33
+    response_log TEXT,
34
+    resolution TEXT,
35
+    created_time TIMESTAMP DEFAULT NOW()
36
+);
37
+
38
+CREATE TABLE IF NOT EXISTS disp_emergency_drill (
39
+    id BIGSERIAL PRIMARY KEY,
40
+    drill_no VARCHAR(50) UNIQUE,
41
+    name VARCHAR(200),
42
+    drill_type VARCHAR(30),
43
+    description TEXT,
44
+    status VARCHAR(20) DEFAULT 'PLANNED',
45
+    planned_time TIMESTAMP,
46
+    started_time TIMESTAMP,
47
+    completed_time TIMESTAMP,
48
+    created_time TIMESTAMP DEFAULT NOW()
49
+);
50
+
51
+CREATE TABLE IF NOT EXISTS disp_drill_evaluation (
52
+    id BIGSERIAL PRIMARY KEY,
53
+    drill_id BIGINT REFERENCES disp_emergency_drill(id),
54
+    score INT,
55
+    response_time_score INT,
56
+    coordination_score INT,
57
+    overall_rating VARCHAR(20),
58
+    findings TEXT,
59
+    recommendations TEXT,
60
+    evaluator VARCHAR(50),
61
+    created_time TIMESTAMP DEFAULT NOW()
62
+);
63
+
64
+CREATE INDEX IF NOT EXISTS idx_pbs_status ON disp_pipe_burst_simulation(status);
65
+CREATE INDEX IF NOT EXISTS idx_wqi_status ON disp_water_quality_incident(status);
66
+CREATE INDEX IF NOT EXISTS idx_wqi_type ON disp_water_quality_incident(pollutant_type);
67
+CREATE INDEX IF NOT EXISTS idx_ed_status ON disp_emergency_drill(status);

+ 0
- 0
wm-dispatch/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst Zobrazit soubor


+ 43
- 0
wm-dispatch/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst Zobrazit soubor

@@ -0,0 +1,43 @@
1
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/DispatchApplication.java
2
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/controller/DispatchCommandController.java
3
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/controller/DispatchController.java
4
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/controller/EmergencyController.java
5
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/CommandExecutionRecord.java
6
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/CommandTracking.java
7
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/DispatchCommand.java
8
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/DispatchStrategy.java
9
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/DrillEvaluation.java
10
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/DutyLog.java
11
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/DutySchedule.java
12
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/EmergencyDrill.java
13
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/EmergencyPlan.java
14
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/PipeBurstSimulation.java
15
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/WaterQualityIncident.java
16
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/WorkOrder.java
17
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/dto/CommandCreateRequest.java
18
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/dto/CommandQueryRequest.java
19
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/dto/CommandStatVO.java
20
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/dto/DrillCreateRequest.java
21
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/dto/DrillEvaluationRequest.java
22
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/dto/ExecutionRequest.java
23
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/dto/PipeBurstRequest.java
24
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/entity/dto/WaterQualityRequest.java
25
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/mapper/CommandExecutionRecordMapper.java
26
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/mapper/CommandTrackingMapper.java
27
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/mapper/DispatchCommandMapper.java
28
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/mapper/DispatchStrategyMapper.java
29
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/mapper/DrillEvaluationMapper.java
30
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/mapper/DutyLogMapper.java
31
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/mapper/DutyScheduleMapper.java
32
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/mapper/EmergencyDrillMapper.java
33
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/mapper/EmergencyPlanMapper.java
34
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/mapper/PipeBurstSimulationMapper.java
35
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/mapper/WaterQualityIncidentMapper.java
36
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/mapper/WorkOrderMapper.java
37
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/service/CommandLedgerService.java
38
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/service/CommandLifecycleService.java
39
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/service/CommandTrackingService.java
40
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/service/DispatchBizService.java
41
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/service/EmergencyDrillService.java
42
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/service/PipeBurstService.java
43
+/root/.openclaw/workspace/water-management-system/wm-dispatch/src/main/java/com/water/dispatch/service/WaterQualityIncidentService.java