| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559 |
- 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<String> symbol = new ArrayList() {{
- add(AuthorizeConditionEnum.USER.getCondition());
- add(AuthorizeConditionEnum.ORGANIZE.getCondition());
- }};
- /**
- * @param entity
- * @return
- * @Description 删除F_, 且全转小写
- */
- public static VisualdevEntity delfKey(VisualdevEntity entity) {
- List<TableModel> list = JsonUtil.getJsonToList(entity.getVisualTables(), TableModel.class);
- for (TableModel tableModel : list) {
- List<TableFields> 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<String, Object> columnDataMap = JsonUtil.stringToMap(entity.getColumnData());
- if (columnDataMap != null) {
- for (Map.Entry<String, Object> entry : columnDataMap.entrySet()) {
- if ("searchList".equals(entry.getKey())) {
- List<FieLdsModel> 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<ColumnListField> 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<String, Object> formData = JsonUtil.stringToMap(entity.getFormData());
- List<FieLdsModel> 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<FieLdsModel> 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> formAllModel = new ArrayList<>();
- RecursionForm recursionForm = new RecursionForm();
- List<TableModel> 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<FormAllModel> mast = formAllModel.stream().filter(t -> FormEnum.mast.getMessage().equals(t.getJnpfKey())).collect(Collectors.toList());
- //列表子表数据
- List<FormAllModel> mastTable = formAllModel.stream().filter(t -> FormEnum.mastTable.getMessage().equals(t.getJnpfKey())).collect(Collectors.toList());
- //子表
- List<FormAllModel> childTable = formAllModel.stream().filter(t -> FormEnum.table.getMessage().equals(t.getJnpfKey())).collect(Collectors.toList());
- String mainTableName = tableModel.getTable();
- List<AuthFlieds> 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<FormColumnModel> 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<Integer> 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<Integer> 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<AuthFlieds> allColumnDataList, Boolean isPC, String mainTable) {
- PerColModels perColModel = new PerColModels();
- List<ColumnListField> 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<AuthFlieds> 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<AuthFlieds> 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<ColumnListField> 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<ModuleDataAuthorizeSchemeEntity> 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<AuthFlieds> getAuthFiledList(Boolean isPC, ColumnDataModel columnDataModel) {
- List<AuthFlieds> 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<BtnData> CustomBtnList = JsonUtil.getJsonToList(columnDataModel.getCustomBtnsList(), BtnData.class);
- if (Objects.nonNull(CustomBtnList)) {
- List<AuthFlieds> 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<BtnData> btnDataList = new ArrayList<>();
- List<BtnData> BtnList = JsonUtil.getJsonToList(columnDataModel.getBtnsList(), BtnData.class);
- List<BtnData> 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<TableModel> 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<DraftJsonModel> formFields = StringUtil.isNotEmpty(visualdevEntity.getFormData()) ?
- JsonUtil.getJsonToList(visualdevEntity.getFormData(), DraftJsonModel.class) : Collections.EMPTY_LIST;
- List<DraftJsonModel> columnFields = StringUtil.isNotEmpty(visualdevEntity.getColumnData()) ?
- JsonUtil.getJsonToList(visualdevEntity.getColumnData(), DraftJsonModel.class) : Collections.EMPTY_LIST;
- List<DraftJsonModel> appColumnFields = StringUtil.isNotEmpty(visualdevEntity.getAppColumnData()) ?
- JsonUtil.getJsonToList(visualdevEntity.getAppColumnData(), DraftJsonModel.class) : Collections.EMPTY_LIST;
- List<AuthFlieds> buttonFields = StringUtil.isNotEmpty(visualdevEntity.getButtonData()) ?
- JsonUtil.getJsonToList(visualdevEntity.getButtonData(), AuthFlieds.class) : Collections.EMPTY_LIST;
- buttonFields.stream().forEach(t -> t.setStatus(true));
- List<AuthFlieds> appButtonFields = StringUtil.isNotEmpty(visualdevEntity.getAppButtonData()) ?
- JsonUtil.getJsonToList(visualdevEntity.getAppButtonData(), AuthFlieds.class) : Collections.EMPTY_LIST;
- appButtonFields.stream().forEach(t -> t.setStatus(true));
- //表单权限
- List<AuthFlieds> 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<AuthFlieds> listAuthList = getColumnList(columnFields);
- List<AuthFlieds> 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<AuthFlieds> getColumnList(List<DraftJsonModel> columnFields) {
- List<AuthFlieds> 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;
- }
- }
|