全帽识别AI处理异常:" + e.getMessage()); 124
		}
125
126
		return alarmIdenResultDtosList;
127
	}
128
129
}

+ 93 - 0
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/service/aiIden/SmokeAiIden.java

@ -0,0 +1,93 @@
1
package com.ai.bss.monitorManage.service.aiIden;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
import java.util.Map;
6
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.stereotype.Component;
9
import org.springframework.util.CollectionUtils;
10
11
import com.ai.bss.components.common.util.ImageBase64Converter;
12
import com.ai.bss.components.ebcai.service.EbcAiService;
13
import com.ai.bss.monitorManage.constant.MonitorManageConsts;
14
import com.ai.bss.monitorManage.model.AiIdenLogDto;
15
import com.ai.bss.monitorManage.model.AlarmIdenResultDto;
16
import com.ai.bss.monitorManage.service.interfaces.AiIdenInterfaces;
17
import com.ai.bss.monitorManage.service.interfaces.KafkaProcess;
18
import com.ai.bss.monitorManage.utils.AiIdenUtils;
19
import com.alibaba.fastjson.JSONArray;
20
import com.alibaba.fastjson.JSONObject;
21
22
import lombok.extern.slf4j.Slf4j;
23
24
/**
25
 * AI模型-吸烟检测
26
 * @author konghl@asiainfo.com
27
 * 2021-2-7
28
 */
29
@Slf4j
30
@Component
31
public class SmokeAiIden implements AiIdenInterfaces {
32
33
	@Autowired
34
	private EbcAiService ebcAiService;
35
36
	@Autowired
37
	private KafkaProcess kafkaProcess;
38
39
	@Override
40
	public List<AlarmIdenResultDto> executeAiIden(AiIdenLogDto aiIdenLogDto, String filePath,
41
			Map<String, Integer> imageParam, boolean isHuman) {
42
43
		if (!isHuman) {
44
			log.info("抽烟识别:没有识别到人......");
45
			return null;
46
		}
47
48
		List<AlarmIdenResultDto> alarmIdenResultDtosList = new ArrayList<AlarmIdenResultDto>();
49
50
		try {
51
			log.info("开始AI抽烟识别处理......");
52
			String aiResponseData = ebcAiService.smokingDetect(ImageBase64Converter.convertFileToBase64(filePath));
53
			log.info("AI抽烟识别结果: " + aiResponseData);
54
55
			JSONObject jsonObject = JSONObject.parseObject(aiResponseData);
56
			JSONObject jsonpredictions = JSONObject.parseObject(jsonObject.getString("predictions"));
57
58
			if ("1".equals(jsonpredictions.getString("Errors")) || jsonpredictions.get("Nums") == null) {
59
				log.error("抽烟识别返回错误");
60
				return null;
61
			}
62
63
			Integer nums = jsonpredictions.getInteger("Nums");// 吸烟者人数
64
			JSONArray jsonArray = JSONArray.parseArray(jsonpredictions.getString("Items"));
65
			if (nums <= 0 || CollectionUtils.isEmpty(jsonArray)) {
66
				log.info("没有识别到吸烟者,不推送KAFKA消息");
67
				return null;
68
			}
69
			log.debug("识别到的吸烟者数量为:" + nums);
70
71
			AlarmIdenResultDto idenResultDto = null;
72
			for (int i = 0; i < jsonArray.size(); i++) {
73
				idenResultDto = new AlarmIdenResultDto();
74
75
				idenResultDto.setAlarmEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
76
				idenResultDto.setAlarmType(MonitorManageConsts.AI_ALARM_TYPE_VIO);
77
				idenResultDto.setAlarmMemo("违规吸烟");
78
79
				JSONObject resultObj = JSONObject.parseObject(jsonArray.get(i).toString());
80
				int[] boxIntArr = AiIdenUtils.getBoxArray(resultObj.getJSONArray("box"), imageParam);
81
				idenResultDto.setBox(boxIntArr);
82
83
				alarmIdenResultDtosList.add(idenResultDto);
84
			}
85
86
		} catch (Exception e) {
87
			log.error("吸烟识别AI处理异常:" + e.getMessage());
88
		}
89
90
		return alarmIdenResultDtosList;
91
	}
92
93
}

+ 125 - 0
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/service/aiIden/StrangerAiIden.java

@ -0,0 +1,125 @@
1
package com.ai.bss.monitorManage.service.aiIden;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
import java.util.Map;
6
7
import org.apache.commons.lang.StringUtils;
8
import org.springframework.beans.factory.annotation.Autowired;
9
import org.springframework.stereotype.Component;
10
import org.springframework.util.CollectionUtils;
11
12
import com.ai.bss.components.common.util.ImageBase64Converter;
13
import com.ai.bss.components.ebcai.service.EbcAiService;
14
import com.ai.bss.monitorManage.constant.MonitorManageConsts;
15
import com.ai.bss.monitorManage.model.AiIdenLogDto;
16
import com.ai.bss.monitorManage.model.AlarmIdenResultDto;
17
import com.ai.bss.monitorManage.service.interfaces.AiIdenInterfaces;
18
import com.ai.bss.monitorManage.service.interfaces.KafkaProcess;
19
import com.ai.bss.monitorManage.utils.AiIdenUtils;
20
import com.alibaba.fastjson.JSON;
21
import com.alibaba.fastjson.JSONArray;
22
import com.alibaba.fastjson.JSONObject;
23
24
import lombok.extern.slf4j.Slf4j;
25
26
/**
27
 * AI模型-陌生人识别
28
 * @author konghl@asiainfo.com
29
 * 2021-2-7
30
 */
31
@Slf4j
32
@Component
33
public class StrangerAiIden implements AiIdenInterfaces {
34
	
35
	@Autowired
36
	private EbcAiService ebcAiService;
37
	
38
    @Autowired
39
    private KafkaProcess kafkaProcess;
40
    
41
	@Override
42
	public List<AlarmIdenResultDto> executeAiIden(AiIdenLogDto aiIdenLogDto, String filePath,
43
			Map<String, Integer> imageParam, boolean isHuman) {
44
45
		if (!isHuman) {
46
			log.info("陌生人识别:没有识别到人......");
47
			return null;
48
		}
49
		
50
		List<AlarmIdenResultDto> alarmIdenResultDtosList = new ArrayList<AlarmIdenResultDto>();
51
		
52
		try {
53
			log.info("开始AI陌生人识别处理......");
54
			String aiResponseData = ebcAiService.faceAiRecog(ImageBase64Converter.convertFileToBase64(filePath));
55
			log.info("AI陌生人识别结果: " + aiResponseData);
56
57
			JSONObject jsonObject = JSONObject.parseObject(aiResponseData);
58
59
			if (!"OK".equals(jsonObject.getString("Des")) || !"OK".equals(jsonObject.getString("Status"))) {
60
				log.info("陌生人识别返回错误:"+jsonObject.getString("Des"));
61
				return null;
62
			}
63
64
			if (jsonObject.get("Result")==null){
65
				log.info("陌生人识别没有识别到人,不推送KAFKA消息");
66
				return null;
67
			}
68
69
			List<Map> resultList = JSONArray.parseArray(jsonObject.getString("Result"), Map.class);
70
			log.debug("识别出"+resultList.size()+"个人");
71
72
			List<AlarmIdenResultDto> successList = new ArrayList<AlarmIdenResultDto>();
73
			AlarmIdenResultDto idenResultDto = null;
74
			for (int i = 0; i < resultList.size(); i++) {
75
				idenResultDto = new AlarmIdenResultDto();
76
				JSONObject resultObject = JSONObject.parseObject(resultList.get(i).toString());
77
				String faceId = resultObject.getString("faceid");
78
				
79
				if (StringUtils.isBlank(faceId) || "null".equals(faceId) || "Unknow".equals(faceId)) {
80
					// 陌生人
81
					log.debug("陌生人");
82
					
83
					idenResultDto.setAlarmEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
84
					idenResultDto.setAlarmType(MonitorManageConsts.AI_ALARM_TYPE_STA);
85
					idenResultDto.setAlarmMemo("陌生人");
86
87
					int[] boxIntArr = AiIdenUtils.getBoxArray(resultObject.getJSONArray("box"), imageParam);
88
					idenResultDto.setBox(boxIntArr);
89
90
					alarmIdenResultDtosList.add(idenResultDto);
91
					
92
				}else {
93
					// 非陌生人
94
					log.debug("不是陌生人");
95
					
96
					idenResultDto.setAlarmEmployeeRoleId(faceId);
97
					idenResultDto.setAlarmType("");
98
					idenResultDto.setAlarmMemo("不是陌生人");
99
100
					int[] boxIntArr = AiIdenUtils.getBoxArray(resultObject.getJSONArray("box"), imageParam);
101
					idenResultDto.setBox(boxIntArr);
102
103
					successList.add(idenResultDto);
104
				}
105
			}
106
			
107
			if (CollectionUtils.isEmpty(alarmIdenResultDtosList)) {
108
				aiIdenLogDto.setIdenResult(JSON.toJSONString(successList));
109
				aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT);
110
				aiIdenLogDto.setRelateEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
111
112
				log.info("没有陌生人,推送KAFKA消息:" + JSONObject.toJSONString(aiIdenLogDto));
113
				kafkaProcess.processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
114
				log.info("消息推送完成");
115
			}
116
117
		} catch (Exception e) {
118
			log.error("陌生人识别AI处理异常:"+e.getMessage());
119
		}
120
		
121
		return alarmIdenResultDtosList;
122
	}
123
124
}
125

+ 171 - 509
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/service/impl/KafkaProcessImpl.java

@ -1,15 +1,22 @@
1 1
package com.ai.bss.monitorManage.service.impl;
2 2
3
import java.io.File;
4
import java.math.BigDecimal;
5
import java.util.ArrayList;
6
import java.util.HashMap;
7
import java.util.List;
8
import java.util.Map;
9
3
import com.ai.abc.core.context.SpringApplicationContext;
4
import com.ai.bss.components.common.util.ImageBase64Converter;
5
import com.ai.bss.components.ebcai.service.EbcAiService;
6
import com.ai.bss.monitorManage.constant.MonitorManageConsts;
7
import com.ai.bss.monitorManage.model.AiIdenLogDto;
8
import com.ai.bss.monitorManage.model.AlarmIdenResultDto;
9
import com.ai.bss.monitorManage.model.MonitorVideoLogDto;
10
import com.ai.bss.monitorManage.service.aiIden.ProxyFactory;
11
import com.ai.bss.monitorManage.service.interfaces.AiIdenInterfaces;
12
import com.ai.bss.monitorManage.service.interfaces.FileManageService;
13
import com.ai.bss.monitorManage.service.interfaces.KafkaProcess;
10 14
import com.ai.bss.monitorManage.utils.*;
15
import com.alibaba.fastjson.JSON;
16
import com.alibaba.fastjson.JSONArray;
17
import com.alibaba.fastjson.JSONObject;
18
import lombok.extern.slf4j.Slf4j;
11 19
import org.apache.commons.lang.StringUtils;
12
import org.apache.logging.log4j.util.Strings;
13 20
import org.slf4j.Logger;
14 21
import org.slf4j.LoggerFactory;
15 22
import org.springframework.beans.factory.annotation.Autowired;
@ -21,29 +28,20 @@ import org.springframework.util.CollectionUtils;
21 28
import org.springframework.web.multipart.MultipartFile;
22 29
import org.springframework.web.multipart.commons.CommonsMultipartFile;
23 30
24
import com.ai.bss.components.common.util.ImageBase64Converter;
25
import com.ai.bss.components.ebcai.service.EbcAiService;
26
import com.ai.bss.monitorManage.constant.MonitorManageConsts;
27
import com.ai.bss.monitorManage.model.AiIdenLogDto;
28
import com.ai.bss.monitorManage.model.FaceResultDto;
29
import com.ai.bss.monitorManage.model.IdenResultDto;
30
import com.ai.bss.monitorManage.model.MonitorVideoLogDto;
31
import com.ai.bss.monitorManage.service.interfaces.FileManageService;
32
import com.ai.bss.monitorManage.service.interfaces.KafkaProcess;
33
import com.alibaba.fastjson.JSON;
34
import com.alibaba.fastjson.JSONArray;
35
import com.alibaba.fastjson.JSONObject;
36
37
import lombok.extern.slf4j.Slf4j;
31
import java.io.File;
32
import java.util.ArrayList;
33
import java.util.HashMap;
34
import java.util.List;
35
import java.util.Map;
38 36
39 37
@Slf4j
40 38
@Service
41 39
public class KafkaProcessImpl implements KafkaProcess {
42
	private Logger logger = LoggerFactory.getLogger(KafkaProcessImpl.class);
43
	
40
	private static final Logger logger = LoggerFactory.getLogger(KafkaProcessImpl.class);
41
44 42
//    EBC设备tcp连接服务地址
45
	private static final String HOST = "47.105.130.83";
46
	private static final int PORT = 8042;
43
	// private static final String HOST = "47.105.130.83";
44
	// private static final int PORT = 8042;
47 45
48 46
//    private static String kafkaServers = "47.105.160.21:9090";
49 47
	private static String kafkaServers = "10.19.90.34:9090";
@ -81,8 +79,8 @@ public class KafkaProcessImpl implements KafkaProcess {
81 79
				sendKafkaDataPoint(topic, msg);
82 80
			}
83 81
		} catch (Exception e) {
84
			logger.error("processKafka1 is error:"+e.getMessage());
85
			//e.printStackTrace();
82
			logger.error("processKafka1 is error:" + e.getMessage());
83
			// e.printStackTrace();
86 84
		}
87 85
	}
88 86
@ -92,8 +90,8 @@ public class KafkaProcessImpl implements KafkaProcess {
92 90
		try {
93 91
			sendKafkaDataPoint(topic, msg);
94 92
		} catch (Exception e) {
95
			logger.error("processKafka2 is error:"+e.getMessage());
96
			//e.printStackTrace();
93
			logger.error("processKafka2 is error:" + e.getMessage());
94
			// e.printStackTrace();
97 95
		}
98 96
	}
99 97
@ -101,102 +99,126 @@ public class KafkaProcessImpl implements KafkaProcess {
101 99
	@Override
102 100
	public void processImageFile(String fileKey, String filePath) throws Exception {
103 101
		Thread.sleep(3000);
104
		String deviceCode = "";
105
		String fileType = "";
106
		String fileName = "";
107
		String dateTime = "";
108
		String[] keyArr;
109
		MultipartFile multipartFile = null;
110
		Map<String, String> minioFileMap = null;
111
		AiIdenLogDto aiIdenLogDto = null;
112
		String time = "";
113
		String bucketName = "";
114
		keyArr = fileKey.split("~!@");
115
		deviceCode = keyArr[0];
116
		fileType = keyArr[1];
102
		String[] keyArr = fileKey.split("~!@");
103
		String deviceCode = keyArr[0];
104
		String fileType = keyArr[1];
117 105
118
		aiIdenLogDto = new AiIdenLogDto();
119
		fileName = filePath.substring(filePath.lastIndexOf(MonitorManageConsts.getSystemSeparator()) + 1,
120
				filePath.length());
121
		if (fileType.equals(MonitorManageConsts.FILE_TYPE_IMG)) {
122
			bucketName = minioConfig.getBucketAiImage();
123
			//fileName:img202101121630016.png、img202101121630017.png、img202101121630018.png
124
			//time = fileName.substring(3, 17);
125
			//dateTime = DateUtils.formatDate(DateUtils.convertDate(time, DateUtils.PURE_DATETIME_PATTERN),
126
			//		DateUtils.NORM_DATETIME_PATTERN);
127
			time = fileName.substring(3, 15);
128
			dateTime = DateUtils.formatDate(DateUtils.convertDate(time, DateUtils.PURE_DATETIMEHHMM_PATTERN),
129
					DateUtils.NORM_DATETIME_PATTERN);
130
			// aiIdenLogDto.setTaskExecuteTime(StringUtils.isEmpty(dateTime) ? DateUtils.getSysDateTime() : dateTime);
131
			aiIdenLogDto.setTaskExecuteTime(DateUtils.getSysDateTime());
132
			aiIdenLogDto.setIdenPictureSnapDate(dateTime);
106
		if (!fileType.equals(MonitorManageConsts.FILE_TYPE_IMG)) {
107
			return;
133 108
		}
109
110
		String bucketName = minioConfig.getBucketAiImage();
111
		String fileName = filePath.substring(filePath.lastIndexOf(MonitorManageConsts.getSystemSeparator()) + 1,
112
				filePath.length());
113
134 114
		// 文件上传到 minio文件服务器
135
		multipartFile = new CommonsMultipartFile(FileUtils.createFileItem(new File(filePath), fileName));
136
		log.info("保存图片文件:"+fileName);
137
		minioFileMap = fileManageService.uploadFile(multipartFile, bucketName, deviceCode, null);
115
		MultipartFile multipartFile = new CommonsMultipartFile(FileUtils.createFileItem(new File(filePath), fileName));
116
		log.info("保存图片文件:" + fileName);
117
		Map<String, String> minioFileMap = fileManageService.uploadFile(multipartFile, bucketName, deviceCode, null);
118
119
		// 事件时间
120
		// fileName:img202101121630016.png、img202101121630017.png、img202101121630018.png
121
		// time = fileName.substring(3, 17);
122
		// dateTime = DateUtils.formatDate(DateUtils.convertDate(time, DateUtils.PURE_DATETIME_PATTERN),
123
		// DateUtils.NORM_DATETIME_PATTERN);
124
		String time = fileName.substring(3, 15);
125
		String dateTime = DateUtils.formatDate(DateUtils.convertDate(time, DateUtils.PURE_DATETIMEHHMM_PATTERN),
126
				DateUtils.NORM_DATETIME_PATTERN);
127
128
		// 组装AiIdenLogDto对象
129
		AiIdenLogDto aiIdenLogDto = new AiIdenLogDto();
130
		// aiIdenLogDto.setTaskExecuteTime(StringUtils.isEmpty(dateTime) ? DateUtils.getSysDateTime() : dateTime);
131
		aiIdenLogDto.setTaskExecuteTime(DateUtils.getSysDateTime());
132
		aiIdenLogDto.setIdenPictureSnapDate(dateTime);
133
134
		aiIdenLogDto.setIdenVideoUrl("");
135
		aiIdenLogDto.setIdenPictureUrl(minioFileMap.get("fileId"));
136
		aiIdenLogDto.setResourceToolCode(deviceCode);
137
138
		// 根据监控任务执行AI识别
139
		List<Map> resourceToolInfoList = getResourceToolAllInfo(deviceCode);
140
		// 是否有人
141
		boolean isHuman = aiworkHumanDetect(filePath);
142
		// 照片的属性
143
		Map<String, Integer> imageParam = AiIdenUtils.getImageParam(filePath);
144
145
		List<AlarmIdenResultDto> alarmIdenResultDtosList = new ArrayList<AlarmIdenResultDto>();
146
		for (Map resourceToolInfoMap : resourceToolInfoList) {
147
			if (resourceToolInfoMap.get("aiTaskId") == null || resourceToolInfoMap.get("aiIdenModel") == null) {
148
				continue;
149
			}
150
151
			String aiIdenModel = resourceToolInfoMap.get("aiIdenModel").toString();
152
153
			aiIdenLogDto.setAiTaskId(Long.valueOf(resourceToolInfoMap.get("aiTaskId").toString()));
154
			aiIdenLogDto.setAiIdenModel(aiIdenModel);
155
			aiIdenLogDto.setOrganizationId(
156
					resourceToolInfoMap.get("orgId") == null ? "" : resourceToolInfoMap.get("orgId").toString());
157
			aiIdenLogDto.setResourceToolId(resourceToolInfoMap.get("resourceToolId") == null ? ""
158
					: resourceToolInfoMap.get("resourceToolId").toString());
159
			aiIdenLogDto.setResourceToolName(resourceToolInfoMap.get("resourceToolName") == null ? ""
160
					: resourceToolInfoMap.get("resourceToolName").toString());
161
			aiIdenLogDto.setTopic(topicAiTask);
162
163
			
164
			// 代理实现接口
165
			String className = getClassByAiIdenModel(aiIdenModel);
166
			Class<?> myClass = Class.forName(className);
167
			//AiIdenInterfaces proxy = (AiIdenInterfaces) new ProxyFactory(myClass).getProxyInstance();
168
			
169
			ProxyFactory proxy = new ProxyFactory(myClass.newInstance());
170
			//ProxyFactory proxy = new ProxyFactory(SpringApplicationContext.getBean(myClass));
171
			AiIdenInterfaces aiIdenInterfaces =(AiIdenInterfaces) proxy.Instance();   //获得代理对象
172
			List<AlarmIdenResultDto> alarmResult = aiIdenInterfaces.executeAiIden(aiIdenLogDto, filePath, imageParam, isHuman);
138 173
139
		if (fileType.equals(MonitorManageConsts.FILE_TYPE_IMG)) {
140
			aiIdenLogDto.setIdenVideoUrl("");
141
			aiIdenLogDto.setIdenPictureUrl(minioFileMap.get("fileId"));
142
			aiIdenLogDto.setResourceToolCode(deviceCode);
143
144
			// 根据监控任务执行AI识别
145
			List<Map> resourceToolInfoList = getResourceToolAllInfo(deviceCode);
146
			boolean isHuman=aiworkHumanDetect(filePath);
147
148
			Map<String,Integer> imageParam=AiIdentifyUtils.getImageParam(filePath);
149
150
			for (Map resourceToolInfoMap : resourceToolInfoList) {
151
				if (resourceToolInfoMap.get("aiTaskId") != null ) {
152
					String aiIdenModel = resourceToolInfoMap.get("aiIdenModel") == null ? ""
153
							: resourceToolInfoMap.get("aiIdenModel").toString();
154
155
					aiIdenLogDto.setAiTaskId(Long.valueOf(resourceToolInfoMap.get("aiTaskId").toString()));
156
					aiIdenLogDto.setAiIdenModel(aiIdenModel);
157
					aiIdenLogDto.setOrganizationId(resourceToolInfoMap.get("orgId") == null ? ""
158
							: resourceToolInfoMap.get("orgId").toString());
159
					aiIdenLogDto.setResourceToolId(resourceToolInfoMap.get("resourceToolId") == null ? ""
160
							: resourceToolInfoMap.get("resourceToolId").toString());
161
					aiIdenLogDto.setResourceToolName(resourceToolInfoMap.get("resourceToolName") == null ? ""
162
							: resourceToolInfoMap.get("resourceToolName").toString());
163
					aiIdenLogDto.setTopic(topicAiTask);
164
165
					if (MonitorManageConsts.AI_MODEL_FACE.equals(aiIdenModel)) {
166
						if (isHuman){
167
							aiIdenLogDto = faceAiRecog(aiIdenLogDto, filePath,imageParam);
168
						}
169
170
					} else if (MonitorManageConsts.AI_MODEL_SAFETY_HELMET.equals(aiIdenModel)) {
171
						if (isHuman) {
172
							aiIdenLogDto = aiHelmetDetect(aiIdenLogDto, filePath,imageParam);
173
						}
174
175
					}else if (MonitorManageConsts.AI_MODEL_SMOKE.equals(aiIdenModel)) {
176
							if (isHuman){
177
								aiIdenLogDto = smokingDetect(aiIdenLogDto, filePath,imageParam);//吸烟识别
178
						}
179
180
					}else if (MonitorManageConsts.AI_MODEL_CLOTHING_CODE.equals(aiIdenModel)) {
181
							if (isHuman){
182
								aiIdenLogDto=workClothesDetect(aiIdenLogDto, filePath,imageParam);//工作服识别
183
							}
184
						}
185
186
					else if (MonitorManageConsts.AI_MODEL_INSTRUMENT.equals(aiIdenModel)) {
187
						aiIdenLogDto=instrumentDetect(aiIdenLogDto,filePath);//仪表识别
188
189
					} else if (MonitorManageConsts.AI_MODEL_STRANGER.equals(aiIdenModel)){
190
						if (isHuman) {
191
							aiIdenLogDto = strangerDetect(aiIdenLogDto, filePath, imageParam);//陌生人识别
192
						}
193
194
					} else {
174
			
175
			if (!CollectionUtils.isEmpty(alarmResult)) {
176
				alarmIdenResultDtosList.addAll(alarmResult);
177
			}
195 178
179
			/*if (MonitorManageConsts.AI_MODEL_FACE.equals(aiIdenModel)) {
180
				if (isHuman){
181
					aiIdenLogDto = faceAiRecog(aiIdenLogDto, filePath,imageParam);
182
				}
183
			
184
			} else if (MonitorManageConsts.AI_MODEL_SAFETY_HELMET.equals(aiIdenModel)) {
185
				if (isHuman) {
186
					aiIdenLogDto = aiHelmetDetect(aiIdenLogDto, filePath,imageParam);
187
				}
188
			
189
			}else if (MonitorManageConsts.AI_MODEL_SMOKE.equals(aiIdenModel)) {
190
					if (isHuman){
191
						aiIdenLogDto = smokingDetect(aiIdenLogDto, filePath,imageParam);//吸烟识别
192
				}
193
			
194
			}else if (MonitorManageConsts.AI_MODEL_CLOTHING_CODE.equals(aiIdenModel)) {
195
					if (isHuman){
196
						aiIdenLogDto=workClothesDetect(aiIdenLogDto, filePath,imageParam);//工作服识别
196 197
					}
197 198
				}
198
			}
199
			
200
			else if (MonitorManageConsts.AI_MODEL_INSTRUMENT.equals(aiIdenModel)) {
201
				aiIdenLogDto=instrumentDetect(aiIdenLogDto,filePath);//仪表识别
202
			
203
			} else if (MonitorManageConsts.AI_MODEL_STRANGER.equals(aiIdenModel)){
204
				if (isHuman) {
205
					aiIdenLogDto = strangerDetect(aiIdenLogDto, filePath, imageParam);//陌生人识别
206
				}
207
			
208
			} else {
209
			
210
			}*/
211
212
		}
199 213
214
		if (!CollectionUtils.isEmpty(alarmIdenResultDtosList)) {
215
			aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT_ALARM);
216
			aiIdenLogDto.setIdenResult(JSON.toJSONString(alarmIdenResultDtosList));
217
			aiIdenLogDto.setRelateEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
218
			
219
			log.info("AI识别结果为报警,推送KAFKA消息:"+JSONObject.toJSONString(aiIdenLogDto));
220
			processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
221
			log.info("消息推送完成");
200 222
		}
201 223
202 224
		log.info("-------等待任务--------");
@ -205,11 +227,11 @@ public class KafkaProcessImpl implements KafkaProcess {
205 227
	@Async
206 228
	@Override
207 229
	public void processVideoFile(String fileKey, String filePath) throws Exception {
208
		String fileExpandedName=filePath.substring(filePath.lastIndexOf(".")+1);
209
		if ("m3u8".equals(fileExpandedName)){
230
		String fileExpandedName = filePath.substring(filePath.lastIndexOf(".") + 1);
231
		if ("m3u8".equals(fileExpandedName)) {
210 232
			Thread.sleep(10000);
211 233
			return;
212
		}else{
234
		} else {
213 235
			Thread.sleep(70000);
214 236
		}
215 237
@ -255,20 +277,6 @@ public class KafkaProcessImpl implements KafkaProcess {
255 277
		log.info("-------等待任务--------");
256 278
	}
257 279
258
	public static void main(String[] args) throws Exception {
259
		String filePath = MonitorManageConsts.getSystemSeparator() + "home" + MonitorManageConsts.getSystemSeparator()
260
				+ "puaiuc" + MonitorManageConsts.getSystemSeparator() + "data"
261
				+ MonitorManageConsts.getSystemSeparator() + "DAHUA" + MonitorManageConsts.getSystemSeparator()
262
				+ "5A02296PAKA885B" + MonitorManageConsts.getSystemSeparator() + "videos"
263
				+ MonitorManageConsts.getSystemSeparator() + "video20201219151941.mp4";
264
		String fileName = filePath.substring(filePath.lastIndexOf(MonitorManageConsts.getSystemSeparator()) + 1,
265
				filePath.length());
266
		String time = fileName.substring(5, 19);
267
		String dateTime = DateUtils.formatDate(DateUtils.convertDate(time, DateUtils.PURE_DATETIME_PATTERN),
268
				DateUtils.NORM_DATETIME_HHMM_PATTERN);
269
		log.info(dateTime);
270
	}
271
272 280
	private Map<String, KafkaTemplate> kafkaTemplateMap = new HashMap<>();
273 281
274 282
	private boolean sendKafkaDataPoint(String topic, String msgStr) {
@ -292,74 +300,29 @@ public class KafkaProcessImpl implements KafkaProcess {
292 300
	}
293 301
294 302
	/**
295
	 * AI头盔检查
296
	 * @param aiIdenLogDto
303
	 * 根据设备code获取监控任务详情
304
	 * @param deviceCode
297 305
	 * @return
298 306
	 */
299
	private AiIdenLogDto aiHelmetDetect(AiIdenLogDto aiIdenLogDto, String aifilePath,Map<String,Integer> imageParam) {
307
	private List<Map> getResourceToolAllInfo(String deviceCode) {
308
		List<Map> resourceToolInfoList = new ArrayList<Map>();
300 309
		try {
301
			log.info("开始AI帽子识别处理...");
302
			// 安全帽识别
303
			String aiResponseData = ebcAiService.helmetDetect(ImageBase64Converter.convertFileToBase64(aifilePath),
304
					Strings.EMPTY, Strings.EMPTY);
305
//			String aiResponseData = ebcAiService.helmetDetect(ImageBase64Converter.convertInputStreamToBase64(multipartFile.getInputStream()), Strings.EMPTY, Strings.EMPTY);
306
			JSONObject jsonObject = JSONObject.parseObject(aiResponseData);// JSONUtil.formatJsonStr(aiResponseData);
307
			log.info("AI帽子识别结果: " + jsonObject);
308
			IdenResultDto idenResultDto = null;
309
			List<IdenResultDto> idenResultDtoList = null;
310
			if (jsonObject.getString("Status").equals("Ok")) {
311
				idenResultDtoList = new ArrayList<>();
312
				JSONArray jsonoArray = JSONArray.parseArray(jsonObject.getString("Result"));
313
				if (jsonoArray.size() > 0) {
314
					for (int i = 0; i < jsonoArray.size(); i++) {
315
						JSONObject resultObj = JSONObject.parseObject(jsonoArray.get(i).toString());
316
						String aiClassName = resultObj.getString("class");
317
						// safety_hat表示安全帽;ordinart_hat表示普通帽子;chef_hat表示厨师帽;none表示未戴帽子
318
						if(aiClassName.equals("safety_hat")){
319
							idenResultDto = new IdenResultDto();
320
							idenResultDto.setAlarmEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
321
							idenResultDto.setAlarmType(aiClassName);
322
							idenResultDto.setAlarmMemo(aiClassName);
323
							Map resultMap = (Map)jsonoArray.get(i);
324
							int[] boxIntArr = AiIdentifyUtils.getBoxArray((JSONArray)resultMap.get("box"),imageParam);
325
							idenResultDto.setBox(boxIntArr);
326
327
							idenResultDtoList.add(idenResultDto);
328
							// aiIdenLogDto.setIdenResult(idenResultDtoList);
329
							aiIdenLogDto.setIdenResult(JSON.toJSONString(idenResultDtoList));
330
							aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT);
331
							// aiIdenLogDto.setAiIdenModel(MonitorManageConsts.AI_MODEL_CLOTHING_CODE);
332
							aiIdenLogDto.setRelateEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
333
						}else{
334
							idenResultDto = new IdenResultDto();
335
							idenResultDto.setAlarmEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
336
							idenResultDto.setAlarmType(MonitorManageConsts.AI_ALARM_TYPE_WEA);
337
							idenResultDto.setAlarmMemo("未戴安全帽");
338
339
							Map resultMap = (Map)jsonoArray.get(i);
340
							int[] boxIntArr = AiIdentifyUtils.getBoxArray((JSONArray)resultMap.get("box"),imageParam);
341
							idenResultDto.setBox(boxIntArr);
342
343
							aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT_ALARM);
344
							idenResultDtoList.add(idenResultDto);
345
							// aiIdenLogDto.setIdenResult(idenResultDtoList);
346
							aiIdenLogDto.setIdenResult(JSON.toJSONString(idenResultDtoList));
347
							// aiIdenLogDto.setAiIdenModel(MonitorManageConsts.AI_MODEL_CLOTHING_CODE);
348
							aiIdenLogDto.setRelateEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
349
						}
350
					}
351
					log.info("识别成功,推送KAFKA消息");
352
					processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
353
				} else {
354
					log.info("没有识别到人,不推送KAFKA消息");
355
				}
310
			String url = protectionResourceUrl + "?resourceToolCode=" + deviceCode;
311
			log.info("getResourceToolAllInfo method params: resourceToolCode=" + deviceCode + ", url=" + url);
312
			String resultJson = HttpServiceUtil.sendRequest(url);
313
			JSONObject resultData = JSON.parseObject(resultJson);
314
			if (StringUtils.isBlank(resultData.getString("data"))) {
315
				log.info("getResourceToolAllInfo method returns an empty result");
316
				return resourceToolInfoList;
356 317
			}
357
			// AI模型
358
//			aiIdenLogDto.setAiIdenModel(MonitorManageConsts.AI_MODEL_CLOTHING_CODE);
318
319
			resourceToolInfoList = JSON.parseArray(resultData.getString("data"), Map.class);
320
			log.debug("getResourceToolAllInfo method return result: " + resultData.getString("data"));
359 321
		} catch (Exception e) {
360
			log.error("帽子识别AI处理异常:"+e.getMessage());
322
			log.error("getResourceToolAllInfo is error:" + e.getMessage());
361 323
		}
362
		return aiIdenLogDto;
324
325
		return resourceToolInfoList;
363 326
	}
364 327
365 328
	/**
@ -399,325 +362,24 @@ public class KafkaProcessImpl implements KafkaProcess {
399 362
				log.info("AI人数识别结果:没有人");
400 363
			}
401 364
		} catch (Exception e) {
402
			log.error("人数识别AI处理异常:"+e.getMessage());
365
			log.error("人数识别AI处理异常:" + e.getMessage());
403 366
		}
404 367
		return isHuman;
405 368
	}
406 369
407 370
	/**
408
	 * 人脸识别
409
	 * @param aiIdenLogDto
410
	 * @param aifilePath
411
	 * @return
412
	 */
413
	private AiIdenLogDto faceAiRecog(AiIdenLogDto aiIdenLogDto, String aifilePath,Map<String,Integer> imageParam) {
414
		try {
415
			log.info("开始AI人脸识别处理...");
416
			// 人脸识别
417
			String aiResponseData = ebcAiService.faceAiRecog(ImageBase64Converter.convertFileToBase64(aifilePath));
418
419
			JSONObject jsonObject = JSONObject.parseObject(aiResponseData);
420
			log.info("AI人脸识别结果: " + aiResponseData);
421
422
			if (!"OK".equals(jsonObject.getString("Des")) || !"Ok".equals(jsonObject.getString("Status"))) {
423
				log.info("人脸识别返回错误,不推送KAFKA消息");
424
				return aiIdenLogDto;
425
			}
426
427
			if (jsonObject.get("Result")==null){
428
				log.info("人脸识别没有识别到人,不推送KAFKA消息");
429
				return aiIdenLogDto;
430
			}
431
432
			List<Map> resultList = JSONArray.parseArray(jsonObject.getString("Result"),Map.class);
433
			FaceResultDto resultDto=null;
434
435
			for (Map resultMap:resultList) {
436
				resultDto=new FaceResultDto();
437
				String faceId=String.valueOf(resultMap.get("faceid"));
438
439
				if ("null".equals(faceId)||"Unknow".equals(faceId)){
440
					resultDto.setUserId(MonitorManageConsts.alarmEmployeeRoleId);
441
442
					BigDecimal score=(BigDecimal)resultMap.get("score");
443
					resultDto.setSimi(score.setScale(4,BigDecimal.ROUND_HALF_UP).floatValue());
444
					resultDto.setIsMatch(0);
445
446
					int[] boxIntArr = AiIdentifyUtils.getBoxArray((JSONArray) resultMap.get("box"),imageParam);
447
					resultDto.setBox(boxIntArr);
448
449
					aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT);
450
				}else {
451
					resultDto.setUserId(faceId);
452
					BigDecimal score=(BigDecimal)resultMap.get("score");
453
					resultDto.setSimi(score.setScale(4,BigDecimal.ROUND_HALF_UP).floatValue());
454
					resultDto.setIsMatch(1);
455
456
					int[] boxIntArr = AiIdentifyUtils.getBoxArray((JSONArray) resultMap.get("box"),imageParam);
457
					resultDto.setBox(boxIntArr);
458
459
					aiIdenLogDto.setRelateEmployeeRoleId(faceId);
460
					aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT_ATTENDANCE);
461
				}
462
463
				aiIdenLogDto.setIdenResult(JSON.toJSONString(resultDto));
464
				log.info("识别成功,推送KAFKA消息");
465
				processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
466
			}
467
468
		} catch (Exception e) {
469
			log.error("人脸识别AI处理异常:"+e.getMessage());
470
		}
471
		return aiIdenLogDto;
472
	}
473
474
	/**
475
	 * 陌生人识别
476
	 * @param aiIdenLogDto
477
	 * @param aifilePath
478
	 * @return
479
	 */
480
	private AiIdenLogDto strangerDetect(AiIdenLogDto aiIdenLogDto, String aifilePath,Map<String,Integer> imageParam) {
481
		try {
482
			log.info("开始AI陌生人识别处理...");
483
			// 人脸识别
484
			String aiResponseData = ebcAiService.faceAiRecog(ImageBase64Converter.convertFileToBase64(aifilePath));
485
486
			JSONObject jsonObject = JSONObject.parseObject(aiResponseData);
487
			log.info("AI陌生人识别结果: " + aiResponseData);
488
489
			if (!"OK".equals(jsonObject.getString("Des")) || !"OK".equals(jsonObject.getString("Status"))) {
490
				log.info("陌生人识别返回错误,不推送KAFKA消息");
491
				return aiIdenLogDto;
492
			}
493
494
			if (jsonObject.get("result")==null){
495
				log.info("陌生人识别没有识别到人,不推送KAFKA消息");
496
				return aiIdenLogDto;
497
			}
498
499
			String resultJson=jsonObject.getString("result");
500
			List<Map> resultList = JSONArray.parseArray(resultJson,Map.class);
501
502
			IdenResultDto idenResultDto = null;
503
			List<IdenResultDto> idenResultDtoList = new ArrayList<IdenResultDto>();
504
505
			for (Map resultMap:resultList) {
506
				String faceId=String.valueOf(resultMap.get("faceid"));
507
				if ("null".equals(faceId)||"Unknow".equals(faceId)){
508
					log.info("检测到陌生人");
509
					idenResultDto = new IdenResultDto();
510
					idenResultDto.setAlarmEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
511
					idenResultDto.setAlarmType(MonitorManageConsts.AI_ALARM_TYPE_STA);
512
					idenResultDto.setAlarmMemo("陌生人");
513
514
					int[] boxIntArr = AiIdentifyUtils.getBoxArray((JSONArray) resultMap.get("box"),imageParam);
515
					idenResultDto.setBox(boxIntArr);
516
517
					idenResultDtoList.add(idenResultDto);
518
				}
519
			}
520
521
			if (!CollectionUtils.isEmpty(idenResultDtoList)){
522
				aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT_ALARM);
523
				aiIdenLogDto.setIdenResult(JSON.toJSONString(idenResultDtoList));
524
				aiIdenLogDto.setRelateEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
525
			}else{
526
				aiIdenLogDto.setIdenResult(resultJson);
527
				aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT);
528
			}
529
530
			log.info("陌生人识别成功,推送KAFKA消息");
531
			processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
532
			log.info("消息推送完成");
533
534
		} catch (Exception e) {
535
			log.error("陌生人识别AI处理异常:"+e.getMessage());
536
		}
537
		return aiIdenLogDto;
538
	}
539
540
    /**
541
     * AI吸烟检测
542
     *
543
     */
544
    private AiIdenLogDto smokingDetect(AiIdenLogDto aiIdenLogDto, String aifilePath,Map<String,Integer> imageParam){
545
        try{
546
            log.info("开始AI抽烟识别处理...");
547
            //抽烟识别
548
            String aiResponseData=ebcAiService.smokingDetect(ImageBase64Converter.convertFileToBase64(aifilePath));
549
550
            IdenResultDto idenResultDto = null;
551
            List<IdenResultDto> idenResultDtoList = null;
552
            JSONObject jsonObject = JSONObject.parseObject(aiResponseData);
553
            JSONObject jsonpredictions=JSONObject.parseObject(jsonObject.getString("predictions"));
554
            if("0".equals(jsonpredictions.getString("Errors"))){
555
				idenResultDtoList = new ArrayList<>();
556
            	Integer nums=jsonpredictions.getInteger("Nums");//吸烟者人数
557
				log.info("吸烟者数量为:"+jsonpredictions.getString("Nums"));
558
				JSONArray jsonArray=JSONArray.parseArray(jsonpredictions.getString("Items"));
559
                    if(jsonArray.size() > 0){
560
                        for (int i = 0; i < jsonArray.size(); i++) {
561
							JSONObject resultObj=JSONObject.parseObject(jsonArray.get(i).toString());
562
							//String aiClassName = resultObj.getString("class");
563
							if(nums>0){
564
                                    idenResultDto = new IdenResultDto();
565
                                    idenResultDto.setAlarmEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
566
                                    idenResultDto.setAlarmType(MonitorManageConsts.AI_ALARM_TYPE_VIO);
567
                                    idenResultDto.setAlarmMemo("违规吸烟");
568
569
								    Map resultMap = (Map) jsonArray.get(i);
570
									int[] boxIntArr = AiIdentifyUtils.getBoxArray((JSONArray) resultMap.get("box"),imageParam);
571
									idenResultDto.setBox(boxIntArr);
572
573
                                    log.info("检测到违规吸烟");
574
                                    aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT_ALARM);
575
                                    idenResultDtoList.add(idenResultDto);
576
                                    aiIdenLogDto.setIdenResult(JSON.toJSONString(idenResultDtoList));
577
                                    aiIdenLogDto.setRelateEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
578
                                }else{
579
                                    aiIdenLogDto.setIdenResult(jsonpredictions.getString("Items"));
580
                                    aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT);
581
                                }
582
                        }
583
						log.info("吸烟识别成功,推送KAFKA消息");
584
                        processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
585
                    	log.info("消息推送完成");
586
                    }else{
587
                        log.info("没有识别到吸烟者,不推送KAFKA消息");
588
                    }
589
            }else{
590
            	log.error("吸烟识别异常");
591
			}
592
        }catch(Exception e){
593
        log.error("吸烟识别AI处理异常:"+e.getMessage());
594
        }
595
        return aiIdenLogDto;
596
    }
597
/*工作服识别
598
*
599
*
600
* */
601
private AiIdenLogDto workClothesDetect(AiIdenLogDto aiIdenLogDto, String aifilePath,Map<String,Integer> imageParam){
602
	try{
603
		log.info("开始服装识别处理...");
604
		//工作服识别
605
		String aiResponseData=ebcAiService.workClothesDetect(ImageBase64Converter.convertFileToBase64(aifilePath),true,true,0.9f);
606
		JSONObject jsonObject = JSONObject.parseObject(aiResponseData);
607
		System.out.print("AI工作服识别结果:"+aiResponseData);
608
		IdenResultDto idenResultDto = null;
609
		List<IdenResultDto> idenResultDtoList = null;
610
		if(jsonObject.getString("Status").equals("Ok")){
611
			idenResultDtoList = new ArrayList<>();
612
			List<Map> resultList = JSONArray.parseArray(jsonObject.getString("Result"),Map.class);
613
			if(resultList.size()>0){
614
				for (int i = 0; i < resultList.size(); i++) {
615
					JSONObject resultObject = JSONObject.parseObject(resultList.get(i).get("clothes").toString());
616
					String aiClassName =resultObject.getString("class");
617
					if(aiClassName.equals("qita")){
618
						idenResultDto = new IdenResultDto();
619
						idenResultDto.setAlarmEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
620
						idenResultDto.setAlarmType(MonitorManageConsts.AI_ALARM_TYPE_WEA);
621
						idenResultDto.setAlarmMemo("未穿工作服");
622
						log.info("未穿工作服");
623
624
						int[] boxIntArr = AiIdentifyUtils.getBoxArray((JSONArray) resultList.get(i).get("box"),imageParam);
625
						idenResultDto.setBox(boxIntArr);
626
627
						aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT_ALARM);
628
						idenResultDtoList.add(idenResultDto);
629
						aiIdenLogDto.setIdenResult(JSON.toJSONString(idenResultDtoList));
630
						aiIdenLogDto.setRelateEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
631
					}else{
632
						idenResultDto = new IdenResultDto();
633
						idenResultDto.setAlarmEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
634
						idenResultDto.setAlarmType(aiClassName);
635
						idenResultDto.setAlarmMemo(aiClassName);
636
637
						int[] boxIntArr = AiIdentifyUtils.getBoxArray((JSONArray) resultList.get(i).get("box"),imageParam);
638
						idenResultDto.setBox(boxIntArr);
639
640
						idenResultDtoList.add(idenResultDto);
641
						aiIdenLogDto.setIdenResult(JSON.toJSONString(idenResultDtoList));
642
						aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT);
643
						aiIdenLogDto.setRelateEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
644
						log.info("识别到工作服,工作服类型为:"+aiClassName);
645
					}
646
				}
647
				log.info("工作服识别成功,推送KAFKA消息");
648
				processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
649
				log.info("消息推送完成");
650
			}else {
651
				log.info("没有识别到人,不推送KAFKA消息");
652
			}
653
		}else if(jsonObject.getString("Status").equals("ERROR")){
654
			log.error("工作服识别异常:"+jsonObject.getString("Des"));
655
		}
656
657
	}catch(Exception e){
658
	log.error("工作服识别AI处理异常:"+e.getMessage());
659
	}
660
	return aiIdenLogDto;
661
}
662
/*
663
* 仪表识别
664
* instrumentDetect
665
* */
666
private AiIdenLogDto instrumentDetect(AiIdenLogDto aiIdenLogDto, String aifilePath){
667
	try{
668
		log.info("开始仪表识别。。。。");
669
		//仪表识别
670
		String aiResponseData=ebcAiService.instrumentDetect(ImageBase64Converter.convertFileToBase64(aifilePath),Strings.EMPTY,Strings.EMPTY,Strings.EMPTY);
671
		JSONObject jsonObject = JSONObject.parseObject(aiResponseData);
672
		System.out.print("AI仪表识别结果:"+aiResponseData);
673
		JSONObject jsonObjectpredictions=jsonObject.getJSONObject("predictions");
674
		if(jsonObjectpredictions.getString("Errors").isEmpty()){
675
			if(jsonObjectpredictions.getInteger("Nums")>0){
676
				log.info("识别到的仪表的数量为:"+jsonObjectpredictions.getInteger("Nums"));
677
				aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT);
678
				aiIdenLogDto.setRelateEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
679
				log.info("返回的仪表信息为:"+jsonObjectpredictions.getString("Items"));
680
				aiIdenLogDto.setIdenResult(jsonObjectpredictions.getString("Items"));
681
682
683
				log.info("仪表识别成功,推送KAFKA消息");
684
				processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
685
				log.info("消息推送完成");
686
			}else{
687
				log.info("仪表数量为0,不推送消息");
688
			}
689
		}else{
690
			log.info("异常返回,异常原因为:"+jsonObjectpredictions.getString("Errors"));
691
		}
692
	}catch(Exception e){
693
		log.error("仪表识别AI处理异常:"+e.getMessage());
694
	}
695
	return aiIdenLogDto;
696
}
697
	/**
698
	 * 根据设备code获取监控任务详情
699
	 * @param deviceCode
371
	 * 获取方法名称及包路径
372
	 * @param aiIdenModel
700 373
	 * @return
701 374
	 */
702
	private List<Map> getResourceToolAllInfo(String deviceCode) {
703
		List<Map> resourceToolInfoList = new ArrayList<Map>();
704
		try {
705
			String url = protectionResourceUrl + "?resourceToolCode=" + deviceCode;
706
			log.info("getResourceToolAllInfo method params: resourceToolCode=" + deviceCode + ", url=" + url);
707
			String resultJson = HttpServiceUtil.sendRequest(url);
708
			JSONObject resultData = JSON.parseObject(resultJson);
709
			if (StringUtils.isEmpty(resultData.getString("data"))) {
710
				log.info("getResourceToolAllInfo method returns an empty result");
711
				return resourceToolInfoList;
712
			}
713
714
			resourceToolInfoList = JSON.parseArray(resultData.getString("data"), Map.class);
715
			log.debug("getResourceToolAllInfo method return result: " + resultData.getString("data"));
716
		} catch (Exception e) {
717
			log.error("getResourceToolAllInfo is error:"+e.getMessage());
718
		}
719
720
		return resourceToolInfoList;
375
	private String getClassByAiIdenModel(String aiIdenModel) {
376
		StringBuffer result = new StringBuffer();
377
		result.append("com.ai.bss.monitorManage.service.aiIden");
378
		result.append(".");
379
		result.append(AiIdenUtils.convertClassName(aiIdenModel));
380
		result.append("AiIden");
381
382
		return result.toString();
721 383
	}
722 384
723 385
}

+ 22 - 8
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/service/impl/ListeningFileDirectoryServiceImpl.java

@ -13,6 +13,7 @@ import java.nio.file.WatchKey;
13 13
import java.nio.file.WatchService;
14 14
import java.util.ArrayList;
15 15
import java.util.HashMap;
16
import java.util.Iterator;
16 17
import java.util.List;
17 18
import java.util.Map;
18 19
import java.util.Timer;
@ -24,11 +25,13 @@ import org.apache.commons.fileupload.disk.DiskFileItemFactory;
24 25
import org.springframework.beans.factory.annotation.Autowired;
25 26
import org.springframework.beans.factory.annotation.Value;
26 27
import org.springframework.stereotype.Service;
28
import org.springframework.util.CollectionUtils;
27 29
28 30
import com.ai.bss.monitorManage.constant.MonitorManageConsts;
29 31
import com.ai.bss.monitorManage.service.interfaces.KafkaProcess;
30 32
import com.ai.bss.monitorManage.service.interfaces.ListeningFileDirectoryService;
31 33
import com.ai.bss.monitorManage.utils.FileUtils;
34
import com.alibaba.fastjson.JSONObject;
32 35
import com.mzlion.core.lang.StringUtils;
33 36
34 37
import lombok.extern.slf4j.Slf4j;
@ -51,15 +54,16 @@ public class ListeningFileDirectoryServiceImpl  implements ListeningFileDirector
51 54
    private String taskName="pictureTask";
52 55
53 56
    @Override
54
    public void getFile(String filePath)  {
57
    public void getFile(String filePath,int index)  {
55 58
//        if(){
56 59
        //System.out.println("filePath:   " + filePath);
57 60
    	log.info("filePath:   " + filePath);
58 61
//        final Timer timer = new Timer();
59 62
    	
60
    	timerMap.put(taskName,new Timer());
63
    	String timerMapKey=taskName+index;
64
    	timerMap.put(timerMapKey,new Timer());
61 65
    	
62
    	timerMap.get(taskName).schedule(new TimerTask() {
66
    	timerMap.get(timerMapKey).schedule(new TimerTask() {
63 67
            @Override
64 68
            public void run() {
65 69
                WatchKey key;
@ -132,7 +136,7 @@ public class ListeningFileDirectoryServiceImpl  implements ListeningFileDirector
132 136
                }
133 137
            }
134 138
        //}, 2000 , 3000);//第一个数字2000表示,2000ms以后开启定时器,第二个数字3000,表示3000ms后运行一次run
135
        }, 500 , 500); //1秒钟扫描一次
139
        }, 2000 , 1000); //1000ms扫描一次
136 140
    }
137 141
138 142
    /*
@ -162,13 +166,23 @@ public class ListeningFileDirectoryServiceImpl  implements ListeningFileDirector
162 166
     * @param taskName
163 167
     */
164 168
    @Override
165
    public void removeTimer(){
169
    public String removeTimer(){
170
    	if (CollectionUtils.isEmpty(timerMap)) {
171
			return "未开启任务";
172
		}
173
    	
166 174
        try{
167
        	timerMap.get(taskName).cancel();
168
        	timerMap.remove(taskName);           
175
        	Iterator<Map.Entry<String, Timer>> it = timerMap.entrySet().iterator();
176
    	    while(it.hasNext()){
177
    	        Map.Entry<String, Timer> entry = it.next();
178
    	        entry.getValue().cancel();
179
        		it.remove(); 
180
			}
169 181
        }catch(Exception e){
170
           log.error("removeTimer is error :"+e.getMessage());       
182
           log.error("removeTimer is error :"+e.getMessage());  
183
           return "关闭失败";
171 184
        }
185
        return "关闭成功";
172 186
    }
173 187
174 188
}

+ 7 - 4
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/service/impl/MonitorManageServiceImpl.java

@ -62,6 +62,7 @@ public class MonitorManageServiceImpl implements MonitorManageService {
62 62
		File file = new File(baseFilePath);//path为监听文件夹
63 63
64 64
		File[] files = file.listFiles();
65
		int n=1;
65 66
		//摄像头列表
66 67
		for(File file1:files){
67 68
			file1.getName();
@ -79,7 +80,8 @@ public class MonitorManageServiceImpl implements MonitorManageService {
79 80
				File[] camerafiles = deviceFile.listFiles();
80 81
				//System.out.println("deviceFilePath()   " + deviceFile.getPath());
81 82
				log.info("deviceFilePath()  " + deviceFile.getPath());
82
				listeningFileDirectoryService.getFile(deviceFile.getPath());
83
				listeningFileDirectoryService.getFile(deviceFile.getPath(),n);
84
				n++;
83 85
			}
84 86
		}
85 87
	}
@ -88,11 +90,12 @@ public class MonitorManageServiceImpl implements MonitorManageService {
88 90
	 * 关闭监听
89 91
	 */
90 92
	public String closeListeningPicture() {
91
		listeningFileDirectoryService.removeTimer();
93
		log.debug("关闭图片监听");
94
		String result=listeningFileDirectoryService.removeTimer();
92 95
		
93 96
		isBeginFlag=false;
94
		log.info("图片监听关闭成功");
95
		return "关闭成功";
97
		log.info("关闭图片监听:"+result);
98
		return result;
96 99
	}
97 100
98 101
}

+ 18 - 0
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/service/interfaces/AiIdenInterfaces.java

@ -0,0 +1,18 @@
1
package com.ai.bss.monitorManage.service.interfaces;
2
3
import java.util.List;
4
import java.util.Map;
5
6
import com.ai.bss.monitorManage.model.AiIdenLogDto;
7
import com.ai.bss.monitorManage.model.AlarmIdenResultDto;
8
9
/**
10
 * AI模型接口
11
 * @author konghl@asiainfo.com
12
 * 2021-2-7
13
 */
14
public interface AiIdenInterfaces {
15
16
   List<AlarmIdenResultDto> executeAiIden(AiIdenLogDto aiIdenLogDto, String filePath,Map<String,Integer> imageParam,boolean isHuman);
17
18
}

+ 1 - 3
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/service/interfaces/KafkaProcess.java

@ -3,14 +3,12 @@ package com.ai.bss.monitorManage.service.interfaces;
3 3
import java.util.List;
4 4
5 5
public interface KafkaProcess {
6
//    void processMock(Long sId, List<AiIdenLog> mockScenarioDataList, Long frequency);
7
8 6
9 7
    void processKafka(String topic,List<String> msgList);
10 8
11 9
    void processKafka(String topic,String msgStr);
12 10
13
    void  processImageFile(String fileKey,String filePath) throws Exception;
11
    void processImageFile(String fileKey,String filePath) throws Exception;
14 12
15 13
    void processVideoFile(String fileKey,String filePath) throws Exception;
16 14
}

+ 2 - 2
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/service/interfaces/ListeningFileDirectoryService.java

@ -3,7 +3,7 @@ package com.ai.bss.monitorManage.service.interfaces;
3 3
4 4
public interface ListeningFileDirectoryService {
5 5
6
    void getFile(String filePath) ;
6
    void getFile(String filePath,int index) ;
7 7
    
8
    void removeTimer();
8
    String removeTimer();
9 9
}

+ 135 - 0
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/utils/AiIdenUtils.java

@ -0,0 +1,135 @@
1
package com.ai.bss.monitorManage.utils;
2
3
import java.awt.image.BufferedImage;
4
import java.io.IOException;
5
import java.io.InputStream;
6
import java.math.BigDecimal;
7
import java.net.MalformedURLException;
8
import java.net.URL;
9
import java.util.HashMap;
10
import java.util.Map;
11
12
import javax.imageio.ImageIO;
13
14
import org.apache.commons.lang.StringUtils;
15
16
import com.alibaba.fastjson.JSONArray;
17
import com.mzlion.core.lang.CollectionUtils;
18
19
import lombok.extern.slf4j.Slf4j;
20
21
/**
22
 * @Auther: 王超
23
 * @Date: 2021/2/3 17:49
24
 * @Description:
25
 */
26
@Slf4j
27
public class AiIdenUtils {
28
29
	/**
30
	 * JSONArray转int[],并转换为百分比
31
	 * @param jsonArray 原json
32
	 *
33
	 * @return boxIntArr
34
	 */
35
	public static int[] getBoxArray(JSONArray jsonArray, Map<String, Integer> getImageParam) {
36
		if (CollectionUtils.isEmpty(jsonArray) || jsonArray.size() != 4 || CollectionUtils.isEmpty(getImageParam)) {
37
			return new int[4];
38
		}
39
40
		/*int[] boxIntArr=new int[jsonArray.size()];
41
		for(int i = 0;i<jsonArray.size();i++){
42
		    BigDecimal boxValue=(BigDecimal) jsonArray.get(i);
43
		    boxIntArr[i] =boxValue.intValue();
44
		}*/
45
46
		int[] boxIntArr = new int[4];
47
		try {
48
			BigDecimal boxValue = (BigDecimal) jsonArray.get(0);
49
			boxIntArr[0] = boxValue.divide(new BigDecimal(getImageParam.get("width")), 0, BigDecimal.ROUND_FLOOR)
50
					.intValue();
51
			boxValue = (BigDecimal) jsonArray.get(1);
52
			boxIntArr[1] = boxValue.divide(new BigDecimal(getImageParam.get("height")), 0, BigDecimal.ROUND_FLOOR)
53
					.intValue();
54
			boxValue = (BigDecimal) jsonArray.get(2);
55
			boxIntArr[2] = boxValue.divide(new BigDecimal(getImageParam.get("width")), 0, BigDecimal.ROUND_CEILING)
56
					.intValue();
57
			boxValue = (BigDecimal) jsonArray.get(3);
58
			boxIntArr[3] = boxValue.divide(new BigDecimal(getImageParam.get("height")), 0, BigDecimal.ROUND_CEILING)
59
					.intValue();
60
		} catch (Exception e) {
61
			log.error("getBoxArray is error: errorMsg=" + e.getMessage() + ", jsonArray=" + jsonArray);
62
		}
63
		return boxIntArr;
64
	}
65
66
	/**
67
	 * 获取图片的长度和宽度
68
	 * @param filePath
69
	 * @return
70
	 */
71
	public static Map<String, Integer> getImageParam(String filePath) {
72
		Map<String, Integer> param = null;
73
		BufferedImage image = getBufferedImage(filePath);
74
		if (image != null) {
75
			param = new HashMap<String, Integer>();
76
			param.put("width", image.getWidth());// 图片宽度
77
			param.put("height", image.getHeight());// 图片高度
78
		}
79
		return param;
80
	}
81
82
	/**
83
	 * 获取图片对象
84
	 * @param filePath 图片地址
85
	 * @return
86
	 */
87
	private static BufferedImage getBufferedImage(String filePath) {
88
		BufferedImage img = null;
89
		InputStream is = null;
90
		try {
91
			URL url = new URL("file:///" +filePath);//加上file://标识符表示本地的文件
92
			is = url.openStream();
93
			img = ImageIO.read(is);
94
		} catch (MalformedURLException e) {
95
			log.error("getBufferedImage is MalformedURLException: " + e.getMessage() + ", filePath=" + filePath);
96
		} catch (IOException e) {
97
			log.error("getBufferedImage is IOException: " + e.getMessage() + ", filePath=" + filePath);
98
		} finally {
99
			try {
100
				is.close();
101
			} catch (IOException e) {
102
				log.error("getBufferedImage is IOException1: " + e.getMessage() + ", filePath=" + filePath);
103
			}
104
		}
105
		return img;
106
	}
107
108
	/**
109
	  * 获取类名:下划线转驼峰(首字母也大写)
110
	 * @param name
111
	 * @return
112
	 */
113
	public static String convertClassName(String name) {
114
		if (StringUtils.isBlank(name)) {
115
			return "";
116
		}
117
118
		StringBuilder result = new StringBuilder();
119
		String camels[] = name.split("_");
120
121
		for (String camel : camels) {
122
			if (StringUtils.isBlank(camel)) {
123
				// 跳过原始字符串中开头、结尾的下换线或双重下划线等
124
				continue;
125
			}
126
127
			// 首字母大写,其余小写
128
			result.append(camel.substring(0, 1).toUpperCase());
129
			result.append(camel.substring(1).toLowerCase());
130
		}
131
132
		return result.toString();
133
	}
134
135
}

+ 0 - 102
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/utils/AiIdentifyUtils.java

@ -1,102 +0,0 @@
1
package com.ai.bss.monitorManage.utils;
2
3
import com.alibaba.fastjson.JSONArray;
4
import com.mzlion.core.lang.CollectionUtils;
5
import lombok.extern.slf4j.Slf4j;
6
7
import javax.imageio.ImageIO;
8
import java.awt.image.BufferedImage;
9
import java.io.File;
10
import java.io.IOException;
11
import java.io.InputStream;
12
import java.math.BigDecimal;
13
import java.net.MalformedURLException;
14
import java.net.URL;
15
import java.util.Collections;
16
import java.util.HashMap;
17
import java.util.Map;
18
19
/**
20
 * @Auther: 王超
21
 * @Date: 2021/2/3 17:49
22
 * @Description:
23
 */
24
@Slf4j
25
public class AiIdentifyUtils {
26
27
    /**
28
     * JSONArray转int[]
29
     * @param jsonArray 原json
30
     *
31
     * @return boxIntArr
32
     */
33
    public static int[] getBoxArray(JSONArray jsonArray,Map<String,Integer> getImageParam) {
34
        if (CollectionUtils.isEmpty(jsonArray)|| jsonArray.size() !=4 ||CollectionUtils.isEmpty(getImageParam)){
35
            return new int[4];
36
        }
37
38
        /*int[] boxIntArr=new int[jsonArray.size()];
39
        for(int i = 0;i<jsonArray.size();i++){
40
            BigDecimal boxValue=(BigDecimal) jsonArray.get(i);
41
            boxIntArr[i] =boxValue.intValue();
42
        }*/
43
44
        int[] boxIntArr=new int[4];
45
        try{
46
            BigDecimal boxValue=(BigDecimal) jsonArray.get(0);
47
            boxIntArr[0] =boxValue.divide(new BigDecimal(getImageParam.get("width")),0,BigDecimal.ROUND_FLOOR).intValue();
48
            boxValue=(BigDecimal) jsonArray.get(1);
49
            boxIntArr[1] =boxValue.divide(new BigDecimal(getImageParam.get("height")),0,BigDecimal.ROUND_FLOOR).intValue();
50
            boxValue=(BigDecimal) jsonArray.get(2);
51
            boxIntArr[2] =boxValue.divide(new BigDecimal(getImageParam.get("width")),0,BigDecimal.ROUND_CEILING).intValue();
52
            boxValue=(BigDecimal) jsonArray.get(3);
53
            boxIntArr[3] =boxValue.divide(new BigDecimal(getImageParam.get("height")),0,BigDecimal.ROUND_CEILING).intValue();
54
        } catch (Exception e) {
55
            log.error("getBoxArray is error: errorMsg="+e.getMessage()+", jsonArray="+jsonArray);
56
        }
57
        return boxIntArr;
58
    }
59
60
    /**
61
     * 获取图片的长度和宽度
62
     * @param filePath
63
     * @return
64
     */
65
    public static Map<String,Integer> getImageParam(String filePath){
66
        Map<String,Integer> param=null;
67
        BufferedImage image = getBufferedImage(filePath);
68
        if (image!=null){
69
            param=new HashMap<String,Integer>();
70
            param.put("width",image.getWidth());// 图片宽度
71
            param.put("height",image.getHeight());// 图片高度
72
        }
73
        return param;
74
    }
75
76
    /**
77
     * 获取图片对象
78
     * @param filePath 图片地址
79
     * @return
80
     */
81
    private static BufferedImage getBufferedImage(String filePath) {
82
        BufferedImage img = null;
83
        InputStream is = null;
84
        try {
85
            URL url = new URL(filePath);
86
            is = url.openStream();
87
            img = ImageIO.read(is);
88
        } catch (MalformedURLException e) {
89
            log.error("getBufferedImage is MalformedURLException: "+e.getMessage()+", filePath="+filePath);
90
        } catch (IOException e) {
91
            log.error("getBufferedImage is IOException: "+e.getMessage()+", filePath="+filePath);
92
        } finally {
93
            try {
94
                is.close();
95
            } catch (IOException e) {
96
                log.error("getBufferedImage is IOException1: "+e.getMessage()+", filePath="+filePath);
97
            }
98
        }
99
        return img;
100
    }
101
102
}

+ 2 - 1
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/utils/CameraFilePathConfig.java

@ -1,9 +1,10 @@
1 1
package com.ai.bss.monitorManage.utils;
2 2
3
import lombok.Data;
4 3
import org.springframework.boot.context.properties.ConfigurationProperties;
5 4
import org.springframework.stereotype.Component;
6 5
6
import lombok.Data;
7
7 8
/**
8 9
  * @className: MinioConfig
9 10
  * @author zengtao

+ 2 - 2
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/utils/DateUtils.java

@ -1,13 +1,13 @@
1 1
package com.ai.bss.monitorManage.utils;
2 2
3
import org.apache.commons.lang3.time.DateFormatUtils;
4
5 3
import java.math.BigDecimal;
6 4
import java.text.ParseException;
7 5
import java.text.SimpleDateFormat;
8 6
import java.util.Calendar;
9 7
import java.util.Date;
10 8
9
import org.apache.commons.lang3.time.DateFormatUtils;
10
11 11
/**
12 12
 * 时间工具类
13 13
 * @author konghl@asiainfo.com

+ 17 - 12
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/utils/HttpServiceUtil.java

@ -1,9 +1,18 @@
1 1
package com.ai.bss.monitorManage.utils;
2 2
3
import com.ai.abc.exception.BaseException;
4
import com.ai.bss.infrastructure.constant.CommonConsts;
5
import com.alibaba.fastjson.JSONObject;
6
import lombok.extern.slf4j.Slf4j;
3
import java.io.BufferedReader;
4
import java.io.IOException;
5
import java.io.InputStream;
6
import java.io.InputStreamReader;
7
import java.io.UnsupportedEncodingException;
8
import java.net.HttpURLConnection;
9
import java.net.URL;
10
import java.net.URLEncoder;
11
import java.nio.charset.Charset;
12
import java.util.Iterator;
13
import java.util.Map;
14
import java.util.Set;
15
7 16
import org.apache.http.HttpEntity;
8 17
import org.apache.http.HttpStatus;
9 18
import org.apache.http.client.ClientProtocolException;
@ -20,14 +29,10 @@ import org.apache.http.impl.client.HttpClients;
20 29
import org.apache.http.protocol.HTTP;
21 30
import org.apache.http.util.EntityUtils;
22 31
23
import java.io.*;
24
import java.net.HttpURLConnection;
25
import java.net.URL;
26
import java.net.URLEncoder;
27
import java.nio.charset.Charset;
28
import java.util.Iterator;
29
import java.util.Map;
30
import java.util.Set;
32
import com.ai.abc.exception.BaseException;
33
import com.alibaba.fastjson.JSONObject;
34
35
import lombok.extern.slf4j.Slf4j;
31 36
32 37
/**
33 38
 * http服务请求工具类

+ 5 - 4
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/utils/KafkaProducerConfig.java

@ -1,7 +1,8 @@
1 1
package com.ai.bss.monitorManage.utils;
2 2
3
import lombok.NoArgsConstructor;
4
import lombok.extern.slf4j.Slf4j;
3
import java.util.HashMap;
4
import java.util.Map;
5
5 6
import org.apache.kafka.clients.producer.ProducerConfig;
6 7
import org.apache.kafka.common.serialization.StringSerializer;
7 8
import org.springframework.beans.factory.annotation.Value;
@ -13,8 +14,8 @@ import org.springframework.kafka.core.KafkaTemplate;
13 14
import org.springframework.kafka.core.ProducerFactory;
14 15
import org.springframework.stereotype.Component;
15 16
16
import java.util.HashMap;
17
import java.util.Map;
17
import lombok.NoArgsConstructor;
18
import lombok.extern.slf4j.Slf4j;
18 19
19 20
@Slf4j
20 21
@Configuration

+ 2 - 1
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/utils/SecurityProtectionMinioConfig.java

@ -1,9 +1,10 @@
1 1
package com.ai.bss.monitorManage.utils;
2 2
3
import lombok.Data;
4 3
import org.springframework.boot.context.properties.ConfigurationProperties;
5 4
import org.springframework.stereotype.Component;
6 5
6
import lombok.Data;
7
7 8
/**
8 9
  * @className: MinioConfig
9 10
  * @author zengtao

+ 6 - 5
monitor-manage-service/src/main/resources/application.properties

@ -72,20 +72,21 @@ myminio.bucketAiVideo=ai-video
72 72
logging.level.com.ai=debug
73 73
logging.level.org.springframework.data=debug
74 74
75
75
#\u76d1\u63a7\u6587\u4ef6\u5939
76 76
camera.filePath=/home/puaiuc/data/DAHUA
77
#camera.filePath=D:\\data\\DAHUA
77
#camera.filePath=E:\\data\\DAHUA
78 78
79
#AI\u05b4\ufffd\u043d\ufffd\ufffd
79
#AI\u05b4\u56fe\u7247
80 80
#kafka.topic.aitask=topicTaskTest
81 81
kafka.topic.aitask=topic_ai_task
82
#AI\ufffd\ufffd\u01b5
82
#AI\u89c6\u9891
83 83
#kafka.topic.aivideo=topicVideoTest
84 84
kafka.topic.aivideo=topic_ai_video
85 85
86 86
87 87
#AI\u5931\u8d25\u8bf7\u6c42\u5730\u5740
88
ebc.ai.head-det-url=http://10.1.251.211:7001/todo/api/v1.4/control/online/IMAGE/HEAD/PREDICT
88
#ebc.ai.head-det-url=http://10.1.251.211:7001/todo/api/v1.4/control/online/IMAGE/HEAD/PREDICT
89
ebc.ai.head-det-url=http://10.1.251.211:7001/todo/api/v1.4/control/online/IMAGE/HUMAN/PREDICT
89 90
ebc.ai.helmet-det-url=http://10.1.251.211:7003/todo/api/v1.4/control/online/IMAGE/HELMET/PREDICT
90 91
ebc.ai.smokingdet-url=http://10.1.251.213:5125/smokingdet
91 92
ebc.ai.instrument-det-url=http://10.1.251.213:19100/predict

+ 6 - 6
security-protection-service/src/main/java/com/ai/bss/security/protection/config/MyCorsFilter.java

@ -1,19 +1,19 @@
1 1
package com.ai.bss.security.protection.config;
2 2
3
import com.ai.sso.filter.SessionUserFilter;
3
import java.util.Arrays;
4
import java.util.HashMap;
5
import java.util.Map;
6
import java.util.concurrent.ThreadPoolExecutor;
7
4 8
import org.springframework.boot.web.servlet.FilterRegistrationBean;
5 9
import org.springframework.context.annotation.Bean;
6 10
import org.springframework.context.annotation.Configuration;
7
import org.springframework.core.task.TaskExecutor;
8 11
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
9 12
import org.springframework.web.cors.CorsConfiguration;
10 13
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
11 14
import org.springframework.web.filter.CorsFilter;
12 15
13
import java.util.Arrays;
14
import java.util.HashMap;
15
import java.util.Map;
16
import java.util.concurrent.ThreadPoolExecutor;
16
import com.ai.sso.filter.SessionUserFilter;
17 17
18 18
/**
19 19
 * 解决接口跨域问题

+ 0 - 3
security-protection-service/src/main/java/com/ai/bss/security/protection/model/AiQuery.java

@ -1,12 +1,9 @@
1 1
package com.ai.bss.security.protection.model;
2 2
3
import lombok.Data;
4 3
import lombok.Getter;
5 4
import lombok.NoArgsConstructor;
6 5
import lombok.Setter;
7 6
8
import java.util.List;
9
10 7
/**
11 8
 * @Auther: 王超
12 9
 * @Date: 2020/12/8 17:37

+ 4 - 3
security-protection-service/src/main/java/com/ai/bss/security/protection/model/Rescuer.java

@ -1,11 +1,12 @@
1 1
package com.ai.bss.security.protection.model;
2 2
3
import lombok.Data;
4
import org.springframework.format.annotation.DateTimeFormat;
5
6 3
import java.io.Serializable;
7 4
import java.util.Date;
8 5
6
import org.springframework.format.annotation.DateTimeFormat;
7
8
import lombok.Data;
9
9 10
/*救援人员*/
10 11
11 12
@Data

+ 4 - 8
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/AreaInRecordServiceImpl.java

@ -1,16 +1,12 @@
1 1
package com.ai.bss.security.protection.service.impl;
2 2
3 3
4
import com.ai.bss.security.protection.enums.UserEnums;
5
import com.ai.bss.security.protection.service.interfaces.AreaInRecordService;
6
import com.github.pagehelper.PageInfo;
7
import org.springframework.beans.factory.annotation.Autowired;
4
import java.util.Map;
5
8 6
import org.springframework.stereotype.Service;
9 7
10
import java.text.SimpleDateFormat;
11
import java.util.Date;
12
import java.util.List;
13
import java.util.Map;
8
import com.ai.bss.security.protection.service.interfaces.AreaInRecordService;
9
import com.github.pagehelper.PageInfo;
14 10
15 11
@Service
16 12
public class AreaInRecordServiceImpl implements AreaInRecordService {

+ 7 - 5
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/AttendanceCommonServiceImpl.java

@ -1,5 +1,11 @@
1 1
package com.ai.bss.security.protection.service.impl;
2 2
3
import java.util.List;
4
import java.util.Map;
5
6
import org.springframework.beans.factory.annotation.Autowired;
7
import org.springframework.stereotype.Service;
8
3 9
import com.ai.abc.api.model.CommonRequest;
4 10
import com.ai.abc.api.model.CommonResponse;
5 11
import com.ai.bss.components.common.constant.CommonConstant;
@ -10,12 +16,8 @@ import com.ai.bss.security.protection.service.interfaces.AttendanceCommonService
10 16
import com.ai.bss.user.dto.UserDto;
11 17
import com.ai.bss.user.service.api.EmployeeService;
12 18
import com.ai.bss.user.service.api.UserDtoQuery;
13
import lombok.extern.slf4j.Slf4j;
14
import org.springframework.beans.factory.annotation.Autowired;
15
import org.springframework.stereotype.Service;
16 19
17
import java.util.List;
18
import java.util.Map;
20
import lombok.extern.slf4j.Slf4j;
19 21
20 22
@Slf4j
21 23
@Service

+ 14 - 10
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/AttendanceReportServiceImpl.java

@ -1,5 +1,19 @@
1 1
package com.ai.bss.security.protection.service.impl;
2 2
3
import java.math.BigDecimal;
4
import java.text.ParseException;
5
import java.text.SimpleDateFormat;
6
import java.util.ArrayList;
7
import java.util.Date;
8
import java.util.HashMap;
9
import java.util.Iterator;
10
import java.util.List;
11
import java.util.Map;
12
13
import org.springframework.beans.factory.annotation.Autowired;
14
import org.springframework.stereotype.Service;
15
import org.springframework.util.CollectionUtils;
16
3 17
import com.ai.abc.api.model.CommonRequest;
4 18
import com.ai.abc.api.model.CommonResponse;
5 19
import com.ai.bss.characteristic.spec.model.CharacteristicSpecValue;
@ -12,16 +26,6 @@ import com.ai.bss.security.protection.utils.EbcConstant;
12 26
import com.ai.bss.user.dto.EmployeeDto;
13 27
import com.ai.bss.user.service.api.EmployeeService;
14 28
import com.ai.bss.worker.service.api.AttendanceStatusQuery;
15
import org.springframework.beans.factory.annotation.Autowired;
16
import org.springframework.stereotype.Service;
17
import org.springframework.util.CollectionUtils;
18
19
import java.math.BigDecimal;
20
import java.text.NumberFormat;
21
import java.text.ParseException;
22
import java.text.SimpleDateFormat;
23
import java.util.ArrayList;
24
import java.util.*;
25 29
26 30
/**
27 31
 * @Auther: 王超

+ 10 - 8
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/AttendanceRulesServiceImpl.java

@ -1,5 +1,14 @@
1 1
package com.ai.bss.security.protection.service.impl;
2 2
3
import java.text.SimpleDateFormat;
4
import java.util.Date;
5
import java.util.HashMap;
6
import java.util.Map;
7
8
import org.apache.commons.lang.StringUtils;
9
import org.springframework.beans.factory.annotation.Autowired;
10
import org.springframework.stereotype.Service;
11
3 12
import com.ai.abc.api.model.CommonRequest;
4 13
import com.ai.abc.api.model.CommonResponse;
5 14
import com.ai.abc.exception.BaseException;
@ -13,15 +22,8 @@ import com.ai.bss.work.attendance.service.api.AttendanceQuery;
13 22
import com.ai.bss.work.attendance.service.api.inparam.AttendanceRuleParams;
14 23
import com.ai.bss.work.task.model.common.WorkShift;
15 24
import com.ai.bss.work.task.model.common.WorkTaskSpecPlan;
16
import lombok.extern.slf4j.Slf4j;
17
import org.apache.commons.lang.StringUtils;
18
import org.springframework.beans.factory.annotation.Autowired;
19
import org.springframework.stereotype.Service;
20 25
21
import java.text.SimpleDateFormat;
22
import java.util.Date;
23
import java.util.HashMap;
24
import java.util.Map;
26
import lombok.extern.slf4j.Slf4j;
25 27
26 28
@Slf4j
27 29
@Service

+ 7 - 7
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/InAndOutRecordServiceImpl.java

@ -1,5 +1,12 @@
1 1
package com.ai.bss.security.protection.service.impl;
2 2
3
import java.util.HashMap;
4
import java.util.List;
5
import java.util.Map;
6
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.stereotype.Service;
9
3 10
import com.ai.abc.api.model.CommonRequest;
4 11
import com.ai.abc.api.model.CommonResponse;
5 12
import com.ai.bss.components.common.model.PageBean;
@ -9,13 +16,6 @@ import com.ai.bss.user.service.api.EmployeeService;
9 16
import com.ai.bss.work.safety.service.api.AiTaskQuery;
10 17
import com.ai.bss.work.tool.service.api.ResourceToolQuery;
11 18
import com.alibaba.fastjson.JSON;
12
import org.apache.bcel.verifier.statics.LONG_Upper;
13
import org.springframework.beans.factory.annotation.Autowired;
14
import org.springframework.stereotype.Service;
15
16
import java.util.HashMap;
17
import java.util.List;
18
import java.util.Map;
19 19
20 20
/**
21 21
 * @Auther: 王超

+ 1 - 1
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/LoginServiceImpl.java

@ -28,7 +28,7 @@ import com.alibaba.fastjson.JSON;
28 28
@Service
29 29
public class LoginServiceImpl implements LoginService {
30 30
31
	private Logger logger = LoggerFactory.getLogger(LoginServiceImpl.class);
31
	private static final Logger logger = LoggerFactory.getLogger(LoginServiceImpl.class);
32 32
33 33
    @Value("${uspa.login.vercode}")
34 34
    private String verCode;

+ 10 - 8
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/MonitorSceneTerminalServiceImpl.java

@ -1,5 +1,14 @@
1 1
package com.ai.bss.security.protection.service.impl;
2 2
3
import java.util.ArrayList;
4
import java.util.HashMap;
5
import java.util.List;
6
import java.util.Map;
7
8
import org.apache.commons.lang.StringUtils;
9
import org.springframework.beans.factory.annotation.Autowired;
10
import org.springframework.stereotype.Service;
11
3 12
import com.ai.abc.api.model.CommonRequest;
4 13
import com.ai.abc.api.model.CommonResponse;
5 14
import com.ai.abc.exception.BaseException;
@ -10,15 +19,8 @@ import com.ai.bss.work.safety.model.MonitorSceneTerminalRel;
10 19
import com.ai.bss.work.safety.service.api.AiTaskQuery;
11 20
import com.ai.bss.work.safety.service.api.MonitorSceneCommand;
12 21
import com.ai.bss.work.safety.service.api.MonitorSceneQuery;
13
import lombok.extern.slf4j.Slf4j;
14
import org.apache.commons.lang.StringUtils;
15
import org.springframework.beans.factory.annotation.Autowired;
16
import org.springframework.stereotype.Service;
17 22
18
import java.util.ArrayList;
19
import java.util.HashMap;
20
import java.util.List;
21
import java.util.Map;
23
import lombok.extern.slf4j.Slf4j;
22 24
23 25
@Slf4j
24 26
@Service

+ 5 - 6
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/MonitorVideoLogManageServiceImpl.java

@ -4,14 +4,8 @@ import java.io.ByteArrayInputStream;
4 4
import java.io.InputStream;
5 5
import java.util.ArrayList;
6 6
import java.util.Date;
7
import java.util.HashMap;
8 7
import java.util.List;
9
import java.util.Map;
10 8
11
import cn.hutool.core.lang.UUID;
12
import com.ai.bss.components.minio.service.MinioService;
13
import com.ai.bss.security.protection.model.SecurityProtectionMinioConfig;
14
import com.ai.bss.security.protection.service.interfaces.UploadFileService;
15 9
import org.apache.commons.lang.StringUtils;
16 10
import org.springframework.beans.factory.annotation.Autowired;
17 11
import org.springframework.stereotype.Service;
@ -20,14 +14,19 @@ import org.springframework.util.CollectionUtils;
20 14
import com.ai.abc.api.model.CommonRequest;
21 15
import com.ai.abc.api.model.CommonResponse;
22 16
import com.ai.bss.components.common.util.ComponentReflectionUtils;
17
import com.ai.bss.components.minio.service.MinioService;
23 18
import com.ai.bss.security.protection.model.EbcMonitorVideoLog;
19
import com.ai.bss.security.protection.model.SecurityProtectionMinioConfig;
24 20
import com.ai.bss.security.protection.service.interfaces.MonitorVideoLogManageService;
21
import com.ai.bss.security.protection.service.interfaces.UploadFileService;
25 22
import com.ai.bss.security.protection.utils.DateUtil;
26 23
import com.ai.bss.security.protection.utils.EbcConstant;
27 24
import com.ai.bss.work.safety.model.MonitorVideoLog;
28 25
import com.ai.bss.work.safety.service.api.MonitorSceneCommand;
29 26
import com.ai.bss.work.safety.service.api.MonitorSceneQuery;
30 27
28
import cn.hutool.core.lang.UUID;
29
31 30
@Service
32 31
public class MonitorVideoLogManageServiceImpl implements MonitorVideoLogManageService {
33 32

+ 6 - 7
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/SysConfigAiTaskServiceImpl.java

@ -1,21 +1,20 @@
1 1
package com.ai.bss.security.protection.service.impl;
2 2
3
import java.util.List;
4
import java.util.Map;
5
6
import org.springframework.beans.factory.annotation.Autowired;
7
import org.springframework.stereotype.Service;
8
3 9
import com.ai.abc.api.model.CommonRequest;
4 10
import com.ai.abc.api.model.CommonResponse;
5 11
import com.ai.bss.components.common.model.PageBean;
6
import com.ai.bss.security.protection.model.AiQuery;
7 12
import com.ai.bss.security.protection.service.interfaces.SysConfigAiTaskService;
8 13
import com.ai.bss.work.safety.model.AiModel;
9 14
import com.ai.bss.work.safety.model.AiTask;
10 15
import com.ai.bss.work.safety.service.api.AiTaskCommand;
11 16
import com.ai.bss.work.safety.service.api.AiTaskQuery;
12 17
import com.ai.bss.work.service.api.WorkTaskCommand;
13
import com.ai.bss.work.task.model.common.WorkTask;
14
import org.springframework.beans.factory.annotation.Autowired;
15
import org.springframework.stereotype.Service;
16
17
import java.util.List;
18
import java.util.Map;
19 18
20 19
/**
21 20
 * @Auther: 王超

+ 0 - 1
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/WorkOrderManagementServiceImpl.java

@ -15,7 +15,6 @@ import org.springframework.web.multipart.MultipartFile;
15 15
16 16
import com.ai.abc.api.model.CommonRequest;
17 17
import com.ai.abc.api.model.CommonResponse;
18
import com.ai.abc.exception.BaseException;
19 18
import com.ai.bss.characteristic.spec.model.CharacteristicSpecValue;
20 19
import com.ai.bss.components.common.model.PageBean;
21 20
import com.ai.bss.components.common.util.JsonUtils;

+ 8 - 6
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/WorkShiftServiceImpl.java

@ -1,5 +1,12 @@
1 1
package com.ai.bss.security.protection.service.impl;
2 2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.apache.commons.lang.StringUtils;
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.stereotype.Service;
9
3 10
import com.ai.abc.api.model.CommonRequest;
4 11
import com.ai.abc.api.model.CommonResponse;
5 12
import com.ai.abc.exception.BaseException;
@ -11,13 +18,8 @@ import com.ai.bss.work.service.api.WorkTaskSpecPlanQuery;
11 18
import com.ai.bss.work.task.model.common.WorkShift;
12 19
import com.alibaba.fastjson.JSON;
13 20
import com.alibaba.fastjson.serializer.SerializerFeature;
14
import lombok.extern.slf4j.Slf4j;
15
import org.apache.commons.lang.StringUtils;
16
import org.springframework.beans.factory.annotation.Autowired;
17
import org.springframework.stereotype.Service;
18 21
19
import java.util.ArrayList;
20
import java.util.List;
22
import lombok.extern.slf4j.Slf4j;
21 23
22 24
@Slf4j
23 25
@Service

+ 5 - 6
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/AiAlarmManageService.java

@ -1,16 +1,15 @@
1 1
package com.ai.bss.security.protection.service.interfaces;
2 2
3
import com.ai.abc.api.model.CommonRequest;
4
import com.ai.abc.api.model.CommonResponse;
5
import com.ai.bss.components.common.model.PageBean;
6
import com.ai.bss.work.safety.model.AiModel;
7
import com.ai.bss.work.task.model.common.WorkTask;
8
9 3
import java.util.List;
10 4
import java.util.Map;
11 5
12 6
import org.springframework.web.bind.annotation.RequestParam;
13 7
8
import com.ai.abc.api.model.CommonRequest;
9
import com.ai.abc.api.model.CommonResponse;
10
import com.ai.bss.components.common.model.PageBean;
11
import com.ai.bss.work.task.model.common.WorkTask;
12
14 13
public interface AiAlarmManageService {
15 14
	CommonResponse<PageBean<Map<String, Object>>> queryPageAiAlarm(Map<String, Object> params, int pageNumber,
16 15
			int pageSize)throws Exception;

+ 2 - 1
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/AreaInRecordService.java

@ -1,8 +1,9 @@
1 1
package com.ai.bss.security.protection.service.interfaces;
2 2
3
import com.github.pagehelper.PageInfo;
4 3
import java.util.Map;
5 4
5
import com.github.pagehelper.PageInfo;
6
6 7
/**
7 8
 * 考勤管理
8 9
 * @author konghl@asiainfo.com

+ 3 - 3
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/AttendanceCommonService.java

@ -1,14 +1,14 @@
1 1
package com.ai.bss.security.protection.service.interfaces;
2 2
3
import java.util.List;
4
import java.util.Map;
5
3 6
import com.ai.abc.api.model.CommonRequest;
4 7
import com.ai.abc.api.model.CommonResponse;
5 8
import com.ai.bss.components.common.model.PageBean;
6 9
import com.ai.bss.person.model.Organization;
7 10
import com.ai.bss.user.dto.UserDto;
8 11
9
import java.util.List;
10
import java.util.Map;
11
12 12
public interface AttendanceCommonService {
13 13
    /**
14 14
     * 人员列表分页查询

+ 2 - 4
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/AttendanceReportService.java

@ -1,11 +1,9 @@
1 1
package com.ai.bss.security.protection.service.interfaces;
2 2
3
import java.util.Map;
4
3 5
import com.ai.abc.api.model.CommonResponse;
4 6
import com.ai.bss.components.common.model.PageBean;
5
import com.github.pagehelper.PageInfo;
6
7
import java.util.List;
8
import java.util.Map;
9 7
10 8
public interface AttendanceReportService {
11 9
    CommonResponse<PageBean<Map<String,Object>>> queryMonthlyAttendanceReport(Map<String, Object> params, int pageNumber, int pageSize);

+ 2 - 2
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/AttendanceRulesService.java

@ -1,9 +1,9 @@
1 1
package com.ai.bss.security.protection.service.interfaces;
2 2
3
import com.ai.bss.security.protection.dto.AttendanceRuleDto;
4
5 3
import java.util.Map;
6 4
5
import com.ai.bss.security.protection.dto.AttendanceRuleDto;
6
7 7
public interface AttendanceRulesService {
8 8
9 9
    /**

+ 1 - 1
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/EmployeeManagementService.java

@ -3,10 +3,10 @@ package com.ai.bss.security.protection.service.interfaces;
3 3
import java.util.List;
4 4
import java.util.Map;
5 5
6
import com.ai.bss.characteristic.spec.model.CharacteristicSpecValue;
7 6
import org.springframework.web.multipart.MultipartFile;
8 7
9 8
import com.ai.abc.api.model.CommonResponse;
9
import com.ai.bss.characteristic.spec.model.CharacteristicSpecValue;
10 10
import com.ai.bss.components.common.model.PageBean;
11 11
import com.ai.bss.person.model.Organization;
12 12
import com.ai.bss.user.dto.EmployeeDto;

+ 2 - 2
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/InAndOutRecordService.java

@ -1,10 +1,10 @@
1 1
package com.ai.bss.security.protection.service.interfaces;
2 2
3
import java.util.Map;
4
3 5
import com.ai.abc.api.model.CommonResponse;
4 6
import com.ai.bss.components.common.model.PageBean;
5 7
6
import java.util.Map;
7
8 8
public interface InAndOutRecordService {
9 9
    CommonResponse<PageBean<Map<String, Object>>> queryPageInAndOutRecord(Map<String, Object> params, int pageNumber, int pageSize);
10 10

+ 3 - 2
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/LoginService.java

@ -2,10 +2,11 @@ package com.ai.bss.security.protection.service.interfaces;
2 2
3 3
4 4
5
import com.ai.bss.security.protection.model.User;
5
import java.util.Map;
6 6
7 7
import javax.servlet.http.HttpServletRequest;
8
import java.util.Map;
8
9
import com.ai.bss.security.protection.model.User;
9 10
10 11
/**
11 12
 * @Auther: 王超

+ 3 - 3
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/MonitorSceneTerminalService.java

@ -1,12 +1,12 @@
1 1
package com.ai.bss.security.protection.service.interfaces;
2 2
3
import java.util.List;
4
import java.util.Map;
5
3 6
import com.ai.abc.api.model.CommonResponse;
4 7
import com.ai.bss.components.common.model.PageBean;
5 8
import com.ai.bss.work.safety.model.MonitorSceneTerminalRel;
6 9
7
import java.util.List;
8
import java.util.Map;
9
10 10
public interface MonitorSceneTerminalService {
11 11
12 12
    /**

+ 3 - 6
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/SysConfigAiTaskService.java

@ -1,15 +1,12 @@
1 1
package com.ai.bss.security.protection.service.interfaces;
2 2
3
import com.ai.abc.api.model.CommonRequest;
3
import java.util.List;
4
import java.util.Map;
5
4 6
import com.ai.abc.api.model.CommonResponse;
5 7
import com.ai.bss.components.common.model.PageBean;
6
import com.ai.bss.security.protection.model.AiQuery;
7 8
import com.ai.bss.work.safety.model.AiModel;
8 9
import com.ai.bss.work.safety.model.AiTask;
9
import com.ai.bss.work.task.model.common.WorkTask;
10
11
import java.util.List;
12
import java.util.Map;
13 10
14 11
public interface SysConfigAiTaskService {
15 12
    CommonResponse<PageBean<Map<String, Object>>> queryPageAiTask(Map<String, Object> params, int pageNumber, int pageSize);

+ 5 - 5
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/WorkOrderManagementService.java

@ -1,13 +1,13 @@
1 1
package com.ai.bss.security.protection.service.interfaces;
2 2
3
import com.ai.abc.api.model.CommonResponse;
4
import com.ai.bss.components.common.model.PageBean;
5
import com.ai.bss.work.task.model.common.WorkEvent;
3
import java.util.List;
4
import java.util.Map;
6 5
7 6
import org.springframework.web.multipart.MultipartFile;
8 7
9
import java.util.List;
10
import java.util.Map;
8
import com.ai.abc.api.model.CommonResponse;
9
import com.ai.bss.components.common.model.PageBean;
10
import com.ai.bss.work.task.model.common.WorkEvent;
11 11
12 12
public interface WorkOrderManagementService {
13 13

+ 2 - 2
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/WorkShiftService.java

@ -1,10 +1,10 @@
1 1
package com.ai.bss.security.protection.service.interfaces;
2 2
3
import java.util.List;
4
3 5
import com.ai.abc.api.model.CommonResponse;
4 6
import com.ai.bss.work.task.model.common.WorkShift;
5 7
6
import java.util.List;
7
8 8
public interface WorkShiftService {
9 9
10 10
    /**

+ 0 - 2
security-protection-service/src/main/java/com/ai/bss/security/protection/service/task/AiResultRecordKafkaTask.java

@ -6,10 +6,8 @@ import java.util.concurrent.FutureTask;
6 6
7 7
import org.apache.kafka.clients.consumer.ConsumerRecord;
8 8
import org.springframework.beans.factory.annotation.Autowired;
9
import org.springframework.core.task.TaskExecutor;
10 9
import org.springframework.kafka.annotation.KafkaListener;
11 10
import org.springframework.kafka.support.Acknowledgment;
12
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
13 11
import org.springframework.stereotype.Component;
14 12
import org.springframework.util.CollectionUtils;
15 13

+ 3 - 2
security-protection-service/src/main/java/com/ai/bss/security/protection/service/task/MirrorManagement.java

@ -1,11 +1,12 @@
1 1
package com.ai.bss.security.protection.service.task;
2 2
3
import org.slf4j.Logger;
4
import org.slf4j.LoggerFactory;
5
3 6
import com.ai.ipu.server.connect.ps.EventChannelTool;
4 7
import com.ai.ipu.server.connect.ps.EventChannelTool.PublisherEvent;
5 8
import com.ai.ipu.server.connect.ps.ISubscriber;
6 9
import com.ai.ipu.server.connect.ps.impl.Publisher;
7
import org.slf4j.Logger;
8
import org.slf4j.LoggerFactory;
9 10
10 11
/**
11 12
 * 镜屏推送消息

+ 2 - 14
security-protection-service/src/main/java/com/ai/bss/security/protection/service/task/MirrorSendAiDataThread.java

@ -1,21 +1,9 @@
1 1
package com.ai.bss.security.protection.service.task;
2 2
3
import com.ai.abc.api.model.CommonRequest;
4
import com.ai.abc.api.model.CommonResponse;
5
import com.ai.bss.security.protection.service.interfaces.CharSpecService;
6
import com.ai.bss.work.task.model.common.WorkTask;
7
import com.ai.bss.worker.service.api.EntityAlarmHandle;
8
import com.alibaba.fastjson.JSON;
9
import com.alibaba.fastjson.JSONObject;
10
import org.apache.commons.collections4.map.HashedMap;
3
import java.util.concurrent.Callable;
4
11 5
import org.slf4j.Logger;
12 6
import org.slf4j.LoggerFactory;
13
import org.springframework.beans.factory.annotation.Autowired;
14
import org.springframework.beans.factory.annotation.Qualifier;
15
import org.springframework.stereotype.Component;
16
17
import java.util.Map;
18
import java.util.concurrent.Callable;
19 7
20 8
public class MirrorSendAiDataThread implements Callable<Integer> {
21 9
	private Logger logger = LoggerFactory.getLogger(MirrorSendAiDataThread.class);

+ 1 - 1
security-protection-service/src/main/java/com/ai/bss/security/protection/utils/HttpServiceUtil.java

@ -40,7 +40,7 @@ import com.alibaba.fastjson.JSONObject;
40 40
 * @author chencai
41 41
 */
42 42
public class HttpServiceUtil {
43
	private static Logger log = LoggerFactory.getLogger(HttpServiceUtil.class);
43
	private static final Logger log = LoggerFactory.getLogger(HttpServiceUtil.class);
44 44
45 45
	private static final String HTTP_CONTENT_TYPE_JSON = "application/json; charset=utf-8";
46 46

common-ui - Nuosi Git Service

AIoT前端公共UI

index.html 511B

    <!-- * @Author: Devin * @Date: 2023-01-11 16:29:53 * @LastEditors: Devin * @LastEditTime: 2023-02-22 10:46:55 * @Description: entry --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <!-- <link rel="icon" type="image/svg+xml" href="/vite.svg" /> --> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>common-ui</title> </head> <body> <div id="app"></div> <script type="module" src="/examples/main.ts"></script> </body> </html>