提交 6014a1f9 编写于 作者: sq3536's avatar sq3536

modify

上级 5ab098a5
......@@ -35,6 +35,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.sql.Connection;
import java.text.SimpleDateFormat;
import java.util.*;
......@@ -183,21 +184,56 @@ public class DstLiquibaseService{
metaEntityModel.setLogicName(temp.get("tableName") == null ? "" : temp.get("tableName").toString().toUpperCase());
metaEntityModel.setSystemId((String) commonMessage.get(0).get("author"));
if(!(temp.get("column") instanceof List))
continue;
column = (List<Map>) temp.get("column");
// 属性List
List<MetaField> metaFields = new CopyOnWriteArrayList<>();
List<MetaRelationship> parentRelationships = new CopyOnWriteArrayList<>();
List<MetaRelationship> subRelationships = new CopyOnWriteArrayList<>();
List<MetaField> unionKeys=new ArrayList<>();
for (int j = 0; j < column.size();j++){
// (此处可补充MetaField描述字段,以及父子外键关系等)
metaField = new MetaField();
metaField.setFieldName(column.get(j).get("name") == null? "" : column.get(j).get("name").toString());
metaField.setDataType(column.get(j).get("type") == null? "" : fieldToName(column.get(j).get("type").toString()));
metaField.setDataLength(column.get(j).get("type") == null? 0 : fieldToLength(column.get(j).get("type").toString()));
metaField.setFieldName(column.get(j).get("name") == null? "" : column.get(j).get("name").toString().toUpperCase());
metaField.setCodeName(metaField.getFieldName());
String logicName=column.get(j).get("remarks") == null? metaField.getFieldName() : column.get(j).get("remarks").toString().trim().replace("\n","");
if(logicName.length()>30)
logicName=logicName.substring(0,30);
metaField.setFieldLogicName(logicName);
metaField.setDataType(column.get(j).get("type") == null? "" : fieldToName(column.get(j).get("type").toString().toUpperCase()));
int[] len=fieldToLength(column.get(j).get("type").toString());
metaField.setDataLength(column.get(j).get("type") == null? 0 : len[0]);
if(len[1]>0)
metaField.setDataPreci(len[1]);
if(metaField.getDataType().indexOf("CHAR")>=0) {
metaField.setFieldType("TEXT");
if(metaField.getDataLength()>=1000)
metaField.setFieldType("LONGTEXT1000");
}
else if((metaField.getDataType().indexOf("NUMB")>=0&&(metaField.getDataPreci()==null||metaField.getDataPreci()==0)&&metaField.getDataLength()>9)||(metaField.getDataType().indexOf("BIGINT")>=0)||(metaField.getDataType().indexOf("LONG")>=0))
metaField.setFieldType("BIGINT");
else if((metaField.getDataType().indexOf("NUMB")>=0&&(metaField.getDataPreci()==null||metaField.getDataPreci()==0))||(metaField.getDataType().indexOf("INT")>=0))
metaField.setFieldType("INT");
else if(metaField.getDataType().indexOf("NUMB")>=0||metaField.getDataType().indexOf("DECIMAL")>=0||metaField.getDataType().indexOf("FLOAT")>=0)
metaField.setFieldType("BIGDECIMAL");
else if(metaField.getDataType().indexOf("LOB")>=0||metaField.getDataType().indexOf("MEDIUMTEXT")>=0)
metaField.setFieldType("LONGTEXT");
else if(metaField.getDataType().indexOf("TIME")>=0)
metaField.setFieldType("DATETIME");
else if(metaField.getDataType().indexOf("DATE")>=0)
metaField.setFieldType("DATE");
Map<String,List<Map>> map = (Map<String, List<Map>>) column.get(j).get("constraints");
if(!ObjectUtil.isEmpty(map)){
metaField.setNullable(map.get("nullable")==null?1:0);
metaField.setKeyField(map.get("primaryKey")==null?0:1);
int isKey=map.get("primaryKey")==null?0:1;
metaField.setKeyField(isKey);
if(isKey==1)
unionKeys.add(metaField);
}else {
metaField.setNullable(1);
metaField.setKeyField(0);
......@@ -224,9 +260,43 @@ public class DstLiquibaseService{
}
metaEntityModel.setSubEntitys(subRelationships);
metaField.setPhysicalField(1);
metaField.setShowOrder(j+1);
metaField.setEntityName(metaEntityModel.getEntityName());
metaFields.add(metaField);
}
if(unionKeys.size()>1)
{
MetaField uilid = new MetaField();
unionKeys.get(0).copyTo(uilid,true);
uilid.setFieldName("UILID");
uilid.setFieldLogicName("UILID");
uilid.setCodeName("UILID");
uilid.setKeyField(1);
uilid.setPhysicalField(0);
uilid.setFieldType("TEXT");
String expression="";
for(int no=0;no<unionKeys.size();no++)
{
MetaField unikey=unionKeys.get(no);
unikey.setKeyField(0);
unikey.setUnionKey("KEY"+(no+1));
if(!StringUtils.isEmpty(expression))
expression+="||'||'||";
if(unikey.getFieldType().indexOf("DATE")>=0)
expression+=("to_char("+unikey.getFieldName()+" ,'yyyy-MM-dd hh24:mi:ss')");
else if(unikey.getFieldType().indexOf("INT")>=0||unikey.getFieldType().indexOf("DECIMAL")>=0)
expression+=("to_char("+unikey.getFieldName()+")");
else
expression+=unikey.getFieldName();
}
uilid.setExpression(expression);
uilid.setShowOrder(0);
metaFields.add(0,uilid);
}
metaEntityModel.setFields(metaFields);
metaEntityModels.add(metaEntityModel);
......@@ -234,12 +304,17 @@ public class DstLiquibaseService{
}
return sysModel;
}
private static Integer fieldToLength(String s) {
private static int[] fieldToLength(String s) {
int[] a={0,0};
if(s.contains("(")) {
String newStr = s.substring(s.indexOf("(") + 1, s.indexOf(")"));
return Integer.valueOf(newStr);
String newStr = s.substring(s.indexOf("(") + 1, s.indexOf(")")).replace(" BYTE","").replace(" ","").replace("*","22");
String[] arr=newStr.split(",");
if(arr.length>=1)
a[0]=Integer.parseInt(arr[0]);
if(arr.length>=2)
a[1]=Integer.parseInt(arr[1]);
}
return 0;
return a;
}
private static String fieldToName(String s) {
if(s.contains("(")){
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册