Commit c5e2df943cbd2fe30ecebdd83f82515da96fa26c

Authored by jason
1 parent 6aca4ae9

Bpm 动态表单。移到bpm-core-service 模块

Showing 28 changed files with 177 additions and 33 deletions
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/definition/BpmModelConvert.java
... ... @@ -2,9 +2,9 @@ package cn.iocoder.yudao.adminserver.modules.bpm.convert.definition;
2 2  
3 3 import cn.hutool.core.util.StrUtil;
4 4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.model.*;
5   -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO;
6   -import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmProcessDefinitionCreateReqDTO;
7 5 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmModelMetaInfoRespDTO;
  6 +import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmProcessDefinitionCreateReqDTO;
  7 +import cn.iocoder.yudao.coreservice.modules.bpm.api.form.dto.BpmFormDTO;
8 8 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
9 9 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
10 10 import org.activiti.engine.impl.persistence.entity.SuspensionState;
... ... @@ -30,19 +30,19 @@ public interface BpmModelConvert {
30 30  
31 31 BpmModelConvert INSTANCE = Mappers.getMapper(BpmModelConvert.class);
32 32  
33   - default List<BpmModelPageItemRespVO> convertList(List<Model> list, Map<Long, BpmFormDO> formMap,
  33 + default List<BpmModelPageItemRespVO> convertList(List<Model> list, Map<Long, BpmFormDTO> formMap,
34 34 Map<String, Deployment> deploymentMap,
35 35 Map<String, ProcessDefinition> processDefinitionMap) {
36 36 return CollectionUtils.convertList(list, model -> {
37 37 BpmModelMetaInfoRespDTO metaInfo = JsonUtils.parseObject(model.getMetaInfo(), BpmModelMetaInfoRespDTO.class);
38   - BpmFormDO form = metaInfo != null ? formMap.get(metaInfo.getFormId()) : null;
  38 + BpmFormDTO form = metaInfo != null ? formMap.get(metaInfo.getFormId()) : null;
39 39 Deployment deployment = model.getDeploymentId() != null ? deploymentMap.get(model.getDeploymentId()) : null;
40 40 ProcessDefinition processDefinition = model.getDeploymentId() != null ? processDefinitionMap.get(model.getDeploymentId()) : null;
41 41 return convert(model, form, deployment, processDefinition);
42 42 });
43 43 }
44 44  
45   - default BpmModelPageItemRespVO convert(Model model, BpmFormDO form, Deployment deployment, ProcessDefinition processDefinition) {
  45 + default BpmModelPageItemRespVO convert(Model model, BpmFormDTO form, Deployment deployment, ProcessDefinition processDefinition) {
46 46 BpmModelPageItemRespVO modelRespVO = new BpmModelPageItemRespVO();
47 47 modelRespVO.setId(model.getId());
48 48 modelRespVO.setCreateTime(model.getCreateTime());
... ... @@ -83,7 +83,7 @@ public interface BpmModelConvert {
83 83  
84 84 void copyTo(BpmModelMetaInfoRespDTO from, @MappingTarget BpmModelBaseVO to);
85 85  
86   - default BpmProcessDefinitionCreateReqDTO convert2(Model model, BpmFormDO form) {
  86 + default BpmProcessDefinitionCreateReqDTO convert2(Model model, BpmFormDTO form) {
87 87 BpmProcessDefinitionCreateReqDTO createReqDTO = new BpmProcessDefinitionCreateReqDTO();
88 88 createReqDTO.setModelId(model.getId());
89 89 createReqDTO.setName(model.getName());
... ...
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/definition/BpmProcessDefinitionConvert.java
... ... @@ -3,8 +3,8 @@ package cn.iocoder.yudao.adminserver.modules.bpm.convert.definition;
3 3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process.BpmProcessDefinitionPageItemRespVO;
4 4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process.BpmProcessDefinitionRespVO;
5 5 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO;
6   -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO;
7 6 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmProcessDefinitionCreateReqDTO;
  7 +import cn.iocoder.yudao.coreservice.modules.bpm.api.form.dto.BpmFormDTO;
8 8 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
9 9 import org.activiti.engine.impl.persistence.entity.SuspensionState;
10 10 import org.activiti.engine.repository.Deployment;
... ... @@ -29,17 +29,17 @@ public interface BpmProcessDefinitionConvert {
29 29 BpmProcessDefinitionConvert INSTANCE = Mappers.getMapper(BpmProcessDefinitionConvert.class);
30 30  
31 31 default List<BpmProcessDefinitionPageItemRespVO> convertList(List<ProcessDefinition> list, Map<String, Deployment> deploymentMap,
32   - Map<String, BpmProcessDefinitionExtDO> processDefinitionDOMap, Map<Long, BpmFormDO> formMap) {
  32 + Map<String, BpmProcessDefinitionExtDO> processDefinitionDOMap, Map<Long, BpmFormDTO> formMap) {
33 33 return CollectionUtils.convertList(list, definition -> {
34 34 Deployment deployment = definition.getDeploymentId() != null ? deploymentMap.get(definition.getDeploymentId()) : null;
35 35 BpmProcessDefinitionExtDO definitionDO = processDefinitionDOMap.get(definition.getId());
36   - BpmFormDO form = definitionDO != null ? formMap.get(definitionDO.getFormId()) : null;
  36 + BpmFormDTO form = definitionDO != null ? formMap.get(definitionDO.getFormId()) : null;
37 37 return convert(definition, deployment, definitionDO, form);
38 38 });
39 39 }
40 40  
41 41 default BpmProcessDefinitionPageItemRespVO convert(ProcessDefinition bean, Deployment deployment,
42   - BpmProcessDefinitionExtDO processDefinitionExtDO, BpmFormDO form) {
  42 + BpmProcessDefinitionExtDO processDefinitionExtDO, BpmFormDTO form) {
43 43 BpmProcessDefinitionPageItemRespVO respVO = convert(bean);
44 44 respVO.setSuspensionState(bean.isSuspended() ? SuspensionState.SUSPENDED.getStateCode() : SuspensionState.ACTIVE.getStateCode());
45 45 if (deployment != null) {
... ...
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/BpmErrorCodeConstants.java
... ... @@ -55,6 +55,4 @@ public interface BpmErrorCodeConstants {
55 55  
56 56 // ========== 动态表单模块 1-009-010-000 ==========
57 57 ErrorCode FORM_NOT_EXISTS = new ErrorCode(1009010000, "动态表单不存在");
58   - ErrorCode FORM_FIELD_REPEAT = new ErrorCode(1009010000, "表单项({}) 和 ({}) 使用了相同的字段名({})");
59   -
60 58 }
... ...
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/impl/BpmModelServiceImpl.java
... ... @@ -6,14 +6,14 @@ import cn.hutool.core.util.StrUtil;
6 6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.model.*;
7 7 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule.BpmTaskAssignRuleRespVO;
8 8 import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmModelConvert;
9   -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO;
10 9 import cn.iocoder.yudao.adminserver.modules.bpm.enums.definition.BpmModelFormTypeEnum;
  10 +import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmModelService;
11 11 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService;
12 12 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService;
13   -import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmProcessDefinitionCreateReqDTO;
14   -import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmFormService;
15   -import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmModelService;
16 13 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmModelMetaInfoRespDTO;
  14 +import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmProcessDefinitionCreateReqDTO;
  15 +import cn.iocoder.yudao.coreservice.modules.bpm.api.form.BpmFormServiceApi;
  16 +import cn.iocoder.yudao.coreservice.modules.bpm.api.form.dto.BpmFormDTO;
17 17 import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils;
18 18 import cn.iocoder.yudao.framework.common.pojo.PageResult;
19 19 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
... ... @@ -39,7 +39,6 @@ import java.util.*;
39 39  
40 40 import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.*;
41 41 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
42   -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception0;
43 42 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
44 43  
45 44 /**
... ... @@ -57,7 +56,7 @@ public class BpmModelServiceImpl implements BpmModelService {
57 56 @Resource
58 57 private RepositoryService repositoryService;
59 58 @Resource
60   - private BpmFormService formService;
  59 + private BpmFormServiceApi formServiceApi;
61 60 @Resource
62 61 private BpmProcessDefinitionService processDefinitionService;
63 62 @Resource
... ... @@ -85,7 +84,7 @@ public class BpmModelServiceImpl implements BpmModelService {
85 84 BpmModelMetaInfoRespDTO metaInfo = JsonUtils.parseObject(model.getMetaInfo(), BpmModelMetaInfoRespDTO.class);
86 85 return metaInfo != null ? metaInfo.getFormId() : null;
87 86 });
88   - Map<Long, BpmFormDO> formMap = formService.getFormMap(formIds);
  87 + Map<Long, BpmFormDTO> formMap = formServiceApi.getFormMap(formIds);
89 88  
90 89 // 获得 Deployment Map
91 90 Set<String> deploymentIds = new HashSet<>();
... ... @@ -172,7 +171,7 @@ public class BpmModelServiceImpl implements BpmModelService {
172 171 }
173 172 // TODO 芋艿:校验流程图的有效性;例如说,是否有开始的元素,是否有结束的元素;
174 173 // 校验表单已配
175   - BpmFormDO form = checkFormConfig(model);
  174 + BpmFormDTO form = checkFormConfig(model);
176 175 // 校验任务分配规则已配置
177 176 checkTaskAssignRuleAllConfig(id);
178 177  
... ... @@ -225,14 +224,14 @@ public class BpmModelServiceImpl implements BpmModelService {
225 224 * @param model 流程模型
226 225 * @return 流程表单
227 226 */
228   - private BpmFormDO checkFormConfig(Model model) {
  227 + private BpmFormDTO checkFormConfig(Model model) {
229 228 BpmModelMetaInfoRespDTO metaInfo = JsonUtils.parseObject(model.getMetaInfo(), BpmModelMetaInfoRespDTO.class);
230 229 if (metaInfo == null || metaInfo.getFormType() == null) {
231 230 throw exception(MODEL_DEPLOY_FAIL_FORM_NOT_CONFIG);
232 231 }
233 232 // 校验表单存在
234 233 if (Objects.equals(metaInfo.getFormType(), BpmModelFormTypeEnum.NORMAL.getType())) {
235   - BpmFormDO form = formService.getForm(metaInfo.getFormId());
  234 + BpmFormDTO form = formServiceApi.getForm(metaInfo.getFormId());
236 235 if (form == null) {
237 236 throw exception(FORM_NOT_EXISTS);
238 237 }
... ...
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/impl/BpmProcessDefinitionServiceImpl.java
... ... @@ -8,12 +8,12 @@ import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process
8 8 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process.BpmProcessDefinitionPageReqVO;
9 9 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process.BpmProcessDefinitionRespVO;
10 10 import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmProcessDefinitionConvert;
11   -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO;
12 11 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO;
13 12 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmProcessDefinitionExtMapper;
14   -import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmFormService;
15 13 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService;
16 14 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmProcessDefinitionCreateReqDTO;
  15 +import cn.iocoder.yudao.coreservice.modules.bpm.api.form.BpmFormServiceApi;
  16 +import cn.iocoder.yudao.coreservice.modules.bpm.api.form.dto.BpmFormDTO;
17 17 import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils;
18 18 import cn.iocoder.yudao.framework.common.pojo.PageResult;
19 19 import cn.iocoder.yudao.framework.common.util.object.PageUtils;
... ... @@ -31,7 +31,8 @@ import org.springframework.validation.annotation.Validated;
31 31 import javax.annotation.Resource;
32 32 import java.util.*;
33 33  
34   -import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.*;
  34 +import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.PROCESS_DEFINITION_KEY_NOT_MATCH;
  35 +import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.PROCESS_DEFINITION_NAME_NOT_MATCH;
35 36 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
36 37 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
37 38 import static java.util.Collections.emptyList;
... ... @@ -54,7 +55,7 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ
54 55 @Resource
55 56 private RepositoryService repositoryService;
56 57 @Resource
57   - private BpmFormService bpmFormService;
  58 + private BpmFormServiceApi bpmFormServiceApi;
58 59  
59 60 @Resource
60 61 private BpmProcessDefinitionExtMapper processDefinitionMapper;
... ... @@ -85,7 +86,7 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ
85 86  
86 87 // 获得 Form Map
87 88 Set<Long> formIds = convertSet(processDefinitionDOs, BpmProcessDefinitionExtDO::getFormId);
88   - Map<Long, BpmFormDO> formMap = bpmFormService.getFormMap(formIds);
  89 + Map<Long, BpmFormDTO> formMap = bpmFormServiceApi.getFormMap(formIds);
89 90  
90 91 // 拼接结果
91 92 long definitionCount = definitionQuery.count();
... ...
yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-api/pom.xml
... ... @@ -16,5 +16,9 @@
16 16 <groupId>org.projectlombok</groupId>
17 17 <artifactId>lombok</artifactId>
18 18 </dependency>
  19 + <dependency>
  20 + <groupId>cn.iocoder.boot</groupId>
  21 + <artifactId>yudao-common</artifactId>
  22 + </dependency>
19 23 </dependencies>
20 24 </project>
21 25 \ No newline at end of file
... ...
yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-api/src/main/java/cn/iocoder/yudao/coreservice/modules/bpm/api/form/BpmFormServiceApi.java 0 → 100644
  1 +package cn.iocoder.yudao.coreservice.modules.bpm.api.form;
  2 +
  3 +import cn.hutool.core.collection.CollUtil;
  4 +import cn.iocoder.yudao.coreservice.modules.bpm.api.form.dto.BpmFormDTO;
  5 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  6 +
  7 +import java.util.Collection;
  8 +import java.util.Collections;
  9 +import java.util.List;
  10 +import java.util.Map;
  11 +
  12 +/**
  13 + * Bpm 动态表单 Service API 接口
  14 + *
  15 + * @author @风里雾里
  16 + */
  17 +public interface BpmFormServiceApi {
  18 + /**
  19 + * 获得动态表单
  20 + *
  21 + * @param id 编号
  22 + * @return 动态表单
  23 + */
  24 + BpmFormDTO getForm(Long id);
  25 +
  26 + /**
  27 + * 获得动态表单列表
  28 + *
  29 + * @param ids 编号
  30 + * @return 动态表单列表
  31 + */
  32 + List<BpmFormDTO> getFormList(Collection<Long> ids);
  33 +
  34 + /**
  35 + * 获得动态表单 Map
  36 + *
  37 + * @param ids 编号
  38 + * @return 动态表单 Map
  39 + */
  40 + default Map<Long, BpmFormDTO> getFormMap(Collection<Long> ids) {
  41 + if (CollUtil.isEmpty(ids)) {
  42 + return Collections.emptyMap();
  43 + }
  44 + return CollectionUtils.convertMap(this.getFormList(ids), BpmFormDTO::getId);
  45 + }
  46 +}
... ...
yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-api/src/main/java/cn/iocoder/yudao/coreservice/modules/bpm/api/form/dto/BpmFormDTO.java 0 → 100644
  1 +package cn.iocoder.yudao.coreservice.modules.bpm.api.form.dto;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.util.List;
  6 +
  7 +/**
  8 + * 工作流的表单定义 DTO
  9 + * 用于工作流的申请表单,需要动态配置的场景
  10 + * TODO 暂时拷贝 BpmFormDO 字段, 不知道那些字段是必须的, 后续删掉不需要的字段
  11 + * @author jason
  12 + */
  13 +@Data
  14 +public class BpmFormDTO {
  15 +
  16 + /**
  17 + * 编号
  18 + */
  19 + private Long id;
  20 + /**
  21 + * 表单名
  22 + */
  23 + private String name;
  24 + /**
  25 + * 表单的配置
  26 + */
  27 + private String conf;
  28 + /**
  29 + * 表单项的数组
  30 + *
  31 + * 目前直接将 https://github.com/JakHuang/form-generator 生成的 JSON 串,直接保存
  32 + * 定义:https://github.com/JakHuang/form-generator/issues/46
  33 + */
  34 + private List<String> fields;
  35 + /**
  36 + * 备注
  37 + */
  38 + private String remark;
  39 +}
... ...
yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-api/src/main/java/cn/iocoder/yudao/coreservice/modules/bpm/api/group/BpmUserGroupServiceApi.java
... ... @@ -9,6 +9,7 @@ import java.util.Set;
9 9 /**
10 10 * Bpm 用户组 API 接口
11 11 *
  12 + * @author 芋道源码
12 13 * @author jason
13 14 */
14 15 public interface BpmUserGroupServiceApi {
... ...
yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/api/BpmFormServiceApiImpl.java 0 → 100644
  1 +package cn.iocoder.yudao.adminserver.modules.bpm.api;
  2 +
  3 +import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmFormConvert;
  4 +import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmFormMapper;
  5 +import cn.iocoder.yudao.coreservice.modules.bpm.api.form.BpmFormServiceApi;
  6 +import cn.iocoder.yudao.coreservice.modules.bpm.api.form.dto.BpmFormDTO;
  7 +import org.springframework.stereotype.Service;
  8 +
  9 +import javax.annotation.Resource;
  10 +import java.util.Collection;
  11 +import java.util.List;
  12 +/**
  13 + * 动态表单 Api Service 实现类
  14 + *
  15 + * @author 风里雾里
  16 + * @author jason
  17 + */
  18 +@Service
  19 +public class BpmFormServiceApiImpl implements BpmFormServiceApi {
  20 +
  21 + @Resource
  22 + private BpmFormMapper formMapper;
  23 +
  24 + @Override
  25 + public BpmFormDTO getForm(Long id) {
  26 + return BpmFormConvert.INSTANCE.convert1(formMapper.selectById(id));
  27 + }
  28 +
  29 + @Override
  30 + public List<BpmFormDTO> getFormList(Collection<Long> ids) {
  31 + return BpmFormConvert.INSTANCE.convertList(formMapper.selectBatchIds(ids));
  32 + }
  33 +}
... ...
yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/api/BpmUserGroupServiceApiImpl.java
... ... @@ -24,6 +24,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU
24 24 /**
25 25 * Bpm 用户组 API 接口 实现类
26 26 *
  27 + * @author 芋道源码
27 28 * @author jason
28 29 */
29 30 @Service
... ...
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/BpmFormController.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/BpmFormController.java
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/form/BpmFormBaseVO.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/form/BpmFormBaseVO.java
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/form/BpmFormCreateReqVO.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/form/BpmFormCreateReqVO.java
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/form/BpmFormPageReqVO.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/form/BpmFormPageReqVO.java
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/form/BpmFormRespVO.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/form/BpmFormRespVO.java
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/form/BpmFormSimpleRespVO.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/form/BpmFormSimpleRespVO.java
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/form/BpmFormUpdateReqVO.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/form/BpmFormUpdateReqVO.java
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/definition/BpmFormConvert.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/definition/BpmFormConvert.java
... ... @@ -5,6 +5,7 @@ import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.Bp
5 5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormSimpleRespVO;
6 6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormUpdateReqVO;
7 7 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO;
  8 +import cn.iocoder.yudao.coreservice.modules.bpm.api.form.dto.BpmFormDTO;
8 9 import cn.iocoder.yudao.framework.common.pojo.PageResult;
9 10 import org.mapstruct.Mapper;
10 11 import org.mapstruct.factory.Mappers;
... ... @@ -27,6 +28,10 @@ public interface BpmFormConvert {
27 28  
28 29 BpmFormRespVO convert(BpmFormDO bean);
29 30  
  31 + BpmFormDTO convert1(BpmFormDO bean);
  32 +
  33 + List<BpmFormDTO> convertList(List<BpmFormDO> list);
  34 +
30 35 List<BpmFormSimpleRespVO> convertList2(List<BpmFormDO> list);
31 36  
32 37 PageResult<BpmFormRespVO> convertPage(PageResult<BpmFormDO> page);
... ...
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/dataobject/definition/BpmFormDO.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/dataobject/definition/BpmFormDO.java
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/mysql/definition/BpmFormMapper.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/mysql/definition/BpmFormMapper.java
yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/BpmErrorCodeConstants.java
... ... @@ -7,4 +7,7 @@ public interface BpmErrorCodeConstants {
7 7 ErrorCode USER_GROUP_NOT_EXISTS = new ErrorCode(1009011000, "用户组不存在");
8 8 ErrorCode USER_GROUP_IS_DISABLE = new ErrorCode(1009011001, "名字为【{}】的用户组已被禁用");
9 9  
  10 + // ========== 动态表单模块 1-009-010-000 ==========
  11 + ErrorCode FORM_NOT_EXISTS = new ErrorCode(1009010000, "动态表单不存在");
  12 + ErrorCode FORM_FIELD_REPEAT = new ErrorCode(1009010000, "表单项({}) 和 ({}) 使用了相同的字段名({})");
10 13 }
... ...
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/BpmFormService.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/BpmFormService.java
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/dto/BpmFormFieldRespDTO.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/dto/BpmFormFieldRespDTO.java
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/impl/BpmFormServiceImpl.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/impl/BpmFormServiceImpl.java
... ... @@ -7,8 +7,10 @@ import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.Bp
7 7 import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmFormConvert;
8 8 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO;
9 9 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmFormMapper;
  10 +import cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants;
10 11 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmFormService;
11 12 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmFormFieldRespDTO;
  13 +import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
12 14 import cn.iocoder.yudao.framework.common.pojo.PageResult;
13 15 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
14 16 import org.springframework.stereotype.Service;
... ... @@ -20,10 +22,6 @@ import java.util.HashMap;
20 22 import java.util.List;
21 23 import java.util.Map;
22 24  
23   -import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.FORM_FIELD_REPEAT;
24   -import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.FORM_NOT_EXISTS;
25   -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
26   -
27 25 /**
28 26 * 动态表单 Service 实现类
29 27 *
... ... @@ -66,7 +64,7 @@ public class BpmFormServiceImpl implements BpmFormService {
66 64  
67 65 private void validateFormExists(Long id) {
68 66 if (formMapper.selectById(id) == null) {
69   - throw exception(FORM_NOT_EXISTS);
  67 + throw ServiceExceptionUtil.exception(BpmErrorCodeConstants.FORM_NOT_EXISTS);
70 68 }
71 69 }
72 70  
... ... @@ -106,7 +104,7 @@ public class BpmFormServiceImpl implements BpmFormService {
106 104 continue;
107 105 }
108 106 // 如果存在,则报错
109   - throw exception(FORM_FIELD_REPEAT, oldLabel, fieldDTO.getLabel(), fieldDTO.getVModel());
  107 + throw ServiceExceptionUtil.exception(BpmErrorCodeConstants.FORM_FIELD_REPEAT, oldLabel, fieldDTO.getLabel(), fieldDTO.getVModel());
110 108 }
111 109 }
112 110  
... ...
yudao-module-bpm/yudao-module-bpm-activiti/src/test/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/BpmFormServiceTest.java renamed to yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/test/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/BpmFormServiceTest.java
yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/test/resources/sql/clean.sql
1 1 -- bpm 开头的 DB
  2 +DELETE FROM "bpm_form";
2 3 DELETE FROM "bpm_user_group";
... ...
yudao-module-bpm/yudao-module-bpm-core-service/yudao-module-bpm-core-service-impl/src/test/resources/sql/create_tables.sql
... ... @@ -12,3 +12,18 @@ CREATE TABLE IF NOT EXISTS &quot;bpm_user_group&quot; (
12 12 "deleted" bit NOT NULL DEFAULT FALSE,
13 13 PRIMARY KEY ("id")
14 14 ) COMMENT '用户组';
  15 +
  16 +CREATE TABLE IF NOT EXISTS "bpm_form" (
  17 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  18 + "name" varchar(63) NOT NULL,
  19 + "status" tinyint NOT NULL,
  20 + "fields" varchar(255) NOT NULL,
  21 + "conf" varchar(255) NOT NULL,
  22 + "remark" varchar(255),
  23 + "creator" varchar(64) DEFAULT '',
  24 + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  25 + "updater" varchar(64) DEFAULT '',
  26 + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  27 + "deleted" bit NOT NULL DEFAULT FALSE,
  28 + PRIMARY KEY ("id")
  29 +) COMMENT '动态表单';
... ...