package com.vci.ubcs.ddl.processor.dll;
|
|
|
import com.vci.ubcs.ddl.mapper.DllMapper;
|
import com.vci.ubcs.ddl.mapper.DllOracleMapper;
|
import com.vci.ubcs.omd.vo.OmdBtmTypeAttributeVO;
|
import com.vci.ubcs.starter.exception.VciBaseException;
|
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
|
import org.apache.commons.lang3.StringUtils;
|
|
import javax.annotation.PostConstruct;
|
import javax.annotation.Resource;
|
import javax.smartcardio.ATR;
|
import java.util.List;
|
|
/**
|
* Description:
|
*
|
* @author LiHang
|
* @date 2023/4/24
|
*/
|
public class DllMySqlMapperProcessor extends DllMapperProcessor {
|
|
@Resource
|
private DllOracleMapper realMapper;
|
|
private static DllMapper mapper;
|
|
@PostConstruct
|
public void init() {
|
mapper = realMapper;
|
}
|
|
public DllMySqlMapperProcessor() {
|
super(mapper);
|
}
|
|
public static class SINGLE {
|
public static DllMySqlMapperProcessor INSTANCE = new DllMySqlMapperProcessor();
|
}
|
|
@Override
|
public boolean support(String url) {
|
return "oracle.jdbc.OracleDiver".equals(url);
|
}
|
|
/**
|
* 获取创建的sql语句中属性部分
|
*
|
* @param attributeVOList 属性的立碑
|
* @return sql语句
|
*/
|
@Override
|
public String getCreateSqlByAttributeForBtm(List<OmdBtmTypeAttributeVO> attributeVOList) {
|
StringBuilder sb = new StringBuilder();
|
attributeVOList.forEach(a -> {
|
sb.append(a.getId()).append(SPACE);
|
VciFieldTypeEnum fieldTypeEnum = VciFieldTypeEnum.forValue(a.getAttrDataType());
|
if (fieldTypeEnum == null) {
|
throw new VciBaseException("属性有误");
|
}
|
switch (fieldTypeEnum) {
|
case VTInteger:
|
case VTLong:
|
sb.append(dealNumberCreateSql(a));
|
break;
|
case VTDouble:
|
sb.append(dealDoubleCreateSql(a));
|
break;
|
case VTBoolean:
|
sb.append(dealBooleanCreateSql(a));
|
break;
|
case VTDate:
|
case VTTime:
|
case VTDateTime:
|
sb.append(dealDateTimeCreateSql(a));
|
case VTFilePath:
|
sb.append("VARCHAR").append("(100)").append(SPACE);
|
break;
|
case VTClob:
|
sb.append("LONGTEXT").append(SPACE);
|
if (!a.isNullableFlag()) {
|
sb.append(SPACE).append("not null").append(SPACE);
|
}
|
break;
|
default:
|
sb.append(dealStringCreateSql(a));
|
break;
|
}
|
sb.append(",\n\t");
|
});
|
return sb.substring(0, sb.lastIndexOf(","));
|
}
|
|
/**
|
* 处理整数类型的sql转换
|
*
|
* @param attributeVO 属性
|
* @return sql
|
*/
|
@Override
|
public String dealNumberCreateSql(OmdBtmTypeAttributeVO attributeVO) {
|
StringBuilder sb = new StringBuilder();
|
if (VciFieldTypeEnum.VTInteger.name().equalsIgnoreCase(attributeVO.getAttrDataType())) {
|
sb.append("INT").append(SPACE);
|
} else {
|
sb.append("BIGINT").append(SPACE);
|
}
|
sb.append(dealDefaultAndNull(attributeVO));
|
return sb.toString();
|
}
|
|
|
/**
|
* 处理浮点数类型的sql转换
|
*
|
* @param attributeVO 属性
|
* @return sql
|
*/
|
@Override
|
public String dealDoubleCreateSql(OmdBtmTypeAttributeVO attributeVO) {
|
StringBuilder sb = new StringBuilder();
|
Integer length = attributeVO.getPrecisionLength();
|
if (length == null || length == 0) {
|
length = 20;
|
}
|
Integer scaleLength = attributeVO.getScaleLength();
|
if (scaleLength == null) {
|
scaleLength = 2;
|
}
|
sb.append("DOUBLE").append("(").append(String.valueOf(length.intValue()))
|
.append(",").append(String.valueOf(scaleLength.intValue()))
|
.append(")").append(SPACE);
|
sb.append(dealDefaultAndNull(attributeVO));
|
return sb.toString();
|
}
|
|
|
/**
|
* 处理布尔类型的sql转换
|
*
|
* @param attributeVO 属性
|
* @return sql
|
*/
|
@Override
|
public String dealBooleanCreateSql(OmdBtmTypeAttributeVO attributeVO) {
|
return "VARCHAR (5) " + SPACE + dealDefaultAndNull(attributeVO);
|
}
|
|
/**
|
* 处理日期时间类型的sql转换
|
*
|
* @param attributeVO 属性
|
* @return sql
|
*/
|
@Override
|
public String dealDateTimeCreateSql(OmdBtmTypeAttributeVO attributeVO) {
|
return "DATETIME" + SPACE + dealDefaultAndNull(attributeVO);
|
}
|
|
}
|