bug修复
This commit is contained in:
parent
76b0fe6282
commit
9a64889d07
@ -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;
|
||||
|
||||
@ -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<String, Object> map = new HashMap<>(4);
|
||||
map.put("state", 0);
|
||||
map.put("pageSize", "1");
|
||||
map.put("pageNum", "1");
|
||||
// 获取所有
|
||||
List<ElectricalDev> 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<Project> projectList = projectMapper.selectList(new LambdaQueryWrapper<Project>()
|
||||
.ne(Project::getXiwonUrl, "")
|
||||
.isNotNull(Project::getXiwonUrl)
|
||||
.ne(Project::getXiwonAppId, "")
|
||||
.isNotNull(Project::getXiwonAppId)
|
||||
.ne(Project::getXiwonAppSecret, "")
|
||||
.isNotNull(Project::getXiwonAppSecret)
|
||||
);
|
||||
for (Project project : projectList) {
|
||||
// 请求参数
|
||||
Map<String, Object> map = new HashMap<>(4);
|
||||
map.put("state", 0);
|
||||
map.put("pageSize", "1");
|
||||
map.put("pageNum", "1");
|
||||
// 获取所有
|
||||
List<ElectricalDev> devList = electricalDevService.list(new LambdaQueryWrapper<ElectricalDev>().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<String, Object> map, ElectricalDev dev) {
|
||||
private boolean doGetElectricRealTimeData(Map<String, Object> map, ElectricalDev dev, Project project) {
|
||||
// 设备sn
|
||||
String devSn = dev.getDevSn();
|
||||
ElectricalData newestData = electricalDataMapper.selectOne(new LambdaQueryWrapper<ElectricalData>().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()) {
|
||||
|
||||
@ -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> T postForm(String url, Map<String, Object> map, Class<T> returnClass, Supplier supplier) {
|
||||
public <T> T postForm(String url, String xiwonAppId, String xiwonAppSecret, Map<String, Object> map, Class<T> 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<Map<String, Object>> requestEntity = new HttpEntity<>(requestHeaders);
|
||||
if (supplier != null) {
|
||||
|
||||
@ -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/
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user