From 04b4676f4f8f2674a0fdd52624c417d600f6f06b Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 05 十二月 2023 16:19:30 +0800
Subject: [PATCH] 整合代码
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 144 ++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 126 insertions(+), 18 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 6790d64..0090df0 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -199,9 +199,9 @@
private SaveLogUtil saveLogUtil;
/**
- * 瀵煎嚭鐨勫崄涓囨潯
+ * 瀹㈡埛鐜板満excel涓鸿�佺増鏈紝瀵煎嚭鐨勬�绘暟闄愬埗涓�65535
*/
- public static final int EXPORT_LIMIT = 100000;
+ public static final int EXPORT_LIMIT = 65535;
/**
* 鎵归噺鐢宠锛氶�夊彇閫変腑鍒嗙被涓嬬殑鎵�鏈夋ā鏉垮叧閿睘鎬э紝鐩镐技灞炴�э紝蹇呭~灞炴�э紝鍐欏叆execl涓�
@@ -382,7 +382,7 @@
CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
//鑾峰彇鐮佹瀹藉害
- //String secWidth = getCodeSegmentWidth(codeClassifyVO.getOid());
+ String secWidth = getCodeSegmentWidth(codeClassifyVO.getOid());
if(isHistory){
templateVOList= templateService.childTemplates(codeClassifyOid);
@@ -612,6 +612,7 @@
ExcelUtil.writeDataToFile(excelName,eo);
return excelName;
}
+
/**
* 鑾峰彇鐮佹瀹藉害
* @param codeClassifyOid
@@ -1274,6 +1275,7 @@
throw e;
}
}
+
/**
* 瀵煎叆鎵归噺缂栬緫鏁版嵁
*
@@ -1288,8 +1290,11 @@
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涓囨潯鐨勬暟鎹�");
+ }
+ if (sheetDataSetList.get(0).getRowData().size() == 0) {
+ throw new ServiceException("鏈鍙栧埌excle鐩稿叧鏁版嵁锛岃纭锛侊紒锛�");
}
boolean isExport=false;
Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>();
@@ -1371,13 +1376,9 @@
codeAllCodeService.updateBatchById(codeAllCodes);
} catch (Throwable e) {
log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
-// thisCbos.stream().forEach(cbo -> {
-// String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
errorMap.put(sheetRowData.getRowIndex(), ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage());
-// });
}
}
-
if (errorMap.size() > 0) {
isExport = true;
}
@@ -1837,10 +1838,10 @@
tableName = VciBaseUtil.getTableName(btmTypeId);
}
- String countSql = "select count(*) from " + tableName +" where 1=1" +
+ String countSql = "select count(*) from (select * FROM " + tableName +" where 1=1" +
" and lastr = '1'" +
" and lastv='1'" +
- " and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%'";
+ " and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%' {}";
//鍏堟煡璇㈡�绘暟
int total = 0;
@@ -1854,8 +1855,7 @@
thisPage.setSort(exportAttrDTO.getSort());
thisPage.setOrder(exportAttrDTO.getOrder());
thisPage.addDefaultDesc("createTime");
-
- total += commonsMapper.queryCountBySql(countSql);
+ total += commonsMapper.queryCountBySql(StringUtil.format(countSql," limit " + exportAttrDTO.getLimit() +" offset "+ i +")subquery;"));
}
}else{
total = commonsMapper.queryCountBySql(countSql);
@@ -1893,10 +1893,10 @@
}
Map<String, String> finalConditionMap = conditionMap;
//骞惰鏌ヨ鐪嬬湅
- SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
indexList.stream().forEach(index->{
//绾跨▼鐨勬柟寮忥紝鎵�浠ラ渶瑕佽缃綋鍓嶇敤鎴�
- VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+ //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
PageHelper thisPage = new PageHelper(EXPORT_LIMIT);
thisPage.setPage(index+1);
thisPage.setSort(exportAttrDTO.getSort());
@@ -4990,7 +4990,7 @@
}
fieldList=execGroupCodePortDataDTO.getFieldList();
List<Map<String,String>>dataList=new ArrayList<>();
- getDatas(classifyFullInfo,templateVO,fieldList,dataList);
+ getDatas(classifyFullInfo,templateVO,fieldList,dataList,null);
execGroupCodePortDataDTO.setDataList(dataList);//鏀炬暟鎹�
execGroupCodePortDataDTO.setSheetName(codeClassifyVO.getName()+"闆嗗洟鐮佸鍏ユā鏉�");
String tempFolder = LocalFileUtil.getDefaultTempFolder();
@@ -5081,6 +5081,86 @@
}
/***
+ * 瀵煎叆闆嗗洟鐮�
+ * @param codeClassifyOid
+ * @param file
+ * @return
+ */
+ public String improtGroupCode(String codeClassifyOid, File file) throws ServiceException {
+ VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
+ ReadExcelOption reo = new ReadExcelOption();
+ reo.setReadAllSheet(true);
+ List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
+
+ if (sheetDataSetList.size() > LIMIT + 1) {
+ throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
+ }
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+ CodeClassifyTemplateVO templateVO = new CodeClassifyTemplateVO();
+ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
+ ).collect(Collectors.toList());
+ ExecGroupCodePortDataDTO execGroupCodePortDataDTO=new ExecGroupCodePortDataDTO();
+ createExportGroupCodeMapConfig(templateVO,execGroupCodePortDataDTO);//缁勭粐鏁版嵁
+ List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS=execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS();
+ if(!CollectionUtils.isEmpty(codeAttrMapGroupAttrDTOS)){
+ throw new ServiceException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆");
+ }
+ Map<String, CodeAndGroupCodeAttrMappingDTO> codeSystemObjectMap = codeAttrMapGroupAttrDTOS.stream().filter(codeAttrMappingDTO -> codeAttrMappingDTO != null && StringUtils.isNotBlank(codeAttrMappingDTO.getSourceAttrName())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getSourceAttrName(), t -> t));
+ SheetDataSet dataSet= sheetDataSetList.get(0);
+ List<String> titleRowData = dataSet.getColName();
+ Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
+ getGroupCodeFieldIndexMap(titleRowData,codeAttrMapGroupAttrDTOS,fieldIndexMap);
+ //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜�
+ List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT))
+ && com.alibaba.cloud.commons.lang.StringUtils.isBlank(s.getComponentRule()) && com.alibaba.cloud.commons.lang.StringUtils.isBlank(s.getClassifyInvokeAttr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓
+ ).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(unExistAttrVOs)){
+ String message=unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName).collect(Collectors.joining(SERIAL_UNIT_SPACE));
+ throw new VciBaseException("銆�" + message + "銆戣繖浜涘睘鎬у湪excel涓病鏈夋壘鍒�");
+ }
+ List<ClientBusinessObject> cboList = new ArrayList<>();
+ List<SheetRowData> rowDataList = dataSet.getRowData();
+
+ getExportGroupCodeDatas(fieldIndexMap,rowDataList,cboList);//鏋勫缓鏁版嵁瀵硅薄
+ List<String> codeList= cboList.stream().map(ClientBusinessObject::getId).collect(Collectors.toList());
+ List<Map<String,String>>dataList=new ArrayList<>();
+ getDatas(classifyFullInfo,templateVO,execGroupCodePortDataDTO.getFieldList(),dataList,codeList);
+ //鏌ヨ绯荤粺涓瓨鍦�
+ if(!CollectionUtils.isEmpty(dataList)){
+
+
+ }
+ return "";
+ }
+
+ /**
+ *
+ * @param fieldIndexMap
+ * @param rowDataList
+ * @param cboList
+ */
+ private void getExportGroupCodeDatas(Map<Integer,String> fieldIndexMap,List<SheetRowData> rowDataList,List<ClientBusinessObject>cboList){
+ rowDataList.stream().forEach(sheetRowData -> {
+ sheetRowData.getData().forEach((index,value)->{
+ ClientBusinessObject cbo=new ClientBusinessObject();
+ String field = fieldIndexMap.get(index);
+ if (StringUtils.isBlank(field)) {
+ throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
+ }
+ try {
+ cbo.setAttributeValueWithNoCheck(field, value);
+ if (WebUtil.isDefaultField(field)) {
+ WebUtil.setValueToField(field, cbo, value);
+ }
+ } catch (VciBaseException e) {
+ log.error("璁剧疆灞炴�х殑鍊奸敊璇�", e);
+ }
+ cboList.add(cbo);
+ });
+ });
+ }
+ /***
* 闆嗗洟瀵煎嚭妯℃澘灞炴�ф槧灏勪俊鎭幏鍙�
* @param templateVO
* @param execGroupCodePortDataDTO
@@ -5116,23 +5196,51 @@
}
/***
+ * 闆嗗洟鐮佸睘鎬ц浆鎹�
+ * @param titleRowData
+ * @param codeAttrMapGroupAttrDTOS
+ * @param fieldIndexMap
+ */
+ private void getGroupCodeFieldIndexMap(List<String> titleRowData,List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS,Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap){
+ Map<String, CodeAndGroupCodeAttrMappingDTO> codeSystemObjectMap = codeAttrMapGroupAttrDTOS.stream().filter(codeAttrMappingDTO -> codeAttrMappingDTO != null && StringUtils.isNotBlank(codeAttrMappingDTO.getSourceAttrName())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getSourceAttrName(), t -> t));
+ for (int i = 0; i < titleRowData.size(); i++) {
+ String title = titleRowData.get(i);
+ CodeAndGroupCodeAttrMappingDTO codeAndGroupCodeAttrMappingDTO =codeSystemObjectMap.get(title.replace(KEY_ATTR_CHAR,"").replace(REQUIRED_CHAR,""));
+ String id=codeAndGroupCodeAttrMappingDTO.getTargetAttrKey();
+ if(com.alibaba.cloud.commons.lang.StringUtils.isBlank(id) && "闆嗗洟鐮�".equalsIgnoreCase(title)){
+ id = CODE_GROUP_FIELD;
+ }
+ if(com.alibaba.cloud.commons.lang.StringUtils.isBlank(id) && "浼佷笟缂栫爜".equalsIgnoreCase(title)){
+ id = CODE_FIELD;
+ }
+ if(com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(id)){
+ fieldIndexMap.put(i,id);
+ }
+ }
+
+
+ }
+ /***
* 鏌ヨ鏈湁闆嗗洟鐮佺殑鏁版嵁
* @param classifyFullInfo
* @param templateVO
* @param selectFieldList
* @param dataList
*/
- private void getDatas(CodeClassifyFullInfoBO classifyFullInfo,CodeClassifyTemplateVO templateVO,LinkedList<String> selectFieldList,List<Map<String,String>>dataList){
+ 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<>();
+ 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");
--
Gitblit v1.9.3