From 88786beb899ab42b2efbfc7b2824d19cee1ec22d Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Thu, 15 Dec 2022 16:17:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=99=9A=E6=8B=9F=E6=B8=85=E5=8D=95=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=A1=B5-=E8=A1=A8=E5=A4=B4=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dummy/entity/DummyInventoryInfoEO.java | 19 ++ .../dummy/enums/AttestationRankEnum.java | 40 +++ .../impl/DummyInventoryInfoEOServiceImpl.java | 232 +++++++++++++++++- 3 files changed, 287 insertions(+), 4 deletions(-) create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/enums/AttestationRankEnum.java diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/entity/DummyInventoryInfoEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/entity/DummyInventoryInfoEO.java index 33b22ff2c..8219fd6f1 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/entity/DummyInventoryInfoEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/entity/DummyInventoryInfoEO.java @@ -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; + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/enums/AttestationRankEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/enums/AttestationRankEnum.java new file mode 100644 index 000000000..b47ca94be --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/enums/AttestationRankEnum.java @@ -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; + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/impl/DummyInventoryInfoEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/impl/DummyInventoryInfoEOServiceImpl.java index 29d6eabc9..23a84e303 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/impl/DummyInventoryInfoEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/impl/DummyInventoryInfoEOServiceImpl.java @@ -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 queryList(DummyInventoryInfoEO dummyInventoryInfoEO,HttpServletRequest req) { +// dummyInventoryInfoEO.setOrderBy("2"); +// dummyInventoryInfoEO.setOrderByField("shi4Yong4Fan4Wei2"); + String orderBy = dummyInventoryInfoEO.getOrderBy(); + String orderByField = dummyInventoryInfoEO.getOrderByField(); + QueryWrapper 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 dummyInventoryInfoEOList = this.list(queryWrapper); + //数据字典 + List sysDictItems = sysDictItemServiceImpl.selectItemsAll(); //技术领域处理 - treeDict(dummyInventoryInfoEO, dummyInventoryInfoEOList); + treeDict(dummyInventoryInfoEO, dummyInventoryInfoEOList,sysDictItems); + + //表头排序 + dummyInventoryInfoEOList = hearSort(orderBy, orderByField, dummyInventoryInfoEOList); + + return dummyInventoryInfoEOList; } + private List hearSort(String orderBy, String orderByField, List 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 list = new LinkedList<>(); + //状态(现行,即将实施,草稿,被替代,废止) + dummyInventoryInfoEOList = stateSort(orderBy, orderByField, dummyInventoryInfoEOList, list); + + //认证级别(WVTA,Com.-VTA,Cert.-Market,Reg.-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 attestationRankSort(String orderBy, String orderByField, List dummyInventoryInfoEOList, List list) { + if(ObjectUtils.isNotEmpty(orderByField) && "attestationRank".equals(orderByField)){ + List wvta = dummyInventoryInfoEOList.stream() + .filter(e -> e.getAttestationRankStr().startsWith(AttestationRankEnum.WVTA.getValue())).collect(Collectors.toList()); + List vta = dummyInventoryInfoEOList.stream() + .filter(e -> e.getAttestationRankStr().startsWith(AttestationRankEnum.VTA.getValue())).collect(Collectors.toList()); + List market = dummyInventoryInfoEOList.stream() + .filter(e -> e.getAttestationRankStr().startsWith(AttestationRankEnum.MARKET.getValue())).collect(Collectors.toList()); + List regu = dummyInventoryInfoEOList.stream() + .filter(e -> e.getAttestationRankStr().startsWith(AttestationRankEnum.REGU.getValue())).collect(Collectors.toList()); + List 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 stateSort(String orderBy, String orderByField, List dummyInventoryInfoEOList, List list) { + if(ObjectUtils.isNotEmpty(orderByField) && "state".equals(orderByField)){ + List active = dummyInventoryInfoEOList.stream() + .filter(e -> LawsStateEnum.ACTIVE.getName().equals(e.getStateStr())).collect(Collectors.toList()); + List theUpcoming = dummyInventoryInfoEOList.stream() + .filter(e -> LawsStateEnum.THE_UPCOMING.getName().equals(e.getStateStr())).collect(Collectors.toList()); + List draft = dummyInventoryInfoEOList.stream() + .filter(e -> LawsStateEnum.DRAFT.getName().equals(e.getStateStr())).collect(Collectors.toList()); + List beReplaced = dummyInventoryInfoEOList.stream() + .filter(e -> LawsStateEnum.BE_REPLACED.getName().equals(e.getStateStr())).collect(Collectors.toList()); + List 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 dummyInventoryInfoEOList) { + private void treeDict(DummyInventoryInfoEO dummyInventoryInfoEO, List dummyInventoryInfoEOList,List sysDictItems) { List deliverableList = new ArrayList<>(); if(dummyInventoryInfoEOList.size() != 0){ @@ -869,6 +1033,42 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl 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 technologyTerritoryList = Arrays.asList(record.getTechnologyTerritory().split(",")); @@ -922,6 +1122,30 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl sysDictItems, String field,String dictCode) { + StringBuilder sb = new StringBuilder(); + for (String s : field.split(",")) { + List sysDictItemList = sysDictItems.stream() + .filter(e -> StringUtils.isNotBlank(e.getDictCode()) && e.getDictCode().equals(dictCode)) + .collect(Collectors.toList()); + if(ObjectUtils.isNotEmpty(sysDictItemList)){ + List 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 categoryList, List technologyTerritoryList) { StringBuilder sb = new StringBuilder(); for (String technologyTerritory : technologyTerritoryList) {