浏览代码

Merge remote-tracking branch 'origin/master'

wangchao 4 年之前
父节点
当前提交
b57d80b691

+ 1 - 1
location-rescue-service/src/main/java/com/ai/bss/location/rescue/service/impl/LocationManagementServiceImpl.java

@ -236,7 +236,7 @@ public class LocationManagementServiceImpl implements LocationManagementService
236 236
237 237
			String maxStatus = getEntityPositionStatus(entityPosition);
238 238
			// 获取人员状态:如果为救援人员,则显示为正常人员
239
			//maxStatus = EntityPosition.TAG_TYPE_RESCUE.equals(maxStatus) ? EntityPosition.TAG_TYPE_NORMAL : maxStatus;
239
			maxStatus = EntityPosition.TAG_TYPE_RESCUE.equals(maxStatus) ? EntityPosition.TAG_TYPE_NORMAL : maxStatus;
240 240
			ebcEntityPosition.setLocationStatus(maxStatus);
241 241
242 242
			ebcEntityPosition.setCharValueSet(null);

+ 1 - 1
location-rescue-service/src/main/java/com/ai/bss/location/rescue/util/EbcConstant.java

@ -40,7 +40,7 @@ public class EbcConstant {
40 40
	public static final String BUSINESS_SPEC_EMPLOYEE_POSITION="mainJobPosition";
41 41
	
42 42
	//静态常量: 报警类型
43
	public static final String BUSINESS_SPEC_MAP_AREA_TYPE="ALARM_TYPE";
43
	public static final String BUSINESS_SPEC_MAP_AREA_TYPE="LOCATION_ALARM_TYPE";
44 44
		
45 45
	//静态常量: 海图参数
46 46
	public static final String BUSINESS_SPEC_SEA_MAP_PARAM="SEA_MAP_PARAM";

+ 13 - 18
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/ResourceToolManageServiceImpl.java

@ -15,17 +15,15 @@ import com.ai.abc.api.model.CommonRequest;
15 15
import com.ai.abc.api.model.CommonResponse;
16 16
import com.ai.bss.characteristic.spec.model.CharacteristicSpecValue;
17 17
import com.ai.bss.components.common.model.PageBean;
18
import com.ai.bss.components.minio.service.MinioService;
19 18
import com.ai.bss.security.protection.model.SecurityProtectionMinioConfig;
20 19
import com.ai.bss.security.protection.service.interfaces.CharSpecService;
21 20
import com.ai.bss.security.protection.service.interfaces.ResourceToolManageService;
21
import com.ai.bss.security.protection.service.interfaces.UploadFileService;
22 22
import com.ai.bss.security.protection.utils.EbcConstant;
23 23
import com.ai.bss.work.tool.model.ResourceTool;
24 24
import com.ai.bss.work.tool.service.api.ResourceToolCommand;
25 25
import com.ai.bss.work.tool.service.api.ResourceToolQuery;
26 26
27
import cn.hutool.core.lang.UUID;
28
29 27
@Service
30 28
public class ResourceToolManageServiceImpl implements ResourceToolManageService {
31 29
@ -36,7 +34,7 @@ public class ResourceToolManageServiceImpl implements ResourceToolManageService
36 34
	private ResourceToolQuery resourceToolQuery;
37 35
38 36
	@Autowired
39
	private MinioService minioService;
37
	private UploadFileService uploadFileService;
40 38
41 39
	@Autowired
42 40
	private SecurityProtectionMinioConfig minioConfig;
@ -118,9 +116,9 @@ public class ResourceToolManageServiceImpl implements ResourceToolManageService
118 116
			resultMap.put("toolPictureUrl", "");
119 117
			resultMap.put("isExistPicture", "0");
120 118
		} else {
121
			String pictureUrl = minioService.getObjectUrl(minioConfig.getBucketWorkToolImage(),
122
					resultMap.get("pictureUrl").toString());
123
			resultMap.put("toolPictureUrl", pictureUrl);
119
			String toolPictureUrl = uploadFileService.getFileUrl(resultMap.get("pictureUrl").toString(),
120
					minioConfig.getBucketWorkToolImage());
121
			resultMap.put("toolPictureUrl", toolPictureUrl);
124 122
			resultMap.put("isExistPicture", "1");
125 123
		}
126 124
@ -159,21 +157,18 @@ public class ResourceToolManageServiceImpl implements ResourceToolManageService
159 157
160 158
	@Override
161 159
	public Map<String, String> uploadResourceToolPicture(MultipartFile meFile, String pictureUrl) throws Exception {
162
		/*if (StringUtils.isNotBlank(pictureUrl) && !"#".equals(pictureUrl)) {
160
		if (StringUtils.isNotBlank(pictureUrl) && !"#".equals(pictureUrl)) {
163 161
		 	//删除照片
164
			minioService.removeObject(minioConfig.getBucketWorkToolImage(), pictureUrl);
165
		}*/
162
			uploadFileService.removeFile(pictureUrl);
163
		}
166 164
167
		//上传
168
		String fileName = meFile.getOriginalFilename();
169
		String fileType = fileName.substring(fileName.lastIndexOf("."), fileName.length());
170
		String minioFileName = UUID.fastUUID().toString() + fileType;
171
		minioService.putObject(minioConfig.getBucketWorkToolImage(), meFile, minioFileName);
165
		// 上传
166
		String minioFileName = uploadFileService.uploadFile(meFile, minioConfig.getBucketWorkToolImage());
172 167
173
		//获取照片的url地址
174
		String toolPictureUrl = minioService.getObjectUrl(minioConfig.getBucketWorkToolImage(), minioFileName);
168
		// 获取照片的url地址
169
		String toolPictureUrl = uploadFileService.getFileUrl(minioFileName);
175 170
176
		//返回信息
171
		// 返回信息
177 172
		Map<String, String> resultMap = new HashMap<String, String>();
178 173
		resultMap.put("pictureUrl", minioFileName);
179 174
		resultMap.put("toolPictureUrl", toolPictureUrl);

+ 129 - 0
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/UploadFileServiceImpl.java

@ -0,0 +1,129 @@
1
package com.ai.bss.security.protection.service.impl;
2
3
import javax.naming.NameNotFoundException;
4
5
import org.apache.commons.lang.StringUtils;
6
import org.springframework.beans.factory.annotation.Autowired;
7
import org.springframework.stereotype.Service;
8
import org.springframework.web.multipart.MultipartFile;
9
10
import com.ai.bss.components.minio.service.MinioService;
11
import com.ai.bss.security.protection.service.interfaces.UploadFileService;
12
13
import cn.hutool.core.lang.UUID;
14
import lombok.extern.slf4j.Slf4j;
15
16
@Service
17
@Slf4j
18
public class UploadFileServiceImpl implements UploadFileService {
19
20
	private static final String SPLIT_CHAR = "_";
21
22
	@Autowired
23
	private MinioService minioService;
24
25
	@Override
26
	public String uploadFile(MultipartFile meFile, String bucketName) throws Exception {
27
		if (meFile == null || StringUtils.isEmpty(meFile.getOriginalFilename())) {
28
			log.error("上传的文件为空");
29
			throw new NullPointerException("meFile is null");
30
		}
31
		if (StringUtils.isEmpty(bucketName)) {
32
			log.error("上传文件的桶为空");
33
			throw new NullPointerException("bucketName is null");
34
		}
35
		String fileName = meFile.getOriginalFilename();
36
		log.info("准备上传文件: " + fileName);
37
38
		String fileType = fileName.substring(fileName.lastIndexOf("."), fileName.length());
39
		String minioFileName = bucketName + SPLIT_CHAR + UUID.fastUUID().toString().replace("-", "") + fileType;
40
41
		try {
42
			minioService.putObject(bucketName, meFile, minioFileName);
43
		} catch (Exception e) {
44
			log.error("文件上传异常");
45
			e.printStackTrace();
46
		}
47
48
		log.info("文件上传结束,minioFileName: " + minioFileName);
49
		return minioFileName;
50
	}
51
52
	@Override
53
	public String getFileUrl(String minioFileName) throws Exception {
54
		if (StringUtils.isEmpty(minioFileName)) {
55
			return "";
56
		}
57
		if (minioFileName.lastIndexOf(SPLIT_CHAR) < 1) {
58
			log.error("获取文件url异常,minioFileName:" + minioFileName);
59
			throw new NameNotFoundException("minioFileName is error");
60
		}
61
62
		String bucketName = minioFileName.substring(0, minioFileName.lastIndexOf(SPLIT_CHAR));
63
64
		return getFileUrl(minioFileName, bucketName);
65
	}
66
67
	@Override
68
	public String getFileUrl(String minioFileName, String bucketName) throws Exception {
69
		if (StringUtils.isEmpty(minioFileName)) {
70
			return "";
71
		}
72
		if (StringUtils.isEmpty(bucketName)) {
73
			log.error("上传文件的桶为空");
74
			throw new NullPointerException("bucketName is null");
75
		}
76
77
		String fileUrl = "";
78
		try {
79
			fileUrl = minioService.getObjectUrl(bucketName, minioFileName);
80
		} catch (Exception e) {
81
			log.error("获取到文件的url路径异常,minioFileName: " + minioFileName);
82
			e.printStackTrace();
83
		}
84
85
		if (StringUtils.isEmpty(fileUrl)) {
86
			log.info("未获取到文件的url路径,minioFileName: " + minioFileName);
87
		}
88
89
		// log.debug("获得文件的url路径,minioFileName: " + minioFileName + ",bucketName:" + bucketName + ",url:" + fileUrl);
90
		return fileUrl;
91
	}
92
93
	@Override
94
	public boolean removeFile(String minioFileName) throws Exception {
95
		if (StringUtils.isEmpty(minioFileName)) {
96
			return false;
97
		}
98
		if (minioFileName.lastIndexOf(SPLIT_CHAR) < 1) {
99
			log.error("删除文件异常,minioFileName:" + minioFileName);
100
			throw new NameNotFoundException("minioFileName is error");
101
		}
102
103
		String bucketName = minioFileName.substring(0, minioFileName.lastIndexOf(SPLIT_CHAR));
104
105
		return removeFile(minioFileName, bucketName);
106
	}
107
108
	@Override
109
	public boolean removeFile(String minioFileName, String bucketName) throws Exception {
110
		if (StringUtils.isEmpty(minioFileName)) {
111
			return false;
112
		}
113
		if (StringUtils.isEmpty(bucketName)) {
114
			log.error("删除文件的桶为空");
115
			throw new NullPointerException("bucketName is null");
116
		}
117
		boolean result = false;
118
		try {
119
			result = minioService.removeObject(bucketName, minioFileName);
120
		} catch (Exception e) {
121
			log.error("删除上传异常");
122
			e.printStackTrace();
123
		}
124
125
		log.info("删除文件,minioFileName: " + minioFileName);
126
		return result;
127
	}
128
129
}

+ 45 - 0
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/UploadFileService.java

@ -0,0 +1,45 @@
1
package com.ai.bss.security.protection.service.interfaces;
2
3
import org.springframework.web.multipart.MultipartFile;
4
5
public interface UploadFileService {
6
	/**
7
	 * 上传文件
8
	 * @param meFile 上传的文件
9
	 * @param bucketName 存储文件的桶名(文件夹)
10
	 * @return minioFileName minio文件标识
11
	 */
12
	String uploadFile(MultipartFile meFile, String bucketName) throws Exception;
13
14
	/**
15
	 * 获取文件的url地址
16
	 * @param minioFileName minio文件标识
17
	 * @return
18
	 */
19
	String getFileUrl(String minioFileName) throws Exception;
20
21
	/**
22
	 * 获取文件的url地址
23
	 * @param minioFileName minio文件标识
24
	 * @param bucketName 存储文件的桶名(文件夹)
25
	 * @return
26
	 */
27
	String getFileUrl(String minioFileName, String bucketName) throws Exception;
28
29
	/**
30
	 * 移除文件
31
	 * @param minioFileName minio文件标识
32
	 * @return
33
	 * @throws Exception
34
	 */
35
	boolean removeFile(String minioFileName) throws Exception;
36
37
	/**
38
	 * 移除文件
39
	 * @param minioFileName minio文件标识
40
	 * @param bucketName 存储文件的桶名(文件夹)
41
	 * @return
42
	 * @throws Exception
43
	 */
44
	boolean removeFile(String minioFileName, String bucketName) throws Exception;
45
}

+ 54 - 0
security-protection-service/src/main/java/com/ai/bss/security/protection/service/task/AIAlarmKafkaTask.java

@ -0,0 +1,54 @@
1
package com.ai.bss.security.protection.service.task;
2
3
import org.apache.kafka.clients.consumer.ConsumerRecord;
4
import org.junit.Assert;
5
import org.springframework.beans.factory.annotation.Autowired;
6
import org.springframework.kafka.annotation.KafkaListener;
7
import org.springframework.kafka.support.Acknowledgment;
8
import org.springframework.stereotype.Component;
9
10
import com.ai.abc.api.model.CommonRequest;
11
import com.ai.abc.api.model.CommonResponse;
12
import com.ai.abc.util.JsonUtils;
13
import com.ai.bss.work.safety.model.AiIdenLog;
14
import com.ai.bss.work.safety.service.api.AiTaskCommand;
15
import com.alibaba.fastjson.JSON;
16
import com.alibaba.fastjson.TypeReference;
17
18
import lombok.extern.slf4j.Slf4j;
19
20
/**
21
 * 监控报警事件触发违规处理
22
 * @author konghl@asiainfo.com
23
 * 2020-12-14
24
 */
25
@Component
26
@Slf4j
27
public class AIAlarmKafkaTask {
28
29
	@Autowired
30
	private AiTaskCommand aiTaskCommand;
31
32
	@KafkaListener(containerFactory = "kafkaBatchListener3", topics = "${kafka.topic.aialarm:topic_ai_alarm}", groupId = "alarm_group")
33
	public void alarmListener(ConsumerRecord<String, String> records, Acknowledgment ack) throws Throwable {
34
		try {
35
			log.info("----------------AI监控触发违规信息消费开始---------------------------");
36
37
			String message = records.value();
38
			log.info("已接AI报违规消息,消息为:" + message);
39
40
			CommonRequest<AiIdenLog> aiIdenLogRequest = JSON.parseObject(message,
41
					new TypeReference<CommonRequest<AiIdenLog>>() {
42
					});
43
44
			CommonResponse runningResult = aiTaskCommand.aiIdenLogTriggerEvent(aiIdenLogRequest);
45
			log.info("runningResult: \n{}", JsonUtils.toJSONStringByDateFormat(runningResult, true));
46
			Assert.assertTrue(runningResult.isSuccess());
47
48
		} catch (Exception e) {
49
			log.error("kafka消费异常" + e.getMessage(), e);
50
		} finally {
51
			ack.acknowledge();// 手动提交偏移量
52
		}
53
	}
54
}

+ 54 - 0
security-protection-service/src/main/java/com/ai/bss/security/protection/service/task/AIAttendanceKafkaTask.java

@ -0,0 +1,54 @@
1
package com.ai.bss.security.protection.service.task;
2
3
import org.apache.kafka.clients.consumer.ConsumerRecord;
4
import org.junit.Assert;
5
import org.springframework.beans.factory.annotation.Autowired;
6
import org.springframework.kafka.annotation.KafkaListener;
7
import org.springframework.kafka.support.Acknowledgment;
8
import org.springframework.stereotype.Component;
9
10
import com.ai.abc.api.model.CommonRequest;
11
import com.ai.abc.api.model.CommonResponse;
12
import com.ai.abc.util.JsonUtils;
13
import com.ai.bss.work.safety.model.AiIdenLog;
14
import com.ai.bss.work.safety.service.api.AiTaskCommand;
15
import com.alibaba.fastjson.JSON;
16
import com.alibaba.fastjson.TypeReference;
17
18
import lombok.extern.slf4j.Slf4j;
19
20
/**
21
 * 人脸识别事件触发考勤
22
 * @author konghl@asiainfo.com
23
 * 2020-12-14
24
 */
25
@Component
26
@Slf4j
27
public class AIAttendanceKafkaTask {
28
29
	@Autowired
30
	private AiTaskCommand aiTaskCommand;
31
32
	@KafkaListener(containerFactory = "kafkaBatchListener3", topics = "${kafka.topic.alarm:Topic_IoT_IndividualAlarm}", groupId = "alarm_group")
33
	public void alarmListener(ConsumerRecord<String, String> records, Acknowledgment ack) throws Throwable {
34
		try {
35
			log.info("----------------AI人脸识别触发考勤信息消费开始---------------------------");
36
37
			String message = records.value();
38
			log.info("已接AI考勤信息,消息为:" + message);
39
40
			CommonRequest<AiIdenLog> aiIdenLogRequest = JSON.parseObject(message,
41
					new TypeReference<CommonRequest<AiIdenLog>>() {
42
					});
43
44
			CommonResponse runningResult = aiTaskCommand.aiIdenLogTriggerEvent(aiIdenLogRequest);
45
			log.info("runningResult: \n{}", JsonUtils.toJSONStringByDateFormat(runningResult, true));
46
			Assert.assertTrue(runningResult.isSuccess());
47
48
		} catch (Exception e) {
49
			log.error("kafka消费异常" + e.getMessage(), e);
50
		} finally {
51
			ack.acknowledge();// 手动提交偏移量
52
		}
53
	}
54
}

+ 54 - 0
security-protection-service/src/main/java/com/ai/bss/security/protection/service/task/AIResultRecordKafkaTask.java

@ -0,0 +1,54 @@
1
package com.ai.bss.security.protection.service.task;
2
3
import org.apache.kafka.clients.consumer.ConsumerRecord;
4
import org.junit.Assert;
5
import org.springframework.beans.factory.annotation.Autowired;
6
import org.springframework.kafka.annotation.KafkaListener;
7
import org.springframework.kafka.support.Acknowledgment;
8
import org.springframework.stereotype.Component;
9
10
import com.ai.abc.api.model.CommonRequest;
11
import com.ai.abc.api.model.CommonResponse;
12
import com.ai.abc.util.JsonUtils;
13
import com.ai.bss.work.safety.model.AiIdenLog;
14
import com.ai.bss.work.safety.service.api.AiTaskCommand;
15
import com.alibaba.fastjson.JSON;
16
import com.alibaba.fastjson.TypeReference;
17
18
import lombok.extern.slf4j.Slf4j;
19
20
/**
21
 * AI任务执行结果日志创建
22
 * @author konghl@asiainfo.com
23
 * 2020-12-14
24
 */
25
@Component
26
@Slf4j
27
public class AIResultRecordKafkaTask {
28
29
	@Autowired
30
	private AiTaskCommand aiTaskCommand;
31
32
	@KafkaListener(containerFactory = "kafkaBatchListener6", topics = "${kafka.topic.alarm:Topic_IoT_IndividualAlarm}", groupId = "alarm_group")
33
	public void alarmListener(ConsumerRecord<String, String> records, Acknowledgment ack) throws Throwable {
34
		try {
35
			log.info("----------------AI任务执行结果信息消费开始---------------------------");
36
37
			String message = records.value();
38
			log.info("已接AI任务执行结果消息,消息为:" + message);
39
40
			CommonRequest<AiIdenLog> aiIdenLogRequest = JSON.parseObject(message,
41
					new TypeReference<CommonRequest<AiIdenLog>>() {
42
					});
43
44
			CommonResponse<AiIdenLog> runningResult = aiTaskCommand.createAiIdenLog(aiIdenLogRequest);
45
			log.info("runningResult: \n{}", JsonUtils.toJSONStringByDateFormat(runningResult, true));
46
			Assert.assertTrue(runningResult.isSuccess());
47
48
		} catch (Exception e) {
49
			log.error("kafka消费异常" + e.getMessage(), e);
50
		} finally {
51
			ack.acknowledge();// 手动提交偏移量
52
		}
53
	}
54
}

+ 3 - 4
security-protection-service/src/main/resources/application.properties

@ -27,10 +27,9 @@ spring.main.allow-bean-definition-overriding=true
27 27
#kafka
28 28
#kafka.bootstrap-servers=47.105.160.21:9090
29 29
kafka.bootstrap-servers=10.19.90.34:9090
30
kafka.topic.deviceLocation=Topic_IoT_DeviceLocation_111
31
kafka.topic.alarm=Topic_IoT_IndividualAlarm_111
32
#kafka.topic.deviceLocation=DeviceLocationA
33
#kafka.topic.alarm=IndividualAlarmA
30
kafka.topic.aitask=topic_ai_task
31
kafka.topic.aialarm=topic_ai_alarm
32
kafka.topic.aiattendance=topic_ai_attendance
34 33
kafka.producer.batch-size=16785
35 34
kafka.producer.retries=1
36 35
kafka.producer.buffer-memory=33554432