From 4513ef24bf9b188c2a77d6ce94f1a6b7e9ebf0e6 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期日, 27 四月 2025 20:40:19 +0800 Subject: [PATCH] fix(irrigatePlan): 修正灌溉计划开始时间逻辑 --- pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/VirtualCardInUseInterceptor.java | 61 ++++++++++++++++++++++++++++++ 1 files changed, 61 insertions(+), 0 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/VirtualCardInUseInterceptor.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/VirtualCardInUseInterceptor.java new file mode 100644 index 0000000..5f0a2e4 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/VirtualCardInUseInterceptor.java @@ -0,0 +1,61 @@ +package com.dy.pipIrrGlobal.config; + +/** + * @Author: liurunyu + * @Date: 2025/4/27 9:19 + * @Description + */ +import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard; +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.Interceptor; +import org.apache.ibatis.plugin.Intercepts; +import org.apache.ibatis.plugin.Invocation; +import org.apache.ibatis.plugin.Signature; +import java.lang.reflect.Method; + +/** + * 鎷︽埅铏氭嫙鍗¤〃鐨勬洿鏂版搷浣滐紝浣夸笉鑳借缃崰鐢ㄧ姸鎬佹搷浣溿�� + */ +@Intercepts({ + @Signature( + type = Executor.class, + method = "update", + args = { + MappedStatement.class, + Object.class + } + ) +}) +@Slf4j +public class VirtualCardInUseInterceptor implements Interceptor { + + static int MAPPED_STATEMENT_INDEX = 0; + static int PARAMETER_INDEX = 1; + static String BASE_FIELD_SET_PRIMARY_KEY_FUNTION_SETINUSE = "setInUse"; + + @Override + public Object intercept(Invocation invocation) throws Throwable { + Object entity = invocation.getArgs()[PARAMETER_INDEX]; + if (entity instanceof SeVirtualCard) { + MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[MAPPED_STATEMENT_INDEX]; + SqlCommandType commandType = mappedStatement.getSqlCommandType(); + if (commandType.equals(SqlCommandType.UPDATE)) { + Class<?> entityClass = entity.getClass(); + Method setInUse = null; + try { + setInUse = entityClass.getMethod(BASE_FIELD_SET_PRIMARY_KEY_FUNTION_SETINUSE, Byte.class); + } catch (Exception e) { + //褰揺ntityClass娌℃湁setInUse鏂规硶鏃讹紝浼氭姏鍑哄紓甯� + } + if (setInUse != null) { + setInUse.invoke(entity, (byte)0); + } + invocation.getArgs()[PARAMETER_INDEX] = entity; + } + } + return invocation.proceed(); + } +} -- Gitblit v1.8.0