package jnpf.base.util; import cn.hutool.core.collection.CollectionUtil; import jnpf.base.entity.ModuleDataAuthorizeSchemeEntity; import jnpf.base.entity.VisualdevEntity; import jnpf.base.model.ColumnDataModel; import jnpf.base.model.Template6.BtnData; import jnpf.base.model.Template6.ColumnListField; import jnpf.base.model.VisualDevPubModel; import jnpf.base.model.VisualWebTypeEnum; import jnpf.base.model.form.DraftJsonModel; import jnpf.base.model.online.AuthFlieds; import jnpf.base.model.online.PerColModels; import jnpf.base.model.online.VisualMenuModel; import jnpf.base.util.common.DataControlUtils; import jnpf.constant.JnpfConst; import jnpf.constant.MsgCode; import jnpf.constant.PermissionConst; import jnpf.emnus.SearchMethodEnum; import jnpf.model.OnlineDevData; import jnpf.model.visualJson.*; import jnpf.model.visualJson.analysis.FormAllModel; import jnpf.model.visualJson.analysis.FormColumnModel; import jnpf.model.visualJson.analysis.FormEnum; import jnpf.model.visualJson.analysis.RecursionForm; import jnpf.model.visualJson.config.ConfigModel; import jnpf.permission.model.authCondition.AuthConditionModel; import jnpf.permission.model.authCondition.AuthGroup; import jnpf.permission.model.authCondition.AuthItem; import jnpf.permission.model.authCondition.AuthItemConfig; import jnpf.permission.model.authorize.AuthorizeConditionEnum; import jnpf.util.JsonUtil; import jnpf.util.RandomUtil; import jnpf.util.StringUtil; import jnpf.util.visiual.JnpfKeyConsts; import java.util.*; import java.util.stream.Collectors; /** * @author JNPF开发平台组 * @version V3.1.0 * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com) * @date 2021/3/16 */ public class VisualUtil { public static List symbol = new ArrayList() {{ add(AuthorizeConditionEnum.USER.getCondition()); add(AuthorizeConditionEnum.ORGANIZE.getCondition()); }}; /** * @param entity * @return * @Description 删除F_, 且全转小写 */ public static VisualdevEntity delfKey(VisualdevEntity entity) { List list = JsonUtil.getJsonToList(entity.getVisualTables(), TableModel.class); for (TableModel tableModel : list) { List fields = tableModel.getFields(); if (StringUtil.isNotEmpty(tableModel.getTableField()) && "f_".equalsIgnoreCase(tableModel.getTableField().substring(0, 2))) { tableModel.setTableField(tableModel.getTableField().substring(2).toLowerCase()); } if (StringUtil.isNotEmpty(tableModel.getRelationField()) && "f_".equalsIgnoreCase(tableModel.getRelationField().substring(0, 2))) { tableModel.setRelationField(tableModel.getRelationField().substring(2).toLowerCase()); } for (TableFields tableFields : fields) { String feild = tableFields.getField().toLowerCase(); if ("f_".equals(feild.substring(0, 2))) { tableFields.setField(feild.substring(2).toLowerCase()); } else { tableFields.setField(feild.toLowerCase()); } tableModel.setFields(fields); } } entity.setVisualTables(JsonUtil.getObjectToString(list)); //取出列表数据中的查询列表和数据列表 Map columnDataMap = JsonUtil.stringToMap(entity.getColumnData()); if (columnDataMap != null) { for (Map.Entry entry : columnDataMap.entrySet()) { if ("searchList".equals(entry.getKey())) { List fieLdsModelList = JsonUtil.getJsonToList(entry.getValue(), FieLdsModel.class); for (FieLdsModel fieLdsModel : fieLdsModelList) { String vModel = fieLdsModel.getVModel().toLowerCase(); String modelStr = fieLdsModel.getVModel(); //去除F_ if (!StringUtil.isEmpty(vModel) && "f_".equals(vModel.substring(0, 2))) { fieLdsModel.setVModel(modelStr.substring(2).toLowerCase()); } else if (!StringUtil.isEmpty(vModel)) { fieLdsModel.setVModel(modelStr.toLowerCase()); } } entry.setValue(fieLdsModelList); } if ("columnList".equals(entry.getKey())) { List columnListFields = JsonUtil.getJsonToList(entry.getValue(), ColumnListField.class); for (ColumnListField columnListField : columnListFields) { String prop = columnListField.getProp().toLowerCase(); String modelStr = columnListField.getProp(); //去除F_ if (!StringUtil.isEmpty(prop) && "f_".equals(prop.substring(0, 2))) { columnListField.setProp(modelStr.substring(2).toLowerCase()); } else if (!StringUtil.isEmpty(prop)) { columnListField.setProp(modelStr.toLowerCase()); } } entry.setValue(columnListFields); } } } entity.setColumnData(JsonUtil.getObjectToString(columnDataMap)); Map formData = JsonUtil.stringToMap(entity.getFormData()); List modelList = JsonUtil.getJsonToList(formData.get("fields").toString(), FieLdsModel.class); for (FieLdsModel fieLdsModel : modelList) { //去除F_ if (!StringUtil.isEmpty(fieLdsModel.getVModel())) { if ("f_".equals(fieLdsModel.getVModel().substring(0, 2).toLowerCase())) { String modelStr = fieLdsModel.getVModel(); fieLdsModel.setVModel(modelStr.substring(2).toLowerCase()); } else { String modelStr = fieLdsModel.getVModel(); fieLdsModel.setVModel(modelStr.toLowerCase()); } } ConfigModel configModel = fieLdsModel.getConfig(); //子表 if ("table".equals(configModel.getJnpfKey())) { List childlist = JsonUtil.getJsonToList(configModel.getChildren(), FieLdsModel.class); for (FieLdsModel childmodel : childlist) { //前台界面的属性去掉前2个 if (StringUtil.isNotEmpty(childmodel.getVModel())) { if ("f_".equals(childmodel.getVModel().substring(0, 2).toLowerCase())) { String vmodel = childmodel.getVModel().substring(2).toLowerCase(); childmodel.setVModel(vmodel); } else { String vmodel = childmodel.getVModel().toLowerCase(); childmodel.setVModel(vmodel); } } } fieLdsModel.getConfig().setChildren(childlist); } } formData.put("fields", JsonUtil.getObjectToString(modelList)); entity.setFormData(JsonUtil.getObjectToString(formData)); return entity; } public static VisualMenuModel getVisual(VisualdevEntity visualdevEntity, VisualDevPubModel visualDevPubModel) { VisualMenuModel visualMenuModel = new VisualMenuModel(); visualMenuModel.setFullName(visualdevEntity.getFullName()); visualMenuModel.setEnCode(visualdevEntity.getEnCode()); if (!VisualWebTypeEnum.DATA_VIEW.getType().equals(visualdevEntity.getWebType())) {//数据视图不解析formdata FormDataModel formDataModel = JsonUtil.getJsonToBean(visualdevEntity.getFormData(), FormDataModel.class); //递归封装表单数据 List formAllModel = new ArrayList<>(); RecursionForm recursionForm = new RecursionForm(); List tableModels = JsonUtil.getJsonToList(visualdevEntity.getVisualTables(), TableModel.class); TableModel tableModel = tableModels.stream().filter(t -> t.getTypeId().equals("1")).findFirst().orElse(null); recursionForm.setTableModelList(tableModels); recursionForm.setList(JsonUtil.getJsonToList(formDataModel.getFields(), FieLdsModel.class)); FormCloumnUtil.recursionForm(recursionForm, formAllModel); //主表数据 List mast = formAllModel.stream().filter(t -> FormEnum.mast.getMessage().equals(t.getJnpfKey())).collect(Collectors.toList()); //列表子表数据 List mastTable = formAllModel.stream().filter(t -> FormEnum.mastTable.getMessage().equals(t.getJnpfKey())).collect(Collectors.toList()); //子表 List childTable = formAllModel.stream().filter(t -> FormEnum.table.getMessage().equals(t.getJnpfKey())).collect(Collectors.toList()); String mainTableName = tableModel.getTable(); List allColumnDataList = new ArrayList<>(); mast.stream().forEach(formModel -> { String vModel = formModel.getFormColumnModel().getFieLdsModel().getVModel(); String tableName = formModel.getFormColumnModel().getFieLdsModel().getConfig().getTableName(); if (StringUtil.isNotEmpty(vModel)) { String label = formModel.getFormColumnModel().getFieLdsModel().getConfig().getLabel(); AuthFlieds authFlieds = AuthFlieds.builder().enCode(vModel).fullName(label).status(false).rule(0).bindTableName(tableName) .jnpfKey(formModel.getFormColumnModel().getFieLdsModel().getConfig().getJnpfKey()).build(); allColumnDataList.add(authFlieds); } }); mastTable.stream().forEach(formModel -> { String vModel = formModel.getFormMastTableModel().getMastTable().getFieLdsModel().getVModel(); String tableName = formModel.getFormMastTableModel().getMastTable().getFieLdsModel().getConfig().getTableName(); if (StringUtil.isNotEmpty(vModel)) { String label = formModel.getFormMastTableModel().getMastTable().getFieLdsModel().getConfig().getLabel(); AuthFlieds authFlieds = AuthFlieds.builder().enCode(vModel).fullName(label).status(false).rule(1).bindTableName(tableName) .jnpfKey(formModel.getFormMastTableModel().getMastTable().getFieLdsModel().getConfig().getJnpfKey()).build(); allColumnDataList.add(authFlieds); } }); childTable.stream().forEach(formModel -> { String vModel = formModel.getChildList().getTableModel(); String tableName = formModel.getChildList().getTableName(); String label = formModel.getChildList().getLabel(); if (StringUtil.isNotEmpty(vModel)) { AuthFlieds authFlieds = AuthFlieds.builder().enCode(vModel).fullName(label).status(false).rule(0).jnpfKey(formModel.getJnpfKey()).bindTableName(tableName).build(); allColumnDataList.add(authFlieds); } List childList = formModel.getChildList().getChildList(); for (FormColumnModel columnModel : childList) { String childlabel = columnModel.getFieLdsModel().getConfig().getLabel(); String childvModel = columnModel.getFieLdsModel().getVModel(); if (StringUtil.isNotEmpty(childvModel)) { AuthFlieds authFlieds = AuthFlieds.builder().enCode(vModel + "-" + childvModel).fullName(label + "-" + childlabel).status(false).bindTableName(tableName).rule(2).childTableKey(vModel) .jnpfKey(columnModel.getFieLdsModel().getConfig().getJnpfKey()).build(); allColumnDataList.add(authFlieds); } } }); //分配对应权限 if (1 == visualDevPubModel.getPc()) { ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(visualdevEntity.getColumnData(), ColumnDataModel.class); List pcAuth = new ArrayList<>(); pcAuth.add(columnDataModel != null && columnDataModel.getUseBtnPermission() ? 1 : 0); pcAuth.add(columnDataModel != null && columnDataModel.getUseColumnPermission() ? 1 : 0); pcAuth.add(columnDataModel != null && columnDataModel.getUseFormPermission() ? 1 : 0); pcAuth.add(columnDataModel != null && columnDataModel.getUseDataPermission() ? 1 : 0); visualMenuModel.setPcAuth(pcAuth); visualMenuModel.setPcPerCols(new PerColModels()); if (Objects.nonNull(columnDataModel)) { visualMenuModel.setPcPerCols(fillPermission(columnDataModel, allColumnDataList, true, mainTableName)); } } if (1 == visualDevPubModel.getApp()) { ColumnDataModel appColumnDataModel = JsonUtil.getJsonToBean(visualdevEntity.getAppColumnData(), ColumnDataModel.class); List appAuth = new ArrayList<>(); appAuth.add(appColumnDataModel != null && appColumnDataModel.getUseBtnPermission() ? 1 : 0); appAuth.add(appColumnDataModel != null && appColumnDataModel.getUseColumnPermission() ? 1 : 0); appAuth.add(appColumnDataModel != null && appColumnDataModel.getUseFormPermission() ? 1 : 0); appAuth.add(appColumnDataModel != null && appColumnDataModel.getUseDataPermission() ? 1 : 0); visualMenuModel.setAppAuth(appAuth); visualMenuModel.setAppPerCols(new PerColModels()); if (Objects.nonNull(appColumnDataModel)) { visualMenuModel.setAppPerCols(fillPermission(appColumnDataModel, allColumnDataList, false, mainTableName)); } } } visualMenuModel.setFullName(visualdevEntity.getFullName()); visualMenuModel.setEnCode(visualdevEntity.getEnCode()); visualMenuModel.setId(visualdevEntity.getId()); return visualMenuModel; } /** * 填充权限字段 * * @param columnDataModel * @param allColumnDataList * @param isPC * @return */ private static PerColModels fillPermission(ColumnDataModel columnDataModel, List allColumnDataList, Boolean isPC, String mainTable) { PerColModels perColModel = new PerColModels(); List columnListFields = JsonUtil.getJsonToList(columnDataModel.getDefaultColumnList(), ColumnListField.class); //副表正则 String reg = "^[jnpf_]\\S*_jnpf\\S*"; //按钮 if (columnDataModel != null && columnDataModel.getUseBtnPermission()) { perColModel.setButtonPermission(getAuthFiledList(isPC, columnDataModel)); } //列表 if (columnDataModel.getUseColumnPermission() && columnListFields != null) { List colAuthFileds = columnListFields.stream().map(col -> { boolean matches = col.getProp().toLowerCase().matches(reg); String childTableKey = ""; int rule = 0; String tableName; if (col.getConfig() == null) { tableName = mainTable; } else { tableName = col.getConfig().getRelationTable() != null ? col.getConfig().getRelationTable() : StringUtil.isNotEmpty(col.getConfig().getTableName()) ? col.getConfig().getTableName() : mainTable; } if (matches) { rule = 1; } else { rule = col.getProp().toLowerCase().contains(JnpfKeyConsts.CHILD_TABLE_PREFIX) ? 2 : 0; childTableKey = col.getProp().toLowerCase().contains(JnpfKeyConsts.CHILD_TABLE_PREFIX) ? col.getProp().substring(0, col.getProp().indexOf("-")) : null; } return AuthFlieds.builder().enCode(col.getProp()).fullName(col.getLabel()).status(col.getChecked()).rule(rule).bindTableName(tableName).childTableKey(childTableKey).build(); }).collect(Collectors.toList()); perColModel.setListPermission(colAuthFileds); } //表单 if (columnDataModel.getUseFormPermission()) { List formAuthList = allColumnDataList.stream().map(colFlied -> { return AuthFlieds.builder().enCode(colFlied.getEnCode()).fullName(colFlied.getFullName()).status(true).rule(colFlied.getRule()).childTableKey(colFlied.getChildTableKey()) .bindTableName(colFlied.getBindTableName()).build(); }).collect(Collectors.toList()); perColModel.setFormPermission(formAuthList); } //数据权限 if (columnDataModel.getUseDataPermission() && columnListFields != null) { List mainColFieldList = columnListFields.stream() .filter(col -> !col.getProp().toLowerCase().matches(reg) && !col.getProp().toLowerCase().contains(JnpfKeyConsts.CHILD_TABLE_PREFIX)) .filter(DataControlUtils.distinctByKey(data -> data.getJnpfKey())).collect(Collectors.toList()); //数据权限方案 List schemeEntityList = new ArrayList<>(); for (ColumnListField field : mainColFieldList) { if (JnpfKeyConsts.CREATEUSER.equals(field.getJnpfKey())) { schemeEntityList.add(getSchemeEntity(field, SearchMethodEnum.Equal, AuthorizeConditionEnum.USER)); schemeEntityList.add(getSchemeEntity(field, SearchMethodEnum.Included, AuthorizeConditionEnum.USERANDUNDER)); } else if (JnpfKeyConsts.CURRORGANIZE.equals(field.getJnpfKey())) { schemeEntityList.add(getSchemeEntity(field, SearchMethodEnum.Included, AuthorizeConditionEnum.ORGANIZE)); schemeEntityList.add(getSchemeEntity(field, SearchMethodEnum.Included, AuthorizeConditionEnum.ORGANDSUB)); } else if (JnpfKeyConsts.CURRPOSITION.equals(field.getJnpfKey())) { schemeEntityList.add(getSchemeEntity(field, SearchMethodEnum.Included, AuthorizeConditionEnum.POSITIONID)); schemeEntityList.add(getSchemeEntity(field, SearchMethodEnum.Included, AuthorizeConditionEnum.POSITIONANDSUB)); } } perColModel.setDataPermissionScheme(schemeEntityList); } return perColModel; } /** * 数据权限方案赋值 * * @param field * @param thisSymbol * @param thisCondition * @return */ private static ModuleDataAuthorizeSchemeEntity getSchemeEntity(ColumnListField field, SearchMethodEnum thisSymbol, AuthorizeConditionEnum thisCondition) { ConfigModel config = field.getConfig(); String tableName = StringUtil.isNotEmpty(config.getRelationTable()) ? config.getRelationTable() : config.getTableName(); AuthConditionModel conditionModel = new AuthConditionModel(); AuthGroup group = new AuthGroup(); AuthItem authItem = new AuthItem(); authItem.setId(field.getId()); authItem.setField(field.getId()); authItem.setFieldId(field.getId()); authItem.setFieldName(field.getLabel()); authItem.setFullName(field.getLabel()); authItem.setSymbol(thisSymbol.getSymbol()); authItem.setSymbolName(thisSymbol.getMessage()); authItem.setJnpfKey(field.getJnpfKey()); //4-系统参数 authItem.setFieldValueType(4); authItem.setFieldValue(thisCondition.getCondition()); authItem.setCellKey(RandomUtil.uuId()); authItem.setTableName(tableName); authItem.setRequired(false); authItem.setMultiple(false); authItem.setDisabled(false); authItem.set__config__(new AuthItemConfig(field.getJnpfKey(), field.getLabel())); group.setGroups(new ArrayList() {{ add(authItem); }}); conditionModel.setConditionList(new ArrayList() {{ add(group); }}); String conditionText = field.getLabel() + " " + thisSymbol.getMessage() + thisCondition.getMessage(); ModuleDataAuthorizeSchemeEntity schemeEntity = new ModuleDataAuthorizeSchemeEntity(); schemeEntity.setFullName(thisCondition.getMessage()); schemeEntity.setEnCode(RandomUtil.uuId()); schemeEntity.setConditionJson(JsonUtil.getObjectToString(conditionModel)); schemeEntity.setConditionText(conditionText); schemeEntity.setEnabledMark(1); schemeEntity.setDescription("0_" + field.getId() + "_" + thisSymbol.getSymbol()); schemeEntity.setSortCode(-9527l); return schemeEntity; } /** * 获取系统按钮集合 * * @param isPC 是否pc端 * @return */ private static List getAuthFiledList(Boolean isPC, ColumnDataModel columnDataModel) { List btnList = new ArrayList<>(6); String btnValues = AuthPerConfirm(columnDataModel); btnList.add(AuthFlieds.builder().fullName("新增").enCode(PermissionConst.BTN_ADD).status(false).build()); btnList.add(AuthFlieds.builder().fullName("编辑").enCode(PermissionConst.BTN_EDIT).status(false).build()); btnList.add(AuthFlieds.builder().fullName("删除").enCode(PermissionConst.BTN_REMOVE).status(false).build()); btnList.add(AuthFlieds.builder().fullName("详情").enCode(PermissionConst.BTN_DETAIL).status(false).build()); btnList.add(AuthFlieds.builder().fullName("批量删除").enCode(PermissionConst.BTN_BATCHREMOVE).status(false).build()); //pc端 按钮 if (isPC) { btnList.add(AuthFlieds.builder().fullName("导入").enCode(PermissionConst.BTN_UPLOAD).status(false).build()); btnList.add(AuthFlieds.builder().fullName("导出").enCode(PermissionConst.BTN_DOWNLOAD).status(false).build()); btnList.add(AuthFlieds.builder().fullName("批量打印").enCode(PermissionConst.BTN_BATCHPRINT).status(false).build()); } btnList.stream().filter(btn -> btnValues.contains(btn.getEnCode().replace("btn_", ""))).forEach(btn -> btn.setStatus(true)); //自定义按钮区 List CustomBtnList = JsonUtil.getJsonToList(columnDataModel.getCustomBtnsList(), BtnData.class); if (Objects.nonNull(CustomBtnList)) { List CustomBtnAuth = CustomBtnList.stream().map(cus -> AuthFlieds.builder().fullName(cus.getLabel()).enCode(cus.getValue()).status(true).build()).collect(Collectors.toList()); btnList.addAll(CustomBtnAuth); } return btnList; } private static String AuthPerConfirm(ColumnDataModel columnDataModel) { List btnDataList = new ArrayList<>(); List BtnList = JsonUtil.getJsonToList(columnDataModel.getBtnsList(), BtnData.class); List ColumnBtnList = JsonUtil.getJsonToList(columnDataModel.getColumnBtnsList(), BtnData.class); btnDataList.addAll(BtnList); btnDataList.addAll(ColumnBtnList); String btnValue = btnDataList.stream().filter(t -> t.isShow()).map(btn -> btn.getValue()).collect(Collectors.joining(",")); return btnValue; } /** * 检验是否可发布 * * @param entity * @param Action * @return */ public static String checkPublishVisualModel(VisualdevEntity entity, String Action) { String errorMsg = null; if (OnlineDevData.FORM_TYPE_DEV.equals(entity.getType())) { //数据视图没有formdata if (!VisualWebTypeEnum.DATA_VIEW.getType().equals(entity.getWebType())) { FormDataModel formDataModel = JsonUtil.getJsonToBean(entity.getFormData(), FormDataModel.class); errorMsg = formDataModel == null ? MsgCode.VS401.get() + Action + "!" : null; } if (StringUtil.isNotEmpty(errorMsg)) { return errorMsg; } if (VisualWebTypeEnum.FORM_LIST.getType().equals(entity.getWebType()) || VisualWebTypeEnum.DATA_VIEW.getType().equals(entity.getWebType())) { ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(entity.getColumnData(), ColumnDataModel.class); errorMsg = columnDataModel == null ? MsgCode.VS402.get() + Action + "!" : null; } } return errorMsg; } private static String getSchemeNameByCondition(String condition) { String name = "default"; AuthorizeConditionEnum byMessage = AuthorizeConditionEnum.getByMessage(condition); if (byMessage != null) { name = byMessage.getMessage(); } return name; } /** * 回传表单获取权限信息 * * @param visualdevEntity * @return */ public static VisualMenuModel getVisualHC(VisualdevEntity visualdevEntity) { VisualMenuModel visualMenuModel = new VisualMenuModel(); visualMenuModel.setFullName(visualdevEntity.getFullName()); visualMenuModel.setEnCode(visualdevEntity.getEnCode()); visualMenuModel.setId(visualdevEntity.getId()); List listTable = JsonUtil.getJsonToList(visualdevEntity.getVisualTables(), TableModel.class); String mainTableStr; if (CollectionUtil.isNotEmpty(listTable)) { mainTableStr = listTable.stream().filter(t -> t.getTypeId().equals("1")).findFirst().orElse(null).getTable(); } else { mainTableStr = ""; } List formFields = StringUtil.isNotEmpty(visualdevEntity.getFormData()) ? JsonUtil.getJsonToList(visualdevEntity.getFormData(), DraftJsonModel.class) : Collections.EMPTY_LIST; List columnFields = StringUtil.isNotEmpty(visualdevEntity.getColumnData()) ? JsonUtil.getJsonToList(visualdevEntity.getColumnData(), DraftJsonModel.class) : Collections.EMPTY_LIST; List appColumnFields = StringUtil.isNotEmpty(visualdevEntity.getAppColumnData()) ? JsonUtil.getJsonToList(visualdevEntity.getAppColumnData(), DraftJsonModel.class) : Collections.EMPTY_LIST; List buttonFields = StringUtil.isNotEmpty(visualdevEntity.getButtonData()) ? JsonUtil.getJsonToList(visualdevEntity.getButtonData(), AuthFlieds.class) : Collections.EMPTY_LIST; buttonFields.stream().forEach(t -> t.setStatus(true)); List appButtonFields = StringUtil.isNotEmpty(visualdevEntity.getAppButtonData()) ? JsonUtil.getJsonToList(visualdevEntity.getAppButtonData(), AuthFlieds.class) : Collections.EMPTY_LIST; appButtonFields.stream().forEach(t -> t.setStatus(true)); //表单权限 List formAuthList = formFields.stream().map(colFlied -> { String fieldId = colFlied.getFieldId(); String field = ""; String tableName = colFlied.getTableName(); String childTableKey = null;//子表编码 Integer rule = 0; if (fieldId.matches(JnpfConst.SIDE_REGULAR)) { field = fieldId.split(JnpfConst.SIDE_MARK)[1]; rule = 1; } else if (fieldId.toLowerCase().startsWith(JnpfKeyConsts.CHILD_TABLE_PREFIX)) { String[] split = fieldId.split("-"); field = split.length == 1 ? split[0] : split[1]; childTableKey = split[0]; rule = 2; } else { field = fieldId; tableName = mainTableStr; } return AuthFlieds.builder().enCode(fieldId).fullName(colFlied.getFieldName()).status(true).rule(rule).bindTableName(tableName).childTableKey(childTableKey).build(); }).collect(Collectors.toList()); //列表 List listAuthList = getColumnList(columnFields); List appListAuthList = getColumnList(appColumnFields); PerColModels pcModel = new PerColModels(); pcModel.setFormPermission(formAuthList); pcModel.setListPermission(listAuthList); pcModel.setButtonPermission(buttonFields); visualMenuModel.setPcPerCols(pcModel); PerColModels appModel = new PerColModels(); appModel.setFormPermission(formAuthList); appModel.setButtonPermission(appButtonFields); appModel.setListPermission(appListAuthList); visualMenuModel.setAppPerCols(appModel); return visualMenuModel; } //获取列表字段信息 private static List getColumnList(List columnFields) { List listAuthList = columnFields.stream().map(colFlied -> { String fieldId = colFlied.getFieldId(); String field = ""; String tableName = colFlied.getTableName(); String childTableKey = null;//子表编码 Integer rule = 0; if (fieldId.matches(JnpfConst.SIDE_REGULAR)) { field = fieldId.split(JnpfConst.SIDE_MARK)[1]; rule = 1; } else if (fieldId.toLowerCase().startsWith(JnpfKeyConsts.CHILD_TABLE_PREFIX)) { String[] split = fieldId.split("-"); field = split.length == 1 ? split[0] : split[1]; childTableKey = split[0]; rule = 2; } else { field = fieldId; } return AuthFlieds.builder().enCode(fieldId).fullName(colFlied.getFieldName()).status(true).rule(rule).bindTableName(tableName).childTableKey(childTableKey).build(); }).collect(Collectors.toList()); return listAuthList; } }