From f3091e87423b1956f432a440098470ae59cc29fa Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Wed, 4 Dec 2024 16:20:58 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=EF=BC=8C=E5=A7=94=E6=B4=BE=E3=80=81=E8=BD=AC?= =?UTF-8?q?=E5=8A=9E=E3=80=81=E5=8A=A0=E7=AD=BE=E3=80=81=E5=87=8F=E7=AD=BE?= =?UTF-8?q?=E3=80=81=E4=BF=AE=E6=94=B9=E5=8A=9E=E7=90=86=E4=BA=BA=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FlwTaskController.java | 121 +++++++++--------- .../workflow/domain/bo/AddSignatureBo.java | 54 -------- .../workflow/domain/bo/FlowDelegateBo.java | 54 -------- .../workflow/domain/bo/FlowTransferBo.java | 54 -------- .../domain/bo/ReductionSignatureBo.java | 38 ------ .../workflow/domain/bo/TaskOperationBo.java | 80 ++++++++++++ .../workflow/domain/bo/WfCategoryBo.java | 1 - 7 files changed, 143 insertions(+), 259 deletions(-) delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/AddSignatureBo.java delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowDelegateBo.java delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTransferBo.java delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/ReductionSignatureBo.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TaskOperationBo.java diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java index cb84d77fa..b7f52c17c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java @@ -5,8 +5,9 @@ import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.enums.BusinessStatusEnum; -import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.ValidatorUtils; import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; @@ -162,71 +163,75 @@ public class FlwTaskController extends BaseController { } /** - * 委派任务 + * 任务操作 * - * @param bo 参数 - */ - @Log(title = "任务管理", businessType = BusinessType.INSERT) - @RepeatSubmit() - @PostMapping("/delegateTask") - public R delegateTask(@Validated({AddGroup.class}) @RequestBody FlowDelegateBo bo) { - FlowParams flowParams = new FlowParams(); - flowParams.addHandlers(bo.getUserIdentifierList()); - flowParams.message(bo.getMessage()); - flowParams.hisStatus(TaskStatusEnum.DEPUTE.getStatus()); - return toAjax(taskService.depute(bo.getTaskId(), flowParams)); - } - - /** - * 转办任务 - * - * @param bo 参数 + * @param bo 参数 + * @param taskOperation 操作类型,区分委派、转办、加签、减签、修改办理人 */ @Log(title = "任务管理", businessType = BusinessType.UPDATE) - @RepeatSubmit() - @PostMapping("/transferTask") - public R transferTask(@Validated({AddGroup.class}) @RequestBody FlowTransferBo bo) { + @RepeatSubmit + @PostMapping("/{taskOperation}") + public R taskOperation(@Validated @RequestBody TaskOperationBo bo, @PathVariable String taskOperation) { FlowParams flowParams = new FlowParams(); - flowParams.addHandlers(bo.getUserIdentifierList()); flowParams.message(bo.getMessage()); - flowParams.hisStatus(TaskStatusEnum.TRANSFER.getStatus()); - return toAjax(taskService.transfer(bo.getTaskId(), flowParams)); + + // 根据操作类型构建 FlowParams + switch (taskOperation) { + case "delegateTask", "transferTask", "addSignature" -> { + ValidatorUtils.validate(bo, AddGroup.class); + flowParams.addHandlers(bo.getUserIdentifiers()); + } + case "reductionSignature" -> { + ValidatorUtils.validate(bo, EditGroup.class); + flowParams.reductionHandlers(bo.getAllUserIdentifiers()); + } + case "updateAssignee" -> { + ValidatorUtils.validate(bo, AddGroup.class); + flowParams.addHandlers(bo.getUserIdentifiers()); + flowParams.cooperateType(CooperateType.APPROVAL.getKey()); + flowParams.ignore(false); + flowParams.message("修改任务办理人"); + } + default -> { + return R.fail("Invalid operation type: " + taskOperation); + } + } + + Long taskId = bo.getTaskId(); + // 设置任务状态并执行对应的任务操作 + switch (taskOperation) { + //委派任务 + case "delegateTask" -> { + flowParams.hisStatus(TaskStatusEnum.DEPUTE.getStatus()); + return toAjax(taskService.depute(taskId, flowParams)); + } + //转办任务 + case "transferTask" -> { + flowParams.hisStatus(TaskStatusEnum.TRANSFER.getStatus()); + return toAjax(taskService.transfer(taskId, flowParams)); + } + //加签,增加办理人 + case "addSignature" -> { + flowParams.hisStatus(TaskStatusEnum.SIGN.getStatus()); + return toAjax(taskService.addSignature(taskId, flowParams)); + } + //减签,减少办理人 + case "reductionSignature" -> { + flowParams.hisStatus(TaskStatusEnum.SIGN_OFF.getStatus()); + return toAjax(taskService.reductionSignature(taskId, flowParams)); + } + //修改办理人 + case "updateAssignee" -> { + return toAjax(taskService.updateHandler(taskId, flowParams)); + } + default -> { + return R.fail("Invalid operation type: " + taskOperation); + } + } } /** - * 加签 - * - * @param bo 参数 - */ - @Log(title = "任务管理", businessType = BusinessType.INSERT) - @RepeatSubmit() - @PostMapping("/addSignature") - public R addSignature(@Validated({AddGroup.class}) @RequestBody AddSignatureBo bo) { - FlowParams flowParams = new FlowParams(); - flowParams.addHandlers(bo.getUserIdentifierList()); - flowParams.message(bo.getMessage()); - flowParams.hisStatus(TaskStatusEnum.SIGN.getStatus()); - return toAjax(taskService.addSignature(bo.getTaskId(), flowParams)); - } - - /** - * 减签 - * - * @param bo 参数 - */ - @Log(title = "任务管理", businessType = BusinessType.INSERT) - @RepeatSubmit() - @PostMapping("/reductionSignature") - public R reductionSignature(@Validated({AddGroup.class}) @RequestBody ReductionSignatureBo bo) { - FlowParams flowParams = new FlowParams(); - flowParams.reductionHandlers(StreamUtils.toList(bo.getUserIds(),u->USER.getCode()+u)); - flowParams.message(bo.getMessage()); - flowParams.hisStatus(TaskStatusEnum.SIGN_OFF.getStatus()); - return toAjax(taskService.reductionSignature(bo.getTaskId(), flowParams)); - } - - /** - * 修改任务办理人 + * TODO 待删除的方法(用上面那个),修改任务办理人 * * @param taskId 任务id * @param userId 办理人id diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/AddSignatureBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/AddSignatureBo.java deleted file mode 100644 index 7f7e43aa2..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/AddSignatureBo.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.dromara.workflow.domain.bo; - -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import org.dromara.common.core.utils.StreamUtils; -import org.dromara.common.core.validate.AddGroup; - -import java.io.Serial; -import java.io.Serializable; -import java.util.List; - -import static org.dromara.common.core.enums.TaskAssigneeEnum.USER; - -/** - * 加签请求对象 - * - * @author may - */ -@Data -public class AddSignatureBo implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 加签人id - */ - @NotNull(message = "加签id不能为空", groups = {AddGroup.class}) - private List userIds; - - /** - * 任务id - */ - @NotNull(message = "任务id不能为空", groups = {AddGroup.class}) - private Long taskId; - - /** - * 意见 - */ - private String message; - - /** - * 获取包含用户标识符的列表 - *

- * 该方法将用户代码(由 `USER.getCode()` 获取)与 `userIds` 列表中的每个用户ID拼接, - * 然后返回一个新的列表,其中每个元素都是用户代码与用户ID的拼接结果 - * - * @return 返回一个列表,其中每个元素是由用户代码和用户ID拼接而成的字符串 - */ - public List getUserIdentifierList() { - return StreamUtils.toList(userIds, userId -> USER.getCode() + userId); - } - -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowDelegateBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowDelegateBo.java deleted file mode 100644 index f58f9aaab..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowDelegateBo.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.dromara.workflow.domain.bo; - -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import org.dromara.common.core.validate.AddGroup; - -import java.io.Serial; -import java.io.Serializable; -import java.util.Collections; -import java.util.List; - -import static org.dromara.common.core.enums.TaskAssigneeEnum.USER; - -/** - * 委派任务请求对象 - * - * @author may - */ -@Data -public class FlowDelegateBo implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 委派人id - */ - @NotNull(message = "委派人id不能为空", groups = {AddGroup.class}) - private String userId; - - /** - * 任务id - */ - @NotNull(message = "任务id不能为空", groups = {AddGroup.class}) - private Long taskId; - - /** - * 意见 - */ - private String message; - - /** - * 获取包含用户标识符的列表 - *

- * 该方法将用户的代码(由 `USER.getCode()` 获取)与当前用户的 ID(`userId`)进行拼接, - * 然后返回一个包含该拼接结果的单一元素列表 - * - * @return 返回一个列表,列表中包含一个字符串元素,该元素是由用户代码和用户ID拼接而成 - */ - public List getUserIdentifierList() { - return Collections.singletonList(USER.getCode() + userId); - } - -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTransferBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTransferBo.java deleted file mode 100644 index 3a1be475a..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTransferBo.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.dromara.workflow.domain.bo; - -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import org.dromara.common.core.validate.AddGroup; - -import java.io.Serial; -import java.io.Serializable; -import java.util.Collections; -import java.util.List; - -import static org.dromara.common.core.enums.TaskAssigneeEnum.USER; - -/** - * 终转办务请求对象 - * - * @author may - */ -@Data -public class FlowTransferBo implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 转办人id - */ - @NotNull(message = "转办人id不能为空", groups = {AddGroup.class}) - private String userId; - - /** - * 任务id - */ - @NotNull(message = "任务id不能为空", groups = {AddGroup.class}) - private Long taskId; - - /** - * 意见 - */ - private String message; - - /** - * 获取包含用户标识符的列表 - *

- * 该方法将用户的代码(由 `USER.getCode()` 获取)与当前用户的 ID(`userId`)进行拼接, - * 然后返回一个包含该拼接结果的单一元素列表 - * - * @return 返回一个列表,列表中包含一个字符串元素,该元素是由用户代码和用户ID拼接而成 - */ - public List getUserIdentifierList() { - return Collections.singletonList(USER.getCode() + userId); - } - -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/ReductionSignatureBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/ReductionSignatureBo.java deleted file mode 100644 index 08b0b89d0..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/ReductionSignatureBo.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.dromara.workflow.domain.bo; - -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import org.dromara.common.core.validate.AddGroup; - -import java.io.Serial; -import java.io.Serializable; -import java.util.List; - -/** - * 减签请求对象 - * - * @author may - */ -@Data -public class ReductionSignatureBo implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 减签人id - */ - @NotNull(message = "减签id不能为空", groups = {AddGroup.class}) - private List userIds; - - /** - * 任务id - */ - @NotNull(message = "任务id不能为空", groups = {AddGroup.class}) - private Long taskId; - - /** - * 意见 - */ - private String message; -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TaskOperationBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TaskOperationBo.java new file mode 100644 index 000000000..1788fdcce --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TaskOperationBo.java @@ -0,0 +1,80 @@ +package org.dromara.workflow.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +import static org.dromara.common.core.enums.TaskAssigneeEnum.USER; + +/** + * 任务操作业务对象,用于描述任务委派、转办、加签等操作的必要参数 + * 包含了用户ID、任务ID、任务相关的消息、以及加签/减签的用户ID + * + * @author AprilWind + */ +@Data +public class TaskOperationBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 委派/转办人的用户ID(必填,准对委派/转办人/修改办理人操作) + */ + @NotNull(message = "委派/转办人id不能为空", groups = {AddGroup.class}) + private String userId; + + /** + * 加签/减签人的用户ID列表(必填,针对加签/减签操作) + */ + @NotNull(message = "加签/减签id不能为空", groups = {EditGroup.class}) + private List userIds; + + /** + * 任务ID(必填) + */ + @NotNull(message = "任务id不能为空") + private Long taskId; + + /** + * 意见或备注信息(可选) + */ + private String message; + + /** + * 获取委派或转办的用户标识符列表 + *

+ * 该方法将用户的代码(由 `USER.getCode()` 获取)与当前用户的 ID(`userId`)进行拼接,返回一个包含拼接结果的单一元素列表 + * + * @return 返回一个包含用户标识符的单一元素列表 + */ + public List getUserIdentifiers() { + return Optional.ofNullable(userId) + .map(id -> Collections.singletonList(USER.getCode() + id)) + .orElse(Collections.emptyList()); + } + + /** + * 获取加签或减签的用户标识符列表 + *

+ * 该方法将用户代码(由 `USER.getCode()` 获取)与 `userIds` 列表中的每个用户ID拼接 + * 返回一个新的列表,每个元素都是用户代码与用户ID的拼接结果 + * + * @return 返回一个包含所有用户标识符的列表 + */ + public List getAllUserIdentifiers() { + return Optional.ofNullable(userIds) + .filter(ids -> !ids.isEmpty()) + .map(ids -> StreamUtils.toList(ids, id -> USER.getCode() + id)) + .orElse(Collections.emptyList()); + } + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/WfCategoryBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/WfCategoryBo.java index 69608fda3..972302c57 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/WfCategoryBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/WfCategoryBo.java @@ -50,5 +50,4 @@ public class WfCategoryBo extends BaseEntity { */ private Long sortNum; - }