From f5b7cec75d47c5eedf96a1d10043bf7c51b849a1 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期四, 16 十一月 2023 15:09:10 +0800
Subject: [PATCH] 属性码段-联动效果
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 63 +++++++++++++++++++++----------
1 files changed, 43 insertions(+), 20 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 4696e02..65946d8 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,7 @@
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;
@@ -65,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,8 +97,12 @@
@Value("${batchadd.exportattr.type:鍩烘湰淇℃伅}")
public String BATCHADD_EXCEPORT_ATTR_TYPE;
- @Value("${batchadd.redis.time:6000000}")
+
public int BATCHADD_REDIS_TIME;
+
+ @Value("${batchadd.import_data_limit:5001}")
+ private Integer IMPORT_DATA_LIMIT;
+
/**
* 涓婚搴撳垎绫荤殑鏈嶅姟
*/
@@ -397,9 +403,9 @@
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);
@@ -407,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())
@@ -787,11 +793,15 @@
String uuid=VciBaseUtil.getPk();
boolean isCreateUUid=false;
boolean isExport=false;
- long start = System.currentTimeMillis();
+ //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+"鏉$殑鏁版嵁");
}
//鍘嗗彶瀵煎叆鐨勬椂鍊欎笉澶勭悊缂栫爜
//----閫昏緫鍐呭----
@@ -815,7 +825,7 @@
//鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
CodeClassifyTemplateVO templateVO = new CodeClassifyTemplateVO();
/** if (!templateService.checkChildHasSameTemplate(classifyFullInfo.getCurrentClassifyVO().getOid())) {
- throw new VciBaseException("褰撳墠鐨勫垎绫讳互鍙婁笅绾у垎绫荤殑妯℃澘涓嶇浉鍚�");
+ throw new VciBaseException("褰撳墠鐨勫垎绫讳互鍙婁笅绾у垎绫荤殑妯℃澘涓嶇浉鍚�");
}***/
//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
//鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇
@@ -932,7 +942,8 @@
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);
@@ -1027,7 +1038,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);
@@ -1044,7 +1055,7 @@
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());
});
}
@@ -1057,7 +1068,7 @@
engineService.batchSaveSelectChar(templateVO, dataCBOIdList);
}
}
- long end = System.currentTimeMillis();
+ //long end = System.currentTimeMillis();
//log.info("=============for鎵ц鏃堕棿================="+String.valueOf((end-start)/1000));
String excelFileName="";
if(isExport&&!CollectionUtils.isEmpty(shetNameMap)) {
@@ -1138,7 +1149,6 @@
* @param currentTemplateVO
* @param templateColumnVOMap
*/
-
private void createTemplate(CodeClassifyTemplateVO currentTemplateVO,Map<String,List<ColumnVO>>templateColumnVOMap){
List<CodeClassifyTemplateAttrVO> templateAttrVOS = currentTemplateVO.getAttributes().stream().filter(s ->
@@ -1528,7 +1538,6 @@
total += commonsMapper.queryCountBySql(countSql);
}
}else{
-
total = commonsMapper.queryCountBySql(countSql);
}
List<String> selectFieldList = new ArrayList<>();
@@ -1749,7 +1758,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);
}
@@ -1955,7 +1965,6 @@
//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
//濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
-
Map<String,String> errorKeyMap=new HashMap<>();
//1.鍒嗙被娉ㄥ叆
@@ -2364,6 +2373,7 @@
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?false:true) {
// throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
@@ -2394,12 +2404,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();
@@ -2936,7 +2954,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;
@@ -3129,6 +3147,7 @@
});
}
+
/**
* excel杞崲涓篶bo鐨勫璞�
* @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
@@ -3146,7 +3165,7 @@
ClientBusinessObject cbo=new ClientBusinessObject();
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) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
}
@@ -3503,6 +3522,7 @@
});
}
}
+
/***
* 鏍¢獙鍒嗙被瀵瑰簲鐨勬ā鏉夸俊鎭�
* @param titleRowData
@@ -3586,6 +3606,7 @@
}
return codeClassifyTemplateVOList ;
}
+
/**
* 浠庡睘鎬т笂鑾峰彇鍙傜収鐨勫唴瀹�
* @param attrVO 灞炴�х殑淇℃伅
@@ -3737,7 +3758,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);
@@ -3853,7 +3875,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 {
@@ -4033,6 +4055,7 @@
}
}
}
+
private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){
List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>();
oldDataMap.stream().forEach(dataMap->{
--
Gitblit v1.9.3