diff --git a/pom.xml b/pom.xml index 818e382..1aa6431 100644 --- a/pom.xml +++ b/pom.xml @@ -156,6 +156,33 @@ + + + + com.baomidou + mybatis-plus-boot-starter + 3.5.3.1 + + + com.github.jeffreyning + mybatisplus-plus + 1.7.3-RELEASE + + + + com.alibaba + druid-spring-boot-starter + 1.2.5 + + + + mysql + mysql-connector-java + 8.0.19 + + + + com.alibaba easyexcel @@ -171,6 +198,12 @@ com.njcn influxdb-springboot-starter + + + + + + 1.0.0 diff --git a/src/main/java/com/njcn/jbsyncdata/JbSyncdataApplication.java b/src/main/java/com/njcn/jbsyncdata/JbSyncdataApplication.java index 02e66fb..b96346c 100644 --- a/src/main/java/com/njcn/jbsyncdata/JbSyncdataApplication.java +++ b/src/main/java/com/njcn/jbsyncdata/JbSyncdataApplication.java @@ -1,9 +1,11 @@ package com.njcn.jbsyncdata; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -@SpringBootApplication +@MapperScan("com.njcn.**.mapper") +@SpringBootApplication(scanBasePackages = "com.njcn") public class JbSyncdataApplication { public static void main(String[] args) { diff --git a/src/main/java/com/njcn/jbsyncdata/controller/DisPhotovoltaicController.java b/src/main/java/com/njcn/jbsyncdata/controller/DisPhotovoltaicController.java index da4d06a..e3f7340 100644 --- a/src/main/java/com/njcn/jbsyncdata/controller/DisPhotovoltaicController.java +++ b/src/main/java/com/njcn/jbsyncdata/controller/DisPhotovoltaicController.java @@ -5,22 +5,21 @@ import com.alibaba.excel.EasyExcel; import com.njcn.jbsyncdata.pojo.DisPhotovoltaic10Excel; import com.njcn.jbsyncdata.pojo.DisPhotovoltaic380Excel; import com.njcn.jbsyncdata.pojo.ExcelData; +import com.njcn.jbsyncdata.service.DisPhotovoltaicService; import com.njcn.jbsyncdata.service.IBusinessService; import com.njcn.jbsyncdata.util.StreamUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; 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; /** @@ -36,6 +35,7 @@ import java.util.stream.Collectors; public class DisPhotovoltaicController { private final IBusinessService businessService; + private final DisPhotovoltaicService disPhotovoltaicService; @ApiOperation(value = "获取10kv分布式光伏接入情况") @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 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 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(); - + } } diff --git a/src/main/java/com/njcn/jbsyncdata/mapper/DictDataMapper.java b/src/main/java/com/njcn/jbsyncdata/mapper/DictDataMapper.java new file mode 100644 index 0000000..66ba3a5 --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/mapper/DictDataMapper.java @@ -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; + +/** + *

+ * Mapper 接口 + *

+ * + * @author hongawen + * @since 2021-12-13 + */ +public interface DictDataMapper extends BaseMapper { + + List selectList(@Param("code") String code); + DictData selectByCode(@Param("dataCode") String dataCode,@Param("typeCode") String typeCode); + List selectUserList(); + +} diff --git a/src/main/java/com/njcn/jbsyncdata/mapper/PmsPowerGenerationUserMapper.java b/src/main/java/com/njcn/jbsyncdata/mapper/PmsPowerGenerationUserMapper.java new file mode 100644 index 0000000..d05c7c8 --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/mapper/PmsPowerGenerationUserMapper.java @@ -0,0 +1,18 @@ +package com.njcn.jbsyncdata.mapper; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.jbsyncdata.pojo.PmsPowerGenerationUser; + + +/** + *

+ * 发电用户台账 Mapper 接口 + *

+ * + * @author wr + * @since 2023-10-09 + */ +public interface PmsPowerGenerationUserMapper extends MppBaseMapper { + + +} diff --git a/src/main/java/com/njcn/jbsyncdata/mapper/PmsStatationStatMapper.java b/src/main/java/com/njcn/jbsyncdata/mapper/PmsStatationStatMapper.java new file mode 100644 index 0000000..95afcad --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/mapper/PmsStatationStatMapper.java @@ -0,0 +1,16 @@ +package com.njcn.jbsyncdata.mapper; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.jbsyncdata.pojo.PmsStatationStat; + +/** + *

+ * Mapper 接口 + *

+ * + * @author wr + * @since 2023-10-10 + */ +public interface PmsStatationStatMapper extends MppBaseMapper { + +} diff --git a/src/main/java/com/njcn/jbsyncdata/mapper/mapping/DictDataMapper.xml b/src/main/java/com/njcn/jbsyncdata/mapper/mapping/DictDataMapper.xml new file mode 100644 index 0000000..e52b198 --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/mapper/mapping/DictDataMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/src/main/java/com/njcn/jbsyncdata/mapper/mapping/PmsPowerGenerationUserMapper.xml b/src/main/java/com/njcn/jbsyncdata/mapper/mapping/PmsPowerGenerationUserMapper.xml new file mode 100644 index 0000000..f366706 --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/mapper/mapping/PmsPowerGenerationUserMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/main/java/com/njcn/jbsyncdata/mapper/mapping/PmsStatationStatMapper.xml b/src/main/java/com/njcn/jbsyncdata/mapper/mapping/PmsStatationStatMapper.xml new file mode 100644 index 0000000..f34a8ee --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/mapper/mapping/PmsStatationStatMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/Dept.java b/src/main/java/com/njcn/jbsyncdata/pojo/Dept.java new file mode 100644 index 0000000..58947f3 --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/pojo/Dept.java @@ -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; + +} diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/DictData.java b/src/main/java/com/njcn/jbsyncdata/pojo/DictData.java new file mode 100644 index 0000000..40f2378 --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/pojo/DictData.java @@ -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; + +} diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/DisPhotovoltaic10Excel.java b/src/main/java/com/njcn/jbsyncdata/pojo/DisPhotovoltaic10Excel.java index e3b48e6..45f04f2 100644 --- a/src/main/java/com/njcn/jbsyncdata/pojo/DisPhotovoltaic10Excel.java +++ b/src/main/java/com/njcn/jbsyncdata/pojo/DisPhotovoltaic10Excel.java @@ -1,10 +1,10 @@ package com.njcn.jbsyncdata.pojo; import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import lombok.Data; import java.io.Serializable; -import java.math.BigDecimal; /** * @author wr @@ -12,8 +12,15 @@ import java.math.BigDecimal; * @date 2023/9/26 15:28 */ @Data +@ColumnWidth(30) public class DisPhotovoltaic10Excel implements Serializable { + @ExcelProperty(value = "错误信息") + private String errorMessage; + + @ExcelProperty(value = "序号") + private String serialNumber; + @ExcelProperty(value = "市单位") private String orgName; @@ -45,7 +52,7 @@ public class DisPhotovoltaic10Excel implements Serializable { private String wayConsumption; @ExcelProperty(value = "合同容量") - private BigDecimal contractCapacity; + private Float contractCapacity; @ExcelProperty(value = "行业类别") private String industryType; diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/DisPhotovoltaic380Excel.java b/src/main/java/com/njcn/jbsyncdata/pojo/DisPhotovoltaic380Excel.java index b5acd13..f3571b9 100644 --- a/src/main/java/com/njcn/jbsyncdata/pojo/DisPhotovoltaic380Excel.java +++ b/src/main/java/com/njcn/jbsyncdata/pojo/DisPhotovoltaic380Excel.java @@ -1,6 +1,7 @@ package com.njcn.jbsyncdata.pojo; import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import lombok.Data; import java.io.Serializable; @@ -12,8 +13,15 @@ import java.math.BigDecimal; * @date 2023/9/26 15:28 */ @Data +@ColumnWidth(30) public class DisPhotovoltaic380Excel implements Serializable { + @ExcelProperty(value = "错误信息") + private String errorMessage; + + @ExcelProperty(value = "序号") + private String serialNumber; + @ExcelProperty(value = "市单位") private String orgName; @@ -44,7 +52,7 @@ public class DisPhotovoltaic380Excel implements Serializable { private String wayConsumption; @ExcelProperty(value = "合同容量") - private BigDecimal contractCapacity; + private Float contractCapacity; @ExcelProperty(value = "电压等级") private String Voltage_Level; diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/PmsPowerGenerationUser.java b/src/main/java/com/njcn/jbsyncdata/pojo/PmsPowerGenerationUser.java new file mode 100644 index 0000000..51f2b00 --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/pojo/PmsPowerGenerationUser.java @@ -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; + +/** + *

+ * 发电用户台账 + *

+ * + * @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-10kv;1-380kv + */ + private Integer inputStatus; +} diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/PmsStatationStat.java b/src/main/java/com/njcn/jbsyncdata/pojo/PmsStatationStat.java new file mode 100644 index 0000000..b9804bf --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/pojo/PmsStatationStat.java @@ -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; + +/** + *

+ * + *

+ * + * @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; + + +} diff --git a/src/main/java/com/njcn/jbsyncdata/service/DisPhotovoltaicService.java b/src/main/java/com/njcn/jbsyncdata/service/DisPhotovoltaicService.java index db27840..6db4fba 100644 --- a/src/main/java/com/njcn/jbsyncdata/service/DisPhotovoltaicService.java +++ b/src/main/java/com/njcn/jbsyncdata/service/DisPhotovoltaicService.java @@ -1,12 +1,34 @@ 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 * @description * @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 list, HttpServletResponse response); + /** + * @param list + * @param response + * @Description: 380kv导入 + * @Author: wr + * @Date: 2023/10/10 16:01 + */ + void SavaPmsPowerGenerationUser380KV(List list, HttpServletResponse response); } diff --git a/src/main/java/com/njcn/jbsyncdata/service/IPmsPowerGenerationUserService.java b/src/main/java/com/njcn/jbsyncdata/service/IPmsPowerGenerationUserService.java new file mode 100644 index 0000000..6feed83 --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/service/IPmsPowerGenerationUserService.java @@ -0,0 +1,16 @@ +package com.njcn.jbsyncdata.service; + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.jbsyncdata.pojo.PmsPowerGenerationUser; + +/** + *

+ * 发电用户台账 服务类 + *

+ * + * @author wr + * @since 2023-10-09 + */ +public interface IPmsPowerGenerationUserService extends IMppService { + +} diff --git a/src/main/java/com/njcn/jbsyncdata/service/IPmsStatationStatService.java b/src/main/java/com/njcn/jbsyncdata/service/IPmsStatationStatService.java new file mode 100644 index 0000000..e05d05e --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/service/IPmsStatationStatService.java @@ -0,0 +1,16 @@ +package com.njcn.jbsyncdata.service; + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.jbsyncdata.pojo.PmsStatationStat; + +/** + *

+ * 服务类 + *

+ * + * @author wr + * @since 2023-10-10 + */ +public interface IPmsStatationStatService extends IMppService { + +} diff --git a/src/main/java/com/njcn/jbsyncdata/service/impl/DisPhotovoltaicServiceImpl.java b/src/main/java/com/njcn/jbsyncdata/service/impl/DisPhotovoltaicServiceImpl.java index 3b5fbab..84db1a9 100644 --- a/src/main/java/com/njcn/jbsyncdata/service/impl/DisPhotovoltaicServiceImpl.java +++ b/src/main/java/com/njcn/jbsyncdata/service/impl/DisPhotovoltaicServiceImpl.java @@ -1,11 +1,418 @@ 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.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 * @description * @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 list, HttpServletResponse response) { + List info = new ArrayList<>(); + List 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 connection_mode = dictDataMapper.selectList("Connection_Mode"); + //电压等级 + List dev_voltage = dictDataMapper.selectList("Dev_Voltage"); + //获取部门信息 + List depts = dictDataMapper.selectUserList(); + //导入变电站数据 + add(list, dev_voltage); + PmsPowerGenerationUser user; + List oldList = iPmsStatationStatService.list( + new LambdaQueryWrapper() + .eq(PmsStatationStat::getStatus, 1) + ); + Map 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 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 list, HttpServletResponse response) { + List info = new ArrayList<>(); + List 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 connection_mode = dictDataMapper.selectList("Connection_Mode"); + //电压等级 + List dev_voltage = dictDataMapper.selectList("Dev_Voltage"); + //获取部门信息 + List depts = dictDataMapper.selectUserList(); + //导入变电站数据 + addSub(list, dev_voltage); + PmsPowerGenerationUser user; + List oldList = iPmsStatationStatService.list( + new LambdaQueryWrapper() + .eq(PmsStatationStat::getStatus, 1) + ); + Map 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 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) { + List 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) { + List 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) { + List 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 oldSubMap) { + if (oldSubMap.containsKey(name)) { + return oldSubMap.get(name); + } + return null; + } + + public Dept getDeptCode(String name, List deptList) { + List 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 list, List dev_voltage) { + //查询所有部门 + List depts = dictDataMapper.selectUserList(); + List statName = list.stream().map(DisPhotovoltaic10Excel::getPowerSupply).distinct().collect(Collectors.toList()); + + List oldList = iPmsStatationStatService.list( + new LambdaQueryWrapper() + .in(PmsStatationStat::getPowerName, statName) + .eq(PmsStatationStat::getStatus, 1) + ); + List oldNameList = oldList.stream().map(PmsStatationStat::getPowerName).collect(Collectors.toList()); + List info = new ArrayList(); + Map 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 list, List dev_voltage) { + //查询所有部门 + List depts = dictDataMapper.selectUserList(); + List statName = list.stream().map(DisPhotovoltaic380Excel::getPowerSupply).distinct().collect(Collectors.toList()); + + + + List orgName = list.stream().map(x-> subString(x.getCounty())) + .distinct().collect(Collectors.toList()); + + List oldList = iPmsStatationStatService.list( + new LambdaQueryWrapper() + .in(PmsStatationStat::getPowerName, statName) + .in(PmsStatationStat::getOrgName, orgName) + .eq(PmsStatationStat::getStatus, 1) + ); + Map> collect = oldList.stream().collect(Collectors.groupingBy(x -> x.getOrgName() + "_" + x.getPowerName())); + Map oldNameMap = oldList.stream().collect(Collectors.toMap(x -> x.getOrgName() + "_" + x.getPowerName(), Function.identity())); + + List info = new ArrayList(); + Map 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; + } } diff --git a/src/main/java/com/njcn/jbsyncdata/service/impl/PmsPowerGenerationUserServiceImpl.java b/src/main/java/com/njcn/jbsyncdata/service/impl/PmsPowerGenerationUserServiceImpl.java new file mode 100644 index 0000000..fe5ff8e --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/service/impl/PmsPowerGenerationUserServiceImpl.java @@ -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; + +/** + *

+ * 发电用户台账 服务实现类 + *

+ * + * @author wr + * @since 2023-10-09 + */ +@Service +@RequiredArgsConstructor +public class PmsPowerGenerationUserServiceImpl extends MppServiceImpl implements IPmsPowerGenerationUserService { + +} diff --git a/src/main/java/com/njcn/jbsyncdata/service/impl/PmsStatationStatServiceImpl.java b/src/main/java/com/njcn/jbsyncdata/service/impl/PmsStatationStatServiceImpl.java new file mode 100644 index 0000000..18775ac --- /dev/null +++ b/src/main/java/com/njcn/jbsyncdata/service/impl/PmsStatationStatServiceImpl.java @@ -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; + +/** + *

+ * 服务实现类 + *

+ * + * @author wr + * @since 2023-10-10 + */ +@Service +public class PmsStatationStatServiceImpl extends MppServiceImpl implements IPmsStatationStatService { + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index fdbc9c2..82d8942 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -9,7 +9,10 @@ spring: datasource: druid: 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 password: njcnpqs #初始化建立物理连接的个数、最小、最大连接数 @@ -39,7 +42,7 @@ spring: max-file-size: 500MB enabled: true influx: - url: http://127.0.0.1:8086 + url: http://192.168.1.18:8086 user: admin password: 123456 database: pqsbase_sjzx