From 76293d27f60ca77343e77d35bfbfae97cdc6035f Mon Sep 17 00:00:00 2001 From: lihang <lihang@vci-tech.com> Date: 星期三, 24 五月 2023 18:34:37 +0800 Subject: [PATCH] Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 172 insertions(+), 1 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java index d76f98b..2bff19f 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java @@ -1,10 +1,29 @@ package com.vci.ubcs.code.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.entity.DockingPreAttrMapping; +import com.vci.ubcs.code.entity.DockingPreAttrRange; +import com.vci.ubcs.code.entity.DockingPreMetaAttr; import com.vci.ubcs.code.mapper.DockingPreAttrMappingMapper; import com.vci.ubcs.code.service.IDockingPreAttrMappingService; +import com.vci.ubcs.code.service.IDockingPreAttrRangeService; +import com.vci.ubcs.code.service.IDockingPreMetaAttrService; +import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO; +import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO; +import com.vci.ubcs.code.wrapper.DockingPreAttrMappingWrapper; +import com.vci.ubcs.code.wrapper.DockingPreAttrRangeWrapper; +import com.vci.ubcs.starter.exception.VciBaseException; +import org.springframework.beans.factory.annotation.Autowired; 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; /*** *闆嗗洟灞炴�ф槧灏勬湇鍔� @@ -13,4 +32,156 @@ */ @Service public class DockingPreAttrMappingServiceImpl extends ServiceImpl<DockingPreAttrMappingMapper, DockingPreAttrMapping> implements IDockingPreAttrMappingService { + /*** + * 闆嗗洟鍒嗙被灞炴�у睘鎬ф槧灏勯厤缃湇鍔� + */ + @Autowired(required = false) + DockingPreAttrMappingMapper dockingPreAttrMappingMapper; + /*** + * 闆嗗洟灞炴�ф湇鍔� + */ + @Autowired(required = false) + IDockingPreMetaAttrService dockingPreMetaAttrService; + /*** + * 灞炴�у彇鍊艰寖鍥存湇鍔� + */ + @Autowired(required = false) + IDockingPreAttrRangeService dockingPreAttrRangeService; + /*** + * 鏍规嵁涓绘暟鎹垎绫讳富閿幏鍙栧垎绫讳俊鎭厤缃� + * @param codeClassifyId + * @return + */ + @Override + public List<DockingPreAttrMappingVO> getdockingAttrMappingsByCodeclassId(String codeClassifyId) { + //棣栧厛鑾峰彇鍒嗙被妯℃澘灞炴�э紝鐒跺悗涓庡睘鎬ч厤缃潗姣旇緝锛屼互闃茶鏈夊鍒犲睘鎬х殑鍙兘 + List<DockingPreMetaAttr> dockingPreMetaAttrList= dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,codeClassifyId)); + List<DockingPreAttrMapping> dockingPreAttrMappings=this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getSourceClassifyId, 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{ + 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; + } + + /*** + * 瀵硅薄杞崲 + * @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