1.国网工具类提交

This commit is contained in:
wr
2023-12-07 16:34:21 +08:00
parent 1490ead1ca
commit df070093c5
7 changed files with 205 additions and 39 deletions

View File

@@ -69,6 +69,11 @@
<groupId>com.nimbusds</groupId>
<artifactId>nimbus-jose-jwt</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csb.sdk</groupId>
<artifactId>http-client</artifactId>
<version>1.1.5.11</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,59 @@
package com.njcn.web.enums;
/**
* @Description: 上送枚举
* @Author: wr
* @Date: 2023/12/7 10:53
*/
public enum GWSendEnum {
//接收电能质量基准水平评估数据接口
EVALUATION("pqEvaluationCreate", "/WMCenter/powerQuality/evaluation/create"),
//接收电能质量典型源荷指标统计数据接口
TYPICAL_SOURCE("pqTypicalSourceCreate", "/WMCenter/powerQuality/typicalSource/create"),
//接收电能质量风电场台账数据接口
WIND_CREATE("pqArchivalInformationWindCreate", "/WMCenter/powerQuality/archivalInformation/windCreate"),
//接收电能质量光伏电站台账数据接口
PHOTOVOLTAIC_CREATE("pqArchivalInformationPhotovoltaicCreate", "/WMCenter/powerQuality/archivalInformation/photovoltaicCreate"),
//接收电能质量重要、敏感用户台账数据接口
SENSITIVE_USER_CREATE("pqArchivalInformationSensitiveUserCreate", "/WMCenter/powerQuality/archivalInformation/sensitiveUserCreate"),
//接收电能质量牵引站台账数据接口
TRACTION_STATION("pqTractionStationCreate", "/WMCenter/powerQuality/tractionStation/create"),
//接收电能质量监测点台账数据接口
MONITOR("pqMonitorCreate", "/WMCenter/powerQuality/monitor/create"),
//接收电能质量监测点限值台账数据接口
LIMIT_CREATE("pqMonitorLimitCreate", "/WMCenter/powerQuality/monitor/limitCreate"),
//接收电能质量主配网监测点统计数据接口
STATISTICAL_CREATE("pqMonitorStatisticalCreate", "/WMCenter/powerQuality/monitor/statisticalCreate"),
//接收电能质量换流站指标汇总统计数据接口
INDEX_CREATE("pqConverterMonitorIndexCreate", "/WMCenter/powerQuality/converterMonitor/indexCreate"),
//接收电能质量换流站指标统计明细数据接口
DETAIL_CREATE("pqConverterMonitorDetailCreate", "/WMCenter/powerQuality/converterMonitor/detailCreate"),
//接收电能质量变电站监测统计数据接口
SUBSTATION_MONITOR("pqSubstationMonitorCreate", "/WMCenter/powerQuality/substationMonitor/create"),
//2.4.1.21接收其他干扰用户台账数据接口
OTHER_USER_CREATE("pqArchivalInformationOtherUserCreate", "/WMCenter/powerQuality/archivalInformation/otherUserCreate"),
;
private final String serviceName;
private final String url;
GWSendEnum(String serviceName, String url) {
this.serviceName = serviceName;
this.url = url;
}
public String getServiceName() {
return serviceName;
}
public String getUrl() {
return "http://dwzyywzt-pms3-proxy.com/CSB" + url;
}
}

View File

@@ -0,0 +1,27 @@
package com.njcn.web.pojo.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author wr
* @description
* @date 2023/7/28 9:47
*/
@Data
public class SendParam {
@ApiModelProperty(value = "省id")
private String provinceId="13B9B47F1E483324E05338297A0A0595";
@ApiModelProperty(value = "密钥")
private String secretKey="lW2xr6zKjbaqVDOSgQpcGrM6Rg0=";
@ApiModelProperty(value = "统计日期")
private String statisticalDate;
@ApiModelProperty(value = "上报参数")
private List stats;
}

View File

@@ -0,0 +1,103 @@
package com.njcn.web.utils;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.csb.sdk.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.web.pojo.param.SendParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author wr
* @description
* @date 2023/12/6 13:59
*/
@Slf4j
public class GwSendUtil {
private static final String GWURL = "dwzyywzt-pms3-proxy.com";
private static final String CODE = "13B9B47F1E483324E05338297A0A0595";
/**
*
* @param param 上报入参数据
* @param url 上报地址 例如http://dwzyywzt-pms3-proxy.com/CSB/WMCenter/powerQuality/plan/create
* @param serviceName 例如pqPlanCreate
* @return
*/
public static Map<String, String> send(SendParam param, String url, String serviceName) {
Map<String, String> map = new LinkedHashMap<>();
try {
ContentBody cb;
if (ObjectUtil.isNull(param)) {
cb = new ContentBody("");
} else {
String s = JSONObject.toJSONStringWithDateFormat(param, JSON.DEFFAULT_DATE_FORMAT);
log.info(Thread.currentThread().getName() + "1.信息:" + s);
cb = new ContentBody(s);
}
//ContentBody传递要求使用post方式进行调用
//如果需要传递请求参数 可以拼接到请求URL中或者设置paramsMap参数由SDK内部进行拼接
HttpParameters.Builder builder = HttpParameters.newBuilder();
builder.requestURL(url) // 设置请求的URL,可以拼接URL请求参数
.api("zongbuSync") // 设置服务名
.version("1.0.0") // 设置版本号
.method("post") // 设置调用方式, 必须为 post
.contentType("application/json; charset=UTF-8") //设置请求content-type
.accessKey("7d4cb2c0afb5468ca56e0654b1a442ef").secretKey("lW2xr6zKjbaqVDOSgQpcGrM6Rg0=");// 设置accessKey 和 设置secretKey
builder.contentBody(cb);
String token = LoginToken();
builder.putHeaderParamsMap("x-token", token);
builder.putHeaderParamsMap("serviceName", serviceName);
//进行调用,返回结果
try {
HttpReturn ret = HttpCaller.invokeReturn(builder.build());
String responseStr = ret.getResponseStr();//获取响应的文本串
map.put("succeed", responseStr);
} catch (HttpCallerException e) {
// error process
log.info(Thread.currentThread().getName() + "错误信息:" + e);
map.put("error", e.toString());
}
} catch (Exception e) {
map.put("error", "当前时间段国网上送请求过多,请稍后再试");
}
return map;
}
/**
* 获取token
* @return
*/
public static String LoginToken() {
String token;
String clientId = "942a9278671711eda2e10ae0b5517f6c";
String clientSecret = "3Psd2VEhsA3dVsSPHW0ll5r/03kAqlA2P4w2IiWPA8UWSadcX0we2wffjyTUYGsK";
String userUrl = "http://" + GWURL + "/psr-auth/oauth/accessToken?grant_type={grant_type}&client_id={client_id}&client_secret={client_secret}";
Map<String, String> map = new HashMap<>();
map.put("grant_type", "credentials");
map.put("client_id", clientId);
map.put("client_secret", clientSecret);
ResponseEntity<Map> userEntity = RestTemplateUtil.get(userUrl, Map.class, map);
if (userEntity.getStatusCodeValue() == 200) {
log.info(Thread.currentThread().getName() + "数据:" + userEntity.getBody() + "结束----");
//获取返回体
Map body = userEntity.getBody();
token = body.get("access_token").toString();
} else {
throw new BusinessException("获取数据token出现未知异常请检查ip端口是否正确");
}
return token;
}
}

View File

@@ -13,5 +13,6 @@ import java.util.List;
public class SendParam {
private String provinceId;
private String secretKey="lW2xr6zKjbaqVDOSgQpcGrM6Rg0=";
private List stats;
}

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@@ -55,12 +56,14 @@ public class SupvFile {
private String uploaderName;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime uploadTime;
@ApiModelProperty("上传人id")
private String uploaderId;
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@ApiModelProperty("0.未上送 1.已上送 2.取消上送")

View File

@@ -59,6 +59,7 @@ import java.util.stream.Stream;
public class SupvPushGwServiceImpl implements SupvPushGwService {
private final SupvPlanMapper supvPlanMapper;
private final ISupvPlanService iSupvPlanService;
private final SupvProblemMapper supvProblemMapper;
@@ -418,45 +419,12 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
if (count > 0) {
throw new BusinessException("请选择已上送计划");
}
List<SupvPlan> supvPlanList = new ArrayList<>();
for (String id : planIds) {
SupvPlan supvPlan = new SupvPlan();
supvPlan.setPlanId(id);
supvPlan.setDeleteFlag(null);
supvPlanList.add(supvPlan);
}
//TODO
SendParam param = new SendParam();
param.setStats(supvPlanList);
param.setProvinceId(code);
String s = JSONObject.toJSONStringWithDateFormat(param, JSON.DEFFAULT_DATE_FORMAT);
log.info(Thread.currentThread().getName() + "获取返回体 删除电能质量技术监督工作计划接口数据:" + s + "结束----");
Map<String, String> send = send(param, getUrl(6), "pqPlanDelete");
log.info(Thread.currentThread().getName() + "获取返回体 删除电能质量技术监督工作计划接口响应结果:" + send + "结束----");
if (send.containsKey("succeed")) {
String succeed = send.get("succeed");
if (succeed.indexOf("\\\"") != -1) {
succeed = succeed.replace("\\\"", "\"");
}
Map map = JSON.parseObject(succeed, Map.class);
String status = map.get("status").toString();
if ("000000".equals(status)) {
for (SupvPlan supvPlan : supvPlanList) {
supvPlanMapper.updateId(2, supvPlan.getPlanId());
}
String result = map.get("result").toString();
Map mapCount = JSON.parseObject(result, Map.class);
String countNum = mapCount.get("count").toString();
return "操作成功:成功数据" + countNum + "";
} else {
String errors = map.get("errors").toString();
throw new BusinessException("操作失败:" + status + "_" + errors);
}
} else {
throw new BusinessException("当前时间段国网上送请求过多,请稍后再试");
}
iSupvPlanService.update(new LambdaUpdateWrapper<SupvPlan>()
.set(SupvPlan::getDeleteFlag, 1)
.set(SupvPlan::getDeleteTime, LocalDateTime.now())
.in(SupvPlan::getPlanId, planIds)
);
return this.pushPlan(planIds);
}
@Override