|
@@ -11,17 +11,22 @@ import io.swagger.annotations.ApiOperation;
|
|
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
|
import org.springblade.business.entity.TaskParallel;
|
|
|
import org.springblade.business.service.ITaskParallelService;
|
|
|
+import org.springblade.business.vo.BatchTaskVO;
|
|
|
import org.springblade.business.vo.TaskApprovalVO;
|
|
|
import org.springblade.business.vo.TaskQueryVO;
|
|
|
import org.springblade.common.utils.CommonUtil;
|
|
|
import org.springblade.core.mp.support.Condition;
|
|
|
import org.springblade.core.mp.support.Query;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
+import org.springblade.core.sms.model.SmsResponse;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
+import org.springblade.core.tool.jackson.JsonUtil;
|
|
|
import org.springblade.flow.core.entity.BladeFlow;
|
|
|
import org.springblade.flow.core.feign.NewFlowClient;
|
|
|
+import org.springblade.resource.feign.NewISmsClient;
|
|
|
import org.springblade.system.entity.DictBiz;
|
|
|
import org.springblade.system.feign.IDictBizClient;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
@@ -32,10 +37,7 @@ import org.springblade.business.vo.TaskVO;
|
|
|
import org.springblade.business.service.ITaskService;
|
|
|
import org.springblade.core.boot.ctrl.BladeController;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -58,6 +60,22 @@ public class TaskController extends BladeController {
|
|
|
|
|
|
private final IDictBizClient dictBizClient;
|
|
|
|
|
|
+ private final NewISmsClient newSmsClient;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 短信验证
|
|
|
+ */
|
|
|
+ @PostMapping("/send-notice")
|
|
|
+ @ApiOperationSupport(order = 10)
|
|
|
+ @ApiOperation(value = "短信验证")
|
|
|
+ public R<Boolean> sendNotice(@RequestParam String phone){
|
|
|
+ String code = CommonUtil.getCharAndNumber(4);
|
|
|
+ Map<String, String> params = new HashMap<>(3);
|
|
|
+ params.put("code", code);
|
|
|
+ R<SmsResponse> result = this.newSmsClient.sendMessage("test_code", JsonUtil.toJson(params), phone);
|
|
|
+ return result.getData().isSuccess() ? R.data(200, true, code) : R.data(499, false, String.valueOf(JSONObject.parseObject(result.getData().getMsg(), Map.class).get("Message")));
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取发起
|
|
|
*/
|
|
@@ -102,46 +120,49 @@ public class TaskController extends BladeController {
|
|
|
//设置关键信息
|
|
|
vo.setTypeValue(new Integer("1").equals(vo.getType()) ? "普通任务" : new Integer("2").equals(vo.getType()) ? "验收任务" : "移交任务");
|
|
|
vo.setTaskId(flow.getTaskId());
|
|
|
- vo.setStatusValue(new Integer("1").equals(task.getStatus()) ? "待审批" : new Integer("2").equals(task.getStatus()) ? "已审批" : "已废除");
|
|
|
+ vo.setTaskStatus(new Integer("1").equals(task.getStatus()) ? "待审批" : new Integer("2").equals(task.getStatus()) ? "已审批" : "已废除", task.getStatus());
|
|
|
//查询分支流程信息
|
|
|
List<TaskParallel> linkList = this.taskParallelService.list(Wrappers.<TaskParallel>lambdaQuery().eq(TaskParallel::getProcessInstanceId, task.getProcessInstanceId()));
|
|
|
if(linkList != null && !linkList.isEmpty()){
|
|
|
- linkList.forEach(link -> vo.setWaitingUserList(link.getTaskUserName(), new Integer("999").equals(link.getEVisaStatus()) ? 999 : new Integer("2").equals(link.getStatus()) ? 2 : 1));
|
|
|
+ this.integrationMethod(vo, linkList);
|
|
|
}
|
|
|
|
|
|
finalResult.add(vo);
|
|
|
});
|
|
|
|
|
|
//最终分页数据
|
|
|
- IPage<TaskVO> finalPage = Condition.getPage(query);
|
|
|
- finalPage.setTotal(flowIPage.getTotal());
|
|
|
- finalPage.setSize(query.getSize());
|
|
|
- finalPage.setCurrent(query.getCurrent());
|
|
|
- finalPage.setRecords(finalResult);
|
|
|
-
|
|
|
- return R.data(finalPage);
|
|
|
+ return this.getIPageR(query, flowIPage, finalResult);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return R.data(null);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 统合方法
|
|
|
+ */
|
|
|
+ private void integrationMethod(TaskVO vo, List<TaskParallel> linkList) {
|
|
|
+ linkList.forEach(link -> vo.setWaitingUserList(link.getTaskUserName(), new Integer("999").equals(link.getEVisaStatus()) ? 999 : new Integer("2").equals(link.getStatus()) ? 2 : new Integer("3").equals(link.getStatus()) && new Integer("1").equals(link.getInitiative()) ? 3 : 1));
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 批量审批
|
|
|
*/
|
|
|
@PostMapping("/batch-complete-approval-task")
|
|
|
@ApiOperationSupport(order = 8)
|
|
|
@ApiOperation(value = "批量审批")
|
|
|
- public R<Boolean> batchCompleteApprovalTask(@RequestBody TaskApprovalVO taskApprovalVO){
|
|
|
- String taskIds = taskApprovalVO.getTaskIds();
|
|
|
+ public R<Boolean> batchCompleteApprovalTask(@RequestBody BatchTaskVO batchTaskVO){
|
|
|
+ String taskIds = batchTaskVO.getTaskIds();
|
|
|
+ String parallelProcessInstanceIds = batchTaskVO.getParallelProcessInstanceIds();
|
|
|
if(StringUtils.isNotEmpty(taskIds)){
|
|
|
String[] taskIdArray = taskIds.split(",");
|
|
|
- for(String taskId : taskIdArray){
|
|
|
+ String[] parallelProcessInstanceIdArray = parallelProcessInstanceIds.split(",");
|
|
|
+ for(int i = 0, l = taskIdArray.length; i < l; i ++){
|
|
|
TaskApprovalVO approvalVO = new TaskApprovalVO();
|
|
|
- approvalVO.setTaskId(taskId);
|
|
|
- approvalVO.setParallelProcessInstanceId(taskId);
|
|
|
- approvalVO.setFlag("OK");
|
|
|
- approvalVO.setComment("同意");
|
|
|
+ approvalVO.setTaskId(taskIdArray[i]);
|
|
|
+ approvalVO.setParallelProcessInstanceId(parallelProcessInstanceIdArray[i]);
|
|
|
+ approvalVO.setFlag(batchTaskVO.getFlag());
|
|
|
+ approvalVO.setComment(batchTaskVO.getComment());
|
|
|
|
|
|
//批量审批
|
|
|
this.taskService.completeApprovalTask(approvalVO);
|
|
@@ -189,7 +210,7 @@ public class TaskController extends BladeController {
|
|
|
Map<String,TaskParallel> parallelMap = new HashMap<>();
|
|
|
List<String> parallelProcessInstanceIds = new ArrayList<>();
|
|
|
//统合查询方法
|
|
|
- this.integrationMethod(queryVO, masterTaskMap, parallelMap, parallelProcessInstanceIds, "2");
|
|
|
+ this.integrationMethod(queryVO, masterTaskMap, parallelMap, parallelProcessInstanceIds, "2,3");
|
|
|
|
|
|
//获取已办(基于原生已办)
|
|
|
R<Object> rObject = this.newFlowClient.selectDonePage(queryVO.getCurrent(), queryVO.getSize(), String.join(",", parallelProcessInstanceIds));
|
|
@@ -202,7 +223,7 @@ public class TaskController extends BladeController {
|
|
|
*/
|
|
|
@GetMapping("/query-approval-parameter")
|
|
|
@ApiOperationSupport(order = 4)
|
|
|
- @ApiOperation(value = "审批页详情")
|
|
|
+ @ApiOperation(value = "审批页详情(单任务时)")
|
|
|
public R<TaskApprovalVO> getApprovalTaskParameter(String parallelProcessInstanceId){
|
|
|
|
|
|
return R.data(null);
|
|
@@ -246,7 +267,7 @@ public class TaskController extends BladeController {
|
|
|
});
|
|
|
|
|
|
if(processInstanceIds.size() > 0){
|
|
|
- List<TaskParallel> parallelTaskList = this.taskParallelService.list(Wrappers.<TaskParallel>lambdaQuery().in(TaskParallel::getProcessInstanceId, processInstanceIds).eq(TaskParallel::getTaskUser, AuthUtil.getUserId().toString()).eq(TaskParallel::getIsDeleted, 0).eq(TaskParallel::getStatus, status));
|
|
|
+ List<TaskParallel> parallelTaskList = this.taskParallelService.list(Wrappers.<TaskParallel>lambdaQuery().in(TaskParallel::getProcessInstanceId, processInstanceIds).eq(TaskParallel::getTaskUser, AuthUtil.getUserId().toString()).eq(TaskParallel::getIsDeleted, 0).in(TaskParallel::getStatus, Arrays.asList(status.split(","))));
|
|
|
parallelTaskList.forEach(parallel -> {
|
|
|
parallelMap.put(parallel.getParallelProcessInstanceId(), parallel);
|
|
|
parallelProcessInstanceIds.add(parallel.getParallelProcessInstanceId());
|
|
@@ -310,11 +331,11 @@ public class TaskController extends BladeController {
|
|
|
vo.setTypeValue(new Integer("1").equals(vo.getType()) ? "普通任务" : new Integer("2").equals(vo.getType()) ? "验收任务" : "移交任务");
|
|
|
vo.setParallelProcessInstanceId(flow.getProcessInstanceId());
|
|
|
vo.setTaskId(flow.getTaskId());
|
|
|
- vo.setStatusValue(new Integer("1").equals(task.getStatus()) ? "待审批" : new Integer("2").equals(task.getStatus()) ? "已审批" : "已废除");
|
|
|
+ vo.setTaskStatus(new Integer("1").equals(task.getStatus()) ? "待审批" : new Integer("2").equals(task.getStatus()) ? "已审批" : "已废除", task.getStatus());
|
|
|
//获取主流程下所有相关的审批人
|
|
|
List<TaskParallel> linkList = this.taskParallelService.list(Wrappers.<TaskParallel>lambdaQuery().eq(TaskParallel::getProcessInstanceId, task.getProcessInstanceId()).eq(TaskParallel::getIsDeleted, 0));
|
|
|
if(linkList != null && linkList.size() > 0){
|
|
|
- linkList.forEach(link -> vo.setWaitingUserList(link.getTaskUserName(), new Integer("999").equals(link.getEVisaStatus()) ? 999 : new Integer("2").equals(link.getStatus()) ? 2 : 1));
|
|
|
+ this.integrationMethod(vo, linkList);
|
|
|
}
|
|
|
|
|
|
//设置最终集合
|
|
@@ -334,18 +355,23 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
|
|
|
//最终分页数据
|
|
|
- IPage<TaskVO> finalPage = Condition.getPage(query);
|
|
|
- finalPage.setTotal(flowIPage.getTotal());
|
|
|
- finalPage.setSize(query.getSize());
|
|
|
- finalPage.setCurrent(query.getCurrent());
|
|
|
- finalPage.setRecords(finalFlowList);
|
|
|
-
|
|
|
- return R.data(finalPage);
|
|
|
+ return this.getIPageR(query, flowIPage, finalFlowList);
|
|
|
}
|
|
|
}
|
|
|
return R.data(null);
|
|
|
}
|
|
|
|
|
|
+ @NotNull
|
|
|
+ private R<IPage<TaskVO>> getIPageR(Query query, IPage flowIPage, List<TaskVO> finalFlowList) {
|
|
|
+ IPage<TaskVO> finalPage = Condition.getPage(query);
|
|
|
+ finalPage.setTotal(flowIPage.getTotal());
|
|
|
+ finalPage.setSize(query.getSize());
|
|
|
+ finalPage.setCurrent(query.getCurrent());
|
|
|
+ finalPage.setRecords(finalFlowList);
|
|
|
+
|
|
|
+ return R.data(finalPage);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 完成/审批任务
|
|
|
*/
|