From d61d4f812d635140021f93123841ff95930549a8 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期四, 01 二月 2024 15:04:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 2901 ++++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 2,274 insertions(+), 627 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 c324801..0e551e1 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,16 +1,18 @@
package com.vci.ubcs.code.service.impl;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.google.protobuf.ServiceException;
+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.CodeOrderDTO;
+import com.vci.ubcs.code.dto.*;
import com.vci.ubcs.code.entity.CodeAllCode;
-import com.vci.ubcs.code.entity.CodeClassify;
-import com.vci.ubcs.code.enumpack.CodeDefaultLC;
-import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
+import com.vci.ubcs.code.enumpack.*;
import com.vci.ubcs.code.lifecycle.CodeAllCodeLC;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.*;
@@ -20,6 +22,7 @@
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.file.util.VciZipUtil;
import com.vci.ubcs.omd.feign.IBtmTypeClient;
import com.vci.ubcs.omd.feign.IWebSecretClient;
import com.vci.ubcs.omd.vo.BtmTypeVO;
@@ -33,20 +36,17 @@
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.util.MdmBtmTypeConstant;
+import com.vci.ubcs.starter.util.SaveLogUtil;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
import com.vci.ubcs.starter.web.enumpck.UserSecretEnum;
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.pagemodel.*;
import com.vci.ubcs.starter.web.toolmodel.DateConverter;
import com.vci.ubcs.starter.web.util.*;
-import lombok.AllArgsConstructor;
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;
@@ -55,7 +55,11 @@
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.BladeUser;
+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;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -63,13 +67,25 @@
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;
import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.ForkJoinPool;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import static com.alibaba.druid.util.FnvHash.Constants.LIMIT;
@@ -97,18 +113,25 @@
@Value("${batchadd.redis.time:6000000}")
public int BATCHADD_REDIS_TIME;
+
+ @Value("${batchadd.import_data_limit:5001}")
+ private Integer IMPORT_DATA_LIMIT;
+
/**
* 涓婚搴撳垎绫荤殑鏈嶅姟
*/
@Resource
private ICodeClassifyService classifyService;
+ @Resource
+ private MdmEngineService mdmEngineService;
/**
* 閫氱敤鏌ヨ
*/
@Resource
private CommonsMapper commonsMapper;
+
/****
* 鐮佸�兼湇鍔�
*/
@@ -119,7 +142,7 @@
* 妯℃澘鐨勬湇鍔�
*/
@Resource
- private CodeClstemplateServiceImpl templateService;
+ private ICodeClstemplateService templateService;
/**
* 涓绘暟鎹紩鎿庣殑鏈嶅姟
@@ -157,10 +180,31 @@
@Autowired
private IBtmTypeClient btmTypeClient;
/***
+ * 鐢宠闆嗗洟缂栫爜鏈嶅姟
+ */
+ @Resource
+ private IMdmInterJtClient mdmInterJtClient;
+ /***
* 瀵嗙骇鏈嶅姟
*/
@Resource
private IWebSecretClient secretService;
+ /**
+ * 鏃ュ織淇濆瓨宸ュ叿绫�
+ */
+ @Autowired
+ private SaveLogUtil saveLogUtil;
+
+ /**
+ * 瀹㈡埛鐜板満excel涓鸿�佺増鏈紝瀵煎嚭鐨勬�绘暟闄愬埗涓�65535
+ */
+ public static final int EXPORT_LIMIT = 65535;
+
+ /**
+ * 鑷畾涔夊苟鍙慒orkJoinPool
+ */
+ private static final ForkJoinPool customForkJoinPool = new ForkJoinPool(Runtime.getRuntime().availableProcessors()-1);
+
/**
* 鎵归噺鐢宠锛氶�夊彇閫変腑鍒嗙被涓嬬殑鎵�鏈夋ā鏉垮叧閿睘鎬э紝鐩镐技灞炴�э紝蹇呭~灞炴�э紝鍐欏叆execl涓�
*
@@ -168,7 +212,7 @@
* @return excel鐨勬枃浠跺湴鍧�
*/
@Override
- public String downloadTopImportExcel(String codeClassifyOid){
+ public String downloadTopImportExcel(String codeClassifyOid){
List<CodeClassifyTemplateVO> templateVOList=new ArrayList<>();
VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
@@ -183,38 +227,40 @@
//鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉�
//鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑
//缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏�
- List<CodeClassifyTemplateAttrVO> templateAttrVOS = templateVO.getAttributes().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("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
- }
- templateAttrVOS.stream().forEach(codetemplateAttr ->{
- String field=codetemplateAttr.getId();
- String name=codetemplateAttr.getName();
- CodeClassifyTemplateAttrVO codeBaseAttributeDTO=new CodeClassifyTemplateAttrVO();
- boolean res=(StringUtils.isNotBlank(codetemplateAttr.getAttributeGroup())&& codetemplateAttr.getAttributeGroup().equals(BATCHADD_EXCEPORT_ATTR_TYPE))//鍩烘湰灞炴�у瓧娈垫樉绀�
- ||(StringUtils.isNotBlank(codetemplateAttr.getKeyAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getKeyAttrFlag()))//鍏抽敭灞炴�х殑瀛樺叆
- ||(StringUtils.isNotBlank(codetemplateAttr.getSameRepeatAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getSameRepeatAttrFlag())) //鐩镐技灞炴�х殑瀛樺叆
- ||(StringUtils.isNotBlank(codetemplateAttr.getRequireFlag())&&Boolean.parseBoolean(codetemplateAttr.getRequireFlag()));
- if(allFieldToOutNameMap.containsKey(name)){//濡傛灉瀛樺湪鐨勮瘽鍒欓渶瑕佹牴鎹叿浣撶殑鍘昏祴鍊�
- codeBaseAttributeDTO= allFieldToOutNameMap.get(name);
- if(StringUtils.isNotBlank(codetemplateAttr.getKeyAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getKeyAttrFlag())){
- codeBaseAttributeDTO.setKeyAttrFlag(codetemplateAttr.getKeyAttrFlag());//灞炴�у叧閿睘鎬�
- }
- if(StringUtils.isNotBlank(codetemplateAttr.getRequireFlag())&&Boolean.parseBoolean(codetemplateAttr.getRequireFlag())){
- codeBaseAttributeDTO.setRequireFlag(codetemplateAttr.getRequireFlag());//灞炴�у繀濉」
- }
- if(StringUtils.isNotBlank(codetemplateAttr.getSameRepeatAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getSameRepeatAttrFlag())){
- codeBaseAttributeDTO.setSameRepeatAttrFlag(codetemplateAttr.getSameRepeatAttrFlag());//灞炴�х浉浼煎睘鎬�
- }
- }else if(res){
- allFieldToOutNameMap.put(name,codetemplateAttr);
+ if(!CollectionUtils.isEmpty(templateVO.getAttributes())) {
+ List<CodeClassifyTemplateAttrVO> templateAttrVOS = templateVO.getAttributes().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("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
}
- });
+ templateAttrVOS.stream().forEach(codetemplateAttr -> {
+ String field = codetemplateAttr.getId();
+ String name = codetemplateAttr.getName();
+ CodeClassifyTemplateAttrVO codeBaseAttributeDTO = new CodeClassifyTemplateAttrVO();
+ boolean res = (StringUtils.isNotBlank(codetemplateAttr.getAttributeGroup()) && codetemplateAttr.getAttributeGroup().equals(BATCHADD_EXCEPORT_ATTR_TYPE))//鍩烘湰灞炴�у瓧娈垫樉绀�
+ || (StringUtils.isNotBlank(codetemplateAttr.getKeyAttrFlag()) && Boolean.parseBoolean(codetemplateAttr.getKeyAttrFlag()))//鍏抽敭灞炴�х殑瀛樺叆
+ || (StringUtils.isNotBlank(codetemplateAttr.getSameRepeatAttrFlag()) && Boolean.parseBoolean(codetemplateAttr.getSameRepeatAttrFlag())) //鐩镐技灞炴�х殑瀛樺叆
+ || (StringUtils.isNotBlank(codetemplateAttr.getRequireFlag()) && Boolean.parseBoolean(codetemplateAttr.getRequireFlag()));
+ if (allFieldToOutNameMap.containsKey(name)) {//濡傛灉瀛樺湪鐨勮瘽鍒欓渶瑕佹牴鎹叿浣撶殑鍘昏祴鍊�
+ codeBaseAttributeDTO = allFieldToOutNameMap.get(name);
+ if (StringUtils.isNotBlank(codetemplateAttr.getKeyAttrFlag()) && Boolean.parseBoolean(codetemplateAttr.getKeyAttrFlag())) {
+ codeBaseAttributeDTO.setKeyAttrFlag(codetemplateAttr.getKeyAttrFlag());//灞炴�у叧閿睘鎬�
+ }
+ if (StringUtils.isNotBlank(codetemplateAttr.getRequireFlag()) && Boolean.parseBoolean(codetemplateAttr.getRequireFlag())) {
+ codeBaseAttributeDTO.setRequireFlag(codetemplateAttr.getRequireFlag());//灞炴�у繀濉」
+ }
+ if (StringUtils.isNotBlank(codetemplateAttr.getSameRepeatAttrFlag()) && Boolean.parseBoolean(codetemplateAttr.getSameRepeatAttrFlag())) {
+ codeBaseAttributeDTO.setSameRepeatAttrFlag(codetemplateAttr.getSameRepeatAttrFlag());//灞炴�х浉浼煎睘鎬�
+ }
+ } else if (res) {
+ allFieldToOutNameMap.put(name, codetemplateAttr);
+ }
+ });
+ }
});
//鏁寸悊濂芥墍鏈夋ā鏉块渶瑕佸啓鍏xecl鐨勫睘鎬т俊鎭�
Workbook workbook = new HSSFWorkbook();
@@ -333,10 +379,12 @@
@Override
public String createImportExcel(String codeClassifyOid, boolean isHistory) {
List<CodeClassifyTemplateVO> templateVOList=new ArrayList<>();
-
VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
+
+ //鑾峰彇鐮佹瀹藉害
+ String secWidth = getCodeSegmentWidth(codeClassifyVO.getOid());
if(isHistory){
templateVOList= templateService.childTemplates(codeClassifyOid);
@@ -363,23 +411,32 @@
//鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉�
//鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑
//缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏�
- List<CodeClassifyTemplateAttrVO> templateAttrVOS = codeClassifyTemplateVO.getAttributes().stream().filter(s ->
+ 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())
&& (isHistory || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
).collect(Collectors.toList());
- if(CollectionUtils.isEmpty(templateAttrVOS)){
+ 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():"浼佷笟缂栫爜"));
+ excelDataList.add(new WriteExcelData(0,0,"鍒嗙被璺緞",""));
+ excelDataList.add(new WriteExcelData(0,1,"鐮佹瀹藉害",""));
+ excelDataList.add(new WriteExcelData(0,2,!CollectionUtils.isEmpty(idAttrVOList)?idAttrVOList.get(0).getName():"浼佷笟缂栫爜",idAttrVOList.get(0).getId()));
+ // 濉厖鐮佹
+ excelDataList.add(new WriteExcelData(1,1,secWidth));
}
for (int i = 0; i < templateAttrVOS.size(); i++) {
CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i);
@@ -387,7 +444,7 @@
Object text = attrVO.getName();
text = exportKeyAndRequired(workbook,attrVO,text);
int colIndex = (isHistory?3:0) + i;
- WriteExcelData excelData = new WriteExcelData(0, colIndex, text);
+ 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())
@@ -444,6 +501,246 @@
}
/**
+ * 鐢熸垚鎵归噺淇敼瀵煎叆鐨勬枃浠�
+ *
+ * @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;
+ }
+
+ /**
+ * 鑾峰彇鐮佹瀹藉害
+ * @param codeClassifyOid
+ * @return
+ */
+ private String getCodeSegmentWidth(String codeClassifyOid){
+ CodeClassifyFullInfoBO classifyFullInfoBO = classifyService.getClassifyFullInfo(codeClassifyOid);
+ // 瑕佽幏鍙栫爜娈靛搴︼紝鍏堣鑾峰彇瑙勫垯锛屽綋鍓嶆病鏈夊線涓婃壘
+ CodeRuleVO codeRuleByClassifyFullInfo = mdmEngineService.getCodeRuleByClassifyFullInfo(classifyService.getClassifyFullInfo(codeClassifyOid));
+ List<CodeBasicSecVO> secVOList = codeRuleByClassifyFullInfo.getSecVOList();
+ if(secVOList.isEmpty()){
+ return "";
+ }
+ StringBuffer secWidth = new StringBuffer("");
+ secVOList.stream().forEach(item->{
+ switch (item.getSecType().toLowerCase(Locale.ROOT)){
+ case "codeclassifysec":
+ case "codevariablesec":
+ case "coderefersec":
+ case "codefixedsec":
+ case "codeattrsec":
+ case "codeserialsec":
+ countSecWith(item,secWidth);
+ break;
+ case "codelevelsec":
+ //灞傜骇鐮佹锛岄渶瑕佷粠鍒嗙被涓婅幏鍙栫浉搴旂殑淇℃伅
+ String secValue = "";
+ if (CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(item.getCodeLevelType())) {
+ //鏈�灏忓眰锛屽洜涓烘垜浠彧鑳藉湪鍙跺瓙鑺傜偣涓婄敵璇风紪鐮侊紝鎵�浠ヨ繖涓氨鏄綋鍓嶅垎绫荤殑
+ if (CodeGetValueTypeEnum.CURRENT.getValue().equalsIgnoreCase(item.getCodeGetValueType()) || CollectionUtils.isEmpty(classifyFullInfoBO.getParentClassifyVOs())) {
+ //灏辨槸褰撳墠鍒嗙被鐨�
+ secValue = classifyFullInfoBO.getCurrentClassifyVO().getId();
+ } else {
+ //鎴戜滑闇�瑕佷粠椤跺眰寮�濮嬫壘鍒板綋鍓嶅垎绫讳负姝�
+ secValue = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> -o1.getDataLevel().compareTo(o2.getDataLevel()))).map(CodeClassifyVO::getId).collect(Collectors.joining()) + classifyFullInfoBO.getCurrentClassifyVO().getId();
+ }
+ } else {
+ //鎸囧畾灞傦紝鎴戜滑闇�瑕侀�氳繃涓婄骇鐨勬潵鑾峰彇
+ if (CollectionUtils.isEmpty(classifyFullInfoBO.getParentClassifyVOs())) {
+ //璇存槑褰撳墠宸茬粡鏄渶楂樼殑浜�
+ secValue = classifyFullInfoBO.getCurrentClassifyVO().getId();
+ } else {
+ //杩欎釜鎴戜滑闇�瑕佺湅鐪�,灞傜骇鏄笉鏄ぇ浜庝簡鏈�澶у眰绾х殑鏁�
+ List<CodeClassifyVO> parentClassifyVOList = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> -o1.getDataLevel().compareTo(o2.getDataLevel()))).collect(Collectors.toList());
+ if (item.getCodeLevelValue() > (parentClassifyVOList.size() + 1)) {
+ //鎸囧畾鐨勫眰绾ф瘮褰撳墠鐨勫眰绾ц繕澶т簡锛屾墍浠ュ彧鑳借幏鍙栧綋鍓嶅眰绾т簡
+ if (CodeGetValueTypeEnum.CURRENT.getValue().equalsIgnoreCase(item.getCodeGetValueType())) {
+ secValue = classifyFullInfoBO.getCurrentClassifyVO().getId();
+ } else {
+ secValue = parentClassifyVOList.stream().map(CodeClassifyVO::getId).collect(Collectors.joining()) + classifyFullInfoBO.getCurrentClassifyVO().getId();
+ }
+ } else {
+ //鎴戜滑鑾峰彇鍏朵腑鎸囧畾灞傜殑鍐呭
+ if (CodeGetValueTypeEnum.CURRENT.getValue().equalsIgnoreCase(item.getCodeGetValueType())) {
+ CodeClassifyVO classifyVO = parentClassifyVOList.stream().filter(s -> s.getDataLevel().intValue() == item.getCodeLevelValue().intValue()).findFirst().orElseGet(() -> null);
+ if (classifyVO != null) {
+ secValue = classifyVO.getId();
+ }
+ } else {
+ //灏忎簬绛変簬鐨勫叏閮ㄦ嬁鍑烘潵
+ secValue = parentClassifyVOList.stream().filter(s -> s.getDataLevel().intValue() <= item.getCodeLevelValue().intValue()).sorted(((o1, o2) -> -o1.getDataLevel().compareTo(o2.getDataLevel()))).map(CodeClassifyVO::getId).collect(Collectors.joining());
+ }
+ }
+ }
+ }
+ //鐪嬬湅闀垮害鏄惁闇�瑕佹埅鏂�
+ if (!CodeCutTypeEnum.NONE.getValue().equalsIgnoreCase(item.getValueCutType()) &&
+ item.getValueCutLength() != null && item.getValueCutLength() > 0 && secValue.length() > item.getValueCutLength()) {
+ if (CodeCutTypeEnum.RIGHT.getValue().equalsIgnoreCase(item.getValueCutType())) {
+ //宸︽埅鍙栨槸浠庡乏杈瑰壀鎺夛紝鍙虫埅鍙栨槸浠庡彸杈瑰壀鎺�--淇濈暀宸﹁竟
+ secValue = secValue.substring(0, item.getValueCutLength());
+ } else {
+ secValue = secValue.substring(secValue.length() - item.getValueCutLength());
+ }
+ }
+ secValue = productCodeService.joinPreffixAndSuffix(item,secValue);
+ secWidth.append(secValue.length()).append("#");
+ break;
+ case "codedatesec":
+ String dateFormatStr = item.getCodeDateFormatStr();
+ if(Func.isNotEmpty(dateFormatStr)) {
+ // 鑾峰彇褰撳墠鏃堕棿
+ Date currentDate = new Date();
+ // 鎸囧畾鏃ユ湡鏍煎紡
+ SimpleDateFormat dateFormat = new SimpleDateFormat(dateFormatStr);
+ // 灏嗗綋鍓嶆椂闂磋浆鎹负鎸囧畾鏃ユ湡鏍煎紡
+ // 浣跨敤姝e垯琛ㄨ揪寮忓幓鎺夐櫎鏁板瓧浠ュ鐨勬墍鏈夊瓧绗︿覆
+ String cleanedDate = dateFormat.format(currentDate).replaceAll("[^0-9]", "");
+ int width = cleanedDate.length();
+ if (Func.isNotEmpty(item.getPrefixCode())) {
+ width += item.getPrefixCode().length();
+ }
+ if (Func.isNotEmpty(item.getSuffixCode())) {
+ width += item.getSuffixCode().length();
+ }
+ secWidth.append(width).append("#");
+ }
+ break;
+ }
+ });
+ return secWidth.toString().substring(0, secWidth.length() - 1);
+ }
+
+ /**
+ * 璁$畻鐮佹闀垮害鍔犲墠鍚庣紑鐨勯暱搴�
+ * @param codeBasicSecVO
+ * @param secWidth
+ */
+ private void countSecWith(CodeBasicSecVO codeBasicSecVO,StringBuffer secWidth){
+ if(Func.isNotEmpty(codeBasicSecVO.getCodeSecLength())){
+ int width = VciBaseUtil.getInt(codeBasicSecVO.getCodeSecLength());
+ if(Func.isNotEmpty(codeBasicSecVO.getPrefixCode())){
+ width += codeBasicSecVO.getPrefixCode().length();
+ }
+ if(Func.isNotEmpty(codeBasicSecVO.getSuffixCode())){
+ width += codeBasicSecVO.getSuffixCode().length();
+ }
+ secWidth.append(width).append("#");
+ }else {
+ secWidth.append(0).append("#");
+ }
+ }
+
+ /**
* 瀵煎嚭鐨勬椂鍊欏皝瑁呭繀杈撳拰鍏抽敭灞炴��
* @param attrVO 灞炴�х殑鏄剧ず瀵硅薄
* @param text 鍗曞厓鏍肩殑鍊�
@@ -475,7 +772,6 @@
return text;
}
-
/**
* 鎵归噺鐢宠缂栫爜鏁版嵁
*
@@ -484,7 +780,7 @@
* @return 鏈夐敊璇俊鎭殑excel鐨勬枃浠�
*/
@Override
- public CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file) {
+ public CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file) throws Exception {
VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�");
ReadExcelOption reo = new ReadExcelOption();
reo.setReadAllSheet(true);
@@ -504,7 +800,7 @@
//鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑
checkTemplateSync(sheetDataSetList,templateVO,0);
//鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹�
- Map<String,String> errorMap = new HashMap<>();
+ Map<String,String> errorMap = new ConcurrentHashMap<>();
String redisUUid=batchImportCodes(orderDTO,templateVO,dataSet,errorMap,true);
CodeImProtRusultVO codeImProtRusultVO = new CodeImProtRusultVO();
List<String> needRowIndexList = new ArrayList<>();
@@ -518,7 +814,6 @@
// return null;
return codeImProtRusultVO;
}
-
/***
* 浠庨《灞傛壒閲忕敵璇峰鍏ユ柟娉�
@@ -581,7 +876,8 @@
//闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->
- !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
+ !DEFAULT_ATTR_LIST.contains(s.getId()) &&
+ ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
).collect(Collectors.toList());
Map<String/**妯℃澘灞炴�у瓧娈祇id**/, String /**妯℃澘灞炴�у閮ㄥ悕绉�**/> fieldNameMap =attrVOS.stream().collect(Collectors.toMap(CodeClassifyTemplateAttrVO::getId,s->s.getName()));
@@ -625,13 +921,12 @@
});
-
//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
//濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
//2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
batchCheckRequiredAttrOnOrder(templateVO,allCboList,errorMap);
//3.鍒ゆ柇鍏抽敭灞炴��
- CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, allCboList);
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, allCboList,false,errorMap);
Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
@@ -641,7 +936,7 @@
}
if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
+ errorMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex,"") );
});
}
//鍒嗙被娉ㄥ叆
@@ -675,7 +970,8 @@
//鐩镐技鏍¢獙
Map<String,String>resembleMap=new HashMap<>();
List<DataResembleVO> dataResembleVOS=new ArrayList<>();
- String btmtypeid= classifyFullInfo.getTopClassifyVO().getBtmtypeid();
+ String btmtypeid= classifyFullInfo.getTopClassifyVO().getBtmTypeId();
+ //鐩镐技椤规煡璇㈣鍒�
bathcResembleQuery(codeClassifyOid,templateVO,needSaveCboList,resembleMap,btmtypeid,dataResembleVOS);
if(resembleMap.size()>0) {
if(!CollectionUtils.isEmpty(dataResembleVOS)) {
@@ -699,10 +995,8 @@
createRedisDatas(uuid + "-ok",codeImprotDataVOS, newErrorMap,true);
});
+
//寰�鐗╁搧鑺傜偣涓婂姞妯℃澘
-
-
-
List<String> needRowIndexList=new ArrayList<>();
CodeImProtRusultVO codeImProtRusultVO = new CodeImProtRusultVO();
if(errorMap.size()>0) {
@@ -760,36 +1054,369 @@
*/
@Override
public CodeImProtRusultVO batchImportHistoryData(String codeClassifyOid, String classifyAttr,File file) throws Throwable{
+ try {
+ VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
+ ReadExcelOption reo = new ReadExcelOption();
+ reo.setReadAllSheet(true);
+ List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
+ if (sheetDataSetList.size() > LIMIT + 1) {
+ throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
+ }
+ Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>();
+ //鐩镐技椤圭洰鏌ラ噸
+ String uuid=VciBaseUtil.getPk();
+ boolean isCreateUUid=false;
+ boolean isExport=false;
+ //long start = System.currentTimeMillis();
+ // 璁板綍瀵煎叆鎴愬姛鐨勬�绘暟
+ List<Integer> importCount = new ArrayList<>();
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+ 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(StringUtil.format("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩噞}鏉$殑鏁版嵁",IMPORT_DATA_LIMIT));
+ }
+ //鍘嗗彶瀵煎叆鐨勬椂鍊欎笉澶勭悊缂栫爜
+ //----閫昏緫鍐呭----
+ //1. 鍒嗙被鐨勮矾寰勫彲浠ュ湪椤甸潰涓婇�夋嫨鏄垎绫荤紪鍙疯繕鏄垎绫荤殑鍚嶇О
+ //2. 鍒嗙被鐨勮矾寰勶紝蹇呴』鏄綋鍓嶅鍏ラ�夋嫨鐨勫垎绫荤殑鑺傜偣锛屼互鍙婂叾涓嬬骇鑺傜偣
+ //3. 閫氳繃鏁版嵁瑕佸鍏ョ殑鍒嗙被鍘绘煡鎵惧搴旂殑缂栫爜瑙勫垯
+ //4. 鏁版嵁瀛樺偍鍜屾壒閲忕敵璇蜂竴鏍凤紝
+ //5. 闇�瑕佸崟鐙鐞嗕紒涓氱紪鐮佺殑鍐呭锛�
+ // 5.1 浼佷笟缂栫爜鍦ㄥ綋鍓峞xcel閲屼笉鑳介噸澶�
+ // 5.2 浼佷笟缂栫爜鍦ㄧ郴缁熶腑涓嶈兘閲嶅锛堝彲浠ユ槸宸茬粡鍥炴敹鐨勶級
+ // 5.3 浼佷笟缂栫爜鐨勯暱搴︼紝鍜岀紪鐮佽鍒欑殑闀垮害瑕佸搴斾笂
+ // 5.4 鑾峰彇娴佹按鐮佹鐨勫�硷紝鍘婚櫎濉厖鐨勫瓧绗︼紝鐪嬫祦姘村彿鏄灏戯紝鐒跺悗灏嗘祦姘村彿鍜岀幇鍦ㄧ殑鏈�澶ф祦姘村彿鍒ゆ柇锛屽皬浜庡氨鐩存帴褰曞叆锛屽ぇ浜庡垯淇敼鏈�澶ф祦姘村彿
+ // 5.5 瀛樺偍浼佷笟缂栫爜鍒癮llcode涓�
+ //鏌ヨ鍒嗙被鍜屾ā鏉�
+
+ //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
+ SheetDataSet dataSet = sheetDataSetList.get(i);
+ List<SheetRowData> rowDataList = dataSet.getRowData();
+
+ //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
+ CodeClassifyTemplateVO templateVO = new CodeClassifyTemplateVO();
+ /** if (!templateService.checkChildHasSameTemplate(classifyFullInfo.getCurrentClassifyVO().getOid())) {
+ throw new VciBaseException("褰撳墠鐨勫垎绫讳互鍙婁笅绾у垎绫荤殑妯℃澘涓嶇浉鍚�");
+ }***/
+ //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
+ //鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇
+ 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 {
+ List<CodeClassifyTemplateVO> templateVOList= checkSamesTemplate(titleRowData,sheetDataSetList,i,pathMap,errorMap);
+ templateVO= templateVOList.get(0);
+ }catch (Throwable e){
+ throw new VciBaseException(e.getMessage());
+ }
+
+ List<SheetRowData> needowDataList = rowDataList.stream().filter(cbo -> {
+ String rowIndex = cbo.getRowIndex();
+ return !errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+
+ //checkTemplateSync(sheetDataSetList, templateVO,i);
+ //杩欓噷涓嶉櫎鍘婚粯璁ょ殑灞炴��
+ 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()));
+ String idFieldName = attrVOS.stream().filter(s -> VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).findFirst().orElseGet(() -> new CodeClassifyTemplateAttrVO()).getName();
+ getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap);
+ //鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹�
+ List<ClientBusinessObject> cboList = new ArrayList<>();
+ String fullPath = getFullPath(classifyFullInfo);
+ //鎴戜滑闇�瑕佽幏鍙栧埌鎵�鏈夌殑涓嬬骇鍒嗙被鐨刼id鐨勮矾寰勶紝鍥犱负鍚庨潰闇�瑕�
+ Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap = getChildClassifyPathMap(classifyFullInfo, fullPath);
+ excelToCbo(classifyFullInfo, fieldIndexMap, needowDataList, templateVO, cboList, fullPath, false);
+
+
+ Map<String/**涓婚敭**/, CodeClassifyVO> classifyVOMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+ classifyVOMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO());
+ pathMap.put("#current#", classifyFullInfo.getCurrentClassifyVO());
+
+ //鍒ゆ柇缂栧彿鍦╡xcel閲屾湰韬氨閲嶅鐨�
+ Map<String, Long> idCountMap = cboList.stream().collect(Collectors.groupingBy(ClientBusinessObject::getId, Collectors.counting()));
+ List<String> repeatIdList = new ArrayList<>();
+ idCountMap.forEach((id, count) -> {
+ if (count > 1) {
+ repeatIdList.add(id);
+ }
+ });
+ if (!CollectionUtils.isEmpty(repeatIdList)) {
+ cboList.stream().filter(s -> repeatIdList.contains(s.getId())).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).forEach(rowIndex -> {
+ errorMap.put(rowIndex, "缂栧彿鍦ㄥ綋鍓峞xcel涓噸澶�;");
+ });
+ }
+ //鎴戜滑闇�瑕佸垽鏂繖浜涘垎绫荤殑妯℃澘鏄笉鏄竴鏍风殑锛屽彧闇�瑕佹牎楠岋紝涓嶇敤鑾峰彇
+ //妫�鏌ュ垎绫荤殑璺緞
+ checkClassifyPathInHistory(cboList, errorMap, pathMap, childOidPathMap);
+
+ //妫�鏌ヨ鍒�
+ Map<String/**鍒嗙被涓婚敭**/, String/**瑙勫垯涓婚敭**/> ruleOidMap = new ConcurrentHashMap<String, String>();
+ List<String> unExistRuleClassifyOidList = new CopyOnWriteArrayList<>();
+ checkRuleOidInHistory(classifyVOMap, ruleOidMap, unExistRuleClassifyOidList);
+ //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
+
+ //鎴戜滑鏍规嵁鍑洪敊鐨勫垎绫荤殑涓婚敭锛屽幓鎵捐鍙�
+ if (!CollectionUtils.isEmpty(unExistRuleClassifyOidList)) {
+ cboList.stream().forEach(cbo -> {
+ if (unExistRuleClassifyOidList.contains(cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD))) {
+ String row_index = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ errorMap.put(row_index, errorMap.getOrDefault(row_index, "") + ";鏍规嵁鍒嗙被璺緞瀵瑰簲鐨勫垎绫伙紝娌℃湁璁剧疆缂栫爜瑙勫垯");
+ }
+ });
+ }
+
+ //鍒ゆ柇蹇呰緭椤�
+ batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap);
+
+ //浼樺厛鏍¢獙缂栫爜鏄惁瀛樺湪
+ batchCheckIdExistOnOrder(templateVO, cboList, errorMap);
+
+ //boolean
+ reSwitchBooleanAttrOnOrder(attrVOS, cboList);
+
+ // 鏋氫妇鐨勫唴瀹归渶瑕佹牴鎹悕绉拌浆鎹负鏋氫妇鐨勫��
+ batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap);
+
+ batchSwitchReferAttrOnOrder(attrVOS, cboList, errorMap);
+
+ //6.澶勭悊鍒嗙被娉ㄥ叆
+ batchSwitchClassifyAttrOnOrder(attrVOS, cboList, classifyFullInfo,true);
+
+ //璁剧疆榛樿鍊�
+ batchSwitchAttrDefault(attrVOS, cboList);
+
+ //7.澶勭悊缁勫悎瑙勫垯
+ batchSwitchComponentAttrOnOrder(attrVOS, cboList);
+
+ //3.鍒ゆ柇鍏抽敭灞炴��
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,false,errorMap);
+ Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
+ Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
+ if (!CollectionUtils.isEmpty(selfRepeatRowIndexList)) {
+ selfRepeatRowIndexList.stream().forEach(rowIndex -> {
+ errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍦ㄥ綋鍓峞xcel鏂囦欢涓叧閿睘鎬ч噸澶�");
+ });
+ }
+ if (!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)) {
+ keyAttrRepeatRowIndexList.stream().forEach(rowIndex -> {
+ errorMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex, ""));
+ });
+ }
+ //4.鏍¢獙瑙勫垯
+ batchCheckVerifyOnOrder(attrVOS, cboList, errorMap);
+
+ //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
+ batchSwitchDateAttrOnOrder(attrVOS, cboList, errorMap);
+ if (CollectionUtils.isEmpty(ruleOidMap.values())) {
+ throw new VciBaseException("瀵煎叆鐨勬暟鎹墍閫夋嫨鐨勫垎绫婚兘娌℃湁璁剧疆缂栫爜瑙勫垯");
+ }
+ // TODO: 璇ョ敤oid鏌ヨ瑙勫垯鐨勶紝鍒敤id
+ Map<String, CodeRuleVO> ruleVOMap = ruleService.listCodeRuleByOids(ruleOidMap.values()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+ //鏍¢獙缂栫爜瑙勫垯鍜岀爜娈垫槸鍚︽纭�
+ Map<String, List<String>> ruleRowIndexMap = new ConcurrentHashMap<>();
+ checkSecLengthInHistory(cboList, classifyVOMap, ruleVOMap, ruleOidMap, errorMap, ruleRowIndexMap);
+ ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
+ List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
+ List<ClientBusinessObject> thisCbos = cboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
+ //鎴戜滑闇�瑕佸厛鏌ヨ涓�涓嬶紝鍐呭鏄惁宸茬粡瀛樺湪
+ if(!CollectionUtils.isEmpty(thisCbos)){
+ List<String> existIds = new ArrayList<>();
+ VciBaseUtil.switchCollectionForOracleIn(thisCbos).stream().forEach(cbos -> {
+ List<CodeAllCode> codeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getCodeRuleOid, ruleOid)
+ .notIn(CodeAllCode::getId,cbos.stream().map(s -> s.getId()).collect(Collectors.toSet()).toArray(new String[0]))
+ .notIn(CodeAllCode::getLcStatus,CodeAllCodeLC.TASK_BACK.getValue() + "','" + CodeAllCodeLC.OBSOLETED.getValue())
+ );
+ existIds.addAll(Optional.ofNullable(codeAllCodeList).orElseGet(() -> new ArrayList<>()).stream().map(s -> {
+ String id = s.getId();
+ if (StringUtils.isBlank(id)) {
+ id = s.getId();
+ }
+ return id;
+ }).collect(Collectors.toList()));
+ });
+ List<String> existIdCbos = thisCbos.stream().filter(s -> {
+ String id = s.getId();
+ if (StringUtils.isBlank(id)) {
+ id = s.getAttributeValue("id");
+ }
+ return existIds.contains(id);
+ }).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(existIdCbos)) {
+ thisCbos = thisCbos.stream().filter(s -> {
+ String id = s.getId();
+ if (StringUtils.isBlank(id)) {
+ id = s.getAttributeValue("id");
+ }
+ return !existIdCbos.contains(id);
+ }).collect(Collectors.toList());
+ existIdCbos.stream().forEach(rowIndex -> {
+ errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";銆�" + idFieldName + "銆戝湪绯荤粺涓凡缁忚鍗犵敤");
+ });
+ }
+ }
+ });
+
+ 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) {
+ isExport=true;
+ createRedisDatas(uuid + "-error", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, errorMap, false);
+ }
+ createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, templateVO);
+ 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(templateVO.getCodeclassifyoid(), templateVO, needSaveCboList, resembleMap, btmtypeid, dataResembleVOS);
+ if (resembleMap.size() > 0) {
+ if (!CollectionUtils.isEmpty(dataResembleVOS)) {
+ bladeRedis.set(uuid + "-resemble-data", dataResembleVOS);
+ createRedisDatas(uuid + "-resemble", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, resembleMap, false);
+ }
+ }
+
+ //鐢熸垚class缂撳瓨
+ Map<String, String> rowIndexClsOidMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t.getAttributeValue(CODE_CLASSIFY_OID_FIELD)));
+ createRedisByCodeClassify(uuid + "-class",templateVO,dataSet,fieldIndexMap,true);
+ //鑾峰彇缂栫爜锛屾煡璇㈠湪绯荤粺涓槸鍚﹁鍏朵粬鐨勫紩鐢ㄤ簡
+ //鎺掗櫎閿欒鐨勶紝鍓╀笅姝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;
+ }
+
+ List<String> needRowIndexList = needSaveCboList.stream().filter(s -> errorMap.containsKey(s.getAttributeValue(IMPORT_ROW_INDEX))).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toList());
+ if (isExport||newErrorMap.size() > 0) {
+ createRedisDatas(uuid + "-ok", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap, true);
+ } else {
+ List<BaseModel> dataCBOIdList=new ArrayList<>();
+ //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList;
+ CodeClassifyTemplateVO finalTemplateVO = templateVO;
+ final BladeUser user = AuthUtil.getUser();
+ ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
+ //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+ List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
+ List<ClientBusinessObject> thisCbos = finalNeedSaveCboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
+ List<BaseModel> dataCBOList=new CopyOnWriteArrayList<>();
+ thisCbos.stream().forEach(clientBusinessObject -> {
+ BaseModel baseModel=new BaseModel();
+ BeanUtil.convert(clientBusinessObject,baseModel);
+ //baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject));
+ dataCBOList.add(baseModel);
+ dataCBOIdList.add(baseModel);
+ });
+
+ if (!CollectionUtils.isEmpty(thisCbos)) {
+ try {
+ // TODO 澶氱嚎绋嬫祦闂
+ productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, dataCBOList,user);
+ importCount.add(dataCBOList.size());
+ } catch (Throwable e) {
+ log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
+ thisCbos.stream().forEach(cbo -> {
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage());
+ });
+ }
+ }
+ });
+ if (errorMap.size() > 0) {
+ isExport = true;
+ }
+ createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, finalTemplateVO);
+ engineService.batchSaveSelectChar(templateVO, dataCBOIdList);
+ }
+ }
+ 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);
+ saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true, StringUtil.format("閿欒淇℃伅锛歿}",JSON.toJSONString(shetNameMap)));
+ }else{
+ // 鍘嗗彶鏁版嵁瀵煎叆鏃跺嚭鐜颁簡鐩镐技椤硅繑鍥炵粨鏋滄椂涓嶇畻瀵煎叆鎴愬姛
+ if(shetNameMap.isEmpty() || !isCreateUUid){
+ saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",false, StringUtil.format("瀵煎叆鍒板垎绫粄}涓紝瀵煎叆鎴愬姛鎬绘暟涓猴細{}", JSON.toJSONString(classifyFullInfo), Func.isEmpty(importCount) ? 0:importCount.get(0)));
+ }
+ }
+ CodeImProtRusultVO codeImProtRusultVO=new CodeImProtRusultVO();
+ if(StringUtils.isNotBlank(excelFileName)) {
+ codeImProtRusultVO.setFilePath(excelFileName);
+ codeImProtRusultVO.setFileOid("");
+ }
+ if(isCreateUUid){
+ codeImProtRusultVO.setRedisUuid(uuid);
+ }
+ return codeImProtRusultVO;
+ }catch (Exception e){
+ saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true,e.toString());
+ throw e;
+ }
+ }
+
+ /**
+ * 瀵煎叆鎵归噺缂栬緫鏁版嵁
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬�
+ * @param file excel鏂囦欢鐨勪俊鎭�
+ * @return 鏈夐敊璇俊鎭殑excel
+ */
+ @Transactional
+ @Override
+ public CodeImProtRusultVO batchImportEdit(String codeClassifyOid, String classifyAttr,File file) throws Throwable{
VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
ReadExcelOption reo = new ReadExcelOption();
reo.setReadAllSheet(true);
List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
- if (sheetDataSetList.size() > LIMIT + 1) {
- throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
+ if (sheetDataSetList.get(0).getRowData().size() > LIMIT + 1) {
+ throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
}
- Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>();
- //鐩镐技椤圭洰鏌ラ噸
- String uuid=VciBaseUtil.getPk();
- boolean isCreateUUid=false;
+ 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;
}
- //鍘嗗彶瀵煎叆鐨勬椂鍊欎笉澶勭悊缂栫爜
- //----閫昏緫鍐呭----
- //1. 鍒嗙被鐨勮矾寰勫彲浠ュ湪椤甸潰涓婇�夋嫨鏄垎绫荤紪鍙疯繕鏄垎绫荤殑鍚嶇О
- //2. 鍒嗙被鐨勮矾寰勶紝蹇呴』鏄綋鍓嶅鍏ラ�夋嫨鐨勫垎绫荤殑鑺傜偣锛屼互鍙婂叾涓嬬骇鑺傜偣
- //3. 閫氳繃鏁版嵁瑕佸鍏ョ殑鍒嗙被鍘绘煡鎵惧搴旂殑缂栫爜瑙勫垯
- //4. 鏁版嵁瀛樺偍鍜屾壒閲忕敵璇蜂竴鏍凤紝
- //5. 闇�瑕佸崟鐙鐞嗕紒涓氱紪鐮佺殑鍐呭锛�
- // 5.1 浼佷笟缂栫爜鍦ㄥ綋鍓峞xcel閲屼笉鑳介噸澶�
- // 5.2 浼佷笟缂栫爜鍦ㄧ郴缁熶腑涓嶈兘閲嶅锛堝彲浠ユ槸宸茬粡鍥炴敹鐨勶級
- // 5.3 浼佷笟缂栫爜鐨勯暱搴︼紝鍜岀紪鐮佽鍒欑殑闀垮害瑕佸搴斾笂
- // 5.4 鑾峰彇娴佹按鐮佹鐨勫�硷紝鍘婚櫎濉厖鐨勫瓧绗︼紝鐪嬫祦姘村彿鏄灏戯紝鐒跺悗灏嗘祦姘村彿鍜岀幇鍦ㄧ殑鏈�澶ф祦姘村彿鍒ゆ柇锛屽皬浜庡氨鐩存帴褰曞叆锛屽ぇ浜庡垯淇敼鏈�澶ф祦姘村彿
- // 5.5 瀛樺偍浼佷笟缂栫爜鍒癮llcode涓�
-
+ // 鍗曟瀵煎叆鏁伴噺闄愬埗
+ if(sheetDataSetList.get(i).getRowData().size() > IMPORT_DATA_LIMIT){
+ throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�"+IMPORT_DATA_LIMIT+"鏉$殑鏁版嵁");
+ }
//鏌ヨ鍒嗙被鍜屾ā鏉�
CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
@@ -798,10 +1425,7 @@
List<SheetRowData> rowDataList = dataSet.getRowData();
//鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
- CodeClassifyTemplateVO templateVO = new CodeClassifyTemplateVO();
- /** if (!templateService.checkChildHasSameTemplate(classifyFullInfo.getCurrentClassifyVO().getOid())) {
- throw new VciBaseException("褰撳墠鐨勫垎绫讳互鍙婁笅绾у垎绫荤殑妯℃澘涓嶇浉鍚�");
- }***/
+ CodeClassifyTemplateVO templateVO ;
//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
//鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇
List<CodeClassifyVO> childClassifyVOs = classifyService.listChildrenClassify(codeClassifyOid, true, classifyAttr, true);
@@ -811,230 +1435,55 @@
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());
+ throw new ServiceException(e.getMessage());
}
+
+ CodeClassifyTemplateVO finalTemplateVO = templateVO;
List<SheetRowData> needowDataList = rowDataList.stream().filter(cbo -> {
String rowIndex = cbo.getRowIndex();
return !errorMap.containsKey(rowIndex);
}).collect(Collectors.toList());
-
- //checkTemplateSync(sheetDataSetList, templateVO,i);
//杩欓噷涓嶉櫎鍘婚粯璁ょ殑灞炴��
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()));
- String idFieldName = attrVOS.stream().filter(s -> VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).findFirst().orElseGet(() -> new CodeClassifyTemplateAttrVO()).getName();
+ fieldIndexMap.put(0,"id");
getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap);
//鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹�
- List<ClientBusinessObject> cboList = new ArrayList<>();
- String fullPath = getFullPath(classifyFullInfo);
- //鎴戜滑闇�瑕佽幏鍙栧埌鎵�鏈夌殑涓嬬骇鍒嗙被鐨刼id鐨勮矾寰勶紝鍥犱负鍚庨潰闇�瑕�
- Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap = getChildClassifyPathMap(classifyFullInfo, fullPath);
- excelToCbo(classifyFullInfo, fieldIndexMap, needowDataList, templateVO, cboList, fullPath, false);
-
-
- Map<String/**涓婚敭**/, CodeClassifyVO> classifyVOMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
- classifyVOMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO());
- pathMap.put("#current#", classifyFullInfo.getCurrentClassifyVO());
-
- //鍒ゆ柇缂栧彿鍦╡xcel閲屾湰韬氨閲嶅鐨�
- Map<String, Long> idCountMap = cboList.stream().collect(Collectors.groupingBy(ClientBusinessObject::getId, Collectors.counting()));
- List<String> repeatIdList = new ArrayList<>();
- idCountMap.forEach((id, count) -> {
- if (count > 1) {
- repeatIdList.add(id);
+ 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) + ",鏈兘鏌ヨ鍒扮浉鍏虫暟鎹��");
}
- });
- if (!CollectionUtils.isEmpty(repeatIdList)) {
- cboList.stream().filter(s -> repeatIdList.contains(s.getId())).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).forEach(rowIndex -> {
- errorMap.put(rowIndex, "缂栧彿鍦ㄥ綋鍓峞xcel涓噸澶�;");
- });
- }
- //鎴戜滑闇�瑕佸垽鏂繖浜涘垎绫荤殑妯℃澘鏄笉鏄竴鏍风殑锛屽彧闇�瑕佹牎楠岋紝涓嶇敤鑾峰彇
- //妫�鏌ュ垎绫荤殑璺緞
- checkClassifyPathInHistory(cboList, errorMap, pathMap, childOidPathMap);
-
- //妫�鏌ヨ鍒�
- Map<String/**鍒嗙被涓婚敭**/, String/**瑙勫垯涓婚敭**/> ruleOidMap = new ConcurrentHashMap<String, String>();
- List<String> unExistRuleClassifyOidList = new CopyOnWriteArrayList<>();
- checkRuleOidInHistory(classifyVOMap, ruleOidMap, unExistRuleClassifyOidList);
- //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
-
- //鎴戜滑鏍规嵁鍑洪敊鐨勫垎绫荤殑涓婚敭锛屽幓鎵捐鍙�
- if (!CollectionUtils.isEmpty(unExistRuleClassifyOidList)) {
- cboList.stream().forEach(cbo -> {
- if (unExistRuleClassifyOidList.contains(cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD))) {
- String row_index = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- errorMap.put(row_index, errorMap.getOrDefault(row_index, "") + ";鏍规嵁鍒嗙被璺緞瀵瑰簲鐨勫垎绫伙紝娌℃湁璁剧疆缂栫爜瑙勫垯");
- }
- });
- }
-
- //鍒ゆ柇蹇呰緭椤�
- batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap);
-
- //鏈夐檺鏍¢獙缂栫爜鏄惁瀛樺湪
- batchCheckIdExistOnOrder(templateVO, cboList, errorMap);
-
- //boolean
- reSwitchBooleanAttrOnOrder(attrVOS, cboList);
-
- // 鏋氫妇鐨勫唴瀹归渶瑕佹牴鎹悕绉拌浆鎹负鏋氫妇鐨勫��
- batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap);
-
- batchSwitchReferAttrOnOrder(attrVOS, cboList, errorMap);
- //6.澶勭悊鍒嗙被娉ㄥ叆
- batchSwitchClassifyAttrOnOrder(attrVOS, cboList, classifyFullInfo,true);
-
- //璁剧疆榛樿鍊�
- batchSwitchAttrDefault(attrVOS, cboList);
- //7.澶勭悊缁勫悎瑙勫垯
- batchSwitchComponentAttrOnOrder(attrVOS, cboList);
- //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, "") + ";鍦ㄥ綋鍓峞xcel鏂囦欢涓叧閿睘鎬ч噸澶�");
- });
- }
- if (!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)) {
- keyAttrRepeatRowIndexList.stream().forEach(rowIndex -> {
- errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅");
- });
- }
- //4.鏍¢獙瑙勫垯
- batchCheckVerifyOnOrder(attrVOS, cboList, errorMap);
-
- //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
- batchSwitchDateAttrOnOrder(attrVOS, cboList, errorMap);
- if (CollectionUtils.isEmpty(ruleOidMap.values())) {
- throw new VciBaseException("瀵煎叆鐨勬暟鎹墍閫夋嫨鐨勫垎绫婚兘娌℃湁璁剧疆缂栫爜瑙勫垯");
- }
- Map<String, CodeRuleVO> ruleVOMap = ruleService.listCodeRuleByIds(ruleOidMap.values(), true).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
- //鏍¢獙缂栫爜瑙勫垯鍜岀爜娈垫槸鍚︽纭�
- Map<String, List<String>> ruleRowIndexMap = new ConcurrentHashMap<>();
- checkSecLengthInHistory(cboList, classifyVOMap, ruleVOMap, ruleOidMap, errorMap, ruleRowIndexMap);
- ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
- List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
- List<ClientBusinessObject> thisCbos = cboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
-//鎴戜滑闇�瑕佸厛鏌ヨ涓�涓嬶紝鍐呭鏄惁宸茬粡瀛樺湪
- if(!CollectionUtils.isEmpty(thisCbos)){
- List<String> existIds = new ArrayList<>();
- VciBaseUtil.switchCollectionForOracleIn(thisCbos).stream().forEach(cbos -> {
- List<CodeAllCode> codeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getCodeRuleOid, ruleOid)
- .notIn(CodeAllCode::getId,cbos.stream().map(s -> s.getId()).collect(Collectors.toSet()).toArray(new String[0]))
- .notIn(CodeAllCode::getLcStatus,CodeAllCodeLC.TASK_BACK.getValue() + "','" + CodeAllCodeLC.OBSOLETED.getValue())
- );
- existIds.addAll(Optional.ofNullable(codeAllCodeList).orElseGet(() -> new ArrayList<>()).stream().map(s -> {
- String id = s.getId();
- if (StringUtils.isBlank(id)) {
- id = s.getId();
- }
- return id;
- }).collect(Collectors.toList()));
- });
- List<String> existIdCbos = thisCbos.stream().filter(s -> {
- String id = s.getId();
- if (StringUtils.isBlank(id)) {
- id = s.getAttributeValue("id");
- }
- return existIds.contains(id);
- }).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toList());
- if (!CollectionUtils.isEmpty(existIdCbos)) {
- thisCbos = thisCbos.stream().filter(s -> {
- String id = s.getId();
- if (StringUtils.isBlank(id)) {
- id = s.getAttributeValue("id");
- }
- return !existIdCbos.contains(id);
- }).collect(Collectors.toList());
- existIdCbos.stream().forEach(rowIndex -> {
- errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";銆�" + idFieldName + "銆戝湪绯荤粺涓凡缁忚鍗犵敤");
- });
- }
+ excelToCboEdit(fieldIndexMap, sheetRowData, orderDTO, cbosB.get(0));
+ orderDTO.setCopyFromVersion(orderDTO.getOid());
+ orderDTO.setOid(null);
+ try {
+ mdmEngineService.upSaveCode(orderDTO);
+ } catch (Throwable e) {
+ log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
+ errorMap.put(sheetRowData.getRowIndex(), ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage());
}
- });
-
- 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) {
- isExport=true;
- createRedisDatas(uuid + "-error", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, errorMap, false);
+ isExport = true;
}
- createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, templateVO);
- 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(templateVO.getCodeclassifyoid(), templateVO, needSaveCboList, resembleMap, btmtypeid, dataResembleVOS);
- if (resembleMap.size() > 0) {
- if (!CollectionUtils.isEmpty(dataResembleVOS)) {
- bladeRedis.set(uuid + "-resemble-data", dataResembleVOS);
- createRedisDatas(uuid + "-resemble", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, resembleMap, false);
- }
- }
- //鐢熸垚class缂撳瓨
- Map<String, String> rowIndexClsOidMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t.getAttributeValue(CODE_CLASSIFY_OID_FIELD)));
- createRedisByCodeClassify(uuid + "-class",templateVO,dataSet,fieldIndexMap,true);
- //鑾峰彇缂栫爜锛屾煡璇㈠湪绯荤粺涓槸鍚﹁鍏朵粬鐨勫紩鐢ㄤ簡
- //鎺掗櫎閿欒鐨勶紝鍓╀笅姝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;
- }
+ createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, finalTemplateVO);
- List<String> needRowIndexList = needSaveCboList.stream().filter(s -> errorMap.containsKey(s.getAttributeValue(IMPORT_ROW_INDEX))).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toList());
- if (isExport||newErrorMap.size() > 0) {
- createRedisDatas(uuid + "-ok", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap, true);
- } else {
- List<BaseModel> dataCBOIdList=new ArrayList<>();
- //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
- List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList;
- CodeClassifyTemplateVO finalTemplateVO = templateVO;
- ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
- //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
- List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
- List<ClientBusinessObject> thisCbos = finalNeedSaveCboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
- List<BaseModel> dataCBOList=new ArrayList<>();
- thisCbos.stream().forEach(clientBusinessObject -> {
- BaseModel baseModel=new BaseModel();
- BeanUtil.convert(clientBusinessObject,baseModel);
- baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject));
- dataCBOList.add(baseModel);
- dataCBOIdList.add(baseModel);
- });
-
- if (!CollectionUtils.isEmpty(thisCbos)) {
- try {
- productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, dataCBOList);
- } catch (Throwable e) {
- log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
- thisCbos.stream().forEach(cbo -> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡");
- });
- }
- }
- });
- engineService.batchSaveSelectChar(templateVO, dataCBOIdList);
- }
}
String excelFileName="";
if(isExport&&!CollectionUtils.isEmpty(shetNameMap)) {
@@ -1054,13 +1503,26 @@
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));
}
- if(isCreateUUid){
- codeImProtRusultVO.setRedisUuid(uuid);
- }
-
return codeImProtRusultVO;
}
+ /*private void converBaseModels(List<ClientBusinessObject> clientBusinessObjects,List<BaseModel>dataCBOList){
+ clientBusinessObjects.stream().forEach(clientBusinessObject -> {
+ BaseModel baseModel=new BaseModel();
+ BeanUtil.convert(clientBusinessObject,baseModel);
+ Map<String,String> dataMap=new HashMap<>();
+ clientBusinessObject.getHisAttrValList()
+ baseModel.setData(VciBaseUtil.objectToMapString(baseModel));
+
+ AttributeValue[] newAttributeValue= clientBusinessObject.getNewAttrValList();
+ dataCBOList.add(baseModel);
+ });
+
+ }*/
/***
* 浠巈xecl閲屾瀯寤哄璞�
@@ -1101,7 +1563,6 @@
* @param currentTemplateVO
* @param templateColumnVOMap
*/
-
private void createTemplate(CodeClassifyTemplateVO currentTemplateVO,Map<String,List<ColumnVO>>templateColumnVOMap){
List<CodeClassifyTemplateAttrVO> templateAttrVOS = currentTemplateVO.getAttributes().stream().filter(s ->
@@ -1212,7 +1673,6 @@
}
-
/***
* 鎵归噺澶勭悊鐢宠鏁版嵁
* @param orderDTO
@@ -1220,140 +1680,150 @@
* @param dataSet
* @return
*/
- private String batchImportCodes(CodeOrderDTO orderDTO,CodeClassifyTemplateVO templateVO,SheetDataSet dataSet,Map<String,String> errorMap,boolean isEnumType){
+ private String batchImportCodes(CodeOrderDTO orderDTO,CodeClassifyTemplateVO templateVO,SheetDataSet dataSet,Map<String,String> errorMap,boolean isEnumType) throws Exception {
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();
+ String uuid = "";
+ try {
+ 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> attrVOS = templateVO.getAttributes().stream().filter(s ->
+ !DEFAULT_ATTR_LIST.contains(s.getId()) &&
+ ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
+ ).collect(Collectors.toList());
+ Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
+ List<String> titleRowData = dataSet.getColName();
+ 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);
+ //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜�
+ 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) + "銆戣繖浜涘睘鎬у湪鍒楄〃涓病鏈夋壘鍒�");
}
- }
- //鎺掗櫎閿欒鐨勶紝鍓╀笅姝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="";
+ 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,false,errorMap);
+ Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
+ Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
+ if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
+ selfRepeatRowIndexList.stream().forEach(rowIndex->{
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍦ㄥ綋鍓嶅鐞嗙殑鏁版嵁鏂囦欢涓叧閿睘鎬ч噸澶�" );
+ });
+ }
+ 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);
+ 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="";
+ final BladeUser user = AuthUtil.getUser();
+ //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
+ needSaveCboList = cboList.stream().filter(cbo -> {
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ return !newErrorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
- if (!CollectionUtils.isEmpty(needSaveCboList)) {
- //9.鎴戜滑澶勭悊涓氬姟鏁版嵁
- //鐢熸垚缂栫爜鐨勫唴瀹�
- 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());
- });
- try {
- codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList);
- //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
- engineService.batchSaveSelectChar(templateVO, dataCBOList);
- } catch (Exception e) {
- e.printStackTrace();
- log.error("鎵逛簡鐢宠鏃跺け璐�");
+ if (!CollectionUtils.isEmpty(needSaveCboList)) {
+ //9.鎴戜滑澶勭悊涓氬姟鏁版嵁
+ //鐢熸垚缂栫爜鐨勫唴瀹�
+ 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());
+ });
+ try {
+ codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList,user);
+ //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
+ engineService.batchSaveSelectChar(templateVO, dataCBOList);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("鎵归噺鐢宠鏃跺け璐�");
+ throw e;
+ }
}
}
- }
- if(!isCreateUUid){
- return uuid="";
+ if(!isCreateUUid){
+ return uuid="";
+ }
+ saveLogUtil.operateLog("鎵归噺鐢宠缂栫爜",false, StringUtil.format("鎵归噺瀵煎叆鐢宠鎴愬姛鍏眥}鏉℃暟鎹紝鐢熸垚鐨勭爜鍊煎涓嬨�恵}銆�",codeList.size(),codeList));
+ }catch (Exception e){
+ saveLogUtil.operateLog("鎵归噺鐢宠缂栫爜",true,e.toString());
+ throw e;
}
return uuid;
}
@@ -1362,8 +1832,7 @@
public List<CodeImportTemplateVO> gridclassifys(String redisOid) {
List<CodeImportTemplateVO> codeImportTemplateVOs=new ArrayList<>();
VciBaseUtil.alertNotNull(redisOid,"鍒嗙被",redisOid,"鍒嗙被缂撳瓨涓婚敭");
-
- List<CodeImportTemplateVO> redisServiceCacheObjects=bladeRedis.lRange(redisOid,0,-1);
+ List<CodeImportTemplateVO> redisServiceCacheObjects=bladeRedis.get(redisOid);
if(redisServiceCacheObjects!=null){
codeImportTemplateVOs= redisServiceCacheObjects;
}
@@ -1379,7 +1848,7 @@
@Override
public DataGrid<Map<String, String>> gridDatas(String codeClssifyOid, String redisOid) {
VciBaseUtil.alertNotNull(redisOid,"瀵煎叆鐩镐技鏁版嵁",redisOid,"鏁版嵁缂撳瓨涓婚敭");
- List<CodeImprotDataVO> codeImprotDataVOs = bladeRedis.lRange(redisOid+"-"+codeClssifyOid,0,-1);
+ List<CodeImprotDataVO> codeImprotDataVOs = bladeRedis.get(redisOid+"-"+codeClssifyOid);
// redisService.getCacheList(redisOid+"-"+codeClssifyOid);
CodeImprotDataVO codeImprotDataVO=new CodeImprotDataVO();
if(!CollectionUtils.isEmpty(codeImprotDataVOs)){
@@ -1413,7 +1882,7 @@
@Override
public DataGrid<Map<String,String>> gridRowResemble(String oid,String redisOid){
VciBaseUtil.alertNotNull(redisOid,"瀵煎叆鐩镐技鏁版嵁",redisOid,"鏁版嵁缂撳瓨涓婚敭");
- List<DataResembleVO> codeImprotDataVOs = bladeRedis.lRange(redisOid,0,-1);;
+ List<DataResembleVO> codeImprotDataVOs = bladeRedis.get(redisOid);;
DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
List<Map<String, String>> dataList = new ArrayList<>();
@@ -1432,9 +1901,238 @@
return dataGrid;
}
+ /**
+ * 瀵煎嚭涓婚搴撶殑鏁版嵁
+ *
+ * @param exportAttrDTO 瀵煎嚭鐩稿叧鐨勯厤缃紝蹇呴』瑕佹湁涓婚搴撳垎绫荤殑涓婚敭
+ * @return 瀵煎嚭鐨別xcel鐨勬枃浠�
+ */
+ @Override
+ public String exportCode(CodeExportAttrDTO exportAttrDTO) {
+ VciBaseUtil.alertNotNull(exportAttrDTO,"瀵煎嚭鐨勯厤缃�",exportAttrDTO.getCodeClassifyOid(),"涓婚搴撳垎绫荤殑涓婚敭");
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(exportAttrDTO.getCodeClassifyOid());
+ //鑾峰彇鏈�鏂扮殑妯℃澘
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(exportAttrDTO.getCodeClassifyOid());
+ //鍏堟煡璇㈡暟鎹�
+ String btmTypeId = classifyFullInfo.getTopClassifyVO().getBtmTypeId();
+ Map<String, String> conditionMap = exportAttrDTO.getConditionMap();
+ 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)) + ")");
+ }
+ PageHelper pageHelper = new PageHelper(exportAttrDTO.getLimit()==null?-1:exportAttrDTO.getLimit());
+ pageHelper.setPage(exportAttrDTO.getPage()==null?1:exportAttrDTO.getPage());
+ pageHelper.setSort(exportAttrDTO.getSort());
+ pageHelper.setOrder(exportAttrDTO.getOrder());
+
+ pageHelper.addDefaultDesc("createTime");
+ conditionMap.put("codeclsfpath","*" + exportAttrDTO.getCodeClassifyOid() + "*");
+ 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);
+ }
+
+ String countSql = "select count(*) from " + tableName +" where 1=1" +
+ " and lastr = '1'" +
+ " and lastv='1'" +
+ " and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%'";
+ //鍏堟煡璇㈡�绘暟
+ int total = 0;
+ if(exportAttrDTO.getEndPage()!=null && exportAttrDTO.getEndPage()>0
+ &&exportAttrDTO.getPage() !=null && exportAttrDTO.getPage() >0
+ &&exportAttrDTO.getEndPage()>exportAttrDTO.getPage()){
+ //浠庡灏戦〉鍒板灏戦〉鐨勬煡璇㈡柟寮忥紝
+ String countPageSql = "select count(*) from (select * FROM " + tableName +" where 1=1" +
+ " and lastr = '1'" +
+ " and lastv='1'" +
+ " and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%' {}";
+ for(int i = exportAttrDTO.getPage() ;i <= exportAttrDTO.getEndPage();i++){
+ PageHelper thisPage = new PageHelper(exportAttrDTO.getLimit()==null?-1:exportAttrDTO.getLimit());
+ thisPage.setPage(exportAttrDTO.getPage()==null?1:exportAttrDTO.getPage());
+ thisPage.setSort(exportAttrDTO.getSort());
+ thisPage.setOrder(exportAttrDTO.getOrder());
+ thisPage.addDefaultDesc("createTime");
+ total += commonsMapper.queryCountBySql(StringUtil.format(countPageSql," limit " + exportAttrDTO.getLimit() +" offset "+ i +")subquery;"));
+ }
+ }else{
+ total = commonsMapper.queryCountBySql(countSql);
+ }
+ List<String> selectFieldList = new ArrayList<>();
+ if(!CollectionUtils.isEmpty(exportAttrDTO.getAttrIdIndexMap())){
+ selectFieldList = exportAttrDTO.getAttrIdIndexMap().values().stream().map(s->s.toLowerCase(Locale.ROOT)).collect(Collectors.toList());
+ }else{
+ selectFieldList = templateVO.getAttributes().stream().filter(s->VciBaseUtil.getBoolean(s.getFormDisplayFlag())
+ ||VciBaseUtil.getBoolean(s.getTableDisplayFlag())).map(s->s.getId().toLowerCase(Locale.ROOT)).collect(Collectors.toList());
+ }
+ //鍙傜収璁╁钩鍙扮洿鎺ユ煡璇㈠氨琛�
+ List<String> finalSelectFieldList = selectFieldList;
+ List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter(
+ s -> StringUtils.isNotBlank(s.getReferBtmId())
+ &&
+ (finalSelectFieldList.size() ==0 || finalSelectFieldList.contains(s.getId().toLowerCase(Locale.ROOT)))
+ ).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(referAttrVOs)){
+ for (int i = 0; i < referAttrVOs.size(); i++) {
+ selectFieldList.add(referAttrVOs.get(i).getId() + ".name");
+ }
+ }
+ List<String> excelNameList = new CopyOnWriteArrayList<>();
+ String tempFolder = LocalFileUtil.getDefaultTempFolder();
+ if(total>EXPORT_LIMIT){
+ //鍒嗙粍鏉ユ墽琛�
+ int queryCount = (total-total%EXPORT_LIMIT)/EXPORT_LIMIT;
+ if(total%EXPORT_LIMIT>0){
+ queryCount = queryCount + 1;
+ }
+ List<Integer> indexList = new ArrayList<>();
+ for (int i = 0; i <queryCount ; i++) {
+ indexList.add(i);
+ }
+ Map<String, String> finalConditionMap = conditionMap;
+ //骞惰鏌ヨ鐪嬬湅
+ //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ indexList.stream().forEach(index->{
+ //绾跨▼鐨勬柟寮忥紝鎵�浠ラ渶瑕佽缃綋鍓嶇敤鎴�
+ //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+ PageHelper thisPage = new PageHelper(EXPORT_LIMIT);
+ thisPage.setPage(index+1);
+ thisPage.setSort(exportAttrDTO.getSort());
+ thisPage.setOrder(exportAttrDTO.getOrder());
+ thisPage.addDefaultDesc("createTime");
+ selectDataAndExportExcelName(btmTypeId, finalConditionMap,thisPage,finalSelectFieldList,
+ classifyFullInfo,templateVO,exportAttrDTO,
+ excelNameList,tempFolder,index);
+ });
+ }else{
+ pageHelper.setLimit(total);
+ pageHelper.setPage(1);
+ selectDataAndExportExcelName(btmTypeId,conditionMap,pageHelper,finalSelectFieldList,
+ classifyFullInfo,templateVO,exportAttrDTO,
+ excelNameList,tempFolder,1);
+ }
+ if(excelNameList.size() ==0){
+ throw new VciBaseException("娌℃湁鏁版嵁鍙互琚鍑�");
+ }
+ if(excelNameList.size() == 1){
+ return excelNameList.get(0);
+ }
+ //鏄涓紝鎴戜滑闇�瑕佹墦鎴愬帇缂╁寘
+ String zipFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + classifyFullInfo.getCurrentClassifyVO().getId() + "_" + classifyFullInfo.getCurrentClassifyVO().getName() + "_瀵煎嚭_" + excelNameList.size()+".zip";
+ VciZipUtil zipUtil = new VciZipUtil();
+ File file = new File(tempFolder);
+ zipUtil.addFileToZip(file,zipFileName);
+ File[] files = file.listFiles();
+ for (int i = 0; i < files.length; i++) {
+ LocalFileUtil.deleteTempFile(files[i],false);
+ }
+ LocalFileUtil.deleteTempFile(file,true);
+ return zipFileName;
+ }
+
+ /**
+ * 鏌ヨ鏁版嵁骞跺鍑哄埌excel
+ * @param btmTypeId 涓氬姟绫诲瀷
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉
+ * @param selectFieldList 鏌ヨ鐨勫瓧娈�
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param templateVO 妯℃澘鐨勪俊鎭�
+ * @param exportAttrDTO 瀵煎嚭鐨勫睘鎬�
+ * @param excelNameList excel鐨勬枃浠跺悕绉�
+ * @param tempFolder 涓存椂鏂囦欢澶�
+ * @param excelIndex excel鐨勯『搴�
+ */
+ private void selectDataAndExportExcelName(String btmTypeId, Map<String, String> conditionMap, PageHelper pageHelper, List<String> selectFieldList,
+ CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, CodeExportAttrDTO exportAttrDTO,
+ List<String> excelNameList, String tempFolder,
+ Integer excelIndex) {
+ DataGrid<Map<String, String>> dataGrid = engineService.queryGrid(btmTypeId, templateVO, conditionMap, pageHelper);
+ if(dataGrid == null || CollectionUtils.isEmpty(dataGrid.getData())){
+ return;
+ }
+ //杞崲鏁版嵁
+ List<Map<String, String>> dataMap = dataGrid.getData();
+ //灏佽鏌ヨ鍑烘潵鐨勬暟鎹�
+ engineService.wrapperData(dataMap, templateVO, selectFieldList,false);
+ //modify by weidy@2022-09-27
+ //鍥犱负鍦ㄥ垪琛ㄥ拰琛ㄥ崟鐨勬樉绀虹殑鏃跺�欙紝鎴戜滑鐨勫紑鍏崇被鍨嬮〉闈細澶勭悊锛屼絾鏄湪瀵煎嚭鐨勬椂鍊欙紝鎴戜滑闇�瑕佸皢true鍜宖alse閮芥浛鎹㈡垚涓枃
+ engineService.wrapperBoolean(dataMap,templateVO);
+ Map<String, CodeClassifyTemplateAttrVO> attrVOMap = templateVO.getAttributes().stream().filter(s->selectFieldList.contains(s.getId().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ Map<Integer, String> attrIdIndexMap = exportAttrDTO.getAttrIdIndexMap();
+ if (CollectionUtils.isEmpty(attrIdIndexMap)) {
+ attrIdIndexMap = templateVO.getAttributes().stream().filter(s->selectFieldList.contains(s.getId().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getOrderNum(), t -> t.getId()));
+ }
+ List<Integer> indexList = attrIdIndexMap.keySet().stream().sorted().collect(Collectors.toList());
+
+ String excelName = tempFolder + File.separator +
+ classifyFullInfo.getCurrentClassifyVO().getId() + "_" + classifyFullInfo.getCurrentClassifyVO().getName() + "_瀵煎嚭_" + excelIndex + ".xls";
+ try {
+ new File(excelName).createNewFile();
+ } catch (Throwable e) {
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelName}, e);
+ }
+ excelNameList.add(excelName);
+ List<WriteExcelData> excelDataList = new ArrayList<>();
+ Workbook workbook = new HSSFWorkbook();
+ for (int i = 0; i < indexList.size(); i++) {
+ String attrId = attrIdIndexMap.get(indexList.get(i)).toLowerCase(Locale.ROOT);
+ if (attrVOMap.containsKey(attrId)) {
+ CodeClassifyTemplateAttrVO attrVO = attrVOMap.get(attrId);
+ Object text = attrVO.getName();
+ 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};
+ Map<Integer, String> finalAttrIdIndexMap = attrIdIndexMap;
+ dataMap.stream().forEach(data -> {
+ rowIndex[0]++;
+ for (int i = 0; i < indexList.size(); i++) {
+ Integer index = indexList.get(i);
+ String attrId = finalAttrIdIndexMap.get(index).toLowerCase(Locale.ROOT);
+ 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, data.getOrDefault(attrId, "")));
+ }
+ }
+ });
+ WriteExcelOption excelOption = new WriteExcelOption(excelDataList);
+ ExcelUtil.writeDataToFile(excelName, excelOption);
+ }
+
+ /**
+ * 鐩镐技椤规煡璇㈠嚭鏉ヤ箣鍚庡啀鐐瑰嚮纭鏃惰皟鐢ㄧ殑
+ * @param codeImprotSaveDatVOList
+ * @param classifyAttr
+ * @param isImprot
+ * @return
+ */
@Override
public R batchImportData(List<CodeImprotSaveDatVO> codeImprotSaveDatVOList, String classifyAttr, boolean isImprot) {
- List<BaseModel> dataCBOList=new ArrayList<>();
+ WriteExcelOption eo = new WriteExcelOption();
+ AtomicBoolean success= new AtomicBoolean(true);
+ AtomicReference<CodeClassifyTemplateVO> codeClassifyTemplateVO = new AtomicReference<>();
codeImprotSaveDatVOList.stream().forEach(codeImprotSaveDatVO -> {
List<SheetRowData> rowDataList = new ArrayList<>();
List<ClientBusinessObject>cboList=new ArrayList<>();
@@ -1463,29 +2161,43 @@
log.info("鍒嗙被锛�"+classifyFullInfo.getCurrentClassifyVO().getName()+"鏁版嵁:"+codeImprotSaveDatVO.getDataList().size());
// CodeClassifyTemplateVO codeClassifyTemplateVO= engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
- CodeClassifyTemplateVO codeClassifyTemplateVO= templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+ codeClassifyTemplateVO.set(templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()));
//瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
//闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
- List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.getAttributes().stream().filter(s ->
- !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
+ List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.get().getAttributes().stream().filter(s ->
+ !DEFAULT_ATTR_LIST.contains(s.getId()) &&
+ ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
).collect(Collectors.toList());
String fullPath = getFullPath(classifyFullInfo);
- excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList, codeClassifyTemplateVO,cboList,fullPath,!isImprot);
- Map<String,String> errorMap=new HashMap<>();
+ excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList, codeClassifyTemplateVO.get(),cboList,fullPath,!isImprot);
+ Map<String,String> errorMap=new ConcurrentHashMap<>();
+ Map<String/**璺緞**/, CodeClassifyVO> pathMap=new HashMap<>() ;
+ //鏍¢獙缂栫爜瑙勫垯鍜岀爜娈垫槸鍚︽纭�
+ Map<String, List<String>> ruleRowIndexMap = new ConcurrentHashMap<>();
+ Map<String, CodeRuleVO> ruleVOMap =new ConcurrentHashMap<>();
if(isImprot) {
Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap = getChildClassifyPathMap(classifyFullInfo, fullPath);
//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
//鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇
List<CodeClassifyVO> childClassifyVOs = classifyService.listChildrenClassify(orderDTO.getCodeClassifyOid(), 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));
+ pathMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getPath().startsWith("#") ? s.getPath().substring(1) : s.getPath(), t -> t));
Map<String/**涓婚敭**/, CodeClassifyVO> classifyVOMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
classifyVOMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO());
pathMap.put("#current#", classifyFullInfo.getCurrentClassifyVO());
//鎴戜滑闇�瑕佸垽鏂繖浜涘垎绫荤殑妯℃澘鏄笉鏄竴鏍风殑锛屽彧闇�瑕佹牎楠岋紝涓嶇敤鑾峰彇
//妫�鏌ュ垎绫荤殑璺緞
checkClassifyPathInHistory(cboList, errorMap, pathMap, childOidPathMap);
+ //妫�鏌ヨ鍒�
+ Map<String/**鍒嗙被涓婚敭**/, String/**瑙勫垯涓婚敭**/> ruleOidMap = new ConcurrentHashMap<String, String>();
+ List<String> unExistRuleClassifyOidList = new CopyOnWriteArrayList<>();
+ checkRuleOidInHistory(classifyVOMap, ruleOidMap, unExistRuleClassifyOidList);
+ // TODO 鏀圭敤oid鏌ヨ鐨勶紝杩欏効涓嶈鐢╥d
+ ruleVOMap = ruleService.listCodeRuleByOids(ruleOidMap.values()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+
+ checkSecLengthInHistory(cboList, classifyVOMap, ruleVOMap, ruleOidMap, errorMap, ruleRowIndexMap);
}
+
//鍒嗙被娉ㄥ叆
batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,isImprot);
//boolean
@@ -1504,49 +2216,96 @@
//鏈�鍚庡紕缁勫悎瑙勫垯
batchSwitchComponentAttrOnOrder(attrVOS,cboList);
//3.鍒ゆ柇鍏抽敭灞炴��
- CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO, cboList);
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO.get(), cboList,false,errorMap);
Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
+ errorMap.put(rowIndex,"鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex,""));
});
}
//4.鏍¢獙瑙勫垯
batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
-
- //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
- List<ClientBusinessObject>needSaveCboList = cboList.stream().filter(cbo -> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- return !errorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
-
- log.info("鍒嗙被锛�"+classifyFullInfo.getCurrentClassifyVO().getName()+"鏁版嵁:"+needSaveCboList.size());
- if (!CollectionUtils.isEmpty(needSaveCboList)) {
-// List<BaseModel> dataCBOList=new ArrayList<>();
- needSaveCboList.stream().forEach(clientBusinessObject -> {
- BaseModel baseModel=new BaseModel();
- BeanUtil.convert(clientBusinessObject,baseModel);
- baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject));
- dataCBOList.add(baseModel);
-// allNeedSaveCboList.add(baseModel);
- });
- try {
- //9.鎴戜滑澶勭悊涓氬姟鏁版嵁
- if (isImprot) {
- productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, null, dataCBOList);
- }else {
- productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
+ if(isImprot){
+ List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ return !errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+ List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList;
+ Map<String, CodeRuleVO> finalRuleVOMap = ruleVOMap;
+ // TODO锛� 澶氱嚎绋嬫祦濂楀绾跨▼娴侊紝鏈夊潙锛屾垜鎶婅繖鍎挎敼鎴愬崟绾跨▼浜�
+ final BladeUser user = AuthUtil.getUser();
+ ruleRowIndexMap.keySet().stream().forEach(ruleOid -> {
+ List <BaseModel>dataCBOList=new CopyOnWriteArrayList<>();
+ List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
+ List<ClientBusinessObject> thisCbos = needSaveCboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(thisCbos)) {
+ thisCbos.stream().forEach(clientBusinessObject -> {
+ BaseModel baseModel = new BaseModel();
+ BeanUtil.convert(clientBusinessObject, baseModel);
+ dataCBOList.add(baseModel);
+ });
+ try {
+ productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO.get(), finalRuleVOMap.get(ruleOid), null, dataCBOList, user);
+ } catch (Throwable e) {
+ //success=false;
+ log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
+ thisCbos.stream().forEach(cbo -> {
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage());
+ });
+ }
}
- } catch (Exception e) {
- e.printStackTrace();
+ engineService.batchSaveSelectChar(codeClassifyTemplateVO.get(), dataCBOList);
+ });
+ }else {
+ final BladeUser user = AuthUtil.getUser();
+ List<BaseModel> dataCBOList=new ArrayList<>();
+ List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ return !errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+ log.info("鍒嗙被锛�" + classifyFullInfo.getCurrentClassifyVO().getName() + "鏁版嵁:" + needSaveCboList.size());
+ if (!CollectionUtils.isEmpty(needSaveCboList)) {
+ needSaveCboList.stream().forEach(clientBusinessObject -> {
+ BaseModel baseModel = new BaseModel();
+ BeanUtil.convert(clientBusinessObject, baseModel);
+ dataCBOList.add(baseModel);
+ });
+ try {
+ productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO.get(), ruleVO, orderDTO.getSecDTOList(), dataCBOList,user);
+ } catch (Exception e) {
+ log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
+ needSaveCboList.stream().forEach(cbo -> {
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage());
+ });
+ }
+ //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
+ engineService.batchSaveSelectChar(codeClassifyTemplateVO.get(), dataCBOList);
}
}
- //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
- engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList);
+ if(errorMap.size()>0) {
+ success.set(false);
+ LinkedList<WriteExcelData> excelDataList = new LinkedList<>();
+ excelDataList.add(new WriteExcelData(0, 0, "閿欒淇℃伅"));
+ final int[] index = {1};
+ errorMap.forEach((key,v)->{
+ excelDataList.add(new WriteExcelData(index[0]++, 0, "绗�"+(Integer.parseInt(key)+1)+"琛屾暟鎹細"+v));
+ });
+ eo.addSheetDataList(codeClassifyTemplateVO.get().getName() + "瀵煎叆妯℃澘", excelDataList);
+ }
});
- return R.success(isImprot?"鎵归噺鍘嗗彶瀵煎叆鎴愬姛":"鎵归噺鐢宠鎴愬姛");
+ if(!success.get()){
+ String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + (isImprot?"鎵归噺鍘嗗彶閿欒淇℃伅.xls":"鎵归噺鐢宠閿欒淇℃伅.xls");
+ ExcelUtil.writeDataToFile(excelName,eo);
+ saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true, StringUtil.format("閿欒淇℃伅锛歿}",JSON.toJSONString(eo.getWriteDataMap())));
+ return R.fail(excelName);
+ }else {
+ saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",false, StringUtil.format("瀵煎叆鍒板垎绫粄}涓紝瀵煎叆鎴愬姛鎬绘暟涓猴細{}", JSON.toJSONString(codeClassifyTemplateVO), Func.isEmpty(codeImprotSaveDatVOList.get(0).getDataList().size())));
+ return R.success(isImprot ? "鎵归噺鍘嗗彶瀵煎叆鎴愬姛" : "鎵归噺鐢宠鎴愬姛");
+ }
}
/***
@@ -1595,8 +2354,8 @@
* @return 鏈夐敊璇俊鎭殑excel
*/
@Override
- public void batchSyncApplyCode(CodeOrderDTO orderDTO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) {
- Map<String,String> errorMap=new HashMap<>();
+ public void batchSyncApplyCode(CodeOrderDTO orderDTO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs,boolean isCodeOrGroupCode) {
+ Map<String,String> errorMap=new ConcurrentHashMap<>();
VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�");
CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
//瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
@@ -1615,8 +2374,10 @@
//鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑
//checkTemplateSync(sheetDataSetList,templateVO);
- //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
- List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
+ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁鍏锋湁鍒嗙被娉ㄥ叆鐨勬墠杩囨护鍑烘潵
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(
+ s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
+ ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
).collect(Collectors.toList());
Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
List<String> titleRowData = dataObjectVO.getColName();
@@ -1628,7 +2389,8 @@
&& 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 message=unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName).collect(Collectors.joining(SERIAL_UNIT_SPACE));
+ throw new VciBaseException("銆�" + message + "銆戣繖浜涘睘鎬у湪excel涓病鏈夋壘鍒�");
}
List<ClientBusinessObject> cboList = new ArrayList<>();
String fullPath = getFullPath(classifyFullInfo);
@@ -1644,20 +2406,34 @@
//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
//濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
+
+ Map<String,String> errorKeyMap=new HashMap<>();
+ //1.鍒嗙被娉ㄥ叆
+ batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false);
+ //boolean
+ reSwitchBooleanAttrOnOrder(attrVOS,cboList);
+ // cboList.stream().forEach(cbo->{
+ //2.鏍¢獙瑙勫垯
+ batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
+ //3.鏍¢獙鏋氫妇鏄惁姝g‘
+ batchSwitchEnumAttrOnOrder(attrVOS,cboList,errorMap);
+ //4.鏃堕棿鏍煎紡鐨勯獙璇�
+ //4.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
+ batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
+ //5.澶勭悊鍙傜収鐨勬儏鍐�
+ batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
+ //6璁剧疆榛樿鍊�
+ batchSwitchAttrDefault(attrVOS, cboList);
//2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap);
-
-
- /**
- * 鍏抽敭鐔熸倝閿欒鎻愮ず
- */
- Map<String,String> errorKeyMap=new HashMap<>();
-
-
+ //鏈�鍚庡紕缁勫悎瑙勫垯
+ batchSwitchComponentAttrOnOrder(attrVOS,cboList);
//3.鍒ゆ柇鍏抽敭灞炴��
- CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,false,errorKeyMap);
Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
+
+ Map<String,List<String>>keyAttrOkOidTORepeatOidMap= keyResultVO.getKeyAttrOkOidTORepeatOidMap();
if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
selfRepeatRowIndexList.stream().forEach(rowIndex->{
/* //浼犲叆鏁版嵁涔嬮棿鍏抽敭灞炴�х殑鏍¢獙
@@ -1686,23 +2462,13 @@
resultDataObjectDetailDO.setMsg(errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
*/
- errorKeyMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
+ Map<String, List<BaseModel>> indexTODataMap=keyResultVO.getIndexTODataMap();
+ if(indexTODataMap.containsKey(rowIndex)){
+ List<BaseModel> baseModelList= indexTODataMap.get(rowIndex);
+ }
+ errorKeyMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorKeyMap.getOrDefault(rowIndex,""));
});
}
- //鍒嗙被娉ㄥ叆
- batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false);
- //boolean
- reSwitchBooleanAttrOnOrder(attrVOS,cboList);
- // cboList.stream().forEach(cbo->{
- //4.鏍¢獙瑙勫垯
- batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
- //5.鏍¢獙鏋氫妇鏄惁姝g‘
- batchSwitchEnumAttrOnOrder(attrVOS,cboList,errorMap);
- //6.鏃堕棿鏍煎紡鐨勯獙璇�
- //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
- batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
- //7.澶勭悊鍙傜収鐨勬儏鍐�
- batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
//鏍¢獙灞炴�ф槸鍚︽纭敊璇俊鎭�
if(errorMap.size()>0){
String[] newMsg = {""};
@@ -1715,10 +2481,15 @@
sourceOid=codeOidToSystemOidMap.get(oid);
}
String code="";
+ String groupCode="";
String errorid="103";
String mes=errorMap.get(rowIndex);
XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
- resultDataObjectDetailDO.setCode(code);
+ if(isCodeOrGroupCode){
+ resultDataObjectDetailDO.setCode(groupCode);
+ }else{
+ resultDataObjectDetailDO.setCode(code);
+ }
resultDataObjectDetailDO.setId(sourceOid);
resultDataObjectDetailDO.setErrorid(errorid);
resultDataObjectDetailDO.setMsg(mes);
@@ -1740,6 +2511,7 @@
Map<String, List<BaseModel>> indexTodataMap = keyResultVO.getIndexTODataMap();
cboList.stream().forEach(cbo -> {
String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ String msg = errorKeyMap.get(rowIndex);
if (indexTodataMap.containsKey(rowIndex)) {
String oid = cbo.getOid();
String sourceOid = oid;
@@ -1750,43 +2522,58 @@
}
List<BaseModel> newCboList = indexTodataMap.get(rowIndex);
if (!CollectionUtils.isEmpty(newCboList)) {
- BaseModel newCbo= newCboList.get(0);
- String lcstatus =newCbo.getLcStatus();
- String newOid =newCbo.getOid();
- Date ts =newCbo.getTs();
- code=newCbo.getId();
- String lastmodifier=newCbo.getLastModifier();
- if (!lcstatus.equals(CodeDefaultLC.RELEASED.getValue())) {
- newCbo.setOid(newOid);
- newCbo.setLastModifier(lastmodifier);
- newCbo.setId(code);
- newCbo.setTs(ts);
- cbo.setLastModifier(cbo.getLastModifier());
- editBoList.add(newCbo);
+ //澶勭悊鍏抽敭灞炴�ф煡鍑哄鏉$殑璇濓紝鏍规嵁闆嗘垚璋冪敤鐨勫綋鍓嶅垎绫讳唬鍙峰彇褰撳墠鍒嗙被鐨勭爜鍊笺��
+ Map<String/**缂栫爜**/, BaseModel/**閲嶅缂栫爜鏁版嵁**/> classOidTOBaseModelMap = new HashMap<>();
+ newCboList.stream().forEach(baseModel->{
+ String codeclsfid=baseModel.getData().get(CODE_CLASSIFY_OID_FIELD.toLowerCase(Locale.ROOT));
+ classOidTOBaseModelMap.put(codeclsfid,baseModel);
+ });
+ String codeclsfid= classifyFullInfo.getCurrentClassifyVO().getOid();
+ if(classOidTOBaseModelMap.containsKey(codeclsfid)){
+ BaseModel newCbo= classOidTOBaseModelMap.get(codeclsfid);
+ String lcstatus =newCbo.getLcStatus();
+ String newOid =newCbo.getOid();
+ Date ts =newCbo.getTs();
+ code = StringUtils.isBlank(newCbo.getId())?"":newCbo.getId();
+ if(isCodeOrGroupCode) {
+ code=newCbo.getData().getOrDefault("GROUPCODE","");
+ if(StringUtils.isBlank(code)){
+ errorid="1";
+ msg="锛涚敵璇风殑缂栫爜绫诲瀷涓洪泦鍥㈢爜锛岀瓑寰呴泦鍥㈢紪鐮佽祴鍊�";
+ }
+ }
+ String lastmodifier=newCbo.getLastModifier();
+ if (lcstatus!=null&&!lcstatus.equals(CodeDefaultLC.RELEASED.getValue())) {
+ newCbo.setOid(newOid);
+ newCbo.setLastModifier(lastmodifier);
+ newCbo.setTs(ts);
+ cbo.setLastModifier(cbo.getLastModifier());
+ editBoList.add(newCbo);
+ }
+ }else{
+ errorid="205";
+ msg+="锛涚紪鐮佸垯灞炰簬鍏朵粬鍒嗙被銆�";
}
- String mes = errorKeyMap.get(rowIndex);
XMLResultDataObjectDetailDO resultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
resultDataObjectDetailDO.setCode(code);
resultDataObjectDetailDO.setId(sourceOid);
resultDataObjectDetailDO.setErrorid(errorid);
- resultDataObjectDetailDO.setMsg(mes);
+ resultDataObjectDetailDO.setMsg(msg);
+
resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
}
}
});
- //鍏抽敭鐔熸倝鏇存敼
+ //鍏抽敭灞炴�ф洿鏀�
if (!CollectionUtils.isEmpty(editBoList)) {
- engineService.updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmtypeid(),editBoList);//淇濆瓨鏁版嵁
+ engineService.updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(),editBoList);//淇濆瓨鏁版嵁
}
errorMap.putAll(errorKeyMap);
}
}
// });
- //璁剧疆榛樿鍊�
- batchSwitchAttrDefault(attrVOS, cboList);
- //鏈�鍚庡紕缁勫悎瑙勫垯
- batchSwitchComponentAttrOnOrder(attrVOS,cboList);
+
//瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
String rowIndex =cbo.getAttributeValue(IMPORT_ROW_INDEX);
@@ -1799,30 +2586,49 @@
List<String>allNeedSaveCboList=new ArrayList<>();
List<BaseModel> dataCBOList=new ArrayList<>();
+ final BladeUser user = AuthUtil.getUser();
needSaveCboList.stream().forEach(clientBusinessObject -> {
BaseModel baseModel=new BaseModel();
BeanUtil.convert(clientBusinessObject,baseModel);
- baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject));
+ //(VciBaseUtil.objectToMapString(clientBusinessObject));
dataCBOList.add(baseModel);
allNeedSaveCboList.add(baseModel.getOid());
});
try {
- productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
+ List<String>applyGroupCodeIdList=new ArrayList<>();
+ productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList,user);
//濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
engineService.batchSaveSelectChar(templateVO, dataCBOList);
// if(!isProcess){
- needSaveCboList.stream().forEach(needSaveCbo->{
+ dataCBOList.stream().forEach(needSaveCbo->{
+
XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
- resultDataObjectDetailDO.setCode(needSaveCbo.getId());
+ String code=StringUtils.isBlank(needSaveCbo.getId())?" ":needSaveCbo.getId();
+ String groupCode=needSaveCbo.getData().getOrDefault("GROUPCODE"," ");
+ //resultDataObjectDetailDO.setCode(needSaveCbo.getId());
+ String msg="鐢宠缂栫爜鎴愬姛";
String oid=needSaveCbo.getOid();
String sourceOid=oid;
+ applyGroupCodeIdList.add(oid);
if(codeOidToSystemOidMap.containsKey(oid)){
sourceOid=codeOidToSystemOidMap.get(oid);
}
+ if(isCodeOrGroupCode) {
+ if(StringUtils.isBlank(groupCode)){
+ resultDataObjectDetailDO.setErrorid("1");
+ msg="鐢宠鐨勭紪鐮佺被鍨嬩负闆嗗洟鐮侊紝绛夊緟闆嗗洟缂栫爜璧嬪��";
+ }
+ resultDataObjectDetailDO.setCode(groupCode);
+ }else{
+ resultDataObjectDetailDO.setCode(code);
+ resultDataObjectDetailDO.setErrorid("0");
+ }
resultDataObjectDetailDO.setId(sourceOid);
- resultDataObjectDetailDO.setErrorid("0");
- resultDataObjectDetailDO.setMsg("鐢宠缂栫爜鎴愬姛");
+ resultDataObjectDetailDO.setMsg(msg);
resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
+ //澶勭悊浼犻�佺殑鏁版嵁涓叧閿睘鎬ч噸澶嶇殑锛岀洿鎺ユ嬁鍒板凡缁忕敵璇峰埌缂栫爜鐨勬暟鎹紪鐮佺洿鎺ュ皢璧嬬粰鍏抽敭灞炴�ч噸澶嶇殑鏁版嵁
+ LinkedList<XMLResultDataObjectDetailDO> repeatDataObjectDetailDOS=handleApplyDataKeyAttrRepeat(keyAttrOkOidTORepeatOidMap,codeOidToSystemOidMap,needSaveCbo,isCodeOrGroupCode);
+ resultDataObjectDetailDOs.addAll(repeatDataObjectDetailDOS);
});
/* }else{
needSaveCboList.stream().forEach(needSaveCbo->{
@@ -1840,6 +2646,13 @@
});
}*/
+ //鏄惁璋冪敤闆嗗洟鎺ュ彛鐢宠鎺ュ彛
+ if(isCodeOrGroupCode){
+ if(!CollectionUtils.isEmpty(applyGroupCodeIdList)) {
+ this.sendApplyGroupcode(applyGroupCodeIdList, classifyFullInfo.getTopClassifyVO().getId(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue());
+ }
+ }
+
}catch (Throwable e){
e.printStackTrace();
needSaveCboList.stream().forEach(needSaveCbo->{
@@ -1860,15 +2673,62 @@
}
}
+
+ /***
+ *缁欏悓涓�鎵圭敵璇风紪鐮佸瓨鍦ㄥ叧閿睘鎬х殑鏁版嵁璧嬩笂涓�鑷寸紪鐮�
+ * @param keyAttrOkOidTORepeatOidMap 涓�鎵圭敵璇锋暟鎹叧閿睘鎬т竴鑷寸殑閲嶅鏁版嵁鏄犲皠鍏崇郴
+ * @param codeOidToSystemOidMap
+ * @param needSaveCbo
+ * @param isCodeOrGroupCode
+ */
+ private LinkedList<XMLResultDataObjectDetailDO> handleApplyDataKeyAttrRepeat(Map<String,List<String>>keyAttrOkOidTORepeatOidMap,Map<String,String> codeOidToSystemOidMap,BaseModel needSaveCbo,boolean isCodeOrGroupCode){
+ LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs=new LinkedList<>();
+ String oid=needSaveCbo.getOid();
+ if(keyAttrOkOidTORepeatOidMap.containsKey(oid)){
+ List<String> repeatOidList= keyAttrOkOidTORepeatOidMap.get(oid);
+ if(!CollectionUtils.isEmpty(repeatOidList)){
+ String sourceNewOid=needSaveCbo.getOid();
+ String sourceOid=sourceNewOid;
+ if(codeOidToSystemOidMap.containsKey(oid)){
+ sourceOid=codeOidToSystemOidMap.get(oid);
+ }
+ String code=StringUtils.isBlank(needSaveCbo.getId())?" ":needSaveCbo.getId();
+ String groupCode=needSaveCbo.getData().getOrDefault("GROUPCODE"," ");
+ String finalSourceOid = sourceOid;
+ repeatOidList.stream().forEach(repeatOid->{
+ if(codeOidToSystemOidMap.containsKey(repeatOid)){
+ XMLResultDataObjectDetailDO repeatresultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
+ String repeatSourceOid=codeOidToSystemOidMap.get(repeatOid);
+ String repeatMsg="姝ゆ暟鎹笌鐢宠鐨勭紪鐮佹暟鎹甶d涓恒��"+ finalSourceOid +"銆戠殑鍏抽敭灞炴�т竴鑷达紝鍒欏彇鐩稿悓缂栫爜";
+ if(isCodeOrGroupCode) {
+ if(StringUtils.isBlank(groupCode)){
+ repeatMsg="鐢宠鐨勭紪鐮佺被鍨嬩负闆嗗洟鐮侊紝绛夊緟闆嗗洟缂栫爜璧嬪��";
+ }
+ repeatresultDataObjectDetailDO.setCode(groupCode);
+ }else{
+ repeatresultDataObjectDetailDO.setCode(code);
+ }
+ repeatresultDataObjectDetailDO.setId(repeatSourceOid);
+ repeatresultDataObjectDetailDO.setErrorid("0");
+ repeatresultDataObjectDetailDO.setMsg(repeatMsg);
+ resultDataObjectDetailDOs.add(repeatresultDataObjectDetailDO);
+ }
+ });
+ }
+ }
+ return resultDataObjectDetailDOs;
+ }
+
/***
* 闆嗘垚鎵归噺鍚屾鏇存柊鎺ュ彛
* @param codeClassifyVO;
* @param dataObjectVO 鏁版嵁淇℃伅
* @param resultDataObjectDetailDOs 閿欒淇℃伅
+ * @param isCodeOrGroupCode 鏄惁鏇撮泦鍥㈢郴缁熸暟鎹�
*/
@Transactional(rollbackFor = VciBaseException.class)
@Override
- public void batchSyncEditDatas(CodeClassifyVO codeClassifyVO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) {
+ public void batchSyncEditDatas(CodeClassifyVO codeClassifyVO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs,boolean isCodeOrGroupCode) {
String errorid="";
String msg="";
//鏌ヨ鍒嗙被鍜屾ā鏉�
@@ -1887,31 +2747,65 @@
//鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑
//checkTemplateSync(sheetDataSetList,templateVO);
//闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
- List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
+ ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
).collect(Collectors.toList());
Map<Integer/**鍒楀彿**/, String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
List<String> titleRowData = dataObjectVO.getColName();
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);
- Map<String, String> cboOidMap = new HashMap<>();
- cboOidMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])) + ")");
- R<BtmTypeVO> r= btmTypeClient.getDetail(templateVO.getBtmTypeId());
- BtmTypeVO btmTypeVO =r.getData();
- String tableName=btmTypeVO.getTableName();
+ //Map<String, String> cboOidMap = new HashMap<>();
+ //cboOidMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])) + ")");
+ String tableName ="";
+ try {
+ R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(classifyFullInfo.getTopClassifyVO().getBtmTypeId());
+ if(!r.isSuccess()) {
+ throw new Throwable(r.getMsg());
+ }
+ BtmTypeVO btmTypeVO = r.getData();
+ if (btmTypeVO == null) {
+ throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷瀵硅薄锛�");
+ }
+ tableName = btmTypeVO.getTableName();
+ if (StringUtils.isBlank(tableName)) {
+ throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷鐩稿叧鑱旂殑琛�");
+ }
+ }catch (Throwable e){
+ log.error("鏌ヨ涓氬姟瀵硅薄琛�"+e);
+ XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
+ xmlResultDataObjectDetailDO.setErrorid("103");
+ xmlResultDataObjectDetailDO.setMsg("鏌ヨ涓氬姟瀵硅薄琛�"+e);
+ xmlResultDataObjectDetailDO.setId("");
+ xmlResultDataObjectDetailDO.setCode("");
+ resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
+ return;
+ }
StringBuffer sb=new StringBuffer();
sb.append(" select * from ");
sb.append(tableName);
sb.append(" where 1=1 ");
- sb.append(" id in (");
- sb.append(VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])));
- sb.append(")");
+ sb.append(" and lastr=1 and lastv=1" );
+ if(isCodeOrGroupCode) {
+ sb.append(" and ( groupcode in (");
+ sb.append(VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])));
+ sb.append(")");
+ sb.append(" or id in (");
+ sb.append(VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])));
+ sb.append("))");
+ }else{
+ sb.append(" and id in (");
+ sb.append(VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])));
+ sb.append(")");
+ }
+
List<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString());
+ DefaultAttrAssimtUtil.mapToLowerCase(dataMapList,true);
List<ClientBusinessObject> cboList= ChangeMapTOClientBusinessObjects(dataMapList);
Map<String, ClientBusinessObject> codeSystemObjectMap = cboList.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
Map<String, String> errorMap = new HashMap<>();
List<CodeOrderDTO> codeOrderDTOList = new ArrayList<>();
- this.getCodeOrderDTOs(codeClassifyVO, templateVO, codeDataMap, codeSystemObjectMap, codeOrderDTOList, errorMap);
+ this.getCodeOrderDTOs(codeClassifyVO, templateVO, codeDataMap, codeSystemObjectMap, codeOrderDTOList, errorMap,isCodeOrGroupCode);
// List<CodeClassifyProcessTempVO> codeClassifyProcessTempVOS=codeClassifyProcessTempService.listProcessTemplate(templateVO.getOid(),"code_cls_flow_use_order");
boolean isProcess=false;
/** if(!CollectionUtils.isEmpty(codeClassifyProcessTempVOS)){
@@ -1932,8 +2826,9 @@
String dataStatus=cbo.getLcStatus();
RowDatas rowData=codeDataMap.get(code);
String status=rowData.getStatus();
+ String lastModifier= rowData.getEditor();
String operation=rowData.getOperation();
- if (cbo.getTs().compareTo(orderDTO.getTs())==0?true:false) {
+ if (cbo.getTs().compareTo(orderDTO.getTs())==0?false:true) {
// throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+";鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
}
@@ -1941,33 +2836,51 @@
throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()});
}*/
if(operation.equals("update")) {
- //1. 鍒ゆ柇蹇呰緭椤�
- checkRequiredAttrOnOrder(templateVO, orderDTO, errorMap);
- //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
+ //1.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO, errorMap);
- //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
+ //2.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
switchComponentAttrOnOrder(templateVO, orderDTO);
- //4.鏍¢獙瑙勫垯
+ //3.鏍¢獙瑙勫垯
checkVerifyOnOrder(templateVO, orderDTO, errorMap);
- //5.鍒ゆ柇鍏抽敭灞炴��
- checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO, errorMap);
- //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
+ //4.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
checkEnumOnOrder(templateVO, orderDTO, errorMap);
- //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
+ //5.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
switchDateAttrOnOrder(templateVO, orderDTO);
+ //6. 鍒ゆ柇蹇呰緭椤�
+ checkRequiredAttrOnOrder(templateVO, orderDTO, errorMap);
+ //7.鍒ゆ柇鍏抽敭灞炴��
+ checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO, errorMap);
//榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true, errorMap);
//浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription());
cbo.setName(orderDTO.getName());
try {
- cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
- cbo.setAttributeValue("name", orderDTO.getName());
+ //涓昏澶勭悊澶у皬鍐欓棶棰橈紝灏哾ata閲岄潰鐨勬暟鎹殑key閮借浆涓哄皬鍐�
+ HashMap<String,String> lowerData = new HashMap<>();
+ Iterator<Map.Entry<String, String>> iterator = cbo.getData().entrySet().iterator();
+ while (iterator.hasNext()){
+ Map.Entry<String, String> next = iterator.next();
+ lowerData.put(next.getKey().toLowerCase(Locale.ROOT),next.getValue());
+ }
+ cbo.getData().clear();
+ cbo.getData().putAll(lowerData);
+ cbo.setAttributeValueWithNoCheck("description", (StringUtil.isNotBlank(orderDTO.getData()
+ .get("description")) ? orderDTO.getData().get("description") : orderDTO.getDescription() ));
+ // cbo.setAttributeValue("name", orderDTO.getName());
// if(finalIsProcess){//鍦ㄦ祦绋嬩腑涓嶅厑璁告洿鏀�
// errorMap.put(code,errorMap.getOrDefault(code, errorMap.getOrDefault(code,"")+";鏁版嵁"+code+"鍦ㄦ祦绋嬩腑锛屼笉鍏佽鏇存敼!"));
// }else{
+ Date date=new Date();
cbo.setLcStatus(status);
cbo.setAttributeValue("lcstatus",status);
+ cbo.setLastModifyTime(date);
+ cbo.setLastModifier(lastModifier);
+ cbo.setLastModifyTime(date);
+ cbo.setAttributeValue("lastmodifier",lastModifier);
+ cbo.setAttributeValue("lastmodifytime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(date));
+ cbo.setTs(date);
+ cbo.setAttributeValue("ts",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(date));
// }
} catch (VciBaseException e) {
e.printStackTrace();
@@ -1975,7 +2888,7 @@
List<CodeAllCode>newCodeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getCreateCodeOid, cbo.getOid()));
if (!CollectionUtils.isEmpty(newCodeAllCodeList)) {
- CodeAllCode codeCbo = codeAllCodeList.get(0);
+ CodeAllCode codeCbo = newCodeAllCodeList.get(0);
log.info("codeCbos code:" + codeCbo.getId());
codeCbo.setLcStatus(status);
codeAllCodeList.add(codeCbo);
@@ -1983,7 +2896,7 @@
BaseModel baseModel=new BaseModel();
BeanUtil.convert(cbo,baseModel);
- baseModel.setData(VciBaseUtil.objectToMapString(cbo));
+ //baseModel.setData(VciBaseUtil.objectToMapString(cbo));
updateList.add(baseModel);
}else if(operation.equals("delete")){//濡傛灉鍦ㄦ祦绋嬩腑涓嶅厑璁稿垹闄わ紝涓嶅湪娴佺▼涓姸鎬佷负鍙戝竷鎴栬�呭仠鐢ㄧ殑鏁版嵁涓嶅厑璁稿垹闄わ紝灏嗗叾鏇存敼涓哄仠鐢紝鍏朵粬鐨勬儏鍐电洿鎺ュ垹闄�
// if(finalIsProcess){
@@ -1994,7 +2907,7 @@
List<CodeAllCode>newCodeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getCreateCodeOid, cbo.getOid()));
log.info("codeCbos size:" + newCodeAllCodeList.size());
if (!CollectionUtils.isEmpty(newCodeAllCodeList)) {
- CodeAllCode codeCbo = codeAllCodeList.get(0);
+ CodeAllCode codeCbo = newCodeAllCodeList.get(0);
log.info("codeCbos code:" + codeCbo.getId());
codeCbo.setLcStatus(CodeDefaultLC.TASK_BACK.getValue());
codeAllCodeList.add(codeCbo);
@@ -2016,7 +2929,7 @@
List<CodeAllCode>newCodeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getCreateCodeOid, cbo.getOid()));
if (!CollectionUtils.isEmpty(newCodeAllCodeList)) {
- CodeAllCode codeCbo = codeAllCodeList.get(0);
+ CodeAllCode codeCbo = newCodeAllCodeList.get(0);
log.info("codeCbos code:" + codeCbo.getId());
codeCbo.setLcStatus(status);
codeAllCodeList.add(codeCbo);
@@ -2024,7 +2937,7 @@
BaseModel baseModel=new BaseModel();
BeanUtil.convert(cbo,baseModel);
- baseModel.setData(VciBaseUtil.objectToMapString(cbo));
+ //baseModel.setData(VciBaseUtil.objectToMapString(cbo));
updateList.add(baseModel);
}catch (VciBaseException e) {
e.printStackTrace();
@@ -2051,10 +2964,20 @@
}else {
//瀛樺偍鏁版嵁
try {
- engineService.updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmtypeid(),updateList);
- codeAllCodeService.saveBatch(codeAllCodeList);
+ engineService.updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(),updateList);
+ codeAllCodeService.saveOrUpdateBatch(codeAllCodeList);
if(deleteList.size()>0) {
- commonsMapper.deleteByTaleAndOid(tableName, VciBaseUtil.array2String(deleteList.toArray(new String[]{})));
+ commonsMapper.deleteByTaleAndOid(tableName, VciBaseUtil.toInSql(deleteList.toArray(new String[]{})));
+ }
+ //鏄惁璋冪敤闆嗗洟鎺ュ彛鐢宠鎺ュ彛
+ if(isCodeOrGroupCode){
+ List<String> IdList=resultDataObjectDetailDOs.stream().filter(xMLResultDataObjectDetailDO-> com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(xMLResultDataObjectDetailDO.getId())).map(XMLResultDataObjectDetailDO::getId).distinct().collect(Collectors.toList());
+
+
+
+ if(!CollectionUtils.isEmpty(IdList)) {
+ this.sendApplyGroupcode(IdList, classifyFullInfo.getTopClassifyVO().getBtmTypeId(),sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getValue());
+ }
}
errorid="0";
msg="鏇存柊/鐘舵�佹洿鏀�/鍒犻櫎鎴愬姛锛�";
@@ -2081,6 +3004,7 @@
}
}
}
+
/**
* 鏍¢獙灞炴�ф槸鍚︿负蹇呰緭
*
@@ -2102,6 +3026,7 @@
});
}
}
+
/**
* 杞崲缁勫悎瑙勫垯鐨勫��
*
@@ -2148,6 +3073,7 @@
});
}
}
+
/**
* 鏍¢獙鍏抽敭灞炴��
*
@@ -2176,29 +3102,55 @@
});
//娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
-
if (!CollectionUtils.isEmpty(conditionMap)) {
- final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " where 1 = 1 "};
+ String tableName="";
+ R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
+ if(r.isSuccess()) {
+ BtmTypeVO btmTypeVO = r.getData();
+ if (btmTypeVO != null) {
+ tableName = btmTypeVO.getTableName();
+
+ }
+ }
+ if (StringUtils.isBlank(tableName)) {
+ String errormsg="鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿叧涓氬姟琛�";
+ errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+errormsg);
+ return;
+ }
+ //final String[] sql = {"select count(*) from " + tableName + " t where 1 = 1 "};
+ final String[] sql = {"select t.id from " + tableName + " t where 1 = 1 "};
conditionMap.forEach((key, value) -> {
- sql[0] += " and " + key + " = " + value;
+ if(StringUtils.isBlank(value)||value.equals(QueryOptionConstant.ISNULL)){
+ sql[0] += " and " + key + " is null ";
+ }else{
+ sql[0] += " and " + key + " = " + value;
+ }
+
});
if (StringUtils.isNotBlank(orderDTO.getOid())) {
//淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸�
- sql[0] += " and oid != '" + orderDTO.getOid() + "'";
+ sql[0] += " and t.oid != '" + orderDTO.getOid() + "'";
} else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) {
- sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'";
+ sql[0] += " and t.oid != '" + orderDTO.getCopyFromVersion() + "'";
}
- sql[0] += " and islastR = '1' and islastV = '1' ";
- if (commonsMapper.queryCountBySql(sql[0]) > 0) {
+ // 涓嶉渶瑕佸弬涓庢牎楠岀殑瑙勫垯oid
+ String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid());
+ if(Func.isNotBlank(isParticipateCheckOids)){
+ sql[0] += " and codeclsfid not in("+isParticipateCheckOids+")";
+ }
+ sql[0] += " and t.lastR = '1' and t.lastV = '1' ";
+ List<String> repeatData = commonsMapper.selectList(sql[0]);
+ if (!repeatData.isEmpty()) {
String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}";
String[] objs = new String[]{trim ? "鏄�" : "鍚�", ignoreCase ? "鏄�" : "鍚�", ignoreWidth ? "鏄�" : "鍚�", trimAll ? "鏄�" : "鍚�"};
- String defaultValue=";鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�";
+ String defaultValue=";鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜�,鏁版嵁鐨勭紪鍙峰涓嬶細"+repeatData.stream().collect(Collectors.joining(","))+"銆傝淇!銆�";
String errormsg=defaultValue+ MessageFormat.format(ruleInfoMsg, objs);
errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+errormsg);
// throw new VciBaseException("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�" + ruleInfoMsg, objs);
}
}
}
+
/**
* 鏍¢獙鏋氫妇鐨勫唴瀹�
*
@@ -2222,6 +3174,7 @@
});
}
}
+
/**
* 杞崲鏃堕棿鐨勬牸寮�
*
@@ -2283,10 +3236,10 @@
// if (lifeCycleVO != null) {
// cbo.setLcStatus(lifeCycleVO.getStartStatus());
// } else {
- cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
// }
} else {
- cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
}
}
@@ -2314,6 +3267,7 @@
orderDTO.getData().put(attrId, value);
}
}
+
/**
* 浠庣紪鐮佺敵璇蜂俊鎭璞′笂鑾峰彇鏌愪釜灞炴�х殑鍊�
*
@@ -2333,6 +3287,7 @@
}
return value;
}
+
/**
* 澶勭悊鍒嗙被娉ㄥ叆鐨勪俊鎭�
*
@@ -2378,6 +3333,7 @@
});
}
}
+
/***
*
* @param codeClassifyVO
@@ -2388,13 +3344,19 @@
* @param errorMap
* @return
*/
- private void getCodeOrderDTOs(CodeClassifyVO codeClassifyVO,CodeClassifyTemplateVO templateVO,Map<String ,RowDatas>codeDataMap,Map<String, ClientBusinessObject> codeSystemObjectMap,List<CodeOrderDTO> codeOrderDTOList,Map<String,String> errorMap){
- codeDataMap.keySet().forEach(code->{
- RowDatas rowDatas=codeDataMap.get(code);
- Map<String, String> data= rowDatas.getFiledValue();
+ private void getCodeOrderDTOs(CodeClassifyVO codeClassifyVO,CodeClassifyTemplateVO templateVO,Map<String ,RowDatas>codeDataMap,Map<String, ClientBusinessObject> codeSystemObjectMap,List<CodeOrderDTO> codeOrderDTOList,Map<String,String> errorMap,boolean isCodeOrGroupCode){
+ codeSystemObjectMap.keySet().forEach(code->{
+ ClientBusinessObject sysDataObject= codeSystemObjectMap.get(code);
+ if(isCodeOrGroupCode){
+ code=sysDataObject.getAttributeValue("GROUPCODE");
+ if(StringUtils.isBlank(code)){
+ code=sysDataObject.getId();
+ }
+ }
CodeOrderDTO orderDTO = new CodeOrderDTO();
- if(codeSystemObjectMap.containsKey(code)){
- ClientBusinessObject sysDataObject= codeSystemObjectMap.get(code);
+ if(codeDataMap.containsKey(code)){
+ RowDatas rowDatas=codeDataMap.get(code);
+ Map<String, String> data= rowDatas.getFiledValue();
orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//鍒嗙被涓婚敭
orderDTO.setOid(sysDataObject.getOid());//鏁版嵁oid
orderDTO.setLcStatus(rowDatas.getStatus());//鐘舵��
@@ -2468,7 +3430,7 @@
for (int j = 0; j < ruleVO.getSecVOList().size(); j++) {
CodeBasicSecVO secVO = ruleVO.getSecVOList().get(j);
String length= secValues[j];
- if(StringUtils.isNotBlank(secVO.getCodeSecLength())&&VciBaseUtil.getInt(length)>VciBaseUtil.getInt(secVO.getCodeSecLength())){
+ if(StringUtils.isNotBlank(secVO.getCodeSecLength())&&VciBaseUtil.getInt(length)>(VciBaseUtil.getInt(secVO.getCodeSecLength())+((secVO.getPrefixCode()+secVO.getSuffixCode()).length()))){
errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鐮佹瀹藉害涓庣郴缁熶腑鐨勭紪鐮佽鍒欎笉鍚�" );
fined = true;
break;
@@ -2500,6 +3462,7 @@
}
});
}
+
/**
* excel杞崲涓篶bo鐨勫璞�
* @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
@@ -2518,7 +3481,7 @@
String oid=rowData.getOid();
String rowNumber=rowData.getRowIndex();
ClientBusinessObject cbo = new ClientBusinessObject();
- DefaultAttrAssimtUtil.addDefaultAttrAssimt(cbo, classifyFullInfo.getTopClassifyVO().getBtmtypeid());
+ DefaultAttrAssimtUtil.addDefaultAttrAssimt(cbo, classifyFullInfo.getTopClassifyVO().getBtmTypeId());
rowData.getData().forEach((index,value)->{
String field = fieldIndexMap.get(index);
if(StringUtils.isBlank(field)){
@@ -2612,6 +3575,7 @@
});
}
+
/**
* excel杞崲涓篶bo鐨勫璞�
* @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
@@ -2623,7 +3587,7 @@
String fullPath = getFullPath(classifyFullInfo);
codeImprotDataVO.getDatas().stream().forEach(rowData -> {
ClientBusinessObject cbo=new ClientBusinessObject();
- DefaultAttrAssimtUtil.addDefaultAttrAssimt(cbo, classifyFullInfo.getTopClassifyVO().getBtmtypeid());
+ DefaultAttrAssimtUtil.addDefaultAttrAssimt(cbo, classifyFullInfo.getTopClassifyVO().getBtmTypeId());
rowData.forEach((field,value)->{
try {
cbo.setAttributeValueWithNoCheck(field,value);
@@ -2646,6 +3610,7 @@
Integer userSecret = VciBaseUtil.getCurrentUserSecret();
cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
}
+ cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
}else{
//姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
//cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
@@ -2660,6 +3625,7 @@
});
}
+
/**
* excel杞崲涓篶bo鐨勫璞�
* @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
@@ -2675,9 +3641,14 @@
String fullPath,boolean newCode){
rowDataList.stream().forEach(rowData -> {
ClientBusinessObject cbo=new ClientBusinessObject();
- DefaultAttrAssimtUtil.addDefaultAttrAssimt(cbo, classifyFullInfo.getTopClassifyVO().getBtmtypeid());
+ DefaultAttrAssimtUtil.addDefaultAttrAssimt(cbo, classifyFullInfo.getTopClassifyVO().getBtmTypeId());
+ R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmTypeId()));
+ if(!listR.isSuccess() || listR.getData().size() == 0){
+ throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
+ }
+ cbo.setRevisionRule("".equals(listR.getData().get(0).getVersionRule())?"1":listR.getData().get(0).getVersionRule());
rowData.getData().forEach((index,value)->{
- String field = fieldIndexMap.get(index);
+ String field = fieldIndexMap.get(index);
if (StringUtils.isBlank(field)) {
throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
}
@@ -2702,6 +3673,7 @@
Integer userSecret = VciBaseUtil.getCurrentUserSecret();
cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
}
+ cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
}else{
//姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
//cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
@@ -2714,6 +3686,106 @@
cboList.add(cbo);
});
+ }
+
+ /**
+ * 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.toUpperCase(),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);
}
/**
@@ -2747,6 +3819,7 @@
}
}
}
+
/**
* 鎵归噺杞崲鏃堕棿閮戒负鎸囧畾鐨勬牸寮�
* @param attrVOS 妯℃澘灞炴��
@@ -2920,7 +3993,8 @@
String sql = "select " + valueField + "," + showText.toLowerCase(Locale.ROOT) +" from " + table + " where " + showText + " in (%s)";
valueCollections.stream().forEach(values->{
List<Map<String,String>> dataMapList = commonsMapper.queryByOnlySqlForMap(String.format(sql, VciBaseUtil.toInSql(values.toArray(new String[0]))));
- List<ClientBusinessObject> cbos= ChangeMapTOClientBusinessObjects(dataMapList);
+ DefaultAttrAssimtUtil.mapToLowerCase(dataMapList,true);
+ List<ClientBusinessObject> cbos=ChangeMapTOClientBusinessObjects(dataMapList);
if(!CollectionUtils.isEmpty(cbos)){
valueOidTextMap.putAll(cbos.stream().collect(Collectors.toMap(s->s.getAttributeValue(valueField),t->t.getAttributeValue(showText))));
}
@@ -2972,6 +4046,7 @@
}
}
+
/**
* 鎵归噺妫�鏌ヤ紒涓氱紪鐮佹槸鍚﹀瓨鍦�
* @param templateVO 妯℃澘鐨勬樉绀哄璞�
@@ -2983,7 +4058,7 @@
String tableName ="";
try {
R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
- if(r.getCode()!=200) {
+ if(!r.isSuccess()) {
throw new Throwable(r.getMsg());
}
BtmTypeVO btmTypeVO = r.getData();
@@ -3033,6 +4108,7 @@
});
}
}
+
/***
* 鏍¢獙鍒嗙被瀵瑰簲鐨勬ā鏉夸俊鎭�
* @param titleRowData
@@ -3116,6 +4192,7 @@
}
return codeClassifyTemplateVOList ;
}
+
/**
* 浠庡睘鎬т笂鑾峰彇鍙傜収鐨勫唴瀹�
* @param attrVO 灞炴�х殑淇℃伅
@@ -3177,6 +4254,7 @@
}
return showText;
}
+
/**
* 澶勭悊鏋氫妇鐨勬樉绀哄璞�
* @param attrVOS 妯℃澘灞炴��
@@ -3225,7 +4303,7 @@
*/
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())//涓嶈兘鏄粍鍚堢殑鍜屽垎绫绘敞鍏ョ殑
+ VciBaseUtil.getBoolean(s.getRequireFlag()) && StringUtils.isBlank(s.getComponentRule()) && (StringUtils.isBlank(s.getClassifyInvokeLevel())||s.getClassifyInvokeLevel().equals("none"))//涓嶈兘鏄粍鍚堢殑鍜屽垎绫绘敞鍏ョ殑
).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
//涓嶮dmEngineServiceImpl閲岄潰鐨刢heckRequiredAttrOnOrder 閫昏緫搴旇鐩镐技
if(!CollectionUtils.isEmpty(requiredAttrMap)) {
@@ -3233,11 +4311,12 @@
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);
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鏍¢獙瑙勫垯蹇呭~椤逛笉閫氳繃锛屽鏋滄湁蹇呭~灞炴�т负绌猴紝鍒欏~銆�/銆戜唬鏇�,鏈夋牎楠岀殑灞炴�т负" + checkAttr);
});
}
}
}
+
/**
* 澶勭悊鍒嗙被娉ㄥ叆
* @param attrVOS 妯℃澘灞炴��
@@ -3247,7 +4326,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);
@@ -3267,7 +4346,8 @@
}
}
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());
+ 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);
@@ -3283,6 +4363,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) {
@@ -3299,7 +4380,7 @@
* @param cboList 鎵归噺鐨勬暟鎹�
*/
private CodeImportResultVO batchCheckKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO,
- List<ClientBusinessObject> cboList) {
+ List<ClientBusinessObject> cboList,boolean isEdit,Map<String,String> errorMap) {
//涓嶮dmEngineServiceImpl閲岀殑checkKeyAttrOnOrder鐩镐技
//鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮�
CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
@@ -3317,7 +4398,8 @@
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));
+ //resultVO.setSelfRepeatRowIndexList(getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO));
+ getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO,resultVO);
if(!CollectionUtils.isEmpty(resultVO.getSelfRepeatRowIndexList())){
//鎴戜滑绉婚櫎鏈韩閲嶅鐨勬暟鎹�
cboList = cboList.stream().filter(s->!resultVO.getSelfRepeatRowIndexList().contains(s.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
@@ -3325,40 +4407,64 @@
//2.鍒ゆ柇鍏抽敭灞炴�у湪绯荤粺閲屾槸鍚﹂噸澶�
//鍥犱负鏁版嵁閲忓緢澶э紝鎵�浠ュ緱鎯冲姙娉曞苟琛�
//SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
- Map<String,List<BaseModel>> 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);
- List<BaseModel> newCboList=new ArrayList<>();
- newDataList.stream().forEach(stringStringMap -> {
- BaseModel baseModel=new BaseModel();
- DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel);
- newCboList.add(baseModel);
- });
- if(!CollectionUtils.isEmpty(newCboList)) {
- indexTODataMap.put(cbo.getAttributeValue(IMPORT_ROW_INDEX), newCboList);
+ Map<String,List<BaseModel>> indexTODataMap=new ConcurrentHashMap<>();
+ // 鏌ヨ涓嶉渶瑕佸弬涓庡叧閿睘鎬ф牎楠岀殑闄よ嚜宸变互澶栫殑鎵�鏈夊垎绫籵id
+ final String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid());
+ final BladeUser user = AuthUtil.getUser();
+ // TODO:Thread limit exceeded replacing blocked 寮傚父鏄繖閮ㄥ垎浠g爜鎶涘嚭鐨�
+ // ,鎵�浠ユ殏鏃跺皢parallelStream鏀规垚浜唖tream锛屾敼鎴愪簡stream涔嬪悗鍙戠幇宸ㄦ參
+ // customForkJoinPool鎺у埗骞跺彂搴�
+ List<ClientBusinessObject> finalCboList = cboList;
+ List<ClientBusinessObject> repeatDataMap = (List<ClientBusinessObject>) customForkJoinPool.submit(()->{
+ finalCboList.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)) {
+ // 娣诲姞涓嶅弬涓庡叧閿睘鎬ф牎楠岀殑鍒嗙被oid鍒ゆ柇
+ if(Func.isNotBlank(isParticipateCheckOids)){
+ conditionMap.put("t.codeclsfid",QueryOptionConstant.NOTIN+isParticipateCheckOids);
+ }
+ if(isEdit){//濡傛灉鏄洿鏀瑰垯闇�鎺掗櫎绯荤粺鏈韩
+ conditionMap.put("t.id",QueryOptionConstant.NOTEQUAL+cbo.getId());
+ }
+ conditionMap.put("t.lastr", "1");
+ conditionMap.put("t.lastv", "1");
+
+ CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, null);
+ List<String> repeatData = commonsMapper.selectList(sqlBO.getSqlId());
+ if(!repeatData.isEmpty()){
+ final List<Map<String,String>> newDataList = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlUnPage());
+ DefaultAttrAssimtUtil.mapToLowerCase(newDataList,true);
+ //List<ClientBusinessObject> newCboList=ChangeMapTOClientBusinessObjects(newDataList);
+ List<BaseModel> newCboList = new ArrayList<>();
+ newDataList.stream().forEach(stringStringMap -> {
+ BaseModel baseModel=new BaseModel();
+ DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel,false,user);
+ baseModel.setData(stringStringMap);
+ newCboList.add(baseModel);
+ });
+ // 娣诲姞閿欒鍊�
+ String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex, "閲嶅鐨勮褰曠紪鍙蜂负:"+repeatData.stream().collect(Collectors.joining(",")));
+ if(!CollectionUtils.isEmpty(newCboList)) {
+ indexTODataMap.put(cbo.getAttributeValue(IMPORT_ROW_INDEX), newCboList);
+ }
+ }
+ return !repeatData.isEmpty();
+ }else{
+ return false;
}
- return isKeyCheck;
- }else{
- return false;
- }
- }).collect(Collectors.toList());
+ }).collect(Collectors.toList());
+ }).join();
if(!CollectionUtils.isEmpty(repeatDataMap)){
resultVO.setKeyAttrRepeatRowIndexList(repeatDataMap.stream().map(s->s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toSet()));
}
@@ -3382,7 +4488,7 @@
if(StringUtils.isBlank(classifyPath)){
classifyPath = "#current#";
}
- if ( !pathMap.containsKey(classifyPath)) {
+ if (!pathMap.containsKey(classifyPath)) {
String row_index = cbo.getAttributeValue(IMPORT_ROW_INDEX);
errorMap.put(row_index,errorMap.getOrDefault(row_index,"") + ";鍒嗙被璺緞涓嶅瓨鍦�");
} else {
@@ -3408,12 +4514,12 @@
List<String> unExistRuleClassifyOidList ){
if(!CollectionUtils.isEmpty(classifyVOMap)){
classifyVOMap.values().parallelStream().forEach(classifyVO->{
- if(StringUtils.isNotBlank(classifyVO.getCoderuleoid())){
- ruleOidMap.put(classifyVO.getOid(),classifyVO.getCoderuleoid());
+ if(StringUtils.isNotBlank(classifyVO.getCodeRuleOid())){
+ ruleOidMap.put(classifyVO.getOid(),classifyVO.getCodeRuleOid());
}else{
//閫掑綊鎵句笂绾�
List<String> ruleOidList = new ArrayList<>();
- recursionRule(classifyVOMap,classifyVO.getParentcodeclassifyoid(),ruleOidList);
+ recursionRule(classifyVOMap,classifyVO.getParentCodeClassifyOid(),ruleOidList);
if(!CollectionUtils.isEmpty(ruleOidList)){
ruleOidMap.put(classifyVO.getOid(),ruleOidList.get(0));
}else{
@@ -3433,11 +4539,11 @@
private void recursionRule(Map<String, CodeClassifyVO> classifyVOMap,String classifyOid,List<String> ruleOidList){
if(classifyVOMap.containsKey(classifyOid)){
CodeClassifyVO classifyVO = classifyVOMap.get(classifyOid);
- if(StringUtils.isNotBlank(classifyVO.getCoderuleoid())){
- ruleOidList.add(classifyVO.getCoderuleoid());
+ if(StringUtils.isNotBlank(classifyVO.getCodeRuleOid())){
+ ruleOidList.add(classifyVO.getCodeRuleOid());
return;
}else{
- recursionRule(classifyVOMap,classifyVO.getParentcodeclassifyoid(),ruleOidList);
+ recursionRule(classifyVOMap,classifyVO.getParentCodeClassifyOid(),ruleOidList);
}
}else{
Map<String, CodeClassifyVO> parentClassifyVOMap=new HashMap<>();
@@ -3465,9 +4571,11 @@
childOidPathMap.put(childPath.getOid(),thisClassifyPath);
});
}
+ String path=classifyFullInfo.getCurrentClassifyVO().getId();
+ //鏍规嵁瀹㈡埛閫夋嫨鐨勫垎绫昏矾寰勬湭id锛岃繕鏄痭ame纭畾璺緞鎷兼帴
+ childOidPathMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(),fullPath);
return childOidPathMap;
}
-
/**
* 鑾峰彇瀵煎叆鐨勫唴瀹逛腑鍏抽敭灞炴�ч噸澶嶇殑琛屽彿
@@ -3476,9 +4584,10 @@
* @param keyRuleVO 鍏抽敭灞炴�ф帶鍒惰鍒�
* @return 閲嶅鐨勮鍙�
*/
- private Set<String> getSelfRepeatRowIndex(Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap,
- List<ClientBusinessObject> dataList,CodeKeyAttrRepeatVO keyRuleVO){
+ private void getSelfRepeatRowIndex(Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap,
+ List<ClientBusinessObject> dataList,CodeKeyAttrRepeatVO keyRuleVO,CodeImportResultVO resultVO){
Set<String> selfRepeatRowIndexList = new CopyOnWriteArraySet<>();
+ Map<String,List<String>> keyAttrOkOidTORepeatOidMap=new HashMap<>();
boolean trimAll =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
//鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
boolean trim =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
@@ -3487,8 +4596,10 @@
//蹇呴』灏嗗睘鎬ф寜鐓ч『搴忔帓搴忓ソ
List<CodeClassifyTemplateAttrVO> attrVOList = ketAttrMap.values().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
Map<String/**琛屽彿**/,String/**鍏抽敭灞炴�х殑缁勫悎鍐呭**/> rowIndexKeyStringMap = new HashMap<>();
+ Map<String/**鍏抽敭灞炴�х殑缁勫悎鍐呭**/,String/**绗竴涓叧閿睘鎬х殑鏁版嵁oid**/> okOidKeyStringMap = new HashMap<>();
dataList.parallelStream().forEach(cbo-> {
String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+ String oid=cbo.getOid();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < attrVOList.size(); i++) {
CodeClassifyTemplateAttrVO attrVO = attrVOList.get(i);
@@ -3514,13 +4625,27 @@
String keyString = sb.toString();
if(rowIndexKeyStringMap.containsValue(keyString) && StringUtils.isNotBlank(keyString)){
selfRepeatRowIndexList.add(rowIndex);
+ String okOid=okOidKeyStringMap.getOrDefault(keyString,"");
+ if(StringUtils.isNotBlank(okOid)){
+ List<String>newOidList=new ArrayList<>();
+ newOidList.add(oid);
+ if(keyAttrOkOidTORepeatOidMap.containsKey(okOid)){
+ List<String> oldOidList = keyAttrOkOidTORepeatOidMap.get(okOid);
+ newOidList.addAll(oldOidList);
+
+ }
+ keyAttrOkOidTORepeatOidMap.put(okOid,newOidList);
+ }
}else {
+ okOidKeyStringMap.put(sb.toString(),oid);
rowIndexKeyStringMap.put(rowIndex, sb.toString());
}
});
//鍥犱负鍙槸鍏抽敭灞炴�ч噸澶嶏紝鎵�浠ユ垜浠笉鑳介噸澶嶇殑澶氭潯閫変竴鏉℃潵鎶ラ敊
- return selfRepeatRowIndexList;
+ resultVO.setKeyAttrRepeatRowIndexList(selfRepeatRowIndexList);
+ resultVO.setKeyAttrOkOidTORepeatOidMap(keyAttrOkOidTORepeatOidMap);
}
+
/**
* excel鐨勬爣棰樹笂鑾峰彇瀛楁鎵�鍦ㄧ殑浣嶇疆
* @param titleRowData 鏍囬鐨勫唴瀹�
@@ -3547,13 +4672,17 @@
}
}
private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){
- List<ClientBusinessObject> clientBusinessObjectList=new CopyOnWriteArrayList<>();
- oldDataMap.parallelStream().forEach(dataMap->{
+ List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>();
+ DefaultAttrAssimtUtil.mapToLowerCase(oldDataMap,true);
+ final BladeUser user = AuthUtil.getUser();
+ oldDataMap.stream().forEach(dataMap->{
ClientBusinessObject clientBusinessObject=new ClientBusinessObject();
- DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject);
- dataMap.forEach((key,value)->{
- clientBusinessObject.setAttributeValue(key,value);
- });
+ DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject,false,user);
+ for (String key:dataMap.keySet()){
+ Object value= dataMap.getOrDefault(key,"");
+ clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString());
+ }
+ clientBusinessObjectList.add(clientBusinessObject);
});
return clientBusinessObjectList;
}
@@ -3633,6 +4762,7 @@
codeClassifyDatas.addAll(newCodeImprotDataVO);
log.info("222");
}
+
/***
* @param titleRowData
* @param newTemplateVO
@@ -3642,7 +4772,8 @@
private void createExeclClassData(List<String> titleRowData, CodeClassifyTemplateVO newTemplateVO, Map<Integer, String> execlData, CodeImprotDataVO codeImprotDataVO){
//闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
List<CodeClassifyTemplateAttrVO> attrVOS = newTemplateVO.getAttributes().stream().filter(s ->
- !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
+ !DEFAULT_ATTR_LIST.contains(s.getId()) &&
+ ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
).collect(Collectors.toList());
Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId()));
List<String> fields=new ArrayList<>();
@@ -3678,7 +4809,8 @@
codeImprotDataVO.setColNames(colNames);
codeImprotDataVO.getDatas().add(filedValueMap);
}
- /***
+
+ /**
* 姝g‘閿欒鏁版嵁redis缂撳瓨
* @param uuid
* @param templateVO
@@ -3829,13 +4961,14 @@
}else{
if (!CollectionUtils.isEmpty(conditionMap)) {
Map<String, String> andConditionMap = new HashMap<>();
- andConditionMap.put("islastr", "1");
- andConditionMap.put("islastv", "1");
+ andConditionMap.put("lastr", "1");
+ andConditionMap.put("lastv", "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());
+ DefaultAttrAssimtUtil.mapToLowerCase(dataMapList,true);
List<ClientBusinessObject> resembleCboList= ChangeMapTOClientBusinessObjects(dataMapList);
if(!CollectionUtils.isEmpty(resembleCboList)) {
List<Map<String, String>> finalDataMap = dataMap;
@@ -3978,4 +5111,518 @@
}
}
}
+
+ /***
+ * 鐢宠闆嗗洟缂栫爜
+ * @param idList
+ * @param btmName
+ */
+ public void sendApplyGroupcode(List<String> idList,String btmName,String operationType){
+ String oids=VciBaseUtil.array2String(idList.toArray(new String[]{}));
+ if(operationType.equals(sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue())) {
+ mdmInterJtClient.applyGroupCode(oids,btmName);
+ }else if(operationType.equals(sysIntegrationPushTypeEnum.ACCPET_EDITCODE)){
+ mdmInterJtClient.receiveEditApply(oids,btmName);
+ }
+ }
+
+ /***
+ * @param codeClassifyOid
+ * @return
+ */
+ @Override
+ public String exportGroupCodeExcel(String codeClassifyOid) throws VciBaseException {
+ 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 VciBaseException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆");
+ }
+ 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
+ */
+ @Transactional(rollbackFor = VciBaseException.class)
+ @Override
+ public String importGroupCode(String codeClassifyOid, File file) throws Throwable {
+ VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
+ ReadExcelOption reo = new ReadExcelOption();
+ reo.setReadAllSheet(true);
+ List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
+
+ if (sheetDataSetList.size() > LIMIT + 1) {
+ throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
+ }
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+ //鑾峰彇鏈�鏂扮殑妯℃澘
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid); //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
+ ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
+ ).collect(Collectors.toList());
+ ExecGroupCodePortDataDTO execGroupCodePortDataDTO=new ExecGroupCodePortDataDTO();
+ createExportGroupCodeMapConfig(templateVO,execGroupCodePortDataDTO);//缁勭粐鏁版嵁
+ List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS=execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS();
+ if(CollectionUtils.isEmpty(codeAttrMapGroupAttrDTOS)){
+ throw new ServiceException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆");
+ }
+ Map<String, CodeAndGroupCodeAttrMappingDTO> codeSystemObjectMap = codeAttrMapGroupAttrDTOS.stream().filter(codeAttrMappingDTO -> codeAttrMappingDTO != null && StringUtils.isNotBlank(codeAttrMappingDTO.getSourceAttrName())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getSourceAttrName(), t -> t));
+ SheetDataSet dataSet= sheetDataSetList.get(0);
+ List<String> titleRowData = dataSet.getColName();
+ Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
+ getGroupCodeFieldIndexMap(titleRowData,codeAttrMapGroupAttrDTOS,fieldIndexMap);
+ //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜�
+ /** List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT))
+ && com.alibaba.cloud.commons.lang.StringUtils.isBlank(s.getComponentRule()) && com.alibaba.cloud.commons.lang.StringUtils.isBlank(s.getClassifyInvokeAttr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓
+ ).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(unExistAttrVOs)){
+ String message=unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName).collect(Collectors.joining(SERIAL_UNIT_SPACE));
+ throw new VciBaseException("銆�" + message + "銆戣繖浜涘睘鎬у湪excel涓病鏈夋壘鍒�");
+ }**/
+ List<ClientBusinessObject> cboList = new ArrayList<>();
+ List<SheetRowData> rowDataList = dataSet.getRowData();
+
+ getExportGroupCodeDatas(fieldIndexMap,rowDataList,cboList);//鏋勫缓鏁版嵁瀵硅薄
+
+ List<String> codeList= cboList.stream().map(ClientBusinessObject::getId).collect(Collectors.toList());
+ List<Map<String,String>>dataList=new ArrayList<>();
+ Map<String,String> errorMap=new HashMap<>();
+ batchSwitchCheckExist(errorMap,cboList,classifyFullInfo,templateVO,execGroupCodePortDataDTO,fieldIndexMap);
+ //鍒ゆ柇蹇呰緭椤�
+ batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap);
+ // //浼樺厛鏍¢獙缂栫爜鏄惁瀛樺湪
+ // batchCheckIdExistOnOrder(templateVO, cboList, errorMap);
+ //boolean
+ reSwitchBooleanAttrOnOrder(attrVOS, cboList);
+
+ // 鏋氫妇鐨勫唴瀹归渶瑕佹牴鎹悕绉拌浆鎹负鏋氫妇鐨勫��
+ batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap);
+
+ batchSwitchReferAttrOnOrder(attrVOS, cboList, errorMap);
+ //6.澶勭悊鍒嗙被娉ㄥ叆
+ batchSwitchClassifyAttrOnOrder(attrVOS, cboList, classifyFullInfo,false);
+
+ //璁剧疆榛樿鍊�
+ batchSwitchAttrDefault(attrVOS, cboList);
+
+ //7.澶勭悊缁勫悎瑙勫垯
+ batchSwitchComponentAttrOnOrder(attrVOS, cboList);
+ //4.鏍¢獙瑙勫垯
+ batchCheckVerifyOnOrder(attrVOS, cboList, errorMap);
+ //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
+ batchSwitchDateAttrOnOrder(attrVOS, cboList, errorMap);
+ //3.鍒ゆ柇鍏抽敭灞炴��
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,true,errorMap);
+ Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
+ Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
+ if (!CollectionUtils.isEmpty(selfRepeatRowIndexList)) {
+ selfRepeatRowIndexList.stream().forEach(rowIndex -> {
+ errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍦ㄥ綋鍓峞xcel鏂囦欢涓叧閿睘鎬ч噸澶�");
+ });
+ }
+ if (!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)) {
+ keyAttrRepeatRowIndexList.stream().forEach(rowIndex -> {
+ errorMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex, ""));
+ });
+ }
+ Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>();
+ createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, templateVO);
+ String excelFileName="";
+ if(errorMap.size()==0) {
+ try {
+ String btmTypeId = classifyFullInfo.getTopClassifyVO().getBtmTypeId();
+ List<BaseModel>oldCbos= execGroupCodePortDataDTO.getOldList();
+ List<BaseModel>newCbos=new ArrayList<>();
+ // 淇敼鐗堟鍙�
+ engineService.updateBatchByBaseModel(btmTypeId,oldCbos);
+ List<CodeAllCode> codeAllCodeList=new ArrayList<>();
+ final BladeUser user = AuthUtil.getUser();
+ cboList.stream().forEach(clientBusinessObject -> {
+ BaseModel newBaseModel=new BaseModel();
+ DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(clientBusinessObject.getData(),newBaseModel,false,user);
+ newCbos.add(newBaseModel);
+ });
+ // 鎻掑叆鏂扮殑鏁版嵁
+ engineService.insertBatchByType(btmTypeId, newCbos);
+ codeAllCodeService.saveOrUpdateBatch(execGroupCodePortDataDTO.getCodeAllCodeList());
+ engineService.batchSaveSelectChar(templateVO, newCbos);
+ // 璁板綍鏁版嵁鏇存敼鏃ュ織
+ saveLogUtil.operateLog("鏁版嵁鏇存敼", false, StringUtil.format("{}\n淇敼涓�:\n{}", JSON.toJSONString(oldCbos), JSON.toJSONString(newCbos)));
+ } catch (Exception vciError) {
+ // 璁板綍鏁版嵁鏇存敼鎶ラ敊鏃剁殑鏃ュ織
+ saveLogUtil.operateLog("鏁版嵁鏇存敼", true, vciError.toString());
+ throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError);
+ }
+ }else{
+ excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls";
+ WriteExcelOption eo = new WriteExcelOption();
+ shetNameMap.forEach((shetName, errorDataList) -> {
+ eo.addSheetDataList(shetName, errorDataList);
+ });
+ try {
+ new File(excelFileName).createNewFile();
+ } catch (IOException e) {
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e));
+ }
+ ExcelUtil.writeDataToFile(excelFileName, eo);
+ }
+ return excelFileName;
+ }
+ public void batchSwitchCheckExist(Map<String,String> errorMap,List<ClientBusinessObject> cboList,CodeClassifyFullInfoBO classifyFullInfo,CodeClassifyTemplateVO templateVO,ExecGroupCodePortDataDTO execGroupCodePortDataDTO,Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap){
+ List<BaseModel> oldBaseModelList=new ArrayList<>();
+ List<CodeAllCode> codeAllCodeList=new ArrayList<>();
+ final BladeUser user = AuthUtil.getUser();
+ cboList.stream().forEach(clientBusinessObject -> {
+ String code=clientBusinessObject.getId();
+ String rowIndex=clientBusinessObject.getAttributeValue(IMPORT_ROW_INDEX);
+ List<Map<String,String>>dataList=new ArrayList<>();
+ List<String> fieldList= execGroupCodePortDataDTO.getFieldList();
+ getDatas(classifyFullInfo,templateVO,execGroupCodePortDataDTO.getFieldList(),dataList,Arrays.asList(code));
+ DefaultAttrAssimtUtil.mapToLowerCase(dataList,true);
+ if(!CollectionUtils.isEmpty(dataList)){
+ Map<String,String> newDataMap=new HashMap<>();//灏嗘柊瀵硅薄灞炴�ф殏鏃跺瓨鍌ㄥ湪Map<>
+ newDataMap.putAll(clientBusinessObject.getData());
+ Map<String,String> dataMap=dataList.get(0);
+ BaseModel oldBaseModel=new BaseModel();
+ DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,oldBaseModel,false,user);
+ String oldOid=oldBaseModel.getOid();
+
+ clientBusinessObject.setCopyFromVersion(oldOid);
+ clientBusinessObject.setAttributeValueWithNoCheck("copyfromversion",oldOid);
+ String oid=VciBaseUtil.getPk();
+ clientBusinessObject.setOid(oid);
+ clientBusinessObject.setAttributeValueWithNoCheck("oid",oid);
+ clientBusinessObject.setBtmname(oldBaseModel.getBtmname());
+ clientBusinessObject.setAttributeValueWithNoCheck("btmname",oldBaseModel.getBtmname());
+ clientBusinessObject.setLastR("1");
+ clientBusinessObject.setAttributeValueWithNoCheck("lastr","1");
+ clientBusinessObject.setFirstR("1");
+ clientBusinessObject.setAttributeValueWithNoCheck("firstr","1");
+ clientBusinessObject.setFirstV("1");
+ clientBusinessObject.setAttributeValueWithNoCheck("firstv","1");
+ clientBusinessObject.setLastV("1");
+ clientBusinessObject.setAttributeValueWithNoCheck("lastv","1");
+ clientBusinessObject.setRevisionSeq(1);
+ clientBusinessObject.setAttributeValueWithNoCheck("revisionseq","1");
+ clientBusinessObject.setVersionSeq(1);
+ clientBusinessObject.setAttributeValueWithNoCheck("versionseq","1");
+ clientBusinessObject.setRevisionRule(oldBaseModel.getRevisionRule());
+ clientBusinessObject.setAttributeValueWithNoCheck("revisionrule",oldBaseModel.getRevisionRule());
+ clientBusinessObject.setVersionRule(oldBaseModel.getRevisionRule());
+ clientBusinessObject.setAttributeValueWithNoCheck("versionrule",oldBaseModel.getVersionRule());
+ clientBusinessObject.setVersionValue(oldBaseModel.getVersionValue());
+ clientBusinessObject.setAttributeValueWithNoCheck("versionvalue",oldBaseModel.getVersionValue());
+ clientBusinessObject.setLctid(oldBaseModel.getLctid());
+ clientBusinessObject.setAttributeValueWithNoCheck("lctid",oldBaseModel.getLctid());
+ clientBusinessObject.setId(oldBaseModel.getId());
+ clientBusinessObject.setAttributeValueWithNoCheck("id",oldBaseModel.getId());
+ clientBusinessObject.setName(oldBaseModel.getName());
+ clientBusinessObject.setAttributeValueWithNoCheck("name",oldBaseModel.getName());
+ clientBusinessObject.setLcStatus(CodeDefaultLC.RELEASED.getValue());
+ clientBusinessObject.setAttributeValueWithNoCheck("lcstatus",CodeDefaultLC.RELEASED.getValue());
+ clientBusinessObject.setDescription("瀵煎叆闆嗗洟鐮�");
+ clientBusinessObject.setAttributeValueWithNoCheck("description","瀵煎叆闆嗗洟鐮�");
+ clientBusinessObject.setOwner("1");
+ clientBusinessObject.setAttributeValueWithNoCheck("owner","1");
+ clientBusinessObject.setTenantId(AuthUtil.getTenantId());
+ clientBusinessObject.setAttributeValueWithNoCheck("tenant_id",AuthUtil.getTenantId());
+ clientBusinessObject.setCreator(oldBaseModel.getCreator());
+ clientBusinessObject.setAttributeValueWithNoCheck("creator",oldBaseModel.getCreator());
+ SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ clientBusinessObject.setCreateTime(oldBaseModel.getCreateTime());
+ clientBusinessObject.setAttributeValueWithNoCheck("createtime", formatter.format(oldBaseModel.getCreateTime()));
+ clientBusinessObject.setLastModifier(AuthUtil.getUserAccount());
+ clientBusinessObject.setAttributeValueWithNoCheck("lastmodifier",AuthUtil.getUserAccount());
+ clientBusinessObject.setCreateTime(new Date());
+ clientBusinessObject.setAttributeValueWithNoCheck("lastmodifytime", formatter.format(new Date()));
+ clientBusinessObject.setRevisionValue(String.valueOf(Integer.parseInt(oldBaseModel.getRevisionValue())+1));
+ clientBusinessObject.setRevisionOid(oldBaseModel.getRevisionOid());
+ clientBusinessObject.setAttributeValueWithNoCheck("revisionoid",oldBaseModel.getRevisionOid());
+ clientBusinessObject.setAttributeValueWithNoCheck("revisionvalue",String.valueOf(Integer.parseInt(oldBaseModel.getRevisionValue())+1));
+
+ clientBusinessObject.setNameOid(oldBaseModel.getNameOid());
+ clientBusinessObject.setAttributeValueWithNoCheck("nameoid",oldBaseModel.getNameOid());
+
+ clientBusinessObject.setAttributeValueWithNoCheck(CODE_CLASSIFY_OID_FIELD,oldBaseModel.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""));
+ clientBusinessObject.setAttributeValueWithNoCheck(CODE_FULL_PATH_FILED,oldBaseModel.getData().getOrDefault(CODE_FULL_PATH_FILED,""));
+ clientBusinessObject.setAttributeValueWithNoCheck(CODE_TEMPLATE_OID_FIELD,oldBaseModel.getData().getOrDefault(CODE_TEMPLATE_OID_FIELD,""));
+ clientBusinessObject.setTs(new Date());
+ clientBusinessObject.setAttributeValueWithNoCheck("ts",formatter.format(new Date()));
+ oldBaseModel.setLastV("0");
+ oldBaseModel.getData().put("lastv","0");
+ oldBaseModelList.add(oldBaseModel);
+ List<CodeAllCode> oldCodeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getId,code));
+ CodeAllCode codeAllCode=new CodeAllCode();
+ if(!CollectionUtils.isEmpty(oldCodeAllCodeList)){
+ codeAllCode=oldCodeAllCodeList.get(0);
+ codeAllCode.setId(code);
+ codeAllCode.setLcStatus(CodeDefaultLC.RELEASED.getValue());
+ codeAllCode.setCreateCodeOid(clientBusinessObject.getOid());
+ codeAllCode.setCreateCodeBtm(clientBusinessObject.getBtmname());
+ codeAllCode.setLastModifyTime(new Date());
+ codeAllCode.setLastModifier(AuthUtil.getUserAccount());
+ codeAllCodeList.add(codeAllCode);
+ if(!oldBaseModel.getLcStatus().equals(CodeDefaultLC.RELEASED.getValue())||!codeAllCode.getLcStatus().equals(CodeDefaultLC.RELEASED.getValue())){
+ errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍦ㄧ郴缁熶腑鏁版嵁涓嶆槸鍙戝竷鐘舵��");
+ }
+ }else{
+ errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍦ㄧ郴缁熶腑鏈煡璇㈠埌鐩稿簲鐨勭爜鍊兼暟鎹�");
+ }
+ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!fieldIndexMap.containsValue(s.getId()) &&
+ ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
+ ).collect(Collectors.toList());
+ attrVOS.stream().forEach(codeClassifyTemplateAttrVO -> {//灏嗕笉闇�瑕佹洿鏀圭殑榛樿瀛楁鎴栬�呬笉鏇存敼鐨勫睘鎬у鍒跺埌鏂扮殑鐗堟湰涓�
+ String arrtibuteKey=codeClassifyTemplateAttrVO.getId();
+ Map<String,String>attrDataMap=oldBaseModel.getData();
+ if(attrDataMap.containsKey(arrtibuteKey)){
+ String arrtibuteValue=attrDataMap.get(arrtibuteKey);
+ clientBusinessObject.setAttributeValueWithNoCheck(arrtibuteKey,arrtibuteValue);
+ }
+ });
+ }else{
+ errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍦ㄧ郴缁熶腑鏈煡璇㈠埌鐩稿簲鐨勬渶鏂扮増鏁版嵁");
+ }
+ });
+ execGroupCodePortDataDTO.setOldList(oldBaseModelList);
+ execGroupCodePortDataDTO.setCodeAllCodeList(codeAllCodeList);
+ }
+ /**
+ *
+ * @param fieldIndexMap
+ * @param rowDataList
+ * @param cboList
+ */
+ private void getExportGroupCodeDatas(Map<Integer,String> fieldIndexMap,List<SheetRowData> rowDataList,List<ClientBusinessObject>cboList){
+ rowDataList.stream().forEach(sheetRowData -> {
+ String rowIndex= sheetRowData.getRowIndex();
+ ClientBusinessObject cbo=new ClientBusinessObject();
+ cbo.setAttributeValue(IMPORT_ROW_INDEX,rowIndex);
+ sheetRowData.getData().forEach((index,value)->{
+ String field = fieldIndexMap.get(index);
+ if (StringUtils.isBlank(field)) {
+ throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
+ }
+ try {
+ cbo.setAttributeValueWithNoCheck(field, value);
+ if (WebUtil.isDefaultField(field)) {
+ WebUtil.setValueToField(field, cbo, value);
+ }
+ } catch (VciBaseException e) {
+ log.error("璁剧疆灞炴�х殑鍊奸敊璇�", e);
+ }
+ });
+ cboList.add(cbo);
+ });
+ }
+ /***
+ * 闆嗗洟瀵煎嚭妯℃澘灞炴�ф槧灏勪俊鎭幏鍙�
+ * @param templateVO
+ * @param execGroupCodePortDataDTO
+ */
+ 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);
+ String id = "";
+ if ("闆嗗洟鐮�".equalsIgnoreCase(title)) {
+ id = CODE_GROUP_FIELD;
+ }
+ if ("浼佷笟缂栫爜".equalsIgnoreCase(title)) {
+ id = CODE_FIELD;
+ }
+ if(codeSystemObjectMap.containsKey(title)) {
+ CodeAndGroupCodeAttrMappingDTO codeAndGroupCodeAttrMappingDTO = codeSystemObjectMap.get(title.replace(KEY_ATTR_CHAR, "").replace(REQUIRED_CHAR, ""));
+ id = codeAndGroupCodeAttrMappingDTO.getTargetAttrKey();
+ }
+ if (com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(id)) {
+ fieldIndexMap.put(i, id);
+ }
+ }
+
+
+ }
+ /***
+ * 鏌ヨ鏈湁闆嗗洟鐮佺殑鏁版嵁
+ * @param classifyFullInfo
+ * @param templateVO
+ * @param selectFieldList
+ * @param dataList
+ */
+ private void getDatas(CodeClassifyFullInfoBO classifyFullInfo,CodeClassifyTemplateVO templateVO,LinkedList<String> selectFieldList,List<Map<String,String>>dataList,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