From 931eb15f748f181fbf347508830f21830f09c863 Mon Sep 17 00:00:00 2001
From: 1428594221 <1428594221@qq.com>
Date: 星期三, 14 六月 2023 18:10:43 +0800
Subject: [PATCH] 默认参照数接口,默认参照列表接口

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java |  272 ++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 211 insertions(+), 61 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index 8565672..9280f3a 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -1,6 +1,7 @@
 package com.vci.ubcs.code.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
@@ -21,6 +22,8 @@
 import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
 import com.vci.ubcs.code.vo.pagemodel.UITablePageVO;
 import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.ubcs.omd.constant.BtmTypeLcStatusConstant;
+import com.vci.ubcs.omd.entity.BtmTypeAttribute;
 import com.vci.ubcs.omd.feign.IAttributeClient;
 import com.vci.ubcs.omd.feign.IBtmTypeClient;
 import com.vci.ubcs.omd.feign.IEnumClient;
@@ -31,6 +34,7 @@
 import com.vci.ubcs.omd.vo.RevisionRuleVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
 import com.vci.ubcs.starter.revision.model.BaseModel;
+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.web.constant.QueryOptionConstant;
@@ -49,9 +53,12 @@
 import com.vci.ubcs.system.user.feign.IUserClient;
 import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
 import oracle.sql.TIMESTAMP;
+import org.apache.commons.collections4.MapUtils;
 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.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.StringPool;
@@ -60,6 +67,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
 
 import javax.annotation.Resource;
 import java.beans.BeanInfo;
@@ -266,7 +274,7 @@
 	/**
 	 * 鏇挎崲瀛楃
 	 */
-	public static final String SPECIAL_CHAR  = "VCI";
+	public static final String SPECIAL_CHAR = "VCI";
 //	@Autowired
 //	private CodeOsbtmtypeMapper codeOsbtmtypeMapper;----
 
@@ -312,7 +320,7 @@
 //		 	Dict dict = new Dict();
 //			dict.setParentId(Long.valueOf(attrVO.getEnumid()));
 			R<List<EnumVO>> list = enumClient.getList(attrVO.getEnumId());
-			if(list.isSuccess()){
+			if (list.isSuccess()) {
 				for (EnumVO datum : list.getData()) {
 					KeyValue keyValue = new KeyValue();
 					keyValue.setKey(datum.getItemValue());
@@ -323,7 +331,6 @@
 		}
 		return comboboxKVs;
 	}
-
 	/**
 	 * 淇敼鐘舵��
 	 *
@@ -1184,7 +1191,7 @@
 			//澶勭悊鎵�鏈夌殑鍒楋紝杩欎釜妯℃澘娌℃湁鍚堝苟鐨勮〃澶寸殑鎯呭喌
 			List<UITableFieldVO> fieldVOList = new ArrayList<>();
 			resembleAttrList.forEach(attrVO -> {
-				UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO,false);
+				UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO, false);
 				tableFieldVO.setHidden(false);
 				fieldVOList.add(tableFieldVO);
 			});
@@ -1199,12 +1206,12 @@
 	/**
 	 * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸鏄剧ず鐨勯厤缃�
 	 *
-	 * @param attrVO 妯℃澘灞炴��
+	 * @param attrVO  妯℃澘灞炴��
 	 * @param forEdit 鏄惁鏄紪杈戞墍闇�
 	 * @return 琛ㄦ牸鐨勫瓧娈�
 	 */
 	@Override
-	public UITableFieldVO templateAttr2TableField(CodeClassifyTemplateAttrVO attrVO,boolean forEdit) {
+	public UITableFieldVO templateAttr2TableField(CodeClassifyTemplateAttrVO attrVO, boolean forEdit) {
 		UITableFieldVO fieldVO = new UITableFieldVO();
 		if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) {
 			attrVO.setEnumId(MY_DATA_SECRET);
@@ -1215,9 +1222,9 @@
 		fieldVO.setSort(true);
 		fieldVO.setSortField(fieldVO.getField());
 		fieldVO.setQueryField(fieldVO.getField());
-		if (forEdit){
+		if (forEdit) {
 			fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormDisplayFlag()));
-		}else {
+		} else {
 			fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getTableDisplayFlag()));
 		}
 		if (attrVO.getAttrTableWidth() != null && attrVO.getAttrTableWidth() > 0) {
@@ -1237,7 +1244,7 @@
 				if (StringUtils.isBlank(attrVO.getEnumId())) {
 					fieldVO.setComboxKey(fieldVO.getField() + "_data");
 				}
-			}else {
+			} else {
 //				List<KeyValue> osEnumItemVOList= enumService.getEnum(attrVO.getEnumId());
 //				fieldVO.setData(osEnumItemVOList);
 			}
@@ -1407,8 +1414,8 @@
 				}
 			}
 			queryValue = String.format(temp, (trim ? value.trim() : value));
-			temp = temp.replace("to_single_byte('%s')","to_single_byte(%s)");
-			queryKey = String.format(temp, "t."+attrId);
+			temp = temp.replace("to_single_byte('%s')", "to_single_byte(%s)");
+			queryKey = String.format(temp, "t." + attrId);
 			conditionMap.put(queryKey, QueryOptionConstant.OR + queryValue);
 		}
 	}
@@ -1427,7 +1434,7 @@
 	public DataGrid<Map<String, String>> queryGrid(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) {
 		CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmType, templateVO, conditionMap, pageHelper);
 //		List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
-		List<Map<String,String>> maps = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
+		List<Map<String, String>> maps = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
 
 		DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
 		List<Map<String, String>> dataList = new ArrayList<>();
@@ -1480,7 +1487,7 @@
 	 * @param dataMap              鏁版嵁鐨勬槧灏�
 	 * @param templateVO           妯℃澘鐨勫睘鎬�
 	 * @param onlySelectAttrIdList 浠呬粎鏌ヨ鐨勫睘鎬у瓧娈�
-	 * @param form 琛ㄥ崟閲屼娇鐢�
+	 * @param form                 琛ㄥ崟閲屼娇鐢�
 	 */
 	@Override
 	public void wrapperData(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO,
@@ -1511,15 +1518,15 @@
 			//澶勭悊鏋氫妇
 			wrapperEnum(enumAttrVOs, data);
 			String lcstatus = data.get(VciQueryWrapperForDO.LC_STATUS_FIELD);
-			String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION,"");
+			String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION, "");
 			if ((CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) || CodeDefaultLC.AUDITING.getValue().equalsIgnoreCase(lcstatus))
 				&& StringUtils.isBlank(copyFromVersion)
 			) {
 				data.put(VciQueryWrapperForDO.ID_FIELD, "******");
 			}
 			data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), CodeDefaultLC.getTextByValue(lcstatus));
-			if(CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus)
-				&& StringUtils.isNotBlank(copyFromVersion)){
+			if (CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus)
+				&& StringUtils.isNotBlank(copyFromVersion)) {
 				data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), "淇敼涓�");
 			}
 			if (data.containsKey("creator")) {
@@ -1532,12 +1539,12 @@
 		if (!CollectionUtils.isEmpty(userIds)) {
 			Map<String, User> userVOMap = new HashMap<>();
 			for (String userId : userIds) {
-				if(!StringUtils.isNumeric(userId)){
+				if (!StringUtils.isNumeric(userId)) {
 					continue;
 				}
 				User data = iUserClient.userInfoById(Long.valueOf(userId)).getData();
-				if(data != null){
-					userVOMap.put(String.valueOf(data.getId()),data);
+				if (data != null) {
+					userVOMap.put(String.valueOf(data.getId()), data);
 				}
 			}
 //			Map<String, SmUserVO> userVOMap = Optional.ofNullable(userQueryService.listUserByUserIds(userIds)).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
@@ -1670,7 +1677,7 @@
 //				selectFieldList.add(attrId.getOid());
 //			}
 //		});
-		if(allAttributeByBtmId.getData() != null ){
+		if (allAttributeByBtmId.getData() != null) {
 			for (BtmTypeAttributeVO attribute : allAttributeByBtmId.getData().getAttributes()) {
 				if (!selectFieldList.contains(attribute.getId()) && !"secretgrade".equalsIgnoreCase(attribute.getId())) {
 					selectFieldList.add(attribute.getId());
@@ -2060,8 +2067,6 @@
 //		return codeList.size() > 0 ? codeList.get(0) : "";
 
 
-
-
 		//淇敼鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑
 //		BatchCBO batchCBO = new BatchCBO();
 //		batchCBO.getUpdateCbos().add(cbo);
@@ -2106,10 +2111,10 @@
 
 		//鍙兘鍒犻櫎鑷繁鍒涘缓鐨勬暟鎹�
 		String userId = AuthUtil.getUser().getUserName();
-		for (CodeWupin clientBusinessObject:cboList){
+		for (CodeWupin clientBusinessObject : cboList) {
 			String creator = clientBusinessObject.getCreator();
-			if(!userId.equalsIgnoreCase(creator)){
-				throw new VciBaseException("缂栫爜涓�"+clientBusinessObject.getId()+"鐨勬暟鎹笉鏄綋鍓嶇敤鎴峰垱寤猴紝涓嶈兘鍒犻櫎锛�");
+			if (!userId.equalsIgnoreCase(creator)) {
+				throw new VciBaseException("缂栫爜涓�" + clientBusinessObject.getId() + "鐨勬暟鎹笉鏄綋鍓嶇敤鎴峰垱寤猴紝涓嶈兘鍒犻櫎锛�");
 			}
 
 		}
@@ -2519,11 +2524,11 @@
 		String btmId = topClassifyVO.getBtmtypeid();
 		//鏌ヨ鏁版嵁
 		Map<String, String> conditionMap = new HashMap<>();
-		conditionMap.put("t.oid",oid);
+		conditionMap.put("t.oid", oid);
 		CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmId, templateVO, conditionMap, new PageHelper(-1));
 		//鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇�
 		List<Map> cbosB = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
-		List<Map<String,String>> cbos = new ArrayList<>();
+		List<Map<String, String>> cbos = new ArrayList<>();
 		cbosB.stream().forEach(map -> {
 			Map<String, String> data = new HashMap<>();
 			for (Object o : map.keySet()) {
@@ -2537,7 +2542,7 @@
 			throw new VciBaseException("鏁版嵁鍦ㄧ郴缁熶腑涓嶅瓨鍦紝鏄惁鍥犱负淇敼杩囦笟鍔$被鍨嬶紵");
 		}
 //		Map<String, String> data = new HashMap<>();
-		Map<String,String> cbo = cbos.get(0);
+		Map<String, String> cbo = cbos.get(0);
 //		WebUtil.copyValueToMapFromCbos(cbo, data);
 		List<Map<String, String>> dataList = new ArrayList<>();
 		dataList.add(cbo);
@@ -2633,10 +2638,10 @@
 		QueryWrapper<CodeWupin> wrapper = new QueryWrapper();
 		if (conditionMap.get("oid").contains(",")) {
 //			oidMap.put("oid", QueryOptionConstant.IN +"("+ VciBaseUtil.toInSql(oidList.toArray(new String[0])) + ")");
-			wrapper.in("oid",oidList);
+			wrapper.in("oid", oidList);
 		} else {
 //			oidMap.put("oid", conditionMap.get("oid"));
-			wrapper.in("oid",conditionMap.get("oid"));
+			wrapper.in("oid", conditionMap.get("oid"));
 		}
 		if (CollectionUtils.isEmpty(oidMap)) {
 			throw new VciBaseException("涓氬姟鏁版嵁涓婚敭涓嶈兘涓虹┖");
@@ -2669,18 +2674,18 @@
 		CodeClassifyTemplateVO templateVO = templateService.codeClassifyTemplateDO2VO(templateDOList.get(0));
 		templateVO.setAttributes(codeClassifyTemplateAttrService.codeClassifyTemplateAttrDO2VOs(attrDOList));
 		try {
-			if (oidList.size() > 1){
-				DataGrid<Map<String,String>> allDataGrid = new DataGrid<>();
-				List<Map<String,String>> allData = new ArrayList<>();
+			if (oidList.size() > 1) {
+				DataGrid<Map<String, String>> allDataGrid = new DataGrid<>();
+				List<Map<String, String>> allData = new ArrayList<>();
 				oidList.forEach(oid -> {
-					Map<String,String> condition = new HashMap<>();
-					condition.put("oid",oid);
+					Map<String, String> condition = new HashMap<>();
+					condition.put("oid", oid);
 					DataGrid<Map<String, String>> dataGrid = queryGrid(btmType, templateVO, condition, pageHelper);
 					allData.addAll(dataGrid.getData());
 				});
 				allDataGrid.setData(allData);
 				return allDataGrid;
-			}else {
+			} else {
 				return queryGrid(btmType, templateVO, conditionMap, pageHelper);
 			}
 		} catch (Exception e) {
@@ -2700,20 +2705,20 @@
 		MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
 		CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid);
 		uiInfoVO.setTemplateVO(templateVO);
-		UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO,true);
+		UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO, true);
 		List<String> phaseAttrIdList = listPhaseAttrByClassifyOid(codeClassifyOid, phase);
 		uiTableDefineVO.getCols().stream().forEach(list -> {
-			List<UITableFieldVO> visiableTableField=new ArrayList<>();
-			if(StringUtils.isNotBlank(phase)) {
+			List<UITableFieldVO> visiableTableField = new ArrayList<>();
+			if (StringUtils.isNotBlank(phase)) {
 				visiableTableField = list.stream().filter(col ->
 					phaseAttrIdList.stream().anyMatch(s -> StringUtils.equalsIgnoreCase(col.getField(), s) ||
 						(StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s))
 						|| (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s))
 					)).collect(Collectors.toList());
-			}else{
-				visiableTableField=  list.stream().filter(col ->
+			} else {
+				visiableTableField = list.stream().filter(col ->
 					templateVO.getAttributes().stream().anyMatch(s ->
-						(!s.getReadOnlyFlag().equalsIgnoreCase("true")&& StringUtils.equalsIgnoreCase(col.getField(), s.getId())) ||
+						(!s.getReadOnlyFlag().equalsIgnoreCase("true") && StringUtils.equalsIgnoreCase(col.getField(), s.getId())) ||
 							(StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s.getId()))
 							|| (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s.getId()))
 					)).collect(Collectors.toList());
@@ -2725,9 +2730,9 @@
 					setReferConfig2EditConfig(vo);
 				} else if ("combox".equalsIgnoreCase(vo.getFieldType())) {
 					setComboxConfig2EditConfig(vo);
-				} else if (StringUtils.isNotBlank(vo.getDateFormate())){
+				} else if (StringUtils.isNotBlank(vo.getDateFormate())) {
 					vo.setEdit("date");
-				}else {
+				} else {
 					vo.setEdit(vo.getFieldType());
 				}
 			});
@@ -2807,14 +2812,14 @@
 	 * @param vo 琛ㄦ牸瀛楁鏄剧ず瀵硅薄
 	 */
 	private void setReferConfig2EditConfig(UITableFieldVO vo) {
-		if (!CollectionUtils.isEmpty(vo.getReferConfig().getWhere())){
+		if (!CollectionUtils.isEmpty(vo.getReferConfig().getWhere())) {
 			vo.getReferConfig().getWhere().keySet().forEach(key -> {
 				vo.getReferConfig().getWhere().put(key, "'" + vo.getReferConfig().getWhere().get(key) + "'");
 			});
 		}
-		if (StringUtils.isNotBlank(vo.getReferConfig().getParentValue())){
+		if (StringUtils.isNotBlank(vo.getReferConfig().getParentValue())) {
 			String parentValue = vo.getReferConfig().getParentValue();
-			parentValue ="\\" +  parentValue.replaceAll("'","{vci-quote}").replaceAll("=","{vci-equals}");
+			parentValue = "\\" + parentValue.replaceAll("'", "{vci-quote}").replaceAll("=", "{vci-equals}");
 			vo.getReferConfig().setParentValue(parentValue);
 		}
 		String referConfig = vo.getReferConfig().toString()
@@ -2838,16 +2843,16 @@
 	 */
 	private void setComboxConfig2EditConfig(UITableFieldVO vo) {
 		vo.setEditConfig("{editable:true,comboxKey:'" + vo.getComboxKey() + "'");
-		if (!CollectionUtils.isEmpty(vo.getData())){
-			vo.setEditConfig(vo.getEditConfig()+", comboxConfig:");
+		if (!CollectionUtils.isEmpty(vo.getData())) {
+			vo.setEditConfig(vo.getEditConfig() + ", comboxConfig:");
 			for (int i = 0; i < vo.getData().size(); i++) {
 				KeyValue data = vo.getData().get(i);
-				if (i == vo.getData().size() -1){
-					vo.setEditConfig(vo.getEditConfig() + "{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'}]}");
-				}else if (i == 0){
-					vo.setEditConfig(vo.getEditConfig() + "{data:[{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'},");
-				}else{
-					vo.setEditConfig(vo.getEditConfig() + "{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'},");
+				if (i == vo.getData().size() - 1) {
+					vo.setEditConfig(vo.getEditConfig() + "{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'}]}");
+				} else if (i == 0) {
+					vo.setEditConfig(vo.getEditConfig() + "{data:[{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'},");
+				} else {
+					vo.setEditConfig(vo.getEditConfig() + "{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'},");
 				}
 			}
 			vo.setEditConfig(vo.getEditConfig() + ",valueField:'" + vo.getQueryField() + "'");
@@ -2865,7 +2870,7 @@
 	@Override
 	public MdmUIInfoVO getFormDefineByClassifyIdPath(String idPath) {
 		CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(idPath);
-		if(classifyVO !=null){
+		if (classifyVO != null) {
 			return getFormDefineByClassifyOid(classifyVO.getOid());
 		}
 		return null;
@@ -2910,7 +2915,7 @@
 		MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
 		uiInfoVO.setTemplateVO(templateVO);
 		//鎴戜滑闇�瑕佸皢妯℃澘杞崲涓鸿〃鏍肩浉鍏崇殑鏄剧ず淇℃伅
-		uiInfoVO.setTableDefineVO(wrapperTableDefineByTemplate(uiInfoVO.getTemplateVO(),false));
+		uiInfoVO.setTableDefineVO(wrapperTableDefineByTemplate(uiInfoVO.getTemplateVO(), false));
 		//闇�瑕佸幓鐪嬫墿灞曠殑鎸夐挳,鍙湁鍒楄〃閲岄潰鏈韩鎵嶆坊鍔犺繘鍘伙紝宸ュ叿鏍忎笂鐨勫崟鐙幏鍙�
 		List<CodeClassifyTemplateButtonVO> buttonVOS = templateButtonService.listButtonByTemplateOid(templateVO.getOid(), true);
 		if (!CollectionUtils.isEmpty(buttonVOS)) {
@@ -2949,8 +2954,8 @@
 	@Override
 	public MdmUIInfoVO getUIInfoByClassifyIdPath(String codeClassifyIdPath, String functionId) {
 		CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(codeClassifyIdPath);
-		if(classifyVO !=null){
-			return getUIInfoByClassifyOid(classifyVO.getOid(),functionId);
+		if (classifyVO != null) {
+			return getUIInfoByClassifyOid(classifyVO.getOid(), functionId);
 		}
 		return null;
 	}
@@ -3062,7 +3067,7 @@
 	 * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩竜id闆嗗悎鏌ヨ鏁版嵁杩涜杩斿洖
 	 *
 	 * @param btmType 涓氬姟绫诲瀷
-	 * @param oids      闇�瑕佹煡璇㈢殑oid闆嗗悎 閫楀彿鍒嗗紑
+	 * @param oids    闇�瑕佹煡璇㈢殑oid闆嗗悎 閫楀彿鍒嗗紑
 	 * @return 鏌ヨ鍑虹殑鏁版嵁
 	 */
 	@Override
@@ -3070,7 +3075,7 @@
 
 		//浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
 		R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
-		if(listR.getData().size() == 0){
+		if (listR.getData().size() == 0) {
 			throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
 		}
 		//鏌ヨ鏁版嵁
@@ -3215,4 +3220,149 @@
 
 		return R.success("鏇存柊鎴愬姛锛�");
 	}
+
+	/**
+	 * 鑾峰彇鍙傜収鐨勪俊鎭�
+	 *
+	 * @param referConfigVO 鍙傜収鐨勯厤缃�
+	 * @param pageHelper    鍒嗛〉鐨勫伐鍏�
+	 * @return 鍒楄〃鏁版嵁
+	 */
+	@Override
+	public DataGrid referDataGrid(UIFormReferVO referConfigVO, PageHelper pageHelper) {
+//		checkReferConfig(referConfigVO);
+		//浣跨敤涓氬姟绫诲瀷鏌ヨ
+		R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(referConfigVO.getReferType());
+		BtmTypeVO btmTypeVO = allAttributeByBtmId.getData();
+		if (referConfigVO.getWhere() == null) {
+			referConfigVO.setWhere(new HashMap<>());
+		}
+		/**
+		 * 鍔犱笂鏌ヨ鏈�鏂扮増娆�
+		 */
+		Map<String, String> conditionMap = new HashMap<>();
+		conditionMap.put("lastr", "1");
+		conditionMap.put("lastv", "1");
+		referConfigVO.getWhere().putAll(conditionMap);
+		if (VciBaseUtil.containsKeyUnCaseForMap(referConfigVO.getWhere(), VciQueryWrapperForDO.LC_STATUS_FIELD) &&
+			BtmTypeLcStatusConstant.FRAME_WORK_LIFE_CYCLE_NAME.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) {
+			referConfigVO.getWhere().put(VciQueryWrapperForDO.LC_STATUS_FIELD, FrameworkDataLCStatus.ENABLED.getValue());
+		}
+		if (VciBaseUtil.containsKeyUnCaseForMap(referConfigVO.getWhere(), VciQueryWrapperForDO.LC_STATUS_FIELD) &&
+			BtmTypeLcStatusConstant.RELEASE_LIFE_CYCLE.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) {
+			referConfigVO.getWhere().put(VciQueryWrapperForDO.LC_STATUS_FIELD, CodeDefaultLC.RELEASED.getValue());
+		}
+		BaseQueryObject baseQueryObject = new BaseQueryObject();
+		Map<String, String> where = referConfigVO.getWhere();
+		where.put("domain", AppConstant.APPLICATION_NAME_CODE);
+		baseQueryObject.setConditionMap(where);
+		baseQueryObject.setPage(pageHelper.getPage());
+		baseQueryObject.setSort(pageHelper.getSort());
+		baseQueryObject.setLimit(pageHelper.getLimit());
+		baseQueryObject.setOrder(pageHelper.getOrder());
+		R<List<BtmTypeVO>> ref = btmTypeClient.getRef(baseQueryObject);
+		DataGrid<BtmTypeVO> btmTypeVODataGrid = new DataGrid<>();
+		List<BtmTypeVO> data = ref.getData();
+		btmTypeVODataGrid.setData(data);
+		btmTypeVODataGrid.setCode(ref.getCode());
+		btmTypeVODataGrid.setLimit(pageHelper.getLimit());
+		btmTypeVODataGrid.setMsg(ref.getMsg());
+		btmTypeVODataGrid.setSort(pageHelper.getSort());
+		btmTypeVODataGrid.setOrder(pageHelper.getOrder());
+		btmTypeVODataGrid.setPage(pageHelper.getPage());
+		return btmTypeVODataGrid;
+	}
+
+	/**
+	 * 鑾峰彇鏍戝舰鐨勫弬鐓�
+	 *
+	 * @param referConfigVO 鍙傜収鐨勯厤缃�
+	 * @return 鏍戝舰鐨勬暟鎹�
+	 */
+	@Override
+	public List<Tree> referTree(UIFormReferVO referConfigVO, TreeQueryObject queryObject) {
+		if (queryObject.getConditionMap() == null) {
+			queryObject.setConditionMap(new HashMap<>());
+		}
+
+		if (queryObject.getParentOid()==null){
+			LambdaQueryWrapper<CodeClassify> lqw = new LambdaQueryWrapper<>();
+			String parentValue = referConfigVO.getParentValue().substring(3);
+			lqw.inSql(CodeClassify::getOid,parentValue);
+			List<String> codeClassifies = classifyService.select1(lqw);
+			String oid = codeClassifies.get(0);
+			queryObject.setParentOid(oid);
+		}
+		String oidFieldName = StringUtils.isNotBlank(referConfigVO.getParentUsedField()) ? referConfigVO.getParentUsedField() : referConfigVO.getValueField();
+		if (queryObject.isQueryAllLevel()) {
+			String parentOidSql = "";
+			if (StringUtils.isNotBlank(referConfigVO.getParentValue())) {
+				String temp = referConfigVO.getParentValue();
+				if (temp.startsWith(QueryOptionConstant.IN)) {
+					temp = temp.substring((QueryOptionConstant.IN).length()).trim();
+					parentOidSql = " in " + ((temp.startsWith("(") && temp.endsWith(")")) ? temp : "(" + temp + ")");
+				} else if (temp.startsWith(QueryOptionConstant.NOTIN)) {
+					parentOidSql = " not in " + ((temp.startsWith("(") && temp.endsWith(")")) ? temp : "(" + temp + ")");
+				} else if (temp.startsWith(QueryOptionConstant.NOTEQUAL)) {
+					temp = temp.substring((QueryOptionConstant.NOTEQUAL).length()).trim();
+					parentOidSql = QueryOptionConstant.NOTEQUAL + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'");
+				} else if (temp.startsWith(QueryOptionConstant.MORETHAN)) {
+					temp = temp.substring((QueryOptionConstant.MORETHAN).length()).trim();
+					parentOidSql = QueryOptionConstant.MORETHAN + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'");
+				} else if (temp.startsWith(QueryOptionConstant.MORE)) {
+					temp = temp.substring((QueryOptionConstant.MORE).length()).trim();
+					parentOidSql = QueryOptionConstant.MORE + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'");
+				} else if (temp.startsWith(QueryOptionConstant.LESSTHAN)) {
+					temp = temp.substring((QueryOptionConstant.LESSTHAN).length()).trim();
+					parentOidSql = QueryOptionConstant.LESSTHAN + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'");
+				} else if (temp.startsWith(QueryOptionConstant.LESS)) {
+					temp = temp.substring((QueryOptionConstant.LESS).length()).trim();
+					parentOidSql = QueryOptionConstant.LESS + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'");
+				} else if (temp.startsWith(QueryOptionConstant.ISNOTNULL)) {
+					parentOidSql = " is not null";
+				} else if (temp.startsWith(QueryOptionConstant.ISNULL)) {
+					parentOidSql = " is  null";
+				} else if (temp.contains("*")) {
+					parentOidSql = " like " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'").replace("*", "%");
+				} else {
+					parentOidSql = " = " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'");
+				}
+
+			}
+			//鏌ヨ鍏ㄩ儴鐨勪俊鎭�
+			queryObject.getConditionMap().put("oid", QueryOptionConstant.IN + "(select oid from " +
+					getTableName(referConfigVO.getReferType())+
+				" START WITH " + referConfigVO.getParentFieldName() + " " +
+				parentOidSql +
+				" CONNECT BY PRIOR " + oidFieldName + " = " + referConfigVO.getParentFieldName() + ")");
+		} else {
+			if (StringUtils.isNotBlank(referConfigVO.getParentFieldName()) && StringUtils.isNotBlank(queryObject.getParentOid())) {
+				queryObject.getConditionMap().put(referConfigVO.getParentFieldName(), queryObject.getParentOid());
+			}
+		}
+		LambdaQueryWrapper<CodeClassify> lqw = new LambdaQueryWrapper<>();
+		String sql = queryObject.getConditionMap().get("oid").substring(3);
+		lqw.inSql(CodeClassify::getOid,sql);
+		List<CodeClassify> codeClassifies = classifyService.selectByWrapper(lqw);
+		TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(referConfigVO.getParentFieldName());
+		treeWrapperOptions.setOidFieldName(oidFieldName);
+		treeWrapperOptions.setTextFieldName(referConfigVO.getTextField());
+		treeWrapperOptions.setMultipleSelect(referConfigVO.isMuti());
+		treeWrapperOptions.setParentOid(queryObject.getParentOid());
+		return revisionModelUtil.doList2Trees(codeClassifies, treeWrapperOptions, null);
+	}
+
+	private String getTableName(String refertype){
+		if ("codeclassify".equals(refertype)){
+			return "pl_code_classify";
+		}
+		if ("table".equals(refertype)){
+			return "pl_code_test_table";
+		}
+		if ("testBtmType".equals(refertype)){
+			return "PLBT_code_testBtmType";
+		}
+
+		return "pl_code_"+refertype.trim().toLowerCase();
+	}
 }

--
Gitblit v1.9.3