From d7e617700148c6f5ec2495a4a9030ec7461c4862 Mon Sep 17 00:00:00 2001 From: lixuetao Date: Tue, 12 Dec 2023 16:16:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B6=85=E8=BF=877=E5=A4=A9=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/ShiroFilterConfiguration.java | 2 + .../main/resources/application-dev.properties | 11 +-- .../impl/ITtReportManageActServiceImpl.java | 7 +- .../service/TaskTodoService.java | 30 ++++--- .../task/TodoTaskController.java | 8 +- .../wkflow/timer/OverdueAutoApproveTimer.java | 83 +++++++++++++++++++ 6 files changed, 121 insertions(+), 20 deletions(-) create mode 100644 report-activity/src/main/java/com/adc/da/wkflow/timer/OverdueAutoApproveTimer.java diff --git a/adc-da-login/src/main/java/com/adc/da/login/config/ShiroFilterConfiguration.java b/adc-da-login/src/main/java/com/adc/da/login/config/ShiroFilterConfiguration.java index 6fbb938..f3debd5 100644 --- a/adc-da-login/src/main/java/com/adc/da/login/config/ShiroFilterConfiguration.java +++ b/adc-da-login/src/main/java/com/adc/da/login/config/ShiroFilterConfiguration.java @@ -84,6 +84,8 @@ public class ShiroFilterConfiguration { Map filterChainDefinitionMap = new LinkedHashMap<>(); +// filterChainDefinitionMap.put(restPath + "/autoApproveOverDue7", ANON); + /* 校验单点登录ticket 不需要认证 */ filterChainDefinitionMap.put(restPath + "/login", ANON); diff --git a/adc-da-main/src/main/resources/application-dev.properties b/adc-da-main/src/main/resources/application-dev.properties index 649110a..395baa8 100644 --- a/adc-da-main/src/main/resources/application-dev.properties +++ b/adc-da-main/src/main/resources/application-dev.properties @@ -63,8 +63,8 @@ swaggerLevel=0 # \u672C\u5730\u5B58\u50A8\u6587\u4EF6\u7684\u78C1\u76D8\u5730\u5740 #uploadFile=D:\\work\\idea\\changan\\ -#uploadFile=D:\\uploadfile\\tmp\\ -uploadFile=/data/DeploymentPackage/report_library/uploadfile/ +uploadFile=D:\\uploadfile\\tmp\\ +#uploadFile=/data/DeploymentPackage/report_library/uploadfile/ # \u672C\u5730\u6587\u4EF6\u8BBF\u95EE\u7684url\u5730\u5740 picPath=/api/home/pic/ @@ -92,11 +92,11 @@ IPANDPORT=http://localhost:7060/ #redis #Redis\u670D\u52A1\u5668\u5730\u5740 -spring.redis.host=10.10.10.44 +spring.redis.host=10.10.10.45 ## Redis\u670D\u52A1\u5668\u8FDE\u63A5\u7AEF\u53E3 spring.redis.port=6379 ## Redis\u670D\u52A1\u5668\u8FDE\u63A5\u5BC6\u7801\uFF08\u9ED8\u8BA4\u4E3A\u7A7A\uFF09 -spring.redis.password=123456 +spring.redis.password=hzwlsoft.com ## \u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09 spring.redis.timeout=200000ms ## \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u662F8\u3002 @@ -111,7 +111,8 @@ spring.redis.jedis.pool.max-wait=2000ms spring.redis.database=2 # \u4E0A\u4F20\u65B9\u5F0F\uFF1A\u963F\u91CC\u4E91\uFF1Aalioss \u534E\u4E3A\u4E91\uFF1Ahwobs \u672C\u5730\uFF1Alocal -uploadType: hwobs +#uploadType: hwobs +uploadType: local # \u672C\u5730\u6587\u4EF6\u5B58\u50A8\u5730\u5740 localFilePath=D:\\uploadfile\\ diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java index 25063aa..5707718 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java @@ -179,7 +179,12 @@ public class ITtReportManageActServiceImpl extends ServiceImpl= #{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; diff --git a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java index 66dc079..1715807 100644 --- a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java +++ b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java @@ -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 list = nativeTaskQuery.list(); - List listPage = this.startPage(list, taskCommonQuery.getCurrent(), taskCommonQuery.getSize()); + + List 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); diff --git a/report-activity/src/main/java/com/adc/da/wkflow/timer/OverdueAutoApproveTimer.java b/report-activity/src/main/java/com/adc/da/wkflow/timer/OverdueAutoApproveTimer.java new file mode 100644 index 0000000..e190a2b --- /dev/null +++ b/report-activity/src/main/java/com/adc/da/wkflow/timer/OverdueAutoApproveTimer.java @@ -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 responseMessage = todoTaskController.todoTaskListByUserId(taskCommonQuery); + Page page = responseMessage.getData(); + List 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(); + } + } + } + +}