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