From 355e3b69fda0566339738d28e09131e3194caae8 Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Thu, 18 Jan 2024 10:42:29 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E7=AE=A1=E7=90=86-=E8=A1=A8?= =?UTF-8?q?=E5=A4=B4=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/enums/ProblemPriorityEnum.java | 55 +++++++++++++++++++ .../service/impl/NcrTrackServiceImpl.java | 48 ++++++++++++---- 2 files changed, 91 insertions(+), 12 deletions(-) create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProblemPriorityEnum.java diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProblemPriorityEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProblemPriorityEnum.java new file mode 100644 index 000000000..c7f4be5a6 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProblemPriorityEnum.java @@ -0,0 +1,55 @@ +package com.jero.modules.project.enums; + +import com.jero.common.constant.enums.CutEnum; + +import java.util.ArrayList; +import java.util.List; + +/** + * 问题优先级枚举类 + */ +public enum ProblemPriorityEnum { + + LOW("低","Low"), + MIDDLE("中","Middle"), + HIGH("高","High"), + ; + + + String valueCn; + String valueEn; + + private ProblemPriorityEnum(String valueCn, String valueEn) { + this.valueCn = valueCn; + this.valueEn = valueEn; + } + + public String getValueCn() { + return valueCn; + } + + public void setValueCn(String valueCn) { + this.valueCn = valueCn; + } + + public String getValueEn() { + return valueEn; + } + + public void setValueEn(String valueEn) { + this.valueEn = valueEn; + } + + public static List getValueAll(String cut) { + ProblemPriorityEnum[] values = values(); + List result = new ArrayList<>(); + for (ProblemPriorityEnum taskStatusEnum : values) { + if(CutEnum.CN.getValue().equals(cut)){ + result.add(taskStatusEnum.getValueCn()); + }else{ + result.add(taskStatusEnum.getValueEn()); + } + } + return result; + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/NcrTrackServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/NcrTrackServiceImpl.java index 55def604b..2e3f0e272 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/NcrTrackServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/NcrTrackServiceImpl.java @@ -22,6 +22,7 @@ import com.jero.modules.project.entity.ProjectTaskInventoryDetailEO; import com.jero.modules.project.enums.ColourEnum; import com.jero.modules.project.enums.ComplianceFlowStatusEnum; import com.jero.modules.project.enums.DataEnum; +import com.jero.modules.project.enums.ProblemPriorityEnum; import com.jero.modules.project.enums.ReviewResultEnum; import com.jero.modules.project.mapper.NcrTrackMapper; import com.jero.modules.project.mapper.ProblemManagementEOMapper; @@ -73,6 +74,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Set; @@ -382,7 +384,7 @@ public class NcrTrackServiceImpl extends ServiceImpl //条件查询 trackVOList = parameterQuery(ncrTrackVO, trackVOList); //表头排序 - heartSort(ncrTrackVO, trackVOList,problemPriorityList,ncrTrackVO.getCut()); + trackVOList = heartSort(ncrTrackVO, trackVOList,problemPriorityList,ncrTrackVO.getCut()); if(StringUtils.isBlank(ncrTrackVO.getOrderByField())){ Collections.sort(trackVOList, new Comparator() { @Override @@ -405,9 +407,10 @@ public class NcrTrackServiceImpl extends ServiceImpl return problemManagement; } - private void heartSort(NcrTrackVO ncrTrackVO, List trackVOList,List problemPriorityList,String cut) { + private List heartSort(NcrTrackVO ncrTrackVO, List trackVOList,List problemPriorityList,String cut) { Collator comparator = Collator.getInstance(Locale.CHINESE); if("problemPriority".equals(ncrTrackVO.getOrderByField())){ + List valueList = ProblemPriorityEnum.getValueAll(cut); //优先级数据字典转换 for (NcrTrackVO trackVO : trackVOList) { String problemPriority = trackVO.getProblemPriority(); @@ -422,18 +425,38 @@ public class NcrTrackServiceImpl extends ServiceImpl } } } + List ncrTrackVOList = new LinkedList<>(); + //优先级没有值的数据 + List dataNoList = trackVOList.stream().filter(e -> !valueList.contains(e.getProblemPriorityName())).collect(Collectors.toList()); + if (OrderEnum.POSITIVE.getValue().equals(ncrTrackVO.getOrderBy())) { - Collections.sort(trackVOList, (e1, e2) -> { - String e1Field = StringUtils.isNotBlank(e1.getProblemPriorityName()) ? e1.getProblemPriorityName() : ""; - String e2Field = StringUtils.isNotBlank(e2.getProblemPriorityName()) ? e2.getProblemPriorityName() : ""; - return comparator.compare(e1Field, e2Field); - }); + for (String s : valueList) { + List collect = trackVOList.stream().filter(e -> s.equals(e.getProblemPriorityName())).collect(Collectors.toList()); + if(ObjectUtils.isNotEmpty(collect)){ + ncrTrackVOList.addAll(collect); + } + } + if(ObjectUtils.isNotEmpty(dataNoList)){ + ncrTrackVOList.addAll(dataNoList); + } + if(ObjectUtils.isNotEmpty(ncrTrackVOList)){ + trackVOList = ncrTrackVOList; + } + } else if (OrderEnum.REVERSE.getValue().equals(ncrTrackVO.getOrderBy())) { - Collections.sort(trackVOList, (e1, e2) -> { - String e1Field = StringUtils.isNotBlank(e1.getProblemPriorityName()) ? e1.getProblemPriorityName() : ""; - String e2Field = StringUtils.isNotBlank(e2.getProblemPriorityName()) ? e2.getProblemPriorityName() : ""; - return comparator.compare(e2Field, e1Field); - }); + for (int i = valueList.size()-1; i >= 0; i--) { + int finalI = i; + List collect = trackVOList.stream().filter(e -> valueList.get(finalI).equals(e.getProblemPriorityName())).collect(Collectors.toList()); + if(ObjectUtils.isNotEmpty(collect)){ + ncrTrackVOList.addAll(collect); + } + } + if(ObjectUtils.isNotEmpty(dataNoList)){ + ncrTrackVOList.addAll(dataNoList); + } + if(ObjectUtils.isNotEmpty(ncrTrackVOList)){ + trackVOList = ncrTrackVOList; + } } } if ("title".equals(ncrTrackVO.getOrderByField())) { @@ -587,6 +610,7 @@ public class NcrTrackServiceImpl extends ServiceImpl }); } } + return trackVOList; } @NotNull