Browse Source

低代码管理

master
陈裕财 2 years ago
parent
commit
4b06d9aee5
  1. 181
      mdp-lcode/src/main/java/com/mdp/lcode/ctrl/FormDataController.java
  2. 50
      mdp-lcode/src/main/java/com/mdp/lcode/entity/DbTable.java
  3. 3
      mdp-lcode/src/main/java/com/mdp/lcode/entity/FormField.java
  4. 25
      mdp-lcode/src/main/java/com/mdp/lcode/mapper/DbTableMapper.java
  5. 15
      mdp-lcode/src/main/java/com/mdp/lcode/mapper/DbTableMapper.xml
  6. 188
      mdp-lcode/src/main/java/com/mdp/lcode/service/DbTableService.java
  7. 37
      mdp-lcode/src/main/java/com/mdp/lcode/service/FormDefService.java

181
mdp-lcode/src/main/java/com/mdp/lcode/ctrl/FormDataController.java

@ -11,6 +11,7 @@ import com.mdp.core.SpringContextUtils;
import com.mdp.core.utils.BaseUtils; import com.mdp.core.utils.BaseUtils;
import com.mdp.core.utils.ObjectTools; import com.mdp.core.utils.ObjectTools;
import com.mdp.lcode.entity.*; import com.mdp.lcode.entity.*;
import com.mdp.lcode.service.DbTableService;
import com.mdp.lcode.service.FormDefService; import com.mdp.lcode.service.FormDefService;
import com.mdp.lcode.service.FormFieldService; import com.mdp.lcode.service.FormFieldService;
import com.mdp.meta.client.entity.ExtInfo; import com.mdp.meta.client.entity.ExtInfo;
@ -56,6 +57,10 @@ public class FormDataController {
private DynamicRoutingDataSource dataSourceService; private DynamicRoutingDataSource dataSourceService;
@Autowired
private DbTableService dbTableService;
@ApiOperation( value = "表单数据表-查询列表",notes=" ") @ApiOperation( value = "表单数据表-查询列表",notes=" ")
@ApiEntityParams(FormData.class) @ApiEntityParams(FormData.class)
@ApiResponses({ @ApiResponses({
@ -134,14 +139,7 @@ public class FormDataController {
List<Map<String,Object>> datas=new ArrayList<>(); List<Map<String,Object>> datas=new ArrayList<>();
FormDef formDef=formDefVo.getFormDef(); FormDef formDef=formDefVo.getFormDef();
if("2".equals(formDefVo.getFormDef().getDataType()) ||"3".equals(formDefVo.getFormDef().getDataType())){ if("2".equals(formDefVo.getFormDef().getDataType()) ||"3".equals(formDefVo.getFormDef().getDataType())){
if(dataSourceService==null){
dataSourceService= SpringContextUtils.getBean(DynamicRoutingDataSource.class);
}
if("2".equals(formDefVo.getFormDef().getDataType())){
JdbcTemplate template=new JdbcTemplate();
template.setDataSource(dataSourceService.getDataSource(formDefVo.getFormDef().getTableOwner()));
datas=template.queryForList("select * from "+formDef.getTableName());
}
return dbTableService.list(formDef, formDefVo.getFormFields(),params);
}else{ }else{
qw.eq("branch_id",user.getBranchId()); qw.eq("branch_id",user.getBranchId());
datas = formDataService.selectListMapByWhere(page,qw,params); datas = formDataService.selectListMapByWhere(page,qw,params);
@ -186,70 +184,7 @@ public class FormDataController {
formData.setLtime(new Date()); formData.setLtime(new Date());
FormDef formDef=formDefVo.getFormDef(); FormDef formDef=formDefVo.getFormDef();
if("2".equals(formDef.getDataType())||"3".equals(formDef.getDataType())){ if("2".equals(formDef.getDataType())||"3".equals(formDef.getDataType())){
if("3".equals(formDef.getDataType())){//独立建表
if(dataSourceService==null){
dataSourceService= SpringContextUtils.getBean(DynamicRoutingDataSource.class);
}
JdbcTemplate template=new JdbcTemplate();
template.setDataSource(dataSourceService.getDataSource(formDefVo.getFormDef().getTableOwner()));
StringBuffer sb=new StringBuffer();
List<Object> varList=new ArrayList<>();
List<FormField> fields=FormDefService.calcDbFields(formFields);
sb.append("insert ");
sb.append(formDef.getTableName());
sb.append("(");
for (int i = 0; i < fields.size(); i++) {
FormField field=fields.get(i);
sb.append(field.getId());
if(i< fields.size()-1){
sb.append(",");
}
}
sb.append(")value(");
for (int i = 0; i < fields.size(); i++) {
FormField field=fields.get(i);
sb.append("?");
if(i< fields.size()-1){
sb.append(",");
}
varList.add(params.get(field.getIdCamel()));
}
sb.append(")");
template.update(sb.toString(),varList.toArray());
}else{//寄存某个字段
if(dataSourceService==null){
dataSourceService= SpringContextUtils.getBean(DynamicRoutingDataSource.class);
}
JdbcTemplate template=new JdbcTemplate();
template.setDataSource(dataSourceService.getDataSource(formDefVo.getFormDef().getTableOwner()));
StringBuffer sb=new StringBuffer();
List<FormField> fields= FormDefService.calcDbFields(formDefVo.getFormFields());
sb.append("update ");
sb.append(formDef.getTableName());
sb.append(" set "+ObjectTools.camelToUnderline(formDef.getDataField())).append(" = ? ");
sb.append(" where 1=1");
List<Object> vars=new ArrayList<>();
if(ObjectTools.isEmpty(formDef.getPks())){
return Result.error("pks-not-setting","没有设置主键,无法插入数据");
}
for (String k : formDef.getPks().split(",")) {
sb.append(" and "+ObjectTools.camelToUnderline(k)+"=?");
vars.add(params.get(params.get(ObjectTools.camelName(k))));
}
if(vars.size()==0){
return Result.error("pks-not-setting","没有设置主键,无法更新数据");
}
List<ExtInfo> extInfos=new ArrayList<>();
for (FormField field : fields) {
ExtInfo extInfo=new ExtInfo();
extInfo.setValue((String) params.get(field.getIdCamel()));
extInfo.setId(field.getIdCamel());
extInfo.setName(field.getTitle());
extInfos.add(extInfo);
}
template.update(sb.toString(),JSON.toJSONString(extInfos),vars.toArray());
}
dbTableService.saveOrUpdate(formDef,formFields,params);
return Result.ok(); return Result.ok();
} }
@ -292,25 +227,9 @@ public class FormDataController {
@RequestMapping(value="/edit",method=RequestMethod.POST) @RequestMapping(value="/edit",method=RequestMethod.POST)
public Result editFormData(@RequestBody Map<String,Object> params) { public Result editFormData(@RequestBody Map<String,Object> params) {
FormData formData=BaseUtils.fromMap(params,FormData.class); FormData formData=BaseUtils.fromMap(params,FormData.class);
if(ObjectTools.isEmpty(formData.getId())){
return Result.error("id-0","主键不能为空");
}
FormData formDataDb=formDataService.getById(formData.getId());
if(formDataDb==null){
return Result.error("data-0","数据已不存在");
}
formData.setLtime(new Date());
if(formData.getCtime()==null) {
formData.setCtime(new Date());
}
User user=LoginUtils.getCurrentUserInfo();
formData.setUserid(user.getUserid());
formData.setLtime(new Date());
if(StringUtils.isEmpty(formData.getFstate())) {
formData.setFstate("0");
if(ObjectTools.isEmpty(formData.getFormId())){
throw new BizException("formId-0","表单编号不能为空");
} }
FormDefVo formDefVo=formFieldService.getFormFieldFromCache(formData.getFormId()); FormDefVo formDefVo=formFieldService.getFormFieldFromCache(formData.getFormId());
if(formDefVo==null){ if(formDefVo==null){
throw new BizException("formDef-0","表单不存在"); throw new BizException("formDef-0","表单不存在");
@ -327,73 +246,27 @@ public class FormDataController {
} }
FormDef formDef=formDefVo.getFormDef(); FormDef formDef=formDefVo.getFormDef();
if("2".equals(formDef.getDataType())||"3".equals(formDef.getDataType())){ if("2".equals(formDef.getDataType())||"3".equals(formDef.getDataType())){
if("3".equals(formDef.getDataType())){//独立建表
if(dataSourceService==null){
dataSourceService= SpringContextUtils.getBean(DynamicRoutingDataSource.class);
}
JdbcTemplate template=new JdbcTemplate();
template.setDataSource(dataSourceService.getDataSource(formDefVo.getFormDef().getTableOwner()));
StringBuffer sb=new StringBuffer();
List<Object> varList=new ArrayList<>();
if(ObjectTools.isEmpty(formDef.getPks())){
return Result.error("pks-not-setting","没有设置主键,无法插入数据");
}
List<FormField> fields=FormDefService.calcDbFields(formFields);
sb.append("update ");
sb.append(formDef.getTableName());
sb.append(" set ");
for (int i = 0; i < fields.size(); i++) {
FormField field=fields.get(i);
sb.append(field.getId()+"= ?");
if(i<fields.size()-1){
sb.append(",");
}
varList.add(params.get(field.getIdCamel()));
}
sb.append(" where 1=1 ");
String[] pks=formDef.getPks().split(",");
for (String k : pks) {
sb.append(" and "+ObjectTools.camelToUnderline(k)+"=?");
varList.add(params.get(ObjectTools.camelName(k)));
}
template.update(sb.toString(),varList.toArray());
}else{//寄存某个字段
if(dataSourceService==null){
dataSourceService= SpringContextUtils.getBean(DynamicRoutingDataSource.class);
}
JdbcTemplate template=new JdbcTemplate();
template.setDataSource(dataSourceService.getDataSource(formDefVo.getFormDef().getTableOwner()));
StringBuffer sb=new StringBuffer();
List<FormField> fields= FormDefService.calcDbFields(formDefVo.getFormFields());
sb.append("update ");
sb.append(formDef.getTableName());
sb.append(" set "+ObjectTools.camelToUnderline(formDef.getDataField())).append(" = ? ");
sb.append(" where 1=1");
List<Object> vars=new ArrayList<>();
if(ObjectTools.isEmpty(formDef.getPks())){
return Result.error("pks-not-setting","没有设置主键,无法插入数据");
}
for (String k : formDef.getPks().split(",")) {
sb.append(" and "+ObjectTools.camelToUnderline(k)+"=?");
vars.add(params.get(params.get(ObjectTools.camelName(k))));
}
if(vars.size()==0){
return Result.error("pks-not-setting","没有设置主键,无法更新数据");
}
List<ExtInfo> extInfos=new ArrayList<>();
for (FormField field : fields) {
ExtInfo extInfo=new ExtInfo();
extInfo.setValue((String) params.get(field.getIdCamel()));
extInfo.setId(field.getIdCamel());
extInfo.setName(field.getTitle());
extInfos.add(extInfo);
}
template.update(sb.toString(),JSON.toJSONString(extInfos),vars.toArray());
}
dbTableService.saveOrUpdate(formDef,formFields,params);
return Result.ok(); return Result.ok();
} }
if(ObjectTools.isEmpty(formData.getId())){
return Result.error("id-0","主键不能为空");
}
formData.setLtime(new Date());
if(formData.getCtime()==null) {
formData.setCtime(new Date());
}
User user=LoginUtils.getCurrentUserInfo();
formData.setUserid(user.getUserid());
formData.setLtime(new Date());
if(StringUtils.isEmpty(formData.getFstate())) {
formData.setFstate("0");
}
FormData formDataDb=formDataService.getById(formData.getId());
if(formDataDb==null){
return Result.error("data-0","数据已不存在");
}
String bizKey= formDataService.createBizKey(formDefVo,formData); String bizKey= formDataService.createBizKey(formDefVo,formData);
formData.setBizKey(ObjectTools.isNotEmpty(bizKey)?bizKey:formDataDb.getId()); formData.setBizKey(ObjectTools.isNotEmpty(bizKey)?bizKey:formDataDb.getId());
if(ObjectTools.isNotEmpty(bizKey) && !bizKey.equals(formDataDb.getBizKey())){ if(ObjectTools.isNotEmpty(bizKey) && !bizKey.equals(formDataDb.getBizKey())){

50
mdp-lcode/src/main/java/com/mdp/lcode/entity/DbTable.java

@ -0,0 +1,50 @@
package com.mdp.lcode.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author code-gen
* @since 2023-10-7
*/
@Data
@ApiModel(description="动态数据查询")
public class DbTable implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(notes="表名",allowEmptyValue=true,example="",allowableValues="")
String tableName;
@ApiModelProperty(notes="表名拥有者",allowEmptyValue=true,example="",allowableValues="")
String tableOwner;
@ApiModelProperty(notes="主键列表,逗号分割",allowEmptyValue=true,example="",allowableValues="")
String pks;
@ApiModelProperty(notes="数据存储模式1-form-data表,2-寄存主表某个字段,默认ext_infos字段,3-独立建表,4-其它文件存储",allowEmptyValue=true,example="",allowableValues="")
String dataType;
@ApiModelProperty(notes="数据存储字段,当data_type=2时必填,默认ext_infos",allowEmptyValue=true,example="",allowableValues="")
String dataField;
@ApiModelProperty(notes="建表方式",allowEmptyValue=true,example="",allowableValues="")
String ctType;
/**
* 表单定义
**/
public DbTable() {
}
}

3
mdp-lcode/src/main/java/com/mdp/lcode/entity/FormField.java

@ -117,6 +117,9 @@ public class FormField implements java.io.Serializable {
@ApiModelProperty(notes="只读",allowEmptyValue=true,example="",allowableValues="") @ApiModelProperty(notes="只读",allowEmptyValue=true,example="",allowableValues="")
String ronly; String ronly;
@ApiModelProperty(notes="隐藏",allowEmptyValue=true,example="",allowableValues="")
String hidden;
/** /**
*表单编号,主键-字段编号对应数据库 *表单编号,主键-字段编号对应数据库
**/ **/

25
mdp-lcode/src/main/java/com/mdp/lcode/mapper/DbTableMapper.java

@ -0,0 +1,25 @@
package com.mdp.lcode.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mdp.lcode.entity.DbTable;
import com.mdp.lcode.entity.FormData;
import com.mdp.lcode.entity.FormDef;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface DbTableMapper extends BaseMapper<DbTable> {
/**
* 自定义查询支持多表关联
* @param page 分页条件
* @param ew 一定要并且必须加@Param("ew")注解
* @param ext 如果xml中需要根据某些值进行特殊处理可以通过这个进行传递非必须注解也可以不加
* @return
*/
List<Map<String,Object>> selectListMapByWhere(IPage page, @Param("ew") QueryWrapper ew,@Param("ext") Map<String,Object> ext);
}

15
mdp-lcode/src/main/java/com/mdp/lcode/mapper/DbTableMapper.xml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mdp.lcode.mapper.DbTableMapper">
<select id="selectListMapByWhere" resultType="HashMap">
select * from ${ext.tableName} res
<where>
${@com.mdp.Util@trimWhere(ew.customSqlSegment)}
</where>
<!--下面双引号内可以添加默认排序,如果前端没有上传排序,将使用引号内的排序规则-->
${@com.mdp.Util@trimOrderBy(ew.customSqlSegment,'')}
<!--下面双引号内可以添加默认分组,如果前端没有上传分组,将使用引号内的分组规则-->
${@com.mdp.Util@trimGroupBy(ew.customSqlSegment,'')}
</select>
</mapper>

188
mdp-lcode/src/main/java/com/mdp/lcode/service/DbTableService.java

@ -1,17 +1,26 @@
package com.mdp.lcode.service; package com.mdp.lcode.service;
import com.alibaba.fastjson.JSON;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource; import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mdp.core.SpringContextUtils; import com.mdp.core.SpringContextUtils;
import com.mdp.core.entity.Result; import com.mdp.core.entity.Result;
import com.mdp.core.err.BizException;
import com.mdp.core.query.QueryTools; import com.mdp.core.query.QueryTools;
import com.mdp.core.service.BaseService;
import com.mdp.core.utils.BaseUtils;
import com.mdp.core.utils.DateUtils;
import com.mdp.core.utils.ObjectTools; import com.mdp.core.utils.ObjectTools;
import com.mdp.dev.dao.CodeGenDao; import com.mdp.dev.dao.CodeGenDao;
import com.mdp.dev.entity.FieldInfo; import com.mdp.dev.entity.FieldInfo;
import com.mdp.lcode.entity.DbTable;
import com.mdp.lcode.entity.FormData; import com.mdp.lcode.entity.FormData;
import com.mdp.lcode.entity.FormDef; import com.mdp.lcode.entity.FormDef;
import com.mdp.lcode.entity.FormField; import com.mdp.lcode.entity.FormField;
import com.mdp.lcode.mapper.DbTableMapper;
import com.mdp.meta.client.entity.ItemVo; import com.mdp.meta.client.entity.ItemVo;
import com.mdp.meta.client.entity.ExtInfo; import com.mdp.meta.client.entity.ExtInfo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -19,17 +28,28 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.sql.DataSource; import javax.sql.DataSource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Service @Service
public class DbTableService { public class DbTableService {
@Autowired
DbTableMapper baseMapper;
@Autowired @Autowired
CodeGenDao codeGenDao; CodeGenDao codeGenDao;
DynamicRoutingDataSource dataSourceService; DynamicRoutingDataSource dataSourceService;
List<String> getPrimaryKeys(String ds,String tableName){
return codeGenDao.getPrimaryKeys(ds,tableName);
}
void createTable(FormDef formDef, List<FormField> formFields){ void createTable(FormDef formDef, List<FormField> formFields){
if("3".equals(formDef.getCtType())){ if("3".equals(formDef.getCtType())){
return; return;
@ -55,6 +75,10 @@ public class DbTableService {
formDef.setTableName(tableName); formDef.setTableName(tableName);
//先删除后创建 //先删除后创建
if("1".equals(formDef.getCtType())){ if("1".equals(formDef.getCtType())){
List<Map<String,Object>> datas=jdbcTemplate.queryForList("select * from " +formDef.getTableName() +" limit 0,1");
if(datas!=null && datas.size()>0){
throw new BizException("table-has-data-not-allow-drop","表格%s中存在数据,为安全起见,不能drop表重建,请先清理数据后再继续",formDef.getTableName());
}
sqlBuff.append(" DROP TABLE IF EXISTS "+formDef.getTableName()); sqlBuff.append(" DROP TABLE IF EXISTS "+formDef.getTableName());
jdbcTemplate.update(sqlBuff.toString()); jdbcTemplate.update(sqlBuff.toString());
} }
@ -64,6 +88,9 @@ public class DbTableService {
Map<String,ExtInfo> extInfoMap= ItemVo.parseExtInfosMap(f.getExtInfos()); Map<String,ExtInfo> extInfoMap= ItemVo.parseExtInfosMap(f.getExtInfos());
sqlBuff.append(" "+f.getId()).append(" "+getDBTypeByFieldType(f,extInfoMap)).append(" COMMENT '"+f.getRemark()+"',"); sqlBuff.append(" "+f.getId()).append(" "+getDBTypeByFieldType(f,extInfoMap)).append(" COMMENT '"+f.getRemark()+"',");
} }
if(ObjectTools.isNotEmpty(formDef.getPks())){
sqlBuff.append(" PRIMARY KEY ("+formDef.getPks()+") USING BTREE, ");
}
String sql=sqlBuff.toString(); String sql=sqlBuff.toString();
if(sql.endsWith(",")){ if(sql.endsWith(",")){
sql=sql.substring(0,sql.length()-1); sql=sql.substring(0,sql.length()-1);
@ -119,8 +146,165 @@ public class DbTableService {
} }
public void saveOrUpdate(FormDef formDef,List<FormField> formFields,Map<String,Object> params){
if(ObjectTools.isEmpty(formDef.getPks())){
throw new BizException("pks-required","表未设置主键,不能进行数据维护");
}
if(dataSourceService==null){
dataSourceService= SpringContextUtils.getBean(DynamicRoutingDataSource.class);
}
JdbcTemplate template=new JdbcTemplate();
template.setDataSource(dataSourceService.getDataSource(formDef.getTableOwner()));
DynamicDataSourceContextHolder.push(formDef.getTableOwner());
QueryWrapper<DbTable> qw=new QueryWrapper<>();
for (String key : formDef.getPks().split(",")) {
Object val=params.get(ObjectTools.camelName(key));
qw.eq(BaseUtils.underscoreName(key),val);
}
IPage page=QueryTools.initPage(BaseUtils.map("pageNum",1,"pageSize",1));
params.put("tableName",formDef.getTableName());
List<Map<String,Object>> datas=baseMapper.selectListMapByWhere(page,qw,params);
DynamicDataSourceContextHolder.poll();
if(datas!=null && datas.size()>0){//update
if("2".equals(formDef.getDataType())){//寄存主表
StringBuffer sb=new StringBuffer();
List<FormField> fields= FormDefService.calcDbFields(formFields);
String dataField=ObjectTools.camelToUnderline(formDef.getDataField());
String dataFieldCamle=ObjectTools.camelName(formDef.getDataField());
sb.append("update ");
sb.append(formDef.getTableName());
sb.append(" set "+dataField).append(" = ? ");
sb.append(" where 1=1");
List<Object> vars=new ArrayList<>();
if(ObjectTools.isEmpty(formDef.getPks())){
throw new BizException("pks-not-setting","没有设置主键,无法插入数据");
}
for (String k : formDef.getPks().split(",")) {
sb.append(" and "+ObjectTools.camelToUnderline(k)+"=?");
Object d=params.get(ObjectTools.camelName(k));
vars.add(ObjectTools.isEmpty(d)?"":d);
}
if(vars.size()==0){
throw new BizException("pks-not-setting","没有设置主键,无法更新数据");
}
vars.add(0, params.get(dataFieldCamle));
template.update(sb.toString(),vars.toArray());
}else if("3".equals(formDef.getDataType())){//独立建表
StringBuffer sb=new StringBuffer();
List<FormField> fields= FormDefService.calcDbFields(formFields);
sb.append("update ");
sb.append(formDef.getTableName());
sb.append(" set ");
List<Object> vars=new ArrayList<>();
for (int i = 0; i < fields.size(); i++) {
FormField field=fields.get(i);
Object dval=params.get(field.getIdCamel());
if(ObjectTools.isNotEmpty(dval)){
sb.append(field.getId()+"=?,");
vars.add(dval);
}
}
if(vars.size()==0){
return;
}
String sql=sb.toString();
if(sql.endsWith(",")){
sql=sql.substring(0,sql.length()-1);
}
sb=new StringBuffer();
sb.append(sql);
sb.append(" where 1=1");
for (String k : formDef.getPks().split(",")) {
sb.append(" and "+ObjectTools.camelToUnderline(k)+"=?");
Object d=params.get(ObjectTools.camelName(k));
vars.add(ObjectTools.isEmpty(d)?"":d);
}
template.update(sb.toString(),vars.toArray());
}
}else{//add
if("2".equals(formDef.getDataType())){//寄存主表
String dataField=ObjectTools.camelToUnderline(formDef.getDataField());
String dataFieldCamle=ObjectTools.camelName(formDef.getDataField());
StringBuffer sb=new StringBuffer();
List<FormField> fields= FormDefService.calcDbFields(formFields);
sb.append("insert ");
sb.append(formDef.getTableName());
sb.append(" ( "+dataField+","+formDef.getPks());
sb.append(" ) value ( ?");
List<Object> vars=new ArrayList<>();
for (String k : formDef.getPks().split(",")) {
sb.append(",?");
Object d=params.get(ObjectTools.camelName(k));
vars.add(ObjectTools.isEmpty(d)?"":d);
}
sb.append(")");
vars.add(0,params.get(dataFieldCamle));
template.update(sb.toString(),vars.toArray());
}else if("3".equals(formDef.getDataType())){//独立建表
StringBuffer sb=new StringBuffer();
List<Object> varList=new ArrayList<>();
List<FormField> fields=FormDefService.calcDbFields(formFields);
sb.append("insert ");
sb.append(formDef.getTableName());
sb.append("(");
for (int i = 0; i < fields.size(); i++) {
FormField field=fields.get(i);
sb.append(field.getId());
if(i< fields.size()-1){
sb.append(",");
}
}
sb.append(")value(");
for (int i = 0; i < fields.size(); i++) {
FormField field=fields.get(i);
sb.append("?");
if(i< fields.size()-1){
sb.append(",");
}
Object d=params.get(field.getIdCamel());
varList.add(ObjectTools.isEmpty(d)?"":d);
}
sb.append(")");
template.update(sb.toString(),varList.toArray());
}
}
}
public Result list(FormDef formDef,List<FormField> fields,Map<String,Object> params) { public Result list(FormDef formDef,List<FormField> fields,Map<String,Object> params) {
QueryWrapper qw=new QueryWrapper();
return Result.ok();
DynamicDataSourceContextHolder.push(formDef.getTableOwner());
QueryWrapper<DbTable> qw=QueryTools.initQueryWrapper(DbTable.class,params);
IPage page=QueryTools.initPage(params);
params.put("tableName",formDef.getTableName());
List<Map<String,Object>> datas=baseMapper.selectListMapByWhere(page,qw,params);
DynamicDataSourceContextHolder.poll();
return Result.ok().setData(datas).setTotal(page.getTotal());
}
public String getStr(Object val){
if(val==null){
return "";
}else if(val instanceof Integer){
return Integer.toString((Integer) val);
}else if(val instanceof Long){
return Long.toString((Long) val);
}else if(val instanceof Short){
return Short.toString((Short) val);
}else if(val instanceof Float){
return Float.toString((Float) val);
}else if(val instanceof Double){
return Double.toString((Double) val);
}else if(val instanceof BigDecimal){
return ((BigDecimal)(val)).toString();
}else if(val instanceof Date){
return DateUtils.format((Date)val,DateUtils.datetimePattern);
}else if(val instanceof String){
return (String)val;
}else{
return val.toString();
}
} }
} }

37
mdp-lcode/src/main/java/com/mdp/lcode/service/FormDefService.java

@ -116,7 +116,23 @@ public class FormDefService extends BaseService<FormDefMapper,FormDef> {
} }
} }
if("2".equals(formDef.getDataType())){//寄存主表
List<String> pks=dbTableService.getPrimaryKeys(formDef.getTableOwner(),formDef.getTableName());
if(pks!=null && pks.size()>0){
formDef.setPks(pks.stream().collect(Collectors.joining(",")));
for (FormField formField : formFields) {
if(pks.stream().filter(k->k.equals(formField.getId())).findAny().isPresent()){
formField.setReq("1");
formField.setBkey("1");
}
}
}else{
formDef.setPks("");
for (FormField formField : formFields) {
formField.setBkey("0");
}
}
}
if("3".equals(formDef.getDataType())){ if("3".equals(formDef.getDataType())){
dbTableService.createTable(formDef,formFields); dbTableService.createTable(formDef,formFields);
} }
@ -139,10 +155,27 @@ public class FormDefService extends BaseService<FormDefMapper,FormDef> {
formDef.setBranchId(user.getBranchId()); formDef.setBranchId(user.getBranchId());
formDef.setDeptid(user.getDeptid()); formDef.setDeptid(user.getDeptid());
formDef.setDeptName(user.getDeptName()); formDef.setDeptName(user.getDeptName());
if("2".equals(formDef.getDataType())){//寄存主表
List<String> pks=dbTableService.getPrimaryKeys(formDef.getTableOwner(),formDef.getTableName());
if(pks!=null && pks.size()>0){
formDef.setPks(pks.stream().collect(Collectors.joining(",")));
for (FormField formField : formFields) {
if(pks.stream().filter(k->k.equals(formField.getId())).findAny().isPresent()){
formField.setReq("1");
formField.setBkey("1");
}
}
}else{
formDef.setPks("");
for (FormField formField : formFields) {
formField.setBkey("0");
}
}
}
for (FormField formField : formFields) { for (FormField formField : formFields) {
formField.setFormId(formDef.getId()); formField.setFormId(formDef.getId());
if(ObjectTools.isEmpty(formField.getId())){ if(ObjectTools.isEmpty(formField.getId())){
throw new BizException("id-required","主键id不能为空");
throw new BizException("id-required","列编码不能为空");
} }
} }
this.updateById(formDef,true); this.updateById(formDef,true);

Loading…
Cancel
Save