package com.vci.ubcs.ddl.processor.dll;
|
|
import com.vci.starter.web.enumpck.DataBaseEnum;
|
import com.vci.starter.web.enumpck.VciFieldTypeEnum;
|
import com.vci.starter.web.util.VciBaseUtil;
|
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 org.apache.commons.lang3.StringUtils;
|
import org.springframework.util.CollectionUtils;
|
|
import javax.annotation.PostConstruct;
|
import javax.annotation.Resource;
|
import java.util.List;
|
|
/**
|
* Description:
|
*
|
* @author LiHang
|
* @date 2023/4/24
|
*/
|
public class DllOracleMapperProcessor extends DllMapperProcessor {
|
|
@Resource
|
private DllOracleMapper realMapper;
|
|
private static DllMapper mapper;
|
|
@PostConstruct
|
public void init(){
|
mapper = realMapper;
|
}
|
|
public DllOracleMapperProcessor() {
|
super(mapper);
|
}
|
|
public static class SINGLE {
|
public static DllOracleMapperProcessor INSTANCE = new DllOracleMapperProcessor();
|
}
|
|
@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 VTDateTime:
|
case VTTime:
|
sb.append(dealDateTimeCreateSql(a));
|
break;
|
case VTFilePath:
|
sb.append(VARCHAR).append("(100)").append(SPACE);
|
break;
|
case VTClob:
|
sb.append("CLOB").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 dealStringCreateSql(OmdBtmTypeAttributeVO attributeVO) {
|
Integer length2 = attributeVO.getAttributeLength();
|
StringBuilder sb = new StringBuilder();
|
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();
|
}
|
|
/**
|
* 处理日期时间类型的sql转换
|
*
|
* @param attributeVO 属性
|
* @return sql
|
*/
|
@Override
|
public String dealDateTimeCreateSql(OmdBtmTypeAttributeVO attributeVO) {
|
return TIMESTAMP + SPACE + dealNullableSql(attributeVO);
|
}
|
|
/**
|
* 处理布尔类型的sql转换
|
*
|
* @param attributeVO 属性
|
* @return sql
|
*/
|
@Override
|
public String dealBooleanCreateSql(OmdBtmTypeAttributeVO attributeVO) {
|
return VARCHAR + "(5)" + SPACE + dealDefaultAndNull(attributeVO);
|
}
|
}
|