From 04b4676f4f8f2674a0fdd52624c417d600f6f06b Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 05 十二月 2023 16:19:30 +0800
Subject: [PATCH] 整合代码
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 696 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 680 insertions(+), 16 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 371139a..0090df0 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
@@ -3,14 +3,17 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.protobuf.ServiceException;
+import com.vci.ubcs.code.applyjtcodeservice.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.applyjtcodeservice.feign.IMdmInterJtClient;
+import com.vci.ubcs.code.applyjtcodeservice.vo.DockingPreAttrMappingVO;
import com.vci.ubcs.code.bo.AttributeValue;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
-import com.vci.ubcs.code.dto.CodeExportAttrDTO;
-import com.vci.ubcs.code.dto.CodeOrderDTO;
+import com.vci.ubcs.code.constant.MdmEngineConstant;
+import com.vci.ubcs.code.dto.*;
import com.vci.ubcs.code.entity.CodeAllCode;
import com.vci.ubcs.code.enumpack.CodeDefaultLC;
import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
@@ -48,6 +51,7 @@
import com.vci.ubcs.starter.web.util.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import oracle.sql.TIMESTAMP;
import org.apache.commons.collections4.map.HashedMap;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -56,6 +60,7 @@
import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.ss.usermodel.Workbook;
import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
@@ -66,10 +71,18 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
+import java.beans.BeanInfo;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
import java.io.File;
import java.io.IOException;
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -186,9 +199,9 @@
private SaveLogUtil saveLogUtil;
/**
- * 瀵煎嚭鐨勫崄涓囨潯
+ * 瀹㈡埛鐜板満excel涓鸿�佺増鏈紝瀵煎嚭鐨勬�绘暟闄愬埗涓�65535
*/
- public static final int EXPORT_LIMIT = 100000;
+ public static final int EXPORT_LIMIT = 65535;
/**
* 鎵归噺鐢宠锛氶�夊彇閫変腑鍒嗙被涓嬬殑鎵�鏈夋ā鏉垮叧閿睘鎬э紝鐩镐技灞炴�э紝蹇呭~灞炴�э紝鍐欏叆execl涓�
@@ -369,7 +382,7 @@
CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
//鑾峰彇鐮佹瀹藉害
- //String secWidth = getCodeSegmentWidth(codeClassifyVO.getOid());
+ String secWidth = getCodeSegmentWidth(codeClassifyVO.getOid());
if(isHistory){
templateVOList= templateService.childTemplates(codeClassifyOid);
@@ -478,6 +491,123 @@
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 codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return excel鐨勬枃浠跺湴鍧�
+ */
+ @Override
+ public String downloadImportExcelBatchEdit(String codeClassifyOid) {
+ List<CodeClassifyTemplateVO> templateVOList=new ArrayList<>();
+ VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
+
+ CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
+
+ templateVOList= templateService.childTemplates(codeClassifyOid);
+
+ WriteExcelOption eo = new WriteExcelOption();
+ eo.setAppend(true);
+ //澧炲姞妯℃澘鐨勪俊鎭鍏�
+ LinkedList<WriteExcelData> tempEDList = new LinkedList<>();
+ tempEDList.add(new WriteExcelData(0,0,"缂栧彿"));
+ 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> codeClassifyTemplateAttrVOList=codeClassifyTemplateVO.getAttributes();
+ if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrVOList)) {
+ if (CollectionUtils.isEmpty(codeClassifyTemplateAttrVOList)) {
+ throw new VciBaseException("妯℃澘娌℃湁閰嶇疆灞炴��");
+ }
+ }
+ List<CodeClassifyTemplateAttrVO> templateAttrVOS = codeClassifyTemplateAttrVOList.stream().filter(s ->
+ !DEFAULT_ATTR_LIST.contains(s.getId())
+ && StringUtils.isBlank(s.getComponentRule())
+ && StringUtils.isBlank(s.getClassifyInvokeAttr())
+ && (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,"缂栫爜(id)",""));
+// excelDataList.add(new WriteExcelData(0,1,"鐮佹瀹藉害",""));
+// excelDataList.add(new WriteExcelData(0,1,!CollectionUtils.isEmpty(idAttrVOList)?idAttrVOList.get(0).getName():"浼佷笟缂栫爜",idAttrVOList.get(0).getId()));
+// }
+ for (int i = 0; i < templateAttrVOS.size(); i++) {
+ CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i);
+
+ Object text = attrVO.getName();
+ text = exportKeyAndRequired(workbook,attrVO,text);
+ int colIndex = 1 + i;
+ WriteExcelData excelData = new WriteExcelData(0, colIndex, text,attrVO.getId());
+ 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() + ("_灞炴�ф壒閲忎慨鏀规ā鏉�.xls");
eo.addSheetDataList(templateVOList.size()+"妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList);
ExcelUtil.writeDataToFile(excelName,eo);
return excelName;
@@ -843,7 +973,7 @@
}
// 鍗曟瀵煎叆鏁伴噺闄愬埗
if(sheetDataSetList.get(i).getRowData().size() > IMPORT_DATA_LIMIT){
- throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�"+IMPORT_DATA_LIMIT+"鏉$殑鏁版嵁");
+ throw new ServiceException(StringUtil.format("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩噞}鏉$殑鏁版嵁",IMPORT_DATA_LIMIT));
}
//鍘嗗彶瀵煎叆鐨勬椂鍊欎笉澶勭悊缂栫爜
//----閫昏緫鍐呭----
@@ -1132,7 +1262,7 @@
if(StringUtils.isNotBlank(excelFileName)) {
codeImProtRusultVO.setFilePath(excelFileName);
codeImProtRusultVO.setFileOid("");
- saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true, StringUtil.format("閿欒淇℃伅锛歿}",JSON.toJSONString(shetNameMap)) );
+ saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true, StringUtil.format("閿欒淇℃伅锛歿}",JSON.toJSONString(shetNameMap)));
}else{
saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",false, StringUtil.format("瀵煎叆鍒板垎绫粄}涓紝瀵煎叆鎴愬姛鎬绘暟涓猴細{}", JSON.toJSONString(classifyFullInfo),importCount.get(0)));
}
@@ -1141,11 +1271,145 @@
}
return codeImProtRusultVO;
}catch (Exception e){
- saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true,e.getMessage());
+ saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true,e.toString());
throw e;
}
}
+ /**
+ * 瀵煎叆鎵归噺缂栬緫鏁版嵁
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬�
+ * @param file excel鏂囦欢鐨勪俊鎭�
+ * @return 鏈夐敊璇俊鎭殑excel
+ */
+ @Override
+ public CodeImProtRusultVO batchImportEdit(String codeClassifyOid, String classifyAttr,File file) throws Throwable{
+ VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
+ ReadExcelOption reo = new ReadExcelOption();
+ reo.setReadAllSheet(true);
+ List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
+ if (sheetDataSetList.get(0).getRowData().size() > LIMIT + 1) {
+ throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
+ }
+ if (sheetDataSetList.get(0).getRowData().size() == 0) {
+ throw new ServiceException("鏈鍙栧埌excle鐩稿叧鏁版嵁锛岃纭锛侊紒锛�");
+ }
+ boolean isExport=false;
+ Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>();
+ for(int i=0;i<sheetDataSetList.size()-1;i++) {
+ if (CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(i).getRowData())
+ || sheetDataSetList.get(i).getRowData().size() < 1) {
+ continue;
+ }
+ // 鍗曟瀵煎叆鏁伴噺闄愬埗
+ if(sheetDataSetList.get(i).getRowData().size() > IMPORT_DATA_LIMIT){
+ throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�"+IMPORT_DATA_LIMIT+"鏉$殑鏁版嵁");
+ }
+ //鏌ヨ鍒嗙被鍜屾ā鏉�
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+
+ //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
+ SheetDataSet dataSet = sheetDataSetList.get(i);
+ List<SheetRowData> rowDataList = dataSet.getRowData();
+
+ //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
+ CodeClassifyTemplateVO templateVO ;
+ //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
+ //鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇
+ List<CodeClassifyVO> childClassifyVOs = classifyService.listChildrenClassify(codeClassifyOid, true, classifyAttr, true);
+ Map<String/**璺緞**/, CodeClassifyVO> pathMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getPath().startsWith("#") ? s.getPath().substring(1) : s.getPath(), t -> t));
+ List<String> titleRowData = dataSet.getColName();
+ Map<String, String> errorMap = new ConcurrentHashMap<>();
+ pathMap.put("#current#",classifyFullInfo.getCurrentClassifyVO());
+
+ try {
+ titleRowData.add("鍒嗙被璺緞");
+ List<CodeClassifyTemplateVO> templateVOList= checkSamesTemplate(titleRowData,sheetDataSetList,i,pathMap,errorMap);
+ titleRowData.remove(titleRowData.size()-1);
+ templateVO= templateVOList.get(0);
+ }catch (Throwable e){
+ throw new VciBaseException(e.getMessage());
+ }
+
+ CodeClassifyTemplateVO finalTemplateVO = templateVO;
+
+ List<SheetRowData> needowDataList = rowDataList.stream().filter(cbo -> {
+ String rowIndex = cbo.getRowIndex();
+ return !errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+ //杩欓噷涓嶉櫎鍘婚粯璁ょ殑灞炴��
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes();
+ Map<Integer/**鍒楀彿**/, String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
+
+ Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId()));
+ fieldIndexMap.put(0,"id");
+ getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap);
+ //鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹�
+ CodeOrderDTO orderDTO = new CodeOrderDTO();
+ for (SheetRowData sheetRowData : needowDataList) {
+ //鏌ヨ鏁版嵁
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("t.id", sheetRowData.getData().get(0));
+ conditionMap.put("t.lastv", "1");
+ CodeTemplateAttrSqlBO sqlBO = mdmEngineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, new PageHelper(-1));
+ //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇�
+ List<Map> cbosB = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
+ if(cbosB.size() == 0){
+ throw new ServiceException("缂栫爜锛�"+ sheetRowData.getData().get(0) + ",鏈兘鏌ヨ鍒扮浉鍏虫暟鎹��");
+ }
+ excelToCboEdit(fieldIndexMap, sheetRowData, orderDTO, cbosB.get(0));
+ orderDTO.setCopyFromVersion(orderDTO.getOid());
+ orderDTO.setOid(null);
+ try {
+ mdmEngineService.upSaveCode(orderDTO);
+ List<Map> newCbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
+ //瀵圭爜鍊艰〃杩涜澶勭悊鏇挎崲鍒涘缓鏁版嵁鐨刼id
+ QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>();
+ wrapper.eq("CREATECODEOID",orderDTO.getCopyFromVersion());
+ List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(wrapper);
+ codeAllCodes.get(0).setCreateCodeOid(newCbos.get(0).get("OID").toString());
+ codeAllCodes.get(0).setLastModifyTime(new Date());
+ codeAllCodes.get(0).setTs(new Date());
+ codeAllCodes.get(0).setLastModifier(AuthUtil.getUser().getUserName());
+ codeAllCodeService.updateBatchById(codeAllCodes);
+ } catch (Throwable e) {
+ log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
+ errorMap.put(sheetRowData.getRowIndex(), ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage());
+ }
+ }
+ if (errorMap.size() > 0) {
+ isExport = true;
+ }
+ createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, finalTemplateVO);
+
+ }
+ String excelFileName="";
+ if(isExport&&!CollectionUtils.isEmpty(shetNameMap)) {
+ excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls";
+ WriteExcelOption eo = new WriteExcelOption();
+ shetNameMap.forEach((shetName, errorDataList) -> {
+ eo.addSheetDataList(shetName, errorDataList);
+ });
+ try {
+ new File(excelFileName).createNewFile();
+ } catch (IOException e) {
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e));
+ }
+ ExcelUtil.writeDataToFile(excelFileName, eo);
+ }
+ CodeImProtRusultVO codeImProtRusultVO=new CodeImProtRusultVO();
+ if(StringUtils.isNotBlank(excelFileName)) {
+ codeImProtRusultVO.setFilePath(excelFileName);
+ codeImProtRusultVO.setFileOid("");
+ saveLogUtil.operateLog("鏁版嵁鎵归噺鏇存敼",true, StringUtil.format("閿欒淇℃伅锛歿}",JSON.toJSONString(shetNameMap)) );
+ }else{
+ saveLogUtil.operateLog("鏁版嵁鎵归噺鏇存敼",false, StringUtil.format("瀵煎叆鎴愬姛鎬绘暟涓猴細{}",
+ sheetDataSetList.size()-1));
+ }
+ return codeImProtRusultVO;
+ }
/*private void converBaseModels(List<ClientBusinessObject> clientBusinessObjects,List<BaseModel>dataCBOList){
clientBusinessObjects.stream().forEach(clientBusinessObject -> {
BaseModel baseModel=new BaseModel();
@@ -1456,7 +1720,7 @@
}
saveLogUtil.operateLog("鎵归噺鐢宠缂栫爜",false, StringUtil.format("鎵归噺瀵煎叆鐢宠鎴愬姛鍏眥}鏉℃暟鎹紝鐢熸垚鐨勭爜鍊煎涓嬨�恵}銆�",codeList.size(),codeList));
}catch (Exception e){
- saveLogUtil.operateLog("鎵归噺鐢宠缂栫爜",true,e.getMessage());
+ saveLogUtil.operateLog("鎵归噺鐢宠缂栫爜",true,e.toString());
throw e;
}
return uuid;
@@ -1574,10 +1838,10 @@
tableName = VciBaseUtil.getTableName(btmTypeId);
}
- String countSql = "select count(*) from " + tableName +" where 1=1" +
+ String countSql = "select count(*) from (select * FROM " + tableName +" where 1=1" +
" and lastr = '1'" +
" and lastv='1'" +
- " and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%'";
+ " and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%' {}";
//鍏堟煡璇㈡�绘暟
int total = 0;
@@ -1591,8 +1855,7 @@
thisPage.setSort(exportAttrDTO.getSort());
thisPage.setOrder(exportAttrDTO.getOrder());
thisPage.addDefaultDesc("createTime");
-
- total += commonsMapper.queryCountBySql(countSql);
+ total += commonsMapper.queryCountBySql(StringUtil.format(countSql," limit " + exportAttrDTO.getLimit() +" offset "+ i +")subquery;"));
}
}else{
total = commonsMapper.queryCountBySql(countSql);
@@ -1630,10 +1893,10 @@
}
Map<String, String> finalConditionMap = conditionMap;
//骞惰鏌ヨ鐪嬬湅
- SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
indexList.stream().forEach(index->{
//绾跨▼鐨勬柟寮忥紝鎵�浠ラ渶瑕佽缃綋鍓嶇敤鎴�
- VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+ //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
PageHelper thisPage = new PageHelper(EXPORT_LIMIT);
thisPage.setPage(index+1);
thisPage.setSort(exportAttrDTO.getSort());
@@ -3288,6 +3551,106 @@
}
/**
+ * excel杞崲涓篶bo鐨勫璞�
+ * @param fieldIndexMap 瀛楁鐨勪綅缃�
+ * @param rowDataList excel閲岀殑琛屾暟鎹�
+ * @param orderDTO 鏁寸悊鐨勬暟鎹�
+ * @param map 鏁版嵁鐨勫垪琛�
+ */
+ private void excelToCboEdit(Map<Integer,String> fieldIndexMap,SheetRowData rowDataList,
+ CodeOrderDTO orderDTO,
+ Map map){
+ rowDataList.getData().forEach((index,value)->{
+ String field = fieldIndexMap.get(index);
+ if (StringUtils.isBlank(field)) {
+ throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
+ }
+ map.put(field,value);
+ });
+
+ try {
+// for (Map map : cbos) {
+// Object obj = CodeOrderDTO.class.newInstance();
+ BeanInfo beanInfo = Introspector.getBeanInfo(orderDTO.getClass());
+ PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+ for (PropertyDescriptor property : propertyDescriptors) {
+ Method setter = property.getWriteMethod();
+ if (setter != null) {
+ //oracle鐨勬椂闂翠负TIMESTAMP鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚data锛屽惁鍒欏皢鎶ラ敊
+ if (map.get(property.getName().toUpperCase()) instanceof TIMESTAMP) {
+ LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime();
+ ZoneId zoneId = ZoneId.systemDefault();
+ ZonedDateTime zdt = localDateTime.atZone(zoneId);
+ Date date = Date.from(zdt.toInstant());
+ setter.invoke(orderDTO, date);
+ map.remove(property.getName().toUpperCase());
+ } //oracle鐨勬暟瀛椾负BigDecimal鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚Integer锛屽惁鍒欏皢鎶ラ敊
+ else if (map.get(property.getName().toUpperCase()) instanceof BigDecimal
+ && ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())) {
+ setter.invoke(orderDTO, ((BigDecimal) map.get(property.getName().toUpperCase())).intValue());
+ map.remove(property.getName().toUpperCase());
+ } else if (map.containsKey(property.getName().toUpperCase())) {
+ if(setter.getParameterTypes()[0].getSimpleName().equals("String")){
+ setter.invoke(orderDTO, map.get(property.getName().toUpperCase()) == null ? null:String.valueOf(map.get(property.getName().toUpperCase())));
+ }else{
+ setter.invoke(orderDTO, map.get(property.getName().toUpperCase()));
+ }
+ map.remove(property.getName().toUpperCase());
+ }
+ }
+ }
+ for (Object key : map.keySet()) {
+ map.put(key, map.get(key) == null ? null : String.valueOf(map.get(key)));
+ }
+ } catch (Exception e) {
+ throw new VciBaseException("鏌ヨ澶辫触锛�" + e.getMessage());
+ }
+
+
+
+// Iterator<Map.Entry<String, String>> iterator = cbos.entrySet().iterator();
+//
+// Map.Entry<String, String> entry;
+// while (iterator.hasNext()) {
+// entry = iterator.next();
+//// if (WebUtil.isDefaultField(entry.getKey())) {
+// Object obj = BaseModel.class.newInstance();
+// BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
+// PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+// for (PropertyDescriptor property : propertyDescriptors) {
+// Method setter = property.getWriteMethod();
+// if (setter != null) {
+// //oracle鐨勬椂闂翠负TIMESTAMP鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚data锛屽惁鍒欏皢鎶ラ敊
+// if (map.get(property.getName().toUpperCase()) instanceof TIMESTAMP) {
+// LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime();
+// ZoneId zoneId = ZoneId.systemDefault();
+// ZonedDateTime zdt = localDateTime.atZone(zoneId);
+// Date date = Date.from(zdt.toInstant());
+// setter.invoke(obj, date);
+// map.remove(property.getName().toUpperCase());
+// } //oracle鐨勬暟瀛椾负BigDecimal鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚Integer锛屽惁鍒欏皢鎶ラ敊
+// else if (map.get(property.getName().toUpperCase()) instanceof BigDecimal
+// && ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())) {
+// setter.invoke(obj, ((BigDecimal) map.get(property.getName().toUpperCase())).intValue());
+// map.remove(property.getName().toUpperCase());
+// } else if (map.containsKey(property.getName().toUpperCase())) {
+// if(setter.getParameterTypes()[0].getSimpleName().equals("String")){
+// setter.invoke(obj, map.get(property.getName().toUpperCase()) == null ? null:String.valueOf(map.get(property.getName().toUpperCase())));
+// }else{
+// setter.invoke(obj, map.get(property.getName().toUpperCase()));
+// }
+// map.remove(property.getName().toUpperCase());
+// }
+// }
+// }
+// WebUtil.setValueToField(entry.getKey(), orderDTO, entry.getValue());
+// iterator.remove();
+//// }
+// }
+ orderDTO.setData(map);
+ }
+
+ /**
* 妫�鏌ユ牎楠岃鍒欐病鏈夐�氳繃鐨勫唴瀹�
* @param attrVOS 闇�瑕佹牎楠岀殑灞炴��
* @param dataList 鏁版嵁鐨勫垪琛�
@@ -3824,7 +4187,7 @@
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())
+ s -> 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);
@@ -3861,6 +4224,7 @@
} else {
Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO);
String value = classifyDataMap.getOrDefault(attrVO.getClassifyInvokeAttr(), "");
+ log.error("================================褰撳墠鍒嗙被娉ㄥ叆鐨剉alue鍊间负锛�==========================",value);
cbo.setAttributeValue(attrId, value);
}
} catch (Throwable e) {
@@ -4605,4 +4969,304 @@
}
}
+ /***
+ * @param codeClassifyOid
+ * @return
+ */
+ @Override
+ public String exportGroupCodeExcel(String codeClassifyOid) throws ServiceException {
+ VciBaseUtil.alertNotNull(codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+ CodeClassifyVO codeClassifyVO= classifyFullInfo.getCurrentClassifyVO();
+ //鑾峰彇鏈�鏂扮殑妯℃澘
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid);
+ LinkedList<String> colName=new LinkedList<>();//鍒楀ご
+ LinkedList<String> fieldList=new LinkedList<>();//鍒楀瓧娈�
+
+ ExecGroupCodePortDataDTO execGroupCodePortDataDTO=new ExecGroupCodePortDataDTO();
+ createExportGroupCodeMapConfig(templateVO,execGroupCodePortDataDTO);//缁勭粐鏁版嵁
+ if(!CollectionUtils.isEmpty(execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS())){
+ throw new ServiceException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆");
+ }
+ fieldList=execGroupCodePortDataDTO.getFieldList();
+ List<Map<String,String>>dataList=new ArrayList<>();
+ getDatas(classifyFullInfo,templateVO,fieldList,dataList,null);
+ execGroupCodePortDataDTO.setDataList(dataList);//鏀炬暟鎹�
+ execGroupCodePortDataDTO.setSheetName(codeClassifyVO.getName()+"闆嗗洟鐮佸鍏ユā鏉�");
+ String tempFolder = LocalFileUtil.getDefaultTempFolder();
+ String excelName = tempFolder + File.separator +
+ classifyFullInfo.getCurrentClassifyVO().getId() + "_" + classifyFullInfo.getCurrentClassifyVO().getName() + "_闆嗗洟鐮佸鍑烘ā鏉�.xls";
+ try {
+ new File(excelName).createNewFile();
+ } catch (Throwable e) {
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelName}, e);
+ }
+ LinkedList<String> finalFieldList = fieldList;
+ Map<String, CodeClassifyTemplateAttrVO> attrVOMap = templateVO.getAttributes().stream().filter(s-> finalFieldList.contains(s.getId().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ List<WriteExcelData> excelDataList = new ArrayList<>();
+ Workbook workbook = new HSSFWorkbook();
+ List<CodeAndGroupCodeAttrMappingDTO> codeAndGroupCodeAttrMappingDTOList= execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS();
+
+ Map<String, CodeAndGroupCodeAttrMappingDTO> jAttrVOMap = codeAndGroupCodeAttrMappingDTOList.stream().filter(s-> finalFieldList.contains(s.getTargetAttrKey().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getTargetAttrKey().toLowerCase(Locale.ROOT), t -> t));
+
+ WriteExcelData codeExcelData = new WriteExcelData(0, 0, "浼佷笟缂栫爜");
+ WriteExcelData groupExcelData = new WriteExcelData(0, 1, "闆嗗洟鐮�");
+ excelDataList.add(codeExcelData);
+ excelDataList.add(groupExcelData);
+ for (int i = 0; i < fieldList.size(); i++) {
+ String attrId=fieldList.get(i);
+ if(attrId.equals(CODE_FIELD)||attrId.equals(CODE_GROUP_FIELD)){
+ continue;
+ }
+ if (attrVOMap.containsKey(attrId)) {
+ CodeClassifyTemplateAttrVO attrVO = attrVOMap.get(attrId);
+ //Object text = attrVO.getName();
+ CodeAndGroupCodeAttrMappingDTO codeAttrMappingDTO = jAttrVOMap.get(attrId);
+ Object text = codeAttrMappingDTO.getSourceAttrName();
+ text = exportKeyAndRequired(workbook, attrVO, text);
+ WriteExcelData excelData = new WriteExcelData(0, i, text);
+ if (text instanceof RichTextString) {
+ excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
+ }
+ excelDataList.add(excelData);
+ }
+ }
+ final Integer[] rowIndex = {0};
+ dataList.stream().forEach(data -> {
+ rowIndex[0]++;
+ String id=data.getOrDefault("id", "");
+ excelDataList.add(new WriteExcelData(rowIndex[0], 0, id));
+ String groupCode=data.getOrDefault("groupcode", "");
+ excelDataList.add(new WriteExcelData(rowIndex[0], 1, groupCode));
+ List<String> newFieldList = finalFieldList.stream().filter(e -> !e.equals("id") &&!e.equals("groupcode")).collect(Collectors.toList());
+
+ for (int i = 0; i < newFieldList.size(); i++) {
+ String attrId = newFieldList.get(i).toLowerCase(Locale.ROOT);
+ if(attrId.equals("id")){
+
+ }else if(attrId.equals("groupcode")){
+
+ }else{
+ if (attrVOMap.containsKey(attrId)) {
+ CodeClassifyTemplateAttrVO attrVO = attrVOMap.get(attrId);
+ if (StringUtils.isNotBlank(attrVO.getEnumId()) || StringUtils.isNotBlank(attrVO.getEnumString())) {
+ attrId = attrId + "Text";
+ }
+ if (StringUtils.isNotBlank(attrVO.getReferBtmId()) || StringUtils.isNotBlank(attrVO.getReferConfig())) {
+ attrId = attrId + "name";
+ }
+ if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(attrId)) {
+ attrId = VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT);
+ }
+ excelDataList.add(new WriteExcelData(rowIndex[0], i+2, data.getOrDefault(attrId, "")));
+ }
+ }
+ }
+ });
+ WriteExcelOption excelOption = new WriteExcelOption();
+ excelOption.addSheetDataList(execGroupCodePortDataDTO.getSheetName(),excelDataList);
+
+ //澧炲姞妯℃澘鐨勪俊鎭鍏�
+ LinkedList<WriteExcelData> tempEDList = new LinkedList<>();
+ tempEDList.add(new WriteExcelData(0,0,"妯℃澘涓婚敭"));
+ tempEDList.add(new WriteExcelData(0,1,"妯℃澘浠e彿"));
+ tempEDList.add(new WriteExcelData(0,2,"妯℃澘鍚嶇О"));
+ tempEDList.add(new WriteExcelData(1,0,templateVO.getOid()));
+ tempEDList.add(new WriteExcelData(1,1,templateVO.getId()));
+ tempEDList.add(new WriteExcelData(1,2,templateVO.getName()));
+ excelOption.addSheetDataList("妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList);
+ ExcelUtil.writeDataToFile(excelName, excelOption);
+ log.info("鏂囦欢璺緞"+excelName);
+ return excelName;
+ }
+
+ /***
+ * 瀵煎叆闆嗗洟鐮�
+ * @param codeClassifyOid
+ * @param file
+ * @return
+ */
+ public String improtGroupCode(String codeClassifyOid, File file) throws ServiceException {
+ VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
+ ReadExcelOption reo = new ReadExcelOption();
+ reo.setReadAllSheet(true);
+ List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
+
+ if (sheetDataSetList.size() > LIMIT + 1) {
+ throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
+ }
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+ CodeClassifyTemplateVO templateVO = new CodeClassifyTemplateVO();
+ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
+ ).collect(Collectors.toList());
+ ExecGroupCodePortDataDTO execGroupCodePortDataDTO=new ExecGroupCodePortDataDTO();
+ createExportGroupCodeMapConfig(templateVO,execGroupCodePortDataDTO);//缁勭粐鏁版嵁
+ List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS=execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS();
+ if(!CollectionUtils.isEmpty(codeAttrMapGroupAttrDTOS)){
+ throw new ServiceException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆");
+ }
+ Map<String, CodeAndGroupCodeAttrMappingDTO> codeSystemObjectMap = codeAttrMapGroupAttrDTOS.stream().filter(codeAttrMappingDTO -> codeAttrMappingDTO != null && StringUtils.isNotBlank(codeAttrMappingDTO.getSourceAttrName())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getSourceAttrName(), t -> t));
+ SheetDataSet dataSet= sheetDataSetList.get(0);
+ List<String> titleRowData = dataSet.getColName();
+ Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
+ getGroupCodeFieldIndexMap(titleRowData,codeAttrMapGroupAttrDTOS,fieldIndexMap);
+ //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜�
+ List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT))
+ && com.alibaba.cloud.commons.lang.StringUtils.isBlank(s.getComponentRule()) && com.alibaba.cloud.commons.lang.StringUtils.isBlank(s.getClassifyInvokeAttr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓
+ ).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(unExistAttrVOs)){
+ String message=unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName).collect(Collectors.joining(SERIAL_UNIT_SPACE));
+ throw new VciBaseException("銆�" + message + "銆戣繖浜涘睘鎬у湪excel涓病鏈夋壘鍒�");
+ }
+ List<ClientBusinessObject> cboList = new ArrayList<>();
+ List<SheetRowData> rowDataList = dataSet.getRowData();
+
+ getExportGroupCodeDatas(fieldIndexMap,rowDataList,cboList);//鏋勫缓鏁版嵁瀵硅薄
+ List<String> codeList= cboList.stream().map(ClientBusinessObject::getId).collect(Collectors.toList());
+ List<Map<String,String>>dataList=new ArrayList<>();
+ getDatas(classifyFullInfo,templateVO,execGroupCodePortDataDTO.getFieldList(),dataList,codeList);
+ //鏌ヨ绯荤粺涓瓨鍦�
+ if(!CollectionUtils.isEmpty(dataList)){
+
+
+ }
+ return "";
+ }
+
+ /**
+ *
+ * @param fieldIndexMap
+ * @param rowDataList
+ * @param cboList
+ */
+ private void getExportGroupCodeDatas(Map<Integer,String> fieldIndexMap,List<SheetRowData> rowDataList,List<ClientBusinessObject>cboList){
+ rowDataList.stream().forEach(sheetRowData -> {
+ sheetRowData.getData().forEach((index,value)->{
+ ClientBusinessObject cbo=new ClientBusinessObject();
+ String field = fieldIndexMap.get(index);
+ if (StringUtils.isBlank(field)) {
+ throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
+ }
+ try {
+ cbo.setAttributeValueWithNoCheck(field, value);
+ if (WebUtil.isDefaultField(field)) {
+ WebUtil.setValueToField(field, cbo, value);
+ }
+ } catch (VciBaseException e) {
+ log.error("璁剧疆灞炴�х殑鍊奸敊璇�", e);
+ }
+ cboList.add(cbo);
+ });
+ });
+ }
+ /***
+ * 闆嗗洟瀵煎嚭妯℃澘灞炴�ф槧灏勪俊鎭幏鍙�
+ * @param templateVO
+ * @param execGroupCodePortDataDTO
+ */
+ private void createExportGroupCodeMapConfig(CodeClassifyTemplateVO templateVO,ExecGroupCodePortDataDTO execGroupCodePortDataDTO){
+ String classOid=templateVO.getCodeclassifyoid();
+ String templateOid=templateVO.getOid();
+ R r=mdmInterJtClient.list_mapping(classOid);
+ if(r.isSuccess()){
+ List<DockingPreAttrMappingVO>dockingPreAttrMappingVOList= (List<DockingPreAttrMappingVO>) r.getData();
+ List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS=new ArrayList<>();
+ LinkedList<String> fieldList=new LinkedList<>();
+ LinkedList<String> colNameList=new LinkedList<>();
+ dockingPreAttrMappingVOList.stream().forEach(dockingPreAttrMappingVO -> {
+ CodeAndGroupCodeAttrMappingDTO codeAndGroupCodeAttrMappingDTO=new CodeAndGroupCodeAttrMappingDTO();
+ if(StringUtils.isNotBlank(dockingPreAttrMappingVO.getTargetAttrId())){
+ codeAndGroupCodeAttrMappingDTO.setDefaultValue(dockingPreAttrMappingVO.getDefaultValue());
+ codeAndGroupCodeAttrMappingDTO.setMetaListId(dockingPreAttrMappingVO.getMetaListId());
+ codeAndGroupCodeAttrMappingDTO.setSourceAttrKey(dockingPreAttrMappingVO.getSourceAttrKey());
+ codeAndGroupCodeAttrMappingDTO.setSourceAttrName(dockingPreAttrMappingVO.getSourceAttrName());
+ codeAndGroupCodeAttrMappingDTO.setTargetAttrId(dockingPreAttrMappingVO.getTargetAttrId());
+ codeAndGroupCodeAttrMappingDTO.setTargetAttrKey(dockingPreAttrMappingVO.getTargetAttrKey());
+ codeAndGroupCodeAttrMappingDTO.setTargetAttrName(dockingPreAttrMappingVO.getTargetAttrName());
+ fieldList.add(dockingPreAttrMappingVO.getTargetAttrKey());
+ colNameList.add(dockingPreAttrMappingVO.getSourceAttrName());
+ }
+ codeAttrMapGroupAttrDTOS.add(codeAndGroupCodeAttrMappingDTO);
+ });
+ execGroupCodePortDataDTO.setCodeAttrMapGroupAttrDTOS(codeAttrMapGroupAttrDTOS);
+ execGroupCodePortDataDTO.setFieldList(fieldList);
+ execGroupCodePortDataDTO.setColName(colNameList);
+ }
+ }
+
+ /***
+ * 闆嗗洟鐮佸睘鎬ц浆鎹�
+ * @param titleRowData
+ * @param codeAttrMapGroupAttrDTOS
+ * @param fieldIndexMap
+ */
+ private void getGroupCodeFieldIndexMap(List<String> titleRowData,List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS,Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap){
+ Map<String, CodeAndGroupCodeAttrMappingDTO> codeSystemObjectMap = codeAttrMapGroupAttrDTOS.stream().filter(codeAttrMappingDTO -> codeAttrMappingDTO != null && StringUtils.isNotBlank(codeAttrMappingDTO.getSourceAttrName())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getSourceAttrName(), t -> t));
+ for (int i = 0; i < titleRowData.size(); i++) {
+ String title = titleRowData.get(i);
+ CodeAndGroupCodeAttrMappingDTO codeAndGroupCodeAttrMappingDTO =codeSystemObjectMap.get(title.replace(KEY_ATTR_CHAR,"").replace(REQUIRED_CHAR,""));
+ String id=codeAndGroupCodeAttrMappingDTO.getTargetAttrKey();
+ if(com.alibaba.cloud.commons.lang.StringUtils.isBlank(id) && "闆嗗洟鐮�".equalsIgnoreCase(title)){
+ id = CODE_GROUP_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);
+ }
+ }
+
+
+ }
+ /***
+ * 鏌ヨ鏈湁闆嗗洟鐮佺殑鏁版嵁
+ * @param classifyFullInfo
+ * @param templateVO
+ * @param selectFieldList
+ * @param dataList
+ */
+ private void getDatas(CodeClassifyFullInfoBO classifyFullInfo,CodeClassifyTemplateVO templateVO,LinkedList<String> selectFieldList,List<Map<String,String>>dataList,List<String> codeList ){
+ //鍏堟煡璇㈡暟鎹�
+ String btmTypeId = classifyFullInfo.getTopClassifyVO().getBtmTypeId();
+ String codeClassifyOid=classifyFullInfo.getCurrentClassifyVO().getOid();
+ Map<String, String> conditionMap=new HashMap<>();
+ if(conditionMap == null){
+ conditionMap = new HashMap<>();
+ }
+ if(conditionMap.containsKey(VciQueryWrapperForDO.OID_FIELD)){
+ conditionMap.put(VciQueryWrapperForDO.OID_FIELD,QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(conditionMap.get(VciQueryWrapperForDO.OID_FIELD)) + ")");
+ }
+ if(!CollectionUtils.isEmpty(codeList)){
+ conditionMap.put("id_in",VciBaseUtil.array2String(codeList.toArray(new String[]{})));
+ }
+ conditionMap.put("codeclsfpath","*" + codeClassifyOid + "*");
+ conditionMap.put("groupcode_null", "null");
+ conditionMap.put("lastr", "1");
+ conditionMap.put("lastv", "1");
+
+ R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Arrays.asList(btmTypeId));
+ String tableName = "";
+ if(listR.isSuccess() && !listR.getData().isEmpty()){
+ tableName = Func.isNotBlank(listR.getData().get(0).getTableName()) ? listR.getData().get(0).getTableName():VciBaseUtil.getTableName(btmTypeId);
+ }else{
+ tableName = VciBaseUtil.getTableName(btmTypeId);
+ }
+ PageHelper pageHelper = new PageHelper();
+ pageHelper.setLimit(1000000);
+ pageHelper.setPage(1);
+ pageHelper.addDefaultDesc("createTime");
+ DataGrid<Map<String, String>> dataGrid = engineService.queryGrid(btmTypeId, templateVO, conditionMap, pageHelper);
+ //杞崲鏁版嵁
+ if(!CollectionUtils.isEmpty(dataGrid.getData())){
+ dataList.addAll(dataGrid.getData());
+ }
+ //灏佽鏌ヨ鍑烘潵鐨勬暟鎹�
+ engineService.wrapperData(dataList, templateVO, selectFieldList,false);
+ //modify by weidy@2022-09-27
+ //鍥犱负鍦ㄥ垪琛ㄥ拰琛ㄥ崟鐨勬樉绀虹殑鏃跺�欙紝鎴戜滑鐨勫紑鍏崇被鍨嬮〉闈細澶勭悊锛屼絾鏄湪瀵煎嚭鐨勬椂鍊欙紝鎴戜滑闇�瑕佸皢true鍜宖alse閮芥浛鎹㈡垚涓枃
+ engineService.wrapperBoolean(dataList,templateVO);
+ log.info("瀵煎嚭妯℃澘鐨勬暟鎹潯鐩暟:"+dataList.size());
+ }
}
--
Gitblit v1.9.3