diff --git a/jero-boot/db/蔚来标准sql/dev_2nd_period.sql b/jero-boot/db/蔚来标准sql/dev_2nd_period.sql index 3c4e7c32e..08b8f007e 100644 --- a/jero-boot/db/蔚来标准sql/dev_2nd_period.sql +++ b/jero-boot/db/蔚来标准sql/dev_2nd_period.sql @@ -18,3 +18,7 @@ ALTER TABLE `laws_weilai`.`params_manifest` ADD COLUMN `project_version` varchar(255) NULL COMMENT '相关项目版本' AFTER `params_template_name`, ADD COLUMN `explanation` varchar(2000) NULL COMMENT '说明' AFTER `project_version`; +-- 项目库修改认证软件版本字段长度---------2022-11-01 未同步生产环境 +ALTER TABLE `laws_weilai`.`project_library_base` +MODIFY COLUMN `software_version` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '软件版本' AFTER `explanation`; + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestEOServiceImpl.java index 0789f8f97..ab69cbfe9 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestEOServiceImpl.java @@ -2456,13 +2456,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl fieldList = Arrays.asList(field.split(",")); // list形式 // 查询导出数据 - List> allParamsInfoList = queryForExportDre(paramsCollectManifestVO); // id记得去掉 + List> allParamsInfoList = queryForExportDre(paramsCollectManifestVO, request); // id记得去掉 // 在excel表中添加表头 XSSFRow row = sheetItems.createRow(0); @@ -2540,7 +2531,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl> queryForExportDre(ParamsCollectManifestVO paramsCollectManifestVO) { + private List> queryForExportDre(ParamsCollectManifestVO paramsCollectManifestVO, HttpServletRequest req) { String paramsManifestId = paramsCollectManifestVO.getParamsManifestId(); -// String paramsTemplateId = paramsCollectManifestVO.getParamsTemplateId(); -// Integer paramsTemplatePublishVersion = paramsCollectManifestVO.getParamsTemplatePublishVersion(); String cut = paramsCollectManifestVO.getCut(); - String ids = paramsCollectManifestVO.getIds(); + List idList = new ArrayList<>(); + if (StringUtils.isNotBlank(paramsCollectManifestVO.getIds())) { + idList = Arrays.asList(paramsCollectManifestVO.getIds().split(",")); + } + List stateList = new ArrayList(){{ + add(CollectManifestStateEnum.WAIT_FILL.getValue()); + add(CollectManifestStateEnum.CERT_BACK.getValue()); + }}; LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - ParamsCollectManifestEO queryEO = new ParamsCollectManifestEO(); - queryEO.setParamsManifestId(paramsManifestId); + ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO(); + BeanUtils.copyProperties(paramsCollectManifestVO, paramsCollectManifestEO); + paramsCollectManifestEO.setParamsManifestId(null); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(paramsCollectManifestEO, req.getParameterMap()); + queryWrapper.lambda().eq(ParamsCollectManifestEO::getParamsManifestId, paramsManifestId) + .eq(ParamsCollectManifestEO::getDre, loginUser.getUsername()) + .in(ParamsCollectManifestEO::getState, stateList) + .notIn(ParamsCollectManifestEO::getControlType, ControlTypeEnum.Title.getValue()) + .orderByDesc(ParamsCollectManifestEO::getDelFlag) + .orderByDesc(ParamsCollectManifestEO::getAddFlag) + .orderByDesc(ParamsCollectManifestEO::getChangeFlag) + .orderByAsc(ParamsCollectManifestEO::getNioNumber) + .in(CollectionUtil.isNotEmpty(idList), ParamsCollectManifestEO::getId, idList); -// String userTypes = paramsCollectManifestVO.getUserTypes(); - queryEO.setUserTypes(CollectManifestUserTypeEnum.DRE.getValue()); - queryEO.setDreForAuth(loginUser.getUsername()); - queryEO.setState(CollectManifestStateEnum.WAIT_FILL.getValue() + "," + CollectManifestStateEnum.CERT_BACK.getValue()); - - List> dataList = paramsCollectManifestEOMapper.listInfoForExport(queryEO, ids); // 查询导出数据 + List dataList = list(queryWrapper); // 查询导出数据 if (dataList == null || dataList.isEmpty()){ // 没有查到数据,进行提示 if (CutEnum.EN.getValue().equals(paramsCollectManifestVO.getCut())) { @@ -3181,7 +3176,9 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl controlVerifyMap = ControlVerifyEnum.toMapForExport(cut); Map controlTypeMap = ControlTypeEnum.toMapForExport(cut); // 插入配置列和认证类别列数据 - for (Map record1 : dataList) { + List> result = new ArrayList<>(); + for (ParamsCollectManifestEO collectManifestEO: dataList) { + Map record1 = objectToMapDre(collectManifestEO); String controlType = (String) record1.get("control_type"); String controlVerify = (String) record1.get("control_verify"); String isMust = (String) record1.get("is_must"); @@ -3190,8 +3187,9 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl fileTemplateList,Map fileNowPathMap) { @@ -3309,6 +3307,80 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl objectToMapDre(Object obj) { + + Map map = new HashMap<>(); + // 获取f对象对应类中的所有属性域 + List list = findAllFieldsOfSelfAndSuperClass(obj.getClass()); + for (Field field : list) { + + String varName = field.getName(); + try { + // 获取原来的访问控制权限 + boolean accessFlag = field.isAccessible(); + // 修改访问控制权限 + field.setAccessible(true); + // 获取在对象f中属性fields[i]对应的对象中的变量 + Object o = field.get(obj); + if (o != null) { + if (Date.class.equals(field.getType())) { + Date date = (Date) o; + String pattern = ""; + if ("deadline".equals(varName) || "reportTime".equals(varName)) { + pattern = "yyyy-MM-dd"; + } else { + pattern = "yyyy-MM-dd HH:mm:ss"; + } + SimpleDateFormat formatter=new SimpleDateFormat(pattern); + String time=formatter.format(date); + map.put(toUnderlineCase(varName), time); + } else { + map.put(toUnderlineCase(varName), o); + } + } + // 恢复访问控制权限 + field.setAccessible(accessFlag); + } catch (IllegalArgumentException ex) { + ex.printStackTrace(); + } catch (IllegalAccessException ex) { + ex.printStackTrace(); + } + } + return map; + + } + + /** + * 驼峰转 转 下划线 + * userName ----> user_name + * user_name ----> user_name + * + * @param camelCaseStr 驼峰字符串 + * @return 带下滑线的String + */ + private String toUnderlineCase(String camelCaseStr) { + if (camelCaseStr == null) { + return null; + } + // 将驼峰字符串转换成数组 + char[] charArray = camelCaseStr.toCharArray(); + StringBuffer buffer = new StringBuffer(); + //处理字符串 + for (int i = 0, l = charArray.length; i < l; i++) { + if (charArray[i] >= 65 && charArray[i] <= 90) { + buffer.append("_").append(charArray[i] += 32); + } else { + buffer.append(charArray[i]); + } + } + return buffer.toString(); + } + /** * 通过实体类获取 URL Params * @@ -3841,7 +3913,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl validatePull(String configName, String controlValues, String value, String mustInput, Boolean isSingle, String cut) { String errorMsg = ""; int countError= 0; - List controlValueList = Arrays.asList(controlValues.split(",")); + List controlValueList = Arrays.asList(controlValues.replaceAll(",", ",").split(",")); Map resultMap = new HashMap<>(); // StringBuilder newValue = new StringBuilder(); @@ -3858,7 +3930,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl { /**分页列表*/ List queryPageList(@Param("params") Map params); + List queryMaimList(); // IPage queryPageList(IPage page, Map params); List getList(@Param("projectLibraryBase") ProjectLibraryBase projectLibraryBase); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLibraryBaseMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLibraryBaseMapper.xml index 954daa5bf..f438c3f24 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLibraryBaseMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLibraryBaseMapper.xml @@ -119,6 +119,15 @@ order by plb.sort desc, plb.create_time desc + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java index 9d42fd017..19caa49cd 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java @@ -50,6 +50,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.shiro.SecurityUtils; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -491,19 +492,45 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl projectLibraryBaseListParent = projectLibraryBaseMapper.queryMaimList(); + disposeData(projectLibraryBaseListParent,"",false); + for(ProjectLibraryBase projectLibraryBase: projectLibraryBaseListParent){ + //目标市场 + String targetMarket = getMarket(params, targetMarketList, projectLibraryBase); + //主项目的版本号 + String projectVersion = ""; + if(StringUtils.isBlank(projectLibraryBase.getParentId())){ + projectVersion = "00"; + }else{ + projectVersion = projectLibraryBase.getProjectVersion(); + } + if(StringUtils.isNotBlank(projectLibraryBase.getYearName())){ + projectLibraryBase.setProjectName(projectLibraryBase.getProjectName() + + "-" + projectLibraryBase.getYearName() + + "-" + targetMarket + + "-" + projectVersion); + } + } + //项目名称模糊查询特殊处理(因为项目名称是多字段拼接的) if(ObjectUtils.isNotEmpty(params.get("projectName"))){ result = result.stream().filter(e->e.getProjectName().toLowerCase().contains(String.valueOf(params.get("projectName")).toLowerCase())).collect(Collectors.toList()); } - //数据组装 - List resultTemp = new LinkedList<>(); - for (ProjectLibraryBase projectLibraryBase : result) { - if(StringUtils.isBlank(projectLibraryBase.getParentId())){ - resultTemp.add(projectLibraryBase); - } - } - for (ProjectLibraryBase projectLibraryBase : resultTemp) { + //处理搜索版本号,(因为列表展示数据是以主项目为主并绑定子项目, 所以搜索的时候只有子项目这种情况需要特殊处理) + List resultNew = getProjectLibraryBases(result, projectLibraryBaseListParent); + + + //数据组装 +// List resultTemp = new LinkedList<>(); +// for (ProjectLibraryBase projectLibraryBase : result) { +// if(StringUtils.isBlank(projectLibraryBase.getParentId())){ +// resultTemp.add(projectLibraryBase); +// } +// } + + for (ProjectLibraryBase projectLibraryBase : resultNew) { //子项目 List children = result.stream() .filter(e -> StringUtils.isNotBlank(e.getParentId()) && projectLibraryBase.getId().equals(e.getParentId())).collect(Collectors.toList()); @@ -527,9 +554,135 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl getProjectLibraryBases(List result, List projectLibraryBaseListParent) { + //result中的主项目以及子项目对应的主项目 + List resultParent = new LinkedList<>(); + for (ProjectLibraryBase projectLibraryBase : result) { + if(StringUtils.isBlank(projectLibraryBase.getParentId())){ + resultParent.add(projectLibraryBase); + }else{ + //子项目 + List collect = result.stream() + .filter(e -> projectLibraryBase.getId().equals(e.getParentId())) + .collect(Collectors.toList()); + if(ObjectUtils.isNotEmpty(collect)){ + resultParent.addAll(collect); + } + + } + } + + //搜索结果中子项目的子项目 + List resultChild = new ArrayList<>(); + //所有子项目 + List childrenListTemp = result.stream().filter(e -> StringUtils.isNotBlank(e.getParentId())).collect(Collectors.toList()); + List childrenIdListTemp = childrenListTemp.stream().map(ProjectLibraryBase::getId).collect(Collectors.toList()); + + //子项目的子项目 + List collect3 = result.stream().filter(e -> StringUtils.isNotBlank(e.getParentId()) && childrenIdListTemp.contains(e.getParentId())).collect(Collectors.toList()); + + if(ObjectUtils.isNotEmpty(collect3)){ + //子项目的子项目的父id + List childList = collect3.stream().map(ProjectLibraryBase::getParentId).collect(Collectors.toList()); + //子项目 + resultChild = childrenListTemp.stream().filter(e -> childList.contains(e.getId())).collect(Collectors.toList()); + } + + + //所有的主项目与通过筛选条件查询来的主项目进行过滤 + List resultNew = new LinkedList<>(); + //主项目 + List collect1 = result.stream().filter(e -> StringUtils.isBlank(e.getParentId())).collect(Collectors.toList()); + resultNew.addAll(collect1); + for (ProjectLibraryBase projectLibraryBase : projectLibraryBaseListParent) { + //子项目 + List collect = result.stream().filter(e -> projectLibraryBase.getId().equals(e.getParentId())).collect(Collectors.toList()); + if(ObjectUtils.isNotEmpty(collect)){ + resultNew.add(projectLibraryBase); + } + //子项目的子项目 + if(ObjectUtils.isNotEmpty(resultChild)){ + List collect2 = resultChild.stream().filter(e -> e.getParentId().equals(projectLibraryBase.getId())).collect(Collectors.toList()); + if(ObjectUtils.isNotEmpty(collect2)){ + resultNew.add(projectLibraryBase); + } + } + } + resultNew = resultNew.stream().distinct().collect(Collectors.toList()); + return resultNew; + } +// /** +// * 分页列表查询 +// * +// * @return +// */ +// @Override +// public List queryPageList(Map params) { +// List result = projectLibraryBaseMapper.queryPageList(params); +// disposeData(result,"",false); +// //目标市场 +// List targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode()); +// +// for(ProjectLibraryBase projectLibraryBase: result){ +// //目标市场 +// String targetMarket = getMarket(params, targetMarketList, projectLibraryBase); +// //主项目的版本号 +// String projectVersion = ""; +// if(StringUtils.isBlank(projectLibraryBase.getParentId())){ +// projectVersion = "00"; +// }else{ +// projectVersion = projectLibraryBase.getProjectVersion(); +// } +// if(StringUtils.isNotBlank(projectLibraryBase.getYearName())){ +// projectLibraryBase.setProjectName(projectLibraryBase.getProjectName() +// + "-" + projectLibraryBase.getYearName() +// + "-" + targetMarket +// + "-" + projectVersion); +// } +// } +// //项目名称模糊查询特殊处理(因为项目名称是多字段拼接的) +// if(ObjectUtils.isNotEmpty(params.get("projectName"))){ +// result = result.stream().filter(e->e.getProjectName().toLowerCase().contains(String.valueOf(params.get("projectName")).toLowerCase())).collect(Collectors.toList()); +// } +// //数据组装 +// List resultTemp = new LinkedList<>(); +// for (ProjectLibraryBase projectLibraryBase : result) { +// if(StringUtils.isBlank(projectLibraryBase.getParentId())){ +// resultTemp.add(projectLibraryBase); +// } +// } +// +// for (ProjectLibraryBase projectLibraryBase : resultTemp) { +// //子项目 +// List children = result.stream() +// .filter(e -> StringUtils.isNotBlank(e.getParentId()) && projectLibraryBase.getId().equals(e.getParentId())).collect(Collectors.toList()); +// if(children.size() != 0){ +// //子项目的基础上添加的子项目 +// List childrenIdList = children.stream().map(ProjectLibraryBase::getId).distinct().collect(Collectors.toList()); +// List childrenList = result.stream() +// .filter(e -> StringUtils.isNotBlank(e.getParentId()) && childrenIdList.contains(e.getParentId())).collect(Collectors.toList()); +// children.addAll(childrenList); +// +// //按版本排序 +// Collections.sort(children); +// projectLibraryBase.setChildren(children); +// //最后一个版本号(主项目和主项目都需要设置) +// String versionLast = children.get(children.size() - 1).getProjectVersion(); +// //主版本设置最后一个版本号(用于项目扩展中的版本号) +// projectLibraryBase.setVersionLast(versionLast); +// for (ProjectLibraryBase child : children) { +// //每个子版本版本设置最后一个版本号(用于项目扩展中的版本号) +// child.setVersionLast(versionLast); +// } +// } +// } +// return resultTemp; +// } + private String getMarket(Map params, List targetMarketList, ProjectLibraryBase projectLibraryBase) { List dictModelList = new ArrayList<>(); for (String s : projectLibraryBase.getTargetMarket().split(",")) { diff --git a/jero-web/src/components/CollectionType/index.vue b/jero-web/src/components/CollectionType/index.vue index 2b59628ee..0430379dd 100644 --- a/jero-web/src/components/CollectionType/index.vue +++ b/jero-web/src/components/CollectionType/index.vue @@ -29,6 +29,7 @@ :disabled="item.isLock == '1' ? true: false" :placeholder="$t('pleaseEnter')+$t('chinese')" @input="onInput" + :maxLength="1000" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" v-model="item.dataValue"/> diff --git a/jero-web/src/components/CollectionTypeDisabled/index.vue b/jero-web/src/components/CollectionTypeDisabled/index.vue index f5852220f..65c82d9ea 100644 --- a/jero-web/src/components/CollectionTypeDisabled/index.vue +++ b/jero-web/src/components/CollectionTypeDisabled/index.vue @@ -27,6 +27,7 @@ diff --git a/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue b/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue index c13d00931..88b5dc8a0 100644 --- a/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue +++ b/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue @@ -926,13 +926,16 @@ } else if (long && long === 'en-us') { this.cut = 'en' } + console.log(this.formInline) let query = { paramsManifestId: this.paramsManifest.id, cut: this.cut, + ...this.formInline, + ...this.queryParamQuery, ids: this.selectedRowKeys.join(','), exportName:this.$route.query.projectName + '(' + this.$route.query.title + ')' } - let name = this.$route.query.projectName + '(' + this.$route.query.title + ')' + '.zip' + let name = this.$route.query.projectName + '(' + this.$route.query.title + ')' + '.xlsx' downloadFile('/params/collectManifest/exportDre', name , query , this.selectClear) }, getList(){ diff --git a/jero-web/src/views/projectManagement/components/projectStatus.vue b/jero-web/src/views/projectManagement/components/projectStatus.vue index 6e408344b..b76f998bc 100644 --- a/jero-web/src/views/projectManagement/components/projectStatus.vue +++ b/jero-web/src/views/projectManagement/components/projectStatus.vue @@ -1,11 +1,15 @@