From dd3f57317edc84965849d3eb78bf0216dfd02206 Mon Sep 17 00:00:00 2001
From: wang1 <844966816@qq.com>
Date: 星期三, 14 六月 2023 14:57:42 +0800
Subject: [PATCH] 修复密码策略异常bug
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 1922 ++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 1,550 insertions(+), 372 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 71a98c8..c1fe797 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,381 +1,1559 @@
package com.vci.ubcs.code.service.impl;
-import com.vci.ubcs.code.service.MdmIOService;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.common.utils.StringUtils;
+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.dto.CodeOrderDTO;
+import com.vci.ubcs.code.enumpack.CodeDefaultLC;
+import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
+import com.vci.ubcs.code.mapper.CommonsMapper;
+import com.vci.ubcs.code.service.*;
+import com.vci.ubcs.code.util.ClientBusinessObject;
+import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
+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.revision.model.BaseModel;
+import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
+import com.vci.ubcs.starter.util.LocalFileUtil;
+import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
+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.pagemodel.PageHelper;
+import com.vci.ubcs.starter.web.pagemodel.UIFormReferVO;
+import com.vci.ubcs.starter.web.toolmodel.DateConverter;
+import com.vci.ubcs.starter.web.util.*;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+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.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.CopyOnWriteArraySet;
+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.*;
+
+@AllArgsConstructor
@Service
+@Slf4j
public class MdmIOServiceImpl implements MdmIOService {
+ @Value("${batchadd.redis.time:6000000}")
+ public int BATCHADD_REDIS_TIME;
+ /**
+ * 涓婚搴撳垎绫荤殑鏈嶅姟
+ */
+ @Resource
+ private ICodeClassifyService classifyService;
-//
-// /**
-// * 涓婚搴撳垎绫荤殑鏈嶅姟
-// */
-// @Resource
-// private ICodeClassifyService classifyService;
-//
-// /**
-// * 妯℃澘鐨勬湇鍔�
-// */
-// @Resource
-// private CodeClstemplateServiceImpl templateService;
-//
-// /**
-// * 涓绘暟鎹紩鎿庣殑鏈嶅姟
-// */
-// @Resource
-// private MdmEngineService engineService;
-//
-// /**
-// * 鐢熸垚瀵煎叆鐨勬枃浠�
-// *
-// * @param codeClassifyOid 鍒嗙被鐨勪富閿�
-// * @param isHistory 鏄惁鍘嗗彶鏁版嵁瀵煎叆
-// * @return excel鐨勬枃浠跺湴鍧�
-// */
-// @Override
-// public String createImportExcel(String codeClassifyOid, boolean isHistory) {
-// List<CodeClstemplateVO> templateVOList=new ArrayList<>();
-//
-// VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
-//
-// CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
-//
-// if(isHistory){
-// templateVOList= templateService.childTemplates(codeClassifyOid);
-// }else{
-// //鎵炬ā鏉�
-// CodeClstemplateVO 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++){
-// CodeClstemplateVO 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);
-// //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
-// CodeClstemplateVO 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);
-//// }
+ /**
+ * 閫氱敤鏌ヨ
+ */
+ @Resource
+ CommonsMapper commonsMapper;
+
+ /**
+ * 妯℃澘鐨勬湇鍔�
+ */
+ @Resource
+ private CodeClstemplateServiceImpl templateService;
+
+ /**
+ * 涓绘暟鎹紩鎿庣殑鏈嶅姟
+ */
+ @Resource
+ private MdmEngineService engineService;
+ /***
+ * resdis缂撳瓨鏈嶅姟
+ */
+ private final BladeRedis bladeRedis;
+ /**
+ * 鐢熸垚缂栫爜鐨勬湇鍔�
+ */
+ @Resource
+ private MdmProductCodeService productCodeService;
+ /**
+ * 鍏抽敭灞炴�х殑閰嶇疆
+ */
+ @Autowired
+ private ICodeKeyAttrRepeatService keyRuleService;
+
+ /**
+ * 鍏紡鐨勬湇鍔�
+ */
+ @Autowired
+ private FormulaServiceImpl formulaService;
+ /**
+ * 鐢熸垚瀵煎叆鐨勬枃浠�
+ *
+ * @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,CodeClstemplateVO 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,CodeClstemplateVO 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;
-// }
+ return codeImProtRusultVO;
+ }
+
+ /**
+ * 閿欒淇℃伅杩斿洖excel
+ * @param rowDataList 鎵�鏈夌殑瀵煎叆鏁版嵁
+ * @param errorMap 閿欒鐨勪俊鎭�
+ * @param needRowIndexList 闇�瑕佸啓鍏ョ殑鏁版嵁鐨勮鍙�
+ * @param titleRowData 鏍囬琛�
+ *
+ * @return 閿欒鐨別xcel鏂囦欢锛屾病鏈夐敊璇細杩斿洖绌�
+ */
+ private String returnErrorToExcel(Collection<SheetRowData> rowDataList,
+ Map<String,String> errorMap,
+ List<String> needRowIndexList,List<String> titleRowData){
+ if(CollectionUtils.isEmpty(errorMap)){
+ return "";
+ }
+ Map<String, SheetRowData> rowIndexDataMap = rowDataList.stream().filter(s -> !needRowIndexList.contains(s.getRowIndex())).collect(Collectors.toMap(s -> s.getRowIndex(), t -> t));
+ List<WriteExcelData> errorDataList = new ArrayList<>();
+ errorDataList.add(new WriteExcelData(0,0,"閿欒淇℃伅"));
+ for (int i = 0; i < titleRowData.size(); i++) {
+ //閿欒淇℃伅鍦ㄦ渶鍚�
+ errorDataList.add(new WriteExcelData(0,i+1,titleRowData.get(i)));
+ }
+ Integer[] newRowIndex = new Integer[]{1};
+ errorMap.forEach((index,error)->{
+ //閿欒淇℃伅鍏ㄩ儴缁勫悎鍒颁竴璧�
+ SheetRowData rowData = rowIndexDataMap.getOrDefault(index, null);
+ if(rowData!=null){
+ errorDataList.add(new WriteExcelData(newRowIndex[0],0,error));
+ rowData.getData().forEach((colIndex,value)->{
+ errorDataList.add(new WriteExcelData(newRowIndex[0],colIndex+1,value));
+ });
+ newRowIndex[0]++;
+ }
+ });
+ String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls";
+ WriteExcelOption eo = new WriteExcelOption(errorDataList);
+ try {
+ new File(excelFileName).createNewFile();
+ } catch (IOException e) {
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e));
+ }
+ ExcelUtil.writeDataToFile(excelFileName,eo);
+ return excelFileName;
+ }
+
+ /**
+ * 鏍¢獙妯℃澘鏄惁涓哄悓姝ョ殑
+ * @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=VciBaseUtil.getPk();
+ 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)) {
+ bladeRedis.set(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="";
+
+ //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
+ /*dataCBOList = cboList.stream().filter(cbo -> {
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ return !newErrorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+*/ List<String> dataCBOIdList=new ArrayList<>();
+ List<BaseModel> dataCBOList=new ArrayList<>();
+ cboList.stream().forEach(clientBusinessObject -> {
+ BaseModel baseModel=new BaseModel();
+ BeanUtil.convert(clientBusinessObject,baseModel);
+ baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject));
+ dataCBOList.add(baseModel);
+ dataCBOIdList.add(baseModel.getOid());
+ });
+
+ if (!CollectionUtils.isEmpty(needSaveCboList)) {
+ //9.鎴戜滑澶勭悊涓氬姟鏁版嵁
+ //鐢熸垚缂栫爜鐨勫唴瀹�
+ try {
+ codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList);
+ //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
+ engineService.batchSaveSelectChar(templateVO, dataCBOIdList);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("鎵逛簡鐢宠鏃跺け璐�");
+ }
+ }
+ }
+ if(!isCreateUUid){
+ return uuid="";
+ }
+ return uuid;
+ }
+
+ @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;
+ }
+
+ /**
+ * 闆嗘垚鎵归噺鐢宠鏁版嵁
+ * @param orderDTO 鍒嗙被鐨勪富閿�
+ * @param dataObjectVO 鏁版嵁淇℃伅
+ * @param resultDataObjectDetailDOs 閿欒淇℃伅
+ * @return 鏈夐敊璇俊鎭殑excel
+ */
+ @Override
+ public void batchSyncApplyCode(CodeOrderDTO orderDTO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) {
+ Map<String,String> errorMap=new HashMap<>();
+ VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�");
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+ //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
+ CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
+ //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
+ //engineService.checkSecValueOnOrder(ruleVO,orderDTO);
+ //鏌ヨ鍒嗙被鍜屾ā鏉�
+ //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
+ List<RowDatas> rowDataList = dataObjectVO.getRowData();
+ Map<String , RowDatas>rowDataMap=new LinkedHashMap<>();
+ rowDataList.stream().forEach(rowData->{
+ rowDataMap.put(rowData.getRowIndex(),rowData);
+ });
+ //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
+
+ //鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑
+ //checkTemplateSync(sheetDataSetList,templateVO);
+ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
+ ).collect(Collectors.toList());
+ Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
+ List<String> titleRowData = dataObjectVO.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))
+ && 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涓病鏈夋壘鍒�");
+ }
+
+ String fullPath = getFullPath(classifyFullInfo);
+
+ // List<CodeClassifyProcessTempVO> codeClassifyProcessTempVOS=codeClassifyProcessTempService.listProcessTemplate(templateVO.getOid(),"code_cls_flow_use_order");
+ boolean isProcess=false;
+ //娉ㄩ噴鎺夋澶勪笅闈㈡墍鏈夐兘鎸夌収涓嶅垽鏂祦绋嬪瓨鍌ㄧ姸鎬佷簡
+ /** if(!CollectionUtils.isEmpty(codeClassifyProcessTempVOS)){
+ isProcess=true;
+ }***/
+ //List<ClientBusinessObject> cboList = new ArrayList<>();
+ //Map<String,String> codeOidToSystemOidMap=new HashMap<>();//瀛樺偍缂栫爜鏁版嵁鍜岄泦鎴愮郴缁熸暟鎹畂id瀵圭収鏄犲皠
+ //excelToCbo(classifyFullInfo,titleRowData,fieldIndexMap,rowDataList,templateVO,cboList,fullPath,isProcess,"create",errorMap,codeOidToSystemOidMap);
+
+ //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
+ //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
+ //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
+
+ }
+
+ @Override
+ public void batchSyncEditDatas(CodeClassifyVO codeClassifyVO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) {
+
+ }
+
+ /**
+ * 鑾峰彇鍒嗙被鐨勫叏璺緞
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @return 鍏ㄨ矾寰�
+ */
+ private String getFullPath(CodeClassifyFullInfoBO classifyFullInfo){
+ String fullPath = "";
+ if(!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())){
+ fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel())))
+ .map(CodeClassifyVO::getOid).collect(Collectors.joining("##"));
+ }else{
+ fullPath = classifyFullInfo.getCurrentClassifyVO().getOid();
+ }
+ return fullPath;
+ }
+
+ /**
+ * excel杞崲涓篶bo鐨勫璞�
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param fieldIndexMap 瀛楁鐨勪綅缃�
+ * @param rowDataList excel閲岀殑琛屾暟鎹�
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+ * @param cboList 鏁版嵁鐨勫垪琛�
+ * @param fullPath 鍏ㄨ矾寰�
+ * @param newCode 鏄惁涓烘壒閲忕敵璇�
+ */
+ private void excelToCbo(CodeClassifyFullInfoBO classifyFullInfo,Map<Integer,String> fieldIndexMap,List<SheetRowData> rowDataList,
+ CodeClassifyTemplateVO templateVO,List<ClientBusinessObject> cboList,
+ String fullPath,boolean newCode){
+ rowDataList.stream().forEach(rowData -> {
+ ClientBusinessObject cbo=new ClientBusinessObject();
+ DefaultAttrAssimtUtil.addDefaultAttrAssimt(cbo, classifyFullInfo.getTopClassifyVO().getBtmtypeid());
+ rowData.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);
+ }
+ });
+ try {
+ cbo.setAttributeValue(CODE_TEMPLATE_OID_FIELD,templateVO.getOid());
+ cbo.setAttributeValue(IMPORT_ROW_INDEX,rowData.getRowIndex());
+ if(newCode){
+ cbo.setAttributeValue(CODE_CLASSIFY_OID_FIELD,classifyFullInfo.getCurrentClassifyVO().getOid());
+ cbo.setAttributeValue(CODE_FULL_PATH_FILED,fullPath);
+ //cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ int secret = VciBaseUtil.getInt(cbo.getAttributeValue(SECRET_FIELD));
+ /*if(secret == 0 || !secretService.checkDataSecret(secret) ){
+ Integer userSecret = VciBaseUtil.getCurrentUserSecret();
+ cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
+ }*/
+ }else{
+ //姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
+ //cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
+ cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
+ }
+
+ }catch (Throwable e){
+ log.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�",e);
+ }
+ cboList.add(cbo);
+ });
+
+ }
+
+ /**
+ * 妫�鏌ユ牎楠岃鍒欐病鏈夐�氳繃鐨勫唴瀹�
+ * @param attrVOS 闇�瑕佹牎楠岀殑灞炴��
+ * @param dataList 鏁版嵁鐨勫垪琛�
+ * @param errorMap 閿欒鐨勪俊鎭槧灏�
+ * @return 鏍¢獙涓嶉�氳繃鐨勮鏁�
+ */
+ private void batchCheckVerifyOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS, List<ClientBusinessObject> dataList,Map<String,String> errorMap) {
+ Map<String, CodeClassifyTemplateAttrVO> verifyAttrVOMap = attrVOS.stream().filter(s -> StringUtils.isNotBlank(s.getVerifyRule()) && StringUtils.isBlank(s.getComponentRule())
+ &&StringUtils.isBlank(s.getClassifyInvokeAttr())
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if(!CollectionUtils.isEmpty(verifyAttrVOMap)){
+ Map<String/**琛屽彿**/,List<String>/**鏍¢獙涓嶉�氳繃鐨勫睘鎬�**/> unPassCheckMap = new HashMap<>();
+ verifyAttrVOMap.forEach((attrId,attrVO)->{
+ dataList.stream().forEach(cbo -> {
+ String value = cbo.getAttributeValue(attrId);
+ if(StringUtils.isNotBlank(value) && !value.matches(attrVO.getVerifyRule())){
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ List<String> unPassAttrs = unPassCheckMap.getOrDefault(rowIndex, new ArrayList<>());
+ unPassAttrs.add(attrVO.getName());
+ unPassCheckMap.put(rowIndex,unPassAttrs);
+ }
+ });
+ });
+ if(!CollectionUtils.isEmpty(unPassCheckMap)){
+ unPassCheckMap.forEach((rowIndex,unPassAttrs)->{
+ errorMap.put(rowIndex,";灞炴�" + unPassAttrs.stream().collect(Collectors.joining(",")) + "]鍐呭涓嶇鍚堟牎楠岃鍒欑殑瑕佹眰");
+ });
+ }
+ }
+ }
+ /**
+ * 鎵归噺杞崲鏃堕棿閮戒负鎸囧畾鐨勬牸寮�
+ * @param attrVOS 妯℃澘灞炴��
+ * @param cboList 鏁版嵁鐨勫垪琛�
+ * @param errorMap 閿欒鐨勪俊鎭�
+ */
+ private void batchSwitchDateAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> cboList,Map<String,String> errorMap){
+ Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap =attrVOS.stream().filter(s ->
+ StringUtils.isNotBlank(s.getCodeDateFormat()) && VciBaseUtil.getBoolean(s.getCodeDateFormat()) && StringUtils.isBlank(s.getComponentRule())
+ && StringUtils.isBlank(s.getClassifyInvokeAttr())
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if(!CollectionUtils.isEmpty(dateAttrVOMap)) {
+ dateAttrVOMap.forEach((attrId, attrVO) -> {
+ cboList.stream().forEach(cbo -> {
+ String value = cbo.getAttributeValue(attrId);
+ if (value == null) {
+ value = "";
+ }
+ if (StringUtils.isNotBlank(value)) {
+ boolean formated = false;
+ if(StringUtils.isNotBlank(attrVO.getCodeDateFormat())){
+ try {
+ Date date = VciDateUtil.str2Date(value, attrVO.getCodeDateFormat());
+ if(date!=null){
+ cbo.setAttributeValue(attrId,value);
+ formated = true;
+ }
+ } catch (Exception e) {
+ //璇存槑涓嶆槸杩欎釜鏍煎紡
+ }
+ }
+ if(!formated) {
+ try {
+ DateConverter dateConverter = new DateConverter();
+ dateConverter.setAsText(value);
+ value = VciDateUtil.date2Str(dateConverter.getValue(), VciDateUtil.DateTimeMillFormat);
+ cbo.setAttributeValue(attrId,value);
+ }catch (Throwable e){
+ //杞崲涓嶄簡
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";灞炴�" + attrVO.getName() + "]鏃堕棿鏍煎紡涓嶆纭�" );
+ }
+ }
+ }
+ });
+ });
+ }
+ }
+ /**
+ * 杞Щboolean鍨嬬殑灞炴��
+ * @param attrVOS 灞炴�х殑瀵硅薄
+ * @param dataList 鏁版嵁
+ */
+ private void reSwitchBooleanAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList){
+ Map<String, CodeClassifyTemplateAttrVO> booleanAttrMap = attrVOS.stream().filter(
+ s -> VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(s.getAttributeDataType())
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(booleanAttrMap)) {
+ booleanAttrMap.forEach((attrId, attrVO) -> {
+ dataList.stream().forEach(cbo -> {
+ String text = cbo.getAttributeValue(attrId);
+ try {
+ if (BooleanEnum.TRUE.getValue().equalsIgnoreCase(text) || "鏄�".equalsIgnoreCase(text)) {
+ cbo.setAttributeValue(attrId, BooleanEnum.TRUE.getValue());
+ } else {
+ cbo.setAttributeValue(attrId, BooleanEnum.FASLE.getValue());
+ }
+ }catch (Throwable e){
+
+ }
+ });
+ });
+ }
+ }
+
+ /**
+ * 澶勭悊缁勫悎瑙勫垯
+ * @param attrVOS 妯℃澘灞炴��
+ * @param dataList excel鐨勬暟鎹唴瀹�
+ */
+ private void batchSwitchComponentAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList) {
+ Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = attrVOS.stream().filter(s -> StringUtils.isNotBlank(s.getComponentRule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if(!CollectionUtils.isEmpty(dateAttrVOMap)) {
+ dateAttrVOMap.forEach((attrId, attrVO) -> {
+ dataList.stream().forEach(cbo -> {
+ //浠巈xcel涓婃妸灞炴�ц浆鎹负map
+ Map<String,String> thisRowDataMap = new HashMap<>();
+ copyValueToMapFromCbos(cbo,thisRowDataMap);
+ //缁勫悎鍐呭
+ String value = formulaService.getValueByFormula(thisRowDataMap,attrVO.getComponentRule());
+ if(value == null){
+ value = "";
+ }
+ try {
+ cbo.setAttributeValue(attrId, value);
+ }catch (Throwable e){
+ log.error("璁剧疆灞炴�х殑閿欒",e);
+ }
+ });
+ });
+ }
+ }
+
+ /**
+ * 杞崲鍙傜収鐨勫��
+ * @param attrVOS 灞炴�х殑鏄剧ず瀵硅薄
+ * @param dataList 鏁版嵁鍒楄〃
+ * @param errorMap 閿欒鐨勪俊鎭�
+ */
+ private void batchSwitchReferAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList,Map<String,String> errorMap){
+ Map<String, CodeClassifyTemplateAttrVO> referAttrVOMap = attrVOS.stream().filter(
+ s -> (StringUtils.isNotBlank(s.getReferBtmId()) || StringUtils.isNotBlank(s.getReferConfig()))
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if(!CollectionUtils.isEmpty(referAttrVOMap)){
+ Map<String/**琛ㄦ牸鍜屽�肩殑灞炴��**/,Map<String/**鏄剧ず灞炴�х殑鍊�**/,List<String>/**琛ㄦ牸閲岀殑鍊�**/>> linkValueMap = new HashMap<>();
+ referAttrVOMap.forEach((attrId,attrVO)->{
+ dataList.stream().forEach(cbo -> {
+ String text = cbo.getAttributeValue(attrId);
+ if(StringUtils.isNotBlank(text)){
+ UIFormReferVO referVO = getReferVO(attrVO);
+ String valueField = getValueField(referVO);
+ String showText = getTextField(referVO);
+ String tableAndAttr = VciBaseUtil.getTableName(referVO.getReferType()) + "#" + valueField;
+ Map<String, List<String>> showTextMap = linkValueMap.getOrDefault(tableAndAttr, new HashMap<>());
+ List<String> textList = showTextMap.getOrDefault(showText, new ArrayList<>());
+ if(!textList.contains(text)) {
+ textList.add(text);
+ }
+ showTextMap.put(showText,textList);
+ linkValueMap.put(tableAndAttr,showTextMap);
+ }
+ });
+ });
+ if(!CollectionUtils.isEmpty(linkValueMap)){
+ //闇�瑕侀�愪釜琛ㄧ殑鍊煎瓧娈碉紝閫愪釜鏌ヨ
+ Map<String/**琛ㄦ牸鍜屽�煎睘鎬�**/,Map<String/**鏄剧ず灞炴��**/, Map<String/**鍊�**/,String/**鏄剧ず鐨勫��**/>>> linkCboMap = new HashMap<>();
+ linkValueMap.forEach((tableAndAttr,showValueMap)->{
+ String[] split = tableAndAttr.split("#");
+ String table = split[0];
+ String valueField = split[1].toLowerCase(Locale.ROOT);
+ Map<String,Map<String,String>> dataMap = new HashMap<>();
+ showValueMap.forEach((showText,valueList)->{
+ Map<String,String> valueOidTextMap = new HashMap<>();
+ List<List<String>> valueCollections = VciBaseUtil.switchListForOracleIn(valueList);
+ 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);
+ if(!CollectionUtils.isEmpty(cbos)){
+ valueOidTextMap.putAll(cbos.stream().collect(Collectors.toMap(s->s.getAttributeValue(valueField),t->t.getAttributeValue(showText))));
+ }
+ });
+ dataMap.put(showText,valueOidTextMap);
+ });
+ linkCboMap.put(tableAndAttr,dataMap);
+ });
+ referAttrVOMap.forEach((attrId,attrVO)->{
+ dataList.stream().forEach(cbo -> {
+ String text = cbo.getAttributeValue(attrId);
+ if (StringUtils.isNotBlank(text)) {
+ UIFormReferVO referVO = getReferVO(attrVO);
+ String valueField = getValueField(referVO);
+ String showText = getTextField(referVO);
+ String tableAndAttr = VciBaseUtil.getTableName(referVO.getReferType()) + "#" + valueField;
+ if(!linkCboMap.containsKey(tableAndAttr)){
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍙傛暟灞炴�" + attrVO.getName() + "]鐨勫�煎湪绯荤粺涓笉瀛樺湪" );
+
+ }else{
+ Map<String, Map<String, String>> dataMap = linkCboMap.get(tableAndAttr);
+ if(!dataMap.containsKey(showText)){
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍙傛暟灞炴�" + attrVO.getName() + "]鐨勫�煎湪绯荤粺涓笉瀛樺湪" );
+ }else{
+ Map<String, String> data = dataMap.get(showText);
+ final boolean[] fined = {false};
+ data.forEach((key,value)->{
+ if(value.equalsIgnoreCase(text)){
+ fined[0] = true;
+ try {
+ cbo.setAttributeValue(attrId, key);
+ }catch (Throwable e){
+
+ }
+ }
+ });
+ if(!fined[0]){
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍙傛暟灞炴�" + attrVO.getName() + "]鐨勫�煎湪绯荤粺涓笉瀛樺湪" );
+ }
+ }
+ }
+ }
+ });
+ });
+ }
+ }
+
+ }
+
+ /**
+ * 浠庡睘鎬т笂鑾峰彇鍙傜収鐨勫唴瀹�
+ * @param attrVO 灞炴�х殑淇℃伅
+ * @return 鍙傜収鐨勫唴瀹�
+ */
+ private UIFormReferVO getReferVO(CodeClassifyTemplateAttrVO attrVO){
+ UIFormReferVO referVO = null;
+ if(StringUtils.isNotBlank(attrVO.getReferConfig())){
+ referVO = JSONObject.parseObject(attrVO.getReferConfig(),UIFormReferVO.class);
+ }else{
+ referVO = new UIFormReferVO();
+ referVO.setReferType(attrVO.getReferBtmId());
+ referVO.setValueField(VciQueryWrapperForDO.OID_FIELD);
+ referVO.setTextField("name");
+ }
+ return referVO;
+ }
+
+ /**
+ * 鑾峰彇鍙傜収涓殑鍊肩殑瀛楁
+ * @param referVO 鍙傜収鐨勫璞�
+ * @return 榛樿涓篛id锛屾湁澶氫釜鐨勬椂鍊欙紝鑾峰彇绗竴涓�
+ */
+ private String getValueField(UIFormReferVO referVO){
+ String showText = referVO.getValueField();
+ if(StringUtils.isBlank(showText)){
+ return "oid";
+ }
+ if(showText.contains(",")){
+ //闃叉涓囦竴鏈夊涓紝鐪嬬湅鏈夋病鏈塷id
+ List<String> strings = VciBaseUtil.str2List(showText);
+ if(strings.contains("oid")){
+ showText = "oid";
+ }else{
+ showText = strings.get(0);
+ }
+ }
+ return showText;
+ }
+
+ /**
+ * 鑾峰彇鍙傜収涓殑鏄剧ず鍐呭鐨勫瓧娈�
+ * @param referVO 鍙傜収鐨勫璞�
+ * @return 榛樿涓簄ame锛屾湁澶氫釜鐨勬椂鍊欙紝鑾峰彇绗竴涓�
+ */
+ private String getTextField(UIFormReferVO referVO){
+ String showText = referVO.getTextField();
+ if(StringUtils.isBlank(showText)){
+ return "name";
+ }
+ if(showText.contains(",")){
+ //闃叉涓囦竴鏈夊涓紝鐪嬬湅鏈夋病鏈塶ame
+ List<String> strings = VciBaseUtil.str2List(showText);
+ if(strings.contains("name")){
+ showText = "name";
+ }else{
+ showText = strings.get(0);
+ }
+ }
+ return showText;
+ }
+ /**
+ * 澶勭悊鏋氫妇鐨勬樉绀哄璞�
+ * @param attrVOS 妯℃澘灞炴��
+ * @param dataList excel鐨勬暟鎹唴瀹�
+ * @param errorMap 閿欒淇℃伅鐨勬槧灏�
+ */
+ private void batchSwitchEnumAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList,
+ Map<String,String> errorMap ) {
+ Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = attrVOS.stream().filter(
+ s -> (StringUtils.isNotBlank(s.getEnumString()) || StringUtils.isNotBlank(s.getEnumId()))
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(dateAttrVOMap)) {
+ dateAttrVOMap.forEach((attrId, attrVO) -> {
+ dataList.stream().forEach(cbo -> {
+ String text = cbo.getAttributeValue(attrId);
+ if(StringUtils.isNotBlank(text)){
+ List<KeyValue> valueList = engineService.listComboboxItems(attrVO);
+ boolean fined = false;
+ for (int i = 0; i < valueList.size(); i++) {
+ KeyValue keyValue = valueList.get(i);
+ //if(keyValue.getValue().equalsIgnoreCase(text)){
+ if(keyValue.getValue().equalsIgnoreCase(text)||keyValue.getKey().equalsIgnoreCase(text)){
+ try {
+ cbo.setAttributeValue(attrId, keyValue.getKey());
+ }catch (Throwable e){
+ log.error("璁剧疆灞炴�у嚭閿�");
+ }
+ fined = true;
+ break;
+ }
+ }
+ if(!fined){
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";灞炴�" + attrVO.getName() + "]鐨勫�间笉绗﹀悎涓嬫媺鐨勮姹�");
+ }
+ }
+ });
+ });
+ }
+ }
+
+ /**
+ * 鎵归噺鏍¢獙鏁版嵁鐨勪俊鎭�
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+ * @param cboList 鏁版嵁鐨勫唴瀹�
+ */
+ private void batchCheckRequiredAttrOnOrder(CodeClassifyTemplateVO templateVO,List<ClientBusinessObject> cboList,Map<String,String> errorMap){
+ Map<String, CodeClassifyTemplateAttrVO> requiredAttrMap = templateVO.getAttributes().stream().filter(s ->
+ VciBaseUtil.getBoolean(s.getRequireFlag()) && StringUtils.isBlank(s.getComponentRule()) && StringUtils.isBlank(s.getClassifyInvokeLevel())//涓嶈兘鏄粍鍚堢殑鍜屽垎绫绘敞鍏ョ殑
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ //涓嶮dmEngineServiceImpl閲岄潰鐨刢heckRequiredAttrOnOrder 閫昏緫搴旇鐩镐技
+ if(!CollectionUtils.isEmpty(requiredAttrMap)) {
+ Set<String> nullRowIndex = cboList.stream().filter(cbo -> requiredAttrMap.keySet().stream().anyMatch(attrId -> StringUtils.isBlank(cbo.getAttributeValue(attrId)))).map(cbo -> cbo.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toSet());
+ if(!CollectionUtils.isEmpty(nullRowIndex)){
+ String checkAttr = requiredAttrMap.values().stream().map(CodeClassifyTemplateAttrVO::getName).collect(Collectors.joining(","));
+ nullRowIndex.stream().forEach(rowIndex->{
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鏍¢獙瑙勫垯涓嶉�氳繃锛屾湁鏍¢獙鐨勫睘鎬т负" + checkAttr);
+ });
+ }
+ }
+ }
+ /**
+ * 澶勭悊鍒嗙被娉ㄥ叆
+ * @param attrVOS 妯℃澘灞炴��
+ * @param dataList excel鐨勬暟鎹唴瀹�
+ * @param classifyFullInfo 鍒嗙被鐨勫叏璺緞
+ */
+ private void batchSwitchClassifyAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList,
+ CodeClassifyFullInfoBO classifyFullInfo,boolean isImPort) {
+ Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = attrVOS.stream().filter(
+ s -> StringUtils.isNotBlank(s.getClassifyInvokeAttr()) && StringUtils.isNotBlank(s.getClassifyInvokeAttr())
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ Map<String,CodeClassifyFullInfoBO> classifyFullInfoMap=new HashMap<>();
+ classifyFullInfoMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(),classifyFullInfo);
+ if (!CollectionUtils.isEmpty(dateAttrVOMap)) {
+ dataList.stream().forEach(cbo -> {
+ dateAttrVOMap.forEach((attrId, attrVO) -> {
+ //鍒嗙被娉ㄥ叆鐨勭紪鍙锋垨鑰呭悕绉帮紝
+ //灞傜骇鍖呭惈鎸囧畾灞傚拰鏈�灏忓眰
+ CodeClassifyVO classifyVO = null;
+ if(!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyInvokeLevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyInvokeLevel())) {
+ //鎸囧畾浜嗗眰绾х殑
+ //娉ㄦ剰锛屽洜涓烘煡璇笂绾у垎绫诲嚭鏉ョ殑灞傜骇鏄�掑簭鐨勶紝鍗抽《灞傝妭鐐规槸鏈�澶х殑鍊�
+ if(isImPort){
+ if(!classifyFullInfoMap.containsKey(cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD))) {
+ CodeClassifyFullInfoBO currentClassifyFullInfo = classifyService.getClassifyFullInfo(cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD));
+ classifyFullInfoMap.put(currentClassifyFullInfo.getCurrentClassifyVO().getOid(), currentClassifyFullInfo);
+ }
+ }
+ CodeClassifyFullInfoBO newClassifyFullInfo= classifyFullInfoMap.get(cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD));
+ List<CodeClassifyVO> classifyVOS = newClassifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList());
+ int level = VciBaseUtil.getInt(attrVO.getClassifyInvokeLevel());
+ if (classifyVOS.size()>=level && level > 0 ) {
+ classifyVO = classifyVOS.get(level-1);
+ }
+ }else{
+ //褰撳墠鐨勫垎绫�
+ classifyVO = classifyFullInfo.getCurrentClassifyVO();
+ }
+ try {
+ if (classifyVO == null) {
+ //璇存槑灞傜骇鏈夎
+ cbo.setAttributeValue(attrId, "鍒嗙被鏍戜笂娌℃湁灞傜骇[" + attrVO.getClassifyInvokeLevel() + "]");
+ } else {
+ Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO);
+ String value = classifyDataMap.getOrDefault(attrVO.getClassifyInvokeAttr(), "");
+ cbo.setAttributeValue(attrId, value);
+ }
+ } catch (Throwable e) {
+ log.error("璁剧疆灞炴�ч敊璇�", e);
+ }
+ });
+ });
+ }
+ }
+ /**
+ * 鏍¢獙鍏抽敭灞炴��
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param templateVO 妯℃澘鐨勫唴瀹癸紝蹇呴』鍖呭惈妯℃澘灞炴��
+ * @param cboList 鎵归噺鐨勬暟鎹�
+ */
+ private CodeImportResultVO batchCheckKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO,
+ List<ClientBusinessObject> cboList) {
+ //涓嶮dmEngineServiceImpl閲岀殑checkKeyAttrOnOrder鐩镐技
+ //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮�
+ CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
+ //娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗
+ //鑾峰彇鎵�鏈夌殑鍏抽敭灞炴��
+ Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyAttrFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+
+ boolean trimAll =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
+ //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
+ boolean trim =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
+ boolean ignoreCase = keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
+ boolean ignoreWidth = keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
+
+ //1. 鎴戜滑闇�瑕佸厛鍒ゆ柇excel瀵煎叆鐨勫唴瀹规槸鍚︽纭�
+ CodeImportResultVO resultVO = new CodeImportResultVO();
+ resultVO.setKeyAttrRuleInfo(String.format(keyRuleVO ==null?"":"鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}",
+ new String[]{trim?"鏄�":"鍚�",ignoreCase?"鏄�":"鍚�",ignoreWidth?"鏄�":"鍚�",trimAll?"鏄�":"鍚�"}));
+ resultVO.setSelfRepeatRowIndexList(getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO));
+ if(!CollectionUtils.isEmpty(resultVO.getSelfRepeatRowIndexList())){
+ //鎴戜滑绉婚櫎鏈韩閲嶅鐨勬暟鎹�
+ cboList = cboList.stream().filter(s->!resultVO.getSelfRepeatRowIndexList().contains(s.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
+ }
+ //2.鍒ゆ柇鍏抽敭灞炴�у湪绯荤粺閲屾槸鍚﹂噸澶�
+ //鍥犱负鏁版嵁閲忓緢澶э紝鎵�浠ュ緱鎯冲姙娉曞苟琛�
+ //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ Map<String,List<ClientBusinessObject>> indexTODataMap=new HashMap<>();
+ List<ClientBusinessObject> repeatDataMap = cboList.parallelStream().filter(cbo -> {
+ //姣忚閮藉緱鏌ヨ.濡傛灉鍏朵腑鍑虹幇浜嗛敊璇紝鎴戜滑灏辩洿鎺ユ姏鍑哄紓甯革紝鍏朵綑鐨勬樉绀�
+ //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+ Map<String, String> conditionMap = new HashMap<>();
+ ketAttrMap.forEach((attrId, attrVO) -> {
+ String value =cbo.getAttributeValue(attrId.toLowerCase(Locale.ROOT));
+ if (value == null) {
+ value = "";
+ }
+ value= value.replace(REQUIRED_CHAR,SPECIAL_CHAR);
+ engineService.wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
+ });
+ if (!CollectionUtils.isEmpty(ketAttrMap)) {
+ CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), templateVO, conditionMap, null);
+ boolean isKeyCheck= commonsMapper.queryCountBySql(sqlBO.getSqlCount()) > 0;
+ if(isKeyCheck){
+ List<Map<String,String>> newDataList= commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlUnPage());
+ List<ClientBusinessObject> newCboList= ChangeMapTOClientBusinessObjects(newDataList);
+ indexTODataMap.put(cbo.getAttributeValue(IMPORT_ROW_INDEX),newCboList);
+ }
+ return isKeyCheck;
+ }else{
+ return false;
+ }
+ }).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(repeatDataMap)){
+ resultVO.setKeyAttrRepeatRowIndexList(repeatDataMap.stream().map(s->s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toSet()));
+ }
+ //resultVO.setIndexTODataMap(indexTODataMap);
+ //resultVO.setSuccess(true);
+ return resultVO;
+ }
+ /**
+ * 鑾峰彇瀵煎叆鐨勫唴瀹逛腑鍏抽敭灞炴�ч噸澶嶇殑琛屽彿
+ * @param ketAttrMap 鍏抽敭灞炴�х殑鏄犲皠
+ * @param dataList 瀵煎叆鐨勬暟鎹�
+ * @param keyRuleVO 鍏抽敭灞炴�ф帶鍒惰鍒�
+ * @return 閲嶅鐨勮鍙�
+ */
+ private Set<String> getSelfRepeatRowIndex(Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap,
+ List<ClientBusinessObject> dataList,CodeKeyAttrRepeatVO keyRuleVO){
+ Set<String> selfRepeatRowIndexList = new CopyOnWriteArraySet<>();
+ boolean trimAll =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
+ //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
+ boolean trim =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
+ boolean ignoreCase = keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
+ boolean ignoreWidth = keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
+ //蹇呴』灏嗗睘鎬ф寜鐓ч『搴忔帓搴忓ソ
+ List<CodeClassifyTemplateAttrVO> attrVOList = ketAttrMap.values().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
+ Map<String/**琛屽彿**/,String/**鍏抽敭灞炴�х殑缁勫悎鍐呭**/> rowIndexKeyStringMap = new HashMap<>();
+ dataList.parallelStream().forEach(cbo-> {
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < attrVOList.size(); i++) {
+ CodeClassifyTemplateAttrVO attrVO = attrVOList.get(i);
+ String attrId = attrVO.getId().toLowerCase(Locale.ROOT);
+ String value = cbo.getAttributeValue( attrId);
+ if (value == null) {
+ value = "";
+ }
+ if(trim){
+ value = value.trim();
+ }
+ if(trimAll){
+ value = value.replace(" ","");
+ }
+ if(ignoreCase){
+ value = value.toLowerCase(Locale.ROOT);
+ }
+ if(ignoreWidth){
+ value = VciBaseUtil.toDBC(value);
+ }
+ sb.append(value).append("${ks}");
+ }
+ String keyString = sb.toString();
+ if(rowIndexKeyStringMap.containsValue(keyString) && StringUtils.isNotBlank(keyString)){
+ selfRepeatRowIndexList.add(rowIndex);
+ }else {
+ rowIndexKeyStringMap.put(rowIndex, sb.toString());
+ }
+ });
+ //鍥犱负鍙槸鍏抽敭灞炴�ч噸澶嶏紝鎵�浠ユ垜浠笉鑳介噸澶嶇殑澶氭潯閫変竴鏉℃潵鎶ラ敊
+ return selfRepeatRowIndexList;
+ }
+ /**
+ * excel鐨勬爣棰樹笂鑾峰彇瀛楁鎵�鍦ㄧ殑浣嶇疆
+ * @param titleRowData 鏍囬鐨勫唴瀹�
+ * @param attrNameIdMap 妯℃澘涓睘鎬у悕绉板拰鑻辨枃鐨勬槧灏�
+ * @param fieldIndexMap 浣嶇疆鍜岃嫳鏂囧瓧娈电殑鏄犲皠
+ */
+ private void getFieldIndexMap(List<String> titleRowData,Map<String/**鍚嶇О**/,String/**瀛楁鍚�**/> attrNameIdMap,Map<Integer/**浣嶇疆**/,String/**鑻辨枃鍚嶅瓧**/> fieldIndexMap){
+ for (int i = 0; i < titleRowData.size(); i++) {
+ String title = titleRowData.get(i);
+ String id = attrNameIdMap.getOrDefault(title.replace(KEY_ATTR_CHAR,"").replace(REQUIRED_CHAR
+ ,""),"");
+ if(com.alibaba.cloud.commons.lang.StringUtils.isBlank(id) && "鍒嗙被璺緞".equalsIgnoreCase(title)){
+ id = CODE_CLASSIFY_OID_FIELD;
+ }
+ if(com.alibaba.cloud.commons.lang.StringUtils.isBlank(id) && "鐮佹瀹藉害".equalsIgnoreCase(title)){
+ id = CODE_SEC_LENGTH_FIELD;
+ }
+ if(com.alibaba.cloud.commons.lang.StringUtils.isBlank(id) && "浼佷笟缂栫爜".equalsIgnoreCase(title)){
+ id = CODE_FIELD;
+ }
+ if(com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(id)){
+ fieldIndexMap.put(i,id);
+ }
+ }
+ }
+ private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){
+ List<ClientBusinessObject> clientBusinessObjectList=new CopyOnWriteArrayList<>();
+ oldDataMap.parallelStream().forEach(dataMap->{
+ ClientBusinessObject clientBusinessObject=new ClientBusinessObject();
+ DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject);
+ dataMap.forEach((key,value)->{
+ clientBusinessObject.setAttributeValue(key,value);
+ });
+ });
+ return clientBusinessObjectList;
+ }
+
+ /***
+ * 姝g‘閿欒鏁版嵁redis缂撳瓨
+ * @param uuid
+ * @param templateVO
+ * @param rowIndexCbo
+ * @param dataSet
+ * @param fieldIndexMap
+ * @param errorMap
+ * @param isok
+ */
+ private void createRedisDatas(String uuid,CodeClassifyTemplateVO templateVO,Map<String,ClientBusinessObject> rowIndexCbo, SheetDataSet dataSet, Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap,Map<String,String> errorMap,boolean isok){
+ List<SheetRowData> needsheetRowDataList =new ArrayList<>();
+ if(errorMap.size()>0) {
+ //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
+ needsheetRowDataList = dataSet.getRowData().stream().filter(cbo -> {
+ String rowIndex=cbo.getRowIndex();
+ return isok? !errorMap.containsKey(rowIndex):errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+
+ }else{
+ needsheetRowDataList= dataSet.getRowData();
+ }
+ Map<String/**涓枃鍚嶇О**/, SheetRowData/**鑻辨枃鍚嶇О**/> rowIdexDataMap = needsheetRowDataList.stream().collect(Collectors.toMap(s -> s.getRowIndex(), t -> t,(o1, o2)->o2));
+ Map<String,CodeImprotDataVO> clsfDataMap=new HashMap<>();
+ rowIndexCbo .forEach((rowIndex, cbo) -> {
+ CodeImprotDataVO codeImprotDataVO = new CodeImprotDataVO();
+ codeImprotDataVO.setTemplateOid(templateVO.getOid());
+ List<Map<String, String>> dataList = new ArrayList<>();
+ if(rowIdexDataMap.containsKey(rowIndex)){
+ SheetRowData sheetRowData=rowIdexDataMap.get(rowIndex);
+ Map<String, String> dataMap = new HashMap<>();
+ Map<Integer, String> data = sheetRowData.getData();
+ fieldIndexMap.forEach((integer, s) -> {
+ String field = fieldIndexMap.get(integer);
+ if (data.containsKey(integer)) {
+ String vlues = data.get(integer);
+ dataMap.put(field, vlues);
+ }
+ });
+ dataMap.put("oid",cbo.getOid());
+ dataList.add(dataMap);
+ }
+ if(clsfDataMap.containsKey(templateVO.getOid())){
+ codeImprotDataVO=clsfDataMap.get(templateVO.getOid());
+ dataList.addAll(codeImprotDataVO.getDatas());
+ }
+ codeImprotDataVO.setColNames(dataSet.getColName());
+ codeImprotDataVO.setDatas(dataList);
+ clsfDataMap.put(templateVO.getOid(),codeImprotDataVO);
+ });
+ if(!CollectionUtils.isEmpty(clsfDataMap)) {
+ Collection codeImprotDataVOS=clsfDataMap.values();
+ List<CodeImprotDataVO> codeImprotDataVOList=new ArrayList<>();
+ codeImprotDataVOList.addAll(codeImprotDataVOS);
+ bladeRedis.set(uuid+"-"+templateVO.getOid(), codeImprotDataVOList);
+ bladeRedis.expire(uuid+"-"+templateVO.getOid(),BATCHADD_REDIS_TIME);//redis杩囨湡鏃堕棿
+ }
+ }
+
+ /****
+ * 鏁版嵁鐩镐技椤规暟鎹牎楠宺edis缂撳瓨
+ * @param codeClassifyOid
+ * @param templateVO
+ * @param cboList
+ * @param resembleMap
+ * @param btmtypeid
+ * @param dataResembleVOS
+ */
+ private void bathcResembleQuery(String codeClassifyOid, CodeClassifyTemplateVO templateVO, List<ClientBusinessObject> cboList,Map<String,String>resembleMap,String btmtypeid,List<DataResembleVO> dataResembleVOS){
+ CodeClassifyFullInfoBO fullInfoBO = classifyService.getClassifyFullInfo(codeClassifyOid);
+ Map<String, String> conditionMap = new HashMap<>();
+ CodeResembleRuleVO resembleRuleVO = Optional.ofNullable(engineService.getUseResembleRule(fullInfoBO, fullInfoBO.getCurrentClassifyVO())).orElseGet(() -> new CodeResembleRuleVO());
+ //闇�瑕佽幏鍙栨槸鍚︽湁鐩镐技鏌ヨ灞炴��
+ Map<String, CodeClassifyTemplateAttrVO> attrVOs = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSameRepeatAttrFlag())).collect(Collectors.toMap(s -> s.getId(), t -> t));
+ if (CollectionUtils.isEmpty(attrVOs)) {
+ return;
+ }
+ Map<String,CodeImprotResembleVO> codeImprotResembleVOMap=new HashMap<>();
+ List<CodeImprotResembleVO> codeImprotResembleVOList=new ArrayList<>();
+ Map<String,String> rowIndePathMap=new HashMap<>();
+ cboList.stream().forEach(clientBusinessObject -> {
+ CodeImprotResembleVO codeImprotResembleVO=new CodeImprotResembleVO();
+ final String[] path = {""};
+ List<String> fieldList=new ArrayList<>();
+ List<String> rowIndeList=new ArrayList<>();
+ String rowIndex = clientBusinessObject.getAttributeValue(IMPORT_ROW_INDEX);
+ attrVOs.forEach((attrId, attrVO) -> {
+ String value="";
+ /*if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
+ value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO));
+ }else {*/
+ value= clientBusinessObject.getAttributeValue(attrId);
+ // }
+ fieldList.add(attrId);
+ value=StringUtils.isBlank(value)?"":value;
+ path[0] +=value+"#";
+ engineService.wrapperResembleConditionMap(value, resembleRuleVO, attrId, conditionMap);
+ });
+ List<Map<String,String>> dataMap=new ArrayList<>();
+ if(codeImprotResembleVOMap.containsKey(path[0])) {
+ codeImprotResembleVO=codeImprotResembleVOMap.get(path[0]);
+ rowIndeList=codeImprotResembleVO.getRownIndex();
+ dataMap= codeImprotResembleVO.getDataList();
+ resembleMap.put(rowIndex, "瀛樺湪鐩镐技鏁版嵁");
+ }else{
+ if (!CollectionUtils.isEmpty(conditionMap)) {
+ Map<String, String> andConditionMap = new HashMap<>();
+ andConditionMap.put("islastr", "1");
+ andConditionMap.put("islastv", "1");
+ conditionMap.putAll(andConditionMap);
+ PageHelper pageHelper = new PageHelper(-1);
+ pageHelper.addDefaultDesc("id");
+ CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(btmtypeid, templateVO, conditionMap, pageHelper);
+ List<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlUnPage());
+ List<ClientBusinessObject> resembleCboList= ChangeMapTOClientBusinessObjects(dataMapList);
+ if(!CollectionUtils.isEmpty(resembleCboList)) {
+ List<Map<String, String>> finalDataMap = dataMap;
+ resembleCboList.stream().forEach(cbo->{
+ Map<String,String> resembDataMap=new HashMap<>();
+ fieldList.stream().forEach(field->{
+ String value=cbo.getAttributeValue(field);
+ value=StringUtils.isBlank(value)?"":value;
+ resembDataMap.put(field,value);
+ });
+ resembDataMap.put("codetemplateoid",templateVO.getOid());
+ resembDataMap.put("id",StringUtils.isBlank(cbo.getAttributeValue("id"))?"":cbo.getAttributeValue("id"));
+ resembDataMap.put("rowIndex","");
+ resembDataMap.put("oid",cbo.getOid());
+ finalDataMap.add(resembDataMap);
+ });
+ resembleMap.put(rowIndex, "瀛樺湪鐩镐技鏁版嵁");
+
+ }
+ }
+ }
+ rowIndePathMap.put(rowIndex,path[0]);
+ rowIndeList.add(rowIndex);
+ codeImprotResembleVO.setPath(path[0]);
+ codeImprotResembleVO.setRownIndex(rowIndeList);
+ codeImprotResembleVO.setConditionMap(conditionMap);
+ codeImprotResembleVO.setFields(fieldList);
+ codeImprotResembleVO.setDataList(dataMap);
+ codeImprotResembleVOMap.put(path[0],codeImprotResembleVO);
+ });
+ Map<String, ClientBusinessObject> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t));
+ if(!CollectionUtils.isEmpty(rowIndePathMap)){
+ rowIndePathMap.forEach((rowIndex, path) -> {
+ if(codeImprotResembleVOMap.containsKey(path)){
+ CodeImprotResembleVO codeImprotResembleVO= codeImprotResembleVOMap.get(path);
+ List<String> fieldList=codeImprotResembleVO.getFields();
+ List<String> rownIndexList= codeImprotResembleVO.getRownIndex();
+ List<String> newRownIndexList = rownIndexList.stream().filter(cbo -> {
+ return rowIndex!=cbo;
+ }).collect(Collectors.toList());
+ newRownIndexList.stream().forEach(s -> {
+ resembleMap.put(s, "瀛樺湪鐩镐技鏁版嵁");
+ });
+ List<Map<String, String>>newDataList=new ArrayList<>();
+ DataResembleVO dataResembleVO=new DataResembleVO();
+ dataResembleVO.setOid(cboMap.get(rowIndex).getOid());
+ List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
+ String newRowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ return rownIndexList.contains(newRowIndex)&&(!newRowIndex.equalsIgnoreCase(rowIndex));
+ }).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(needSaveCboList)) {
+ needSaveCboList.stream().forEach(cbo -> {
+ String newRowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ Map<String, String> resembDataMap = new HashMap<>();
+ fieldList.stream().forEach(field -> {
+ String value = cbo.getAttributeValue(field);
+ value = StringUtils.isBlank(value) ? "" : value;
+ resembDataMap.put(field, value);
+ });
+ resembDataMap.put("codetemplateoid",templateVO.getOid());
+ resembDataMap.put("id",StringUtils.isBlank(cbo.getAttributeValue("id"))?"":cbo.getAttributeValue("id"));
+ resembDataMap.put("rowIndex", newRowIndex);
+ resembDataMap.put("oid",cbo.getOid());
+ newDataList.add(resembDataMap);
+ });
+ }
+ List<Map<String, String>>dataList=codeImprotResembleVO.getDataList();
+ newDataList.addAll(dataList);
+ dataResembleVO.setDataList(newDataList);
+ dataResembleVOS.add(dataResembleVO);
+ }
+ });
+ }
+ }
+
+ /***
+ * 瀛樺偍鍒嗙被瀵硅薄鍙婂叾鍒楀悕
+ * @param uuid
+ * @param templateVOList
+ * @param dataSet
+ * @param fieldIndexMap
+ * @param iscContain
+ */
+ private void createRedisByCodeClassify(String uuid,CodeClassifyTemplateVO templateVOList,SheetDataSet dataSet, Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap,boolean iscContain){
+ List<ColumnVO> columnVOList = new ArrayList<>();
+ List<String> outNameList = dataSet.getColName();
+ fieldIndexMap.forEach((integer, s) -> {
+ ColumnVO columnVOS = new ColumnVO();
+ String field = fieldIndexMap.get(integer);
+ String outName = outNameList.get(integer);
+ columnVOS.setField(field);
+ columnVOS.setTitle(outName);
+ columnVOList.add(columnVOS);
+ });
+ CodeImportTemplateVO codeImportTemplateVO=new CodeImportTemplateVO();
+ codeImportTemplateVO.setCodeClassifyTemplateVO(templateVOList);
+ codeImportTemplateVO.setCloNamesList(columnVOList);
+ List<CodeImportTemplateVO> codeImportTemplateVOs= new ArrayList<>();
+
+ codeImportTemplateVOs.add(codeImportTemplateVO);
+ if(codeImportTemplateVOs.size()>0) {
+ bladeRedis.set(uuid, codeImportTemplateVOs);
+ bladeRedis.expire(uuid, BATCHADD_REDIS_TIME);//redis杩囨湡鏃堕棿
+ }
+ }
+ /**
+ * 鎷疯礉涓氬姟绫诲瀷鍒癿ap
+ * @param cbo 涓氬姟鏁版嵁
+ * @param map map
+ */
+ public static void copyValueToMapFromCbos(ClientBusinessObject cbo,Map<String,String> map){
+ if(cbo!=null){
+ copyValueToMapFromBos(cbo,map);
+ }
+ }
+
+ /**
+ * 鎷疯礉涓氬姟绫诲瀷鍒癿ap
+ * @param bo 涓氬姟鏁版嵁
+ * @param map map
+ */
+ public static void copyValueToMapFromBos(ClientBusinessObject bo,Map<String,String> map){
+ if(bo!=null ){
+ //鍏堟妸鎵�鏈夌殑瀛楁鏄犲皠鎵惧埌
+ AttributeValue[] newAList = bo.newAttrValList;
+ AttributeValue[] hisAList = bo.hisAttrValList;
+ if(hisAList!=null&&hisAList.length>0){//
+ for(int i = 0 ; i < hisAList.length;i++){
+ AttributeValue av = hisAList[i];
+ String attrName = av.attrName.toLowerCase();
+ map.put(attrName, av.attrVal);
+ }
+ }
+ if(newAList!=null&&newAList.length>0){//NEW鐨勪紭鍏堢骇楂樹簺
+ for(int i = 0 ; i < newAList.length;i++){
+ AttributeValue av = newAList[i];
+ String attrName = av.attrName.toLowerCase();
+ map.put(attrName, av.attrVal);
+ }
+ }
+ }
+ }
}
--
Gitblit v1.9.3