| | |
| | | import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO; |
| | | import com.vci.ubcs.code.dto.*; |
| | | import com.vci.ubcs.code.entity.CodeAllCode; |
| | | import com.vci.ubcs.code.enumpack.CodeDefaultLC; |
| | | import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum; |
| | | import com.vci.ubcs.code.enumpack.sysIntegrationPushTypeEnum; |
| | | import com.vci.ubcs.code.enumpack.*; |
| | | import com.vci.ubcs.code.lifecycle.CodeAllCodeLC; |
| | | import com.vci.ubcs.code.mapper.CommonsMapper; |
| | | import com.vci.ubcs.code.service.*; |
| | |
| | | CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid); |
| | | |
| | | //获取码段宽度 |
| | | //String secWidth = getCodeSegmentWidth(codeClassifyVO.getOid()); |
| | | String secWidth = getCodeSegmentWidth(codeClassifyVO.getOid()); |
| | | |
| | | if(isHistory){ |
| | | templateVOList= templateService.childTemplates(codeClassifyOid); |
| | |
| | | excelDataList.add(new WriteExcelData(0,0,"分类路径","")); |
| | | excelDataList.add(new WriteExcelData(0,1,"码段宽度","")); |
| | | excelDataList.add(new WriteExcelData(0,2,!CollectionUtils.isEmpty(idAttrVOList)?idAttrVOList.get(0).getName():"企业编码",idAttrVOList.get(0).getId())); |
| | | // 填充码段 |
| | | excelDataList.add(new WriteExcelData(1,1,secWidth)); |
| | | } |
| | | for (int i = 0; i < templateAttrVOS.size(); i++) { |
| | | CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i); |
| | |
| | | * @return |
| | | */ |
| | | private String getCodeSegmentWidth(String codeClassifyOid){ |
| | | CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid); |
| | | CodeClassifyFullInfoBO classifyFullInfoBO = classifyService.getClassifyFullInfo(codeClassifyOid); |
| | | // 要获取码段宽度,先要获取规则,当前没有往上找 |
| | | CodeRuleVO codeRuleByClassifyFullInfo = mdmEngineService.getCodeRuleByClassifyFullInfo(classifyService.getClassifyFullInfo(codeClassifyOid)); |
| | | List<CodeBasicSecVO> secVOList = codeRuleByClassifyFullInfo.getSecVOList(); |
| | | if(secVOList.isEmpty()){ |
| | | return ""; |
| | | } |
| | | |
| | | StringBuffer secWidth = new StringBuffer(""); |
| | | |
| | | for (int j = 0; j < secVOList.size(); j++) { |
| | | CodeBasicSecVO secVO = secVOList.get(j); |
| | | int width = VciBaseUtil.getInt(secVO.getCodeSecLength()) + ((secVO.getPrefixCode() + secVO.getSuffixCode()).length()); |
| | | secWidth.append(width).append("#"); |
| | | } |
| | | secVOList.stream().forEach(item->{ |
| | | switch (item.getSecType().toLowerCase(Locale.ROOT)){ |
| | | case "codeclassifysec": |
| | | case "codevariablesec": |
| | | case "coderefersec": |
| | | case "codefixedsec": |
| | | case "codeattrsec": |
| | | case "codeserialsec": |
| | | countSecWith(item,secWidth); |
| | | break; |
| | | case "codelevelsec": |
| | | //层级码段,需要从分类上获取相应的信息 |
| | | String secValue = ""; |
| | | if (CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(item.getCodeLevelType())) { |
| | | //最小层,因为我们只能在叶子节点上申请编码,所以这个就是当前分类的 |
| | | if (CodeGetValueTypeEnum.CURRENT.getValue().equalsIgnoreCase(item.getCodeGetValueType()) || CollectionUtils.isEmpty(classifyFullInfoBO.getParentClassifyVOs())) { |
| | | //就是当前分类的 |
| | | secValue = classifyFullInfoBO.getCurrentClassifyVO().getId(); |
| | | } else { |
| | | //我们需要从顶层开始找到当前分类为止 |
| | | secValue = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> -o1.getDataLevel().compareTo(o2.getDataLevel()))).map(CodeClassifyVO::getId).collect(Collectors.joining()) + classifyFullInfoBO.getCurrentClassifyVO().getId(); |
| | | } |
| | | } else { |
| | | //指定层,我们需要通过上级的来获取 |
| | | if (CollectionUtils.isEmpty(classifyFullInfoBO.getParentClassifyVOs())) { |
| | | //说明当前已经是最高的了 |
| | | secValue = classifyFullInfoBO.getCurrentClassifyVO().getId(); |
| | | } else { |
| | | //这个我们需要看看,层级是不是大于了最大层级的数 |
| | | List<CodeClassifyVO> parentClassifyVOList = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> -o1.getDataLevel().compareTo(o2.getDataLevel()))).collect(Collectors.toList()); |
| | | if (item.getCodeLevelValue() > (parentClassifyVOList.size() + 1)) { |
| | | //指定的层级比当前的层级还大了,所以只能获取当前层级了 |
| | | if (CodeGetValueTypeEnum.CURRENT.getValue().equalsIgnoreCase(item.getCodeGetValueType())) { |
| | | secValue = classifyFullInfoBO.getCurrentClassifyVO().getId(); |
| | | } else { |
| | | secValue = parentClassifyVOList.stream().map(CodeClassifyVO::getId).collect(Collectors.joining()) + classifyFullInfoBO.getCurrentClassifyVO().getId(); |
| | | } |
| | | } else { |
| | | //我们获取其中指定层的内容 |
| | | if (CodeGetValueTypeEnum.CURRENT.getValue().equalsIgnoreCase(item.getCodeGetValueType())) { |
| | | CodeClassifyVO classifyVO = parentClassifyVOList.stream().filter(s -> s.getDataLevel().intValue() == item.getCodeLevelValue().intValue()).findFirst().orElseGet(() -> null); |
| | | if (classifyVO != null) { |
| | | secValue = classifyVO.getId(); |
| | | } |
| | | } else { |
| | | //小于等于的全部拿出来 |
| | | secValue = parentClassifyVOList.stream().filter(s -> s.getDataLevel().intValue() <= item.getCodeLevelValue().intValue()).sorted(((o1, o2) -> -o1.getDataLevel().compareTo(o2.getDataLevel()))).map(CodeClassifyVO::getId).collect(Collectors.joining()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //看看长度是否需要截断 |
| | | if (!CodeCutTypeEnum.NONE.getValue().equalsIgnoreCase(item.getValueCutType()) && |
| | | item.getValueCutLength() != null && item.getValueCutLength() > 0 && secValue.length() > item.getValueCutLength()) { |
| | | if (CodeCutTypeEnum.RIGHT.getValue().equalsIgnoreCase(item.getValueCutType())) { |
| | | //左截取是从左边剪掉,右截取是从右边剪掉--保留左边 |
| | | secValue = secValue.substring(0, item.getValueCutLength()); |
| | | } else { |
| | | secValue = secValue.substring(secValue.length() - item.getValueCutLength()); |
| | | } |
| | | } |
| | | secValue = productCodeService.joinPreffixAndSuffix(item,secValue); |
| | | secWidth.append(secValue.length()).append("#"); |
| | | break; |
| | | case "codedatesec": |
| | | String dateFormatStr = item.getCodeDateFormatStr(); |
| | | if(Func.isNotEmpty(dateFormatStr)) { |
| | | // 获取当前时间 |
| | | Date currentDate = new Date(); |
| | | // 指定日期格式 |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat(dateFormatStr); |
| | | // 将当前时间转换为指定日期格式 |
| | | // 使用正则表达式去掉除数字以外的所有字符串 |
| | | String cleanedDate = dateFormat.format(currentDate).replaceAll("[^0-9]", ""); |
| | | int width = cleanedDate.length(); |
| | | if (Func.isNotEmpty(item.getPrefixCode())) { |
| | | width += item.getPrefixCode().length(); |
| | | } |
| | | if (Func.isNotEmpty(item.getSuffixCode())) { |
| | | width += item.getSuffixCode().length(); |
| | | } |
| | | secWidth.append(width).append("#"); |
| | | } |
| | | break; |
| | | } |
| | | }); |
| | | return secWidth.toString().substring(0, secWidth.length() - 1); |
| | | } |
| | | |
| | | /** |
| | | * 计算码段长度加前后缀的长度 |
| | | * @param codeBasicSecVO |
| | | * @param secWidth |
| | | */ |
| | | private void countSecWith(CodeBasicSecVO codeBasicSecVO,StringBuffer secWidth){ |
| | | if(Func.isNotEmpty(codeBasicSecVO.getCodeSecLength())){ |
| | | int width = VciBaseUtil.getInt(codeBasicSecVO.getCodeSecLength()); |
| | | if(Func.isNotEmpty(codeBasicSecVO.getPrefixCode())){ |
| | | width += codeBasicSecVO.getPrefixCode().length(); |
| | | } |
| | | if(Func.isNotEmpty(codeBasicSecVO.getSuffixCode())){ |
| | | width += codeBasicSecVO.getSuffixCode().length(); |
| | | } |
| | | secWidth.append(width).append("#"); |
| | | }else { |
| | | secWidth.append(0).append("#"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | //除去默认的属性.还有只有表单显示的字段才导入 |
| | | List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> |
| | | !DEFAULT_ATTR_LIST.contains(s.getId()) && |
| | | (Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()) |
| | | ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) |
| | | ).collect(Collectors.toList()); |
| | | |
| | | Map<String/**模板属性字段oid**/, String /**模板属性外部名称**/> fieldNameMap =attrVOS.stream().collect(Collectors.toMap(CodeClassifyTemplateAttrVO::getId,s->s.getName())); |
| | |
| | | //除去默认的属性.还有只有表单显示的字段才导入 |
| | | List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> |
| | | !DEFAULT_ATTR_LIST.contains(s.getId()) && |
| | | (Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()) |
| | | ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) |
| | | ).collect(Collectors.toList()); |
| | | Map<Integer/**列号**/,String/**字段的名称**/> fieldIndexMap = new HashMap<>(); |
| | | List<String> titleRowData = dataSet.getColName(); |
| | |
| | | " and lastr = '1'" + |
| | | " and lastv='1'" + |
| | | " and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%'"; |
| | | |
| | | //先查询总数 |
| | | int total = 0; |
| | | if(exportAttrDTO.getEndPage()!=null && exportAttrDTO.getEndPage()>0 |
| | |
| | | //除去默认的属性.还有只有表单显示的字段才导入 |
| | | List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.getAttributes().stream().filter(s -> |
| | | !DEFAULT_ATTR_LIST.contains(s.getId()) && |
| | | (Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()) |
| | | ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) |
| | | ).collect(Collectors.toList()); |
| | | String fullPath = getFullPath(classifyFullInfo); |
| | | excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList, codeClassifyTemplateVO,cboList,fullPath,!isImprot); |
| | |
| | | //除去默认的属性.还有只有具有分类注入的才过滤出来 |
| | | List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter( |
| | | s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && |
| | | (Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()) |
| | | ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) |
| | | ).collect(Collectors.toList()); |
| | | Map<Integer/**列号**/,String/**字段的名称**/> fieldIndexMap = new HashMap<>(); |
| | | List<String> titleRowData = dataObjectVO.getColName(); |
| | |
| | | //checkTemplateSync(sheetDataSetList,templateVO); |
| | | //除去默认的属性.还有只有表单显示的字段才导入 |
| | | List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && |
| | | (Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()) |
| | | ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) |
| | | ).collect(Collectors.toList()); |
| | | Map<Integer/**列号**/, String/**字段的名称**/> fieldIndexMap = new HashMap<>(); |
| | | List<String> titleRowData = dataObjectVO.getColName(); |
| | |
| | | //除去默认的属性.还有只有表单显示的字段才导入 |
| | | List<CodeClassifyTemplateAttrVO> attrVOS = newTemplateVO.getAttributes().stream().filter(s -> |
| | | !DEFAULT_ATTR_LIST.contains(s.getId()) && |
| | | (Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()) |
| | | ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) |
| | | ).collect(Collectors.toList()); |
| | | Map<String/**中文名称**/, String/**英文名称**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId())); |
| | | List<String> fields=new ArrayList<>(); |
| | |
| | | //获取最新的模板 |
| | | CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid); //除去默认的属性.还有只有表单显示的字段才导入 |
| | | List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && |
| | | (Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()) |
| | | ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) |
| | | ).collect(Collectors.toList()); |
| | | ExecGroupCodePortDataDTO execGroupCodePortDataDTO=new ExecGroupCodePortDataDTO(); |
| | | createExportGroupCodeMapConfig(templateVO,execGroupCodePortDataDTO);//组织数据 |
| | |
| | | } |
| | | //除去默认的属性.还有只有表单显示的字段才导入 |
| | | List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!fieldIndexMap.containsValue(s.getId()) && |
| | | (Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()) |
| | | ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) |
| | | ).collect(Collectors.toList()); |
| | | attrVOS.stream().forEach(codeClassifyTemplateAttrVO -> {//将不需要更改的默认字段或者不更改的属性复制到新的版本上 |
| | | String arrtibuteKey=codeClassifyTemplateAttrVO.getId(); |