From 21147f661a7db61d757095b75c199ad898b6d6c0 Mon Sep 17 00:00:00 2001 From: mh Date: Mon, 23 Dec 2024 18:23:46 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=B7=BB=E5=8A=A0=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mh/user/job/PushDataToWechatJob.java | 112 ++++++++++++++---- .../com/mh/user/mapper/EnergyDataMapper.java | 19 +++ .../mh/user/mapper/wechat/WechatMapper.java | 2 +- .../mh/user/service/EnergyDataService.java | 2 + .../service/impl/EnergyDataServiceImpl.java | 5 + .../wechat/impl/WechatServiceImpl.java | 21 +++- 6 files changed, 135 insertions(+), 26 deletions(-) diff --git a/user-service/src/main/java/com/mh/user/job/PushDataToWechatJob.java b/user-service/src/main/java/com/mh/user/job/PushDataToWechatJob.java index 0d4b4d9..54c657d 100644 --- a/user-service/src/main/java/com/mh/user/job/PushDataToWechatJob.java +++ b/user-service/src/main/java/com/mh/user/job/PushDataToWechatJob.java @@ -12,6 +12,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAdjusters; import java.util.Calendar; import java.util.List; import java.util.Map; @@ -54,34 +60,96 @@ public class PushDataToWechatJob { } else { log.info("有数据"); // 开始推送数据 - PushMsgEntity pushMsgEntity = new PushMsgEntity(); List> wechatUserList = wechatService.queryWechatUser(String.valueOf(projectInfoEntity.getId())); for (Map map : wechatUserList) { - pushMsgEntity.setTouser(map.get("open_id").toString()); - pushMsgEntity.setTemplateId(map.get("template_id").toString()); - pushMsgEntity.setUrl("http://jnd2.mhwsh.net:8765/"); - First first = new First(); - first.setValue("设备用量采集结果通知"); - pushMsgEntity.setFirst(first); - Key1 key1 = new Key1(); - key1.setValue(projectInfoEntity.getProjectName()); - pushMsgEntity.setKey1(key1); - Key2 key2 = new Key2(); - key2.setValue(String.valueOf(energyDataEntity.getElect()) + " kwh"); - pushMsgEntity.setKey2(key2); - Key3 key3 = new Key3(); - key3.setValue(String.valueOf(energyDataEntity.getCl()) + " kwr"); - pushMsgEntity.setKey3(key3); - Key4 key4 = new Key4(); - key4.setValue(String.valueOf(energyDataEntity.getCop()) + " kwr/kwh"); - pushMsgEntity.setKey4(key4); - Key5 key5 = new Key5(); - key5.setValue(String.valueOf(energyDataEntity.getCurDate())); - pushMsgEntity.setKey5(key5); + PushMsgEntity pushMsgEntity = new PushMsgEntity(); + // 判断模板id种类 + switch (map.get("template_id").toString()) { + case "qG3Odr74o4BRx8QigZuoiguLNSkw7QJ0zQI3LaHtMY8": + // 推送单种设备消息 + pushClParams(projectInfoEntity, map, pushMsgEntity, energyDataEntity, curDate); + break; + case "qG3Odr74o4BRx8QigZuoil3l3ZC2aAdDeO49robRLC8": + // 推送用电量、用冷量、EER数据 + pushAllParams(projectInfoEntity, map, pushMsgEntity, energyDataEntity); + break; + default: + break; + } wechatService.PushMsg(pushMsgEntity); } } } } + public void pushClParams(ProjectInfoEntity projectInfoEntity, Map map, PushMsgEntity pushMsgEntity, EnergyDataEntity energyDataEntity, String curDate) { + pushMsgEntity.setTouser(map.get("open_id").toString()); + pushMsgEntity.setTemplateId(map.get("template_id").toString()); + pushMsgEntity.setUrl("http://jnd2.mhwsh.net:8765/"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate today = LocalDate.parse(curDate, formatter); + First first = new First(); + first.setValue("设备用量采集结果通知"); + pushMsgEntity.setFirst(first); + Key1 key1 = new Key1(); + key1.setValue(projectInfoEntity.getProjectName()); + pushMsgEntity.setKey1(key1); + Key2 key2 = new Key2(); + // 昨日用量 + key2.setValue(String.valueOf(energyDataEntity.getCl()) + " kwh"); + pushMsgEntity.setKey2(key2); + Key3 key3 = new Key3(); + // 本周用量 + // 获取本周的开始日期(周一) + LocalDate startOfWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)); + // 获取本周的结束日期(周日) + LocalDate endOfWeek = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)); + List energyDataEntities = energyDataService.queryEnergyDataByDateRange(String.valueOf(startOfWeek), String.valueOf(endOfWeek), String.valueOf(projectInfoEntity.getId())); + // 求和 + double sum = energyDataEntities.stream().mapToDouble(EnergyDataEntity::getCl).sum(); + key3.setValue(new BigDecimal(sum).setScale(2, RoundingMode.HALF_UP) + " kwh"); + pushMsgEntity.setKey3(key3); + + Key4 key4 = new Key4(); + // 本月用量 + // 获取当月的开始日期(1号) + LocalDate startOfMonth = today.with(TemporalAdjusters.firstDayOfMonth()); + // 获取当月的结束日期(该月的最后一天) + LocalDate endOfMonth = today.with(TemporalAdjusters.lastDayOfMonth()); + List monDatas = energyDataService.queryEnergyDataByDateRange(String.valueOf(startOfMonth), String.valueOf(endOfMonth), String.valueOf(projectInfoEntity.getId())); + // 求和 + double monthSum = monDatas.stream().mapToDouble(EnergyDataEntity::getCl).sum(); + key4.setValue(new BigDecimal(monthSum).setScale(2, RoundingMode.HALF_UP) + " kwh"); + pushMsgEntity.setKey4(key4); + + Key5 key5 = new Key5(); + key5.setValue(String.valueOf(energyDataEntity.getCurDate())); + pushMsgEntity.setKey5(key5); + } + + + private static void pushAllParams(ProjectInfoEntity projectInfoEntity, Map map, PushMsgEntity pushMsgEntity, EnergyDataEntity energyDataEntity) { + pushMsgEntity.setTouser(map.get("open_id").toString()); + pushMsgEntity.setTemplateId(map.get("template_id").toString()); + pushMsgEntity.setUrl("http://jnd2.mhwsh.net:8765/"); + First first = new First(); + first.setValue("设备用量采集结果通知"); + pushMsgEntity.setFirst(first); + Key1 key1 = new Key1(); + key1.setValue(projectInfoEntity.getProjectName()); + pushMsgEntity.setKey1(key1); + Key2 key2 = new Key2(); + key2.setValue(String.valueOf(energyDataEntity.getElect()) + " kwh"); + pushMsgEntity.setKey2(key2); + Key3 key3 = new Key3(); + key3.setValue(String.valueOf(energyDataEntity.getCl()) + " kwr"); + pushMsgEntity.setKey3(key3); + Key4 key4 = new Key4(); + key4.setValue(String.valueOf(energyDataEntity.getCop()) + " kwr/kwh"); + pushMsgEntity.setKey4(key4); + Key5 key5 = new Key5(); + key5.setValue(String.valueOf(energyDataEntity.getCurDate())); + pushMsgEntity.setKey5(key5); + } + } diff --git a/user-service/src/main/java/com/mh/user/mapper/EnergyDataMapper.java b/user-service/src/main/java/com/mh/user/mapper/EnergyDataMapper.java index 6bd1865..8774b01 100644 --- a/user-service/src/main/java/com/mh/user/mapper/EnergyDataMapper.java +++ b/user-service/src/main/java/com/mh/user/mapper/EnergyDataMapper.java @@ -159,4 +159,23 @@ public interface EnergyDataMapper extends BaseMapper { }) EnergyDataEntity queryEnergyDataByDate(@Param("curDate") String curDate, @Param("projectId") String projectId); + + @Select("select edd.*,pi.project_name from energy_data_day edd " + + " left join project_info pi on edd.project_id = pi.id " + + " where cur_date >= #{startDate} and cur_date <= #{curDate} and project_id = #{projectId} ") + @Results({ + @Result(property = "id", column = "id"), + @Result(property = "curDate", column = "cur_date"), + @Result(property = "ambTemp", column = "amb_temp"), + @Result(property = "humidity", column = "humidity"), + @Result(property = "water", column = "water"), + @Result(property = "elect", column = "elect"), + @Result(property = "cl", column = "cl"), + @Result(property = "cop", column = "cop"), + @Result(property = "projectId", column = "project_id"), + @Result(property = "projectName", column = "project_name") + }) + List queryEnergyDataByDateRange(@Param("startDate") String startDate, + @Param("curDate") String curDate, + @Param("projectId") String projectId); } diff --git a/user-service/src/main/java/com/mh/user/mapper/wechat/WechatMapper.java b/user-service/src/main/java/com/mh/user/mapper/wechat/WechatMapper.java index 0e6bc68..77956ff 100644 --- a/user-service/src/main/java/com/mh/user/mapper/wechat/WechatMapper.java +++ b/user-service/src/main/java/com/mh/user/mapper/wechat/WechatMapper.java @@ -20,6 +20,6 @@ public interface WechatMapper { @Select("select wt.template_id, wui.open_id from wechat_template_project wtp " + " join wechat_template wt on wtp.template_id = wt.id " + " join wechat_user_info wui on wtp.wechat_user_id = wui.id" + - " where wtp.project_id = #{projectId} ") + " where wtp.project_id = #{projectId} and wui.is_status = 1 ") List> queryWechatUser(@Param("projectId") String projectId); } diff --git a/user-service/src/main/java/com/mh/user/service/EnergyDataService.java b/user-service/src/main/java/com/mh/user/service/EnergyDataService.java index 757eae2..a059c9b 100644 --- a/user-service/src/main/java/com/mh/user/service/EnergyDataService.java +++ b/user-service/src/main/java/com/mh/user/service/EnergyDataService.java @@ -16,4 +16,6 @@ public interface EnergyDataService { PageResult queryYoyEnergyData(EnergyModel energyModel); EnergyDataEntity queryEnergyDataByDate(String curDate, String projectId); + + List queryEnergyDataByDateRange(String startDate, String curDate, String projectId); } diff --git a/user-service/src/main/java/com/mh/user/service/impl/EnergyDataServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/EnergyDataServiceImpl.java index effb179..0fe4641 100644 --- a/user-service/src/main/java/com/mh/user/service/impl/EnergyDataServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/impl/EnergyDataServiceImpl.java @@ -342,4 +342,9 @@ public class EnergyDataServiceImpl implements EnergyDataService { public EnergyDataEntity queryEnergyDataByDate(String curDate, String projectId) { return energyDataMapper.queryEnergyDataByDate(curDate, projectId); } + + @Override + public List queryEnergyDataByDateRange(String startDate, String curDate, String projectId) { + return energyDataMapper.queryEnergyDataByDateRange(startDate, curDate, projectId); + } } diff --git a/user-service/src/main/java/com/mh/user/service/wechat/impl/WechatServiceImpl.java b/user-service/src/main/java/com/mh/user/service/wechat/impl/WechatServiceImpl.java index 0ea645a..ce00485 100644 --- a/user-service/src/main/java/com/mh/user/service/wechat/impl/WechatServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/wechat/impl/WechatServiceImpl.java @@ -91,9 +91,24 @@ public class WechatServiceImpl implements WechatService { JSONObject data = new JSONObject(); data.put("first",pushMsgEntity.getFirst()); data.put("thing1",pushMsgEntity.getKey1()); - data.put("character_string2",pushMsgEntity.getKey2()); - data.put("character_string3",pushMsgEntity.getKey3()); - data.put("character_string4",pushMsgEntity.getKey4()); + // 判断模板id属于哪一个,切换对应的参数 + switch (pushMsgEntity.getTemplateId()) { + case "qG3Odr74o4BRx8QigZuoiguLNSkw7QJ0zQI3LaHtMY8": + // 推送单种设备消息 + data.put("character_string7", pushMsgEntity.getKey2()); + data.put("character_string8", pushMsgEntity.getKey3()); + data.put("character_string9", pushMsgEntity.getKey4()); + break; + case "qG3Odr74o4BRx8QigZuoil3l3ZC2aAdDeO49robRLC8": + // 推送用电量、用冷量、EER数据 + data.put("character_string2", pushMsgEntity.getKey2()); + data.put("character_string3", pushMsgEntity.getKey3()); + data.put("character_string4", pushMsgEntity.getKey4()); + break; + default: + break; + + } data.put("time5",pushMsgEntity.getKey5()); data.put("remark",pushMsgEntity.getRemark()); jsonObject.put("data",data);