Browse Source

Merge remote-tracking branch 'origin/master'

wangdong6 4 years ago
parent
commit
e477401879

+ 14 - 0
security-protection-service/src/main/java/com/ai/bss/security/protection/controller/AttendanceReportController.java

6
import com.ai.bss.security.protection.model.AttendanceReport;
6
import com.ai.bss.security.protection.model.AttendanceReport;
7
import com.ai.bss.security.protection.service.interfaces.AttendanceReportService;
7
import com.ai.bss.security.protection.service.interfaces.AttendanceReportService;
8
import com.ai.bss.security.protection.utils.EbcConstant;
8
import com.ai.bss.security.protection.utils.EbcConstant;
9
10
import org.apache.commons.lang.StringUtils;
9
import org.slf4j.Logger;
11
import org.slf4j.Logger;
10
import org.slf4j.LoggerFactory;
12
import org.slf4j.LoggerFactory;
11
import org.springframework.beans.factory.annotation.Autowired;
13
import org.springframework.beans.factory.annotation.Autowired;
47
		// 每页条数
49
		// 每页条数
48
		int pageSize = attendanceReport.getPageSize() < 1 ? EbcConstant.DEFAULT_PAGE_SIZE : attendanceReport.getPageSize();
50
		int pageSize = attendanceReport.getPageSize() < 1 ? EbcConstant.DEFAULT_PAGE_SIZE : attendanceReport.getPageSize();
49
51
52
		if (StringUtils.isEmpty(attendanceReport.getWorkDay())) {
53
			return CommonResponse.fail("503", "查询时间不能为空");
54
		}
55
		
50
		Map<String, Object> params = new HashMap<>();
56
		Map<String, Object> params = new HashMap<>();
51
		params.put("workDay",attendanceReport.getWorkDay());
57
		params.put("workDay",attendanceReport.getWorkDay());
52
		params.put("orgId",attendanceReport.getOrgId());
58
		params.put("orgId",attendanceReport.getOrgId());
79
		// 每页条数
85
		// 每页条数
80
		int pageSize = attendanceReport.getPageSize() < 1 ? EbcConstant.DEFAULT_PAGE_SIZE : attendanceReport.getPageSize();
86
		int pageSize = attendanceReport.getPageSize() < 1 ? EbcConstant.DEFAULT_PAGE_SIZE : attendanceReport.getPageSize();
81
87
88
		if (StringUtils.isEmpty(attendanceReport.getMonth())) {
89
			return CommonResponse.fail("503", "查询时间不能为空");
90
		}
91
		
92
		if (StringUtils.isEmpty(attendanceReport.getOrgId())) {
93
			return CommonResponse.fail("504", "查询部门不能为空");
94
		}
95
		
82
		Map<String, Object> params = new HashMap<>();
96
		Map<String, Object> params = new HashMap<>();
83
		params.put("month",attendanceReport.getMonth());
97
		params.put("month",attendanceReport.getMonth());
84
		params.put("orgId",attendanceReport.getOrgId());
98
		params.put("orgId",attendanceReport.getOrgId());

+ 244 - 13
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/AttendanceReportServiceImpl.java

10
import com.ai.bss.worker.service.api.AttendanceStatusQuery;
10
import com.ai.bss.worker.service.api.AttendanceStatusQuery;
11
import org.springframework.beans.factory.annotation.Autowired;
11
import org.springframework.beans.factory.annotation.Autowired;
12
import org.springframework.stereotype.Service;
12
import org.springframework.stereotype.Service;
13
import org.springframework.util.CollectionUtils;
13
14
14
import java.text.ParseException;
15
import java.text.ParseException;
15
import java.text.SimpleDateFormat;
16
import java.text.SimpleDateFormat;
16
17
import java.util.Date;
18
import java.util.HashMap;
19
import java.util.List;
20
import java.util.Map;
17
import java.util.ArrayList;
18
import java.util.*;
21
19
22
/**
20
/**
23
 * @Auther: 王超
21
 * @Auther: 王超
42
        CommonResponse<PageBean<Map<String,Object>>>  attendanceReport = null;
40
        CommonResponse<PageBean<Map<String,Object>>>  attendanceReport = null;
43
        try {
41
        try {
44
            attendanceReport = attendanceStatusQuery.queryMonthlyAttendanceReport((new CommonRequest<>(params,pageNumber,pageSize)));
42
            attendanceReport = attendanceStatusQuery.queryMonthlyAttendanceReport((new CommonRequest<>(params,pageNumber,pageSize)));
43
            
44
            if (!attendanceReport.isSuccess()) {
45
            	return attendanceReport;
46
			}
47
            
48
            if (attendanceReport.getData()==null||CollectionUtils.isEmpty(attendanceReport.getData().getData())) {
49
				return CommonResponse.ok(new PageBean<Map<String,Object>>(new ArrayList<Map<String,Object>>(), pageSize, pageNumber, 1, 1));
50
			}
51
            
45
            List<Map<String, Object>> dailyAttendanceList = attendanceReport.getData().getData();
52
            List<Map<String, Object>> dailyAttendanceList = attendanceReport.getData().getData();
46
            if(dailyAttendanceList != null && dailyAttendanceList.size() != 0){
53
            if(dailyAttendanceList != null && dailyAttendanceList.size() != 0){
47
                Map<String, Object> dailyAttendanceMap = dailyAttendanceList.get(0);
54
                Map<String, Object> dailyAttendanceMap = dailyAttendanceList.get(0);
116
        CommonResponse<List<Map<String, Object>>> attendanceReportResponse =  null;
123
        CommonResponse<List<Map<String, Object>>> attendanceReportResponse =  null;
117
        try {
124
        try {
118
            attendanceReportResponse = attendanceStatusQuery.queryAttendanceDetailReport(new CommonRequest<>(params,1,10));
125
            attendanceReportResponse = attendanceStatusQuery.queryAttendanceDetailReport(new CommonRequest<>(params,1,10));
126
            
127
            if (!attendanceReportResponse.isSuccess()) {
128
            	return attendanceReportResponse;
129
			}
130
            
131
            if (CollectionUtils.isEmpty(attendanceReportResponse.getData())) {
132
				return CommonResponse.ok(null);
133
			}
134
            
119
            List<Map<String, Object>> attendanceReportList = attendanceReportResponse.getData();
135
            List<Map<String, Object>> attendanceReportList = attendanceReportResponse.getData();
120
136
121
            attendanceReportList.forEach((dailyAttendance)->{
137
            attendanceReportList.forEach((dailyAttendance)->{
129
                    }
145
                    }
130
                });
146
                });
131
147
132
                String[] attendanceStatusArray = new String[2];
148
                //存放考勤状态
149
                ArrayList<Object> attendanceStatusList = new ArrayList<>();
150
                //判断是否是外勤
151
                if (dailyAttendance.get("goToWorkExceptionStatus")!=null&& "FIE".equals(dailyAttendance.get("goToWorkExceptionStatus") )) {
152
                    attendanceStatusList.add("上午外勤");
153
                }
154
                if (dailyAttendance.get("goOffWorkExceptionStatus")!=null&&"FIE".equals(dailyAttendance.get("goToWorkExceptionStatus") )) {
155
                    attendanceStatusList.add("下午外勤");
156
                }
157
                //判断是否是加班
158
                if (dailyAttendance.get("goToWorkExceptionStatus")!=null&& "OVE".equals(dailyAttendance.get("goToWorkExceptionStatus") )) {
159
                    attendanceStatusList.add("上午加班");
160
                }
161
                if (dailyAttendance.get("goOffWorkExceptionStatus")!=null&&"OVE".equals(dailyAttendance.get("goToWorkExceptionStatus") )) {
162
                    attendanceStatusList.add("下午加班");
163
                }
164
165
                //如果都正常有外勤显示外勤,没外勤显示正常,不属于异常考勤
166
                if("正常".equals(dailyAttendance.get("goToWorkStatus"))&&"正常".equals(dailyAttendance.get("goOffWorkStatus"))){
167
                    if(!(null!=attendanceStatusList&&attendanceStatusList.size()>0)){
168
                        attendanceStatusList.add("正常");
169
                    }
170
                    dailyAttendance.put("isAbnormal",false);
171
                }
172
                //如果上午正常,下午非正常 则显示下午的
173
                if("正常".equals(dailyAttendance.get("goToWorkStatus"))&&!"正常".equals(dailyAttendance.get("goOffWorkStatus"))){
174
                    if("迟到".equals(dailyAttendance.get("goOffWorkStatus"))){
175
                        attendanceStatusList.add("迟到"+dailyAttendance.get("goOffWorkTime") +"分");
176
                    }
177
                    if("早退".equals(dailyAttendance.get("goOffWorkStatus"))){
178
                        attendanceStatusList.add("早退"+dailyAttendance.get("goOffWorkTime") +"分");
179
                    }
180
                    if("旷工".equals(dailyAttendance.get("goOffWorkStatus"))){
181
                        attendanceStatusList.add("旷工"+dailyAttendance.get("goToWorkTime") +"天");
182
                    }
183
                    if("倒休".equals(dailyAttendance.get("goOffWorkStatus"))||"事假".equals(dailyAttendance.get("goOffWorkStatus"))||"年假".equals(dailyAttendance.get("goOffWorkStatus"))||"放假".equals(dailyAttendance.get("goOffWorkStatus"))||"病假".equals(dailyAttendance.get("goOffWorkStatus"))){
184
                        attendanceStatusList.add(dailyAttendance.get("goOffWorkStatus"));
185
                        dailyAttendance.put("isAbnormal",false);
186
                    }else{
187
                        dailyAttendance.put("isAbnormal",true);
188
                    }
189
                }
190
                //如果上午非正常,下午正常 则显示上午的
191
                if(!"正常".equals(dailyAttendance.get("goToWorkStatus"))&&"正常".equals(dailyAttendance.get("goOffWorkStatus"))){
192
                    if("迟到".equals(dailyAttendance.get("goToWorkStatus"))){
193
                        attendanceStatusList.add("迟到"+dailyAttendance.get("goToWorkTime") +"分");
194
                    }
195
                    if("早退".equals(dailyAttendance.get("goToWorkStatus"))){
196
                        attendanceStatusList.add("早退"+dailyAttendance.get("goToWorkTime") +"分");
197
                    }
198
                    if("旷工".equals(dailyAttendance.get("goToWorkStatus"))){
199
                        attendanceStatusList.add("旷工"+dailyAttendance.get("goToWorkTime") +"天");
200
                    }
201
                    if("倒休".equals(dailyAttendance.get("goToWorkStatus"))||"事假".equals(dailyAttendance.get("goToWorkStatus"))||"年假".equals(dailyAttendance.get("goToWorkStatus"))||"放假".equals(dailyAttendance.get("goToWorkStatus"))||"病假".equals(dailyAttendance.get("goToWorkStatus"))){
202
                        attendanceStatusList.add(dailyAttendance.get("goToWorkStatus"));
203
                        dailyAttendance.put("isAbnormal",false);
204
                    }else{
205
                        dailyAttendance.put("isAbnormal",true);
206
                    }
207
                }
208
                //如果上午非正常,下午非正常
209
                if(!"正常".equals(dailyAttendance.get("goToWorkStatus"))&&!"正常".equals(dailyAttendance.get("goOffWorkStatus"))){
210
                    //如果上下午状态相等且是放假 倒休 事假 年假 病假 放假 显示一种状态 非异常考勤
211
                    if(dailyAttendance.get("goToWorkStatus").equals(dailyAttendance.get("goOffWorkStatus"))&&("倒休".equals(dailyAttendance.get("goToWorkStatus"))||"事假".equals(dailyAttendance.get("goToWorkStatus"))||"年假".equals(dailyAttendance.get("goToWorkStatus"))||"放假".equals(dailyAttendance.get("goToWorkStatus"))||"病假".equals(dailyAttendance.get("goToWorkStatus")))){
212
                        attendanceStatusList.add(dailyAttendance.get("goToWorkStatus"));
213
                        dailyAttendance.put("isAbnormal",false);
214
                    }
215
                    //如果上下午状态相等且是旷工 显示一种状态 异常考勤
216
                    else if(dailyAttendance.get("goToWorkStatus").equals(dailyAttendance.get("goOffWorkStatus"))&&"旷工".equals(dailyAttendance.get("goToWorkStatus"))){
217
                        attendanceStatusList.add("旷工1天");
218
                        dailyAttendance.put("isAbnormal",true);
219
                    }else{
220
                        //显示俩种状态
221
                        String[] attendanceStatusArray = new String[2];
222
                        attendanceStatusArray[0]= (String) dailyAttendance.get("goToWorkStatus");
223
                        attendanceStatusArray[1]= (String) dailyAttendance.get("goOffWorkStatus");
224
                        dailyAttendance.put("isAbnormal",false);
225
226
                        if("迟到".equals(dailyAttendance.get("goToWorkStatus"))){
227
                            attendanceStatusArray[0]="迟到"+dailyAttendance.get("goToWorkTime") +"分";
228
                            dailyAttendance.put("isAbnormal",true);
229
                        }
230
                        if("早退".equals(dailyAttendance.get("goOffWorkStatus"))){
231
                            attendanceStatusArray[1]="早退"+dailyAttendance.get("goOffWorkTime") +"分";
232
                            dailyAttendance.put("isAbnormal",true);
233
                        }
234
                        if("旷工".equals(dailyAttendance.get("goToWorkStatus"))){
235
                            attendanceStatusArray[0]="旷工"+dailyAttendance.get("goToWorkTime") +"天";
236
                            dailyAttendance.put("isAbnormal",true);
237
                        }
238
                        if("旷工".equals(dailyAttendance.get("goOffWorkStatus"))){
239
                            attendanceStatusArray[0]="旷工"+dailyAttendance.get("goOffWorkTime") +"天";
240
                            dailyAttendance.put("isAbnormal",true);
241
                        }
242
                        if("未打卡".equals(dailyAttendance.get("goToWorkStatus"))||"未打卡".equals(dailyAttendance.get("goOffWorkStatus"))){
243
                            dailyAttendance.put("isAbnormal",true);
244
                        }
245
                        attendanceStatusList.add(attendanceStatusArray[0]);
246
                        attendanceStatusList.add(attendanceStatusArray[1]);
247
                    }
248
                    dailyAttendance.put("descr",attendanceStatusList);
249
                }
250
251
              /*  String[] attendanceStatusArray = new String[2];
133
                dailyAttendance.put("date",dailyAttendance.get("workDay"));
252
                dailyAttendance.put("date",dailyAttendance.get("workDay"));
134
                dailyAttendance.put("isAbnormal",true);
253
                dailyAttendance.put("isAbnormal",true);
135
                if("正常".equals(dailyAttendance.get("goToWorkStatus"))&&"正常".equals(dailyAttendance.get("goOffWorkStatus"))){
254
                if("正常".equals(dailyAttendance.get("goToWorkStatus"))&&"正常".equals(dailyAttendance.get("goOffWorkStatus"))){
166
                        attendanceStatusArray[0]= (String) dailyAttendance.get("goToWorkStatus");
285
                        attendanceStatusArray[0]= (String) dailyAttendance.get("goToWorkStatus");
167
                    }
286
                    }
168
                    dailyAttendance.put("descr",attendanceStatusArray);
287
                    dailyAttendance.put("descr",attendanceStatusArray);
169
                }
288
                }*/
170
            });
289
            });
171
            List<Map<String, Object>> dataList = attendanceReportResponse.getData();
290
          /*  List<Map<String, Object>> dataList = attendanceReportResponse.getData();
172
            dataList.forEach((data)->{
291
            dataList.forEach((data)->{
173
                String[] attendanceStatus = (String[]) data.get("descr");
292
                String[] attendanceStatus = (String[]) data.get("descr");
174
                if(null!=attendanceStatus&&attendanceStatus.length>0){
293
                if(null!=attendanceStatus&&attendanceStatus.length>0){
178
                        data.put("descr",attendanceStatusArray);
297
                        data.put("descr",attendanceStatusArray);
179
                    }
298
                    }
180
                }
299
                }
181
            });
300
            });*/
182
301
183
            HashMap<String, Object> attendanceReportMap = new HashMap<>();
302
            HashMap<String, Object> attendanceReportMap = new HashMap<>();
184
            attendanceReportMap.put("userId",params.get("id"));
303
            attendanceReportMap.put("userId",params.get("id"));
209
        CommonResponse<PageBean<Map<String,Object>>>  attendanceReport = null;
328
        CommonResponse<PageBean<Map<String,Object>>>  attendanceReport = null;
210
        try {
329
        try {
211
            attendanceReport = attendanceStatusQuery.queryDailyAttendanceReport((new CommonRequest<>(params,pageNumber,pageSize)));
330
            attendanceReport = attendanceStatusQuery.queryDailyAttendanceReport((new CommonRequest<>(params,pageNumber,pageSize)));
331
            
332
            if (!attendanceReport.isSuccess()) {
333
            	return attendanceReport;
334
			}
335
            
336
            if (attendanceReport.getData()==null||CollectionUtils.isEmpty(attendanceReport.getData().getData())) {
337
				return CommonResponse.ok(new PageBean<Map<String,Object>>(new ArrayList<Map<String,Object>>(), pageSize, pageNumber, 1, 1));
338
			}
339
            
212
            List<Map<String, Object>> dailyAttendanceList = attendanceReport.getData().getData();
340
            List<Map<String, Object>> dailyAttendanceList = attendanceReport.getData().getData();
213
            dailyAttendanceList.forEach((dailyAttendance)->{
341
            dailyAttendanceList.forEach((dailyAttendance)->{
214
                mainjobpositionList.forEach((mainjobposition)->{
342
                mainjobpositionList.forEach((mainjobposition)->{
225
                        dailyAttendance.put("goOffWorkStatus", clockingStatus.getValue());
353
                        dailyAttendance.put("goOffWorkStatus", clockingStatus.getValue());
226
                    }
354
                    }
227
                });
355
                });
356
                //存放考勤状态
357
                ArrayList<Object> attendanceStatusList = new ArrayList<>();
358
                //判断是否是外勤
359
                if (dailyAttendance.get("goToWorkExceptionStatus")!=null&& "FIE".equals(dailyAttendance.get("goToWorkExceptionStatus") )) {
360
                    attendanceStatusList.add("上午外勤");
361
                }
362
                if (dailyAttendance.get("goOffWorkExceptionStatus")!=null&&"FIE".equals(dailyAttendance.get("goToWorkExceptionStatus") )) {
363
                    attendanceStatusList.add("下午外勤");
364
                }
365
                //判断是否是加班
366
                if (dailyAttendance.get("goToWorkExceptionStatus")!=null&& "OVE".equals(dailyAttendance.get("goToWorkExceptionStatus") )) {
367
                    attendanceStatusList.add("上午加班");
368
                }
369
                if (dailyAttendance.get("goOffWorkExceptionStatus")!=null&&"OVE".equals(dailyAttendance.get("goToWorkExceptionStatus") )) {
370
                    attendanceStatusList.add("下午加班");
371
                }
228
372
229
                String[] attendanceStatusArray = new String[2];
373
                //如果都正常有外勤显示外勤,没外勤显示正常,不属于异常考勤
374
                if("正常".equals(dailyAttendance.get("goToWorkStatus"))&&"正常".equals(dailyAttendance.get("goOffWorkStatus"))){
375
                    if(!(null!=attendanceStatusList&&attendanceStatusList.size()>0)){
376
                        attendanceStatusList.add("正常");
377
                    }
378
                    dailyAttendance.put("isAbnormal",false);
379
                }
380
                //如果上午正常,下午非正常 则显示下午的
381
                if("正常".equals(dailyAttendance.get("goToWorkStatus"))&&!"正常".equals(dailyAttendance.get("goOffWorkStatus"))){
382
                    if("迟到".equals(dailyAttendance.get("goOffWorkStatus"))){
383
                        attendanceStatusList.add("迟到"+dailyAttendance.get("goOffWorkTime") +"分");
384
                    }
385
                    if("早退".equals(dailyAttendance.get("goOffWorkStatus"))){
386
                        attendanceStatusList.add("早退"+dailyAttendance.get("goOffWorkTime") +"分");
387
                    }
388
                    if("旷工".equals(dailyAttendance.get("goOffWorkStatus"))){
389
                        attendanceStatusList.add("旷工"+dailyAttendance.get("goToWorkTime") +"天");
390
                    }
391
                    if("倒休".equals(dailyAttendance.get("goOffWorkStatus"))||"事假".equals(dailyAttendance.get("goOffWorkStatus"))||"年假".equals(dailyAttendance.get("goOffWorkStatus"))||"放假".equals(dailyAttendance.get("goOffWorkStatus"))||"病假".equals(dailyAttendance.get("goOffWorkStatus"))){
392
                        attendanceStatusList.add(dailyAttendance.get("goOffWorkStatus"));
393
                        dailyAttendance.put("isAbnormal",false);
394
                    }else{
395
                        dailyAttendance.put("isAbnormal",true);
396
                    }
397
                }
398
                //如果上午非正常,下午正常 则显示上午的
399
                if(!"正常".equals(dailyAttendance.get("goToWorkStatus"))&&"正常".equals(dailyAttendance.get("goOffWorkStatus"))){
400
                    if("迟到".equals(dailyAttendance.get("goToWorkStatus"))){
401
                        attendanceStatusList.add("迟到"+dailyAttendance.get("goToWorkTime") +"分");
402
                    }
403
                    if("早退".equals(dailyAttendance.get("goToWorkStatus"))){
404
                        attendanceStatusList.add("早退"+dailyAttendance.get("goToWorkTime") +"分");
405
                    }
406
                    if("旷工".equals(dailyAttendance.get("goToWorkStatus"))){
407
                        attendanceStatusList.add("旷工"+dailyAttendance.get("goToWorkTime") +"天");
408
                    }
409
                    if("倒休".equals(dailyAttendance.get("goToWorkStatus"))||"事假".equals(dailyAttendance.get("goToWorkStatus"))||"年假".equals(dailyAttendance.get("goToWorkStatus"))||"放假".equals(dailyAttendance.get("goToWorkStatus"))||"病假".equals(dailyAttendance.get("goToWorkStatus"))){
410
                        attendanceStatusList.add(dailyAttendance.get("goToWorkStatus"));
411
                        dailyAttendance.put("isAbnormal",false);
412
                    }else{
413
                        dailyAttendance.put("isAbnormal",true);
414
                    }
415
                }
416
                //如果上午非正常,下午非正常
417
                if(!"正常".equals(dailyAttendance.get("goToWorkStatus"))&&!"正常".equals(dailyAttendance.get("goOffWorkStatus"))){
418
                    //如果上下午状态相等且是放假 倒休 事假 年假 病假 放假 显示一种状态 非异常考勤
419
                    if(dailyAttendance.get("goToWorkStatus").equals(dailyAttendance.get("goOffWorkStatus"))&&("倒休".equals(dailyAttendance.get("goToWorkStatus"))||"事假".equals(dailyAttendance.get("goToWorkStatus"))||"年假".equals(dailyAttendance.get("goToWorkStatus"))||"放假".equals(dailyAttendance.get("goToWorkStatus"))||"病假".equals(dailyAttendance.get("goToWorkStatus")))){
420
                        attendanceStatusList.add(dailyAttendance.get("goToWorkStatus"));
421
                        dailyAttendance.put("isAbnormal",false);
422
                    }
423
                    //如果上下午状态相等且是旷工 显示一种状态 异常考勤
424
                    else if(dailyAttendance.get("goToWorkStatus").equals(dailyAttendance.get("goOffWorkStatus"))&&"旷工".equals(dailyAttendance.get("goToWorkStatus"))){
425
                        attendanceStatusList.add("旷工1天");
426
                        dailyAttendance.put("isAbnormal",true);
427
                    }else{
428
                        //显示俩种状态
429
                        String[] attendanceStatusArray = new String[2];
430
                        attendanceStatusArray[0]= (String) dailyAttendance.get("goToWorkStatus");
431
                        attendanceStatusArray[1]= (String) dailyAttendance.get("goOffWorkStatus");
432
                        dailyAttendance.put("isAbnormal",false);
433
434
                        if("迟到".equals(dailyAttendance.get("goToWorkStatus"))){
435
                            attendanceStatusArray[0]="迟到"+dailyAttendance.get("goToWorkTime") +"分";
436
                            dailyAttendance.put("isAbnormal",true);
437
                        }
438
                        if("早退".equals(dailyAttendance.get("goOffWorkStatus"))){
439
                            attendanceStatusArray[1]="早退"+dailyAttendance.get("goOffWorkTime") +"分";
440
                            dailyAttendance.put("isAbnormal",true);
441
                        }
442
                        if("旷工".equals(dailyAttendance.get("goToWorkStatus"))){
443
                            attendanceStatusArray[0]="旷工"+dailyAttendance.get("goToWorkTime") +"天";
444
                            dailyAttendance.put("isAbnormal",true);
445
                        }
446
                        if("旷工".equals(dailyAttendance.get("goOffWorkStatus"))){
447
                            attendanceStatusArray[0]="旷工"+dailyAttendance.get("goOffWorkTime") +"天";
448
                            dailyAttendance.put("isAbnormal",true);
449
                        }
450
                        if("未打卡".equals(dailyAttendance.get("goToWorkStatus"))||"未打卡".equals(dailyAttendance.get("goOffWorkStatus"))){
451
                            dailyAttendance.put("isAbnormal",true);
452
                        }
453
                        attendanceStatusList.add(attendanceStatusArray[0]);
454
                        attendanceStatusList.add(attendanceStatusArray[1]);
455
                    }
456
                    dailyAttendance.put("descr",attendanceStatusList);
457
                }
458
459
460
               /* String[] attendanceStatusArray = new String[2];
230
461
231
                if("正常".equals(dailyAttendance.get("goToWorkStatus"))&&"正常".equals(dailyAttendance.get("goOffWorkStatus"))){
462
                if("正常".equals(dailyAttendance.get("goToWorkStatus"))&&"正常".equals(dailyAttendance.get("goOffWorkStatus"))){
232
                    //上下班都正常
463
                    //上下班都正常
263
                        attendanceStatusArray[0]= (String) dailyAttendance.get("goToWorkStatus");
494
                        attendanceStatusArray[0]= (String) dailyAttendance.get("goToWorkStatus");
264
                    }
495
                    }
265
                    dailyAttendance.put("descr",attendanceStatusArray);
496
                    dailyAttendance.put("descr",attendanceStatusArray);
266
                }
497
                }*/
267
            });
498
            });
268
        } catch (ParseException e) {
499
        } catch (ParseException e) {
269
            e.printStackTrace();
500
            e.printStackTrace();
270
        }
501
        }
271
        List<Map<String, Object>> dataList = attendanceReport.getData().getData();
502
       /* List<Map<String, Object>> dataList = attendanceReport.getData().getData();
272
        dataList.forEach((data)->{
503
        dataList.forEach((data)->{
273
            String[] attendanceStatus = (String[]) data.get("attendanceStatus");
504
            String[] attendanceStatus = (String[]) data.get("attendanceStatus");
274
            if(null!=attendanceStatus&&attendanceStatus.length>0){
505
            if(null!=attendanceStatus&&attendanceStatus.length>0){
278
                    data.put("attendanceStatus",attendanceStatusArray);
509
                    data.put("attendanceStatus",attendanceStatusArray);
279
                }
510
                }
280
            }
511
            }
281
        });
512
        });*/
282
        return attendanceReport;
513
        return attendanceReport;
283
    }
514
    }
284
}
515
}

+ 53 - 40
security-protection-service/src/main/java/com/ai/bss/security/protection/service/task/AiResultRecordKafkaTask.java

5
5
6
import org.apache.commons.lang.StringUtils;
6
import org.apache.commons.lang.StringUtils;
7
import org.apache.kafka.clients.consumer.ConsumerRecord;
7
import org.apache.kafka.clients.consumer.ConsumerRecord;
8
import org.junit.Assert;
9
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.beans.factory.annotation.Autowired;
10
import org.springframework.kafka.annotation.KafkaListener;
9
import org.springframework.kafka.annotation.KafkaListener;
11
import org.springframework.kafka.support.Acknowledgment;
10
import org.springframework.kafka.support.Acknowledgment;
41
40
42
	@Autowired
41
	@Autowired
43
	private ResourceToolManageService resourceToolManageService;
42
	private ResourceToolManageService resourceToolManageService;
44
	
43
45
	@Autowired
44
	@Autowired
46
	private MonitorSceneQuery monitorSceneQuery;
45
	private MonitorSceneQuery monitorSceneQuery;
47
	
46
48
	@Autowired
47
	@Autowired
49
	private AiAlarmManageService aiAlarmManageService;
48
	private AiAlarmManageService aiAlarmManageService;
50
	
51
49
52
	@KafkaListener(containerFactory = "kafkaBatchListener6", topics = "${kafka.topic.aitask:topic_ai_task}", groupId = "ai_group")
50
	@KafkaListener(containerFactory = "kafkaBatchListener6", topics = "${kafka.topic.aitask:topic_ai_task}", groupId = "ai_group")
53
	public void AiResultRecordListener(ConsumerRecord<String, String> records, Acknowledgment ack) throws Throwable {
51
	public void AiResultRecordListener(ConsumerRecord<String, String> records, Acknowledgment ack) throws Throwable {
58
			log.info("已接AI任务执行结果消息,消息为:" + message);
56
			log.info("已接AI任务执行结果消息,消息为:" + message);
59
57
60
			JSONObject messageJson = JSONObject.parseObject(message);
58
			JSONObject messageJson = JSONObject.parseObject(message);
61
			String resourceToolCod=messageJson.getString("resourceToolCode");
62
			String aiIdenModel=messageJson.getString("aiIdenModel");
63
			String idenResultType=messageJson.getString("idenResultType");
64
			
65
			//查询相关数据
59
			String resourceToolCod = messageJson.getString("resourceToolCode");
60
			String aiIdenModel = messageJson.getString("aiIdenModel");
61
			String idenResultType = messageJson.getString("idenResultType");
62
63
			// 查询相关数据
66
			Map<String, Object> resourceToolMap = resourceToolManageService.queryResourceToolByCode(resourceToolCod);
64
			Map<String, Object> resourceToolMap = resourceToolManageService.queryResourceToolByCode(resourceToolCod);
67
			if (resourceToolMap == null) {
65
			if (resourceToolMap == null) {
68
				log.error("AI任务执行结果的设备CODE不存在:  resourceToolCode=" + messageJson.getString("resourceToolCode"));
66
				log.error("AI任务执行结果的设备CODE不存在:  resourceToolCode=" + messageJson.getString("resourceToolCode"));
69
				throw new NullPointerException("resourceToolCode not exist");
67
				throw new NullPointerException("resourceToolCode not exist");
70
			}
68
			}
71
			
72
			String resourceToolId=String.valueOf(resourceToolMap.get("resourceToolId"));
73
			
74
			CommonResponse<List<Map<String, Object>>> sceneTerminalRelResponse =monitorSceneQuery.selectSceneTerminalRel(new CommonRequest<Long>(Long.valueOf(resourceToolId)));
75
			if (sceneTerminalRelResponse == null||CollectionUtils.isEmpty(sceneTerminalRelResponse.getData())) {
69
70
			String resourceToolId = String.valueOf(resourceToolMap.get("resourceToolId"));
71
72
			CommonResponse<List<Map<String, Object>>> sceneTerminalRelResponse = monitorSceneQuery
73
					.selectSceneTerminalRel(new CommonRequest<Long>(Long.valueOf(resourceToolId)));
74
			if (sceneTerminalRelResponse == null || CollectionUtils.isEmpty(sceneTerminalRelResponse.getData())) {
76
				log.error("AI任务执行结果的关联场景不存在:  resourceToolId=" + resourceToolId);
75
				log.error("AI任务执行结果的关联场景不存在:  resourceToolId=" + resourceToolId);
77
				throw new NullPointerException("sceneTerminalRel not exist");
76
				throw new NullPointerException("sceneTerminalRel not exist");
78
			}
77
			}
79
			Map<String,Object> sceneTerminalRelMap=sceneTerminalRelResponse.getData().get(0);
80
			
81
			CommonResponse<List<Map<String, Object>>> aiTaskResponse = aiAlarmManageService.queryAiTaskByDevice(resourceToolId, aiIdenModel);
82
			if (aiTaskResponse == null||CollectionUtils.isEmpty(aiTaskResponse.getData())) {
83
				log.error("AI任务执行结果的任务不存在:  resourceToolId=" + resourceToolId+", aiIdenModel="+aiIdenModel);
78
			Map<String, Object> sceneTerminalRelMap = sceneTerminalRelResponse.getData().get(0);
79
80
			CommonResponse<List<Map<String, Object>>> aiTaskResponse = aiAlarmManageService
81
					.queryAiTaskByDevice(resourceToolId, aiIdenModel);
82
			if (aiTaskResponse == null || CollectionUtils.isEmpty(aiTaskResponse.getData())) {
83
				log.error("AI任务执行结果的任务不存在:  resourceToolId=" + resourceToolId + ", aiIdenModel=" + aiIdenModel);
84
				throw new NullPointerException("aiTask not exist");
84
				throw new NullPointerException("aiTask not exist");
85
			}
85
			}
86
			Map<String, Object> aiTaskMap=aiTaskResponse.getData().get(0);
87
			
88
			//封装数据
86
			Map<String, Object> aiTaskMap = aiTaskResponse.getData().get(0);
87
88
			// 封装数据
89
			AiIdenLog aiIdenLog = JSON.parseObject(message, new TypeReference<AiIdenLog>() {
89
			AiIdenLog aiIdenLog = JSON.parseObject(message, new TypeReference<AiIdenLog>() {
90
			});
90
			});
91
			aiIdenLog.setResourceToolId(resourceToolId);
91
			aiIdenLog.setResourceToolId(resourceToolId);
92
			aiIdenLog.setResourceToolName(StringUtils.defaultIfBlank(String.valueOf(resourceToolMap.get("resourceToolName")),""));
93
			aiIdenLog.setMonitorSceneId(StringUtils.defaultIfBlank(String.valueOf(sceneTerminalRelMap.get("monitorSceneId")),""));
94
			aiIdenLog.setMonitorSceneName(StringUtils.defaultIfBlank(String.valueOf(sceneTerminalRelMap.get("monitorSceneName")),""));
95
			//aiIdenLog.setEffectType(StringUtils.defaultIfBlank(String.valueOf(sceneTerminalRelMap.get("effectType")),EbcConstant.TERMINAL_EFFECT_TYPE_OTH));
96
			aiIdenLog.setTerminalPosition(StringUtils.defaultIfBlank(String.valueOf(sceneTerminalRelMap.get("place")),""));
97
			aiIdenLog.setOrganizationId(StringUtils.defaultIfBlank(String.valueOf(sceneTerminalRelMap.get("orgId")),""));
98
			aiIdenLog.setAiTaskId(aiTaskMap.get("aiTaskId")==null?0L:Long.valueOf(String.valueOf(aiTaskMap.get("aiTaskId"))));
99
			
100
			//TODO 人员信息暂时默认
92
			aiIdenLog.setResourceToolName(
93
					StringUtils.defaultIfBlank(String.valueOf(resourceToolMap.get("resourceToolName")), ""));
94
			aiIdenLog.setMonitorSceneId(
95
					StringUtils.defaultIfBlank(String.valueOf(sceneTerminalRelMap.get("monitorSceneId")), ""));
96
			aiIdenLog.setMonitorSceneName(
97
					StringUtils.defaultIfBlank(String.valueOf(sceneTerminalRelMap.get("monitorSceneName")), ""));
98
			// aiIdenLog.setEffectType(StringUtils.defaultIfBlank(String.valueOf(sceneTerminalRelMap.get("effectType")),EbcConstant.TERMINAL_EFFECT_TYPE_OTH));
99
			aiIdenLog.setTerminalPosition(
100
					StringUtils.defaultIfBlank(String.valueOf(sceneTerminalRelMap.get("place")), ""));
101
			aiIdenLog.setOrganizationId(
102
					StringUtils.defaultIfBlank(String.valueOf(sceneTerminalRelMap.get("orgId")), ""));
103
			aiIdenLog.setAiTaskId(
104
					aiTaskMap.get("aiTaskId") == null ? 0L : Long.valueOf(String.valueOf(aiTaskMap.get("aiTaskId"))));
105
106
			// TODO 人员信息暂时默认
101
			aiIdenLog.setRelateEmployeeRoleId("201613310867");
107
			aiIdenLog.setRelateEmployeeRoleId("201613310867");
102
			aiIdenLog.setRelateEmployeeRoleName("王浩");
108
			aiIdenLog.setRelateEmployeeRoleName("王浩");
103
109
104
			//执行操作
105
			CommonRequest<AiIdenLog> aiIdenLogRequest=new CommonRequest<AiIdenLog>(aiIdenLog);
106
			
110
			// 执行操作
111
			CommonRequest<AiIdenLog> aiIdenLogRequest = new CommonRequest<AiIdenLog>(aiIdenLog);
112
107
			CommonResponse<AiIdenLog> runningResult = aiTaskCommand.createAiIdenLog(aiIdenLogRequest);
113
			CommonResponse<AiIdenLog> runningResult = aiTaskCommand.createAiIdenLog(aiIdenLogRequest);
108
			log.debug("aiTaskResult runningResult: \n{}", JsonUtils.toJSONStringByDateFormat(runningResult, true));
109
			Assert.assertTrue(runningResult.isSuccess());
110
			
114
			log.debug("AI任务执行结果: \n{}", JsonUtils.toJSONStringByDateFormat(runningResult, true));
115
116
			if (!runningResult.isSuccess()) {
117
				log.error("AI任务执行结果异常: " + runningResult.getFail().getMessage());
118
				return;
119
			}
120
111
			if (!EbcConstant.AI_IDENTIFY_RESULT_NORMAL.equals(idenResultType)) {
121
			if (!EbcConstant.AI_IDENTIFY_RESULT_NORMAL.equals(idenResultType)) {
112
				CommonResponse runningResult1 = aiTaskCommand.aiIdenLogTriggerEvent(aiIdenLogRequest);
122
				CommonResponse runningResult1 = aiTaskCommand.aiIdenLogTriggerEvent(aiIdenLogRequest);
113
				
123
114
				log.debug("AI任务非正常情况的执行结果: \n{}", JsonUtils.toJSONStringByDateFormat(runningResult1, true));
124
				log.debug("AI任务非正常情况的执行结果: \n{}", JsonUtils.toJSONStringByDateFormat(runningResult1, true));
115
				Assert.assertTrue(runningResult1.isSuccess());
125
				if (!runningResult.isSuccess()) {
126
					log.error("AI任务非正常情况的执行结果异常: " + runningResult.getFail().getMessage());
127
					return;
128
				}
116
			}
129
			}
117
130
118
		} catch (Exception e) {
131
		} catch (Exception e) {
119
			log.error("kafka消费异常" + e.getMessage(), e);
132
			log.error("AI任务执行结果消费异常" + e.getMessage(), e);
120
		} finally {
133
		} finally {
121
			ack.acknowledge();// 手动提交偏移量
134
			ack.acknowledge();// 手动提交偏移量
122
		}
135
		}

+ 8 - 5
security-protection-service/src/main/java/com/ai/bss/security/protection/service/task/AiVideoKafkaTask.java

3
import java.util.Map;
3
import java.util.Map;
4
4
5
import org.apache.kafka.clients.consumer.ConsumerRecord;
5
import org.apache.kafka.clients.consumer.ConsumerRecord;
6
import org.junit.Assert;
7
import org.springframework.beans.factory.annotation.Autowired;
6
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.kafka.annotation.KafkaListener;
7
import org.springframework.kafka.annotation.KafkaListener;
9
import org.springframework.kafka.support.Acknowledgment;
8
import org.springframework.kafka.support.Acknowledgment;
47
			Map<String, Object> resourceToolMap = resourceToolManageService
46
			Map<String, Object> resourceToolMap = resourceToolManageService
48
					.queryResourceToolByCode(messageJson.getString("resourceToolCode"));
47
					.queryResourceToolByCode(messageJson.getString("resourceToolCode"));
49
48
50
			if (resourceToolMap==null) {
49
			if (resourceToolMap == null) {
51
				log.error("AI监控视频日志的设备CODE不存在: " + messageJson.getString("resourceToolCode"));
50
				log.error("AI监控视频日志的设备CODE不存在: " + messageJson.getString("resourceToolCode"));
52
				throw new NullPointerException("resourceToolCode not exist");
51
				throw new NullPointerException("resourceToolCode not exist");
53
			}
52
			}
54
			
53
55
			MonitorVideoLog monitorVideoLog = JSON.parseObject(message, new TypeReference<MonitorVideoLog>() {
54
			MonitorVideoLog monitorVideoLog = JSON.parseObject(message, new TypeReference<MonitorVideoLog>() {
56
			});
55
			});
57
			monitorVideoLog.setResourceToolId(String.valueOf(resourceToolMap.get("resourceToolId")));
56
			monitorVideoLog.setResourceToolId(String.valueOf(resourceToolMap.get("resourceToolId")));
58
57
59
			CommonResponse<MonitorVideoLog> runningResult = monitorVideoLogManageService
58
			CommonResponse<MonitorVideoLog> runningResult = monitorVideoLogManageService
60
					.createMonitorVideoLog(monitorVideoLog);
59
					.createMonitorVideoLog(monitorVideoLog);
61
			log.debug("kafka aivideo runningResult: \n{}", JsonUtils.toJSONStringByDateFormat(runningResult, true));
62
			Assert.assertTrue(runningResult.isSuccess());
60
			log.debug("AI监控视频日志执行结果: \n{}", JsonUtils.toJSONStringByDateFormat(runningResult, true));
61
62
			if (!runningResult.isSuccess()) {
63
				log.error("AI监控视频日志执行结果异常: " + runningResult.getFail().getMessage());
64
				return;
65
			}
63
66
64
		} catch (Exception e) {
67
		} catch (Exception e) {
65
			log.error("AI监控视频日志消息的kafka消费异常: " + e.getMessage(), e);
68
			log.error("AI监控视频日志消息的kafka消费异常: " + e.getMessage(), e);

+ 2 - 0
security-protection-service/src/main/resources/application.properties

29
kafka.bootstrap-servers=10.19.90.34:9090
29
kafka.bootstrap-servers=10.19.90.34:9090
30
kafka.topic.aitask=topic_ai_task
30
kafka.topic.aitask=topic_ai_task
31
kafka.topic.aivideo=topic_ai_video
31
kafka.topic.aivideo=topic_ai_video
32
#kafka.topic.aitask=topicTaskTest
33
#kafka.topic.aivideo=topicVideoTest
32
kafka.producer.batch-size=16785
34
kafka.producer.batch-size=16785
33
kafka.producer.retries=1
35
kafka.producer.retries=1
34
kafka.producer.buffer-memory=33554432
36
kafka.producer.buffer-memory=33554432