From 9a64889d0765c3e24fa682c4eebe7ad6734def3f Mon Sep 17 00:00:00 2001 From: guo Date: Tue, 2 Jan 2024 18:35:40 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xmgl/modules/project/entity/Project.java | 8 ++- .../com/zhgd/xmgl/task/ElectricalTask.java | 56 ++++++++++++------- .../java/com/zhgd/xmgl/util/XiwonUtil.java | 17 ++---- .../application-gsx-other-env-show.properties | 2 + src/main/resources/application.properties | 8 --- 5 files changed, 51 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java b/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java index 70ae47ad3..6d55f9ff8 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java @@ -267,7 +267,13 @@ public class Project implements Serializable { private String jzgProjectCode; @ApiModelProperty(value = "金筑工访问host") private String jzgHost; - @ApiModelProperty(value = "'携稳扬尘url'") + @ApiModelProperty(value = "携稳url") + private String xiwonUrl; + /** + * 弃用,使用xiwonUrl + */ + @Deprecated + @ApiModelProperty(value = "携稳扬尘url") private String xiwonDustUrl; @ApiModelProperty(value = "'携稳的appId'") private String xiwonAppId; diff --git a/src/main/java/com/zhgd/xmgl/task/ElectricalTask.java b/src/main/java/com/zhgd/xmgl/task/ElectricalTask.java index eb95b4fff..fe46e1d61 100644 --- a/src/main/java/com/zhgd/xmgl/task/ElectricalTask.java +++ b/src/main/java/com/zhgd/xmgl/task/ElectricalTask.java @@ -4,11 +4,14 @@ import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.zhgd.xmgl.modules.electrical.entity.ElectricalData; import com.zhgd.xmgl.modules.electrical.entity.ElectricalDev; import com.zhgd.xmgl.modules.electrical.mapper.ElectricalDataMapper; import com.zhgd.xmgl.modules.electrical.service.IElectricalDataService; import com.zhgd.xmgl.modules.electrical.service.IElectricalDevService; +import com.zhgd.xmgl.modules.project.entity.Project; +import com.zhgd.xmgl.modules.project.mapper.ProjectMapper; import com.zhgd.xmgl.util.XiwonUtil; import lombok.extern.slf4j.Slf4j; import net.javacrumbs.shedlock.core.SchedulerLock; @@ -35,17 +38,20 @@ import java.util.concurrent.CompletableFuture; */ @Slf4j @Component +@RestController public class ElectricalTask { @Resource private IElectricalDataService electricalDataService; @Resource private ElectricalDataMapper electricalDataMapper; + @Resource + private ProjectMapper projectMapper; @Resource private IElectricalDevService electricalDevService; - @Value("${xiwon.postElectricRealTimeData:}") - private String postElectricRealTimeData; + @Value("${xiwon.url:}") + private String url; @Resource private XiwonUtil xiwonUtil; @@ -55,37 +61,49 @@ public class ElectricalTask { */ @SchedulerLock(name = "getElectricRealTimeData", lockAtMostFor = 1000 * 60 * 5, lockAtLeastFor = 1000 * 60 * 3) @Scheduled(cron = "0 0/5 * * * ?") + @GetMapping("/task/getElectricRealTimeData") public void getElectricRealTimeData() { - if (StringUtils.isNotBlank(postElectricRealTimeData)) { - // 请求参数 - Map map = new HashMap<>(4); - map.put("state", 0); - map.put("pageSize", "1"); - map.put("pageNum", "1"); - // 获取所有 - List devList = electricalDevService.list(); - devList.forEach(dev -> CompletableFuture.supplyAsync(() -> { - return doGetElectricRealTimeData(map, dev); - }).exceptionally(throwable -> { - log.error("err:", throwable); - return null; - }) + log.info("获取最新电量使用情况 每5分钟触发任务"); + if (StringUtils.isNotBlank(url)) { + List projectList = projectMapper.selectList(new LambdaQueryWrapper() + .ne(Project::getXiwonUrl, "") + .isNotNull(Project::getXiwonUrl) + .ne(Project::getXiwonAppId, "") + .isNotNull(Project::getXiwonAppId) + .ne(Project::getXiwonAppSecret, "") + .isNotNull(Project::getXiwonAppSecret) ); + for (Project project : projectList) { + // 请求参数 + Map map = new HashMap<>(4); + map.put("state", 0); + map.put("pageSize", "1"); + map.put("pageNum", "1"); + // 获取所有 + List devList = electricalDevService.list(new LambdaQueryWrapper().eq(ElectricalDev::getProjectSn, project.getProjectSn())); + devList.forEach(dev -> CompletableFuture.supplyAsync(() -> { + return doGetElectricRealTimeData(map, dev, project); + }).exceptionally(throwable -> { + log.error("err:", throwable); + return null; + }) + ); + } } } - private boolean doGetElectricRealTimeData(Map map, ElectricalDev dev) { + private boolean doGetElectricRealTimeData(Map map, ElectricalDev dev, Project project) { // 设备sn String devSn = dev.getDevSn(); ElectricalData newestData = electricalDataMapper.selectOne(new LambdaQueryWrapper().eq(ElectricalData::getDevSn, devSn).orderByDesc(ElectricalData::getUploadTime).last("limit 1")); // 请求携稳的接口 - JSONObject realTimeData = xiwonUtil.postForm(postElectricRealTimeData, map, JSONObject.class, (() -> { + JSONObject realTimeData = xiwonUtil.postForm(url + "electric/realTimeData", project.getXiwonAppId(), project.getXiwonAppSecret(), map, JSONObject.class, (() -> { if (newestData != null && newestData.getXiewenId() != null) { map.put("dataId", newestData.getXiewenId()); } return map.put("deviceSn", devSn); })); - log.info("携稳接口响应数据(配电箱):{}", realTimeData); + log.info("携稳接口响应数据(配电箱):{}", JSONArray.toJSONString(realTimeData)); Integer code = realTimeData.getInteger("code"); // code校验是否成功请求 if (code == HttpStatus.OK.value()) { diff --git a/src/main/java/com/zhgd/xmgl/util/XiwonUtil.java b/src/main/java/com/zhgd/xmgl/util/XiwonUtil.java index 27e3768f1..67bdf4945 100644 --- a/src/main/java/com/zhgd/xmgl/util/XiwonUtil.java +++ b/src/main/java/com/zhgd/xmgl/util/XiwonUtil.java @@ -4,7 +4,6 @@ import cn.hutool.core.map.MapUtil; import cn.hutool.crypto.SecureUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -26,26 +25,20 @@ import java.util.function.Supplier; @Slf4j public class XiwonUtil { - @Value("${xiwon.appId}") - private String appId; - - @Value("${xiwon.appSecret}") - private String appSecret; - @Autowired RestTemplate restTemplate; - public String getToken(long requestTime) { - return SecureUtil.md5(appId + appSecret + requestTime); + public String getToken(long requestTime, String xiwonAppId, String xiwonAppSecret) { + return SecureUtil.md5(xiwonAppId + xiwonAppSecret + requestTime); } - public T postForm(String url, Map map, Class returnClass, Supplier supplier) { + public T postForm(String url, String xiwonAppId, String xiwonAppSecret, Map map, Class returnClass, Supplier supplier) { HttpHeaders requestHeaders = new HttpHeaders(); - requestHeaders.set("appId", appId); + requestHeaders.set("appId", xiwonAppId); long currentTimeMillis = System.currentTimeMillis(); requestHeaders.set("requestTime", currentTimeMillis + ""); - requestHeaders.set("sign", getToken(currentTimeMillis)); + requestHeaders.set("sign", getToken(currentTimeMillis, xiwonAppId, xiwonAppSecret)); requestHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED); HttpEntity> requestEntity = new HttpEntity<>(requestHeaders); if (supplier != null) { diff --git a/src/main/resources/application-gsx-other-env-show.properties b/src/main/resources/application-gsx-other-env-show.properties index 914a99dff..3050834de 100644 --- a/src/main/resources/application-gsx-other-env-show.properties +++ b/src/main/resources/application-gsx-other-env-show.properties @@ -104,3 +104,5 @@ xiwon.appSecret=b6162078-6f1c-4f2c-8cd5-0873f45199b2 jld_push_url= #桥梁生产记录二维码url bridgeProduceQrCodeUrl=http://192.168.34.173:8082/#/ +#携稳url,最后带斜杠 +xiwon.url=http://openapi.xiwon588.com/ diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 42c410939..c8a5ce3c1 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -136,14 +136,6 @@ management.endpoints.enabled-by-default=true management.endpoints.web.base-path=/actuator management.endpoint.health.show-details=always management.endpoint.logfile.external-file=logs/logs/zhgd-all.log -# 携稳电箱获取最后一条数据 -xiwon.postElectricRealTimeData=http://openapi.xiwon588.com/electric/realTimeData -# 携稳密钥 -#xiwon.appId=1638947489842 -#xiwon.appSecret=36e0a5cf-02e6-421b-bf92-3b1ace11e1a2 -# 正式 -xiwon.appId=1672383573694 -xiwon.appSecret=5dfe1664-51fd-40af-8fbb-a15bbcaae1d1 # 光伏发电客户信息 koyoe.clientId=btxny koyoe.secret=akdu5sar7w