diff --git a/user-service/src/main/java/com/mh/user/dto/PushAiDTO.java b/user-service/src/main/java/com/mh/user/dto/PushAiDTO.java new file mode 100644 index 0000000..1e75083 --- /dev/null +++ b/user-service/src/main/java/com/mh/user/dto/PushAiDTO.java @@ -0,0 +1,64 @@ +package com.mh.user.dto; + +import java.util.StringJoiner; + +/** + * @author LJF + * @version 1.0 + * @project mh_esi + * @description 推送给王工AI数据 + * @date 2026-04-02 09:38:05 + */ +public class PushAiDTO { + + private String curDate; + + private Double cl; + + private String projectId; + + private String projectName; + + public String getCurDate() { + return curDate; + } + + public void setCurDate(String curDate) { + this.curDate = curDate; + } + + public Double getCl() { + return cl; + } + + public void setCl(Double cl) { + this.cl = cl; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + @Override + public String toString() { + return new StringJoiner(", ", PushAiDTO.class.getSimpleName() + "[", "]") + .add("curDate='" + curDate + "'") + .add("cl=" + cl) + .add("projectId='" + projectId + "'") + .add("projectName='" + projectName + "'") + .toString(); + } + +} diff --git a/user-service/src/main/java/com/mh/user/job/PushDataToAIJob.java b/user-service/src/main/java/com/mh/user/job/PushDataToAIJob.java new file mode 100644 index 0000000..b1cb99a --- /dev/null +++ b/user-service/src/main/java/com/mh/user/job/PushDataToAIJob.java @@ -0,0 +1,65 @@ +package com.mh.user.job; + +import cn.hutool.core.date.DateUtil; +import com.mh.user.dto.PushAiDTO; +import com.mh.user.service.EnergyDataService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.time.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestClientException; +import org.springframework.web.client.RestTemplate; + +import java.util.Date; +import java.util.List; + +/** + * @author LJF + * @version 1.0 + * @project mh_esi + * @description 推送数据给王工AI进行数据分析 + * @date 2026-04-02 08:54:43 + */ +@Slf4j +@Component +public class PushDataToAIJob { + + @Autowired + private EnergyDataService energyDataService; + +// @Scheduled(cron = " 0 10 0/1 * * ? ") + public void pushDataToAIJob(){ + log.info("推送数据给王工 AI 进行数据分析"); + // 获取最近时间一个小时数据 + // 获取前两小时前的时间 + Date date = new Date(); + Date date1 = DateUtils.addHours(date, -3); + String dateStr = DateUtil.format(date1, "yyyy-MM-dd HH"); + List list = energyDataService.queryPushAI(dateStr,"14"); + // http 方式请求接口发送 + String url = "http://192.168.1.222:8766/AIDataPush"; + RestTemplate restTemplate = new RestTemplate(); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + postData(url, restTemplate, headers, list); + List list2 = energyDataService.queryPushAI(dateStr,"15"); + postData(url, restTemplate, headers, list2); + } + + private void postData(String url, RestTemplate restTemplate, HttpHeaders headers, List list2) { + HttpEntity> request2 = new HttpEntity<>(list2, headers); + ResponseEntity response2 = null; + try { + response2 = restTemplate.postForEntity(url, request2, String.class); + } catch (RestClientException e) { + log.info("推送结果:{}", e.getMessage()); + throw new RuntimeException(e); + } + log.info("推送结果:{}", response2.getBody()); + } +} 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 8774b01..395e6af 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 @@ -2,6 +2,7 @@ package com.mh.user.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mh.user.dto.EnergyMomYoyDataDTO; +import com.mh.user.dto.PushAiDTO; import com.mh.user.entity.EnergyDataEntity; import com.mh.user.mapper.provider.EnergyDataProvider; import org.apache.ibatis.annotations.*; @@ -178,4 +179,20 @@ public interface EnergyDataMapper extends BaseMapper { List queryEnergyDataByDateRange(@Param("startDate") String startDate, @Param("curDate") String curDate, @Param("projectId") String projectId); + + @Select("select " + + " edh.cur_date, " + + " edh.cl, " + + " edh.project_id, " + + " pi.project_name " + + "from " + + " energy_data_hour edh " + + "join project_info pi on " + + " edh.project_id = pi.id " + + "where " + + " edh.project_id = #{projectId} " + + " and edh.cur_date = #{dateStr} " + + "order by " + + " edh.cur_date ") + List queryPushAI(String dateStr, 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 a059c9b..16c0778 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 @@ -1,6 +1,7 @@ package com.mh.user.service; import com.mh.common.page.PageResult; +import com.mh.user.dto.PushAiDTO; import com.mh.user.entity.EnergyDataEntity; import com.mh.user.model.EnergyModel; import java.util.List; @@ -18,4 +19,6 @@ public interface EnergyDataService { EnergyDataEntity queryEnergyDataByDate(String curDate, String projectId); List queryEnergyDataByDateRange(String startDate, String curDate, String projectId); + + List queryPushAI(String dateStr, String projectId); } diff --git a/user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java index f7344bb..f7e99dc 100644 --- a/user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java @@ -95,11 +95,17 @@ public class DataResultServiceImpl implements DataResultService { data.setDeviceType(dataResultEntity.getDeviceType()); //设备类型 String curDate = sdf1.format(dataResultEntity.getCurDate()); data.setCurDate(sdf1.parse(curDate));//当前日期 - data.setCurValue(dataResultEntity.getCurValue()); //当前读数 + BigDecimal lastValue = meterManageEntity.getCurValue(); //安装基表上次读数 + if (dataResultEntity.getCurValue().compareTo(meterManageEntity.getCurValue()) > 0) { + data.setCurValue(dataResultEntity.getCurValue()); //当前读数 + data.setLastValue(lastValue);//上次读数 + } else { + data.setCurValue(meterManageEntity.getCurValue()); + data.setLastValue(dataResultEntity.getCurValue()); + } data.setProjectId(String.valueOf(meterManageEntity.getProjectId())); //楼栋编号 data.setRatio(BigDecimal.valueOf(meterManageEntity.getMtRatio())); //倍率 - BigDecimal lastValue = meterManageEntity.getCurValue(); //安装基表上次读数 - BigDecimal calcValue = dataResultEntity.getCurValue().subtract(lastValue); //计算用量 + BigDecimal calcValue = dataResultEntity.getCurValue().subtract(lastValue).abs(); //计算用量 data.setCalcValue(calcValue);//用量 if (meterManageEntity.getCurTime() != null) {//上次抄表日期 String lastDate = sdf1.format(meterManageEntity.getCurTime()); @@ -108,7 +114,6 @@ public class DataResultServiceImpl implements DataResultService { String lastDate = sdf1.format(date); data.setLastDate(sdf1.parse(lastDate)); } - data.setLastValue(lastValue);//上次读数 data.setGrade(dataResultEntity.getGrade());//级别 data.setRegisterAddr(dataResultEntity.getRegisterAddr()); data.setRegisterName(dataResultEntity.getRegisterName()); 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 9a42196..a233f5f 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 @@ -7,6 +7,7 @@ import com.mh.common.page.PageRequest; import com.mh.common.page.PageResult; import com.mh.common.utils.StringUtils; import com.mh.user.dto.EnergyMomYoyDataDTO; +import com.mh.user.dto.PushAiDTO; import com.mh.user.entity.DataResultChEntity; import com.mh.user.entity.EnergyDataEntity; import com.mh.user.mapper.EnergyDataMapper; @@ -23,6 +24,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.YearMonth; import java.time.format.DateTimeFormatter; +import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; @@ -411,4 +413,9 @@ public class EnergyDataServiceImpl implements EnergyDataService { public List queryEnergyDataByDateRange(String startDate, String curDate, String projectId) { return energyDataMapper.queryEnergyDataByDateRange(startDate, curDate, projectId); } + + @Override + public List queryPushAI(String dateStr, String projectId) { + return energyDataMapper.queryPushAI(dateStr, projectId); + } } diff --git a/user-service/src/main/java/com/mh/user/strategy/EleProtocolStrategy.java b/user-service/src/main/java/com/mh/user/strategy/EleProtocolStrategy.java index 356428d..ee5648d 100644 --- a/user-service/src/main/java/com/mh/user/strategy/EleProtocolStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/EleProtocolStrategy.java @@ -174,7 +174,7 @@ public class EleProtocolStrategy implements ProtocolStrategy { * @param dataStr */ public void analysisMeterOrder485(final String dataStr, final DeviceCodeParamEntity deviceCodeParam) { - threadPoolService.execute(() -> { +// threadPoolService.execute(() -> { Date date = new Date(); String dateStr = sdf1.format(date); try { @@ -194,7 +194,7 @@ public class EleProtocolStrategy implements ProtocolStrategy { } catch (Exception e) { log.error("保存电表数据失败!", e); } - }); +// }); } } diff --git a/user-service/src/main/resources/application-prod.yml b/user-service/src/main/resources/application-prod.yml index 221c48b..3e26610 100644 --- a/user-service/src/main/resources/application-prod.yml +++ b/user-service/src/main/resources/application-prod.yml @@ -5,7 +5,7 @@ spring: name: jnd-user-service datasource: #添加allowMultiQueries=true 在批量更新时才不会出错 - url: jdbc:sqlserver://111.230.50.186:32012;DatabaseName=mh_jnd2;allowMultiQueries=true + url: jdbc:sqlserver://127.0.0.1:32012;DatabaseName=mh_jnd2;allowMultiQueries=true driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver username: jnd password: Mh@803tech diff --git a/user-service/src/main/resources/application.yml b/user-service/src/main/resources/application.yml index b7332e0..8883e2d 100644 --- a/user-service/src/main/resources/application.yml +++ b/user-service/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: dev + active: prod servlet: multipart: max-file-size: 50MB diff --git a/user-service/src/test/java/com/mh/user/UserServiceApplicationTests.java b/user-service/src/test/java/com/mh/user/UserServiceApplicationTests.java index a83a0d8..48ad4e5 100644 --- a/user-service/src/test/java/com/mh/user/UserServiceApplicationTests.java +++ b/user-service/src/test/java/com/mh/user/UserServiceApplicationTests.java @@ -2,6 +2,7 @@ package com.mh.user; import com.mh.user.entity.DeviceManageEntity; import com.mh.user.entity.GaugeEntity; +import com.mh.user.job.PushDataToAIJob; import com.mh.user.service.chillers.DealDataService; import com.mh.user.service.chillers.DeviceManageService; import com.mh.user.service.chillers.GaugeService; @@ -25,6 +26,14 @@ class UserServiceApplicationTests { @Autowired private DealDataService dealDataService; + @Autowired + private PushDataToAIJob pushDataToAIJob; + + @Test + public void testPushAi() { + pushDataToAIJob.pushDataToAIJob(); + } + @Test public void testDealData() { try {