From 28daba40af144cf8141d5786124d3bbdfc93ea54 Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Fri, 1 Nov 2024 11:41:29 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=B8=9A=E5=8A=A1=E4=B8=AD=E5=8F=B0=E5=8F=98?= =?UTF-8?q?=E7=94=B5=E7=AB=99=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DisPhotovoltaicController.java | 14 ++ .../mapper/PmsSubstationMapper.java | 16 ++ .../njcn/jbsyncdata/pojo/PmsSubstation.java | 113 +++++++++ .../njcn/jbsyncdata/pojo/YWZTSubstation.java | 235 ++++++++++++++++++ .../service/IPmsSubstationService.java | 18 ++ .../impl/PmsSubstationServiceImpl.java | 121 +++++++++ 6 files changed, 517 insertions(+) create mode 100644 src/main/java/com/njcn/jbsyncdata/mapper/PmsSubstationMapper.java create mode 100644 src/main/java/com/njcn/jbsyncdata/pojo/PmsSubstation.java create mode 100644 src/main/java/com/njcn/jbsyncdata/pojo/YWZTSubstation.java create mode 100644 src/main/java/com/njcn/jbsyncdata/service/IPmsSubstationService.java create mode 100644 src/main/java/com/njcn/jbsyncdata/service/impl/PmsSubstationServiceImpl.java diff --git a/src/main/java/com/njcn/jbsyncdata/controller/DisPhotovoltaicController.java b/src/main/java/com/njcn/jbsyncdata/controller/DisPhotovoltaicController.java index bca250f..acb9907 100644 --- a/src/main/java/com/njcn/jbsyncdata/controller/DisPhotovoltaicController.java +++ b/src/main/java/com/njcn/jbsyncdata/controller/DisPhotovoltaicController.java @@ -8,6 +8,7 @@ import com.alibaba.excel.EasyExcel; import com.njcn.jbsyncdata.pojo.*; import com.njcn.jbsyncdata.service.DisPhotovoltaicService; import com.njcn.jbsyncdata.service.IBusinessService; +import com.njcn.jbsyncdata.service.IPmsSubstationService; import com.njcn.jbsyncdata.util.RestTemplateUtil; import com.njcn.jbsyncdata.util.StreamUtil; import io.swagger.annotations.Api; @@ -17,6 +18,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -40,6 +42,7 @@ public class DisPhotovoltaicController { private final IBusinessService businessService; private final DisPhotovoltaicService disPhotovoltaicService; + private final IPmsSubstationService substationService; /** * @param date yyyy-MM-dd @@ -246,6 +249,17 @@ public class DisPhotovoltaicController { } return "数据导入失败"; } + + @ApiOperation(value = "业务中台") + @GetMapping("/addYwZtSubstation") + public String addYwZtSubstation(String distribution, String psrType) { + Boolean aBoolean = substationService.addYwZtSubstation(distribution,psrType); + if (aBoolean) { + return "数据导入成功"; + } + return "数据导入失败"; + } + @Scheduled(cron = "0 30 0 * * ?") public void insert() { log.error(Thread.currentThread().getName(),"1.定时器启动----!"); diff --git a/src/main/java/com/njcn/jbsyncdata/mapper/PmsSubstationMapper.java b/src/main/java/com/njcn/jbsyncdata/mapper/PmsSubstationMapper.java new file mode 100644 index 0000000..449682c --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/mapper/PmsSubstationMapper.java @@ -0,0 +1,16 @@ +package com.njcn.jbsyncdata.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.jbsyncdata.pojo.PmsSubstation; + +/** + *

+ * Mapper 接口 + *

+ * + * @author wr + * @since 2024-08-07 + */ +public interface PmsSubstationMapper extends BaseMapper { + +} diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/PmsSubstation.java b/src/main/java/com/njcn/jbsyncdata/pojo/PmsSubstation.java new file mode 100644 index 0000000..123d5da --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/pojo/PmsSubstation.java @@ -0,0 +1,113 @@ +package com.njcn.jbsyncdata.pojo; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author wr + * @since 2024-08-07 + */ +@Getter +@Setter +@TableName("pq_ywzt_substation") +public class PmsSubstation { + + private static final long serialVersionUID = 1L; + + /** + * 变电站序号 + */ + @TableId + private String id; + + /** + * 所属地市 + */ + private String orgId; + + /** + * 数据类型zf01:变电站 zf05:电厂 + */ + private String type; + + /** + * 运维单位 + */ + private String operationName; + + /** + * 电站名称 + */ + private String name; + + /** + * 电压等级Id,字典表 + */ + private String scale; + + /** + * 电压等级名称 + */ + private String scaleName; + + /** + * 维护班组 + */ + private String maintenanceName; + + /** + * 设备状态 + */ + private String runStatus; + + /** + * 设备编码 + */ + private String deviceCoding; + + /** + * 投运日期 + */ + private LocalDateTime runTime; + + /** + * 经度 + */ + private BigDecimal lng; + + /** + * 纬度 + */ + private BigDecimal lat; + + + /** + * 创建用户 + */ + private String createBy; + + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新用户 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/YWZTSubstation.java b/src/main/java/com/njcn/jbsyncdata/pojo/YWZTSubstation.java new file mode 100644 index 0000000..fb02c92 --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/pojo/YWZTSubstation.java @@ -0,0 +1,235 @@ +package com.njcn.jbsyncdata.pojo; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author wr + * @description + * @date 2024/8/28 14:55 + */ +@NoArgsConstructor +@Data +public class YWZTSubstation { + + @JsonProperty("errors") + private String errors; + @JsonProperty("message") + private String message; + @JsonProperty("result") + private ResultDTO result; + @JsonProperty("status") + private String status; + + @NoArgsConstructor + @Data + public static class ResultDTO { + @JsonProperty("zf01") + private Zf01DTO zf01; + + @NoArgsConstructor + @Data + public static class Zf01DTO { + @JsonProperty("current") + private Integer current; + @JsonProperty("pages") + private Integer pages; + @JsonProperty("records") + private List records; + @JsonProperty("size") + private Integer size; + @JsonProperty("total") + private Integer total; + + @NoArgsConstructor + @Data + public static class RecordsDTO { + @JsonProperty("assets") + private List assets; + @JsonProperty("distribution") + private Integer distribution; + @JsonProperty("id") + private String id; + @JsonProperty("modelId") + private String modelId; + @JsonProperty("resource") + private ResourceDTO resource; + + @NoArgsConstructor + @Data + public static class ResourceDTO { + @JsonProperty("maintOrg") + private String maintOrg; + @JsonProperty("stationType") + private String stationType; + @JsonProperty("voltageLevelName") + private String voltageLevelName;// FIXME check this code + @JsonProperty("contaminationLevelName") + private String contaminationLevelName;// FIXME check this code + @JsonProperty("dispatchMonitor") + private String dispatchMonitor; + @JsonProperty("fireAcceptance") + private String fireAcceptance; + @JsonProperty("type") + private String type; + @JsonProperty("pubPrivFlagName") + private String pubPrivFlagName;// FIXME check this code + @JsonProperty("arrangement") + private String arrangement; + @JsonProperty("regionalismName") + private String regionalismName;// FIXME check this code + @JsonProperty("coverArea") + private Double coverArea; + @JsonProperty("isTelecontrol") + private String isTelecontrol; + @JsonProperty("isRural") + private String isRural; + @JsonProperty("isRuralName") + private String isRuralName;// FIXME check this code + @JsonProperty("ctime") + private String ctime; + @JsonProperty("geoPositon") + private String geoPositon; + @JsonProperty("isSmartStationName") + private String isSmartStationName;// FIXME check this code + @JsonProperty("dutyModeName") + private String dutyModeName;// FIXME check this code + @JsonProperty("stationCapacity") + private Double stationCapacity; + @JsonProperty("isAvcName") + private String isAvcName;// FIXME check this code + @JsonProperty("equipmentOwner") + private String equipmentOwner; + @JsonProperty("arrangementName") + private String arrangementName;// FIXME check this code + @JsonProperty("importantLevelName") + private String importantLevelName;// FIXME check this code + @JsonProperty("psrId") + private String psrId; + @JsonProperty("telephone") + private String telephone; + @JsonProperty("dispatchJurisdiction") + private String dispatchJurisdiction; + @JsonProperty("isFirtsName") + private String isFirtsName;// FIXME check this code + @JsonProperty("isN1Name") + private String isN1Name;// FIXME check this code + @JsonProperty("astId") + private String astId; + @JsonProperty("isSmartStation") + private String isSmartStation; + @JsonProperty("isLoadStation") + private String isLoadStation; + @JsonProperty("maintOrgName") + private String maintOrgName;// FIXME check this code + @JsonProperty("dispatchName") + private String dispatchName; + @JsonProperty("name") + private String name; + @JsonProperty("isAvc") + private String isAvc; + @JsonProperty("isLoadStationName") + private String isLoadStationName;// FIXME check this code + @JsonProperty("isGis") + private String isGis; + @JsonProperty("hisCrestStage") + private Double hisCrestStage; + @JsonProperty("isMultiStationIntegration") + private String isMultiStationIntegration; + @JsonProperty("lastUpdateTime") + private String lastUpdateTime; + @JsonProperty("dispatchPermission") + private String dispatchPermission; + @JsonProperty("psrState") + private String psrState; + @JsonProperty("regionalism") + private String regionalism; + @JsonProperty("city") + private String city; + @JsonProperty("importance") + private String importance; + @JsonProperty("isRemoteIntellpatrol") + private String isRemoteIntellpatrol; + @JsonProperty("isCentralMonitor") + private String isCentralMonitor; + @JsonProperty("dispatchOperation") + private String dispatchOperation; + @JsonProperty("highestDispatchJurisdiction") + private String highestDispatchJurisdiction; + @JsonProperty("importanceName") + private String importanceName;// FIXME check this code + @JsonProperty("runDevName") + private String runDevName; + @JsonProperty("fireTypeName") + private String fireTypeName;// FIXME check this code + @JsonProperty("psrStateName") + private String psrStateName;// FIXME check this code + @JsonProperty("startTime") + private String startTime; + @JsonProperty("pubPrivFlag") + private String pubPrivFlag; + @JsonProperty("isCentralMonitorName") + private String isCentralMonitorName;// FIXME check this code + @JsonProperty("transformerQuantity") + private Integer transformerQuantity; + @JsonProperty("hisLargestRainfall") + private Double hisLargestRainfall; + @JsonProperty("fireAcceptanceName") + private String fireAcceptanceName;// FIXME check this code + @JsonProperty("address") + private String address; + @JsonProperty("maintGroupName") + private String maintGroupName;// FIXME check this code + @JsonProperty("maintGroup") + private String maintGroup; + @JsonProperty("importantLevel") + private String importantLevel; + @JsonProperty("isGisName") + private String isGisName;// FIXME check this code + @JsonProperty("contaminationLevel") + private String contaminationLevel; + @JsonProperty("cityName") + private String cityName;// FIXME check this code + @JsonProperty("isJunctionStationName") + private String isJunctionStationName;// FIXME check this code + @JsonProperty("voltageLevel") + private String voltageLevel; + @JsonProperty("isFirts") + private String isFirts; + @JsonProperty("fireType") + private String fireType; + @JsonProperty("dutyMode") + private String dutyMode; + @JsonProperty("isJunctionStation") + private String isJunctionStation; + @JsonProperty("stationTypeName") + private String StationTypeName;// FIXME check this code + @JsonProperty("equipmentOwnerName") + private String equipmentOwnerName;// FIXME check this code + @JsonProperty("isFloodImportance") + private String isFloodImportance; + @JsonProperty("isN1") + private String isN1; + } + + @NoArgsConstructor + @Data + public static class AssetsDTO { + @JsonProperty("astId") + private String astId; + @JsonProperty("stationType") + private String stationType; + @JsonProperty("stationTypeName") + private String stationTypeName;// FIXME check this code + @JsonProperty("ctime") + private String ctime; + @JsonProperty("lastUpdateTime") + private String lastUpdateTime; + } + } + } + } +} diff --git a/src/main/java/com/njcn/jbsyncdata/service/IPmsSubstationService.java b/src/main/java/com/njcn/jbsyncdata/service/IPmsSubstationService.java new file mode 100644 index 0000000..1fafde7 --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/service/IPmsSubstationService.java @@ -0,0 +1,18 @@ +package com.njcn.jbsyncdata.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.jbsyncdata.pojo.PmsSubstation; + +/** + *

+ * 服务类 + *

+ * + * @author wr + * @since 2024-08-07 + */ +public interface IPmsSubstationService extends IService { + + + Boolean addYwZtSubstation(String distribution, String psrType); +} diff --git a/src/main/java/com/njcn/jbsyncdata/service/impl/PmsSubstationServiceImpl.java b/src/main/java/com/njcn/jbsyncdata/service/impl/PmsSubstationServiceImpl.java new file mode 100644 index 0000000..102838b --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/service/impl/PmsSubstationServiceImpl.java @@ -0,0 +1,121 @@ +package com.njcn.jbsyncdata.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.jbsyncdata.component.TokenComponent; +import com.njcn.jbsyncdata.mapper.DictDataMapper; +import com.njcn.jbsyncdata.mapper.PmsSubstationMapper; +import com.njcn.jbsyncdata.pojo.DictData; +import com.njcn.jbsyncdata.pojo.PmsSubstation; +import com.njcn.jbsyncdata.pojo.YWZTSubstation; +import com.njcn.jbsyncdata.pojo.result.TokenResult; +import com.njcn.jbsyncdata.service.IPmsSubstationService; +import com.njcn.jbsyncdata.util.RestTemplateUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author wr + * @since 2024-08-07 + */ +@Service +@RequiredArgsConstructor +public class PmsSubstationServiceImpl extends ServiceImpl implements IPmsSubstationService { + + private final DictDataMapper dictDataMapper; + + private final TokenComponent tokenComponent; + + @Override + public Boolean addYwZtSubstation(String distribution, String psrType) { + //数据中心(电压等级) + List devVoltage = dictDataMapper.selectList("Dev_Voltage_Stand"); + TokenResult tokenWithRestTemplate = tokenComponent.getTokenWithRestTemplate(); + if (null == tokenWithRestTemplate) { + log.error("token信息获取失败"); + return false; + } + RestTemplateUtil restTemplateUtil = new RestTemplateUtil(); + JSONObject param = new JSONObject(); + JSONObject params = new JSONObject(); + List paramList = new ArrayList<>(); + param.put("distribution", distribution); + param.put("psrType", psrType); + param.put("params", params); + //当前页数 + params.put("current", "1"); + //每页数据量 + params.put("size", "2000"); + cn.hutool.json.JSONObject filter = JSONUtil.createObj(); + params.put("fieldName", ""); + params.put("compare", ""); + params.put("fieldValue", ""); + paramList.add(filter); + params.put("filters", paramList); + //组装好json开始发送请求 + Map headers = new HashMap<>(); + headers.put("x-token", tokenWithRestTemplate.getAccess_token()); + + ResponseEntity post = restTemplateUtil.post(tokenComponent.getUrl().concat("/PSRCenter/queryServices/listPropertiesByFilters"), headers, param, String.class); + String body = post.getBody().replaceAll("#", "").replaceAll(psrType, "zf01"); + YWZTSubstation ywztSubstation = JSONObject.parseObject(body, YWZTSubstation.class); + YWZTSubstation.ResultDTO.Zf01DTO zf01 = ywztSubstation.getResult().getZf01(); + List records = zf01.getRecords(); + List info = new ArrayList<>(); + for (YWZTSubstation.ResultDTO.Zf01DTO.RecordsDTO record : records) { + YWZTSubstation.ResultDTO.Zf01DTO.RecordsDTO.ResourceDTO resource = record.getResource(); + + PmsSubstation substation = new PmsSubstation(); + substation.setId(record.getId()); + substation.setOrgId(resource.getCity()); + substation.setOperationName(resource.getCityName()); + substation.setType(psrType); + substation.setName(resource.getName()); + substation.setScale(getAlgoDescribe(resource.getVoltageLevel(), devVoltage)); + substation.setScaleName(resource.getVoltageLevelName()); + substation.setMaintenanceName(resource.getMaintGroupName()); + substation.setRunStatus(resource.getPsrStateName()); + substation.setRunTime(LocalDateTimeUtil.parse(resource.getCtime(), "yyyy-MM-dd HH:mm:ss")); + //经纬度 + String geoPositon = resource.getGeoPositon(); + String[] split = geoPositon.split(","); + substation.setLng(new BigDecimal(split[0])); + substation.setLat(new BigDecimal(split[1])); + substation.setCreateTime(LocalDateTime.now()); + substation.setUpdateTime(LocalDateTime.now()); + info.add(substation); + } + + System.out.println(info); + return this.saveOrUpdateBatch(info); + } + + public String getAlgoDescribe(String name, List dictData) { + if (StrUtil.isNotBlank(name)) { + List dictDataList = dictData.stream().filter(x -> x.getAlgoDescribe() == Integer.valueOf(name)).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(dictDataList)) { + return dictDataList.get(0).getId(); + } + } + return name; + } +}