From 73dbe864eb18a1a4df4f41caed1dd128faf1b2ec Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 02 六月 2023 19:11:27 +0800
Subject: [PATCH] 引用码段关于业务类型接口的联调,重复使用的界面抽离成单独组件

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java |  179 ++++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 120 insertions(+), 59 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
index 8470c1b..1740d98 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -2,28 +2,28 @@
 
 import com.alibaba.nacos.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
 import com.vci.ubcs.code.entity.CodeClassify;
 import com.vci.ubcs.code.entity.CodeClassifyTemplate;
-import com.vci.ubcs.code.entity.CodeOsbtmtypeEntity;
-import com.vci.ubcs.code.entity.CodeOsbtmtypeattributeEntity;
 import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
 import com.vci.ubcs.code.mapper.CodeClassifyMapper;
 import com.vci.ubcs.code.mapper.CodeClassifyTemplateMapper;
-import com.vci.ubcs.code.mapper.CodeOsbtmtypeMapper;
-import com.vci.ubcs.code.mapper.CodeOsbtmtypeattributeMapper;
 import com.vci.ubcs.code.po.CodeClassifyPO;
 import com.vci.ubcs.code.service.ICodeClassifyService;
 import com.vci.ubcs.code.service.ICodeKeyAttrRepeatService;
 import com.vci.ubcs.code.service.ICodeRuleService;
-import com.vci.ubcs.code.vo.CodeOsattributeVO;
-import com.vci.ubcs.code.vo.CodeOsbtmtypeVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+import com.vci.ubcs.omd.cache.EnumCache;
+import com.vci.ubcs.omd.enums.EnumEnum;
+import com.vci.ubcs.omd.feign.IBtmTypeClient;
+import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
+import com.vci.ubcs.omd.vo.BtmTypeVO;
 import com.vci.ubcs.starter.bo.WriteExcelData;
 import com.vci.ubcs.starter.exception.VciBaseException;
 import com.vci.ubcs.starter.poi.bo.ReadExcelOption;
@@ -33,9 +33,11 @@
 import com.vci.ubcs.starter.revision.model.TreeQueryObject;
 import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
 import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
+import com.vci.ubcs.starter.util.BladeTreeQueryObject;
 import com.vci.ubcs.starter.util.LocalFileUtil;
 import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
 import com.vci.ubcs.starter.web.pagemodel.DataGrid;
+import com.vci.ubcs.starter.web.pagemodel.PageHelper;
 import com.vci.ubcs.starter.web.pagemodel.Tree;
 import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
 import com.vci.ubcs.starter.web.util.LangBaseUtil;
@@ -44,11 +46,14 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springblade.core.cache.utils.CacheUtil;
-import com.vci.ubcs.core.log.exception.ServiceException;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
@@ -72,11 +77,7 @@
 	private ICodeRuleService codeRuleService;
 
 	@Resource
-	private CodeOsbtmtypeMapper codeOsbtmtypeMapper;
-	@Resource
-	CodeOsbtmtypeattributeMapper codeOsbtmtypeattributeMapper;
-	@Resource
-	ICodeRuleService ICodeRuleService;
+	private IBtmTypeClient btmTypeClient;
 
 	/**
 	 * 鏃ュ織
@@ -254,9 +255,8 @@
 		if(StringUtils.isBlank(oid)){
 			throw new ServiceException("oid涓嶈兘涓虹┖锛�");
 		}
-		return !codeClassifyMapper.checkHasChild(oid.trim());
+		return codeClassifyMapper.checkHasChild(oid.trim());
 	}
-
 
 	/**
 	 * 鍒犻櫎涓婚搴撳垎绫�
@@ -362,7 +362,6 @@
 		return codeClassifyDO2VOs(codeClassifyDOList);
 	}
 
-
 	/**
 	 * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
 	 * @param oidCollections 涓婚敭鐨勯泦鍚�
@@ -381,7 +380,6 @@
 		}
 		return  codeClassifyList;
 	}
-
 
 	/**
 	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
@@ -469,8 +467,45 @@
 		return tree;
 	}
 
+	/**
+	 * 鏍规嵁鏍戝舰鏌ヨ瀵硅薄鏉ユ煡璇㈡暟鎹璞�
+	 *
+	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+	 * @return 鏌ヨ缁撴灉,鏁版嵁瀵硅薄
+	 */
+	@Override
+	public List<CodeClassifyVO> selectCodeClassifyDOByTree(TreeQueryObject treeQueryObject) {
+		List<CodeClassify> doList =codeClassifyMapper.selectCodeClassifyVOByTree(treeQueryObject.getParentOid());
+		List<CodeClassifyVO> voList = codeClassifyDO2VOs(doList);
+		return voList;
+	}
+	/**
+	 * 浣跨敤缂栧彿鐨勮矾寰勮幏鍙栧璞�
+	 *
+	 * @param fieldPath 缂栧彿鐨勮矾寰勶紝涓�瀹氳浠庢渶椤跺眰鑺傜偣寮�濮嬶紝鏍煎紡涓簒xx/yyy/zz 杩欐牱
+	 * @return 鍒嗙被鐨勬樉绀哄璞�
+	 */
+	@Override
+	public CodeClassifyVO getObjectByClsfNamePath(String fieldPath){
+		CodeClassifyVO codeClassifyVO=new CodeClassifyVO();
+		List<CodeClassify> classifyList = codeClassifyMapper.selectByFieldNamePath(fieldPath,"name");
+		if(classifyList.size()>0){
+			codeClassifyVO=codeClassifyDO2VO(classifyList.get(0));
+		}
+		return codeClassifyVO;
+	}
+	/***
+	 * 鏍规嵁涓婄骇鑺傜偣鑾峰彇涓嬬骇鑺傜偣浠e彿璺緞鍜屽悕绉拌矾寰�
+	 * @param classifyId
+	 * @param enable
+	 * @return
+	 */
+	@Override
+	public List<CodeClassifyVO> getIdPathToNamePathByParentId(String classifyId, boolean enable) {
+		return null;
+	}
 
-//	/**
+	//	/**
 //	 * 鏍规嵁鏍戝舰鏌ヨ瀵硅薄鏉ユ煡璇㈡暟鎹璞�
 //	 *
 //	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
@@ -630,7 +665,6 @@
 		return excelName;
 	}
 
-
 	/**
 	 * 瀵煎叆鍒嗙被
 	 *
@@ -695,9 +729,10 @@
 
 		List<String> btmOids = poList.stream().filter(s -> StringUtils.isNotBlank(s.getKeyRepeatRuleId()))
 			.map(CodeClassifyPO::getBtmTypeId).collect(Collectors.toList());
-		Map<String, CodeOsbtmtypeEntity> btmVOMap = Optional.ofNullable(btmOids.size()==0 ? null: codeOsbtmtypeMapper.selectBatchIds(btmOids)
-		).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
-//		Map<String, CodeOsbtmtypeVO> btmVOMap = null;
+		Map<String, BtmTypeVO> btmVOMap = Optional
+			.ofNullable(btmOids.size()==0 ? null: btmTypeClient.selectByIdCollection(btmOids).getData())
+			.orElse(new ArrayList<BtmTypeVO>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
+		//		Map<String, CodeOsbtmtypeVO> btmVOMap = null;
 		Map<String/**璺緞**/,String/**涓婚敭**/> oidPathMap = new HashMap<>();
 
 		//鎴戜滑闇�瑕佹煡璇㈡墍鏈夊凡缁忓瓨鍦ㄧ殑鍒嗙被锛屼富瑕佹槸璺緞锛岀敤鏉ュ垽鏂垎绫荤殑鏁版嵁
@@ -727,7 +762,7 @@
 			classify.setDescription(po.getDescription());
 			oidPathMap.put(po.getPath(),classify.getOid());
 			if(StringUtils.isNotBlank(po.getBtmTypeId())){
-				CodeOsbtmtypeVO typeVO = (CodeOsbtmtypeVO)btmVOMap.get(po.getBtmTypeId().toLowerCase(Locale.ROOT));
+				BtmTypeVO typeVO = (BtmTypeVO)btmVOMap.get(po.getBtmTypeId().toLowerCase(Locale.ROOT));
 				classify.setBtmTypeId(typeVO.getId());
 				classify.setBtmTypeName(typeVO.getName());
 			}
@@ -838,7 +873,7 @@
 	 * @return 灞炴�х殑淇℃伅锛屽寘鍚粯璁ょ殑灞炴��
 	 */
 	@Override
-	public DataGrid<CodeOsattributeVO> listClassifyLinkAttr(BaseQueryObject baseQueryObject) {
+	public DataGrid<BtmTypeAttributeVO> listClassifyLinkAttr(BaseQueryObject baseQueryObject) {
 		if(baseQueryObject == null){
 			baseQueryObject = new BaseQueryObject();
 		}
@@ -846,9 +881,13 @@
 			baseQueryObject.setConditionMap(new HashMap<>());
 		}
 		String classifyOid = baseQueryObject.getConditionMap().getOrDefault("codeClassifyOid","");
+		String btmTypeOid = baseQueryObject.getConditionMap().getOrDefault("btmTypeOid","");
 		String id = baseQueryObject.getConditionMap().getOrDefault("id","");
 		String name = baseQueryObject.getConditionMap().getOrDefault("name","");
 		if(StringUtils.isBlank(classifyOid)){
+			return new DataGrid<>();
+		}
+		if(StringUtils.isBlank(btmTypeOid)){
 			return new DataGrid<>();
 		}
 		CodeClassifyVO topClassifyVO = getTopClassifyVO(classifyOid);
@@ -858,18 +897,20 @@
 
 		Map<String,Object> condition = new HashMap<>(1);
 		condition.put("pkbtmtype",topClassifyVO.getBtmtypeid());
-
-		List<CodeOsbtmtypeattributeEntity> unDefaultAttributes = codeOsbtmtypeattributeMapper.selectByMap(condition);
-//		List<OsBtmTypeAttributeVO> unDefaultAttributes = btmService. (topClassifyVO.getBtmtypeid());
-		List<CodeOsattributeVO> attributeVOS = new ArrayList<>();
+		BtmTypeVO data = btmTypeClient.getDetail(btmTypeOid).getData();
+		List<BtmTypeAttributeVO> unDefaultAttributes = data.getAttributes();
+		// List<CodeOsbtmtypeattributeEntity> unDefaultAttributes = codeOsbtmtypeattributeMapper.selectByMap(condition);
+		// List<OsBtmTypeAttributeVO> unDefaultAttributes = btmService. (topClassifyVO.getBtmtypeid());
+		List<BtmTypeAttributeVO> attributeVOS = new ArrayList<>();
 		if(!CollectionUtils.isEmpty(unDefaultAttributes)){
 			unDefaultAttributes.stream().forEach(attr->{
-				CodeOsattributeVO attributeVO = new CodeOsattributeVO();
+				BtmTypeAttributeVO attributeVO = new BtmTypeAttributeVO();
 				BeanUtils.copyProperties(attr,attributeVO);
-				attributeVO.setAttributedatatype(attr.getAttrdatatype());
-				attributeVO.setAttrlength(Short.valueOf(attr.getAttributelength()));
-				attributeVO.setBtmtypeid(attr.getReferbtmtypeid());
-				attributeVO.setBtmtypename(attr.getReferbtmtypename());
+				attributeVO.setAttrDataType(attr.getAttrDataType());
+				attributeVO.setAttributeLength(attr.getAttributeLength());
+				attributeVO.setBtmTypeId(data.getId());
+				attributeVO.setBtmname(data.getName());
+				attributeVO.setAttrDataTypeText(EnumCache.getValue(EnumEnum.VCO_FIELD_TYPE,attr.getAttrDataType()));
 				boolean add = true;
 				if(StringUtils.isNotBlank(id) && !attributeVO.getId().contains(id.replace("*",""))){
 					add = false;
@@ -882,21 +923,7 @@
 				}
 			});
 		}
-//		if(!CollectionUtils.isEmpty(attributeService.getDefaultAttributeVOs())){
-//			attributeService.getDefaultAttributeVOs().stream().forEach(attr->{
-//				boolean add = true;
-//				if(StringUtils.isNotBlank(id) && !attr.getId().contains(id.replace("*",""))){
-//					add = false;
-//				}
-//				if(StringUtils.isNotBlank(name) && !attr.getId().contains(name.replace("*",""))){
-//					add = false;
-//				}
-//				if(add){
-//					attributeVOS.add(attr);
-//				}
-//			});
-//		}
-		DataGrid<CodeOsattributeVO> dataGrid = new DataGrid<>();
+		DataGrid<BtmTypeAttributeVO> dataGrid = new DataGrid<>();
 		dataGrid.setData(attributeVOS);
 		dataGrid.setTotal(attributeVOS.size());
 		return dataGrid;
@@ -961,7 +988,7 @@
 	 * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
 	 */
 	@Override
-	public  CodeClassifyVO getObjectByOid(String oid) throws VciBaseException{
+	public CodeClassifyVO getObjectByOid(String oid) throws VciBaseException{
 		return codeClassifyDO2VO(selectByOid(oid));
 	}
 
@@ -982,7 +1009,7 @@
 	}
 
 	/**
-	 * 涓婚搴撶殑鏍�
+	 * 涓婚搴撶殑鏍�,宸茶仈璋冧笟鍔$被鍨嬫煡璇eign
 	 *
 	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
 	 * @return 涓婚搴撴樉绀烘爲
@@ -993,10 +1020,26 @@
 			treeQueryObject = new TreeQueryObject();
 		}
 		if(treeQueryObject.getConditionMap() == null){
-			treeQueryObject.setConditionMap(new HashMap<>());
+			treeQueryObject.setConditionMap(new HashMap<String,String>());
 		}
 		treeQueryObject.getConditionMap().put(PARENT_FIELD_NAME, "=null");
-		return treeCodeClassify(treeQueryObject);
+		List<Tree> trees = treeCodeClassify(treeQueryObject);
+		treeQueryObject.getConditionMap().put("domain", AppConstant.APPLICATION_NAME_CODE);
+		BaseQueryObject baseQueryObject = new BaseQueryObject();
+		baseQueryObject.setConditionMap(treeQueryObject.getConditionMap());
+		List<BtmTypeVO> btmTypeVOS = btmTypeClient.getRef(baseQueryObject).getData();
+		if(Func.isEmpty(btmTypeVOS) || Func.isEmpty(trees)){
+			return null;
+		}
+		List<Tree> treeList = trees.stream().filter(tree -> !CollectionUtils.isEmpty(btmTypeVOS.stream().filter(btmType -> {
+					if(Objects.equals(tree.getAttributes().get("id"), btmType.getId())){
+						tree.getAttributes().put("btmTypeOid",btmType.getOid());
+						return true;
+					}
+					return false;
+				}).collect(Collectors.toList())))
+			.collect(Collectors.toList());
+		return treeList;
 	}
 
 	/**
@@ -1050,18 +1093,36 @@
 		CodeClassify classifyDO = selectByOid(codeClassifyOid);
 		//鏌ヨ涓婄骇
 		fullInfo.setCurrentClassifyVO(codeClassifyDO2VO(classifyDO));
-		List<Map<String, Object>> maps = codeClassifyMapper.selectAllLevelParentByOid(codeClassifyOid);
-		List<CodeClassify> codeClassifyList = new ArrayList<>();
-		for (Map<String, Object> map : maps) {
-			CodeClassify codeClassify = new CodeClassify();
-			codeClassify.setOid(String.valueOf(map.get("OID")));
-			codeClassify.setOid(String.valueOf(map.get("LEVEL")));
-			codeClassifyList.add(codeClassify);
-		}
+//		List<Map<String, Object>> maps = codeClassifyMapper.selectAllLevelParentByOid(codeClassifyOid);
+//		List<Map<String, Object>> maps = selectAllLevelParentByOid(codeClassifyOid);
+		List<CodeClassify> codeClassifyList = selectAllLevelParentByOid(codeClassifyOid);
+//		for (Map<String, Object> map : maps) {
+//			CodeClassify codeClassify = new CodeClassify();
+//			codeClassify.setOid(String.valueOf(map.get("OID")));
+//			codeClassify.setDataLevel((Integer) map.get("LEVEL"));
+//			codeClassifyList.add(codeClassify);
+//		}
+
 		fullInfo.setParentClassifyVOs(codeClassifyDO2VOs(codeClassifyList));
 		if(!CollectionUtils.isEmpty(fullInfo.getParentClassifyVOs())){
 			fullInfo.setTopClassifyVO(fullInfo.getParentClassifyVOs().stream().filter(s->StringUtils.isBlank(s.getParentcodeclassifyoid())).findFirst().orElseGet(()->null));
 		}
 		return fullInfo;
 	}
+
+	/**
+	 * 缁熻瀛愯妭鐐圭殑涓暟
+	 *
+	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+	 * @return 涓暟
+	 */
+	@Override
+	public int countChildrenByClassifyOid(String codeClassifyOid) {
+//		Map<String,String> conditionMap = new HashMap<>();
+//		conditionMap.put("parentCodeClassifyOid",codeClassifyOid);
+		QueryWrapper<CodeClassify> wrapper = new QueryWrapper<>();
+		wrapper.eq("parentCodeClassifyOid",codeClassifyOid);
+		return codeClassifyMapper.selectCount(wrapper).intValue();
+	}
+
 }

--
Gitblit v1.9.3