虚拟清单详情页-表头排序

This commit is contained in:
zhn
2022-12-15 16:17:45 +08:00
parent d6a6ba7e64
commit 88786beb89
3 changed files with 287 additions and 4 deletions
@@ -90,6 +90,8 @@ public class DummyInventoryInfoEO implements Serializable {
@ApiModelProperty(value = "适用范围")
@Dict(dicCode ="apply_scope")
private java.lang.String shi4Yong4Fan4Wei2;
@TableField(exist = false)
private java.lang.String shi4Yong4Fan4Wei2Str;
/**状态*/
@Excel(name = "状态", width = 15,dicCode ="state")
@@ -97,6 +99,9 @@ public class DummyInventoryInfoEO implements Serializable {
@Dict(dicCode ="state")
private java.lang.String state;
@TableField(exist = false)
private java.lang.String stateStr;
/**对应标准*/
@Excel(name = "对应标准", width = 15)
@ApiModelProperty(value = "对应标准")
@@ -147,6 +152,9 @@ public class DummyInventoryInfoEO implements Serializable {
@Dict(dicCode ="attestation_rank")
private java.lang.String attestationRank;
@TableField(exist = false)
private java.lang.String attestationRankStr;
/**适用增补件*/
@ApiModelProperty(value = "适用增补件")
@Excel(name = "适用增补件", width = 15)
@@ -166,6 +174,9 @@ public class DummyInventoryInfoEO implements Serializable {
@Dict(dicCode ="duty_territory")
private java.lang.String dutyTerritory;
@TableField(exist = false)
private java.lang.String dutyTerritoryStr;
/**备注*/
@Excel(name = "备注", width = 15)
@ApiModelProperty(value = "备注")
@@ -287,6 +298,14 @@ public class DummyInventoryInfoEO implements Serializable {
//文档库id
private String bussDocumentLibraryId;
//排序(1->正序, 2->倒序)
@TableField(exist = false)
private String orderBy;
//排序字段
@TableField(exist = false)
private String orderByField;
@@ -0,0 +1,40 @@
package com.jero.modules.dummy.enums;
/**
* @description
* @date 2022/1/21 15:22
* @auth zhn
*/
public enum AttestationRankEnum {
WVTA("WVTA","WVTA"),
VTA("Com.Cert-VTA","Com.Cert-VTA"),
MARKET("Com.Cert-Market","Com.Cert-Market"),
REGU("Regu-Market","Regu-Market"),
NA("NA","NA");
String name;
String value;
private AttestationRankEnum(String name, String value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
@@ -16,11 +16,14 @@ import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.DateUtils;
import com.jero.common.util.oss.CosBootUtil;
import com.jero.modules.document.entity.BussDocumentLibraryEO;
import com.jero.modules.document.enums.LawsStateEnum;
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
import com.jero.modules.dummy.entity.DummyInventoryBaseEO;
import com.jero.modules.dummy.entity.DummyInventoryInfoEO;
import com.jero.modules.dummy.entity.DummyInventoryInfoEOEn;
import com.jero.modules.dummy.enums.AttestationRankEnum;
import com.jero.modules.dummy.enums.DummyInventoryBaseFieldEnum;
import com.jero.modules.dummy.enums.OrderEnum;
import com.jero.modules.dummy.mapper.DummyInventoryInfoEOMapper;
import com.jero.modules.dummy.service.IDummyInventoryInfoEOService;
import com.jero.modules.dummy.util.DeepCopyListUtil;
@@ -59,6 +62,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.Collator;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -376,16 +380,176 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
*/
@Override
public List<DummyInventoryInfoEO> queryList(DummyInventoryInfoEO dummyInventoryInfoEO,HttpServletRequest req) {
// dummyInventoryInfoEO.setOrderBy("2");
// dummyInventoryInfoEO.setOrderByField("shi4Yong4Fan4Wei2");
String orderBy = dummyInventoryInfoEO.getOrderBy();
String orderByField = dummyInventoryInfoEO.getOrderByField();
QueryWrapper<DummyInventoryInfoEO> queryWrapper = QueryGenerator.initQueryWrapper(dummyInventoryInfoEO,req.getParameterMap());
// queryWrapper.in("dummy_inventory_base_id",dummyInventoryInfoEO.getDummyInventoryBaseId());
queryWrapper.orderByDesc("create_time","serial_number");
//新车型实施日期,在产车实施日期(排序)
if("xin1_che1_xing2_shi2_shi1_ri4_qi1".equals(orderByField) || "implement_time".equals(orderByField)){
if(OrderEnum.POSITIVE.getValue().equals(orderBy)){
queryWrapper.orderByAsc(orderByField);
}else if(OrderEnum.REVERSE.getValue().equals(orderBy)){
queryWrapper.orderByDesc(orderByField);
}
}
if(StringUtils.isBlank(orderByField)){
queryWrapper.orderByDesc("create_time","serial_number");
}
List<DummyInventoryInfoEO> dummyInventoryInfoEOList = this.list(queryWrapper);
//数据字典
List<SysDictItem> sysDictItems = sysDictItemServiceImpl.selectItemsAll();
//技术领域处理
treeDict(dummyInventoryInfoEO, dummyInventoryInfoEOList);
treeDict(dummyInventoryInfoEO, dummyInventoryInfoEOList,sysDictItems);
//表头排序
dummyInventoryInfoEOList = hearSort(orderBy, orderByField, dummyInventoryInfoEOList);
return dummyInventoryInfoEOList;
}
private List<DummyInventoryInfoEO> hearSort(String orderBy, String orderByField, List<DummyInventoryInfoEO> dummyInventoryInfoEOList) {
if(ObjectUtils.isNotEmpty(orderByField)){
Collator comparator = Collator.getInstance(Locale.CHINESE);
//编号
if("serialNumber".equals(orderByField)){
if(OrderEnum.POSITIVE.getValue().equals(orderBy)){
Collections.sort(dummyInventoryInfoEOList,(e1, e2)->{
return comparator.compare(e1.getSerialNumber(),e2.getSerialNumber());
});
}else if(OrderEnum.REVERSE.getValue().equals(orderBy)){
Collections.sort(dummyInventoryInfoEOList,(e1,e2)->{
return comparator.compare(e2.getSerialNumber(),e1.getSerialNumber());
});
}
}
//适用范围
if("shi4Yong4Fan4Wei2".equals(orderByField)){
if(OrderEnum.POSITIVE.getValue().equals(orderBy)){
Collections.sort(dummyInventoryInfoEOList,(e1, e2)->{
return comparator.compare(e1.getShi4Yong4Fan4Wei2Str(),e2.getShi4Yong4Fan4Wei2Str());
});
}else if(OrderEnum.REVERSE.getValue().equals(orderBy)){
Collections.sort(dummyInventoryInfoEOList,(e1,e2)->{
return comparator.compare(e2.getShi4Yong4Fan4Wei2Str(),e1.getShi4Yong4Fan4Wei2Str());
});
}
}
//WVTA ID
if("wvtaId".equals(orderByField)){
if(OrderEnum.POSITIVE.getValue().equals(orderBy)){
Collections.sort(dummyInventoryInfoEOList,(e1, e2)->{
return comparator.compare(e1.getWvtaId(),e2.getWvtaId());
});
}else if(OrderEnum.REVERSE.getValue().equals(orderBy)){
Collections.sort(dummyInventoryInfoEOList,(e1,e2)->{
return comparator.compare(e2.getWvtaId(),e1.getWvtaId());
});
}
}
List<DummyInventoryInfoEO> list = new LinkedList<>();
//状态(现行,即将实施,草稿,被替代,废止)
dummyInventoryInfoEOList = stateSort(orderBy, orderByField, dummyInventoryInfoEOList, list);
//认证级别(WVTACom.-VTACert.-MarketReg.-Market,NA
dummyInventoryInfoEOList = attestationRankSort(orderBy, orderByField, dummyInventoryInfoEOList, list);
//责任领域
if("dutyTerritory".equals(orderByField)){
if(OrderEnum.POSITIVE.getValue().equals(orderBy)){
Collections.sort(dummyInventoryInfoEOList,(e1,e2)->{
return comparator.compare(e1.getDutyTerritoryStr(),e2.getDutyTerritoryStr());
});
}else if(OrderEnum.REVERSE.getValue().equals(orderBy)){
Collections.sort(dummyInventoryInfoEOList,(e1,e2)->{
return comparator.compare(e2.getDutyTerritoryStr(),e1.getDutyTerritoryStr());
});
}
}
}
return dummyInventoryInfoEOList;
}
private List<DummyInventoryInfoEO> attestationRankSort(String orderBy, String orderByField, List<DummyInventoryInfoEO> dummyInventoryInfoEOList, List<DummyInventoryInfoEO> list) {
if(ObjectUtils.isNotEmpty(orderByField) && "attestationRank".equals(orderByField)){
List<DummyInventoryInfoEO> wvta = dummyInventoryInfoEOList.stream()
.filter(e -> e.getAttestationRankStr().startsWith(AttestationRankEnum.WVTA.getValue())).collect(Collectors.toList());
List<DummyInventoryInfoEO> vta = dummyInventoryInfoEOList.stream()
.filter(e -> e.getAttestationRankStr().startsWith(AttestationRankEnum.VTA.getValue())).collect(Collectors.toList());
List<DummyInventoryInfoEO> market = dummyInventoryInfoEOList.stream()
.filter(e -> e.getAttestationRankStr().startsWith(AttestationRankEnum.MARKET.getValue())).collect(Collectors.toList());
List<DummyInventoryInfoEO> regu = dummyInventoryInfoEOList.stream()
.filter(e -> e.getAttestationRankStr().startsWith(AttestationRankEnum.REGU.getValue())).collect(Collectors.toList());
List<DummyInventoryInfoEO> na = dummyInventoryInfoEOList.stream()
.filter(e -> e.getAttestationRankStr().startsWith(AttestationRankEnum.NA.getValue())).collect(Collectors.toList());
if (OrderEnum.POSITIVE.getValue().equals(orderBy)) {
//正序
list.addAll(wvta);
list.addAll(vta);
list.addAll(market);
list.addAll(regu);
list.addAll(na);
} else if (OrderEnum.REVERSE.getValue().equals(orderBy)) {
//倒序
list.addAll(na);
list.addAll(regu);
list.addAll(market);
list.addAll(vta);
list.addAll(wvta);
}
}
if(ObjectUtils.isNotEmpty(list)){
return list;
}else{
return dummyInventoryInfoEOList;
}
}
private List<DummyInventoryInfoEO> stateSort(String orderBy, String orderByField, List<DummyInventoryInfoEO> dummyInventoryInfoEOList, List<DummyInventoryInfoEO> list) {
if(ObjectUtils.isNotEmpty(orderByField) && "state".equals(orderByField)){
List<DummyInventoryInfoEO> active = dummyInventoryInfoEOList.stream()
.filter(e -> LawsStateEnum.ACTIVE.getName().equals(e.getStateStr())).collect(Collectors.toList());
List<DummyInventoryInfoEO> theUpcoming = dummyInventoryInfoEOList.stream()
.filter(e -> LawsStateEnum.THE_UPCOMING.getName().equals(e.getStateStr())).collect(Collectors.toList());
List<DummyInventoryInfoEO> draft = dummyInventoryInfoEOList.stream()
.filter(e -> LawsStateEnum.DRAFT.getName().equals(e.getStateStr())).collect(Collectors.toList());
List<DummyInventoryInfoEO> beReplaced = dummyInventoryInfoEOList.stream()
.filter(e -> LawsStateEnum.BE_REPLACED.getName().equals(e.getStateStr())).collect(Collectors.toList());
List<DummyInventoryInfoEO> abolish = dummyInventoryInfoEOList.stream()
.filter(e -> LawsStateEnum.ABOLISH.getName().equals(e.getStateStr())).collect(Collectors.toList());
if ("1".equals(orderBy)) {
//正序
list.addAll(active);
list.addAll(theUpcoming);
list.addAll(draft);
list.addAll(beReplaced);
list.addAll(abolish);
} else if ("2".equals(orderBy)) {
//倒序
list.addAll(abolish);
list.addAll(beReplaced);
list.addAll(draft);
list.addAll(theUpcoming);
list.addAll(active);
}
}
if(ObjectUtils.isNotEmpty(list)){
return list;
}else{
return dummyInventoryInfoEOList;
}
}
/**
* 复制
@@ -840,7 +1004,7 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
* @param dummyInventoryInfoEO
* @param dummyInventoryInfoEOList
*/
private void treeDict(DummyInventoryInfoEO dummyInventoryInfoEO, List<DummyInventoryInfoEO> dummyInventoryInfoEOList) {
private void treeDict(DummyInventoryInfoEO dummyInventoryInfoEO, List<DummyInventoryInfoEO> dummyInventoryInfoEOList,List<SysDictItem> sysDictItems) {
List<String> deliverableList = new ArrayList<>();
if(dummyInventoryInfoEOList.size() != 0){
@@ -869,6 +1033,42 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
List<SysCategory> categoryList = sysCategoryService.list();
for (DummyInventoryInfoEO record : dummyInventoryInfoEOList) {
String shi4Yong4Fan4Wei2 = record.getShi4Yong4Fan4Wei2();
String state = record.getState();
String attestationRank = record.getAttestationRank();
String dutyTerritory = record.getDutyTerritory();
if(StringUtils.isBlank(record.getWvtaId())){
record.setWvtaId("");
}
//适用范围 apply_scope
if(StringUtils.isNotBlank(shi4Yong4Fan4Wei2)){
String applyScope = getItemText(dummyInventoryInfoEO.getCut(), sysDictItems, shi4Yong4Fan4Wei2, "apply_scope");
record.setShi4Yong4Fan4Wei2Str(applyScope);
}else{
record.setShi4Yong4Fan4Wei2Str("");
}
//状态 state
if(StringUtils.isNotBlank(state)){
String stateTemp = getItemText(dummyInventoryInfoEO.getCut(), sysDictItems, state, "state");
record.setStateStr(stateTemp);
}else{
record.setStateStr("");
}
//认证级别 attestation_rank
if(StringUtils.isNotBlank(attestationRank)){
String attestationRankTemp = getItemText(dummyInventoryInfoEO.getCut(), sysDictItems, attestationRank, "attestation_rank");
record.setAttestationRankStr(attestationRankTemp);
}else{
record.setAttestationRankStr("");
}
//责任领域 duty_territory
if(StringUtils.isNotBlank(dutyTerritory)){
String dutyTerritoryTemp = getItemText(dummyInventoryInfoEO.getCut(), sysDictItems, dutyTerritory, "duty_territory");
record.setDutyTerritoryStr(dutyTerritoryTemp);
}else{
record.setDutyTerritoryStr("");
}
//技术领域
if (categoryList.size() != 0 && StringUtils.isNotBlank(record.getTechnologyTerritory())) {
List<String> technologyTerritoryList = Arrays.asList(record.getTechnologyTerritory().split(","));
@@ -922,6 +1122,30 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
}
}
private String getItemText(String cut, List<SysDictItem> sysDictItems, String field,String dictCode) {
StringBuilder sb = new StringBuilder();
for (String s : field.split(",")) {
List<SysDictItem> sysDictItemList = sysDictItems.stream()
.filter(e -> StringUtils.isNotBlank(e.getDictCode()) && e.getDictCode().equals(dictCode))
.collect(Collectors.toList());
if(ObjectUtils.isNotEmpty(sysDictItemList)){
List<SysDictItem> collect = sysDictItemList.stream().filter(e -> s.equals(e.getItemValue())).collect(Collectors.toList());
if(ObjectUtils.isNotEmpty(collect)){
if(CutEnum.CN.getValue().equals(cut)){
sb.append(collect.get(0).getItemText());
}else{
sb.append(collect.get(0).getEnName());
}
}
}
}
String substring = "";
if(StringUtils.isNotBlank(sb)){
substring = sb.substring(0, sb.length());
}
return substring;
}
private String getTreeName(DummyInventoryInfoEO dummyInventoryInfoEO, List<SysCategory> categoryList, List<String> technologyTerritoryList) {
StringBuilder sb = new StringBuilder();
for (String technologyTerritory : technologyTerritoryList) {