| | |
| | | */ |
| | | public class FaceListEntity implements Serializable { |
| | | |
| | | private static final long serialVersionUID = -6777140406080679771L; |
| | | /** |
| | | * 表uuid |
| | | */ |
| | | private String tableUuid; |
| | | /** |
| | | * face_uuid |
| | | */ |
| | | private String uuid; |
| | | /** |
| | | * 表单名 |
| | | */ |
| | | private String faceName; |
| | | /** |
| | | * 功能uuid |
| | | */ |
| | | @Deprecated |
| | | private String functionUuid; |
| | | /** |
| | | * 字段集合 |
| | | */ |
| | | private List<FaceField> faceFields; |
| | | /** |
| | | * 表名 |
| | | */ |
| | | private String tableName; |
| | | private static final long serialVersionUID = -6777140406080679771L; |
| | | /** |
| | | * 表uuid |
| | | */ |
| | | private String tableUuid; |
| | | /** |
| | | * face_uuid |
| | | */ |
| | | private String uuid; |
| | | /** |
| | | * 表单名 |
| | | */ |
| | | private String faceName; |
| | | /** |
| | | * 功能uuid |
| | | */ |
| | | @Deprecated |
| | | private String functionUuid; |
| | | /** |
| | | * 字段集合 |
| | | */ |
| | | private List<FaceField> faceFields; |
| | | /** |
| | | * 表名 |
| | | */ |
| | | private String tableName; |
| | | |
| | | /** |
| | | * 获取表名 |
| | | * |
| | | * @return |
| | | */ |
| | | public String getTableName() { |
| | | if (this.tableName == null && this.tableUuid != null) { |
| | | //从缓存中获取 |
| | | DataTableEntity cacheData = DataPoolCacheImpl.getInstance().getCacheData("所有表信息(uuid)", new String[]{this.tableUuid}); |
| | | if (cacheData != null && cacheData.getRows() > 0) { |
| | | String table_name = cacheData.getString(0, "table_name"); |
| | | this.tableName = table_name; |
| | | } |
| | | } |
| | | return tableName; |
| | | } |
| | | /** |
| | | * 获取表名 |
| | | * |
| | | * @return |
| | | */ |
| | | public String getTableName() { |
| | | if (this.tableName == null && this.tableUuid != null) { |
| | | //从缓存中获取 |
| | | DataTableEntity cacheData = DataPoolCacheImpl.getInstance().getCacheData("所有表信息(uuid)", new String[]{this.tableUuid}); |
| | | if (cacheData != null && cacheData.getRows() > 0) { |
| | | String table_name = cacheData.getString(0, "table_name"); |
| | | this.tableName = table_name; |
| | | } |
| | | } |
| | | return tableName; |
| | | } |
| | | |
| | | /** |
| | | * 条件字段 |
| | | * |
| | | * @param fieldName 字段名称 |
| | | * @param faceUuid 字段uuid |
| | | * @param columnName 列名 |
| | | * @param columnWidth 列宽 |
| | | * @param sequence 排序 |
| | | * @param fieldReference 参照 |
| | | */ |
| | | public void addField(String fieldName, String faceUuid, String columnName, String columnWidth, Integer sequence, String fieldReference) { |
| | | FaceField faceField = new FaceField(); |
| | | faceField.setFieldName(fieldName); |
| | | faceField.setFieldUuid(faceUuid); |
| | | faceField.setColumnName(columnName); |
| | | faceField.setColumnWidth(columnWidth); |
| | | faceField.setSequence(sequence); |
| | | faceField.setFieldReference(fieldReference); |
| | | if (this.faceFields == null) { |
| | | this.faceFields = Lists.newArrayList(); |
| | | } |
| | | this.faceFields.add(faceField); |
| | | } |
| | | /** |
| | | * 条件字段 |
| | | * |
| | | * @param fieldName 字段名称 |
| | | * @param faceUuid 字段uuid |
| | | * @param columnName 列名 |
| | | * @param columnWidth 列宽 |
| | | * @param sequence 排序 |
| | | * @param fieldReference 参照 |
| | | */ |
| | | public void addField(String fieldName, String faceUuid, String columnName, String columnWidth, Integer sequence, String fieldReference) { |
| | | FaceField faceField = new FaceField(); |
| | | faceField.setFieldName(fieldName); |
| | | faceField.setFieldUuid(faceUuid); |
| | | faceField.setColumnName(columnName); |
| | | faceField.setColumnWidth(columnWidth); |
| | | faceField.setSequence(sequence); |
| | | faceField.setFieldReference(fieldReference); |
| | | if (this.faceFields == null) { |
| | | this.faceFields = Lists.newArrayList(); |
| | | } |
| | | this.faceFields.add(faceField); |
| | | } |
| | | |
| | | /** |
| | | * 字段排序方法 |
| | | */ |
| | | public void sortField() { |
| | | if (this.faceFields != null && this.faceFields.size() > 0) { |
| | | this.faceFields.sort((a, b) -> { |
| | | return a.getSequence().compareTo(b.getSequence()); |
| | | }); |
| | | } |
| | | } |
| | | /** |
| | | * 字段排序方法 |
| | | */ |
| | | public void sortField() { |
| | | if (this.faceFields != null && this.faceFields.size() > 0) { |
| | | this.faceFields.sort((a, b) -> { |
| | | return a.getSequence().compareTo(b.getSequence()); |
| | | }); |
| | | } |
| | | } |
| | | |
| | | public String getTableUuid() { |
| | | return tableUuid; |
| | | } |
| | | public String getTableUuid() { |
| | | return tableUuid; |
| | | } |
| | | |
| | | public void setTableUuid(String tableUuid) { |
| | | this.tableUuid = tableUuid; |
| | | } |
| | | public void setTableUuid(String tableUuid) { |
| | | this.tableUuid = tableUuid; |
| | | } |
| | | |
| | | public String getUuid() { |
| | | return uuid; |
| | | } |
| | | public String getUuid() { |
| | | return uuid; |
| | | } |
| | | |
| | | public void setUuid(String uuid) { |
| | | this.uuid = uuid; |
| | | } |
| | | public void setUuid(String uuid) { |
| | | this.uuid = uuid; |
| | | } |
| | | |
| | | public String getFaceName() { |
| | | return faceName; |
| | | } |
| | | public String getFaceName() { |
| | | return faceName; |
| | | } |
| | | |
| | | public void setFaceName(String faceName) { |
| | | this.faceName = faceName; |
| | | } |
| | | public void setFaceName(String faceName) { |
| | | this.faceName = faceName; |
| | | } |
| | | |
| | | public String getFunctionUuid() { |
| | | return functionUuid; |
| | | } |
| | | public String getFunctionUuid() { |
| | | return functionUuid; |
| | | } |
| | | |
| | | public void setFunctionUuid(String functionUuid) { |
| | | this.functionUuid = functionUuid; |
| | | } |
| | | public void setFunctionUuid(String functionUuid) { |
| | | this.functionUuid = functionUuid; |
| | | } |
| | | |
| | | public List<FaceField> getFaceFields() { |
| | | return faceFields; |
| | | } |
| | | public List<FaceField> getFaceFields() { |
| | | return faceFields; |
| | | } |
| | | |
| | | public void setFaceFields(List<FaceField> faceFields) { |
| | | this.faceFields = faceFields; |
| | | } |
| | | public void setFaceFields(List<FaceField> faceFields) { |
| | | this.faceFields = faceFields; |
| | | } |
| | | |
| | | /** |
| | | * 获取参照条件 |
| | | * |
| | | * @param fieldName |
| | | * @param dictName |
| | | * @return |
| | | */ |
| | | private String getDictFilter(String fieldName, String dictName) { |
| | | StringBuilder filter = new StringBuilder(); |
| | | DictService bean = SpringBeanUtil.getBean(DictService.class); |
| | | String manager_type = null; |
| | | SystemUser currentUser = SpringMVCContextHolder.getCurrentUser(); |
| | | if (currentUser != null && currentUser.getCurrentManager() != null) { |
| | | manager_type = currentUser.getCurrentManager().getString(CmnConst.MANAGER_TYPE); |
| | | } else { |
| | | manager_type = null; |
| | | } |
| | | //拼装普通参照查询所需参数 |
| | | FieldSetEntity fse = new FieldSetEntity(); |
| | | fse.setTableName(CmnConst.PRODUCT_SYS_DICT); |
| | | fse.setValue(CmnConst.DICT_NAME, dictName); |
| | | fse.setValue(CoreConst.SYSTEM_CLIENT_TYPE_, currentUser.getClientType()); |
| | | //获取参照集合 |
| | | DataTableEntity dataTableEntity = bean.listDictByname(fse, manager_type); |
| | | if (!BaseUtil.dataTableIsEmpty(dataTableEntity)) { |
| | | //组成条件 |
| | | Object[] uuids = dataTableEntity.getUuids(); |
| | | filter.append(fieldName); |
| | | filter.append(" in (SELECT dict_value FROM product_sys_dict where "); |
| | | filter.append(BaseUtil.buildQuestionMarkFilter("uuid", uuids, true)); |
| | | filter.append(" and dict_label like concat('%','~val~','%') ) "); |
| | | } |
| | | return filter.toString(); |
| | | } |
| | | /** |
| | | * 获取参照条件 |
| | | * |
| | | * @param fieldName |
| | | * @param dictName |
| | | * @return |
| | | */ |
| | | private String getDictFilter(String fieldName, String dictName) { |
| | | StringBuilder filter = new StringBuilder(); |
| | | DictService bean = SpringBeanUtil.getBean(DictService.class); |
| | | String manager_type = null; |
| | | SystemUser currentUser = SpringMVCContextHolder.getCurrentUser(); |
| | | if (currentUser != null && currentUser.getCurrentManager() != null) { |
| | | manager_type = currentUser.getCurrentManager().getString(CmnConst.MANAGER_TYPE); |
| | | } else { |
| | | manager_type = null; |
| | | } |
| | | //拼装普通参照查询所需参数 |
| | | FieldSetEntity fse = new FieldSetEntity(); |
| | | fse.setTableName(CmnConst.PRODUCT_SYS_DICT); |
| | | fse.setValue(CmnConst.DICT_NAME, dictName); |
| | | fse.setValue(CoreConst.SYSTEM_CLIENT_TYPE_, currentUser.getClientType()); |
| | | //获取参照集合 |
| | | DataTableEntity dataTableEntity = bean.listDictByname(fse, manager_type); |
| | | if (!BaseUtil.dataTableIsEmpty(dataTableEntity)) { |
| | | //组成条件 |
| | | Object[] uuids = dataTableEntity.getUuids(); |
| | | filter.append(fieldName); |
| | | filter.append(" in (SELECT dict_value FROM product_sys_dict where "); |
| | | filter.append(BaseUtil.buildQuestionMarkFilter("uuid", uuids, true)); |
| | | filter.append(" and dict_label like concat('%','~val~','%') ) "); |
| | | } |
| | | return filter.toString(); |
| | | } |
| | | |
| | | /** |
| | | * 获取条件 |
| | | * |
| | | * @param tableAlias 表别名 |
| | | * @param aliasField 字段别名 |
| | | * @return |
| | | */ |
| | | public Map<String, List<String>> getFilters(String tableAlias, Map<String, List<String>> aliasField) { |
| | | DataPoolCacheImpl poolCache = null; |
| | | //所有字段集合 |
| | | List<FaceField> faceFields = this.getFaceFields(); |
| | | //普通模糊查询字段集合 |
| | | List<String> fieldNames = Lists.newArrayList(); |
| | | //参照模糊查询条件集合 |
| | | List<String> filters = Lists.newArrayList(); |
| | | //返回的结果集 |
| | | Map<String, List<String>> maps = Maps.newHashMap(); |
| | | maps.put("fields", fieldNames); |
| | | maps.put("filter", filters); |
| | | for (int i = 0; i < faceFields.size(); i++) { |
| | | FaceField faceField = faceFields.get(i); |
| | | if (StringUtils.isEmpty(faceField.getFieldName()) || StringUtils.isEmpty(faceField.getFieldReference())) { |
| | | if (poolCache == null) { |
| | | poolCache = DataPoolCacheImpl.getInstance(); |
| | | } |
| | | DataTableEntity dt = poolCache.getCacheData("表字段信息", new String[]{getTableUuid(), faceField.getFieldName()}); |
| | | if (BaseUtil.dataTableIsEmpty(dt)) { |
| | | } else { |
| | | FieldSetEntity f = dt.getFieldSetEntity(0); |
| | | faceField.setFieldName(f.getString(CmnConst.FIELD_NAME)); |
| | | faceField.setFieldReference(f.getString("field_reference")); |
| | | } |
| | | } |
| | | //字段名称 |
| | | String fieldName = faceField.getFieldName(); |
| | | if (aliasField != null && !StringUtils.isEmpty(fieldName)) { |
| | | List<String> fieldAlias = aliasField.get(getTableName() + "." + fieldName); |
| | | if (fieldAlias != null && fieldAlias.size() > 0) { |
| | | String alias = fieldAlias.get(0); |
| | | if (!StringUtils.isEmpty(alias)) { |
| | | fieldName = alias; |
| | | } |
| | | } |
| | | } |
| | | //参照处理 |
| | | String field_reference = faceField.getFieldReference(); |
| | | if (!StringUtils.isEmpty(field_reference)) { |
| | | if (field_reference.indexOf("《") == 0 && field_reference.indexOf("》") > 0) { |
| | | //普通参照 |
| | | filters.add(getDictFilter(fieldName, field_reference.replace("《", "").replace("》", ""))); |
| | | continue; |
| | | } else { |
| | | if (poolCache == null) { |
| | | poolCache = DataPoolCacheImpl.getInstance(); |
| | | } |
| | | //高级参照 |
| | | DataTableEntity prompt = poolCache.getCacheData("高级参照配置信息", new String[]{field_reference}); |
| | | if (BaseUtil.dataTableIsEmpty(prompt)) { |
| | | continue; |
| | | } |
| | | FieldSetEntity ff = prompt.getFieldSetEntity(0); |
| | | StringBuilder p = new StringBuilder(); |
| | | p.append(fieldName).append(" in ").append(" ( SELECT ").append(ff.getString("value_field")).append(" FROM ").append(ff.getString("source_table")); |
| | | p.append(" WHERE ").append(ff.getString("view_fields")).append(" like concat('%','~val~','%') )"); |
| | | filters.add(p.toString()); |
| | | continue; |
| | | } |
| | | } |
| | | /** |
| | | * 获取条件 |
| | | * |
| | | * @param tableAlias 表别名 |
| | | * @param aliasField 字段别名 |
| | | * @return |
| | | */ |
| | | public Map<String, List<String>> getFilters(String tableAlias, Map<String, List<String>> aliasField) { |
| | | DataPoolCacheImpl poolCache = null; |
| | | //所有字段集合 |
| | | List<FaceField> faceFields = this.getFaceFields(); |
| | | //普通模糊查询字段集合 |
| | | List<String> fieldNames = Lists.newArrayList(); |
| | | //参照模糊查询条件集合 |
| | | List<String> filters = Lists.newArrayList(); |
| | | //返回的结果集 |
| | | Map<String, List<String>> maps = Maps.newHashMap(); |
| | | maps.put("fields", fieldNames); |
| | | maps.put("filter", filters); |
| | | for (int i = 0; i < faceFields.size(); i++) { |
| | | FaceField faceField = faceFields.get(i); |
| | | if (StringUtils.isEmpty(faceField.getFieldName()) || StringUtils.isEmpty(faceField.getFieldReference())) { |
| | | if (poolCache == null) { |
| | | poolCache = DataPoolCacheImpl.getInstance(); |
| | | } |
| | | DataTableEntity dt = poolCache.getCacheData("表字段信息", new String[]{getTableUuid(), faceField.getFieldName()}); |
| | | if (BaseUtil.dataTableIsEmpty(dt)) { |
| | | } else { |
| | | FieldSetEntity f = dt.getFieldSetEntity(0); |
| | | faceField.setFieldName(f.getString(CmnConst.FIELD_NAME)); |
| | | faceField.setFieldReference(f.getString("field_reference")); |
| | | } |
| | | } |
| | | //字段名称 |
| | | String fieldName = faceField.getFieldName(); |
| | | if (aliasField != null && !StringUtils.isEmpty(fieldName)) { |
| | | List<String> fieldAlias = aliasField.get(getTableName() + "." + fieldName); |
| | | if (fieldAlias != null && fieldAlias.size() > 0) { |
| | | String alias = fieldAlias.get(0); |
| | | if (!StringUtils.isEmpty(alias)) { |
| | | fieldName = alias; |
| | | } |
| | | } |
| | | } |
| | | //参照处理 |
| | | String field_reference = faceField.getFieldReference(); |
| | | if (!StringUtils.isEmpty(field_reference)) { |
| | | if (field_reference.indexOf("《") == 0 && field_reference.indexOf("》") > 0) { |
| | | //普通参照 |
| | | filters.add(getDictFilter(getFieldName(tableAlias, fieldName), field_reference.replace("《", "").replace("》", ""))); |
| | | continue; |
| | | } else { |
| | | if (poolCache == null) { |
| | | poolCache = DataPoolCacheImpl.getInstance(); |
| | | } |
| | | //高级参照 |
| | | DataTableEntity prompt = poolCache.getCacheData("高级参照配置信息", new String[]{field_reference}); |
| | | if (BaseUtil.dataTableIsEmpty(prompt)) { |
| | | continue; |
| | | } |
| | | FieldSetEntity ff = prompt.getFieldSetEntity(0); |
| | | StringBuilder p = new StringBuilder(); |
| | | p.append(getFieldName(tableAlias, fieldName)).append("` in ").append(" ( SELECT `").append(ff.getString("value_field")).append("` FROM ").append(ff.getString("source_table")); |
| | | p.append(" WHERE ").append(ff.getString("view_fields")).append(" like concat('%','~val~','%') )"); |
| | | filters.add(p.toString()); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | if (!StringUtils.isEmpty(faceField.getFieldName())) { |
| | | fieldNames.add(StringUtils.isEmpty(tableAlias) ? faceField.getFieldName() : ("`" + tableAlias + "`.`" + fieldName + "`")); |
| | | } |
| | | } |
| | | //获取redis 起始key |
| | | String faceListKey = SystemFaceService.FACE_LIST_KEY; |
| | | //重新放入redis |
| | | RedisUtil.set(faceListKey + getUuid(), this); |
| | | return maps; |
| | | } |
| | | if (!StringUtils.isEmpty(faceField.getFieldName())) { |
| | | fieldNames.add(getFieldName(tableAlias, fieldName)); |
| | | } |
| | | } |
| | | //获取redis 起始key |
| | | String faceListKey = SystemFaceService.FACE_LIST_KEY; |
| | | //重新放入redis |
| | | RedisUtil.set(faceListKey + getUuid(), this); |
| | | return maps; |
| | | } |
| | | |
| | | /** |
| | | * 字段实体类 |
| | | */ |
| | | public class FaceField implements Serializable { |
| | | private String getFieldName(String tableAlias, String fieldName) { |
| | | fieldName = "`" + fieldName + "`"; |
| | | if (!StringUtils.isEmpty(tableAlias)) { |
| | | return "`" + tableAlias + "`." + fieldName; |
| | | } |
| | | return fieldName; |
| | | } |
| | | |
| | | private static final long serialVersionUID = 3154509166818911568L; |
| | | /** |
| | | * 字段名称 |
| | | */ |
| | | private String fieldName; |
| | | /** |
| | | * 字段uuid |
| | | */ |
| | | private String fieldUuid; |
| | | /** |
| | | * 列名 |
| | | */ |
| | | private String columnName; |
| | | /** |
| | | * 列宽 |
| | | */ |
| | | private String columnWidth; |
| | | /** |
| | | * 排序 |
| | | */ |
| | | private Integer sequence; |
| | | /** |
| | | * 字段参照 |
| | | */ |
| | | private String fieldReference; |
| | | /** |
| | | * 字段实体类 |
| | | */ |
| | | public class FaceField implements Serializable { |
| | | |
| | | public String getFieldReference() { |
| | | return fieldReference; |
| | | } |
| | | private static final long serialVersionUID = 3154509166818911568L; |
| | | /** |
| | | * 字段名称 |
| | | */ |
| | | private String fieldName; |
| | | /** |
| | | * 字段uuid |
| | | */ |
| | | private String fieldUuid; |
| | | /** |
| | | * 列名 |
| | | */ |
| | | private String columnName; |
| | | /** |
| | | * 列宽 |
| | | */ |
| | | private String columnWidth; |
| | | /** |
| | | * 排序 |
| | | */ |
| | | private Integer sequence; |
| | | /** |
| | | * 字段参照 |
| | | */ |
| | | private String fieldReference; |
| | | |
| | | public void setFieldReference(String fieldReference) { |
| | | this.fieldReference = fieldReference; |
| | | } |
| | | public String getFieldReference() { |
| | | return fieldReference; |
| | | } |
| | | |
| | | public String getFieldName() { |
| | | return fieldName; |
| | | } |
| | | public void setFieldReference(String fieldReference) { |
| | | this.fieldReference = fieldReference; |
| | | } |
| | | |
| | | public void setFieldName(String fieldName) { |
| | | this.fieldName = fieldName; |
| | | } |
| | | public String getFieldName() { |
| | | return fieldName; |
| | | } |
| | | |
| | | public String getFieldUuid() { |
| | | return fieldUuid; |
| | | } |
| | | public void setFieldName(String fieldName) { |
| | | this.fieldName = fieldName; |
| | | } |
| | | |
| | | public void setFieldUuid(String fieldUuid) { |
| | | this.fieldUuid = fieldUuid; |
| | | } |
| | | public String getFieldUuid() { |
| | | return fieldUuid; |
| | | } |
| | | |
| | | public String getColumnName() { |
| | | return columnName; |
| | | } |
| | | public void setFieldUuid(String fieldUuid) { |
| | | this.fieldUuid = fieldUuid; |
| | | } |
| | | |
| | | public void setColumnName(String columnName) { |
| | | this.columnName = columnName; |
| | | } |
| | | public String getColumnName() { |
| | | return columnName; |
| | | } |
| | | |
| | | public String getColumnWidth() { |
| | | return columnWidth; |
| | | } |
| | | public void setColumnName(String columnName) { |
| | | this.columnName = columnName; |
| | | } |
| | | |
| | | public void setColumnWidth(String columnWidth) { |
| | | this.columnWidth = columnWidth; |
| | | } |
| | | public String getColumnWidth() { |
| | | return columnWidth; |
| | | } |
| | | |
| | | public Integer getSequence() { |
| | | return sequence; |
| | | } |
| | | public void setColumnWidth(String columnWidth) { |
| | | this.columnWidth = columnWidth; |
| | | } |
| | | |
| | | public void setSequence(Integer sequence) { |
| | | this.sequence = sequence; |
| | | } |
| | | public Integer getSequence() { |
| | | return sequence; |
| | | } |
| | | |
| | | } |
| | | public void setSequence(Integer sequence) { |
| | | this.sequence = sequence; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |