|
|
@@ -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) {
|