From bb2309676cefae28bef14d1971ccda4b7dc38ed8 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 27 二月 2025 19:52:40 +0800
Subject: [PATCH] 审批流定时任务

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java              |  238 +++++++++++++++++++-------------------
 ruoyi-system/src/main/resources/mapper/system/StateProcessInstanceActionMapper.xml                  |   24 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessInstanceActionServiceImpl.java |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/task/jobs/StateProcessJob.java                          |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessInstanceActionService.java          |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/model/StateProcessInstanceAction.java                   |   23 +++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisConfiguration.java            |   34 ++--
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/StateProcessInstanceActionMapper.java            |    2 
 8 files changed, 189 insertions(+), 141 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisConfiguration.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisConfiguration.java
index 5390dc1..b2cbb16 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisConfiguration.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisConfiguration.java
@@ -1,17 +1,17 @@
-package com.ruoyi.web.controller.interceptor;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class MybatisConfiguration {
- 
-    /**
-     * 注册拦截器
-     */
-    @Bean
-    public MybatisInterceptor getMybatisInterceptor() {
-        return new MybatisInterceptor();
-    }
-    
-}
\ No newline at end of file
+//package com.ruoyi.web.controller.interceptor;
+//
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//
+//@Configuration
+//public class MybatisConfiguration {
+//
+//    /**
+//     * 注册拦截器
+//     */
+//    @Bean
+//    public MybatisInterceptor getMybatisInterceptor() {
+//        return new MybatisInterceptor();
+//    }
+//
+//}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
index 8c232f4..fcbd5dc 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
@@ -1,119 +1,119 @@
-package com.ruoyi.web.controller.interceptor;
-
-import com.ruoyi.framework.web.service.TokenService;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.ibatis.executor.Executor;
-import org.apache.ibatis.mapping.MappedStatement;
-import org.apache.ibatis.mapping.SqlCommandType;
-import org.apache.ibatis.plugin.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.lang.reflect.Field;
-import java.time.LocalDateTime;
-import java.util.*;
-
-@Slf4j
-@Component
-@Intercepts({ @Signature(type = Executor.class, method = "update", args = { MappedStatement.class, Object.class }) })
-public class MybatisInterceptor implements Interceptor {
-
-    @Autowired
-    private TokenService tokenService;
-
-    @Override
-    public Object intercept(Invocation invocation) throws Throwable {
-        MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
-        if("com.ruoyi.system.mapper.SysLogininforMapper.insertLogininfor".equals(mappedStatement.getId())){
-            return invocation.proceed();
-        }
-        // sql类型:insert、update、select、delete
-        SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType();
-        Object parameter = invocation.getArgs()[1];
-
-        if (parameter == null) {
-            return invocation.proceed();
-        }
- 
-        // 当sql为新增或更新类型时,自动填充操作人相关信息
-        if (SqlCommandType.INSERT == sqlCommandType) {
-
-            Field[] fields = getAllFields(parameter);
-            for (Field field : fields) {
-                try {
-                    // 注入创建人
-                    if ("createBy".equals(field.getName())) {
-                        // 获取当前登录用户信息
-                        if(Objects.nonNull(tokenService.getLoginUser())){
-                            String userName = tokenService.getLoginUser().getUser().getUserName();
-                            field.setAccessible(true);
-                            field.set(parameter, userName);
-                            field.setAccessible(false);
-                        }
-                    }
-                    //注入创建时间
-                    if ("createTime".equals(field.getName())) {
-                        field.setAccessible(true);
-//                        field.set(parameter, LocalDateTime.now());
-                        field.setAccessible(false);
-                    } 
-                } catch (Exception e) {
-                    log.error("failed to insert data, exception = ", e);
-                }
-            }
-        }
-        if (SqlCommandType.UPDATE == sqlCommandType) {
-            Field[] fields = getAllFields(parameter);
-            for (Field field : fields) {
-                try {
-                    if ("updateBy".equals(field.getName())) {
-                        // 获取当前登录用户信息
-                        if(Objects.nonNull(tokenService.getLoginUser())){
-                            String userName = tokenService.getLoginUser().getUser().getUserName();
-                            field.setAccessible(true);
-                            field.set(parameter, userName);
-                            field.setAccessible(false);
-                        }
-                    }
-                    if ("updateTime".equals(field.getName())) {
-                        field.setAccessible(true);
-//                        field.set(parameter, new Date());
-                        field.setAccessible(false);
-                    }
-                } catch (Exception e) {
-                    log.error("failed to update data, exception = ", e);
-                }
-            }
-        }
-        return invocation.proceed();
-    }
- 
-    @Override
-    public Object plugin(Object target) {
-        return Plugin.wrap(target, this);
-    }
- 
-    @Override
-    public void setProperties(Properties properties) {
-        // TODO Auto-generated method stub
-    }
- 
-    /**
-     * 获取类的所有属性,包括父类
-     *
-     * @param object
-     * @return
-     */
-    private Field[] getAllFields(Object object) {
-        Class<?> clazz = object.getClass();
-        List<Field> fieldList = new ArrayList<>();
-        while (clazz != null) {
-            fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
-            clazz = clazz.getSuperclass();
-        }
-        Field[] fields = new Field[fieldList.size()];
-        fieldList.toArray(fields);
-        return fields;
-    }
- 
-}
\ No newline at end of file
+//package com.ruoyi.web.controller.interceptor;
+//
+//import com.ruoyi.framework.web.service.TokenService;
+//import lombok.extern.slf4j.Slf4j;
+//import org.apache.ibatis.executor.Executor;
+//import org.apache.ibatis.mapping.MappedStatement;
+//import org.apache.ibatis.mapping.SqlCommandType;
+//import org.apache.ibatis.plugin.*;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Component;
+//
+//import java.lang.reflect.Field;
+//import java.time.LocalDateTime;
+//import java.util.*;
+//
+//@Slf4j
+//@Component
+//@Intercepts({ @Signature(type = Executor.class, method = "update", args = { MappedStatement.class, Object.class }) })
+//public class MybatisInterceptor implements Interceptor {
+//
+//    @Autowired
+//    private TokenService tokenService;
+//
+//    @Override
+//    public Object intercept(Invocation invocation) throws Throwable {
+//        MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
+//        if("com.ruoyi.system.mapper.SysLogininforMapper.insertLogininfor".equals(mappedStatement.getId())){
+//            return invocation.proceed();
+//        }
+//        // sql类型:insert、update、select、delete
+//        SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType();
+//        Object parameter = invocation.getArgs()[1];
+//
+//        if (parameter == null) {
+//            return invocation.proceed();
+//        }
+//
+//        // 当sql为新增或更新类型时,自动填充操作人相关信息
+//        if (SqlCommandType.INSERT == sqlCommandType) {
+//
+//            Field[] fields = getAllFields(parameter);
+//            for (Field field : fields) {
+//                try {
+//                    // 注入创建人
+//                    if ("createBy".equals(field.getName())) {
+//                        // 获取当前登录用户信息
+//                        if(Objects.nonNull(tokenService.getLoginUser())){
+//                            String userName = tokenService.getLoginUser().getUser().getUserName();
+//                            field.setAccessible(true);
+//                            field.set(parameter, userName);
+//                            field.setAccessible(false);
+//                        }
+//                    }
+//                    //注入创建时间
+//                    if ("createTime".equals(field.getName())) {
+//                        field.setAccessible(true);
+////                        field.set(parameter, LocalDateTime.now());
+//                        field.setAccessible(false);
+//                    }
+//                } catch (Exception e) {
+//                    log.error("failed to insert data, exception = ", e);
+//                }
+//            }
+//        }
+//        if (SqlCommandType.UPDATE == sqlCommandType) {
+//            Field[] fields = getAllFields(parameter);
+//            for (Field field : fields) {
+//                try {
+//                    if ("updateBy".equals(field.getName())) {
+//                        // 获取当前登录用户信息
+//                        if(Objects.nonNull(tokenService.getLoginUser())){
+//                            String userName = tokenService.getLoginUser().getUser().getUserName();
+//                            field.setAccessible(true);
+//                            field.set(parameter, userName);
+//                            field.setAccessible(false);
+//                        }
+//                    }
+//                    if ("updateTime".equals(field.getName())) {
+//                        field.setAccessible(true);
+////                        field.set(parameter, new Date());
+//                        field.setAccessible(false);
+//                    }
+//                } catch (Exception e) {
+//                    log.error("failed to update data, exception = ", e);
+//                }
+//            }
+//        }
+//        return invocation.proceed();
+//    }
+//
+//    @Override
+//    public Object plugin(Object target) {
+//        return Plugin.wrap(target, this);
+//    }
+//
+//    @Override
+//    public void setProperties(Properties properties) {
+//        // TODO Auto-generated method stub
+//    }
+//
+//    /**
+//     * 获取类的所有属性,包括父类
+//     *
+//     * @param object
+//     * @return
+//     */
+//    private Field[] getAllFields(Object object) {
+//        Class<?> clazz = object.getClass();
+//        List<Field> fieldList = new ArrayList<>();
+//        while (clazz != null) {
+//            fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
+//            clazz = clazz.getSuperclass();
+//        }
+//        Field[] fields = new Field[fieldList.size()];
+//        fieldList.toArray(fields);
+//        return fields;
+//    }
+//
+//}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/StateProcessInstanceActionMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/StateProcessInstanceActionMapper.java
index 81dcaa1..be2c3dc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/StateProcessInstanceActionMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/StateProcessInstanceActionMapper.java
@@ -4,4 +4,6 @@
 import com.ruoyi.system.model.StateProcessInstanceAction;
 
 public interface StateProcessInstanceActionMapper extends BaseMapper<StateProcessInstanceAction> {
+    void saveData(StateProcessInstanceAction stateProcessInstanceAction);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/StateProcessInstanceAction.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/StateProcessInstanceAction.java
index e1501db..0ed879b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/StateProcessInstanceAction.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/StateProcessInstanceAction.java
@@ -1,20 +1,22 @@
 package com.ruoyi.system.model;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
 @Data
 @EqualsAndHashCode(callSuper = false)
 @ApiModel(value = "工作流-实例操作记录表")
 @TableName(value = "state_process_instance_action")
-public class StateProcessInstanceAction extends BaseModel {
+public class StateProcessInstanceAction implements Serializable {
 
     @TableId(value = "id", type = IdType.ASSIGN_ID)
     private String id;
@@ -45,6 +47,17 @@
     @ApiModelProperty(value = "图片")
     @TableField("pictures")
     private String pictures;
+    /**
+     * 删除  未删除
+     */
+    @TableField("`disabled`")
+    @TableLogic
+    private Boolean disabled;
+
+    @ApiModelProperty(value = "记录创建时间,前端忽略")
+    @TableField("create_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
 
     @TableField(exist = false)
     private String nickName;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessInstanceActionService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessInstanceActionService.java
index 85b5090..58bee7e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessInstanceActionService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessInstanceActionService.java
@@ -4,4 +4,7 @@
 import com.ruoyi.system.model.StateProcessInstanceAction;
 
 public interface StateProcessInstanceActionService extends IService<StateProcessInstanceAction> {
+
+    void saveData(StateProcessInstanceAction stateProcessInstanceAction);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessInstanceActionServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessInstanceActionServiceImpl.java
index 45a3d5a..013972a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessInstanceActionServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessInstanceActionServiceImpl.java
@@ -8,4 +8,8 @@
 
 @Service
 public class StateProcessInstanceActionServiceImpl extends ServiceImpl<StateProcessInstanceActionMapper, StateProcessInstanceAction> implements StateProcessInstanceActionService {
+    @Override
+    public void saveData(StateProcessInstanceAction stateProcessInstanceAction) {
+        this.baseMapper.saveData(stateProcessInstanceAction);
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/task/jobs/StateProcessJob.java b/ruoyi-system/src/main/java/com/ruoyi/system/task/jobs/StateProcessJob.java
index d42aada..c4ad3a2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/task/jobs/StateProcessJob.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/task/jobs/StateProcessJob.java
@@ -2,6 +2,7 @@
 
 import com.aizuda.bpm.engine.entity.FlwTaskActor;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.system.bo.ProcessAgreeBO;
 import com.ruoyi.system.task.base.AbstractJob;
 import org.quartz.JobDataMap;
@@ -33,6 +34,7 @@
 				System.err.println("该任务不存在");
 				return;
 			}
+			processAgreeBO.setRemark("自动审批");
 			processAgreeBO.setUserId(Long.valueOf(flwTaskActor.getActorId()));
 			stateProcessTemplateService.agree(processAgreeBO);
 		}catch(Exception e){
diff --git a/ruoyi-system/src/main/resources/mapper/system/StateProcessInstanceActionMapper.xml b/ruoyi-system/src/main/resources/mapper/system/StateProcessInstanceActionMapper.xml
new file mode 100644
index 0000000..6dbf513
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/StateProcessInstanceActionMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.StateProcessInstanceActionMapper">
+
+
+    <insert id="saveData">
+        insert into state_process_instance_action(
+            id,
+            instance_id,
+            auditor_id,
+            action_type,
+            node_id,
+            remark,
+            pictures
+            values
+                (#{id},
+                #{instanceId},
+                #{auditorId},
+                #{actionType},
+                #{nodeId},
+                #{remark},
+                #{pictures})
+    </insert>
+</mapper>
\ No newline at end of file

--
Gitblit v1.7.1