1.台账数据导入

2.pom文件调整
This commit is contained in:
wr
2023-10-10 20:04:11 +08:00
parent fc4080bf41
commit d627337c84
22 changed files with 1035 additions and 13 deletions

33
pom.xml
View File

@@ -156,6 +156,33 @@
<!-- </exclusion>--> <!-- </exclusion>-->
<!-- </exclusions>--> <!-- </exclusions>-->
<!-- </dependency>--> <!-- </dependency>-->
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>com.github.jeffreyning</groupId>
<artifactId>mybatisplus-plus</artifactId>
<version>1.7.3-RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId> <artifactId>easyexcel</artifactId>
@@ -171,6 +198,12 @@
<dependency> <dependency>
<groupId>com.njcn</groupId> <groupId>com.njcn</groupId>
<artifactId>influxdb-springboot-starter</artifactId> <artifactId>influxdb-springboot-starter</artifactId>
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <groupId>com.njcn</groupId>-->
<!-- <artifactId>common-core</artifactId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>

View File

@@ -1,9 +1,11 @@
package com.njcn.jbsyncdata; package com.njcn.jbsyncdata;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication @MapperScan("com.njcn.**.mapper")
@SpringBootApplication(scanBasePackages = "com.njcn")
public class JbSyncdataApplication { public class JbSyncdataApplication {
public static void main(String[] args) { public static void main(String[] args) {

View File

@@ -5,22 +5,21 @@ import com.alibaba.excel.EasyExcel;
import com.njcn.jbsyncdata.pojo.DisPhotovoltaic10Excel; import com.njcn.jbsyncdata.pojo.DisPhotovoltaic10Excel;
import com.njcn.jbsyncdata.pojo.DisPhotovoltaic380Excel; import com.njcn.jbsyncdata.pojo.DisPhotovoltaic380Excel;
import com.njcn.jbsyncdata.pojo.ExcelData; import com.njcn.jbsyncdata.pojo.ExcelData;
import com.njcn.jbsyncdata.service.DisPhotovoltaicService;
import com.njcn.jbsyncdata.service.IBusinessService; import com.njcn.jbsyncdata.service.IBusinessService;
import com.njcn.jbsyncdata.util.StreamUtil; import com.njcn.jbsyncdata.util.StreamUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -36,6 +35,7 @@ import java.util.stream.Collectors;
public class DisPhotovoltaicController { public class DisPhotovoltaicController {
private final IBusinessService businessService; private final IBusinessService businessService;
private final DisPhotovoltaicService disPhotovoltaicService;
@ApiOperation(value = "获取10kv分布式光伏接入情况") @ApiOperation(value = "获取10kv分布式光伏接入情况")
@PostMapping("/import10") @PostMapping("/import10")
@@ -71,7 +71,35 @@ public class DisPhotovoltaicController {
} }
@ApiOperation(value = "导入10kv分布式光伏接入情况", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@PostMapping("/import10KV")
public void import10(MultipartFile file, HttpServletResponse response) throws Exception {
List<DisPhotovoltaic10Excel> list = EasyExcel.read(file.getInputStream())
.head(DisPhotovoltaic10Excel.class)
.headRowNumber(2)
.sheet(2).doReadSync();
list = list.stream()
.filter(t -> StrUtil.isNotBlank(t.getGenerationUserID()))
.filter(t -> StrUtil.isNotBlank(t.getStageID()))
.filter(StreamUtil.distinctByKey(DisPhotovoltaic10Excel::getGenerationUserID))
.collect(Collectors.toList());
disPhotovoltaicService.SavaPmsPowerGenerationUser10KV(list, response);
} }
@ApiOperation(value = "导入380kv分布式光伏接入情况", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@PostMapping("/import380KV")
public void import380KV(MultipartFile file, HttpServletResponse response) throws Exception {
List<DisPhotovoltaic380Excel> list = EasyExcel.read(file.getInputStream())
.head(DisPhotovoltaic380Excel.class)
.headRowNumber(1)
.sheet(0).doReadSync();
list = list.stream()
.filter(t -> StrUtil.isNotBlank(t.getGenerationUserID()))
.filter(t -> StrUtil.isNotBlank(t.getStageID()))
.filter(StreamUtil.distinctByKey(DisPhotovoltaic380Excel::getGenerationUserID))
.collect(Collectors.toList());
disPhotovoltaicService.SavaPmsPowerGenerationUser380KV(list, response);
System.out.println();
}
}

View File

@@ -0,0 +1,24 @@
package com.njcn.jbsyncdata.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.jbsyncdata.pojo.Dept;
import com.njcn.jbsyncdata.pojo.DictData;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hongawen
* @since 2021-12-13
*/
public interface DictDataMapper extends BaseMapper<DictData> {
List<DictData> selectList(@Param("code") String code);
DictData selectByCode(@Param("dataCode") String dataCode,@Param("typeCode") String typeCode);
List<Dept> selectUserList();
}

View File

@@ -0,0 +1,18 @@
package com.njcn.jbsyncdata.mapper;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.jbsyncdata.pojo.PmsPowerGenerationUser;
/**
* <p>
* 发电用户台账 Mapper 接口
* </p>
*
* @author wr
* @since 2023-10-09
*/
public interface PmsPowerGenerationUserMapper extends MppBaseMapper<PmsPowerGenerationUser> {
}

View File

@@ -0,0 +1,16 @@
package com.njcn.jbsyncdata.mapper;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.jbsyncdata.pojo.PmsStatationStat;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wr
* @since 2023-10-10
*/
public interface PmsStatationStatMapper extends MppBaseMapper<PmsStatationStat> {
}

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.jbsyncdata.mapper.DictDataMapper">
<select id="selectList" resultType="com.njcn.jbsyncdata.pojo.DictData">
SELECT sys_dict_data.*
FROM sys_dict_data sys_dict_data,
sys_dict_type sys_dict_type
WHERE sys_dict_data.type_id = sys_dict_type.id
AND sys_dict_type.code = #{code}
order by sort
</select>
<select id="selectUserList" resultType="com.njcn.jbsyncdata.pojo.Dept">
select * from sys_dept where state = 1 order by sort
</select>
<select id="selectByCode" resultType="com.njcn.jbsyncdata.pojo.DictData">
SELECT sys_dict_data.*
FROM sys_dict_data sys_dict_data,
sys_dict_type sys_dict_type
WHERE sys_dict_data.type_id = sys_dict_type.id
and sys_dict_data.code = #{dataCode}
and sys_dict_type.code = #{typeCode}
and sys_dict_data.state = 1
</select>
</mapper>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.jbsyncdata.mapper.PmsPowerGenerationUserMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.jbsyncdata.mapper.PmsStatationStatMapper">
</mapper>

View File

@@ -0,0 +1,73 @@
package com.njcn.jbsyncdata.pojo;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
* @author hongawen
* @since 2021-12-13
*/
@Data
@TableName("sys_dept")
public class Dept {
private static final long serialVersionUID = 1L;
/**
* 部门表Id
*/
private String id;
/**
* 父节点Id(0为根节点)
*/
private String pid;
/**
* 上层所有节点Id
*/
private String pids;
/**
* 部门名称
*/
private String name;
/**
* 部门编号
*/
private String code;
/**
* 专项分析类型区分
*/
private Integer specialType;
/**
* sys_Area行政区域Id自定义部门无需填写部门
*/
private String area;
/**
* 部门类型 0-非自定义1-web自定义2-App自定义3-web测试
*/
private Integer type;
/**
* 排序
*/
private Integer sort;
/**
* 部门描述
*/
private String remark;
/**
* 部门状态 0-删除1-正常;默认正常
*/
private Integer state;
}

View File

@@ -0,0 +1,62 @@
package com.njcn.jbsyncdata.pojo;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
*
* @author hongawen
* @since 2021-12-13
*/
@Data
@TableName("sys_dict_data")
public class DictData {
private static final long serialVersionUID = 1L;
/**
* 字典数据表Id
*/
private String id;
/**
* 字典类型表Id
*/
private String typeId;
/**
* 名称
*/
private String name;
/**
* 编码
*/
private String code;
/**
* 排序
*/
private Integer sort;
/**
* 事件等级0-普通1-中等2-严重(默认为0)
*/
private Integer level;
/**
* 与高级算法内部Id描述对应
*/
private Integer algoDescribe;
/**
* 目前只用于表示电压等级数值
*/
private String value;
/**
* 状态0-删除 1-正常
*/
private Integer state;
}

View File

@@ -1,10 +1,10 @@
package com.njcn.jbsyncdata.pojo; package com.njcn.jbsyncdata.pojo;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
/** /**
* @author wr * @author wr
@@ -12,8 +12,15 @@ import java.math.BigDecimal;
* @date 2023/9/26 15:28 * @date 2023/9/26 15:28
*/ */
@Data @Data
@ColumnWidth(30)
public class DisPhotovoltaic10Excel implements Serializable { public class DisPhotovoltaic10Excel implements Serializable {
@ExcelProperty(value = "错误信息")
private String errorMessage;
@ExcelProperty(value = "序号")
private String serialNumber;
@ExcelProperty(value = "市单位") @ExcelProperty(value = "市单位")
private String orgName; private String orgName;
@@ -45,7 +52,7 @@ public class DisPhotovoltaic10Excel implements Serializable {
private String wayConsumption; private String wayConsumption;
@ExcelProperty(value = "合同容量") @ExcelProperty(value = "合同容量")
private BigDecimal contractCapacity; private Float contractCapacity;
@ExcelProperty(value = "行业类别") @ExcelProperty(value = "行业类别")
private String industryType; private String industryType;

View File

@@ -1,6 +1,7 @@
package com.njcn.jbsyncdata.pojo; package com.njcn.jbsyncdata.pojo;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
@@ -12,8 +13,15 @@ import java.math.BigDecimal;
* @date 2023/9/26 15:28 * @date 2023/9/26 15:28
*/ */
@Data @Data
@ColumnWidth(30)
public class DisPhotovoltaic380Excel implements Serializable { public class DisPhotovoltaic380Excel implements Serializable {
@ExcelProperty(value = "错误信息")
private String errorMessage;
@ExcelProperty(value = "序号")
private String serialNumber;
@ExcelProperty(value = "市单位") @ExcelProperty(value = "市单位")
private String orgName; private String orgName;
@@ -44,7 +52,7 @@ public class DisPhotovoltaic380Excel implements Serializable {
private String wayConsumption; private String wayConsumption;
@ExcelProperty(value = "合同容量") @ExcelProperty(value = "合同容量")
private BigDecimal contractCapacity; private Float contractCapacity;
@ExcelProperty(value = "电压等级") @ExcelProperty(value = "电压等级")
private String Voltage_Level; private String Voltage_Level;

View File

@@ -0,0 +1,127 @@
package com.njcn.jbsyncdata.pojo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 发电用户台账
* </p>
*
* @author wr
* @since 2023-10-09
*/
@Data
@TableName("pms_power_generation_user")
@ApiModel(value = "PmsPowerGenerationUser对象", description = "发电用户台账")
public class PmsPowerGenerationUser{
private static final long serialVersionUID = 1L;
@ApiModelProperty("用户编号")
@TableId("Id")
private String id;
@ApiModelProperty("用户名称")
@TableField("Name")
private String name;
@ApiModelProperty("组织机构名称")
@TableField("Org_Name")
private String orgName;
@ApiModelProperty("组织机构ID(外键)")
@TableField("Org_Id")
private String orgId;
@ApiModelProperty("运维单位名称")
@TableField("Operation_Name")
private String operationName;
@ApiModelProperty("运维单位ID(外键)")
@TableField("Operation_Id")
private String operationId;
@ApiModelProperty("电源类别(字典)")
@TableField("Power_Category")
private String powerCategory;
@ApiModelProperty("电站类型(字典)")
@TableField("Power_Station_Type")
private String powerStationType;
@ApiModelProperty("发电方式(字典)")
@TableField("Power_Generation_Mode")
private String powerGenerationMode;
@ApiModelProperty("并网电压等级(字典)")
@TableField("Voltage_Level")
private String voltageLevel;
@ApiModelProperty("总装机容量")
@TableField("Source_Capacity")
private Float sourceCapacity;
@ApiModelProperty("并网日期")
@TableField("Connection_Date")
private LocalDate connectionDate;
@ApiModelProperty("能源消纳方式(字典)")
@TableField("Connection_Mode")
private String connectionMode;
@ApiModelProperty("客户状态(字典)")
@TableField("Gc_Stat")
private String gcStat;
@ApiModelProperty("供电变电站(外键)")
@TableField("Power_Station_Id")
private String powerStationId;
@ApiModelProperty("供电线路(外键)")
@TableField("Line_Id")
private String lineId;
@ApiModelProperty("供电台区(外键)")
@TableField("Platform_Id")
private String platformId;
@ApiModelProperty("用户标签")
@TableField("User_Tag")
private String userTag;
@ApiModelProperty("是否是上送国网监测点,0-否 1-是")
@TableField("Is_Up_To_Grid")
private Integer isUpToGrid;
@ApiModelProperty("数据状态0-删除1-正常; ")
@TableField("Status")
private Integer status;
@ApiModelProperty("创建用户")
@TableField("Create_By")
private String createBy;
@ApiModelProperty("创建时间")
@TableField("Create_Time")
private LocalDateTime createTime;
@ApiModelProperty("更新用户")
@TableField("Update_By")
private String updateBy;
@ApiModelProperty("更新时间")
@TableField("Update_Time")
private LocalDateTime updateTime;
/**
* 数据状态0-10kv1-380kv
*/
private Integer inputStatus;
}

View File

@@ -0,0 +1,80 @@
package com.njcn.jbsyncdata.pojo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
*
* </p>
*
* @author wr
* @since 2023-10-10
*/
@Getter
@Setter
@TableName("pms_statation_stat")
@ApiModel(value = "PmsStatationStat对象", description = "")
public class PmsStatationStat {
private static final long serialVersionUID = 1L;
@ApiModelProperty("电站编号")
@TableId("Power_Id")
private String powerId;
@ApiModelProperty("电站名称")
@TableField("Power_Name")
private String powerName;
@ApiModelProperty("组织机构id")
@TableField("Org_Id")
private String orgId;
@TableField("Org_Name")
private String orgName;
@ApiModelProperty("应设点数量")
@TableField("Should_Be_Num")
private Integer shouldBeNum;
@ApiModelProperty("电压等级(字典)")
@TableField("Voltage_Level")
private String voltageLevel;
@ApiModelProperty("经度")
@TableField("Longitude")
private Double longitude;
@ApiModelProperty("纬度")
@TableField("Latitude")
private Double latitude;
@ApiModelProperty("数据状态0-删除1-正常; ")
@TableField("Status")
private Integer status;
@ApiModelProperty("创建用户")
@TableField("Create_By")
private String createBy;
@ApiModelProperty("创建时间")
@TableField("Create_Time")
private LocalDateTime createTime;
@ApiModelProperty("更新用户")
@TableField("Update_By")
private String updateBy;
@ApiModelProperty("更新时间")
@TableField("Update_Time")
private LocalDateTime updateTime;
}

View File

@@ -1,12 +1,34 @@
package com.njcn.jbsyncdata.service; package com.njcn.jbsyncdata.service;
import com.njcn.jbsyncdata.pojo.DisPhotovoltaic10Excel;
import com.njcn.jbsyncdata.pojo.DisPhotovoltaic380Excel;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/** /**
* @author wr * @author wr
* @description * @description
* @date 2023/9/26 16:09 * @date 2023/9/26 16:09
*/ */
public class DisPhotovoltaicService { public interface DisPhotovoltaicService {
/**
* @param list
* @param response
* @Description: 10KV导入
* @Author: wr
* @Date: 2023/10/10 16:01
*/
void SavaPmsPowerGenerationUser10KV(List<DisPhotovoltaic10Excel> list, HttpServletResponse response);
/**
* @param list
* @param response
* @Description: 380kv导入
* @Author: wr
* @Date: 2023/10/10 16:01
*/
void SavaPmsPowerGenerationUser380KV(List<DisPhotovoltaic380Excel> list, HttpServletResponse response);
} }

View File

@@ -0,0 +1,16 @@
package com.njcn.jbsyncdata.service;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.jbsyncdata.pojo.PmsPowerGenerationUser;
/**
* <p>
* 发电用户台账 服务类
* </p>
*
* @author wr
* @since 2023-10-09
*/
public interface IPmsPowerGenerationUserService extends IMppService<PmsPowerGenerationUser> {
}

View File

@@ -0,0 +1,16 @@
package com.njcn.jbsyncdata.service;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.jbsyncdata.pojo.PmsStatationStat;
/**
* <p>
* 服务类
* </p>
*
* @author wr
* @since 2023-10-10
*/
public interface IPmsStatationStatService extends IMppService<PmsStatationStat> {
}

View File

@@ -1,11 +1,418 @@
package com.njcn.jbsyncdata.service.impl; package com.njcn.jbsyncdata.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.jbsyncdata.mapper.DictDataMapper;
import com.njcn.jbsyncdata.pojo.*;
import com.njcn.jbsyncdata.service.DisPhotovoltaicService; import com.njcn.jbsyncdata.service.DisPhotovoltaicService;
import com.njcn.jbsyncdata.service.IPmsPowerGenerationUserService;
import com.njcn.jbsyncdata.service.IPmsStatationStatService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* @author wr * @author wr
* @description * @description
* @date 2023/9/26 16:10 * @date 2023/9/26 16:10
*/ */
public class DisPhotovoltaicServiceImpl extends DisPhotovoltaicService { @Service
@RequiredArgsConstructor
@Slf4j
public class DisPhotovoltaicServiceImpl implements DisPhotovoltaicService {
private final IPmsPowerGenerationUserService iPmsPowerGenerationUserService;
private final DictDataMapper dictDataMapper;
private final IPmsStatationStatService iPmsStatationStatService;
@Override
public void SavaPmsPowerGenerationUser10KV(List<DisPhotovoltaic10Excel> list, HttpServletResponse response) {
List<PmsPowerGenerationUser> info = new ArrayList<>();
List<DisPhotovoltaic10Excel> errorInfo = new ArrayList<>();
//电源类别
DictData powerCategory = dictDataMapper.selectByCode("Distributed_Power", "Power_Category");
//客户状态
DictData dictData = dictDataMapper.selectByCode("Normal_Power", "Ecc_Stat");
//电站类型
DictData powerStationType = dictDataMapper.selectByCode("Village_Level", "Power_Station_Type");
//发电方式
DictData powerGenerationMode = dictDataMapper.selectByCode("Pho_Power", "Power_Generation");
//消纳方式
List<DictData> connection_mode = dictDataMapper.selectList("Connection_Mode");
//电压等级
List<DictData> dev_voltage = dictDataMapper.selectList("Dev_Voltage");
//获取部门信息
List<Dept> depts = dictDataMapper.selectUserList();
//导入变电站数据
add(list, dev_voltage);
PmsPowerGenerationUser user;
List<PmsStatationStat> oldList = iPmsStatationStatService.list(
new LambdaQueryWrapper<PmsStatationStat>()
.eq(PmsStatationStat::getStatus, 1)
);
Map<String, PmsStatationStat> oldSubMap = oldList.stream()
.collect(Collectors.toMap(x -> x.getPowerName() + "_" + x.getOrgName(), Function.identity()));
for (DisPhotovoltaic10Excel excel : list) {
if (StrUtil.hasBlank(excel.getStageID(),
excel.getLineID()
)
) {
excel.setErrorMessage("线路/台区编号不能为空");
errorInfo.add(excel);
continue;
}
//todo 变电站未知
String replace = excel.getCounty().replace("国网冀北", "")
.replace("唐山市","")
.replace("双桥","双桥区")
.replace("古冶","古冶供电中心")
.replace("张家口","国网张家口")
.replace("国网昌黎县供电公司","昌黎县供电公司")
.replace("有限","")
.replace("","");
PmsStatationStat sub = getSub(excel.getPowerSupply() + "_" + replace, oldSubMap);
if (ObjectUtil.isNull(sub)) {
excel.setErrorMessage("部门信息不存在");
errorInfo.add(excel);
continue;
}
user = new PmsPowerGenerationUser();
user.setId(excel.getGenerationUserID());
user.setName(excel.getGenerationUserName());
//todo 部门信息
user.setOrgName("国网" + excel.getOrgName());
user.setOrgId(getDeptCode("国网" + excel.getOrgName(), depts).getCode());
user.setOperationName(user.getOrgName());
user.setOperationId(user.getOrgId());
//todo 电源类别(分布式电源)
user.setPowerCategory(powerCategory.getId());
//todo 电站类型(村级)
user.setPowerStationType(powerStationType.getId());
//todo 发电方式未知
user.setPowerGenerationMode(powerGenerationMode.getId());
//todo 电压等级(需要转换)
user.setVoltageLevel(getVoltage(excel.getVoltage_Level(), dev_voltage));
user.setSourceCapacity(excel.getContractCapacity());
DateTime dateTime = DateUtil.parseDate(excel.getConnectionDate());
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = dateTime.toInstant().atZone(zoneId).toLocalDateTime();
user.setConnectionDate(localDateTime.toLocalDate());
user.setConnectionMode(getAlgoDescribe(excel.getWayConsumption(), connection_mode));
user.setGcStat(dictData.getId());
user.setPowerStationId(sub.getPowerId());
user.setLineId(excel.getLineID());
user.setPlatformId(excel.getStageID());
user.setUserTag("发电用户");
user.setIsUpToGrid(1);
user.setStatus(1);
user.setCreateTime(LocalDateTime.now());
user.setUpdateTime(LocalDateTime.now());
user.setInputStatus(0);
info.add(user);
}
if (CollUtil.isNotEmpty(info)) {
LambdaQueryWrapper<PmsPowerGenerationUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(PmsPowerGenerationUser::getInputStatus, 0);
iPmsPowerGenerationUserService.remove(lambdaQueryWrapper);
iPmsPowerGenerationUserService.saveOrUpdateBatch(info, 1000);
}
if (CollUtil.isNotEmpty(errorInfo)) {
exportExcel(LocalDateTime.now() + "错误信息.xlsx", errorInfo,DisPhotovoltaic10Excel.class, response);
}
}
@Override
public void SavaPmsPowerGenerationUser380KV(List<DisPhotovoltaic380Excel> list, HttpServletResponse response) {
List<PmsPowerGenerationUser> info = new ArrayList<>();
List<DisPhotovoltaic380Excel> errorInfo = new ArrayList<>();
//电源类别
DictData powerCategory = dictDataMapper.selectByCode("Distributed_Power", "Power_Category");
//客户状态
DictData dictData = dictDataMapper.selectByCode("Normal_Power", "Ecc_Stat");
//电站类型
DictData powerStationType = dictDataMapper.selectByCode("Village_Level", "Power_Station_Type");
//发电方式
DictData powerGenerationMode = dictDataMapper.selectByCode("Pho_Power", "Power_Generation");
//消纳方式
List<DictData> connection_mode = dictDataMapper.selectList("Connection_Mode");
//电压等级
List<DictData> dev_voltage = dictDataMapper.selectList("Dev_Voltage");
//获取部门信息
List<Dept> depts = dictDataMapper.selectUserList();
//导入变电站数据
addSub(list, dev_voltage);
PmsPowerGenerationUser user;
List<PmsStatationStat> oldList = iPmsStatationStatService.list(
new LambdaQueryWrapper<PmsStatationStat>()
.eq(PmsStatationStat::getStatus, 1)
);
Map<String, PmsStatationStat> oldSubMap = oldList.stream()
.collect(Collectors.toMap(x -> x.getPowerName() + "_" + x.getOrgName(), Function.identity()));
for (DisPhotovoltaic380Excel excel : list) {
if (StrUtil.hasBlank(excel.getStageID(),
excel.getLineID(),
excel.getConnectionDate()
)
) {
excel.setErrorMessage("并网时间/线路/台区编号不能为空");
errorInfo.add(excel);
continue;
}
//todo 变电站未知
String replace = subString(excel.getCounty());
PmsStatationStat sub = getSub(excel.getPowerSupply() + "_" + replace, oldSubMap);
if (ObjectUtil.isNull(sub)) {
excel.setErrorMessage("部门信息不存在");
errorInfo.add(excel);
continue;
}
user = new PmsPowerGenerationUser();
user.setId(excel.getGenerationUserID());
user.setName(excel.getGenerationUserName());
//todo 部门信息
user.setOrgName(replace);
user.setOrgId(getDeptCode(replace, depts).getCode());
user.setOperationName(user.getOrgName());
user.setOperationId(user.getOrgId());
//todo 电源类别(分布式电源)
user.setPowerCategory(powerCategory.getId());
//todo 电站类型(村级)
user.setPowerStationType(powerStationType.getId());
//todo 发电方式未知
user.setPowerGenerationMode(powerGenerationMode.getId());
//todo 电压等级(需要转换)
user.setVoltageLevel(get380Voltage(excel.getVoltage_Level(), dev_voltage));
user.setSourceCapacity(excel.getContractCapacity());
DateTime dateTime = DateUtil.parseDate(excel.getConnectionDate());
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = dateTime.toInstant().atZone(zoneId).toLocalDateTime();
user.setConnectionDate(localDateTime.toLocalDate());
user.setConnectionMode(getAlgoDescribe(excel.getWayConsumption(), connection_mode));
user.setGcStat(dictData.getId());
user.setPowerStationId(sub.getPowerId());
user.setLineId(excel.getLineID());
user.setPlatformId(excel.getStageID());
user.setUserTag("发电用户");
user.setIsUpToGrid(1);
user.setStatus(1);
user.setCreateTime(LocalDateTime.now());
user.setUpdateTime(LocalDateTime.now());
user.setInputStatus(1);
info.add(user);
}
if (CollUtil.isNotEmpty(info)) {
LambdaQueryWrapper<PmsPowerGenerationUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(PmsPowerGenerationUser::getInputStatus, 1);
iPmsPowerGenerationUserService.remove(lambdaQueryWrapper);
iPmsPowerGenerationUserService.saveBatch(info, 1000);
}
if (CollUtil.isNotEmpty(errorInfo)) {
exportExcel(LocalDateTime.now() + "错误信息.xlsx", errorInfo,DisPhotovoltaic380Excel.class, response);
}
}
public String getAlgoDescribe(String name, List<DictData> dictData) {
List<DictData> dictDataList = dictData.stream().filter(x -> x.getName().indexOf(name) != -1).collect(Collectors.toList());
if (CollUtil.isNotEmpty(dictDataList)) {
return dictDataList.get(0).getId();
}
return "";
}
public String getVoltage(String name, List<DictData> dictData) {
List<DictData> dictDataList = dictData.stream().filter(x -> x.getName().indexOf(name) != -1
&& x.getName().length() == name.length() + 2
).collect(Collectors.toList());
if (CollUtil.isNotEmpty(dictDataList)) {
return dictDataList.get(0).getId();
}
return "";
}
public String get380Voltage(String name, List<DictData> dictData) {
List<DictData> dictDataList = dictData.stream().filter(x -> x.getName().equals(name)).collect(Collectors.toList());
if (CollUtil.isNotEmpty(dictDataList)) {
return dictDataList.get(0).getId();
}
return "";
}
//变电站查询
public PmsStatationStat getSub(String name, Map<String, PmsStatationStat> oldSubMap) {
if (oldSubMap.containsKey(name)) {
return oldSubMap.get(name);
}
return null;
}
public Dept getDeptCode(String name, List<Dept> deptList) {
List<Dept> collect = deptList.stream().filter(x -> x.getName().equals(name)
).collect(Collectors.toList());
if (CollUtil.isNotEmpty(collect)) {
return collect.get(0);
}
return null;
}
//10kv变电站添加
public void add(List<DisPhotovoltaic10Excel> list, List<DictData> dev_voltage) {
//查询所有部门
List<Dept> depts = dictDataMapper.selectUserList();
List<String> statName = list.stream().map(DisPhotovoltaic10Excel::getPowerSupply).distinct().collect(Collectors.toList());
List<PmsStatationStat> oldList = iPmsStatationStatService.list(
new LambdaQueryWrapper<PmsStatationStat>()
.in(PmsStatationStat::getPowerName, statName)
.eq(PmsStatationStat::getStatus, 1)
);
List<String> oldNameList = oldList.stream().map(PmsStatationStat::getPowerName).collect(Collectors.toList());
List<PmsStatationStat> info = new ArrayList();
Map<String, DisPhotovoltaic10Excel> subAddMap = list.stream()
.collect(Collectors.toMap(x -> x.getCounty() + "_" + x.getPowerSupply(), Function.identity(), (key1, key2) -> key2));
subAddMap.forEach((key, value) -> {
String[] split = key.split("_");
Dept dept = getDeptCode(split[0].replace("国网冀北","")
.replace("唐山市","")
.replace("双桥","双桥区")
.replace("古冶","古冶供电中心")
.replace("张家口","国网张家口")
.replace("国网昌黎县供电公司","昌黎县供电公司")
.replace("有限","")
.replace("",""), depts);
if (ObjectUtil.isNotNull(dept)) {
if (!oldNameList.contains(split[1])) {
PmsStatationStat stat = new PmsStatationStat();
stat.setPowerName(split[1]);
stat.setOrgId(dept.getCode());
stat.setOrgName(dept.getName());
stat.setShouldBeNum(100);
stat.setVoltageLevel(getVoltage(value.getVoltage_Level(), dev_voltage));
stat.setStatus(1);
stat.setCreateTime(LocalDateTime.now());
stat.setUpdateTime(LocalDateTime.now());
info.add(stat);
}
}
});
if (CollUtil.isNotEmpty(info)) {
iPmsStatationStatService.saveBatch(info, 1000);
}
}
//10kv变电站添加
public void addSub(List<DisPhotovoltaic380Excel> list, List<DictData> dev_voltage) {
//查询所有部门
List<Dept> depts = dictDataMapper.selectUserList();
List<String> statName = list.stream().map(DisPhotovoltaic380Excel::getPowerSupply).distinct().collect(Collectors.toList());
List<String> orgName = list.stream().map(x-> subString(x.getCounty()))
.distinct().collect(Collectors.toList());
List<PmsStatationStat> oldList = iPmsStatationStatService.list(
new LambdaQueryWrapper<PmsStatationStat>()
.in(PmsStatationStat::getPowerName, statName)
.in(PmsStatationStat::getOrgName, orgName)
.eq(PmsStatationStat::getStatus, 1)
);
Map<String, List<PmsStatationStat>> collect = oldList.stream().collect(Collectors.groupingBy(x -> x.getOrgName() + "_" + x.getPowerName()));
Map<String, PmsStatationStat> oldNameMap = oldList.stream().collect(Collectors.toMap(x -> x.getOrgName() + "_" + x.getPowerName(), Function.identity()));
List<PmsStatationStat> info = new ArrayList();
Map<String, DisPhotovoltaic380Excel> subAddMap = list.stream()
.collect(Collectors.toMap(x -> x.getCounty() + "_" + x.getPowerSupply(), Function.identity(), (key1, key2) -> key2));
subAddMap.forEach((key, value) -> {
String[] split = key.split("_");
String replace = subString(split[0]);
Dept dept = getDeptCode(replace, depts);
if (ObjectUtil.isNotNull(dept)) {
if (!oldNameMap.containsKey(replace+"_"+split[1])) {
PmsStatationStat stat = new PmsStatationStat();
stat.setPowerName(split[1]);
stat.setOrgId(dept.getCode());
stat.setOrgName(dept.getName());
stat.setShouldBeNum(100);
stat.setVoltageLevel(getVoltage(value.getVoltage_Level(), dev_voltage));
stat.setStatus(1);
stat.setCreateTime(LocalDateTime.now());
stat.setUpdateTime(LocalDateTime.now());
info.add(stat);
}
}
});
if (CollUtil.isNotEmpty(info)) {
iPmsStatationStatService.saveBatch(info, 1000);
}
}
public void exportExcel(String fileName, List<?> list,Class<?> t, HttpServletResponse response) {
try (ServletOutputStream outputStream = response.getOutputStream()) {
fileName = URLEncoder.encode(fileName, CharsetUtil.UTF_8);
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
response.setContentType("application/octet-stream;charset=UTF-8");
EasyExcel.write(outputStream,t).sheet("sheet").doWrite(list);
} catch (IOException e) {
log.error(">>> 导出数据异常:{}", e.getMessage());
}
}
private String subString(String name){
String replace ;
if(name.equals("古冶")){
replace = name
.replace("古冶","古冶供电中心");
}else{
replace = name.replace("国网冀北", "")
.replace("唐山市","")
.replace("双桥","双桥区")
.replace("张家口","国网张家口")
.replace("国网昌黎县供电公司","昌黎县供电公司")
.replace("双滦客服中心","双滦区供电中心")
.replace("营子客服中心","营子区供电中心")
.replace("安次客户服务分中心","安次供电中心")
.replace("广阳客户服务分中心","广阳供电中心")
.replace("国网卢龙县供电公司","卢龙县供电公司")
.replace("国网青龙县供电公司","青龙县供电公司")
.replace("广阳客户服务分中心","广阳供电中心")
.replace("有限","")
.replace("","");
}
return replace;
}
} }

View File

@@ -0,0 +1,22 @@
package com.njcn.jbsyncdata.service.impl;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.jbsyncdata.mapper.PmsPowerGenerationUserMapper;
import com.njcn.jbsyncdata.pojo.PmsPowerGenerationUser;
import com.njcn.jbsyncdata.service.IPmsPowerGenerationUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* <p>
* 发电用户台账 服务实现类
* </p>
*
* @author wr
* @since 2023-10-09
*/
@Service
@RequiredArgsConstructor
public class PmsPowerGenerationUserServiceImpl extends MppServiceImpl<PmsPowerGenerationUserMapper, PmsPowerGenerationUser> implements IPmsPowerGenerationUserService {
}

View File

@@ -0,0 +1,20 @@
package com.njcn.jbsyncdata.service.impl;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.jbsyncdata.mapper.PmsStatationStatMapper;
import com.njcn.jbsyncdata.pojo.PmsStatationStat;
import com.njcn.jbsyncdata.service.IPmsStatationStatService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author wr
* @since 2023-10-10
*/
@Service
public class PmsStatationStatServiceImpl extends MppServiceImpl<PmsStatationStatMapper, PmsStatationStat> implements IPmsStatationStatService {
}

View File

@@ -9,7 +9,10 @@ spring:
datasource: datasource:
druid: druid:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://101.132.25.239:13306/pqsinfo?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=CTT&rewriteBatchedStatements=true # url: jdbc:mysql://101.132.25.239:13306/pqsinfo?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=CTT&rewriteBatchedStatements=true
# username: root
# password: njcnpqs
url: jdbc:mysql://192.168.1.18:13306/pqsinfo_pms_jb?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root username: root
password: njcnpqs password: njcnpqs
#初始化建立物理连接的个数、最小、最大连接数 #初始化建立物理连接的个数、最小、最大连接数
@@ -39,7 +42,7 @@ spring:
max-file-size: 500MB max-file-size: 500MB
enabled: true enabled: true
influx: influx:
url: http://127.0.0.1:8086 url: http://192.168.1.18:8086
user: admin user: admin
password: 123456 password: 123456
database: pqsbase_sjzx database: pqsbase_sjzx