update 优化任务操作,委派、转办、加签、减签、修改办理人等
This commit is contained in:
parent
da4ae65432
commit
f3091e8742
@ -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<Void> 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<Void> transferTask(@Validated({AddGroup.class}) @RequestBody FlowTransferBo bo) {
|
||||
@RepeatSubmit
|
||||
@PostMapping("/{taskOperation}")
|
||||
public R<Void> 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<Void> 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<Void> 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
|
||||
|
@ -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<String> userIds;
|
||||
|
||||
/**
|
||||
* 任务id
|
||||
*/
|
||||
@NotNull(message = "任务id不能为空", groups = {AddGroup.class})
|
||||
private Long taskId;
|
||||
|
||||
/**
|
||||
* 意见
|
||||
*/
|
||||
private String message;
|
||||
|
||||
/**
|
||||
* 获取包含用户标识符的列表
|
||||
* <p>
|
||||
* 该方法将用户代码(由 `USER.getCode()` 获取)与 `userIds` 列表中的每个用户ID拼接,
|
||||
* 然后返回一个新的列表,其中每个元素都是用户代码与用户ID的拼接结果
|
||||
*
|
||||
* @return 返回一个列表,其中每个元素是由用户代码和用户ID拼接而成的字符串
|
||||
*/
|
||||
public List<String> getUserIdentifierList() {
|
||||
return StreamUtils.toList(userIds, userId -> USER.getCode() + userId);
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
/**
|
||||
* 获取包含用户标识符的列表
|
||||
* <p>
|
||||
* 该方法将用户的代码(由 `USER.getCode()` 获取)与当前用户的 ID(`userId`)进行拼接,
|
||||
* 然后返回一个包含该拼接结果的单一元素列表
|
||||
*
|
||||
* @return 返回一个列表,列表中包含一个字符串元素,该元素是由用户代码和用户ID拼接而成
|
||||
*/
|
||||
public List<String> getUserIdentifierList() {
|
||||
return Collections.singletonList(USER.getCode() + userId);
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
/**
|
||||
* 获取包含用户标识符的列表
|
||||
* <p>
|
||||
* 该方法将用户的代码(由 `USER.getCode()` 获取)与当前用户的 ID(`userId`)进行拼接,
|
||||
* 然后返回一个包含该拼接结果的单一元素列表
|
||||
*
|
||||
* @return 返回一个列表,列表中包含一个字符串元素,该元素是由用户代码和用户ID拼接而成
|
||||
*/
|
||||
public List<String> getUserIdentifierList() {
|
||||
return Collections.singletonList(USER.getCode() + userId);
|
||||
}
|
||||
|
||||
}
|
@ -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<String> userIds;
|
||||
|
||||
/**
|
||||
* 任务id
|
||||
*/
|
||||
@NotNull(message = "任务id不能为空", groups = {AddGroup.class})
|
||||
private Long taskId;
|
||||
|
||||
/**
|
||||
* 意见
|
||||
*/
|
||||
private String message;
|
||||
}
|
@ -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<String> userIds;
|
||||
|
||||
/**
|
||||
* 任务ID(必填)
|
||||
*/
|
||||
@NotNull(message = "任务id不能为空")
|
||||
private Long taskId;
|
||||
|
||||
/**
|
||||
* 意见或备注信息(可选)
|
||||
*/
|
||||
private String message;
|
||||
|
||||
/**
|
||||
* 获取委派或转办的用户标识符列表
|
||||
* <p>
|
||||
* 该方法将用户的代码(由 `USER.getCode()` 获取)与当前用户的 ID(`userId`)进行拼接,返回一个包含拼接结果的单一元素列表
|
||||
*
|
||||
* @return 返回一个包含用户标识符的单一元素列表
|
||||
*/
|
||||
public List<String> getUserIdentifiers() {
|
||||
return Optional.ofNullable(userId)
|
||||
.map(id -> Collections.singletonList(USER.getCode() + id))
|
||||
.orElse(Collections.emptyList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取加签或减签的用户标识符列表
|
||||
* <p>
|
||||
* 该方法将用户代码(由 `USER.getCode()` 获取)与 `userIds` 列表中的每个用户ID拼接
|
||||
* 返回一个新的列表,每个元素都是用户代码与用户ID的拼接结果
|
||||
*
|
||||
* @return 返回一个包含所有用户标识符的列表
|
||||
*/
|
||||
public List<String> getAllUserIdentifiers() {
|
||||
return Optional.ofNullable(userIds)
|
||||
.filter(ids -> !ids.isEmpty())
|
||||
.map(ids -> StreamUtils.toList(ids, id -> USER.getCode() + id))
|
||||
.orElse(Collections.emptyList());
|
||||
}
|
||||
|
||||
}
|
@ -50,5 +50,4 @@ public class WfCategoryBo extends BaseEntity {
|
||||
*/
|
||||
private Long sortNum;
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user