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 462
                if("正常".equals(dailyAttendance.get("goToWorkStatus"))&&"正常".equals(dailyAttendance.get("goOffWorkStatus"))){
232 463
                    //上下班都正常
@ -263,12 +494,12 @@ public class AttendanceReportServiceImpl implements AttendanceReportService {
263 494
                        attendanceStatusArray[0]= (String) dailyAttendance.get("goToWorkStatus");
264 495
                    }
265 496
                    dailyAttendance.put("descr",attendanceStatusArray);
266
                }
497
                }*/
267 498
            });
268 499
        } catch (ParseException e) {
269 500
            e.printStackTrace();
270 501
        }
271
        List<Map<String, Object>> dataList = attendanceReport.getData().getData();
502
       /* List<Map<String, Object>> dataList = attendanceReport.getData().getData();
272 503
        dataList.forEach((data)->{
273 504
            String[] attendanceStatus = (String[]) data.get("attendanceStatus");
274 505
            if(null!=attendanceStatus&&attendanceStatus.length>0){
@ -278,7 +509,7 @@ public class AttendanceReportServiceImpl implements AttendanceReportService {
278 509
                    data.put("attendanceStatus",attendanceStatusArray);
279 510
                }
280 511
            }
281
        });
512
        });*/
282 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,7 +5,6 @@ import java.util.Map;
5 5
6 6
import org.apache.commons.lang.StringUtils;
7 7
import org.apache.kafka.clients.consumer.ConsumerRecord;
8
import org.junit.Assert;
9 8
import org.springframework.beans.factory.annotation.Autowired;
10 9
import org.springframework.kafka.annotation.KafkaListener;
11 10
import org.springframework.kafka.support.Acknowledgment;
@ -41,13 +40,12 @@ public class AiResultRecordKafkaTask {
41 40
42 41
	@Autowired
43 42
	private ResourceToolManageService resourceToolManageService;
44
	
43
45 44
	@Autowired
46 45
	private MonitorSceneQuery monitorSceneQuery;
47
	
46
48 47
	@Autowired
49 48
	private AiAlarmManageService aiAlarmManageService;
50
	
51 49
52 50
	@KafkaListener(containerFactory = "kafkaBatchListener6", topics = "${kafka.topic.aitask:topic_ai_task}", groupId = "ai_group")
53 51
	public void AiResultRecordListener(ConsumerRecord<String, String> records, Acknowledgment ack) throws Throwable {
@ -58,65 +56,80 @@ public class AiResultRecordKafkaTask {
58 56
			log.info("已接AI任务执行结果消息,消息为:" + message);
59 57
60 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 64
			Map<String, Object> resourceToolMap = resourceToolManageService.queryResourceToolByCode(resourceToolCod);
67 65
			if (resourceToolMap == null) {
68 66
				log.error("AI任务执行结果的设备CODE不存在:  resourceToolCode=" + messageJson.getString("resourceToolCode"));
69 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 75
				log.error("AI任务执行结果的关联场景不存在:  resourceToolId=" + resourceToolId);
77 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 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 89
			AiIdenLog aiIdenLog = JSON.parseObject(message, new TypeReference<AiIdenLog>() {
90 90
			});
91 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 107
			aiIdenLog.setRelateEmployeeRoleId("201613310867");
102 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 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 121
			if (!EbcConstant.AI_IDENTIFY_RESULT_NORMAL.equals(idenResultType)) {
112 122
				CommonResponse runningResult1 = aiTaskCommand.aiIdenLogTriggerEvent(aiIdenLogRequest);
113
				
123
114 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 131
		} catch (Exception e) {
119
			log.error("kafka消费异常" + e.getMessage(), e);
132
			log.error("AI任务执行结果消费异常" + e.getMessage(), e);
120 133
		} finally {
121 134
			ack.acknowledge();// 手动提交偏移量
122 135
		}

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

@ -3,7 +3,6 @@ package com.ai.bss.security.protection.service.task;
3 3
import java.util.Map;
4 4
5 5
import org.apache.kafka.clients.consumer.ConsumerRecord;
6
import org.junit.Assert;
7 6
import org.springframework.beans.factory.annotation.Autowired;
8 7
import org.springframework.kafka.annotation.KafkaListener;
9 8
import org.springframework.kafka.support.Acknowledgment;
@ -47,19 +46,23 @@ public class AiVideoKafkaTask {
47 46
			Map<String, Object> resourceToolMap = resourceToolManageService
48 47
					.queryResourceToolByCode(messageJson.getString("resourceToolCode"));
49 48
50
			if (resourceToolMap==null) {
49
			if (resourceToolMap == null) {
51 50
				log.error("AI监控视频日志的设备CODE不存在: " + messageJson.getString("resourceToolCode"));
52 51
				throw new NullPointerException("resourceToolCode not exist");
53 52
			}
54
			
53
55 54
			MonitorVideoLog monitorVideoLog = JSON.parseObject(message, new TypeReference<MonitorVideoLog>() {
56 55
			});
57 56
			monitorVideoLog.setResourceToolId(String.valueOf(resourceToolMap.get("resourceToolId")));
58 57
59 58
			CommonResponse<MonitorVideoLog> runningResult = monitorVideoLogManageService
60 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 67
		} catch (Exception e) {
65 68
			log.error("AI监控视频日志消息的kafka消费异常: " + e.getMessage(), e);

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

@ -29,6 +29,8 @@ spring.main.allow-bean-definition-overriding=true
29 29
kafka.bootstrap-servers=10.19.90.34:9090
30 30
kafka.topic.aitask=topic_ai_task
31 31
kafka.topic.aivideo=topic_ai_video
32
#kafka.topic.aitask=topicTaskTest
33
#kafka.topic.aivideo=topicVideoTest
32 34
kafka.producer.batch-size=16785
33 35
kafka.producer.retries=1
34 36
kafka.producer.buffer-memory=33554432

android-share - Nuosi Git Service

ipu的trunk版的android工程和服务端工程。

ipuOracle.sql 1.1KB

    DROP TABLE TABLE_IPU_MEMBER; CREATE TABLE TABLE_IPU_MEMBER ( STAFF_ID number(9,0) PRIMARY KEY, STAFF_NAME varchar(64) default NULL, PASSWORD varchar(10) default NULL ); INSERT INTO TABLE_IPU_MEMBER VALUES (66009, '黄波', '000000'); INSERT INTO TABLE_IPU_MEMBER VALUES (71335, '阳彪', '123456'); COMMIT; SELECT * FROM TABLE_IPU_MEMBER; ======================================================================== DROP TABLE TABLE_IPU_TEST; DROP SEQUENCE SEQ_IPU_TEST; CREATE SEQUENCE SEQ_IPU_TEST INCREMENT BY 1 START WITH 1 NOMAXvalue NOCYCLE CACHE 10; CREATE TABLE TABLE_IPU_TEST ( UUID number(9,0), STAFF_NAME varchar(64) default NULL, CREATE_TIME date ); INSERT INTO TABLE_IPU_TEST VALUES (SEQ_IPU_TEST.NEXTVAL, '黄波',to_date('2015-01-02 11:20:20','YYYY-MM-DD HH24:MI:SS')); INSERT INTO TABLE_IPU_TEST VALUES (SEQ_IPU_TEST.NEXTVAL, '阳彪', to_date('2015-02-03 12:22:23','YYYY-MM-DD HH24:MI:SS')); INSERT INTO TABLE_IPU_TEST VALUES (SEQ_IPU_TEST.NEXTVAL, '李四', to_date('2013-02-03 13:24:23','YYYY-MM-DD HH24:MI:SS')); COMMIT; SELECT * FROM TABLE_IPU_TEST;