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-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java |  295 ++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 234 insertions(+), 61 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 1ae8d4f..1ed0304 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,52 +2,61 @@
 
 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.TreeWrapperOptions;
+import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
 import com.vci.ubcs.code.entity.CodeClassify;
-import com.vci.ubcs.code.entity.CodeClstemplateEntity;
+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.CodeClstemplateMapper;
+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.ICodeKeyAttrRepeatService;
+import com.vci.ubcs.code.service.ICodeOsattributeService;
 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.code.vo.pagemodel.TreeQueryObject;
-import com.vci.ubcs.com.vci.starter.bo.WriteExcelData;
-import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
-import com.vci.ubcs.com.vci.starter.poi.bo.ReadExcelOption;
-import com.vci.ubcs.com.vci.starter.poi.bo.WriteExcelOption;
-import com.vci.ubcs.com.vci.starter.poi.constant.ExcelLangCodeConstant;
-import com.vci.ubcs.com.vci.starter.poi.util.ExcelUtil;
-import com.vci.ubcs.com.vci.starter.revision.service.RevisionModelUtil;
-import com.vci.ubcs.com.vci.starter.util.LocalFileUtil;
-import com.vci.ubcs.com.vci.starter.web.pagemodel.BaseQueryObject;
-import com.vci.ubcs.com.vci.starter.web.pagemodel.DataGrid;
-import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
-import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
-import com.vci.ubcs.com.vci.starter.web.util.LangBaseUtil;
-import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
+import com.vci.ubcs.omd.feign.IBtmTypeClient;
+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;
+import com.vci.ubcs.starter.poi.bo.WriteExcelOption;
+import com.vci.ubcs.starter.poi.constant.ExcelLangCodeConstant;
+import com.vci.ubcs.starter.poi.util.ExcelUtil;
+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.Tree;
+import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
+import com.vci.ubcs.starter.web.util.LangBaseUtil;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import org.apache.poi.hssf.util.HSSFColor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springblade.core.cache.utils.CacheUtil;
+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;
 
@@ -65,16 +74,25 @@
 	private CodeClassifyMapper codeClassifyMapper;
 
 	@Resource
-	private CodeClstemplateMapper codeClstemplateMapper;
+	private CodeClassifyTemplateMapper codeClassifyTemplateMapper;
 
-//	@Resource
-//	private ICodeRuleService codeRuleService;
+	@Resource
+	private ICodeRuleService codeRuleService;
 
 	@Resource
 	private CodeOsbtmtypeMapper codeOsbtmtypeMapper;
 
 	@Resource
-	CodeOsbtmtypeattributeMapper codeOsbtmtypeattributeMapper;
+	private CodeOsbtmtypeattributeMapper codeOsbtmtypeattributeMapper;
+
+	@Resource
+	private IBtmTypeClient btmTypeClient;
+
+	/**
+	 * 灞炴�ф湇鍔�
+	 */
+//	@Autowired
+//	private OsAttributeServiceI attributeService;
 
 	/**
 	 * 鏃ュ織
@@ -87,7 +105,7 @@
 	private RevisionModelUtil revisionModelUtil;
 
 	@Resource
-	private ICodeKeyattrrepeatService iCodeKeyattrrepeatService;
+	private ICodeKeyAttrRepeatService iCodeKeyattrrepeatService;
 	/**
 	 * 涓婄骇鑺傜偣鐨勫睘鎬у悕绉�
 	 */
@@ -116,8 +134,11 @@
 		codeClassifyEntity.setCreator(AuthUtil.getUser().getUserName());
 		codeClassifyEntity.setCreateTime(new Date());
 		codeClassifyEntity.setTs(new Date());
+		codeClassifyEntity.setOwner(AuthUtil.getUser().getUserName());
 		codeClassifyEntity.setLastModifier(AuthUtil.getUser().getUserName());
 		codeClassifyEntity.setLastModifyTime(new Date());
+		codeClassifyEntity.setRevisionSeq(1);
+		codeClassifyEntity.setVersionSeq(1);
 		int insertNumber = codeClassifyMapper.insert(codeClassifyEntity);
 		return R.status(SqlHelper.retBool(insertNumber));
 	}
@@ -168,7 +189,11 @@
 		if(codeClassifyEntity == null || codeClassifyEntity.getOid() == null){
 			return R.fail("浼犲叆鏁版嵁涓嶈兘涓虹┖锛�");
 		}
-		codeClassifyEntity = selectByOid(codeClassifyEntity.getOid());
+		CodeClassify codeClassifyNew = selectByOid(codeClassifyEntity.getOid());
+		if(codeClassifyNew == null){
+			return R.fail("鏈煡璇㈠埌鐩稿叧鏁版嵁锛�");
+		}
+		codeClassifyNew.setTs(codeClassifyEntity.getTs());
 		return checkIsCanDeleteForDO(codeClassifyEntity);
 	}
 
@@ -194,11 +219,11 @@
 	private R checkIsCanDeleteForDO(CodeClassify codeClassifyEntity) {
 
 		//妫�鏌s
-		Map<String,Object> condition = new HashMap<>(2);
-		condition.put("oid",codeClassifyEntity.getOid());
-		condition.put("ts",codeClassifyEntity.getTs());
-		CodeClassify detail = codeClassifyMapper
-			.selectOne(Condition.getQueryWrapper(condition,CodeClassify.class));
+//		Map<String,Object> condition = new HashMap<>(2);
+//		condition.put("oid",codeClassifyEntity.getOid());
+//		condition.put("ts",codeClassifyEntity.getTs());
+		CodeClassify detail = codeClassifyMapper.selectOne(Condition.getQueryWrapper(codeClassifyEntity));
+//			.selectOne(Condition.getQueryWrapper(condition,CodeClassify.class));
 		if(detail == null){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
 			throw new ServiceException("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
 //			return R.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
@@ -248,7 +273,6 @@
 		return codeClassifyMapper.checkHasChild(oid.trim());
 	}
 
-
 	/**
 	 * 鍒犻櫎涓婚搴撳垎绫�
 	 * @param codeClassify 涓婚搴撳垎绫绘暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
@@ -267,7 +291,7 @@
 		//鍏堢畝绉版槸鍚︽湁鍏宠仈妯℃澘锛屾湁妯℃澘瑕佸厛鍒犻櫎
 		Map<String,Object> condition = new HashMap<>(2);
 		condition.put("codeClassifyOid",codeClassify.getOid());
-		List<CodeClstemplateEntity> codeClstemplateEntities = codeClstemplateMapper.selectByMap(condition);
+		List<CodeClassifyTemplate> codeClstemplateEntities = codeClassifyTemplateMapper.selectByMap(condition);
 //		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateDO.class);
 //		queryWrapper.addQueryMap("codeClassifyOid",codeClassifyDTO.getOid());
 //		List<CodeClassifyTemplateDO> codeClassifyTemplateDOListHaveTemplate =  codeClassifyTemplateMapper.selectByWrapper(queryWrapper);
@@ -291,7 +315,8 @@
 					//2銆佹煡璇㈣鍒犻櫎鐨勫瓙绫绘暟鎹�
 					List<CodeClassify>  codeClassifyDOList = codeClassifyMapper.selectBatchIds(s);
 					deletes.addAll(codeClassifyDOList);
-					codeClassifyMapper.deleteBatchIds(s);
+//					codeClassifyMapper.deleteBatchIds(s);
+					baseMapper.deleteBatchIds(s);
 				}
 
 			}
@@ -327,6 +352,9 @@
 		//鏌ヨ淇敼鍓峵s
 		CodeClassify codeClassify = codeClassifyMapper.selectById(oid);//涓昏鏄负浜嗘煡璇s
 		codeClassify.setLcStatus(lcStatus);
+		codeClassify.setTs(new Date());
+		codeClassify.setLastModifyTime(new Date());
+		codeClassify.setLastModifier(AuthUtil.getUser().getUserName());
 		//鍚敤銆佸仠鐢�
 //		int u = codeClassifyMapper.updateLcStatus(oid,lcStatus);
 		int count = codeClassifyMapper.updateById(codeClassify);
@@ -349,7 +377,6 @@
 		return codeClassifyDO2VOs(codeClassifyDOList);
 	}
 
-
 	/**
 	 * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
 	 * @param oidCollections 涓婚敭鐨勯泦鍚�
@@ -368,7 +395,6 @@
 		}
 		return  codeClassifyList;
 	}
-
 
 	/**
 	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
@@ -456,8 +482,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 鏍戝舰鏌ヨ瀵硅薄
@@ -667,19 +730,24 @@
 			});
 			throw new VciBaseException("璺緞鏈夐噸澶�,{0}",new String[]{rowIndexList.stream().collect(Collectors.joining(","))});
 		}
-		//缂栧彿鑾峰彇涓氬姟绫诲瀷鏈嶅姟杩樻湭瀹屾垚锛屾墍浠ョ瓑涓氬姟绫诲瀷瀹屾垚鍚庤繘琛屽悗缁殑瀹屾垚
-//		Map<String, CodeRuleVO> ruleVOMap = Optional.ofNullable(codeRuleService.listCodeRuleByIds(
-//			poList.stream().filter(s->StringUtils.isNotBlank(s.getCodeRuleId())).map(CodeClassifyPO::getCodeRuleId).collect(Collectors.toList()))
-//		).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
-		Map<String, CodeRuleVO> ruleVOMap = null;
-		Map<String,CodeKeyAttrRepeatRuleVO> keyRuleVOMap =Optional.ofNullable(iCodeKeyattrrepeatService.listCodeKeyAttrRepeatRuleByOids(
-			poList.stream().filter(s->StringUtils.isNotBlank(s.getKeyRepeatRuleId())).map(CodeClassifyPO::getKeyRepeatRuleId).collect(Collectors.toList()))
+		//缂栧彿鑾峰彇涓氬姟绫诲瀷鏈嶅姟
+		List<String> ruleOids = poList.stream().filter(
+				s -> StringUtils.isNotBlank(s.getCodeRuleId()))
+			.map(CodeClassifyPO::getCodeRuleId)
+			.collect(Collectors.toList());
+		Map<String, CodeRuleVO> ruleVOMap = Optional.ofNullable(ruleOids.size()==0 ? null:codeRuleService.listCodeRuleByOids(ruleOids)
 		).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
-//		codeOsbtmtypeMapper.selectList((Wrapper<CodeOsbtmtypeEntity>) poList);
-//		Map<String, CodeOsbtmtypeVO> btmVOMap = Optional.ofNullable(
-//			codeOsbtmtypeMapper.selectList((Wrapper<CodeOsbtmtypeEntity>) poList)
-//		).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
-		Map<String, CodeOsbtmtypeVO> btmVOMap = null;
+
+		List<String> keyOids = poList.stream().filter(s -> StringUtils.isNotBlank(s.getKeyRepeatRuleId()))
+			.map(CodeClassifyPO::getKeyRepeatRuleId).collect(Collectors.toList());
+		Map<String,CodeKeyAttrRepeatRuleVO> keyRuleVOMap =Optional.ofNullable(keyOids.size()==0 ? null: iCodeKeyattrrepeatService.listCodeKeyAttrRepeatRuleByOids(keyOids)
+		).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
+
+		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/**璺緞**/,String/**涓婚敭**/> oidPathMap = new HashMap<>();
 
 		//鎴戜滑闇�瑕佹煡璇㈡墍鏈夊凡缁忓瓨鍦ㄧ殑鍒嗙被锛屼富瑕佹槸璺緞锛岀敤鏉ュ垽鏂垎绫荤殑鏁版嵁
@@ -709,7 +777,7 @@
 			classify.setDescription(po.getDescription());
 			oidPathMap.put(po.getPath(),classify.getOid());
 			if(StringUtils.isNotBlank(po.getBtmTypeId())){
-				CodeOsbtmtypeVO typeVO = btmVOMap.get(po.getBtmTypeId().toLowerCase(Locale.ROOT));
+				CodeOsbtmtypeVO typeVO = (CodeOsbtmtypeVO)btmVOMap.get(po.getBtmTypeId().toLowerCase(Locale.ROOT));
 				classify.setBtmTypeId(typeVO.getId());
 				classify.setBtmTypeName(typeVO.getName());
 			}
@@ -801,7 +869,7 @@
 					classifyDO.setTs(new Date());
 					classifyDO.setBtmname("codeclassify");
 					classifyDO.setLcStatus("Enabled");
-					classifyDO.setId("0");
+					classifyDO.setOwner(AuthUtil.getUser().getUserName());
 					classifyDO.setCreator(AuthUtil.getUser().getUserName());
 					classifyDO.setLastModifier(AuthUtil.getUser().getUserName());
 					classifyDO.setLastModifyTime(new Date());
@@ -842,7 +910,7 @@
 		condition.put("pkbtmtype",topClassifyVO.getBtmtypeid());
 
 		List<CodeOsbtmtypeattributeEntity> unDefaultAttributes = codeOsbtmtypeattributeMapper.selectByMap(condition);
-//		List<OsBtmTypeAttributeVO> unDefaultAttributes = btmService. (topClassifyVO.getBtmtypeid());
+		// List<OsBtmTypeAttributeVO> unDefaultAttributes = btmService. (topClassifyVO.getBtmtypeid());
 		List<CodeOsattributeVO> attributeVOS = new ArrayList<>();
 		if(!CollectionUtils.isEmpty(unDefaultAttributes)){
 			unDefaultAttributes.stream().forEach(attr->{
@@ -852,6 +920,7 @@
 				attributeVO.setAttrlength(Short.valueOf(attr.getAttributelength()));
 				attributeVO.setBtmtypeid(attr.getReferbtmtypeid());
 				attributeVO.setBtmtypename(attr.getReferbtmtypename());
+				attributeVO.setAttributedatatypetext(attr.getReferbtmtypename());
 				boolean add = true;
 				if(StringUtils.isNotBlank(id) && !attributeVO.getId().contains(id.replace("*",""))){
 					add = false;
@@ -864,8 +933,8 @@
 				}
 			});
 		}
-//		if(!CollectionUtils.isEmpty(attributeService.getDefaultAttributeVOs())){
-//			attributeService.getDefaultAttributeVOs().stream().forEach(attr->{
+//		if(!CollectionUtils.isEmpty(codeOsattributeService.getDefaultAttributeVOs())){
+//			codeOsattributeService.getDefaultAttributeVOs().stream().forEach(attr->{
 //				boolean add = true;
 //				if(StringUtils.isNotBlank(id) && !attr.getId().contains(id.replace("*",""))){
 //					add = false;
@@ -913,14 +982,14 @@
 	 */
 	@Override
 	public List<CodeClassify> selectAllLevelParentByOid(String oid){
-//		String sql = "select oid,level from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) + " start with oid= :oid connect by prior PARENTCODECLASSIFYOID = oid ";
-//		Map< String,String> conditionMap = new HashMap< String,String>();
-//		conditionMap.put("oid",oid);
+		// String sql = "select oid,level from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) + " start with oid= :oid connect by prior PARENTCODECLASSIFYOID = oid ";
+		// Map< String,String> conditionMap = new HashMap< String,String>();
+		// conditionMap.put("oid",oid);
 
 		List<Map<String,Object>> cbos = codeClassifyMapper.selectAllLevelParentByOid(oid);
 		Map<String,String> oidLevelMap = new HashMap<>();
 		Optional.ofNullable(cbos).orElseGet(()->new ArrayList<>()).stream().forEach(cbo->{
-			oidLevelMap.put(cbo.get("oid").toString(),cbo.get("level").toString());
+			oidLevelMap.put(cbo.get("OID").toString(),cbo.get("LEVEL").toString());
 		});
 		if(CollectionUtils.isEmpty(oidLevelMap)){
 			return new ArrayList<>();
@@ -934,6 +1003,17 @@
 			});
 		}
 		return classifyDOS;
+	}
+
+	/**
+	 * 涓婚敭鑾峰彇涓婚搴撳垎绫�
+	 * @param oid 涓婚敭
+	 * @return 涓婚搴撳垎绫绘樉绀哄璞�
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+	 */
+	@Override
+	public CodeClassifyVO getObjectByOid(String oid) throws VciBaseException{
+		return codeClassifyDO2VO(selectByOid(oid));
 	}
 
 	/**
@@ -952,9 +1032,8 @@
 		return codeClassifyDO2VO(classifyDO);
 	}
 
-
 	/**
-	 * 涓婚搴撶殑鏍�
+	 * 涓婚搴撶殑鏍�,宸茬粡鑱旇皟涓氬姟绫诲瀷鏌ヨ
 	 *
 	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
 	 * @return 涓婚搴撴樉绀烘爲
@@ -965,9 +1044,103 @@
 			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 -> btmTypeVOS.stream().
+			anyMatch(btmType -> Objects.equals(tree.getAttributes().get("id"), btmType.getId()))).collect(Collectors.toList());
+		return treeList;
 	}
+
+	/**
+	 * 鑾峰彇杩欎釜鍒嗙被涓嬬殑涓氬姟绫诲瀷锛屽綋鍓嶆病鏈夊氨鑾峰彇涓婄骇鐨勭涓�涓笟鍔$被鍨�
+	 * @param oid 褰撳墠鍒嗙被鐨刼id
+	 * @return oid,id,name,btmtypeid,btmtypename锛屾病鏈夊氨杩斿洖null
+	 */
+	@Override
+	public CodeClassify selectBtmOrParentBtm(String oid){
+		List<CodeClassify> oidList = selectAllLevelParents(oid);
+		return oidList.size()==0?null:oidList.get(0);
+	}
+
+	/**
+	 * 鑾峰彇鎵�鏈夊眰绾т笂绾у叧鑱斾笟鍔$被鍨嬫暟鎹�
+	 * @param oid 褰撳墠鍒嗙被鐨刼id
+	 * @return oid,id,name,btmtypeid,btmtypename
+	 */
+	@Override
+	public List<CodeClassify> selectAllLevelParents(String oid){
+//		String sql = "select oid,id,name,btmtypeid,btmtypename from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) + " where btmtypeid is not null start with oid= :oid connect by prior PARENTCODECLASSIFYOID=oid ";
+//		Map< String,String> conditionMap = new HashMap< String,String>();
+//		conditionMap.put("oid",oid);
+//		List<Map> dataList = boService.queryBySqlForMap(sql,conditionMap);
+		List<Map<String, Object>> dataList = codeClassifyMapper.selectAllLevelParents(oid);
+		List<CodeClassify> oidList = new ArrayList<CodeClassify>();
+		if(!CollectionUtils.isEmpty(dataList)){
+			for(Map data:dataList){
+				CodeClassify codeClassifyDO = new CodeClassify();
+				codeClassifyDO.setOid(VciBaseUtil.getStringValueFromObject(data.get("OID")));
+				codeClassifyDO.setId(VciBaseUtil.getStringValueFromObject(data.get("ID")));
+				codeClassifyDO.setName(VciBaseUtil.getStringValueFromObject(data.get("NAME")));
+				codeClassifyDO.setBtmTypeId(VciBaseUtil.getStringValueFromObject(data.get("BTMTYPEID")));
+				codeClassifyDO.setBtmTypeName(VciBaseUtil.getStringValueFromObject(data.get("BTMTYPENAME")));
+				oidList.add(codeClassifyDO);
+			}
+		}
+		return oidList;
+	}
+
+	/**
+	 * 浣跨敤鍒嗙被涓婚敭鑾峰彇鍒嗙被鐩稿叧鐨勬墍鏈変俊鎭�
+	 *
+	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+	 * @return 鍒嗙被涓婄骇锛屼笅绾х殑淇℃伅
+	 */
+	@Override
+	public CodeClassifyFullInfoBO getClassifyFullInfo(String codeClassifyOid) {
+		VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
+		CodeClassifyFullInfoBO fullInfo = new CodeClassifyFullInfoBO();
+		CodeClassify classifyDO = selectByOid(codeClassifyOid);
+		//鏌ヨ涓婄骇
+		fullInfo.setCurrentClassifyVO(codeClassifyDO2VO(classifyDO));
+//		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