From bddd1efef38056882da033584f6d40893f706f0d Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Tue, 20 Aug 2024 16:23:00 +0800 Subject: [PATCH] =?UTF-8?q?1.excel=E9=80=9A=E7=94=A8=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=EF=BC=8C=E8=A7=A3=E5=86=B3=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E4=B8=8D=E6=98=AF=E6=96=87=E6=9C=AC=E9=97=AE?= =?UTF-8?q?=E9=A2=98=202.=E8=A7=A3=E5=86=B3=E9=83=A8=E5=88=86=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E6=9F=A5=E8=AF=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/njcn/poi/excel/ExcelUtil.java | 117 ++++++++++++------ .../java/com/njcn/poi/excel/PullDown.java | 5 + .../device/SupervisionDevMainReportParam.java | 5 + .../pojo/vo/survey/SurveyTestVO.java | 18 ++- .../device/DeVReportManageController.java | 1 - ...SupervisionDevMainReportPOServiceImpl.java | 84 ++++++++++--- .../user/impl/UserReportPOServiceImpl.java | 32 +++-- 7 files changed, 188 insertions(+), 74 deletions(-) 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 b4ee7882c..353815a80 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 @@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.CharsetUtil; +import cn.hutool.core.util.ObjectUtil; import com.njcn.web.utils.HttpServletUtil; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.*; @@ -112,15 +113,26 @@ public class ExcelUtil { setTopLevel(workbook, pullDowns); if (CollUtil.isNotEmpty(pullDowns)) { int num = 1; + CellStyle cellStyle = workbook.createCellStyle(); + DataFormat format = workbook.createDataFormat(); + cellStyle.setDataFormat(format.getFormat("@")); for (PullDown pullDown : pullDowns) { - String colName = numberToExcelColumn(num); - int sum = pullDown.getStrings().stream().mapToInt(String::length).sum(); - if(sum>255){ - ExcelUtil.selectListMaxLength(workbook, pullDown.getFirstCol(), pullDown.getLastCol(),pullDown.getStrings().size(),colName); - num++; - }else{ - ExcelUtil.selectList(workbook, pullDown.getFirstCol(), pullDown.getLastCol(), pullDown.getStrings().toArray(new String[]{})); + if (pullDown.getIsText()) { + ExcelUtil.selectListText(workbook, pullDown.getFirstCol(),cellStyle); + } else { + String colName = numberToExcelColumn(num); + int sum = pullDown.getStrings().stream().mapToInt(String::length).sum(); + if (sum == 0) { + continue; + } + if (sum > 255) { + ExcelUtil.selectListMaxLength(workbook, pullDown.getFirstCol(), pullDown.getLastCol(), pullDown.getStrings().size(), colName); + num++; + } else { + ExcelUtil.selectList(workbook, pullDown.getFirstCol(), pullDown.getLastCol(), pullDown.getStrings().toArray(new String[]{})); + } } + } } Sheet sheetAt = workbook.getSheetAt(0); @@ -240,16 +252,17 @@ public class ExcelUtil { // 对sheet页生效 sheet.addValidationData(validation); } - /** - * @Description: 当下拉框超过最大字符255,设置隐藏表单来进行展示 - * @param workbook - * @param firstCol - * @param lastCol - * @param colName 列A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z - * @Author: wr - * @Date: 2024/8/13 15:07 - */ - public static void selectListMaxLength(Workbook workbook,int firstCol, int lastCol,int row ,String colName) { + + /** + * @param workbook + * @param firstCol + * @param lastCol + * @param colName 列A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z + * @Description: 当下拉框超过最大字符255,设置隐藏表单来进行展示 + * @Author: wr + * @Date: 2024/8/13 15:07 + */ + public static void selectListMaxLength(Workbook workbook, int firstCol, int lastCol, int row, String colName) { Sheet sheet = workbook.getSheetAt(0); // 生成下拉列表 // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列 @@ -261,6 +274,24 @@ public class ExcelUtil { DataValidation validation = help.createValidation(hiddentConstraint, regions); sheet.addValidationData(validation); } + /** + * @Description: + * @param workbook + * @param firstCol + * @Author: wr + * @Date: 2024/8/20 10:44 + */ + public static void selectListText(Workbook workbook, int firstCol,CellStyle cellStyle) { + Sheet sheet = workbook.getSheetAt(0); + for (int i = 2; i < 65535; i++) { + Row row = sheet.getRow(i); + if(ObjectUtil.isNull(row)){ + row = sheet.createRow(i); + } + Cell cell = row.createCell(firstCol); + cell.setCellStyle(cellStyle); + } + } /** * 指定名称、数据下载报表(带指定标题将*显示比必填信息),带有下拉信息 @@ -364,38 +395,44 @@ public class ExcelUtil { /** * 设置隐藏表单来进行下拉框 + * * @param workbook * @param pullDowns */ private static void setTopLevel(Workbook workbook, List pullDowns) { int num = 0; for (PullDown pullDown : pullDowns) { - int sum = pullDown.getStrings().stream().mapToInt(String::length).sum(); - if (sum > 255) { - // 创建隐藏sheet - String hiddenSheetName = "hiddenSheetA"; - if (num == 0) { - workbook.createSheet(hiddenSheetName); + if (!pullDown.getIsText()) { + int sum = pullDown.getStrings().stream().mapToInt(String::length).sum(); + if (sum == 0) { + continue; } - //false展示隐藏sheet ,true不展示隐藏sheet - workbook.setSheetHidden(workbook.getSheetIndex(workbook.getSheet(hiddenSheetName)), true); - Sheet sheet = workbook.getSheet(hiddenSheetName); - if(num == 0){ - //sheet.getLastRowNum无法区分 有一行和没有 所以这里先建一行 - sheet.createRow(0); - } - Row row; //创建数据行 - sheet.setColumnWidth(num, 4000); //设置每列的列宽 - for (int j = 0; j < pullDown.getStrings().size(); j++) { - if (sheet.getLastRowNum() < j) { - row = sheet.createRow(j); //创建数据行 - } else { - row = sheet.getRow(j); + if (sum > 255) { + // 创建隐藏sheet + String hiddenSheetName = "hiddenSheetA"; + if (num == 0) { + workbook.createSheet(hiddenSheetName); } - //设置对应单元格的值 - row.createCell(num).setCellValue(pullDown.getStrings().get(j)); + //false展示隐藏sheet ,true不展示隐藏sheet + workbook.setSheetHidden(workbook.getSheetIndex(workbook.getSheet(hiddenSheetName)), true); + Sheet sheet = workbook.getSheet(hiddenSheetName); + if (num == 0) { + //sheet.getLastRowNum无法区分 有一行和没有 所以这里先建一行 + sheet.createRow(0); + } + Row row; //创建数据行 + sheet.setColumnWidth(num, 4000); //设置每列的列宽 + for (int j = 0; j < pullDown.getStrings().size(); j++) { + if (sheet.getLastRowNum() < j) { + row = sheet.createRow(j); //创建数据行 + } else { + row = sheet.getRow(j); + } + //设置对应单元格的值 + row.createCell(num).setCellValue(pullDown.getStrings().get(j)); + } + num++; } - num++; } } } 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 index 322b89b10..aaaed6b0d 100644 --- 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 @@ -14,8 +14,13 @@ public class PullDown { //起始列 private Integer firstCol; + //结束列 private Integer lastCol; + + //是否设置单元格(文本) + private Boolean isText = false; + //属性值 private List strings; } diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/param/device/SupervisionDevMainReportParam.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/param/device/SupervisionDevMainReportParam.java index 284f2e3c5..433d9e017 100644 --- a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/param/device/SupervisionDevMainReportParam.java +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/param/device/SupervisionDevMainReportParam.java @@ -156,6 +156,11 @@ public class SupervisionDevMainReportParam { @ApiModelProperty(value = "审批状态") private Integer status; + /** + * 状态:0:系统建档 1:外部导入 + */ + @ApiModelProperty(value = "状态:0:系统建档 1:外部导入") + private Integer importType; @ApiModelProperty("发起人自选审批人 Map") private Map> startUserSelectAssignees; diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/vo/survey/SurveyTestVO.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/vo/survey/SurveyTestVO.java index 9fcb34f70..b55987f47 100644 --- a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/vo/survey/SurveyTestVO.java +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/vo/survey/SurveyTestVO.java @@ -1,7 +1,5 @@ package com.njcn.supervision.pojo.vo.survey; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; import com.njcn.db.bo.BaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -22,14 +20,10 @@ public class SurveyTestVO extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - /** - * 其他报告 - */ - private String otherReport; - /** - * 普测测试管理表id - */ + /** + * 普测测试管理表id + */ private String id; /** @@ -82,7 +76,6 @@ public class SurveyTestVO extends BaseEntity implements Serializable { */ private String deptName; - /** * 计划完成时间 */ @@ -103,6 +96,11 @@ public class SurveyTestVO extends BaseEntity implements Serializable { */ private String supervisionReport; + /** + * 其他报告 + */ + private String otherReport; + /** * 是否有问题 0 没有问题 1 有问题 */ diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/device/DeVReportManageController.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/device/DeVReportManageController.java index e240a671c..6273f3ced 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/device/DeVReportManageController.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/device/DeVReportManageController.java @@ -76,7 +76,6 @@ public class DeVReportManageController extends BaseController { public HttpResult auditDevReport(@RequestBody @Validated SupervisionDevMainReportParam.SupervisionDevMainReportParamUpdate supervisionDevMainReportParamUpdate){ String methodDescribe = getMethodDescribe("auditDevReport"); boolean res = supervisionDevMainReportPOService.auditDevReport(supervisionDevMainReportParamUpdate); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, res, methodDescribe); } diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/impl/SupervisionDevMainReportPOServiceImpl.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/impl/SupervisionDevMainReportPOServiceImpl.java index a2c9a2f02..d74dbe623 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/impl/SupervisionDevMainReportPOServiceImpl.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/impl/SupervisionDevMainReportPOServiceImpl.java @@ -7,8 +7,8 @@ import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.text.StrPool; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -22,6 +22,9 @@ import com.njcn.bpm.pojo.dto.BpmProcessInstanceCreateReqDTO; import com.njcn.bpm.pojo.param.instance.BpmProcessInstanceCancelParam; import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.device.biz.commApi.CommTerminalGeneralClient; +import com.njcn.device.biz.pojo.dto.SubGetBase; +import com.njcn.device.biz.pojo.param.SubstationParam; import com.njcn.device.pms.utils.PubUtil; import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.api.NodeClient; @@ -33,7 +36,6 @@ import com.njcn.supervision.enums.FlowStatusEnum; import com.njcn.supervision.enums.SupervisionKeyEnum; import com.njcn.supervision.enums.SupervisionResponseEnum; import com.njcn.supervision.mapper.device.SupervisionDevMainReportPOMapper; -import com.njcn.supervision.pojo.dto.SensitiveUserSExcel; import com.njcn.supervision.pojo.dto.SupervisionDevMainReportExcel; import com.njcn.supervision.pojo.param.device.SupervisionDevMainReportParam; import com.njcn.supervision.pojo.param.device.SupervisionTempDeviceReportParam; @@ -85,6 +87,7 @@ public class SupervisionDevMainReportPOServiceImpl extends ServiceImpl jiBeiArea = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.JIBEI_AREA.getCode()).getData(); - //所属供电公司 RequestUtil.getDeptIndex() - List depts = deptFeignClient.getDepSonDetailByDeptId("0d52f9f6e43ec0ee83013cd32da93f66").getData(); + //所属供电公司 + List depts = deptFeignClient.getDepSonDetailByDeptId(RequestUtil.getDeptIndex()).getData(); //终端型号 List devType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_TYPE.getCode()).getData(); //通讯类型 @@ -317,11 +327,40 @@ public class SupervisionDevMainReportPOServiceImpl extends ServiceImpl voltageTransformer = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.VOLTAGE_TRANSFORMER.getCode()).getData(); //中性点接线方式 List neutralPoint = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.Neutral_Point.getCode()).getData(); - + SubstationParam substationParam=new SubstationParam(); + substationParam.setOrgIds(depts.stream().map(DeptDTO::getId).distinct().collect(Collectors.toList())); + List data = commterminalGeneralClient.tagOrIdGetSub(substationParam).getData(); List pullDowns = new ArrayList<>(); PullDown pullDown; + pullDown = new PullDown(); + pullDown.setFirstCol(0); + pullDown.setLastCol(0); + pullDown.setIsText(true); + pullDowns.add(pullDown); + + pullDown = new PullDown(); + pullDown.setFirstCol(10); + pullDown.setLastCol(10); + pullDown.setIsText(true); + pullDowns.add(pullDown); + + + pullDown = new PullDown(); + pullDown.setFirstCol(11); + pullDown.setLastCol(11); + pullDown.setIsText(true); + pullDowns.add(pullDown); + + + pullDown = new PullDown(); + pullDown.setFirstCol(20); + pullDown.setLastCol(20); + pullDown.setIsText(true); + pullDowns.add(pullDown); + + pullDown = new PullDown(); pullDown.setFirstCol(1); pullDown.setLastCol(1); @@ -329,11 +368,11 @@ public class SupervisionDevMainReportPOServiceImpl extends ServiceImpl neutralPoint = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.Neutral_Point.getCode()).getData(); + SubstationParam substationParam=new SubstationParam(); + substationParam.setOrgIds(deptS.stream().map(DeptDTO::getId).distinct().collect(Collectors.toList())); + List data = commterminalGeneralClient.tagOrIdGetSub(substationParam).getData(); + SupervisionDevMainReportPO po; if (CollectionUtil.isNotEmpty(devExcels)) { for (SupervisionDevMainReportExcel dev : devExcels) { //todo 需要根据变电站id进行匹配 + List subList = data.stream().filter(x -> x.getName().equals(dev.getSubstation())).collect(Collectors.toList()); + if(CollUtil.isEmpty(subList)){ + //该用户已经录入 + SupervisionDevMainReportExcel.ExcelMsg sensitiveUserExcelMsg = new SupervisionDevMainReportExcel.ExcelMsg(); + BeanUtils.copyProperties(dev, sensitiveUserExcelMsg); + sensitiveUserExcelMsg.setMsg(dev.getTerminalIp().concat("变电站不存在,请检查变电站信息是否是下拉框信息!")); + devMsgList.add(sensitiveUserExcelMsg); + continue; + } LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper .eq(SupervisionTempDeviceReport::getSubstationName, dev.getSubstation()) @@ -542,12 +594,12 @@ public class SupervisionDevMainReportPOServiceImpl extends ServiceImpl getInterferenceUserPage(UserReportParam.UserReportQueryParam userReportQueryParam, Boolean allDataFlag) { QueryWrapper userReportVOQueryWrapper = new QueryWrapper<>(); List colleaguesIds = userFeignClient.getColleaguesIdByUserId(RequestUtil.getUserIndex()).getData(); - userReportVOQueryWrapper.in("supervision_user_report.create_by", colleaguesIds) + List data = deptFeignClient.getDepSonIdtByDeptId(userReportQueryParam.getOrgId()).getData(); + //此处仅查询敏感及重要用户 + userReportVOQueryWrapper.and(wrapper -> + wrapper.in("supervision_user_report.create_by", colleaguesIds) + .or() + .in("supervision_user_report.org_id", data) + ) .eq("supervision_user_report.state", DataStateEnum.ENABLE.getCode()) .eq("supervision_user_report.status", FlowStatusEnum.APPROVE.getCode()); if (!allDataFlag) { //台账不查询全部数据,需要排除敏感及重要用户 userReportVOQueryWrapper.ne("supervision_user_report.user_type", UserNatureEnum.SENSITIVE_USER.getCode()); } - if (StrUtil.isNotBlank(userReportQueryParam.getOrgId())) { - /*获取直接下属子单位*/ - List data = deptFeignClient.getDepSonIdtByDeptId(userReportQueryParam.getOrgId()).getData(); - userReportVOQueryWrapper.in("supervision_user_report.org_id", data); - } if (Objects.nonNull(userReportQueryParam)) { if (StrUtil.isNotBlank(userReportQueryParam.getCity())) { //查询所有区域下的数据 @@ -544,8 +545,13 @@ public class UserReportPOServiceImpl extends ServiceImpl getSensitiveUserPage(UserReportParam.UserReportQueryParam userReportQueryParam) { QueryWrapper userReportVOQueryWrapper = new QueryWrapper<>(); List colleaguesIds = userFeignClient.getColleaguesIdByUserId(RequestUtil.getUserIndex()).getData(); + List data = deptFeignClient.getDepSonIdtByDeptId(userReportQueryParam.getOrgId()).getData(); //此处仅查询敏感及重要用户 - userReportVOQueryWrapper.in("supervision_user_report.create_by", colleaguesIds) + userReportVOQueryWrapper.and(wrapper -> + wrapper.in("supervision_user_report.create_by", colleaguesIds) + .or() + .in("supervision_user_report.org_id", data) + ) .eq("supervision_user_report.state", DataStateEnum.ENABLE.getCode()) .eq("supervision_user_report.user_type", UserNatureEnum.SENSITIVE_USER.getCode()) .eq("supervision_user_report.status", FlowStatusEnum.APPROVE.getCode()); @@ -610,6 +616,12 @@ public class UserReportPOServiceImpl extends ServiceImpl !"风光储".equals(x.getName()) && !"超高压".equals(x.getName())).map(DictData::getName).collect(Collectors.toList())); pullDowns.add(pullDown); + pullDown = new PullDown(); + pullDown.setFirstCol(6); + pullDown.setLastCol(6); + pullDown.setIsText(true); + pullDowns.add(pullDown); + pullDown = new PullDown(); pullDown.setFirstCol(4); pullDown.setLastCol(4);