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;
|
}
|
}
|