update 优化任务操作,委派、转办、加签、减签、修改办理人等
This commit is contained in:
parent
da4ae65432
commit
f3091e8742
@ -5,8 +5,9 @@ import cn.hutool.core.util.ObjectUtil;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
import org.dromara.common.core.enums.BusinessStatusEnum;
|
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.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
import org.dromara.common.log.annotation.Log;
|
import org.dromara.common.log.annotation.Log;
|
||||||
import org.dromara.common.log.enums.BusinessType;
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
@ -162,71 +163,75 @@ public class FlwTaskController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 委派任务
|
* 任务操作
|
||||||
*
|
*
|
||||||
* @param bo 参数
|
* @param bo 参数
|
||||||
*/
|
* @param taskOperation 操作类型,区分委派、转办、加签、减签、修改办理人
|
||||||
@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 参数
|
|
||||||
*/
|
*/
|
||||||
@Log(title = "任务管理", businessType = BusinessType.UPDATE)
|
@Log(title = "任务管理", businessType = BusinessType.UPDATE)
|
||||||
@RepeatSubmit()
|
@RepeatSubmit
|
||||||
@PostMapping("/transferTask")
|
@PostMapping("/{taskOperation}")
|
||||||
public R<Void> transferTask(@Validated({AddGroup.class}) @RequestBody FlowTransferBo bo) {
|
public R<Void> taskOperation(@Validated @RequestBody TaskOperationBo bo, @PathVariable String taskOperation) {
|
||||||
FlowParams flowParams = new FlowParams();
|
FlowParams flowParams = new FlowParams();
|
||||||
flowParams.addHandlers(bo.getUserIdentifierList());
|
|
||||||
flowParams.message(bo.getMessage());
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加签
|
* TODO 待删除的方法(用上面那个),修改任务办理人
|
||||||
*
|
|
||||||
* @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));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改任务办理人
|
|
||||||
*
|
*
|
||||||
* @param taskId 任务id
|
* @param taskId 任务id
|
||||||
* @param userId 办理人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;
|
private Long sortNum;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user