From db331894dca28ceadb69f53194a4a62edb9ce9e5 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期三, 13 十二月 2023 11:50:30 +0800 Subject: [PATCH] 特殊字符转义类修改,pom调整打包方式,编写systemctl命令方式启动脚本 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 586 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 506 insertions(+), 80 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java index 11a8da8..ef3bc27 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java @@ -6,18 +6,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.google.protobuf.ServiceException; -import com.vci.ubcs.code.applyjtcodeservice.entity.DockingPreAttrMapping; import com.vci.ubcs.code.applyjtcodeservice.feign.IMdmInterJtClient; import com.vci.ubcs.code.applyjtcodeservice.vo.DockingPreAttrMappingVO; import com.vci.ubcs.code.bo.AttributeValue; import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO; -import com.vci.ubcs.code.constant.MdmEngineConstant; 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.*; @@ -31,6 +27,7 @@ import com.vci.ubcs.omd.feign.IBtmTypeClient; import com.vci.ubcs.omd.feign.IWebSecretClient; import com.vci.ubcs.omd.vo.BtmTypeVO; +import com.vci.ubcs.omd.vo.RevisionRuleVO; import com.vci.ubcs.starter.bo.WriteExcelData; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.poi.bo.ReadExcelOption; @@ -59,7 +56,9 @@ import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.Workbook; +import org.aspectj.apache.bcel.classfile.Code; import org.springblade.core.redis.cache.BladeRedis; +import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; @@ -71,6 +70,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; @@ -88,7 +88,6 @@ import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import static com.alibaba.druid.util.FnvHash.Constants.LIMIT; @@ -199,9 +198,9 @@ private SaveLogUtil saveLogUtil; /** - * 瀵煎嚭鐨勫崄涓囨潯 + * 瀹㈡埛鐜板満excel涓鸿�佺増鏈紝瀵煎嚭鐨勬�绘暟闄愬埗涓�65535 */ - public static final int EXPORT_LIMIT = 100000; + public static final int EXPORT_LIMIT = 65535; /** * 鎵归噺鐢宠锛氶�夊彇閫変腑鍒嗙被涓嬬殑鎵�鏈夋ā鏉垮叧閿睘鎬э紝鐩镐技灞炴�э紝蹇呭~灞炴�э紝鍐欏叆execl涓� @@ -382,7 +381,7 @@ CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid); //鑾峰彇鐮佹瀹藉害 - //String secWidth = getCodeSegmentWidth(codeClassifyVO.getOid()); + String secWidth = getCodeSegmentWidth(codeClassifyVO.getOid()); if(isHistory){ templateVOList= templateService.childTemplates(codeClassifyOid); @@ -433,6 +432,8 @@ 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); @@ -612,28 +613,128 @@ ExcelUtil.writeDataToFile(excelName,eo); return excelName; } + /** * 鑾峰彇鐮佹瀹藉害 * @param codeClassifyOid * @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); + // 灏嗗綋鍓嶆椂闂磋浆鎹负鎸囧畾鏃ユ湡鏍煎紡 + // 浣跨敤姝e垯琛ㄨ揪寮忓幓鎺夐櫎鏁板瓧浠ュ鐨勬墍鏈夊瓧绗︿覆 + 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("#"); + } } /** @@ -772,7 +873,8 @@ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> - !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) + !DEFAULT_ATTR_LIST.contains(s.getId()) && + ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) ).collect(Collectors.toList()); Map<String/**妯℃澘灞炴�у瓧娈祇id**/, String /**妯℃澘灞炴�у閮ㄥ悕绉�**/> fieldNameMap =attrVOS.stream().collect(Collectors.toMap(CodeClassifyTemplateAttrVO::getId,s->s.getName())); @@ -821,7 +923,7 @@ //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒� batchCheckRequiredAttrOnOrder(templateVO,allCboList,errorMap); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, allCboList,errorMap); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, allCboList,false,errorMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){ @@ -1094,7 +1196,7 @@ batchSwitchComponentAttrOnOrder(attrVOS, cboList); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorMap); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,false,errorMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); if (!CollectionUtils.isEmpty(selfRepeatRowIndexList)) { @@ -1207,6 +1309,7 @@ //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList; CodeClassifyTemplateVO finalTemplateVO = templateVO; + final BladeUser user = AuthUtil.getUser(); ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> { //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); List<String> rowIndexList = ruleRowIndexMap.get(ruleOid); @@ -1223,7 +1326,7 @@ if (!CollectionUtils.isEmpty(thisCbos)) { try { // TODO 澶氱嚎绋嬫祦闂 - productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, dataCBOList); + productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, dataCBOList,user); importCount.add(dataCBOList.size()); } catch (Throwable e) { log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e); @@ -1274,6 +1377,7 @@ throw e; } } + /** * 瀵煎叆鎵归噺缂栬緫鏁版嵁 * @@ -1282,18 +1386,21 @@ * @param file excel鏂囦欢鐨勪俊鎭� * @return 鏈夐敊璇俊鎭殑excel */ + @Transactional @Override public CodeImProtRusultVO batchImportEdit(String codeClassifyOid, String classifyAttr,File file) throws Throwable{ VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�"); ReadExcelOption reo = new ReadExcelOption(); reo.setReadAllSheet(true); List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo); - if (sheetDataSetList.size() > LIMIT + 1) { - throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�"); + if (sheetDataSetList.get(0).getRowData().size() > LIMIT + 1) { + throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�"); + } + if (sheetDataSetList.get(0).getRowData().size() == 0) { + throw new ServiceException("鏈鍙栧埌excle鐩稿叧鏁版嵁锛岃纭锛侊紒锛�"); } boolean isExport=false; Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>(); - //鐩镐技椤圭洰鏌ラ噸 for(int i=0;i<sheetDataSetList.size()-1;i++) { if (CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(i).getRowData()) || sheetDataSetList.get(i).getRowData().size() < 1) { @@ -1326,7 +1433,7 @@ titleRowData.remove(titleRowData.size()-1); templateVO= templateVOList.get(0); }catch (Throwable e){ - throw new VciBaseException(e.getMessage()); + throw new ServiceException(e.getMessage()); } CodeClassifyTemplateVO finalTemplateVO = templateVO; @@ -1353,32 +1460,18 @@ //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇� List<Map> cbosB = commonsMapper.selectBySql(sqlBO.getSqlUnPage()); if(cbosB.size() == 0){ - throw new ServiceException("缂栫爜锛�"+ sheetRowData.getData().get(0) + ",鏈兘鏌ヨ鍒扮浉鍏虫暟鎹��"); + throw new ServiceException("缂栫爜锛�"+ sheetRowData.getData().get(0) + ",鏈兘鏌ヨ鍒扮浉鍏虫暟鎹��"); } excelToCboEdit(fieldIndexMap, sheetRowData, orderDTO, cbosB.get(0)); orderDTO.setCopyFromVersion(orderDTO.getOid()); orderDTO.setOid(null); try { mdmEngineService.upSaveCode(orderDTO); - List<Map> newCbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage()); - //瀵圭爜鍊艰〃杩涜澶勭悊鏇挎崲鍒涘缓鏁版嵁鐨刼id - QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>(); - wrapper.eq("CREATECODEOID",orderDTO.getCopyFromVersion()); - List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(wrapper); - codeAllCodes.get(0).setCreateCodeOid(newCbos.get(0).get("OID").toString()); - codeAllCodes.get(0).setLastModifyTime(new Date()); - codeAllCodes.get(0).setTs(new Date()); - codeAllCodes.get(0).setLastModifier(AuthUtil.getUser().getUserName()); - codeAllCodeService.updateBatchById(codeAllCodes); } catch (Throwable e) { log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e); -// thisCbos.stream().forEach(cbo -> { -// String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); errorMap.put(sheetRowData.getRowIndex(), ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage()); -// }); } } - if (errorMap.size() > 0) { isExport = true; } @@ -1593,7 +1686,8 @@ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> - !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) + !DEFAULT_ATTR_LIST.contains(s.getId()) && + ((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(); @@ -1616,7 +1710,7 @@ //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒� batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorMap); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO,cboList,false,errorMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){ @@ -1685,7 +1779,7 @@ createRedisDatas(uuid + "-ok",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap,true); }else { uuid=""; - + final BladeUser user = AuthUtil.getUser(); //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒� needSaveCboList = cboList.stream().filter(cbo -> { String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); @@ -1705,7 +1799,7 @@ dataCBOIdList.add(baseModel.getOid()); }); try { - codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList); + codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList,user); //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰 engineService.batchSaveSelectChar(templateVO, dataCBOList); } catch (Exception e) { @@ -1842,21 +1936,23 @@ " and lastr = '1'" + " and lastv='1'" + " and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%'"; - //鍏堟煡璇㈡�绘暟 int total = 0; if(exportAttrDTO.getEndPage()!=null && exportAttrDTO.getEndPage()>0 &&exportAttrDTO.getPage() !=null && exportAttrDTO.getPage() >0 &&exportAttrDTO.getEndPage()>exportAttrDTO.getPage()){ //浠庡灏戦〉鍒板灏戦〉鐨勬煡璇㈡柟寮忥紝 + String countPageSql = "select count(*) from (select * FROM " + tableName +" where 1=1" + + " and lastr = '1'" + + " and lastv='1'" + + " and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%' {}"; for(int i = exportAttrDTO.getPage() ;i <= exportAttrDTO.getEndPage();i++){ PageHelper thisPage = new PageHelper(exportAttrDTO.getLimit()==null?-1:exportAttrDTO.getLimit()); thisPage.setPage(exportAttrDTO.getPage()==null?1:exportAttrDTO.getPage()); thisPage.setSort(exportAttrDTO.getSort()); thisPage.setOrder(exportAttrDTO.getOrder()); thisPage.addDefaultDesc("createTime"); - - total += commonsMapper.queryCountBySql(countSql); + total += commonsMapper.queryCountBySql(StringUtil.format(countPageSql," limit " + exportAttrDTO.getLimit() +" offset "+ i +")subquery;")); } }else{ total = commonsMapper.queryCountBySql(countSql); @@ -1894,10 +1990,10 @@ } Map<String, String> finalConditionMap = conditionMap; //骞惰鏌ヨ鐪嬬湅 - SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); + //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); indexList.stream().forEach(index->{ //绾跨▼鐨勬柟寮忥紝鎵�浠ラ渶瑕佽缃綋鍓嶇敤鎴� - VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); + //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); PageHelper thisPage = new PageHelper(EXPORT_LIMIT); thisPage.setPage(index+1); thisPage.setSort(exportAttrDTO.getSort()); @@ -2054,7 +2150,8 @@ CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo); //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.getAttributes().stream().filter(s -> - !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) + !DEFAULT_ATTR_LIST.contains(s.getId()) && + ((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); @@ -2103,7 +2200,7 @@ //鏈�鍚庡紕缁勫悎瑙勫垯 batchSwitchComponentAttrOnOrder(attrVOS,cboList); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO, cboList,errorMap); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO, cboList,false,errorMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){ @@ -2121,7 +2218,9 @@ }).collect(Collectors.toList()); List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList; Map<String, CodeRuleVO> finalRuleVOMap = ruleVOMap; - ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> { + // TODO锛� 澶氱嚎绋嬫祦濂楀绾跨▼娴侊紝鏈夊潙锛屾垜鎶婅繖鍎挎敼鎴愬崟绾跨▼浜� + final BladeUser user = AuthUtil.getUser(); + ruleRowIndexMap.keySet().stream().forEach(ruleOid -> { List <BaseModel>dataCBOList=new CopyOnWriteArrayList<>(); List<String> rowIndexList = ruleRowIndexMap.get(ruleOid); List<ClientBusinessObject> thisCbos = needSaveCboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList()); @@ -2132,7 +2231,7 @@ dataCBOList.add(baseModel); }); try { - productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, finalRuleVOMap.get(ruleOid), null, dataCBOList); + productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, finalRuleVOMap.get(ruleOid), null, dataCBOList, user); } catch (Throwable e) { //success=false; log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e); @@ -2145,6 +2244,7 @@ engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList); }); }else { + final BladeUser user = AuthUtil.getUser(); List<BaseModel> dataCBOList=new ArrayList<>(); List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> { String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); @@ -2158,7 +2258,7 @@ dataCBOList.add(baseModel); }); try { - productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList); + productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList,user); } catch (Exception e) { log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e); needSaveCboList.stream().forEach(cbo -> { @@ -2256,8 +2356,10 @@ //鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑 //checkTemplateSync(sheetDataSetList,templateVO); - //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 - List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) + //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁鍏锋湁鍒嗙被娉ㄥ叆鐨勬墠杩囨护鍑烘潵 + 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())) ).collect(Collectors.toList()); Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>(); List<String> titleRowData = dataObjectVO.getColName(); @@ -2309,7 +2411,7 @@ //鏈�鍚庡紕缁勫悎瑙勫垯 batchSwitchComponentAttrOnOrder(attrVOS,cboList); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorKeyMap); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,false,errorKeyMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); @@ -2404,10 +2506,10 @@ if (!CollectionUtils.isEmpty(newCboList)) { //澶勭悊鍏抽敭灞炴�ф煡鍑哄鏉$殑璇濓紝鏍规嵁闆嗘垚璋冪敤鐨勫綋鍓嶅垎绫讳唬鍙峰彇褰撳墠鍒嗙被鐨勭爜鍊笺�� Map<String/**缂栫爜**/, BaseModel/**閲嶅缂栫爜鏁版嵁**/> classOidTOBaseModelMap = new HashMap<>(); - newCboList.stream().forEach(baseModel->{ - String codeclsfid=baseModel.getData().get(CODE_CLASSIFY_OID_FIELD.toUpperCase(Locale.ROOT)); - classOidTOBaseModelMap.put(codeclsfid,baseModel); - }); + newCboList.stream().forEach(baseModel->{ + String codeclsfid=baseModel.getData().get(CODE_CLASSIFY_OID_FIELD.toLowerCase(Locale.ROOT)); + classOidTOBaseModelMap.put(codeclsfid,baseModel); + }); String codeclsfid= classifyFullInfo.getCurrentClassifyVO().getOid(); if(classOidTOBaseModelMap.containsKey(codeclsfid)){ BaseModel newCbo= classOidTOBaseModelMap.get(codeclsfid); @@ -2444,7 +2546,7 @@ } } }); - //鍏抽敭鐔熸倝鏇存敼 + //鍏抽敭灞炴�ф洿鏀� if (!CollectionUtils.isEmpty(editBoList)) { engineService.updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(),editBoList);//淇濆瓨鏁版嵁 } @@ -2466,6 +2568,7 @@ List<String>allNeedSaveCboList=new ArrayList<>(); List<BaseModel> dataCBOList=new ArrayList<>(); + final BladeUser user = AuthUtil.getUser(); needSaveCboList.stream().forEach(clientBusinessObject -> { BaseModel baseModel=new BaseModel(); BeanUtil.convert(clientBusinessObject,baseModel); @@ -2475,7 +2578,7 @@ }); try { List<String>applyGroupCodeIdList=new ArrayList<>(); - productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList); + productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList,user); //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰 engineService.batchSaveSelectChar(templateVO, dataCBOList); // if(!isProcess){ @@ -2503,7 +2606,6 @@ resultDataObjectDetailDO.setErrorid("0"); } resultDataObjectDetailDO.setId(sourceOid); - resultDataObjectDetailDO.setMsg(msg); resultDataObjectDetailDOs.add(resultDataObjectDetailDO); //澶勭悊浼犻�佺殑鏁版嵁涓叧閿睘鎬ч噸澶嶇殑锛岀洿鎺ユ嬁鍒板凡缁忕敵璇峰埌缂栫爜鐨勬暟鎹紪鐮佺洿鎺ュ皢璧嬬粰鍏抽敭灞炴�ч噸澶嶇殑鏁版嵁 @@ -2627,7 +2729,8 @@ //鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑 //checkTemplateSync(sheetDataSetList,templateVO); //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 - List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) + 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())) ).collect(Collectors.toList()); Map<Integer/**鍒楀彿**/, String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>(); List<String> titleRowData = dataObjectVO.getColName(); @@ -2679,6 +2782,7 @@ } List<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString()); + DefaultAttrAssimtUtil.mapToLowerCase(dataMapList,true); List<ClientBusinessObject> cboList= ChangeMapTOClientBusinessObjects(dataMapList); Map<String, ClientBusinessObject> codeSystemObjectMap = cboList.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t)); Map<String, String> errorMap = new HashMap<>(); @@ -3566,7 +3670,7 @@ if (StringUtils.isBlank(field)) { throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�"); } - map.put(field,value); + map.put(field.toUpperCase(),value); }); try { @@ -3856,7 +3960,8 @@ String sql = "select " + valueField + "," + showText.toLowerCase(Locale.ROOT) +" from " + table + " where " + showText + " in (%s)"; valueCollections.stream().forEach(values->{ List<Map<String,String>> dataMapList = commonsMapper.queryByOnlySqlForMap(String.format(sql, VciBaseUtil.toInSql(values.toArray(new String[0])))); - List<ClientBusinessObject> cbos= ChangeMapTOClientBusinessObjects(dataMapList); + DefaultAttrAssimtUtil.mapToLowerCase(dataMapList,true); + List<ClientBusinessObject> cbos=ChangeMapTOClientBusinessObjects(dataMapList); if(!CollectionUtils.isEmpty(cbos)){ valueOidTextMap.putAll(cbos.stream().collect(Collectors.toMap(s->s.getAttributeValue(valueField),t->t.getAttributeValue(showText)))); } @@ -4242,7 +4347,7 @@ * @param cboList 鎵归噺鐨勬暟鎹� */ private CodeImportResultVO batchCheckKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, - List<ClientBusinessObject> cboList,Map<String,String> errorMap) { + List<ClientBusinessObject> cboList,boolean isEdit,Map<String,String> errorMap) { //涓嶮dmEngineServiceImpl閲岀殑checkKeyAttrOnOrder鐩镐技 //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮� CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo); @@ -4272,7 +4377,10 @@ Map<String,List<BaseModel>> indexTODataMap=new ConcurrentHashMap<>(); // 鏌ヨ涓嶉渶瑕佸弬涓庡叧閿睘鎬ф牎楠岀殑闄よ嚜宸变互澶栫殑鎵�鏈夊垎绫籵id final String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid()); - List<ClientBusinessObject> repeatDataMap = cboList.parallelStream().filter(cbo -> { + final BladeUser user = AuthUtil.getUser(); + cboList = new CopyOnWriteArrayList<>(cboList); + // TODO:Thread limit exceeded replacing blocked 寮傚父鏄繖閮ㄥ垎浠g爜鎶涘嚭鐨�,鎵�浠ユ殏鏃跺皢parallelStream鏀规垚浜唖tream + List<ClientBusinessObject> repeatDataMap = cboList.stream().filter(cbo -> { //姣忚閮藉緱鏌ヨ.濡傛灉鍏朵腑鍑虹幇浜嗛敊璇紝鎴戜滑灏辩洿鎺ユ姏鍑哄紓甯革紝鍏朵綑鐨勬樉绀� //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); Map<String, String> conditionMap = new HashMap<>(); @@ -4289,15 +4397,22 @@ if(Func.isNotBlank(isParticipateCheckOids)){ conditionMap.put("t.codeclsfid",QueryOptionConstant.NOTIN+isParticipateCheckOids); } + if(isEdit){//濡傛灉鏄洿鏀瑰垯闇�鎺掗櫎绯荤粺鏈韩 + conditionMap.put("t.id",QueryOptionConstant.NOTEQUAL+cbo.getId()); + } + conditionMap.put("t.lastr", "1"); + conditionMap.put("t.lastv", "1"); + CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, null); List<String> repeatData = commonsMapper.selectList(sqlBO.getSqlId()); if(!repeatData.isEmpty()){ final List<Map<String,String>> newDataList = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlUnPage()); + DefaultAttrAssimtUtil.mapToLowerCase(newDataList,true); //List<ClientBusinessObject> newCboList=ChangeMapTOClientBusinessObjects(newDataList); List<BaseModel> newCboList = new ArrayList<>(); newDataList.stream().forEach(stringStringMap -> { BaseModel baseModel=new BaseModel(); - DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel); + DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel,false,user); baseModel.setData(stringStringMap); newCboList.add(baseModel); }); @@ -4521,9 +4636,11 @@ } private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){ List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>(); + DefaultAttrAssimtUtil.mapToLowerCase(oldDataMap,true); + final BladeUser user = AuthUtil.getUser(); oldDataMap.stream().forEach(dataMap->{ ClientBusinessObject clientBusinessObject=new ClientBusinessObject(); - DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject); + DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject,false,user); for (String key:dataMap.keySet()){ Object value= dataMap.getOrDefault(key,""); clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString()); @@ -4618,7 +4735,8 @@ private void createExeclClassData(List<String> titleRowData, CodeClassifyTemplateVO newTemplateVO, Map<Integer, String> execlData, CodeImprotDataVO codeImprotDataVO){ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 List<CodeClassifyTemplateAttrVO> attrVOS = newTemplateVO.getAttributes().stream().filter(s -> - !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) + !DEFAULT_ATTR_LIST.contains(s.getId()) && + ((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<>(); @@ -4813,6 +4931,7 @@ pageHelper.addDefaultDesc("id"); CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(btmtypeid, templateVO, conditionMap, pageHelper); List<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlUnPage()); + DefaultAttrAssimtUtil.mapToLowerCase(dataMapList,true); List<ClientBusinessObject> resembleCboList= ChangeMapTOClientBusinessObjects(dataMapList); if(!CollectionUtils.isEmpty(resembleCboList)) { List<Map<String, String>> finalDataMap = dataMap; @@ -4975,7 +5094,7 @@ * @return */ @Override - public String exportGroupCodeExcel(String codeClassifyOid) throws ServiceException { + public String exportGroupCodeExcel(String codeClassifyOid) throws VciBaseException { VciBaseUtil.alertNotNull(codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭"); CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); CodeClassifyVO codeClassifyVO= classifyFullInfo.getCurrentClassifyVO(); @@ -4986,12 +5105,12 @@ ExecGroupCodePortDataDTO execGroupCodePortDataDTO=new ExecGroupCodePortDataDTO(); createExportGroupCodeMapConfig(templateVO,execGroupCodePortDataDTO);//缁勭粐鏁版嵁 - if(!CollectionUtils.isEmpty(execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS())){ - throw new ServiceException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆"); + if(CollectionUtils.isEmpty(execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS())){ + throw new VciBaseException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆"); } fieldList=execGroupCodePortDataDTO.getFieldList(); List<Map<String,String>>dataList=new ArrayList<>(); - getDatas(classifyFullInfo,templateVO,fieldList,dataList); + getDatas(classifyFullInfo,templateVO,fieldList,dataList,null); execGroupCodePortDataDTO.setDataList(dataList);//鏀炬暟鎹� execGroupCodePortDataDTO.setSheetName(codeClassifyVO.getName()+"闆嗗洟鐮佸鍏ユā鏉�"); String tempFolder = LocalFileUtil.getDefaultTempFolder(); @@ -5007,9 +5126,7 @@ List<WriteExcelData> excelDataList = new ArrayList<>(); Workbook workbook = new HSSFWorkbook(); List<CodeAndGroupCodeAttrMappingDTO> codeAndGroupCodeAttrMappingDTOList= execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS(); - Map<String, CodeAndGroupCodeAttrMappingDTO> jAttrVOMap = codeAndGroupCodeAttrMappingDTOList.stream().filter(s-> finalFieldList.contains(s.getTargetAttrKey().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getTargetAttrKey().toLowerCase(Locale.ROOT), t -> t)); - WriteExcelData codeExcelData = new WriteExcelData(0, 0, "浼佷笟缂栫爜"); WriteExcelData groupExcelData = new WriteExcelData(0, 1, "闆嗗洟鐮�"); excelDataList.add(codeExcelData); @@ -5082,6 +5199,284 @@ } /*** + * 瀵煎叆闆嗗洟鐮� + * @param codeClassifyOid + * @param file + * @return + */ + @Transactional(rollbackFor = VciBaseException.class) + @Override + public String importGroupCode(String codeClassifyOid, File file) throws Throwable { + VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�"); + ReadExcelOption reo = new ReadExcelOption(); + reo.setReadAllSheet(true); + List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo); + + if (sheetDataSetList.size() > LIMIT + 1) { + throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�"); + } + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); + //鑾峰彇鏈�鏂扮殑妯℃澘 + 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())) + ).collect(Collectors.toList()); + ExecGroupCodePortDataDTO execGroupCodePortDataDTO=new ExecGroupCodePortDataDTO(); + createExportGroupCodeMapConfig(templateVO,execGroupCodePortDataDTO);//缁勭粐鏁版嵁 + List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS=execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS(); + if(CollectionUtils.isEmpty(codeAttrMapGroupAttrDTOS)){ + throw new ServiceException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆"); + } + Map<String, CodeAndGroupCodeAttrMappingDTO> codeSystemObjectMap = codeAttrMapGroupAttrDTOS.stream().filter(codeAttrMappingDTO -> codeAttrMappingDTO != null && StringUtils.isNotBlank(codeAttrMappingDTO.getSourceAttrName())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getSourceAttrName(), t -> t)); + SheetDataSet dataSet= sheetDataSetList.get(0); + List<String> titleRowData = dataSet.getColName(); + Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>(); + getGroupCodeFieldIndexMap(titleRowData,codeAttrMapGroupAttrDTOS,fieldIndexMap); + //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜� + /** List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT)) + && com.alibaba.cloud.commons.lang.StringUtils.isBlank(s.getComponentRule()) && com.alibaba.cloud.commons.lang.StringUtils.isBlank(s.getClassifyInvokeAttr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓 + ).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(unExistAttrVOs)){ + String message=unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName).collect(Collectors.joining(SERIAL_UNIT_SPACE)); + throw new VciBaseException("銆�" + message + "銆戣繖浜涘睘鎬у湪excel涓病鏈夋壘鍒�"); + }**/ + List<ClientBusinessObject> cboList = new ArrayList<>(); + List<SheetRowData> rowDataList = dataSet.getRowData(); + + getExportGroupCodeDatas(fieldIndexMap,rowDataList,cboList);//鏋勫缓鏁版嵁瀵硅薄 + + List<String> codeList= cboList.stream().map(ClientBusinessObject::getId).collect(Collectors.toList()); + List<Map<String,String>>dataList=new ArrayList<>(); + Map<String,String> errorMap=new HashMap<>(); + batchSwitchCheckExist(errorMap,cboList,classifyFullInfo,templateVO,execGroupCodePortDataDTO,fieldIndexMap); + //鍒ゆ柇蹇呰緭椤� + batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap); + // //浼樺厛鏍¢獙缂栫爜鏄惁瀛樺湪 + // batchCheckIdExistOnOrder(templateVO, cboList, errorMap); + //boolean + reSwitchBooleanAttrOnOrder(attrVOS, cboList); + + // 鏋氫妇鐨勫唴瀹归渶瑕佹牴鎹悕绉拌浆鎹负鏋氫妇鐨勫�� + batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap); + + batchSwitchReferAttrOnOrder(attrVOS, cboList, errorMap); + //6.澶勭悊鍒嗙被娉ㄥ叆 + batchSwitchClassifyAttrOnOrder(attrVOS, cboList, classifyFullInfo,false); + + //璁剧疆榛樿鍊� + batchSwitchAttrDefault(attrVOS, cboList); + + //7.澶勭悊缁勫悎瑙勫垯 + batchSwitchComponentAttrOnOrder(attrVOS, cboList); + //4.鏍¢獙瑙勫垯 + batchCheckVerifyOnOrder(attrVOS, cboList, errorMap); + //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss + batchSwitchDateAttrOnOrder(attrVOS, cboList, errorMap); + //3.鍒ゆ柇鍏抽敭灞炴�� + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,true,errorMap); + Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); + Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); + if (!CollectionUtils.isEmpty(selfRepeatRowIndexList)) { + selfRepeatRowIndexList.stream().forEach(rowIndex -> { + errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍦ㄥ綋鍓峞xcel鏂囦欢涓叧閿睘鎬ч噸澶�"); + }); + } + if (!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)) { + keyAttrRepeatRowIndexList.stream().forEach(rowIndex -> { + errorMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex, "")); + }); + } + Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>(); + createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, templateVO); + String excelFileName=""; + if(errorMap.size()==0) { + try { + String btmTypeId = classifyFullInfo.getTopClassifyVO().getBtmTypeId(); + List<BaseModel>oldCbos= execGroupCodePortDataDTO.getOldList(); + List<BaseModel>newCbos=new ArrayList<>(); + // 淇敼鐗堟鍙� + engineService.updateBatchByBaseModel(btmTypeId,oldCbos); + List<CodeAllCode> codeAllCodeList=new ArrayList<>(); + final BladeUser user = AuthUtil.getUser(); + cboList.stream().forEach(clientBusinessObject -> { + BaseModel newBaseModel=new BaseModel(); + DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(clientBusinessObject.getData(),newBaseModel,false,user); + newCbos.add(newBaseModel); + }); + // 鎻掑叆鏂扮殑鏁版嵁 + engineService.insertBatchByType(btmTypeId, newCbos); + codeAllCodeService.saveOrUpdateBatch(execGroupCodePortDataDTO.getCodeAllCodeList()); + engineService.batchSaveSelectChar(templateVO, newCbos); + // 璁板綍鏁版嵁鏇存敼鏃ュ織 + saveLogUtil.operateLog("鏁版嵁鏇存敼", false, StringUtil.format("{}\n淇敼涓�:\n{}", JSON.toJSONString(oldCbos), JSON.toJSONString(newCbos))); + } catch (Exception vciError) { + // 璁板綍鏁版嵁鏇存敼鎶ラ敊鏃剁殑鏃ュ織 + saveLogUtil.operateLog("鏁版嵁鏇存敼", true, vciError.toString()); + throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError); + } + }else{ + excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls"; + WriteExcelOption eo = new WriteExcelOption(); + shetNameMap.forEach((shetName, errorDataList) -> { + eo.addSheetDataList(shetName, errorDataList); + }); + try { + new File(excelFileName).createNewFile(); + } catch (IOException e) { + throw new VciBaseException(LangBaseUtil.getErrorMsg(e)); + } + ExcelUtil.writeDataToFile(excelFileName, eo); + } + return excelFileName; + } + public void batchSwitchCheckExist(Map<String,String> errorMap,List<ClientBusinessObject> cboList,CodeClassifyFullInfoBO classifyFullInfo,CodeClassifyTemplateVO templateVO,ExecGroupCodePortDataDTO execGroupCodePortDataDTO,Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap){ + List<BaseModel> oldBaseModelList=new ArrayList<>(); + List<CodeAllCode> codeAllCodeList=new ArrayList<>(); + final BladeUser user = AuthUtil.getUser(); + cboList.stream().forEach(clientBusinessObject -> { + String code=clientBusinessObject.getId(); + String rowIndex=clientBusinessObject.getAttributeValue(IMPORT_ROW_INDEX); + List<Map<String,String>>dataList=new ArrayList<>(); + List<String> fieldList= execGroupCodePortDataDTO.getFieldList(); + getDatas(classifyFullInfo,templateVO,execGroupCodePortDataDTO.getFieldList(),dataList,Arrays.asList(code)); + DefaultAttrAssimtUtil.mapToLowerCase(dataList,true); + if(!CollectionUtils.isEmpty(dataList)){ + Map<String,String> newDataMap=new HashMap<>();//灏嗘柊瀵硅薄灞炴�ф殏鏃跺瓨鍌ㄥ湪Map<> + newDataMap.putAll(clientBusinessObject.getData()); + Map<String,String> dataMap=dataList.get(0); + BaseModel oldBaseModel=new BaseModel(); + DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,oldBaseModel,false,user); + String oldOid=oldBaseModel.getOid(); + + clientBusinessObject.setCopyFromVersion(oldOid); + clientBusinessObject.setAttributeValueWithNoCheck("copyfromversion",oldOid); + String oid=VciBaseUtil.getPk(); + clientBusinessObject.setOid(oid); + clientBusinessObject.setAttributeValueWithNoCheck("oid",oid); + clientBusinessObject.setBtmname(oldBaseModel.getBtmname()); + clientBusinessObject.setAttributeValueWithNoCheck("btmname",oldBaseModel.getBtmname()); + clientBusinessObject.setLastR("1"); + clientBusinessObject.setAttributeValueWithNoCheck("lastr","1"); + clientBusinessObject.setFirstR("1"); + clientBusinessObject.setAttributeValueWithNoCheck("firstr","1"); + clientBusinessObject.setFirstV("1"); + clientBusinessObject.setAttributeValueWithNoCheck("firstv","1"); + clientBusinessObject.setLastV("1"); + clientBusinessObject.setAttributeValueWithNoCheck("lastv","1"); + clientBusinessObject.setRevisionSeq(1); + clientBusinessObject.setAttributeValueWithNoCheck("revisionseq","1"); + clientBusinessObject.setVersionSeq(1); + clientBusinessObject.setAttributeValueWithNoCheck("versionseq","1"); + clientBusinessObject.setRevisionRule(oldBaseModel.getRevisionRule()); + clientBusinessObject.setAttributeValueWithNoCheck("revisionrule",oldBaseModel.getRevisionRule()); + clientBusinessObject.setVersionRule(oldBaseModel.getRevisionRule()); + clientBusinessObject.setAttributeValueWithNoCheck("versionrule",oldBaseModel.getVersionRule()); + clientBusinessObject.setVersionValue(oldBaseModel.getVersionValue()); + clientBusinessObject.setAttributeValueWithNoCheck("versionvalue",oldBaseModel.getVersionValue()); + clientBusinessObject.setLctid(oldBaseModel.getLctid()); + clientBusinessObject.setAttributeValueWithNoCheck("lctid",oldBaseModel.getLctid()); + clientBusinessObject.setId(oldBaseModel.getId()); + clientBusinessObject.setAttributeValueWithNoCheck("id",oldBaseModel.getId()); + clientBusinessObject.setName(oldBaseModel.getName()); + clientBusinessObject.setAttributeValueWithNoCheck("name",oldBaseModel.getName()); + clientBusinessObject.setLcStatus(CodeDefaultLC.RELEASED.getValue()); + clientBusinessObject.setAttributeValueWithNoCheck("lcstatus",CodeDefaultLC.RELEASED.getValue()); + clientBusinessObject.setDescription("瀵煎叆闆嗗洟鐮�"); + clientBusinessObject.setAttributeValueWithNoCheck("description","瀵煎叆闆嗗洟鐮�"); + clientBusinessObject.setOwner("1"); + clientBusinessObject.setAttributeValueWithNoCheck("owner","1"); + clientBusinessObject.setTenantId(AuthUtil.getTenantId()); + clientBusinessObject.setAttributeValueWithNoCheck("tenant_id",AuthUtil.getTenantId()); + clientBusinessObject.setCreator(oldBaseModel.getCreator()); + clientBusinessObject.setAttributeValueWithNoCheck("creator",oldBaseModel.getCreator()); + SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + clientBusinessObject.setCreateTime(oldBaseModel.getCreateTime()); + clientBusinessObject.setAttributeValueWithNoCheck("createtime", formatter.format(oldBaseModel.getCreateTime())); + clientBusinessObject.setLastModifier(AuthUtil.getUserAccount()); + clientBusinessObject.setAttributeValueWithNoCheck("lastmodifier",AuthUtil.getUserAccount()); + clientBusinessObject.setCreateTime(new Date()); + clientBusinessObject.setAttributeValueWithNoCheck("lastmodifytime", formatter.format(new Date())); + clientBusinessObject.setRevisionValue(String.valueOf(Integer.parseInt(oldBaseModel.getRevisionValue())+1)); + clientBusinessObject.setRevisionOid(oldBaseModel.getRevisionOid()); + clientBusinessObject.setAttributeValueWithNoCheck("revisionoid",oldBaseModel.getRevisionOid()); + clientBusinessObject.setAttributeValueWithNoCheck("revisionvalue",String.valueOf(Integer.parseInt(oldBaseModel.getRevisionValue())+1)); + + clientBusinessObject.setNameOid(oldBaseModel.getNameOid()); + clientBusinessObject.setAttributeValueWithNoCheck("nameoid",oldBaseModel.getNameOid()); + + clientBusinessObject.setAttributeValueWithNoCheck(CODE_CLASSIFY_OID_FIELD,oldBaseModel.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,"")); + clientBusinessObject.setAttributeValueWithNoCheck(CODE_FULL_PATH_FILED,oldBaseModel.getData().getOrDefault(CODE_FULL_PATH_FILED,"")); + clientBusinessObject.setAttributeValueWithNoCheck(CODE_TEMPLATE_OID_FIELD,oldBaseModel.getData().getOrDefault(CODE_TEMPLATE_OID_FIELD,"")); + clientBusinessObject.setTs(new Date()); + clientBusinessObject.setAttributeValueWithNoCheck("ts",formatter.format(new Date())); + oldBaseModel.setLastV("0"); + oldBaseModel.getData().put("lastv","0"); + oldBaseModelList.add(oldBaseModel); + List<CodeAllCode> oldCodeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getId,code)); + CodeAllCode codeAllCode=new CodeAllCode(); + if(!CollectionUtils.isEmpty(oldCodeAllCodeList)){ + codeAllCode=oldCodeAllCodeList.get(0); + codeAllCode.setId(code); + codeAllCode.setLcStatus(CodeDefaultLC.RELEASED.getValue()); + codeAllCode.setCreateCodeOid(clientBusinessObject.getOid()); + codeAllCode.setCreateCodeBtm(clientBusinessObject.getBtmname()); + codeAllCode.setLastModifyTime(new Date()); + codeAllCode.setLastModifier(AuthUtil.getUserAccount()); + codeAllCodeList.add(codeAllCode); + if(!oldBaseModel.getLcStatus().equals(CodeDefaultLC.RELEASED.getValue())||!codeAllCode.getLcStatus().equals(CodeDefaultLC.RELEASED.getValue())){ + errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍦ㄧ郴缁熶腑鏁版嵁涓嶆槸鍙戝竷鐘舵��"); + } + }else{ + errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍦ㄧ郴缁熶腑鏈煡璇㈠埌鐩稿簲鐨勭爜鍊兼暟鎹�"); + } + //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 + List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!fieldIndexMap.containsValue(s.getId()) && + ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) + ).collect(Collectors.toList()); + attrVOS.stream().forEach(codeClassifyTemplateAttrVO -> {//灏嗕笉闇�瑕佹洿鏀圭殑榛樿瀛楁鎴栬�呬笉鏇存敼鐨勫睘鎬у鍒跺埌鏂扮殑鐗堟湰涓� + String arrtibuteKey=codeClassifyTemplateAttrVO.getId(); + Map<String,String>attrDataMap=oldBaseModel.getData(); + if(attrDataMap.containsKey(arrtibuteKey)){ + String arrtibuteValue=attrDataMap.get(arrtibuteKey); + clientBusinessObject.setAttributeValueWithNoCheck(arrtibuteKey,arrtibuteValue); + } + }); + }else{ + errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍦ㄧ郴缁熶腑鏈煡璇㈠埌鐩稿簲鐨勬渶鏂扮増鏁版嵁"); + } + }); + execGroupCodePortDataDTO.setOldList(oldBaseModelList); + execGroupCodePortDataDTO.setCodeAllCodeList(codeAllCodeList); + } + /** + * + * @param fieldIndexMap + * @param rowDataList + * @param cboList + */ + private void getExportGroupCodeDatas(Map<Integer,String> fieldIndexMap,List<SheetRowData> rowDataList,List<ClientBusinessObject>cboList){ + rowDataList.stream().forEach(sheetRowData -> { + String rowIndex= sheetRowData.getRowIndex(); + ClientBusinessObject cbo=new ClientBusinessObject(); + cbo.setAttributeValue(IMPORT_ROW_INDEX,rowIndex); + sheetRowData.getData().forEach((index,value)->{ + String field = fieldIndexMap.get(index); + if (StringUtils.isBlank(field)) { + throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�"); + } + try { + cbo.setAttributeValueWithNoCheck(field, value); + if (WebUtil.isDefaultField(field)) { + WebUtil.setValueToField(field, cbo, value); + } + } catch (VciBaseException e) { + log.error("璁剧疆灞炴�х殑鍊奸敊璇�", e); + } + }); + cboList.add(cbo); + }); + } + /*** * 闆嗗洟瀵煎嚭妯℃澘灞炴�ф槧灏勪俊鎭幏鍙� * @param templateVO * @param execGroupCodePortDataDTO @@ -5117,23 +5512,54 @@ } /*** + * 闆嗗洟鐮佸睘鎬ц浆鎹� + * @param titleRowData + * @param codeAttrMapGroupAttrDTOS + * @param fieldIndexMap + */ + private void getGroupCodeFieldIndexMap(List<String> titleRowData,List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS,Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap){ + Map<String, CodeAndGroupCodeAttrMappingDTO> codeSystemObjectMap = codeAttrMapGroupAttrDTOS.stream().filter(codeAttrMappingDTO -> codeAttrMappingDTO != null && StringUtils.isNotBlank(codeAttrMappingDTO.getSourceAttrName())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getSourceAttrName(), t -> t)); + for (int i = 0; i < titleRowData.size(); i++) { + String title = titleRowData.get(i); + String id = ""; + if ("闆嗗洟鐮�".equalsIgnoreCase(title)) { + id = CODE_GROUP_FIELD; + } + if ("浼佷笟缂栫爜".equalsIgnoreCase(title)) { + id = CODE_FIELD; + } + if(codeSystemObjectMap.containsKey(title)) { + CodeAndGroupCodeAttrMappingDTO codeAndGroupCodeAttrMappingDTO = codeSystemObjectMap.get(title.replace(KEY_ATTR_CHAR, "").replace(REQUIRED_CHAR, "")); + id = codeAndGroupCodeAttrMappingDTO.getTargetAttrKey(); + } + if (com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(id)) { + fieldIndexMap.put(i, id); + } + } + + + } + /*** * 鏌ヨ鏈湁闆嗗洟鐮佺殑鏁版嵁 * @param classifyFullInfo * @param templateVO * @param selectFieldList * @param dataList */ - private void getDatas(CodeClassifyFullInfoBO classifyFullInfo,CodeClassifyTemplateVO templateVO,LinkedList<String> selectFieldList,List<Map<String,String>>dataList){ + private void getDatas(CodeClassifyFullInfoBO classifyFullInfo,CodeClassifyTemplateVO templateVO,LinkedList<String> selectFieldList,List<Map<String,String>>dataList,List<String> codeList){ //鍏堟煡璇㈡暟鎹� String btmTypeId = classifyFullInfo.getTopClassifyVO().getBtmTypeId(); String codeClassifyOid=classifyFullInfo.getCurrentClassifyVO().getOid(); - Map<String, String> conditionMap = new HashMap<>(); + Map<String, String> conditionMap=new HashMap<>(); if(conditionMap == null){ conditionMap = new HashMap<>(); } if(conditionMap.containsKey(VciQueryWrapperForDO.OID_FIELD)){ conditionMap.put(VciQueryWrapperForDO.OID_FIELD,QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(conditionMap.get(VciQueryWrapperForDO.OID_FIELD)) + ")"); } + if(!CollectionUtils.isEmpty(codeList)){ + conditionMap.put("id_in",VciBaseUtil.array2String(codeList.toArray(new String[]{}))); + } conditionMap.put("codeclsfpath","*" + codeClassifyOid + "*"); conditionMap.put("groupcode_null", "null"); conditionMap.put("lastr", "1"); -- Gitblit v1.9.3