From fefddc77b2e240d5754abf15f5e3e91e86d360fe Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期一, 04 十二月 2023 16:09:34 +0800
Subject: [PATCH] 集团码导入功能开发
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 114 +++++++++++++++++++++++++++++++++++++-
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 10 +++
2 files changed, 120 insertions(+), 4 deletions(-)
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index 2ddc23a..5c210d3 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -2435,7 +2435,15 @@
} else {
return (field.contains(".") ? "" : "t.") + field + SPACE + "= " + getStringValueInWhere(field, value, attrVOMap) + "" + SPACE;
}
- } else {
+ } else if(key.endsWith("_in")){
+ String field = UBCSSqlKeyword.getColumn(key, "_in");
+ if (referFieldMap.containsKey(field)) {
+ return VciBaseUtil.toInSql(referFieldMap.get(field),value); //referFieldMap.get(field) + SPACE + "= '" + value + "'" + SPACE;
+ } else {
+ return (field.contains(".") ? "" : "t.") + field + SPACE + "= " + getStringValueInWhere(field, value, attrVOMap) + "" + SPACE;
+ }
+
+ }else {
// if (referFieldMap.containsKey(key)) {
// //璇存槑鏄弬鐓х殑锛屾垜浠弬鐓х殑鏌ヨ閮借涓烘槸瀛楃涓诧紝濡傛灉鏄椂闂存牸寮忕殑鏌ヨ鑲畾鏈夐棶棰橈紝
// String selectKey = referFieldMap.get(key);
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 dfc6153..b5998d2 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
@@ -4629,7 +4629,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();
@@ -4720,6 +4720,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
@@ -4755,23 +4835,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