4 changed files with 322 additions and 12 deletions
-
183mdp-lcode/src/main/java/com/mdp/lcode/ctrl/FormDataController.java
-
4mdp-lcode/src/main/java/com/mdp/lcode/entity/FormDef.java
-
128mdp-lcode/src/main/java/com/mdp/lcode/service/DbTableService.java
-
19mdp-lcode/src/main/java/com/mdp/lcode/service/FormDefService.java
@ -0,0 +1,128 @@ |
|||
package com.mdp.lcode.service; |
|||
|
|||
|
|||
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource; |
|||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|||
import com.mdp.core.SpringContextUtils; |
|||
import com.mdp.core.entity.Result; |
|||
import com.mdp.core.query.QueryTools; |
|||
import com.mdp.core.utils.ObjectTools; |
|||
import com.mdp.dev.dao.CodeGenDao; |
|||
import com.mdp.dev.entity.FieldInfo; |
|||
import com.mdp.lcode.entity.FormData; |
|||
import com.mdp.lcode.entity.FormDef; |
|||
import com.mdp.lcode.entity.FormField; |
|||
import com.mdp.meta.client.entity.ItemVo; |
|||
import com.mdp.meta.client.entity.ExtInfo; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.jdbc.core.JdbcTemplate; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.sql.DataSource; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
@Service |
|||
public class DbTableService { |
|||
|
|||
@Autowired |
|||
CodeGenDao codeGenDao; |
|||
|
|||
DynamicRoutingDataSource dataSourceService; |
|||
|
|||
void createTable(FormDef formDef, List<FormField> formFields){ |
|||
if("3".equals(formDef.getCtType())){ |
|||
return; |
|||
} |
|||
if(dataSourceService==null){ |
|||
dataSourceService= SpringContextUtils.getBean(DynamicRoutingDataSource.class); |
|||
} |
|||
DataSource dataSource=dataSourceService.getDataSource(formDef.getTableOwner()); |
|||
JdbcTemplate jdbcTemplate=new JdbcTemplate(); |
|||
jdbcTemplate.setDataSource(dataSource); |
|||
StringBuffer sqlBuff=new StringBuffer(); |
|||
if(formDef.getTableName().indexOf(formDef.getBranchId())<0){ |
|||
formDef.setTableName(formDef.getBranchId()+"_"+formDef.getTableName()); |
|||
} |
|||
//如果没有则创建 |
|||
if("2".equals(formDef.getCtType())){ |
|||
List<FieldInfo> cols=codeGenDao.getColumnsInfo(formDef.getTableOwner(),formDef.getTableName()); |
|||
if(cols!=null && cols.size()>0){ |
|||
return; |
|||
} |
|||
} |
|||
String tableName=formDef.getTableName().replaceAll("-","").replaceAll("@","").replaceAll("$",""); |
|||
formDef.setTableName(tableName); |
|||
//先删除后创建 |
|||
if("1".equals(formDef.getCtType())){ |
|||
sqlBuff.append(" DROP TABLE IF EXISTS "+formDef.getTableName()); |
|||
jdbcTemplate.update(sqlBuff.toString()); |
|||
} |
|||
sqlBuff=new StringBuffer(); |
|||
sqlBuff.append(" create table ").append(formDef.getTableName()).append(" ("); |
|||
for (FormField f : formFields) { |
|||
Map<String,ExtInfo> extInfoMap= ItemVo.parseExtInfosMap(f.getExtInfos()); |
|||
sqlBuff.append(" "+f.getId()).append(" "+getDBTypeByFieldType(f,extInfoMap)).append(" COMMENT '"+f.getRemark()+"',"); |
|||
} |
|||
String sql=sqlBuff.toString(); |
|||
if(sql.endsWith(",")){ |
|||
sql=sql.substring(0,sql.length()-1); |
|||
} |
|||
sql=sql+") COMMENT = '"+formDef.getFormName()+"'"; |
|||
jdbcTemplate.update(sql); |
|||
} |
|||
|
|||
private String getDBTypeByFieldType(FormField f, Map<String, ExtInfo> extInfoMap) { |
|||
|
|||
if(ObjectTools.isEmpty(f.getTyp())){ |
|||
if("user".equals(f.getExtType())){ |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
}else if("dept".equals(f.getExtType())){ |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
}else if("image".equals(f.getExtType())){ |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
}else if("json".equals(f.getExtType())){ |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
}else if("att".equals(f.getExtType())){ |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
}else if("link".equals(f.getExtType())){ |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
}else if("tag".equals(f.getExtType())){ |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
}else if("cate".equals(f.getExtType())){ |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
}else if("html".equals(f.getExtType())){ |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
}else if("text".equals(f.getTyp())){ |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
} else if("datetime".equals(f.getTyp())){ |
|||
return " datetime "; |
|||
}else if("date".equals(f.getTyp())){ |
|||
return " date "; |
|||
}else if("month".equals(f.getTyp())){ |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
}else if("year".equals(f.getTyp())){ |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
}else if("number".equals(f.getTyp())){ |
|||
ExtInfo scale=extInfoMap.get("scale"); |
|||
if(scale==null && f.getLen()<=8){ |
|||
return "int"; |
|||
}else{ |
|||
return "decimal("+f.getLen()+","+scale.getValue()+")"; |
|||
} |
|||
}else { |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
} |
|||
}else{ |
|||
return "VARCHAR("+f.getLen()+")"; |
|||
} |
|||
|
|||
} |
|||
|
|||
public Result list(FormDef formDef,List<FormField> fields,Map<String,Object> params) { |
|||
QueryWrapper qw=new QueryWrapper(); |
|||
return Result.ok(); |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue