Commit 24c03cf1767c62b3aa2bcb3886c79635e45cc51e
1 parent
d2a8f3f2
BPM 模型重构 3:设置流程时,去掉 formId、description 等的传递,专注设计本身
Showing
6 changed files
with
42 additions
and
42 deletions
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/model/vo/BpmModelUpdateReqVO.java
| 1 | package cn.iocoder.yudao.adminserver.modules.bpm.controller.model.vo; | 1 | package cn.iocoder.yudao.adminserver.modules.bpm.controller.model.vo; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.adminserver.modules.bpm.enums.definition.BpmModelFormTypeEnum; | ||
| 3 | import io.swagger.annotations.ApiModel; | 4 | import io.swagger.annotations.ApiModel; |
| 4 | import io.swagger.annotations.ApiModelProperty; | 5 | import io.swagger.annotations.ApiModelProperty; |
| 5 | import lombok.Data; | 6 | import lombok.Data; |
| @@ -10,9 +11,7 @@ import javax.validation.constraints.NotEmpty; | @@ -10,9 +11,7 @@ import javax.validation.constraints.NotEmpty; | ||
| 10 | 11 | ||
| 11 | @ApiModel("流程模型的更新 Request VO") | 12 | @ApiModel("流程模型的更新 Request VO") |
| 12 | @Data | 13 | @Data |
| 13 | -@EqualsAndHashCode(callSuper = true) | ||
| 14 | -@ToString(callSuper = true) | ||
| 15 | -public class BpmModelUpdateReqVO extends BpmModelBaseVO { | 14 | +public class BpmModelUpdateReqVO { |
| 16 | 15 | ||
| 17 | @ApiModelProperty(value = "编号", required = true, example = "1024") | 16 | @ApiModelProperty(value = "编号", required = true, example = "1024") |
| 18 | @NotEmpty(message = "编号不能为空") | 17 | @NotEmpty(message = "编号不能为空") |
| @@ -27,10 +26,18 @@ public class BpmModelUpdateReqVO extends BpmModelBaseVO { | @@ -27,10 +26,18 @@ public class BpmModelUpdateReqVO extends BpmModelBaseVO { | ||
| 27 | @ApiModelProperty(value = "流程分类", notes = "参见 bpm_model_category 数据字典", example = "1") | 26 | @ApiModelProperty(value = "流程分类", notes = "参见 bpm_model_category 数据字典", example = "1") |
| 28 | private String category; | 27 | private String category; |
| 29 | 28 | ||
| 30 | - @ApiModelProperty(value = "表单编号", example = "1024") | ||
| 31 | - private Long formId; | ||
| 32 | - | ||
| 33 | @ApiModelProperty(value = "BPMN XML", required = true) | 29 | @ApiModelProperty(value = "BPMN XML", required = true) |
| 34 | private String bpmnXml; | 30 | private String bpmnXml; |
| 35 | 31 | ||
| 32 | + @ApiModelProperty(value = "表单类型", notes = "参见 bpm_model_form_type 数据字典", example = "1") | ||
| 33 | + private Integer formType; | ||
| 34 | + @ApiModelProperty(value = "表单编号", example = "1024", notes = "在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空") | ||
| 35 | + private Long formId; | ||
| 36 | + @ApiModelProperty(value = "自定义表单的提交路径,使用 Vue 的路由地址", example = "/bpm/oa/leave/create", | ||
| 37 | + notes = "在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空") | ||
| 38 | + private String formCustomCreatePath; | ||
| 39 | + @ApiModelProperty(value = "自定义表单的查看路径,使用 Vue 的路由地址", example = "/bpm/oa/leave/view", | ||
| 40 | + notes = "在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空") | ||
| 41 | + private String formCustomViewPath; | ||
| 42 | + | ||
| 36 | } | 43 | } |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/model/BpmModelConvert.java
| 1 | package cn.iocoder.yudao.adminserver.modules.bpm.convert.model; | 1 | package cn.iocoder.yudao.adminserver.modules.bpm.convert.model; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.util.StrUtil; | ||
| 3 | import cn.iocoder.yudao.adminserver.modules.bpm.controller.model.vo.*; | 4 | import cn.iocoder.yudao.adminserver.modules.bpm.controller.model.vo.*; |
| 4 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmFormDO; | 5 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmFormDO; |
| 5 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmDefinitionCreateReqDTO; | 6 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmDefinitionCreateReqDTO; |
| @@ -15,10 +16,11 @@ import org.mapstruct.factory.Mappers; | @@ -15,10 +16,11 @@ import org.mapstruct.factory.Mappers; | ||
| 15 | 16 | ||
| 16 | import java.util.List; | 17 | import java.util.List; |
| 17 | import java.util.Map; | 18 | import java.util.Map; |
| 19 | +import java.util.Objects; | ||
| 18 | 20 | ||
| 19 | 21 | ||
| 20 | /** | 22 | /** |
| 21 | - * 流程定义 Convert | 23 | + * 流程模型 Convert |
| 22 | * | 24 | * |
| 23 | * @author yunlongn | 25 | * @author yunlongn |
| 24 | */ | 26 | */ |
| @@ -95,20 +97,34 @@ public interface BpmModelConvert { | @@ -95,20 +97,34 @@ public interface BpmModelConvert { | ||
| 95 | default void copy(Model model, BpmModelCreateReqVO bean) { | 97 | default void copy(Model model, BpmModelCreateReqVO bean) { |
| 96 | model.setName(bean.getName()); | 98 | model.setName(bean.getName()); |
| 97 | model.setKey(bean.getKey()); | 99 | model.setKey(bean.getKey()); |
| 98 | - model.setMetaInfo(JsonUtils.toJsonString(this.buildMetaInfo(bean.getDescription(), null))); | 100 | + model.setMetaInfo(buildMetaInfoStr(null, bean.getDescription(), null, null, |
| 101 | + null, null)); | ||
| 99 | } | 102 | } |
| 100 | 103 | ||
| 101 | default void copy(Model model, BpmModelUpdateReqVO bean) { | 104 | default void copy(Model model, BpmModelUpdateReqVO bean) { |
| 102 | model.setName(bean.getName()); | 105 | model.setName(bean.getName()); |
| 103 | model.setCategory(bean.getCategory()); | 106 | model.setCategory(bean.getCategory()); |
| 104 | - model.setMetaInfo(JsonUtils.toJsonString(this.buildMetaInfo(bean.getDescription(), bean.getFormId()))); | 107 | + model.setMetaInfo(buildMetaInfoStr(JsonUtils.parseObject(model.getMetaInfo(), BpmModelMetaInfoRespDTO.class), |
| 108 | + bean.getDescription(), bean.getFormType(), bean.getFormId(), | ||
| 109 | + bean.getFormCustomCreatePath(), bean.getFormCustomViewPath())); | ||
| 105 | } | 110 | } |
| 106 | 111 | ||
| 107 | - default BpmModelMetaInfoRespDTO buildMetaInfo(String description, Long formId) { | ||
| 108 | - BpmModelMetaInfoRespDTO metaInfo = new BpmModelMetaInfoRespDTO(); | ||
| 109 | - metaInfo.setDescription(description); | ||
| 110 | - metaInfo.setFormId(formId); | ||
| 111 | - return metaInfo; | 112 | + default String buildMetaInfoStr(BpmModelMetaInfoRespDTO metaInfo, String description, Integer formType, |
| 113 | + Long formId, String formCustomCreatePath, String formCustomViewPath) { | ||
| 114 | + if (metaInfo == null) { | ||
| 115 | + metaInfo = new BpmModelMetaInfoRespDTO(); | ||
| 116 | + } | ||
| 117 | + // 只有非空,才进行设置,避免更新时的覆盖 | ||
| 118 | + if (StrUtil.isNotEmpty(description)) { | ||
| 119 | + metaInfo.setDescription(description); | ||
| 120 | + } | ||
| 121 | + if (Objects.nonNull(formType)) { | ||
| 122 | + metaInfo.setFormType(formType); | ||
| 123 | + metaInfo.setFormId(formId); | ||
| 124 | + metaInfo.setFormCustomCreatePath(formCustomCreatePath); | ||
| 125 | + metaInfo.setFormCustomViewPath(formCustomViewPath); | ||
| 126 | + } | ||
| 127 | + return JsonUtils.toJsonString(metaInfo); | ||
| 112 | } | 128 | } |
| 113 | 129 | ||
| 114 | BpmModelPageItemRespVO.ProcessDefinition convert(ProcessDefinition bean); | 130 | BpmModelPageItemRespVO.ProcessDefinition convert(ProcessDefinition bean); |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/dto/BpmModelMetaInfoRespDTO.java
| @@ -19,7 +19,7 @@ public class BpmModelMetaInfoRespDTO { | @@ -19,7 +19,7 @@ public class BpmModelMetaInfoRespDTO { | ||
| 19 | /** | 19 | /** |
| 20 | * 表单类型 | 20 | * 表单类型 |
| 21 | */ | 21 | */ |
| 22 | - private Long formType; | 22 | + private Integer formType; |
| 23 | /** | 23 | /** |
| 24 | * 表单编号 | 24 | * 表单编号 |
| 25 | * 在表单类型为 {@link BpmModelFormTypeEnum#NORMAL} 时 | 25 | * 在表单类型为 {@link BpmModelFormTypeEnum#NORMAL} 时 |
| @@ -29,7 +29,7 @@ public class BpmModelMetaInfoRespDTO { | @@ -29,7 +29,7 @@ public class BpmModelMetaInfoRespDTO { | ||
| 29 | * 自定义表单的提交路径,使用 Vue 的路由地址 | 29 | * 自定义表单的提交路径,使用 Vue 的路由地址 |
| 30 | * 在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时 | 30 | * 在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时 |
| 31 | */ | 31 | */ |
| 32 | - private String formCustomSubmitPath; | 32 | + private String formCustomCreatePath; |
| 33 | /** | 33 | /** |
| 34 | * 自定义表单的查看路径,使用 Vue 的路由地址 | 34 | * 自定义表单的查看路径,使用 Vue 的路由地址 |
| 35 | * 在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时 | 35 | * 在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时 |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/impl/BpmModelServiceImpl.java
| @@ -149,7 +149,7 @@ public class BpmModelServiceImpl implements BpmModelService { | @@ -149,7 +149,7 @@ public class BpmModelServiceImpl implements BpmModelService { | ||
| 149 | if (StrUtil.isEmpty(bpmnXml)) { | 149 | if (StrUtil.isEmpty(bpmnXml)) { |
| 150 | return; | 150 | return; |
| 151 | } | 151 | } |
| 152 | - repositoryService.addModelEditorSource(model.getId(), bpmnXml.getBytes(StandardCharsets.UTF_8)); | 152 | + repositoryService.addModelEditorSource(model.getId(), StrUtil.utf8Bytes(bpmnXml)); |
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | @Override | 155 | @Override |
yudao-admin-ui/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue
| @@ -9,19 +9,6 @@ | @@ -9,19 +9,6 @@ | ||
| 9 | <el-form-item label="流程名称" prop="name"> | 9 | <el-form-item label="流程名称" prop="name"> |
| 10 | <el-input v-model="model.name" placeholder="请输入流程名称" clearable @change="handleNameUpdate" /> | 10 | <el-input v-model="model.name" placeholder="请输入流程名称" clearable @change="handleNameUpdate" /> |
| 11 | </el-form-item> | 11 | </el-form-item> |
| 12 | - <el-form-item label="流程分类" prop="category"> | ||
| 13 | - <el-select v-model="model.category" placeholder="请选择流程分类" clearable style="width: 100%"> | ||
| 14 | - <el-option v-for="dict in categoryDictDatas" :key="dict.value" :label="dict.label" :value="dict.value"/> | ||
| 15 | - </el-select> | ||
| 16 | - </el-form-item> | ||
| 17 | - <el-form-item label="流程表单" prop="formId"> | ||
| 18 | - <el-select v-model="model.formId" placeholder="请选择流程表单,非必选哟!" clearable style="width: 100%"> | ||
| 19 | - <el-option v-for="form in forms" :key="form.id" :label="form.name" :value="form.id"/> | ||
| 20 | - </el-select> | ||
| 21 | - </el-form-item> | ||
| 22 | - <el-form-item label="流程描述" prop="description"> | ||
| 23 | - <el-input type="textarea" v-model="model.description" clearable @change="handleDescriptionUpdate" /> | ||
| 24 | - </el-form-item> | ||
| 25 | </div> | 12 | </div> |
| 26 | <div v-else> | 13 | <div v-else> |
| 27 | <el-form-item label="ID"> | 14 | <el-form-item label="ID"> |
| @@ -35,9 +22,6 @@ | @@ -35,9 +22,6 @@ | ||
| 35 | </div> | 22 | </div> |
| 36 | </template> | 23 | </template> |
| 37 | <script> | 24 | <script> |
| 38 | -import {DICT_TYPE, getDictDatas} from "@/utils/dict"; | ||
| 39 | -import {getSimpleForms} from "@/api/bpm/form"; | ||
| 40 | -import {getModel} from "@/api/bpm/model"; | ||
| 41 | 25 | ||
| 42 | export default { | 26 | export default { |
| 43 | name: "ElementBaseInfo", | 27 | name: "ElementBaseInfo", |
| @@ -54,10 +38,7 @@ export default { | @@ -54,10 +38,7 @@ export default { | ||
| 54 | rules: { | 38 | rules: { |
| 55 | key: [{ required: true, message: "流程标识不能为空", trigger: "blur" }], | 39 | key: [{ required: true, message: "流程标识不能为空", trigger: "blur" }], |
| 56 | name: [{ required: true, message: "流程名称不能为空", trigger: "blur" }], | 40 | name: [{ required: true, message: "流程名称不能为空", trigger: "blur" }], |
| 57 | - category: [{ required: true, message: "流程分类不能为空", trigger: "blur" }], | ||
| 58 | }, | 41 | }, |
| 59 | - // 数据字典 | ||
| 60 | - categoryDictDatas: getDictDatas(DICT_TYPE.BPM_MODEL_CATEGORY), | ||
| 61 | }; | 42 | }; |
| 62 | }, | 43 | }, |
| 63 | watch: { | 44 | watch: { |
| @@ -77,10 +58,6 @@ export default { | @@ -77,10 +58,6 @@ export default { | ||
| 77 | // } | 58 | // } |
| 78 | }, | 59 | }, |
| 79 | created() { | 60 | created() { |
| 80 | - // 获得流程表单的下拉框的数据 | ||
| 81 | - getSimpleForms().then(response => { | ||
| 82 | - this.forms = response.data | ||
| 83 | - }) | ||
| 84 | // 针对上传的 bpmn 流程图时,需要延迟 1 秒的时间,保证 key 和 name 的更新 | 61 | // 针对上传的 bpmn 流程图时,需要延迟 1 秒的时间,保证 key 和 name 的更新 |
| 85 | setTimeout(() => { | 62 | setTimeout(() => { |
| 86 | this.handleKeyUpdate(this.model.key) | 63 | this.handleKeyUpdate(this.model.key) |
yudao-admin-ui/src/router/index.js
| @@ -171,8 +171,8 @@ export const constantRoutes = [ | @@ -171,8 +171,8 @@ export const constantRoutes = [ | ||
| 171 | { | 171 | { |
| 172 | path: 'manager/model/edit', | 172 | path: 'manager/model/edit', |
| 173 | component: (resolve) => require(['@/views/bpm/model/modelEditor'], resolve), | 173 | component: (resolve) => require(['@/views/bpm/model/modelEditor'], resolve), |
| 174 | - name: '流程模型-编辑', | ||
| 175 | - meta: { title: '流程模型-编辑' } | 174 | + name: '设计流程', |
| 175 | + meta: { title: '设计流程' } | ||
| 176 | } | 176 | } |
| 177 | ] | 177 | ] |
| 178 | }, | 178 | }, |