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