From 8a547eb58cbe03e6ee55f7d4672dc31189100c4a Mon Sep 17 00:00:00 2001 From: ty <1577900710@qq.com> Date: Fri, 12 Apr 2024 14:22:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E6=AD=A3=EF=BC=9A=E6=9C=88=E6=8A=A5?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/AreaMonthReportServiceImpl.java | 32 ++++++++++----------- .../com/hnac/hzims/operational/util/WordUtils.java | 17 +++++++---- .../template/word/stationMonthReport.docx | Bin 22599 -> 22554 bytes 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AreaMonthReportServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AreaMonthReportServiceImpl.java index b839e30..7f3e1cc 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AreaMonthReportServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AreaMonthReportServiceImpl.java @@ -416,10 +416,10 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService { wrapper.eq(OperPhenomenonEntity::getDiscriminateStatus, TreatMethodConstant.AUTO_SCREENED); wrapper.in(OperPhenomenonEntity::getCreateDept, deptIds); List monPhenomenonList = operPhenomenonService.list(wrapper); - monPhenomenonList = monPhenomenonList.stream().filter(s -> s.getDefectGrading() != null).collect(Collectors.toList()); + monPhenomenonList = monPhenomenonList.stream().filter(s -> s.getDefectLevel() != null).collect(Collectors.toList()); List monConclusionList = monPhenomenonList.stream().filter(s -> "1".equals(s.getConclusionStatus())).collect(Collectors.toList()); // 只填写二类及以上缺陷 - List monConclusionListByDefectGrading = monConclusionList.stream().filter(s -> !"1".equals(s.getDefectGrading())).sorted(Comparator.comparing(OperPhenomenonEntity::getCreateDept).reversed().thenComparing(OperPhenomenonEntity::getDefectGrading)).collect(Collectors.toList()); + List monConclusionListByDefectGrading = monConclusionList.stream().filter(s -> !"1".equals(s.getDefectLevel())).sorted(Comparator.comparing(OperPhenomenonEntity::getCreateDept).reversed().thenComparing(OperPhenomenonEntity::getDefectLevel)).collect(Collectors.toList()); // 各电站缺陷处理统计表 ArrayList> checkList = new ArrayList<>(); for (OperPhenomenonEntity operPhenomenonEntity : monConclusionListByDefectGrading) { @@ -432,13 +432,13 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService { HashMap temp = new HashMap<>(); temp.put("name", createDeptName.getData()); String checkLevel=""; - if("1".equals(operPhenomenonEntity.getDefectGrading())) { + if("1".equals(operPhenomenonEntity.getDefectLevel())) { checkLevel="Ⅰ级缺陷"; } - if("2".equals(operPhenomenonEntity.getDefectGrading()) ){ + if("2".equals(operPhenomenonEntity.getDefectLevel()) ){ checkLevel="Ⅱ级缺陷"; } - if("3".equals(operPhenomenonEntity.getDefectGrading()) ){ + if("3".equals(operPhenomenonEntity.getDefectLevel()) ){ checkLevel="Ⅲ级缺陷"; } temp.put("level", checkLevel); @@ -460,7 +460,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService { wrapperYear.eq(OperPhenomenonEntity::getDiscriminateStatus, TreatMethodConstant.AUTO_SCREENED); wrapperYear.in(OperPhenomenonEntity::getCreateDept, deptIds); List yearPhenomenonEntities = operPhenomenonService.list(wrapperYear); - yearPhenomenonEntities = yearPhenomenonEntities.stream().filter(s -> StringUtil.isNotBlank(s.getDefectGrading())).filter(s -> ObjectUtil.isNotEmpty(s.getCreateDept())).collect(Collectors.toList()); + yearPhenomenonEntities = yearPhenomenonEntities.stream().filter(s -> StringUtil.isNotBlank(s.getDefectLevel())).filter(s -> ObjectUtil.isNotEmpty(s.getCreateDept())).collect(Collectors.toList()); List yearConclusionList = yearPhenomenonEntities.stream().filter(s -> "1".equals(s.getConclusionStatus())).collect(Collectors.toList()); ArrayList> checkStatistics = new ArrayList<>(); @@ -480,7 +480,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService { } else { Map>> phenomenonMap = yearPhenomenonEntities.stream().collect( Collectors.groupingBy(OperPhenomenonEntity::getCreateDept, - Collectors.groupingBy(OperPhenomenonEntity::getDefectGrading))); + Collectors.groupingBy(OperPhenomenonEntity::getDefectLevel))); for (Map.Entry>> deptMapEntry : phenomenonMap.entrySet()) { R deptName1 = sysClient.getDeptName(deptMapEntry.getKey()); for (Map.Entry> levelList : deptMapEntry.getValue().entrySet()) { @@ -488,26 +488,26 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService { int shortagesYear = (int) levelList.getValue().stream().filter(s -> "1".equals(s.getConclusionStatus())).count(); double shortagesRate = 0d; if (findShortagesYear != 0 && shortagesYear != 0) { - shortagesRate = BigDecimal.valueOf(shortagesYear).divide(BigDecimal.valueOf(findShortagesYear), 2, RoundingMode.UP).doubleValue(); + shortagesRate = BigDecimal.valueOf(shortagesYear).divide(BigDecimal.valueOf(findShortagesYear), 2, RoundingMode.UP).setScale(2).doubleValue(); } - int findShortagesMon = (int) Optional.ofNullable(monPhenomenonList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelList.getKey())).count(); - int shortagesMon = (int) Optional.ofNullable(monConclusionList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelList.getKey())).count(); + int findShortagesMon = (int) Optional.ofNullable(monPhenomenonList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectLevel().equals(levelList.getKey())).count(); + int shortagesMon = (int) Optional.ofNullable(monConclusionList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectLevel().equals(levelList.getKey())).count(); CheckChartVo checkChartVo = new CheckChartVo(deptName1.getData(), levelList.getKey(), findShortagesMon, shortagesMon, findShortagesYear, shortagesYear, shortagesRate); checkChartRes.add(checkChartVo); } } // 总计 - Map> levelPhenomenonList = yearPhenomenonEntities.stream().collect(Collectors.groupingBy(OperPhenomenonEntity::getDefectGrading)); + Map> levelPhenomenonList = yearPhenomenonEntities.stream().collect(Collectors.groupingBy(OperPhenomenonEntity::getDefectLevel)); for (Map.Entry> levelPhenomenon : levelPhenomenonList.entrySet()) { int findShortagesYear = levelPhenomenon.getValue().size(); int shortagesYear = (int) Optional.ofNullable(yearConclusionList).orElse(new ArrayList<>()).stream() - .filter(s -> s.getDefectGrading().equals(levelPhenomenon.getKey())).count(); + .filter(s -> s.getDefectLevel().equals(levelPhenomenon.getKey())).count(); double shortagesRate = 0d; if (findShortagesYear != 0 && shortagesYear != 0) { shortagesRate = BigDecimal.valueOf(shortagesYear).divide(BigDecimal.valueOf(findShortagesYear), 2, RoundingMode.UP).doubleValue(); } - int findShortagesMon = (int) Optional.ofNullable(monPhenomenonList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelPhenomenon.getKey())).count(); - int shortagesMon = (int) Optional.ofNullable(monConclusionList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelPhenomenon.getKey())).count(); + int findShortagesMon = (int) Optional.ofNullable(monPhenomenonList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectLevel().equals(levelPhenomenon.getKey())).count(); + int shortagesMon = (int) Optional.ofNullable(monConclusionList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectLevel().equals(levelPhenomenon.getKey())).count(); CheckChartVo checkChartVo = new CheckChartVo("总计", levelPhenomenon.getKey(), findShortagesMon, shortagesMon, findShortagesYear, shortagesYear, shortagesRate); checkChartRes.add(checkChartVo); } @@ -528,8 +528,8 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService { temp.put("checkLevel", checkLevel); temp.put("findShortagesMon", checkChartRe.getFindShortagesMon().toString()); temp.put("shortagesMon", checkChartRe.getShortagesMon().toString()); - temp.put("findShortagesYear", checkChartRe.getShortagesYear().toString()); - temp.put("shortagesYear", checkChartRe.getFindShortagesYear().toString()); + temp.put("findShortagesYear", checkChartRe.getFindShortagesYear().toString()); + temp.put("shortagesYear", checkChartRe.getShortagesYear().toString()); temp.put("shortagesRate", checkChartRe.getShortagesRate()* 100 + "%"); checkStatistics.add(temp); map.put("checkStatistics", checkStatistics); diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/util/WordUtils.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/util/WordUtils.java index eafafad..e3581e6 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/util/WordUtils.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/util/WordUtils.java @@ -112,16 +112,23 @@ public abstract class WordUtils { XWPFTable xwpfTable = tableList.get(tabIndex); //获取表格所有行数 List rows = xwpfTable.getRows(); - for (int i = 0; i < rows.size(); i++) { - if (i==rows.size()-1){ - continue; - } + for (int i = 0; i < rows.size()-2; i++) { +// if (i==rows.size()-2){ +// continue; +// } XWPFTableCell cell = rows.get(i).getCell(0); XWPFTableCell cell2 = rows.get(i+1).getCell(0); + XWPFTableCell cell3 = rows.get(i+2).getCell(0); String text = cell.getText(); String text2 = cell2.getText(); + String text3 = cell3.getText(); if (text2.equals(text)){ - mergeCellsVertically(xwpfTable,0,i,i+1); + if (text3.equals(text)){ + mergeCellsVertically(xwpfTable,0,i,i+2); + i=i+1; + }else{ + mergeCellsVertically(xwpfTable,0,i,i+1); + } } } } diff --git a/hzims-service/operational/src/main/resources/template/word/stationMonthReport.docx b/hzims-service/operational/src/main/resources/template/word/stationMonthReport.docx index 7917960eb115922fccd7ba4acc1b0e0d61a20f78..9da28f522f3abd5bfbfa45fe4dc79019e839de4a 100644 GIT binary patch delta 9257 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