From 4e2090c5f41bb63050352d38c7a3759d4d88e53a Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Wed, 4 Dec 2024 17:25:58 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E8=AF=B7=E5=81=87?= =?UTF-8?q?=E5=A4=A9=E6=95=B0=E5=B7=A5=E5=85=B7=E7=B1=BB=EF=BC=8C=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=BC=93=E5=AD=98=EF=BC=8C=E5=8A=A0=E9=94=81=E5=A4=84?= =?UTF-8?q?=E7=90=86=EF=BC=8C=E5=8F=AF=E4=BB=A5=E9=87=87=E7=94=A8=E5=A4=96?= =?UTF-8?q?=E9=83=A8=E4=BC=A0=E5=8F=82=E7=9A=84=E5=BD=A2=E5=BC=8F=E5=A4=84?= =?UTF-8?q?=E7=90=86redis=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WfTaskAssigneeServiceImpl.java | 3 +- .../dromara/workflow/utils/WorkDaysUtils.java | 54 ++++++------------- 2 files changed, 18 insertions(+), 39 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskAssigneeServiceImpl.java index 3aebd3328..5c58ad9ff 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskAssigneeServiceImpl.java @@ -8,6 +8,7 @@ import org.dromara.common.core.domain.dto.DeptDTO; import org.dromara.common.core.domain.dto.TaskAssigneeDTO; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.domain.model.TaskAssigneeBody; +import org.dromara.common.core.enums.FormatsType; import org.dromara.common.core.enums.TaskAssigneeEnum; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.DeptService; @@ -119,7 +120,7 @@ public class WfTaskAssigneeServiceImpl implements IWfTaskAssigneeService, Handle Optional.ofNullable(assignee.getGroupName()) .map(deptService::selectDeptNameByIds) .orElse(DEFAULT_GROUP_NAME), DEFAULT_GROUP_NAME)) - .setCreateTime(assignee -> DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, assignee.getCreateTime())); + .setCreateTime(assignee -> DateUtils.parseDateToStr(FormatsType.YYYY_MM_DD_HH_MM_SS, assignee.getCreateTime())); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkDaysUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkDaysUtils.java index ac14bb36f..f038830da 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkDaysUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkDaysUtils.java @@ -1,19 +1,10 @@ package org.dromara.workflow.utils; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ArrayUtil; -import com.baomidou.lock.LockInfo; -import com.baomidou.lock.LockTemplate; import lombok.AccessLevel; import lombok.NoArgsConstructor; -import org.dromara.common.core.constant.GlobalConstants; -import org.dromara.common.core.utils.SpringUtils; -import org.dromara.common.redis.utils.RedisUtils; -import java.util.Calendar; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import java.util.*; /** * 工作日工具类 @@ -23,11 +14,16 @@ import java.util.List; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class WorkDaysUtils { - private static final String DAYS_IN_YEARS_KEY = GlobalConstants.GLOBAL_REDIS_KEY + "DAYS_IN_YEARS:"; - private static final LockTemplate LOCK_TEMPLATE = SpringUtils.getBean(LockTemplate.class); - //工作日 + private static final Map DAYS_IN_YEARS = new HashMap<>(); + + /** + * 工作日 + */ public static final int WORKDAY = 0; - //休息日 + + /** + * 休息日 + */ public static final int RESTDAY = 1; /** @@ -130,13 +126,6 @@ public class WorkDaysUtils { return workDays; } - /** - * 删除指定年份的数据 - */ - public static void clearData(Integer year) { - RedisUtils.deleteObject(DAYS_IN_YEARS_KEY + year); - } - /** * 计算指定年份的工作日数组,标记个人的加班和调休日期 * @@ -162,29 +151,18 @@ public class WorkDaysUtils { * @return 表示一年中每一天的状态数组,0 表示工作日,1 表示周末 */ private static Integer[] daysInYear(Integer year) { - String key = DAYS_IN_YEARS_KEY + year; - Integer[] daysInYears = RedisUtils.getCacheObject(key); - if (ArrayUtil.isNotEmpty(daysInYears)) { - return daysInYears; - } - LockInfo lock = LOCK_TEMPLATE.lock(key); - try { - // 再次检查缓存,防止缓存穿透 - daysInYears = RedisUtils.getCacheObject(key); - if (ArrayUtil.isNotEmpty(daysInYears)) { - return daysInYears; - } + if (DAYS_IN_YEARS.containsKey(year)) { + return DAYS_IN_YEARS.get(year); + } else { // 如果年份数据不存在,则生成指定年份的数据 Integer[] daysArray = generateDaysArray(year); - RedisUtils.setCacheObject(key, daysArray); + DAYS_IN_YEARS.put(year, daysArray); return daysArray; - } finally { - LOCK_TEMPLATE.releaseLock(lock); } } /** - * 根据指定年份生成天数数组,其中工作日用 0 表示,周末用 1 表示 + * 根据指定年份生成天数数组 * * @param year 指定年份 * @return 表示一年中每一天的状态数组 @@ -216,7 +194,7 @@ public class WorkDaysUtils { * @param valueToSet 休息日用 1,工作日用 0 */ private static void updateDaysArray(Integer[] daysArray, List days, int valueToSet) { - if (CollUtil.isEmpty(days)) { + if (ArrayUtil.isEmpty(days)) { return; }