diff --git a/common/service-util/src/main/java/com/atguigu/common/config/mp/MybatisPlusConfig.java b/common/service-util/src/main/java/com/atguigu/common/config/mp/MybatisPlusConfig.java index a506151..27e47a6 100644 --- a/common/service-util/src/main/java/com/atguigu/common/config/mp/MybatisPlusConfig.java +++ b/common/service-util/src/main/java/com/atguigu/common/config/mp/MybatisPlusConfig.java @@ -17,7 +17,7 @@ import org.springframework.context.annotation.Configuration; */ @Configuration -@MapperScan("com.atguigu.auth.mapper") +@MapperScan(basePackages = {"com.atguigu.auth.mapper","com.atguigu.process.mapper"}) public class MybatisPlusConfig { /** diff --git a/model/src/main/java/com/atguigu/vo/system/AssginMenuVo.java b/model/src/main/java/com/atguigu/vo/system/AssginMenuVo.java index e9e91c8..fadb1c4 100644 --- a/model/src/main/java/com/atguigu/vo/system/AssginMenuVo.java +++ b/model/src/main/java/com/atguigu/vo/system/AssginMenuVo.java @@ -1,6 +1,5 @@ package com.atguigu.vo.system; - import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/service-oa/src/main/java/com/atguigu/auth/ServiceAuthApplication.java b/service-oa/src/main/java/com/atguigu/ServiceAuthApplication.java similarity index 89% rename from service-oa/src/main/java/com/atguigu/auth/ServiceAuthApplication.java rename to service-oa/src/main/java/com/atguigu/ServiceAuthApplication.java index 9d86453..faad331 100644 --- a/service-oa/src/main/java/com/atguigu/auth/ServiceAuthApplication.java +++ b/service-oa/src/main/java/com/atguigu/ServiceAuthApplication.java @@ -1,4 +1,4 @@ -package com.atguigu.auth; +package com.atguigu; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -12,7 +12,6 @@ import org.springframework.context.annotation.ComponentScan; * @Create 2023/6/1 23:03 */ @SpringBootApplication -@ComponentScan("com.atguigu") public class ServiceAuthApplication { public static void main(String[] args) { SpringApplication.run(ServiceAuthApplication.class, args); diff --git a/service-oa/src/main/java/com/atguigu/process/controller/OaProcessTemplateController.java b/service-oa/src/main/java/com/atguigu/process/controller/OaProcessTemplateController.java new file mode 100644 index 0000000..80fe18c --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/process/controller/OaProcessTemplateController.java @@ -0,0 +1,80 @@ +package com.atguigu.process.controller; + + +import com.atguigu.common.result.Result; +import com.atguigu.model.process.ProcessTemplate; +import com.atguigu.process.service.OaProcessTemplateService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 审批模板 前端控制器 + *

+ * + * @author yovinchen + * @since 2023-06-15 + */ +@Api(value = "审批模板管理", tags = "审批模板管理") +@RestController +@RequestMapping(value = "/admin/process/processTemplate") +public class OaProcessTemplateController { + + @Autowired + private OaProcessTemplateService processTemplateService; + + /**分页查询审批模板 + * + * @param page + * @param pageSize + * @return + */ + @ApiOperation("获取分页查询审批模板数据") + @GetMapping("{page}/{pageSize}") + public Result index(@PathVariable Long page, @PathVariable Long pageSize) { + Page pageInfo = new Page<>(page, pageSize); + //分页查询审批模板,把审批类型对应名称查询 + IPage pageModel = + processTemplateService.selectPageProcessTemplate(pageInfo); + return Result.ok(pageModel); + } + + @PreAuthorize("hasAuthority('bnt.processTemplate.list')") + @ApiOperation(value = "获取") + @GetMapping("get/{id}") + public Result get(@PathVariable Long id) { + ProcessTemplate processTemplate = processTemplateService.getById(id); + return Result.ok(processTemplate); + } + + @PreAuthorize("hasAuthority('bnt.processTemplate.templateSet')") + @ApiOperation(value = "新增") + @PostMapping("save") + public Result save(@RequestBody ProcessTemplate processTemplate) { + processTemplateService.save(processTemplate); + return Result.ok(); + } + + @PreAuthorize("hasAuthority('bnt.processTemplate.templateSet')") + @ApiOperation(value = "修改") + @PutMapping("update") + public Result updateById(@RequestBody ProcessTemplate processTemplate) { + processTemplateService.updateById(processTemplate); + return Result.ok(); + } + + @PreAuthorize("hasAuthority('bnt.processTemplate.remove')") + @ApiOperation(value = "删除") + @DeleteMapping("remove/{id}") + public Result remove(@PathVariable Long id) { + processTemplateService.removeById(id); + return Result.ok(); + } + +} + diff --git a/service-oa/src/main/java/com/atguigu/process/controller/OaProcessTypeController.java b/service-oa/src/main/java/com/atguigu/process/controller/OaProcessTypeController.java new file mode 100644 index 0000000..2d39f24 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/process/controller/OaProcessTypeController.java @@ -0,0 +1,102 @@ +package com.atguigu.process.controller; + + +import com.atguigu.common.result.Result; +import com.atguigu.model.process.ProcessType; +import com.atguigu.process.service.OaProcessTypeService; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +/** + * 审批类型 前端控制器 + * + * @author yovinchen + * @since 2023-06-15 + */ +@Api(value = "审批类型", tags = "审批类型") +@RestController +@RequestMapping(value = "/admin/process/processType") +@SuppressWarnings({"unchecked", "rawtypes"}) +public class OaProcessTypeController { + + @Autowired + private OaProcessTypeService processTypeService; + + /** + * 分页查询 + * + * @param page + * @param pageSize + * @return + */ + @ApiOperation(value = "获取分页列表") + @GetMapping("{page}/{pageSize}") + public Result index(@PathVariable Long page, @PathVariable Long pageSize) { + + Page pageInfo = new Page<>(page, pageSize); + Page pageModel = processTypeService.page(pageInfo); + + return Result.ok(pageModel); + } + + /** + * 获取 + * + * @param id + * @return + */ + @PreAuthorize("hasAuthority('bnt.processType.list')") + @ApiOperation(value = "获取") + @GetMapping("get/{id}") + public Result get(@PathVariable Long id) { + ProcessType processType = processTypeService.getById(id); + return Result.ok(processType); + } + + /** + * 新增 + * + * @param processType + * @return + */ + @PreAuthorize("hasAuthority('bnt.processType.add')") + @ApiOperation(value = "新增") + @PostMapping("save") + public Result save(@RequestBody ProcessType processType) { + processTypeService.save(processType); + return Result.ok(); + } + + /** + * 修改 + * + * @param processType + * @return + */ + @PreAuthorize("hasAuthority('bnt.processType.update')") + @ApiOperation(value = "修改") + @PutMapping("update") + public Result updateById(@RequestBody ProcessType processType) { + processTypeService.updateById(processType); + return Result.ok(); + } + + /** + * 删除 + * + * @param id + * @return + */ + @ApiOperation(value = "删除") + @DeleteMapping("remove/{id}") + public Result remove(@PathVariable Long id) { + processTypeService.removeById(id); + return Result.ok(); + } + +} + diff --git a/service-oa/src/main/java/com/atguigu/process/mapper/OaProcessTemplateMapper.java b/service-oa/src/main/java/com/atguigu/process/mapper/OaProcessTemplateMapper.java new file mode 100644 index 0000000..dfa0537 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/process/mapper/OaProcessTemplateMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.process.mapper; + +import com.atguigu.model.process.ProcessTemplate; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 审批模板 Mapper 接口 + *

+ * + * @author yovinchen + * @since 2023-06-15 + */ +public interface OaProcessTemplateMapper extends BaseMapper { + +} diff --git a/service-oa/src/main/java/com/atguigu/process/mapper/OaProcessTypeMapper.java b/service-oa/src/main/java/com/atguigu/process/mapper/OaProcessTypeMapper.java new file mode 100644 index 0000000..5c42ef1 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/process/mapper/OaProcessTypeMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.process.mapper; + +import com.atguigu.model.process.ProcessType; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 审批类型 Mapper 接口 + *

+ * + * @author yovinchen + * @since 2023-06-15 + */ +public interface OaProcessTypeMapper extends BaseMapper { + +} diff --git a/service-oa/src/main/java/com/atguigu/process/mapper/xml/OaProcessTemplateMapper.xml b/service-oa/src/main/java/com/atguigu/process/mapper/xml/OaProcessTemplateMapper.xml new file mode 100644 index 0000000..5d3d778 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/process/mapper/xml/OaProcessTemplateMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service-oa/src/main/java/com/atguigu/process/mapper/xml/OaProcessTypeMapper.xml b/service-oa/src/main/java/com/atguigu/process/mapper/xml/OaProcessTypeMapper.xml new file mode 100644 index 0000000..1024a31 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/process/mapper/xml/OaProcessTypeMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service-oa/src/main/java/com/atguigu/process/service/OaProcessTemplateService.java b/service-oa/src/main/java/com/atguigu/process/service/OaProcessTemplateService.java new file mode 100644 index 0000000..191abc9 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/process/service/OaProcessTemplateService.java @@ -0,0 +1,25 @@ +package com.atguigu.process.service; + +import com.atguigu.model.process.ProcessTemplate; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 审批模板 服务类 + *

+ * + * @author yovinchen + * @since 2023-06-15 + */ +public interface OaProcessTemplateService extends IService { + + /** + * 分页查询审批模板,把审批类型对应名称查询 + * + * @param pageInfo + * @return + */ + IPage selectPageProcessTemplate(Page pageInfo); +} diff --git a/service-oa/src/main/java/com/atguigu/process/service/OaProcessTypeService.java b/service-oa/src/main/java/com/atguigu/process/service/OaProcessTypeService.java new file mode 100644 index 0000000..5ef2dd6 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/process/service/OaProcessTypeService.java @@ -0,0 +1,16 @@ +package com.atguigu.process.service; + +import com.atguigu.model.process.ProcessType; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 审批类型 服务类 + *

+ * + * @author yovinchen + * @since 2023-06-15 + */ +public interface OaProcessTypeService extends IService { + +} diff --git a/service-oa/src/main/java/com/atguigu/process/service/impl/OaProcessTemplateServiceImpl.java b/service-oa/src/main/java/com/atguigu/process/service/impl/OaProcessTemplateServiceImpl.java new file mode 100644 index 0000000..a97a233 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/process/service/impl/OaProcessTemplateServiceImpl.java @@ -0,0 +1,61 @@ +package com.atguigu.process.service.impl; + +import com.atguigu.model.process.ProcessTemplate; +import com.atguigu.model.process.ProcessType; +import com.atguigu.process.mapper.OaProcessTemplateMapper; +import com.atguigu.process.service.OaProcessTemplateService; +import com.atguigu.process.service.OaProcessTypeService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Optional; + +/** + *

+ * 审批模板 服务实现类 + *

+ * + * @author yovinchen + * @since 2023-06-15 + */ +@Service +public class OaProcessTemplateServiceImpl extends ServiceImpl implements OaProcessTemplateService { + + + @Resource + private OaProcessTypeService oaprocessTypeService; + + /** + * 分页查询审批模板,把审批类型对应名称查询 + * + * @param pageInfo + * @return + */ + @Override + public IPage selectPageProcessTemplate(Page pageInfo) { + // 调用mapper的方法实现分页查询 + Page processTemplatePage = baseMapper.selectPage(pageInfo, null); + // 第一步分页查询返回分页数据,从分页数据获取列表List集合 + List processTemplateList = processTemplatePage.getRecords(); + // 遍历list集合 +// for (ProcessTemplate processTemplate : processTemplateList) { +// //得到每个对象的审批类型id +// Long processTypeId = processTemplate.getProcessTypeId(); +// // 根据审批类型d,查询获取对应名称 +// ProcessType processType = oaprocessTypeService.getOne(new LambdaQueryWrapper().eq(ProcessType::getId, processTypeId)); +// if (processType == null) { +// continue; +// } +// // 完成最终封装 +// processTemplate.setProcessTypeName(processType.getName()); +// } + processTemplateList.forEach(processTemplate -> Optional.ofNullable(oaprocessTypeService.getOne(new LambdaQueryWrapper().eq(ProcessType::getId, processTemplate.getProcessTypeId()))).ifPresent(processType -> processTemplate.setProcessTypeName(processType.getName()))); + + return processTemplatePage; + } +} diff --git a/service-oa/src/main/java/com/atguigu/process/service/impl/OaProcessTypeServiceImpl.java b/service-oa/src/main/java/com/atguigu/process/service/impl/OaProcessTypeServiceImpl.java new file mode 100644 index 0000000..ef07789 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/process/service/impl/OaProcessTypeServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.process.service.impl; + +import com.atguigu.model.process.ProcessType; +import com.atguigu.process.mapper.OaProcessTypeMapper; +import com.atguigu.process.service.OaProcessTypeService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 审批类型 服务实现类 + *

+ * + * @author yovinchen + * @since 2023-06-15 + */ +@Service +public class OaProcessTypeServiceImpl extends ServiceImpl implements OaProcessTypeService { + +} diff --git a/service-oa/src/main/resources/application-dev.yml b/service-oa/src/main/resources/application-dev.yml index ce4adfd..c9c3f5f 100644 --- a/service-oa/src/main/resources/application-dev.yml +++ b/service-oa/src/main/resources/application-dev.yml @@ -10,9 +10,12 @@ spring: datasource: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://43.143.164.194:3306/guigu-oa?useSSL=false&useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true - username: admin - password: admin +# url: jdbc:mysql://43.143.164.194:3306/guigu-oa?useSSL=false&useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true +# username: admin +# password: admin + url: jdbc:mysql://localhost:3306/guigu-oa?useSSL=false&useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true + username: root + password: root jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 diff --git a/service-oa/src/main/resources/process/leave.bpmn20.xml b/service-oa/src/main/resources/process/leave.bpmn20.xml new file mode 100644 index 0000000..78e0cfb --- /dev/null +++ b/service-oa/src/main/resources/process/leave.bpmn20.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service-oa/src/main/resources/process/leave.png b/service-oa/src/main/resources/process/leave.png new file mode 100644 index 0000000..339e80f Binary files /dev/null and b/service-oa/src/main/resources/process/leave.png differ diff --git a/service-oa/src/main/resources/process/leave001.bpmn20.xml b/service-oa/src/main/resources/process/leave001.bpmn20.xml new file mode 100644 index 0000000..c43e5ae --- /dev/null +++ b/service-oa/src/main/resources/process/leave001.bpmn20.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/service-oa/src/main/resources/process/leave001.png b/service-oa/src/main/resources/process/leave001.png new file mode 100644 index 0000000..d207935 Binary files /dev/null and b/service-oa/src/main/resources/process/leave001.png differ diff --git a/service-oa/src/main/resources/process/overtime.bpmn20.xml b/service-oa/src/main/resources/process/overtime.bpmn20.xml new file mode 100644 index 0000000..290d398 --- /dev/null +++ b/service-oa/src/main/resources/process/overtime.bpmn20.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service-oa/src/main/resources/process/overtime.png b/service-oa/src/main/resources/process/overtime.png new file mode 100644 index 0000000..44f76f2 Binary files /dev/null and b/service-oa/src/main/resources/process/overtime.png differ diff --git a/service-oa/src/main/resources/process/overtime001.bpmn20.xml b/service-oa/src/main/resources/process/overtime001.bpmn20.xml new file mode 100644 index 0000000..2b09859 --- /dev/null +++ b/service-oa/src/main/resources/process/overtime001.bpmn20.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service-oa/src/main/resources/process/overtime001.png b/service-oa/src/main/resources/process/overtime001.png new file mode 100644 index 0000000..d8e68c5 Binary files /dev/null and b/service-oa/src/main/resources/process/overtime001.png differ diff --git a/service-oa/src/main/resources/process/overtime01.bpmn20.xml b/service-oa/src/main/resources/process/overtime01.bpmn20.xml new file mode 100644 index 0000000..3988e74 --- /dev/null +++ b/service-oa/src/main/resources/process/overtime01.bpmn20.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/service-oa/src/main/resources/process/overtime02.bpmn20.xml b/service-oa/src/main/resources/process/overtime02.bpmn20.xml new file mode 100644 index 0000000..fba580f --- /dev/null +++ b/service-oa/src/main/resources/process/overtime02.bpmn20.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service-oa/src/main/resources/process/overtime04.bpmn20.xml b/service-oa/src/main/resources/process/overtime04.bpmn20.xml new file mode 100644 index 0000000..6a0773c --- /dev/null +++ b/service-oa/src/main/resources/process/overtime04.bpmn20.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service-oa/src/main/resources/process/qingjia.bpmn20.xml b/service-oa/src/main/resources/process/qingjia.bpmn20.xml deleted file mode 100644 index 64ca3e2..0000000 --- a/service-oa/src/main/resources/process/qingjia.bpmn20.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/service-oa/src/main/resources/process/qingjia.png b/service-oa/src/main/resources/process/qingjia.png deleted file mode 100644 index b9a7557..0000000 Binary files a/service-oa/src/main/resources/process/qingjia.png and /dev/null differ diff --git a/service-oa/src/test/java/com/atguigu/auth/activti/MyTaskListener.java b/service-oa/src/test/java/com/atguigu/auth/activti/MyTaskListener.java new file mode 100644 index 0000000..c7d40b0 --- /dev/null +++ b/service-oa/src/test/java/com/atguigu/auth/activti/MyTaskListener.java @@ -0,0 +1,25 @@ +package com.atguigu.auth.activti; + +import org.activiti.engine.delegate.DelegateTask; +import org.activiti.engine.delegate.TaskListener; + +/** + * ClassName: MyTaskListener + * Package: com.atguigu.auth.activti + * + * @author yovinchen + * @Create 2023/6/12 15:12 + */ +public class MyTaskListener implements TaskListener { + + @Override + public void notify(DelegateTask delegateTask) { + if (delegateTask.getName().equals("经理审批")) { + //这里指定任务负责人 + delegateTask.setAssignee("Jack1"); + } else if (delegateTask.getName().equals("人事审批")) { + //这里指定任务负责人 + delegateTask.setAssignee("Jack2"); + } + } +} diff --git a/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTest.java b/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTest.java index bf6e25b..e8bf974 100644 --- a/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTest.java +++ b/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTest.java @@ -29,18 +29,27 @@ import java.util.List; @SpringBootTest public class ProcessTest { + /** + * 流程定义 + */ @Autowired private RepositoryService repositoryService; - + /** + * 流程实例 + */ @Autowired private RuntimeService runtimeService; - + /** + * 流程任务 + */ @Autowired private TaskService taskService; - + /** + * 相关操作历史 + */ @Autowired private HistoryService historyService; @@ -49,7 +58,7 @@ public class ProcessTest { */ @Test public void SingleSuspendProcessInstance() { - String processInstanceId = "8bdff984-ab53-11ed-9b17-f8e43b734677"; + String processInstanceId = "ce1f3cc0-08cf-11ee-b8cb-e645a9a03302"; ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); //获取到当前流程定义是否为暂停状态 suspended方法为true代表为暂停 false就是运行的 boolean suspended = processInstance.isSuspended(); @@ -67,17 +76,17 @@ public class ProcessTest { */ @Test public void suspendProcessInstance() { - ProcessDefinition qingjia = repositoryService.createProcessDefinitionQuery().processDefinitionKey("qingjia").singleResult(); + ProcessDefinition leave = repositoryService.createProcessDefinitionQuery().processDefinitionKey("leave").singleResult(); // 获取到当前流程定义是否为暂停状态 suspended方法为true是暂停的,suspended方法为false是运行的 - boolean suspended = qingjia.isSuspended(); + boolean suspended = leave.isSuspended(); if (suspended) { // 暂定,那就可以激活 // 参数1:流程定义的id 参数2:是否激活 参数3:时间点 - repositoryService.activateProcessDefinitionById(qingjia.getId(), true, null); - System.out.println("流程定义:" + qingjia.getId() + "激活"); + repositoryService.activateProcessDefinitionById(leave.getId(), true, null); + System.out.println("流程定义:" + leave.getId() + "激活"); } else { - repositoryService.suspendProcessDefinitionById(qingjia.getId(), true, null); - System.out.println("流程定义:" + qingjia.getId() + "挂起"); + repositoryService.suspendProcessDefinitionById(leave.getId(), true, null); + System.out.println("流程定义:" + leave.getId() + "挂起"); } } @@ -89,7 +98,7 @@ public class ProcessTest { String businessKey = "1"; // 启动流程实例,指定业务标识businessKey,也就是请假申请单id ProcessInstance processInstance = runtimeService. - startProcessInstanceByKey("qingjia", businessKey); + startProcessInstanceByKey("leave", businessKey); // 输出 System.out.println("业务id:" + processInstance.getBusinessKey()); } @@ -99,7 +108,7 @@ public class ProcessTest { */ public void deleteDeployment() { //部署id - String deploymentId = "5b997a98-0868-11ee-9ba7-6294623ad4e1"; + String deploymentId = "ce1f3cc0-08cf-11ee-b8cb-e645a9a03302"; //删除流程定义,如果该流程定义已有流程实例启动则删除时出错 repositoryService.deleteDeployment(deploymentId); //设置true 级联删除流程定义,即使该流程有流程实例启动也可以删除,设置为false非级别删除方式 @@ -117,11 +126,11 @@ public class ProcessTest { .list(); //输出流程定义信息 for (ProcessDefinition processDefinition : definitionList) { - System.out.println("流程定义 id=" + processDefinition.getId()); - System.out.println("流程定义 name=" + processDefinition.getName()); - System.out.println("流程定义 key=" + processDefinition.getKey()); - System.out.println("流程定义 Version=" + processDefinition.getVersion()); - System.out.println("流程部署ID =" + processDefinition.getDeploymentId()); + System.out.println("流程定义 id= " + processDefinition.getId()); + System.out.println("流程定义 name= " + processDefinition.getName()); + System.out.println("流程定义 key= " + processDefinition.getKey()); + System.out.println("流程定义 Version= " + processDefinition.getVersion()); + System.out.println("流程部署ID = " + processDefinition.getDeploymentId()); } } @@ -145,8 +154,8 @@ public class ProcessTest { */ @Test public void completTask() { - Task task = taskService.createTaskQuery().taskAssignee("zhangsan") //要查询的负责人 - .singleResult();//返回一条 + //要查询的负责人 + Task task = taskService.createTaskQuery().taskAssignee("zhangsan").singleResult();//返回一条 //完成任务,参数:任务id taskService.complete(task.getId()); @@ -175,7 +184,7 @@ public class ProcessTest { @Test public void startUpProcess() { //创建流程实例,我们需要知道流程定义的key - ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("qingjia"); + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leave"); //输出实例的相关信息 System.out.println("流程定义id:" + processInstance.getProcessDefinitionId()); System.out.println("流程实例id:" + processInstance.getId()); @@ -188,7 +197,7 @@ public class ProcessTest { @Test public void deployProcess() { // 流程部署 - Deployment deploy = repositoryService.createDeployment().addClasspathResource("process/qingjia.bpmn20.xml").addClasspathResource("process/qingjia.png").name("请假申请流程").deploy(); + Deployment deploy = repositoryService.createDeployment().addClasspathResource("process/leave.bpmn20.xml").addClasspathResource("process/leave.png").name("请假申请流程").deploy(); System.out.println(deploy.getId()); System.out.println(deploy.getName()); } diff --git a/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome001.java b/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome001.java new file mode 100644 index 0000000..b5fcdd8 --- /dev/null +++ b/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome001.java @@ -0,0 +1,137 @@ +package com.atguigu.auth.activti; + +import org.activiti.engine.HistoryService; +import org.activiti.engine.RepositoryService; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; +import org.activiti.engine.repository.Deployment; +import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.Task; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * ClassName: ProcessTestDome001 + * Package: com.atguigu.auth.activti + * + * @author yovinchen + * @Create 2023/6/13 16:38 + */ +@RunWith(SpringRunner.class) +@SpringBootTest +public class ProcessTestDome001 { + + + /** + * 流程定义 + */ + @Autowired + private RepositoryService repositoryService; + + /** + * 流程实例 + */ + @Autowired + private RuntimeService runtimeService; + + /** + * 流程任务 + */ + @Autowired + private TaskService taskService; + + /** + * 相关操作历史 + */ + @Autowired + private HistoryService historyService; + + /** + * 1.部署流程定义 + */ + @Test + public void deployProcess() { + Deployment deployment = repositoryService.createDeployment() + .addClasspathResource("process/overtime001.bpmn20.xml").name("请假申请流程001").deploy(); + System.out.println(deployment.getId()); + System.out.println(deployment.getName()); + } + + /** + * 2.启动流程实例 + */ + @Test + public void startProcessInstance() { + Map map = new HashMap<>(); + //设置请假天数 + map.put("day", "3"); + + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("overtime001", map); + System.out.println(processInstance.getProcessDefinitionId()); + System.out.println(processInstance.getId()); + } + + //3 查询个人的代办任务--zhaoliu + @Test + public void findTaskList() { + +// String assign = "zhaoliu"; + String assign = "gousheng"; + List list = taskService.createTaskQuery().taskAssignee(assign).list(); + for (Task task : list) { + System.out.println("流程实例id:" + task.getProcessInstanceId()); + System.out.println("任务id:" + task.getId()); + System.out.println("任务负责人:" + task.getAssignee()); + System.out.println("任务名称:" + task.getName()); + } + } + +// 流程实例id:0b64992c-09ca-11ee-89e6-2aee215b35b7 +// 任务id:0b675853-09ca-11ee-89e6-2aee215b35b7 +// 任务负责人:gousheng +// 任务名称:General manager approval +// 流程实例id:99e01586-09c9-11ee-b45a-2aee215b35b7 +// 任务id:99e2ad9b-09c9-11ee-b45a-2aee215b35b7 +// 任务负责人:gousheng +// 任务名称:General manager approval +// 流程实例id:a1ef91c6-09ca-11ee-a1d9-2aee215b35b7 +// 任务id:a1f202cd-09ca-11ee-a1d9-2aee215b35b7 +// 任务负责人:gousheng +// 任务名称:General manager approval +// 流程实例id:ffa761de-09c9-11ee-a564-2aee215b35b7 +// 任务id:ffaa4815-09c9-11ee-a564-2aee215b35b7 +// 任务负责人:gousheng +// 任务名称:General manager approval + /** + * 删除流程定义 + */ + public void deleteDeployment() { + //部署id + String deploymentId = "ffa761de-09c9-11ee-a564-2aee215b35b7"; + //删除流程定义,如果该流程定义已有流程实例启动则删除时出错 + repositoryService.deleteDeployment(deploymentId); + //设置true 级联删除流程定义,即使该流程有流程实例启动也可以删除,设置为false非级别删除方式 + repositoryService.deleteDeployment(deploymentId, true); + } + + /** + * 完成任务 + */ + @Test + public void completeTask() { + Task task = taskService.createTaskQuery() +// .taskAssignee("zhaoliu") + .taskAssignee("gousheng") + .singleResult();//返回一条 + + //完成任务,参数:任务id + taskService.complete(task.getId()); + } +} diff --git a/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome002.java b/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome002.java new file mode 100644 index 0000000..b6c75fd --- /dev/null +++ b/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome002.java @@ -0,0 +1,126 @@ +package com.atguigu.auth.activti; + +import org.activiti.engine.HistoryService; +import org.activiti.engine.RepositoryService; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; +import org.activiti.engine.repository.Deployment; +import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.Task; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * ClassName: ProcessTestDome002 + * Package: com.atguigu.auth.activti + * + * @author yovinchen + * @Create 2023/6/13 16:50 + */ +@RunWith(SpringRunner.class) +@SpringBootTest +public class ProcessTestDome002 { + + + /** + * 流程定义 + */ + @Autowired + private RepositoryService repositoryService; + + /** + * 流程实例 + */ + @Autowired + private RuntimeService runtimeService; + + /** + * 流程任务 + */ + @Autowired + private TaskService taskService; + + /** + * 相关操作历史 + */ + @Autowired + private HistoryService historyService; + + /** + * 1.部署流程定义 + */ + @Test + public void deployProcess() { + Deployment deployment = repositoryService.createDeployment() + .addClasspathResource("process/leave001.bpmn20.xml").name("请假申请流程002").deploy(); + System.out.println(deployment.getId()); + System.out.println(deployment.getName()); + } + + /** + * 2.启动流程实例 + */ + @Test + public void startProcessInstance() { + Map map = new HashMap<>(); + //设置请假天数 + map.put("day", "3"); + + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leave001", map); + System.out.println(processInstance.getProcessDefinitionId()); + System.out.println(processInstance.getId()); + } + + //3 查询个人的代办任务--zhaoliu + @Test + public void findTaskList() { + +// String assign = "wang5"; + +// 流程实例id:851c5a11-09cc-11ee-a8fc-2aee215b35b7 +// 任务id:85200399-09cc-11ee-a8fc-2aee215b35b7 +// 任务负责人:wang5 +// 任务名称:Department manager approval + +// String assign = "gouwa"; + +// 流程实例id:851c5a11-09cc-11ee-a8fc-2aee215b35b7 +// 任务id:8520039b-09cc-11ee-a8fc-2aee215b35b7 + + String assign = "xiaoli"; + +// 流程实例id:851c5a11-09cc-11ee-a8fc-2aee215b35b7 +// 任务id:d3756b55-09cc-11ee-9240-2aee215b35b7 +// 任务负责人:xiaoli +// 任务名称:Personnel record + + List list = taskService.createTaskQuery().taskAssignee(assign).list(); + for (Task task : list) { + System.out.println("流程实例id:" + task.getProcessInstanceId()); + System.out.println("任务id:" + task.getId()); + System.out.println("任务负责人:" + task.getAssignee()); + System.out.println("任务名称:" + task.getName()); + } + } + + /** + * 完成任务 + */ + @Test + public void completeTask() { + Task task = taskService.createTaskQuery() + .taskAssignee("wang5") + .taskAssignee("gouwa") + .singleResult();//返回一条 + + //完成任务,参数:任务id + taskService.complete(task.getId()); + } +} diff --git a/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome1.java b/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome1.java new file mode 100644 index 0000000..37833d0 --- /dev/null +++ b/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome1.java @@ -0,0 +1,188 @@ +package com.atguigu.auth.activti; + +import org.activiti.engine.HistoryService; +import org.activiti.engine.RepositoryService; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; +import org.activiti.engine.repository.Deployment; +import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.Task; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * ClassName: ProcessTestDome1 + * Package: com.atguigu.auth.activti + * + * @author yovinchen + * @Create 2023/6/12 11:38 + */ +@RunWith(SpringRunner.class) +@SpringBootTest +public class ProcessTestDome1 { + + + /** + * 流程定义 + */ + @Autowired + private RepositoryService repositoryService; + + /** + * 流程实例 + */ + @Autowired + private RuntimeService runtimeService; + + /** + * 流程任务 + */ + @Autowired + private TaskService taskService; + + /** + * 相关操作历史 + */ + @Autowired + private HistoryService historyService; + + //----------------------------------------- 监听器分配任务----------------------------------- + + /** + * 部署流程定义 + */ + @Test + public void deployProcess02() { + Deployment deploy = repositoryService.createDeployment().addClasspathResource("process/overtime02.bpmn20.xml").name("加班申请流程02").deploy(); + System.out.println("deploy.getId() = " + deploy.getId()); + System.out.println("deploy.getName() = " + deploy.getName()); + } + + /** + * 启动流程实例 + */ + @Test + public void startProcessInstance02() { + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("overtime02"); + System.out.println("processInstance.getProcessDefinitionId() = " + processInstance.getProcessDefinitionId()); + System.out.println("processInstance.getId() = " + processInstance.getId()); + } + + + /** + * 查询个人的代办任务--Jack1 + */ + @Test + public void findTaskList02() { + String assign = "Jack1"; + List list = taskService.createTaskQuery().taskAssignee(assign).list(); + for (Task task : list) { + System.out.println("task.getProcessInstanceId() = " + task.getProcessInstanceId()); + System.out.println("任务id:" + task.getId()); + System.out.println("任务负责人:" + task.getAssignee()); + System.out.println("任务名称:" + task.getName()); + } + } + +//-----------------------uel-method--------------------------------- + + /** + * 部署流程定义 + */ + @Test + public void deployProcess01() { + // 流程部署 + Deployment deploy = repositoryService.createDeployment() + .addClasspathResource("process/overtime01.bpmn20.xml") + .name("加班申请流程01") + .deploy(); + System.out.println(deploy.getId()); + System.out.println(deploy.getName()); + } + + /** + * 启动流程实例 + */ + @Test + public void startUpProcess02() { + //创建流程实例,我们需要知道流程定义的key + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("overtime01"); + //输出实例的相关信息 + System.out.println("流程定义id:" + processInstance.getProcessDefinitionId()); + System.out.println("流程实例id:" + processInstance.getId()); + } + + /** + * 查询个人的代办任务--Mac + */ + @Test + public void findTaskList01() { + String assign = "Mac"; + List list = taskService.createTaskQuery() + .taskAssignee(assign).list(); + for (Task task : list) { + System.out.println("task.getProcessInstanceId() = " + task.getProcessInstanceId()); // abb9c7c4-bb20-11ed-b608-005056c00001 + System.out.println("任务id:" + task.getId()); // abbd4a38-bb20-11ed-b608-005056c00001 + System.out.println("任务负责人:" + task.getAssignee()); // LiLei + System.out.println("任务名称:" + task.getName()); // 经理审批 + } + } + +//---------------------------------uel-value--------------------------------------- + + /** + * 部署流程定义 + */ + @Test + public void deployProcess() { + // 流程部署 + Deployment deploy = repositoryService.createDeployment() + .addClasspathResource("process/overtime.bpmn20.xml") + .name("加班申请流程") + .deploy(); + System.out.println(deploy.getId()); + System.out.println(deploy.getName()); + } + + /** + * 启动流程实例 + */ + @Test + public void startUpProcess() { + Map map = new HashMap<>(); + map.put("assignee1", "Lucy"); + map.put("assignee2", "Mack"); + //创建流程实例,我们需要知道流程定义的key + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("overtime", map); + //输出实例的相关信息 + System.out.println("流程定义id:" + processInstance.getProcessDefinitionId()); + System.out.println("流程实例id:" + processInstance.getId()); + } + + + /** + * 查询当前个人待执行的任务 + */ + @Test + public void findPendingTaskList() { + //任务负责人 + String assignee = "zhangsan"; + List list = taskService.createTaskQuery().taskAssignee(assignee)//只查询该任务负责人的任务 + .list(); + for (Task task : list) { + System.out.println("流程实例id:" + task.getProcessInstanceId()); + System.out.println("任务id:" + task.getId()); + System.out.println("任务负责人:" + task.getAssignee()); + System.out.println("任务名称:" + task.getName()); + } + } + + +} diff --git a/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome2.java b/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome2.java new file mode 100644 index 0000000..4928824 --- /dev/null +++ b/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome2.java @@ -0,0 +1,251 @@ +package com.atguigu.auth.activti; + +import org.activiti.engine.HistoryService; +import org.activiti.engine.RepositoryService; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; +import org.activiti.engine.repository.Deployment; +import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.Task; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * ClassName: ProcessTestDome2 + * Package: com.atguigu.auth.activti + * + * @author yovinchen + * @Create 2023/6/12 20:38 + */ +@RunWith(SpringRunner.class) +@SpringBootTest +public class ProcessTestDome2 { + + + /** + * 流程定义 + */ + @Autowired + private RepositoryService repositoryService; + + /** + * 流程实例 + */ + @Autowired + private RuntimeService runtimeService; + + /** + * 流程任务 + */ + @Autowired + private TaskService taskService; + + /** + * 相关操作历史 + */ + @Autowired + private HistoryService historyService; + +// /** +// * 部署流程定义 +// */ +// @Test +// public void deployProcess02() { +// Deployment deploy = repositoryService.createDeployment().addClasspathResource("process/overtime.bpmn20.xml").name("加班申请流程02").deploy(); +// System.out.println("deploy.getId() = " + deploy.getId()); +// System.out.println("deploy.getName() = " + deploy.getName()); +// } +// +// /** +// * 启动流程实例 +// */ +// @Test +// public void startProcessInstance02() { +// ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("overtime02"); +// System.out.println("processInstance.getProcessDefinitionId() = " + processInstance.getProcessDefinitionId()); +// System.out.println("processInstance.getId() = " + processInstance.getId()); +// } +// +// +// /** +// * 查询个人的代办任务--Jack1 +// */ +// @Test +// public void findTaskList02() { +// String assign = "Jack1"; +// List list = taskService.createTaskQuery().taskAssignee(assign).list(); +// for (Task task : list) { +// System.out.println("task.getProcessInstanceId() = " + task.getProcessInstanceId()); +// System.out.println("任务id:" + task.getId()); +// System.out.println("任务负责人:" + task.getAssignee()); +// System.out.println("任务名称:" + task.getName()); +// } +// } +// +////-----------------------uel-method--------------------------------- +// +// /** +// * 部署流程定义 +// */ +// @Test +// public void deployProcess01() { +// // 流程部署 +// Deployment deploy = repositoryService.createDeployment() +// .addClasspathResource("process/overtime01.bpmn20.xml") +// .name("加班申请流程01") +// .deploy(); +// System.out.println(deploy.getId()); +// System.out.println(deploy.getName()); +// } +// +// /** +// * 启动流程实例 +// */ +// @Test +// public void startUpProcess02() { +// //创建流程实例,我们需要知道流程定义的key +// ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("overtime01"); +// //输出实例的相关信息 +// System.out.println("流程定义id:" + processInstance.getProcessDefinitionId()); +// System.out.println("流程实例id:" + processInstance.getId()); +// } +// +// /** +// * 查询个人的代办任务--Mac +// */ +// @Test +// public void findTaskList01() { +// String assign = "Mac"; +// List list = taskService.createTaskQuery() +// .taskAssignee(assign).list(); +// for (Task task : list) { +// System.out.println("task.getProcessInstanceId() = " + task.getProcessInstanceId()); // abb9c7c4-bb20-11ed-b608-005056c00001 +// System.out.println("任务id:" + task.getId()); // abbd4a38-bb20-11ed-b608-005056c00001 +// System.out.println("任务负责人:" + task.getAssignee()); // LiLei +// System.out.println("任务名称:" + task.getName()); // 经理审批 +// } +// } +// +////---------------------------------uel-value--------------------------------------- + + /** + * 部署流程定义 + */ + @Test + public void deployProcess() { + // 流程部署 + Deployment deploy = repositoryService.createDeployment() + .addClasspathResource("process/overtime.bpmn20.xml") + .name("加班申请流程") + .deploy(); + System.out.println(deploy.getId()); + System.out.println(deploy.getName()); + } + + /** + * 启动流程实例 + */ + @Test + public void startUpProcess() { + Map map = new HashMap<>(); + map.put("assignee1", "Lucy01"); + map.put("assignee2", "Mack01"); + //创建流程实例,我们需要知道流程定义的key + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("overtime", map); + //输出实例的相关信息 + System.out.println("流程定义id:" + processInstance.getProcessDefinitionId()); + System.out.println("流程实例id:" + processInstance.getId()); + } + + + /** + * 查询当前个人待执行的任务 + */ + @Test + public void findPendingTaskList() { + //任务负责人 + String assignee = "Lucy01"; + List list = taskService.createTaskQuery().taskAssignee(assignee)//只查询该任务负责人的任务 + .list(); + for (Task task : list) { + System.out.println("流程实例id:" + task.getProcessInstanceId()); + System.out.println("任务id:" + task.getId()); + System.out.println("任务负责人:" + task.getAssignee()); + System.out.println("任务名称:" + task.getName()); + } + } +//--------------------------------------------------------------------------------- + + /** + * 部署流程定义 + */ + @Test + public void deployProcess03() { + // 流程部署 + Deployment deploy = repositoryService.createDeployment() + .addClasspathResource("process/overtime.bpmn20.xml") + .name("加班申请流程") + .deploy(); + System.out.println(deploy.getId()); + System.out.println(deploy.getName()); + } + + /** + * 启动流程实例 + */ + @Test + public void startUpProcess03() { + Map map = new HashMap<>(); + map.put("assignee1", "Lucy03"); +// map.put("assignee2", "Mack01"); + //创建流程实例,我们需要知道流程定义的key + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("overtime", map); + //输出实例的相关信息 + System.out.println("流程定义id:" + processInstance.getProcessDefinitionId()); + System.out.println("流程实例id:" + processInstance.getId()); + } + + + @Test + public void completTask() { + Task task = taskService.createTaskQuery() + .taskAssignee("Lucy03") //要查询的负责人 + .singleResult();//返回一条 + + Map variables = new HashMap<>(); + variables.put("assignee2", "zhao"); + //完成任务,参数:任务id + taskService.complete(task.getId(), variables); + } + + /** + * 查询当前个人待执行的任务 + *

+ * 流程实例id:245a58e7-0923-11ee-8637-b60fbe4e0138 + * 任务id:29c9f30a-0923-11ee-abdf-b60fbe4e0138 + * 任务负责人:zhao + * 任务名称:Personnel approval + */ + @Test + public void findPendingTaskList03() { + //任务负责人 + String assignee = "zhao"; + List list = taskService.createTaskQuery().taskAssignee(assignee)//只查询该任务负责人的任务 + .list(); + for (Task task : list) { + System.out.println("流程实例id:" + task.getProcessInstanceId()); + System.out.println("任务id:" + task.getId()); + System.out.println("任务负责人:" + task.getAssignee()); + System.out.println("任务名称:" + task.getName()); + } + } + + +} diff --git a/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome3.java b/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome3.java new file mode 100644 index 0000000..069a069 --- /dev/null +++ b/service-oa/src/test/java/com/atguigu/auth/activti/ProcessTestDome3.java @@ -0,0 +1,138 @@ +package com.atguigu.auth.activti; + +import org.activiti.engine.HistoryService; +import org.activiti.engine.RepositoryService; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; +import org.activiti.engine.repository.Deployment; +import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.Task; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * ClassName: ProcessTestDome3 + * Package: com.atguigu.auth.activti + * + * @author yovinchen + * @Create 2023/6/12 20:38 + */ +@RunWith(SpringRunner.class) +@SpringBootTest +public class ProcessTestDome3 { + + + /** + * 流程定义 + */ + @Autowired + private RepositoryService repositoryService; + + /** + * 流程实例 + */ + @Autowired + private RuntimeService runtimeService; + + /** + * 流程任务 + */ + @Autowired + private TaskService taskService; + + /** + * 相关操作历史 + */ + @Autowired + private HistoryService historyService; + + /** + * 1.部署流程定义和启动流程实例 + */ + @Test + public void deployProcess03() { + // 流程部署 + Deployment deploy = repositoryService.createDeployment().addClasspathResource("process/overtime04.bpmn20.xml").name("加班申请流程04").deploy(); + System.out.println(deploy.getId()); + System.out.println(deploy.getName()); + + Map map = new HashMap<>(); +// map.put("assignee1", "Lucy03"); +// map.put("assignee2", "Mack01"); + //创建流程实例,我们需要知道流程定义的key + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("overtime04", map); + //输出实例的相关信息 + System.out.println("流程定义id:" + processInstance.getProcessDefinitionId()); + System.out.println("流程实例id:" + processInstance.getId()); + } + + /** + * 2.查询组任务 + */ + @Test + public void findGroupTaskList() { + List list = taskService.createTaskQuery() + .taskCandidateUser("tom01") + .list(); + for (Task task : list) { + System.out.println("----------------------------"); + System.out.println("流程实例id:" + task.getProcessInstanceId()); + System.out.println("任务id:" + task.getId()); + System.out.println("任务负责人:" + task.getAssignee()); + System.out.println("任务名称:" + task.getName()); + } + } + + /** + * 3.拾取组任务 + */ + @Test + public void claimTask() { + //拾取任务,即使该用户不是候选人也能拾取(建议拾取时校验是否有资格) + //校验该用户有没有拾取任务的资格 + Task task = taskService.createTaskQuery() + .taskCandidateUser("tom01")//根据候选人查询 + .singleResult(); + if (task != null) { + //拾取任务 + taskService.claim(task.getId(), "tom01"); + System.out.println("任务拾取成功"); + } + } + + /** + * 4.查询个人代办任务 + */ + @Test + public void findGroupPendingTaskList() { + //任务负责人 + String assignee = "tom01"; + List list = taskService.createTaskQuery() + .taskAssignee(assignee)//只查询该任务负责人的任务 + .list(); + for (Task task : list) { + System.out.println("流程实例id:" + task.getProcessInstanceId()); + System.out.println("任务id:" + task.getId()); + System.out.println("任务负责人:" + task.getAssignee()); + System.out.println("任务名称:" + task.getName()); + } + } + + /** + * 5.办理个人任务 + */ + @Test + public void completGroupTask() { + Task task = taskService.createTaskQuery() + .taskAssignee("tom01") //要查询的负责人 + .singleResult();//返回一条 + taskService.complete(task.getId()); + } +} diff --git a/service-oa/src/test/java/com/atguigu/auth/activti/UserBean.java b/service-oa/src/test/java/com/atguigu/auth/activti/UserBean.java new file mode 100644 index 0000000..75c3643 --- /dev/null +++ b/service-oa/src/test/java/com/atguigu/auth/activti/UserBean.java @@ -0,0 +1,25 @@ +package com.atguigu.auth.activti; + +import org.springframework.stereotype.Component; + +/** + * ClassName: UserBean + * Package: com.atguigu.auth.activti + * + * @author yovinchen + * @Create 2023/6/12 14:52 + */ + +@Component +public class UserBean { + + public String getUsername(int id) { + if (id == 1) { + return "Mac"; + } + if (id == 2) { + return "Lila"; + } + return "admin"; + } +} diff --git a/service-oa/src/test/java/com/atguigu/code/CodeGet.java b/service-oa/src/test/java/com/atguigu/code/CodeGet.java index a622a92..4be8cab 100644 --- a/service-oa/src/test/java/com/atguigu/code/CodeGet.java +++ b/service-oa/src/test/java/com/atguigu/code/CodeGet.java @@ -38,7 +38,7 @@ public class CodeGet { // 4、包配置 PackageConfig pc = new PackageConfig(); pc.setParent("com.atguigu"); - pc.setModuleName("auth"); //模块名 + pc.setModuleName("process"); //模块名 pc.setController("controller"); pc.setService("service"); pc.setMapper("mapper"); @@ -47,7 +47,7 @@ public class CodeGet { // 5、策略配置 StrategyConfig strategy = new StrategyConfig(); - strategy.setInclude("sys_menu","sys_role_menu"); + strategy.setInclude("oa_process_type","oa_process_template"); //数据库表映射到实体的命名策略 strategy.setNaming(NamingStrategy.underline_to_camel); //数据库表字段映射到实体的命名策略 diff --git a/service-oa/src/test/java/com/atguigu/process/Test.java b/service-oa/src/test/java/com/atguigu/process/Test.java new file mode 100644 index 0000000..4d40368 --- /dev/null +++ b/service-oa/src/test/java/com/atguigu/process/Test.java @@ -0,0 +1,37 @@ +package com.atguigu.process; + +import com.atguigu.common.result.Result; +import com.atguigu.model.process.ProcessTemplate; +import com.atguigu.model.system.SysRole; +import com.atguigu.process.service.OaProcessTemplateService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +import java.util.List; + +/** + * ClassName: Test + * Package: com.atguigu.process + * + * @author yovinchen + * @Create 2023/6/15 18:32 + */ +@SpringBootTest +public class Test { + + @Autowired + private OaProcessTemplateService processTemplateService; + @org.junit.jupiter.api.Test + public void getPage() { + Page pageInfo = new Page<>(1, 10); + //分页查询审批模板,把审批类型对应名称查询 + IPage pageModel = + processTemplateService.selectPageProcessTemplate(pageInfo); + + } +}