From f4c578e2d3334e8bcb70ac0552a058029c35b5af Mon Sep 17 00:00:00 2001
From: lihang <lihang@vci-tech.com>
Date: 星期一, 10 七月 2023 11:18:40 +0800
Subject: [PATCH] 元数据页面修改
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 106 ++++++++++++++++++++++++++++++++++------------------
1 files changed, 69 insertions(+), 37 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 90a9ab3..eae24b4 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
@@ -38,10 +38,7 @@
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;
@@ -54,6 +51,7 @@
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.ss.usermodel.Workbook;
+import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.tool.api.R;
import org.springframework.beans.BeanUtils;
@@ -1379,8 +1377,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;
}
@@ -1396,7 +1393,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)){
@@ -1430,7 +1427,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<>();
@@ -1451,7 +1448,8 @@
@Override
public R batchImportData(List<CodeImprotSaveDatVO> codeImprotSaveDatVOList, String classifyAttr, boolean isImprot) {
- List<BaseModel> dataCBOList=new ArrayList<>();
+
+ boolean success=true;
codeImprotSaveDatVOList.stream().forEach(codeImprotSaveDatVO -> {
List<SheetRowData> rowDataList = new ArrayList<>();
List<ClientBusinessObject>cboList=new ArrayList<>();
@@ -1490,19 +1488,31 @@
String fullPath = getFullPath(classifyFullInfo);
excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList, codeClassifyTemplateVO,cboList,fullPath,!isImprot);
Map<String,String> errorMap=new HashMap<>();
+ 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);
+ ruleVOMap = ruleService.listCodeRuleByIds(ruleOidMap.values(), true).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+
+ checkSecLengthInHistory(cboList, classifyVOMap, ruleVOMap, ruleOidMap, errorMap, ruleRowIndexMap);
}
+
//鍒嗙被娉ㄥ叆
batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,isImprot);
//boolean
@@ -1532,36 +1542,58 @@
//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;
+ ruleRowIndexMap.keySet().parallelStream().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, finalRuleVOMap.get(ruleOid), null, dataCBOList);
+ } 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, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡");
+ });
+ }
}
- } catch (Exception e) {
- e.printStackTrace();
+ engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList);
+ });
+ }else {
+ 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, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
+ engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList);
}
}
- //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
- engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList);
});
return R.success(isImprot?"鎵归噺鍘嗗彶瀵煎叆鎴愬姛":"鎵归噺鐢宠鎴愬姛");
}
--
Gitblit v1.9.3