From 695e4a085727ef5017597dd1ab72a47d0e9883e6 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期二, 30 五月 2023 19:19:55 +0800 Subject: [PATCH] 代码整合 --- Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreAttrMappingServiceImpl.java | 235 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 235 insertions(+), 0 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreAttrMappingServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreAttrMappingServiceImpl.java new file mode 100644 index 0000000..15fbcdc --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreAttrMappingServiceImpl.java @@ -0,0 +1,235 @@ +package com.vci.ubcs.code.webservice.service.impl; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.vci.ubcs.code.webservice.mapper.DockingPreAttrMappingMapper; +import com.vci.ubcs.code.webservice.service.IDockingPreAttrMappingService; +import com.vci.ubcs.code.webservice.service.IDockingPreAttrRangeService; +import com.vci.ubcs.code.webservice.service.IDockingPreMetaAttrService; +import com.vci.ubcs.code.webservice.vo.DokingAttributeSerchVO; +import com.vci.ubcs.code.webservice.wrapper.DockingPreAttrMappingWrapper; +import com.vci.ubcs.code.webservice.wrapper.DockingPreAttrRangeWrapper; +import com.vci.ubcs.starter.exception.VciBaseException; +import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil; +import com.vci.ubcs.starter.util.MdmBtmTypeConstant; +import com.vci.ubcs.starter.web.util.VciBaseUtil; +import com.vci.ubcs.code.webservice.entity.DockingPreAttrMapping; +import com.vci.ubcs.code.webservice.entity.DockingPreAttrRange; +import com.vci.ubcs.code.webservice.entity.DockingPreMetaAttr; +import com.vci.ubcs.code.webservice.vo.DockingPreAttrMappingVO; +import com.vci.ubcs.code.webservice.vo.DockingPreAttrRangeVO; +import org.springblade.core.tool.api.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/*** + *闆嗗洟灞炴�ф槧灏勬湇鍔� + * @author xiejun + * @date 2023-05-22 + */ +@Service +public class DockingPreAttrMappingServiceImpl extends ServiceImpl<DockingPreAttrMappingMapper, DockingPreAttrMapping> implements IDockingPreAttrMappingService { + + /*** + * 闆嗗洟鍒嗙被灞炴�у睘鎬ф槧灏勯厤缃湇鍔� + */ + @Autowired(required = false) + private DockingPreAttrMappingMapper dockingPreAttrMappingMapper; + + /*** + * 涓氬姟鏁版嵁灞炴�ф湇鍔� + */ + //@Autowired(required = false) + //private MdmEngineService mdmEngineService; + + /*** + * 闆嗗洟灞炴�ф湇鍔� + */ + @Autowired(required = false) + private IDockingPreMetaAttrService dockingPreMetaAttrService; + /*** + * 灞炴�у彇鍊艰寖鍥存湇鍔� + */ + @Autowired(required = false) + private IDockingPreAttrRangeService dockingPreAttrRangeService; + + + + + + /*** + * 鏍规嵁涓绘暟鎹垎绫讳富閿幏鍙栧垎绫讳俊鎭厤缃� + * @param codeClassifyId + * @return + */ + @Override + public List<DockingPreAttrMappingVO> getDockingAttrMappingsByCodeClassifyId(String codeClassifyId,String sourceClassifyId) { + VciBaseUtil.alertNotNull(codeClassifyId,"涓绘暟鎹垎绫讳富閿�"); + VciBaseUtil.alertNotNull(sourceClassifyId,"闆嗗洟鍒嗙被涓婚敭"); + //棣栧厛鑾峰彇鍒嗙被妯℃澘灞炴�э紝鐒跺悗涓庡睘鎬ч厤缃潗姣旇緝锛屼互闃茶鏈夊鍒犲睘鎬х殑鍙兘 + List<DockingPreMetaAttr> dockingPreMetaAttrList= dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,sourceClassifyId)); + List<DockingPreAttrMapping> dockingPreAttrMappings=this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getSourceClassifyId, sourceClassifyId).eq(DockingPreAttrMapping::getTargetClassifyId, codeClassifyId)); + Map<String/**灞炴�т富閿�**/, DockingPreAttrMapping> dockingPreAttrMappingMap = dockingPreAttrMappings.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getMetaListId(), t -> t)); + + List<DockingPreAttrMapping> newDockingPreAttrMappingList=new ArrayList<>(); + dockingPreMetaAttrList.stream().forEach(dockingPreMetaAttr -> { + String attrOid=dockingPreMetaAttr.getOid(); + DockingPreAttrMapping dockingPreAttrMapping=new DockingPreAttrMapping(); + if(dockingPreAttrMappingMap.containsKey(attrOid)){ + dockingPreAttrMapping= dockingPreAttrMappingMap.get(attrOid); + }else{ + DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreAttrMapping, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM); + dockingPreAttrMapping.setMetaListId(dockingPreMetaAttr.getOid());//灞炴�т富閿� + dockingPreAttrMapping.setSourceAttrKey(dockingPreMetaAttr.getEnglishName());//鑻辨枃鍚嶇О + dockingPreAttrMapping.setSourceAttrName(dockingPreMetaAttr.getChineseName());//涓枃鍚嶇О + dockingPreAttrMapping.setSourceClassifyId(dockingPreMetaAttr.getSourceClassifyId());//闆嗗洟鍒嗙被oid + dockingPreAttrMapping.setSourceClassifyName("");//鍒嗙被鍚嶇О + dockingPreAttrMapping.setViewModeId(dockingPreMetaAttr.getViewModelId());//妯″瀷瑙嗗浘id + dockingPreAttrMapping.setViewModelName("");//鍒嗙被妯″瀷鍚嶇О + dockingPreAttrMapping.setViewName("");//鍒嗙被妯″瀷鍚嶇О + + } + newDockingPreAttrMappingList.add(dockingPreAttrMapping); + }); + return dockingPreAttrMappingDO2VOS(dockingPreAttrMappings,false); + } + + /*** + * 鏋勯�犲櫒鏌ヨ鏂瑰紡 + * @param wrapper 鏌ヨ灏佽鍣� + * @return + */ + @Override + public List<DockingPreAttrMapping> selectByWrapper(Wrapper wrapper) { + return dockingPreAttrMappingMapper.selectList(wrapper); + } + + /**** + * 闆嗗洟灞炴�ф槧灏勯厤缃繚瀛� + * @param dockingPreAttrMappingVOList + * @return + * @throws VciBaseException + */ + @Override + @Transactional(rollbackFor = Exception.class) + public List<DockingPreAttrMappingVO> batchAddSave(List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList) throws Exception { + if(org.springframework.util.CollectionUtils.isEmpty(dockingPreAttrMappingVOList)){ + return new ArrayList<>(); + } + /** + * 1.浼犻�掕繃鏉ョ殑鏈夊彲鑳戒富鏁版嵁妯℃澘鏂板灞炴�э紝杩欐牱鐨勯渶瑕佹坊鍔狅紝涔熸湁鍙兘鍒犻櫎鐨勫睘鎬э紝杩欐牱鐨勬槧灏勯渶瑕佸垹闄� + * 涔熸湁鏇存柊鐨勮繖鏍峰垯鏇存柊 + */ + List<DockingPreAttrMapping> newDockingPreAttrMapping=new ArrayList<>(); + List<String>appingConfigOidList=new ArrayList<>(); + List<String>attrIdList=new ArrayList<>(); + List<String> attributeOidList=new ArrayList<>(); + List<DockingPreAttrRange> newDockingPreAttrRangeList=new ArrayList<>(); + List<DockingPreAttrRangeVO> newDockingPreAttrRangeVOList=new ArrayList<>(); + dockingPreAttrMappingVOList.stream().forEach(dockingPreAttrMappingVO -> { + List<DockingPreAttrRangeVO>dockingPreAttrRangeVOList=dockingPreAttrMappingVO.getDockingPreAttrRangeVoList(); + appingConfigOidList.add(dockingPreAttrMappingVO.getOid()); + if(!CollectionUtils.isEmpty(dockingPreAttrRangeVOList)) { + attrIdList.add(dockingPreAttrMappingVO.getMetaListId()); + newDockingPreAttrRangeVOList.addAll(dockingPreAttrRangeVOList); + } + }); + //灏嗗睘鎬у彇鍊艰寖鍥磋浆鎴愭暟鎹寔涔呭眰瀵硅薄 + newDockingPreAttrRangeList= DockingPreAttrRangeWrapper.build().voentitys(newDockingPreAttrRangeVOList); + //灏嗗睘鎬ф槧灏勯厤缃俊鎭浆鎹负闇�瑕佹暟鎹寔涔呭眰淇濆瓨鐨勫璞� + newDockingPreAttrMapping= DockingPreAttrMappingWrapper.build().voentitys(dockingPreAttrMappingVOList); + + List<DockingPreAttrRange> oldDockingPreAttrRangeList=new ArrayList<>(); + if(!org.springframework.util.CollectionUtils.isEmpty(attrIdList)) { + //鑾峰彇瀛樺湪鐨勫睘鎬у彇鍊艰寖鍥�. + oldDockingPreAttrRangeList = dockingPreAttrRangeService.selectByWrapper(Wrappers.<DockingPreAttrRange>query().lambda().in(DockingPreAttrRange::getMetaListId,attrIdList)); + } + //鑾峰彇瀛樺湪鐨勫睘鎬ф槧灏�. + List<DockingPreAttrMapping> oldDataAttrMapping = dockingPreAttrMappingMapper.selectList(Wrappers.<DockingPreAttrMapping>query().lambda().in(DockingPreAttrMapping::getOid,appingConfigOidList)); + + Map<String/**oid**/,DockingPreAttrMapping/**灞炴�у璞�**/> allSaveAttrMappingMap = newDockingPreAttrMapping.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t,(o1, o2)->o2)); + Map<String/**oid**/,DockingPreAttrMapping/**瀵硅薄**/> oldAttrMappingMap =oldDataAttrMapping.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t,(o1, o2)->o2)); + //闇�瑕佸垹闄ょ殑灞炴�ф槧灏� + List<String> deleteIdList=new ArrayList<>(); + oldDataAttrMapping.stream().forEach(cbo -> { + String oid =cbo.getOid(); + if(!allSaveAttrMappingMap.containsKey(oid)){ + deleteIdList.add(oid); + } + }); + this.removeBatchByIds(deleteIdList);//鍒犻櫎宸茬粡涓㈡帀鐨� + this.saveOrUpdateBatch(newDockingPreAttrMapping);//娣诲姞鏇存柊鏂扮殑閰嶇疆淇℃伅 + + //鍙栧�艰寖鍥村鐞� + if(!CollectionUtils.isEmpty(newDockingPreAttrRangeList)) { + Map<String/**oid**/, DockingPreAttrRange/**灞炴�у璞�**/> allSaveAttrAttrRangeDOMap =newDockingPreAttrRangeList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t, (o1, o2) -> o2)); + Map<String/**oid**/, DockingPreAttrRange/**瀵硅薄**/> oldSaveAttrAttrRangeDOMap = oldDockingPreAttrRangeList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t, (o1, o2) -> o2)); + + //闇�瑕佸垹闄ょ殑灞炴�у彇鍊艰寖鍥� + List<String> deleteRangeIdList = new ArrayList<>(); + oldDockingPreAttrRangeList.stream().forEach(cbo -> { + String oid = cbo.getOid(); + if (!allSaveAttrAttrRangeDOMap.containsKey(oid)) { + deleteRangeIdList.add(oid); + } + }); + dockingPreAttrRangeService.removeBatchByIds(deleteIdList);//鍒犻櫎宸茬粡涓㈡帀鐨� + dockingPreAttrRangeService.saveOrUpdateBatch(newDockingPreAttrRangeList);//娣诲姞鏇存柊鏂扮殑閰嶇疆淇℃伅 + } + return dockingPreAttrMappingVOList; + } + + /*** + * 鏍规嵁涓绘暟鎹畂id妫�娴嬫槸鍚﹀睘鎬ф槧灏勯厤缃� + * @param targetClassifyId + * @return + * @throws Exception + */ + @Override + public boolean checkHasConfigByTragetCodeclassifyId(String targetClassifyId){ + Long count =0L; + try { + count = dockingPreAttrMappingMapper.selectCount(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId, targetClassifyId)); + }catch (Throwable e){ + e.printStackTrace();; + } finally { + return count>0?true:false; + } + } + + @Override + public R search(DokingAttributeSerchVO dokingAttributeSerchVO) { + return null; + } + + + /*** + * 瀵硅薄杞崲 + * @param dockingPreAttrMappings + * @return + */ + private List<DockingPreAttrMappingVO> dockingPreAttrMappingDO2VOS(Collection<DockingPreAttrMapping> dockingPreAttrMappings,boolean contain) { + List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=new ArrayList<>(); + dockingPreAttrMappingVOList=DockingPreAttrMappingWrapper.build().entityVOs(dockingPreAttrMappings); + if(CollectionUtils.isEmpty(dockingPreAttrMappingVOList)){ + dockingPreAttrMappingVOList.stream().distinct().forEach(dockingPreAttrMappingVO -> { + if(contain) { + List<DockingPreAttrRangeVO> dockingPreAttrRangeVOList= dockingPreAttrRangeService.getDockingPreAttrRangesByMetaId(dockingPreAttrMappingVO.getMetaListId()); + dockingPreAttrMappingVO.setDockingPreAttrRangeVoList(dockingPreAttrRangeVOList); + } + }); + } + return dockingPreAttrMappingVOList; + } + +} -- Gitblit v1.9.3