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 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, String devSn) { if (StrUtil.isNotBlank(devSn)) { String[] splitArr = StringUtils.split(devSn, ","); for (int i = 0; i < splitArr.length; i++) { String ds = splitArr[i]; Map 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 map = new HashMap<>(); map.put("operator", "DelPerson"); map.put("messageId", "ID:" + System.currentTimeMillis() + ":" + workerInfo.getPersonSn()); Map 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 build(WorkerInfo workerInfo) { Map map = new HashMap<>(); map.put("messageId", "ID:" + System.currentTimeMillis() + ":" + workerInfo.getProjectSn()); map.put("DataBegin", "BeginFlag"); map.put("operator", "EditPersonsNew"); map.put("PersonNum", 1); List> infoList = new ArrayList<>(); Map 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 build(List workerInfos) { Map 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> infoList = new ArrayList<>(); for (WorkerInfo workerInfo : workerInfos) { Map 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; } }