From 0714f23728e28e601ccd96f83f9bc75b26cc8421 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 16 六月 2023 21:34:28 +0800
Subject: [PATCH] 代码整合
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 238 ++++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 163 insertions(+), 75 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 d0a25a9..fe8c086 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
@@ -19,6 +19,7 @@
import com.vci.ubcs.code.mapper.CodeWupinMapper;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.*;
+import com.vci.ubcs.code.util.ClientBusinessObject;
import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
import com.vci.ubcs.code.vo.pagemodel.UITablePageVO;
@@ -37,6 +38,7 @@
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.UBCSSqlKeyword;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.constant.RegExpConstant;
import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
@@ -58,9 +60,10 @@
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.DateUtil;
+import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
@@ -333,6 +336,7 @@
}
return comboboxKVs;
}
+
/**
* 淇敼鐘舵��
*
@@ -343,14 +347,6 @@
public void changeStatus(BaseModelDTO baseModelDTO) {
VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��");
List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid());
-// List<ClientBusinessObject> cboList = boService.selectCBOByOidCollection(oids, baseModelDTO.getBtmname());
- // TODO 鎻掍釜鐐� 涓氬姟绫诲瀷瀹屾垚鍚庨渶瑕佷慨鏀�
- QueryWrapper<BtmTypeVO> wrapper = new QueryWrapper<>();
- wrapper.eq("BTMNAME",baseModelDTO.getBtmname());
- wrapper.in("OID",oids);
- // TODO 寰呭畬鍠�
- //鎻掍釜鐐� 涓氬姟绫诲瀷瀹屾垚鍚庨渶瑕佷慨鏀�
-// QueryWrapper<BtmTypeVO> wrapper = new QueryWrapper<>();
List<BaseModel> baseModels = new ArrayList<>();
baseModels = selectByTypeAndOid(baseModelDTO.getBtmname(), baseModelDTO.getOid());
if(baseModels.size() == 0){
@@ -370,15 +366,7 @@
// 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄�
if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) {
R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(baseModelDTO.getBtmname()));
-// String referTable = listR.getData().get(0).getTableName();
commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(),VciBaseUtil.toInSql(baseModelDTO.getOid()));
- // BatchCBO batchCBO = new BatchCBO();
- // batchCBO.getDeleteCbos().addAll(cboList);
-
- // TODO 寰呭畬鍠�
- //btmTypeClient.deleteBatchIds(cboList);
-
- //boService.persistenceBatch(batchCBO);
} else {
for (BaseModel baseModel : baseModels) {
baseModel.setLcStatus(baseModelDTO.getLcStatus());
@@ -881,7 +869,6 @@
}
try {
String keyPrefix = BTM_INIT_CACHE.concat(StringPool.COLON).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
-// String finalBtmName = btmName;
Cache.ValueWrapper valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName)));
if(valueWrapper == null){
CacheUtil.getCache(keyPrefix).put(keyPrefix.concat(String.valueOf(btmName)), createBaseModel(btmName));
@@ -892,52 +879,6 @@
logger.error("鍒涘缓涓氬姟绫诲瀷瀵硅薄",e);
throw new VciBaseException("initBtmError",new String[]{btmName});
}
-// String userName = AuthUtil.getUser().getUserName();
-// CodeWupin wupinEntity = new CodeWupin();
-// wupinEntity.setOid(VciBaseUtil.getPk());
-//// bo.setRevisionid((new ObjectUtility()).getNewObjectID36());
-//// bo.setNameoid((new ObjectUtility()).getNewObjectID36());
-// wupinEntity.setBtmname(btmName);
-// wupinEntity.setLastR(String.valueOf(1));
-// wupinEntity.setFirstR(String.valueOf(1));
-// wupinEntity.setFirstV(String.valueOf(1));
-// wupinEntity.setLastV(String.valueOf(1));
-// wupinEntity.setCreator(userName);
-// wupinEntity.setCreateTime(new Date());
-// wupinEntity.setLastModifier(userName);
-// wupinEntity.setLastModifyTime(new Date());
-// wupinEntity.setRevisionRule("numberversionrule");
-// wupinEntity.setVersionRule("0");
-//// if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){
-// //
-//// OsRevisionRuleVO revisionRuleVO = revisionRuleService.getRevisionRuleById(btmTypeVO.getRevisionruleid());
-// wupinEntity.setRevisionValue("1");
-//// }
-//
-// wupinEntity.setRevisionSeq(1);
-// wupinEntity.setVersionSeq(1);
-// //鎻掍釜鐐癸紝闇�瑕侀棶鍕囧摜鐗堟湰闂锛屽睍绀洪粯璁や负1
-// wupinEntity.setVersionValue("1");
-// wupinEntity.setLctid("wupinLC");
-// wupinEntity.setLcStatus("Editing");
-// wupinEntity.setId("");
-// wupinEntity.setName("");
-// wupinEntity.setDescription("");
-// wupinEntity.setOwner(userName);
-// wupinEntity.setCheckinby(userName);
-// wupinEntity.setCopyFromVersion("");
-// wupinEntity.setMaterialtype(1001);
-// wupinEntity.setCaigouwl("true");
-// wupinEntity.setShifoupihaoguanli("true");
-// wupinEntity.setKucunwl("true");
-// wupinEntity.setXiaoshouwl("false");
-// wupinEntity.setPassing("true");
-
-// this.initTypeAttributeValue(wupinEntity,btmTypeVO);
-// return wupinEntity;
-
-
-// return cbo;
}
/**
@@ -1731,10 +1672,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));
});
}
//缁勫悎璧锋潵
@@ -1806,7 +1747,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());
@@ -1829,12 +1900,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);
}
}
-
}
/**
@@ -1893,6 +1963,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 鏌ヨ鐨勫瓧娈�
@@ -1900,12 +1988,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)
--
Gitblit v1.9.3