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,9 +2,9 @@ package cn.iocoder.yudao.adminserver.modules.bpm.convert.definition;
2 2
3 import cn.hutool.core.util.StrUtil; 3 import cn.hutool.core.util.StrUtil;
4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.model.*; 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 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmModelMetaInfoRespDTO; 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 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 8 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
9 import cn.iocoder.yudao.framework.common.util.json.JsonUtils; 9 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
10 import org.activiti.engine.impl.persistence.entity.SuspensionState; 10 import org.activiti.engine.impl.persistence.entity.SuspensionState;
@@ -30,19 +30,19 @@ public interface BpmModelConvert { @@ -30,19 +30,19 @@ public interface BpmModelConvert {
30 30
31 BpmModelConvert INSTANCE = Mappers.getMapper(BpmModelConvert.class); 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 Map<String, Deployment> deploymentMap, 34 Map<String, Deployment> deploymentMap,
35 Map<String, ProcessDefinition> processDefinitionMap) { 35 Map<String, ProcessDefinition> processDefinitionMap) {
36 return CollectionUtils.convertList(list, model -> { 36 return CollectionUtils.convertList(list, model -> {
37 BpmModelMetaInfoRespDTO metaInfo = JsonUtils.parseObject(model.getMetaInfo(), BpmModelMetaInfoRespDTO.class); 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 Deployment deployment = model.getDeploymentId() != null ? deploymentMap.get(model.getDeploymentId()) : null; 39 Deployment deployment = model.getDeploymentId() != null ? deploymentMap.get(model.getDeploymentId()) : null;
40 ProcessDefinition processDefinition = model.getDeploymentId() != null ? processDefinitionMap.get(model.getDeploymentId()) : null; 40 ProcessDefinition processDefinition = model.getDeploymentId() != null ? processDefinitionMap.get(model.getDeploymentId()) : null;
41 return convert(model, form, deployment, processDefinition); 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 BpmModelPageItemRespVO modelRespVO = new BpmModelPageItemRespVO(); 46 BpmModelPageItemRespVO modelRespVO = new BpmModelPageItemRespVO();
47 modelRespVO.setId(model.getId()); 47 modelRespVO.setId(model.getId());
48 modelRespVO.setCreateTime(model.getCreateTime()); 48 modelRespVO.setCreateTime(model.getCreateTime());
@@ -83,7 +83,7 @@ public interface BpmModelConvert { @@ -83,7 +83,7 @@ public interface BpmModelConvert {
83 83
84 void copyTo(BpmModelMetaInfoRespDTO from, @MappingTarget BpmModelBaseVO to); 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 BpmProcessDefinitionCreateReqDTO createReqDTO = new BpmProcessDefinitionCreateReqDTO(); 87 BpmProcessDefinitionCreateReqDTO createReqDTO = new BpmProcessDefinitionCreateReqDTO();
88 createReqDTO.setModelId(model.getId()); 88 createReqDTO.setModelId(model.getId());
89 createReqDTO.setName(model.getName()); 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,8 +3,8 @@ package cn.iocoder.yudao.adminserver.modules.bpm.convert.definition;
3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process.BpmProcessDefinitionPageItemRespVO; 3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process.BpmProcessDefinitionPageItemRespVO;
4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process.BpmProcessDefinitionRespVO; 4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process.BpmProcessDefinitionRespVO;
5 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; 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 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmProcessDefinitionCreateReqDTO; 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 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 8 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
9 import org.activiti.engine.impl.persistence.entity.SuspensionState; 9 import org.activiti.engine.impl.persistence.entity.SuspensionState;
10 import org.activiti.engine.repository.Deployment; 10 import org.activiti.engine.repository.Deployment;
@@ -29,17 +29,17 @@ public interface BpmProcessDefinitionConvert { @@ -29,17 +29,17 @@ public interface BpmProcessDefinitionConvert {
29 BpmProcessDefinitionConvert INSTANCE = Mappers.getMapper(BpmProcessDefinitionConvert.class); 29 BpmProcessDefinitionConvert INSTANCE = Mappers.getMapper(BpmProcessDefinitionConvert.class);
30 30
31 default List<BpmProcessDefinitionPageItemRespVO> convertList(List<ProcessDefinition> list, Map<String, Deployment> deploymentMap, 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 return CollectionUtils.convertList(list, definition -> { 33 return CollectionUtils.convertList(list, definition -> {
34 Deployment deployment = definition.getDeploymentId() != null ? deploymentMap.get(definition.getDeploymentId()) : null; 34 Deployment deployment = definition.getDeploymentId() != null ? deploymentMap.get(definition.getDeploymentId()) : null;
35 BpmProcessDefinitionExtDO definitionDO = processDefinitionDOMap.get(definition.getId()); 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 return convert(definition, deployment, definitionDO, form); 37 return convert(definition, deployment, definitionDO, form);
38 }); 38 });
39 } 39 }
40 40
41 default BpmProcessDefinitionPageItemRespVO convert(ProcessDefinition bean, Deployment deployment, 41 default BpmProcessDefinitionPageItemRespVO convert(ProcessDefinition bean, Deployment deployment,
42 - BpmProcessDefinitionExtDO processDefinitionExtDO, BpmFormDO form) { 42 + BpmProcessDefinitionExtDO processDefinitionExtDO, BpmFormDTO form) {
43 BpmProcessDefinitionPageItemRespVO respVO = convert(bean); 43 BpmProcessDefinitionPageItemRespVO respVO = convert(bean);
44 respVO.setSuspensionState(bean.isSuspended() ? SuspensionState.SUSPENDED.getStateCode() : SuspensionState.ACTIVE.getStateCode()); 44 respVO.setSuspensionState(bean.isSuspended() ? SuspensionState.SUSPENDED.getStateCode() : SuspensionState.ACTIVE.getStateCode());
45 if (deployment != null) { 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,6 +55,4 @@ public interface BpmErrorCodeConstants {
55 55
56 // ========== 动态表单模块 1-009-010-000 ========== 56 // ========== 动态表单模块 1-009-010-000 ==========
57 ErrorCode FORM_NOT_EXISTS = new ErrorCode(1009010000, "动态表单不存在"); 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,14 +6,14 @@ import cn.hutool.core.util.StrUtil;
6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.model.*; 6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.model.*;
7 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule.BpmTaskAssignRuleRespVO; 7 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule.BpmTaskAssignRuleRespVO;
8 import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmModelConvert; 8 import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmModelConvert;
9 -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO;  
10 import cn.iocoder.yudao.adminserver.modules.bpm.enums.definition.BpmModelFormTypeEnum; 9 import cn.iocoder.yudao.adminserver.modules.bpm.enums.definition.BpmModelFormTypeEnum;
  10 +import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmModelService;
11 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService; 11 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService;
12 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; 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 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmModelMetaInfoRespDTO; 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 import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils; 17 import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils;
18 import cn.iocoder.yudao.framework.common.pojo.PageResult; 18 import cn.iocoder.yudao.framework.common.pojo.PageResult;
19 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 19 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
@@ -39,7 +39,6 @@ import java.util.*; @@ -39,7 +39,6 @@ import java.util.*;
39 39
40 import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.*; 40 import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.*;
41 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 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 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; 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,7 +56,7 @@ public class BpmModelServiceImpl implements BpmModelService {
57 @Resource 56 @Resource
58 private RepositoryService repositoryService; 57 private RepositoryService repositoryService;
59 @Resource 58 @Resource
60 - private BpmFormService formService; 59 + private BpmFormServiceApi formServiceApi;
61 @Resource 60 @Resource
62 private BpmProcessDefinitionService processDefinitionService; 61 private BpmProcessDefinitionService processDefinitionService;
63 @Resource 62 @Resource
@@ -85,7 +84,7 @@ public class BpmModelServiceImpl implements BpmModelService { @@ -85,7 +84,7 @@ public class BpmModelServiceImpl implements BpmModelService {
85 BpmModelMetaInfoRespDTO metaInfo = JsonUtils.parseObject(model.getMetaInfo(), BpmModelMetaInfoRespDTO.class); 84 BpmModelMetaInfoRespDTO metaInfo = JsonUtils.parseObject(model.getMetaInfo(), BpmModelMetaInfoRespDTO.class);
86 return metaInfo != null ? metaInfo.getFormId() : null; 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 // 获得 Deployment Map 89 // 获得 Deployment Map
91 Set<String> deploymentIds = new HashSet<>(); 90 Set<String> deploymentIds = new HashSet<>();
@@ -172,7 +171,7 @@ public class BpmModelServiceImpl implements BpmModelService { @@ -172,7 +171,7 @@ public class BpmModelServiceImpl implements BpmModelService {
172 } 171 }
173 // TODO 芋艿:校验流程图的有效性;例如说,是否有开始的元素,是否有结束的元素; 172 // TODO 芋艿:校验流程图的有效性;例如说,是否有开始的元素,是否有结束的元素;
174 // 校验表单已配 173 // 校验表单已配
175 - BpmFormDO form = checkFormConfig(model); 174 + BpmFormDTO form = checkFormConfig(model);
176 // 校验任务分配规则已配置 175 // 校验任务分配规则已配置
177 checkTaskAssignRuleAllConfig(id); 176 checkTaskAssignRuleAllConfig(id);
178 177
@@ -225,14 +224,14 @@ public class BpmModelServiceImpl implements BpmModelService { @@ -225,14 +224,14 @@ public class BpmModelServiceImpl implements BpmModelService {
225 * @param model 流程模型 224 * @param model 流程模型
226 * @return 流程表单 225 * @return 流程表单
227 */ 226 */
228 - private BpmFormDO checkFormConfig(Model model) { 227 + private BpmFormDTO checkFormConfig(Model model) {
229 BpmModelMetaInfoRespDTO metaInfo = JsonUtils.parseObject(model.getMetaInfo(), BpmModelMetaInfoRespDTO.class); 228 BpmModelMetaInfoRespDTO metaInfo = JsonUtils.parseObject(model.getMetaInfo(), BpmModelMetaInfoRespDTO.class);
230 if (metaInfo == null || metaInfo.getFormType() == null) { 229 if (metaInfo == null || metaInfo.getFormType() == null) {
231 throw exception(MODEL_DEPLOY_FAIL_FORM_NOT_CONFIG); 230 throw exception(MODEL_DEPLOY_FAIL_FORM_NOT_CONFIG);
232 } 231 }
233 // 校验表单存在 232 // 校验表单存在
234 if (Objects.equals(metaInfo.getFormType(), BpmModelFormTypeEnum.NORMAL.getType())) { 233 if (Objects.equals(metaInfo.getFormType(), BpmModelFormTypeEnum.NORMAL.getType())) {
235 - BpmFormDO form = formService.getForm(metaInfo.getFormId()); 234 + BpmFormDTO form = formServiceApi.getForm(metaInfo.getFormId());
236 if (form == null) { 235 if (form == null) {
237 throw exception(FORM_NOT_EXISTS); 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,12 +8,12 @@ import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process
8 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process.BpmProcessDefinitionPageReqVO; 8 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process.BpmProcessDefinitionPageReqVO;
9 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process.BpmProcessDefinitionRespVO; 9 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.process.BpmProcessDefinitionRespVO;
10 import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmProcessDefinitionConvert; 10 import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmProcessDefinitionConvert;
11 -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO;  
12 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; 11 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO;
13 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmProcessDefinitionExtMapper; 12 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmProcessDefinitionExtMapper;
14 -import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmFormService;  
15 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService; 13 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService;
16 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmProcessDefinitionCreateReqDTO; 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 import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils; 17 import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils;
18 import cn.iocoder.yudao.framework.common.pojo.PageResult; 18 import cn.iocoder.yudao.framework.common.pojo.PageResult;
19 import cn.iocoder.yudao.framework.common.util.object.PageUtils; 19 import cn.iocoder.yudao.framework.common.util.object.PageUtils;
@@ -31,7 +31,8 @@ import org.springframework.validation.annotation.Validated; @@ -31,7 +31,8 @@ import org.springframework.validation.annotation.Validated;
31 import javax.annotation.Resource; 31 import javax.annotation.Resource;
32 import java.util.*; 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 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 36 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
36 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; 37 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
37 import static java.util.Collections.emptyList; 38 import static java.util.Collections.emptyList;
@@ -54,7 +55,7 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ @@ -54,7 +55,7 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ
54 @Resource 55 @Resource
55 private RepositoryService repositoryService; 56 private RepositoryService repositoryService;
56 @Resource 57 @Resource
57 - private BpmFormService bpmFormService; 58 + private BpmFormServiceApi bpmFormServiceApi;
58 59
59 @Resource 60 @Resource
60 private BpmProcessDefinitionExtMapper processDefinitionMapper; 61 private BpmProcessDefinitionExtMapper processDefinitionMapper;
@@ -85,7 +86,7 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ @@ -85,7 +86,7 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ
85 86
86 // 获得 Form Map 87 // 获得 Form Map
87 Set<Long> formIds = convertSet(processDefinitionDOs, BpmProcessDefinitionExtDO::getFormId); 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 long definitionCount = definitionQuery.count(); 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,5 +16,9 @@
16 <groupId>org.projectlombok</groupId> 16 <groupId>org.projectlombok</groupId>
17 <artifactId>lombok</artifactId> 17 <artifactId>lombok</artifactId>
18 </dependency> 18 </dependency>
  19 + <dependency>
  20 + <groupId>cn.iocoder.boot</groupId>
  21 + <artifactId>yudao-common</artifactId>
  22 + </dependency>
19 </dependencies> 23 </dependencies>
20 </project> 24 </project>
21 \ No newline at end of file 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,6 +9,7 @@ import java.util.Set;
9 /** 9 /**
10 * Bpm 用户组 API 接口 10 * Bpm 用户组 API 接口
11 * 11 *
  12 + * @author 芋道源码
12 * @author jason 13 * @author jason
13 */ 14 */
14 public interface BpmUserGroupServiceApi { 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,6 +24,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU
24 /** 24 /**
25 * Bpm 用户组 API 接口 实现类 25 * Bpm 用户组 API 接口 实现类
26 * 26 *
  27 + * @author 芋道源码
27 * @author jason 28 * @author jason
28 */ 29 */
29 @Service 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,6 +5,7 @@ import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.Bp
5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormSimpleRespVO; 5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormSimpleRespVO;
6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormUpdateReqVO; 6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormUpdateReqVO;
7 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO; 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 import cn.iocoder.yudao.framework.common.pojo.PageResult; 9 import cn.iocoder.yudao.framework.common.pojo.PageResult;
9 import org.mapstruct.Mapper; 10 import org.mapstruct.Mapper;
10 import org.mapstruct.factory.Mappers; 11 import org.mapstruct.factory.Mappers;
@@ -27,6 +28,10 @@ public interface BpmFormConvert { @@ -27,6 +28,10 @@ public interface BpmFormConvert {
27 28
28 BpmFormRespVO convert(BpmFormDO bean); 29 BpmFormRespVO convert(BpmFormDO bean);
29 30
  31 + BpmFormDTO convert1(BpmFormDO bean);
  32 +
  33 + List<BpmFormDTO> convertList(List<BpmFormDO> list);
  34 +
30 List<BpmFormSimpleRespVO> convertList2(List<BpmFormDO> list); 35 List<BpmFormSimpleRespVO> convertList2(List<BpmFormDO> list);
31 36
32 PageResult<BpmFormRespVO> convertPage(PageResult<BpmFormDO> page); 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,4 +7,7 @@ public interface BpmErrorCodeConstants {
7 ErrorCode USER_GROUP_NOT_EXISTS = new ErrorCode(1009011000, "用户组不存在"); 7 ErrorCode USER_GROUP_NOT_EXISTS = new ErrorCode(1009011000, "用户组不存在");
8 ErrorCode USER_GROUP_IS_DISABLE = new ErrorCode(1009011001, "名字为【{}】的用户组已被禁用"); 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,8 +7,10 @@ import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.Bp
7 import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmFormConvert; 7 import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmFormConvert;
8 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO; 8 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO;
9 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmFormMapper; 9 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmFormMapper;
  10 +import cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants;
10 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmFormService; 11 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmFormService;
11 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmFormFieldRespDTO; 12 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmFormFieldRespDTO;
  13 +import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
12 import cn.iocoder.yudao.framework.common.pojo.PageResult; 14 import cn.iocoder.yudao.framework.common.pojo.PageResult;
13 import cn.iocoder.yudao.framework.common.util.json.JsonUtils; 15 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
14 import org.springframework.stereotype.Service; 16 import org.springframework.stereotype.Service;
@@ -20,10 +22,6 @@ import java.util.HashMap; @@ -20,10 +22,6 @@ import java.util.HashMap;
20 import java.util.List; 22 import java.util.List;
21 import java.util.Map; 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 * 动态表单 Service 实现类 26 * 动态表单 Service 实现类
29 * 27 *
@@ -66,7 +64,7 @@ public class BpmFormServiceImpl implements BpmFormService { @@ -66,7 +64,7 @@ public class BpmFormServiceImpl implements BpmFormService {
66 64
67 private void validateFormExists(Long id) { 65 private void validateFormExists(Long id) {
68 if (formMapper.selectById(id) == null) { 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,7 +104,7 @@ public class BpmFormServiceImpl implements BpmFormService {
106 continue; 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 -- bpm 开头的 DB 1 -- bpm 开头的 DB
  2 +DELETE FROM "bpm_form";
2 DELETE FROM "bpm_user_group"; 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,3 +12,18 @@ CREATE TABLE IF NOT EXISTS &quot;bpm_user_group&quot; (
12 "deleted" bit NOT NULL DEFAULT FALSE, 12 "deleted" bit NOT NULL DEFAULT FALSE,
13 PRIMARY KEY ("id") 13 PRIMARY KEY ("id")
14 ) COMMENT '用户组'; 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 '动态表单';