wisdomisite-java/src/main/java/com/zhgd/xmgl/util/MqttFaceDevUtil.java
2025-08-07 11:33:01 +08:00

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;
}
}