Selaa lähdekoodia

用户画像大屏优化

wangxx 1 kuukausi sitten
vanhempi
commit
0c4976763e

+ 49 - 13
airport-ledger/src/main/java/com/sundot/airport/ledger/service/impl/EmployeePortraitServiceImpl.java

@@ -56,6 +56,9 @@ public class EmployeePortraitServiceImpl implements IEmployeePortraitService {
56 56
     @Autowired
57 57
     private LedgerPatrolInspectionMapper ledgerPatrolInspectionMapper;
58 58
 
59
+    private static final Long DIMENSION_ID_EMPLOYEE_STANDARDIZATION = 1L;
60
+
61
+
59 62
     // ── 搜索员工 ─────────────────────────────────────────────────────────────
60 63
 
61 64
     @Override
@@ -115,27 +118,60 @@ public class EmployeePortraitServiceImpl implements IEmployeePortraitService {
115 118
      * @param endTime 查询结束时间
116 119
      */
117 120
     private void fillQualityControl(EmployeePortraitVO vo, String personName, String beginTime, String endTime) {
118
-        ScoreEvent eq = new ScoreEvent();
119
-        eq.setPersonName(personName);
120
-        if (beginTime != null && !beginTime.isEmpty()) eq.getParams().put("beginTime", beginTime);
121
-        if (endTime   != null && !endTime.isEmpty())   eq.getParams().put("endTime",   endTime);
122 121
         // 查获违规品次数
123 122
         int qcCount = ledgerSeizureStatsMapper.countByInspectorAndDateRange(personName, beginTime, endTime);
124 123
         vo.setQualityControlCount(qcCount);
124
+
125 125
         // 监察问题记录次数
126
-        eq.setDimensionId(1L);
127
-        eq.setLevel2Name("员工规范化操作");
128
-        List<ScoreEvent> events = scoreEventMapper.selectList(eq);
129
-        vo.setQualityControlEventCount(events.size());
130
-        //实时质控拦截次数
131
-        eq.setLevel2Name("后台实时质控拦截");
132
-        List<ScoreEvent>  qcEvents = scoreEventMapper.selectList(eq);
133
-        vo.setRealtimeInterceptionCount(qcEvents.size());
134
-        //三级质控巡查次数
126
+        int standardizationCount = getScoreEventCount(personName, beginTime, endTime, "员工规范化操作");
127
+        vo.setQualityControlEventCount(standardizationCount);
128
+
129
+        // 实时质控拦截次数
130
+        int interceptionCount = getScoreEventCount(personName, beginTime, endTime, "后台实时质控拦截");
131
+        vo.setRealtimeInterceptionCount(interceptionCount);
132
+
133
+        // 三级质控巡查次数
135 134
         int patrolCount = ledgerPatrolInspectionMapper.countByInspectedNameAndDateRange(personName, beginTime, endTime);
136 135
         vo.setLevel3QualityControlCount(patrolCount);
137 136
     }
138 137
 
138
+    /**
139
+     * 获取特定维度下的质控事件数量
140
+     *
141
+     * @param personName 人员姓名
142
+     * @param beginTime 开始时间
143
+     * @param endTime 结束时间
144
+     * @param level2Name 二级维度名称
145
+     * @return 事件数量
146
+     */
147
+    private int getScoreEventCount(String personName, String beginTime, String endTime, String level2Name) {
148
+        ScoreEvent event = buildScoreEvent(personName, beginTime, endTime);
149
+        event.setDimensionId(DIMENSION_ID_EMPLOYEE_STANDARDIZATION);
150
+        event.setLevel2Name(level2Name);
151
+        List<ScoreEvent> events = scoreEventMapper.selectList(event);
152
+        return events == null ? 0 : events.size();
153
+    }
154
+
155
+    /**
156
+     * 构建基础的 ScoreEvent 查询对象
157
+     */
158
+    private ScoreEvent buildScoreEvent(String personName, String beginTime, String endTime) {
159
+        ScoreEvent event = new ScoreEvent();
160
+        event.setPersonName(personName);
161
+        // 确保 params 已初始化
162
+        if (event.getParams() == null) {
163
+            event.setParams(new java.util.HashMap<>());
164
+        }
165
+        if (beginTime != null && !beginTime.isEmpty()) {
166
+            event.getParams().put("beginTime", beginTime);
167
+        }
168
+        if (endTime != null && !endTime.isEmpty()) {
169
+            event.getParams().put("endTime", endTime);
170
+        }
171
+        return event;
172
+    }
173
+
174
+
139 175
     // ── 用户基本信息 ─────────────────────────────────────────────────────────
140 176
 
141 177
     private void fillUserInfo(EmployeePortraitVO vo, String personName) {