wangchao 4 ans auparavant
Parent
commit
735032346f

+ 60 - 0
security-protection-service/src/main/java/com/ai/bss/security/protection/service/task/AlarmMirrorTask.java

1
package com.ai.bss.security.protection.service.task;
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.security.protection.utils.EbcConstant;
7
import com.ai.bss.work.task.model.common.WorkTask;
8
import com.ai.bss.worker.service.api.EntityAlarmHandle;
9
import com.alibaba.fastjson.JSON;
10
import com.alibaba.fastjson.JSONObject;
11
import org.apache.commons.collections4.map.HashedMap;
12
import org.slf4j.Logger;
13
import org.slf4j.LoggerFactory;
14
import org.springframework.beans.factory.annotation.Autowired;
15
import org.springframework.stereotype.Component;
16
17
import java.util.Map;
18
19
@Component
20
public class AlarmMirrorTask implements EntityAlarmHandle {
21
	private Logger logger = LoggerFactory.getLogger(AlarmMirrorTask.class);
22
23
	@Autowired
24
	private CharSpecService charSpecService;
25
26
	/**
27
	 * 镜屏推送实时报警信息
28
	 *
29
	 * @param workTask
30
	 * @return
31
	 */
32
	@Override
33
	public CommonResponse<Map<String, Object>> alarmHandle(CommonRequest<WorkTask> workTask) {
34
		logger.debug("====================实时报警接收镜屏数据: " + JSON.toJSONString(workTask));
35
		try {
36
			String charValueSet = workTask.getData().getCharValueSet();
37
			JSONObject alarmJsonObj = JSONObject.parseObject(charValueSet);
38
39
			Map<String, String> resultMap = new HashedMap<String, String>();
40
41
42
			resultMap.put("workTaskId", workTask.getData().getWorkTaskId());
43
			resultMap.put("employeeName", workTask.getData().getTargetEmployeeRoleName());
44
			resultMap.put("longitude", alarmJsonObj.getString("longitude"));
45
			resultMap.put("latitude", alarmJsonObj.getString("latitude"));
46
47
			resultMap.put("businessType", alarmJsonObj.getString("businessType"));
48
49
50
			String msg = JSON.toJSONString(CommonResponse.ok(resultMap));
51
			logger.info("实时报警推送镜屏数据: " + msg);
52
			MirrorManagement.sendData(MirrorManagement.TOPIC_ALARM, msg);
53
54
		} catch (Exception e) {
55
			logger.error("实时报警推送镜屏失败: " + e.getMessage());
56
		}
57
58
		return null;
59
	}
60
}

+ 44 - 0
security-protection-service/src/main/java/com/ai/bss/security/protection/service/task/MirrorManagement.java

1
package com.ai.bss.security.protection.service.task;
2
3
import com.ai.ipu.server.connect.ps.EventChannelTool;
4
import com.ai.ipu.server.connect.ps.EventChannelTool.PublisherEvent;
5
import com.ai.ipu.server.connect.ps.ISubscriber;
6
import com.ai.ipu.server.connect.ps.impl.Publisher;
7
import org.slf4j.Logger;
8
import org.slf4j.LoggerFactory;
9
10
/**
11
 * 镜屏推送消息
12
 * @author konghl@asiainfo.com
13
 * 2020-10-21
14
 */
15
public class MirrorManagement {
16
	private static Logger logger = LoggerFactory.getLogger(MirrorManagement.class);
17
18
	// 定位topic
19
	public static final String TOPIC_LOCATION = "personnel";
20
21
	// 报警topic
22
	public static final String TOPIC_ALARM = "alarm";
23
24
	public static void sendData(String topic, String msg) {
25
		logger.debug("推送镜屏数据: topic=" + topic + " , data=" + msg);
26
27
		if (!EventChannelTool.isExistSubscriber(topic)) {
28
			// 如果没有订阅 先不管
29
			logger.debug("未推送镜屏数据,原因是没有订阅:topic="+topic);
30
			return;
31
		}
32
33
		// 你发送的内容
34
		final Publisher publisher = new Publisher(topic);
35
		PublisherEvent<?> publisherEvent = new PublisherEvent<String>(msg) {
36
			@Override
37
			public void callback(String topic, ISubscriber... subscribers) {
38
				// 可记录消息发布后的统计日志
39
			}
40
		};
41
		publisher.publish(topic, publisherEvent);
42
		logger.debug("推送镜屏数据成功");
43
	}
44
}