From 4b06d9aee517c761006835d17686afa68c9d68a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Fri, 20 Oct 2023 22:21:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=8E=E4=BB=A3=E7=A0=81=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mdp/lcode/ctrl/FormDataController.java | 181 +++-------------- .../java/com/mdp/lcode/entity/DbTable.java | 50 +++++ .../java/com/mdp/lcode/entity/FormField.java | 3 + .../com/mdp/lcode/mapper/DbTableMapper.java | 25 +++ .../com/mdp/lcode/mapper/DbTableMapper.xml | 15 ++ .../com/mdp/lcode/service/DbTableService.java | 188 +++++++++++++++++- .../com/mdp/lcode/service/FormDefService.java | 37 +++- 7 files changed, 341 insertions(+), 158 deletions(-) create mode 100644 mdp-lcode/src/main/java/com/mdp/lcode/entity/DbTable.java create mode 100644 mdp-lcode/src/main/java/com/mdp/lcode/mapper/DbTableMapper.java create mode 100644 mdp-lcode/src/main/java/com/mdp/lcode/mapper/DbTableMapper.xml diff --git a/mdp-lcode/src/main/java/com/mdp/lcode/ctrl/FormDataController.java b/mdp-lcode/src/main/java/com/mdp/lcode/ctrl/FormDataController.java index 8430fb0..e79933c 100644 --- a/mdp-lcode/src/main/java/com/mdp/lcode/ctrl/FormDataController.java +++ b/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.ObjectTools; import com.mdp.lcode.entity.*; +import com.mdp.lcode.service.DbTableService; import com.mdp.lcode.service.FormDefService; import com.mdp.lcode.service.FormFieldService; import com.mdp.meta.client.entity.ExtInfo; @@ -56,6 +57,10 @@ public class FormDataController { private DynamicRoutingDataSource dataSourceService; + + @Autowired + private DbTableService dbTableService; + @ApiOperation( value = "表单数据表-查询列表",notes=" ") @ApiEntityParams(FormData.class) @ApiResponses({ @@ -134,14 +139,7 @@ public class FormDataController { List> datas=new ArrayList<>(); FormDef formDef=formDefVo.getFormDef(); 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{ qw.eq("branch_id",user.getBranchId()); datas = formDataService.selectListMapByWhere(page,qw,params); @@ -186,70 +184,7 @@ public class FormDataController { formData.setLtime(new Date()); FormDef formDef=formDefVo.getFormDef(); 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 varList=new ArrayList<>(); - List 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 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 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 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(); } @@ -292,25 +227,9 @@ public class FormDataController { @RequestMapping(value="/edit",method=RequestMethod.POST) public Result editFormData(@RequestBody Map params) { 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()); if(formDefVo==null){ throw new BizException("formDef-0","表单不存在"); @@ -327,73 +246,27 @@ public class FormDataController { } FormDef formDef=formDefVo.getFormDef(); 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 varList=new ArrayList<>(); - if(ObjectTools.isEmpty(formDef.getPks())){ - return Result.error("pks-not-setting","没有设置主键,无法插入数据"); - } - List 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= 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 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 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(); } + 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); formData.setBizKey(ObjectTools.isNotEmpty(bizKey)?bizKey:formDataDb.getId()); if(ObjectTools.isNotEmpty(bizKey) && !bizKey.equals(formDataDb.getBizKey())){ diff --git a/mdp-lcode/src/main/java/com/mdp/lcode/entity/DbTable.java b/mdp-lcode/src/main/java/com/mdp/lcode/entity/DbTable.java new file mode 100644 index 0000000..1a344b9 --- /dev/null +++ b/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() { + } + +} \ No newline at end of file diff --git a/mdp-lcode/src/main/java/com/mdp/lcode/entity/FormField.java b/mdp-lcode/src/main/java/com/mdp/lcode/entity/FormField.java index 590a211..67265de 100644 --- a/mdp-lcode/src/main/java/com/mdp/lcode/entity/FormField.java +++ b/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="") String ronly; + @ApiModelProperty(notes="隐藏",allowEmptyValue=true,example="",allowableValues="") + String hidden; + /** *表单编号,主键-字段编号对应数据库 **/ diff --git a/mdp-lcode/src/main/java/com/mdp/lcode/mapper/DbTableMapper.java b/mdp-lcode/src/main/java/com/mdp/lcode/mapper/DbTableMapper.java new file mode 100644 index 0000000..f13fc74 --- /dev/null +++ b/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 { + + /** + * 自定义查询,支持多表关联 + * @param page 分页条件 + * @param ew 一定要,并且必须加@Param("ew")注解 + * @param ext 如果xml中需要根据某些值进行特殊处理,可以通过这个进行传递,非必须,注解也可以不加 + * @return + */ + List> selectListMapByWhere(IPage page, @Param("ew") QueryWrapper ew,@Param("ext") Map ext); +} + diff --git a/mdp-lcode/src/main/java/com/mdp/lcode/mapper/DbTableMapper.xml b/mdp-lcode/src/main/java/com/mdp/lcode/mapper/DbTableMapper.xml new file mode 100644 index 0000000..70a3673 --- /dev/null +++ b/mdp-lcode/src/main/java/com/mdp/lcode/mapper/DbTableMapper.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/mdp-lcode/src/main/java/com/mdp/lcode/service/DbTableService.java b/mdp-lcode/src/main/java/com/mdp/lcode/service/DbTableService.java index b79f352..96698b8 100644 --- a/mdp-lcode/src/main/java/com/mdp/lcode/service/DbTableService.java +++ b/mdp-lcode/src/main/java/com/mdp/lcode/service/DbTableService.java @@ -1,17 +1,26 @@ package com.mdp.lcode.service; +import com.alibaba.fastjson.JSON; 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.metadata.IPage; import com.mdp.core.SpringContextUtils; import com.mdp.core.entity.Result; +import com.mdp.core.err.BizException; 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.dev.dao.CodeGenDao; import com.mdp.dev.entity.FieldInfo; +import com.mdp.lcode.entity.DbTable; import com.mdp.lcode.entity.FormData; import com.mdp.lcode.entity.FormDef; 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.ExtInfo; import org.springframework.beans.factory.annotation.Autowired; @@ -19,17 +28,28 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import javax.sql.DataSource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; @Service public class DbTableService { + @Autowired + DbTableMapper baseMapper; + @Autowired CodeGenDao codeGenDao; DynamicRoutingDataSource dataSourceService; + + List getPrimaryKeys(String ds,String tableName){ + return codeGenDao.getPrimaryKeys(ds,tableName); + } + void createTable(FormDef formDef, List formFields){ if("3".equals(formDef.getCtType())){ return; @@ -55,6 +75,10 @@ public class DbTableService { formDef.setTableName(tableName); //先删除后创建 if("1".equals(formDef.getCtType())){ + List> 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()); jdbcTemplate.update(sqlBuff.toString()); } @@ -64,6 +88,9 @@ public class DbTableService { Map extInfoMap= ItemVo.parseExtInfosMap(f.getExtInfos()); 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(); if(sql.endsWith(",")){ sql=sql.substring(0,sql.length()-1); @@ -119,8 +146,165 @@ public class DbTableService { } + public void saveOrUpdate(FormDef formDef,List formFields,Map 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 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> 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 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 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 fields= FormDefService.calcDbFields(formFields); + sb.append("update "); + sb.append(formDef.getTableName()); + sb.append(" set "); + List 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 fields= FormDefService.calcDbFields(formFields); + sb.append("insert "); + sb.append(formDef.getTableName()); + sb.append(" ( "+dataField+","+formDef.getPks()); + sb.append(" ) value ( ?"); + List 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 varList=new ArrayList<>(); + List 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 fields,Map params) { - QueryWrapper qw=new QueryWrapper(); - return Result.ok(); + DynamicDataSourceContextHolder.push(formDef.getTableOwner()); + + QueryWrapper qw=QueryTools.initQueryWrapper(DbTable.class,params); + IPage page=QueryTools.initPage(params); + params.put("tableName",formDef.getTableName()); + List> 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(); + } } } diff --git a/mdp-lcode/src/main/java/com/mdp/lcode/service/FormDefService.java b/mdp-lcode/src/main/java/com/mdp/lcode/service/FormDefService.java index 04f07fb..7bf80ff 100644 --- a/mdp-lcode/src/main/java/com/mdp/lcode/service/FormDefService.java +++ b/mdp-lcode/src/main/java/com/mdp/lcode/service/FormDefService.java @@ -116,7 +116,23 @@ public class FormDefService extends BaseService { } } - + if("2".equals(formDef.getDataType())){//寄存主表 + List 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())){ dbTableService.createTable(formDef,formFields); } @@ -139,10 +155,27 @@ public class FormDefService extends BaseService { formDef.setBranchId(user.getBranchId()); formDef.setDeptid(user.getDeptid()); formDef.setDeptName(user.getDeptName()); + if("2".equals(formDef.getDataType())){//寄存主表 + List 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) { formField.setFormId(formDef.getId()); if(ObjectTools.isEmpty(formField.getId())){ - throw new BizException("id-required","主键id不能为空"); + throw new BizException("id-required","列编码不能为空"); } } this.updateById(formDef,true);