158 lines
6.1 KiB
Java
158 lines
6.1 KiB
Java
package com.zhgd.xmgl.util;
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.zhgd.jeecg.common.util.SpringContextUtils;
|
|
import com.zhgd.mqtt.server.IMqttSender;
|
|
import com.zhgd.xmgl.modules.project.entity.ProjectUfaceConfig;
|
|
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.util.*;
|
|
|
|
/**
|
|
* MQTT下发人员信息
|
|
*/
|
|
@Slf4j
|
|
@Component
|
|
public class MqttFaceDevUtil {
|
|
|
|
@Value("${basePath}")
|
|
private static String basePath;
|
|
|
|
private static String mqttTopic = "mqtt/face/";
|
|
|
|
/**
|
|
* 添加修改人员
|
|
*
|
|
* @param workerInfo
|
|
* @param devSn
|
|
*/
|
|
public static void addOrUpdatePerson(WorkerInfo workerInfo, String devSn) {
|
|
if (StrUtil.isNotBlank(devSn)) {
|
|
String[] splitArr = StringUtils.split(devSn, ",");
|
|
for (int i = 0; i < splitArr.length; i++) {
|
|
String ds = splitArr[i];
|
|
Map<String, Object> map = build(workerInfo);
|
|
String payload = JSON.toJSONString(map);
|
|
String topic = mqttTopic + ds;
|
|
log.info("发送主题信息:{},主题为:{}", payload, topic);
|
|
IMqttSender mqttSender = SpringContextUtils.getBean(IMqttSender.class);
|
|
mqttSender.sendToMqtt(topic, 0, payload);
|
|
}
|
|
} else {
|
|
log.info("未查询到设备sn");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 添加修改人员
|
|
*
|
|
* @param workerInfo
|
|
* @param devSn
|
|
*/
|
|
public static void addOrUpdatePersonList(List<WorkerInfo> workerInfo, String devSn) {
|
|
if (StrUtil.isNotBlank(devSn)) {
|
|
String[] splitArr = StringUtils.split(devSn, ",");
|
|
for (int i = 0; i < splitArr.length; i++) {
|
|
String ds = splitArr[i];
|
|
Map<String, Object> map = build(workerInfo);
|
|
String payload = JSON.toJSONString(map);
|
|
String topic = mqttTopic + ds;
|
|
log.info("发送主题信息:{},主题为:{}", payload, topic);
|
|
IMqttSender mqttSender = SpringContextUtils.getBean(IMqttSender.class);
|
|
mqttSender.sendToMqtt(topic, 0, payload);
|
|
}
|
|
} else {
|
|
log.info("未查询到设备sn");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 删除人员
|
|
*
|
|
* @param workerInfo
|
|
*/
|
|
public static void deletePerson(WorkerInfo workerInfo, String devSn) {
|
|
if (StrUtil.isNotBlank(devSn)) {
|
|
String[] splitArr = StringUtils.split(devSn, ",");
|
|
for (int i = 0; i < splitArr.length; i++) {
|
|
String ds = splitArr[i];
|
|
Map<String, Object> map = new HashMap<>();
|
|
map.put("operator", "DelPerson");
|
|
map.put("messageId", "ID:" + System.currentTimeMillis() + ":" + workerInfo.getPersonSn());
|
|
Map<String, Object> info = new HashMap<>();
|
|
info.put("customId", workerInfo.getPersonSn());
|
|
map.put("info", info);
|
|
String payload = JSON.toJSONString(map);
|
|
String topic = mqttTopic + ds;
|
|
log.info("发送主题信息:{},主题为:{}", payload, topic);
|
|
IMqttSender mqttSender = SpringContextUtils.getBean(IMqttSender.class);
|
|
mqttSender.sendToMqtt(topic, 0, payload);
|
|
}
|
|
} else {
|
|
log.error("未查询到设备sn");
|
|
}
|
|
}
|
|
|
|
private static Map<String, Object> build(WorkerInfo workerInfo) {
|
|
Map<String, Object> map = new HashMap<>();
|
|
map.put("messageId", "ID:" + System.currentTimeMillis() + ":" + workerInfo.getProjectSn());
|
|
map.put("DataBegin", "BeginFlag");
|
|
map.put("operator", "EditPersonsNew");
|
|
map.put("PersonNum", 1);
|
|
List<Map<String, Object>> infoList = new ArrayList<>();
|
|
Map<String, Object> info = new HashMap<>();
|
|
info.put("customId", workerInfo.getPersonSn());
|
|
info.put("name", workerInfo.getWorkerName());
|
|
info.put("nation", 1);
|
|
info.put("gender", workerInfo.getSex() - 1);
|
|
info.put("birthday", workerInfo.getBirthday());
|
|
info.put("address", workerInfo.getNowPlace());
|
|
info.put("idCard", workerInfo.getIdCard());
|
|
info.put("tempCardType", 0);
|
|
info.put("telnum1", workerInfo.getPhoneNumber());
|
|
info.put("native", workerInfo.getNativePlace());
|
|
info.put("personType", 0);
|
|
info.put("cardType", 0);
|
|
info.put("pic", basePath + "/" + workerInfo.getFieldAcquisitionUrl());
|
|
infoList.add(info);
|
|
map.put("info", infoList);
|
|
map.put("DataEnd", "EndFlag");
|
|
return map;
|
|
}
|
|
|
|
private static Map<String, Object> build(List<WorkerInfo> workerInfos) {
|
|
Map<String, Object> map = new HashMap<>();
|
|
map.put("messageId", "ID:" + System.currentTimeMillis() + ":" + workerInfos.get(0).getProjectSn());
|
|
map.put("DataBegin", "BeginFlag");
|
|
map.put("operator", "EditPersonsNew");
|
|
map.put("PersonNum", 1);
|
|
List<Map<String, Object>> infoList = new ArrayList<>();
|
|
for (WorkerInfo workerInfo : workerInfos) {
|
|
Map<String, Object> info = new HashMap<>();
|
|
info.put("customId", workerInfo.getPersonSn());
|
|
info.put("name", workerInfo.getWorkerName());
|
|
info.put("nation", 1);
|
|
info.put("gender", workerInfo.getSex() - 1);
|
|
info.put("birthday", workerInfo.getBirthday());
|
|
info.put("address", workerInfo.getNowPlace());
|
|
info.put("idCard", workerInfo.getIdCard());
|
|
info.put("tempCardType", 0);
|
|
info.put("telnum1", workerInfo.getPhoneNumber());
|
|
info.put("native", workerInfo.getNativePlace());
|
|
info.put("personType", 0);
|
|
info.put("cardType", 0);
|
|
info.put("pic", basePath + "/" + workerInfo.getFieldAcquisitionUrl());
|
|
infoList.add(info);
|
|
}
|
|
map.put("info", infoList);
|
|
map.put("DataEnd", "EndFlag");
|
|
return map;
|
|
}
|
|
}
|