|
|
@@ -494,8 +494,113 @@ UPDATE score_dimension SET weight=10.00 WHERE name='业务实操能力';
|
|
494
|
494
|
UPDATE score_dimension SET weight=15.00 WHERE name='群团协作能力';
|
|
495
|
495
|
-- 4. 清空并重建指标
|
|
496
|
496
|
DELETE FROM score_indicator;
|
|
|
497
|
+-- 推荐执行 sql/indicator_init.sql(使用@dim变量,比score.sql更安全)
|
|
497
|
498
|
-- 5. 执行 sql/menu_ledger_score.sql
|
|
498
|
499
|
-- 6. 执行 sql/menu_radar.sql
|
|
499
|
500
|
-- 7. 角色管理中分配新菜单权限
|
|
500
|
501
|
```
|
|
|
502
|
+
|
|
|
503
|
+---
|
|
|
504
|
+
|
|
|
505
|
+## Phase 4 实现记录(配分规则修正、雷达大屏优化,2026-04-25)
|
|
|
506
|
+
|
|
|
507
|
+### 修改文件
|
|
|
508
|
+
|
|
|
509
|
+```
|
|
|
510
|
+后端(chongqing-server):
|
|
|
511
|
+├── airport-ledger/.../service/impl/LedgerSyncServiceImpl.java # 全面修正(见下)
|
|
|
512
|
+├── airport-ledger/.../service/impl/ScoreRadarServiceImpl.java # 雷达大屏修正(见下)
|
|
|
513
|
+├── sql/indicator_init.sql # 完整重写,与score.sql ID对齐(11~1522)
|
|
|
514
|
+├── sql/score.sql # 添加注释,推荐使用indicator_init.sql
|
|
|
515
|
+├── sql/fix_sync_indicator_ids.sql # 新增:同步数据修复脚本
|
|
|
516
|
+└── sql/truncate_ledger.sql # 新增:清空所有台账原始数据脚本
|
|
|
517
|
+```
|
|
|
518
|
+
|
|
|
519
|
+### LedgerSyncServiceImpl 修正内容
|
|
|
520
|
+
|
|
|
521
|
+**问题1:指标ID方案完全错误**
|
|
|
522
|
+- 旧代码使用 `indicator_init.sql` 旧版ID(1001/1102/1110...)
|
|
|
523
|
+- `score.sql` 实际写入的是新版ID(11/12/111/121...)
|
|
|
524
|
+- 导致所有同步记录的 `indicator_id` 无效
|
|
|
525
|
+
|
|
|
526
|
+**修复**:所有常量更新为新ID:
|
|
|
527
|
+
|
|
|
528
|
+| 常量 | 旧值 | 新值 | 含义 |
|
|
|
529
|
+|------|------|------|------|
|
|
|
530
|
+| IND_SUPERVISION_L2 | 1001 | 11 | 员工规范化操作 |
|
|
|
531
|
+| IND_SUPERVISION_L3 | 1101 | 111/112/113 | 按层级路由 |
|
|
|
532
|
+| IND_INTERCEPT_L2 | 1002 | 12 | 实时质控拦截 |
|
|
|
533
|
+| IND_UNSAFE_L2 | 1003 | 13 | 不安全事件 |
|
|
|
534
|
+| IND_SECTEST_L2 | 1004 | 14 | 安保测试 |
|
|
|
535
|
+| IND_SEIZURE_L2 | 1005 | 15 | 典型案例查获 |
|
|
|
536
|
+| IND_COMPLAINT_L2 | 1010 | 21 | 旅客投诉(叶子,无L3)|
|
|
|
537
|
+| IND_SVCPATROL_L2 | 1011 | 22 | 服务监察 |
|
|
|
538
|
+| IND_TYPCASE_L2 | 1012 | 23 | 典型服务案例 |
|
|
|
539
|
+| IND_EXAM_L2 | 1024 | 35 | 考试成绩 |
|
|
|
540
|
+| IND_EXAM_L3_THEORY | 1146 | 351 | 理论≥98 |
|
|
|
541
|
+| IND_EXAM_L3_MACHINE | 1147 | 352 | 图像≥98 |
|
|
|
542
|
+
|
|
|
543
|
+**问题2:三类台账按最新配分表(配分表分析.csv)停止同步**
|
|
|
544
|
+
|
|
|
545
|
+| 台账 | 原因 |
|
|
|
546
|
+|------|------|
|
|
|
547
|
+| `reward_penalty`(部门奖惩) | 作风践行能力全部"暂无台账" |
|
|
|
548
|
+| `leave_special`(请休假) | 身心调节能力全部"暂无台账" |
|
|
|
549
|
+| `banner_letter`(锦旗感谢信) | CSV明确不作为计分来源 |
|
|
|
550
|
+
|
|
|
551
|
+**问题3:按字段动态路由L3指标**(替代固定L3)
|
|
|
552
|
+
|
|
|
553
|
+| 方法 | 字段 | 路由逻辑 |
|
|
|
554
|
+|------|------|----------|
|
|
|
555
|
+| syncSupervisionProblem | `problemType` | 上级→113,部门→112,默认→111 |
|
|
|
556
|
+| syncRealtimeInterception | 无层级字段 | 固定用站层级121 |
|
|
|
557
|
+| syncSecurityTest | `testType` | 局方→141,公司→142,站→143 |
|
|
|
558
|
+| syncUnsafeEvent | `eventType` | 一类→131...五类→135 |
|
|
|
559
|
+| syncServicePatrol | `serviceType` | 航站楼→221,站层级→222,部门→223 |
|
|
|
560
|
+| syncExamScore | `examCategory` | 含"图像/开机"→352,其余→351 |
|
|
|
561
|
+
|
|
|
562
|
+**问题4:补考扣分逻辑移除**(暂无台账,只保留≥98加分)
|
|
|
563
|
+
|
|
|
564
|
+### indicator_init.sql 重写
|
|
|
565
|
+
|
|
|
566
|
+- 旧版ID(1001~1343)→ 新版ID(11~1522),与 score.sql 完全对齐
|
|
|
567
|
+- 保留 `@dim` 变量方式(动态查询维度ID,不依赖AUTO_INCREMENT顺序)
|
|
|
568
|
+- 补全全部128条指标,"暂无台账"项统一标注 remark
|
|
|
569
|
+- **旧版文件作废,使用新版**
|
|
|
570
|
+
|
|
|
571
|
+### 新增SQL脚本
|
|
|
572
|
+
|
|
|
573
|
+| 文件 | 用途 |
|
|
|
574
|
+|------|------|
|
|
|
575
|
+| `sql/fix_sync_indicator_ids.sql` | 清除旧同步数据(`DELETE FROM score_event WHERE source_type='2'`),重建指标后重新同步 |
|
|
|
576
|
+| `sql/truncate_ledger.sql` | 清空所有15张台账表 + 导入日志 + 同步事件,用于重新全量导入前 |
|
|
|
577
|
+
|
|
|
578
|
+### ScoreRadarServiceImpl 修正内容
|
|
|
579
|
+
|
|
|
580
|
+**问题1:逗号合并多人名显示为一张卡片**
|
|
|
581
|
+- 原因:`person_name = "彭秋菊,刘莹,王青"` 直接当一个人处理
|
|
|
582
|
+- 修复:`rawName.split("[,,]")` 拆分后每人单独计分,各自显示独立雷达卡
|
|
|
583
|
+
|
|
|
584
|
+**问题2:无加减分记录的成员不出现在大屏**
|
|
|
585
|
+- 原因:只从 `score_event` 取 personName,没有事件的人不会出现
|
|
|
586
|
+- 修复:从 `sys_user`(按 `dept_id` 关联 `sys_dept`)取完整花名册,无事件成员显示纯基础分(79.6分)
|
|
|
587
|
+
|
|
|
588
|
+**问题3:大屏下拉从班组级别改为小组级别**
|
|
|
589
|
+- `dept_type` 从 `'MANAGER'`(班组)改为 `'TEAMS'`(小组)
|
|
|
590
|
+
|
|
|
591
|
+**问题4:team_name 层级不匹配导致事件全部被过滤**
|
|
|
592
|
+- 根因:score_event 存储的是班组名(屹动班组),但大屏选择的是小组名,LIKE 查不到
|
|
|
593
|
+- 修复:移除 `scoreEventMapper.selectList(eq.setTeamName(...))` 的 team_name 过滤,改为全量加载后在 Java 中按 `rosterNames.contains(name)` 过滤
|
|
|
594
|
+
|
|
|
595
|
+**关键设计**:以 `sys_user.nick_name` 为准匹配 `score_event.person_name`,完全绕开 team_name 层级问题
|
|
|
596
|
+
|
|
|
597
|
+### 重新同步步骤(测试服务器)
|
|
|
598
|
+
|
|
|
599
|
+```sql
|
|
|
600
|
+-- 1. 清除旧同步数据(或执行 sql/truncate_ledger.sql 全清)
|
|
|
601
|
+DELETE FROM score_event WHERE source_type = '2';
|
|
|
602
|
+-- 2. 确认指标是新版ID(MAX应为1522)
|
|
|
603
|
+SELECT MAX(id) FROM score_indicator;
|
|
|
604
|
+-- 如果不是,执行:DELETE FROM score_indicator; 然后执行 indicator_init.sql
|
|
|
605
|
+-- 3. 重启后端,在页面点击"同步台账"
|
|
|
606
|
+```
|