超过7天自动审批开发

This commit is contained in:
lixuetao
2023-12-12 16:16:27 +08:00
parent 988dee844d
commit d7e6177001
6 changed files with 121 additions and 20 deletions
@@ -40,37 +40,41 @@ public class TaskTodoService {
StringBuilder sb = new StringBuilder();
sb.append(
"select distinct RES.* from ACT_RU_TASK RES left join ACT_RU_IDENTITYLINK I on I.TASK_ID_ = RES.ID_ inner join ACT_RE_PROCDEF D on RES.PROC_DEF_ID_ = D.ID_ ");
sb.append(" WHERE ");
sb.append(" WHERE 1 = 1 ");
//任务名称
if (StrUtil.isNotEmpty(taskCommonQuery.getName())) {
sb.append(" RES.NAME_ LIKE #{taskName} and ");
sb.append(" and RES.NAME_ LIKE #{taskName} ");
nativeTaskQuery = nativeTaskQuery.parameter("taskName", taskCommonQuery.getName());
}
//日期查询
if (StrUtil.isNotEmpty(taskCommonQuery.getStartTime())) {
sb.append(" RES.CREATE_TIME_ >= #{starttime} and ");
sb.append(" and RES.CREATE_TIME_ >= #{starttime} ");
nativeTaskQuery = nativeTaskQuery.parameter("starttime", start);
}
if (StrUtil.isNotEmpty(taskCommonQuery.getEndTime())) {
sb.append(" RES.CREATE_TIME_ <= #{endtime} and ");
sb.append(" and RES.CREATE_TIME_ <= #{endtime} ");
nativeTaskQuery = nativeTaskQuery.parameter("endtime", end);
}
sb.append(
" (RES.ASSIGNEE_=#{assignee} or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' and (I.USER_ID_=#{user_id} ))) ");
sb.append(
" or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' ) ");
sb.append(" order by RES.CREATE_TIME_ desc ");
// sb.append(" LIMIT #{current},#{size} ");
if(StringUtils.isNotBlank(taskCommonQuery.getUserId())){
sb.append(
" and (RES.ASSIGNEE_=#{assignee} or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' and (I.USER_ID_=#{user_id} ))) ");
sb.append(
" or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' ) ");
nativeTaskQuery = nativeTaskQuery.parameter("userd", taskCommonQuery.getUserId())
.parameter("assignee", taskCommonQuery.getUserId())
.parameter("user_id", taskCommonQuery.getUserId())
.parameter("current", taskCommonQuery.getCurrent())
.parameter("size", taskCommonQuery.getSize());
.parameter("user_id", taskCommonQuery.getUserId());
}
sb.append(" order by RES.CREATE_TIME_ desc ");
// sb.append(" LIMIT #{current},#{size} ");
// if(StringUtils.isNotBlank(taskCommonQuery.getUserId())){
// nativeTaskQuery = nativeTaskQuery.parameter("current", taskCommonQuery.getCurrent())
// .parameter("size", taskCommonQuery.getSize());
// }
nativeTaskQuery = nativeTaskQuery.sql(sb.toString());
return nativeTaskQuery;
@@ -59,6 +59,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.parameters.P;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -147,7 +148,12 @@ public class TodoTaskController {
// 创建查询对象
NativeTaskQuery nativeTaskQuery = taskTodoService.createSql(taskCommonQuery);
List<Task> list = nativeTaskQuery.list();
List<Task> listPage = this.startPage(list, taskCommonQuery.getCurrent(), taskCommonQuery.getSize());
List<Task> listPage = list;
if (taskCommonQuery.getCurrent() !=0 && taskCommonQuery.getSize() != 0){
listPage = this.startPage(list, taskCommonQuery.getCurrent(), taskCommonQuery.getSize());
}
if (list.size() == 0){
page.setCount(0L);
return Result.success(page);
@@ -0,0 +1,83 @@
package com.adc.da.wkflow.timer;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.adc.da.util.http.ResponseMessage;
import com.adc.da.util.utils.DateUtils;
import com.adc.da.wkflow.business_activiti.dto.Page;
import com.adc.da.wkflow.business_activiti.dto.TaskCommonQuery;
import com.adc.da.wkflow.business_activiti.task.TodoTaskController;
import com.adc.da.wkflow.business_main.entity.BusProcessName;
import com.adc.da.wkflow.business_main.vo.ApproveDataVO;
import com.adc.da.wkflow.enums.FlowTypeEnum;
import lombok.extern.slf4j.Slf4j;
import org.activiti.rest.form.ProcessDefinitionFormType;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
/**
* 上传审批超过7天自动审批
*/
@Component
@EnableScheduling
@Slf4j
//@RestController
//@RequestMapping("/${restPath}")
public class OverdueAutoApproveTimer {
@Resource
private TodoTaskController todoTaskController;
/**
* 自动审批提交后超过7天未审批的 报告上传 流程
*/
// @GetMapping("/autoApproveOverDue7")
@Scheduled(cron="0 1 0 * * *") //每晚1点执行
public void autoApproveOverDue7() throws ParseException {
TaskCommonQuery taskCommonQuery = new TaskCommonQuery();
taskCommonQuery.setPrcType(FlowTypeEnum.SCBGLC.getValue());
ResponseMessage<Page> responseMessage = todoTaskController.todoTaskListByUserId(taskCommonQuery);
Page page = responseMessage.getData();
List<BusProcessName> todoList = page.getList();
// 筛选可审批且创建时间 和当前比>7天的数据进行同意审批
final int AUTO_APPROVE_DIFF_DAY = 7;
for (BusProcessName busProcessName : todoList){
try{
if (busProcessName.getCreatTime() != null){
Date createTime = DateUtils.parseDate(busProcessName.getCreatTime(), "yyyy-MM-dd HH:mm:ss");
long diff = DateUtil.betweenDay(createTime, new Date(), false);
if (diff < AUTO_APPROVE_DIFF_DAY){
continue;
}
if (StrUtil.isNotBlank(busProcessName.getTaskDefinitionKey()) && busProcessName.getTaskDefinitionKey().equals("reEdit")){
continue;
}
// 进行同意
ApproveDataVO approveDataVO = new ApproveDataVO();
approveDataVO.setPrcType(FlowTypeEnum.SCBGLC.getValue());
approveDataVO.setTaskId(busProcessName.getTaskId());
approveDataVO.setReportId(busProcessName.getDataId());
approveDataVO.setSubmitJson("{\"flag\":1,\"approvalOpinion\":\"审批超期,系统自动通过\"}");
this.todoTaskController.completeTaskByUserId(approveDataVO);
}
} catch (Exception e){
e.printStackTrace();
}
}
}
}