From c9f5a0a5f631fec7d66ab263d381bd09107d45c6 Mon Sep 17 00:00:00 2001 From: lizijie <lzjiiie@163.com> Date: Mon, 29 Nov 2021 11:06:34 +0800 Subject: [PATCH] 龙腾特种钢数据发送到柏美迪康平台 --- src/main/java/com/moral/task/OffLineAlarmTask.java | 4 + src/main/java/com/moral/task/RabbitMQInsertBaiMeiDiKangTask.java | 127 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/moral/task/OffLineAlarmTask.java b/src/main/java/com/moral/task/OffLineAlarmTask.java index e73b5be..b4746a7 100644 --- a/src/main/java/com/moral/task/OffLineAlarmTask.java +++ b/src/main/java/com/moral/task/OffLineAlarmTask.java @@ -39,6 +39,7 @@ int dataToJinTanNewMaterials = Integer.parseInt(redisUtils.get("dataToJinTanNewMaterials").toString()); int dataToQianDeng = Integer.parseInt(redisUtils.get("dataToQianDeng").toString()); int dataToChangShuHuanSi = Integer.parseInt(redisUtils.get("dataToChangShuHuanSi").toString()); + int dataToBaiMeiDiKang = Integer.parseInt(redisUtils.get("dataToBaiMeiDiKang").toString()); int nowTime = LengthOfTimeUtils.getSecondTimestampTwo(new Date()); List<String> programList = new ArrayList<>(); if (nowTime - dataToLianyunquGovernment > 1200){ @@ -59,6 +60,9 @@ if (nowTime - dataToChangShuHuanSi > 300){ programList.add("dataToChangShuHuanSi"); } + if (nowTime - dataToBaiMeiDiKang > 300){ + programList.add("dataToBaiMeiDiKang"); + } if (!programList.isEmpty()){ AlarmUtils_2.sendMail("357328213@qq.com,1vv_zkk6ji3kln@dingtalk.com","���������������������",programList.toString()+"������������������������"); ReturnT returnT = new ReturnT(200, "���������������������������������"); diff --git a/src/main/java/com/moral/task/RabbitMQInsertBaiMeiDiKangTask.java b/src/main/java/com/moral/task/RabbitMQInsertBaiMeiDiKangTask.java new file mode 100644 index 0000000..dea7526 --- /dev/null +++ b/src/main/java/com/moral/task/RabbitMQInsertBaiMeiDiKangTask.java @@ -0,0 +1,127 @@ +package com.moral.task; + +import com.alibaba.fastjson.JSON; +import com.moral.service.DeviceService; +import com.moral.service.HistoryMinutelyService; +import com.moral.service.OrganizationRelationService; +import com.moral.service.SensorService; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import com.xxl.job.core.log.XxlJobLogger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.core.TopicExchange; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; +import org.springframework.util.ObjectUtils; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.stream.Collectors; + +@Component +public class RabbitMQInsertBaiMeiDiKangTask { + private static transient Logger logger = LoggerFactory.getLogger(RabbitMQInsertBaiMeiDiKangTask.class); + + @Resource + private DeviceService deviceService; + + @Resource + private SensorService sensorService; + + @Resource + private HistoryMinutelyService historyMinutelyService; + + @Resource + private OrganizationRelationService organizationRelationService; + + @Resource + private RabbitTemplate rabbitTemplate; + + @Resource + @Qualifier("organization_data") + private TopicExchange organization_data; + + //������������������������������������ + @XxlJob("RabbitMQBaiMeiDiKangMinutely") + public ReturnT insertRabbitMQMinutely(String params) { + LocalDateTime time = LocalDateTime.now(); + int year = time.getYear(); + int month = time.getMonthValue(); + int day = time.getDayOfMonth(); + int hour = time.getHour(); + int minute = time.getMinute(); + if (day == 1) { + if (hour == 0 && minute == 0) { + if (month == 1) { + month = 12; + year = year - 1; + } else { + month = month - 1; + } + } + } + String monthStr = month < 10 ? ("0" + month) : month + ""; + String yearAndMonth = year + monthStr; + Map organizationIdMap = JSON.parseObject(params); + List<Integer> parentIdList = (List<Integer>) organizationIdMap.get("orgId"); + LocalDateTime endTime = time.truncatedTo(ChronoUnit.MINUTES); + LocalDateTime startTime = endTime.minusMinutes(1); + List<Object> organizationIdList = organizationRelationService.getChildIdByParentId(parentIdList); + try { + List<String> macList = deviceService.getMacByOrganizationid(organizationIdList); + List<String> sensorKeys = sensorService.getSensorKeyByMac(macList); + List<Map<String, Object>> macAndOrganizationIdMap = deviceService.macAndOrganizationIdMap(macList); + Map<String, Object> kv = new LinkedHashMap<>(); + for (Map<String, Object> map : macAndOrganizationIdMap) { + kv.put(map.get("mac").toString(), map.get("organizationId")); + } + Map<String, Object> devices = new HashMap<>(); + devices.put("sensorKeys", sensorKeys); + devices.put("start", startTime); + devices.put("end", endTime); + devices.put("macs", macList); + devices.put("yearAndMonth", yearAndMonth); + List<Map<String, Object>> minutelyData = historyMinutelyService.getMinutelySensorData(devices); + XxlJobLogger.log("RabbitMQMinutelyData:" + minutelyData.size()); + if (!CollectionUtils.isEmpty(minutelyData)) { + for (Map<String, Object> deviceData : minutelyData) { + if (!ObjectUtils.isEmpty(deviceData)) { + Iterator<String> iterator = deviceData.keySet().iterator(); + while (iterator.hasNext()) { + String key = iterator.next(); + if (key.startsWith("M")) { + iterator.remove(); + } + } + deviceData.put("time", startTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + deviceData.put("timeType", "minutely"); + String mac = deviceData.get("mac").toString(); + Object o1 = kv.get(mac); + List<Integer> parentIds = organizationRelationService.getParentIdListByChildId((Integer) o1); + Map organizationIdMapNew = JSON.parseObject(params); + List<Integer> parentIdListNew = (List<Integer>) organizationIdMapNew.get("orgId"); + List<Integer> intersection = parentIdListNew.stream().filter(item -> parentIds.contains(item)).collect(Collectors.toList()); + intersection.stream().forEach(parentId -> rabbitTemplate.convertAndSend(organization_data.getName(), "baimeidikang" + "." + mac, JSON.toJSONString(deviceData))); + } + } + ReturnT returnT = new ReturnT(200, "RabbitMQ������������������������������"); + return returnT; + } + } catch (Exception e) { + XxlJobLogger.log("RabbitMQRealtimeMinutelyException:" + e.getMessage()); + logger.error(e.getMessage()); + e.printStackTrace(); + } + ReturnT returnT = new ReturnT(500, "RabbitMQ������������������������������"); + return returnT; + } + +} + + -- Gitblit v1.8.0