shicf
2024-09-25 ea9ab51324547ce3264e73931018a3e477c7a7b6
表单获取
已修改5个文件
207 ■■■■ 文件已修改
src/main/java/com/product/mobile/core/controller/FaceMobileController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/mobile/core/entity/FaceFieldEntity.java 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/mobile/core/service/FaceMobileService.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/mobile/core/service/SysMessageService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/mobile/core/service/SystemTableMetaService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/mobile/core/controller/FaceMobileController.java
@@ -1,5 +1,6 @@
package com.product.mobile.core.controller;
import com.product.common.lang.StringUtils;
import com.product.core.entity.FieldSetEntity;
import com.product.core.exception.BaseException;
import com.product.mobile.core.config.MobileCoreCode;
@@ -57,7 +58,16 @@
        try {
            //不验证传入的表名 可能会是 product_sys_flow_task/product_sys_flow_detail
            FieldSetEntity fse = BaseUtil.getFieldSetEntity(request);
            return BaseUtil.success(faceMobileService.getFlowFaceField(fse));
//            //通过审批任务的uuid来查表单信息
//            if (StringUtils.isEmpty(fse.getString("table_uuid")) && StringUtils.isEmpty(fse.getString("table_name"))) {
//                return BaseUtil.success(faceMobileService.getFlowFaceField(fse));
//            }else {
//                //通过业务表信息查表单信息
//                return BaseUtil.success(faceMobileService.getFaceFieldByTable(fse));
//            }
            return BaseUtil.success(faceMobileService.getFaceConfig(fse));
        } catch (BaseException e) {
            e.printStackTrace();
            return error(e);
src/main/java/com/product/mobile/core/entity/FaceFieldEntity.java
@@ -1,7 +1,6 @@
package com.product.mobile.core.entity;
import java.util.List;
import java.util.Map;
/**
 * @Author cheng
@@ -9,8 +8,10 @@
 * @Desc
 */
public class FaceFieldEntity {
    private String table;
    private String fieldName;
    private String field;
    /**
     * 是否必填
@@ -19,12 +20,12 @@
    /**
     * 显示名称
     */
    private String label;
    private String name;
    /**
     * 参照名称
     */
    private String advanceName;
    private String prompt;
    /**
     * 组件类型
@@ -86,13 +87,35 @@
    private List<FaceFieldEntity> subField;
    private String type;
    private String length;
    public String getFieldName() {
        return fieldName;
    public String getType() {
        return type;
    }
    public String getLength() {
        return length;
    }
    public void setFieldName(String fieldName) {
        this.fieldName = fieldName;
    public void setLength(String length) {
        this.length = length;
    }
    public void setType(String fieldType) {
        this.type = fieldType;
    }
    public String getField() {
        return field;
    }
    public void setField(String fieldName) {
        this.field = fieldName;
    }
    public String getRequired() {
@@ -103,20 +126,20 @@
        this.required = required;
    }
    public String getLabel() {
        return label;
    public String getName() {
        return name;
    }
    public void setLabel(String label) {
        this.label = label;
    public void setName(String label) {
        this.name = label;
    }
    public String getAdvanceName() {
        return advanceName;
    public String getPrompt() {
        return prompt;
    }
    public void setAdvanceName(String advanceName) {
        this.advanceName = advanceName;
    public void setPrompt(String advanceName) {
        this.prompt = advanceName;
    }
    public String getComponentType() {
@@ -230,4 +253,11 @@
    public void setSubField(List<FaceFieldEntity> subField) {
        this.subField = subField;
    }
        public String getTable() {
        return table;
    }
    public void setTable(String tableUuid) {
        this.table = tableUuid;
    }
}
src/main/java/com/product/mobile/core/service/FaceMobileService.java
@@ -34,7 +34,129 @@
    @Resource
    FlowDetailService flowDetailService;
    ///获取表单总入口
    /**
     *
     * @param fse传入表名,或 表UUID
     * @return
     */
    public List<FaceFieldEntity> getFaceConfig(FieldSetEntity fse) {
        String tableUuid=fse.getString("table_uuid");
        if (tableUuid==null && StringUtils.isNotEmpty(fse.getString("uuid"))
                && StringUtils.isEmpty(fse.getString("table_name"))) {
            //通过业务表信息查表单信息
            FieldSetEntity detailFse = getBaseDao().getFieldSetEntity(CmnConst.TABLE_FLOW_DETAIL, fse.getString(CmnConst.FIELD_UUID), false);
            if(detailFse!=null) {
                //获取表名
                fse.setValue("table_name", detailFse.getString("table_name"));
            }
        }
        //通过审批任务的uuid来查表单信息
        if (tableUuid==null && StringUtils.isNotEmpty(fse.getString("table_name"))) {
            FieldSetEntity tableInfo = BaseUtil.getSingleInfoByCache("所有表信息", new String[]{fse.getString("table_name")});
            if (!FieldSetEntity.isEmpty(tableInfo)) {
                tableUuid = tableInfo.getString("uuid");
                fse.setValue("table_uuid", tableUuid);
            }
        }
        if(tableUuid!=null) {
            FieldSetEntity tableInfo = BaseUtil.getSingleInfoByCache("所有表信息(uuid)", new String[]{tableUuid});
            if (!FieldSetEntity.isEmpty(tableInfo)) {
                //获取表名
                fse.setValue("table_name", tableInfo.getString("table_name"));
            }
        }
        List<FaceFieldEntity> ls=getFaceFieldByTable(fse);
        addproperty(tableUuid,fse.getString("table_name"),ls);
        //所有表单uuid自动添加,并为hidden
        return ls;
    }
    //递归把主表和子表的字段属性添加进去,如果没有配表单,则取表数据结构进行展示
    /**
     *
     * @param ls查出来的表单信息
     * @param tables 记录的所有表,对应的表单信息
     */
    private void  addproperty(String table_uuid,String table_name,List<FaceFieldEntity> ls) {
        if(ls==null) {
            ls=new ArrayList<FaceFieldEntity>();
        }
        if(ls.size()>0) {
            for(int i=0;i<ls.size();i++) {
                String subTableName=ls.get(i).getSubTableName();///可能是子表
                if(StringUtils.isEmpty(subTableName)) {///主表字段
                    DataTableEntity dt = DataPoolCacheImpl.getInstance().getCacheData("表字段信息"
                            ,new String[] {table_uuid,ls.get(i).getField()});
                    if(!DataTableEntity.isEmpty(dt)) {
//                        if(StringUtils.isEmpty(ls.get(i).getType())) {
//                            ls.get(i).setType(dt.getFieldSetEntity(0).getString("field_type"));
//                        }
                        if(StringUtils.isEmpty(ls.get(i).getPrompt()) &&
                                !StringUtils.isEmpty(dt.getFieldSetEntity(0).getString("field_reference"))) {
                            ls.get(i).setPrompt(dt.getFieldSetEntity(0).getString("field_reference"));
                        }
                        if(StringUtils.isEmpty(ls.get(i).getRequired()) &&
                                !StringUtils.isEmpty(dt.getFieldSetEntity(0).getString("is_required"))) {
                            ls.get(i).setRequired(dt.getFieldSetEntity(0).getString("is_required"));
                        }
                        if(StringUtils.isEmpty(ls.get(i).getName()) &&
                                !StringUtils.isEmpty(dt.getFieldSetEntity(0).getString("field_show_name"))) {
                            ls.get(i).setName(dt.getFieldSetEntity(0).getString("field_show_name"));
                        }
                    }
                    ls.get(i).setTable(table_name);
                }else {
                    //============把子表字段也处理一下
                    //子表
                    FieldSetEntity tableInfo = BaseUtil.getSingleInfoByCache("所有表信息", new String[]{subTableName});
                    if (!FieldSetEntity.isEmpty(tableInfo)) {
                        addproperty(tableInfo.getString("uuid"),tableInfo.getString("table_name"),ls.get(i).getSubField());
                    }
                }
            }
            DataTableEntity dt = DataPoolCacheImpl.getInstance().getCacheData("表字段信息",new String[] {table_uuid,"uuid"});
            if(!DataTableEntity.isEmpty(dt)) {
                FaceFieldEntity uuid=new FaceFieldEntity();
                uuid.setField("uuid");
                uuid.setType("String");
                uuid.setTable(table_name);
                uuid.setDisabled("0");
                ls.add(uuid);
            }
        }else {///以表单设计为准,如果没有配置表单,则以数据表为准,全部保留
            DataTableEntity dte = DataPoolCacheImpl.getInstance().getCacheData("所有字段信息并按表分组",new String[] {table_uuid});
            for(int j=0;j<dte.getRows();j++) {
                FaceFieldEntity uuid=new FaceFieldEntity();
                FieldSetEntity f=dte.getFieldSetEntity(j);
                if("pk".equals(f.getString("field_type"))
                        ||"updated_by".equals(f.getString("field_name"))
                        ||"uuid".equals(f.getString("field_name"))
                        ||"updated_utc_datetime".equals(f.getString("field_name"))) {
                    continue;
                }
                uuid.setPrompt(f.getString("field_reference"));
                uuid.setName(f.getString("field_show_name"));
                uuid.setField(f.getString("field_name"));
                uuid.setType(f.getString("field_type"));
                uuid.setTable(table_name);
                ls.add(uuid);
            }
        }
    }
    public List<FaceFieldEntity> getFaceFieldByTable(FieldSetEntity fse) {
        String tableUuid = fse.getString("table_uuid");
        String tableName = fse.getString("table_name");
@@ -48,6 +170,7 @@
            throw new BaseException(MobileCoreCode.SYSTEM_FORM_COUNT);
        }
        FieldSetEntity faceFse = getBaseDao().getFieldSetByFilter("product_sys_face", "table_uuid=?", new Object[]{tableUuid}, true);
        faceFse.setTableName(tableName);
        return getFaceField(faceFse);
    }
@@ -244,7 +367,7 @@
                }
                if ("__vModel__".equals(setEntity.getString("property_name"))) {
                    result.add(faceFieldEntity);
                    propertyName = "fieldName";
                    propertyName = "field";
                } else if ("defaultNow".equals(propertyName)) {
                    propertyName = "defaultValue";
                } else if ("__config__".equals(propertyName)) {
@@ -266,7 +389,7 @@
                }
            }
            if (StringUtils.isEmpty(faceFieldEntity.getFieldName())) {
            if (StringUtils.isEmpty(faceFieldEntity.getField())) {
                return;
            }
            if (parentGroup == other) {
src/main/java/com/product/mobile/core/service/SysMessageService.java
@@ -82,7 +82,7 @@
            ps.add(type);
        }
        StringBuilder sql = new StringBuilder();
        sql.append("\nselect  SUBSTRING(message_type,1,1)  message_type, count(*) num from product_db_lift.product_sys_message m inner join product_db_lift.product_sys_message_user u on u.message_uuid=m.uuid  \r\n"
        sql.append("\nselect  SUBSTRING(message_type,1,1)  message_type, count(*) num from product_sys_message m inner join product_sys_message_user u on u.message_uuid=m.uuid  \r\n"
                + "and u.user_id=? and u.read_type=?").append(f).append(" group by  SUBSTRING(message_type,1,1)  ");
        DataTableEntity dte = baseDao.listTable(sql.toString(),ps.toArray(),Integer.MAX_VALUE, 1);
        return dte;
src/main/java/com/product/mobile/core/service/SystemTableMetaService.java
@@ -36,7 +36,7 @@
   
        Map<Object,Object> vs=fse.getValues();
        StringBuilder b=new StringBuilder();
        b.append("select t.table_name,f.field_name,f.field_length,f.field_show_name,f.field_type,f.field_reference,f.is_more_value,f.is_required from product_sys_datamodel_field f left join product_sys_datamodel_table t on f.table_uuid=t.uuid");
        b.append("select t.table_name,f.field_name,f.field_length,f.field_show_name,f.field_type,f.field_reference,f.is_required from product_sys_datamodel_field f left join product_sys_datamodel_table t on f.table_uuid=t.uuid");
        List<Object> ps=new ArrayList<>();
        if(vs!=null && vs.size()>0) {
            b.append(" where ");