From 029b101d319812460441d3d706c0654d8b0dcda6 Mon Sep 17 00:00:00 2001 From: yuxc <653031404@qq.com> Date: 星期五, 19 五月 2023 18:43:05 +0800 Subject: [PATCH] 主数据定义接口移植 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 487 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 470 insertions(+), 17 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 92eca05..689147f 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 @@ -1,49 +1,502 @@ package com.vci.ubcs.code.service.impl; -import com.alibaba.cloud.commons.lang.StringUtils; +import com.alibaba.nacos.common.utils.StringUtils; import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; import com.vci.ubcs.code.dto.CodeOrderDTO; import com.vci.ubcs.code.service.ICodeClassifyService; import com.vci.ubcs.code.service.MdmEngineService; import com.vci.ubcs.code.service.MdmIOService; -import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO; -import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO; -import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO; -import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO; +import com.vci.ubcs.code.vo.pagemodel.*; import com.vci.ubcs.code.vo.webserviceModel.attrmap.DataObjectVO; import com.vci.ubcs.code.vo.webserviceModel.attrmap.RowDatas; import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultDataObjectDetailDO; +import com.vci.ubcs.starter.bo.WriteExcelData; import com.vci.ubcs.starter.exception.VciBaseException; +import com.vci.ubcs.starter.poi.bo.ReadExcelOption; +import com.vci.ubcs.starter.poi.bo.SheetDataSet; +import com.vci.ubcs.starter.poi.bo.SheetRowData; +import com.vci.ubcs.starter.poi.bo.WriteExcelOption; +import com.vci.ubcs.starter.poi.util.ExcelUtil; +import com.vci.ubcs.starter.util.LocalFileUtil; +import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum; +import com.vci.ubcs.starter.web.pagemodel.DataGrid; +import com.vci.ubcs.starter.web.pagemodel.KeyValue; import com.vci.ubcs.starter.web.util.VciBaseUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.annotation.Lazy; +import com.vci.ubcs.starter.web.util.VciDateUtil; +import lombok.AllArgsConstructor; +import org.apache.poi.hssf.usermodel.HSSFRichTextString; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.hssf.util.HSSFColor; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.ss.usermodel.RichTextString; +import org.apache.poi.ss.usermodel.Workbook; +import org.springblade.core.redis.cache.BladeRedis; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.io.File; import java.util.*; import java.util.stream.Collectors; +import static com.alibaba.druid.util.FnvHash.Constants.LIMIT; import static com.vci.ubcs.code.constant.MdmEngineConstant.*; import static com.vci.ubcs.starter.poi.util.ExcelUtil.KEY_ATTR_CHAR; import static com.vci.ubcs.starter.poi.util.ExcelUtil.REQUIRED_CHAR; +@AllArgsConstructor @Service -@Slf4j public class MdmIOServiceImpl implements MdmIOService { + + /** - * 鍒嗙被鏈嶅姟灞� + * 涓婚搴撳垎绫荤殑鏈嶅姟 */ @Resource - @Lazy private ICodeClassifyService classifyService; /** - * 鍒嗙被鏈嶅姟灞� + * 妯℃澘鐨勬湇鍔� */ @Resource - @Lazy + private CodeClstemplateServiceImpl templateService; + + /** + * 涓绘暟鎹紩鎿庣殑鏈嶅姟 + */ + @Resource private MdmEngineService engineService; + + private final BladeRedis bladeRedis; + + /** + * 鐢熸垚瀵煎叆鐨勬枃浠� + * + * @param codeClassifyOid 鍒嗙被鐨勪富閿� + * @param isHistory 鏄惁鍘嗗彶鏁版嵁瀵煎叆 + * @return excel鐨勬枃浠跺湴鍧� + */ + @Override + public String createImportExcel(String codeClassifyOid, boolean isHistory) { + List<CodeClassifyTemplateVO> templateVOList=new ArrayList<>(); + + VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭"); + + CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid); + + if(isHistory){ + templateVOList= templateService.childTemplates(codeClassifyOid); + }else{ + //鎵炬ā鏉� + CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid); + templateVOList.add(templateVO); + } + + WriteExcelOption eo = new WriteExcelOption(); + eo.setAppend(true); + //澧炲姞妯℃澘鐨勪俊鎭鍏� + LinkedList<WriteExcelData> tempEDList = new LinkedList<>(); + tempEDList.add(new WriteExcelData(0,0,"妯℃澘涓婚敭")); + tempEDList.add(new WriteExcelData(0,1,"妯℃澘浠e彿")); + tempEDList.add(new WriteExcelData(0,2,"妯℃澘鍚嶇О")); + for(int j=0;j<templateVOList.size();j++){ + CodeClassifyTemplateVO templateVO=templateVOList.get(j); + CodeClassifyTemplateVO codeClassifyTemplateVO = new CodeClassifyTemplateVO(); + BeanUtils.copyProperties(templateVO,codeClassifyTemplateVO); + //缁勫悎鏍煎紡鐨勪笉瀵煎叆锛� + // 鏋氫妇鐨勬彁渚涘簭鍒楃殑閫夋嫨 + //鏃堕棿鍏ㄩ儴缁熶竴涓簓yyy-MM-dd HH:mm:ss + //鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉� + //鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑 + //缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏� + List<CodeClassifyTemplateAttrVO> templateAttrVOS = codeClassifyTemplateVO.getAttributes().stream().filter(s -> + !DEFAULT_ATTR_LIST.contains(s.getId()) + && StringUtils.isBlank(s.getComponentRule()) + && StringUtils.isBlank(s.getClassifyInvokeAttr()) + && (isHistory || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) + ).collect(Collectors.toList()); + + if(CollectionUtils.isEmpty(templateAttrVOS)){ + throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��"); + } + List<CodeClassifyTemplateAttrVO> idAttrVOList = codeClassifyTemplateVO.getAttributes().stream().filter(s -> s.getId().equalsIgnoreCase(CODE_FIELD)).collect(Collectors.toList()); + LinkedList<WriteExcelData> excelDataList = new LinkedList<>(); + Workbook workbook = new HSSFWorkbook(); + if(isHistory){ + 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():"浼佷笟缂栫爜")); + } + for (int i = 0; i < templateAttrVOS.size(); i++) { + CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i); + + Object text = attrVO.getName(); + text = exportKeyAndRequired(workbook,attrVO,text); + int colIndex = (isHistory?3:0) + i; + WriteExcelData excelData = new WriteExcelData(0, colIndex, text); + if(StringUtils.isNotBlank(attrVO.getCodeDateFormat()) + || VciFieldTypeEnum.VTDateTime.name().equalsIgnoreCase(attrVO.getAttributeDataType()) + || VciFieldTypeEnum.VTDate.name().equalsIgnoreCase(attrVO.getAttributeDataType()) + ||VciFieldTypeEnum.VTTime.name().equalsIgnoreCase(attrVO.getAttributeDataType())){ + excelData.setDateFormat(VciDateUtil.DateTimeFormat); + } + if(text instanceof RichTextString){ + excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex())); + } + excelDataList.add(excelData); + if(StringUtils.isNotBlank(attrVO.getEnumString()) || StringUtils.isNotBlank(attrVO.getEnumId())){ + //娣诲姞鏁版嵁鏈夋晥鎬� + List<String> enumValueList = new ArrayList<>(); + enumValueList.add(""); + List<KeyValue> valueList = engineService.listComboboxItems(attrVO); + if(!CollectionUtils.isEmpty(valueList)){ + valueList.stream().forEach(kv->{ + enumValueList.add(kv.getValue()); + }); + } + //榛樿鍔�1涓囨潯 + WriteExcelData ed = new WriteExcelData(1,colIndex,""); + ed.setRowTo(100); + ed.setColTo(colIndex); + ed.setValidation(true); + ed.setValidationDataList(enumValueList); + ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��"); + excelDataList.add(ed); + } + if(VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributeDataType())){ + List<String> booleanList = new ArrayList<>(); + + booleanList.add("鏄�"); + booleanList.add("鍚�"); + //榛樿鍔�1涓囨潯 + WriteExcelData ed = new WriteExcelData(1,colIndex,""); + ed.setRowTo(100); + ed.setColTo(colIndex); + ed.setValidation(true); + ed.setValidationDataList(booleanList); + ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��"); + excelDataList.add(ed); + } + } + eo.addSheetDataList(j+templateVO.getName(),excelDataList); + tempEDList.add(new WriteExcelData(j+1,0,templateVO.getOid())); + tempEDList.add(new WriteExcelData(j+1,1,templateVO.getId())); + tempEDList.add(new WriteExcelData(j+1,2,templateVO.getName())); + } + String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + codeClassifyVO.getName() + (isHistory?"_鍘嗗彶鏁版嵁瀵煎叆妯℃澘.xls": "_瀵煎叆妯℃澘.xls"); + eo.addSheetDataList(templateVOList.size()+"妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList); + ExcelUtil.writeDataToFile(excelName,eo); + return excelName; + } + + /** + * 瀵煎嚭鐨勬椂鍊欏皝瑁呭繀杈撳拰鍏抽敭灞炴�� + * @param attrVO 灞炴�х殑鏄剧ず瀵硅薄 + * @param text 鍗曞厓鏍肩殑鍊� + */ + private Object exportKeyAndRequired(Workbook workbook,CodeClassifyTemplateAttrVO attrVO,Object text){ + //蹇呰緭鍔�*锛屽叧閿睘鎬т负钃濊壊 + if (VciBaseUtil.getBoolean(attrVO.getRequireFlag()) || VciBaseUtil.getBoolean(attrVO.getKeyAttrFlag())) { + String value = text.toString(); + if(VciBaseUtil.getBoolean(attrVO.getRequireFlag())) { + value += REQUIRED_CHAR; + } + if(VciBaseUtil.getBoolean(attrVO.getKeyAttrFlag())){ + value += KEY_ATTR_CHAR; + } + RichTextString ts = new HSSFRichTextString(value); + if(VciBaseUtil.getBoolean(attrVO.getRequireFlag())){ + Font font = workbook.createFont(); + font.setColor(HSSFColor.HSSFColorPredefined.RED.getIndex()); + ts.applyFont(font); + } + + if(VciBaseUtil.getBoolean(attrVO.getKeyAttrFlag())){ + Font font = workbook.createFont(); + font.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex()); + ts.applyFont(font); + } + return ts; + } + return text; + } + + + /** + * 鎵归噺鐢宠缂栫爜鏁版嵁 + * + * @param orderDTO 缂栫爜鐢宠淇℃伅锛屽繀椤诲寘鍚垎绫讳富閿拰鐮佹鐨勪俊鎭� + * @param file excel鏂囦欢鐨勪俊鎭� + * @return 鏈夐敊璇俊鎭殑excel鐨勬枃浠� + */ + @Override + public CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file) { + VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�"); + ReadExcelOption reo = new ReadExcelOption(); + reo.setReadAllSheet(true); + List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo); + if(CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(0).getRowData()) + ||sheetDataSetList.get(0).getRowData().size()<1){ + throw new VciBaseException("娌℃湁璇诲彇鍒颁换浣曠殑鏁版嵁"); + } + if(sheetDataSetList.size()>LIMIT+1){ + throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�"); + } + //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬� + SheetDataSet dataSet = sheetDataSetList.get(0); + //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰� + CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid()); + + //鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑 + checkTemplateSync(sheetDataSetList,templateVO,0); + //鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹� + Map<String,String> errorMap = new HashMap<>(); + String redisUUid=batchImportCodes(orderDTO,templateVO,dataSet,errorMap,true); + CodeImProtRusultVO codeImProtRusultVO = new CodeImProtRusultVO(); + List<String> needRowIndexList = new ArrayList<>(); +// String filePath = returnErrorToExcel(dataSet.getRowData(), errorMap, needRowIndexList, dataSet.getColName()); +// if(StringUtils.isNotBlank(filePath)) { +// codeImProtRusultVO.setFilePath(filePath); +// } +// if(StringUtils.isNotBlank(redisUUid)){ +// codeImProtRusultVO.setRedisUuid(redisUUid); +// } + return null; +// return codeImProtRusultVO; + } + + /** + * 鏍¢獙妯℃澘鏄惁涓哄悓姝ョ殑 + * @param sheetDataSetList excel閲岀殑鍐呭 + * @param templateVO 妯℃澘鐨勪俊鎭� + */ + private void checkTemplateSync(List<SheetDataSet> sheetDataSetList,CodeClassifyTemplateVO templateVO,int i){ + String templateOidInExcel = ""; + String templateName=""; + if(!CollectionUtils.isEmpty(sheetDataSetList) + && sheetDataSetList.size()>1 && !CollectionUtils.isEmpty(sheetDataSetList.get(sheetDataSetList.size()-1).getColName())){ + List<SheetRowData> rowData= sheetDataSetList.get(sheetDataSetList.size()-1).getRowData(); + templateName=rowData.get(i).getData().get(2); + templateOidInExcel=rowData.get(i).getData().get(0); + //templateOidInExcel = sheetDataSetList.get(sheetDataSetList.size()-1).getColName().get(sheetDataSetList.size()-i); + } + /* if(!CollectionUtils.isEmpty(sheetDataSetList) + && sheetDataSetList.size()>1 && !CollectionUtils.isEmpty(sheetDataSetList.get(sheetDataSetList.size()-1).getColName())){ + List<SheetRowData> rowData= sheetDataSetList.get(sheetDataSetList.size()-1).getRowData(); + templateOidInExcel=rowData.get(i).getData().get(0); + //templateOidInExcel = sheetDataSetList.get(sheetDataSetList.size()-1).getColName().get(sheetDataSetList.size()-i); + }*/ + if(StringUtils.isBlank(templateOidInExcel) || !templateOidInExcel.equalsIgnoreCase(templateVO.getOid())){ + throw new VciBaseException("妯℃澘銆�"+templateName+"銆戜腑鐨勬暟鎹幏鍙栫殑妯$増淇℃伅涓庡綋鍓嶆ā鏉夸笉鍖归厤锛岃纭繚excel鏂囦欢閲屾湁銆愭ā鏉夸俊鎭�-璇峰嬁绉诲姩鎴栧垹闄ゃ�戠殑宸ヤ綔琛紝涓旂‘淇濇瘡娆″鍏ラ兘鏄厛涓嬭浇鐨勫鍏ユā鏉垮悗娣诲姞鐨勬暟鎹�"); + } + + } + + + /*** + * 鎵归噺澶勭悊鐢宠鏁版嵁 + * @param orderDTO + * @param templateVO + * @param dataSet + * @return + */ + private String batchImportCodes(CodeOrderDTO orderDTO,CodeClassifyTemplateVO templateVO,SheetDataSet dataSet,Map<String,String> errorMap,boolean isEnumType){ + List<String> codeList=new ArrayList<>(); +// CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); + //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇 +// CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo); +// //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈� +// engineService.checkSecValueOnOrder(ruleVO,orderDTO); +// List<SheetRowData> rowDataList = dataSet.getRowData(); +// +// //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 +// List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> +// !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag()) +// ).collect(Collectors.toList()); +// Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>(); +// List<String> titleRowData = dataSet.getColName(); +// Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT),(o1, o2)->o2)); +// getFieldIndexMap(titleRowData,attrNameIdMap,fieldIndexMap); +// +// //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜� +// List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT)) +// && StringUtils.isBlank(s.getComponentrule()) && StringUtils.isBlank(s.getClassifyinvokeattr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓 +// ).collect(Collectors.toList()); +// if(!CollectionUtils.isEmpty(unExistAttrVOs)){ +// throw new VciBaseException("銆�" + unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName) + "銆戣繖浜涘睘鎬у湪鍒楄〃涓病鏈夋壘鍒�"); +// } +// List<ClientBusinessObject> cboList = new ArrayList<>(); +// String fullPath = getFullPath(classifyFullInfo); +// excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList,templateVO,cboList,fullPath,true); +// +// //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌� +// //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓� +// //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒� +// batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap); +// //3.鍒ゆ柇鍏抽敭灞炴�� +// CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList); +// Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); +// Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); +// if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){ +// selfRepeatRowIndexList.stream().forEach(rowIndex->{ +// errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍦ㄥ綋鍓嶅鐞嗙殑鏁版嵁鏂囦欢涓叧閿睘鎬ч噸澶�" ); +// }); +// } +// if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){ +// keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{ +// errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" ); +// }); +// } +// //鍒嗙被娉ㄥ叆 +// batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false); +// //boolean +// reSwitchBooleanAttrOnOrder(attrVOS,cboList); +// //4.鏍¢獙瑙勫垯 +// batchCheckVerifyOnOrder(attrVOS, cboList,errorMap); +// if(isEnumType) {//鏄惁闇�瑕佹牎楠屾灇涓�/鍙傜収 +// //5.鏍¢獙鏋氫妇鏄惁姝g‘ +// batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap); +// //7.澶勭悊鍙傜収鐨勬儏鍐� +// batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap); +// } +// //6.鏃堕棿鏍煎紡鐨勯獙璇� +// //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss +// batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap); +// //鏈�鍚庡紕缁勫悎瑙勫垯 +// batchSwitchComponentAttrOnOrder(attrVOS,cboList); +// String uuid=redisService.getUUIDEveryDay(); +// Map<String, ClientBusinessObject> rowIndexCboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t)); +// +// if(errorMap.size()>0) { +// createRedisDatas(uuid + "-error",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, errorMap,false); +// } +// boolean isCreateUUid=false; +// List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> { +// String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); +// return !errorMap.containsKey(rowIndex); +// }).collect(Collectors.toList()); +// //鐩镐技鏍¢獙 +// Map<String,String>resembleMap=new HashMap<>(); +// List<DataResembleVO> dataResembleVOS=new ArrayList<>(); +// String btmtypeid= classifyFullInfo.getTopClassifyVO().getBtmtypeid(); +// bathcResembleQuery(orderDTO.getCodeClassifyOid(),templateVO,needSaveCboList,resembleMap,btmtypeid,dataResembleVOS); +// if(resembleMap.size()>0) { +// isCreateUUid=true; +// if(!CollectionUtils.isEmpty(dataResembleVOS)) { +// redisService.setCacheList(uuid + "-resemble-data", dataResembleVOS); +// createRedisDatas(uuid + "-resemble",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, resembleMap, false); +// } +// } +// //鎺掗櫎閿欒鐨勶紝鍓╀笅姝g‘鐨� +// Map<String,String> newErrorMap=new HashMap<>(); +// newErrorMap.putAll(resembleMap); +// newErrorMap.putAll(errorMap); +// needSaveCboList = cboList.stream().filter(cbo -> { +// String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); +// return !newErrorMap.containsKey(rowIndex); +// }).collect(Collectors.toList()); +// if((errorMap.size()>0&&needSaveCboList.size()>0)||resembleMap.size()>0){ +// isCreateUUid=true; +// } +// createRedisByCodeClassify(uuid + "-class",templateVO,dataSet,fieldIndexMap,false); +// if(newErrorMap.size()>0) { +// createRedisDatas(uuid + "-ok",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap,true); +// }else { +// uuid=""; +// //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒� +// needSaveCboList = cboList.stream().filter(cbo -> { +// String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); +// return !newErrorMap.containsKey(rowIndex); +// }).collect(Collectors.toList()); +// if (!CollectionUtils.isEmpty(needSaveCboList)) { +// //9.鎴戜滑澶勭悊涓氬姟鏁版嵁 +// //鐢熸垚缂栫爜鐨勫唴瀹� +// codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), needSaveCboList); +// //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰 +// engineService.batchSaveSelectChar(templateVO, needSaveCboList); +// } +// } +// if(!isCreateUUid){ +// return uuid=""; +// } +// return uuid; + return null; + } + + @Override + public List<CodeImportTemplateVO> gridclassifys(String redisOid) { + List<CodeImportTemplateVO> codeImportTemplateVOs=new ArrayList<>(); + VciBaseUtil.alertNotNull(redisOid,"鍒嗙被",redisOid,"鍒嗙被缂撳瓨涓婚敭"); + + List<CodeImportTemplateVO> redisServiceCacheObjects=bladeRedis.lRange(redisOid,0,-1); + if(redisServiceCacheObjects!=null){ + codeImportTemplateVOs= redisServiceCacheObjects; + } + return codeImportTemplateVOs; + } + + /*** + * 浠庣紦瀛橀噷鑾峰彇鍒伴渶瑕佸鍏ョ殑鐩稿叧鏁版嵁 + * @param codeClssifyOid + * @param redisOid + * @return + */ + @Override + public DataGrid<Map<String, String>> gridDatas(String codeClssifyOid, String redisOid) { + VciBaseUtil.alertNotNull(redisOid,"瀵煎叆鐩镐技鏁版嵁",redisOid,"鏁版嵁缂撳瓨涓婚敭"); + List<CodeImprotDataVO> codeImprotDataVOs = bladeRedis.lRange(redisOid+"-"+codeClssifyOid,0,-1); +// redisService.getCacheList(redisOid+"-"+codeClssifyOid); + CodeImprotDataVO codeImprotDataVO=new CodeImprotDataVO(); + if(!CollectionUtils.isEmpty(codeImprotDataVOs)){ + if(StringUtils.isNotBlank(codeClssifyOid)){ + Map<String/**鍒嗙被鍚嶇О**/, CodeImprotDataVO/**鑻辨枃鍚嶇О**/> codeClassifyDatasMap = codeImprotDataVOs.stream().collect(Collectors.toMap(s -> s.getCodeClassifyOid(), t -> t,(o1, o2)->o2)); + if(codeClassifyDatasMap.containsKey(codeClssifyOid)){ + codeImprotDataVO= codeClassifyDatasMap.get(codeClssifyOid); + }else{ + codeImprotDataVO= codeImprotDataVOs.get(0); + } + } + } + DataGrid<Map<String, String>> dataGrid = new DataGrid<>(); + List<Map<String, String>> dataList = new ArrayList<>(); + if(codeImprotDataVO!=null){ + dataList= codeImprotDataVO.getDatas(); + } + dataGrid.setData(dataList); + if (!CollectionUtils.isEmpty(dataList)) { + dataGrid.setTotal(dataList.size()); + } + return dataGrid; + } + + /** + * + * @param oid + * @param redisOid + * @return + */ + @Override + public DataGrid<Map<String,String>> gridRowResemble(String oid,String redisOid){ + VciBaseUtil.alertNotNull(redisOid,"瀵煎叆鐩镐技鏁版嵁",redisOid,"鏁版嵁缂撳瓨涓婚敭"); + List<DataResembleVO> codeImprotDataVOs = bladeRedis.lRange(redisOid,0,-1);; + DataGrid<Map<String, String>> dataGrid = new DataGrid<>(); + List<Map<String, String>> dataList = new ArrayList<>(); + + if(!CollectionUtils.isEmpty(codeImprotDataVOs)){ + Map<String/**鍒嗙被鍚嶇О**/, DataResembleVO/**鏁版嵁瀵硅薄**/> rowResembleDataMap = codeImprotDataVOs.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t,(o1, o2)->o2)); + if(rowResembleDataMap.containsKey(oid)){ + DataResembleVO dataResembleVO= rowResembleDataMap.get(oid); + dataList= dataResembleVO.getDataList(); + } + } + + dataGrid.setData(dataList); + if (!CollectionUtils.isEmpty(dataList)) { + dataGrid.setTotal(dataList.size()); + } + return dataGrid; + } /** * 闆嗘垚鎵归噺鐢宠鏁版嵁 @@ -83,7 +536,7 @@ //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜� List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT)) - && StringUtils.isBlank(s.getComponentRule()) && StringUtils.isBlank(s.getClassifyInvokeAttr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓 + && 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)){ throw new VciBaseException("銆�" + unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName) + "銆戣繖浜涘睘鎬у湪excel涓病鏈夋壘鍒�"); @@ -139,16 +592,16 @@ String title = titleRowData.get(i); String id = attrNameIdMap.getOrDefault(title.replace(KEY_ATTR_CHAR,"").replace(REQUIRED_CHAR ,""),""); - if(StringUtils.isBlank(id) && "鍒嗙被璺緞".equalsIgnoreCase(title)){ + if(com.alibaba.cloud.commons.lang.StringUtils.isBlank(id) && "鍒嗙被璺緞".equalsIgnoreCase(title)){ id = CODE_CLASSIFY_OID_FIELD; } - if(StringUtils.isBlank(id) && "鐮佹瀹藉害".equalsIgnoreCase(title)){ + if(com.alibaba.cloud.commons.lang.StringUtils.isBlank(id) && "鐮佹瀹藉害".equalsIgnoreCase(title)){ id = CODE_SEC_LENGTH_FIELD; } - if(StringUtils.isBlank(id) && "浼佷笟缂栫爜".equalsIgnoreCase(title)){ + if(com.alibaba.cloud.commons.lang.StringUtils.isBlank(id) && "浼佷笟缂栫爜".equalsIgnoreCase(title)){ id = CODE_FIELD; } - if(StringUtils.isNotBlank(id)){ + if(com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(id)){ fieldIndexMap.put(i,id); } } -- Gitblit v1.9.3