From ba90ddf7618567877f1211f671ae1b34c378faad Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期五, 17 十一月 2023 16:14:21 +0800
Subject: [PATCH] 整合代码
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 443 +++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 312 insertions(+), 131 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 a6a8097..b1d2ef4 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -3,6 +3,8 @@
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.bo.AttributeValue;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
@@ -11,6 +13,7 @@
import com.vci.ubcs.code.entity.CodeAllCode;
import com.vci.ubcs.code.enumpack.CodeDefaultLC;
import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
+import com.vci.ubcs.code.enumpack.sysIntegrationPushTypeEnum;
import com.vci.ubcs.code.lifecycle.CodeAllCodeLC;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.*;
@@ -63,6 +66,7 @@
import java.io.File;
import java.io.IOException;
import java.text.MessageFormat;
+import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -95,6 +99,10 @@
@Value("${batchadd.redis.time:6000000}")
public int BATCHADD_REDIS_TIME;
+
+ @Value("${batchadd.import_data_limit:5001}")
+ private Integer IMPORT_DATA_LIMIT;
+
/**
* 涓婚搴撳垎绫荤殑鏈嶅姟
*/
@@ -154,7 +162,11 @@
*/
@Autowired
private IBtmTypeClient btmTypeClient;
-
+ /***
+ * 鐢宠闆嗗洟缂栫爜鏈嶅姟
+ */
+ @Resource
+ private IMdmInterJtClient mdmInterJtClient;
/***
* 瀵嗙骇鏈嶅姟
*/
@@ -173,7 +185,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);
@@ -383,17 +395,17 @@
&& (isHistory || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
).collect(Collectors.toList());
- if (CollectionUtils.isEmpty(templateAttrVOS)) {
- throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
- }
+ 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()));
}
for (int i = 0; i < templateAttrVOS.size(); i++) {
CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i);
@@ -401,7 +413,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())
@@ -489,7 +501,6 @@
return text;
}
-
/**
* 鎵归噺鐢宠缂栫爜鏁版嵁
*
@@ -518,7 +529,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<>();
@@ -532,7 +543,6 @@
// return null;
return codeImProtRusultVO;
}
-
/***
* 浠庨《灞傛壒閲忕敵璇峰鍏ユ柟娉�
@@ -639,13 +649,12 @@
});
-
//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
//濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
//2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
batchCheckRequiredAttrOnOrder(templateVO,allCboList,errorMap);
//3.鍒ゆ柇鍏抽敭灞炴��
- CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, allCboList);
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, allCboList,errorMap);
Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
@@ -655,7 +664,7 @@
}
if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
+ errorMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex,"") );
});
}
//鍒嗙被娉ㄥ叆
@@ -713,10 +722,8 @@
createRedisDatas(uuid + "-ok",codeImprotDataVOS, newErrorMap,true);
});
+
//寰�鐗╁搧鑺傜偣涓婂姞妯℃澘
-
-
-
List<String> needRowIndexList=new ArrayList<>();
CodeImProtRusultVO codeImProtRusultVO = new CodeImProtRusultVO();
if(errorMap.size()>0) {
@@ -786,10 +793,15 @@
String uuid=VciBaseUtil.getPk();
boolean isCreateUUid=false;
boolean isExport=false;
+ //long start = System.currentTimeMillis();
for(int i=0;i<sheetDataSetList.size()-1;i++) {
if (CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(i).getRowData())
|| sheetDataSetList.get(i).getRowData().size() < 1) {
continue;
+ }
+ // 鍗曟瀵煎叆鏁伴噺闄愬埗
+ if(sheetDataSetList.get(i).getRowData().size() > IMPORT_DATA_LIMIT){
+ throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�"+IMPORT_DATA_LIMIT+"鏉$殑鏁版嵁");
}
//鍘嗗彶瀵煎叆鐨勬椂鍊欎笉澶勭悊缂栫爜
//----閫昏緫鍐呭----
@@ -803,7 +815,6 @@
// 5.3 浼佷笟缂栫爜鐨勯暱搴︼紝鍜岀紪鐮佽鍒欑殑闀垮害瑕佸搴斾笂
// 5.4 鑾峰彇娴佹按鐮佹鐨勫�硷紝鍘婚櫎濉厖鐨勫瓧绗︼紝鐪嬫祦姘村彿鏄灏戯紝鐒跺悗灏嗘祦姘村彿鍜岀幇鍦ㄧ殑鏈�澶ф祦姘村彿鍒ゆ柇锛屽皬浜庡氨鐩存帴褰曞叆锛屽ぇ浜庡垯淇敼鏈�澶ф祦姘村彿
// 5.5 瀛樺偍浼佷笟缂栫爜鍒癮llcode涓�
-
//鏌ヨ鍒嗙被鍜屾ā鏉�
CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
@@ -814,7 +825,7 @@
//鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
CodeClassifyTemplateVO templateVO = new CodeClassifyTemplateVO();
/** if (!templateService.checkChildHasSameTemplate(classifyFullInfo.getCurrentClassifyVO().getOid())) {
- throw new VciBaseException("褰撳墠鐨勫垎绫讳互鍙婁笅绾у垎绫荤殑妯℃澘涓嶇浉鍚�");
+ throw new VciBaseException("褰撳墠鐨勫垎绫讳互鍙婁笅绾у垎绫荤殑妯℃澘涓嶇浉鍚�");
}***/
//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
//鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇
@@ -845,7 +856,7 @@
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<>();
+ List<ClientBusinessObject> cboList = new CopyOnWriteArrayList<>();
String fullPath = getFullPath(classifyFullInfo);
//鎴戜滑闇�瑕佽幏鍙栧埌鎵�鏈夌殑涓嬬骇鍒嗙被鐨刼id鐨勮矾寰勶紝鍥犱负鍚庨潰闇�瑕�
Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap = getChildClassifyPathMap(classifyFullInfo, fullPath);
@@ -892,7 +903,7 @@
//鍒ゆ柇蹇呰緭椤�
batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap);
- //鏈夐檺鏍¢獙缂栫爜鏄惁瀛樺湪
+ //浼樺厛鏍¢獙缂栫爜鏄惁瀛樺湪
batchCheckIdExistOnOrder(templateVO, cboList, errorMap);
//boolean
@@ -902,15 +913,18 @@
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);
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorMap);
Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
if (!CollectionUtils.isEmpty(selfRepeatRowIndexList)) {
@@ -920,7 +934,7 @@
}
if (!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)) {
keyAttrRepeatRowIndexList.stream().forEach(rowIndex -> {
- errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅");
+ errorMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex, ""));
});
}
//4.鏍¢獙瑙勫垯
@@ -931,14 +945,15 @@
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));
+ // 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 -> {
@@ -1026,7 +1041,7 @@
//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<>();
+ List<BaseModel> dataCBOList=new CopyOnWriteArrayList<>();
thisCbos.stream().forEach(clientBusinessObject -> {
BaseModel baseModel=new BaseModel();
BeanUtil.convert(clientBusinessObject,baseModel);
@@ -1037,12 +1052,13 @@
if (!CollectionUtils.isEmpty(thisCbos)) {
try {
+ // TODO 澶氱嚎绋嬫祦闂
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, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡");
+ errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage());
});
}
@@ -1055,6 +1071,8 @@
engineService.batchSaveSelectChar(templateVO, dataCBOIdList);
}
}
+ //long end = System.currentTimeMillis();
+ //log.info("=============for鎵ц鏃堕棿================="+String.valueOf((end-start)/1000));
String excelFileName="";
if(isExport&&!CollectionUtils.isEmpty(shetNameMap)) {
excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls";
@@ -1080,6 +1098,7 @@
return codeImProtRusultVO;
}
+
/*private void converBaseModels(List<ClientBusinessObject> clientBusinessObjects,List<BaseModel>dataCBOList){
clientBusinessObjects.stream().forEach(clientBusinessObject -> {
BaseModel baseModel=new BaseModel();
@@ -1093,6 +1112,7 @@
});
}*/
+
/***
* 浠巈xecl閲屾瀯寤哄璞�
* @param rowDataList
@@ -1132,7 +1152,6 @@
* @param currentTemplateVO
* @param templateColumnVOMap
*/
-
private void createTemplate(CodeClassifyTemplateVO currentTemplateVO,Map<String,List<ColumnVO>>templateColumnVOMap){
List<CodeClassifyTemplateAttrVO> templateAttrVOS = currentTemplateVO.getAttributes().stream().filter(s ->
@@ -1285,7 +1304,7 @@
//2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap);
//3.鍒ゆ柇鍏抽敭灞炴��
- CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorMap);
Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
@@ -1295,7 +1314,7 @@
}
if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
+ errorMap.put(rowIndex,"鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex,""));
});
}
//鍒嗙被娉ㄥ叆
@@ -1522,7 +1541,6 @@
total += commonsMapper.queryCountBySql(countSql);
}
}else{
-
total = commonsMapper.queryCountBySql(countSql);
}
List<String> selectFieldList = new ArrayList<>();
@@ -1722,7 +1740,7 @@
).collect(Collectors.toList());
String fullPath = getFullPath(classifyFullInfo);
excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList, codeClassifyTemplateVO,cboList,fullPath,!isImprot);
- Map<String,String> errorMap=new HashMap<>();
+ Map<String,String> errorMap=new ConcurrentHashMap<>();
Map<String/**璺緞**/, CodeClassifyVO> pathMap=new HashMap<>() ;
//鏍¢獙缂栫爜瑙勫垯鍜岀爜娈垫槸鍚︽纭�
Map<String, List<String>> ruleRowIndexMap = new ConcurrentHashMap<>();
@@ -1743,7 +1761,8 @@
Map<String/**鍒嗙被涓婚敭**/, String/**瑙勫垯涓婚敭**/> ruleOidMap = new ConcurrentHashMap<String, String>();
List<String> unExistRuleClassifyOidList = new CopyOnWriteArrayList<>();
checkRuleOidInHistory(classifyVOMap, ruleOidMap, unExistRuleClassifyOidList);
- ruleVOMap = ruleService.listCodeRuleByIds(ruleOidMap.values(), true).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+ // TODO 鏀圭敤oid鏌ヨ鐨勶紝杩欏効涓嶈鐢╥d
+ ruleVOMap = ruleService.listCodeRuleByOids(ruleOidMap.values()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
checkSecLengthInHistory(cboList, classifyVOMap, ruleVOMap, ruleOidMap, errorMap, ruleRowIndexMap);
}
@@ -1766,12 +1785,12 @@
//鏈�鍚庡紕缁勫悎瑙勫垯
batchSwitchComponentAttrOnOrder(attrVOS,cboList);
//3.鍒ゆ柇鍏抽敭灞炴��
- CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO, cboList);
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO, cboList,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.鏍¢獙瑙勫垯
@@ -1900,7 +1919,7 @@
*/
@Override
public void batchSyncApplyCode(CodeOrderDTO orderDTO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs,boolean isCodeOrGroupCode) {
- Map<String,String> errorMap=new HashMap<>();
+ Map<String,String> errorMap=new ConcurrentHashMap<>();
VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�");
CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
//瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
@@ -1932,7 +1951,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);
@@ -1948,20 +1968,33 @@
//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
//濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌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,errorMap);
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->{
/* //浼犲叆鏁版嵁涔嬮棿鍏抽敭灞炴�х殑鏍¢獙
@@ -1990,23 +2023,9 @@
resultDataObjectDetailDO.setMsg(errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
*/
- errorKeyMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
+ errorKeyMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.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 = {""};
@@ -2064,8 +2083,8 @@
String lcstatus =newCbo.getLcStatus();
String newOid =newCbo.getOid();
Date ts =newCbo.getTs();
- groupCode=newCbo.getData().get("GROUPCODE");
- code=newCbo.getId();
+ code = StringUtils.isBlank(newCbo.getId())?"":newCbo.getId();
+ groupCode=newCbo.getData().getOrDefault("GROUPCODE","");
String lastmodifier=newCbo.getLastModifier();
if (lcstatus!=null&&!lcstatus.equals(CodeDefaultLC.RELEASED.getValue())) {
newCbo.setOid(newOid);
@@ -2083,6 +2102,7 @@
XMLResultDataObjectDetailDO resultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
if(isCodeOrGroupCode) {
if(StringUtils.isBlank(groupCode)){
+ errorid="1";
mes+="锛涚敵璇风殑缂栫爜绫诲瀷涓洪泦鍥㈢爜锛岀瓑寰呴泦鍥㈢紪鐮佽祴鍊�";
}
resultDataObjectDetailDO.setCode(groupCode);
@@ -2106,10 +2126,7 @@
}
// });
- //璁剧疆榛樿鍊�
- batchSwitchAttrDefault(attrVOS, cboList);
- //鏈�鍚庡紕缁勫悎瑙勫垯
- batchSwitchComponentAttrOnOrder(attrVOS,cboList);
+
//瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
String rowIndex =cbo.getAttributeValue(IMPORT_ROW_INDEX);
@@ -2125,38 +2142,46 @@
needSaveCboList.stream().forEach(clientBusinessObject -> {
BaseModel baseModel=new BaseModel();
BeanUtil.convert(clientBusinessObject,baseModel);
- //(VciBaseUtil.objectToMapString(clientBusinessObject));
+ //(VciBaseUtil.objectToMapString(clientBusinessObject));
dataCBOList.add(baseModel);
allNeedSaveCboList.add(baseModel.getOid());
});
try {
+ List<String>applyGroupCodeIdList=new ArrayList<>();
productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
//濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
engineService.batchSaveSelectChar(templateVO, dataCBOList);
// if(!isProcess){
dataCBOList.stream().forEach(needSaveCbo->{
+
XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
- String code=needSaveCbo.getId();
- String groupCode=needSaveCbo.getData().getOrDefault("GROUPCODE","");
+ 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(msg);
resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
+ //澶勭悊浼犻�佺殑鏁版嵁涓叧閿睘鎬ч噸澶嶇殑锛岀洿鎺ユ嬁鍒板凡缁忕敵璇峰埌缂栫爜鐨勬暟鎹紪鐮佺洿鎺ュ皢璧嬬粰鍏抽敭灞炴�ч噸澶嶇殑鏁版嵁
+ LinkedList<XMLResultDataObjectDetailDO> repeatDataObjectDetailDOS=handleApplyDataKeyAttrRepeat(keyAttrOkOidTORepeatOidMap,codeOidToSystemOidMap,needSaveCbo,isCodeOrGroupCode);
+ resultDataObjectDetailDOs.addAll(repeatDataObjectDetailDOS);
});
/* }else{
needSaveCboList.stream().forEach(needSaveCbo->{
@@ -2174,6 +2199,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->{
@@ -2196,14 +2228,60 @@
}
/***
+ *缁欏悓涓�鎵圭敵璇风紪鐮佸瓨鍦ㄥ叧閿睘鎬х殑鏁版嵁璧嬩笂涓�鑷寸紪鐮�
+ * @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="";
//鏌ヨ鍒嗙被鍜屾ā鏉�
@@ -2228,8 +2306,8 @@
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])) + ")");
+ //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(templateVO.getBtmTypeId());
@@ -2259,15 +2337,26 @@
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());
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)){
@@ -2288,8 +2377,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(),"")+";鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
}
@@ -2297,20 +2387,20 @@
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);
//浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
@@ -2318,12 +2408,20 @@
cbo.setName(orderDTO.getName());
try {
cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
- cbo.setAttributeValue("name", orderDTO.getName());
+ // 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();
@@ -2331,7 +2429,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);
@@ -2350,7 +2448,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);
@@ -2408,9 +2506,19 @@
//瀛樺偍鏁版嵁
try {
engineService.updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(),updateList);
- codeAllCodeService.saveBatch(codeAllCodeList);
+ codeAllCodeService.saveOrUpdateBatch(codeAllCodeList);
if(deleteList.size()>0) {
commonsMapper.deleteByTaleAndOid(tableName, VciBaseUtil.array2String(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="鏇存柊/鐘舵�佹洿鏀�/鍒犻櫎鎴愬姛锛�";
@@ -2437,6 +2545,7 @@
}
}
}
+
/**
* 鏍¢獙灞炴�ф槸鍚︿负蹇呰緭
*
@@ -2458,6 +2567,7 @@
});
}
}
+
/**
* 杞崲缁勫悎瑙勫垯鐨勫��
*
@@ -2504,6 +2614,7 @@
});
}
}
+
/**
* 鏍¢獙鍏抽敭灞炴��
*
@@ -2532,29 +2643,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 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 lastR = '1' and lastV = '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);
}
}
}
+
/**
* 鏍¢獙鏋氫妇鐨勫唴瀹�
*
@@ -2578,6 +2715,7 @@
});
}
}
+
/**
* 杞崲鏃堕棿鐨勬牸寮�
*
@@ -2639,10 +2777,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());
}
}
@@ -2670,6 +2808,7 @@
orderDTO.getData().put(attrId, value);
}
}
+
/**
* 浠庣紪鐮佺敵璇蜂俊鎭璞′笂鑾峰彇鏌愪釜灞炴�х殑鍊�
*
@@ -2689,6 +2828,7 @@
}
return value;
}
+
/**
* 澶勭悊鍒嗙被娉ㄥ叆鐨勪俊鎭�
*
@@ -2734,6 +2874,7 @@
});
}
}
+
/***
*
* @param codeClassifyVO
@@ -2744,13 +2885,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());//鐘舵��
@@ -2824,7 +2971,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;
@@ -2968,6 +3115,7 @@
});
}
+
/**
* excel杞崲涓篶bo鐨勫璞�
* @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
@@ -3002,7 +3150,7 @@
Integer userSecret = VciBaseUtil.getCurrentUserSecret();
cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
}
- cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
}else{
//姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
//cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
@@ -3017,6 +3165,7 @@
});
}
+
/**
* excel杞崲涓篶bo鐨勫璞�
* @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
@@ -3032,9 +3181,9 @@
String fullPath,boolean newCode){
rowDataList.stream().forEach(rowData -> {
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);
+ String field = fieldIndexMap.get(index);
if (StringUtils.isBlank(field)) {
throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
}
@@ -3059,7 +3208,7 @@
Integer userSecret = VciBaseUtil.getCurrentUserSecret();
cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
}
- cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
}else{
//姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
//cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
@@ -3105,6 +3254,7 @@
}
}
}
+
/**
* 鎵归噺杞崲鏃堕棿閮戒负鎸囧畾鐨勬牸寮�
* @param attrVOS 妯℃澘灞炴��
@@ -3330,6 +3480,7 @@
}
}
+
/**
* 鎵归噺妫�鏌ヤ紒涓氱紪鐮佹槸鍚﹀瓨鍦�
* @param templateVO 妯℃澘鐨勬樉绀哄璞�
@@ -3391,6 +3542,7 @@
});
}
}
+
/***
* 鏍¢獙鍒嗙被瀵瑰簲鐨勬ā鏉夸俊鎭�
* @param titleRowData
@@ -3474,6 +3626,7 @@
}
return codeClassifyTemplateVOList ;
}
+
/**
* 浠庡睘鎬т笂鑾峰彇鍙傜収鐨勫唴瀹�
* @param attrVO 灞炴�х殑淇℃伅
@@ -3535,6 +3688,7 @@
}
return showText;
}
+
/**
* 澶勭悊鏋氫妇鐨勬樉绀哄璞�
* @param attrVOS 妯℃澘灞炴��
@@ -3583,7 +3737,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)) {
@@ -3596,6 +3750,7 @@
}
}
}
+
/**
* 澶勭悊鍒嗙被娉ㄥ叆
* @param attrVOS 妯℃澘灞炴��
@@ -3625,7 +3780,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);
@@ -3657,7 +3813,7 @@
* @param cboList 鎵归噺鐨勬暟鎹�
*/
private CodeImportResultVO batchCheckKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO,
- List<ClientBusinessObject> cboList) {
+ List<ClientBusinessObject> cboList,Map<String,String> errorMap) {
//涓嶮dmEngineServiceImpl閲岀殑checkKeyAttrOnOrder鐩镐技
//鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮�
CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
@@ -3684,7 +3840,9 @@
//2.鍒ゆ柇鍏抽敭灞炴�у湪绯荤粺閲屾槸鍚﹂噸澶�
//鍥犱负鏁版嵁閲忓緢澶э紝鎵�浠ュ緱鎯冲姙娉曞苟琛�
//SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
- Map<String,List<BaseModel>> indexTODataMap=new HashMap<>();
+ Map<String,List<BaseModel>> indexTODataMap=new ConcurrentHashMap<>();
+ // 鏌ヨ涓嶉渶瑕佸弬涓庡叧閿睘鎬ф牎楠岀殑闄よ嚜宸变互澶栫殑鎵�鏈夊垎绫籵id
+ final String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid());
List<ClientBusinessObject> repeatDataMap = cboList.parallelStream().filter(cbo -> {
//姣忚閮藉緱鏌ヨ.濡傛灉鍏朵腑鍑虹幇浜嗛敊璇紝鎴戜滑灏辩洿鎺ユ姏鍑哄紓甯革紝鍏朵綑鐨勬樉绀�
//VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
@@ -3698,22 +3856,29 @@
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);
+ }
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<>();
+ List<String> repeatData = commonsMapper.selectList(sqlBO.getSqlId());
+ if(!repeatData.isEmpty()){
+ final 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);
});
+ // 娣诲姞閿欒鍊�
+ 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 isKeyCheck;
+ return !repeatData.isEmpty();
}else{
return false;
}
@@ -3741,7 +3906,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 {
@@ -3827,7 +3992,6 @@
return childOidPathMap;
}
-
/**
* 鑾峰彇瀵煎叆鐨勫唴瀹逛腑鍏抽敭灞炴�ч噸澶嶇殑琛屽彿
* @param ketAttrMap 鍏抽敭灞炴�х殑鏄犲皠
@@ -3836,7 +4000,7 @@
* @return 閲嶅鐨勮鍙�
*/
private void getSelfRepeatRowIndex(Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap,
- List<ClientBusinessObject> dataList,CodeKeyAttrRepeatVO keyRuleVO,CodeImportResultVO resultVO){
+ 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());
@@ -3877,11 +4041,11 @@
if(rowIndexKeyStringMap.containsValue(keyString) && StringUtils.isNotBlank(keyString)){
selfRepeatRowIndexList.add(rowIndex);
String okOid=okOidKeyStringMap.getOrDefault(keyString,"");
- if(StringUtils.isBlank(okOid)){
+ if(StringUtils.isNotBlank(okOid)){
List<String>newOidList=new ArrayList<>();
newOidList.add(oid);
if(keyAttrOkOidTORepeatOidMap.containsKey(okOid)){
- List<String> oldOidList= keyAttrOkOidTORepeatOidMap.get(okOid);
+ List<String> oldOidList = keyAttrOkOidTORepeatOidMap.get(okOid);
newOidList.addAll(oldOidList);
}
@@ -3896,6 +4060,7 @@
resultVO.setKeyAttrRepeatRowIndexList(selfRepeatRowIndexList);
resultVO.setKeyAttrOkOidTORepeatOidMap(keyAttrOkOidTORepeatOidMap);
}
+
/**
* excel鐨勬爣棰樹笂鑾峰彇瀛楁鎵�鍦ㄧ殑浣嶇疆
* @param titleRowData 鏍囬鐨勫唴瀹�
@@ -3928,7 +4093,7 @@
DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject);
for (String key:dataMap.keySet()){
Object value= dataMap.getOrDefault(key,"");
- clientBusinessObject.setAttributeValue(key,value.toString());
+ clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString());
}
clientBusinessObjectList.add(clientBusinessObject);
});
@@ -4010,6 +4175,7 @@
codeClassifyDatas.addAll(newCodeImprotDataVO);
log.info("222");
}
+
/***
* @param titleRowData
* @param newTemplateVO
@@ -4055,7 +4221,8 @@
codeImprotDataVO.setColNames(colNames);
codeImprotDataVO.getDatas().add(filedValueMap);
}
- /***
+
+ /**
* 姝g‘閿欒鏁版嵁redis缂撳瓨
* @param uuid
* @param templateVO
@@ -4356,4 +4523,18 @@
}
}
+ /***
+ * 鐢宠闆嗗洟缂栫爜
+ * @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);
+ }
+ }
+
}
--
Gitblit v1.9.3