问题管理-表头排序

This commit is contained in:
zhn
2024-01-18 10:42:29 +08:00
parent b370f4841b
commit 355e3b69fd
2 changed files with 91 additions and 12 deletions
@@ -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<String> getValueAll(String cut) {
ProblemPriorityEnum[] values = values();
List<String> result = new ArrayList<>();
for (ProblemPriorityEnum taskStatusEnum : values) {
if(CutEnum.CN.getValue().equals(cut)){
result.add(taskStatusEnum.getValueCn());
}else{
result.add(taskStatusEnum.getValueEn());
}
}
return result;
}
}
@@ -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<NcrTrackMapper, NcrTrackVO>
//条件查询
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<NcrTrackVO>() {
@Override
@@ -405,9 +407,10 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
return problemManagement;
}
private void heartSort(NcrTrackVO ncrTrackVO, List<NcrTrackVO> trackVOList,List<DictModel> problemPriorityList,String cut) {
private List<NcrTrackVO> heartSort(NcrTrackVO ncrTrackVO, List<NcrTrackVO> trackVOList,List<DictModel> problemPriorityList,String cut) {
Collator comparator = Collator.getInstance(Locale.CHINESE);
if("problemPriority".equals(ncrTrackVO.getOrderByField())){
List<String> valueList = ProblemPriorityEnum.getValueAll(cut);
//优先级数据字典转换
for (NcrTrackVO trackVO : trackVOList) {
String problemPriority = trackVO.getProblemPriority();
@@ -422,18 +425,38 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
}
}
}
List<NcrTrackVO> ncrTrackVOList = new LinkedList<>();
//优先级没有值的数据
List<NcrTrackVO> 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<NcrTrackVO> 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<NcrTrackVO> 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<NcrTrackMapper, NcrTrackVO>
});
}
}
return trackVOList;
}
@NotNull