Преглед на файлове

feat: 新增审批超期功能

huangzqa преди 1 година
родител
ревизия
e9de9fb299

+ 30 - 0
approve-api/src/main/java/com/dragonsoft/dcuc/approve/facade/IOpsFacade.java

@@ -0,0 +1,30 @@
+package com.dragonsoft.dcuc.approve.facade;
+
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/7/19
+ */
+@Api(tags = "运维")
+@FeignClient(name = "approve")
+public interface IOpsFacade {
+
+    /**
+     * 开始超期审批单任务
+     *
+     * @return 状态
+     */
+    @ApiOperation(value = "开始超期审批单任务", notes = "开始超期审批单任务")
+    @RequestMapping(value = "v1/ops/scheduling-expiration_task", method = RequestMethod.GET)
+    ResponseStatus schedulingExpirationTask();
+}

+ 1 - 1
approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/resp/ApprovalInfoRespVO.java

@@ -105,7 +105,7 @@ public class ApprovalInfoRespVO {
     private Date createTime;
 
     /**
-     * 期时间
+     * 期时间
      */
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

+ 2 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/ApproveApplication.java

@@ -7,11 +7,13 @@ import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 /**
  * @author wangrs
  * @date 2021/01/22
  */
+@EnableScheduling
 @SpringBootApplication(scanBasePackages = {"com.dragonsoft.*", "com.dragoninfo.*"})
 @EnableDiscoveryClient
 @EnableFeignClients(basePackages = {"com.dragonsoft.*", "com.dragoninfo.*"})

+ 1 - 1
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/business/IApproveExpirationBusiness.java

@@ -13,6 +13,6 @@ public interface IApproveExpirationBusiness {
     /**
      * 调度任务
      */
-    void schedulingTask();
+    void schedulingExpirationTask();
 
 }

+ 24 - 4
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/business/impl/ApproveExpirationBusinessImpl.java

@@ -2,6 +2,7 @@ package com.dragonsoft.dcuc.approve.business.impl;
 
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import com.dragoninfo.dcuc.common.annotation.CacheLock;
 import com.dragonsoft.auditlog.collection.qmtj.LogSendComponent;
 import com.dragonsoft.auditlog.collection.qmtj.pojo.req.ApproveBusLog;
 import com.dragonsoft.dcuc.approve.business.IApproveExpirationBusiness;
@@ -12,9 +13,11 @@ import com.dragonsoft.dcuc.approve.service.IApproveRecordService;
 import com.dragonsoft.duceap.commons.util.UUIDUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -50,16 +53,27 @@ public class ApproveExpirationBusinessImpl implements IApproveExpirationBusiness
         this.approveProperties = approveProperties;
     }
 
+    @Scheduled(cron = "0 0 * * * ?")
     @Override
-    public void schedulingTask() {
+    public void schedulingExpirationTask() {
         Integer overdueTimeDays = approveProperties.getExpirationTimeDays();
         //
         DateTime date = DateUtil.date();
-        DateTime startExpirationDateTime = DateUtil.offsetDay(date, -overdueTimeDays);
-        // 开始过期的时间
+        Date startExpirationDateTime = DateUtil.offsetDay(date, -overdueTimeDays);
+
+        execExpirationApprove(startExpirationDateTime);
+    }
+
+    @CacheLock
+    public void execExpirationApprove(Date startExpirationDateTime) {
+        String startExpirationDateTimeString = DateUtil.formatDateTime(startExpirationDateTime);
+        log.info("开始检查超期审批单:超期开始时间 {}", startExpirationDateTimeString);
+        DateTime date = DateUtil.date();
+        // 开始超期的时间
         List<ApproveRecordInfo> expirationTimeRecord = approveRecordService.findExpirationTimeRecord(startExpirationDateTime);
         for (ApproveRecordInfo approveRecordInfo : expirationTimeRecord) {
             approveRecordInfo.setExpirationTime(date);
+            approveRecordInfo.setUpdateTime(date);
             approveRecordService.updateById(approveRecordInfo);
             sendAuditOverdueTimeLog(approveRecordInfo);
         }
@@ -95,11 +109,17 @@ public class ApproveExpirationBusinessImpl implements IApproveExpirationBusiness
         approveBusLog.setBusinessType("23");
         approveBusLog.setApproveContentHash("");
         approveBusLog.setApproveTableHash("");
+        approveBusLog.setApproveId("");
+        approveBusLog.setApproveIdCard("");
+        approveBusLog.setApproveName("");
+        approveBusLog.setApproveResult("");
+        approveBusLog.setApproveTime("");
+        approveBusLog.setApproveInforceTime("");
 
         approveBusLog.setApproveTaskId(approveLogId);
         approveBusLog.setApplySystemId("");
         approveBusLog.setApproveCenterId(approveNo);
-        approveBusLog.setExtend(ApproveOperateLogEventListener.EXTEND);
+        approveBusLog.setExtend("1");
         approveBusLog.setRelatedId("");
 
         List<ApproveBusLog> approveBusLogList = Collections.singletonList(approveBusLog);

+ 31 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/facade/OpsFacade.java

@@ -0,0 +1,31 @@
+package com.dragonsoft.dcuc.approve.facade;
+
+import com.dragonsoft.dcuc.approve.business.IApproveExpirationBusiness;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/7/19
+ */
+@RestController
+public class OpsFacade implements IOpsFacade {
+
+    private IApproveExpirationBusiness approveExpirationBusiness;
+
+    @Autowired
+    public void setApproveExpirationBusiness(IApproveExpirationBusiness approveExpirationBusiness) {
+        this.approveExpirationBusiness = approveExpirationBusiness;
+    }
+
+    @Override
+    public ResponseStatus schedulingExpirationTask() {
+        approveExpirationBusiness.schedulingExpirationTask();
+        return ResponseStatus.success();
+    }
+}

+ 1 - 1
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/model/ApprovalInfo.java

@@ -211,7 +211,7 @@ public class ApprovalInfo implements Serializable {
      */
     private String applicantAppToken;
     /**
-     * 期时间
+     * 期时间
      */
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date expirationTime;

+ 5 - 1
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/model/ApproveRecordInfo.java

@@ -11,6 +11,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import org.apache.ibatis.type.JdbcType;
 import org.springframework.beans.BeanUtils;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
@@ -242,6 +244,7 @@ public class ApproveRecordInfo {
     /**
      * 创建时间
      */
+    @CreatedDate
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField(jdbcType = JdbcType.TIMESTAMP)
@@ -255,6 +258,7 @@ public class ApproveRecordInfo {
     /**
      * 更新时间
      */
+    @LastModifiedDate
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField(jdbcType = JdbcType.TIMESTAMP)
@@ -289,7 +293,7 @@ public class ApproveRecordInfo {
     private String approveTaskClass;
 
     /**
-     * 期时间
+     * 期时间
      */
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @TableField(jdbcType = JdbcType.TIMESTAMP)

+ 3 - 3
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/IApproveRecordService.java

@@ -133,9 +133,9 @@ public interface IApproveRecordService {
     String getTaskNoByDate(String appCode, String dateTimeStr);
 
     /**
-     * 获取期的审批
-     * @param startExpirationDateTime  开始期的时间
-     * @return 期的审批单
+     * 获取期的审批
+     * @param startExpirationDateTime  开始期的时间
+     * @return 期的审批单
      */
     List<ApproveRecordInfo> findExpirationTimeRecord(Date startExpirationDateTime);
 }

+ 3 - 3
approve-core-service/src/main/resources/config/mysql/V1_1_0018__add_ApplyInfo_.sql

@@ -1,6 +1,6 @@
 ALTER TABLE t_approve_record_info
-    ADD applicant_ip varchar(32) NULL COMMENT '申请人IP' AFTER `applicant_org_name`;;
+    ADD applicant_ip varchar(32) NULL COMMENT '申请人IP' AFTER `applicant_org_name`;
 ALTER TABLE t_approve_record_info
-    ADD applicant_app_token varchar(1024) NULL COMMENT '申请人应用令牌' AFTER `applicant_ip`;;
+    ADD applicant_app_token varchar(1024) NULL COMMENT '申请人应用令牌' AFTER `applicant_ip`;
 ALTER TABLE t_approve_record_info
-    ADD expiration_time datetime NULL COMMENT '过期时间' AFTER `approve_task_class`;;
+    ADD expiration_time datetime NULL COMMENT '过期时间' AFTER `approve_task_class`;