diff --git a/pqs-common/common-poi/src/main/java/com/njcn/poi/excel/ExcelUtil.java b/pqs-common/common-poi/src/main/java/com/njcn/poi/excel/ExcelUtil.java index 004a4c489..5173ff6c2 100644 --- a/pqs-common/common-poi/src/main/java/com/njcn/poi/excel/ExcelUtil.java +++ b/pqs-common/common-poi/src/main/java/com/njcn/poi/excel/ExcelUtil.java @@ -2,6 +2,8 @@ package com.njcn.poi.excel; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.export.ExcelExportService; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.CharsetUtil; import com.njcn.web.utils.HttpServletUtil; import lombok.extern.slf4j.Slf4j; @@ -20,6 +22,8 @@ import java.io.FileOutputStream; import java.io.IOException; import java.net.URLEncoder; import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; /** * @author hongawen @@ -54,13 +58,28 @@ public class ExcelUtil { * @param fileName 文件名 */ public static void exportExcel(ExportParams exportParams,String fileName, Class pojoClass, Collection dataSet) { + exportExcelPullDown(exportParams,fileName,null ,pojoClass, dataSet); + } + + + /** + * 指定名称、数据下载报表(带指定标题将*显示比必填信息),带有下拉信息 + * + * @param fileName 文件名 + */ + public static void exportExcelPullDown(ExportParams exportParams, String fileName, List pullDowns, Class pojoClass, Collection dataSet) { HttpServletResponse response = HttpServletUtil.getResponse(); try (ServletOutputStream outputStream = response.getOutputStream()) { fileName = URLEncoder.encode(fileName, CharsetUtil.UTF_8); response.reset(); - response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName ); response.setContentType("application/octet-stream;charset=UTF-8"); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, dataSet); + if(CollUtil.isNotEmpty(pullDowns)){ + for (PullDown pullDown : pullDowns) { + ExcelUtil.selectList(workbook, pullDown.getFirstCol(), pullDown.getLastCol(), pullDown.getStrings().toArray(new String[]{})); + } + } Sheet sheetAt = workbook.getSheetAt(0); //获取列数 int physicalNumberOfCells = sheetAt.getRow(0).getPhysicalNumberOfCells(); diff --git a/pqs-common/common-poi/src/main/java/com/njcn/poi/excel/PullDown.java b/pqs-common/common-poi/src/main/java/com/njcn/poi/excel/PullDown.java new file mode 100644 index 000000000..322b89b10 --- /dev/null +++ b/pqs-common/common-poi/src/main/java/com/njcn/poi/excel/PullDown.java @@ -0,0 +1,21 @@ +package com.njcn.poi.excel; + +import lombok.Data; + +import java.util.List; + +/** + * @author wr 设置下拉 + * @description + * @date 2023/11/23 11:38 + */ +@Data +public class PullDown { + + //起始列 + private Integer firstCol; + //结束列 + private Integer lastCol; + //属性值 + private List strings; +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/excel/PowerDistributionAreaExcel.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/excel/PowerDistributionAreaExcel.java new file mode 100644 index 000000000..b3ed59005 --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/excel/PowerDistributionAreaExcel.java @@ -0,0 +1,198 @@ +package com.njcn.device.pms.pojo.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.njcn.device.pms.utils.ExcelValid; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 台区导入模板 + *

+ * + * @author hongawen + * @since 2022-10-14 + */ +@Data +public class PowerDistributionAreaExcel implements Serializable { + + + private static final long serialVersionUID = 1L; + + + @Excel(name = "*台区编号", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*台区编号") + @ExcelValid(message = "台区编号不能为空") + private String id; + + + @Excel(name = "*台区名称", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*台区名称") + @ExcelValid(message = "台区名称不能为空") + private String name; + + + @Excel(name = "*组织机构名称", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*组织机构名称") + @ExcelValid(message = "组织机构名称不能为空") + private String orgName; + + + @Excel(name = "*组织机构ID", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*组织机构ID") + @ExcelValid(message = "组织机构ID不能为空") + private String orgId; + + + @Excel(name = "*运维单位名称", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*运维单位名称") + @ExcelValid(message = "运维单位名称不能为空") + private String operationName; + + + @Excel(name = "*运维单位ID", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*运维单位ID") + @ExcelValid(message = "运维单位ID不能为空") + private String operationId; + + + @Excel(name = "*变电站名称", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*变电站名称") + @ExcelValid(message = "变电站名称不能为空") + private String powerrName; + + + @Excel(name = "*变电站ID", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*变电站ID") + @ExcelValid(message = "变电站ID不能为空") + private String powerStationId; + + + @Excel(name = "*监测线路名称", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*监测线路名称") + @ExcelValid(message = "监测线路名称不能为空") + private String lineName; + + + @Excel(name = "*所属线路ID", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*所属线路ID") + @ExcelValid(message = "所属线路ID不能为空") + private String lineId; + + + @Excel(name = "*电压等级", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*电压等级") + @ExcelValid(message = "电压等级不能为空") + private String voltageLevel; + + + + @Excel(name = "*配变容量", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*配变容量") + @ExcelValid(message = "配变容量不能为空") + private Float pCapacity; + + + @Excel(name = "*地区特征", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*地区特征") + @ExcelValid(message = "地区特征不能为空") + private String regionalism; + + + + @Excel(name = "*是否农网", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*是否农网") + @ExcelValid(message = "是否农网不能为空") + private String ifRuralPowerGrid; + + + @Excel(name = "*使用性质", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*使用性质") + @ExcelValid(message = "使用性质不能为空") + private String natureOfUse; + + + @Excel(name = "*供电半径", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*供电半径") + @ExcelValid(message = "供电半径不能为空") + private Float powerSupplyRadius; + + + @Excel(name = "*供电线路总长度", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*供电线路总长度") + @ExcelValid(message = "供电线路总长度不能为空") + private Float lineLength; + + + @Excel(name = "*运行状态", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*运行状态") + @ExcelValid(message = "运行状态不能为空") + private String state; + + + @Excel(name = "*分布式光伏用户数", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*分布式光伏用户数") + @ExcelValid(message = "分布式光伏用户数不能为空") + private Integer distributedPhotovoltaicNum; + + + @Excel(name = "*分布式光伏总装机容量", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*分布式光伏总装机容量") + @ExcelValid(message = "分布式光伏总装机容量不能为空") + private Float photovoltaicCapacity; + + + @Excel(name = "*是否有电动汽车接入", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*是否有电动汽车接入") + @ExcelValid(message = "是否有电动汽车接入不能为空") + private String ifBevAp; + + + @Excel(name = "*接入负荷类型", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*接入负荷类型") + @ExcelValid(message = "接入负荷类型不能为空") + private String apLoadType; + + + @Excel(name = "*是否是上送国网监测点", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*是否是上送国网监测点") + @ExcelValid(message = "是否是上送国网监测点不能为空") + private String isUpToGrid; + + @Data + public static class ErrMsg extends PowerDistributionAreaExcel { + + @Excel(name = "错误信息", width = 50) + @ColumnWidth(60) + @ExcelProperty(value = "错误信息") + private String errMsg; + + } + +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/excel/PowerGenerationUserExcel.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/excel/PowerGenerationUserExcel.java new file mode 100644 index 000000000..31bab9174 --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/excel/PowerGenerationUserExcel.java @@ -0,0 +1,158 @@ +package com.njcn.device.pms.pojo.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.njcn.device.pms.utils.ExcelValid; +import lombok.Data; + +import java.io.Serializable; + + +/** + * 发电用户导入模板 + */ +@Data +public class PowerGenerationUserExcel implements Serializable { + + private static final long serialVersionUID = 1L; + + + @Excel(name = "*用户编号", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*用户编号") + @ExcelValid(message = "用户编号不能为空") + private String id; + + @Excel(name = "*用户名称", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*用户名称") + @ExcelValid(message = "用户名称不能为空") + private String name; + + @Excel(name = "*组织机构名称", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*组织机构名称") + @ExcelValid(message = "组织机构名称不能为空") + + private String orgName; + + @Excel(name = "*组织机构ID", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*组织机构ID") + @ExcelValid(message = "组织机构ID不能为空") + private String orgId; + + @Excel(name = "*运维单位名称", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*运维单位名称") + @ExcelValid(message = "运维单位名称不能为空") + private String operationName; + + @Excel(name = "*运维单位ID", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*运维单位ID") + @ExcelValid(message = "运维单位ID不能为空") + private String operationId; + + @Excel(name = "*电源类别", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*电源类别") + @ExcelValid(message = "电源类别不能为空") + private String powerCategory; + + @Excel(name = "*电站类型", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*电站类型") + @ExcelValid(message = "电站类型不能为空") + private String powerStationType; + + @Excel(name = "*发电方式", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*发电方式") + @ExcelValid(message = "发电方式不能为空") + private String powerGenerationMode; + + @Excel(name = "*并网电压等级", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*并网电压等级") + @ExcelValid(message = "并网电压等级不能为空") + private String voltageLevel; + + @Excel(name = "*总装机容量", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*总装机容量") + @ExcelValid(message = "总装机容量不能为空") + private Float sourceCapacity; + + @Excel(name = "*并网日期(yyyy-MM-dd)", importFormat = "yyyy-MM-dd", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*并网日期(yyyy-MM-dd)") + @ExcelValid(message = "并网日期(yyyy-MM-dd)不能为空") + private String connectionDate; + + @Excel(name = "*能源消纳方式", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*能源消纳方式") + @ExcelValid(message = "能源消纳方式不能为空") + private String connectionMode; + + @Excel(name = "*客户状态", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*客户状态") + @ExcelValid(message = "客户状态不能为空") + private String gcStat; + + @Excel(name = "*变电站编号", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*变电站编号") + @ExcelValid(message = "变电站编号不能为空") + private String powerStationId; + + @Excel(name = "*变电站名称", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*变电站名称") + @ExcelValid(message = "变电站名称不能为空") + private String powerStationName; + + @Excel(name = "*供电线路编号", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*供电线路编号") + @ExcelValid(message = "供电线路编号不能为空") + private String lineId; + + @Excel(name = "*供电线路名称", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*供电线路名称") + @ExcelValid(message = "供电线路名称不能为空") + private String lineName; + + @Excel(name = "*供电台区", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*供电台区") + @ExcelValid(message = "供电台区不能为空") + private String platformId; + + @Excel(name = "*供电台区名称", width = 30) + @ColumnWidth(30) + @ExcelProperty(value = "*供电台区名称") + @ExcelValid(message = "供电台区名称不能为空") + private String platformName; + + + @Excel(name = "*是否是上送国网监测点", replace = {"否_0", "是_1"}, width = 40) + @ColumnWidth(45) + @ExcelProperty(value = "*是否是上送国网监测点") + @ExcelValid(message = "是否是上送国网监测点不能为空") + private String isUpToGrid; + + @Data + public static class ErrMsg extends PowerGenerationUserExcel { + + @Excel(name = "错误信息", width = 50) + @ColumnWidth(60) + @ExcelProperty(value = "错误信息") + private String errMsg; + + } +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/GeneratrixWire.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/GeneratrixWire.java index 3277d4de3..7cc355f02 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/GeneratrixWire.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/GeneratrixWire.java @@ -43,6 +43,7 @@ public class GeneratrixWire extends BaseEntity { /** * 关联中台的母线id */ + @TableField(exist = false) private String relationId; diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/StatationStat.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/StatationStat.java index 059e98a4f..d941ac7f0 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/StatationStat.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/StatationStat.java @@ -1,5 +1,6 @@ package com.njcn.device.pms.pojo.po; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.njcn.db.bo.BaseEntity; @@ -72,6 +73,7 @@ public class StatationStat extends BaseEntity { /** * 关联中台的母线id */ + @TableField(exist = false) private String relationId; diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/utils/ExcelValid.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/utils/ExcelValid.java new file mode 100644 index 000000000..c8ce47680 --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/utils/ExcelValid.java @@ -0,0 +1,16 @@ +package com.njcn.device.pms.utils; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + *

Excel导入必填校验注解

+ * + */ +@Target({ ElementType.FIELD, ElementType.TYPE }) +@Retention(RetentionPolicy.RUNTIME) +public @interface ExcelValid { + String message() default "导入有未填入的字段"; +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/utils/PubUtil.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/utils/PubUtil.java new file mode 100644 index 000000000..54c422b4d --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/utils/PubUtil.java @@ -0,0 +1,96 @@ +package com.njcn.device.pms.utils; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.CharsetUtil; +import com.alibaba.excel.EasyExcel; +import com.njcn.system.pojo.po.DictData; +import lombok.SneakyThrows; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @author wr + * @description + * @date 2023/11/23 19:48 + */ +public class PubUtil { + + /** + * 导入模拟判断是否为空 + * @param object + * @return + */ + @SneakyThrows + public static String isObjNull(Object object) { + Field[] fields = object.getClass().getSuperclass().getDeclaredFields(); + StringBuilder builder = new StringBuilder(); + for (Field field : fields) { + //设置可访问 + field.setAccessible(true); + //属性的值 + Object fieldValue = field.get(object); + //是否包含必填校验注解 + boolean isExcelValid = field.isAnnotationPresent(ExcelValid.class); + if (isExcelValid && Objects.isNull(fieldValue)) { + builder.append(field.getAnnotation(ExcelValid.class).message() + "; "); + } + } + return builder.toString(); + } + + public static 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("国网秦皇岛市抚宁区供电公司","抚宁县供电公司") + .replace("滦县供电公司","滦南县供电公司") + .replace("下花园客户服务分中心","下花园区供电中心") + .replace("宣化客户服务分中心","宣化区供电中心") + .replace("客户服务中心","供电公司") + .replace("有限","") + .replace("分",""); + } + return replace; + } + + public static String getDicById(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 static 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) { + e.printStackTrace(); + } + } +} diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsDistributionMonitorController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsDistributionMonitorController.java index d5b115428..b0da9e3a8 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsDistributionMonitorController.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsDistributionMonitorController.java @@ -315,5 +315,29 @@ public class PmsDistributionMonitorController extends BaseController { } + @ApiOperation(value = "将用户数据导入到配网表中") + @PostMapping("/savePmsDistributionUser") + public HttpResult 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 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); + } + + + } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsPowerDistributionareaController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsPowerDistributionareaController.java index 08cc4904c..739b7948d 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsPowerDistributionareaController.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsPowerDistributionareaController.java @@ -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; /** *

@@ -168,5 +175,29 @@ public class PmsPowerDistributionareaController extends BaseController { List 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 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 importDistributionAreaExcel(@ApiParam(value = "文件", required = true) @RequestPart("file") MultipartFile file, HttpServletResponse response) throws IOException { + String methodDescribe = getMethodDescribe("importDistributionAreaExcel"); + List list = EasyExcel.read(file.getInputStream()) + .head(PowerDistributionAreaExcel.ErrMsg.class) + .headRowNumber(2) + .doReadAllSync(); + iPowerDistributionareaService.importDistributionAreaExcel(list, response); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + + } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsPowerGenerationUserController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsPowerGenerationUserController.java index ab9b567e9..c9dfbf50c 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsPowerGenerationUserController.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsPowerGenerationUserController.java @@ -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; /** *

@@ -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 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 importGenerationUserExcel(@ApiParam(value = "文件", required = true) @RequestPart("file") MultipartFile file, HttpServletResponse response) throws IOException { + String methodDescribe = getMethodDescribe("importGenerationUserExcel"); + List list = EasyExcel.read(file.getInputStream()) + .head(PowerGenerationUserExcel.ErrMsg.class) + .headRowNumber(2) + .doReadAllSync(); + iPowerGenerationUserService.importGenerationUserExcel(list, response); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java index 1418dd7bb..6c45d52f6 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java @@ -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 getBaseDisMonitorIds(@Param("list")List list,@Param("monitorSortIds")List 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); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml index d5d13bdf3..bfa8eb1c2 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml @@ -1,6 +1,87 @@ + + 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 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 + + + + delete FROM pms_distribution_monitor + + + and Monitor_Sort = #{dic} + + + and If_Power_User = #{type} + + +