From b8a42ca6e3220d08dc078863c56543550e723bf8 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期二, 10 十月 2023 10:27:56 +0800
Subject: [PATCH] 定时器推送更将增加集成系统唯一标识字段以便对方系统更新数据
---
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java | 215 +++++++++++++++++++++++++----------------------------
1 files changed, 100 insertions(+), 115 deletions(-)
diff --git a/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java b/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java
index 4ea938e..e23f3d3 100644
--- a/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java
+++ b/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java
@@ -1,8 +1,22 @@
package com.vci.ubcs.ddl.processor.dll;
-import com.vci.ubcs.ddl.mapper.DllMapper;
+import com.vci.ubcs.ddl.bo.DdlFieldMappingAttrBO;
+import com.vci.ubcs.ddl.mapper.*;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
-import org.apache.commons.lang3.StringUtils;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import org.apache.commons.collections4.BidiMap;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.bidimap.DualHashBidiMap;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.StringUtil;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Locale;
/**
* Description:DLL鐨勫鐞嗘帴鍙�
@@ -10,7 +24,57 @@
* @author LiHang
* @date 2023/4/24
*/
-public abstract class DllMapperProcessor implements DllBehavior {
+public abstract class DllMapperProcessor {
+
+ private final static BidiMap<VciFieldTypeEnum, DdlFieldMappingAttrBO> FIELD_MAPPING_MAP;
+
+ static {
+ FIELD_MAPPING_MAP = new DualHashBidiMap<>();
+ FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTInteger,new DdlFieldMappingAttrBO("NUMBER",22,null,true,null));
+ FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTLong,new DdlFieldMappingAttrBO("NUMBER",22,null,true,null));
+ FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTDouble,new DdlFieldMappingAttrBO("NUMBER",26,8,true,null));
+ FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTBoolean,new DdlFieldMappingAttrBO("VARCHAR2",5,null,true,null));
+ FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTDate,new DdlFieldMappingAttrBO("TIMESTAMP",6,null,true,null));
+ FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTTime,new DdlFieldMappingAttrBO("TIMESTAMP",6,null,true,null));
+ FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTDateTime,new DdlFieldMappingAttrBO("TIMESTAMP",6,null,true,null));
+ FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTFilePath,new DdlFieldMappingAttrBO("VARCHAR2",100,null,true,null));
+ FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTClob,new DdlFieldMappingAttrBO("VTClob",null,null,true,null));
+ FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTString,new DdlFieldMappingAttrBO("VARCHAR2",255,null,true,null));
+ }
+
+ protected abstract DdlFieldMappingAttrBO getMappingBO(VciFieldTypeEnum fieldTypeEnum);
+
+ protected final DdlFieldMappingAttrBO getMappingBOInMap(VciFieldTypeEnum fieldTypeEnum,BidiMap<VciFieldTypeEnum, DdlFieldMappingAttrBO> map){
+ if (!map.containsKey(fieldTypeEnum)){
+ throw new VciBaseException("鎵句笉鍒板瓧娈电殑鏄犲皠");
+ }
+ DdlFieldMappingAttrBO bo = map.get(fieldTypeEnum);
+ return BeanUtil.copy(bo,DdlFieldMappingAttrBO.class);
+ }
+
+ protected static BidiMap<VciFieldTypeEnum,DdlFieldMappingAttrBO> getMappingMapCopy(){
+ BidiMap<VciFieldTypeEnum, DdlFieldMappingAttrBO> map = new DualHashBidiMap<>();
+ map.putAll(FIELD_MAPPING_MAP);
+ return map;
+ }
+
+ /**
+ * 鎸夋暟鎹簱瀛楁绫诲瀷鍒椾妇鎵�鏈夌殑VCI瀛楁绫诲瀷
+ * @param columnStr 鏁版嵁搴撳瓧娈电被鍨�
+ * @return VCI瀛楁绫诲瀷
+ */
+ public List<VciFieldTypeEnum> listFieldByColumnStr(String columnStr){
+ return listFieldInMapByColumnStr(columnStr,FIELD_MAPPING_MAP);
+ }
+
+ protected final List<VciFieldTypeEnum> listFieldInMapByColumnStr(String columnStr,BidiMap<VciFieldTypeEnum,DdlFieldMappingAttrBO> map){
+ VciBaseUtil.alertNotNull(columnStr,"鏁版嵁搴撳瓧娈电被鍨�",map,"瀛楁鏄犲皠闆嗗悎");
+ List<VciFieldTypeEnum> fieldTypeList = new ArrayList<>();
+ map.values().stream().filter(s -> StringUtil.equals(s.getDataType(),columnStr)).forEach(s -> {
+ fieldTypeList.add(map.getKey(s));
+ });
+ return fieldTypeList;
+ }
private DllMapper mapper;
@@ -64,126 +128,47 @@
return mapper.countAll(tableName);
}
+
+
/**
- * 澶勭悊鏁存暟绫诲瀷鐨剆ql杞崲
- *
+ * 鑾峰彇瀛楁鍒涘缓sql
+ * @param fieldType VT瀛楁绫诲瀷
* @param attributeVO 灞炴��
* @return sql
*/
- @Override
- public String dealNumberCreateSql(BtmTypeAttributeVO attributeVO) {
- StringBuilder snb = new StringBuilder().append(NUMBER + SPACE);
- dealDefaultAndNull(attributeVO);
- return snb.toString();
- }
-
- /**
- * 璋冪敤澶勭悊榛樿鍊煎拰闈炵┖
- *
- * @param attributeVO 灞炴��
- * @return 鎵ц缁撴灉
- */
- @Override
- public String dealDefaultAndNull(BtmTypeAttributeVO attributeVO) {
- String value = "";
- if (StringUtils.isNotBlank(attributeVO.getDefaultValue())) {
- value += dealDefaultValue(attributeVO.getDefaultValue());
+ public String getColumnTypeSql(VciFieldTypeEnum fieldType,BtmTypeAttributeVO attributeVO){
+ DdlFieldMappingAttrBO mappingBO = getMappingBO(fieldType);
+ mappingBO.setDataLength(attributeVO.getAttributeLength());
+ if (fieldType.equals(VciFieldTypeEnum.VTDouble)){
+ mappingBO.setDataPrecision(attributeVO.getPrecisionLength());
}
+ mappingBO.setNullable(attributeVO.isNullableFlag());
+ mappingBO.setDefaultValue(attributeVO.getDefaultValue());
+ return mappingBO.toString() + (StringUtil.equals(attributeVO.getId().toLowerCase(Locale.ROOT),"OID".toLowerCase(Locale.ROOT)) ? StringPool.SPACE + "primary key" + StringPool.SPACE : "");
- if (!attributeVO.isNullableFlag()){
- value += dealNullableSql(attributeVO);
+ }
+
+ public abstract VciFieldTypeEnum getFieldTypeByColumnStr(String columnStr,Integer length);
+
+ protected final VciFieldTypeEnum getFieldTypeBeColumnStrInMap(String columnStr,Integer length,BidiMap<VciFieldTypeEnum, DdlFieldMappingAttrBO> map){
+ List<VciFieldTypeEnum> fieldTypes = listFieldInMapByColumnStr(columnStr, map);
+ VciFieldTypeEnum finalField = null;
+ int i = Integer.MAX_VALUE;
+ if (fieldTypes.size() == 1){
+ return fieldTypes.get(0);
}
- return value;
- }
-
- /**
- * 澶勭悊榛樿鍊�
- *
- * @return sql
- */
- @Override
- public String dealDefaultValue(String defualValule) {
- return DEFAULT + SPACE + defualValule + SPACE;
- }
-
- /**
- * 澶勭悊娴偣鏁扮被鍨嬬殑sql杞崲
- *
- * @param attributeVO 灞炴��
- * @return sql
- */
- @Override
- public String dealDoubleCreateSql(BtmTypeAttributeVO attributeVO) {
- Integer length = attributeVO.getPrecisionLength();
- if(length == null || length == 0){
- length = 20;
+ for (VciFieldTypeEnum fieldType : fieldTypes) {
+ if (fieldType.equals(VciFieldTypeEnum.VTString)) {
+ finalField = VciFieldTypeEnum.VTString;
+ }
+ if (fieldType.equals(VciFieldTypeEnum.VTDateTime)){
+ finalField = VciFieldTypeEnum.VTDateTime;
+ }
+ if (fieldType.equals(VciFieldTypeEnum.VTInteger) && length <= 26){
+ finalField = VciFieldTypeEnum.VTInteger;
+ }
}
- Integer scaleLength = attributeVO.getScaleLength();
- if(scaleLength == null){
- scaleLength = 2;
- }
- StringBuilder sb = new StringBuilder().append(NUMBER).append("(").append(String.valueOf(length.intValue()))
- .append(",").append(String.valueOf(scaleLength.intValue()))
- .append(")").append(SPACE);
- sb.append(dealDefaultAndNull(attributeVO));
- return sb.toString();
+ return finalField;
}
- /**
- * 澶勭悊闈炵┖
- *
- * @return sql
- */
- @Override
- public String dealNullableSql(BtmTypeAttributeVO attributeVO) {
- if (!attributeVO.isNullableFlag()) {
- return SPACE + "not null" + SPACE;
- }
- return "";
- }
-
- /**
- * 澶勭悊甯冨皵绫诲瀷鐨剆ql杞崲
- *
- * @param attributeVO 灞炴��
- * @return sql
- */
- @Override
- public String dealBooleanCreateSql(BtmTypeAttributeVO attributeVO) {
- return "VARCHAR (5) " + SPACE + dealDefaultAndNull(attributeVO);
- }
-
- /**
- * 澶勭悊鏃ユ湡鏃堕棿绫诲瀷鐨剆ql杞崲
- *
- * @param attributeVO 灞炴��
- * @return sql
- */
- @Override
- public String dealDateTimeCreateSql(BtmTypeAttributeVO attributeVO) {
- return "DATETIME" + SPACE + dealDefaultAndNull(attributeVO);
- }
-
- /**
- * 澶勭悊瀛楃涓茬被鍨嬬殑sql杞崲
- *
- * @param attributeVO 灞炴��
- * @return sql
- */
- @Override
- public String dealStringCreateSql(BtmTypeAttributeVO attributeVO) {
- StringBuilder sb = new StringBuilder();
- Integer length2 = attributeVO.getAttributeLength();
- if (length2 == null) {
- length2 = 250;
- }
- sb.append("VARCHAR").append("(").
- append(String.valueOf(length2.intValue())).append(")").append(SPACE);
- if (OID.equalsIgnoreCase(attributeVO.getId())) {
- sb.append(" primary key ");
- //寮哄埗璁剧疆OID涓轰富閿�
- }
- sb.append(dealDefaultAndNull(attributeVO));
- return sb.toString();
- }
}
--
Gitblit v1.9.3