From 9cacfb217b2dbf58c7efd1d96e818798a97d9382 Mon Sep 17 00:00:00 2001 From: ludc <pUXmgxCf6A> Date: 星期四, 18 五月 2023 20:13:08 +0800 Subject: [PATCH] 以及发布webservice接口功能搭建,将通通用接口移植过来 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 158 insertions(+), 0 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 new file mode 100644 index 0000000..92eca05 --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java @@ -0,0 +1,158 @@ +package com.vci.ubcs.code.service.impl; + +import com.alibaba.cloud.commons.lang.StringUtils; +import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; +import com.vci.ubcs.code.dto.CodeOrderDTO; +import com.vci.ubcs.code.service.ICodeClassifyService; +import com.vci.ubcs.code.service.MdmEngineService; +import com.vci.ubcs.code.service.MdmIOService; +import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO; +import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO; +import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO; +import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO; +import com.vci.ubcs.code.vo.webserviceModel.attrmap.DataObjectVO; +import com.vci.ubcs.code.vo.webserviceModel.attrmap.RowDatas; +import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultDataObjectDetailDO; +import com.vci.ubcs.starter.exception.VciBaseException; +import com.vci.ubcs.starter.web.util.VciBaseUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.vci.ubcs.code.constant.MdmEngineConstant.*; +import static com.vci.ubcs.starter.poi.util.ExcelUtil.KEY_ATTR_CHAR; +import static com.vci.ubcs.starter.poi.util.ExcelUtil.REQUIRED_CHAR; + +@Service +@Slf4j +public class MdmIOServiceImpl implements MdmIOService { + /** + * 鍒嗙被鏈嶅姟灞� + */ + @Resource + @Lazy + private ICodeClassifyService classifyService; + + /** + * 鍒嗙被鏈嶅姟灞� + */ + @Resource + @Lazy + private MdmEngineService engineService; + + /** + * 闆嗘垚鎵归噺鐢宠鏁版嵁 + * @param orderDTO 鍒嗙被鐨勪富閿� + * @param dataObjectVO 鏁版嵁淇℃伅 + * @param resultDataObjectDetailDOs 閿欒淇℃伅 + * @return 鏈夐敊璇俊鎭殑excel + */ + @Override + public void batchSyncApplyCode(CodeOrderDTO orderDTO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) { + Map<String,String> errorMap=new HashMap<>(); + VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�"); + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); + //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇 + CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo); + //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈� + //engineService.checkSecValueOnOrder(ruleVO,orderDTO); + //鏌ヨ鍒嗙被鍜屾ā鏉� + //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬� + List<RowDatas> rowDataList = dataObjectVO.getRowData(); + Map<String , RowDatas>rowDataMap=new LinkedHashMap<>(); + rowDataList.stream().forEach(rowData->{ + rowDataMap.put(rowData.getRowIndex(),rowData); + }); + //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰� + CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid()); + + //鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑 + //checkTemplateSync(sheetDataSetList,templateVO); + //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 + List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) + ).collect(Collectors.toList()); + Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>(); + 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); + + //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜� + List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT)) + && StringUtils.isBlank(s.getComponentRule()) && StringUtils.isBlank(s.getClassifyInvokeAttr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓 + ).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(unExistAttrVOs)){ + throw new VciBaseException("銆�" + unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName) + "銆戣繖浜涘睘鎬у湪excel涓病鏈夋壘鍒�"); + } + + String fullPath = getFullPath(classifyFullInfo); + + // List<CodeClassifyProcessTempVO> codeClassifyProcessTempVOS=codeClassifyProcessTempService.listProcessTemplate(templateVO.getOid(),"code_cls_flow_use_order"); + boolean isProcess=false; + //娉ㄩ噴鎺夋澶勪笅闈㈡墍鏈夐兘鎸夌収涓嶅垽鏂祦绋嬪瓨鍌ㄧ姸鎬佷簡 + /** if(!CollectionUtils.isEmpty(codeClassifyProcessTempVOS)){ + isProcess=true; + }***/ + //List<ClientBusinessObject> cboList = new ArrayList<>(); + //Map<String,String> codeOidToSystemOidMap=new HashMap<>();//瀛樺偍缂栫爜鏁版嵁鍜岄泦鎴愮郴缁熸暟鎹畂id瀵圭収鏄犲皠 + //excelToCbo(classifyFullInfo,titleRowData,fieldIndexMap,rowDataList,templateVO,cboList,fullPath,isProcess,"create",errorMap,codeOidToSystemOidMap); + + //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌� + //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓� + //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒� + + } + + @Override + public void batchSyncEditDatas(CodeClassifyVO codeClassifyVO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) { + + } + + /** + * 鑾峰彇鍒嗙被鐨勫叏璺緞 + * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭� + * @return 鍏ㄨ矾寰� + */ + private String getFullPath(CodeClassifyFullInfoBO classifyFullInfo){ + String fullPath = ""; + if(!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())){ + fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel()))) + .map(CodeClassifyVO::getOid).collect(Collectors.joining("##")); + }else{ + fullPath = classifyFullInfo.getCurrentClassifyVO().getOid(); + } + return fullPath; + } + + /** + * excel鐨勬爣棰樹笂鑾峰彇瀛楁鎵�鍦ㄧ殑浣嶇疆 + * @param titleRowData 鏍囬鐨勫唴瀹� + * @param attrNameIdMap 妯℃澘涓睘鎬у悕绉板拰鑻辨枃鐨勬槧灏� + * @param fieldIndexMap 浣嶇疆鍜岃嫳鏂囧瓧娈电殑鏄犲皠 + */ + private void getFieldIndexMap(List<String> titleRowData,Map<String/**鍚嶇О**/,String/**瀛楁鍚�**/> attrNameIdMap,Map<Integer/**浣嶇疆**/,String/**鑻辨枃鍚嶅瓧**/> fieldIndexMap){ + for (int i = 0; i < titleRowData.size(); i++) { + String title = titleRowData.get(i); + String id = attrNameIdMap.getOrDefault(title.replace(KEY_ATTR_CHAR,"").replace(REQUIRED_CHAR + ,""),""); + if(StringUtils.isBlank(id) && "鍒嗙被璺緞".equalsIgnoreCase(title)){ + id = CODE_CLASSIFY_OID_FIELD; + } + if(StringUtils.isBlank(id) && "鐮佹瀹藉害".equalsIgnoreCase(title)){ + id = CODE_SEC_LENGTH_FIELD; + } + if(StringUtils.isBlank(id) && "浼佷笟缂栫爜".equalsIgnoreCase(title)){ + id = CODE_FIELD; + } + if(StringUtils.isNotBlank(id)){ + fieldIndexMap.put(i,id); + } + } + } + + +} -- Gitblit v1.9.3