1.增加导出模板下拉框设置

2.支持台区导入和发电用户导入模板
3.添加灿能云远程监测点接口,流量信息
This commit is contained in:
wr
2023-11-24 16:08:12 +08:00
parent e1c8983800
commit a8c8f3dff6
22 changed files with 1283 additions and 41 deletions

View File

@@ -315,5 +315,29 @@ public class PmsDistributionMonitorController extends BaseController {
}
@ApiOperation(value = "将用户数据导入到配网表中")
@PostMapping("/savePmsDistributionUser")
public HttpResult<Boolean> savePmsDistributionUser() {
String methodDescribe = getMethodDescribe("savePmsDistributionUser");
boolean result = iDistributionMonitorService.savePmsDistributionUser();
if(result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
@ApiOperation(value = "将用户数据导入到配网表中")
@PostMapping("/savePmsDistributionArea")
public HttpResult<Boolean> savePmsDistributionArea() {
String methodDescribe = getMethodDescribe("savePmsDistributionArea");
boolean result = iDistributionMonitorService.savePmsDistributionArea();
if(result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
}

View File

@@ -1,6 +1,7 @@
package com.njcn.device.pms.controller.ledgerManger;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
@@ -11,6 +12,7 @@ import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.common.utils.LogUtil;
import com.njcn.device.pms.annotation.TerminalOperationLogDesc;
import com.njcn.device.pms.pojo.excel.PowerDistributionAreaExcel;
import com.njcn.device.pms.pojo.param.PowerDistributionareaParam;
import com.njcn.device.pms.pojo.po.PowerDistributionarea;
import com.njcn.device.pms.pojo.vo.PVCapacity;
@@ -19,15 +21,20 @@ import com.njcn.web.pojo.param.BaseParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.njcn.web.controller.BaseController;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Objects;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
@@ -168,5 +175,29 @@ public class PmsPowerDistributionareaController extends BaseController {
List<PVCapacity.Absorptive> absorptiveCapacity = iPowerDistributionareaService.getAbsorptiveCapacity(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, absorptiveCapacity, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/export")
@ApiOperation(value ="导出台区台账数据模板", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public HttpResult<String> export() {
String methodDescribe = getMethodDescribe("export");
iPowerDistributionareaService.export();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@PostMapping(value = "/importDistributionAreaExcel")
@ApiOperation(value ="批量导入台区台账数据", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.ADD)
public HttpResult<String> importDistributionAreaExcel(@ApiParam(value = "文件", required = true) @RequestPart("file") MultipartFile file, HttpServletResponse response) throws IOException {
String methodDescribe = getMethodDescribe("importDistributionAreaExcel");
List<PowerDistributionAreaExcel.ErrMsg> list = EasyExcel.read(file.getInputStream())
.head(PowerDistributionAreaExcel.ErrMsg.class)
.headRowNumber(2)
.doReadAllSync();
iPowerDistributionareaService.importDistributionAreaExcel(list, response);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -1,6 +1,7 @@
package com.njcn.device.pms.controller.ledgerManger;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
@@ -9,6 +10,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.device.pms.annotation.TerminalOperationLogDesc;
import com.njcn.device.pms.pojo.excel.PowerGenerationUserExcel;
import com.njcn.device.pms.pojo.param.PowerDistributionareaParam;
import com.njcn.device.pms.pojo.param.PowerGenerationUserParam;
import com.njcn.device.pms.pojo.param.PowerUserParam;
@@ -19,15 +21,20 @@ import com.njcn.web.pojo.param.BaseParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.njcn.web.controller.BaseController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import java.util.List;
import java.util.Objects;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
@@ -133,5 +140,26 @@ public class PmsPowerGenerationUserController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/export")
@ApiOperation(value ="导出发电用户台账数据模板", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public HttpResult<String> export() {
String methodDescribe = getMethodDescribe("export");
iPowerGenerationUserService.export();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@PostMapping(value = "/importGenerationUserExcel")
@ApiOperation(value ="批量导入发电用户台账数据", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.ADD)
public HttpResult<String> importGenerationUserExcel(@ApiParam(value = "文件", required = true) @RequestPart("file") MultipartFile file, HttpServletResponse response) throws IOException {
String methodDescribe = getMethodDescribe("importGenerationUserExcel");
List<PowerGenerationUserExcel.ErrMsg> list = EasyExcel.read(file.getInputStream())
.head(PowerGenerationUserExcel.ErrMsg.class)
.headRowNumber(2)
.doReadAllSync();
iPowerGenerationUserService.importGenerationUserExcel(list, response);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -1,7 +1,5 @@
package com.njcn.device.pms.mapper.majornetwork;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
@@ -9,7 +7,6 @@ import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO;
import com.njcn.device.pms.pojo.dto.PmsSimpleDTO;
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam;
import com.njcn.device.pms.pojo.param.PwPmsMonitorParam;
import com.njcn.device.pms.pojo.param.TaiZhangParam;
import com.njcn.device.pms.pojo.po.DistributionMonitor;
import com.njcn.device.pms.pojo.po.Monitor;
@@ -18,7 +15,6 @@ import com.njcn.device.pms.pojo.vo.DoubleUserVO;
import com.njcn.device.pms.pojo.vo.PmsPowerTreeMonitorVO;
import com.njcn.device.pms.pojo.vo.PmsSummaryStatisticsVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@@ -105,5 +101,25 @@ public interface DistributionMonitorMapper extends MppBaseMapper<DistributionMon
List<String> getBaseDisMonitorIds(@Param("list")List<String> list,@Param("monitorSortIds")List<String> monitorSortIds);
/**
* 删除配网表数据
* @param dic 监测点类型
* @param type 是否是发电用户
* @return
*/
Boolean deletePmsDistributionMonitor(@Param("dic") String dic,@Param("type") String type);
/**
* 配网批量导入发电用户
* @param dic
* @return
*/
Boolean insertPmsDistributionUser(@Param("dic") String dic);
/**
* 配网批量导入台区
* @param dic
* @return
*/
Boolean insertPmsDistributionArea(@Param("dic") String dic);
}

View File

@@ -1,6 +1,87 @@
<?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.device.pms.mapper.majornetwork.DistributionMonitorMapper">
<insert id="insertPmsDistributionUser">
INSERT INTO pms_distribution_monitor (
Monitor_Sort,
Monitor_Id,
Org_Id,
Voltage_Level,
If_Power_User,
Monitor_State,
Created_Date,
Status,
Create_Time,
Update_Time,
Line_Id,
Statistical_Interval,
Power_Station_Id
)
select
#{dic} as Monitor_Sort,
id as Monitor_Id,
Org_Id as Org_Id ,
Voltage_Level as Voltage_Level,
1 as If_Power_User,
(select sd.id from sys_dict_data sd INNER JOIN sys_dict_type st on st.id=sd.Type_Id where sd.`Code`="Run" and st.`Code`="Line_State") as Monitor_State,
now() as Created_Date,
1 as Status,
now() as Create_Time,
now() as Update_Time,
Line_Id as Statistical_Interval,
15 as Statistical_Interval,
Power_Station_Id as Power_Station_Id
from
pms_power_generation_user
where Status=1
</insert>
<insert id="insertPmsDistributionArea">
INSERT INTO pms_distribution_monitor (
Monitor_Sort,
Monitor_Id,
Org_Id,
Voltage_Level,
If_Power_User,
Monitor_State,
Created_Date,
Status,
Create_Time,
Update_Time,
Line_Id,
Statistical_Interval,
Power_Station_Id
)
select
#{dic} as Monitor_Sort,
id as Monitor_Id,
Org_Id as Org_Id ,
Voltage_Level as Voltage_Level,
1 as If_Power_User,
(select sd.id from sys_dict_data sd INNER JOIN sys_dict_type st on st.id=sd.Type_Id where sd.`Code`="Run" and st.`Code`="Line_State") as Monitor_State,
now() as Created_Date,
1 as Status,
now() as Create_Time,
now() as Update_Time,
Line_Id as Statistical_Interval,
15 as Statistical_Interval,
Power_Station_Id as Power_Station_Id
from
pms_power_distributionarea
where Status=1
</insert>
<delete id="deletePmsDistributionMonitor">
delete FROM pms_distribution_monitor
<where>
<if test="dic != null and dic !=''">
and Monitor_Sort = #{dic}
</if>
<if test="type != null and type !='' ">
and If_Power_User = #{type}
</if>
</where>
</delete>
<select id="getIdByOrgId" resultType="com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO">

View File

@@ -126,4 +126,15 @@ public interface IDistributionMonitorService extends IMppService<DistributionMon
Boolean disMonitorWriteOrgId();
/**
* 批量同步发电用户到配网表
* @return
*/
Boolean savePmsDistributionUser();
/**
* 批量同步台区到配网表
* @return
*/
Boolean savePmsDistributionArea();
}

View File

@@ -3,11 +3,15 @@ package com.njcn.device.pms.service.majornetwork;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.device.pms.pojo.excel.PowerDistributionAreaExcel;
import com.njcn.device.pms.pojo.param.PowerDistributionareaParam;
import com.njcn.device.pms.pojo.po.PowerDistributionarea;
import com.njcn.device.pms.pojo.vo.PVCapacity;
import com.njcn.web.pojo.param.BaseParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
@@ -76,4 +80,14 @@ public interface IPowerDistributionareaService extends IService<PowerDistributio
* @return
*/
List<PVCapacity.Absorptive> getAbsorptiveCapacity(StatisticsBizBaseParam param);
/**
* 导出台区模板
*/
void export();
/**
* 批量导入台区台账数据
*/
void importDistributionAreaExcel(List<PowerDistributionAreaExcel.ErrMsg> list, HttpServletResponse response);
}

View File

@@ -2,13 +2,17 @@ package com.njcn.device.pms.service.majornetwork;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.pms.pojo.excel.PowerGenerationUserExcel;
import com.njcn.device.pms.pojo.param.PowerDistributionareaParam;
import com.njcn.device.pms.pojo.param.PowerGenerationUserParam;
import com.njcn.device.pms.pojo.param.PowerUserParam;
import com.njcn.device.pms.pojo.po.PowerGenerationUser;
import com.njcn.device.pms.pojo.vo.PowerGenerationUserVO;
import com.njcn.web.pojo.param.BaseParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
@@ -79,4 +83,13 @@ public interface IPowerGenerationUserService extends IService<PowerGenerationUse
*/
List<PowerGenerationUser> getGenerateElectricityUserList(PowerUserParam powerUserParam);
/**
* 导出发电用户模板
*/
void export();
/**
* 批量导入发电用户台账数据
*/
void importGenerationUserExcel(List<PowerGenerationUserExcel.ErrMsg> list, HttpServletResponse response);
}

View File

@@ -3,6 +3,7 @@ package com.njcn.device.pms.service.majornetwork.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -562,6 +563,26 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl<DistributionM
return true;
}
@Override
public Boolean savePmsDistributionUser() {
DictData data = dicDataFeignClient.getDicDataByCode(DicDataEnum.THREE_LINE.getCode()).getData();
if(ObjectUtil.isNotNull(data)){
this.baseMapper.deletePmsDistributionMonitor(data.getId(),"1");
this.baseMapper.insertPmsDistributionUser(data.getId());
}
return true;
}
@Override
public Boolean savePmsDistributionArea() {
DictData data = dicDataFeignClient.getDicDataByCode(DicDataEnum.TWO_LINE.getCode()).getData();
if(ObjectUtil.isNotNull(data)){
this.baseMapper.deletePmsDistributionMonitor(data.getId(),null);
this.baseMapper.insertPmsDistributionArea(data.getId());
}
return true;
}
private void overLimitAdd(String voltageLevel, String id) {
DictData voltageDic = dicDataFeignClient.getDicDataById(voltageLevel).getData();
float voltageLevelValue = Float.parseFloat(voltageDic.getValue());

View File

@@ -1,8 +1,13 @@
package com.njcn.device.pms.service.majornetwork.impl;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.enums.common.DataStateEnum;
@@ -13,32 +18,46 @@ import com.njcn.device.biz.utils.COverlimitUtil;
import com.njcn.device.pms.enums.PmsDeviceResponseEnum;
import com.njcn.device.pms.mapper.majornetwork.OverlimitMapper;
import com.njcn.device.pms.mapper.majornetwork.PowerDistributionareaMapper;
import com.njcn.device.pms.pojo.excel.PowerDistributionAreaExcel;
import com.njcn.device.pms.pojo.excel.PowerGenerationUserExcel;
import com.njcn.device.pms.pojo.param.PowerDistributionareaParam;
import com.njcn.device.pms.pojo.po.GeneratrixWire;
import com.njcn.device.pms.pojo.po.PowerDistributionarea;
import com.njcn.device.pms.pojo.po.PowerGenerationUser;
import com.njcn.device.pms.pojo.po.StatationStat;
import com.njcn.device.pms.pojo.vo.PVCapacity;
import com.njcn.device.pms.service.majornetwork.IDistributionMonitorService;
import com.njcn.device.pms.service.majornetwork.IGeneratrixWireService;
import com.njcn.device.pms.service.majornetwork.IPowerDistributionareaService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.device.pms.service.majornetwork.IStatationStatService;
import com.njcn.device.pms.utils.PubUtil;
import com.njcn.event.pojo.vo.DeptLevelVO;
import com.njcn.event.utils.DeptUtil;
import com.njcn.poi.excel.ExcelUtil;
import com.njcn.poi.excel.PullDown;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.dto.DeptDTO;
import com.njcn.user.pojo.po.Dept;
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
import com.njcn.web.factory.PageFactory;
import com.njcn.web.pojo.param.BaseParam;
import com.njcn.web.utils.RequestUtil;
import com.njcn.web.utils.WebUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -54,10 +73,12 @@ import java.util.stream.Collectors;
public class PowerDistributionareaServiceImpl extends ServiceImpl<PowerDistributionareaMapper, PowerDistributionarea> implements IPowerDistributionareaService {
private final DeptFeignClient deptFeignClient;
private final DicDataFeignClient dicDataFeignClient;
private final IStatationStatService iStatationStatService;
private final IDistributionMonitorService iDistributionMonitorService;
private final IStatationStatService statationStatService;
private final IGeneratrixWireService generatrixWireService;
@Override
@@ -218,6 +239,209 @@ public class PowerDistributionareaServiceImpl extends ServiceImpl<PowerDistribut
return info;
}
@Override
public void export() {
ExportParams exportParams = new ExportParams("台区台账数据模板(带*字段均是必填,请严格按照模板标准填入数据)", "台区台账数据信息");
List<PullDown> pullDowns=new ArrayList<>();
//电压等级
List<DictData> devVoltage = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
//地区特征
List<DictData> deviceRegionLype = dicDataFeignClient.getDicDataByTypeCode("Area").getData();
//使用性质
List<DictData> deviceUseNature = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEVICE_USERNATURE.getCode()).getData();
//运行状态
List<DictData> lineState = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData();
PullDown pullDown;
pullDown=new PullDown();
pullDown.setFirstCol(10);
pullDown.setLastCol(10);
pullDown.setStrings(devVoltage.stream().map(DictData::getName).collect(Collectors.toList()));
pullDowns.add(pullDown);
pullDown=new PullDown();
pullDown.setFirstCol(12);
pullDown.setLastCol(12);
pullDown.setStrings(deviceRegionLype.stream().map(DictData::getName).collect(Collectors.toList()));
pullDowns.add(pullDown);
pullDown=new PullDown();
pullDown.setFirstCol(13);
pullDown.setLastCol(13);
pullDown.setStrings(Arrays.asList("",""));
pullDowns.add(pullDown);
pullDown=new PullDown();
pullDown.setFirstCol(14);
pullDown.setLastCol(14);
pullDown.setStrings(deviceUseNature.stream().map(DictData::getName).collect(Collectors.toList()));
pullDowns.add(pullDown);
pullDown=new PullDown();
pullDown.setFirstCol(17);
pullDown.setLastCol(17);
pullDown.setStrings(lineState.stream().map(DictData::getName).collect(Collectors.toList()));
pullDowns.add(pullDown);
pullDown=new PullDown();
pullDown.setFirstCol(20);
pullDown.setLastCol(20);
pullDown.setStrings(Arrays.asList("",""));
pullDowns.add(pullDown);
pullDown=new PullDown();
pullDown.setFirstCol(22);
pullDown.setLastCol(22);
pullDown.setStrings(Arrays.asList("",""));
pullDowns.add(pullDown);
ExcelUtil.exportExcelPullDown(exportParams,"台区台账数据信息.xlsx",pullDowns, PowerDistributionAreaExcel.class, new ArrayList<>());
}
@Override
public void importDistributionAreaExcel(List<PowerDistributionAreaExcel.ErrMsg> list, HttpServletResponse response){
List<PowerDistributionarea> info=new ArrayList<>();
List<PowerDistributionAreaExcel.ErrMsg> errInfo=new ArrayList<>();
if(CollUtil.isNotEmpty(list)){
PowerDistributionarea area;
//获取部门信息
List<PvTerminalTreeVO> depts = deptFeignClient.allDeptList().getData();
//电压等级
List<DictData> devVoltage = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
//地区特征
List<DictData> deviceRegionLype = dicDataFeignClient.getDicDataByTypeCode("Area").getData();
//使用性质
List<DictData> deviceUseNature = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEVICE_USERNATURE.getCode()).getData();
//运行状态
List<DictData> lineState = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData();
for (PowerDistributionAreaExcel.ErrMsg msg : list) {
String objNull = PubUtil.isObjNull(msg);
if(StrUtil.isNotBlank(objNull)){
msg.setErrMsg(objNull);
errInfo.add(msg);
continue;
}
area=new PowerDistributionarea();
area.setId(msg.getId());
area.setName(msg.getName());
List<PvTerminalTreeVO> deptList = depts.stream().filter(x -> x.getCode().contains(msg.getOrgId())).collect(Collectors.toList());
if(CollUtil.isEmpty(deptList)){
String org = PubUtil.subString(msg.getOrgName().replace("国网",""));
List<PvTerminalTreeVO> deptName = depts.stream().filter(x -> x.getName().contains(org)).collect(Collectors.toList());
if(CollUtil.isNotEmpty(deptName)){
area.setOrgName(deptName.get(0).getName());
area.setOrgId(deptName.get(0).getCode());
}else{
msg.setErrMsg("组织机构不存在");
errInfo.add(msg);
continue;
}
}else{
area.setOrgName(deptList.get(0).getName());
area.setOrgId(deptList.get(0).getCode());
}
area.setOperationName(msg.getOperationName());
area.setOperationId(msg.getOperationId());
area.setPowerrName(msg.getPowerrName());
area.setPowerStationId(msg.getPowerStationId());
area.setLineName(msg.getLineName());
area.setLineId(msg.getLineId());
area.setVoltageLevel(PubUtil.getDicById(msg.getVoltageLevel(),devVoltage));
area.setPCapacity(msg.getPCapacity());
area.setRegionalism(PubUtil.getDicById(msg.getRegionalism(),deviceRegionLype));
area.setIfRuralPowerGrid("".equals(msg.getIfRuralPowerGrid())?1:0);
area.setNatureOfUse(PubUtil.getDicById(msg.getNatureOfUse(),deviceUseNature));
area.setPowerSupplyRadius(msg.getPowerSupplyRadius());
area.setLineLength(msg.getLineLength());
area.setState(PubUtil.getDicById(msg.getState(),lineState));
area.setDistributedPhotovoltaicNum(msg.getDistributedPhotovoltaicNum());
area.setPhotovoltaicCapacity(msg.getPhotovoltaicCapacity());
area.setIfBevAp("".equals(msg.getIfBevAp())?1:0);
area.setApLoadType(msg.getApLoadType());
area.setIsUpToGrid("".equals(msg.getIfBevAp())?1:0);
area.setStatus(1);
area.setInputStatus(0);
area.setCreateBy(RequestUtil.getUserIndex());
area.setCreateTime(LocalDateTimeUtil.now());
area.setUpdateBy(RequestUtil.getUserIndex());
area.setUpdateTime(LocalDateTimeUtil.now());
info.add(area);
}
if(CollUtil.isNotEmpty(info)){
info = info.stream().collect(Collectors.collectingAndThen
(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(o -> o.getId()))), ArrayList::new));
List<String> ids = info.stream().map(PowerDistributionarea::getId).collect(Collectors.toList());
List<PowerDistributionAreaExcel.ErrMsg> subInfo = list.stream().filter(x -> ids.contains(x.getId())).collect(Collectors.toList());
addSub(subInfo,devVoltage);
this.remove(new LambdaQueryWrapper<PowerDistributionarea>()
.in(PowerDistributionarea::getId, ids)
);
this.saveBatch(info, 1000);
}
if (CollUtil.isNotEmpty(errInfo)) {
PubUtil.exportExcel(DateUtil.now() + "_台区台账错误信息.xlsx", errInfo,PowerDistributionAreaExcel.ErrMsg.class, response);
}
}
}
//变电站和线路插入
public void addSub(List<PowerDistributionAreaExcel.ErrMsg> info,List<DictData> devVoltage) {
List<StatationStat> stats=new ArrayList<>();
StatationStat stat;
List<GeneratrixWire> wires=new ArrayList<>();
GeneratrixWire wire;
List<StatationStat> oldStat = statationStatService.list();
List<String> statIds = oldStat.stream().map(StatationStat::getPowerId).distinct().collect(Collectors.toList());
List<GeneratrixWire> oldWire = generatrixWireService.list();
List<String> wireIds = oldWire.stream().map(x-> x.getId()+"_"+x.getStationId()).distinct().collect(Collectors.toList());
//变电站集合
ArrayList<PowerDistributionAreaExcel.ErrMsg> statList = info.stream().collect(Collectors.collectingAndThen
(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(o -> o.getPowerStationId()))), ArrayList::new));
for (PowerDistributionAreaExcel.ErrMsg errMsg : statList) {
if(!statIds.contains(errMsg.getPowerStationId())){
stat=new StatationStat();
stat.setPowerId(errMsg.getPowerStationId());
stat.setPowerName(errMsg.getPowerrName());
stat.setOrgId(errMsg.getOrgId());
stat.setOrgName(errMsg.getOrgName());
stat.setShouldBeNum(100);
stat.setVoltageLevel(PubUtil.getDicById(errMsg.getVoltageLevel(),devVoltage));
stat.setStatus(1);
stat.setCreateBy(RequestUtil.getUserIndex());
stat.setCreateTime(LocalDateTimeUtil.now());
stat.setUpdateBy(RequestUtil.getUserIndex());
stat.setUpdateTime(LocalDateTimeUtil.now());
stats.add(stat);
}
}
//线路
ArrayList<PowerDistributionAreaExcel.ErrMsg> wireList = info.stream().collect(Collectors.collectingAndThen
(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(o -> o.getLineId()+";"+o.getPowerStationId()))), ArrayList::new));
for (PowerDistributionAreaExcel.ErrMsg errMsg : wireList){
if(!wireIds.contains(errMsg.getLineId()+"_"+errMsg.getPowerStationId())){
wire=new GeneratrixWire();
wire.setId(errMsg.getLineId());
wire.setName(errMsg.getLineName());
wire.setStationId(errMsg.getPowerStationId());
wire.setStationName(errMsg.getPowerrName());
wire.setGeneratrixName(errMsg.getPowerrName());
wire.setScale(PubUtil.getDicById(errMsg.getVoltageLevel(),devVoltage));
wire.setStatus(1);
wire.setCreateBy(RequestUtil.getUserIndex());
wire.setCreateTime(LocalDateTimeUtil.now());
wire.setUpdateBy(RequestUtil.getUserIndex());
wire.setUpdateTime(LocalDateTimeUtil.now());
wires.add(wire);
}
}
if(CollUtil.isNotEmpty(stats)){
statationStatService.saveBatch(stats);
}
if(CollUtil.isNotEmpty(wires)){
generatrixWireService.saveBatch(wires);
}
}
/**
* 名称重复校验
*/

View File

@@ -1,34 +1,59 @@
package com.njcn.device.pms.service.majornetwork.impl;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pms.enums.PmsDeviceResponseEnum;
import com.njcn.device.pms.mapper.majornetwork.PowerGenerationUserMapper;
import com.njcn.device.pms.pojo.excel.PowerGenerationUserExcel;
import com.njcn.device.pms.pojo.param.PowerDistributionareaParam;
import com.njcn.device.pms.pojo.param.PowerGenerationUserParam;
import com.njcn.device.pms.pojo.param.PowerUserParam;
import com.njcn.device.pms.pojo.po.PowerClient;
import com.njcn.device.pms.pojo.po.GeneratrixWire;
import com.njcn.device.pms.pojo.po.PowerGenerationUser;
import com.njcn.device.pms.pojo.po.StatationStat;
import com.njcn.device.pms.pojo.vo.PowerGenerationUserVO;
import com.njcn.device.pms.service.majornetwork.IDistributionMonitorService;
import com.njcn.device.pms.service.majornetwork.IGeneratrixWireService;
import com.njcn.device.pms.service.majornetwork.IPowerGenerationUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.device.pms.service.majornetwork.IStatationStatService;
import com.njcn.device.pms.utils.PubUtil;
import com.njcn.poi.excel.ExcelUtil;
import com.njcn.poi.excel.PullDown;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
import com.njcn.web.factory.PageFactory;
import com.njcn.web.pojo.param.BaseParam;
import com.njcn.web.utils.RequestUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
@@ -43,8 +68,10 @@ import java.util.Objects;
public class PowerGenerationUserServiceImpl extends ServiceImpl<PowerGenerationUserMapper, PowerGenerationUser> implements IPowerGenerationUserService {
private final DeptFeignClient deptFeignClient;
private final DicDataFeignClient dicDataFeignClient;
private final IDistributionMonitorService iDistributionMonitorService;
private final IStatationStatService statationStatService;
private final IGeneratrixWireService generatrixWireService;
@Override
public boolean addPowerGenerationUser(PowerGenerationUserParam powerGenerationUserParam) {
@@ -116,6 +143,159 @@ public class PowerGenerationUserServiceImpl extends ServiceImpl<PowerGenerationU
return this.list(queryWrapper);
}
@Override
public void export() {
ExportParams exportParams = new ExportParams("发电用户台账数据模板(带*字段均是必填,请严格按照模板标准填入数据)", "发电用户台账数据信息");
List<PullDown> pullDowns=new ArrayList<>();
//电源类别
List<DictData> powerCategory = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.POWER_CATEGORY.getCode()).getData();
//电站类型
List<DictData> powerStationType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.POWER_STATION_TYPE.getCode()).getData();
//发电方式
List<DictData> powerGeneration = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.POWER_GENERATION.getCode()).getData();
//电压等级
List<DictData> devVoltage = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
//能源消纳方式
List<DictData> connectionMode = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.CONNECTION_MODE.getCode()).getData();
//用电客户状态
List<DictData> eccStat = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.ECC_STAT.getCode()).getData();
PullDown pullDown;
pullDown=new PullDown();
pullDown.setFirstCol(6);
pullDown.setLastCol(6);
pullDown.setStrings(powerCategory.stream().map(DictData::getName).collect(Collectors.toList()));
pullDowns.add(pullDown);
pullDown=new PullDown();
pullDown.setFirstCol(7);
pullDown.setLastCol(7);
pullDown.setStrings(powerStationType.stream().map(DictData::getName).collect(Collectors.toList()));
pullDowns.add(pullDown);
pullDown=new PullDown();
pullDown.setFirstCol(8);
pullDown.setLastCol(8);
pullDown.setStrings(powerGeneration.stream().map(DictData::getName).collect(Collectors.toList()));
pullDowns.add(pullDown);
pullDown=new PullDown();
pullDown.setFirstCol(9);
pullDown.setLastCol(9);
pullDown.setStrings(devVoltage.stream().map(DictData::getName).collect(Collectors.toList()));
pullDowns.add(pullDown);
pullDown=new PullDown();
pullDown.setFirstCol(12);
pullDown.setLastCol(12);
pullDown.setStrings(connectionMode.stream().map(DictData::getName).collect(Collectors.toList()));
pullDowns.add(pullDown);
pullDown=new PullDown();
pullDown.setFirstCol(13);
pullDown.setLastCol(13);
pullDown.setStrings(eccStat.stream().map(DictData::getName).collect(Collectors.toList()));
pullDowns.add(pullDown);
pullDown=new PullDown();
pullDown.setFirstCol(20);
pullDown.setLastCol(20);
pullDown.setStrings(Arrays.asList("",""));
pullDowns.add(pullDown);
ExcelUtil.exportExcelPullDown(exportParams,"发电用户台账数据信息.xlsx",pullDowns, PowerGenerationUserExcel.class, new ArrayList<>());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void importGenerationUserExcel(List<PowerGenerationUserExcel.ErrMsg> list, HttpServletResponse response) {
List<PowerGenerationUser> info=new ArrayList<>();
List<PowerGenerationUserExcel.ErrMsg> errInfo=new ArrayList<>();
if(CollUtil.isNotEmpty(list)){
PowerGenerationUser user;
//获取部门信息
List<PvTerminalTreeVO> depts = deptFeignClient.allDeptList().getData();
//电源类别
List<DictData> powerCategory = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.POWER_CATEGORY.getCode()).getData();
//电站类型
List<DictData> powerStationType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.POWER_STATION_TYPE.getCode()).getData();
//发电方式
List<DictData> powerGeneration = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.POWER_GENERATION.getCode()).getData();
//电压等级
List<DictData> devVoltage = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
//能源消纳方式
List<DictData> connectionMode = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.CONNECTION_MODE.getCode()).getData();
//用电客户状态
List<DictData> eccStat = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.ECC_STAT.getCode()).getData();
for (PowerGenerationUserExcel.ErrMsg msg : list) {
String objNull = PubUtil.isObjNull(msg);
if(StrUtil.isNotBlank(objNull)){
msg.setErrMsg(objNull);
errInfo.add(msg);
continue;
}
user=new PowerGenerationUser();
user.setId(msg.getId());
user.setName(msg.getName());
List<PvTerminalTreeVO> deptList = depts.stream().filter(x -> x.getCode().contains(msg.getOrgId())).collect(Collectors.toList());
if(CollUtil.isEmpty(deptList)){
String org = PubUtil.subString(msg.getOrgName().replace("国网",""));
List<PvTerminalTreeVO> deptName = depts.stream().filter(x -> x.getName().contains(org)).collect(Collectors.toList());
if(CollUtil.isNotEmpty(deptName)){
user.setOrgName(deptName.get(0).getName());
user.setOrgId(deptName.get(0).getCode());
}else{
msg.setErrMsg("组织机构不存在");
errInfo.add(msg);
continue;
}
}else{
user.setOrgName(deptList.get(0).getName());
user.setOrgId(deptList.get(0).getCode());
}
user.setOperationName(msg.getOperationName());
user.setOperationId(msg.getOperationId());
user.setPowerCategory(PubUtil.getDicById(msg.getPowerCategory(),powerCategory));
user.setPowerStationType(PubUtil.getDicById(msg.getPowerStationType(),powerStationType));
user.setPowerGenerationMode(PubUtil.getDicById(msg.getPowerGenerationMode(),powerGeneration));
user.setVoltageLevel(PubUtil.getDicById(msg.getVoltageLevel(),devVoltage));
user.setSourceCapacity(msg.getSourceCapacity());
user.setConnectionMode(PubUtil.getDicById(msg.getConnectionMode(),connectionMode));
user.setGcStat(PubUtil.getDicById(msg.getGcStat(),eccStat));
user.setPowerStationId(msg.getPowerStationId());
user.setLineId(msg.getLineId());
user.setPlatformId(msg.getPlatformId());
user.setUserTag("发电用户");
user.setIsUpToGrid("".equals(msg.getIsUpToGrid())?1:0);
DateTime dateTime = DateUtil.parseDate(msg.getConnectionDate());
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = dateTime.toInstant().atZone(zoneId).toLocalDateTime();
user.setConnectionDate(localDateTime.toLocalDate());
user.setStatus(1);
user.setCreateBy(RequestUtil.getUserIndex());
user.setCreateTime(LocalDateTimeUtil.now());
user.setUpdateBy(RequestUtil.getUserIndex());
user.setUpdateTime(LocalDateTimeUtil.now());
info.add(user);
}
if(CollUtil.isNotEmpty(info)){
info = info.stream().collect(Collectors.collectingAndThen
(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(o -> o.getId()))), ArrayList::new));
List<String> ids = info.stream().map(PowerGenerationUser::getId).distinct().collect(Collectors.toList());
List<PowerGenerationUserExcel.ErrMsg> subInfo = list.stream().filter(x -> ids.contains(x.getId())).collect(Collectors.toList());
addSub(subInfo,devVoltage);
this.remove(new LambdaQueryWrapper<PowerGenerationUser>()
.in(PowerGenerationUser::getId, ids)
);
this.saveBatch(info, 1000);
}
if (CollUtil.isNotEmpty(errInfo)) {
PubUtil.exportExcel(DateUtil.now() + "_发电用户台账错误信息.xlsx", errInfo,PowerGenerationUserExcel.ErrMsg.class, response);
}
}
}
private void checkParam(PowerGenerationUserParam powerGenerationUserParam,Boolean updateFlag){
@@ -135,5 +315,63 @@ public class PowerGenerationUserServiceImpl extends ServiceImpl<PowerGenerationU
}
//变电站和线路插入
public void addSub(List<PowerGenerationUserExcel.ErrMsg> info, List<DictData> devVoltage) {
List<StatationStat> stats=new ArrayList<>();
StatationStat stat;
List<GeneratrixWire> wires=new ArrayList<>();
GeneratrixWire wire;
List<StatationStat> oldStat = statationStatService.list();
List<String> statIds = oldStat.stream().map(StatationStat::getPowerId).distinct().collect(Collectors.toList());
List<GeneratrixWire> oldWire = generatrixWireService.list();
List<String> wireIds = oldWire.stream().map(x-> x.getId()+"_"+x.getStationId()).distinct().collect(Collectors.toList());
//变电站集合
ArrayList<PowerGenerationUserExcel.ErrMsg> statList = info.stream().collect(Collectors.collectingAndThen
(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(o -> o.getPowerStationId()))), ArrayList::new));
for (PowerGenerationUserExcel.ErrMsg errMsg : statList) {
if(!statIds.contains(errMsg.getPowerStationId())){
stat=new StatationStat();
stat.setPowerId(errMsg.getPowerStationId());
stat.setPowerName(errMsg.getPowerStationName());
stat.setOrgId(errMsg.getOrgId());
stat.setOrgName(errMsg.getOrgName());
stat.setShouldBeNum(100);
stat.setVoltageLevel(PubUtil.getDicById(errMsg.getVoltageLevel(),devVoltage));
stat.setStatus(1);
stat.setCreateBy(RequestUtil.getUserIndex());
stat.setCreateTime(LocalDateTimeUtil.now());
stat.setUpdateBy(RequestUtil.getUserIndex());
stat.setUpdateTime(LocalDateTimeUtil.now());
stats.add(stat);
}
}
//线路
ArrayList<PowerGenerationUserExcel.ErrMsg> wireList = info.stream().collect(Collectors.collectingAndThen
(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(o -> o.getLineId()+";"+o.getPowerStationId()))), ArrayList::new));
for (PowerGenerationUserExcel.ErrMsg errMsg : wireList){
if(!wireIds.contains(errMsg.getLineId()+"_"+errMsg.getPowerStationId())){
wire=new GeneratrixWire();
wire.setId(errMsg.getLineId());
wire.setName(errMsg.getLineName());
wire.setStationId(errMsg.getPowerStationId());
wire.setStationName(errMsg.getPowerStationName());
wire.setGeneratrixName(errMsg.getPowerStationName());
wire.setScale(PubUtil.getDicById(errMsg.getVoltageLevel(),devVoltage));
wire.setStatus(1);
wire.setCreateBy(RequestUtil.getUserIndex());
wire.setCreateTime(LocalDateTimeUtil.now());
wire.setUpdateBy(RequestUtil.getUserIndex());
wire.setUpdateTime(LocalDateTimeUtil.now());
wires.add(wire);
}
}
if(CollUtil.isNotEmpty(stats)){
statationStatService.saveBatch(stats);
}
if(CollUtil.isNotEmpty(wires)){
generatrixWireService.saveBatch(wires);
}
}
}