From d419a8944981bc3235392a57c84d241e6c47335a Mon Sep 17 00:00:00 2001 From: wang1 <844966816@qq.com> Date: 星期一, 19 六月 2023 16:33:13 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 196 ++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 161 insertions(+), 35 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 bc74638..626f009 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 @@ -5,8 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.sun.corba.se.impl.orbutil.ObjectUtility; import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO; import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant; @@ -24,7 +22,6 @@ 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.cache.EnumCache; import com.vci.ubcs.omd.feign.*; import com.vci.ubcs.omd.utils.VciOmdUtil; @@ -53,7 +50,6 @@ 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; @@ -69,15 +65,10 @@ import javax.annotation.Resource; import java.beans.BeanInfo; -import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.math.BigDecimal; -import java.sql.SQLException; -import java.sql.Timestamp; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; @@ -332,6 +323,7 @@ } return comboboxKVs; } + /** * 淇敼鐘舵�� * @@ -876,21 +868,7 @@ } } - /** - * 鏄惁涓轰慨鏀瑰拷鐣ョ殑灞炴�� - * @param attrName 灞炴�х殑鍚嶅瓧 - * @return true 琛ㄧず搴旇蹇界暐 - */ - @Override - public boolean checkUnAttrUnEdit(String attrName){ - return (VciQueryWrapperForDO.OID_FIELD.equalsIgnoreCase(attrName) - ||"ts".equalsIgnoreCase(attrName) - || "lastmodifier".equalsIgnoreCase(attrName) - || "lastmodifytime".equalsIgnoreCase(attrName) - || "createtime".equalsIgnoreCase(attrName) - || "checkintime".equalsIgnoreCase(attrName) - ||"checkouttime".equalsIgnoreCase(attrName)); - } + /** * 淇濆瓨鍙緭鍙�夌殑淇℃伅 @@ -1667,10 +1645,10 @@ }); andCondtionMap.forEach((k, v) -> { - andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap)); + andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap,btmType)); }); orConditionMap.forEach((k, v) -> { - orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap)); + orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap,btmType)); }); } //缁勫悎璧锋潵 @@ -1742,7 +1720,137 @@ * @param attrVOMap 灞炴�х殑鏄犲皠 * @return Sql璇彞 */ - private String getConditionSql(String key, String value, Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫睘鎬�**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) { + private String getConditionSql(String key, String value, Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫睘鎬�**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap,String btmType) { + /*if (!Func.hasEmpty(new Object[]{key,value}) && !key.endsWith("_ignore")) { + if (key.endsWith("_like")) { + String field = UBCSSqlKeyword.getColumn(key, "_like"); + if (referFieldMap.containsKey(field)) { + //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚� + return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "concat(%,"+"concat(" + value + ",%)" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "concat(%,"+"concat(" + getStringValueInWhere(field, value, attrVOMap) + ",%)" + SPACE; + } + } else if (key.endsWith("_notequal")) { + String field = UBCSSqlKeyword.getColumn(key, "_notequal"); + if (referFieldMap.containsKey(field)) { + //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚� + return referFieldMap.get(field) + SPACE + " != '" + value + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + " != " + getStringValueInWhere(field, value, attrVOMap); + } + } else if (key.endsWith("_likeleft")) { + String field = UBCSSqlKeyword.getColumn(key, "_likeleft"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "concat(%,"+value+")" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "concat(%,"+getStringValueInWhere(field, value, attrVOMap)+")" + SPACE; + } + } else if (key.endsWith("_likeright")) { + String field = UBCSSqlKeyword.getColumn(key, "_likeright"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "concat("+value+",%)" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "concat("+getStringValueInWhere(field, value, attrVOMap)+",%)" + SPACE; + } + } else if (key.endsWith("_notlike")) { + String field = UBCSSqlKeyword.getColumn(key, "_notlike"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "NO LIKE" + SPACE + "concat(%,concat("+value+",%)" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "NO LIKE " + "concat(%,concat"+getStringValueInWhere(field, value, attrVOMap)+",%)" + SPACE; + } + } else if (key.endsWith("_ge")) { + String field = UBCSSqlKeyword.getColumn(key, "_ge"); + if (referFieldMap.containsKey(field)) { + //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚� + return referFieldMap.get(field) + SPACE + " >= '" + value + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + " >= '" + getStringValueInWhere(value, field, attrVOMap) + "'" + SPACE; + } + } else if (key.endsWith("_le")) { + //璇存槑鏄�<=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓� + String field = UBCSSqlKeyword.getColumn(key, "_le"); + if (referFieldMap.containsKey(field)) { + //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚� + return referFieldMap.get(field) + SPACE + " <= '" + value + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + " <= '" + getStringValueInWhere(field, value, attrVOMap) + "'" + SPACE; + } + } else if (key.endsWith("_gt")) { + String field = UBCSSqlKeyword.getColumn(key, "_gt"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "> '" + value + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "> '" + getStringValueInWhere(field, value, attrVOMap) + "'" + SPACE; + } + } else if (key.endsWith("_lt")) { + String field = UBCSSqlKeyword.getColumn(key, "_lt"); + if (referFieldMap.containsKey(field)) { + //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚� + return referFieldMap.get(field) + SPACE + "< '" + value + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "< '" + getStringValueInWhere(field, value, attrVOMap) + "'" + SPACE; + } + } else if (key.endsWith("_datege")) { + String field = UBCSSqlKeyword.getColumn(key, "_datege"); + if (referFieldMap.containsKey(field)) { + //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚� + return referFieldMap.get(field) + SPACE + ">= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + ">= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_dategt")) { + String field = UBCSSqlKeyword.getColumn(key, "_dategt"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "> '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "> '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_dateequal")) { + String field = UBCSSqlKeyword.getColumn(key, "_dateequal"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_datele")) { + String field = UBCSSqlKeyword.getColumn(key, "_datele"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "<= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "<= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_datelt")) { + String field = UBCSSqlKeyword.getColumn(key, "_datelt"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "< '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "< '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_null")) { + String field = UBCSSqlKeyword.getColumn(key, "_null"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "IS NULL" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "IS NULL" + SPACE; + } + } else if (key.endsWith("_notnull")) { + String field = UBCSSqlKeyword.getColumn(key, "_null"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "IS NOT NULL" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "IS NOT NULL" + SPACE; + } + } else { + String field = UBCSSqlKeyword.getColumn(key, "_dateequal"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "= '" + value + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + getStringValueInWhere(field, value, attrVOMap)+ "'" + SPACE; + } + } + + }*/ if (key.endsWith("_begin")) { //璇存槑鏄�>=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓� String field = (key.substring(0, key.length() - 6).toLowerCase().trim()); @@ -1765,12 +1873,11 @@ if (referFieldMap.containsKey(key)) { //璇存槑鏄弬鐓х殑锛屾垜浠弬鐓х殑鏌ヨ閮借涓烘槸瀛楃涓诧紝濡傛灉鏄椂闂存牸寮忕殑鏌ヨ鑲畾鏈夐棶棰橈紝 String selectKey = referFieldMap.get(key); - return getSqlByValue(selectKey, value, null); + return getSqlByValue(selectKey, value, null,btmType); } else { - return getSqlByValue(key, value, attrVOMap); + return getSqlByValue(key, value, attrVOMap,btmType); } } - } /** @@ -1829,6 +1936,24 @@ } /** + * 鏌ョ湅鏄惁榛樿灞炴�� + * @param selectKey + * @param btmType + * @return + */ + private boolean isDefaultAttr(String selectKey, String btmType){ + if(StringUtils.isBlank(btmType)){ + return false; + } + R<BtmTypeVO> r = btmTypeClient.getDefaultAttrByBtmId(btmType); + List<BtmTypeAttributeVO> attributes = r.getData().getAttributes(); + if(r.getCode() != 200 || attributes.isEmpty()){ + return false; + } + return attributes.stream().anyMatch(item->item.getId().equals(selectKey)); + } + + /** * 灏佽鏈�缁堢殑sql璇彞涓殑鍊奸儴鍒� * * @param selectKey 鏌ヨ鐨勫瓧娈� @@ -1836,12 +1961,12 @@ * @param attrVOMap 灞炴�х殑鏄剧ず瀵硅薄鏄犲皠 * @return sql閲岀殑鍊� */ - private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) { + private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap,String btmType) { StringBuilder sql = new StringBuilder(); - // TODO 寰呭畬鍠� - // if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || attributeService.isDefaultAttr(selectKey) || selectKey.matches(RegExpConstant.LETTER))) { - // sql.append("t."); - // } + // TODO 宸插畬鍠� + if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || isDefaultAttr(selectKey,btmType) || selectKey.matches(RegExpConstant.LETTER))) { + sql.append("t."); + } if (value.startsWith(QueryOptionConstant.IN)) { sql.append(selectKey) .append(SPACE) @@ -3328,6 +3453,7 @@ return revisionModelUtil.doList2Trees(codeClassifies, treeWrapperOptions, null); } + private String getTableName(String refertype){ if ("codeclassify".equals(refertype)){ return "pl_code_classify"; -- Gitblit v1.9.3