From 06b145cb834ba25acaa5f74e4beeea601a058054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 2 Jul 2025 13:45:53 +0800 Subject: [PATCH 001/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E4=BB=A3=E7=A0=81=E9=80=BB=E8=BE=91=20=E5=B0=81?= =?UTF-8?q?=E8=A3=85=E7=AE=80=E5=8C=96=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/api/RemoteDeptService.java | 9 ++ .../dromara/system/api/RemotePostService.java | 21 +++++ .../dromara/system/api/RemoteRoleService.java | 21 +++++ .../dromara/system/api/RemoteUserService.java | 24 ------ .../controller/system/SysPostController.java | 3 +- .../dubbo/RemoteDataScopeServiceImpl.java | 10 +-- .../system/dubbo/RemoteDeptServiceImpl.java | 38 ++++++++- .../system/dubbo/RemotePostServiceImpl.java | 48 +++++++++++ .../system/dubbo/RemoteRoleServiceImpl.java | 48 +++++++++++ .../system/dubbo/RemoteUserServiceImpl.java | 82 +++---------------- .../dromara/system/mapper/SysDeptMapper.java | 14 ++++ .../system/service/ISysDeptService.java | 6 -- .../system/service/ISysPostService.java | 2 +- .../service/impl/SysDeptServiceImpl.java | 17 +--- .../service/impl/SysPostServiceImpl.java | 16 ++-- .../service/impl/SysUserServiceImpl.java | 10 +-- .../service/impl/FlwInstanceServiceImpl.java | 10 ++- .../impl/FlwTaskAssigneeServiceImpl.java | 14 ++-- 18 files changed, 236 insertions(+), 157 deletions(-) create mode 100644 ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemotePostService.java create mode 100644 ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteRoleService.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemotePostServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteRoleServiceImpl.java diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java index 2ece92817..a8ffb5d45 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java @@ -3,6 +3,7 @@ package org.dromara.system.api; import org.dromara.system.api.domain.vo.RemoteDeptVo; import java.util.List; +import java.util.Map; /** * 部门服务 @@ -34,4 +35,12 @@ public interface RemoteDeptService { */ List selectDeptsByList(); + /** + * 根据部门 ID 列表查询部门名称映射关系 + * + * @param deptIds 部门 ID 列表 + * @return Map,其中 key 为部门 ID,value 为对应的部门名称 + */ + Map selectDeptNamesByIds(List deptIds); + } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemotePostService.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemotePostService.java new file mode 100644 index 000000000..2e5ad1a82 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemotePostService.java @@ -0,0 +1,21 @@ +package org.dromara.system.api; + +import java.util.List; +import java.util.Map; + +/** + * 岗位服务 + * + * @author Lion Li + */ +public interface RemotePostService { + + /** + * 根据岗位 ID 列表查询岗位名称映射关系 + * + * @param postIds 岗位 ID 列表 + * @return Map,其中 key 为岗位 ID,value 为对应的岗位名称 + */ + Map selectPostNamesByIds(List postIds); + +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteRoleService.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteRoleService.java new file mode 100644 index 000000000..9c976ee6d --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteRoleService.java @@ -0,0 +1,21 @@ +package org.dromara.system.api; + +import java.util.List; +import java.util.Map; + +/** + * 角色服务 + * + * @author Lion Li + */ +public interface RemoteRoleService { + + /** + * 根据角色 ID 列表查询角色名称映射关系 + * + * @param roleIds 角色 ID 列表 + * @return Map,其中 key 为角色 ID,value 为对应的角色名称 + */ + Map selectRoleNamesByIds(List roleIds); + +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java index 3e8b54850..0bda9538e 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java @@ -165,28 +165,4 @@ public interface RemoteUserService { */ Map selectUserNamesByIds(List userIds); - /** - * 根据角色 ID 列表查询角色名称映射关系 - * - * @param roleIds 角色 ID 列表 - * @return Map,其中 key 为角色 ID,value 为对应的角色名称 - */ - Map selectRoleNamesByIds(List roleIds); - - /** - * 根据部门 ID 列表查询部门名称映射关系 - * - * @param deptIds 部门 ID 列表 - * @return Map,其中 key 为部门 ID,value 为对应的部门名称 - */ - Map selectDeptNamesByIds(List deptIds); - - /** - * 根据岗位 ID 列表查询岗位名称映射关系 - * - * @param postIds 岗位 ID 列表 - * @return Map,其中 key 为岗位 ID,value 为对应的岗位名称 - */ - Map selectPostNamesByIds(List postIds); - } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java index b48e6ecd2..2fff60287 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java @@ -19,6 +19,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -107,7 +108,7 @@ public class SysPostController extends BaseController { @Log(title = "岗位管理", businessType = BusinessType.DELETE) @DeleteMapping("/{postIds}") public R remove(@PathVariable Long[] postIds) { - return toAjax(postService.deletePostByIds(postIds)); + return toAjax(postService.deletePostByIds(Arrays.asList(postIds))); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDataScopeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDataScopeServiceImpl.java index 92717394a..858a436de 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDataScopeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDataScopeServiceImpl.java @@ -9,7 +9,6 @@ import org.apache.dubbo.config.annotation.DubboService; import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.utils.StreamUtils; import org.dromara.system.api.RemoteDataScopeService; -import org.dromara.system.domain.SysDept; import org.dromara.system.domain.SysRoleDept; import org.dromara.system.mapper.SysDeptMapper; import org.dromara.system.mapper.SysRoleDeptMapper; @@ -68,13 +67,8 @@ public class RemoteDataScopeServiceImpl implements RemoteDataScopeService { if (ObjectUtil.isNull(deptId)) { return "-1"; } - List deptList = deptMapper.selectListByParentId(deptId); - List ids = StreamUtils.toList(deptList, SysDept::getDeptId); - ids.add(deptId); - if (CollUtil.isNotEmpty(ids)) { - return StreamUtils.join(ids, Convert::toStr); - } - return "-1"; + List deptIds = deptMapper.selectDeptAndChildById(deptId); + return CollUtil.isNotEmpty(deptIds) ? StreamUtils.join(deptIds, Convert::toStr) : "-1"; } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java index 892d4692f..148f5f90c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java @@ -1,15 +1,23 @@ package org.dromara.system.dubbo; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.utils.StreamUtils; import org.dromara.system.api.RemoteDeptService; import org.dromara.system.api.domain.vo.RemoteDeptVo; +import org.dromara.system.domain.SysDept; import org.dromara.system.domain.vo.SysDeptVo; +import org.dromara.system.mapper.SysDeptMapper; import org.dromara.system.service.ISysDeptService; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; +import java.util.Map; /** * 部门服务 @@ -21,7 +29,8 @@ import java.util.List; @DubboService public class RemoteDeptServiceImpl implements RemoteDeptService { - private final ISysDeptService sysDeptService; + private final ISysDeptService deptService; + private final SysDeptMapper deptMapper; /** * 通过部门ID查询部门名称 @@ -31,7 +40,7 @@ public class RemoteDeptServiceImpl implements RemoteDeptService { */ @Override public String selectDeptNameByIds(String deptIds) { - return sysDeptService.selectDeptNameByIds(deptIds); + return deptService.selectDeptNameByIds(deptIds); } /** @@ -42,7 +51,7 @@ public class RemoteDeptServiceImpl implements RemoteDeptService { */ @Override public Long selectDeptLeaderById(Long deptId) { - SysDeptVo vo = sysDeptService.selectDeptById(deptId); + SysDeptVo vo = deptService.selectDeptById(deptId); return vo.getLeader(); } @@ -53,8 +62,29 @@ public class RemoteDeptServiceImpl implements RemoteDeptService { */ @Override public List selectDeptsByList() { - List list = sysDeptService.selectDeptsSimple(); + List list = deptMapper.selectDeptList(new LambdaQueryWrapper() + .select(SysDept::getDeptId, SysDept::getDeptName, SysDept::getParentId) + .eq(SysDept::getStatus, SystemConstants.NORMAL)); return BeanUtil.copyToList(list, RemoteDeptVo.class); } + /** + * 根据部门 ID 列表查询部门名称映射关系 + * + * @param deptIds 部门 ID 列表 + * @return Map,其中 key 为部门 ID,value 为对应的部门名称 + */ + @Override + public Map selectDeptNamesByIds(List deptIds) { + if (CollUtil.isEmpty(deptIds)) { + return Collections.emptyMap(); + } + List list = deptMapper.selectList( + new LambdaQueryWrapper() + .select(SysDept::getDeptId, SysDept::getDeptName) + .in(SysDept::getDeptId, deptIds) + ); + return StreamUtils.toMap(list, SysDept::getDeptId, SysDept::getDeptName); + } + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemotePostServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemotePostServiceImpl.java new file mode 100644 index 000000000..ffe79755c --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemotePostServiceImpl.java @@ -0,0 +1,48 @@ +package org.dromara.system.dubbo; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.system.api.RemotePostService; +import org.dromara.system.domain.SysPost; +import org.dromara.system.mapper.SysPostMapper; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * 岗位服务 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +@DubboService +public class RemotePostServiceImpl implements RemotePostService { + + private final SysPostMapper postMapper; + + /** + * 根据岗位 ID 列表查询岗位名称映射关系 + * + * @param postIds 岗位 ID 列表 + * @return Map,其中 key 为岗位 ID,value 为对应的岗位名称 + */ + @Override + public Map selectPostNamesByIds(List postIds) { + if (CollUtil.isEmpty(postIds)) { + return Collections.emptyMap(); + } + List list = postMapper.selectList( + new LambdaQueryWrapper() + .select(SysPost::getPostId, SysPost::getPostName) + .in(SysPost::getPostId, postIds) + ); + return StreamUtils.toMap(list, SysPost::getPostId, SysPost::getPostName); + } + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteRoleServiceImpl.java new file mode 100644 index 000000000..9ce4afdeb --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteRoleServiceImpl.java @@ -0,0 +1,48 @@ +package org.dromara.system.dubbo; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.system.api.RemoteRoleService; +import org.dromara.system.domain.SysRole; +import org.dromara.system.mapper.SysRoleMapper; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * 角色服务 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +@DubboService +public class RemoteRoleServiceImpl implements RemoteRoleService { + + private final SysRoleMapper roleMapper; + + /** + * 根据角色 ID 列表查询角色名称映射关系 + * + * @param roleIds 角色 ID 列表 + * @return Map,其中 key 为角色 ID,value 为对应的角色名称 + */ + @Override + public Map selectRoleNamesByIds(List roleIds) { + if (CollUtil.isEmpty(roleIds)) { + return Collections.emptyMap(); + } + List list = roleMapper.selectList( + new LambdaQueryWrapper() + .select(SysRole::getRoleId, SysRole::getRoleName) + .in(SysRole::getRoleId, roleIds) + ); + return StreamUtils.toMap(list, SysRole::getRoleId, SysRole::getRoleName); + } + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java index 23fd16b44..974e54b83 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java @@ -24,18 +24,21 @@ import org.dromara.system.api.model.LoginUser; import org.dromara.system.api.model.PostDTO; import org.dromara.system.api.model.RoleDTO; import org.dromara.system.api.model.XcxLoginUser; -import org.dromara.system.domain.*; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.SysUserPost; +import org.dromara.system.domain.SysUserRole; import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.domain.vo.SysPostVo; import org.dromara.system.domain.vo.SysRoleVo; import org.dromara.system.domain.vo.SysUserVo; -import org.dromara.system.mapper.*; +import org.dromara.system.mapper.SysUserMapper; +import org.dromara.system.mapper.SysUserPostMapper; +import org.dromara.system.mapper.SysUserRoleMapper; import org.dromara.system.service.*; import org.springframework.stereotype.Service; import java.util.*; -import java.util.stream.Collectors; /** * 用户服务 @@ -54,9 +57,6 @@ public class RemoteUserServiceImpl implements RemoteUserService { private final ISysDeptService deptService; private final ISysPostService postService; private final SysUserMapper userMapper; - private final SysRoleMapper roleMapper; - private final SysDeptMapper deptMapper; - private final SysPostMapper postMapper; private final SysUserRoleMapper userRoleMapper; private final SysUserPostMapper userPostMapper; @@ -403,74 +403,16 @@ public class RemoteUserServiceImpl implements RemoteUserService { * @param userIds 用户 ID 列表 * @return Map,其中 key 为用户 ID,value 为对应的用户名称 */ - @Override public Map selectUserNamesByIds(List userIds) { if (CollUtil.isEmpty(userIds)) { return Collections.emptyMap(); } - return userMapper.selectList( - new LambdaQueryWrapper() - .select(SysUser::getUserId, SysUser::getNickName) - .in(SysUser::getUserId, userIds) - ).stream() - .collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName)); - } - - /** - * 根据角色 ID 列表查询角色名称映射关系 - * - * @param roleIds 角色 ID 列表 - * @return Map,其中 key 为角色 ID,value 为对应的角色名称 - */ - @Override - public Map selectRoleNamesByIds(List roleIds) { - if (CollUtil.isEmpty(roleIds)) { - return Collections.emptyMap(); - } - return roleMapper.selectList( - new LambdaQueryWrapper() - .select(SysRole::getRoleId, SysRole::getRoleName) - .in(SysRole::getRoleId, roleIds) - ).stream() - .collect(Collectors.toMap(SysRole::getRoleId, SysRole::getRoleName)); - } - - /** - * 根据部门 ID 列表查询部门名称映射关系 - * - * @param deptIds 部门 ID 列表 - * @return Map,其中 key 为部门 ID,value 为对应的部门名称 - */ - @Override - public Map selectDeptNamesByIds(List deptIds) { - if (CollUtil.isEmpty(deptIds)) { - return Collections.emptyMap(); - } - return deptMapper.selectList( - new LambdaQueryWrapper() - .select(SysDept::getDeptId, SysDept::getDeptName) - .in(SysDept::getDeptId, deptIds) - ).stream() - .collect(Collectors.toMap(SysDept::getDeptId, SysDept::getDeptName)); - } - - /** - * 根据岗位 ID 列表查询岗位名称映射关系 - * - * @param postIds 岗位 ID 列表 - * @return Map,其中 key 为岗位 ID,value 为对应的岗位名称 - */ - @Override - public Map selectPostNamesByIds(List postIds) { - if (CollUtil.isEmpty(postIds)) { - return Collections.emptyMap(); - } - return postMapper.selectList( - new LambdaQueryWrapper() - .select(SysPost::getPostId, SysPost::getPostName) - .in(SysPost::getPostId, postIds) - ).stream() - .collect(Collectors.toMap(SysPost::getPostId, SysPost::getPostName)); + List list = userMapper.selectList( + new LambdaQueryWrapper() + .select(SysUser::getUserId, SysUser::getNickName) + .in(SysUser::getUserId, userIds) + ); + return StreamUtils.toMap(list, SysUser::getUserId, SysUser::getNickName); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java index cbfdf32f0..655526fb3 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; +import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.mybatis.annotation.DataColumn; import org.dromara.common.mybatis.annotation.DataPermission; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -69,6 +70,19 @@ public interface SysDeptMapper extends BaseMapperPlus { .apply(DataBaseHelper.findInSet(parentId, "ancestors"))); } + /** + * 查询某个部门及其所有子部门ID(含自身) + * + * @param parentId 父部门ID + * @return 部门ID集合 + */ + default List selectDeptAndChildById(Long parentId) { + List deptList = this.selectListByParentId(parentId); + List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); + deptIds.add(parentId); + return deptIds; + } + /** * 根据角色ID查询部门树信息 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java index 2e99357b6..6d6d21059 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java @@ -144,10 +144,4 @@ public interface ISysDeptService { */ int deleteDeptById(Long deptId); - /** - * 查询部门(简单查询) - * - * @return 部门列表 - */ - List selectDeptsSimple(); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java index a760d497e..511d842ee 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java @@ -110,7 +110,7 @@ public interface ISysPostService { * @param postIds 需要删除的岗位ID * @return 结果 */ - int deletePostByIds(Long[] postIds); + int deletePostByIds(List postIds); /** * 新增保存岗位信息 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index 7107b4ac2..389678a18 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -107,10 +107,7 @@ public class SysDeptServiceImpl implements ISysDeptService { if (ObjectUtil.isNotNull(bo.getBelongDeptId())) { //部门树搜索 lqw.and(x -> { - Long parentId = bo.getBelongDeptId(); - List deptList = baseMapper.selectListByParentId(parentId); - List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); - deptIds.add(parentId); + List deptIds = baseMapper.selectDeptAndChildById(bo.getBelongDeptId()); x.in(SysDept::getDeptId, deptIds); }); } @@ -384,16 +381,4 @@ public class SysDeptServiceImpl implements ISysDeptService { return baseMapper.deleteById(deptId); } - /** - * 查询部门(简单查询) - * - * @return 部门列表 - */ - @Override - public List selectDeptsSimple() { - return baseMapper.selectDeptList(new LambdaQueryWrapper() - .select(SysDept::getDeptId, SysDept::getDeptName, SysDept::getParentId) - .eq(SysDept::getStatus, SystemConstants.NORMAL)); - } - } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java index 942b04547..ced757f4c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java @@ -13,7 +13,6 @@ import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.system.domain.SysDept; import org.dromara.system.domain.SysPost; import org.dromara.system.domain.SysUserPost; import org.dromara.system.domain.bo.SysPostBo; @@ -24,7 +23,6 @@ import org.dromara.system.mapper.SysUserPostMapper; import org.dromara.system.service.ISysPostService; import org.springframework.stereotype.Service; -import java.util.Arrays; import java.util.List; import java.util.Map; @@ -91,9 +89,7 @@ public class SysPostServiceImpl implements ISysPostService { } else if (ObjectUtil.isNotNull(bo.getBelongDeptId())) { //部门树搜索 wrapper.and(x -> { - List deptList = deptMapper.selectListByParentId(bo.getBelongDeptId()); - List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); - deptIds.add(bo.getBelongDeptId()); + List deptIds = deptMapper.selectDeptAndChildById(bo.getBelongDeptId()); x.in(SysPost::getDeptId, deptIds); }); } @@ -216,14 +212,14 @@ public class SysPostServiceImpl implements ISysPostService { * @return 结果 */ @Override - public int deletePostByIds(Long[] postIds) { - for (Long postId : postIds) { - SysPost post = baseMapper.selectById(postId); - if (countUserPostById(postId) > 0) { + public int deletePostByIds(List postIds) { + List list = baseMapper.selectByIds(postIds); + for (SysPost post : list) { + if (this.countUserPostById(post.getPostId()) > 0) { throw new ServiceException(String.format("%1$s已分配,不能删除!", post.getPostName())); } } - return baseMapper.deleteByIds(Arrays.asList(postIds)); + return baseMapper.deleteByIds(postIds); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index f4c4ccad2..e347f1e9b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -77,10 +77,8 @@ public class SysUserServiceImpl implements ISysUserService { .between(params.get("beginTime") != null && params.get("endTime") != null, "u.create_time", params.get("beginTime"), params.get("endTime")) .and(ObjectUtil.isNotNull(user.getDeptId()), w -> { - List deptList = deptMapper.selectListByParentId(user.getDeptId()); - List ids = StreamUtils.toList(deptList, SysDept::getDeptId); - ids.add(user.getDeptId()); - w.in("u.dept_id", ids); + List deptIds = deptMapper.selectDeptAndChildById(user.getDeptId()); + w.in("u.dept_id", deptIds); }).orderByAsc("u.user_id"); return baseMapper.selectUserExportList(wrapper); } @@ -98,9 +96,7 @@ public class SysUserServiceImpl implements ISysUserService { .between(params.get("beginTime") != null && params.get("endTime") != null, SysUser::getCreateTime, params.get("beginTime"), params.get("endTime")) .and(ObjectUtil.isNotNull(user.getDeptId()), w -> { - List deptList = deptMapper.selectListByParentId(user.getDeptId()); - List ids = StreamUtils.toList(deptList, SysDept::getDeptId); - ids.add(user.getDeptId()); + List ids = deptMapper.selectDeptAndChildById(user.getDeptId()); w.in(SysUser::getDeptId, ids); }).orderByAsc(SysUser::getUserId); if (StringUtils.isNotBlank(user.getExcludeUserIds())) { diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index 0c1f21b7c..a55e77085 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -49,7 +49,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; -import java.util.stream.Collectors; +import java.util.function.Function; /** * 流程实例 服务层实现 @@ -203,9 +203,11 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { return false; } // 获取定义信息 - Map definitionMap = defService.getByIds( - StreamUtils.toList(instances, Instance::getDefinitionId) - ).stream().collect(Collectors.toMap(Definition::getId, definition -> definition)); + Map definitionMap = StreamUtils.toMap( + defService.getByIds(StreamUtils.toList(instances, Instance::getDefinitionId)), + Definition::getId, + Function.identity() + ); // 逐一触发删除事件 instances.forEach(instance -> { diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java index ccb5106e7..fab31c877 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java @@ -11,9 +11,7 @@ import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.enums.FormatsType; import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.StringUtils; -import org.dromara.system.api.RemoteDeptService; -import org.dromara.system.api.RemoteTaskAssigneeService; -import org.dromara.system.api.RemoteUserService; +import org.dromara.system.api.*; import org.dromara.system.api.domain.bo.RemoteTaskAssigneeBo; import org.dromara.system.api.domain.vo.RemoteDeptVo; import org.dromara.system.api.domain.vo.RemoteTaskAssigneeVo; @@ -50,6 +48,10 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand private RemoteUserService remoteUserService; @DubboReference private RemoteDeptService remoteDeptService; + @DubboReference + private RemoteRoleService remoteRoleService; + @DubboReference + private RemotePostService remotePostService; /** * 获取办理人权限设置列表tabs页签 @@ -226,9 +228,9 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand private Map getNamesByType(TaskAssigneeEnum type, List ids) { return switch (type) { case USER -> remoteUserService.selectUserNamesByIds(ids); - case ROLE -> remoteUserService.selectRoleNamesByIds(ids); - case DEPT -> remoteUserService.selectDeptNamesByIds(ids); - case POST -> remoteUserService.selectPostNamesByIds(ids); + case ROLE -> remoteRoleService.selectRoleNamesByIds(ids); + case DEPT -> remoteDeptService.selectDeptNamesByIds(ids); + case POST -> remotePostService.selectPostNamesByIds(ids); }; } -- Gitee From df7f282e411e3ae7ab9ba0cbf615bdf523c8d17e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 2 Jul 2025 13:47:54 +0800 Subject: [PATCH 002/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E4=BB=A3=E7=A0=81=E5=B0=8F=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/WorkflowPermissionHandler.java | 16 +++++++++++----- .../dromara/workflow/mapper/FlwTaskMapper.java | 10 ---------- .../workflow/service/IFlwCommonService.java | 8 -------- .../service/impl/FlwCommonServiceImpl.java | 18 ------------------ 4 files changed, 11 insertions(+), 41 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java index f9ede15ce..c62069b4e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java @@ -3,11 +3,14 @@ package org.dromara.workflow.handler; import cn.hutool.core.collection.CollUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.warm.flow.core.dto.FlowParams; import org.dromara.warm.flow.core.handler.PermissionHandler; import org.dromara.workflow.common.ConditionalOnEnable; -import org.dromara.workflow.service.IFlwCommonService; +import org.dromara.workflow.service.IFlwTaskAssigneeService; import org.springframework.stereotype.Component; import java.util.Collections; @@ -24,7 +27,7 @@ import java.util.List; @Slf4j public class WorkflowPermissionHandler implements PermissionHandler { - private final IFlwCommonService flwCommonService; + private final IFlwTaskAssigneeService flwTaskAssigneeService; /** * 办理人权限标识,比如用户,角色,部门等,用于校验是否有权限办理任务 @@ -51,9 +54,12 @@ public class WorkflowPermissionHandler implements PermissionHandler { */ @Override public List convertPermissions(List permissions) { - if (CollUtil.isNotEmpty(permissions)) { - permissions = flwCommonService.buildUser(permissions); + if (CollUtil.isEmpty(permissions)) { + return permissions; } - return permissions; + String storageIds = CollUtil.join(permissions, StringUtils.SEPARATOR); + List users = flwTaskAssigneeService.fetchUsersByStorageIds(storageIds); + return StreamUtils.toList(users, userDTO -> String.valueOf(userDTO.getUserId())); } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java index fd86c82de..0d0422d5a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java @@ -9,8 +9,6 @@ import org.dromara.workflow.domain.bo.FlowTaskBo; import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo; -import java.util.List; - /** * 任务信息Mapper接口 @@ -29,14 +27,6 @@ public interface FlwTaskMapper { */ Page getListRunTask(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); - /** - * 获取待办信息 - * - * @param queryWrapper 条件 - * @return 结果 - */ - List getListRunTask(@Param(Constants.WRAPPER) Wrapper queryWrapper); - /** * 获取已办 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCommonService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCommonService.java index 5314b6f6d..2390c43e4 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCommonService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCommonService.java @@ -9,14 +9,6 @@ import java.util.List; */ public interface IFlwCommonService { - /** - * 构建工作流用户 - * - * @param permissionList 办理用户 - * @return 用户 - */ - List buildUser(List permissionList); - /** * 发送消息 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java index 5bf8acb2a..839e617ad 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java @@ -52,24 +52,6 @@ public class FlwCommonServiceImpl implements IFlwCommonService { @DubboReference private RemoteMailService remoteMailService; - /** - * 构建工作流用户 - * - * @param permissionList 办理用户 - * @return 用户 - */ - @Override - public List buildUser(List permissionList) { - if (CollUtil.isEmpty(permissionList)) { - return List.of(); - } - IFlwTaskAssigneeService taskAssigneeService = SpringUtils.getBean(IFlwTaskAssigneeService.class); - String processedBys = CollUtil.join(permissionList, StringUtils.SEPARATOR); - // 根据 processedBy 前缀判断处理人类型,分别获取用户列表 - List users = taskAssigneeService.fetchUsersByStorageIds(processedBys); - return StreamUtils.toList(users, userDTO -> String.valueOf(userDTO.getUserId())); - } - /** * 发送消息 * -- Gitee From c846fad8722b43692743099c47604f2a42c4f587 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 2 Jul 2025 14:36:29 +0800 Subject: [PATCH 003/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E6=9C=89?= =?UTF-8?q?=E6=9F=90=E4=BA=9B=E6=97=A0=E8=81=8A=E4=BA=BA=E5=A3=AB=20?= =?UTF-8?q?=E5=AF=B9=E4=B8=80=E4=B8=AAdemo=E6=A1=88=E4=BE=8B=E6=8F=90?= =?UTF-8?q?=E6=BC=8F=E6=B4=9E=20CVE-2025-6925?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/demo/controller/MailController.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailController.java b/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailController.java index ac60723de..3aca79afb 100644 --- a/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailController.java +++ b/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailController.java @@ -39,14 +39,14 @@ public class MailController { /** * 发送邮件(带附件) * - * @param to 接收人 - * @param subject 标题 - * @param text 内容 - * @param filePath 附件路径 + * @param to 接收人 + * @param subject 标题 + * @param text 内容 */ @GetMapping("/sendMessageWithAttachment") - public R sendMessageWithAttachment(String to, String subject, String text, String filePath) { - MailUtils.sendText(to, subject, text, new File(filePath)); + public R sendMessageWithAttachment(String to, String subject, String text) { + // 附件路径 禁止前端传递 有任意读取系统文件风险 + MailUtils.sendText(to, subject, text, new File("/xxx/xxx")); return R.ok(); } @@ -56,10 +56,11 @@ public class MailController { * @param to 接收人 * @param subject 标题 * @param text 内容 - * @param paths 附件路径 */ @GetMapping("/sendMessageWithAttachments") - public R sendMessageWithAttachments(String to, String subject, String text, String[] paths) { + public R sendMessageWithAttachments(String to, String subject, String text) { + // 附件路径 禁止前端传递 有任意读取系统文件风险 + String[] paths = new String[]{"/xxx/xxx", "/xxx/xxx"}; File[] array = Arrays.stream(paths).map(File::new).toArray(File[]::new); MailUtils.sendText(to, subject, text, array); return R.ok(); -- Gitee From 0b8b47d85706a317d5562c4b8c1fd3f93a630ae0 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Wed, 2 Jul 2025 17:27:32 +0800 Subject: [PATCH 004/155] =?UTF-8?q?update=20=E4=BF=AE=E5=A4=8D=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=95=B0=E6=8D=AE=E7=BC=BA=E5=B0=91code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/common/mybatis/core/page/TableDataInfo.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java index 8db4b3c55..1fe2b3ef1 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java @@ -51,6 +51,8 @@ public class TableDataInfo implements Serializable { public TableDataInfo(List list, long total) { this.rows = list; this.total = total; + this.code = HttpStatus.HTTP_OK; + this.msg = "查询成功"; } /** -- Gitee From 54f04c3cdfcc7a1d6b781d60b711eddfc0700a8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 3 Jul 2025 10:32:51 +0800 Subject: [PATCH 005/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E5=BE=85=E5=8A=9E=E4=BB=BB=E5=8A=A1=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/domain/vo/FlowTaskVo.java | 1 + .../workflow/service/IFlwInstanceService.java | 8 -- .../workflow/service/IFlwTaskService.java | 25 ---- .../service/impl/FlwInstanceServiceImpl.java | 25 ---- .../service/impl/FlwTaskServiceImpl.java | 110 +++++------------- 5 files changed, 33 insertions(+), 136 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java index 1d6385b24..a7f50643c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java @@ -145,6 +145,7 @@ public class FlowTaskVo implements Serializable { /** * 办理人名称 */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "assigneeIds") private String assigneeNames; /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java index 01e5124b4..7852c2485 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java @@ -141,14 +141,6 @@ public interface IFlwInstanceService { */ FlowInstance selectByTaskId(Long taskId); - /** - * 按任务id查询实例 - * - * @param taskIdList 任务id - * @return 结果 - */ - List selectByTaskIdList(List taskIdList); - /** * 作废流程 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java index 11d17ec44..5f01fda95 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java @@ -14,7 +14,6 @@ import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo; import java.util.List; -import java.util.Map; /** * 任务 服务层 @@ -150,14 +149,6 @@ public interface IFlwTaskService { */ List getNextNodeList(FlowNextNodeBo bo); - /** - * 按照任务id查询任务 - * - * @param taskIdList 任务id - * @return 结果 - */ - List selectHisTaskByIdList(List taskIdList); - /** * 按照任务id查询任务 * @@ -166,14 +157,6 @@ public interface IFlwTaskService { */ FlowHisTask selectHisTaskById(Long taskId); - /** - * 按照实例id查询任务 - * - * @param instanceIdList 流程实例id - * @return 结果 - */ - List selectByInstIdList(List instanceIdList); - /** * 按照实例id查询任务 * @@ -191,14 +174,6 @@ public interface IFlwTaskService { */ boolean taskOperation(TaskOperationBo bo, String taskOperation); - /** - * 获取任务所有办理人 - * - * @param taskIdList 任务id - * @return 结果 - */ - Map> currentTaskAllUser(List taskIdList); - /** * 获取当前任务的所有办理人 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index a55e77085..237a4b136 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -379,31 +379,6 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { return null; } - /** - * 按任务id查询实例 - * - * @param taskIdList 任务id - */ - @Override - public List selectByTaskIdList(List taskIdList) { - if (CollUtil.isEmpty(taskIdList)) { - return Collections.emptyList(); - } - Set instanceIds = new HashSet<>(); - List flowTaskList = flwTaskService.selectByIdList(taskIdList); - for (FlowTask flowTask : flowTaskList) { - instanceIds.add(flowTask.getInstanceId()); - } - List flowHisTaskList = flwTaskService.selectHisTaskByIdList(taskIdList); - for (FlowHisTask flowHisTask : flowHisTaskList) { - instanceIds.add(flowHisTask.getInstanceId()); - } - if (!instanceIds.isEmpty()) { - return this.selectInstListByIdList(new ArrayList<>(instanceIds)); - } - return Collections.emptyList(); - } - /** * 作废流程 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 1e4972def..264e90782 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -57,7 +57,6 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.*; -import java.util.stream.Collectors; import static org.dromara.workflow.common.constant.FlowConstant.*; @@ -256,14 +255,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService { hisTask.setCreateTime(updateTime); hisTask.setUpdateTime(updateTime); hisTaskService.save(hisTask); - List userList = flowCopyList.stream() - .map(flowCopy -> { - FlowUser flowUser = new FlowUser(); - flowUser.setType(TaskAssigneeType.COPY.getCode()); - flowUser.setProcessedBy(String.valueOf(flowCopy.getUserId())); - flowUser.setAssociated(taskId); - return flowUser; - }).collect(Collectors.toList()); + List userList = StreamUtils.toList(flowCopyList, x -> + new FlowUser() + .setType(TaskAssigneeType.COPY.getCode()) + .setProcessedBy(String.valueOf(x.getUserId())) + .setAssociated(taskId) + ); // 批量保存抄送人员 FlowEngine.userService().saveBatch(userList); } @@ -280,7 +277,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService { queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); queryWrapper.in("t.processed_by", LoginHelper.getUserIdStr()); queryWrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); - Page page = this.getFlowTaskVoPage(pageQuery, queryWrapper); + Page page = flwTaskMapper.getListRunTask(pageQuery.build(), queryWrapper); + this.wrapAssigneeInfo(page.getRecords()); return TableDataInfo.build(page); } @@ -310,25 +308,28 @@ public class FlwTaskServiceImpl implements IFlwTaskService { public TableDataInfo pageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { QueryWrapper queryWrapper = buildQueryWrapper(flowTaskBo); queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); - Page page = getFlowTaskVoPage(pageQuery, queryWrapper); + Page page = flwTaskMapper.getListRunTask(pageQuery.build(), queryWrapper); + this.wrapAssigneeInfo(page.getRecords()); return TableDataInfo.build(page); } - private Page getFlowTaskVoPage(PageQuery pageQuery, QueryWrapper queryWrapper) { - Page page = flwTaskMapper.getListRunTask(pageQuery.build(), queryWrapper); - List records = page.getRecords(); - if (CollUtil.isNotEmpty(records)) { - List taskIds = StreamUtils.toList(records, FlowTaskVo::getId); - Map> listMap = currentTaskAllUser(taskIds); - records.forEach(t -> { - List userList = listMap.getOrDefault(t.getId(), Collections.emptyList()); - if (CollUtil.isNotEmpty(userList)) { - t.setAssigneeIds(StreamUtils.join(userList, e -> String.valueOf(e.getUserId()))); - t.setAssigneeNames(StreamUtils.join(userList, RemoteUserVo::getNickName)); - } - }); + /** + * 为流程任务列表封装处理人 ID(assigneeIds) + * + * @param taskList 流程任务列表 + */ + private void wrapAssigneeInfo(List taskList) { + if (CollUtil.isEmpty(taskList)) { + return; + } + List associatedUsers = FlowEngine.userService() + .getByAssociateds(StreamUtils.toList(taskList, FlowTaskVo::getId)); + Map> taskUserMap = StreamUtils.groupByKey(associatedUsers, User::getAssociated); + // 组装用户数据回任务列表 + for (FlowTaskVo task : taskList) { + List users = taskUserMap.get(task.getId()); + task.setAssigneeIds(StreamUtils.join(users, User::getProcessedBy)); } - return page; } /** @@ -552,18 +553,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService { return nextFlowNodes; } - /** - * 按照任务id查询任务 - * - * @param taskIdList 任务id - * @return 结果 - */ - @Override - public List selectHisTaskByIdList(List taskIdList) { - return flowHisTaskMapper.selectList(new LambdaQueryWrapper<>(FlowHisTask.class) - .in(FlowHisTask::getId, taskIdList)); - } - /** * 按照任务id查询任务 * @@ -576,17 +565,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService { .eq(FlowHisTask::getId, taskId)); } - /** - * 按照实例id查询任务 - * - * @param instanceIdList 流程实例id - */ - @Override - public List selectByInstIdList(List instanceIdList) { - return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class) - .in(FlowTask::getInstanceId, instanceIdList)); - } - /** * 按照实例id查询任务 * @@ -687,15 +665,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService { // 批量删除现有任务的办理人记录 if (CollUtil.isNotEmpty(flowTasks)) { FlowEngine.userService().deleteByTaskIds(StreamUtils.toList(flowTasks, FlowTask::getId)); - List userList = flowTasks.stream() - .map(flowTask -> { - FlowUser flowUser = new FlowUser(); - flowUser.setType(TaskAssigneeType.APPROVER.getCode()); - flowUser.setProcessedBy(userId); - flowUser.setAssociated(flowTask.getId()); - return flowUser; - }) - .collect(Collectors.toList()); + List userList = StreamUtils.toList(flowTasks, flowTask -> + new FlowUser() + .setType(TaskAssigneeType.APPROVER.getCode()) + .setProcessedBy(userId) + .setAssociated(flowTask.getId()) + ); if (CollUtil.isNotEmpty(userList)) { FlowEngine.userService().saveBatch(userList); } @@ -707,27 +682,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService { return true; } - /** - * 获取任务所有办理人 - * - * @param taskIdList 任务id - */ - @Override - public Map> currentTaskAllUser(List taskIdList) { - Map> map = new HashMap<>(); - // 获取与当前任务关联的用户列表 - List associatedUsers = FlowEngine.userService().getByAssociateds(taskIdList); - Map> listMap = StreamUtils.groupByKey(associatedUsers, User::getAssociated); - for (Map.Entry> entry : listMap.entrySet()) { - List value = entry.getValue(); - if (CollUtil.isNotEmpty(value)) { - List userDtoList = remoteUserService.selectListByIds(StreamUtils.toList(value, e -> Convert.toLong(e.getProcessedBy()))); - map.put(entry.getKey(), userDtoList); - } - } - return map; - } - /** * 获取当前任务的所有办理人 * -- Gitee From e93a2662a7475882762c2cd9e9c8b94d896fb2ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 3 Jul 2025 10:35:40 +0800 Subject: [PATCH 006/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=9B=BE=E6=8C=89=E5=AE=A1=E6=89=B9=E4=BA=BA=E5=88=86?= =?UTF-8?q?=E7=BB=84=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FlwChartExtServiceImpl.java | 25 +++++-- .../service/impl/FlwInstanceServiceImpl.java | 66 +++++++++++-------- 2 files changed, 60 insertions(+), 31 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java index ba4319b87..ce215983e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java @@ -28,8 +28,12 @@ import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.constant.FlowConstant; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; /** * 流程图提示信息 @@ -78,15 +82,26 @@ public class FlwChartExtServiceImpl implements ChartExtService { Map dictType = dictService.getAllDictByDictType(FlowConstant.WF_TASK_STATUS); - // 遍历流程定义中的每个节点,调用处理方法,将对应节点的任务列表及用户信息传入,生成扩展提示内容 for (NodeJson nodeJson : defJson.getNodeList()) { - // 获取当前节点对应的历史任务列表,如果没有则返回空列表避免空指针 List taskList = groupedByNode.get(nodeJson.getNodeCode()); if (CollUtil.isEmpty(taskList)) { continue; } - // 处理当前节点的扩展信息,包括构建审批人提示内容等 - this.processNodeExtInfo(nodeJson, taskList, userMap, dictType); + + // 按审批人分组去重,保留最新处理记录,最终转换成 List + List latestPerApprover = taskList.stream() + .collect(Collectors.collectingAndThen( + Collectors.toMap( + FlowHisTask::getApprover, + Function.identity(), + (oldTask, newTask) -> newTask.getUpdateTime().after(oldTask.getUpdateTime()) ? newTask : oldTask, + LinkedHashMap::new + ), + map -> new ArrayList<>(map.values()) + )); + + // 处理当前节点的扩展信息 + this.processNodeExtInfo(nodeJson, latestPerApprover, userMap, dictType); } } @@ -244,7 +259,7 @@ public class FlwChartExtServiceImpl implements ChartExtService { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.eq(FlowHisTask::getInstanceId, instanceId) .eq(FlowHisTask::getNodeType, NodeType.BETWEEN.getKey()) - .orderByDesc(FlowHisTask::getCreateTime, FlowHisTask::getUpdateTime); + .orderByDesc(FlowHisTask::getUpdateTime); return flowHisTaskMapper.selectList(wrapper); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index 237a4b136..e9775af9a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -18,12 +18,13 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; -import org.dromara.system.api.domain.vo.RemoteUserVo; +import org.dromara.warm.flow.core.FlowEngine; import org.dromara.warm.flow.core.constant.ExceptionCons; import org.dromara.warm.flow.core.dto.FlowParams; import org.dromara.warm.flow.core.entity.Definition; import org.dromara.warm.flow.core.entity.Instance; import org.dromara.warm.flow.core.entity.Task; +import org.dromara.warm.flow.core.entity.User; import org.dromara.warm.flow.core.enums.NodeType; import org.dromara.warm.flow.core.service.DefService; import org.dromara.warm.flow.core.service.InsService; @@ -283,37 +284,50 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE); } Long instanceId = flowInstance.getId(); - //运行中的任务 - List list = new ArrayList<>(); - List flowTaskList = flwTaskService.selectByInstId(instanceId); - if (CollUtil.isNotEmpty(flowTaskList)) { - List flowHisTaskVos = BeanUtil.copyToList(flowTaskList, FlowHisTaskVo.class); - for (FlowHisTaskVo flowHisTaskVo : flowHisTaskVos) { - flowHisTaskVo.setFlowStatus(TaskStatusEnum.WAITING.getStatus()); - flowHisTaskVo.setUpdateTime(null); - flowHisTaskVo.setRunDuration(null); - List allUser = flwTaskService.currentTaskAllUser(flowHisTaskVo.getId()); - if (CollUtil.isNotEmpty(allUser)) { - String join = StreamUtils.join(allUser, e -> String.valueOf(e.getUserId())); - flowHisTaskVo.setApprover(join); + + // 先组装待审批任务(运行中的任务) + List runningTaskVos = new ArrayList<>(); + List runningTasks = flwTaskService.selectByInstId(instanceId); + if (CollUtil.isNotEmpty(runningTasks)) { + runningTaskVos = BeanUtil.copyToList(runningTasks, FlowHisTaskVo.class); + + List associatedUsers = FlowEngine.userService() + .getByAssociateds(StreamUtils.toList(runningTasks, FlowTask::getId)); + Map> taskUserMap = StreamUtils.groupByKey(associatedUsers, User::getAssociated); + + for (FlowHisTaskVo vo : runningTaskVos) { + vo.setFlowStatus(TaskStatusEnum.WAITING.getStatus()); + vo.setUpdateTime(null); + vo.setRunDuration(null); + + List users = taskUserMap.get(vo.getId()); + if (CollUtil.isNotEmpty(users)) { + vo.setApprover(StreamUtils.join(users, User::getProcessedBy)); } if (BusinessStatusEnum.isDraftOrCancelOrBack(flowInstance.getFlowStatus())) { - flowHisTaskVo.setApprover(LoginHelper.getUserIdStr()); - flowHisTaskVo.setApproveName(LoginHelper.getLoginUser().getNickname()); + vo.setApprover(LoginHelper.getUserIdStr()); } } - list.addAll(flowHisTaskVos); } - //历史任务 - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.eq(FlowHisTask::getInstanceId, instanceId) - .eq(FlowHisTask::getNodeType, NodeType.BETWEEN.getKey()) - .orderByDesc(FlowHisTask::getCreateTime, FlowHisTask::getUpdateTime); - List flowHisTasks = flowHisTaskMapper.selectList(wrapper); - if (CollUtil.isNotEmpty(flowHisTasks)) { - list.addAll(BeanUtil.copyToList(flowHisTasks, FlowHisTaskVo.class)); + + // 再组装历史任务(已处理任务) + List hisTaskVos = new ArrayList<>(); + List hisTasks = flowHisTaskMapper.selectList( + new LambdaQueryWrapper() + .eq(FlowHisTask::getInstanceId, instanceId) + .eq(FlowHisTask::getNodeType, NodeType.BETWEEN.getKey()) + .orderByDesc(FlowHisTask::getUpdateTime) + ); + if (CollUtil.isNotEmpty(hisTasks)) { + hisTaskVos = BeanUtil.copyToList(hisTasks, FlowHisTaskVo.class); } - return Map.of("list", list, "instanceId", instanceId); + + // 结果列表,待审批任务在前,历史任务在后 + List combinedList = new ArrayList<>(); + combinedList.addAll(runningTaskVos); + combinedList.addAll(hisTaskVos); + + return Map.of("list", combinedList, "instanceId", instanceId); } /** -- Gitee From c690a302217f30319575190a5864506583452b6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 3 Jul 2025 10:38:30 +0800 Subject: [PATCH 007/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=20SysOssExt=20=E9=99=84=E4=BB=B6=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/resource/domain/SysOssExt.java | 75 +++++++++++++++++++ .../service/impl/SysOssServiceImpl.java | 14 +++- 2 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/SysOssExt.java diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/SysOssExt.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/SysOssExt.java new file mode 100644 index 000000000..b918e49f9 --- /dev/null +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/SysOssExt.java @@ -0,0 +1,75 @@ +package org.dromara.resource.domain; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * 附件扩展字段对象(存储在 SysOss.ext1 的 JSON 字符串中) + * + * @author AprilWind + */ +@Data +public class SysOssExt implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 所属业务类型(如 avatar、report、contract) + */ + private String bizType; + + /** + * 文件大小(单位:字节) + */ + private Long fileSize; + + /** + * 文件类型(MIME类型,如 image/png) + */ + private String contentType; + + /** + * 来源标识(如 userUpload、systemImport) + */ + private String source; + + /** + * 上传 IP 地址,便于审计和追踪 + */ + private String uploadIp; + + /** + * 附件说明或备注 + */ + private String remark; + + /** + * 附件标签,如 ["图片", "证件"] + */ + private List tags; + + /** + * 业务绑定ID(如某业务记录ID) + */ + private String refId; + + /** + * 绑定业务类型 + */ + private String refType; + + /** + * 是否为临时文件,用于区分正式或待清理 + */ + private Boolean isTemp; + + /** + * 文件MD5值(可用于去重或校验) + */ + private String md5; + +} diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java index 2f4a04787..6d1307f40 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java @@ -14,6 +14,7 @@ import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.file.FileUtils; +import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.oss.core.OssClient; @@ -21,6 +22,7 @@ import org.dromara.common.oss.entity.UploadResult; import org.dromara.common.oss.enums.AccessPolicyType; import org.dromara.common.oss.factory.OssFactory; import org.dromara.resource.domain.SysOss; +import org.dromara.resource.domain.SysOssExt; import org.dromara.resource.domain.bo.SysOssBo; import org.dromara.resource.domain.vo.SysOssVo; import org.dromara.resource.mapper.SysOssMapper; @@ -177,8 +179,11 @@ public class SysOssServiceImpl implements ISysOssService { } catch (IOException e) { throw new ServiceException(e.getMessage()); } + SysOssExt ext1 = new SysOssExt(); + ext1.setFileSize(file.getSize()); + ext1.setContentType(file.getContentType()); // 保存文件信息 - return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult); + return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult, ext1); } /** @@ -193,17 +198,20 @@ public class SysOssServiceImpl implements ISysOssService { String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); OssClient storage = OssFactory.instance(); UploadResult uploadResult = storage.uploadSuffix(file, suffix); + SysOssExt ext1 = new SysOssExt(); + ext1.setFileSize(file.length()); // 保存文件信息 - return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult); + return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult, ext1); } - private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult) { + private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult, SysOssExt ext1) { SysOss oss = new SysOss(); oss.setUrl(uploadResult.getUrl()); oss.setFileSuffix(suffix); oss.setFileName(uploadResult.getFilename()); oss.setOriginalName(originalfileName); oss.setService(configKey); + oss.setExt1(JsonUtils.toJsonString(ext1)); baseMapper.insert(oss); SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class); return this.matchingUrl(sysOssVo); -- Gitee From 39079e53aa3cdbe89d2ab0fccf27fb26226dbb71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 3 Jul 2025 13:44:59 +0800 Subject: [PATCH 008/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=B7=A5=E4=BD=9C=E6=B5=81=E4=BB=A3=E7=A0=81=E5=86=99?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FlwTaskController.java | 2 +- .../listener/WorkflowGlobalListener.java | 54 +++++++++--------- .../workflow/service/IFlwTaskService.java | 4 +- .../service/impl/FlwCommonServiceImpl.java | 55 +++++++------------ .../impl/FlwDefinitionServiceImpl.java | 5 +- .../service/impl/FlwTaskServiceImpl.java | 16 +++--- 6 files changed, 64 insertions(+), 72 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java index 252cc0e8c..26d4f5efa 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java @@ -206,7 +206,7 @@ public class FlwTaskController extends BaseController { */ @GetMapping("/currentTaskAllUser/{taskId}") public R> currentTaskAllUser(@PathVariable Long taskId) { - return R.ok(flwTaskService.currentTaskAllUser(taskId)); + return R.ok(flwTaskService.currentTaskAllUser(List.of(taskId))); } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index c1ef2622a..2d23f772c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -1,6 +1,7 @@ package org.dromara.workflow.listener; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.TypeReference; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; @@ -136,33 +137,36 @@ public class WorkflowGlobalListener implements GlobalListener { return; } // 只有办理或者退回的时候才执行消息通知和抄送 - if (TaskStatusEnum.PASS.getStatus().equals(flowParams.getHisStatus()) - || TaskStatusEnum.BACK.getStatus().equals(flowParams.getHisStatus())) { - if (variable != null) { - if (variable.containsKey(FlowConstant.FLOW_COPY_LIST)) { - List flowCopyList = (List) variable.get(FlowConstant.FLOW_COPY_LIST); - // 添加抄送人 - flwTaskService.setCopy(task, flowCopyList); - } - if (variable.containsKey(FlowConstant.MESSAGE_TYPE)) { - List messageType = (List) variable.get(FlowConstant.MESSAGE_TYPE); - String notice = (String) variable.get(FlowConstant.MESSAGE_NOTICE); - // 消息通知 - if (CollUtil.isNotEmpty(messageType)) { - flwCommonService.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice); - } - } - FlowInstance ins = new FlowInstance(); - Map variableMap = instance.getVariableMap(); - variableMap.remove(FlowConstant.FLOW_COPY_LIST); - variableMap.remove(FlowConstant.MESSAGE_TYPE); - variableMap.remove(FlowConstant.MESSAGE_NOTICE); - variableMap.remove(FlowConstant.SUBMIT); - ins.setId(instance.getId()); - ins.setVariable(FlowEngine.jsonConvert.objToStr(variableMap)); - insService.updateById(ins); + if (!StringUtils.equalsAny(flowParams.getHisStatus(), + TaskStatusEnum.PASS.getStatus(), TaskStatusEnum.BACK.getStatus())) { + return; + } + if (ObjectUtil.isNull(variable)) { + return; + } + + if (variable.containsKey(FlowConstant.FLOW_COPY_LIST)) { + List flowCopyList = MapUtil.get(variable, FlowConstant.FLOW_COPY_LIST, new TypeReference<>() {}); + // 添加抄送人 + flwTaskService.setCopy(task, flowCopyList); + } + if (variable.containsKey(FlowConstant.MESSAGE_TYPE)) { + List messageType = MapUtil.get(variable, FlowConstant.FLOW_COPY_LIST, new TypeReference<>() {}); + String notice = MapUtil.getStr(variable, FlowConstant.MESSAGE_NOTICE); + // 消息通知 + if (CollUtil.isNotEmpty(messageType)) { + flwCommonService.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice); } } + FlowInstance ins = new FlowInstance(); + Map variableMap = instance.getVariableMap(); + variableMap.remove(FlowConstant.FLOW_COPY_LIST); + variableMap.remove(FlowConstant.MESSAGE_TYPE); + variableMap.remove(FlowConstant.MESSAGE_NOTICE); + variableMap.remove(FlowConstant.SUBMIT); + ins.setId(instance.getId()); + ins.setVariable(FlowEngine.jsonConvert.objToStr(variableMap)); + insService.updateById(ins); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java index 5f01fda95..cea45bf6d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java @@ -177,10 +177,10 @@ public interface IFlwTaskService { /** * 获取当前任务的所有办理人 * - * @param taskId 任务id + * @param taskIds 任务id * @return 结果 */ - List currentTaskAllUser(Long taskId); + List currentTaskAllUser(List taskIds); /** * 按照节点编码查询节点 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java index 839e617ad..f442bf2f4 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java @@ -11,26 +11,17 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.resource.api.RemoteMailService; import org.dromara.resource.api.RemoteMessageService; import org.dromara.system.api.domain.vo.RemoteUserVo; -import org.dromara.warm.flow.core.FlowEngine; -import org.dromara.warm.flow.core.entity.Instance; import org.dromara.warm.flow.core.entity.Node; -import org.dromara.warm.flow.core.entity.Task; -import org.dromara.warm.flow.core.entity.User; import org.dromara.warm.flow.core.enums.SkipType; import org.dromara.warm.flow.core.service.NodeService; -import org.dromara.warm.flow.core.service.UserService; -import org.dromara.warm.flow.core.utils.MapUtil; import org.dromara.warm.flow.orm.entity.FlowTask; -import org.dromara.warm.flow.orm.entity.FlowUser; import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.enums.MessageTypeEnum; -import org.dromara.workflow.common.enums.TaskAssigneeType; import org.dromara.workflow.service.IFlwCommonService; -import org.dromara.workflow.service.IFlwTaskAssigneeService; import org.dromara.workflow.service.IFlwTaskService; import org.springframework.stereotype.Service; -import java.util.*; +import java.util.List; import java.util.stream.Collectors; @@ -62,38 +53,34 @@ public class FlwCommonServiceImpl implements IFlwCommonService { @Override public void sendMessage(String flowName, Long instId, List messageType, String message) { IFlwTaskService flwTaskService = SpringUtils.getBean(IFlwTaskService.class); - List userList = new ArrayList<>(); List list = flwTaskService.selectByInstId(instId); if (StringUtils.isBlank(message)) { message = "有新的【" + flowName + "】单据已经提交至您,请您及时处理。"; } - for (Task task : list) { - List users = flwTaskService.currentTaskAllUser(task.getId()); - if (CollUtil.isNotEmpty(users)) { - userList.addAll(users); - } + List userList = flwTaskService.currentTaskAllUser(StreamUtils.toList(list, FlowTask::getId)); + if (CollUtil.isEmpty(userList)) { + return; } - if (CollUtil.isNotEmpty(userList)) { - for (String code : messageType) { - MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); - if (ObjectUtil.isNotEmpty(messageTypeEnum)) { - switch (messageTypeEnum) { - case SYSTEM_MESSAGE: - List userIds = StreamUtils.toList(userList, RemoteUserVo::getUserId).stream().distinct().collect(Collectors.toList()); - remoteMessageService.publishMessage(userIds, message); - break; - case EMAIL_MESSAGE: - remoteMailService.send(StreamUtils.join(userList, RemoteUserVo::getEmail), "单据审批提醒", message); - break; - case SMS_MESSAGE: - //todo 短信发送 - break; - default: - throw new IllegalStateException("Unexpected value: " + messageTypeEnum); - } + for (String code : messageType) { + MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); + if (ObjectUtil.isEmpty(messageTypeEnum)) { + continue; + } + switch (messageTypeEnum) { + case SYSTEM_MESSAGE -> { + List userIds = StreamUtils.toList(userList, RemoteUserVo::getUserId).stream().distinct().collect(Collectors.toList()); + remoteMessageService.publishMessage(userIds, message); + } + case EMAIL_MESSAGE -> { + remoteMailService.send(StreamUtils.join(userList, RemoteUserVo::getEmail), "单据审批提醒", message); } + case SMS_MESSAGE -> { + //todo 短信发送 + } + default -> throw new IllegalStateException("Unexpected value: " + messageTypeEnum); } } + } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java index a82b833e7..9c7f169cf 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java @@ -123,8 +123,8 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService { List flowNodes = flowNodeMapper.selectList(new LambdaQueryWrapper().eq(FlowNode::getDefinitionId, id)); List errorMsg = new ArrayList<>(); if (CollUtil.isNotEmpty(flowNodes)) { + String applyNodeCode = flwCommonService.applyNodeCode(id); for (FlowNode flowNode : flowNodes) { - String applyNodeCode = flwCommonService.applyNodeCode(id); if (StringUtils.isBlank(flowNode.getPermissionFlag()) && !applyNodeCode.equals(flowNode.getNodeCode()) && NodeType.BETWEEN.getKey().equals(flowNode.getNodeType())) { errorMsg.add(flowNode.getNodeName()); } @@ -215,7 +215,8 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService { return; } FlowCategory flowCategory = flwCategoryMapper.selectOne(new LambdaQueryWrapper() - .eq(FlowCategory::getTenantId, DEFAULT_TENANT_ID).eq(FlowCategory::getCategoryId, FlowConstant.FLOW_CATEGORY_ID)); + .eq(FlowCategory::getTenantId, DEFAULT_TENANT_ID) + .eq(FlowCategory::getCategoryId, FlowConstant.FLOW_CATEGORY_ID)); flowCategory.setCategoryId(null); flowCategory.setTenantId(tenantId); flowCategory.setCreateDept(null); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 264e90782..0c5d1b81b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -535,12 +535,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService { //构建以下节点数据 List buildNextTaskList = StreamUtils.toList(nextNodeList, node -> taskService.addTask(node, instance, definition, FlowParams.build())); //办理人变量替换 - ExpressionUtil.evalVariable(buildNextTaskList, - FlowParams.build() - .variable(mergeVariable) - ); + ExpressionUtil.evalVariable(buildNextTaskList, FlowParams.build().variable(mergeVariable)); for (FlowNode flowNode : nextFlowNodes) { - buildNextTaskList.stream().filter(t -> t.getNodeCode().equals(flowNode.getNodeCode())).findFirst().ifPresent(t -> { + Optional first = buildNextTaskList.stream() + .filter(t -> t.getNodeCode().equals(flowNode.getNodeCode())) + .findFirst(); + first.ifPresent(t -> { if (CollUtil.isNotEmpty(t.getPermissionList())) { List users = flwTaskAssigneeService.fetchUsersByStorageIds(String.join(StringUtils.SEPARATOR, t.getPermissionList())); if (CollUtil.isNotEmpty(users)) { @@ -685,12 +685,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService { /** * 获取当前任务的所有办理人 * - * @param taskId 任务id + * @param taskIds 任务id */ @Override - public List currentTaskAllUser(Long taskId) { + public List currentTaskAllUser(List taskIds) { // 获取与当前任务关联的用户列表 - List userList = FlowEngine.userService().getByAssociateds(Collections.singletonList(taskId)); + List userList = FlowEngine.userService().getByAssociateds(taskIds); if (CollUtil.isEmpty(userList)) { return Collections.emptyList(); } -- Gitee From 8a2e970c5453fcc2d9ae9e016aa98f32a79fa13b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 4 Jul 2025 09:20:06 +0800 Subject: [PATCH 009/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=B1=BB=E5=90=8D=20=E9=81=BF=E5=85=8D=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E6=89=AB=E6=8F=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/{MailController.java => MailSendController.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/{MailController.java => MailSendController.java} (98%) diff --git a/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailController.java b/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailSendController.java similarity index 98% rename from ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailController.java rename to ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailSendController.java index 3aca79afb..3c7a7b311 100644 --- a/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailController.java +++ b/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailSendController.java @@ -21,7 +21,7 @@ import java.util.Arrays; @RequiredArgsConstructor @RestController @RequestMapping("/mail") -public class MailController { +public class MailSendController { /** * 发送邮件 -- Gitee From e668e524b23f3e02f287ab1d2092daa1ccd1575d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 4 Jul 2025 09:35:02 +0800 Subject: [PATCH 010/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B1=8F?= =?UTF-8?q?=E8=94=BD=E6=8E=89=E6=97=A0=E7=94=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/sse/controller/SseController.java | 54 +++++++++---------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java index a11b5bb51..9821db673 100644 --- a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java +++ b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java @@ -5,7 +5,6 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.sse.core.SseEmitterManager; -import org.dromara.common.sse.dto.SseMessageDto; import org.springframework.beans.factory.DisposableBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.http.MediaType; @@ -13,8 +12,6 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; -import java.util.List; - /** * SSE 控制器 * @@ -49,31 +46,32 @@ public class SseController implements DisposableBean { return R.ok(); } - /** - * 向特定用户发送消息 - * - * @param userId 目标用户的 ID - * @param msg 要发送的消息内容 - */ - @GetMapping(value = "${sse.path}/send") - public R send(Long userId, String msg) { - SseMessageDto dto = new SseMessageDto(); - dto.setUserIds(List.of(userId)); - dto.setMessage(msg); - sseEmitterManager.publishMessage(dto); - return R.ok(); - } - - /** - * 向所有用户发送消息 - * - * @param msg 要发送的消息内容 - */ - @GetMapping(value = "${sse.path}/sendAll") - public R send(String msg) { - sseEmitterManager.publishAll(msg); - return R.ok(); - } + // 以下为demo仅供参考 禁止使用 请在业务逻辑中使用工具发送而不是用接口发送 +// /** +// * 向特定用户发送消息 +// * +// * @param userId 目标用户的 ID +// * @param msg 要发送的消息内容 +// */ +// @GetMapping(value = "${sse.path}/send") +// public R send(Long userId, String msg) { +// SseMessageDto dto = new SseMessageDto(); +// dto.setUserIds(List.of(userId)); +// dto.setMessage(msg); +// sseEmitterManager.publishMessage(dto); +// return R.ok(); +// } +// +// /** +// * 向所有用户发送消息 +// * +// * @param msg 要发送的消息内容 +// */ +// @GetMapping(value = "${sse.path}/sendAll") +// public R send(String msg) { +// sseEmitterManager.publishAll(msg); +// return R.ok(); +// } /** * 清理资源。此方法目前不执行任何操作,但避免因未实现而导致错误 -- Gitee From f852949c2239515ecb26e24b74d8afd9f16b7863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 4 Jul 2025 15:01:06 +0800 Subject: [PATCH 011/155] =?UTF-8?q?update=20=E9=87=8D=E6=9E=84=E7=94=A8?= =?UTF-8?q?=E6=88=B7=20=E8=A7=92=E8=89=B2=20=E9=83=A8=E9=97=A8=20=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E7=9A=84=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E9=80=BB=E8=BE=91=E6=9B=B4=E7=AC=A6=E5=90=88=E5=AE=9E?= =?UTF-8?q?=E9=99=85=E4=B8=9A=E5=8A=A1=E5=9C=BA=E6=99=AF=E4=B8=8E=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=9F=A5=E8=AF=A2=E5=86=99=E6=B3=95=E6=8F=90=E9=AB=98?= =?UTF-8?q?=E6=95=88=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysRoleController.java | 2 +- .../dromara/system/mapper/SysDeptMapper.java | 32 ++++++++- .../dromara/system/mapper/SysMenuMapper.java | 69 +++++++++++++------ .../dromara/system/mapper/SysPostMapper.java | 6 +- .../dromara/system/mapper/SysRoleMapper.java | 57 ++++++++++----- .../dromara/system/mapper/SysUserMapper.java | 48 ++++++++++--- .../system/mapper/SysUserRoleMapper.java | 14 +++- .../system/service/ISysRoleService.java | 2 +- .../service/impl/SysMenuServiceImpl.java | 53 +++++++------- .../service/impl/SysRoleServiceImpl.java | 50 +++++++------- .../service/impl/SysUserServiceImpl.java | 4 +- .../resources/mapper/system/SysDeptMapper.xml | 14 ---- .../resources/mapper/system/SysMenuMapper.xml | 63 ----------------- .../resources/mapper/system/SysPostMapper.xml | 11 --- .../resources/mapper/system/SysRoleMapper.xml | 52 -------------- .../mapper/system/SysUserRoleMapper.xml | 6 -- 16 files changed, 226 insertions(+), 257 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java index b3e8cc40a..24e172142 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java @@ -144,7 +144,7 @@ public class SysRoleController extends BaseController { @Log(title = "角色管理", businessType = BusinessType.DELETE) @DeleteMapping("/{roleIds}") public R remove(@PathVariable Long[] roleIds) { - return toAjax(roleService.deleteRoleByIds(roleIds)); + return toAjax(roleService.deleteRoleByIds(List.of(roleIds))); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java index 655526fb3..8cf6d3982 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java @@ -3,7 +3,6 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.apache.ibatis.annotations.Param; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.mybatis.annotation.DataColumn; import org.dromara.common.mybatis.annotation.DataPermission; @@ -21,6 +20,20 @@ import java.util.List; */ public interface SysDeptMapper extends BaseMapperPlus { + default String buildDeptByRoleSql(Long roleId) { + return """ + select dept_id from sys_role_dept where role_id = %d + """.formatted(roleId); + } + + default String buildParentDeptByRoleSql(Long roleId) { + return """ + select parent_id from sys_dept where dept_id in ( + select dept_id from sys_role_dept where role_id = %d + ) + """.formatted(roleId); + } + /** * 查询部门管理数据 * @@ -33,10 +46,11 @@ public interface SysDeptMapper extends BaseMapperPlus { default List selectDeptList(Wrapper queryWrapper) { return this.selectVoList(queryWrapper); } + /** * 分页查询部门管理数据 * - * @param page 分页参数 + * @param page 分页信息 * @param queryWrapper 查询条件 * @return 部门信息集合 */ @@ -46,6 +60,7 @@ public interface SysDeptMapper extends BaseMapperPlus { default Page selectPageDeptList(Page page, Wrapper queryWrapper) { return this.selectVoPage(page, queryWrapper); } + /** * 统计指定部门ID的部门数量 * @@ -58,6 +73,7 @@ public interface SysDeptMapper extends BaseMapperPlus { default long countDeptById(Long deptId) { return this.selectCount(new LambdaQueryWrapper().eq(SysDept::getDeptId, deptId)); } + /** * 根据父部门ID查询其所有子部门的列表 * @@ -90,6 +106,16 @@ public interface SysDeptMapper extends BaseMapperPlus { * @param deptCheckStrictly 部门树选择项是否关联显示 * @return 选中部门列表 */ - List selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly); + default List selectDeptListByRoleId(Long roleId, boolean deptCheckStrictly) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.select(SysDept::getDeptId) + .inSql(SysDept::getDeptId, this.buildDeptByRoleSql(roleId)) + .orderByAsc(SysDept::getParentId) + .orderByAsc(SysDept::getOrderNum); + if (deptCheckStrictly) { + wrapper.notInSql(SysDept::getDeptId, this.buildParentDeptByRoleSql(roleId)); + } + return this.selectObjs(wrapper); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java index 14f758ae1..d71c2998e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java @@ -1,13 +1,10 @@ package org.dromara.system.mapper; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Constants; import org.dromara.common.core.constant.SystemConstants; -import org.dromara.system.domain.SysMenu; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysMenu; import org.dromara.system.domain.vo.SysMenuVo; -import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,13 +15,27 @@ import java.util.List; */ public interface SysMenuMapper extends BaseMapperPlus { - /** - * 根据用户查询系统菜单列表 - * - * @param queryWrapper 查询条件 - * @return 菜单列表 - */ - List selectMenuListByUserId(@Param(Constants.WRAPPER) Wrapper queryWrapper); + default String buildMenuByUserSql(Long userId) { + return """ + select menu_id from sys_role_menu where role_id in ( + select role_id from sys_user_role where user_id = %d + ) + """.formatted(userId); + } + + default String buildMenuByRoleSql(Long roleId) { + return """ + select menu_id from sys_role_menu where role_id = %d + """.formatted(roleId); + } + + default String buildParentMenuByRoleSql(Long roleId) { + return """ + select parent_id from sys_menu where menu_id in ( + select menu_id from sys_role_menu where role_id = %d + ) + """.formatted(roleId); + } /** * 根据用户ID查询权限 @@ -32,7 +43,13 @@ public interface SysMenuMapper extends BaseMapperPlus { * @param userId 用户ID * @return 权限列表 */ - List selectMenuPermsByUserId(Long userId); + default List selectMenuPermsByUserId(Long userId) { + return this.selectObjs( + new LambdaQueryWrapper() + .select(SysMenu::getPerms) + .inSql(SysMenu::getMenuId, this.buildMenuByUserSql(userId)) + ); + } /** * 根据角色ID查询权限 @@ -40,7 +57,13 @@ public interface SysMenuMapper extends BaseMapperPlus { * @param roleId 角色ID * @return 权限列表 */ - List selectMenuPermsByRoleId(Long roleId); + default List selectMenuPermsByRoleId(Long roleId) { + return this.selectObjs( + new LambdaQueryWrapper() + .select(SysMenu::getPerms) + .inSql(SysMenu::getMenuId, this.buildMenuByRoleSql(roleId)) + ); + } /** * 根据用户ID查询菜单 @@ -56,14 +79,6 @@ public interface SysMenuMapper extends BaseMapperPlus { return this.selectList(lqw); } - /** - * 根据用户ID查询菜单 - * - * @param userId 用户ID - * @return 菜单列表 - */ - List selectMenuTreeByUserId(Long userId); - /** * 根据角色ID查询菜单树信息 * @@ -71,6 +86,16 @@ public interface SysMenuMapper extends BaseMapperPlus { * @param menuCheckStrictly 菜单树选择项是否关联显示 * @return 选中菜单列表 */ - List selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly); + default List selectMenuListByRoleId(Long roleId, boolean menuCheckStrictly) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.select(SysMenu::getMenuId) + .inSql(SysMenu::getMenuId, buildMenuByRoleSql(roleId)) + .orderByAsc(SysMenu::getParentId) + .orderByAsc(SysMenu::getOrderNum); + if (menuCheckStrictly) { + wrapper.notInSql(SysMenu::getMenuId, this.buildParentMenuByRoleSql(roleId)); + } + return this.selectObjs(wrapper); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java index 2efa5c888..a457c53a2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java @@ -1,6 +1,7 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.dromara.common.mybatis.annotation.DataColumn; import org.dromara.common.mybatis.annotation.DataPermission; @@ -31,6 +32,9 @@ public interface SysPostMapper extends BaseMapperPlus { * @param userId 用户ID * @return 结果 */ - List selectPostsByUserId(Long userId); + default List selectPostsByUserId(Long userId) { + return this.selectVoList(new LambdaQueryWrapper() + .inSql(SysPost::getPostId, "select post_id from sys_user_post where user_id = " + userId)); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java index ac5a47e54..1d3a0bb77 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java @@ -1,6 +1,7 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; @@ -19,11 +20,26 @@ import java.util.List; */ public interface SysRoleMapper extends BaseMapperPlus { + default String buildRoleByUserSql(Long userId) { + return """ + select role_id from sys_user_role where user_id = %d + """.formatted(userId); + } + + /** + * 分页查询角色列表 + * + * @param page 分页对象 + * @param queryWrapper 查询条件 + * @return 包含角色信息的分页结果 + */ @DataPermission({ - @DataColumn(key = "deptName", value = "d.dept_id"), - @DataColumn(key = "userName", value = "r.create_by") + @DataColumn(key = "deptName", value = "create_dept"), + @DataColumn(key = "userName", value = "create_by") }) - Page selectPageRoleList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + default Page selectPageRoleList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper) { + return this.selectVoPage(page, queryWrapper); + } /** * 根据条件分页查询角色数据 @@ -32,24 +48,26 @@ public interface SysRoleMapper extends BaseMapperPlus { * @return 角色数据集合信息 */ @DataPermission({ - @DataColumn(key = "deptName", value = "d.dept_id"), - @DataColumn(key = "userName", value = "r.create_by") + @DataColumn(key = "deptName", value = "create_dept"), + @DataColumn(key = "userName", value = "create_by") }) - List selectRoleList(@Param(Constants.WRAPPER) Wrapper queryWrapper); - - @DataPermission({ - @DataColumn(key = "deptName", value = "d.dept_id"), - @DataColumn(key = "userName", value = "r.create_by") - }) - SysRoleVo selectRoleById(Long roleId); + default List selectRoleList(@Param(Constants.WRAPPER) Wrapper queryWrapper) { + return this.selectVoList(queryWrapper); + } /** - * 根据用户ID查询角色 + * 根据角色ID查询角色信息 * - * @param userId 用户ID - * @return 角色列表 + * @param roleId 角色ID + * @return 对应的角色信息 */ - List selectRolePermissionByUserId(Long userId); + @DataPermission({ + @DataColumn(key = "deptName", value = "r.create_dept"), + @DataColumn(key = "userName", value = "r.create_by") + }) + default SysRoleVo selectRoleById(Long roleId) { + return this.selectVoById(roleId); + } /** * 根据用户ID查询角色 @@ -57,6 +75,11 @@ public interface SysRoleMapper extends BaseMapperPlus { * @param userId 用户ID * @return 角色列表 */ - List selectRolesByUserId(Long userId); + default List selectRolesByUserId(Long userId) { + return this.selectVoList(new LambdaQueryWrapper() + .select(SysRole::getRoleId, SysRole::getRoleName, SysRole::getRoleKey, + SysRole::getRoleSort, SysRole::getDataScope, SysRole::getStatus) + .inSql(SysRole::getRoleId, this.buildRoleByUserSql(userId))); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java index 851b13a5a..2cfd3db98 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java @@ -21,17 +21,30 @@ import java.util.List; */ public interface SysUserMapper extends BaseMapperPlus { + /** + * 分页查询用户列表,并进行数据权限控制 + * + * @param page 分页参数 + * @param queryWrapper 查询条件 + * @return 分页的用户信息 + */ @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), - @DataColumn(key = "userName", value = "user_id") + @DataColumn(key = "userName", value = "create_by") }) default Page selectPageUserList(Page page, Wrapper queryWrapper) { return this.selectVoPage(page, queryWrapper); } + /** + * 查询用户列表,并进行数据权限控制 + * + * @param queryWrapper 查询条件 + * @return 用户信息集合 + */ @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), - @DataColumn(key = "userName", value = "user_id") + @DataColumn(key = "userName", value = "create_by") }) default List selectUserList(Wrapper queryWrapper) { return this.selectVoList(queryWrapper); @@ -45,7 +58,7 @@ public interface SysUserMapper extends BaseMapperPlus { */ @DataPermission({ @DataColumn(key = "deptName", value = "d.dept_id"), - @DataColumn(key = "userName", value = "u.user_id") + @DataColumn(key = "userName", value = "u.create_by") }) List selectUserExportList(@Param(Constants.WRAPPER) Wrapper queryWrapper); @@ -58,7 +71,7 @@ public interface SysUserMapper extends BaseMapperPlus { */ @DataPermission({ @DataColumn(key = "deptName", value = "d.dept_id"), - @DataColumn(key = "userName", value = "u.user_id") + @DataColumn(key = "userName", value = "u.create_by") }) Page selectAllocatedList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); @@ -70,29 +83,48 @@ public interface SysUserMapper extends BaseMapperPlus { */ @DataPermission({ @DataColumn(key = "deptName", value = "d.dept_id"), - @DataColumn(key = "userName", value = "u.user_id") + @DataColumn(key = "userName", value = "u.create_by") }) Page selectUnallocatedList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + /** + * 根据用户ID统计用户数量 + * + * @param userId 用户ID + * @return 用户数量 + */ @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), - @DataColumn(key = "userName", value = "user_id") + @DataColumn(key = "userName", value = "create_by") }) default long countUserById(Long userId) { return this.selectCount(new LambdaQueryWrapper().eq(SysUser::getUserId, userId)); } + /** + * 根据条件更新用户数据 + * + * @param user 要更新的用户实体 + * @param updateWrapper 更新条件封装器 + * @return 更新操作影响的行数 + */ @Override @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), - @DataColumn(key = "userName", value = "user_id") + @DataColumn(key = "userName", value = "create_by") }) int update(@Param(Constants.ENTITY) SysUser user, @Param(Constants.WRAPPER) Wrapper updateWrapper); + /** + * 根据用户ID更新用户数据 + * + * @param user 要更新的用户实体 + * @return 更新操作影响的行数 + */ @Override @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), - @DataColumn(key = "userName", value = "user_id") + @DataColumn(key = "userName", value = "create_by") }) int updateById(@Param(Constants.ENTITY) SysUser user); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java index e2f706c89..e7c6ae38a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java @@ -1,5 +1,6 @@ package org.dromara.system.mapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.system.domain.SysUserRole; @@ -12,6 +13,17 @@ import java.util.List; */ public interface SysUserRoleMapper extends BaseMapperPlus { - List selectUserIdsByRoleId(Long roleId); + /** + * 根据角色ID查询关联的用户ID列表 + * + * @param roleId 角色ID + * @return 关联到指定角色的用户ID列表 + */ + default List selectUserIdsByRoleId(Long roleId) { + return this.selectObjs(new LambdaQueryWrapper() + .select(SysUserRole::getUserId).inSql(SysUserRole::getRoleId, + "select role_id from sys_role where role_id = " + roleId) + ); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java index cec4bf775..5b320c0d3 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java @@ -167,7 +167,7 @@ public interface ISysRoleService { * @param roleIds 需要删除的角色ID * @return 结果 */ - int deleteRoleByIds(Long[] roleIds); + int deleteRoleByIds(List roleIds); /** * 取消授权用户角色 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java index 89a09f7f4..43bf505bf 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java @@ -5,8 +5,6 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.Constants; import org.dromara.common.core.constant.SystemConstants; @@ -67,29 +65,20 @@ public class SysMenuServiceImpl implements ISysMenuService { @Override public List selectMenuList(SysMenuBo menu, Long userId) { List menuList; - // 管理员显示所有菜单信息 - if (LoginHelper.isSuperAdmin(userId)) { - menuList = baseMapper.selectVoList(new LambdaQueryWrapper() - .like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName()) + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + // 管理员显示所有菜单信息 不是管理员 按用户id过滤菜单 + if (!LoginHelper.isSuperAdmin(userId)) { + // 通过用户id获取角色id 通过角色id获取菜单id 然后in菜单 + wrapper.inSql(SysMenu::getMenuId, baseMapper.buildMenuByUserSql(userId)); + } + menuList = baseMapper.selectVoList( + wrapper.like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName()) .eq(StringUtils.isNotBlank(menu.getVisible()), SysMenu::getVisible, menu.getVisible()) .eq(StringUtils.isNotBlank(menu.getStatus()), SysMenu::getStatus, menu.getStatus()) .eq(StringUtils.isNotBlank(menu.getMenuType()), SysMenu::getMenuType, menu.getMenuType()) .eq(ObjectUtil.isNotNull(menu.getParentId()), SysMenu::getParentId, menu.getParentId()) .orderByAsc(SysMenu::getParentId) .orderByAsc(SysMenu::getOrderNum)); - } else { - QueryWrapper wrapper = Wrappers.query(); - wrapper.inSql("r.role_id", "select role_id from sys_user_role where user_id = " + userId) - .like(StringUtils.isNotBlank(menu.getMenuName()), "m.menu_name", menu.getMenuName()) - .eq(StringUtils.isNotBlank(menu.getVisible()), "m.visible", menu.getVisible()) - .eq(StringUtils.isNotBlank(menu.getStatus()), "m.status", menu.getStatus()) - .eq(StringUtils.isNotBlank(menu.getMenuType()), "m.menu_type", menu.getMenuType()) - .eq(ObjectUtil.isNotNull(menu.getParentId()), "m.parent_id", menu.getParentId()) - .orderByAsc("m.parent_id") - .orderByAsc("m.order_num"); - List list = baseMapper.selectMenuListByUserId(wrapper); - menuList = MapstructUtils.convert(list, SysMenuVo.class); - } return menuList; } @@ -141,7 +130,13 @@ public class SysMenuServiceImpl implements ISysMenuService { if (LoginHelper.isSuperAdmin(userId)) { menus = baseMapper.selectMenuTreeAll(); } else { - menus = baseMapper.selectMenuTreeByUserId(userId); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + menus = baseMapper.selectList( + wrapper.in(SysMenu::getMenuType, SystemConstants.TYPE_DIR, SystemConstants.TYPE_MENU) + .eq(SysMenu::getStatus, SystemConstants.NORMAL) + .inSql(SysMenu::getMenuId, baseMapper.buildMenuByUserSql(userId)) + .orderByAsc(SysMenu::getParentId) + .orderByAsc(SysMenu::getOrderNum)); } return getChildPerms(menus, Constants.TOP_PARENT_ID); } @@ -169,7 +164,7 @@ public class SysMenuServiceImpl implements ISysMenuService { SysTenantPackage tenantPackage = tenantPackageMapper.selectById(packageId); List menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong); if (CollUtil.isEmpty(menuIds)) { - return new ArrayList<>(); + return List.of(); } List parentIds = null; if (tenantPackage.getMenuCheckStrictly()) { @@ -285,25 +280,25 @@ public class SysMenuServiceImpl implements ISysMenuService { } /** - * 查询菜单使用数量 + * 是否存在菜单子节点 * - * @param menuId 菜单ID + * @param menuIds 菜单ID串 * @return 结果 */ @Override - public boolean checkMenuExistRole(Long menuId) { - return roleMenuMapper.exists(new LambdaQueryWrapper().eq(SysRoleMenu::getMenuId, menuId)); + public boolean hasChildByMenuId(List menuIds) { + return baseMapper.exists(new LambdaQueryWrapper().in(SysMenu::getParentId, menuIds).notIn(SysMenu::getMenuId, menuIds)); } /** - * 是否存在菜单子节点 + * 查询菜单使用数量 * - * @param menuIds 菜单ID串 + * @param menuId 菜单ID * @return 结果 */ @Override - public boolean hasChildByMenuId(List menuIds) { - return baseMapper.exists(new LambdaQueryWrapper().in(SysMenu::getParentId, menuIds).notIn(SysMenu::getMenuId, menuIds)); + public boolean checkMenuExistRole(Long menuId) { + return roleMenuMapper.exists(new LambdaQueryWrapper().eq(SysRoleMenu::getMenuId, menuId)); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java index 57d14076a..fe8814ca6 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java @@ -7,14 +7,13 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; -import org.dromara.common.core.constant.TenantConstants; import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.constant.TenantConstants; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StreamUtils; @@ -73,15 +72,14 @@ public class SysRoleServiceImpl implements ISysRoleService { private Wrapper buildQueryWrapper(SysRoleBo bo) { Map params = bo.getParams(); - QueryWrapper wrapper = Wrappers.query(); - wrapper.eq("r.del_flag", SystemConstants.NORMAL) - .eq(ObjectUtil.isNotNull(bo.getRoleId()), "r.role_id", bo.getRoleId()) - .like(StringUtils.isNotBlank(bo.getRoleName()), "r.role_name", bo.getRoleName()) - .eq(StringUtils.isNotBlank(bo.getStatus()), "r.status", bo.getStatus()) - .like(StringUtils.isNotBlank(bo.getRoleKey()), "r.role_key", bo.getRoleKey()) + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(ObjectUtil.isNotNull(bo.getRoleId()), SysRole::getRoleId, bo.getRoleId()) + .like(StringUtils.isNotBlank(bo.getRoleName()), SysRole::getRoleName, bo.getRoleName()) + .eq(StringUtils.isNotBlank(bo.getStatus()), SysRole::getStatus, bo.getStatus()) + .like(StringUtils.isNotBlank(bo.getRoleKey()), SysRole::getRoleKey, bo.getRoleKey()) .between(params.get("beginTime") != null && params.get("endTime") != null, - "r.create_time", params.get("beginTime"), params.get("endTime")) - .orderByAsc("r.role_sort").orderByAsc("r.create_time"); + SysRole::getCreateTime, params.get("beginTime"), params.get("endTime")) + .orderByAsc(SysRole::getRoleSort).orderByAsc(SysRole::getCreateTime); return wrapper; } @@ -175,9 +173,9 @@ public class SysRoleServiceImpl implements ISysRoleService { */ @Override public List selectRoleByIds(List roleIds) { - return baseMapper.selectRoleList(new QueryWrapper() - .eq("r.status", SystemConstants.NORMAL) - .in(CollUtil.isNotEmpty(roleIds), "r.role_id", roleIds)); + return baseMapper.selectRoleList(new LambdaQueryWrapper() + .eq(SysRole::getStatus, SystemConstants.NORMAL) + .in(CollUtil.isNotEmpty(roleIds), SysRole::getRoleId, roleIds)); } /** @@ -351,14 +349,14 @@ public class SysRoleServiceImpl implements ISysRoleService { private int insertRoleMenu(SysRoleBo role) { int rows = 1; // 新增用户与角色管理 - List list = new ArrayList(); + List list = new ArrayList<>(); for (Long menuId : role.getMenuIds()) { SysRoleMenu rm = new SysRoleMenu(); rm.setRoleId(role.getRoleId()); rm.setMenuId(menuId); list.add(rm); } - if (list.size() > 0) { + if (CollUtil.isEmpty(list)) { rows = roleMenuMapper.insertBatch(list) ? list.size() : 0; } return rows; @@ -372,14 +370,14 @@ public class SysRoleServiceImpl implements ISysRoleService { private int insertRoleDept(SysRoleBo role) { int rows = 1; // 新增角色与部门(数据权限)管理 - List list = new ArrayList(); + List list = new ArrayList<>(); for (Long deptId : role.getDeptIds()) { SysRoleDept rd = new SysRoleDept(); rd.setRoleId(role.getRoleId()); rd.setDeptId(deptId); list.add(rd); } - if (list.size() > 0) { + if (CollUtil.isEmpty(list)) { rows = roleDeptMapper.insertBatch(list) ? list.size() : 0; } return rows; @@ -411,21 +409,20 @@ public class SysRoleServiceImpl implements ISysRoleService { @CacheEvict(cacheNames = CacheNames.SYS_ROLE_CUSTOM, allEntries = true) @Override @Transactional(rollbackFor = Exception.class) - public int deleteRoleByIds(Long[] roleIds) { - for (Long roleId : roleIds) { - SysRole role = baseMapper.selectById(roleId); + public int deleteRoleByIds(List roleIds) { + List roles = baseMapper.selectByIds(roleIds); + for (SysRole role : roles) { checkRoleAllowed(BeanUtil.toBean(role, SysRoleBo.class)); - checkRoleDataScope(roleId); - if (countUserRoleByRoleId(roleId) > 0) { + checkRoleDataScope(role.getRoleId()); + if (countUserRoleByRoleId(role.getRoleId()) > 0) { throw new ServiceException(String.format("%1$s已分配,不能删除!", role.getRoleName())); } } - List ids = Arrays.asList(roleIds); // 删除角色与菜单关联 - roleMenuMapper.delete(new LambdaQueryWrapper().in(SysRoleMenu::getRoleId, ids)); + roleMenuMapper.delete(new LambdaQueryWrapper().in(SysRoleMenu::getRoleId, roleIds)); // 删除角色与部门关联 - roleDeptMapper.delete(new LambdaQueryWrapper().in(SysRoleDept::getRoleId, ids)); - return baseMapper.deleteByIds(ids); + roleDeptMapper.delete(new LambdaQueryWrapper().in(SysRoleDept::getRoleId, roleIds)); + return baseMapper.deleteByIds(roleIds); } /** @@ -547,4 +544,5 @@ public class SysRoleServiceImpl implements ISysRoleService { } }); } + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index e347f1e9b..acfb708d7 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -479,8 +479,8 @@ public class SysUserServiceImpl implements ISysUserService { } // 判断是否具有此角色的操作权限 List roles = roleMapper.selectRoleList( - new QueryWrapper().in("r.role_id", roleList)); - if (CollUtil.isEmpty(roles)) { + new LambdaQueryWrapper().in(SysRole::getRoleId, roleList)); + if (CollUtil.isEmpty(roles) || roles.size() != roleList.size()) { throw new ServiceException("没有权限访问角色的数据"); } if (clear) { diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml index 6c5d89d92..928ad2738 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -4,18 +4,4 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml index b9eced806..9e78302f3 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -4,67 +4,4 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - - - - - - - diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml index 3c79918d8..a75350072 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml @@ -4,15 +4,4 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml index 4ef7b1e22..7f69e0101 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -4,56 +4,4 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - select distinct r.role_id, - r.role_name, - r.role_key, - r.role_sort, - r.data_scope, - r.menu_check_strictly, - r.dept_check_strictly, - r.status, - r.del_flag, - r.create_time, - r.remark - from sys_role r - left join sys_user_role sur on sur.role_id = r.role_id - left join sys_user u on u.user_id = sur.user_id - left join sys_dept d on u.dept_id = d.dept_id - - - - - - - - - - - - diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml index bc52d1a6d..6f7cedfee 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml @@ -4,10 +4,4 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - -- Gitee From 753b456b4e46a9142f92fad3cc7826a5b7f7fd05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 4 Jul 2025 15:31:04 +0800 Subject: [PATCH 012/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=B2=97=E4=BD=8D=E4=BF=AE=E6=94=B9=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/mapper/SysPostMapper.java | 14 ++++++++++++++ .../dromara/system/mapper/SysUserRoleMapper.java | 3 +-- .../system/service/impl/SysUserServiceImpl.java | 12 +++++++++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java index a457c53a2..8c271a73c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java @@ -26,6 +26,20 @@ public interface SysPostMapper extends BaseMapperPlus { return this.selectVoPage(page, queryWrapper); } + /** + * 分页查询岗位列表 + * + * @param queryWrapper 查询条件 + * @return 包含岗位信息的分页结果 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id"), + @DataColumn(key = "userName", value = "create_by") + }) + default List selectPostList(Wrapper queryWrapper) { + return this.selectVoList(queryWrapper); + } + /** * 查询用户所属岗位组 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java index e7c6ae38a..4c1c8b9df 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java @@ -21,8 +21,7 @@ public interface SysUserRoleMapper extends BaseMapperPlus selectUserIdsByRoleId(Long roleId) { return this.selectObjs(new LambdaQueryWrapper() - .select(SysUserRole::getUserId).inSql(SysUserRole::getRoleId, - "select role_id from sys_role where role_id = " + roleId) + .select(SysUserRole::getUserId).eq(SysUserRole::getRoleId, roleId) ); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index acfb708d7..c5d37a7f2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -447,14 +447,20 @@ public class SysUserServiceImpl implements ISysUserService { * @param clear 清除已存在的关联数据 */ private void insertUserPost(SysUserBo user, boolean clear) { - Long[] posts = user.getPostIds(); - if (ArrayUtil.isNotEmpty(posts)) { + List postIds = List.of(user.getPostIds()); + if (ArrayUtil.isNotEmpty(postIds)) { + // 判断是否具有此角色的操作权限 + List posts = postMapper.selectPostList( + new LambdaQueryWrapper().in(SysPost::getPostId, postIds)); + if (CollUtil.isEmpty(posts) || posts.size() != postIds.size()) { + throw new ServiceException("没有权限访问岗位的数据"); + } if (clear) { // 删除用户与岗位关联 userPostMapper.delete(new LambdaQueryWrapper().eq(SysUserPost::getUserId, user.getUserId())); } // 新增用户与岗位管理 - List list = StreamUtils.toList(List.of(posts), postId -> { + List list = StreamUtils.toList(postIds, postId -> { SysUserPost up = new SysUserPost(); up.setUserId(user.getUserId()); up.setPostId(postId); -- Gitee From 348e8eb5fec8ae44b75fa1547d2938410d91a8d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 4 Jul 2025 17:02:16 +0800 Subject: [PATCH 013/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=A2=9E=E5=8A=A0=E6=B3=A8=E9=87=8A=E4=B8=8E=E6=B7=B1?= =?UTF-8?q?=E5=8C=96=E6=9D=83=E9=99=90=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/mapper/SysDeptMapper.java | 18 ++++ .../dromara/system/mapper/SysMenuMapper.java | 32 +++++++ .../dromara/system/mapper/SysPostMapper.java | 29 ++++++- .../dromara/system/mapper/SysRoleMapper.java | 26 +++++- .../system/service/ISysConfigService.java | 8 +- .../system/service/ISysDictDataService.java | 8 +- .../system/service/ISysDictTypeService.java | 8 +- .../system/service/ISysLogininforService.java | 8 +- .../system/service/ISysNoticeService.java | 8 +- .../system/service/ISysOperLogService.java | 7 ++ .../system/service/ISysPostService.java | 8 +- .../system/service/ISysRoleService.java | 8 +- .../service/impl/SysConfigServiceImpl.java | 7 ++ .../service/impl/SysDictDataServiceImpl.java | 7 ++ .../service/impl/SysDictTypeServiceImpl.java | 7 ++ .../impl/SysLogininforServiceImpl.java | 7 ++ .../service/impl/SysNoticeServiceImpl.java | 7 ++ .../service/impl/SysOperLogServiceImpl.java | 8 +- .../service/impl/SysPostServiceImpl.java | 7 ++ .../service/impl/SysRoleServiceImpl.java | 87 +++++++++++++------ .../service/impl/SysUserServiceImpl.java | 81 +++++++++-------- 21 files changed, 311 insertions(+), 75 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java index 8cf6d3982..196eefb3c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java @@ -20,12 +20,30 @@ import java.util.List; */ public interface SysDeptMapper extends BaseMapperPlus { + /** + * 构建角色对应的部门 SQL 查询语句 + * + *

该 SQL 用于查询某个角色关联的所有部门 ID,常用于数据权限控制

+ * + * @param roleId 角色ID + * @return 查询部门ID的 SQL 语句字符串 + */ default String buildDeptByRoleSql(Long roleId) { return """ select dept_id from sys_role_dept where role_id = %d """.formatted(roleId); } + /** + * 构建 SQL 查询,用于获取当前角色拥有的部门中所有的父部门ID + * + *

+ * 该 SQL 用于 deptCheckStrictly 场景下,排除非叶子节点(父节点)用。 + *

+ * + * @param roleId 角色ID + * @return SQL 语句字符串,查询角色下部门的所有父部门ID + */ default String buildParentDeptByRoleSql(Long roleId) { return """ select parent_id from sys_dept where dept_id in ( diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java index d71c2998e..1af2872e7 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java @@ -15,6 +15,16 @@ import java.util.List; */ public interface SysMenuMapper extends BaseMapperPlus { + /** + * 构建用户权限菜单 SQL + * + *

+ * 查询用户所属角色所拥有的菜单权限,用于权限判断、菜单加载等场景 + *

+ * + * @param userId 用户ID + * @return SQL 字符串,用于 inSql 条件 + */ default String buildMenuByUserSql(Long userId) { return """ select menu_id from sys_role_menu where role_id in ( @@ -23,12 +33,34 @@ public interface SysMenuMapper extends BaseMapperPlus { """.formatted(userId); } + /** + * 构建角色对应的菜单ID SQL 子查询 + * + *

+ * 用于根据角色ID查询其所拥有的菜单权限(用于权限标识、菜单显示等场景) + * 通常配合 inSql 使用 + *

+ * + * @param roleId 角色ID + * @return 查询菜单ID的 SQL 子查询字符串 + */ default String buildMenuByRoleSql(Long roleId) { return """ select menu_id from sys_role_menu where role_id = %d """.formatted(roleId); } + /** + * 构建角色所关联菜单的父菜单ID查询 SQL + * + *

+ * 用于配合菜单勾选树结构的 {@code menuCheckStrictly} 模式,过滤掉非叶子节点(父菜单), + * 只返回角色实际勾选的末级菜单 + *

+ * + * @param roleId 角色ID + * @return SQL 语句字符串(查询菜单的父菜单ID) + */ default String buildParentMenuByRoleSql(Long roleId) { return """ select parent_id from sys_menu where menu_id in ( diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java index 8c271a73c..d8d03157a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java @@ -18,6 +18,13 @@ import java.util.List; */ public interface SysPostMapper extends BaseMapperPlus { + /** + * 分页查询岗位列表 + * + * @param page 分页对象 + * @param queryWrapper 查询条件 + * @return 包含岗位信息的分页结果 + */ @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), @DataColumn(key = "userName", value = "create_by") @@ -27,10 +34,10 @@ public interface SysPostMapper extends BaseMapperPlus { } /** - * 分页查询岗位列表 + * 查询岗位列表 * * @param queryWrapper 查询条件 - * @return 包含岗位信息的分页结果 + * @return 岗位信息列表 */ @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), @@ -41,10 +48,24 @@ public interface SysPostMapper extends BaseMapperPlus { } /** - * 查询用户所属岗位组 + * 根据岗位ID集合查询岗位数量 + * + * @param postIds 岗位ID列表 + * @return 匹配的岗位数量 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id"), + @DataColumn(key = "userName", value = "create_by") + }) + default long selectPostCount(List postIds) { + return this.selectCount(new LambdaQueryWrapper().in(SysPost::getPostId, postIds)); + } + + /** + * 根据用户ID查询其关联的岗位列表 * * @param userId 用户ID - * @return 结果 + * @return 岗位信息列表 */ default List selectPostsByUserId(Long userId) { return this.selectVoList(new LambdaQueryWrapper() diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java index 1d3a0bb77..920780563 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java @@ -20,6 +20,12 @@ import java.util.List; */ public interface SysRoleMapper extends BaseMapperPlus { + /** + * 构建根据用户ID查询角色ID的SQL子查询 + * + * @param userId 用户ID + * @return 查询用户对应角色ID的SQL语句字符串 + */ default String buildRoleByUserSql(Long userId) { return """ select role_id from sys_user_role where user_id = %d @@ -42,7 +48,7 @@ public interface SysRoleMapper extends BaseMapperPlus { } /** - * 根据条件分页查询角色数据 + * 根据条件查询角色数据 * * @param queryWrapper 查询条件 * @return 角色数据集合信息 @@ -55,6 +61,20 @@ public interface SysRoleMapper extends BaseMapperPlus { return this.selectVoList(queryWrapper); } + /** + * 根据角色ID集合查询角色数量 + * + * @param roleIds 角色ID列表 + * @return 匹配的角色数量 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "create_dept"), + @DataColumn(key = "userName", value = "create_by") + }) + default long selectRoleCount(List roleIds) { + return this.selectCount(new LambdaQueryWrapper().in(SysRole::getRoleId, roleIds)); + } + /** * 根据角色ID查询角色信息 * @@ -62,8 +82,8 @@ public interface SysRoleMapper extends BaseMapperPlus { * @return 对应的角色信息 */ @DataPermission({ - @DataColumn(key = "deptName", value = "r.create_dept"), - @DataColumn(key = "userName", value = "r.create_by") + @DataColumn(key = "deptName", value = "create_dept"), + @DataColumn(key = "userName", value = "create_by") }) default SysRoleVo selectRoleById(Long roleId) { return this.selectVoById(roleId); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysConfigService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysConfigService.java index 60863b8d3..a101643e8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysConfigService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysConfigService.java @@ -14,7 +14,13 @@ import java.util.List; */ public interface ISysConfigService { - + /** + * 分页查询参数配置列表 + * + * @param config 查询条件 + * @param pageQuery 分页参数 + * @return 参数配置分页列表 + */ TableDataInfo selectPageConfigList(SysConfigBo config, PageQuery pageQuery); /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java index 2ff49bc77..fdabd3170 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java @@ -14,7 +14,13 @@ import java.util.List; */ public interface ISysDictDataService { - + /** + * 分页查询字典数据列表 + * + * @param dictData 查询条件 + * @param pageQuery 分页参数 + * @return 字典数据分页列表 + */ TableDataInfo selectPageDictDataList(SysDictDataBo dictData, PageQuery pageQuery); /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictTypeService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictTypeService.java index c2704db09..e3a04def2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictTypeService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictTypeService.java @@ -15,7 +15,13 @@ import java.util.List; */ public interface ISysDictTypeService { - + /** + * 分页查询字典类型列表 + * + * @param dictType 查询条件 + * @param pageQuery 分页参数 + * @return 字典类型分页列表 + */ TableDataInfo selectPageDictTypeList(SysDictTypeBo dictType, PageQuery pageQuery); /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysLogininforService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysLogininforService.java index 6b3b7a6b7..1bc1ea9ff 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysLogininforService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysLogininforService.java @@ -14,7 +14,13 @@ import java.util.List; */ public interface ISysLogininforService { - + /** + * 分页查询登录日志列表 + * + * @param logininfor 查询条件 + * @param pageQuery 分页参数 + * @return 登录日志分页列表 + */ TableDataInfo selectPageLogininforList(SysLogininforBo logininfor, PageQuery pageQuery); /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysNoticeService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysNoticeService.java index 8ec999d01..8482cd0ce 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysNoticeService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysNoticeService.java @@ -14,7 +14,13 @@ import java.util.List; */ public interface ISysNoticeService { - + /** + * 分页查询通知公告列表 + * + * @param notice 查询条件 + * @param pageQuery 分页参数 + * @return 通知公告分页列表 + */ TableDataInfo selectPageNoticeList(SysNoticeBo notice, PageQuery pageQuery); /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOperLogService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOperLogService.java index 957351023..e8b340c73 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOperLogService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOperLogService.java @@ -14,6 +14,13 @@ import java.util.List; */ public interface ISysOperLogService { + /** + * 分页查询操作日志列表 + * + * @param operLog 查询条件 + * @param pageQuery 分页参数 + * @return 操作日志分页列表 + */ TableDataInfo selectPageOperLogList(SysOperLogBo operLog, PageQuery pageQuery); /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java index 511d842ee..1caaab282 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java @@ -14,7 +14,13 @@ import java.util.List; */ public interface ISysPostService { - + /** + * 分页查询岗位列表 + * + * @param post 查询条件 + * @param pageQuery 分页参数 + * @return 岗位分页列表 + */ TableDataInfo selectPagePostList(SysPostBo post, PageQuery pageQuery); /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java index 5b320c0d3..2abdb971a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java @@ -16,7 +16,13 @@ import java.util.Set; */ public interface ISysRoleService { - + /** + * 分页查询角色列表 + * + * @param role 查询条件 + * @param pageQuery 分页参数 + * @return 角色分页列表 + */ TableDataInfo selectPageRoleList(SysRoleBo role, PageQuery pageQuery); /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java index 04ecd1375..342dc5c3f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java @@ -39,6 +39,13 @@ public class SysConfigServiceImpl implements ISysConfigService { private final SysConfigMapper baseMapper; + /** + * 分页查询参数配置列表 + * + * @param config 查询条件 + * @param pageQuery 分页参数 + * @return 参数配置分页列表 + */ @Override public TableDataInfo selectPageConfigList(SysConfigBo config, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(config); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java index baf1bba99..018f04338 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java @@ -33,6 +33,13 @@ public class SysDictDataServiceImpl implements ISysDictDataService { private final SysDictDataMapper baseMapper; + /** + * 分页查询字典数据列表 + * + * @param dictData 查询条件 + * @param pageQuery 分页参数 + * @return 字典数据分页列表 + */ @Override public TableDataInfo selectPageDictDataList(SysDictDataBo dictData, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(dictData); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java index b079b06f1..973b95a5f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java @@ -43,6 +43,13 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService { private final SysDictTypeMapper baseMapper; private final SysDictDataMapper dictDataMapper; + /** + * 分页查询字典类型列表 + * + * @param dictType 查询条件 + * @param pageQuery 分页参数 + * @return 字典类型分页列表 + */ @Override public TableDataInfo selectPageDictTypeList(SysDictTypeBo dictType, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(dictType); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysLogininforServiceImpl.java index 082927cd3..534e9eea7 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysLogininforServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysLogininforServiceImpl.java @@ -32,6 +32,13 @@ public class SysLogininforServiceImpl implements ISysLogininforService { private final SysLogininforMapper baseMapper; + /** + * 分页查询登录日志列表 + * + * @param logininfor 查询条件 + * @param pageQuery 分页参数 + * @return 登录日志分页列表 + */ @Override public TableDataInfo selectPageLogininforList(SysLogininforBo logininfor, PageQuery pageQuery) { Map params = logininfor.getParams(); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysNoticeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysNoticeServiceImpl.java index 3ff87bdbf..aa4135f1e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysNoticeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysNoticeServiceImpl.java @@ -34,6 +34,13 @@ public class SysNoticeServiceImpl implements ISysNoticeService { private final SysNoticeMapper baseMapper; private final SysUserMapper userMapper; + /** + * 分页查询通知公告列表 + * + * @param notice 查询条件 + * @param pageQuery 分页参数 + * @return 通知公告分页列表 + */ @Override public TableDataInfo selectPageNoticeList(SysNoticeBo notice, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(notice); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOperLogServiceImpl.java index 3f95efcee..ce098c426 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOperLogServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOperLogServiceImpl.java @@ -31,7 +31,13 @@ public class SysOperLogServiceImpl implements ISysOperLogService { private final SysOperLogMapper baseMapper; - + /** + * 分页查询操作日志列表 + * + * @param operLog 查询条件 + * @param pageQuery 分页参数 + * @return 操作日志分页列表 + */ @Override public TableDataInfo selectPageOperLogList(SysOperLogBo operLog, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(operLog); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java index ced757f4c..1e39648f0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java @@ -39,6 +39,13 @@ public class SysPostServiceImpl implements ISysPostService { private final SysDeptMapper deptMapper; private final SysUserPostMapper userPostMapper; + /** + * 分页查询岗位列表 + * + * @param post 查询条件 + * @param pageQuery 分页参数 + * @return 岗位分页列表 + */ @Override public TableDataInfo selectPagePostList(SysPostBo post, PageQuery pageQuery) { Page page = baseMapper.selectPagePostList(pageQuery.build(), buildQueryWrapper(post)); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java index fe8814ca6..e848acfab 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java @@ -4,6 +4,7 @@ import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -38,6 +39,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; /** * 角色 业务层处理 @@ -53,6 +55,13 @@ public class SysRoleServiceImpl implements ISysRoleService { private final SysUserRoleMapper userRoleMapper; private final SysRoleDeptMapper roleDeptMapper; + /** + * 分页查询角色列表 + * + * @param role 查询条件 + * @param pageQuery 分页参数 + * @return 角色分页列表 + */ @Override public TableDataInfo selectPageRoleList(SysRoleBo role, PageQuery pageQuery) { Page page = baseMapper.selectPageRoleList(pageQuery.build(), this.buildQueryWrapper(role)); @@ -60,7 +69,7 @@ public class SysRoleServiceImpl implements ISysRoleService { } /** - * 根据条件分页查询角色数据 + * 根据条件查询角色数据 * * @param role 角色信息 * @return 角色数据集合信息 @@ -347,19 +356,18 @@ public class SysRoleServiceImpl implements ISysRoleService { * @param role 角色对象 */ private int insertRoleMenu(SysRoleBo role) { - int rows = 1; - // 新增用户与角色管理 - List list = new ArrayList<>(); - for (Long menuId : role.getMenuIds()) { - SysRoleMenu rm = new SysRoleMenu(); - rm.setRoleId(role.getRoleId()); - rm.setMenuId(menuId); - list.add(rm); - } - if (CollUtil.isEmpty(list)) { - rows = roleMenuMapper.insertBatch(list) ? list.size() : 0; + Long[] menuIds = role.getMenuIds(); + if (ArrayUtil.isEmpty(menuIds)) { + return 0; } - return rows; + List roleMenuList = Arrays.stream(menuIds) + .map(menuId -> { + SysRoleMenu roleMenu = new SysRoleMenu(); + roleMenu.setRoleId(role.getRoleId()); + roleMenu.setMenuId(menuId); + return roleMenu; + }).collect(Collectors.toList()); + return roleMenuMapper.insertBatch(roleMenuList) ? roleMenuList.size() : 0; } /** @@ -368,19 +376,18 @@ public class SysRoleServiceImpl implements ISysRoleService { * @param role 角色对象 */ private int insertRoleDept(SysRoleBo role) { - int rows = 1; - // 新增角色与部门(数据权限)管理 - List list = new ArrayList<>(); - for (Long deptId : role.getDeptIds()) { - SysRoleDept rd = new SysRoleDept(); - rd.setRoleId(role.getRoleId()); - rd.setDeptId(deptId); - list.add(rd); - } - if (CollUtil.isEmpty(list)) { - rows = roleDeptMapper.insertBatch(list) ? list.size() : 0; + Long[] deptIds = role.getDeptIds(); + if (ArrayUtil.isEmpty(deptIds)) { + return 0; } - return rows; + List roleDeptList = Arrays.stream(deptIds) + .map(deptId -> { + SysRoleDept roleDept = new SysRoleDept(); + roleDept.setRoleId(role.getRoleId()); + roleDept.setDeptId(deptId); + return roleDept; + }).collect(Collectors.toList()); + return roleDeptMapper.insertBatch(roleDeptList) ? roleDeptList.size() : 0; } /** @@ -433,6 +440,9 @@ public class SysRoleServiceImpl implements ISysRoleService { */ @Override public int deleteAuthUser(SysUserRole userRole) { + if (LoginHelper.getUserId().equals(userRole.getUserId())) { + throw new ServiceException("不允许修改当前用户角色!"); + } int rows = userRoleMapper.delete(new LambdaQueryWrapper() .eq(SysUserRole::getRoleId, userRole.getRoleId()) .eq(SysUserRole::getUserId, userRole.getUserId())); @@ -452,6 +462,9 @@ public class SysRoleServiceImpl implements ISysRoleService { @Override public int deleteAuthUsers(Long roleId, Long[] userIds) { List ids = List.of(userIds); + if (ids.contains(LoginHelper.getUserId())) { + throw new ServiceException("不允许修改当前用户角色!"); + } int rows = userRoleMapper.delete(new LambdaQueryWrapper() .eq(SysUserRole::getRoleId, roleId) .in(SysUserRole::getUserId, ids)); @@ -473,6 +486,9 @@ public class SysRoleServiceImpl implements ISysRoleService { // 新增用户与角色管理 int rows = 1; List ids = List.of(userIds); + if (ids.contains(LoginHelper.getUserId())) { + throw new ServiceException("不允许修改当前用户角色!"); + } List list = StreamUtils.toList(ids, userId -> { SysUserRole ur = new SysUserRole(); ur.setUserId(userId); @@ -488,6 +504,17 @@ public class SysRoleServiceImpl implements ISysRoleService { return rows; } + /** + * 根据角色ID清除该角色关联的所有在线用户的登录状态(踢出在线用户) + * + *

+ * 先判断角色是否绑定用户,若无绑定则直接返回 + * 然后遍历当前所有在线Token,查找拥有该角色的用户并强制登出 + * 注意:在线用户量过大时,操作可能导致 Redis 阻塞,需谨慎调用 + *

+ * + * @param roleId 角色ID + */ @Override public void cleanOnlineUserByRole(Long roleId) { // 如果角色未绑定用户 直接返回 @@ -519,6 +546,16 @@ public class SysRoleServiceImpl implements ISysRoleService { }); } + /** + * 根据用户ID列表清除对应在线用户的登录状态(踢出指定用户) + * + *

+ * 遍历当前所有在线Token,匹配用户ID列表中的用户,强制登出 + * 注意:在线用户量过大时,操作可能导致 Redis 阻塞,需谨慎调用 + *

+ * + * @param userIds 需要清除的用户ID列表 + */ @Override public void cleanOnlineUser(List userIds) { List keys = StpUtil.searchTokenValue("", 0, -1, false); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index c5d37a7f2..68dafc27b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -33,6 +33,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -447,27 +448,31 @@ public class SysUserServiceImpl implements ISysUserService { * @param clear 清除已存在的关联数据 */ private void insertUserPost(SysUserBo user, boolean clear) { - List postIds = List.of(user.getPostIds()); - if (ArrayUtil.isNotEmpty(postIds)) { - // 判断是否具有此角色的操作权限 - List posts = postMapper.selectPostList( - new LambdaQueryWrapper().in(SysPost::getPostId, postIds)); - if (CollUtil.isEmpty(posts) || posts.size() != postIds.size()) { - throw new ServiceException("没有权限访问岗位的数据"); - } - if (clear) { - // 删除用户与岗位关联 - userPostMapper.delete(new LambdaQueryWrapper().eq(SysUserPost::getUserId, user.getUserId())); - } - // 新增用户与岗位管理 - List list = StreamUtils.toList(postIds, postId -> { + Long[] postIdArr = user.getPostIds(); + if (ArrayUtil.isEmpty(postIdArr)) { + return; + } + List postIds = Arrays.asList(postIdArr); + + // 校验是否有权限操作这些岗位(含数据权限控制) + if (postMapper.selectPostCount(postIds) != postIds.size()) { + throw new ServiceException("没有权限访问岗位的数据"); + } + + // 是否清除旧的用户岗位绑定 + if (clear) { + userPostMapper.delete(new LambdaQueryWrapper().eq(SysUserPost::getUserId, user.getUserId())); + } + + // 构建用户岗位关联列表并批量插入 + List list = StreamUtils.toList(postIds, + postId -> { SysUserPost up = new SysUserPost(); up.setUserId(user.getUserId()); up.setPostId(postId); return up; }); - userPostMapper.insertBatch(list); - } + userPostMapper.insertBatch(list); } /** @@ -478,30 +483,36 @@ public class SysUserServiceImpl implements ISysUserService { * @param clear 清除已存在的关联数据 */ private void insertUserRole(Long userId, Long[] roleIds, boolean clear) { - if (ArrayUtil.isNotEmpty(roleIds)) { - List roleList = new ArrayList<>(List.of(roleIds)); - if (!LoginHelper.isSuperAdmin(userId)) { - roleList.remove(SystemConstants.SUPER_ADMIN_ID); - } - // 判断是否具有此角色的操作权限 - List roles = roleMapper.selectRoleList( - new LambdaQueryWrapper().in(SysRole::getRoleId, roleList)); - if (CollUtil.isEmpty(roles) || roles.size() != roleList.size()) { - throw new ServiceException("没有权限访问角色的数据"); - } - if (clear) { - // 删除用户与角色关联 - userRoleMapper.delete(new LambdaQueryWrapper().eq(SysUserRole::getUserId, userId)); - } - // 新增用户与角色管理 - List list = StreamUtils.toList(roleList, roleId -> { + if (ArrayUtil.isEmpty(roleIds)) { + return; + } + + List roleList = new ArrayList<>(Arrays.asList(roleIds)); + + // 非超级管理员,禁止包含超级管理员角色 + if (!LoginHelper.isSuperAdmin(userId)) { + roleList.remove(SystemConstants.SUPER_ADMIN_ID); + } + + // 校验是否有权限访问这些角色(含数据权限控制) + if (roleMapper.selectRoleCount(roleList) != roleList.size()) { + throw new ServiceException("没有权限访问角色的数据"); + } + + // 是否清除原有绑定 + if (clear) { + userRoleMapper.delete(new LambdaQueryWrapper().eq(SysUserRole::getUserId, userId)); + } + + // 批量插入用户-角色关联 + List list = StreamUtils.toList(roleList, + roleId -> { SysUserRole ur = new SysUserRole(); ur.setUserId(userId); ur.setRoleId(roleId); return ur; }); - userRoleMapper.insertBatch(list); - } + userRoleMapper.insertBatch(list); } /** -- Gitee From 09c484f496ebf9ddea93b526504d641f4f1e62c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 4 Jul 2025 17:43:26 +0800 Subject: [PATCH 014/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E4=BF=AE=E6=94=B9=E5=AF=BC=E8=87=B4=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SysRoleServiceImpl.java | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java index e848acfab..89929c369 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java @@ -4,7 +4,6 @@ import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -39,7 +38,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; -import java.util.stream.Collectors; /** * 角色 业务层处理 @@ -356,18 +354,19 @@ public class SysRoleServiceImpl implements ISysRoleService { * @param role 角色对象 */ private int insertRoleMenu(SysRoleBo role) { - Long[] menuIds = role.getMenuIds(); - if (ArrayUtil.isEmpty(menuIds)) { - return 0; + int rows = 1; + // 新增用户与角色管理 + List list = new ArrayList<>(); + for (Long menuId : role.getMenuIds()) { + SysRoleMenu rm = new SysRoleMenu(); + rm.setRoleId(role.getRoleId()); + rm.setMenuId(menuId); + list.add(rm); } - List roleMenuList = Arrays.stream(menuIds) - .map(menuId -> { - SysRoleMenu roleMenu = new SysRoleMenu(); - roleMenu.setRoleId(role.getRoleId()); - roleMenu.setMenuId(menuId); - return roleMenu; - }).collect(Collectors.toList()); - return roleMenuMapper.insertBatch(roleMenuList) ? roleMenuList.size() : 0; + if (CollUtil.isNotEmpty(list)) { + rows = roleMenuMapper.insertBatch(list) ? list.size() : 0; + } + return rows; } /** @@ -376,18 +375,19 @@ public class SysRoleServiceImpl implements ISysRoleService { * @param role 角色对象 */ private int insertRoleDept(SysRoleBo role) { - Long[] deptIds = role.getDeptIds(); - if (ArrayUtil.isEmpty(deptIds)) { - return 0; + int rows = 1; + // 新增角色与部门(数据权限)管理 + List list = new ArrayList<>(); + for (Long deptId : role.getDeptIds()) { + SysRoleDept rd = new SysRoleDept(); + rd.setRoleId(role.getRoleId()); + rd.setDeptId(deptId); + list.add(rd); + } + if (CollUtil.isNotEmpty(list)) { + rows = roleDeptMapper.insertBatch(list) ? list.size() : 0; } - List roleDeptList = Arrays.stream(deptIds) - .map(deptId -> { - SysRoleDept roleDept = new SysRoleDept(); - roleDept.setRoleId(role.getRoleId()); - roleDept.setDeptId(deptId); - return roleDept; - }).collect(Collectors.toList()); - return roleDeptMapper.insertBatch(roleDeptList) ? roleDeptList.size() : 0; + return rows; } /** -- Gitee From 8dc266055cb7b0a3d39e58f3a30d62556a512e0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 4 Jul 2025 17:48:07 +0800 Subject: [PATCH 015/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=8F=91?= =?UTF-8?q?=E5=8F=B7=E5=99=A8=E5=B7=A5=E5=85=B7=E7=B1=BB=E4=BE=BF=E5=88=A9?= =?UTF-8?q?=E6=80=A7=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/redis/utils/SequenceUtils.java | 260 +++++++++++++++--- 1 file changed, 215 insertions(+), 45 deletions(-) diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/SequenceUtils.java b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/SequenceUtils.java index 657dbbc07..5258c8558 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/SequenceUtils.java +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/SequenceUtils.java @@ -1,7 +1,6 @@ package org.dromara.common.redis.utils; import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateUtil; import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.dromara.common.core.utils.SpringUtils; @@ -10,6 +9,10 @@ import org.redisson.api.RIdGenerator; import org.redisson.api.RedissonClient; import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAccessor; /** * 发号器工具类 @@ -23,12 +26,12 @@ public class SequenceUtils { /** * 默认初始值 */ - public static final Long DEFAULT_INIT_VALUE = 1L; + public static final long DEFAULT_INIT_VALUE = 1L; /** * 默认步长 */ - public static final Long DEFAULT_STEP_VALUE = 1L; + public static final long DEFAULT_STEP_VALUE = 1L; /** * 默认过期时间-天 @@ -40,6 +43,11 @@ public class SequenceUtils { */ public static final Duration DEFAULT_EXPIRE_TIME_MINUTE = Duration.ofMinutes(1); + /** + * 默认最小ID容量位数 - 6位数(即至少可以生成的ID为999999个) + */ + public static final int DEFAULT_MIN_ID_CAPACITY_BITS = 6; + /** * 获取Redisson客户端实例 */ @@ -54,14 +62,11 @@ public class SequenceUtils { * @param stepValue ID步长 * @return ID生成器 */ - private static RIdGenerator getIdGenerator(String key, Duration expireTime, Long initValue, Long stepValue) { - if (initValue == null || initValue <= 0) { - initValue = DEFAULT_INIT_VALUE; - } - if (stepValue == null || stepValue <= 0) { - stepValue = DEFAULT_STEP_VALUE; - } + public static RIdGenerator getIdGenerator(String key, Duration expireTime, long initValue, long stepValue) { RIdGenerator idGenerator = REDISSON_CLIENT.getIdGenerator(key); + // 初始值和步长不能小于等于0 + initValue = initValue <= 0 ? DEFAULT_INIT_VALUE : initValue; + stepValue = stepValue <= 0 ? DEFAULT_STEP_VALUE : stepValue; // 设置初始值和步长 idGenerator.tryInit(initValue, stepValue); // 设置过期时间 @@ -69,6 +74,17 @@ public class SequenceUtils { return idGenerator; } + /** + * 获取ID生成器 + * + * @param key 业务key + * @param expireTime 过期时间 + * @return ID生成器 + */ + public static RIdGenerator getIdGenerator(String key, Duration expireTime) { + return getIdGenerator(key, expireTime, DEFAULT_INIT_VALUE, DEFAULT_STEP_VALUE); + } + /** * 获取指定业务key的唯一id * @@ -78,32 +94,32 @@ public class SequenceUtils { * @param stepValue ID步长 * @return 唯一id */ - public static long nextId(String key, Duration expireTime, Long initValue, Long stepValue) { + public static long getNextId(String key, Duration expireTime, long initValue, long stepValue) { return getIdGenerator(key, expireTime, initValue, stepValue).nextId(); } /** - * 获取指定业务key的唯一id字符串 + * 获取指定业务key的唯一id (ID初始值=1,ID步长=1) * * @param key 业务key * @param expireTime 过期时间 - * @param initValue ID初始值 - * @param stepValue ID步长 * @return 唯一id */ - public static String nextIdStr(String key, Duration expireTime, Long initValue, Long stepValue) { - return String.valueOf(nextId(key, expireTime, initValue, stepValue)); + public static long getNextId(String key, Duration expireTime) { + return getIdGenerator(key, expireTime).nextId(); } /** - * 获取指定业务key的唯一id (ID初始值=1,ID步长=1) + * 获取指定业务key的唯一id字符串 * * @param key 业务key * @param expireTime 过期时间 + * @param initValue ID初始值 + * @param stepValue ID步长 * @return 唯一id */ - public static long nextId(String key, Duration expireTime) { - return getIdGenerator(key, expireTime, DEFAULT_INIT_VALUE, DEFAULT_STEP_VALUE).nextId(); + public static String getNextIdString(String key, Duration expireTime, long initValue, long stepValue) { + return String.valueOf(getNextId(key, expireTime, initValue, stepValue)); } /** @@ -113,8 +129,8 @@ public class SequenceUtils { * @param expireTime 过期时间 * @return 唯一id */ - public static String nextIdStr(String key, Duration expireTime) { - return String.valueOf(nextId(key, expireTime)); + public static String getNextIdString(String key, Duration expireTime) { + return String.valueOf(getNextId(key, expireTime)); } /** @@ -125,56 +141,210 @@ public class SequenceUtils { * @param width 位数,不足左补0 * @return 补零后的唯一id字符串 */ - public static String nextPaddedIdStr(String key, Duration expireTime, Integer width) { - return StringUtils.leftPad(nextIdStr(key, expireTime), width, '0'); + public static String getPaddedNextIdString(String key, Duration expireTime, Integer width) { + return StringUtils.leftPad(getNextIdString(key, expireTime), width, '0'); } /** - * 获取 yyyyMMdd 开头的唯一id + * 获取 yyyyMMdd 格式的唯一id * * @return 唯一id + * @deprecated 请使用 {@link #getDateId(String)} 或 {@link #getDateId(String, boolean)}、{@link #getDateId(String, boolean, int)},确保不同业务的ID连续性 */ - public static String nextIdDate() { - return nextIdDate(""); + @Deprecated + public static String getDateId() { + return getDateId(""); } /** - * 获取 prefix + yyyyMMdd 开头的唯一id + * 获取 prefix + yyyyMMdd 格式的唯一id * * @param prefix 业务前缀 * @return 唯一id */ - public static String nextIdDate(String prefix) { - // 前缀+日期 构建 prefixKey - String prefixKey = StringUtils.format("{}{}", StringUtils.blankToDefault(prefix, ""), DateUtil.format(DateUtil.date(), DatePattern.PURE_DATE_FORMATTER)); - // 获取下一个id - long nextId = getIdGenerator(prefixKey, DEFAULT_EXPIRE_TIME_DAY, DEFAULT_INIT_VALUE, DEFAULT_STEP_VALUE).nextId(); - // 返回完整id - return StringUtils.format("{}{}", prefixKey, nextId); + public static String getDateId(String prefix) { + return getDateId(prefix, true); + } + + /** + * 获取 prefix + yyyyMMdd 格式的唯一id + * + * @param prefix 业务前缀 + * @param isWithPrefix id是否携带业务前缀 + * @return 唯一id + */ + public static String getDateId(String prefix, boolean isWithPrefix) { + return getDateId(prefix, isWithPrefix, -1); + } + + /** + * 获取 prefix + yyyyMMdd 格式的唯一id (启用ID补位,补位长度 = {@link #DEFAULT_MIN_ID_CAPACITY_BITS})}) + * + * @param prefix 业务前缀 + * @param isWithPrefix id是否携带业务前缀 + * @return 唯一id + */ + public static String getPaddedDateId(String prefix, boolean isWithPrefix) { + return getDateId(prefix, isWithPrefix, DEFAULT_MIN_ID_CAPACITY_BITS); + } + + /** + * 获取 prefix + yyyyMMdd 格式的唯一id + * + * @param prefix 业务前缀 + * @param isWithPrefix id是否携带业务前缀 + * @param minIdCapacityBits 最小ID容量位数,小于该位数的ID,左补0(小于等于0表示不启用补位) + * @return 唯一id + */ + public static String getDateId(String prefix, boolean isWithPrefix, int minIdCapacityBits) { + return getDateId(prefix, isWithPrefix, minIdCapacityBits, LocalDate.now()); + } + + /** + * 获取 prefix + yyyyMMdd 格式的唯一id + * + * @param prefix 业务前缀 + * @param isWithPrefix id是否携带业务前缀 + * @param minIdCapacityBits 最小ID容量位数,小于该位数的ID,左补0(小于等于0表示不启用补位) + * @param time 时间 + * @return 唯一id + */ + public static String getDateId(String prefix, boolean isWithPrefix, int minIdCapacityBits, LocalDate time) { + return getDateId(prefix, isWithPrefix, minIdCapacityBits, time, DEFAULT_INIT_VALUE, DEFAULT_STEP_VALUE); } /** - * 获取 yyyyMMddHHmmss 开头的唯一id + * 获取 prefix + yyyyMMdd 格式的唯一id * + * @param prefix 业务前缀 + * @param isWithPrefix id是否携带业务前缀 + * @param minIdCapacityBits 最小ID容量位数,小于该位数的ID,左补0(小于等于0表示不启用补位) + * @param time 时间 + * @param initValue ID初始值 + * @param stepValue ID步长 * @return 唯一id */ - public static String nextIdDateTime() { - return nextIdDateTime(""); + public static String getDateId(String prefix, boolean isWithPrefix, int minIdCapacityBits, LocalDate time, long initValue, long stepValue) { + return getDatePatternId(prefix, isWithPrefix, minIdCapacityBits, time, DatePattern.PURE_DATE_FORMATTER, DEFAULT_EXPIRE_TIME_DAY, initValue, stepValue); } /** - * 获取 prefix + yyyyMMddHHmmss 开头的唯一id + * 获取 yyyyMMddHHmmss 格式的唯一id + * + * @return 唯一id + * @deprecated 请使用 {@link #getDateTimeId(String)} 或 {@link #getDateTimeId(String, boolean)}、{@link #getDateTimeId(String, boolean, int)},确保不同业务的ID连续性 + */ + @Deprecated + public static String getDateTimeId() { + return getDateTimeId("", false); + } + + /** + * 获取 prefix + yyyyMMddHHmmss 格式的唯一id * * @param prefix 业务前缀 * @return 唯一id */ - public static String nextIdDateTime(String prefix) { - // 前缀+日期时间 构建 prefixKey - String prefixKey = StringUtils.format("{}{}", StringUtils.blankToDefault(prefix, ""), DateUtil.format(DateUtil.date(), DatePattern.PURE_DATETIME_FORMATTER)); - // 获取下一个id - long nextId = getIdGenerator(prefixKey, DEFAULT_EXPIRE_TIME_MINUTE, DEFAULT_INIT_VALUE, DEFAULT_STEP_VALUE).nextId(); - // 返回完整id - return StringUtils.format("{}{}", prefixKey, nextId); + public static String getDateTimeId(String prefix) { + return getDateTimeId(prefix, true); + } + + /** + * 获取 prefix + yyyyMMddHHmmss 格式的唯一id + * + * @param prefix 业务前缀 + * @param isWithPrefix id是否携带业务前缀 + * @return 唯一id + */ + public static String getDateTimeId(String prefix, boolean isWithPrefix) { + return getDateTimeId(prefix, isWithPrefix, -1); + } + + /** + * 获取 prefix + yyyyMMddHHmmss 格式的唯一id (启用ID补位,补位长度 = {@link #DEFAULT_MIN_ID_CAPACITY_BITS})}) + * + * @param prefix 业务前缀 + * @param isWithPrefix id是否携带业务前缀 + * @return 唯一id + */ + public static String getPaddedDateTimeId(String prefix, boolean isWithPrefix) { + return getDateTimeId(prefix, isWithPrefix, DEFAULT_MIN_ID_CAPACITY_BITS); + } + + /** + * 获取 prefix + yyyyMMddHHmmss 格式的唯一id + * + * @param prefix 业务前缀 + * @param isWithPrefix id是否携带业务前缀 + * @param minIdCapacityBits 最小ID容量位数,小于该位数的ID,左补0(小于等于0表示不启用补位) + * @return 唯一id + */ + public static String getDateTimeId(String prefix, boolean isWithPrefix, int minIdCapacityBits) { + return getDateTimeId(prefix, isWithPrefix, minIdCapacityBits, LocalDateTime.now()); + } + + /** + * 获取 prefix + yyyyMMddHHmmss 格式的唯一id + * + * @param prefix 业务前缀 + * @param isWithPrefix id是否携带业务前缀 + * @param minIdCapacityBits 最小ID容量位数,小于该位数的ID,左补0(小于等于0表示不启用补位) + * @param time 时间 + * @return 唯一id + */ + public static String getDateTimeId(String prefix, boolean isWithPrefix, int minIdCapacityBits, LocalDateTime time) { + return getDateTimeId(prefix, isWithPrefix, minIdCapacityBits, time, DEFAULT_INIT_VALUE, DEFAULT_STEP_VALUE); } + /** + * 获取 prefix + yyyyMMddHHmmss 格式的唯一id + * + * @param prefix 业务前缀 + * @param isWithPrefix id是否携带业务前缀 + * @param minIdCapacityBits 最小ID容量位数,小于该位数的ID,左补0(小于等于0表示不启用补位) + * @param initValue ID初始值 + * @param stepValue ID步长 + * @return 唯一id + */ + public static String getDateTimeId(String prefix, boolean isWithPrefix, int minIdCapacityBits, LocalDateTime time, long initValue, long stepValue) { + return getDatePatternId(prefix, isWithPrefix, minIdCapacityBits, time, DatePattern.PURE_DATETIME_FORMATTER, DEFAULT_EXPIRE_TIME_MINUTE, initValue, stepValue); + } + + /** + * 获取指定业务key的指定时间格式的ID + * + * @param prefix 业务前缀 + * @param isWithPrefix id是否携带业务前缀 + * @param minIdCapacityBits 最小ID容量位数,小于该位数的ID,左补0(小于等于0表示不启用补位) + * @param temporalAccessor 时间访问器 + * @param timeFormatter 时间格式 + * @param expireTime 过期时间 + * @param initValue ID初始值 + * @param stepValue ID步长 + * @return 唯一id + */ + private static String getDatePatternId(String prefix, boolean isWithPrefix, int minIdCapacityBits, TemporalAccessor temporalAccessor, DateTimeFormatter timeFormatter, Duration expireTime, long initValue, long stepValue) { + // 时间前缀 + String timePrefix = timeFormatter.format(temporalAccessor); + // 业务前缀 + 时间前缀 构建 prefixKey + String prefixKey = StringUtils.format("{}{}", StringUtils.blankToDefault(prefix, ""), timePrefix); + + // 获取id,例 -> 1 + String nextId = getNextIdString(prefixKey, expireTime, initValue, stepValue); + + // minIdCapacityBits 大于0,且 nextId 的长度小于 minIdCapacityBits,则左补0 + if (minIdCapacityBits > 0 && nextId.length() < minIdCapacityBits) { + nextId = StringUtils.leftPad(nextId, minIdCapacityBits, '0'); + } + + // 是否携带业务前缀 + if (isWithPrefix) { + // 例 -> P202507031 + // 其中 P 为业务前缀,202507031 为 yyyyMMdd 格式时间, 1 为nextId + return StringUtils.format("{}{}", prefixKey, nextId); + } + // 例 -> 202507031 + // 其中 202507031 为 yyyyMMdd 格式时间, 1 为nextId + return StringUtils.format("{}{}", timePrefix, nextId); + } } -- Gitee From 483107955e92d2cc4b19a74df0513b18a31c3666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 4 Jul 2025 18:20:44 +0800 Subject: [PATCH 016/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=97=A0=E7=94=A8=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/config/nacos/application-common.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/script/config/nacos/application-common.yml b/script/config/nacos/application-common.yml index 39aa2911d..d1733e872 100644 --- a/script/config/nacos/application-common.yml +++ b/script/config/nacos/application-common.yml @@ -250,13 +250,6 @@ springdoc: name: Lion Li email: crazylionli@163.com url: https://gitee.com/dromara/RuoYi-Cloud-Plus - components: - # 鉴权方式配置 - security-schemes: - apiKey: - type: APIKEY - in: HEADER - name: ${sa-token.token-name} # seata配置 seata: -- Gitee From 7488b091bc08d187fbd30bf11c33d2e0745b6b2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sun, 6 Jul 2025 10:50:23 +0800 Subject: [PATCH 017/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E8=A7=92=E8=89=B2=E6=98=AF=E5=90=A6=E6=9C=89=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/auth/form/PasswordLoginBody.java | 1 + .../org/dromara/auth/form/RegisterBody.java | 1 + .../main/resources/i18n/messages.properties | 1 + .../resources/i18n/messages_en_US.properties | 1 + .../resources/i18n/messages_zh_CN.properties | 1 + .../dromara/system/domain/bo/SysTenantBo.java | 1 + .../system/service/ISysRoleService.java | 7 +++++++ .../service/impl/SysRoleServiceImpl.java | 21 +++++++++++++------ 8 files changed, 28 insertions(+), 6 deletions(-) diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/form/PasswordLoginBody.java b/ruoyi-auth/src/main/java/org/dromara/auth/form/PasswordLoginBody.java index 31086ab4d..44777b023 100644 --- a/ruoyi-auth/src/main/java/org/dromara/auth/form/PasswordLoginBody.java +++ b/ruoyi-auth/src/main/java/org/dromara/auth/form/PasswordLoginBody.java @@ -27,6 +27,7 @@ public class PasswordLoginBody extends LoginBody { */ @NotBlank(message = "{user.password.not.blank}") @Length(min = 5, max = 30, message = "{user.password.length.valid}") +// @Pattern(regexp = RegexConstants.PASSWORD, message = "{user.password.format.valid}") private String password; } diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/form/RegisterBody.java b/ruoyi-auth/src/main/java/org/dromara/auth/form/RegisterBody.java index 8b0a04749..65ee43543 100644 --- a/ruoyi-auth/src/main/java/org/dromara/auth/form/RegisterBody.java +++ b/ruoyi-auth/src/main/java/org/dromara/auth/form/RegisterBody.java @@ -27,6 +27,7 @@ public class RegisterBody extends LoginBody { */ @NotBlank(message = "{user.password.not.blank}") @Length(min = 5, max = 30, message = "{user.password.length.valid}") +// @Pattern(regexp = RegexConstants.PASSWORD, message = "{user.password.format.valid}") private String password; /** diff --git a/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages.properties b/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages.properties index cce11c85d..f2777f77b 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages.properties +++ b/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages.properties @@ -17,6 +17,7 @@ user.username.length.valid=账户长度必须在{min}到{max}个字符之间 user.password.not.blank=用户密码不能为空 user.password.length.valid=用户密码长度必须在{min}到{max}个字符之间 user.password.not.valid=* 5-50个字符 +user.password.format.valid=密码必须包含大写字母、小写字母、数字和特殊字符 user.email.not.valid=邮箱格式错误 user.email.not.blank=邮箱不能为空 user.phonenumber.not.blank=用户手机号不能为空 diff --git a/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_en_US.properties b/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_en_US.properties index f948c4ab8..306a48f6a 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_en_US.properties +++ b/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_en_US.properties @@ -17,6 +17,7 @@ user.username.length.valid=Account length must be between {min} and {max} charac user.password.not.blank=Password cannot be empty user.password.length.valid=Password length must be between {min} and {max} characters user.password.not.valid=* 5-50 characters +user.password.format.valid=Password must contain uppercase, lowercase, digit, and special character user.email.not.valid=Mailbox format error user.email.not.blank=Mailbox cannot be blank user.phonenumber.not.blank=Phone number cannot be blank diff --git a/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_zh_CN.properties b/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_zh_CN.properties index cce11c85d..f2777f77b 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_zh_CN.properties +++ b/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_zh_CN.properties @@ -17,6 +17,7 @@ user.username.length.valid=账户长度必须在{min}到{max}个字符之间 user.password.not.blank=用户密码不能为空 user.password.length.valid=用户密码长度必须在{min}到{max}个字符之间 user.password.not.valid=* 5-50个字符 +user.password.format.valid=密码必须包含大写字母、小写字母、数字和特殊字符 user.email.not.valid=邮箱格式错误 user.email.not.blank=邮箱不能为空 user.phonenumber.not.blank=用户手机号不能为空 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java index d98b3a879..49f80e898 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java @@ -62,6 +62,7 @@ public class SysTenantBo extends BaseEntity { * 密码(创建系统用户) */ @NotBlank(message = "密码不能为空", groups = { AddGroup.class }) +// @Pattern(regexp = RegexConstants.PASSWORD, message = "{user.password.format.valid}", groups = { AddGroup.class }) private String password; /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java index 2abdb971a..db633c81d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java @@ -118,6 +118,13 @@ public interface ISysRoleService { */ void checkRoleDataScope(Long roleId); + /** + * 校验角色是否有数据权限 + * + * @param roleIds 角色ID列表(支持传单个ID) + */ + void checkRoleDataScope(List roleIds); + /** * 通过角色ID查询角色使用数量 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java index 89929c369..8fa65a65d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java @@ -253,14 +253,23 @@ public class SysRoleServiceImpl implements ISysRoleService { if (ObjectUtil.isNull(roleId)) { return; } - if (LoginHelper.isSuperAdmin()) { + this.checkRoleDataScope(Collections.singletonList(roleId)); + } + + /** + * 校验角色是否有数据权限 + * + * @param roleIds 角色ID列表(支持传单个ID) + */ + @Override + public void checkRoleDataScope(List roleIds) { + if (CollUtil.isEmpty(roleIds) || LoginHelper.isSuperAdmin()) { return; } - List roles = this.selectRoleList(new SysRoleBo(roleId)); - if (CollUtil.isEmpty(roles)) { - throw new ServiceException("没有权限访问角色数据!"); + long count = baseMapper.selectRoleCount(roleIds); + if (count != roleIds.size()) { + throw new ServiceException("没有权限访问部分角色数据!"); } - } /** @@ -417,10 +426,10 @@ public class SysRoleServiceImpl implements ISysRoleService { @Override @Transactional(rollbackFor = Exception.class) public int deleteRoleByIds(List roleIds) { + checkRoleDataScope(roleIds); List roles = baseMapper.selectByIds(roleIds); for (SysRole role : roles) { checkRoleAllowed(BeanUtil.toBean(role, SysRoleBo.class)); - checkRoleDataScope(role.getRoleId()); if (countUserRoleByRoleId(role.getRoleId()) > 0) { throw new ServiceException(String.format("%1$s已分配,不能删除!", role.getRoleName())); } -- Gitee From 2656fcc95686e84390e9722da040ebd0d0ad4b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sun, 6 Jul 2025 10:51:13 +0800 Subject: [PATCH 018/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=97=A0=E7=94=A8=E6=B3=A8=E9=87=8A=20=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E4=BB=A3=E7=A0=81=E6=8A=A5null=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../doc/config/SpringDocAutoConfiguration.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/SpringDocAutoConfiguration.java b/ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/SpringDocAutoConfiguration.java index ce80bcefa..0c9c14dcf 100644 --- a/ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/SpringDocAutoConfiguration.java +++ b/ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/SpringDocAutoConfiguration.java @@ -57,14 +57,15 @@ public class SpringDocAutoConfiguration { openApi.externalDocs(properties.getExternalDocs()); openApi.tags(properties.getTags()); openApi.paths(properties.getPaths()); - openApi.components(properties.getComponents()); - Set keySet = properties.getComponents().getSecuritySchemes().keySet(); - List list = new ArrayList<>(); - SecurityRequirement securityRequirement = new SecurityRequirement(); - keySet.forEach(securityRequirement::addList); - list.add(securityRequirement); - openApi.security(list); - + if (properties.getComponents() != null) { + openApi.components(properties.getComponents()); + Set keySet = properties.getComponents().getSecuritySchemes().keySet(); + List list = new ArrayList<>(); + SecurityRequirement securityRequirement = new SecurityRequirement(); + keySet.forEach(securityRequirement::addList); + list.add(securityRequirement); + openApi.security(list); + } return openApi; } -- Gitee From edac6074fb7240903fe953ef0da4008c37744887 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sun, 6 Jul 2025 15:16:46 +0800 Subject: [PATCH 019/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20easy-es=20?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/config/EasyEsConfiguration.java | 102 ++++++++++++++++++ .../config/GeneratorConfiguration.java | 27 +++++ 2 files changed, 129 insertions(+) create mode 100644 ruoyi-common/ruoyi-common-elasticsearch/src/main/java/org/dromara/easyes/spring/config/EasyEsConfiguration.java create mode 100644 ruoyi-common/ruoyi-common-elasticsearch/src/main/java/org/dromara/easyes/starter/config/GeneratorConfiguration.java diff --git a/ruoyi-common/ruoyi-common-elasticsearch/src/main/java/org/dromara/easyes/spring/config/EasyEsConfiguration.java b/ruoyi-common/ruoyi-common-elasticsearch/src/main/java/org/dromara/easyes/spring/config/EasyEsConfiguration.java new file mode 100644 index 000000000..4a2f89aca --- /dev/null +++ b/ruoyi-common/ruoyi-common-elasticsearch/src/main/java/org/dromara/easyes/spring/config/EasyEsConfiguration.java @@ -0,0 +1,102 @@ +package org.dromara.easyes.spring.config; + +import lombok.NonNull; +import lombok.Setter; +import org.dromara.easyes.common.constants.BaseEsConstants; +import org.dromara.easyes.common.property.EasyEsDynamicProperties; +import org.dromara.easyes.common.property.EasyEsProperties; +import org.dromara.easyes.common.strategy.AutoProcessIndexStrategy; +import org.dromara.easyes.common.utils.EsClientUtils; +import org.dromara.easyes.core.index.AutoProcessIndexNotSmoothlyStrategy; +import org.dromara.easyes.core.index.AutoProcessIndexSmoothlyStrategy; +import org.dromara.easyes.spring.factory.IndexStrategyFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.EnvironmentAware; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; +import org.springframework.util.Assert; + +import java.util.Map; + +/** + * Easy-Es Spring配置类 + * @author MoJie + * @since 2.0 + */ +@ConditionalOnProperty(value = "easy-es.enable", havingValue = "true") +@Configuration +public class EasyEsConfiguration implements InitializingBean, EnvironmentAware { + + private Environment environment; + + @Setter + @Autowired(required = false) + private EasyEsProperties easyEsProperties; + + @Setter + @Autowired(required = false) + private EasyEsDynamicProperties easyEsDynamicProperties; + + @Override + public void setEnvironment(@NonNull Environment environment) { + this.environment = environment; + } + + /** + * 当当前配置类注册为bean完成后触发,校验easy-es配置是否存在, + * 如果easy-es.enable: false, 那么不进行校验和抛出异常 + * 默认情况下引入了easy-es是需要配置的,即easy-es.enable:true + * 如果不需要easy-es,那么自行配置为false + * @author MoJie + */ + @Override + public void afterPropertiesSet() { + Boolean enable = environment.getProperty(BaseEsConstants.ENABLE_PREFIX, Boolean.class, Boolean.TRUE); + if (enable) { + Assert.notNull(this.easyEsProperties, "easyEsProperties must is A bean. easy-es配置类必须给配置一个bean"); + } + } + + @Bean + public IndexStrategyFactory indexStrategyFactory() { + return new IndexStrategyFactory(); + } + + @Bean + public EsClientUtils esClientUtils() { + EsClientUtils esClientUtils = new EsClientUtils(); + if (this.easyEsDynamicProperties == null) { + this.easyEsDynamicProperties = new EasyEsDynamicProperties(); + } + Map datasourceMap = this.easyEsDynamicProperties.getDatasource(); + if (datasourceMap.isEmpty()) { + // 设置默认数据源,兼容不使用多数据源配置场景的老用户使用习惯 + datasourceMap.put(EsClientUtils.DEFAULT_DS, this.easyEsProperties); + } + for (String key : datasourceMap.keySet()) { + EasyEsProperties easyEsConfigProperties = datasourceMap.get(key); + EsClientUtils.registerClient(key, () -> EsClientUtils.buildClient(easyEsConfigProperties)); + } + return esClientUtils; + } + + /** + * 索引策略注册 + * + * @return {@link AutoProcessIndexStrategy} + * @author MoJie + */ + @Bean + public AutoProcessIndexStrategy autoProcessIndexSmoothlyStrategy() { + return new AutoProcessIndexSmoothlyStrategy(); + } + + @Bean + public AutoProcessIndexStrategy autoProcessIndexNotSmoothlyStrategy() { + return new AutoProcessIndexNotSmoothlyStrategy(); + } + +} diff --git a/ruoyi-common/ruoyi-common-elasticsearch/src/main/java/org/dromara/easyes/starter/config/GeneratorConfiguration.java b/ruoyi-common/ruoyi-common-elasticsearch/src/main/java/org/dromara/easyes/starter/config/GeneratorConfiguration.java new file mode 100644 index 000000000..3ab45eabb --- /dev/null +++ b/ruoyi-common/ruoyi-common-elasticsearch/src/main/java/org/dromara/easyes/starter/config/GeneratorConfiguration.java @@ -0,0 +1,27 @@ +package org.dromara.easyes.starter.config; + +import co.elastic.clients.elasticsearch.ElasticsearchClient; +import org.dromara.easyes.core.config.GeneratorConfig; +import org.dromara.easyes.core.toolkit.Generator; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Component; + +/** + * 代码生成注册 + * @author MoJie + * @since 2.0 + */ +@ConditionalOnProperty(value = "easy-es.enable", havingValue = "true") +@Component +public class GeneratorConfiguration extends Generator { + + @Autowired + private ElasticsearchClient client; + + @Override + public Boolean generate(GeneratorConfig config) { + super.generateEntity(config, this.client); + return Boolean.TRUE; + } +} -- Gitee From 77a245c13b21770b077f2b03b6e1debae6f411f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sun, 6 Jul 2025 15:38:29 +0800 Subject: [PATCH 020/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E6=A0=B9?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E4=B8=8D=E5=85=81=E8=AE=B8=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E5=8A=9E=E7=90=86=E4=BA=BA=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=9B=9E=E6=98=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/system/SysDeptController.java | 3 +++ .../service/impl/FlwTaskAssigneeServiceImpl.java | 13 ++++--------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java index 0bddc101d..e69990735 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java @@ -113,6 +113,9 @@ public class SysDeptController extends BaseController { @Log(title = "部门管理", businessType = BusinessType.DELETE) @DeleteMapping("/{deptId}") public R remove(@PathVariable Long deptId) { + if (StringUtils.equals(SystemConstants.ROOT_DEPT_ANCESTORS, String.valueOf(deptId))) { + return R.warn("根部门不允许删除"); + } if (deptService.hasChildByDeptId(deptId)) { return R.warn("存在下级部门,不允许删除"); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java index fab31c877..48c6af58c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java @@ -114,15 +114,10 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand .map(entry -> { String storageId = entry.getKey(); Pair parsed = entry.getValue(); - String handlerName = "格式错误"; - if (parsed != null) { - Map nameMapping = nameMap.getOrDefault(parsed.getKey(), Collections.emptyMap()); - handlerName = nameMapping.getOrDefault(parsed.getValue(), "未知名称"); - } - HandlerFeedBackVo backVo = new HandlerFeedBackVo(); - backVo.setStorageId(storageId); - backVo.setHandlerName(handlerName); - return backVo; + String handlerName = (parsed == null) ? null + : nameMap.getOrDefault(parsed.getKey(), Collections.emptyMap()) + .get(parsed.getValue()); + return new HandlerFeedBackVo(storageId, handlerName); }).toList(); } -- Gitee From a4d21e06c06b701f4a8e8801f54ead4ecd677034 Mon Sep 17 00:00:00 2001 From: MichelleChung <1242874891@qq.com> Date: Sun, 6 Jul 2025 07:52:47 +0000 Subject: [PATCH 021/155] =?UTF-8?q?!229=20=E6=96=B0=E5=A2=9E=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E6=89=A9=E5=B1=95spel=E8=A1=A8=E8=BE=BE?= =?UTF-8?q?=E5=BC=8F=20*=20add:=20=E6=96=B0=E5=A2=9E=20FlowSpel=20?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=20sql=20=E8=84=9A=E6=9C=AC=20;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/domain/vo/RemoteTaskAssigneeVo.java | 4 +- .../dubbo/RemoteTaskAssigneeServiceImpl.java | 8 +- .../common/constant/FlowConstant.java | 5 + .../common/enums/TaskAssigneeEnum.java | 7 +- .../controller/FlwSpelController.java | 104 ++++++++++++ .../org/dromara/workflow/domain/FlowSpel.java | 69 ++++++++ .../workflow/domain/bo/FlowSpelBo.java | 60 +++++++ .../workflow/domain/vo/FlowSpelVo.java | 79 +++++++++ .../workflow/mapper/FlwSpelMapper.java | 15 ++ .../workflow/rule/SpelRuleComponent.java | 36 ++++ .../workflow/service/IFlwSpelService.java | 72 ++++++++ .../service/impl/FlwSpelServiceImpl.java | 160 ++++++++++++++++++ .../impl/FlwTaskAssigneeServiceImpl.java | 5 + .../service/impl/FlwTaskServiceImpl.java | 2 + .../mapper/workflow/FlwSpelMapper.xml | 7 + script/config/nacos/application-common.yml | 1 + script/sql/oracle/oracle_ry_cloud.sql | 6 + script/sql/oracle/oracle_ry_workflow.sql | 38 +++++ script/sql/postgres/postgres_ry_cloud.sql | 7 + script/sql/postgres/postgres_ry_workflow.sql | 38 +++++ script/sql/ry-cloud.sql | 7 + script/sql/ry-workflow.sql | 24 +++ .../sql/update/oracle/update_2.4.0-2.5.0.sql | 44 +++++ .../update/postgres/update_2.4.0-2.5.0.sql | 43 +++++ script/sql/update/update_2.4.0-2.5.0.sql | 28 +++ 25 files changed, 862 insertions(+), 7 deletions(-) create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowSpel.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowSpelBo.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowSpelVo.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwSpelMapper.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/rule/SpelRuleComponent.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwSpelService.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwSpelMapper.xml create mode 100644 script/sql/update/oracle/update_2.4.0-2.5.0.sql create mode 100644 script/sql/update/postgres/update_2.4.0-2.5.0.sql create mode 100644 script/sql/update/update_2.4.0-2.5.0.sql diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java index 5f59d8c0d..9f95b85dc 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java @@ -52,14 +52,14 @@ public class RemoteTaskAssigneeVo implements Serializable { */ public static List convertToHandlerList( List sourceList, - Function storageId, + Function storageId, Function handlerCode, Function handlerName, Function groupName, Function createTimeMapper) { return sourceList.stream() .map(item -> new TaskHandler( - String.valueOf(storageId.apply(item)), + storageId.apply(item), handlerCode.apply(item), handlerName.apply(item), groupName != null ? String.valueOf(groupName.apply(item)) : null, diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java index 87d1c6e28..c582c2c73 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java @@ -61,7 +61,7 @@ public class RemoteTaskAssigneeServiceImpl implements RemoteTaskAssigneeService TableDataInfo page = roleService.selectPageRoleList(bo, pageQuery); // 使用封装的字段映射方法进行转换 List handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(), - SysRoleVo::getRoleId, SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime); + r -> String.valueOf(r.getRoleId()), SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime); return new RemoteTaskAssigneeVo(page.getTotal(), handlers); } @@ -85,7 +85,7 @@ public class RemoteTaskAssigneeServiceImpl implements RemoteTaskAssigneeService TableDataInfo page = postService.selectPagePostList(bo, pageQuery); // 使用封装的字段映射方法进行转换 List handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(), - SysPostVo::getPostId, SysPostVo::getPostCategory, SysPostVo::getPostName, SysPostVo::getDeptId, SysPostVo::getCreateTime); + p -> String.valueOf(p.getPostId()), SysPostVo::getPostCategory, SysPostVo::getPostName, SysPostVo::getDeptId, SysPostVo::getCreateTime); return new RemoteTaskAssigneeVo(page.getTotal(), handlers); } @@ -109,7 +109,7 @@ public class RemoteTaskAssigneeServiceImpl implements RemoteTaskAssigneeService TableDataInfo page = deptService.selectPageDeptList(bo, pageQuery); // 使用封装的字段映射方法进行转换 List handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(), - SysDeptVo::getDeptId, SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, SysDeptVo::getParentId, SysDeptVo::getCreateTime); + d -> String.valueOf(d.getDeptId()), SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, SysDeptVo::getParentId, SysDeptVo::getCreateTime); return new RemoteTaskAssigneeVo(page.getTotal(), handlers); } @@ -133,7 +133,7 @@ public class RemoteTaskAssigneeServiceImpl implements RemoteTaskAssigneeService TableDataInfo page = userService.selectPageUserList(bo, pageQuery); // 使用封装的字段映射方法进行转换 List handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(), - SysUserVo::getUserId, SysUserVo::getUserName, SysUserVo::getNickName, SysUserVo::getDeptId, SysUserVo::getCreateTime); + u -> String.valueOf(u.getUserId()), SysUserVo::getUserName, SysUserVo::getNickName, SysUserVo::getDeptId, SysUserVo::getCreateTime); return new RemoteTaskAssigneeVo(page.getTotal(), handlers); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java index aaa640bfb..81b8de592 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java @@ -18,6 +18,11 @@ public interface FlowConstant { */ String BUSINESS_ID = "businessId"; + /** + * 发起人部门id + */ + String INITIATOR_DEPT_ID = "initiatorDeptId"; + /** * 委托 */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java index 60be92fe9..c86e73e42 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java @@ -35,7 +35,12 @@ public enum TaskAssigneeEnum { /** * 岗位 */ - POST("岗位", "post:"); + POST("岗位", "post:"), + + /** + * SPEL表达式 + */ + SPEL("SPEL表达式", ""); private final String desc; private final String code; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java new file mode 100644 index 000000000..84936a5f4 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java @@ -0,0 +1,104 @@ +package org.dromara.workflow.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.workflow.domain.bo.FlowSpelBo; +import org.dromara.workflow.domain.vo.FlowSpelVo; +import org.dromara.workflow.service.IFlwSpelService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 流程spel达式定义 + * + * @author Michelle.Chung + * @date 2025-07-04 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/spel") +public class FlwSpelController extends BaseController { + + private final IFlwSpelService flwSpelService; + + /** + * 查询流程spel达式定义列表 + */ + @SaCheckPermission("workflow:spel:list") + @GetMapping("/list") + public TableDataInfo list(FlowSpelBo bo, PageQuery pageQuery) { + return flwSpelService.queryPageList(bo, pageQuery); + } + + /** + * 导出流程spel达式定义列表 + */ + @SaCheckPermission("workflow:spel:export") + @Log(title = "流程spel达式定义", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(FlowSpelBo bo, HttpServletResponse response) { + List list = flwSpelService.queryList(bo); + ExcelUtil.exportExcel(list, "流程spel达式定义", FlowSpelVo.class, response); + } + + /** + * 获取流程spel达式定义详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("workflow:spel:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { + return R.ok(flwSpelService.queryById(id)); + } + + /** + * 新增流程spel达式定义 + */ + @SaCheckPermission("workflow:spel:add") + @Log(title = "流程spel达式定义", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody FlowSpelBo bo) { + return toAjax(flwSpelService.insertByBo(bo)); + } + + /** + * 修改流程spel达式定义 + */ + @SaCheckPermission("workflow:spel:edit") + @Log(title = "流程spel达式定义", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody FlowSpelBo bo) { + return toAjax(flwSpelService.updateByBo(bo)); + } + + /** + * 删除流程spel达式定义 + * + * @param ids 主键串 + */ + @SaCheckPermission("workflow:spel:remove") + @Log(title = "流程spel达式定义", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { + return toAjax(flwSpelService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowSpel.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowSpel.java new file mode 100644 index 000000000..be74ccb90 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowSpel.java @@ -0,0 +1,69 @@ +package org.dromara.workflow.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.io.Serial; + +/** + * 流程spel达式定义对象 flow_spel + * + * @author Michelle.Chung + * @date 2025-07-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("flow_spel") +public class FlowSpel extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 组件名称 + */ + private String componentName; + + /** + * 方法名 + */ + private String methodName; + + /** + * 参数 + */ + private String methodParams; + + /** + * 预览spel表达式 + */ + private String viewSpel; + + /** + * 状态(0正常 1停用) + */ + private String status; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志 + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowSpelBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowSpelBo.java new file mode 100644 index 000000000..e20449990 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowSpelBo.java @@ -0,0 +1,60 @@ +package org.dromara.workflow.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.workflow.domain.FlowSpel; + +/** + * 流程spel达式定义业务对象 flow_spel + * + * @author Michelle.Chung + * @date 2025-07-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = FlowSpel.class, reverseConvertGenerate = false) +public class FlowSpelBo extends BaseEntity { + + /** + * 主键id + */ + private Long id; + + /** + * 组件名称 + */ + private String componentName; + + /** + * 方法名 + */ + private String methodName; + + /** + * 参数 + */ + private String methodParams; + + /** + * 预览spel值 + */ + @NotBlank(message = "预览spel值不能为空", groups = { AddGroup.class, EditGroup.class }) + private String viewSpel; + + /** + * 状态(0正常 1停用) + */ + @NotBlank(message = "状态(0正常 1停用)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String status; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowSpelVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowSpelVo.java new file mode 100644 index 000000000..ae32746a2 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowSpelVo.java @@ -0,0 +1,79 @@ +package org.dromara.workflow.domain.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.workflow.domain.FlowSpel; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 流程spel达式定义视图对象 flow_spel + * + * @author Michelle.Chung + * @date 2025-07-04 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = FlowSpel.class) +public class FlowSpelVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 组件名称 + */ + @ExcelProperty(value = "组件名称") + private String componentName; + + /** + * 方法名 + */ + @ExcelProperty(value = "方法名") + private String methodName; + + /** + * 参数 + */ + @ExcelProperty(value = "参数") + private String methodParams; + + /** + * 预览spel值 + */ + @ExcelProperty(value = "预览spel值") + private String viewSpel; + + /** + * 状态(0正常 1停用) + */ + @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=正常,1=停用") + private String status; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwSpelMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwSpelMapper.java new file mode 100644 index 000000000..4cba7eeb5 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwSpelMapper.java @@ -0,0 +1,15 @@ +package org.dromara.workflow.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.workflow.domain.FlowSpel; +import org.dromara.workflow.domain.vo.FlowSpelVo; + +/** + * 流程spel达式定义Mapper接口 + * + * @author Michelle.Chung + * @date 2025-07-04 + */ +public interface FlwSpelMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/rule/SpelRuleComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/rule/SpelRuleComponent.java new file mode 100644 index 000000000..17e964ba3 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/rule/SpelRuleComponent.java @@ -0,0 +1,36 @@ +package org.dromara.workflow.rule; + +import cn.hutool.core.util.ObjectUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.system.api.RemoteDeptService; +import org.springframework.stereotype.Component; + +/** + * spel表达式规则组件 + *

+ * 通过该组件统一管理流程定义中的spel表达式 + *

+ * + * @author Michelle.Chung + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class SpelRuleComponent { + + private final RemoteDeptService deptService; + + /** + * 通过发起人部门id获取部门负责人 + */ + public Long selectDeptLeaderById(Long initiatorDeptId) { + Long leaderId = deptService.selectDeptLeaderById(initiatorDeptId); + if (ObjectUtil.isNull(leaderId)) { + throw new ServiceException("当前部门未设置负责人,请联系管理员操作。"); + } + return leaderId; + } + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwSpelService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwSpelService.java new file mode 100644 index 000000000..108824728 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwSpelService.java @@ -0,0 +1,72 @@ +package org.dromara.workflow.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.api.domain.bo.RemoteTaskAssigneeBo; +import org.dromara.system.api.domain.vo.RemoteTaskAssigneeVo; +import org.dromara.workflow.domain.bo.FlowSpelBo; +import org.dromara.workflow.domain.vo.FlowSpelVo; + +import java.util.Collection; +import java.util.List; + +/** + * 流程spel达式定义Service接口 + * + * @author Michelle.Chung + * @date 2025-07-04 + */ +public interface IFlwSpelService { + + RemoteTaskAssigneeVo selectSpelByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery); + + /** + * 查询流程spel达式定义 + * + * @param id 主键 + * @return 流程spel达式定义 + */ + FlowSpelVo queryById(Long id); + + /** + * 分页查询流程spel达式定义列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 流程spel达式定义分页列表 + */ + TableDataInfo queryPageList(FlowSpelBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的流程spel达式定义列表 + * + * @param bo 查询条件 + * @return 流程spel达式定义列表 + */ + List queryList(FlowSpelBo bo); + + /** + * 新增流程spel达式定义 + * + * @param bo 流程spel达式定义 + * @return 是否新增成功 + */ + Boolean insertByBo(FlowSpelBo bo); + + /** + * 修改流程spel达式定义 + * + * @param bo 流程spel达式定义 + * @return 是否修改成功 + */ + Boolean updateByBo(FlowSpelBo bo); + + /** + * 校验并批量删除流程spel达式定义信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java new file mode 100644 index 000000000..3ded4aee1 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java @@ -0,0 +1,160 @@ +package org.dromara.workflow.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.api.domain.bo.RemoteTaskAssigneeBo; +import org.dromara.system.api.domain.vo.RemoteTaskAssigneeVo; +import org.dromara.workflow.domain.FlowSpel; +import org.dromara.workflow.domain.bo.FlowSpelBo; +import org.dromara.workflow.domain.vo.FlowSpelVo; +import org.dromara.workflow.mapper.FlwSpelMapper; +import org.dromara.workflow.service.IFlwSpelService; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 流程spel达式定义Service业务层处理 + * + * @author Michelle.Chung + * @date 2025-07-04 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class FlwSpelServiceImpl implements IFlwSpelService { + + private final FlwSpelMapper baseMapper; + + /** + * 查询流程spel达式定义列表 + */ + @Override + public RemoteTaskAssigneeVo selectSpelByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery) { + PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); + FlowSpelBo bo = new FlowSpelBo(); + bo.setViewSpel(taskQuery.getHandlerCode()); + bo.setRemark(taskQuery.getHandlerName()); + bo.setStatus(SystemConstants.NORMAL); + Map params = bo.getParams(); + params.put("beginTime", taskQuery.getBeginTime()); + params.put("endTime", taskQuery.getEndTime()); + TableDataInfo page = this.queryPageList(bo, pageQuery); + // 使用封装的字段映射方法进行转换 + List handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(), + FlowSpelVo::getViewSpel, c -> "", FlowSpelVo::getRemark, null, FlowSpelVo::getCreateTime); + return new RemoteTaskAssigneeVo(page.getTotal(), handlers); + } + + /** + * 查询流程spel达式定义 + * + * @param id 主键 + * @return 流程spel达式定义 + */ + @Override + public FlowSpelVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询流程spel达式定义列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 流程spel达式定义分页列表 + */ + @Override + public TableDataInfo queryPageList(FlowSpelBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的流程spel达式定义列表 + * + * @param bo 查询条件 + * @return 流程spel达式定义列表 + */ + @Override + public List queryList(FlowSpelBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(FlowSpelBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(FlowSpel::getId); + lqw.like(StringUtils.isNotBlank(bo.getComponentName()), FlowSpel::getComponentName, bo.getComponentName()); + lqw.like(StringUtils.isNotBlank(bo.getMethodName()), FlowSpel::getMethodName, bo.getMethodName()); + lqw.eq(StringUtils.isNotBlank(bo.getMethodParams()), FlowSpel::getMethodParams, bo.getMethodParams()); + lqw.eq(StringUtils.isNotBlank(bo.getViewSpel()), FlowSpel::getViewSpel, bo.getViewSpel()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), FlowSpel::getStatus, bo.getStatus()); + lqw.like(StringUtils.isNotBlank(bo.getRemark()), FlowSpel::getRemark, bo.getRemark()); + return lqw; + } + + /** + * 新增流程spel达式定义 + * + * @param bo 流程spel达式定义 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(FlowSpelBo bo) { + FlowSpel add = MapstructUtils.convert(bo, FlowSpel.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改流程spel达式定义 + * + * @param bo 流程spel达式定义 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(FlowSpelBo bo) { + FlowSpel update = MapstructUtils.convert(bo, FlowSpel.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(FlowSpel entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除流程spel达式定义信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java index 48c6af58c..59db41a75 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java @@ -24,6 +24,7 @@ import org.dromara.warm.flow.ui.vo.HandlerFeedBackVo; import org.dromara.warm.flow.ui.vo.HandlerSelectVo; import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.enums.TaskAssigneeEnum; +import org.dromara.workflow.service.IFlwSpelService; import org.dromara.workflow.service.IFlwTaskAssigneeService; import org.springframework.stereotype.Service; @@ -52,6 +53,7 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand private RemoteRoleService remoteRoleService; @DubboReference private RemotePostService remotePostService; + private final IFlwSpelService spelService; /** * 获取办理人权限设置列表tabs页签 @@ -130,6 +132,7 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand case ROLE -> remoteTaskAssigneeService.selectRolesByTaskAssigneeList(taskQuery); case DEPT -> remoteTaskAssigneeService.selectDeptsByTaskAssigneeList(taskQuery); case POST -> remoteTaskAssigneeService.selectPostsByTaskAssigneeList(taskQuery); + case SPEL -> spelService.selectSpelByTaskAssigneeList(taskQuery); }; } @@ -210,6 +213,7 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand case ROLE -> remoteUserService.selectUsersByRoleIds(ids); case DEPT -> remoteUserService.selectUsersByDeptIds(ids); case POST -> remoteUserService.selectUsersByPostIds(ids); + case SPEL -> new ArrayList<>(); }; } @@ -226,6 +230,7 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand case ROLE -> remoteRoleService.selectRoleNamesByIds(ids); case DEPT -> remoteDeptService.selectDeptNamesByIds(ids); case POST -> remotePostService.selectPostNamesByIds(ids); + case SPEL -> new HashMap<>(); }; } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 0c5d1b81b..d785eac71 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -107,6 +107,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService { Map variables = startProcessBo.getVariables(); // 流程发起人 variables.put(INITIATOR, LoginHelper.getUserIdStr()); + // 发起人部门id + variables.put(INITIATOR_DEPT_ID, LoginHelper.getDeptId()); // 业务id variables.put(BUSINESS_ID, businessId); FlowInstance flowInstance = flowInstanceMapper.selectOne(new LambdaQueryWrapper<>(FlowInstance.class) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwSpelMapper.xml b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwSpelMapper.xml new file mode 100644 index 000000000..03355f6a3 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwSpelMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/script/config/nacos/application-common.yml b/script/config/nacos/application-common.yml index d1733e872..36fd5a5ef 100644 --- a/script/config/nacos/application-common.yml +++ b/script/config/nacos/application-common.yml @@ -295,3 +295,4 @@ tenant: - sys_user_role - sys_client - sys_oss_config + - flow_spel diff --git a/script/sql/oracle/oracle_ry_cloud.sql b/script/sql/oracle/oracle_ry_cloud.sql index 0431b24d4..42ae012ca 100644 --- a/script/sql/oracle/oracle_ry_cloud.sql +++ b/script/sql/oracle/oracle_ry_cloud.sql @@ -600,6 +600,12 @@ INSERT INTO sys_menu VALUES ('11641', '请假申请修改', '11638', '3', '#', ' INSERT INTO sys_menu VALUES ('11642', '请假申请删除', '11638', '4', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11643', '请假申请导出', '11638', '5', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', 2, 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, SYSDATE, 1, SYSDATE, '流程达式定义菜单'); +INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); -- ---------------------------- -- 6、用户和角色关联表 用户N-1角色 diff --git a/script/sql/oracle/oracle_ry_workflow.sql b/script/sql/oracle/oracle_ry_workflow.sql index 97029ffe3..5ea44efcc 100644 --- a/script/sql/oracle/oracle_ry_workflow.sql +++ b/script/sql/oracle/oracle_ry_workflow.sql @@ -338,6 +338,44 @@ INSERT INTO flow_category VALUES (107, '000000', 101, '0,100,101', '外出', 4, INSERT INTO flow_category VALUES (108, '000000', 102, '0,100,102', '转正', 1, '0', 103, 1, SYSDATE, NULL, NULL); INSERT INTO flow_category VALUES (109, '000000', 102, '0,100,102', '离职', 2, '0', 103, 1, SYSDATE, NULL, NULL); +-- ---------------------------- +-- 流程spel表达式定义表 +-- ---------------------------- +CREATE TABLE flow_spel ( + id NUMBER(20) NOT NULL, + component_name VARCHAR2(255), + method_name VARCHAR2(255), + method_params VARCHAR2(255), + view_spel VARCHAR2(255), + remark VARCHAR2(255), + status CHAR(1) DEFAULT '0', + del_flag CHAR(1) DEFAULT '0', + create_dept NUMBER(20), + create_by NUMBER(20), + create_time DATE, + update_by NUMBER(20), + update_time DATE +); + +alter table flow_spel add constraint pk_flow_spel primary key (id); + +COMMENT ON TABLE flow_spel IS '流程spel表达式定义表'; +COMMENT ON COLUMN flow_spel.id IS '主键id'; +COMMENT ON COLUMN flow_spel.component_name IS '组件名称'; +COMMENT ON COLUMN flow_spel.method_name IS '方法名'; +COMMENT ON COLUMN flow_spel.method_params IS '参数'; +COMMENT ON COLUMN flow_spel.view_spel IS '预览spel表达式'; +COMMENT ON COLUMN flow_spel.remark IS '备注'; +COMMENT ON COLUMN flow_spel.status IS '状态(0正常 1停用)'; +COMMENT ON COLUMN flow_spel.del_flag IS '删除标志'; +COMMENT ON COLUMN flow_spel.create_dept IS '创建部门'; +COMMENT ON COLUMN flow_spel.create_by IS '创建者'; +COMMENT ON COLUMN flow_spel.create_time IS '创建时间'; +COMMENT ON COLUMN flow_spel.update_by IS '更新者'; +COMMENT ON COLUMN flow_spel.update_time IS '更新时间'; + +INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'initiatorDeptId', '#{@spelRuleComponent.selectDeptLeaderById(#initiatorDeptId)}', '根据部门id获取部门负责人', '0', '0', 103, 1, SYSDATE, 1, SYSDATE); +INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, SYSDATE, 1, SYSDATE); -- ---------------------------- -- 请假单信息 diff --git a/script/sql/postgres/postgres_ry_cloud.sql b/script/sql/postgres/postgres_ry_cloud.sql index 98618079d..04b53d94f 100644 --- a/script/sql/postgres/postgres_ry_cloud.sql +++ b/script/sql/postgres/postgres_ry_cloud.sql @@ -599,6 +599,13 @@ INSERT INTO sys_menu VALUES ('11641', '请假申请修改', '11638', '3', '#', ' INSERT INTO sys_menu VALUES ('11642', '请假申请删除', '11638', '4', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:remove', '#', 103, 1, now(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11643', '请假申请导出', '11638', '5', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:export', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', 2, 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, now(), 1, now(), '流程达式定义菜单'); +INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, now(), NULL, NULL, ''); + -- ---------------------------- -- 6、用户和角色关联表 用户N-1角色 -- ---------------------------- diff --git a/script/sql/postgres/postgres_ry_workflow.sql b/script/sql/postgres/postgres_ry_workflow.sql index 9ce6c3f0a..c56e9f619 100644 --- a/script/sql/postgres/postgres_ry_workflow.sql +++ b/script/sql/postgres/postgres_ry_workflow.sql @@ -322,6 +322,44 @@ INSERT INTO flow_category VALUES (107, '000000', 101, '0,100,101', '外出', 4, INSERT INTO flow_category VALUES (108, '000000', 102, '0,100,102', '转正', 1, '0', 103, 1, now(), NULL, NULL); INSERT INTO flow_category VALUES (109, '000000', 102, '0,100,102', '离职', 2, '0', 103, 1, now(), NULL, NULL); +-- ---------------------------- +-- 流程spel表达式定义表 +-- ---------------------------- +CREATE TABLE flow_spel ( + id BIGINT NOT NULL, + component_name VARCHAR(255), + method_name VARCHAR(255), + method_params VARCHAR(255), + view_spel VARCHAR(255), + remark VARCHAR(255), + status CHAR(1) DEFAULT '0', + del_flag CHAR(1) DEFAULT '0', + create_dept BIGINT, + create_by BIGINT, + create_time TIMESTAMP, + update_by BIGINT, + update_time TIMESTAMP, + PRIMARY KEY (id) +); + +COMMENT ON TABLE flow_spel IS '流程spel表达式定义表'; +COMMENT ON COLUMN flow_spel.id IS '主键id'; +COMMENT ON COLUMN flow_spel.component_name IS '组件名称'; +COMMENT ON COLUMN flow_spel.method_name IS '方法名'; +COMMENT ON COLUMN flow_spel.method_params IS '参数'; +COMMENT ON COLUMN flow_spel.view_spel IS '预览spel表达式'; +COMMENT ON COLUMN flow_spel.remark IS '备注'; +COMMENT ON COLUMN flow_spel.status IS '状态(0正常 1停用)'; +COMMENT ON COLUMN flow_spel.del_flag IS '删除标志'; +COMMENT ON COLUMN flow_spel.create_dept IS '创建部门'; +COMMENT ON COLUMN flow_spel.create_by IS '创建者'; +COMMENT ON COLUMN flow_spel.create_time IS '创建时间'; +COMMENT ON COLUMN flow_spel.update_by IS '更新者'; +COMMENT ON COLUMN flow_spel.update_time IS '更新时间'; + +INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'initiatorDeptId', '#{@spelRuleComponent.selectDeptLeaderById(#initiatorDeptId)}', '根据部门id获取部门负责人', '0', '0', 103, 1, now(), 1, now()); +INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, now(), 1, now()); + -- ---------------------------- -- 请假单信息 -- ---------------------------- diff --git a/script/sql/ry-cloud.sql b/script/sql/ry-cloud.sql index 1138c7042..802e9d30a 100644 --- a/script/sql/ry-cloud.sql +++ b/script/sql/ry-cloud.sql @@ -415,6 +415,7 @@ insert into sys_menu values ('11633', '我的抄送', '11618', '4', 'taskCopyLis insert into sys_menu values ('11620', '流程定义', '11616', '3', 'processDefinition', 'workflow/processDefinition/index', '', '1', '1', 'C', '0', '0', '', 'process-definition', 103, 1, sysdate(), NULL, NULL, ''); insert into sys_menu values ('11621', '流程实例', '11630', '1', 'processInstance', 'workflow/processInstance/index', '', '1', '1', 'C', '0', '0', '', 'tree-table', 103, 1, sysdate(), NULL, NULL, ''); insert into sys_menu values ('11622', '流程分类', '11616', '1', 'category', 'workflow/category/index', '', '1', '0', 'C', '0', '0', 'workflow:category:list', 'category', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', '2', 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, sysdate(), 1, sysdate(), '流程达式定义菜单'); insert into sys_menu values ('11629', '我发起的', '11618', '1', 'myDocument', 'workflow/task/myDocument', '', '1', '1', 'C', '0', '0', '', 'guide', 103, 1, sysdate(), NULL, NULL, ''); insert into sys_menu values ('11630', '流程监控', '11616', '4', 'monitor', '', '', '1', '0', 'M', '0', '0', '', 'monitor', 103, 1, sysdate(), NULL, NULL, ''); insert into sys_menu values ('11631', '待办任务', '11630', '2', 'allTaskWaiting', 'workflow/task/allTaskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, sysdate(), NULL, NULL, ''); @@ -426,6 +427,12 @@ insert into sys_menu values ('11624', '流程分类新增', '11622', '2', '#', ' insert into sys_menu values ('11625', '流程分类修改', '11622', '3', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:edit', '#', 103, 1,sysdate(), null, null, ''); insert into sys_menu values ('11626', '流程分类删除', '11622', '4', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:remove', '#', 103,1, sysdate(), null, null, ''); insert into sys_menu values ('11627', '流程分类导出', '11622', '5', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:export', '#', 103,1, sysdate(), null, null, ''); +-- 流程表达式管理相关按钮 +INSERT INTO sys_menu VALUES ('11802', '流程达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11803', '流程达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11804', '流程达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11805', '流程达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11806', '流程达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, sysdate(), NULL, NULL, ''); -- 请假测试相关按钮 insert into sys_menu VALUES ('11638', '请假申请', '5', '1', 'leave', 'workflow/leave/index', '', '1', '0', 'C', '0', '0', 'workflow:leave:list', '#', 103, 1, sysdate(), NULL, NULL, '请假申请菜单'); insert into sys_menu VALUES ('11639', '请假申请查询', '11638', '1', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, sysdate(), NULL, NULL, ''); diff --git a/script/sql/ry-workflow.sql b/script/sql/ry-workflow.sql index 68557aa17..23fd6c763 100644 --- a/script/sql/ry-workflow.sql +++ b/script/sql/ry-workflow.sql @@ -182,6 +182,30 @@ INSERT INTO flow_category values (107, '000000', 101, '0,100,101', '外出', 4, INSERT INTO flow_category values (108, '000000', 102, '0,100,102', '转正', 1, '0', 103, 1, sysdate(), null, null); INSERT INTO flow_category values (109, '000000', 102, '0,100,102', '离职', 2, '0', 103, 1, sysdate(), null, null); +-- ---------------------------- +-- 流程spel表达式定义表 +-- ---------------------------- + +CREATE TABLE flow_spel ( + id bigint(20) NOT NULL COMMENT '主键id', + component_name varchar(255) DEFAULT NULL COMMENT '组件名称', + method_name varchar(255) DEFAULT NULL COMMENT '方法名', + method_params varchar(255) DEFAULT NULL COMMENT '参数', + view_spel varchar(255) DEFAULT NULL COMMENT '预览spel表达式', + remark varchar(255) DEFAULT NULL COMMENT '备注', + status char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + del_flag char(1) DEFAULT '0' COMMENT '删除标志', + create_dept bigint(20) DEFAULT NULL COMMENT '创建部门', + create_by bigint(20) DEFAULT NULL COMMENT '创建者', + create_time datetime DEFAULT NULL COMMENT '创建时间', + update_by bigint(20) DEFAULT NULL COMMENT '更新者', + update_time datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (id) +) ENGINE = InnoDB COMMENT='流程spel表达式定义表'; + +INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'initiatorDeptId', '#{@spelRuleComponent.selectDeptLeaderById(#initiatorDeptId)}', '根据部门id获取部门负责人', '0', '0', 103, 1, sysdate(), 1, sysdate()); +INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, sysdate(), 1, sysdate()); + -- ---------------------------- -- 请假单信息 -- ---------------------------- diff --git a/script/sql/update/oracle/update_2.4.0-2.5.0.sql b/script/sql/update/oracle/update_2.4.0-2.5.0.sql new file mode 100644 index 000000000..db0b4d539 --- /dev/null +++ b/script/sql/update/oracle/update_2.4.0-2.5.0.sql @@ -0,0 +1,44 @@ +-- ry-workflow 数据库 +CREATE TABLE flow_spel ( + id NUMBER(20) NOT NULL, + component_name VARCHAR2(255), + method_name VARCHAR2(255), + method_params VARCHAR2(255), + view_spel VARCHAR2(255), + remark VARCHAR2(255), + status CHAR(1) DEFAULT '0', + del_flag CHAR(1) DEFAULT '0', + create_dept NUMBER(20), + create_by NUMBER(20), + create_time DATE, + update_by NUMBER(20), + update_time DATE +); + +alter table flow_spel add constraint pk_flow_spel primary key (id); + +COMMENT ON TABLE flow_spel IS '流程spel表达式定义表'; +COMMENT ON COLUMN flow_spel.id IS '主键id'; +COMMENT ON COLUMN flow_spel.component_name IS '组件名称'; +COMMENT ON COLUMN flow_spel.method_name IS '方法名'; +COMMENT ON COLUMN flow_spel.method_params IS '参数'; +COMMENT ON COLUMN flow_spel.view_spel IS '预览spel表达式'; +COMMENT ON COLUMN flow_spel.remark IS '备注'; +COMMENT ON COLUMN flow_spel.status IS '状态(0正常 1停用)'; +COMMENT ON COLUMN flow_spel.del_flag IS '删除标志'; +COMMENT ON COLUMN flow_spel.create_dept IS '创建部门'; +COMMENT ON COLUMN flow_spel.create_by IS '创建者'; +COMMENT ON COLUMN flow_spel.create_time IS '创建时间'; +COMMENT ON COLUMN flow_spel.update_by IS '更新者'; +COMMENT ON COLUMN flow_spel.update_time IS '更新时间'; + +INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'initiatorDeptId', '#{@spelRuleComponent.selectDeptLeaderById(#initiatorDeptId)}', '根据部门id获取部门负责人', '0', '0', 103, 1, SYSDATE, 1, SYSDATE); +INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, SYSDATE, 1, SYSDATE); + +-- ry-cloud 数据库 +INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', 2, 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, SYSDATE, 1, SYSDATE, '流程达式定义菜单'); +INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); diff --git a/script/sql/update/postgres/update_2.4.0-2.5.0.sql b/script/sql/update/postgres/update_2.4.0-2.5.0.sql new file mode 100644 index 000000000..eb14bf0c6 --- /dev/null +++ b/script/sql/update/postgres/update_2.4.0-2.5.0.sql @@ -0,0 +1,43 @@ +-- ry-workflow 数据库 +CREATE TABLE flow_spel ( + id BIGINT NOT NULL, + component_name VARCHAR(255), + method_name VARCHAR(255), + method_params VARCHAR(255), + view_spel VARCHAR(255), + remark VARCHAR(255), + status CHAR(1) DEFAULT '0', + del_flag CHAR(1) DEFAULT '0', + create_dept BIGINT, + create_by BIGINT, + create_time TIMESTAMP, + update_by BIGINT, + update_time TIMESTAMP, + PRIMARY KEY (id) +); + +COMMENT ON TABLE flow_spel IS '流程spel表达式定义表'; +COMMENT ON COLUMN flow_spel.id IS '主键id'; +COMMENT ON COLUMN flow_spel.component_name IS '组件名称'; +COMMENT ON COLUMN flow_spel.method_name IS '方法名'; +COMMENT ON COLUMN flow_spel.method_params IS '参数'; +COMMENT ON COLUMN flow_spel.view_spel IS '预览spel表达式'; +COMMENT ON COLUMN flow_spel.remark IS '备注'; +COMMENT ON COLUMN flow_spel.status IS '状态(0正常 1停用)'; +COMMENT ON COLUMN flow_spel.del_flag IS '删除标志'; +COMMENT ON COLUMN flow_spel.create_dept IS '创建部门'; +COMMENT ON COLUMN flow_spel.create_by IS '创建者'; +COMMENT ON COLUMN flow_spel.create_time IS '创建时间'; +COMMENT ON COLUMN flow_spel.update_by IS '更新者'; +COMMENT ON COLUMN flow_spel.update_time IS '更新时间'; + +INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'initiatorDeptId', '#{@spelRuleComponent.selectDeptLeaderById(#initiatorDeptId)}', '根据部门id获取部门负责人', '0', '0', 103, 1, now(), 1, now()); +INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, now(), 1, now()); + +-- ry-cloud 数据库 +INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', 2, 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, now(), 1, now(), '流程达式定义菜单'); +INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, now(), NULL, NULL, ''); diff --git a/script/sql/update/update_2.4.0-2.5.0.sql b/script/sql/update/update_2.4.0-2.5.0.sql new file mode 100644 index 000000000..7f8d072f9 --- /dev/null +++ b/script/sql/update/update_2.4.0-2.5.0.sql @@ -0,0 +1,28 @@ +-- ry-workflow 数据库 +CREATE TABLE flow_spel ( + id bigint(20) NOT NULL COMMENT '主键id', + component_name varchar(255) DEFAULT NULL COMMENT '组件名称', + method_name varchar(255) DEFAULT NULL COMMENT '方法名', + method_params varchar(255) DEFAULT NULL COMMENT '参数', + view_spel varchar(255) DEFAULT NULL COMMENT '预览spel表达式', + remark varchar(255) DEFAULT NULL COMMENT '备注', + status char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + del_flag char(1) DEFAULT '0' COMMENT '删除标志', + create_dept bigint(20) DEFAULT NULL COMMENT '创建部门', + create_by bigint(20) DEFAULT NULL COMMENT '创建者', + create_time datetime DEFAULT NULL COMMENT '创建时间', + update_by bigint(20) DEFAULT NULL COMMENT '更新者', + update_time datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (id) +) ENGINE = InnoDB COMMENT='流程spel表达式定义表'; + +INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'initiatorDeptId', '#{@spelRuleComponent.selectDeptLeaderById(#initiatorDeptId)}', '根据部门id获取部门负责人', '0', '0', 103, 1, sysdate(), 1, sysdate()); +INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, sysdate(), 1, sysdate()); + +-- ry-cloud 数据库 +INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', '2', 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, sysdate(), 1, sysdate(), '流程达式定义菜单'); +INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, sysdate(), NULL, NULL, ''); -- Gitee From b77152357f2ab392e86d6fb730b7e068f6415422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 7 Jul 2025 09:15:58 +0800 Subject: [PATCH 022/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E5=B7=A5=E4=BD=9C=E6=B5=81=E5=8A=A8=E6=80=81=E5=90=AF?= =?UTF-8?q?=E7=94=A8=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/workflow/controller/FlwSpelController.java | 2 ++ .../main/java/org/dromara/workflow/rule/SpelRuleComponent.java | 2 ++ .../org/dromara/workflow/service/impl/FlwSpelServiceImpl.java | 2 ++ 3 files changed, 6 insertions(+) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java index 84936a5f4..2ef393e72 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java @@ -15,6 +15,7 @@ import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; +import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.domain.bo.FlowSpelBo; import org.dromara.workflow.domain.vo.FlowSpelVo; import org.dromara.workflow.service.IFlwSpelService; @@ -29,6 +30,7 @@ import java.util.List; * @author Michelle.Chung * @date 2025-07-04 */ +@ConditionalOnEnable @Validated @RequiredArgsConstructor @RestController diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/rule/SpelRuleComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/rule/SpelRuleComponent.java index 17e964ba3..f9860ed68 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/rule/SpelRuleComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/rule/SpelRuleComponent.java @@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.exception.ServiceException; import org.dromara.system.api.RemoteDeptService; +import org.dromara.workflow.common.ConditionalOnEnable; import org.springframework.stereotype.Component; /** @@ -15,6 +16,7 @@ import org.springframework.stereotype.Component; * * @author Michelle.Chung */ +@ConditionalOnEnable @Slf4j @Component @RequiredArgsConstructor diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java index 3ded4aee1..7441beb91 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java @@ -12,6 +12,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.system.api.domain.bo.RemoteTaskAssigneeBo; import org.dromara.system.api.domain.vo.RemoteTaskAssigneeVo; +import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.domain.FlowSpel; import org.dromara.workflow.domain.bo.FlowSpelBo; import org.dromara.workflow.domain.vo.FlowSpelVo; @@ -29,6 +30,7 @@ import java.util.Map; * @author Michelle.Chung * @date 2025-07-04 */ +@ConditionalOnEnable @Slf4j @RequiredArgsConstructor @Service -- Gitee From 7141e855bb09198ffee510e3047c503cf97e0831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 7 Jul 2025 09:18:42 +0800 Subject: [PATCH 023/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20SpEL?= =?UTF-8?q?=E8=A1=A8=E8=BE=BE=E5=BC=8F=E5=9B=9E=E6=98=BE=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/enums/TaskAssigneeEnum.java | 2 +- .../workflow/service/IFlwSpelService.java | 20 +++++- .../service/impl/FlwSpelServiceImpl.java | 65 +++++++++++++------ 3 files changed, 64 insertions(+), 23 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java index c86e73e42..c604f97e7 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java @@ -40,7 +40,7 @@ public enum TaskAssigneeEnum { /** * SPEL表达式 */ - SPEL("SPEL表达式", ""); + SPEL("SpEL表达式", ""); private final String desc; private final String code; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwSpelService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwSpelService.java index 108824728..26ca38dec 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwSpelService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwSpelService.java @@ -9,6 +9,7 @@ import org.dromara.workflow.domain.vo.FlowSpelVo; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 流程spel达式定义Service接口 @@ -18,8 +19,6 @@ import java.util.List; */ public interface IFlwSpelService { - RemoteTaskAssigneeVo selectSpelByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery); - /** * 查询流程spel达式定义 * @@ -69,4 +68,21 @@ public interface IFlwSpelService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 查询spel并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + RemoteTaskAssigneeVo selectSpelByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery); + + /** + * 根据视图 SpEL 表达式列表,查询对应的备注信息 + * + * @param viewSpels SpEL 表达式列表 + * @return 映射表:key 为 SpEL 表达式,value 为对应备注;若为空则返回空 Map + */ + Map selectRemarksBySpels(List viewSpels); + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java index 7441beb91..7ecbbfdfe 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.workflow.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -7,6 +8,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -21,6 +23,7 @@ import org.dromara.workflow.service.IFlwSpelService; import org.springframework.stereotype.Service; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -38,26 +41,6 @@ public class FlwSpelServiceImpl implements IFlwSpelService { private final FlwSpelMapper baseMapper; - /** - * 查询流程spel达式定义列表 - */ - @Override - public RemoteTaskAssigneeVo selectSpelByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery) { - PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); - FlowSpelBo bo = new FlowSpelBo(); - bo.setViewSpel(taskQuery.getHandlerCode()); - bo.setRemark(taskQuery.getHandlerName()); - bo.setStatus(SystemConstants.NORMAL); - Map params = bo.getParams(); - params.put("beginTime", taskQuery.getBeginTime()); - params.put("endTime", taskQuery.getEndTime()); - TableDataInfo page = this.queryPageList(bo, pageQuery); - // 使用封装的字段映射方法进行转换 - List handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(), - FlowSpelVo::getViewSpel, c -> "", FlowSpelVo::getRemark, null, FlowSpelVo::getCreateTime); - return new RemoteTaskAssigneeVo(page.getTotal(), handlers); - } - /** * 查询流程spel达式定义 * @@ -159,4 +142,46 @@ public class FlwSpelServiceImpl implements IFlwSpelService { } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 查询spel并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + @Override + public RemoteTaskAssigneeVo selectSpelByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery) { + PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); + FlowSpelBo bo = new FlowSpelBo(); + bo.setViewSpel(taskQuery.getHandlerCode()); + bo.setRemark(taskQuery.getHandlerName()); + bo.setStatus(SystemConstants.NORMAL); + Map params = bo.getParams(); + params.put("beginTime", taskQuery.getBeginTime()); + params.put("endTime", taskQuery.getEndTime()); + TableDataInfo page = this.queryPageList(bo, pageQuery); + // 使用封装的字段映射方法进行转换 + List handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(), + FlowSpelVo::getViewSpel, c -> "", FlowSpelVo::getRemark, null, FlowSpelVo::getCreateTime); + return new RemoteTaskAssigneeVo(page.getTotal(), handlers); + } + + /** + * 根据视图 SpEL 表达式列表,查询对应的备注信息 + * + * @param viewSpels SpEL 表达式列表 + * @return 映射表:key 为 SpEL 表达式,value 为对应备注;若为空则返回空 Map + */ + @Override + public Map selectRemarksBySpels(List viewSpels) { + if (CollUtil.isEmpty(viewSpels)) { + return Collections.emptyMap(); + } + List list = baseMapper.selectList( + new LambdaQueryWrapper() + .select(FlowSpel::getViewSpel, FlowSpel::getRemark) + ); + return StreamUtils.toMap(list, FlowSpel::getViewSpel, FlowSpel::getRemark); + } + } -- Gitee From beb7c55757b5b9dce9715797e7b437cf10561f5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 7 Jul 2025 09:20:03 +0800 Subject: [PATCH 024/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E7=A7=9F?= =?UTF-8?q?=E6=88=B7=E5=AD=97=E5=85=B8=E5=90=8C=E6=AD=A5=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=B9=B6=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SysTenantServiceImpl.java | 103 ++++++++++-------- 1 file changed, 59 insertions(+), 44 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java index 67d708c51..1bc4ef4c7 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java @@ -412,68 +412,83 @@ public class SysTenantServiceImpl implements ISysTenantService { dictTypeList.addAll(dictTypeMapper.selectList()); dictDataList.addAll(dictDataMapper.selectList()); }); - Map> typeMap = StreamUtils.groupByKey(dictTypeList, TenantEntity::getTenantId); - Map>> typeDataMap = StreamUtils.groupBy2Key( - dictDataList, TenantEntity::getTenantId, SysDictData::getDictType); - // 管理租户字典数据 - List defaultTypeMap = typeMap.get(TenantConstants.DEFAULT_TENANT_ID); - Map> defaultTypeDataMap = typeDataMap.get(TenantConstants.DEFAULT_TENANT_ID); + // 所有租户字典类型 + Map> dictTypeMap = StreamUtils.groupByKey(dictTypeList, TenantEntity::getTenantId); + // 所有租户字典数据 + Map>> dictDataMap = StreamUtils.groupBy2Key(dictDataList, TenantEntity::getTenantId, SysDictData::getDictType); + + // 默认租户字典类型列表 + List defaultDictTypeList = dictTypeMap.get(TenantConstants.DEFAULT_TENANT_ID); + // 默认租户字典数据 + Map> defaultDictDataMap = dictDataMap.get(TenantConstants.DEFAULT_TENANT_ID); // 获取所有租户编号 List tenantIds = baseMapper.selectObjs( new LambdaQueryWrapper().select(SysTenant::getTenantId) - .eq(SysTenant::getStatus, SystemConstants.NORMAL), x -> {return Convert.toStr(x);}); + .eq(SysTenant::getStatus, SystemConstants.NORMAL), x -> { + return Convert.toStr(x); + }); + // 待入库的字典类型和字典数据 List saveTypeList = new ArrayList<>(); List saveDataList = new ArrayList<>(); - Set set = new HashSet<>(); + // 待同步的租户编号(用于清除对于租户的字典缓存) + Set syncTenantIds = new HashSet<>(); + // 循环所有租户,处理需要同步的数据 for (String tenantId : tenantIds) { + // 排除默认租户 if (TenantConstants.DEFAULT_TENANT_ID.equals(tenantId)) { continue; } - for (SysDictType dictType : defaultTypeMap) { - List typeList = StreamUtils.toList(typeMap.get(tenantId), SysDictType::getDictType); - List dataList = defaultTypeDataMap.get(dictType.getDictType()); + // 根据默认租户的字典类型进行数据同步 + for (SysDictType dictType : defaultDictTypeList) { + // 获取当前租户的字典类型列表 + List typeList = StreamUtils.toList(dictTypeMap.get(tenantId), SysDictType::getDictType); + // 根据字典类型获取默认租户的字典数据 + List defaultDictDataList = defaultDictDataMap.get(dictType.getDictType()); + // 排除不需要同步的字典数据 + Set excludeDictDataSet = CollUtil.newHashSet(); + // 处理 存在type不存在data 的情况 if (typeList.contains(dictType.getDictType())) { - List dataListTenant = typeDataMap.get(tenantId).get(dictType.getDictType()); - Map map = StreamUtils.toIdentityMap(dataListTenant, SysDictData::getDictValue); - for (SysDictData dictData : dataList) { - if (!map.containsKey(dictData.getDictValue())) { - SysDictData data = BeanUtil.toBean(dictData, SysDictData.class); - // 设置字典编码为 null - data.setDictCode(null); - data.setTenantId(tenantId); - data.setCreateTime(null); - data.setUpdateTime(null); - data.setCreateDept(null); - data.setCreateBy(null); - data.setUpdateBy(null); - set.add(tenantId); - saveDataList.add(data); - } - } + // 获取租户字典数据 + Optional.ofNullable(dictDataMap.get(tenantId)) + // 获取租户当前字典类型的字典数据 + .map(tenantDictDataMap -> tenantDictDataMap.get(dictType.getDictType())) + // 保存字典数据项的字典键值,用于判断数据是否需要同步 + .map(data -> StreamUtils.toSet(data, SysDictData::getDictValue)) + // 添加到排除集合中 + .ifPresent(excludeDictDataSet::addAll); } else { + // 同步字典类型 SysDictType type = BeanUtil.toBean(dictType, SysDictType.class); type.setDictId(null); type.setTenantId(tenantId); type.setCreateTime(null); type.setUpdateTime(null); - type.setCreateDept(null); - type.setCreateBy(null); - type.setUpdateBy(null); - set.add(tenantId); + syncTenantIds.add(tenantId); saveTypeList.add(type); - if (CollUtil.isNotEmpty(dataList)) { - // 筛选出 dictType 对应的 data - for (SysDictData dictData : dataList) { - SysDictData data = BeanUtil.toBean(dictData, SysDictData.class); - // 设置字典编码为 null - data.setDictCode(null); - data.setTenantId(tenantId); - data.setCreateTime(null); - data.setUpdateTime(null); - set.add(tenantId); - saveDataList.add(data); + } + + // 默认租户字典数据不为空再去处理 + if (CollUtil.isNotEmpty(defaultDictDataList)) { + // 提前优化排除判断if条件语句,对于 && 并联条件,该优化可以避免不必要的 excludeDictDataSet.contains() 函数调用 + boolean isExclude = CollUtil.isNotEmpty(excludeDictDataSet); + // 筛选出 dictType 对应的 data + for (SysDictData dictData : defaultDictDataList) { + // 排除不需要同步的字典数据 + if (isExclude && excludeDictDataSet.contains(dictData.getDictValue())) { + continue; } + SysDictData data = BeanUtil.toBean(dictData, SysDictData.class); + // 设置字典编码为 null + data.setDictCode(null); + data.setTenantId(tenantId); + data.setCreateTime(null); + data.setUpdateTime(null); + data.setCreateDept(null); + data.setCreateBy(null); + data.setUpdateBy(null); + syncTenantIds.add(tenantId); + saveDataList.add(data); } } } @@ -486,7 +501,7 @@ public class SysTenantServiceImpl implements ISysTenantService { dictDataMapper.insertBatch(saveDataList); } }); - for (String tenantId : set) { + for (String tenantId : syncTenantIds) { TenantHelper.dynamic(tenantId, () -> CacheUtils.clear(CacheNames.SYS_DICT)); } } -- Gitee From d48bbab086db2b1c75bcc74219cecd1239565dcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 7 Jul 2025 09:29:30 +0800 Subject: [PATCH 025/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E9=98=B2=E9=87=8D=E5=92=8C=E5=8A=A0=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/ruoyi-gen/pom.xml | 5 +++++ .../java/org/dromara/gen/controller/GenController.java | 6 ++++++ ruoyi-modules/ruoyi-resource/pom.xml | 5 +++++ .../resource/controller/SysOssConfigController.java | 10 ++++++---- .../controller/monitor/SysLogininforController.java | 4 ++++ .../controller/monitor/SysOperlogController.java | 2 ++ .../controller/monitor/SysUserOnlineController.java | 3 +++ .../system/controller/system/SysConfigController.java | 4 ++++ .../system/controller/system/SysDeptController.java | 3 +++ .../controller/system/SysDictDataController.java | 3 +++ .../controller/system/SysDictTypeController.java | 4 ++++ .../system/controller/system/SysMenuController.java | 3 +++ .../system/controller/system/SysNoticeController.java | 3 +++ .../system/controller/system/SysPostController.java | 3 +++ .../system/controller/system/SysRoleController.java | 8 ++++++++ .../system/controller/system/SysTenantController.java | 3 +++ .../controller/system/SysTenantPackageController.java | 1 + .../system/controller/system/SysUserController.java | 6 ++++++ 18 files changed, 72 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/ruoyi-gen/pom.xml b/ruoyi-modules/ruoyi-gen/pom.xml index 997aaa99b..316848d53 100644 --- a/ruoyi-modules/ruoyi-gen/pom.xml +++ b/ruoyi-modules/ruoyi-gen/pom.xml @@ -34,6 +34,11 @@ ruoyi-common-log + + org.dromara + ruoyi-common-idempotent + + org.dromara ruoyi-common-doc diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/controller/GenController.java b/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/controller/GenController.java index 160374945..06610ce2f 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/controller/GenController.java +++ b/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/controller/GenController.java @@ -3,9 +3,11 @@ package org.dromara.gen.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.convert.Convert; import cn.hutool.core.io.IoUtil; +import com.baomidou.lock.annotation.Lock4j; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; @@ -50,6 +52,7 @@ public class GenController extends BaseController { * * @param tableId 表ID */ + @RepeatSubmit() @SaCheckPermission("tool:gen:query") @GetMapping(value = "/{tableId}") public R> getInfo(@PathVariable Long tableId) { @@ -89,6 +92,7 @@ public class GenController extends BaseController { * * @param tables 表名串 */ + @RepeatSubmit() @SaCheckPermission("tool:gen:import") @Log(title = "代码生成", businessType = BusinessType.IMPORT) @PostMapping("/importTable") @@ -103,6 +107,7 @@ public class GenController extends BaseController { /** * 修改保存代码生成业务 */ + @RepeatSubmit() @SaCheckPermission("tool:gen:edit") @Log(title = "代码生成", businessType = BusinessType.UPDATE) @PutMapping @@ -170,6 +175,7 @@ public class GenController extends BaseController { */ @SaCheckPermission("tool:gen:edit") @Log(title = "代码生成", businessType = BusinessType.UPDATE) + @Lock4j @GetMapping("/synchDb/{tableId}") public R synchDb(@PathVariable("tableId") Long tableId) { genTableService.synchDb(tableId); diff --git a/ruoyi-modules/ruoyi-resource/pom.xml b/ruoyi-modules/ruoyi-resource/pom.xml index 90e4b66eb..245de01ca 100644 --- a/ruoyi-modules/ruoyi-resource/pom.xml +++ b/ruoyi-modules/ruoyi-resource/pom.xml @@ -52,6 +52,11 @@ ruoyi-common-log + + org.dromara + ruoyi-common-idempotent + + org.dromara ruoyi-common-oss diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssConfigController.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssConfigController.java index 506cdb7bb..268cc8222 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssConfigController.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssConfigController.java @@ -1,24 +1,25 @@ package org.dromara.resource.controller; import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.core.validate.QueryGroup; -import org.dromara.common.web.core.BaseController; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; import org.dromara.resource.domain.bo.SysOssConfigBo; import org.dromara.resource.domain.vo.SysOssConfigVo; import org.dromara.resource.service.ISysOssConfigService; -import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; import java.util.Arrays; /** @@ -93,6 +94,7 @@ public class SysOssConfigController extends BaseController { */ @SaCheckPermission("system:ossConfig:edit") @Log(title = "对象存储状态修改", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping("/changeStatus") public R changeStatus(@RequestBody SysOssConfigBo bo) { return toAjax(iSysOssConfigService.updateOssConfigStatus(bo)); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysLogininforController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysLogininforController.java index 2e88bb7ab..ad8f986a7 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysLogininforController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysLogininforController.java @@ -1,11 +1,13 @@ package org.dromara.system.controller.monitor; import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.lock.annotation.Lock4j; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheConstants; import org.dromara.common.core.domain.R; import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; @@ -69,6 +71,7 @@ public class SysLogininforController extends BaseController { */ @SaCheckPermission("monitor:logininfor:remove") @Log(title = "登录日志", businessType = BusinessType.CLEAN) + @Lock4j @DeleteMapping("/clean") public R clean() { logininforService.cleanLogininfor(); @@ -77,6 +80,7 @@ public class SysLogininforController extends BaseController { @SaCheckPermission("monitor:logininfor:unlock") @Log(title = "账户解锁", businessType = BusinessType.OTHER) + @RepeatSubmit() @GetMapping("/unlock/{userName}") public R unlock(@PathVariable("userName") String userName) { String loginName = CacheConstants.PWD_ERR_CNT_KEY + userName; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysOperlogController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysOperlogController.java index 5af1a01ae..10dabbb0f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysOperlogController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysOperlogController.java @@ -1,6 +1,7 @@ package org.dromara.system.controller.monitor; import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.lock.annotation.Lock4j; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.web.core.BaseController; @@ -67,6 +68,7 @@ public class SysOperlogController extends BaseController { */ @SaCheckPermission("monitor:operlog:remove") @Log(title = "操作日志", businessType = BusinessType.CLEAN) + @Lock4j @DeleteMapping("/clean") public R clean() { operLogService.cleanOperLog(); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java index f0cd5cf35..b8d3283ee 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java @@ -9,6 +9,7 @@ import org.dromara.common.core.constant.CacheConstants; import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.web.core.BaseController; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; @@ -80,6 +81,7 @@ public class SysUserOnlineController extends BaseController { */ @SaCheckPermission("monitor:online:forceLogout") @Log(title = "在线用户", businessType = BusinessType.FORCE) + @RepeatSubmit() @DeleteMapping("/{tokenId}") public R forceLogout(@PathVariable String tokenId) { try { @@ -113,6 +115,7 @@ public class SysUserOnlineController extends BaseController { * @param tokenId token值 */ @Log(title = "在线设备", businessType = BusinessType.FORCE) + @RepeatSubmit() @DeleteMapping("/myself/{tokenId}") public R remove(@PathVariable("tokenId") String tokenId) { try { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysConfigController.java index 1427833bd..a8406802e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysConfigController.java @@ -3,6 +3,7 @@ package org.dromara.system.controller.system; import cn.dev33.satoken.annotation.SaCheckPermission; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.web.core.BaseController; import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.log.annotation.Log; @@ -79,6 +80,7 @@ public class SysConfigController extends BaseController { */ @SaCheckPermission("system:config:add") @Log(title = "参数管理", businessType = BusinessType.INSERT) + @RepeatSubmit() @PostMapping public R add(@Validated @RequestBody SysConfigBo config) { if (!configService.checkConfigKeyUnique(config)) { @@ -93,6 +95,7 @@ public class SysConfigController extends BaseController { */ @SaCheckPermission("system:config:edit") @Log(title = "参数管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping public R edit(@Validated @RequestBody SysConfigBo config) { if (!configService.checkConfigKeyUnique(config)) { @@ -107,6 +110,7 @@ public class SysConfigController extends BaseController { */ @SaCheckPermission("system:config:edit") @Log(title = "参数管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping("/updateByKey") public R updateByKey(@RequestBody SysConfigBo config) { configService.updateConfig(config); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java index e69990735..c88aa6d30 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java @@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.web.core.BaseController; @@ -73,6 +74,7 @@ public class SysDeptController extends BaseController { */ @SaCheckPermission("system:dept:add") @Log(title = "部门管理", businessType = BusinessType.INSERT) + @RepeatSubmit() @PostMapping public R add(@Validated @RequestBody SysDeptBo dept) { if (!deptService.checkDeptNameUnique(dept)) { @@ -86,6 +88,7 @@ public class SysDeptController extends BaseController { */ @SaCheckPermission("system:dept:edit") @Log(title = "部门管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping public R edit(@Validated @RequestBody SysDeptBo dept) { Long deptId = dept.getDeptId(); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java index ae70e35a3..339f79c3a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java @@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.web.core.BaseController; import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.log.annotation.Log; @@ -86,6 +87,7 @@ public class SysDictDataController extends BaseController { */ @SaCheckPermission("system:dict:add") @Log(title = "字典数据", businessType = BusinessType.INSERT) + @RepeatSubmit() @PostMapping public R add(@Validated @RequestBody SysDictDataBo dict) { if (!dictDataService.checkDictDataUnique(dict)) { @@ -100,6 +102,7 @@ public class SysDictDataController extends BaseController { */ @SaCheckPermission("system:dict:edit") @Log(title = "字典数据", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping public R edit(@Validated @RequestBody SysDictDataBo dict) { if (!dictDataService.checkDictDataUnique(dict)) { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictTypeController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictTypeController.java index 2fe3d3b43..e5cb61f4c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictTypeController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictTypeController.java @@ -3,6 +3,7 @@ package org.dromara.system.controller.system; import cn.dev33.satoken.annotation.SaCheckPermission; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.web.core.BaseController; import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.log.annotation.Log; @@ -69,6 +70,7 @@ public class SysDictTypeController extends BaseController { */ @SaCheckPermission("system:dict:add") @Log(title = "字典类型", businessType = BusinessType.INSERT) + @RepeatSubmit() @PostMapping public R add(@Validated @RequestBody SysDictTypeBo dict) { if (!dictTypeService.checkDictTypeUnique(dict)) { @@ -83,6 +85,7 @@ public class SysDictTypeController extends BaseController { */ @SaCheckPermission("system:dict:edit") @Log(title = "字典类型", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping public R edit(@Validated @RequestBody SysDictTypeBo dict) { if (!dictTypeService.checkDictTypeUnique(dict)) { @@ -110,6 +113,7 @@ public class SysDictTypeController extends BaseController { */ @SaCheckPermission("system:dict:remove") @Log(title = "字典类型", businessType = BusinessType.CLEAN) + @RepeatSubmit() @DeleteMapping("/refreshCache") public R refreshCache() { dictTypeService.resetDictCache(); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java index 29d33601e..247e97dce 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java @@ -9,6 +9,7 @@ import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.constant.TenantConstants; import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.satoken.utils.LoginHelper; @@ -129,6 +130,7 @@ public class SysMenuController extends BaseController { @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @SaCheckPermission("system:menu:add") @Log(title = "菜单管理", businessType = BusinessType.INSERT) + @RepeatSubmit() @PostMapping public R add(@Validated @RequestBody SysMenuBo menu) { if (!menuService.checkMenuNameUnique(menu)) { @@ -145,6 +147,7 @@ public class SysMenuController extends BaseController { @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @SaCheckPermission("system:menu:edit") @Log(title = "菜单管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping public R edit(@Validated @RequestBody SysMenuBo menu) { if (!menuService.checkMenuNameUnique(menu)) { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysNoticeController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysNoticeController.java index 0ef6d68a5..c7a3e6dae 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysNoticeController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysNoticeController.java @@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.domain.R; import org.dromara.common.core.service.DictService; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.web.core.BaseController; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; @@ -59,6 +60,7 @@ public class SysNoticeController extends BaseController { */ @SaCheckPermission("system:notice:add") @Log(title = "通知公告", businessType = BusinessType.INSERT) + @RepeatSubmit() @PostMapping public R add(@Validated @RequestBody SysNoticeBo notice) { int rows = noticeService.insertNotice(notice); @@ -75,6 +77,7 @@ public class SysNoticeController extends BaseController { */ @SaCheckPermission("system:notice:edit") @Log(title = "通知公告", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping public R edit(@Validated @RequestBody SysNoticeBo notice) { return toAjax(noticeService.updateNotice(notice)); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java index 2fff60287..2b488222f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.domain.R; import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; @@ -71,6 +72,7 @@ public class SysPostController extends BaseController { */ @SaCheckPermission("system:post:add") @Log(title = "岗位管理", businessType = BusinessType.INSERT) + @RepeatSubmit() @PostMapping public R add(@Validated @RequestBody SysPostBo post) { if (!postService.checkPostNameUnique(post)) { @@ -86,6 +88,7 @@ public class SysPostController extends BaseController { */ @SaCheckPermission("system:post:edit") @Log(title = "岗位管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping public R edit(@Validated @RequestBody SysPostBo post) { if (!postService.checkPostNameUnique(post)) { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java index 24e172142..d222a12a3 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java @@ -6,6 +6,7 @@ import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; @@ -77,6 +78,7 @@ public class SysRoleController extends BaseController { */ @SaCheckPermission("system:role:add") @Log(title = "角色管理", businessType = BusinessType.INSERT) + @RepeatSubmit() @PostMapping public R add(@Validated @RequestBody SysRoleBo role) { roleService.checkRoleAllowed(role); @@ -94,6 +96,7 @@ public class SysRoleController extends BaseController { */ @SaCheckPermission("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping public R edit(@Validated @RequestBody SysRoleBo role) { roleService.checkRoleAllowed(role); @@ -116,6 +119,7 @@ public class SysRoleController extends BaseController { */ @SaCheckPermission("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping("/dataScope") public R dataScope(@RequestBody SysRoleBo role) { roleService.checkRoleAllowed(role); @@ -128,6 +132,7 @@ public class SysRoleController extends BaseController { */ @SaCheckPermission("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping("/changeStatus") public R changeStatus(@RequestBody SysRoleBo role) { roleService.checkRoleAllowed(role); @@ -181,6 +186,7 @@ public class SysRoleController extends BaseController { */ @SaCheckPermission("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.GRANT) + @RepeatSubmit() @PutMapping("/authUser/cancel") public R cancelAuthUser(@RequestBody SysUserRole userRole) { return toAjax(roleService.deleteAuthUser(userRole)); @@ -194,6 +200,7 @@ public class SysRoleController extends BaseController { */ @SaCheckPermission("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.GRANT) + @RepeatSubmit() @PutMapping("/authUser/cancelAll") public R cancelAuthUserAll(Long roleId, Long[] userIds) { return toAjax(roleService.deleteAuthUsers(roleId, userIds)); @@ -207,6 +214,7 @@ public class SysRoleController extends BaseController { */ @SaCheckPermission("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.GRANT) + @RepeatSubmit() @PutMapping("/authUser/selectAll") public R selectAuthUserAll(Long roleId, Long[] userIds) { roleService.checkRoleDataScope(roleId); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java index 48e4b7cb2..151ca3ce5 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java @@ -119,6 +119,7 @@ public class SysTenantController extends BaseController { @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @SaCheckPermission("system:tenant:edit") @Log(title = "租户管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping("/changeStatus") public R changeStatus(@RequestBody SysTenantBo bo) { tenantService.checkTenantAllowed(bo.getTenantId()); @@ -171,6 +172,7 @@ public class SysTenantController extends BaseController { @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @SaCheckPermission("system:tenant:edit") @Log(title = "租户管理", businessType = BusinessType.UPDATE) + @Lock4j @GetMapping("/syncTenantPackage") public R syncTenantPackage(@NotBlank(message = "租户ID不能为空") String tenantId, @NotNull(message = "套餐ID不能为空") Long packageId) { @@ -182,6 +184,7 @@ public class SysTenantController extends BaseController { */ @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @Log(title = "租户管理", businessType = BusinessType.INSERT) + @Lock4j @GetMapping("/syncTenantDict") public R syncTenantDict() { if (!TenantHelper.isEnable()) { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantPackageController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantPackageController.java index 0b22db5a7..73436e868 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantPackageController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantPackageController.java @@ -122,6 +122,7 @@ public class SysTenantPackageController extends BaseController { @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @SaCheckPermission("system:tenantPackage:edit") @Log(title = "租户套餐", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping("/changeStatus") public R changeStatus(@RequestBody SysTenantPackageBo bo) { return toAjax(tenantPackageService.updatePackageStatus(bo)); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java index 049d55238..51e7b9479 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java @@ -15,6 +15,7 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.encrypt.annotation.ApiEncrypt; import org.dromara.common.excel.core.ExcelResult; import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; @@ -155,6 +156,7 @@ public class SysUserController extends BaseController { */ @SaCheckPermission("system:user:add") @Log(title = "用户管理", businessType = BusinessType.INSERT) + @RepeatSubmit() @PostMapping public R add(@Validated @RequestBody SysUserBo user) { deptService.checkDeptDataScope(user.getDeptId()); @@ -179,6 +181,7 @@ public class SysUserController extends BaseController { */ @SaCheckPermission("system:user:edit") @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping public R edit(@Validated @RequestBody SysUserBo user) { userService.checkUserAllowed(user.getUserId()); @@ -228,6 +231,7 @@ public class SysUserController extends BaseController { @ApiEncrypt @SaCheckPermission("system:user:resetPwd") @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping("/resetPwd") public R resetPwd(@RequestBody SysUserBo user) { userService.checkUserAllowed(user.getUserId()); @@ -241,6 +245,7 @@ public class SysUserController extends BaseController { */ @SaCheckPermission("system:user:edit") @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() @PutMapping("/changeStatus") public R changeStatus(@RequestBody SysUserBo user) { userService.checkUserAllowed(user.getUserId()); @@ -273,6 +278,7 @@ public class SysUserController extends BaseController { */ @SaCheckPermission("system:user:edit") @Log(title = "用户管理", businessType = BusinessType.GRANT) + @RepeatSubmit() @PutMapping("/authRole") public R insertAuthRole(Long userId, Long[] roleIds) { userService.checkUserDataScope(userId); -- Gitee From 1a6460bcc35b60905b0f8e7ef5dc4dbd13f0bd46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 7 Jul 2025 15:28:28 +0800 Subject: [PATCH 026/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=97=A0=E7=94=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/controller/FlwSpelController.java | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java index 2ef393e72..a63574406 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java @@ -1,14 +1,12 @@ package org.dromara.workflow.controller; import cn.dev33.satoken.annotation.SaCheckPermission; -import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; -import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; @@ -48,17 +46,6 @@ public class FlwSpelController extends BaseController { return flwSpelService.queryPageList(bo, pageQuery); } - /** - * 导出流程spel达式定义列表 - */ - @SaCheckPermission("workflow:spel:export") - @Log(title = "流程spel达式定义", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(FlowSpelBo bo, HttpServletResponse response) { - List list = flwSpelService.queryList(bo); - ExcelUtil.exportExcel(list, "流程spel达式定义", FlowSpelVo.class, response); - } - /** * 获取流程spel达式定义详细信息 * -- Gitee From 28daad748da8a0ac0da2bbdcf3bafadfdc77c277 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 7 Jul 2025 15:29:37 +0800 Subject: [PATCH 027/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20sql?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8F=B7=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oracle/{update_2.4.0-2.5.0.sql => update_2.4.1-2.5.0.sql} | 0 .../postgres/{update_2.4.0-2.5.0.sql => update_2.4.1-2.5.0.sql} | 0 .../sql/update/{update_2.4.0-2.5.0.sql => update_2.4.1-2.5.0.sql} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename script/sql/update/oracle/{update_2.4.0-2.5.0.sql => update_2.4.1-2.5.0.sql} (100%) rename script/sql/update/postgres/{update_2.4.0-2.5.0.sql => update_2.4.1-2.5.0.sql} (100%) rename script/sql/update/{update_2.4.0-2.5.0.sql => update_2.4.1-2.5.0.sql} (100%) diff --git a/script/sql/update/oracle/update_2.4.0-2.5.0.sql b/script/sql/update/oracle/update_2.4.1-2.5.0.sql similarity index 100% rename from script/sql/update/oracle/update_2.4.0-2.5.0.sql rename to script/sql/update/oracle/update_2.4.1-2.5.0.sql diff --git a/script/sql/update/postgres/update_2.4.0-2.5.0.sql b/script/sql/update/postgres/update_2.4.1-2.5.0.sql similarity index 100% rename from script/sql/update/postgres/update_2.4.0-2.5.0.sql rename to script/sql/update/postgres/update_2.4.1-2.5.0.sql diff --git a/script/sql/update/update_2.4.0-2.5.0.sql b/script/sql/update/update_2.4.1-2.5.0.sql similarity index 100% rename from script/sql/update/update_2.4.0-2.5.0.sql rename to script/sql/update/update_2.4.1-2.5.0.sql -- Gitee From 999203665ad500dee0d8bbd12209dbe93f316a46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 7 Jul 2025 15:46:07 +0800 Subject: [PATCH 028/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20sse=20?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=A0=A1=E9=AA=8C=20=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E5=A4=A7=E9=87=8F=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/sse/controller/SseController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java index 9821db673..b1c3e272c 100644 --- a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java +++ b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java @@ -29,7 +29,9 @@ public class SseController implements DisposableBean { */ @GetMapping(value = "${sse.path}", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public SseEmitter connect() { - StpUtil.checkLogin(); + if (!StpUtil.isLogin()) { + return null; + } String tokenValue = StpUtil.getTokenValue(); Long userId = LoginHelper.getUserId(); return sseEmitterManager.connect(userId, tokenValue); -- Gitee From 066d48f7b3c6fea651c5e577b20574bf7f59d104 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 8 Jul 2025 14:34:30 +0800 Subject: [PATCH 029/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20satokenDao?= =?UTF-8?q?=20=E6=97=A0=E6=B3=95=E6=9B=B4=E6=96=B0=E5=B7=B2=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E6=95=B0=E6=8D=AE=E7=9A=84ttl=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/satoken/core/dao/PlusSaTokenDao.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/dao/PlusSaTokenDao.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/dao/PlusSaTokenDao.java index 46c61c4c8..cd4c5e4aa 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/dao/PlusSaTokenDao.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/dao/PlusSaTokenDao.java @@ -53,11 +53,7 @@ public class PlusSaTokenDao implements SaTokenDaoBySessionFollowObject { if (timeout == NEVER_EXPIRE) { RedisUtils.setCacheObject(key, value); } else { - if (RedisUtils.hasKey(key)) { - RedisUtils.setCacheObject(key, value, true); - } else { - RedisUtils.setCacheObject(key, value, Duration.ofSeconds(timeout)); - } + RedisUtils.setCacheObject(key, value, Duration.ofSeconds(timeout)); } CAFFEINE.invalidate(key); } @@ -134,11 +130,7 @@ public class PlusSaTokenDao implements SaTokenDaoBySessionFollowObject { if (timeout == NEVER_EXPIRE) { RedisUtils.setCacheObject(key, object); } else { - if (RedisUtils.hasKey(key)) { - RedisUtils.setCacheObject(key, object, true); - } else { - RedisUtils.setCacheObject(key, object, Duration.ofSeconds(timeout)); - } + RedisUtils.setCacheObject(key, object, Duration.ofSeconds(timeout)); } CAFFEINE.invalidate(key); } -- Gitee From 38feed5469d9bf8f1e62d2393ce821c7746ddf07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 8 Jul 2025 17:50:41 +0800 Subject: [PATCH 030/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20SpEL?= =?UTF-8?q?=E8=A1=A8=E8=BE=BE=E5=BC=8F=E5=9B=9E=E6=98=BE=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/workflow/service/impl/FlwSpelServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java index 7ecbbfdfe..2a45f8eb5 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java @@ -180,6 +180,7 @@ public class FlwSpelServiceImpl implements IFlwSpelService { List list = baseMapper.selectList( new LambdaQueryWrapper() .select(FlowSpel::getViewSpel, FlowSpel::getRemark) + .in(FlowSpel::getViewSpel, viewSpels) ); return StreamUtils.toMap(list, FlowSpel::getViewSpel, FlowSpel::getRemark); } -- Gitee From b54bece04d471badde7ea44d8699f1063347032b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 8 Jul 2025 18:16:55 +0800 Subject: [PATCH 031/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=88=86=E7=B1=BB=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/common/enums/TaskStatusEnum.java | 10 +++++++ .../controller/FlwCategoryController.java | 2 -- .../listener/WorkflowGlobalListener.java | 6 ++--- .../workflow/mapper/FlwCategoryMapper.java | 15 ----------- .../workflow/service/IFlwCategoryService.java | 7 ----- .../service/impl/FlwCategoryServiceImpl.java | 27 +++++-------------- 6 files changed, 19 insertions(+), 48 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java index d18ebb01d..c7bced890 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java @@ -100,5 +100,15 @@ public enum TaskStatusEnum { return STATUS_DESC_MAP.getOrDefault(status, StrUtil.EMPTY); } + /** + * 判断状态是否为通过或退回 + * + * @param status 状态值 + * @return true 表示是通过或退回状态 + */ + public static boolean isPassOrBack(String status) { + return PASS.getStatus().equals(status) || BACK.getStatus().equals(status); + } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java index d9ff40ab5..498b85341 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java @@ -66,7 +66,6 @@ public class FlwCategoryController extends BaseController { @SaCheckPermission("workflow:category:query") @GetMapping("/{categoryId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long categoryId) { - flwCategoryService.checkCategoryDataScope(categoryId); return R.ok(flwCategoryService.queryById(categoryId)); } @@ -93,7 +92,6 @@ public class FlwCategoryController extends BaseController { @PutMapping() public R edit(@Validated(EditGroup.class) @RequestBody FlowCategoryBo category) { Long categoryId = category.getCategoryId(); - flwCategoryService.checkCategoryDataScope(categoryId); if (!flwCategoryService.checkCategoryNameUnique(category)) { return R.fail("修改流程分类'" + category.getCategoryName() + "'失败,流程分类名称已存在"); } else if (category.getParentId().equals(categoryId)) { diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 2d23f772c..76f67c07b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -83,8 +83,7 @@ public class WorkflowGlobalListener implements GlobalListener { String applyNodeCode = flwCommonService.applyNodeCode(definition.getId()); for (Task flowTask : nextTasks) { // 如果办理或者退回并行存在需要指定办理人,则直接覆盖办理人 - if (variable.containsKey(flowTask.getNodeCode()) && (TaskStatusEnum.PASS.getStatus().equals(flowParams.getHisStatus()) - || TaskStatusEnum.BACK.getStatus().equals(flowParams.getHisStatus()))) { + if (variable.containsKey(flowTask.getNodeCode()) && TaskStatusEnum.isPassOrBack(flowParams.getHisStatus())) { String userIds = variable.get(flowTask.getNodeCode()).toString(); flowTask.setPermissionList(List.of(userIds.split(StringUtils.SEPARATOR))); variable.remove(flowTask.getNodeCode()); @@ -137,8 +136,7 @@ public class WorkflowGlobalListener implements GlobalListener { return; } // 只有办理或者退回的时候才执行消息通知和抄送 - if (!StringUtils.equalsAny(flowParams.getHisStatus(), - TaskStatusEnum.PASS.getStatus(), TaskStatusEnum.BACK.getStatus())) { + if (!TaskStatusEnum.isPassOrBack(flowParams.getHisStatus())) { return; } if (ObjectUtil.isNull(variable)) { diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java index 4a59f258a..c7a3d2642 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java @@ -1,8 +1,6 @@ package org.dromara.workflow.mapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.dromara.common.mybatis.annotation.DataColumn; -import org.dromara.common.mybatis.annotation.DataPermission; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.workflow.domain.FlowCategory; @@ -20,19 +18,6 @@ import java.util.stream.Stream; */ public interface FlwCategoryMapper extends BaseMapperPlus { - /** - * 统计指定流程分类ID的分类数量 - * - * @param categoryId 流程分类ID - * @return 该流程分类ID的分类数量 - */ - @DataPermission({ - @DataColumn(key = "deptName", value = "createDept") - }) - default long countCategoryById(Long categoryId) { - return this.selectCount(new LambdaQueryWrapper().eq(FlowCategory::getCategoryId, categoryId)); - } - /** * 根据父流程分类ID查询其所有子流程分类的列表 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java index 91f173d4f..f66882b8d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java @@ -45,13 +45,6 @@ public interface IFlwCategoryService { */ List> selectCategoryTreeList(FlowCategoryBo category); - /** - * 校验流程分类是否有数据权限 - * - * @param categoryId 流程分类ID - */ - void checkCategoryDataScope(Long categoryId); - /** * 校验流程分类名称是否唯一 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java index dc8d6c833..ab2ac1e0d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java @@ -23,6 +23,7 @@ import org.dromara.workflow.service.IFlwCategoryService; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -111,24 +112,6 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService { ); } - /** - * 校验流程分类是否有数据权限 - * - * @param categoryId 流程分类ID - */ - @Override - public void checkCategoryDataScope(Long categoryId) { - if (ObjectUtil.isNull(categoryId)) { - return; - } - if (LoginHelper.isSuperAdmin()) { - return; - } - if (baseMapper.countCategoryById(categoryId) == 0) { - throw new ServiceException("没有权限访问流程分类数据!"); - } - } - /** * 校验流程分类名称是否唯一 * @@ -191,6 +174,9 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService { @Override public int insertByBo(FlowCategoryBo bo) { FlowCategory info = baseMapper.selectById(bo.getParentId()); + if (ObjectUtil.isNull(info)) { + throw new ServiceException("父级流程分类不存在!"); + } FlowCategory category = MapstructUtils.convert(bo, FlowCategory.class); category.setAncestors(info.getAncestors() + StringUtils.SEPARATOR + category.getParentId()); return baseMapper.insert(category); @@ -204,6 +190,7 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService { */ @CacheEvict(cacheNames = FlowConstant.FLOW_CATEGORY_NAME, key = "#bo.categoryId") @Override + @Transactional(rollbackFor = Exception.class) public int updateByBo(FlowCategoryBo bo) { FlowCategory category = MapstructUtils.convert(bo, FlowCategory.class); FlowCategory oldCategory = baseMapper.selectById(category.getCategoryId()); @@ -211,14 +198,14 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService { throw new ServiceException("流程分类不存在,无法修改"); } if (!oldCategory.getParentId().equals(category.getParentId())) { - // 如果是新父流程分类 则校验是否具有新父流程分类权限 避免越权 - this.checkCategoryDataScope(category.getParentId()); FlowCategory newParentCategory = baseMapper.selectById(category.getParentId()); if (ObjectUtil.isNotNull(newParentCategory)) { String newAncestors = newParentCategory.getAncestors() + StringUtils.SEPARATOR + newParentCategory.getCategoryId(); String oldAncestors = oldCategory.getAncestors(); category.setAncestors(newAncestors); updateCategoryChildren(category.getCategoryId(), newAncestors, oldAncestors); + } else { + throw new ServiceException("父级流程分类不存在!"); } } else { category.setAncestors(oldCategory.getAncestors()); -- Gitee From 29a78eba270dfd589fef0fc2de1b06f7589f3386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 9 Jul 2025 09:36:45 +0800 Subject: [PATCH 032/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=94=9F=E6=88=90=20setIsRequired=20=E6=A0=87?= =?UTF-8?q?=E5=BF=97=E5=86=99=E5=8F=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/gen/service/GenTableServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/service/GenTableServiceImpl.java b/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/service/GenTableServiceImpl.java index 569b2683d..3aa61c2f6 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/service/GenTableServiceImpl.java +++ b/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/service/GenTableServiceImpl.java @@ -302,7 +302,7 @@ public class GenTableServiceImpl implements IGenTableService { tableColumn.setColumnComment(column.getComment()); tableColumn.setColumnType(column.getOriginType().toLowerCase()); tableColumn.setSort(column.getPosition()); - tableColumn.setIsRequired(column.isNullable() ? "1" : "0"); + tableColumn.setIsRequired(column.isNullable() ? "0" : "1"); tableColumn.setIsIncrement(column.isAutoIncrement() ? "1" : "0"); tableColumns.add(tableColumn); }); -- Gitee From 4244567d2e7efa6139908b46efd4fc15ed39186a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 9 Jul 2025 09:57:22 +0800 Subject: [PATCH 033/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E4=BD=BF=E7=94=A8springSecurity=E6=96=B0=E8=AF=AD?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monitor/config/WebSecurityConfigurer.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java b/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java index 994ca73c1..4261afdb9 100644 --- a/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java +++ b/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java @@ -3,6 +3,7 @@ package org.dromara.modules.monitor.config; import de.codecentric.boot.admin.server.config.AdminServerProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @@ -10,7 +11,8 @@ import org.springframework.security.config.annotation.web.configurers.AbstractHt import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; -import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.security.web.servlet.util.matcher.MvcRequestMatcher; +import org.springframework.web.servlet.handler.HandlerMappingIntrospector; /** * admin 监控 安全配置 @@ -28,7 +30,7 @@ public class WebSecurityConfigurer { } @Bean - public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { + public SecurityFilterChain filterChain(HttpSecurity httpSecurity, MvcRequestMatcher.Builder mvc) throws Exception { SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setTargetUrlParameter("redirectTo"); successHandler.setDefaultTargetUrl(adminContextPath + "/"); @@ -38,8 +40,8 @@ public class WebSecurityConfigurer { header.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable)) .authorizeHttpRequests((authorize) -> authorize.requestMatchers( - new AntPathRequestMatcher(adminContextPath + "/assets/**"), - new AntPathRequestMatcher(adminContextPath + "/login") + mvc.pattern(adminContextPath + "/assets/**"), + mvc.pattern(adminContextPath + "/login") ).permitAll() .anyRequest().authenticated()) .formLogin((formLogin) -> @@ -51,4 +53,10 @@ public class WebSecurityConfigurer { .build(); } + @Scope("prototype") + @Bean + public MvcRequestMatcher.Builder mvc(HandlerMappingIntrospector introspector) { + return new MvcRequestMatcher.Builder(introspector); + } + } -- Gitee From 5d2156cb5e0bd1c9bb6fc6d5447070c2f3f13719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 9 Jul 2025 10:41:08 +0800 Subject: [PATCH 034/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E4=BB=BB=E5=8A=A1=E5=88=9B=E5=BB=BA=E7=9B=91?= =?UTF-8?q?=E5=90=AC=E5=99=A8=20=E4=BC=A0=E9=80=92=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/workflow/api/event/ProcessTaskEvent.java | 6 ++++++ .../dromara/workflow/handler/FlowProcessEventHandler.java | 3 ++- .../dromara/workflow/listener/WorkflowGlobalListener.java | 2 +- .../dromara/workflow/service/impl/TestLeaveServiceImpl.java | 4 ++-- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessTaskEvent.java b/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessTaskEvent.java index f53c8defb..7a5ef7c58 100644 --- a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessTaskEvent.java +++ b/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessTaskEvent.java @@ -6,6 +6,7 @@ import org.dromara.common.core.utils.SpringUtils; import org.springframework.cloud.bus.event.RemoteApplicationEvent; import java.io.Serial; +import java.util.Map; /** * 流程任务监听 @@ -59,6 +60,11 @@ public class ProcessTaskEvent extends RemoteApplicationEvent { */ private String status; + /** + * 办理参数 + */ + private Map params; + public ProcessTaskEvent() { super(new Object(), SpringUtils.getApplicationName(), DEFAULT_DESTINATION_FACTORY.getDestination(null)); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java index 9fe5a148e..b39eadddd 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java @@ -56,7 +56,7 @@ public class FlowProcessEventHandler { * @param instance 实例数据 * @param taskId 任务id */ - public void processTaskHandler(String flowCode, Instance instance, Long taskId) { + public void processTaskHandler(String flowCode, Instance instance, Long taskId, Map params) { String tenantId = TenantHelper.getTenantId(); log.info("【流程任务事件发布】租户ID: {}, 流程编码: {}, 业务ID: {}, 节点类型: {}, 节点编码: {}, 节点名称: {}, 任务ID: {}", tenantId, flowCode, instance.getBusinessId(), instance.getNodeType(), instance.getNodeCode(), instance.getNodeName(), taskId); @@ -69,6 +69,7 @@ public class FlowProcessEventHandler { processTaskEvent.setNodeName(instance.getNodeName()); processTaskEvent.setTaskId(taskId); processTaskEvent.setStatus(instance.getFlowStatus()); + processTaskEvent.setParams(params); SpringUtils.context().publishEvent(processTaskEvent); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 76f67c07b..05cb27bbb 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -130,7 +130,7 @@ public class WorkflowGlobalListener implements GlobalListener { } //发布任务事件 if (task != null) { - flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, task.getId()); + flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, task.getId(), params); } if (ObjectUtil.isNull(flowParams)) { return; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index 4cb2f4c4a..769c17659 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -137,7 +137,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { } /** - * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成等) * 正常使用只需#processEvent.flowCode=='leave1' * 示例为了方便则使用startsWith匹配了全部示例key * @@ -167,7 +167,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { } /** - * 执行任务创建监听 + * 执行任务创建监听(也代表上一条任务完成事件) * 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断 * 在方法中判断流程节点key * if ("xxx".equals(processTaskEvent.getNodeCode())) { -- Gitee From df8fa77e63e2de454370a09481f6e63da4222c61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 9 Jul 2025 17:15:26 +0800 Subject: [PATCH 035/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=8C=87=E5=AE=9A=E5=85=A8=E5=B1=80=E4=BD=BF=E7=94=A8?= =?UTF-8?q?ip=E7=BD=91=E6=AE=B5=E9=85=8D=E7=BD=AE=20=E5=B9=B6=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=85=B3=E9=97=ADsentinel=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/config/nacos/application-common.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/script/config/nacos/application-common.yml b/script/config/nacos/application-common.yml index 36fd5a5ef..87074d460 100644 --- a/script/config/nacos/application-common.yml +++ b/script/config/nacos/application-common.yml @@ -72,6 +72,11 @@ spring: # 允许对象忽略json中不存在的属性 fail_on_unknown_properties: false cloud: + inetutils: + # 指定全局使用ip网段 + preferred-networks: +# - 192.168 +# - 10.0 nacos: discovery: metadata: @@ -81,7 +86,7 @@ spring: # sentinel 配置 sentinel: # sentinel 开关 - enabled: true + enabled: false transport: # dashboard控制台服务名 用于服务发现 # 如无此配置将默认使用下方 dashboard 配置直接注册 -- Gitee From 33bd7c11a1f415ecdb930bec1794bf3b0de511a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 10 Jul 2025 17:07:17 +0800 Subject: [PATCH 036/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=88=9B=E5=BB=BA=E7=9B=91=E5=90=AC=E5=99=A8=20?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E4=B8=8B=E4=B8=80=E4=B8=AA=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E7=9A=84=E4=BB=BB=E5=8A=A1=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/workflow/handler/FlowProcessEventHandler.java | 1 + .../dromara/workflow/listener/WorkflowGlobalListener.java | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java index b39eadddd..28bf9279a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java @@ -55,6 +55,7 @@ public class FlowProcessEventHandler { * @param flowCode 流程定义编码 * @param instance 实例数据 * @param taskId 任务id + * @param params 上一个任务的办理参数 */ public void processTaskHandler(String flowCode, Instance instance, Long taskId, Map params) { String tenantId = TenantHelper.getTenantId(); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 05cb27bbb..96c92e72d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -105,6 +105,7 @@ public class WorkflowGlobalListener implements GlobalListener { Instance instance = listenerVariable.getInstance(); Definition definition = listenerVariable.getDefinition(); Task task = listenerVariable.getTask(); + List nextTasks = listenerVariable.getNextTasks(); Map params = new HashMap<>(); FlowParams flowParams = listenerVariable.getFlowParams(); Map variable = new HashMap<>(); @@ -129,8 +130,10 @@ public class WorkflowGlobalListener implements GlobalListener { } } //发布任务事件 - if (task != null) { - flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, task.getId(), params); + if (CollUtil.isNotEmpty(nextTasks)) { + for (Task nextTask : nextTasks) { + flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, nextTask.getId(), params); + } } if (ObjectUtil.isNull(flowParams)) { return; -- Gitee From 304fa68276e17dbf696b9bff0dbb380ec3c9fa9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 10 Jul 2025 17:40:25 +0800 Subject: [PATCH 037/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E6=B5=81=E7=A8=8B=E6=98=AF=E5=90=A6=E5=B7=B2=E7=BB=93?= =?UTF-8?q?=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/listener/WorkflowGlobalListener.java | 2 +- .../dromara/workflow/service/IFlwTaskService.java | 8 ++++++++ .../workflow/service/impl/FlwTaskServiceImpl.java | 13 +++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 96c92e72d..87abaf41e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -184,7 +184,7 @@ public class WorkflowGlobalListener implements GlobalListener { } else { Long instanceId = instance.getId(); List flowTasks = flwTaskService.selectByInstId(instanceId); - if (CollUtil.isEmpty(flowTasks)) { + if (flwTaskService.isTaskEnd(instanceId)) { String status = BusinessStatusEnum.FINISH.getStatus(); // 更新流程状态为已完成 instanceService.updateStatus(instanceId, status); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java index cea45bf6d..1e738f9ba 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java @@ -165,6 +165,14 @@ public interface IFlwTaskService { */ List selectByInstId(Long instanceId); + /** + * 判断流程是否已结束(即该流程实例下是否还有未完成的任务) + * + * @param instanceId 流程实例ID + * @return true 表示任务已全部结束;false 表示仍有任务存在 + */ + boolean isTaskEnd(Long instanceId); + /** * 任务操作 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index d785eac71..8f6a5b7e6 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -578,6 +578,19 @@ public class FlwTaskServiceImpl implements IFlwTaskService { .eq(FlowTask::getInstanceId, instanceId)); } + /** + * 判断流程是否已结束(即该流程实例下是否还有未完成的任务) + * + * @param instanceId 流程实例ID + * @return true 表示任务已全部结束;false 表示仍有任务存在 + */ + @Override + public boolean isTaskEnd(Long instanceId) { + boolean exists = flowTaskMapper.exists(new LambdaQueryWrapper() + .eq(FlowTask::getInstanceId, instanceId)); + return !exists; + } + /** * 任务操作 * -- Gitee From ccacb64c472684d220c8599416c26f4e38864b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 11 Jul 2025 15:55:13 +0800 Subject: [PATCH 038/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B1=8F?= =?UTF-8?q?=E8=94=BD=E6=97=A0=E7=94=A8=E8=AD=A6=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/config/nacos/application-common.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/script/config/nacos/application-common.yml b/script/config/nacos/application-common.yml index 87074d460..52d1dbf42 100644 --- a/script/config/nacos/application-common.yml +++ b/script/config/nacos/application-common.yml @@ -170,6 +170,7 @@ logging: org.mybatis.spring.mapper: error org.apache.dubbo.config: error org.apache.fury: warn + io.micrometer: error # 临时处理 spring 调整日志级别导致启动警告问题 不影响使用等待 alibaba 适配 org.springframework.context.support.PostProcessorRegistrationDelegate: error config: classpath:logback-plus.xml -- Gitee From 792a4b7e37a1603d766f10775c226f7fde06bb17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 11 Jul 2025 18:14:56 +0800 Subject: [PATCH 039/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E8=84=B1=E6=95=8F=E6=94=AF=E6=8C=81List=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/log/aspect/LogAspect.java | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java index b4fb847de..5f9102a40 100644 --- a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java +++ b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java @@ -27,9 +27,7 @@ import org.springframework.http.HttpMethod; import org.springframework.validation.BindingResult; import org.springframework.web.multipart.MultipartFile; -import java.util.Collection; -import java.util.Map; -import java.util.StringJoiner; +import java.util.*; /** * 操作日志记录处理 @@ -177,14 +175,28 @@ public class LogAspect { if (ArrayUtil.isEmpty(paramsArray)) { return params.toString(); } + String[] exclude = ArrayUtil.addAll(excludeParamNames, EXCLUDE_PROPERTIES); for (Object o : paramsArray) { if (ObjectUtil.isNotNull(o) && !isFilterObject(o)) { - String str = JsonUtils.toJsonString(o); - Dict dict = JsonUtils.parseMap(str); - if (MapUtil.isNotEmpty(dict)) { - MapUtil.removeAny(dict, EXCLUDE_PROPERTIES); - MapUtil.removeAny(dict, excludeParamNames); - str = JsonUtils.toJsonString(dict); + String str = ""; + if (o instanceof List list) { + List list1 = new ArrayList<>(); + for (Object obj : list) { + String str1 = JsonUtils.toJsonString(obj); + Dict dict = JsonUtils.parseMap(str1); + if (MapUtil.isNotEmpty(dict)) { + MapUtil.removeAny(dict, exclude); + list1.add(dict); + } + } + str = JsonUtils.toJsonString(list1); + } else { + str = JsonUtils.toJsonString(o); + Dict dict = JsonUtils.parseMap(str); + if (MapUtil.isNotEmpty(dict)) { + MapUtil.removeAny(dict, exclude); + str = JsonUtils.toJsonString(dict); + } } params.add(str); } -- Gitee From a899fefc13199ce9cd546856567b012d30f312db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 14 Jul 2025 09:35:25 +0800 Subject: [PATCH 040/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=E7=94=BB=E7=BA=BF=E9=A9=B3=E5=9B=9E=E5=88=B0?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E4=BA=BA=E5=90=8E=E7=8A=B6=E6=80=81=E6=9C=AA?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/workflow/listener/WorkflowGlobalListener.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 87abaf41e..c8997a695 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -128,6 +128,13 @@ public class WorkflowGlobalListener implements GlobalListener { if (StringUtils.isNotBlank(status)) { flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, status, params, false); } + if (task != null && nextTasks.size() == 1 && flwCommonService.applyNodeCode(definition.getId()).equals(nextTasks.get(0).getNodeCode())) { + //如果为画线指定驳回 线条指定为驳回 驳回得节点为申请人节点 则修改流程状态为退回 + flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, BusinessStatusEnum.BACK.getStatus(), params, false); + //修改流程实例状态 + instance.setFlowStatus(BusinessStatusEnum.BACK.getStatus()); + insService.updateById(instance); + } } //发布任务事件 if (CollUtil.isNotEmpty(nextTasks)) { -- Gitee From 7373a58dfb369d4ca2c39e4e48b598952f094583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 14 Jul 2025 10:59:38 +0800 Subject: [PATCH 041/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E6=9D=83=E9=99=90=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/mapper/SysMenuMapper.java | 18 ++++++++++++------ .../service/impl/SysMenuServiceImpl.java | 18 ++---------------- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java index 1af2872e7..11a62ebcc 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java @@ -6,7 +6,9 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.system.domain.SysMenu; import org.dromara.system.domain.vo.SysMenuVo; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * 菜单表 数据层 @@ -75,12 +77,14 @@ public interface SysMenuMapper extends BaseMapperPlus { * @param userId 用户ID * @return 权限列表 */ - default List selectMenuPermsByUserId(Long userId) { - return this.selectObjs( + default Set selectMenuPermsByUserId(Long userId) { + return new HashSet<>(this.selectObjs( new LambdaQueryWrapper() .select(SysMenu::getPerms) .inSql(SysMenu::getMenuId, this.buildMenuByUserSql(userId)) - ); + .isNotNull(SysMenu::getPerms) + .ne(SysMenu::getPerms, "") + )); } /** @@ -89,12 +93,14 @@ public interface SysMenuMapper extends BaseMapperPlus { * @param roleId 角色ID * @return 权限列表 */ - default List selectMenuPermsByRoleId(Long roleId) { - return this.selectObjs( + default Set selectMenuPermsByRoleId(Long roleId) { + return new HashSet<>(this.selectObjs( new LambdaQueryWrapper() .select(SysMenu::getPerms) .inSql(SysMenu::getMenuId, this.buildMenuByRoleSql(roleId)) - ); + .isNotNull(SysMenu::getPerms) + .ne(SysMenu::getPerms, "") + )); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java index 43bf505bf..efe9029f8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java @@ -90,14 +90,7 @@ public class SysMenuServiceImpl implements ISysMenuService { */ @Override public Set selectMenuPermsByUserId(Long userId) { - List perms = baseMapper.selectMenuPermsByUserId(userId); - Set permsSet = new HashSet<>(); - for (String perm : perms) { - if (StringUtils.isNotEmpty(perm)) { - permsSet.addAll(StringUtils.splitList(perm.trim())); - } - } - return permsSet; + return baseMapper.selectMenuPermsByUserId(userId); } /** @@ -108,14 +101,7 @@ public class SysMenuServiceImpl implements ISysMenuService { */ @Override public Set selectMenuPermsByRoleId(Long roleId) { - List perms = baseMapper.selectMenuPermsByRoleId(roleId); - Set permsSet = new HashSet<>(); - for (String perm : perms) { - if (StringUtils.isNotEmpty(perm)) { - permsSet.addAll(StringUtils.splitList(perm.trim())); - } - } - return permsSet; + return baseMapper.selectMenuPermsByRoleId(roleId); } /** -- Gitee From bb51b61072109819f5111470610bebe672137dc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 14 Jul 2025 15:56:26 +0800 Subject: [PATCH 042/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20seata-server?= =?UTF-8?q?=20=E7=BC=BA=E5=B0=91=E4=BE=9D=E8=B5=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-visual/ruoyi-seata-server/pom.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ruoyi-visual/ruoyi-seata-server/pom.xml b/ruoyi-visual/ruoyi-seata-server/pom.xml index 6491fffa3..7c84b2017 100644 --- a/ruoyi-visual/ruoyi-seata-server/pom.xml +++ b/ruoyi-visual/ruoyi-seata-server/pom.xml @@ -306,9 +306,8 @@ janino - org.codehaus.jackson - jackson-mapper-asl - ${jackson-mapper.version} + com.bucket4j + bucket4j_jdk8-core -- Gitee From 967cc6e4f7912daca197eb2cef6c3574238c2b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 15 Jul 2025 17:03:57 +0800 Subject: [PATCH 043/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=9C=A8=E7=9B=91=E5=90=AC=E5=99=A8=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/api/event/ProcessEvent.java | 5 +++++ .../workflow/api/event/ProcessTaskEvent.java | 5 +++++ .../handler/FlowProcessEventHandler.java | 2 ++ .../listener/WorkflowGlobalListener.java | 17 ++++++----------- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessEvent.java b/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessEvent.java index 937a93115..b98e1fb2c 100644 --- a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessEvent.java +++ b/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessEvent.java @@ -30,6 +30,11 @@ public class ProcessEvent extends RemoteApplicationEvent { */ private String flowCode; + /** + * 实例id + */ + private Long instanceId; + /** * 业务id */ diff --git a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessTaskEvent.java b/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessTaskEvent.java index 7a5ef7c58..fed057603 100644 --- a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessTaskEvent.java +++ b/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessTaskEvent.java @@ -50,6 +50,11 @@ public class ProcessTaskEvent extends RemoteApplicationEvent { */ private Long taskId; + /** + * 实例id + */ + private Long instanceId; + /** * 业务id */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java index 28bf9279a..b35f9c4ae 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java @@ -39,6 +39,7 @@ public class FlowProcessEventHandler { ProcessEvent processEvent = new ProcessEvent(); processEvent.setTenantId(tenantId); processEvent.setFlowCode(flowCode); + processEvent.setInstanceId(instance.getId()); processEvent.setBusinessId(instance.getBusinessId()); processEvent.setNodeType(instance.getNodeType()); processEvent.setNodeCode(instance.getNodeCode()); @@ -64,6 +65,7 @@ public class FlowProcessEventHandler { ProcessTaskEvent processTaskEvent = new ProcessTaskEvent(); processTaskEvent.setTenantId(tenantId); processTaskEvent.setFlowCode(flowCode); + processTaskEvent.setInstanceId(instance.getId()); processTaskEvent.setBusinessId(instance.getBusinessId()); processTaskEvent.setNodeType(instance.getNodeType()); processTaskEvent.setNodeCode(instance.getNodeCode()); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index c8997a695..e6d80311f 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -8,7 +8,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.utils.StringUtils; -import org.dromara.warm.flow.core.FlowEngine; import org.dromara.warm.flow.core.dto.FlowParams; import org.dromara.warm.flow.core.entity.Definition; import org.dromara.warm.flow.core.entity.Instance; @@ -16,7 +15,6 @@ import org.dromara.warm.flow.core.entity.Task; import org.dromara.warm.flow.core.listener.GlobalListener; import org.dromara.warm.flow.core.listener.ListenerVariable; import org.dromara.warm.flow.core.service.InsService; -import org.dromara.warm.flow.orm.entity.FlowInstance; import org.dromara.warm.flow.orm.entity.FlowTask; import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.constant.FlowConstant; @@ -166,15 +164,12 @@ public class WorkflowGlobalListener implements GlobalListener { flwCommonService.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice); } } - FlowInstance ins = new FlowInstance(); - Map variableMap = instance.getVariableMap(); - variableMap.remove(FlowConstant.FLOW_COPY_LIST); - variableMap.remove(FlowConstant.MESSAGE_TYPE); - variableMap.remove(FlowConstant.MESSAGE_NOTICE); - variableMap.remove(FlowConstant.SUBMIT); - ins.setId(instance.getId()); - ins.setVariable(FlowEngine.jsonConvert.objToStr(variableMap)); - insService.updateById(ins); + insService.removeVariables(instance.getId(), + FlowConstant.FLOW_COPY_LIST, + FlowConstant.MESSAGE_TYPE, + FlowConstant.MESSAGE_NOTICE, + FlowConstant.SUBMIT + ); } /** -- Gitee From d07b047dcccb8c68152d2f5aa843cd2831e56d5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 17 Jul 2025 14:36:35 +0800 Subject: [PATCH 044/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E9=80=80?= =?UTF-8?q?=E5=9B=9E=E5=90=8E=E5=AE=A1=E6=89=B9=E8=AE=B0=E5=BD=95=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E4=BA=BA=E9=94=99=E8=AF=AF=20#ICMEJ1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/workflow/service/impl/FlwInstanceServiceImpl.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index e9775af9a..fe03a7cba 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -304,9 +304,6 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { if (CollUtil.isNotEmpty(users)) { vo.setApprover(StreamUtils.join(users, User::getProcessedBy)); } - if (BusinessStatusEnum.isDraftOrCancelOrBack(flowInstance.getFlowStatus())) { - vo.setApprover(LoginHelper.getUserIdStr()); - } } } -- Gitee From 9599f41f7ef27fe7d2d10b6f7c7c428c519d9ec6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 17 Jul 2025 14:39:03 +0800 Subject: [PATCH 045/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=AF=B7=E6=B1=82=E6=B5=81=E7=A8=8B=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E5=8F=91=E8=B5=B7demo=E6=A1=88=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TestLeaveController.java | 11 +++++++ .../workflow/domain/bo/TestLeaveBo.java | 5 +++ .../workflow/service/ITestLeaveService.java | 5 +++ .../service/impl/TestLeaveServiceImpl.java | 33 +++++++++++++++++++ 4 files changed, 54 insertions(+) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java index eb6c01f97..2812240c9 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java @@ -82,6 +82,17 @@ public class TestLeaveController extends BaseController { return R.ok(testLeaveService.insertByBo(bo)); } + /** + * 提交请假并提交流程 + */ + @SaCheckPermission("workflow:leave:add") + @Log(title = "请假", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/submitAndFlowStart") + public R submitAndFlowStart(@Validated(AddGroup.class) @RequestBody TestLeaveBo bo) { + return R.ok(testLeaveService.submitAndFlowStart(bo)); + } + /** * 修改请假 */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java index 395f71d95..b040dbe98 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java @@ -31,6 +31,11 @@ public class TestLeaveBo extends BaseEntity { @NotNull(message = "主键不能为空", groups = {EditGroup.class}) private Long id; + /** + * 流程code + */ + private String flowCode; + /** * 请假类型 */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/ITestLeaveService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/ITestLeaveService.java index 67b50baf3..748a2b174 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/ITestLeaveService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/ITestLeaveService.java @@ -35,6 +35,11 @@ public interface ITestLeaveService { */ TestLeaveVo insertByBo(TestLeaveBo bo); + /** + * 提交请假并发起流程 + */ + TestLeaveVo submitAndFlowStart(TestLeaveBo bo); + /** * 修改请假 */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index 769c17659..a7c93a701 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -10,12 +10,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.workflow.api.domain.RemoteCompleteTask; +import org.dromara.workflow.api.domain.RemoteStartProcess; +import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.dromara.workflow.api.event.ProcessDeleteEvent; import org.dromara.workflow.api.event.ProcessEvent; import org.dromara.workflow.api.event.ProcessTaskEvent; @@ -116,6 +120,35 @@ public class TestLeaveServiceImpl implements ITestLeaveService { return MapstructUtils.convert(add, TestLeaveVo.class); } + @Transactional(rollbackFor = Exception.class) + @Override + public TestLeaveVo submitAndFlowStart(TestLeaveBo bo) { + long day = DateUtil.betweenDay(bo.getStartDate(), bo.getEndDate(), true); + // 截止日期也算一天 + bo.setLeaveDays((int) day + 1); + TestLeave leave = MapstructUtils.convert(bo, TestLeave.class); + boolean flag = baseMapper.insertOrUpdate(leave); + if (flag) { + bo.setId(leave.getId()); + // 后端发起需要忽略权限 + bo.getParams().put("ignore", true); + RemoteStartProcessReturn result = workflowService.startWorkFlow(new RemoteStartProcess() {{ + setBusinessId(leave.getId().toString()); + setFlowCode(StringUtils.isEmpty(bo.getFlowCode()) ? "leave1" : bo.getFlowCode()); + setVariables(bo.getParams()); + }}); + boolean flag1 = workflowService.completeTask(new RemoteCompleteTask() {{ + setTaskId(result.getTaskId()); + setMessageType(List.of("1")); + setVariables(bo.getParams()); + }}); + if (!flag1) { + throw new ServiceException("流程发起异常"); + } + } + return MapstructUtils.convert(leave, TestLeaveVo.class); + } + /** * 修改请假 */ -- Gitee From 946fb5711628cac2548ae168c32be386f634fea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 17 Jul 2025 15:16:18 +0800 Subject: [PATCH 046/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=AF=B9?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E4=B9=9F=E7=A7=9F=E6=88=B7=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=BF=9B=E8=A1=8C=E9=99=90=E6=B5=81=20?= =?UTF-8?q?=E9=98=B2=E6=AD=A2=E7=9B=97=E5=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/auth/controller/TokenController.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java index 416f7a492..cd9f8d61a 100644 --- a/ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java +++ b/ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java @@ -25,6 +25,8 @@ import org.dromara.common.core.domain.model.LoginBody; import org.dromara.common.core.utils.*; import org.dromara.common.encrypt.annotation.ApiEncrypt; import org.dromara.common.json.utils.JsonUtils; +import org.dromara.common.ratelimiter.annotation.RateLimiter; +import org.dromara.common.ratelimiter.enums.LimitType; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.social.config.properties.SocialLoginConfigProperties; import org.dromara.common.social.config.properties.SocialProperties; @@ -190,6 +192,7 @@ public class TokenController { * * @return 租户列表 */ + @RateLimiter(time = 60, count = 20, limitType = LimitType.IP) @GetMapping("/tenant/list") public R tenantList(HttpServletRequest request) throws Exception { // 返回对象 -- Gitee From 3b06e02394fcc9152350bb7dcf0b4443c5ebdde3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 17 Jul 2025 16:19:35 +0800 Subject: [PATCH 047/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20oracle?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=97=A0=E6=B3=95=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E4=B8=8D=E7=AD=89=E4=BA=8E=E8=AF=AD=E6=B3=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/mapper/SysMenuMapper.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java index 11a62ebcc..10bc015f2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java @@ -2,6 +2,8 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.system.domain.SysMenu; import org.dromara.system.domain.vo.SysMenuVo; @@ -78,13 +80,13 @@ public interface SysMenuMapper extends BaseMapperPlus { * @return 权限列表 */ default Set selectMenuPermsByUserId(Long userId) { - return new HashSet<>(this.selectObjs( + List list = this.selectObjs( new LambdaQueryWrapper() .select(SysMenu::getPerms) .inSql(SysMenu::getMenuId, this.buildMenuByUserSql(userId)) .isNotNull(SysMenu::getPerms) - .ne(SysMenu::getPerms, "") - )); + ); + return new HashSet<>(StreamUtils.filter(list, StringUtils::isNotBlank)); } /** @@ -94,13 +96,13 @@ public interface SysMenuMapper extends BaseMapperPlus { * @return 权限列表 */ default Set selectMenuPermsByRoleId(Long roleId) { - return new HashSet<>(this.selectObjs( + List list = this.selectObjs( new LambdaQueryWrapper() .select(SysMenu::getPerms) .inSql(SysMenu::getMenuId, this.buildMenuByRoleSql(roleId)) .isNotNull(SysMenu::getPerms) - .ne(SysMenu::getPerms, "") - )); + ); + return new HashSet<>(StreamUtils.filter(list, StringUtils::isNotBlank)); } /** -- Gitee From 5f3597bffb031efef216c3de2db3fda8e4a9e9a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sat, 19 Jul 2025 23:48:40 +0800 Subject: [PATCH 048/155] =?UTF-8?q?update=20=E6=96=B0=E5=A2=9E=E8=B5=9E?= =?UTF-8?q?=E5=8A=A9=E5=95=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 5b28e71ec..6ebdf6441 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,8 @@ CCFlow 驰聘低代码-流程-表单 - https://gitee.com/opencc/RuoYi-JFlow
引迈信息 软件开发平台 - https://www.jnpfsoft.com/index.html?from=plus-doc
**启山商城系统 多租户商城源码可免费商用可二次开发 - https://www.73app.cn/**
Mall4J 高质量Java商城系统 - https://www.mall4j.com/cn/?statId=11
+aizuda flowlong 工作流 - https://gitee.com/aizuda/flowlong
+ [如何成为赞助商 加群联系作者详谈](https://plus-doc.dromara.org/#/common/add_group) # 本框架与RuoYi的功能差异 -- Gitee From 2c93bdc5dd4dac20fb8ec0b1ef2c5a067f126a0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sat, 19 Jul 2025 23:53:47 +0800 Subject: [PATCH 049/155] =?UTF-8?q?update=20=E6=9B=B4=E6=96=B0=20snailjob?= =?UTF-8?q?=20=E7=89=88=E6=9C=AC=E5=88=B01.6.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- script/config/nacos/ruoyi-snailjob-server.yml | 25 +++- script/sql/oracle/oracle_ry_job.sql | 119 ++++++++++-------- script/sql/postgres/postgres_ry_job.sql | 104 ++++++++------- script/sql/ry-job.sql | 68 +++++----- 5 files changed, 188 insertions(+), 130 deletions(-) diff --git a/pom.xml b/pom.xml index 3eeb91ecc..be42b0481 100644 --- a/pom.xml +++ b/pom.xml @@ -32,7 +32,7 @@ 5.8.38 3.50.0 2.2.7 - 1.5.0 + 1.6.0 1.44.0 1.18.36 7.4 diff --git a/script/config/nacos/ruoyi-snailjob-server.yml b/script/config/nacos/ruoyi-snailjob-server.yml index 51357506f..23fdc95a2 100644 --- a/script/config/nacos/ruoyi-snailjob-server.yml +++ b/script/config/nacos/ruoyi-snailjob-server.yml @@ -25,12 +25,25 @@ spring: # snail-job 服务端配置 snail-job: - # 拉取重试数据的每批次的大小 - retry-pull-page-size: 1000 - # 拉取重试数据的每批次的大小 - job-pull-page-size: 1000 - # 服务器端口 + # 服务端节点IP(默认按照`NetUtil.getLocalIpStr()`) + server-host: + # 服务端netty的端口号 server-port: 17888 - # 日志保存时间(单位: day) + # 合并日志默认保存天数 + merge-Log-days: 1 + # 合并日志默认的条数 + merge-Log-num: 500 + # 配置每批次拉取重试数据的大小 + retry-pull-page-size: 100 + # 配置日志保存时间(单位:天) log-storage: 7 + # bucket的总数量 + bucket-total: 128 + # Dashboard 任务容错天数 + summary-day: 7 + # 配置负载均衡周期时间 + load-balance-cycle-time: 10 + # 通知类型默认使用grpc(netty 已经下线) rpc-type: grpc + # 重试任务拉取的并行度 + retry-max-pull-parallel: 2 diff --git a/script/sql/oracle/oracle_ry_job.sql b/script/sql/oracle/oracle_ry_job.sql index 1e5c899cc..84d31ec02 100644 --- a/script/sql/oracle/oracle_ry_job.sql +++ b/script/sql/oracle/oracle_ry_job.sql @@ -1,9 +1,8 @@ - /* SnailJob Database Transfer Tool Source Server Type : MySQL Target Server Type : Oracle - Date: 2025-04-26 10:01:54 + Date: 2025-06-21 23:33:11 */ @@ -146,17 +145,19 @@ COMMENT ON TABLE sj_notify_recipient IS '告警通知接收人'; -- sj_retry_dead_letter CREATE TABLE sj_retry_dead_letter ( - id number GENERATED ALWAYS AS IDENTITY, - namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL, - group_name varchar2(64) NULL, - group_id number NOT NULL, - scene_name varchar2(64) NULL, - scene_id number NOT NULL, idempotent_id varchar2(64) NULL, - biz_no varchar2(64) DEFAULT '' NULL, - executor_name varchar2(512) DEFAULT '' NULL, - args_str clob NULL, - ext_attrs clob NULL, - create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL + id number GENERATED ALWAYS AS IDENTITY, + namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL, + group_name varchar2(64) NULL, + group_id number NOT NULL, + scene_name varchar2(64) NULL, + scene_id number NOT NULL, + idempotent_id varchar2(64) NULL, + biz_no varchar2(64) DEFAULT '' NULL, + executor_name varchar2(512) DEFAULT '' NULL, + serializer_name varchar2(32) DEFAULT 'jackson' NULL, + args_str clob NULL, + ext_attrs clob NULL, + create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL ); ALTER TABLE sj_retry_dead_letter @@ -176,6 +177,7 @@ COMMENT ON COLUMN sj_retry_dead_letter.scene_id IS '场景ID'; COMMENT ON COLUMN sj_retry_dead_letter.idempotent_id IS '幂等id'; COMMENT ON COLUMN sj_retry_dead_letter.biz_no IS '业务编号'; COMMENT ON COLUMN sj_retry_dead_letter.executor_name IS '执行器名称'; +COMMENT ON COLUMN sj_retry_dead_letter.serializer_name IS '执行方法参数序列化器名称'; COMMENT ON COLUMN sj_retry_dead_letter.args_str IS '执行方法参数'; COMMENT ON COLUMN sj_retry_dead_letter.ext_attrs IS '扩展字段'; COMMENT ON COLUMN sj_retry_dead_letter.create_dt IS '创建时间'; @@ -189,11 +191,13 @@ CREATE TABLE sj_retry group_name varchar2(64) NULL, group_id number NOT NULL, scene_name varchar2(64) NULL, - scene_id number NOT NULL, idempotent_id varchar2(64) NULL, + scene_id number NOT NULL, + idempotent_id varchar2(64) NULL, biz_no varchar2(64) DEFAULT '' NULL, executor_name varchar2(512) DEFAULT '' NULL, args_str clob NULL, ext_attrs clob NULL, + serializer_name varchar2(32) DEFAULT 'jackson' NULL, next_trigger_at number NOT NULL, retry_count number DEFAULT 0 NOT NULL, retry_status smallint DEFAULT 0 NOT NULL, @@ -211,11 +215,10 @@ ALTER TABLE sj_retry CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (scene_id, task_type, idempotent_id, deleted); CREATE INDEX idx_sj_retry_01 ON sj_retry (biz_no); -CREATE INDEX idx_sj_retry_02 ON sj_retry (retry_status, bucket_index); -CREATE INDEX idx_sj_retry_03 ON sj_retry (parent_id); -CREATE INDEX idx_sj_retry_04 ON sj_retry (create_dt); -CREATE INDEX idx_sj_retry_05 ON sj_retry (idempotent_id); - +CREATE INDEX idx_sj_retry_02 ON sj_retry (idempotent_id); +CREATE INDEX idx_sj_retry_03 ON sj_retry (retry_status, bucket_index); +CREATE INDEX idx_sj_retry_04 ON sj_retry (parent_id); +CREATE INDEX idx_sj_retry_05 ON sj_retry (create_dt); COMMENT ON COLUMN sj_retry.id IS '主键'; COMMENT ON COLUMN sj_retry.namespace_id IS '命名空间id'; @@ -228,6 +231,7 @@ COMMENT ON COLUMN sj_retry.biz_no IS '业务编号'; COMMENT ON COLUMN sj_retry.executor_name IS '执行器名称'; COMMENT ON COLUMN sj_retry.args_str IS '执行方法参数'; COMMENT ON COLUMN sj_retry.ext_attrs IS '扩展字段'; +COMMENT ON COLUMN sj_retry.serializer_name IS '执行方法参数序列化器名称'; COMMENT ON COLUMN sj_retry.next_trigger_at IS '下次触发时间'; COMMENT ON COLUMN sj_retry.retry_count IS '重试次数'; COMMENT ON COLUMN sj_retry.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数'; @@ -295,8 +299,8 @@ CREATE TABLE sj_retry_task_log_message ALTER TABLE sj_retry_task_log_message ADD CONSTRAINT pk_sj_retry_task_log_message PRIMARY KEY (id); -CREATE INDEX idx_sj_rt_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, retry_task_id); -CREATE INDEX idx_sj_rt_log_message_02 ON sj_retry_task_log_message (create_dt); +CREATE INDEX idx_sj_retry_task_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, retry_task_id); +CREATE INDEX idx_sj_retry_task_log_message_02 ON sj_retry_task_log_message (create_dt); COMMENT ON COLUMN sj_retry_task_log_message.id IS '主键'; COMMENT ON COLUMN sj_retry_task_log_message.namespace_id IS '命名空间id'; @@ -329,6 +333,8 @@ CREATE TABLE sj_retry_scene_config cb_trigger_type smallint DEFAULT 1 NOT NULL, cb_max_count number DEFAULT 16 NOT NULL, cb_trigger_interval varchar2(16) DEFAULT '' NULL, + owner_id number DEFAULT NULL NULL, + labels varchar2(512) DEFAULT '' NULL, description varchar2(256) DEFAULT '' NULL, create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL, update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL @@ -356,6 +362,8 @@ COMMENT ON COLUMN sj_retry_scene_config.cb_status IS '回调状态 0、不开启 COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_type IS '1、默认等级 2、固定间隔时间 3、CRON 表达式'; COMMENT ON COLUMN sj_retry_scene_config.cb_max_count IS '回调的最大执行次数'; COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_interval IS '回调的最大执行次数'; +COMMENT ON COLUMN sj_retry_scene_config.owner_id IS '负责人id'; +COMMENT ON COLUMN sj_retry_scene_config.labels IS '标签'; COMMENT ON COLUMN sj_retry_scene_config.description IS '描述'; COMMENT ON COLUMN sj_retry_scene_config.create_dt IS '创建时间'; COMMENT ON COLUMN sj_retry_scene_config.update_dt IS '修改时间'; @@ -373,6 +381,7 @@ CREATE TABLE sj_server_node expire_at date NOT NULL, node_type smallint NOT NULL, ext_attrs varchar2(256) DEFAULT '' NULL, + labels varchar2(512) DEFAULT '' NULL, create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL, update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL ); @@ -394,6 +403,7 @@ COMMENT ON COLUMN sj_server_node.host_port IS '机器端口'; COMMENT ON COLUMN sj_server_node.expire_at IS '过期时间'; COMMENT ON COLUMN sj_server_node.node_type IS '节点类型 1、客户端 2、是服务端'; COMMENT ON COLUMN sj_server_node.ext_attrs IS '扩展字段'; +COMMENT ON COLUMN sj_server_node.labels IS '标签'; COMMENT ON COLUMN sj_server_node.create_dt IS '创建时间'; COMMENT ON COLUMN sj_server_node.update_dt IS '修改时间'; COMMENT ON TABLE sj_server_node IS '服务器节点'; @@ -401,7 +411,7 @@ COMMENT ON TABLE sj_server_node IS '服务器节点'; -- sj_distributed_lock CREATE TABLE sj_distributed_lock ( - name varchar2(64) NULL, + name varchar2(64) NOT NULL, lock_until timestamp(3) DEFAULT CURRENT_TIMESTAMP(3) NOT NULL, locked_at timestamp(3) DEFAULT CURRENT_TIMESTAMP(3) NOT NULL, locked_by varchar2(255) NULL, @@ -442,8 +452,8 @@ COMMENT ON COLUMN sj_system_user.create_dt IS '创建时间'; COMMENT ON COLUMN sj_system_user.update_dt IS '修改时间'; COMMENT ON TABLE sj_system_user IS '系统用户表'; --- pwd: admin -INSERT INTO sj_system_user(username, password, role, create_dt, update_dt) VALUES ('admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2, sysdate, sysdate); +INSERT INTO sj_system_user (username, password, role) +VALUES ('admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2); -- sj_system_user_permission CREATE TABLE sj_system_user_permission @@ -459,7 +469,7 @@ CREATE TABLE sj_system_user_permission ALTER TABLE sj_system_user_permission ADD CONSTRAINT pk_sj_system_user_permission PRIMARY KEY (id); -CREATE UNIQUE INDEX uk_sj_su_permission_01 ON sj_system_user_permission (namespace_id, group_name, system_user_id); +CREATE UNIQUE INDEX uk_sj_system_user_permission_01 ON sj_system_user_permission (namespace_id, group_name, system_user_id); COMMENT ON COLUMN sj_system_user_permission.id IS '主键'; COMMENT ON COLUMN sj_system_user_permission.group_name IS '组名称'; @@ -469,30 +479,6 @@ COMMENT ON COLUMN sj_system_user_permission.create_dt IS '创建时间'; COMMENT ON COLUMN sj_system_user_permission.update_dt IS '修改时间'; COMMENT ON TABLE sj_system_user_permission IS '系统用户权限表'; --- sj_sequence_alloc -CREATE TABLE sj_sequence_alloc -( - id number GENERATED ALWAYS AS IDENTITY, - namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL, - group_name varchar2(64) DEFAULT '' NULL, - max_id number DEFAULT 1 NOT NULL, - step number DEFAULT 100 NOT NULL, - update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL -); - -ALTER TABLE sj_sequence_alloc - ADD CONSTRAINT pk_sj_sequence_alloc PRIMARY KEY (id); - -CREATE UNIQUE INDEX uk_sj_sequence_alloc_01 ON sj_sequence_alloc (namespace_id, group_name); - -COMMENT ON COLUMN sj_sequence_alloc.id IS '主键'; -COMMENT ON COLUMN sj_sequence_alloc.namespace_id IS '命名空间id'; -COMMENT ON COLUMN sj_sequence_alloc.group_name IS '组名称'; -COMMENT ON COLUMN sj_sequence_alloc.max_id IS '最大id'; -COMMENT ON COLUMN sj_sequence_alloc.step IS '步长'; -COMMENT ON COLUMN sj_sequence_alloc.update_dt IS '更新时间'; -COMMENT ON TABLE sj_sequence_alloc IS '号段模式序号ID分配表'; - -- sj_job CREATE TABLE sj_job ( @@ -518,7 +504,8 @@ CREATE TABLE sj_job bucket_index number DEFAULT 0 NOT NULL, resident smallint DEFAULT 0 NOT NULL, notify_ids varchar2(128) DEFAULT '' NULL, - owner_id number NULL, + owner_id number DEFAULT NULL NULL, + labels varchar2(512) DEFAULT '' NULL, description varchar2(256) DEFAULT '' NULL, ext_attrs varchar2(256) DEFAULT '' NULL, deleted smallint DEFAULT 0 NOT NULL, @@ -556,6 +543,7 @@ COMMENT ON COLUMN sj_job.bucket_index IS 'bucket'; COMMENT ON COLUMN sj_job.resident IS '是否是常驻任务'; COMMENT ON COLUMN sj_job.notify_ids IS '通知告警场景配置id列表'; COMMENT ON COLUMN sj_job.owner_id IS '负责人id'; +COMMENT ON COLUMN sj_job.labels IS '标签'; COMMENT ON COLUMN sj_job.description IS '描述'; COMMENT ON COLUMN sj_job.ext_attrs IS '扩展字段'; COMMENT ON COLUMN sj_job.deleted IS '逻辑删除 1、删除'; @@ -563,7 +551,7 @@ COMMENT ON COLUMN sj_job.create_dt IS '创建时间'; COMMENT ON COLUMN sj_job.update_dt IS '修改时间'; COMMENT ON TABLE sj_job IS '任务信息'; -INSERT INTO sj_job(namespace_id, group_name, job_name, args_str, args_type, next_trigger_at, job_status, task_type, route_key, executor_type, executor_info, trigger_type, trigger_interval, block_strategy,executor_timeout, max_retry_times, parallel_num, retry_interval, bucket_index, resident, notify_ids, owner_id, description, ext_attrs, deleted, create_dt, update_dt) VALUES ('dev', 'ruoyi_group', 'demo-job', NULL, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', 1,'', '', 0, sysdate, sysdate); +INSERT INTO sj_job(namespace_id, group_name, job_name, args_str, args_type, next_trigger_at, job_status, task_type, route_key, executor_type, executor_info, trigger_type, trigger_interval, block_strategy,executor_timeout, max_retry_times, parallel_num, retry_interval, bucket_index, resident, notify_ids, owner_id, labels, description, ext_attrs, deleted, create_dt, update_dt) VALUES ('dev', 'ruoyi_group', 'demo-job', NULL, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', 1, '','', '', 0, sysdate, sysdate); -- sj_job_log_message CREATE TABLE sj_job_log_message @@ -799,6 +787,7 @@ CREATE TABLE sj_workflow notify_ids varchar2(128) DEFAULT '' NULL, bucket_index number DEFAULT 0 NOT NULL, version number NOT NULL, + owner_id number DEFAULT NULL NULL, ext_attrs varchar2(256) DEFAULT '' NULL, deleted smallint DEFAULT 0 NOT NULL, create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL, @@ -827,6 +816,7 @@ COMMENT ON COLUMN sj_workflow.wf_context IS '上下文'; COMMENT ON COLUMN sj_workflow.notify_ids IS '通知告警场景配置id列表'; COMMENT ON COLUMN sj_workflow.bucket_index IS 'bucket'; COMMENT ON COLUMN sj_workflow.version IS '版本号'; +COMMENT ON COLUMN sj_workflow.owner_id IS '负责人id'; COMMENT ON COLUMN sj_workflow.ext_attrs IS '扩展字段'; COMMENT ON COLUMN sj_workflow.deleted IS '逻辑删除 1、删除'; COMMENT ON COLUMN sj_workflow.create_dt IS '创建时间'; @@ -921,3 +911,30 @@ COMMENT ON COLUMN sj_workflow_task_batch.deleted IS '逻辑删除 1、删除'; COMMENT ON COLUMN sj_workflow_task_batch.create_dt IS '创建时间'; COMMENT ON COLUMN sj_workflow_task_batch.update_dt IS '修改时间'; COMMENT ON TABLE sj_workflow_task_batch IS '工作流批次'; + +-- sj_job_executor +CREATE TABLE sj_job_executor +( + id number GENERATED ALWAYS AS IDENTITY, + namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL, + group_name varchar2(64) NULL, + executor_info varchar2(256) NULL, + executor_type varchar2(3) NULL, + create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL, + update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL +); + +ALTER TABLE sj_job_executor + ADD CONSTRAINT pk_sj_job_executor PRIMARY KEY (id); + +CREATE INDEX idx_sj_job_executor_01 ON sj_job_executor (namespace_id, group_name); +CREATE INDEX idx_sj_job_executor_02 ON sj_job_executor (create_dt); + +COMMENT ON COLUMN sj_job_executor.id IS '主键'; +COMMENT ON COLUMN sj_job_executor.namespace_id IS '命名空间id'; +COMMENT ON COLUMN sj_job_executor.group_name IS '组名称'; +COMMENT ON COLUMN sj_job_executor.executor_info IS '任务执行器名称'; +COMMENT ON COLUMN sj_job_executor.executor_type IS '1:java 2:python 3:go'; +COMMENT ON COLUMN sj_job_executor.create_dt IS '创建时间'; +COMMENT ON COLUMN sj_job_executor.update_dt IS '修改时间'; +COMMENT ON TABLE sj_job_executor IS '任务执行器信息'; diff --git a/script/sql/postgres/postgres_ry_job.sql b/script/sql/postgres/postgres_ry_job.sql index 10612e65c..8cd32a850 100644 --- a/script/sql/postgres/postgres_ry_job.sql +++ b/script/sql/postgres/postgres_ry_job.sql @@ -2,7 +2,7 @@ SnailJob Database Transfer Tool Source Server Type : MySQL Target Server Type : PostgreSQL - Date: 2025-04-26 09:56:45 + Date: 2025-06-21 23:23:10 */ @@ -133,18 +133,19 @@ COMMENT ON TABLE sj_notify_recipient IS '告警通知接收人'; -- sj_retry_dead_letter CREATE TABLE sj_retry_dead_letter ( - id bigserial PRIMARY KEY, - namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', - group_name varchar(64) NOT NULL, - group_id bigint NOT NULL, - scene_name varchar(64) NOT NULL, - scene_id bigint NOT NULL, - idempotent_id varchar(64) NOT NULL, - biz_no varchar(64) NOT NULL DEFAULT '', - executor_name varchar(512) NOT NULL DEFAULT '', - args_str text NOT NULL, - ext_attrs text NOT NULL, - create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP + id bigserial PRIMARY KEY, + namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name varchar(64) NOT NULL, + group_id bigint NOT NULL, + scene_name varchar(64) NOT NULL, + scene_id bigint NOT NULL, + idempotent_id varchar(64) NOT NULL, + biz_no varchar(64) NOT NULL DEFAULT '', + executor_name varchar(512) NOT NULL DEFAULT '', + serializer_name varchar(32) NOT NULL DEFAULT 'jackson', + args_str text NOT NULL, + ext_attrs text NOT NULL, + create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX idx_sj_retry_dead_letter_01 ON sj_retry_dead_letter (namespace_id, group_name, scene_name); @@ -161,6 +162,7 @@ COMMENT ON COLUMN sj_retry_dead_letter.scene_id IS '场景ID'; COMMENT ON COLUMN sj_retry_dead_letter.idempotent_id IS '幂等id'; COMMENT ON COLUMN sj_retry_dead_letter.biz_no IS '业务编号'; COMMENT ON COLUMN sj_retry_dead_letter.executor_name IS '执行器名称'; +COMMENT ON COLUMN sj_retry_dead_letter.serializer_name IS '执行方法参数序列化器名称'; COMMENT ON COLUMN sj_retry_dead_letter.args_str IS '执行方法参数'; COMMENT ON COLUMN sj_retry_dead_letter.ext_attrs IS '扩展字段'; COMMENT ON COLUMN sj_retry_dead_letter.create_dt IS '创建时间'; @@ -180,6 +182,7 @@ CREATE TABLE sj_retry executor_name varchar(512) NOT NULL DEFAULT '', args_str text NOT NULL, ext_attrs text NOT NULL, + serializer_name varchar(32) NOT NULL DEFAULT 'jackson', next_trigger_at bigint NOT NULL, retry_count int NOT NULL DEFAULT 0, retry_status smallint NOT NULL DEFAULT 0, @@ -194,11 +197,10 @@ CREATE TABLE sj_retry CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (scene_id, task_type, idempotent_id, deleted); CREATE INDEX idx_sj_retry_01 ON sj_retry (biz_no); -CREATE INDEX idx_sj_retry_02 ON sj_retry (retry_status, bucket_index); -CREATE INDEX idx_sj_retry_03 ON sj_retry (parent_id); -CREATE INDEX idx_sj_retry_04 ON sj_retry (create_dt); -CREATE INDEX idx_sj_retry_05 ON sj_retry (idempotent_id); - +CREATE INDEX idx_sj_retry_02 ON sj_retry (idempotent_id); +CREATE INDEX idx_sj_retry_03 ON sj_retry (retry_status, bucket_index); +CREATE INDEX idx_sj_retry_04 ON sj_retry (parent_id); +CREATE INDEX idx_sj_retry_05 ON sj_retry (create_dt); COMMENT ON COLUMN sj_retry.id IS '主键'; COMMENT ON COLUMN sj_retry.namespace_id IS '命名空间id'; @@ -211,6 +213,7 @@ COMMENT ON COLUMN sj_retry.biz_no IS '业务编号'; COMMENT ON COLUMN sj_retry.executor_name IS '执行器名称'; COMMENT ON COLUMN sj_retry.args_str IS '执行方法参数'; COMMENT ON COLUMN sj_retry.ext_attrs IS '扩展字段'; +COMMENT ON COLUMN sj_retry.serializer_name IS '执行方法参数序列化器名称'; COMMENT ON COLUMN sj_retry.next_trigger_at IS '下次触发时间'; COMMENT ON COLUMN sj_retry.retry_count IS '重试次数'; COMMENT ON COLUMN sj_retry.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数'; @@ -306,6 +309,8 @@ CREATE TABLE sj_retry_scene_config cb_trigger_type smallint NOT NULL DEFAULT 1, cb_max_count int NOT NULL DEFAULT 16, cb_trigger_interval varchar(16) NOT NULL DEFAULT '', + owner_id bigint NULL DEFAULT NULL, + labels varchar(512) NULL DEFAULT '', description varchar(256) NOT NULL DEFAULT '', create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP @@ -330,6 +335,8 @@ COMMENT ON COLUMN sj_retry_scene_config.cb_status IS '回调状态 0、不开启 COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_type IS '1、默认等级 2、固定间隔时间 3、CRON 表达式'; COMMENT ON COLUMN sj_retry_scene_config.cb_max_count IS '回调的最大执行次数'; COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_interval IS '回调的最大执行次数'; +COMMENT ON COLUMN sj_retry_scene_config.owner_id IS '负责人id'; +COMMENT ON COLUMN sj_retry_scene_config.labels IS '标签'; COMMENT ON COLUMN sj_retry_scene_config.description IS '描述'; COMMENT ON COLUMN sj_retry_scene_config.create_dt IS '创建时间'; COMMENT ON COLUMN sj_retry_scene_config.update_dt IS '修改时间'; @@ -347,6 +354,7 @@ CREATE TABLE sj_server_node expire_at timestamp NOT NULL, node_type smallint NOT NULL, ext_attrs varchar(256) NULL DEFAULT '', + labels varchar(512) NULL DEFAULT '', create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ); @@ -365,6 +373,7 @@ COMMENT ON COLUMN sj_server_node.host_port IS '机器端口'; COMMENT ON COLUMN sj_server_node.expire_at IS '过期时间'; COMMENT ON COLUMN sj_server_node.node_type IS '节点类型 1、客户端 2、是服务端'; COMMENT ON COLUMN sj_server_node.ext_attrs IS '扩展字段'; +COMMENT ON COLUMN sj_server_node.labels IS '标签'; COMMENT ON COLUMN sj_server_node.create_dt IS '创建时间'; COMMENT ON COLUMN sj_server_node.update_dt IS '修改时间'; COMMENT ON TABLE sj_server_node IS '服务器节点'; @@ -372,7 +381,7 @@ COMMENT ON TABLE sj_server_node IS '服务器节点'; -- sj_distributed_lock CREATE TABLE sj_distributed_lock ( - name varchar(64) NOT NULL, + name varchar(64) NOT NULL PRIMARY KEY, lock_until timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), locked_at timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), locked_by varchar(255) NOT NULL, @@ -407,8 +416,8 @@ COMMENT ON COLUMN sj_system_user.create_dt IS '创建时间'; COMMENT ON COLUMN sj_system_user.update_dt IS '修改时间'; COMMENT ON TABLE sj_system_user IS '系统用户表'; --- pwd: admin -INSERT INTO sj_system_user VALUES (1, 'admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2, now(), now()); +INSERT INTO sj_system_user (username, password, role) +VALUES ('admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2); -- sj_system_user_permission CREATE TABLE sj_system_user_permission @@ -431,27 +440,6 @@ COMMENT ON COLUMN sj_system_user_permission.create_dt IS '创建时间'; COMMENT ON COLUMN sj_system_user_permission.update_dt IS '修改时间'; COMMENT ON TABLE sj_system_user_permission IS '系统用户权限表'; --- sj_sequence_alloc -CREATE TABLE sj_sequence_alloc -( - id bigserial PRIMARY KEY, - namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', - group_name varchar(64) NOT NULL DEFAULT '', - max_id bigint NOT NULL DEFAULT 1, - step int NOT NULL DEFAULT 100, - update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP -); - -CREATE UNIQUE INDEX uk_sj_sequence_alloc_01 ON sj_sequence_alloc (namespace_id, group_name); - -COMMENT ON COLUMN sj_sequence_alloc.id IS '主键'; -COMMENT ON COLUMN sj_sequence_alloc.namespace_id IS '命名空间id'; -COMMENT ON COLUMN sj_sequence_alloc.group_name IS '组名称'; -COMMENT ON COLUMN sj_sequence_alloc.max_id IS '最大id'; -COMMENT ON COLUMN sj_sequence_alloc.step IS '步长'; -COMMENT ON COLUMN sj_sequence_alloc.update_dt IS '更新时间'; -COMMENT ON TABLE sj_sequence_alloc IS '号段模式序号ID分配表'; - -- sj_job CREATE TABLE sj_job ( @@ -477,7 +465,8 @@ CREATE TABLE sj_job bucket_index int NOT NULL DEFAULT 0, resident smallint NOT NULL DEFAULT 0, notify_ids varchar(128) NOT NULL DEFAULT '', - owner_id bigint NULL, + owner_id bigint NULL DEFAULT NULL, + labels varchar(512) NULL DEFAULT '', description varchar(256) NOT NULL DEFAULT '', ext_attrs varchar(256) NULL DEFAULT '', deleted smallint NOT NULL DEFAULT 0, @@ -512,6 +501,7 @@ COMMENT ON COLUMN sj_job.bucket_index IS 'bucket'; COMMENT ON COLUMN sj_job.resident IS '是否是常驻任务'; COMMENT ON COLUMN sj_job.notify_ids IS '通知告警场景配置id列表'; COMMENT ON COLUMN sj_job.owner_id IS '负责人id'; +COMMENT ON COLUMN sj_job.labels IS '标签'; COMMENT ON COLUMN sj_job.description IS '描述'; COMMENT ON COLUMN sj_job.ext_attrs IS '扩展字段'; COMMENT ON COLUMN sj_job.deleted IS '逻辑删除 1、删除'; @@ -519,7 +509,7 @@ COMMENT ON COLUMN sj_job.create_dt IS '创建时间'; COMMENT ON COLUMN sj_job.update_dt IS '修改时间'; COMMENT ON TABLE sj_job IS '任务信息'; -INSERT INTO sj_job VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', 1, '', '', 0, now(), now()); +INSERT INTO sj_job VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', 1, '', '', '', 0, now(), now()); -- sj_job_log_message CREATE TABLE sj_job_log_message @@ -740,6 +730,7 @@ CREATE TABLE sj_workflow notify_ids varchar(128) NOT NULL DEFAULT '', bucket_index int NOT NULL DEFAULT 0, version int NOT NULL, + owner_id bigint NULL DEFAULT NULL, ext_attrs varchar(256) NULL DEFAULT '', deleted smallint NOT NULL DEFAULT 0, create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, @@ -765,6 +756,7 @@ COMMENT ON COLUMN sj_workflow.wf_context IS '上下文'; COMMENT ON COLUMN sj_workflow.notify_ids IS '通知告警场景配置id列表'; COMMENT ON COLUMN sj_workflow.bucket_index IS 'bucket'; COMMENT ON COLUMN sj_workflow.version IS '版本号'; +COMMENT ON COLUMN sj_workflow.owner_id IS '负责人id'; COMMENT ON COLUMN sj_workflow.ext_attrs IS '扩展字段'; COMMENT ON COLUMN sj_workflow.deleted IS '逻辑删除 1、删除'; COMMENT ON COLUMN sj_workflow.create_dt IS '创建时间'; @@ -853,3 +845,27 @@ COMMENT ON COLUMN sj_workflow_task_batch.deleted IS '逻辑删除 1、删除'; COMMENT ON COLUMN sj_workflow_task_batch.create_dt IS '创建时间'; COMMENT ON COLUMN sj_workflow_task_batch.update_dt IS '修改时间'; COMMENT ON TABLE sj_workflow_task_batch IS '工作流批次'; + +-- sj_job_executor +CREATE TABLE sj_job_executor +( + id bigserial PRIMARY KEY, + namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name varchar(64) NOT NULL, + executor_info varchar(256) NOT NULL, + executor_type varchar(3) NOT NULL, + create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE INDEX idx_sj_job_executor_01 ON sj_job_executor (namespace_id, group_name); +CREATE INDEX idx_sj_job_executor_02 ON sj_job_executor (create_dt); + +COMMENT ON COLUMN sj_job_executor.id IS '主键'; +COMMENT ON COLUMN sj_job_executor.namespace_id IS '命名空间id'; +COMMENT ON COLUMN sj_job_executor.group_name IS '组名称'; +COMMENT ON COLUMN sj_job_executor.executor_info IS '任务执行器名称'; +COMMENT ON COLUMN sj_job_executor.executor_type IS '1:java 2:python 3:go'; +COMMENT ON COLUMN sj_job_executor.create_dt IS '创建时间'; +COMMENT ON COLUMN sj_job_executor.update_dt IS '修改时间'; +COMMENT ON TABLE sj_job_executor IS '任务执行器信息'; diff --git a/script/sql/ry-job.sql b/script/sql/ry-job.sql index dd86deb45..1e75571d1 100644 --- a/script/sql/ry-job.sql +++ b/script/sql/ry-job.sql @@ -81,18 +81,20 @@ CREATE TABLE `sj_notify_recipient` CREATE TABLE `sj_retry_dead_letter` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', - `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id', - `group_name` varchar(64) NOT NULL COMMENT '组名称', - `group_id` bigint(20) NOT NULL COMMENT '组Id', - `scene_name` varchar(64) NOT NULL COMMENT '场景名称', - `scene_id` bigint(20) NOT NULL COMMENT '场景ID', - `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id', - `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号', - `executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称', - `args_str` text NOT NULL COMMENT '执行方法参数', - `ext_attrs` text NOT NULL COMMENT '扩展字段', - `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id', + `group_name` varchar(64) NOT NULL COMMENT '组名称', + `group_id` bigint(20) NOT NULL COMMENT '组Id', + `scene_name` varchar(64) NOT NULL COMMENT '场景名称', + `scene_id` bigint(20) NOT NULL COMMENT '场景ID', + `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id', + `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号', + `executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称', + -- jackson 兼容历史数据 预计1.8.0默认改为fury + `serializer_name` varchar(32) NOT NULL DEFAULT 'jackson' COMMENT '执行方法参数序列化器名称', + `args_str` text NOT NULL COMMENT '执行方法参数', + `ext_attrs` text NOT NULL COMMENT '扩展字段', + `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`), KEY `idx_idempotent_id` (`idempotent_id`), @@ -115,6 +117,8 @@ CREATE TABLE `sj_retry` `executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称', `args_str` text NOT NULL COMMENT '执行方法参数', `ext_attrs` text NOT NULL COMMENT '扩展字段', + -- jackson 兼容历史数据 预计1.8.0默认改为fury + `serializer_name` varchar(32) NOT NULL DEFAULT 'jackson' COMMENT '执行方法参数序列化器名称', `next_trigger_at` bigint(13) NOT NULL COMMENT '下次触发时间', `retry_count` int(11) NOT NULL DEFAULT 0 COMMENT '重试次数', `retry_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '重试状态 0、重试中 1、成功 2、最大重试次数', @@ -195,6 +199,8 @@ CREATE TABLE `sj_retry_scene_config` `cb_trigger_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式', `cb_max_count` int(11) NOT NULL DEFAULT 16 COMMENT '回调的最大执行次数', `cb_trigger_interval` varchar(16) NOT NULL DEFAULT '' COMMENT '回调的最大执行次数', + `owner_id` bigint(20) NULL DEFAULT NULL COMMENT '负责人id', + `labels` varchar(512) NULL DEFAULT '' COMMENT '标签', `description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', @@ -215,6 +221,7 @@ CREATE TABLE `sj_server_node` `expire_at` datetime NOT NULL COMMENT '过期时间', `node_type` tinyint(4) NOT NULL COMMENT '节点类型 1、客户端 2、是服务端', `ext_attrs` varchar(256) NULL DEFAULT '' COMMENT '扩展字段', + `labels` varchar(512) NULL DEFAULT '' COMMENT '标签', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), @@ -268,19 +275,6 @@ CREATE TABLE `sj_system_user_permission` ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='系统用户权限表'; -CREATE TABLE `sj_sequence_alloc` -( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', - `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id', - `group_name` varchar(64) NOT NULL DEFAULT '' COMMENT '组名称', - `max_id` bigint(20) NOT NULL DEFAULT 1 COMMENT '最大id', - `step` int(11) NOT NULL DEFAULT 100 COMMENT '步长', - `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_namespace_id_group_name` (`namespace_id`, `group_name`) -) ENGINE = InnoDB - DEFAULT CHARSET = utf8mb4 COMMENT ='号段模式序号ID分配表'; - -- 分布式调度DDL CREATE TABLE `sj_job` ( @@ -306,7 +300,8 @@ CREATE TABLE `sj_job` `bucket_index` int(11) NOT NULL DEFAULT 0 COMMENT 'bucket', `resident` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否是常驻任务', `notify_ids` varchar(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表', - `owner_id` bigint(20) NULL COMMENT '负责人id', + `owner_id` bigint(20) NULL DEFAULT NULL COMMENT '负责人id', + `labels` varchar(512) NULL DEFAULT '' COMMENT '标签', `description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述', `ext_attrs` varchar(256) NULL DEFAULT '' COMMENT '扩展字段', `deleted` tinyint(4) NOT NULL DEFAULT 0 COMMENT '逻辑删除 1、删除', @@ -320,7 +315,7 @@ CREATE TABLE `sj_job` AUTO_INCREMENT = 0 DEFAULT CHARSET = utf8mb4 COMMENT ='任务信息'; -INSERT INTO `sj_job` VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', 1, '', '', 0 , now(), now()); +INSERT INTO `sj_job` VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', 1, '','', '', 0 , now(), now()); CREATE TABLE `sj_job_log_message` ( @@ -461,6 +456,7 @@ CREATE TABLE `sj_workflow` `notify_ids` varchar(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表', `bucket_index` int(11) NOT NULL DEFAULT 0 COMMENT 'bucket', `version` int(11) NOT NULL COMMENT '版本号', + `owner_id` bigint(20) NULL DEFAULT NULL COMMENT '负责人id', `ext_attrs` varchar(256) NULL DEFAULT '' COMMENT '扩展字段', `deleted` tinyint(4) NOT NULL DEFAULT 0 COMMENT '逻辑删除 1、删除', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', @@ -510,7 +506,7 @@ CREATE TABLE `sj_workflow_task_batch` `wf_context` text DEFAULT NULL COMMENT '全局上下文', `execution_at` bigint(13) NOT NULL DEFAULT 0 COMMENT '任务执行时间', `ext_attrs` varchar(256) NULL DEFAULT '' COMMENT '扩展字段', - `version` int(11) NOT NULL DEFAULT 1 COMMENT '版本号', + `version` int(11) NOT NULL DEFAULT 1 COMMENT '版本号', `deleted` tinyint(4) NOT NULL DEFAULT 0 COMMENT '逻辑删除 1、删除', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', @@ -521,3 +517,19 @@ CREATE TABLE `sj_workflow_task_batch` ) ENGINE = InnoDB AUTO_INCREMENT = 0 DEFAULT CHARSET = utf8mb4 COMMENT ='工作流批次'; + +CREATE TABLE `sj_job_executor` +( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id', + `group_name` varchar(64) NOT NULL COMMENT '组名称', + `executor_info` varchar(256) NOT NULL COMMENT '任务执行器名称', + `executor_type` varchar(3) NOT NULL COMMENT '1:java 2:python 3:go', + `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`), + KEY `idx_namespace_id_group_name` (`namespace_id`, `group_name`), + KEY `idx_create_dt` (`create_dt`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='任务执行器信息'; -- Gitee From e0f68ef605128dde61a0c1566d9c2e5771387dca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 21 Jul 2025 16:40:56 +0800 Subject: [PATCH 050/155] =?UTF-8?q?remove=20=E9=87=8D=E5=A4=A7=E6=94=B9?= =?UTF-8?q?=E5=8A=A8=20=E5=88=A0=E9=99=A4sentinel=E6=89=80=E6=9C=89?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD(=E4=B8=BA=E4=BB=80?= =?UTF-8?q?=E4=B9=88=E5=88=A0=E9=99=A4=20=E6=9F=A5=E7=9C=8B=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E8=AF=A6=E7=BB=86=E8=AF=B4=E6=98=8E=20https://plus-do?= =?UTF-8?q?c.dromara.org/#/questions/sentinel=5F404)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .run/ruoyi-sentinel-dashboard.run.xml | 12 -- ruoyi-auth/pom.xml | 5 - ruoyi-common/pom.xml | 1 - ruoyi-common/ruoyi-common-alibaba-bom/pom.xml | 106 ---------- ruoyi-common/ruoyi-common-bom/pom.xml | 7 - ruoyi-common/ruoyi-common-sentinel/pom.xml | 51 ----- .../SentinelCustomAutoConfiguration.java | 52 ----- .../config/SentinelCustomProperties.java | 17 -- ...ot.autoconfigure.AutoConfiguration.imports | 1 - ruoyi-example/ruoyi-demo/pom.xml | 5 - ruoyi-example/ruoyi-test-mq/pom.xml | 5 - ruoyi-gateway/pom.xml | 17 -- .../callback/DefaultBlockRequestHandler.java | 96 --------- .../gateway/RuoYiGatewayApplication.java | 2 - .../dromara/gateway/config/GatewayConfig.java | 10 +- .../handler/SentinelFallbackHandler.java | 36 ---- ruoyi-modules/ruoyi-resource/pom.xml | 5 - ruoyi-modules/ruoyi-system/pom.xml | 5 - ruoyi-visual/pom.xml | 1 - .../ruoyi-sentinel-dashboard/Dockerfile | 24 --- ruoyi-visual/ruoyi-sentinel-dashboard/pom.xml | 186 ------------------ .../dashboard/DashboardApplication.java | 38 ---- .../dashboard/filter/ActuatorAuthFilter.java | 63 ------ .../dashboard/filter/SecurityConfig.java | 29 --- .../src/main/resources/application.properties | 1 - .../src/main/resources/application.yml | 37 ---- .../src/main/resources/banner.txt | 8 - .../lib/sentinel-dashboard-1.8.8.jar | Bin 1137159 -> 0 bytes .../src/main/resources/logback-common.xml | 97 --------- .../src/main/resources/logback-plus.xml | 28 --- script/config/nacos/application-common.yml | 14 -- script/config/nacos/ruoyi-gateway.yml | 17 -- .../config/nacos/ruoyi-sentinel-dashboard.yml | 27 --- .../config/nacos/sentinel-ruoyi-gateway.json | 26 --- script/docker/docker-compose.yml | 15 -- script/sql/oracle/oracle_ry_cloud.sql | 1 - script/sql/postgres/postgres_ry_cloud.sql | 1 - script/sql/ry-cloud.sql | 1 - script/sql/ry-config.sql | 4 - 39 files changed, 1 insertion(+), 1050 deletions(-) delete mode 100644 .run/ruoyi-sentinel-dashboard.run.xml delete mode 100644 ruoyi-common/ruoyi-common-sentinel/pom.xml delete mode 100644 ruoyi-common/ruoyi-common-sentinel/src/main/java/org/dromara/common/sentinel/config/SentinelCustomAutoConfiguration.java delete mode 100644 ruoyi-common/ruoyi-common-sentinel/src/main/java/org/dromara/common/sentinel/config/SentinelCustomProperties.java delete mode 100644 ruoyi-common/ruoyi-common-sentinel/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 ruoyi-gateway/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/sc/callback/DefaultBlockRequestHandler.java delete mode 100644 ruoyi-gateway/src/main/java/org/dromara/gateway/handler/SentinelFallbackHandler.java delete mode 100644 ruoyi-visual/ruoyi-sentinel-dashboard/Dockerfile delete mode 100644 ruoyi-visual/ruoyi-sentinel-dashboard/pom.xml delete mode 100644 ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/DashboardApplication.java delete mode 100644 ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/filter/ActuatorAuthFilter.java delete mode 100644 ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/filter/SecurityConfig.java delete mode 100644 ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/application.properties delete mode 100644 ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/application.yml delete mode 100644 ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/banner.txt delete mode 100644 ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/lib/sentinel-dashboard-1.8.8.jar delete mode 100644 ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/logback-common.xml delete mode 100644 ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/logback-plus.xml delete mode 100644 script/config/nacos/ruoyi-sentinel-dashboard.yml delete mode 100644 script/config/nacos/sentinel-ruoyi-gateway.json diff --git a/.run/ruoyi-sentinel-dashboard.run.xml b/.run/ruoyi-sentinel-dashboard.run.xml deleted file mode 100644 index 4c08241b8..000000000 --- a/.run/ruoyi-sentinel-dashboard.run.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - diff --git a/ruoyi-auth/pom.xml b/ruoyi-auth/pom.xml index 86bf0b99d..89085a0df 100644 --- a/ruoyi-auth/pom.xml +++ b/ruoyi-auth/pom.xml @@ -26,11 +26,6 @@ hutool-captcha - - org.dromara - ruoyi-common-sentinel - - org.dromara diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index a17a0914d..29222e0be 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -32,7 +32,6 @@ ruoyi-common-sms ruoyi-common-logstash ruoyi-common-elasticsearch - ruoyi-common-sentinel ruoyi-common-skylog ruoyi-common-prometheus ruoyi-common-translation diff --git a/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml b/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml index 51a935abb..c119eb77a 100644 --- a/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml +++ b/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml @@ -16,7 +16,6 @@ 2.4.1 2023.0.3.3 - 1.8.8 2.4.0 2.5.1 3.3.5 @@ -36,111 +35,6 @@ nacos-client ${nacos.client.version} - - com.alibaba.csp - sentinel-core - ${sentinel.version} - - - com.alibaba.csp - sentinel-parameter-flow-control - ${sentinel.version} - - - com.alibaba.csp - sentinel-datasource-extension - ${sentinel.version} - - - com.alibaba.csp - sentinel-datasource-apollo - ${sentinel.version} - - - com.alibaba.csp - sentinel-datasource-zookeeper - ${sentinel.version} - - - com.alibaba.csp - sentinel-datasource-nacos - ${sentinel.version} - - - com.alibaba.csp - sentinel-datasource-redis - ${sentinel.version} - - - com.alibaba.csp - sentinel-datasource-consul - ${sentinel.version} - - - com.alibaba.csp - sentinel-web-servlet - ${sentinel.version} - - - com.alibaba.csp - sentinel-spring-cloud-gateway-adapter - ${sentinel.version} - - - com.alibaba.csp - sentinel-transport-simple-http - ${sentinel.version} - - - com.alibaba.csp - sentinel-annotation-aspectj - ${sentinel.version} - - - com.alibaba.csp - sentinel-reactor-adapter - ${sentinel.version} - - - com.alibaba.csp - sentinel-cluster-server-default - ${sentinel.version} - - - com.alibaba.csp - sentinel-cluster-client-default - ${sentinel.version} - - - com.alibaba.csp - sentinel-spring-webflux-adapter - ${sentinel.version} - - - com.alibaba.csp - sentinel-api-gateway-adapter-common - ${sentinel.version} - - - com.alibaba.csp - sentinel-spring-webmvc-v6x-adapter - ${sentinel.version} - - - com.alibaba.csp - sentinel-dubbo-adapter - ${sentinel.version} - - - com.alibaba.csp - sentinel-apache-dubbo-adapter - ${sentinel.version} - - - com.alibaba.csp - sentinel-apache-dubbo3-adapter - ${sentinel.version} - org.apache.seata seata-spring-boot-starter diff --git a/ruoyi-common/ruoyi-common-bom/pom.xml b/ruoyi-common/ruoyi-common-bom/pom.xml index 449a1a7f4..1a57de621 100644 --- a/ruoyi-common/ruoyi-common-bom/pom.xml +++ b/ruoyi-common/ruoyi-common-bom/pom.xml @@ -166,13 +166,6 @@ ${revision} - - - org.dromara - ruoyi-common-sentinel - ${revision} - - org.dromara diff --git a/ruoyi-common/ruoyi-common-sentinel/pom.xml b/ruoyi-common/ruoyi-common-sentinel/pom.xml deleted file mode 100644 index 3185baf7a..000000000 --- a/ruoyi-common/ruoyi-common-sentinel/pom.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - org.dromara - ruoyi-common - ${revision} - - 4.0.0 - - ruoyi-common-sentinel - - - ruoyi-common-sentinel 限流模块 - - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-sentinel - - - - - com.alibaba.csp - sentinel-datasource-nacos - - - com.alibaba.csp - sentinel-apache-dubbo3-adapter - - - - com.fasterxml.jackson.dataformat - jackson-dataformat-xml - true - - - - org.dromara - ruoyi-common-core - - - - org.springframework.boot - spring-boot-autoconfigure - - - - diff --git a/ruoyi-common/ruoyi-common-sentinel/src/main/java/org/dromara/common/sentinel/config/SentinelCustomAutoConfiguration.java b/ruoyi-common/ruoyi-common-sentinel/src/main/java/org/dromara/common/sentinel/config/SentinelCustomAutoConfiguration.java deleted file mode 100644 index ad48924ae..000000000 --- a/ruoyi-common/ruoyi-common-sentinel/src/main/java/org/dromara/common/sentinel/config/SentinelCustomAutoConfiguration.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.dromara.common.sentinel.config; - -import com.alibaba.cloud.commons.lang.StringUtils; -import com.alibaba.cloud.sentinel.SentinelProperties; -import com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration; -import com.alibaba.csp.sentinel.init.InitExecutor; -import com.alibaba.csp.sentinel.transport.config.TransportConfig; -import org.dromara.common.core.utils.StreamUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.AutoConfiguration; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.cloud.client.ServiceInstance; -import org.springframework.cloud.client.discovery.DiscoveryClient; -import org.springframework.context.annotation.Bean; - -import java.util.List; - -/** - * @author Lion Li - */ -@AutoConfiguration(before = SentinelAutoConfiguration.class) -@EnableConfigurationProperties({SentinelProperties.class, SentinelCustomProperties.class}) -public class SentinelCustomAutoConfiguration { - - @Autowired - private SentinelProperties properties; - @Autowired - private SentinelCustomProperties customProperties; - @Autowired - private DiscoveryClient discoveryClient; - - @Bean - public Object sentinelInit() { - if (StringUtils.isNotBlank(customProperties.getServerName())) { - List instances = discoveryClient.getInstances(customProperties.getServerName()); - String serverList = StreamUtils.join(instances, instance -> - String.format("http://%s:%s", instance.getHost(), instance.getPort())); - System.setProperty(TransportConfig.CONSOLE_SERVER, serverList); - } else { - if (StringUtils.isEmpty(System.getProperty(TransportConfig.CONSOLE_SERVER)) - && StringUtils.isNotBlank(properties.getTransport().getDashboard())) { - System.setProperty(TransportConfig.CONSOLE_SERVER, - properties.getTransport().getDashboard()); - } - } - // 手动初始化 sentinel - InitExecutor.doInit(); - return new Object(); - } - - -} diff --git a/ruoyi-common/ruoyi-common-sentinel/src/main/java/org/dromara/common/sentinel/config/SentinelCustomProperties.java b/ruoyi-common/ruoyi-common-sentinel/src/main/java/org/dromara/common/sentinel/config/SentinelCustomProperties.java deleted file mode 100644 index 0cd3982c4..000000000 --- a/ruoyi-common/ruoyi-common-sentinel/src/main/java/org/dromara/common/sentinel/config/SentinelCustomProperties.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.dromara.common.sentinel.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * sentinel自定义配置类 - * - * @author Lion Li - */ -@Data -@ConfigurationProperties(prefix = "spring.cloud.sentinel.transport") -public class SentinelCustomProperties { - - private String serverName; - -} diff --git a/ruoyi-common/ruoyi-common-sentinel/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-common/ruoyi-common-sentinel/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 68693d427..000000000 --- a/ruoyi-common/ruoyi-common-sentinel/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -org.dromara.common.sentinel.config.SentinelCustomAutoConfiguration diff --git a/ruoyi-example/ruoyi-demo/pom.xml b/ruoyi-example/ruoyi-demo/pom.xml index 9fca13693..d6ed90eff 100644 --- a/ruoyi-example/ruoyi-demo/pom.xml +++ b/ruoyi-example/ruoyi-demo/pom.xml @@ -22,11 +22,6 @@ ruoyi-common-nacos - - org.dromara - ruoyi-common-sentinel - - org.dromara ruoyi-common-log diff --git a/ruoyi-example/ruoyi-test-mq/pom.xml b/ruoyi-example/ruoyi-test-mq/pom.xml index dc29d327d..98d7ebc2a 100644 --- a/ruoyi-example/ruoyi-test-mq/pom.xml +++ b/ruoyi-example/ruoyi-test-mq/pom.xml @@ -34,11 +34,6 @@ spring-kafka - - org.dromara - ruoyi-common-sentinel - - org.dromara ruoyi-common-security diff --git a/ruoyi-gateway/pom.xml b/ruoyi-gateway/pom.xml index 0f287d857..bd51d9311 100644 --- a/ruoyi-gateway/pom.xml +++ b/ruoyi-gateway/pom.xml @@ -37,12 +37,6 @@ ruoyi-common-nacos - - - com.alibaba.cloud - spring-cloud-alibaba-sentinel-gateway - - org.springframework.boot @@ -61,17 +55,6 @@ ${satoken.version} - - org.dromara - ruoyi-common-sentinel - - - com.alibaba.csp - sentinel-apache-dubbo3-adapter - - - - org.dromara ruoyi-common-satoken diff --git a/ruoyi-gateway/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/sc/callback/DefaultBlockRequestHandler.java b/ruoyi-gateway/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/sc/callback/DefaultBlockRequestHandler.java deleted file mode 100644 index 409d4f00e..000000000 --- a/ruoyi-gateway/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/sc/callback/DefaultBlockRequestHandler.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 1999-2019 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.csp.sentinel.adapter.gateway.sc.callback; - -import org.springframework.http.HttpStatus; -import org.springframework.http.InvalidMediaTypeException; -import org.springframework.http.MediaType; -import org.springframework.util.MimeTypeUtils; -import org.springframework.web.reactive.function.server.ServerResponse; -import org.springframework.web.server.ServerWebExchange; -import reactor.core.publisher.Mono; - -import java.util.List; - -import static org.springframework.web.reactive.function.BodyInserters.fromObject; - -// https://github.com/alibaba/Sentinel/issues/3298 -// 临时解决 sentinel 限流插件 jdk17 报错问题 -/** - * The default implementation of {@link BlockRequestHandler}. - * Compatible with Spring WebFlux and Spring Cloud Gateway. - * - * @author Eric Zhao - */ -public class DefaultBlockRequestHandler implements BlockRequestHandler { - - private static final String DEFAULT_BLOCK_MSG_PREFIX = "Blocked by Sentinel: "; - - @Override - public Mono handleRequest(ServerWebExchange exchange, Throwable ex) { - if (acceptsHtml(exchange)) { - return htmlErrorResponse(ex); - } - // JSON result by default. - return ServerResponse.status(HttpStatus.TOO_MANY_REQUESTS) - .contentType(MediaType.APPLICATION_JSON_UTF8) - .body(fromObject(buildErrorResult(ex))); - } - - private Mono htmlErrorResponse(Throwable ex) { - return ServerResponse.status(HttpStatus.TOO_MANY_REQUESTS) - .contentType(MediaType.TEXT_PLAIN) - .syncBody(DEFAULT_BLOCK_MSG_PREFIX + ex.getClass().getSimpleName()); - } - - private ErrorResult buildErrorResult(Throwable ex) { - return new ErrorResult(HttpStatus.TOO_MANY_REQUESTS.value(), - DEFAULT_BLOCK_MSG_PREFIX + ex.getClass().getSimpleName()); - } - - /** - * Reference from {@code DefaultErrorWebExceptionHandler} of Spring Boot. - */ - private boolean acceptsHtml(ServerWebExchange exchange) { - try { - List acceptedMediaTypes = exchange.getRequest().getHeaders().getAccept(); - acceptedMediaTypes.remove(MediaType.ALL); - MimeTypeUtils. sortBySpecificity(acceptedMediaTypes); - return acceptedMediaTypes.stream() - .anyMatch(MediaType.TEXT_HTML::isCompatibleWith); - } catch (InvalidMediaTypeException ex) { - return false; - } - } - - private static class ErrorResult { - private final int code; - private final String message; - - ErrorResult(int code, String message) { - this.code = code; - this.message = message; - } - - public int getCode() { - return code; - } - - public String getMessage() { - return message; - } - } -} diff --git a/ruoyi-gateway/src/main/java/org/dromara/gateway/RuoYiGatewayApplication.java b/ruoyi-gateway/src/main/java/org/dromara/gateway/RuoYiGatewayApplication.java index 4f644533d..a20dfe450 100644 --- a/ruoyi-gateway/src/main/java/org/dromara/gateway/RuoYiGatewayApplication.java +++ b/ruoyi-gateway/src/main/java/org/dromara/gateway/RuoYiGatewayApplication.java @@ -13,8 +13,6 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class RuoYiGatewayApplication { public static void main(String[] args) { - // 标记 sentinel 类型为 网关 - System.setProperty("csp.sentinel.app.type", "1"); SpringApplication application = new SpringApplication(RuoYiGatewayApplication.class); application.setApplicationStartup(new BufferingApplicationStartup(2048)); application.run(args); diff --git a/ruoyi-gateway/src/main/java/org/dromara/gateway/config/GatewayConfig.java b/ruoyi-gateway/src/main/java/org/dromara/gateway/config/GatewayConfig.java index d3b40dd4d..99211d9a2 100644 --- a/ruoyi-gateway/src/main/java/org/dromara/gateway/config/GatewayConfig.java +++ b/ruoyi-gateway/src/main/java/org/dromara/gateway/config/GatewayConfig.java @@ -1,10 +1,6 @@ package org.dromara.gateway.config; -import org.dromara.gateway.handler.SentinelFallbackHandler; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; /** * 网关限流配置 @@ -13,9 +9,5 @@ import org.springframework.core.annotation.Order; */ @Configuration public class GatewayConfig { - @Bean - @Order(Ordered.HIGHEST_PRECEDENCE) - public SentinelFallbackHandler sentinelGatewayExceptionHandler() { - return new SentinelFallbackHandler(); - } + } diff --git a/ruoyi-gateway/src/main/java/org/dromara/gateway/handler/SentinelFallbackHandler.java b/ruoyi-gateway/src/main/java/org/dromara/gateway/handler/SentinelFallbackHandler.java deleted file mode 100644 index 0aec08826..000000000 --- a/ruoyi-gateway/src/main/java/org/dromara/gateway/handler/SentinelFallbackHandler.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.dromara.gateway.handler; - -import com.alibaba.csp.sentinel.adapter.gateway.sc.callback.GatewayCallbackManager; -import com.alibaba.csp.sentinel.slots.block.BlockException; -import org.dromara.gateway.utils.WebFluxUtils; -import org.springframework.web.reactive.function.server.ServerResponse; -import org.springframework.web.server.ServerWebExchange; -import org.springframework.web.server.WebExceptionHandler; -import reactor.core.publisher.Mono; - -/** - * 自定义限流异常处理 - * - * @author ruoyi - */ -public class SentinelFallbackHandler implements WebExceptionHandler { - private Mono writeResponse(ServerResponse response, ServerWebExchange exchange) { - return WebFluxUtils.webFluxResponseWriter(exchange.getResponse(), "请求超过最大数,请稍候再试"); - } - - @Override - public Mono handle(ServerWebExchange exchange, Throwable ex) { - ex.printStackTrace(); - if (exchange.getResponse().isCommitted()) { - return Mono.error(ex); - } - if (!BlockException.isBlockException(ex)) { - return Mono.error(ex); - } - return handleBlockedRequest(exchange, ex).flatMap(response -> writeResponse(response, exchange)); - } - - private Mono handleBlockedRequest(ServerWebExchange exchange, Throwable throwable) { - return GatewayCallbackManager.getBlockHandler().handleRequest(exchange, throwable); - } -} diff --git a/ruoyi-modules/ruoyi-resource/pom.xml b/ruoyi-modules/ruoyi-resource/pom.xml index 245de01ca..dac64e73a 100644 --- a/ruoyi-modules/ruoyi-resource/pom.xml +++ b/ruoyi-modules/ruoyi-resource/pom.xml @@ -22,11 +22,6 @@ ruoyi-common-nacos - - org.dromara - ruoyi-common-sentinel - - org.dromara ruoyi-common-doc diff --git a/ruoyi-modules/ruoyi-system/pom.xml b/ruoyi-modules/ruoyi-system/pom.xml index 55c3547bf..44730eaca 100644 --- a/ruoyi-modules/ruoyi-system/pom.xml +++ b/ruoyi-modules/ruoyi-system/pom.xml @@ -22,11 +22,6 @@ ruoyi-common-nacos - - org.dromara - ruoyi-common-sentinel - - org.dromara diff --git a/ruoyi-visual/pom.xml b/ruoyi-visual/pom.xml index b3335573a..f5894c1e8 100644 --- a/ruoyi-visual/pom.xml +++ b/ruoyi-visual/pom.xml @@ -10,7 +10,6 @@ ruoyi-monitor - ruoyi-sentinel-dashboard ruoyi-seata-server ruoyi-nacos ruoyi-snailjob-server diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/Dockerfile b/ruoyi-visual/ruoyi-sentinel-dashboard/Dockerfile deleted file mode 100644 index e5707f9f9..000000000 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/Dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ -FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds -#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds -#FROM findepi/graalvm:java17-native - -LABEL maintainer="Lion Li" - -RUN mkdir -p /ruoyi/sentinel-dashboard/logs \ - /ruoyi/skywalking/agent - -WORKDIR /ruoyi/sentinel-dashboard - -ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS="" - -EXPOSE 8718 - -ADD ./target/ruoyi-sentinel-dashboard.jar ./app.jar - -SHELL ["/bin/bash", "-c"] - -ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom \ - #-Dskywalking.agent.service_name=ruoyi-sentinel-dashboard \ - #-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar \ - ${JAVA_OPTS} -jar app.jar diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/pom.xml b/ruoyi-visual/ruoyi-sentinel-dashboard/pom.xml deleted file mode 100644 index 007751da1..000000000 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/pom.xml +++ /dev/null @@ -1,186 +0,0 @@ - - - 4.0.0 - - - org.dromara - ruoyi-visual - ${revision} - - - ruoyi-sentinel-dashboard - jar - - - 1.8.8 - 4.0.1 - 2.7.18 - 2021.0.7 - 2021.0.4.0 - 7.2 - - - - - - org.springframework.boot - spring-boot-dependencies - ${spring-boot.version} - pom - import - - - org.springframework.cloud - spring-cloud-dependencies - ${spring-cloud.version} - pom - import - - - com.alibaba.cloud - spring-cloud-alibaba-dependencies - ${spring-cloud-alibaba.version} - pom - import - - - - - - - - org.dromara - ruoyi-common-nacos - - - - com.alibaba.csp - sentinel-dashboard - ${sentinel.version} - system - ${project.basedir}/src/main/resources/lib/sentinel-dashboard-${sentinel.version}.jar - - - - com.alibaba.csp - sentinel-core - - - com.alibaba.csp - sentinel-web-servlet - - - com.alibaba.csp - sentinel-transport-simple-http - - - com.alibaba.csp - sentinel-parameter-flow-control - - - com.alibaba.csp - sentinel-api-gateway-adapter-common - - - - - org.springframework.boot - spring-boot-starter-web - - - * - org.apache.logging.log4j - - - - - - - org.apache.tomcat.embed - tomcat-embed-websocket - 9.0.105 - - - org.apache.tomcat.embed - tomcat-embed-core - 9.0.105 - - - org.apache.tomcat.embed - tomcat-embed-el - 9.0.105 - - - - - org.springframework.boot - spring-boot-starter-actuator - - - - commons-lang - commons-lang - 2.6 - - - - org.apache.httpcomponents - httpclient - - - org.apache.httpcomponents - httpcore - - - org.apache.httpcomponents - httpasyncclient - - - org.apache.httpcomponents - httpcore-nio - - - com.alibaba - fastjson - - - - ch.qos.logback - logback-classic - - - ch.qos.logback - logback-core - - - - net.logstash.logback - logstash-logback-encoder - ${logstash-logback-encoder.version} - - - - - ${project.artifactId} - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot.version} - - - - repackage - - - - - - true - - - - - - diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/DashboardApplication.java b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/DashboardApplication.java deleted file mode 100644 index be4492170..000000000 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/DashboardApplication.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 1999-2018 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.csp.sentinel.dashboard; - -import com.alibaba.csp.sentinel.init.InitExecutor; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -/** - * Sentinel dashboard application. - * - * @author Carpenter Lee - */ -@SpringBootApplication -public class DashboardApplication { - - public static void main(String[] args) { - triggerSentinelInit(); - SpringApplication.run(DashboardApplication.class, args); - } - - private static void triggerSentinelInit() { - new Thread(() -> InitExecutor.doInit()).start(); - } -} diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/filter/ActuatorAuthFilter.java b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/filter/ActuatorAuthFilter.java deleted file mode 100644 index c423be9a5..000000000 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/filter/ActuatorAuthFilter.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.alibaba.csp.sentinel.dashboard.filter; - -import javax.servlet.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.Base64; - -public class ActuatorAuthFilter implements Filter { - - private final String username; - private final String password; - - public ActuatorAuthFilter(String username, String password) { - this.username = username; - this.password = password; - } - - @Override - public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - HttpServletRequest request = (HttpServletRequest) servletRequest; - HttpServletResponse response = (HttpServletResponse) servletResponse; - - // 获取 Authorization 头 - String authHeader = request.getHeader("Authorization"); - - if (authHeader == null || !authHeader.startsWith("Basic ")) { - // 如果没有提供 Authorization 或者格式不对,则返回 401 - response.setHeader("WWW-Authenticate", "Basic realm=\"realm\""); - response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized"); - return; - } - - // 解码 Base64 编码的用户名和密码 - String base64Credentials = authHeader.substring("Basic ".length()); - byte[] credDecoded = Base64.getDecoder().decode(base64Credentials); - String credentials = new String(credDecoded, StandardCharsets.UTF_8); - String[] split = credentials.split(":"); - if (split.length != 2) { - response.setHeader("WWW-Authenticate", "Basic realm=\"realm\""); - response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized"); - return; - } - // 验证用户名和密码 - if (!username.equals(split[0]) || !password.equals(split[1])) { - response.setHeader("WWW-Authenticate", "Basic realm=\"realm\""); - response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized"); - return; - } - // 如果认证成功,继续处理请求 - filterChain.doFilter(request, response); - } - - @Override - public void init(FilterConfig filterConfig) { - } - - @Override - public void destroy() { - } - -} diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/filter/SecurityConfig.java b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/filter/SecurityConfig.java deleted file mode 100644 index 8d01fbbd7..000000000 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/filter/SecurityConfig.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.alibaba.csp.sentinel.dashboard.filter; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.web.servlet.FilterRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * 权限安全配置 - * - * @author Lion Li - */ -@Configuration -public class SecurityConfig { - - @Value("${spring.cloud.nacos.discovery.metadata.username}") - private String username; - @Value("${spring.cloud.nacos.discovery.metadata.userpassword}") - private String password; - - @Bean - public FilterRegistrationBean actuatorFilterRegistrationBean() { - FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); - registrationBean.setFilter(new ActuatorAuthFilter(username, password)); - registrationBean.addUrlPatterns("/actuator", "/actuator/*"); - return registrationBean; - } - -} diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/application.properties b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/application.properties deleted file mode 100644 index b12af6be2..000000000 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -# 覆盖sentinel内置配置 不可删除 diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/application.yml b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/application.yml deleted file mode 100644 index 9ae2e0036..000000000 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/application.yml +++ /dev/null @@ -1,37 +0,0 @@ -# Tomcat -server: - port: 8718 - -# Spring -spring: - application: - # 应用名称 - name: ruoyi-sentinel-dashboard - profiles: - # 环境配置 - active: @profiles.active@ - -sentinel: - dashboard: - version: @sentinel.version@ - ---- # nacos 配置 -spring: - cloud: - nacos: - # nacos 服务地址 - server-addr: @nacos.server@ - username: @nacos.username@ - password: @nacos.password@ - discovery: - # 注册组 - group: @nacos.discovery.group@ - namespace: ${spring.profiles.active} - config: - # 配置组 - group: @nacos.config.group@ - namespace: ${spring.profiles.active} - config: - import: - - optional:nacos:application-common.yml - - optional:nacos:${spring.application.name}.yml diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/banner.txt b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/banner.txt deleted file mode 100644 index e081fef6f..000000000 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/banner.txt +++ /dev/null @@ -1,8 +0,0 @@ -Spring Boot Version: ${spring-boot.version} -Spring Application Name: ${spring.application.name} - _ _ _ _ _ _ _ - | | (_) | | | | | | | | | | - ___ ___ _ __ | |_ _ _ __ ___| |______ __| | __ _ ___| |__ | |__ ___ __ _ _ __ __| | -/ __|/ _ \ '_ \| __| | '_ \ / _ \ |______/ _` |/ _` / __| '_ \| '_ \ / _ \ / _` | '__/ _` | -\__ \ __/ | | | |_| | | | | __/ | | (_| | (_| \__ \ | | | |_) | (_) | (_| | | | (_| | -|___/\___|_| |_|\__|_|_| |_|\___|_| \__,_|\__,_|___/_| |_|_.__/ \___/ \__,_|_| \__,_| diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/lib/sentinel-dashboard-1.8.8.jar b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/lib/sentinel-dashboard-1.8.8.jar deleted file mode 100644 index 18122a0f4190b32a5f2913a9d34e884014d84fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1137159 zcmb@t1ymhdwl$2qOYq<>!5tFZ-JOFU+&#hFonXNU?(XjH?(P~OB>bfB?bn^|*SYEU ze~eKBTWg-R_tHJ9N?r;a0uBTO1_T5y-cb|epT1yUewGnY7ND1q6@4TBB8KrI2J<&D zZFsXg`Imnyyj(AT{fC&0fUJb5h>|jcjOew@$gs2&J;NlT6g|z@$au9P;|$Bju04aK z44s6`q*GCi;)M*I)Tq*hJ%S?40JY5ch!W!*3sj*U&FF~4Tfpw?-B@qN&qZ@1^@%VFC+j_x}~z-pTS;yFmY&xIhO(8)swtU#ye+$v^TbMGIsb?x#9djnd{*Al8e9C)Zg{< zAJ#hC`~vEC6X$=R{yMtGJe}zx-A9Y^J z*Z&dK1Zep(_x);n@cyIj%X#8g ziiH1B@y|s0l``dDEB|$1VE#LZqnqU~gW<=4?&tk?1{%Bk%2NFQpz+tE$G>~!kI(v@ zL(so_;&wbg$C@Yi1XPaF2vny5e9?%-hj%lh;$?*Bs^ zX!WbzLH_9zjDWwK#nAs<*wEoup@R1B3g*9(|G9v_q}wlw{m6!-sGid z|H_)5cmIdRFOC0M{Ko|P)3o!igv*be{~yA|3gB$~&xe4275-6L{zdqO17Y}+;b8cg zxA<4(A18>vQ2slOLH~0q{=otLU|?G01itlyf`Al)gMj>KoiEMH5@`6cL>p@cTYDQ@ zV|z!Su|uhnjKvBgN-OjgAryN)mPUSjBKd~J!0Xu8OBs@|nm|k1$)MtxYP`g6=LwcJ zX()H9eldK6HftlirJs?PYTscSavxs#GV&U3JTPK&aUZH&UGzbRI3a*%M8%}Tz!rYL zz0TMEge*i^2Q`b}>{c1O_7(_1NtcoAIY2=+wRTCJxWAAxk*CgzEGb`qOY%8rkS`l| zz3$v2m40P|1@}y7xZo}|dcv8X_maT+c=X%o7xKDElQL%~Y&4uTx3GSi#=_VcHACFI;()My~<>*wcm(FrzPP@BC4zxiZ8aZmY?km_@KJ~;cM z!AV(dCYI^i<+m*!*Z z($E?uQFIs8^tCiqyOJZy~?Mgs((tT^pyc8os*D= zVDv}$Fw*SpMwQ9B3xe%7c6*JsUT9kP#g_{BuC+2MZ-sOSrc%nR0I_=oHAv=380F$T z6PzaaHH9db-4P4CJkLSvu7?HDYBofk1JVQWDi!u^!Yn`LZdmvp$*pPI-m%xu^k3kq z^Fh{&>jht2|C^_=zfn;FFMO21%P{g1A%>O!2ZuaG85?val=st9xRO$MRD__CaDplx zooKe(g2KL^XQHTJwcW4IkhIivZEEgBkMy=XkT=ALO;8O4LjAq{=I>I!tc^tO56{be z0&NkN1B6`g(!*P&$w(VG;+k+*M9o!Ce}vta02WE7a%UX3c|HPb^3)mx7n&Fya?&pw z`DGY5BjAetb;EGahs|)?&YpSERQLL3rLoTl@xRF&!Kyi=UQH_)@6XwdO%LO=laz=k z?c&Qx6X!1*EU7YvB-}RIa$A9de>XG7f*m$tC;jXz#Mmg#Ls|xh=WFZCa+k<*nGx@l zaHTaUwqS{OQ8FlS5NT0Zzk$rY&|{ZMhTjBJ8u3z`C~zfX_iL++#Knr^s+I0N@E0 zJ?z`50lf_YRx7U#WF7dxna;LeH~F$Yesv8ND{o%^8|V5*#{Z}wStbD-B`=x2{c?%E zTt7J1zcZ>o>doIv#+!eXjQ?@FjXlu)Z?!?f`eoQMG`4*?t^E-MP7ypvU5qHg^G{&P z+TOGkXj>o?M4zcRJGnK`p!*})Wl8K<;gCAAP-Mlr#jkULd#!KBu|Q7rV>-k;`EM~} z*-}^mOEU`<@O_oN;VFV1u?U5TkgrKvlA$5DR~I1@aQHFOV1yeMFbWHx zarr)A{hS7KSWZBamo(r8dr5`=azB**I4F_*NC}mfVerp{P>_)V7eIKgWL5v^!wik< zmkHf8zqO-I5|{wRfKsA0lX?J;6OWcj9prNgw3qi=$&nI4OdBU8x54Ng@;B#%I`}k|CsU=OKu4`kQjm_6vP*c?ARf2QTBIuq#wC&8ddPtxo_5W~mV6S? zFVK2oI#ll;H>@S{k*)udq?0))kwZ7RM_W9yX*=W)v^dn~I84_vk9_8^?l&CR7u_n6 z;IIRR52tNe8T`(PR9{U0!iEV#vwbTRWEk{$$TN$X<{}ABp1vZ`-6z7v(p?y~wCfD; zsdDtSg|~BFAZg$B@wD8}9*9D(kT`$YeNiY75V8NG2juO6&Ol3JQ)6W}TjM|6P^xSp zhc1A@Cq&pxA2vfmg^cP}M^plHZ!R$B93rF2NEgNWfpNL2E7n-5E~&zqp+|{XYnN_2K_7;EHt%H7Ve_coprU4Y{X3X*Yqr#d> z8#cPx+7=zB(i)p2iyne5E7)#0QASCEZzKo0-@HrM=<2P@TTRr(YtzOWRclj#63J}q zm(DDum<`?&glddF7(%SauCi7kS(HwfM#Qb;q-X_&;lsg$@uUmcXeA5^rwtl~UyVI_H!0BR zS8#Nr1gKpzPQy|GYUDdOd*8Ddh58$(hO2KLgAVkBHP3bl`QI_U5+)B$7m$XkOzjsY zd~P~0^1r`MCQXMF?8bO_vnD+5ag(0)Oh6p?wMMje4f|5;f@otrN5*Jdg551t%TzyY z-8u3(T6LEPKI%gKWICZBfp&yM7}<%Di_O-zGN&CsDSC4*1~aW!I8EN0k&0kH=U#m*+}+^aFSak6ONQR!p$0#dn%y>{YRv9{VQx@ z(EKhiaj=yT7!)jhZkl&NAS|&Uu%OBs-epQFe4^u%<5PY!7}288`IBPR$(dW%tmF~l zC9!$(6DR0&VV@OpJR`$1@Nah4Y<|wEX8!bkh?lCS_>xz@Njv^emH)G<{iB$5zr#pV zV*@^BRc5q!1Y>>4q}1wBMDh2Hogu7{NOF{t9^adX!($O$WTgt#-zF=e=lIg}CBWb=DSCsoTT zgL^$6iDPy)bBOx{j?EXZT^%+P!E>hZgpWp3n#MZ#=%QcaNozP}dZ_^|QVZ3SY+qz% zEnBzdzP(){MnRh3-HLnN2{^4X&l68pd~7G;EmdfX_4Pl?JV3+V~#Q;dNvkbT$2icZX2~*0!FcG(!3Iuu&?mA^@ z*k(Kl6%I;Tz4B**Bo0&^9y602n;RXe8LiINUv$tEAge7QN(Nd*rvil*NY}Jbnk&Tw z{6hCDk^ueaxFOuDAv}>8Om0&s;B^Vc3j`X5obG(V?k7r@ymu@!XhYfVf!~VtmkgGO z9&5MMx;(tI-m~QPD8+6QA!SQ+5@WvEV(eZkz|mh2mEXz-Hm)r)Ix2Ux33d%j)$Zz4 za^v?hL84+Ru(G5rbx|u)iIb5v9KpbaUnX#dGD*Cv%e=pcl@(kJR>id99LqEc*uDsl z4yv7M_owal6)b|HR8AA-5%Qx?OEcy+m}#;+zHTCBHs~2-bi^WFqrkXpA=b9)b8=WB z;zJYZbOjn(miipz3QuQk)d-_IHp;9;DKgG&lBcQI%8F1LAc)OX+tR+lZz`p+Y9BFX zZH{ftiGib-4}kLT z{k0gvJk9;xTcSjc8xkl?gu(`YHEdbSccx22_Ny}onbgAyV>S8E4c79$;Rq_+-lOK> zv-rFbz$Pm+Q^Y=Oqzmn_38h{S&f^J0=~3HdRO>IZAwG50P7S_xkg%BO4U(M| zl~j2(J=2E*ozt;bh6(Cr*nMgjMWGh15wWD{0_oW@TblM$9{rf{ zRc}-V=#{!t>j=YSZ=qrYHGSln5G7${j=80!PFN1z~z?(vzL~1XhC+N3dHp6fZ7K zJpW591zBm|+Y%3mU_qJ_3P z8TK0y=dG$(l`Nsunzgf&nhN}fl^jTU)k3rMpRI7r{HGKyaBee)J%;pxshXAFEOF?e zVtCf(s@B(JRbra^!P3gv@n=er1H(UJ^)GmMP17OO5C*mCh z=n;p-BtqC4ZfJ2#H+@GcX6-U-lA!{#THXG{h)A1R1Oa6P8`+y0dVQ_WA3&Qw1Ww+; zu)@1Qb@|9|gXy~Z_l*_V&gx;?e8-d=CW*YC&>$%Lj(0m+x>+Pr!^rEs*FI08C(A^) zg-|NrH46}tY|7nfA#CSu>W4$l`{g$M%Y4#fG_6`*R=MGGL+kZUtfy` zUgK^K!PiT!HlkE1vo^BB`HVfAi_(H+vG)fGo@zQ_=fI~+&-=GO_iGe&2@r4?5Rk4H z`b+k|Zz|F@raQRTFg1*MoM#>XbYq-eeKH*xHqrQ`3g8SY zrl4Q2kC953lo0Nyu}dNWjtM(UH4Gd3``mMv>7>JEpyBjVO^UF{^32UH7a!j@(nr&s zTnR516CcP|I~$uPBk3OP^WWaDe``CxD*sa6j;K%g9aRWt4oEex;1k@@H*K#-K?jT? zkBrD*S8RKiyILdDE~Kv`v~5eC{dopuS^-iglX6#@EY~=4Na3TnTcf|}LK_fIm4v?a zoEc94bK z5a7x;gPg5(@iHw%1+jW6_jlhXzZ+FV1Er^J&FPCL#1BU8oy^Z6h??MVW^842?=tL} zc)ItU#(bm;l*ON!$lFF~f^_CSQy1JbqOl;uenwxhWV%H`1VjV#U81YE5xNx>7}0tS z!Lr!`k#3G$wP7RO+8p1XHyoO>k(s9J^*A%yXac(((G0)Np$rd-5!+* zxtF+D7aU63U2?yoIH=oWY71)^NQ=G7f7hE^b0vxr*Q&x9Vn^`GHJO%gug*92Dsb&$ zhm+ghHB$2{H?)T=!6E+1(cu}E8C@Y8%(Ej>Uf`0FmHq3tRNT~(MGg>sp26YpcA z`JiGfwp?4jU)8AXo|CRfS0$BprguxsaJVhi9b^6$_{et~vF{qGnr(dvH)zK+KUkX< zd$&^rXYD=Qjc8GH9MO%i#y}|ptxPH5$@-SbyumMaf`*Wr8i*)0ue=^GX#ds%?YLj9 z^voF%E}~rLvl%x>v2+a6SNY(*qbu^NKk#EJ&SD-Wy2t-LA1VG;AE z;1S5l(oNrYU(>O3Hrae+1X5Vjh0iOq^{1wK2AuLC&#HEM%rxgl>w=w-E23yH5rhl* zj4`drDnTjF^AVG2gq;sZYlg!{dyZCux-Qlk!(5vX67H@m&iYqc4IxP zbZ|^W*e@xB^k0yFm<^n{XKn+7$dP|k<5E4h-RtFgueW`0d@m}n{9PXjCCS%E5e+su zR-~&p&DO_eOUv^^>b8Abd$%4-8y+0`bCz3zcH^uk`Z02R|FEe%y=`Xpp^RlpC!eJr zP1$yL2ZD3_X4b&ofZGB6sE3JsJ5rMP3^Vxaad1uT)J}e%>jR}6a4?QZJ0jdD-R_)y z)W(ZWukFc{ZncSP<}Hqk9wjw9;rFj2#2y-aKg6njzLc-LhbPp|g_2ox%ns+iTj`NN zGq10pe%%^wT292`H*MVDUBs2awIT)saY2@a^Nuah&5%EG^+uWH4UR`+Q&hwyitHv1 z?{GV-Ytu%MML2qZn*}?inJVoa;};HPt-jomUanGnCOcfWsH_|9OyCbIY}U%sh=NLkx4j9T<0v$4Mp6_e$g z&lT*CCUEUpk;-@kCs56lAL-z8iK@bblfQ1Fisf*#1(3yx5&HyFG7`i^b zSizFHIoJdmh01sfbt2_6=LSHQUq1HneY+6_+00;fhFi8hF8^Fmw7FD#v#Cdt5MJ57 zbsqdo`181NG6UA}gYfiuImiAt3|=mzSXBd0;9Xg&^QODiS((h!C(j8=biya_r<`zy z`Rc?eXcFF)v9T3T6BAQsuW#Qk(L1Cp^HBs?ebk{?f?4R&E25nC?}CSDxsw=8P{x;Gn}5^^;K7Eakn5_IyJ=>Y6`==z_j$?5n7G2Ew%%! zdrl-LLIhU?5UkQ9BamR>fAB4mIE|Zwu4<>IY_QbuOk58+f~lNdC-BRX3PDy+^cBJJ z3J~__y1(VF{DEye#<|#W(`cKL*M8@nW;XfJCy#99dtuU>F8s!8YV4|3JMS!eNDbiK zROzip7tUSE8PaS_K8YhRiy} zgXWu?>P12>-vYBYqzs;3DB&?3c=o&yM9+rR#lbNamhq9XZ{M%KQF>$UCWqyG${!C0 z!b7MUOQT_u+s9PQcI(G3l{#8{horBwRsFkVgLp;e))(^z5&p5!U!6rPXOEC}_iH>0 zM2hQ%?U5zsePE6$$%^_wpozHa(;|!einw98TK@ft%w~ znF2sUmhJ1;X0`-jGaW!&GX%q%JU@V-5R)YHsGz2Uqq`5bM2FEC3|$hB{~hLgJ;vm( z;hi_)?sOBL-L=^KlX)O{K|K@t+4(gbdzJgK@;|hM8hzrA%w}E zZvKZ+l3I|VC-?E@YU1oLz`kH1w zpmL&$hw-B+VLiJRM$=&tZr+xSiRErSF%(+d`lM;j8 z+#nvrKFZ^WoWLMi$VkM?WNz-Dxkv8is`)g_3(Diz5HtrLt8w%=!}TeVTT#l8ypA$y zLL3}QQ?zeqknHn}qE_~-U|-uegdWB)d^G03@*s@PFje(_UOa&l4k-Ui85nqJR@(nX z8BhYgbR=UnV}pO~SU>&a$9=nhw60oZt*EJY*nCP1yLDLeI!8)nvzk}rX5Y%Z1&Pv_|~P{pYIha8t`)@M!3{SKt5G9SrWm=pAwoP%+ z3~@C*sj%x(+V5uW@PW5dG;=sZ#pZ9sO-yMJcpAf69vFmbOkN&C$dOPky_Cn24LUZd zKwjQ3N#dD`Dj59C5zWvoas7;~U?Bcbf#mY&Yi?I%G)*h@=J8@E1|1mMcF=+sqWC?2 z=tPEXPBhE`q1KD2BRbLAgBMNKjGur!Rys~s3fD$UAidtR`Aw;#ovx#IqN;Q+X`rdsCU*J*PE;tE z(Ct*267_hmt6-8EXx^d96TEc0H)n+5LZ)+EHuo;(ky5}L{ebRq`L~L>8*sJ9!SY(d z7*R1jsC86LugdyVEWtYmOpR|&CbS1Mvev|CCcii^=wZ6z+O8m)?&HIiLF0cvfO7UD zIN#ihFU78SW9WfeF&a&b*G+#S7qf(cL+k1LxXEGb28y5RXHyPU#sImlfvBwqraFMp z-Wmjc^kpCu;%poAV`X5_KyTcDl9&48H`t%!mL?C+wD%=$(_Y%we{-k(r||rzN$bxZ zrmXX~+nUw%s~-Rsm=)PD17h&;DxFaff)Ktj>O_Fro&uA)^qR0`tJPJsXTSCiFP}HK zo{aZfe$Nuy>CSipbnF)u4yNa89%qfFXD3m5dTn6pJ#kbR5XunS2SUNbjpN7-CU(u) zr`TV!cbNPWWtMMLvB5rC5(hGp&}7^7pqM7dZ=SQNaY83v)D-Qr)$G?CSoN2=E@LnN zglW5`1CCRiQUSbiqb{Qsy>x{QT^BXV<-iqYL~Gm99d@dfJ83O-&5zA0Ib-QneW|)C z)1#W*XdYeac^n!`bRjbK0Wn6{j?2ltvd%F{7Wo81aP!LAQHCIX2&DVy2Ej_u#Tom_ zqSNRIN*|vH^BnD$6Y?y-+gyH*!b2Ety|eTE?!VGb!mV(#ZGzw3(2Ej>@A+1Ud|IbB z?g+hn7$x(yDE2D`kk06ZWp&ykyr#CsY8}tY%M@ZKRrbK|w@s(+D|c`!=8BrOt-6Ve zZZs9EB{*GfgNRZCC+;CykY~wPt1eKjMTg8Kw=2f=cEl7#(;pWOU-#zW*Rzo3JmXm$ z6$(j8N(tF(qI#K&qpoh}acH${erZVM!gCrlG!8y6>D|+v&H{_5zQ^*>J5#8|q#>L= zmMI|1_*m7syozM33pRDTTw}FaqP0R^i_?|PuFPvdrG2+UDf>RUVQQH1Lhfzffh-Nt z)J?7(bdFK~flCpQ56J1Eoa8a58*5d#<@$(eMO0~Yb4{S;7%PQYL_IiT2z8b8n&aCC zJ`w1_$nn<##tSJ@
2oz7=GXpJ`5kKVRt*g`=k(b-`1I|71W3W_1hvEqp6Q&fOq zNfs;C_Sh8}QlVPq(4i@{0A|JHUVOmrfd|3~rKn1-GS#38T*{Xadil?S?9414;TM#- z$m54}Tl4VI*vv<-&+1RWeL-iH7=;BH0!duOtN2A9Iet!*WTiec!uf?cR#pIOBT>N1y?-MS*B?)${NuSKg;CkAcPJV3Z!v`hl*Kpn8$fZtY#|DT3!}yL z`JtRGI|t03G62IK)!j)hH^A@Z`xd8Q6m0Got63htJAb`=xI+Rlm4D+4iGx=~J|K|s zZaagIndW24)N(+mNJn`FAAeMUD#X>kU`T@;(e#-#g57Wh90bzxSPDm|P*#5HSWlo8 z7*+-nRa}=bLyj(M0jiirFZrzos{^u|vl=9Be&ebs5 zuOmOw+9^5J^zZlwbd4M`QI_Z-bb!YZHn$IqK%u$%+%nUU>o zolU{HG6Eh4djxIma%tc|0njg$3%bmRnFHW5tn z=a3bU2#?FaO(IEyDO(@g_3tpn%Q{o9ZYytuw>qIOvcjwLP_r+MkXd-*&TZ-mKiQmv z*n&oYVMkXIY5C(PLlk{EiBag>iC^Pw{?5B6iN^S*amOy|UH)u_Szlt{KJ1LBMr+p%{lD2#`QD!lUWhgR68 zUx%(?<1NXMuza?I4EJDGlr49enE=G|4oxF{EU!@;>Yi;@$@L*WU{nGP?v7(2hFr9R zwYWk*eq}`Z7}g+K-0FirE_j>kN8G@u7&dVWt=-T2efUN@E(`WC;5G>~`x$PIL>7am zGvk=fr)8_to1ny`iq~7Gq!$xJQogTj@F9LhsOA+LPk~g$+)2VLF-a6!z$07&&B63* zW%(Rfl?A!lu_+?a{avxpxCo3smrzaS+4g_&;_K`)^PCqi3cWlQDD+=>QR&ZjW(914 zLVtVPl#J=mmZc~oxBL#}{c*Cte+}%XZ;9>$#NIu=@3g^cRF)(Y6p?bbCYG0Uw?y!k zudJi*QN^E781PZhpg(}Tg>#yNRZ)qotZ8PkF3!curKApcWQ`w%+Q)Sb8}O;XnBvbH)GXMx6@a`p+RP+_b4 z$VDUHtaxPCd47zM*$tH=CoUB8GdY;dfZ!X%0RC5v_TM3HR@?ROS!I^zRD(A2nB|W8 zMutz<3OUiW!;Cs4DkP!OXV-IGsjSjOtusvR0yW}EZc;r9+ztKyaU_q>-9Ovj~p z(1=#Kh|FRMfCzkyB8zcTgE!3W6kBT0(Bz-9Y)U5`&S43{BFZx&h(3>AT6#oWSfZzy z7m@WlW8MY9GMj2;9_!+L<=vG+y~Y2kl67+_Z{FA~ulSjh;d%4oyS=MAML0WDIovth z+QjiTeUYo)4fgfq7wDf0GLJEG%G;M|JMZO{>;Jzo!2D+ns9Gt#JlOC7$wo>ab0~FA z5k7v&Ke#x!6n7m(paL|8D718GbT5{Uq1nzQN8O_Ko4VJ#e!YqDF=c<}{OR#;66wH# z{WGZ8SY^A|k2`B=9(P>(y!*RnpPru{dAt>#Py`5$Fj+sF38Qb8Y?hce8Ry^Dl;P;= zUi+V>)>YJmpY2XXo|&+AGi!X#3#Bx4bKs3eh(t+wN;^b+ZJcR@C=Pq5QXLAT2}6(U zXkpv9fu$`FOrdrI-K2UUBgKNhOw~{(jP0U&op^CuLrwuc3L>CV3GD$}iq?tw1-|PV zR&&a(IwfO1B5lIH?bEuwp~^iMuK6tGdJ{b4Rn0aZBmoWgq=*?ZeuX1Xv5rhR zj2~+1SaRLrC(;=)!?4nWPJYO*DlJjq{%h%dWREQuSCOZ7ydG6uat}><7qKHCoBFJ( zo4SX*lcBnvpEoi?qb9^SFP@8bC$?opA;x6t^+5<}v6U}jkxN)gW|al}HllVlu9DrpG9Z$P_S{5EAgYC zEy5VLoJLZ(BuWT^A?pkG+Jz^2zK-E9Fu!Sx%~+s^{DjJI_Bs(n{Y33a?SG~%q>WXwl$^2W=ac%K{Dm>>MA zjY!+o^oqi18jbu&(-txbV+4&`%4A3unz3LDcTZ~8R$Em_%?`?S?&<(euGmtwA;g3Z z6#^1F*~1}mwP*8-MsaLE6p*rC_?MT@@o zX!bM(bKT|mq`y1Q{bAZ-$A*%*gxZy(*8;p;N9a;5GpoBi69KVZ@OZ+arq#%eAn~C- zgh>D^diOo@usR`E^1BKPgfTU+Q--xmgbh8>0&GL6oBc}}M|Ac}&~_xGZ(yM|nO>^a z?i?3~@HLmJIJ#m_edC*M=NC|st?%07p99gQTI#H~9J;v2+WPLfDKx5Ccw4JjpKu4| zSvj?YQ(7v0iU|s<_RElMwoJfvt1M`sjSZk~1#C&52w9O5C>91KKBP8~=&))!YKHPB1R=TK@RG zL*PuU1kx=wU$zQq{}ufd#vnpG(Dl?XZC^|ze!GO)N+fX0E7O#~ zr6@@j28Eh?MxO4Y%>}1=dvDx3ZtwGp_xizL^56fJ4w~;@ma}?!6?VAkw~5g|C#`?$ z(SKCuQ9fu-43)=q50*i?K@>qjEpvYm;(%y*e+VBGFyUB~I1ng#?O4PTOXuygKm#s# zc8p2@s0U9AI;KDz$X#{jetO30G|%zkaN)k2i`Ve;*R_$cF>8}J8PHpo{t=JswfSX_ zYm@5}Iq26=-qcrL-h2DydY1^|_pnfvT(j?SuawP3&PJ|qdnuKzAHp{9%DPy$cDFm% z&TkfvmpU|8u+(dMDbDQByy8RHT3utaNaKg1Hr8EF(Qa=B3=K9KXO}aAqAn^QfWsm@ zHb3>Q^@#=*v~}SnpIhC{uwch4XgXIJwvx`DzC6BPigd4?!4`m?IL)dO&=%d388xi8 zs;#zv^A%?RCvU0S2=h@04%|3`g>hc1Jw)I`V8@x6{Y=#Z*&=1x4# z$|>nHNfYkl2sPad55u<()UY8lUeEbcD zilnf#DgX{OCR{k)-C~Yp^S0N_0o0vSCLjmE?bk3X%U9SV*?KZGIoyaE z0F=&%vDCvdOHn~bWz0PZSq80j2GzDqV7<)Ze3?6KpfX@Jk;=}t1THKyT;OeP_DW@p zc1|CjZ3B~_^8seMP?pv>{HXo4y2=AIL?C^N-}fN15@w=M0&XJ6(#6EPM+jDkIDJ4CFTRLD^g0|rE1~~rw{N#-C*#+kuCtiTGNgo>AkYB_M&{8Iob+=fCz6A>H~hN5kiXroM^moRvCoIS~Qy^ApI??Ys}E}h9l&d{0n(S z!JX$#8{gbOy>aC}u#Mh=h&gH>?SxRva#Qd_(w z*I+AR2|UdZ8>L$G(h{#^`HEsj)HCmOnhL1^o=q2kLoY-s?M9E$_H7Kph=bJa2MAlN z6V(lC%rjzD#U*3`fikCi+B7_HR_7?VFP*w2)_e<{`tJe*EHN4gs|~U74#|6jNlyG; zVQRv9Bl3yDgp(|Nz(kVgRMP%{nrXJ-N5d-&zHPTbvQJTzOQ^7^;EFJOV)CiEM`^z_ zY9?vZ{MGHX(*-nUMy5I4+UZRRY)M{OfwC(u5&&zdJudWV6Q}poG>CcB>4I+bp42Zb z`6AFf^DPrLVIHHIBh;Mx@i&ro758u0+n@aQ3zyu8B{Ov;DXz2O-k@?+tveMd`KWaX z>+W20u_rXb%ne`QcDn0m#n7p2lp`>cQUiNZF#I&mw1d`F)Hcl=;bxV&wav0^IkvQh}q0~MU}0=@L1E&IS%#QCGTql6+N7mA|oR^ z2Z(j#{_R-PNPOoN1dXkSX<<3Cn6&uGFp_fG!&~MRWu|?6N)uX`%$b|6TaIE z>3c!fbIkYPw19>N+eet2D4HkX>?4kHqYsm@RVgaH@L@$oQs%Y~!^vF@Lu3>z*k}=I za9~K9&;HOpM7poWF#;Bq=Yq%~tfu{{Lv*uv!|5(%SHlYWO*BrMG4h$ku~x-5(W2TL z3kQ$kIgcTc@D-{m$EeZ5BR0X_R|GPSzA-7_de2{8PIOwsf~LWITwZ~ZkXHq&UMg&j zL{!c&(uZK;DE-;G?^R$cYYd`+A11r7u`@dcxQrMN$N>xX?OwCz2OT|xD*A019wGxr z014ihD3v8ypQa*!$8;i)yn@v^zDu;&5}|u{|6o9&ss4~c;#J7mv~W|ss=9~$k`NVH z?zS>}hOt?(S$A?Ebm_oQDMlhr4YAMU1dRlnmNAzlNy?X$==z8nb(rK8dLJ1BH@IQ7 zMI-hA0nHtG)RLM?Wj@1|3dokuuGtJ7cWesYcS1d~DqTbWV=e9~tyghWeDYg9PP%(%UbaMK}CE5T?8ZGIW zTB-7ZRI&0RMu=Cl^IsX)j{;}sci)t1zZE$r6Yno93GFbG%RiK}EP(>2sFc?Xk;1A| zHXdHMJiuglOJSk*o-4b1wr2~f5-fyCtgZphXW$NtC4}`K<4NoPae$q96iRtz5OrPGcUyjPyvSDs73Z@oo6skRaTfyX-1q zHo3Fi+$K4UmQ57~988=e+=NnN2I6>g`aY#XjLMY|>jv~h!_l5Og><*l2sVSzR2e!~ zmAM{SVvnmC9*!x^&Z-R>a=0fN_zDxKkOtOXUu|Tlk2t73&g%SCh-B3fS+_C0p&ah0 zgR&w~Az8uN8we<6)6`9au$JhW98+EtjgJ}#<~e8b9|3fijYYv^UiU|p)86)xL+o)G zfq3pTmnBX_hPU~2@4&~E79SAi!$V{~ixFV@9eqAx4N5MXEU%#FTk#%|)5od`t0Xhh z!qJ|tMjTKNSX3bgY&OPPDJ|w9%y)-oNMTzZ71b>xBP$ffsD@A4*5+92uy!++0LYsK zjn$^w)U*jsEfyD4lJ}_m*~~jb1#y}Kb&4wpXqF|&%_;FTMLx7oV@IGV( z8A{Zw>`d96P&Xs|hA3Z)4q&jvFAn-~HLr`ylEY5|kkxT|@fDtD@oR^&Q`FFzu}8%o zY>AV5Xw7IUWaW9I<58c7N?p_@bDN$Yi+uenEdGcOm3V_4^9e;{l5!plJQOfE)(RgN zIHD^ClomdeTu5sWf`^UIuLv7^F&fgI5Sa)_L6CQG*oGJKy28+&plKrJTD|khhb;pJ zY>!=Hhr~CN(H zD0cK|5sL>+T)a!@cp|ozn2gNyvK7NoMH2FWh)7Ax8id;T&q~I6(?jZO8y9Y93!rzU zL*IMbrc0_9CZ#R9IssonvK|-u+BkBMK{+PS1D|6#5GyL54H-Kqq2{=FHK|kffX>a- z8PA`qJ}r!YhBzr8I1lEoe-FV<;tAK&oroc?4-bXTP^g`M@KJm+ZVQo|^7Z(}XQBj> z1&x@L4y%@^E_CIL0TrkRrg$*-Jwb2x!S(U&6-GVpSulLRMFrJYm7?N!a)K(+ptJXB zvH_HafTcr^wA-~6IGa|7!udWW){hJ>j}-#u{3WeG)Z_XYlv`! zOQ`1`>Nz&Xbx!Z*N{90{8?P@3V`&2!`L%aR?+5f@(5Fl)Du#*aBs(NQ@#MNkhN27@ z-}KcA1XcF+^=H~1rCWGLy2qcWBgiscmW~gk7wCkHV;po(Tk`sW?NeZw=X9|!MLL4X z;-zTOGvFpefC-7APdv~N@QWGBw|xlMcUC^GQ<6p>9Yges0SkfPCqz$C2}NVEwK|a^ z1p#)cOnNM zmEC4x8t;HKvZ_|TqyA*|O|q;Q55KFUC+oFt?p0$8c2W)iG{@ymft6KIW@2a5(H8Wh`|03WJ4 zp?n8?3M~HFzT(>V;|BCw@rFIb3U4}{X!V9Nnd?wczalBa-H>Wp;N)uHG`+r`!WG%k z@`))|kgtjSl-ZT{B)mjhv2g#cFx}ttzWZL>$4D>$%03$jbV8ERQMZV3yKyu%{!@OG@xpT=a>?r{KbQf`CTKTw!RsI@L@oC?$3ejvHC zO!y=eAIp^#_mfom&(uq@q3% zU@=sJ>J{ByA$wbdfH?$|yI3rkAI#n^0vr#sTzec5_lkA;7VA>P3;Reo4HFun7lL_( zE7sB2SxJqRr#`cjvTvD58d(EK2J@p9(;?_}x^=5D>dq1h&LB|th3aJE07RT11etBm z10b~+)R9xm)jFP_67sI_cvdwK>96ibCtFq#*7|IWqb&`Tk#n54&Lb}vmm=Hcp=5os zdUn%4$JsK}LV`T=`JtkY1W=%d!FqDEYi)k{{G=P1V5dUI5D1UhUcacekI;4io2{Fv zT5mdU2Fc`9bIjpiFYgSra!a#e|9VD$_%( zt1?~xC`Ey2KI*C;<9oxuNvWB(sz z?--nE(CvHAWMbR4ZBERIZQHoxWTHE^ZQD*J*2FgM*f!pI_C9s$?Dx|-RbAcJs_Kv3 zeXZ5K*8fNJGtlKBLv+GraiQ6jW%W*$)<3;hr1Qdbx{nPc>E4$&IXgLQKqlW*c&Uog zoqyXqrxfdPL^Fxls)^JkF1{HJ`}NN=BKh`uVrg>35b%YN(|Y5MBX=gBLnlS1dPPR- z(Kr0nM_e1pA@N;eHMalhlb6N|b`Jd$W=(OKqv%Y+8|i20TMA>#&2+yzShcK3|BHCk z)NH((Vqr#1*6Ef7$bjT3dGfP4WrEl1qx6n&13@NW7yWO~?l$ea0qs}JSEjIMtB-nc zTHRu1JSFvWh=9?x>Q!hD_EO>|g6FKqfG%_3;FH0pP{>#Axc`pOqm+-4O)c}yf9Boq zVi+`42NRA>2lD*I6q3!8l1pwQ-!15Qn-N{75pJi5-w@e^*G5X6S-UvCmy(aqLZ_5+ zQtl$9sW44^W!7Bqohj+2Bg;%klKX%s6zFO(tB+kGb7}^`93)ehM=WS0ClvW<#si1| zMRXP9RdHB^oIwpMRu}P6q}_;1(jRIxAyWxsQl?~X@QTF&t}+x_vM;s&F3wc+3UMXUl5}&fY8fOLgC&W8Z97YurRFI^ z5sPiLG*wm^l`)nIb~-tVc}fZ?mm*T}j7piIIey3>GKKOftZfy$Ie8ICq?(v!Uj3O* zkcL%H)6aO!3S}Ccr$I!0!V^3z?e!Jmc_cnc<~Yo9<#bhfgCGxIjJ@FN!DC1(&ove8 zC^M@h6FPE6|6_EgZpZJLuJ}QP$7Glq*`i&&t7(l!13>(uJeJbcqotUSC8|31a_wa6 z<2Dc+&zh;_}>=XL_)-pjv{Ls{Xa<=>q7;npGDI3GYN|?l?QOJR$J}SLcN3UQa71ZF0(AvtT}2%Y(2IFvkwC;bXgx($ zm4>P^fSQt-m7*7K)T070Q~~AqmoX6v3(Kvia+zpj%IBR7rfNP$`ddP!P5iC1i-z)S zLPkhrrHqaB17c^7rvB+|r+R0$_&w)Fer{@3O}isnyYi3f4Nec=GiMDxC(o?)ypRCh zP?mrt(k%qW+{PYcHjjF4=j~efkJf^Ar{;N$LSLQ~<-=;1wp3mpM(eX|XTxf^8-n>l zHivtP1TJja+s;orY6)TOQO-AxIW3wFVn*|`rDVR0K-U_~+$C8=-j8v;XN3)~Nghzv z{RK);!0r)rvqA#0YnNu*jLl0}5Re*WUP%GeY2dx^Bg4{emvmzR9o-}!<2JoMDX0SH@)&W8O>ZF>~u9KA`9kX#G#$ou^jCq0R0i2rFiAQ@#`y-L+ zZ(KdTN>M(v02A2mUx3Sipb=`p%EC$C95%$<0jPA8*0;2z?{uFG12tP{r_cn;T&sBG z)(k=ddA`Ux(D)9AC@JdvnTiViL}EeXej0b?2LkCw|D>*zY2$YL%#5KgQ*Unb3>1yC zq>_;Rq*jYiNa2<6mSG-y*$SAc0O@kSH#ELb4bw zLKV7Yz9^TlZO1FRcI2m3gy*km0H3gTI`0!|m8)6y@3O!nKVMZhvIhExj?<7hD63H7 zY}|w)gyEQg#Y&#a?ObaEZ=O!B#-QyvOLs%nIQ!)(@{pL&jI!2O+FsXoi286wh3wAu zEomwRoP|O5>WL(45kz}y0O`Iwr?qPb$Y-s6@uhwq)3-9ka$`e4+4v12DGlH$%FAIF zpBb#SB%ogXcm=cgBAK)MsPiQ@irnXN%n%WN;HhWU{*g)0@3<9j(Yz^3Qee`y!~XuK zBz%2HkE$_o4d8GkVyn@6f4e@UMM)FV-OV9e-r#MIe1X7b)O9_&9=bSTMQZkY8>bFB zss2My)XFrgD7gFfTB6FOQ(UVSRakeedcPzWru8*O2y=Jn(gNuNHh3nH*0S!Ifv2*l z@w6`V3ofSZyy}=34_8b`#3~sm&%Y5)GOX+4F$UeCq-n`2-RA_}znwzH2yG)1*Z@7D zOsVB~G`xio=EiG!{fvSY#z7$f%QSYFEYt20;wWdqWXc!bmilDsXS;VYE-ct*?*9>l z$d;Reho@(>a9f#Kqi(x+RM4j z1oo{P4CXBSmayz>V$!nCi+sfB5WON?>D{#yaDSd)(8A5)?_EG3Is;J6I3^zZ(L2tN zk0?ky=N^K}KCzeY?O)Y7o-B303e-C1hP%3cz5>LuCHY&u7!VC?A2g|q>P>PhW^H2dQNZ;c2Qk~ZYJ ztH~?k^$G8U%>(cS+zK*1JJpRb#>Q?UcaSz|W#4gT_n8P(^ZDI4$g})@8-)5skmY!l zQI7!af+d4`@*+9%suG|F*WZ0}LK{@EMHMAnu?k=(kwX)@t;#0Gv+=Xl>nu7_FstiW z_ZJ{JtO)K4W{wtTkea_MogwNySy5UqWl4f9&=xI;Cm>J~v&zm9O7D9<9uSqSxPSMd z*Q}PvNd0^A;z=UNx9TE2JrdSakP7b5oEgYbiP7C8o17Dh;!*~Yy(S9JgAh7Ix@K1p zVv6f_#vy>T>7|>Nt7wPp+ioX8c|FDF)=5! z{vl_pDQ@5^o9=_8(moMY8\L}og3!G_Z*O~}HGxtI@qhnFRZK&%V->S^9W%=>rv z#P%c@^KFumMvuzHV`yf)6wZC@4jn<_HgY3Qupc(JulC>-$WpSx7s2f__*WKWR~! zMR3v_;xA-F!S7XBp-0@TEmT5?(|3#FRK+tjGA>+-87#R-Y^HC#rd7pCi8E z5i?GEUGZAjr`JJe?OHyb+J|J5FH>1TWAgGppkIu4ZMjYUBJhtw=2Y?tU91kp z9gjJZxBN=-i|Ad$aKxk>03=0leQ(<+8kgM%C72NfH84tyBNE{5LP7gA(rQeMP)>{( zk4T)Z6pbg}I<4?VYnN6!mwPD# z@*7d>QA|FHSQ208&`gfpuOGYBJYSI@NUgY~_XITf@B}sT8oq`tU`fplrS28t|E(nIZ0Hw7*~z_HH1w( z*o0?1lNPpY-inM*D614m+7loj@>cUKa4dZ*Yt~3^JjgQTf#M^~i@{WzLXBN7Yc@!x z8ciQ_rUdXy5g?U213liMn+eqpZVDc_n?Li$L1Jgp)&j-jCk1X{+S6sXmY#AA{E&P( zg)u_q&KdmBI`>pI`&g=;!ThXRgy95CN+S~${EGa3$=bE$&i*_UTJn7{y~-n*6}G9N zloS4E&liJCJ>R46dw$*b6pnj3`!&212FaR4Axm1zLQ22?mU<7RRY)$Sm>_bq?d%=Z zhnjnanSCy&O`X6PbA|x;2oo4oI7iF*OXM$r@_nUr!)I*JhMuQ5Yl3@vHTE6q^<&DR z75A_DKlj5H6(Mid47p*s;lKTkkNf6?9P2K6;=nMcRuS^`EinZo5b99>7umXzs?N8d`~#*%BYoJyNMy1c1?^k-1h`r)OckY|^>405Dp& zvNj03fK>5jYgtZPBebpMXl5F0nONunTc^rgTQ>I2F876N*(`ZvwB^cJ3#z|hX_hou zx3P{L0VI|SAeiaFO@w4wNTUsLNb2%@7+K-F!)}d$7DJb14FA188&1SlpD706*G97G zkTfHlf1s^v8>)WYj4?2`Ah2p18gHy&jyeRCo2A<^gNXlD48^->=e7CwX6ocM_1-(d zC0R88G=p2<|2DyT6>7#%w3eMeF%B>jJ54-+4q6hfqWfeD^33tUpner#<=3m6($(lQSwjk zXqeM)1hkvkwAsKJ`4MkZUNc0J;~>r|63ag+!OJMnFAbSSjsU!@rXLB7Dsf+l?qYqe z*?*Esez7x0&oGB~vMDO@hq++yC7m#JpKv?;31`)ZYXEPcq3)(kGRs4dpCokpHU(xG z;DYogWRJGFZ-~M1rLe9UqQ+WbhFI*IBihQY`TdNJA^ip<+YY6$VF_@ExbEjG!fI?A zUm|o7AK}k}V&d|7i1JJm3b#=C)2S8dZY=4|prWnNqDxWbs|%R&tWPfjSX^l{Q(9A3 z9mIaO=4wY#&n3UM_&&e3Y+>;!zdw6cQ0#k?-SC7Vz7T0@PXj+(dutHZ06*Vra<|8e zdV&gSF$fvMCg7v<0bK%@G}sQY{;(1jt$#pVA|im>HcSs^trmeAh#YA_$g7JRk5=2| z=~S~TVPn%iPrE%&h){XRgu&w1$W^~X`(R>!g=*tq;Yf}o>fp0}3Y~YNX zQ&@L>6j4>WW1IA7fV}~YhtxmOtX+tq&k*-Zn>ws<1dt@YBxx`vkObmHe_07r*fB1cvAWWz~r+G_B9Cu!-wXJx5IP{Vj{g` z%1`fxhug)_gsKgM(hu7HbLNQH6%cU3AUX%ALwV)5g!E5PA)TH4~naT@CF&Neuw&6Ko*5)MH5;%Mg3oP?lc-bDm^A< zbg5!!g~)ag$t4taA#++K@shK6$F2qJ9js#rLce{N4A+iYM|c$^Hsap>6Sr%N!cQaQ z_3(790hg7Z?a9A3O-wl%e!QD1h7G`5ql#A*9EFprJI%T`%DWY~!ezu%(Y>pSjFp^G zD~QGxBvd$1ie>>k4Rz@<>#6uJ>cj^0o$>;jYX5hu)79EQdF3{$t>DyOF^|hz2Nw>( z751S=U4U{bAv9&P(OInmqv(vD+=2-Q;MDRN#_92l9xjzMcvjo`!RgfftvT;Qi3IdR zcd1^&Ba|T`{2`xfL6e9iPuT2FNt0LvN}Swu{xNSYZookQbh#NLWMDi5VajJH!(i^9f2<&9R$ahZe*MxrMSWHcfbKi-pSy}IdrBs8u|-v z6QEN<5OQH-be3vHXqst#(SixkrsFG2{xDZ4v0MSMw^_8-|9b_1=0G?$`Ex!KiV#9# zi)~uB8#g3jJV*#pOph?WVyQVa{5!QcC^kB1e#L`3)y(i`*0N^%%o-|A&DdTSbuXn zNkSsWE>KFf%DU$TDg@aSZyT4?;iQY;^+Jr;6aoTB`K^)3-@l2XbFxv`og*=0s7NSh zB&1bkPG$GIPR-f1wb}`a^X-e*@bR!&7@XbJ;(>+5N19D58;50%8*=P zk1}#HBI+cfDIS#clM1ipr%SeTFwsEjRjPGTUUjoOhm=T{10T+ZT4iX)=CmKkc~%AR zsiT~?qNa@Puiu~!qj_(9fApr$SlJ}8!KGsNVNGa4gk<4b(IUei;4cF57?xJCH!8<_i4D(<#~rdA`oD8NJp#fNq3!Loyj@@q|6yvcopVZ=UMs zvVz2{-&diWc+)*RE)p#M3X1Ls1{|ZVt&zcu?Z-Ve*Fh16v_7E^Ms__JzKb&FsgIY} z4Ed<&;aSAiZcP)WFe9D*AdKbx8J340V`lgI@Vl)>^ujtY7YK)Fh^KU&sd!ylu%jT_ zmm3o(^aH}5a*7)c!k@Ekg@@aQjlIETmlTk*n*tb}4~8*ghMhn6^;ovt$Y+P=u;W;0 zT2!1@7yYG!z+tzzU`j1HP$wQrx$sZw<@+A|!FyCVUyd^VT-l;yL~ueMya(#1fyU;? zZbhMxc4_B0jn~`&HZOm&K!CQTnS!`^UZk8=Z6Z9m$1E%I4Qc2B!5(p%JK;~b*QDvC zJNd2@_Z?*MM{Z9p+_^?esnraDXy{fd*xP9q?mzn9=;c29^P{_4azCPLt}q7^!-wL- zX#hi}#tYBTvT~bS4U$C-3g@uSe4?5g9blPtrPJq}83Dy9T{>L#Of#%bTN;{~A#Tle z4*lL=)d=rMZu#)&RUEAa53>)HO@bYQhML>qn%};!Lpq%+H~pa_h5;@AY$2FiRnuhG zLm1g{W9)=vxYjNcN3t>GV~N)d#qHgkQkGBg6KojY~u{Ub{BM6`q=|w=BxVT2| z6tz58O?uaD0>uv9=EEOCdl!Sx7+CiS;@J*#Ru-xIc)>BI*Y+3d@-JO|Am9m_TE4~A zv-6qKPa;B~A>p&yKF2i?ogK#^*l4zfJ^!3WJm%#8Rt?y}e-vP+t*VwWf=UVg`#_v= ztgBze#6LCIuF7lQI#S&5)m%?x%!*i0ixma>CYhqcy$nK#WplNSbpS=E$K)bfV0&dp zQqa|PGS^-J{m$*9=%4;*0+^yk!r0+zht37z|9TtotV7u_kJuU`{W11QMgJ^EtoS6cM@~tCW*m5=f$9ROkuyo}3XIViFd`T%!!H^X5 zhs}aWPK*TX>BYgI4N->>wz#O0pXPsrmg}3xW~#qPL)J@6>`1YKNhV-&yXwXg*GLwR zxa#WMV{?!uKQYBgo`2J!RbYsNI1B*r1g|v_8~aO4dl62gV z26wgq@mdK5Qrape8eH94{;!FC-i=N zw&=jmFn9s1ko=o+pFj>#t$OBr8rFLp)_We-dx-z))&5N@rH22&!ST}f61F%t+a$wu z!-j=uUBzyqG}fcQ&MI2WfoKRb^Bm>NrT>m;(I>@;QGx>psAm3vX`G)vF59PozvYp{ z#FiU~5+JaNLA7Vo%#D$Ci;&wtkAx?oXAQ0!MeZk^PthlegPb&?0`C1ah?~bkSo|pJ zb=90DDV5L)=N+oc881D_&mw1LNLHZo9a#mf?WmH3f<>H!$enBV5GY053Flq+jou*d zuONb66!$%_(eHK@g9N*>khrQxG_ZYYn4fixuG>X49zD9xQ&lGW%cCA6#2`I# zP`9P2Tq8NCO`iD?4fZZ?Q8V{ra)9a3#8 z2tgeIU!Lave<2PAE3GbWdLfB&e^TEHx?Y4?<@@a9;xR7|KCQ@%avAFb4yb2V1{_uBc!FFq@{~fj zzld6K1U+sOA5GmbfS&KH&l02kHk{kwJnyP$eF|)_-T1l!ao@t~wSeEuahjLttC!{y zvyxU?X$L1QMkkNvusRUNI%sO6#(!z998E|z-6RkDiO?FDrCLoNe6vhx<4i%t@6KdM|1yRJdQwkM zsTiu*+YGE6d*{m7HEuCTp&&n`gX)K*zNpiO<4k+R#(Wml1eR^Q?3vFze;s-C;Cl8# zdTxh%^&mcUp*{EroW4LV+(ma69Ql)S8OUxQd&w_x^(jQ*lE4d$%%WbCtws7R<3s8` zax=hJ!NL8w9A!2P4N=6+KUt4kUyoncD?8ycV*MgmV($$N@nAUcW`RE+V0P@Sf8m52 zKEbPul#B5z==%x>7Uo)Vzy4>S_NDunKo{k()VYshD%wYoKH*E6>n*mz2?8 z*D~;Ki zGOR0gaa&$e+csnC^&zHTMi0_&z25wq#wf;LfXoZ0gt$#lqXxd-?sNHIHQ+g=@hIdc z|M(?D(xxnRXKKB(AB5Q>?Gmt-WV*JW_LGzQnJ>+7i(|~8gi$C|+V8vQ|Iw1Rk&JFL ztr85t#;&}nVWh7mlXev5raQnxA6KRr;n!BhjT$<*G5Ow*%^pz3PgRl@Ei5f^3$uL# z0FON5=X_0#{{M_^9RTHz4-{^)3tT{n5a>`7zkyq;e}UYc1Jj^jXis*s{<&ew(cL7xJO%k(fY@{}^5nU1XRtuN{bY(t?dzc8X3uUtD? z3Xj8^N?d?KEe7AGfq6NBLc7VJLkQuw!dB+rD3iOBOLxubo97oTyn~OPVymWvaL>;c z(-OY4?b}PsuDBw%FRW;q*E=-S^7_@(z|N?xC225Tyg zvM*hk&^GxtT41nUu?(x+Z1@cp=^pK^w<&W)p=wq7XdRx$fvu=(GVYdhz@cT#w|{(* zbzTS7hmz{puQ0Ic;u?tgJj|^5t()1bn;F^lo;5Tl7c>(@E~y7BwP06QqgMY*6lkGsY5~ox zRm`qg&#a~7H8Y6Y=m3`h{MtGU+UvIiR(2?nh0HdIISFrWhIV6PFs>EaLVAgny%;eQ zw!7})=c=-5CChzI&K3OMzEL41L7gOCL2Bjw9g{wIYIeH7$FYJheEYt&<_C&vFd1C8 zx5B)SHy15oA886oB5Q+k!irkv8KxzXl*hQ5fBo6PubHJVE*ADLZ+0)8pZpn~0yVT~ z{UCqXNJeXgBiqIbWS3@-DB&!$-lULgiEQdwBTh((1OUS@d_grZ6%&n=Lja0Rz$30HJ-^Xnc*pVPuV3uXU4OWv1MoCu zmcID2j&}*Ixx$WfVNlBcV0J+i^CkqRm_rst;$c=4gta1zre_DQn?e2~BKi#uA^I<- z7xbc5!AO{&^zU$Q$LmoI#9MxC!ooX#3=)`n^O9Svwdcs#TP)I{VL4-2bZTkalUq&D zw@UJyXoZ8?0&4y3{Hq4bV)aA6&k}H`mu+h{otJe|USK!Du7L>H7wqdztr7OuaIkfk zD@HylK5?L5m`hfGOLxrO@gw)c0AKlgHl_z9+Shi!{QC4Zh+y`bckUW;?wYcOWt(-@ z(bXGw*gYJGWL&z-Qnc$-vJaD5H!ZqDa=`2pOFAm<*BLO=l9GK`Z9oUKd6ZirG3DQZsSXk`NzY47Dhp{ z|7X}&jp9QOyxV^-WBELj;)w|p7?#x-ON0odA#i^7J;EO!C6Pp=*jJ3n7LC6P|6P9D zREGaal^|L!i%-aaESG8_CVs85e|A3InM4T(9w_2z&JLb{AHLJgNWv{aoJKJn6G2RZ z+IOZW!YoNl&8l0i?%o{VzgV=7NyBk$2URS5tTY$L96LAl-2BsE36{pTcPvxFItKr~ z1YL|xgK=qg|KuS!q1~W?Eo|Q?7A7VTV~8IGS;jcquleBqE8z1&+DDx-g)F|& zx1{#h-Vh4aE0eyy6qp!y@ohbCR=by_tb}y5b>bY-PJi?kFOV4a=8vz`g#IzqQ~I$? z3f7oeV2yKofnM1LomsO~yPc!c{>^^3QNA;aFGesi?E%OYnIbGsk#;qGK)VP~n)#H5 zXhhpjek>%O795A^^$WuhTx;`tYDkLiR-ox-gzlE{m{~MMDqD4X*J8p1MZL49OO)=~ ze(^1^7X9t92Ul%+FW&jp`J)GBNfE3}I!-gY{J=8Cj=c=WB4Q!W$Dtr^5ItE=ANpVurz zD(lSMfBKgNp*S-By9Feks0^oSXY>eGs*#+_;Fw0-k?!prYU|YNk?rkV|J@+D zRl2?DaNj%*b>A5zu{|)nX)?TtHoQ51+xWUkgmC&r|0Uk*J$vje?x)x5E$S!R`_}nh zc>(kBozllZv#iN;2w{bw@K^KrGS`Ai| z37|jt*q~%!)*}p|U;u+H4*RLphzBlJ=|*XP3ScEP=RdencBWeCLz523M0a5)BB>o^h(Mupmw(sP|f8+%9>5vn$#_L)`1 z!(}WWWHrgXuT7hqA3MJ>pa?;_pezQj5xG9_hOZ-4h}4;IJZ;DYiCyCgI~bQRYnQ9R zuhgvLmoTUgJhR(L-{hvyLgK%XQiZpb4wjw6aJQn37NDFKYE5N>;~2schm%>#!#7N` z$2v$!1J##CR#5r|nQ!Ro{H8gvLMdSh6D@fSrLk!Tz#1B524mbFkjJoYtd@}f$QOAT zk7z$j#MA)SjxQkN9%PTO0S!)7lB zIP;Vq%3Yy60;1^|a`V@^8Q$)}2+-vWkZXV4!!YPLdz$cP9E_h zj(t|LE!-5eUoed>p1MT=EIQ17gxH7)apR%s>m`|yhkpUD=)3iy?b^rRHld&RGYLCu>{h^f1>FhkYw-x1YAb}FXIRn{U z9m6?LiHPL7uB4++hYBbkkg?#(nNICn!}+-L#(McBd19TryT0!xw7s`$=<(A150{cD z-thTpl<#{sA^oCcYldv^xXKfGqBZ2@8mJqoir~?SSIV@ZbL~*eFS6 z0^+r|#Us$)WzLS4S112MG^k56*^79=m{b=@!k^SLNssW7c5jGe{J~iNG}nL}?U3;e zARW#PY#;Rj`=6WkQb0z#@}EdV*FUKb!T;w?tN6dcV*g!znyvIp0q-9{N}jWGKj^9@ z2`QjW81W(Ghcz8}@G%Y8f;x}moqg7zt4Xab({*8+sJ9EcW=|v2H#@p=0y-5z?Gm72I1+r_SCO+k5PK%983>!_MT+u{QDJ!xX-!jf13xY zL)p1v$FQ;Ol4_JoK}_rRWiRMkrQZcOf)=3pcG71>Ird76i43$AIg{YC_2E-H5C3viRUp~9T|2mlZ;>k;m4^2t* zLllQv4)yI9OrJBq4T3dUCW`EW`HC>QGm#dhYN*X3y)0iEhO3RD3_TJsk=(#gKbf70 z2=8Khgj0yV=}S$0%E59G@Ke`fup9C-QRG9eqQz_e6n>af% zi2!Zt*xt?mw_D+rRFAUyfbt*OLs_wvKdj=}R#fVB+B7vrz9s!9h|LmDcnP8HKXn6i zzT)v*ZsAaK5){h#;3GQM6{5B&ru2)it=BkIpp`n6tCc7mIj=J=IY~0_?RadzApYkv z7&^=8JO8H>;qgx=Lg@c#8HgFVSQh`OT}3N6+miPlfGNp-<1-e_9bf7!q(`!cF6rqMgB0nWqi74CTYd z?0oJjblj+G3TME}C|PKD_$eTYh$ONRPA0JsRIYwKLABg-!J*}FLonHoa$s#tF-Y*VEZA>eJE{VsS#hBNqEVL1*s5JldkB_iABs(MV0yk0PHp(R z+l(%Qu2MA$j*?PEo_%h9e}dzCM--YzPz;?Kuiy#j8Kb<5#%TSu#h81oz&vEN++l({ zTt%+cp1aYyyrLbUJeUPIFWg0Ef`28A?V*0 zJoPg*r1v~9Snr1nnN94LCNvBT)RLEZ(H0w-^&(A-s@){(LIWkMm%N0sscMZy5}_#f z7ttxkVv9rik`FWu%*eZ9^0<^z?y_;R%&;7rtDnMIae_V6?_LM!RxO;www2>01m9ML z;|SKWU}grRm67D)bC>1xn-c^!?=b zs04Xamko>O1X3e5hLsp?hc<#6+ruhnMxu#H^1JqvK~>5W^8+%x#+Bggs9y>O_=`WQzbMHQ7o`v<=u* zORZVD?rI%MVor zT2v#cO>on#%f-%iJ?(_6Q^c6AQ|Qisoh#$v5l(V0TXBuoKLlGhcpc~PELivC=iKcn z&Oxo^Sn!#_H5m-O`4#DtFNjDcj*^s&F_Jk&rEnBi)<_DOYL$7}i{d2!b~AvOSdbtg z8N>S|^4=Sys#IFxLLmDA*x}hNxLLKZIyDpfC>Avn=cr0jB*LxPxK~h?Xlh#_&9>_S z#i;Jx2y8CJrP#}1NK8wm17iF2iKRV?@U9R}E2$V6kb8oG`<*45a;W3fXV*C8gN zM}W_pv$ya%f!HhXBPLpIIFx!Rf%ERJ6!1}>Q39f|v+IH0$5qux%{w%Z;N2v`SJ)@g zNQ0%jBiw|4ig(Qmc(k+4L~0d#fCKzov82OEArqjnC&T(5Ln9Zb*Fd)YTRM96DgpJ@F8n?eQE-nu(p>NkGTw$mTHt7NWF9Vx3k zo98j2=V9LgeJo4w;BSocMcnor%tpkJU0VN0z3kb&gB2yueG_@N)#JLhih z>z`7vcpRcdpE7dMbHCv@?chKj|qx>A8CAY5jV8=t+;~PoQAl zA)4#*oM=DV^xpQB^m_L{BKk2C{ROEMV*Q>{$@f#P-(&=4_Roq7`exW_2@uTAB?~+t z&(QDT28UH0G9V=9x>tvBSQ@qIPpzr|%eNTTEAo*}TZ}1_=~)a{u=Iu>pPj87Afj@J zYeuxcpNUnCBw|D2(`uP;iX9Vr6_vuOH9HB3A`$vq9tDN}AOhf`Ss#Tj?5(5)Zx;qo zVI7UrE=Ne_I_G@d{pCU*&`PEWH%n2$7YYAH!f8uK@0OHgqV6xl33R{%q#*|q6NSnBUVBMffyX)Gln#rL`0O-5zg)ZVss+IV;T!CBWytY%}0ef zR_03Ss2B3bJ1oy=UA6H+l8SRm3TE7El-%%)UKcT9UPjOcC20gn2Uu7$-(cO+0l!Xv zfCm(FzaoX(ZE|ZQcT}1V$%vd?J!MmpfJhS{it=dn!0O&aWRQR#9*kv25acT*aP2|ayem;+E5j+gC0fp z9MPUq=jfoUDo-+5y5bP95W z?cFelNQLqEIXH0x3;djb0u_wfAdPjLiJk#I=$7!%PO>U5&teO0fZqrz`>hZ+)%{)xM0Gz_ox`~2 znWvc!bwTfqVy)4(7EyV`JWM!hN$viNnv|Q81UTp+%0it;BatjU?x{UtQ+74t5U1e) zx}*mi6UM`A#XlrnfEvng-D?|%bCk!nS`NsaPp%ROHKbq3iAV@Knrie@OiNXy;#uI< zK!0HSSgZ6au)?3Nldo&?qzNuttBG^yoFf-uod`Qnrw)d)MPFvd`&g>zQlN+StlitX zBy>w`Nj+xi!8Y8I9T|o~O&BwUh)pzpbTxK;JEI6{O&X&3S{tvraIcfBV>EL_8N|?M z%vQI^7THvF7GSfby#!D|!uC6pXdWELN>t+l>gKBEA098(tPuz#t2D)zjTEV) z0ZoC}Gi$;jgqzcuM3cJ}W~GR>ptJ|>FosK7r1)0B5J{NCT^66Uff&z~Gcv)M%BkHNuSZet|PElkVU-^Zu{>a3)opB`R|Ot@E1#RS5rbze1_*BS$?O;$RSDM zk4%wq9yxUq=M3fw0!%y_*FVUEw zp1qLiic&sKj9dQJaaQQ0r9>nZ; zkzC6mmoW@Gs}?tb|C~L2aMsTRHi*OMd+F}FoM3>6CS#AI3PdUu#Y zaHDM@bW&KKw=1e)40XgZmVV~}seseD;|_nTA32<9M-T1j#t->EwDLGrnSt-ZWJ#nG z%#?QrW`Rr`fZk*@H&U^AgPyhIek0KEVgap^PI_8qsk z7|G$|yMO=owL4WW&S!xCu8`)N|No51U0dkl457Y#+x|za{J+0Xb#->IwKa2Q5_WX_ z=T7}E>%XJ&Zp}A$ydjLw;S@4i{gH@UO9J9F^55wAOi9Qh=V@yt^56|7Rff>{3}ja1 z4qa;)ope+{<-8{TSHC$CgPB`f&tOS{<*a$4SJ~;4lib1G`>Av7l=ELPq=X|Q8LP8@ zyPw`JZ6v=wTptX+AsSJ{Ai7GR%+7=`z=t>b#Gg^Nj=zq*Ybjl0w?tv5>_)S?mdv@Z zxRPOt>xv?=19t=UX4|dyJ#)?=S}QvHZ{cOryy83WJTv*kyA5@6OfpLx@9VAI3O)yC zCMp+c>~9*%W>|pnws3n9K%F|QkVf+2>RiGY6S~&|Da#cg`M~U>ILm!fh@|X%7pX4L zlr~$fX@P%Wp%F-zeDP_;;5Yz-DXE>iXB|Ie}e6*`*n1Qx_^sW(kTRkqM4fb+GAAK||FRf;45<9hu3s zes&h|s@}nA;mFF7RlffRks(@UbB)KFqyXAvnkHMPtW_yMChih$gsGxiAwW5z4a7*y zCeymNS*R!u!k+fkjl;JVGtx0J3b`g&0|2g9j2i*@fcA%iFoyw=LXf z72T*uCmeF-4tEBRAS8O2wsp=1@hE6-7eL{OGMgmZHhco`!}kyoB#V0yo5==acWCs} zO0(@z;olOHj^2u(Bsex`POcsfLpbV(-B7c!=b2+*fNi%&X_@imbwV5ErM9mvV~yMY zlC?pq!WsLtIFh29EA)E_J%4vDsV`^ahEyZ9E~thIs-eK8Bo4z8FDOQ8*sG*1*v>ci zzv67SBNB1V9hqhi!(g2V!i=OsJpArtC_fCjoZ*$0r#-cVF6Ws;-)NFflMTli9H=2R z(Em{;^6*N}h7psf<;9g~1qydbd=eu%^fHRXfuQogM+LDFL$=Y6s)Jd(xSlFeS}7Md z#LF?JcBNIFYBb&Zidq5|d~ja+juVTrT|aa5=R7}t3##9py8y`|$T?Y!u)>de=*x3! z)NcEEhNStE532Nb4)H_MeGoCpwz`C0W17Ksl%vCwh6&4+cwZ=Pqpsra$osX}LrSN; z_0@!giFo{t)MxBls}p{q>^_&`*xM>0Xr;1^V?J3Ue)l_#Y_vBOC5*B~Oj3F+#Kkz> zbRn%hLa1ChUI8`Gs#V@nKSYb$FF}jM+K)-_xh^#`M67b0nnjGW+EuXsvXzqo>P>#H zQ`LhDM9YMCs6>^uto2R5Z?P(FV#_}=Q{f`F_#Ph)#ANO%T2rM;%^jQcE8^a_sRlWE z1DH*P@bZA;Rm2a6{Q8=Cjxb%X{YT2!>m~wS#o!xPGel&!gv)f_SHFLGXP)iCr>5`1 zl$J9S+Vi-Xw{i7io)x+3s1V^AjHBbox2{C4m8%dyipv*O=%;G}^KZpZV5?bEPl=7h zAaL6CEdX3^l27SyT?-vQz}m-S8<@rl#F=DyIuFqYi}JOVRfupBe%AbTUbe9oMbV?M zHQs0uSa$JnlkvC%%wDVq=8oLJy|YFbSUq$2iO#l6Wf(E6!HG=Y%Jht$fFtqJ|I-i# z&41zQVdLLoWbLTWqF;Vi*)c6tkoa{k2x|qezs+fQzBHapZp%B)|Ha9{mfvZG=L*&@ z;$(Pm+ZBJw_(%Y5gOKi7_YIz?6ID(oHPN0Ez4{y~X@R3;7fd5Ju=){uOy~p`OQYcW zW@$Yljkq?pZC16i^IJ35CFCWMVPmRj&v=^!{biFg0j&oC?(AKWPi2ua0XS-808S-o zht~o*lI%Zk_s)-6Q6+PQX7sY$X#cc2cO`C61|ArOoX{uWy%~Fx1N*k4&SrjTP|j?Y zi+(N%gIbTR;G(xn>LZ64AMTk2PS{!7y>>`f-q=sRA#nyVc6z=pydzNOl?B5l9gkBW zZI`Ql6MzyFamDGTTk$gr3e!mn)B9}s8Jv~OqOgr;{iJ2Kt?s3t=YI#E77069)lqQA z4w&P)q(LN0K<0$ z5>KsRKmJ=y@7_#=Lq48yzGNfrrKFhFvqJ(wzLT=H`#ft8C&x39E1Okflcyt2=-AFl zP$jlHWUVpyGgXY6A%;O}V<)er=k*S(JUBNg?1=py3O5j2VpcYoiUla(x=Jt<-0%8l zS$l*%Ts(_x!r1kYKV|e$K#ImS+s*ZJys+sOyV^C#H_$Z65c8S<4QXDYIYVvq;3N+_}eZShzFH z{oj`8f6VV;^>=j?anvs|LL11+*$4_NTZOWK(e(;d;OgIC^<@$)JzAF}>3suc>{oVu z;@a;G^xE%!r~3J}s%0ll{7+e5vb?Uw90ITpPX726}Q5xye#7KrjH|(F@*5cMD>{rW^2c+O41!Q?y=y)Bwr74Tu zDOAp`*8G@NEQ9Wk{+zNuZ85O#CMB(9riDKTj{&A=KdHb@v>D9l{t!cKlV}bqEUf*$ zJNe4EvOE=^gQ!*@C)gczf@rpCvqt=T=I*eJU@ASvl&di{*U@#*5b|sqYJyh;mGp?7tzv*(bduk;65KSZk0OLrhy@-Vnw?jm)%ZG>|i!XcQnq>r7^{D`g3(_%J3l zs~cU2so)?pY>jDRk({Dmtb73_+_qkJZq{7*fH46RMhO`zY$1%g%DBhTVajAfRph+p zyZsx)IcTr1F$l^iB7bh|yh~@(H@%dpLo?cN2sKO15!^BCPc*j3*@=Qx$6>a}bg{^` z5}CvJp{5S_I49bPV_^P>6u@bW#M0!HIyG6^y+h=-BZ}Q568`Kp;Hc*Bny=WZpU*I@Xg06lDJ*qak2q}lae0JY z7z4bppjaqWH1yhs)GQ#e##Enp=da`N{w&uvx%n=6;@~ z7M(k#)@U#HJ$3^V!#tZRLdEX`Eg^@Fl=)X-R=xGS;r4ixA|?hx?xK#Pu%R{8D&8$o zqV1e?>g9qpXI4hvp+mcAGThXZL9^?DbWZL<@2A9i@0753xq32J?IH_n)kUfJNY`MK z=|~+i!i$A0iies!688Pg<)b!&DkpK*eHVYy0Q9bC($281VobXh)d;6K9DToXGldHy z(@mv(N|){RB5gn6r&?~SZtfa_JKBuCy4D}Ye?Q_HG$cE)XYc4)*2g-&)> zRpy)1{yC&IFN2J{98Td!u2HuvQk*DiI$&J=W&hedU^IKXa;85;-v`$vN;|mW0pZu4 z9$F6f_u>gPiL$CKS^?q_&u9rXL+YR;e0BD=GAZ7m_`;QM0LHyOr30I1&uwi(Y{1*% z6RTQ&*6)k4CCpMY^@Dd{Vqx_tn0}Kv)b}};z^mu}r%FrRHd~Be^(IkPb%EnZTzLs~ zdYjz&122TG0Q7;Ow%=~C5L@;%KQ4`ecMjnIGgcrE0USIc+qg}%cH(^7y$qrhNcG8X zUl-xawo6>)y=(h@@qVFa=>-TsA=fTmMKG_YCO^Mj;8h&&h}!ZTFi(!rkK-fMEq|+- z!|k=qB(Lj>H_SqpKnx9Z#|P-^7GkxOwTI(Pk1 zEUb$T2MZy zOSoU#W{GPyWQZW3!Fe!vhc2QD43Ud}L1D=dQ6LM5Ca^{q4=jGiCFnL;lU+|1c$vKX<-;cb@sTN7TRW zADn^E8xMkR2<3zH#rU8xrCKO{Npa+#^6s(5(^@T>QCQ5nOzDmMRaac2CG49;W_=r! z5{jlkBE@M=FqB@hl~qUCOEY>DgB^|uEex~E6eG&d*c(aOvQEqBZe~ta$n3f$2%<QjT-}@N1nK=!r1D8dl21^9&L@i|@l-R6z7$U`6r#5PDF2VT# zW)hmjTllOog>Nz&#>vP^waN%Iw4qTCy>(Sc`TIpr4r2+$n_(pjM+&Psy-$u43QgP}%>J|X4E1IABqAjl)~#yNXWS~4AlU9O^jz)cIhx_YJR1#xz>bC9?Dgo$ToBT z3NYb`A{0_uI2ZxuQXQX*JAi_cANPRvo;SK>5m}0Ar7GmzssIY3OfU83qDAjpfOQrR zJgG8m$Lwod+&jMVqmnc#(40}E7O{?*V$va+nRp>dl_01&t3T4#4z<%ux~1gPKvYIq zG?iLqFCl5s!BI_YF*_CP0u_2-4nIsVP7Hq2)FTWJdg0Maz5&D1A4J> zUFg9yBXgApibnz)IIHrXrNocUCOqAGWirp_zD#=&XYSQQJ?;kOFD9q89h0HajdEKP zH`faOf(+|y9&z&BvV>DLnLj(7!G4|U#1U%8Ef z4MO;d(d8@|a{p+@&|z<_;*P)5QOx|M+@bj|l4GCa3e*b8zlu)xO5}Ixgx56cTFDjy zs5Pf?>?9qaP~F!Sx0imCz9JCPt0%Mq4|Q* z_AFlpEk39G*L8qI>6@Cay6kN!`BK7aefwvc&yAjd(LE-*>;P=JbqwKTFep9{ztn4P z@98+;y96lAe$Exx*Izq^H9wuNm$;@k^RWt@+_am1&b_DY9dC=&^dVc`c%vem(U&}^Xa3F* zhgT)BClhdO^-QSI2?5v|7N>fZSV}CbsaXrYq2qI@;BG4F2Uwqgy>BlNHLT5emkU z`S*v8RB1WFc`888RuFAg6B^~pFh~2;8T0pFpUVd*KWQ|T*`E0er|uk|F6_$^{f%_s z1lvbcjnDqSl^3|X8*L0`z{s`5@wH_UB$#qkFj#SvNG#XTr{G@|Id%V{m2Vfmv{3#7 z`VXyP{af~rY&`jy!gqhjU2%Tj4+y!pLz1L9cKxrCf2o{V*qmfb-gTCkjDkXO+ zhIO-9jn-CIPXxEup5b?|KB20@>(}MuiJP+RRJ^jf2`>DNGx8~{ien4U0O3sUc3m*K zU+ZfEivO6O5uKXF0US+{GyhvRto*?fit z@a0)Jh2aEFWq@8Vp)UQ3&^DZ|rV9!St)iM6-unQ;mRx`nH&aP7U24l9&Mg2NhMuJz(BU)ig59y0l1Yk9e`r0hax>V@0_-c)LQWz%QDJ&tI@%QO>{sIzT zu5%*206yi6d;1v1rb5P=$ahml{U#4_Te)Lv8QzPdBse;Coq!GA znwCZaYUFg2PJ=1&b2!N5JB#87gQ@F!vK%C9&!A=|iD9t!*Y8k9bAEIr%?alA1m2n` z-kK50ZZJGj(g=zw{BoThAkMcW-OZ`n-Wl6CBSJ9> zbpByC{^%$BoPo}0QyLLMYU3q|q)r=yo`uoQoEdAdfz09#RCm!&g)xiUbbG}EEH2Ev zr{iQnb}0dJX6du9FZghq(B8isCpB}(3ChcHM^40UO!X$j&T-TqR`71;ikEfs$A@F3&aBvwe41J-Ic;h*vg?gC zBBuBoKYIUj;W`hSU|atY2_JtvKIQ-Ih0EB+)!F68>l6O(r=YX5rMcbzvUsIwtN-xY z0N)TGfgA>rTGq{%sP=oui)z)Z0ismP=%7#{NR?SKWQHzjlICPeQsvz{*Y5alxEEU0 zLY?d4ooc;daem=7SIj6Nl40mcHAlk7GSh1(liR(%6Nk0E{-3}4fOVqtpqC6oNEY)_ z_5!6ppw(gR%#!;TNo8HJthim3-8-==jA_Rh{$YZvSWE4NlAnZ97_CJOc0lbB$*9j=VvTY$1e_76QbBY7^5`vGJS^l4q?A znp0N?71nFau#cKkkENJyfVWhZOV+l7A?>#b_mOj?kzdFeh@{Lh1Irf0I-r^Lq%jbr zHp9ZO^=Ow9ogMikI@;`wg)S3_%h?CYoT*J44LZd7B->6k@CeK{C+%5PP76&soW)~i z+YBZXDXjI3LAV|yG2)~=;OTpjs(G^7$~x@HhErqM1N>?waWJ}aLvr9{v%SkGkz&kl zVfE4jb{Cr2tuPQt-dw5Y#M-{$2-fr`tl(_-_G_h(6k8_+>BSI-AhmiMR{D_Gvj z{)3nKVqhH(q8?!R{c;9)iT@G}#jkI9n1Tz2({9PdX^ci4SP5Fj)02@jqj#vcT27ge z5XSo3Am;~>bNZ3Sg{TupD=UsUV0|YZ@6Ly}Ky@&)VKYQJx9>EJxh7O11N(n z#F!UgaRoVb7*##|bZ{Jn2JSh=6i&3hh(xujoM1%9qE8Ww1qLW#6XGVM5rzMd#TZ!V z&aD*N?9+}x?sL!@YEU5NvtSXF-c+IYLy8SbM1AlMGI-Gk{>=kmYYh~trvOTg-BFA~ zKdK^FslY&8U{3}xQyuW=6-9NUPW9#}Rn%K$qB_6<%Hz#4y*L-pF#}NvOhFpBWSH>a zV$uG`60TMUR*h7yk|bgOo0J+AZ{BtKgUJ%9khmV{%kW zrv@8EHAp2?C<6w%2sK=u#Yu5_FIAIuU1ZK*hjy>@D1rX)M<}ghyX}(qjc4M;=|`Cb zJ0b@L2Huk9BqAm^PcvA}Sm`3C9($`A2V(i83<<1*g50Tb8rm5~mei61M2r(?xRjHl z{3ZUh&cx{UpClwqTHKsH)B1{z3~_HKsM&nn`Q-x|_u7`}V*0lvRv7nlI0?A+sJp=hmGNgJ0W6Zt}{1$!|$6OYEaotaZKt+{!*g?X{tz;fny zx$Ex8`+)QpLO2t>D6-nNS~H(6!)m?I!6vzkR{1A{It+mJtkZh!AJ~(U>!wE2jJ=^p z);3fn(3{BcH^??__s{WY=A19>AI{&xEXy7{dL{PRB!d<c+ z3HdeYR_7^g{`!J5KHKagB9cc&lQ%fR0i=o6RHytQ*$BTW82@V;0bd1(mW}l?d0|@0- zoGm6nB;nnKWmE!T0uGrKR960Tq$r4Zbg7A(0%RVMQ%{T6cNAIGwsJ6Gnn_2jxR7BOq{>+mo8KkJ{)!i4 zxw_zzQ=LdI!K}tcv!oJ1CF^<34@pqZdmwj4u_TE89wYig!Z&zg@`5oegT$;)cR;+9 zqqTpp3Y1$L{Gzglef?J5N+{*NGxy@_xPb8eKXA7YPyeV=kbrC!a$D!7??F5G6WO^N)S0HAc#GYdrX$hIlP@&UM^D?EvppwwYwf=F=ZDXst_6O?j_P*ZXdtvvyb*1&5?R+g`mLQ2a@8YlP z$A6r|dBVN(I{odvGs*7f{bmXzea1+yGpf9+79R&9q}bY`4inNWVV>9Ct&K1O1x6hc zfut`vN=<96yi3ReHnkmq&bHp{MvK@~04yCh^d|xj-o-*qy|a9n3q+6^IWB##4i5%& z5Q=(wM(bVET1-gH+}3IfhMtT{K~-kJWB`_V8LMs}zj!N9tg%r!Zppg84eOj(=5+Dk z3DwZg@*uCM*>I}CYW#QjRaH6=m?%|AA7BNNTibW=3{{4-YHCjnS4*dHQiP@qV#uhA zes&+R`HXRbfmjcfSl(w+!4XdiGBgFxe!gQWO<2H!!j{4sC$7Q=pZ+7Bw3Y3juW*2STIwaDjCw^I zNad=@>dJ2-M_sSUVa;OPEGI~;Sk^MtIyF(;e^AO{iikX7B-^lmaL~&rTFwAo zEGe8$iO{6Fe(j7&c;dy@VLjxEHG+qRcn3@L*T#@I!@nMD;TbA6Ld^PPtHluB8ZL!{ zoPiG3XPjx1kOk(Dyy)1dv3|u-v=)Ria6fJeI&aGgB-4DQ^Pbh(V!GnGVZVe87~sp6 zs%F4#0Iipt-z{0s^BVSZjU*%!0K80t9=})zD{%qeFG4fI5~$V4{(JdA%Uh#Xeh7up zaU;7;tDlw1&5+$t&~9V3V9inks#sH2Qn)iHFADw?tEPU0Ww2w!Q*e#?qkvN+O|OGE zJ5*Sa7{s77iViaiW=cVt2y>A(n%IlYp3hxaX_gtUheCyCs4DdFp(3IWr@|xCg9k15 z=w%b_x*spdO5_Qe{W)6T9QYRxDd!-g&iT?SDi{=ev}XJAiE^U>~s13-(LpQd#GAyJZ9pwz%(LHs% z%unAWg)C7jdOJWi)z!e3o1T?XBu>Xjv(ZmPa|uQ>KpIN$*~=m zI7BlTP|gcRA`)>Bo%6yWqa{fi${ICl?LeVeCHe3cD7r#NYnqg$-*B`T^GdgggZ z)_X3T2j_X$wdPzbk<#wz#zkQnSeWE~*BS?92HGu3ub&;#+R4)E$P(mAk9NL4zjRwh zgiA?LG0AF2<(BpX44`(rStQC4`*?@GY$g|LuOXNie+5$|w=>1@iPlrSD~o2oXDjr$ zs_FPK1{F7woxTEVyU$?) zF*aWnI(1`fGiCQteRJANOfyF0Fu0cWuIr;eymJ77BPeY62ivXZm9)LnEra0oB_8n* z5F#PBBy)8wX*KN^>926B+(rL;OG8(~-}izqjIreXk&Mq!oMLyNOB8 z3Cwk)bm^fsm6BzGP@*bT5mAk;lL1xr^cvmvfrDn%xccvMXiDvM{C-L38)7zfDmBZB zoAxd}+JB;qvg(%L*#J{*bD5JDZ0p#iOUa0`*}vMx4$G-(I!?1P8O1*wq^T0l_AMU` z0_O?^Y;B>nH4wRf`_qrzi=&{gXg$lOU%}2aIE-#|g z2uyl^!C92U1ujLlwa-MH;Z80$*4w>bl^i#_?q41=7;>yRpzbB5cs=gdnEoO|WxE4o zBlX&N)TqRD^!;O|0Mly8DD2}-wslJvd}NJx;xOV{gU*`4wEc_YkHKeJqMVrNWC2Vj zLDQ$99!1^Jh>Munn1)DUtYbX2cJIVw`&l7)Pp^mLc<7O)J}t7&n_tUO7B&xjjwUuH z{9natdK)XB?z8meMGRT3#SUk18_|?!Lh4Xc=QzZRJs(<5>WBCke#6z0K{W5^Ijp&h zR2FW)aEn-ixuzQVc4;fb`X34Lj&D0QT19gaTZE|{YwzQxfKMs{gI?lQ+uH_#i-F0$ zdd{`KrXqhg5!`7^;j|&}d;CSMA8!f_j_?~c^yk*8Ztol+HB$e5WQEm|mxj?xALA*< z?7Gn{rJPt69J^wD?8S~F=W|RjhNOO9lT21Kj>aH0_(J`pFE=tsucV#Xl3l$r(&ZX7 zODCOP+qJS-bj(<|m9Lp1BwsUx8!kB*bM&Za+ve*05NI^Z_8RP>Efph61)4Yv-1~oC zLlBsa*wbKnQ(9frSXAM_Cg!={_&~*DT%ZJ!Yn<})$HnMtPSs+_`bwfBN?3b1FLxV z8g`LoPXCY;qj(PYA~7m&rG|Yh+_83>S@=-V|!X{UaYFo;af2syGtOiG0+KAL?9qr|B#yf(L0FAM>Zkd+AYRD zBMY@tJ0rjyzZ9)taTbr^I*Xq^kJo%(1=5mp$^?tsmyC=woZ$~Lf0Q)Jw} zB|dz4rEn(a*lajoTx?s?y#W(?rC6TW5p~Lte~S}*R#u;YeVc;h}P(Q^qoIWiI0m;O4&hG;wz~{TAX2g3Pk}r8V zL#{m&bODZod9j?a6`c6np3ag=cX%u6Rz0 z;0{Bv>l3x4{hd+w3@~}Z_^w%>eSCjnvJIj#_y;X5B)KV|x10^7BTed6Qbp{@A^MjN zAZ>ln`C1j$;0nn@wS1qeP{K#z(Tt%p)WrIF9PY;EuQoTJ{6w@KJINhgT?IWQ zg41MV(OGIXUqSwXvj;kT70Bbe;i1AvOK4wj>i7C@FrD1+yK!ZXq>N-`I=wF8*}F?} zV~89<9B#vLb5!@SlPwP&zT7_ZqkCr$Ek3Z%$~N8k=+Zn4c|rP|AUz(iZjTPqyREdb z-19Y(-)X|cQF9^p^-wUgF{*9I*u`(!4rp5G&e$Dwe>m*{zebT+Gs!GUa_J+;b-V)klO9{5_f;31KiSG)_^E*b@H+YwVkoj9#iK_W}CRACzv*X za?=?U?5>bjogoJ*)N8=Du6`=gsH2p+m zW%zOL`Ni-)MLZuJ3pG(G2dPED^m?z^@C-o#;=G zNK5^H0O~a(S+)kke!y^px=}tXRr1A)BpS`hE-cRwl}DO-tPy(b9ud!Y>>K6+?h$UT zi7LT^P9GRsz^^ zieRZ#vVz?d?zs94^pSPD;On|Z{s)h+XO?=78AYxkg*-zNdHR**_ASleqiEQjbk{j2 z_=RU!gMU|^%>>9%OTL0$a?t#NfaM?1qfx}3c%;G6kFS;9vV(kFC+ChJ90{o4f4+=iS$w_#N-MUmN)I{FekeFDd6|QG!1hie zzR`x>nG?P4o}aQMFYwyS?!_X~uT`QnXH4sqg+{7UEfp#%RZ^nERIyRgS!JWo(9}LD z(jQT)V-CFrctKYN!!R%ALh~_Sy6ATFyZjKPewQ+z2=&|0m%t|};=}9VPru_E$-u{& z%d)dcyfclh?6n#S`eiyISYdqPs!!i_3_bz`UkEpb<2d6#K&@|->5#ThKyR6K!gHM~ zUQIJH;7js2B-9sJW3y!flrA#07@GU8H6lmmS+1w2+*CGo ztXSjkIjrj*BI^blL&(ZCGZYu(LW5fvy;^1rWRUL=2zN?(WCl-i>yUP3lf5S;T_~4j z2kGFpiG1(X=^fRnQLm1eJuk4d6z3cDB#y|+Ix15R@q(gxioPE@R5}lYDQWUm=1PSz zc}X+fZIH|-5Qq;XNW{YaJ2u{2Bz6xgUU~IcoEQ~R$}v|$Z3rvoty=$F6kp*iJU>fW z+^n8HeOlbqb*W|Uh{JObLzowSsO!sZ=NA$`Q%w4R|4&DS>{}FQ3jqkIn-T~}^ncq? z5ivD)GBo*L!)u!VE&Sw;k+`RA3P^Zhg5n?&#zFlWp8%cxuk;!)86j%f?$qSeVZzv^ z$91+y%6!y@owe;{hnlvccC*{sR)@BYEl{ztaqF+_lfi_h&Dl{eB;N#s{j8iV-se;lD7#Qi@~>o&wlQM3S`05jN-i zc>tWihDWh+2R7)W#pOpzNXSh@=5S)I`O}rRW{F9>$W^a#MkOyM*=Zpi zP-#>g(S$&#qxzWa;H|}|ke4o965x#BZI(5XX`6AuSWde%BBy|9(90Og8%#keWVMtKWkU^?kdcdhkkOO-Th*@xcCMlmN48E-YArrKM>_FKY&^fP z#PzHkSFj2I4u-9|8GsFzu`_Tb5(~T)3Fj4yBTEh?j-U|OENZx>c=9Ca|BuB+yyG7k zTD1iVq}E%6C3ek9D|)bso!}6WFHw~W%f^aM?9^((E*To`D%I>=3TeW@#(LRy0!gp7 z4)-gKGCV+UySxBq3w3xhFvo?aWTU0;*r#q2(wh>m(tul$o4nk8mI=`GRfH#y6!cX<-D)8cO z-!haVrTx?}K8pm&TB#AgUGe=0_~WVqceMjN(|L80*a(M`c9P1}oDH+>@IwS0SR324 zaTE3Pe9Rm@1Fv`h+tgg}tO9aKEHD@pS}+5sT~CY`bXm)l4VIf0ZFUQ>!yV_?ZwZ() zOr`k4snX7c&dD}LgHy++xFl#4RM<}$o4{hQa?WCEpaMx^asu9IV1;OaFr_aIs=F#| zeUBl01U5V_yz*=j#Q9#CgmF>=MzIT4konTGZ1L}zF5O|l98D=^Zn3nE@U+(J0vg?b zEN>VJT7)mVAAJe;u!Y2o`-pCO<(1pZQJLvN4y`x#8M%b`?5oHSfob}%N>)^~1%!#y z@guA+;j*R;>W8!h9H|RV%(n}nvKfkyKsv%g{V3h2yv@iTftxX5B<-OLCwy z!5feO6bl`)ekYeMo&0u*iVz8T3&-E}q+}?eW4GZ{Ip$7D!;eK*3LURhb3Ej0m$W3A zmVOzZFEM?OqPLw42fcw9XgAygpNV#8zlUqHxC&mvq zsHXShpp4uYsVLcSC)Jd*hl?A73Sd+S&u?|n{DV@*0wd)@VcJ}W(HxYma(I0r-;~j6 zZ{VV8L^Cbk6oB{%;N{xB9y&j3l|q=53Uy+_Uzp}ljnKc-qwwqHQ|?t~Fxgfie!bN9 zsY+g720c^Y`seSHrw=E^m~O-F)>_mbb$5^L_bT4DzHmo@H?=LvIHz+nk~gPY)@TKJ z;C|=r;;Vk3e0dJQtz`>r08EK7EH^-2)O)-mWcky=75>;QF zlRY;BHvVGHF0|XOd|AB5W?%AlzZcSW<8FX@(aT&)Z%0kuhuu^bB-M&$oqHq1o<`*z zRMS{7KZU9>n{sQ7Lq%Ac1i{Z(VF)SzR!piCGDT5YNYNFes!*P?<)$5!DGErVa}X7q zz9~}F(=Crm@A4w6zH(#{PibW7o`8?A+BY<-&SoDuH>)&)cXnf|mCi6$9A7uH57Pq{ zjBRtY@*k}eMlUzeKrMzCg@6oTToaZGrOCa0({>Q`hUXgA9> z#6G;Gy-@QxMpcbI->j7(#-W9vvDLt5uFjX}ttq}34R{x&E-=Lq(VCCt96=|n|59U? zL!3M%(d}Fq{Onjd-!7`)no3K#SfB~s>6YtdwwU#!74=o{NStwKx}~ulTJ292rN{CJ zy`HUQqnB&rRm?YT?^KhUW)MLncdyLSy^)i=RXeDtwyN+;I)v-lju{=O>ImpisgVUu zGYW^e`;r{j(X(Srr5e387S>&lXg!ercF(K*M#GPdYpuxRjyd~`_ZxSA&8Z6|qF9?{ z)jTW96rCt`@qPu~kg2aDLS3AnCg@x;kd8TG!+0g7?5qkOs6tvuwP}q}q_RLsfR`Dt z@Rr{AI-Q<&3nbu_k>;5$MML~xRC~TU&`m`X1`+VP9QC>Hep14jz)xil8XtQG4kS($ zNS~PcZnS?6&z$ftS`u~k>$E&c)Pp8kuh{=}_T++B8dNhW zEcQ{?m$7eZF>OGGn~>B}j*m|_oaCD-IQb?7wzgh?uuR4;dw4@>Z+&eu!?p3FCEd!= zkaltBX-BrH(#oc}NT1IcyI?f_+=+#+h-a4gb+5j(06MqJhGVNx59 zF{sR8#L+j>6;$;mm9UbW)Syi4{9Sl2C5m07zve49q9QP!si!l|okd|Gb=;whD2(I~ zLqrvJf9;B+eXq;V;(sTBThnKdBKD6W< zLwd>8@&haC7iSGM(Ho2?D}5QgVJH2rBE(&etSm3?XdFg%gyRj>pi0RPA&q31qAcdC z+#{*L7nxO8bw*alLonY)ztuj#veTQIdMkC5752b!6>q2BcdfR8{OLD%(4({}p+CA9b0!WsUeZ@m=?51k58*+Wx7B;phTf>+gkWB*A zLL8V0=S3x47qW0q1yFrY^OL(*!?Q7ka(Rx#2160HhEo)km6(mRyl1=Fiajsbu@vW`Zh&| z_r2ys{+Mk_OysjZycE3X2ZlvizaFR?@XcynG_cRXGDCd9wxjG?ns=^6TRFNA?r!eX% z`cU#$D(G*m{-NPc%5V>F^ye|ollGA81&vBzH2l~@^}g8*BK>Tv>7skh9*c_5@s%aM zZwRMPEx<7Bn-9vL{q|F8r_m$8=Ha#i0&t5c`+dlPmzpEE+yJ<>^o#v-;Qs3Afg^u+ z|H6?|gOHe>{!*%_c96OtpAbKoGsdeN&RlZE6}DcYWLZP+RYJxczBXEnMVu-{oVc*| z;7`LdHo6z{^Ue6{KHfHV>qFi&VSii|0$DLkVi$XW5)O$uXULSvxE&6exfi?QF0aWQ z_vn!L=;(Fv+I3;;b7EDenV2RWB$ zs!OwT0zBXPyXKs1HS!muJn~>}aqz~%Kh7;23N+IbMR6LAxFeAe%yKBNpy?nQ#ajntCaJZc|s;Ql}tY3~kCz2T|38~q9!fUr< zHaLX9nvWQ!#t#KHF?xq17Fx<@BhNIBn|M*nEcX1Ny7-kx-eKEg8^fPCzvTD5nbLi8 zZ6^bn7V0T7=er=e2hF!pY2xS_Yc^}yyRn}z@H3&bZ1XU_)eX_+{*y;y>R`f z_Vh`mK0Y7f__HvKzCwpW$w%KT-4855v5#6vcKN%mzW4ix&ffSp2it1CaK7Ail6b&X zdy@GAe@^q4hy;S#xydy_k0M1BqUfGgqoM5$!nhfTxfPPP_9@gBMytr8B+UswyOUwZjfAHH{g@ezytDV}y!;|nlZqwpiSZ!_Ak`O%;E z$kR{7?*9$Z-NKWVxA6-rS+!GM;pIncvHTb&_?T<$V410bt(&<_H=_ zC5n(5Vi}4@w9sWpf!$)uqJDF6?56<(i8M|z1|tTU>wnNeNw7$euv`U~HE23ia~*7n z5}TWq_LF^Z-sU>r<3+7eT2wf!^>MWB68Q!!_6IC571VF|&Ek`C5nF5H7~Ly*ru zM}Ly!B&?PiB3cIiLMW1qH?9HoYN?+APoYITDL;dXf&D`H>3^!#kTK$im*A=1BX9}K zf#5>7N?sFFxvuDo7mwyD=?cqqfD9+iS>jNhVN{DyFlVKzgv)RpzNayl6v&)Bx^ExQ zaPzWiBA89}FZ*=B+1qJ(L>=tPGlU$RTxpd}R7Np|I9B3_MT$iEEmy&KsS_X8wo(Mj&nQx{y^$Z z$O|~tY?TR4;i1l|P>(KQUvRLT=_DP@Vdjw@!yeaAPz>h#+D+jb*fPa0(A(OpCUNrr z+8d@e2I!XDh6oJt6!CnS)<`s9B>2B<<9=(4du$#;gkfwO1RnpLkSs)3qf*?S-%5`< zp<}0zK-=t4X9CcYUaV@Z2_E%BO>xGanc5CM%jypxb3FOK7~x{a`jZ)ZfXl@t_?eeSqIK*Cnd|VXO1u;|L@Ig1M~czyL%flC zJ`HoZWnXBEUvoX>O!>gQVr`fHdl1N#EN`ZLlRkPA*C$GkWYlFuEp0HyO}{C8RkqOI zONZy_4J*{W#gD&=s@+?q0uMu$y4XhC2roiT%wHw#{YGEAZ)Idl%5zpPfa9+={NN%~ zi!UhF5%zn$y5lObPvFj0cSSE9=$`a3*DPJ1NJDtG{<#6ZQxX#%L7$y!9{Q<9TQ&Jq z9~A?8H`oJ0k5n2~Y~u+0AsD3%AtU)3EstIPU!pV%xTzJW<8AZQD*N zwr$&H1y5|-w$18ve+S+Djz0NDAMA1efxXwg_O<4k6Z!91ljhzjbhBFc7y0eBX^>T0 z-h?X{0I zDC3BY6AtMKUn&0YGKWocOWX5Z=48Ij`v3dx6v8I|XPNu2^7dCnO9}Pcox;;CWp%Sk zQZx!wL=9*ofN8r2E(k^$V(bqoF6?xkZQ}|NlI~)vy2IN;s#4B#Afkj;Z>Zw?+gHF> ziaPngc^Wz*Qm~jBVbjU;ZKJz(`ttXV?e0I0OE4KN!;%rLi+%}0h!QFGN=4H z`l`5mgALb9`v9V?Y^~XN<2D6jFjV$?qg0M z$8noV$)<=xL*UGI`qsJxNwk}@F*B!sBCHv2kMXamwULhWXGyZ%X?vQ754;d%iJ)1A zkeI6v-q!SpS*OdT&$TyO~9J@Vsv zcp9weoCu6&WgAsl#a%A@eSX8?#owARglH?CUH=1c(0>RXim5HJCq!%%&Fvp|MqqNo zM2_|FJLuj!QTCrS-f{f-DXgvJ60*REkD*D(uA+}B?sTQG&>)Bd=Oxf{64(wf%O=`I;OZ?K)`xz^<6j&pAlHh65OZUt}RAR~zSXm>J>8Gh3)MuKG$R z63dT*_-i>*yR{;pD)ALoe76mUuQ*33lxg5+jEUE$8IgMiDnEB|Yn6#x!^Jkrk>iru zbN$I_f{5N*-iqPX=$KywF+GXo9g6L2vZ!*;q#BzV5S@YS=`uzsT^$uKQJ(Our+;<_6i2Gz zh&xoNf`m;9kT&Srqqr`h?f^iPDS-8X_A<`ZhvR0imyP%6rU z&k-sWu4hgFo8cB>-=!a;R;EiX!L?hU<@w8N=&2{5VY4X1<})b2odS$K_szRyDjn96 zy(qj~`#iss?G$@<7Es<$`YBjTlU=x3oefipq>G~EZqx5FhH)*#<$RhFyd3r?_IdAr zJysr*&AU%J>$V%H=iR>kr~`2m*CcgwIJ}~`i_5!q*}s@J_YH~kC?r8XimDM$<8X|( z7qVK)DQJxyGQs}K8s+~<3WzW8h&wXCbdJsLM|0kxE_Q+YY@@fMi!ziZ<3a|nCQAo` z@X|>orTNp-CZdv@!?Z~$W_hz31e3z)#np&vKBLkGHa!_^4*wWjNPVgJbqR4oJ@(tX zpqc5DwQ^{-B>F-!Kt|d3zXC@D?Hfjt{)c z<3gVS4#lw-fd{Cv>Yv89AEXr`o9c9(4*f1HH~#Q_>102!tGb=hCVu0jt8YD6zv-#R&P+yQS-*)xJt0%fA`pu z0fG2OH`Fp=4ISNP&`_SSDMpzPPEdUN_Q+oL)aQ(rLwoHoK{aw}ObCxbj@|aT=(C~^ zOnlLGRfJTqH0Ckq_1XS07n{~uqO4Trs7y`sdkYBOfY{#oUhjJUZz&&85igr*Wl*y63 zXN0}3EXeqp)5G$UAxsN(n{sdn5wJa&ab_>WgxpYomymovrdmmNi_QYqmJ4b$PeE;) z@pXzgK1lh5IMUwodhFa-&%P%zGLYZC=6$%eW`h!nA;YG0okS)5%6V&sk-39V#B zha5SN$rKWlr!9(+`+^6Lz4LpdM4YoWu@=wq{T*-&XO)szZ{-`7#?AF-stq?GUUvn2 zS_s2BwNkZ3IJtET0#HObi-x<}kVWvd`^#sx04a3`Q{a0|!INM4!W#_eI;DG_8@-xG zh!tXjK`G@8XQT;E(wX|V4t;w=UD*~Oc($bw94H%KNG#v|NW~tCpjl3v1p`XQO7)(r z_uP_5YC57n<1&P52Gnkit~a(DWt-BVP8)Y=Py^8O`9YyQdbGK(ek=_4 zv^vfdBHSUEi=8+_{!$j7^-F%tKa<@oQGlK~6@uF0QN6 zHQJ+B$AgiS$gth{dnR3i^67nN_3moY$E&cp55LlFT6VOkbHdw0)vFf#$WF`)MK*xRmrF|hQ3)+@Mrfk5LQl1r;E zLxk+)kD!ZLgC`gh<(!sN`GDm&TNLFI#9As#JF*m}DXYsQ_Ay!JzG(QC*po+$(L2$8 zOYDjN)=GXW?Eh9{-u0|yO5QTOsDbw=-_m^GgeFiu!>riuuqT0Eo}XS`Vx3%RcA6f7 zP&AiMOI06pe_{71++0(C{jfupWsn98aqOqp6@7If>~1r1ol?4IYDH1Cx?Il$O0$q` zatC-S!*;1hx~Y7i_c$R(r_{Z?oN|SeD`9)w=xKY0f5{<)e+j_^e<1k~EA_KQnihRV zRA#gr>@q0KezsB`fA#8Ip|bxqkI3SpGzJvy@%kgzhE-_iIf@+hMlxyoZ4J3eP6RK1wi!9Q%9x8KZsh^iRT7o)OsFcT)tX5`w5>gOz9{%pn3oSvB zl`uO|zBCg4z@RfnUz{$GQbe0Uzbj`I8X*)EqaK8LlTJ2;a-gZ&V3loL1-+ZUjE_w# zoYQs?j%K6siab?P0no8!r)CU3@FbrNI%l(~_!f&QMA|RvG zkRX}dAGzXsT&>ZT^Ah1h_hi&6{(e!B5I1u_gQlA}wP7YK0Ovd)vi+NCj7P!YGvW}! z6ERiPhziguE*{u?Toro+_MHZM5%-h#nZTn|8O3G~dp4LmTBJ)}Hf0e}%a2@|A5S^w zZfU9Sr6)Y1;$1Ln<|{(DAbVe+CT_tvt8l*!{gsOZ4FCP`E4?-Go5&3B zq)SJJKzWnb4>Qta|EU^jj2gW*M2+9deV*`VA3+KlNm^<^3_MAcJ0O7U{uEGQ^TX46 z1M;l2CK793J2qOJ05NBId$Zor>R-r~EpS77rgnayn6u>|@83j#-Da&`%J*)NaX&@! z$&^&ZeM~M9XVQTR#?LdN3!SBHK)bs37sVxgYV~!htx{io840T7t&#sAzo>1xb-0or zmxePf(GXt3UsKnh_-b;urQtuh``A#ruk+OZUUZM50tD)&ni}dExEz~%>U+$5T7PtY zd&h;Hu?hhnD_7&$!>CoJU*^0L0qKQNt)a2KiJ74!4Af!sNaDjuMmnODmtR_+^@iS}#;3;c5P2qlvBmH|^AYF-Es}6^?5aB2?Zp1B)M8m~z;N*uhn) zzq!&nT_y&%f>&9X7dwN5z64_u$#0HLMAhx~+q0KiD5dw6?8Cc$-#&YIA$~5x46_Mu zQx(gY5?LwGd z^34d@mn9sAOE^EcII)H0%<8tWAV+Y%*& z{2M7XLE^{spjsTDXlPSic{^D+OMOj!UC(&3dTJ`V=xG=GKA${^`Tar<)URX(0wvL%5GFLwtJu?1%dd zI3Dh>$CVLohJnF}zFt$0;lrwIeC2s;!x$bVvGWr!{M*eeuSf-cIB^|e3*K05$0q+@ z3c@&eysJF)#^vl1GU#eaUREvC>gOwVjZKlUVi@)03`Yo&^!ap#Rr9JHNvyXq9bvhl zMKvtB^tWOdTf?4iuj&oNIqIuP17r}06Jx%a9VTp}B>yAr8>OnQ++=>;a z9(}i1mPR$^9{xwt^yS+V|0L90hY~&-488=dt+i}qj=CEhm8e)6ltr>)9%R$}v-Mk{gVo#DC zlUWAdDvx7ZEW1JOGi$fbe(1&ntr+(Aw*dDuR{zBhU~5T!MMuTQKt;tJ85`Ll%NT;e zuf+u}TXx{M*s6|onr~KiXV7UZEBocJ-Xj}fx#Zrf*$pwy#ZCtKuN|qq{Y)7k zO2UgPvL8hV6W53TA2R;W6A$ZC8)>dM`|58oDBxp$|3w7(+he@}^xUcEPwP{G^v+AR zn8JlqE4mcoKeN$BdmC!xcL?@&@JN4|!R|f((i<=Ti#^gWv9utArX&>t$-qt&l@AYy z?Oj>+DIM4*ua)0kn4(?|%vXa{Z3y=c{MVi!o9)*;ik6UXy}J-Cy` zj7^aquHZIKzrVz>4`Nrwj*<~(U7=YnyscB1B8>eva#-+$7W#c4D+1C9?6n=frjLDjl!8Bl zZhZzJ>Xp?)kya^tur8b&d+E!#=Mxl=M!fGFK_dJ1iJJ z)p|hZ-miQpd2uz|rcocreaD22&4<++40i`>ydhnNesBNc>|K4Zi1C`XH}y`*f5a8* zIW}-8>IBs@%KIC}utzxDo$5Y3-gSrOjj%n?>5k^t+d3M&JQ8^=&($DMg0&fwJHPp2)`8HI7kVr8#_TH+yAS7y-&0b%&+$OL zRm5?FF7=Q7Z=jntnfo#uOpgoOof}9`qP!obinJbWzV2wHs#KX8x8tx!)TxM#TN{rN`=4oo1+R91;O%jN>{PMkFm(v#qAAs*h z92&oSU8GPqELIksq;YVI*;(A|@&_^xsrCd>i?uiEp_MkBgeGaKV_aL%KR6CKtn=k2 z@!E$L@lxm3l|fB9x)z^?RoBrY+F0jOp1JHN@hLYr+$4-0>07JbCb615M1-zkbaw(1 z>!MR(&TyYmIWqG+#jX6jU>?rIvAP&#>pVwTMR3tFWHm)J+oS7El5(zEctaRXDf=wG);NVk*qS{el;U$M@LN- zwi1~~OV;yk1F-}b#PA#q20<34Qi~i;xO^lMu22`s168B|3Z>kUjx1SyzZ`nI=7Fu8 z6ff5fzU=H8IkWXgDryCj<(5-YQzhYI%keKLzC(7dH99+m{=)UwF1ZrBJF2&)q<|Cn zj>s#G-S_{9(-IJE5>oi)P@0S&AoBlh4rONGY~p6%!65cur+~f1|E5y^#iS-RVcc;R zlfPo=JV-tEIN2o-g9d(s`HJ!gLOX(SPK^)9&T%@3L&ny#wxCI2i?BEvj&<%TG6k-;}CAvx~p3!mSa%0TK;{_%_Ui zJ-@3vU(7$&ek(09l+7t`c_zU?m)({u+T1yaY--LXT-?ib1_CV+Rk=JZ$`a^IvP!^M z=yT5w0f_$cx^V9?Pf7E^-^Y;Tnd>IoK$7#DpOF1EObXu5NkGV z%0ifD)aje0{@@Ie=RZ19R3*heX-SB8{|B%|P6}%$O{rVyC?}z75Yfb8_hbyTk4h0= z2yS{ARn@80#gG#zbP;Wk#qi{t7@!4rp^h1b3R04^w^|9ahMjfe&n9plQbjOD`G~KlecB;?G60HezJdXlAE~it#M2Tqgnt6CcNv0$i`9`6fUDAz z6;44JvjzG!5g@X=;Ep(#VOkwgl@!RWo=xVGsTOOy{T7@$eLQGp`h5A1LRC}c%cWZR zpjV7gl@UKZo#n&=Hz`;`;t?gu5)JQMNm9bjQkHNQQ%kCp6_2a4!y8e5sx%pb?iS50 zxF^Cw02LnLvV;HFsPw8=kI5`xG0`FAI;k`nAoZm#poC!68#GrW^&X%$s9%M-oie$O z8vd256B-C}yKh^WHl$UkQyyfdrEtcZUBz-JVJ~VG;o6leyPnuKv=TB1{j=;rt(uo; zWd7h%DoC_>fJt9XaM=X)Tcl4?(8ji;`GP=pix$iJlePp*=nX* zzdFL@WcOAOpSZ1RIMudrqG?e>9n}$@-U$lJHQjh z;TQgH6CHJeA%MfKnS>~b4vi}Rg8ec_W~IUq2Qv(MyvkG;?LPV;wBNp3@EwJkzW)#m z9Bb9$QAGH1uvXb2S$%`z6IY{rkdvvFXky`l!6-+BaSoAR56DPMUylXH!TKpVsBfhUl*;b0Y*}xzgp|xKpJotaHDJ@(~ZBmPr-t{J) zb?&UMCCQ6kS@7qwHjL+6c(F)((qF7j#odz$rBkB$4m}YNKNCCmHmY}Eg3wTgrHB)b zkMV{2FrYRG(7`+sP37yf^7JvD%3dNyhArV8Q-_Z6%~++L5F&+Mh|u%~`@1fQ92RQM zP`b}4bE;!^6u`YyctUE;ZjvG)huZ{MM6`vO+ys~a^y1`59p9_;;jE#u3n>@$jUZlF zo6*ouPE;C@VLI+81@~PM*DyC~nT24DFbowh0>3UQ*&^>* zuKKnaS5Tf(nfkhM_?2%9VOQ`}b}tAjU$k~F9O-aXZxW;Uv%>};9&a3FTWquAAF01& zH}G|FAli5XRDEmqFkXsj5hHJgA!Tw@Dn6ilRBsTdzmRHCrfA8|NlZsD_nbIpii3Z- z*O6=uYtgW9DorL(w;DQY&V_4On`pp&Hb(gM^*C<4tUx)PHkhx(6FM)+d7l+PzPh3H z^w|xr8k4!uiE^^Xu3hNXt9+SP@17rAD}PXI?c9gW^Nf|{CR1#uMvT9JrvTt|4|;C4 zp})iiwcNQGDDJ+m!f*?3)|~I;7VG_0(U-pw{5yVwqm?i@oHo`VM{>C`bQYJn${$#v zm{OYF>c9|tZ-q)n%e^#@*dHlel#ezSdMxUth! z_w2Or4woa%=;N#4=;8{aBmUPT9Q%;3f{TWB9Fb; zzAHcV46%EzS@A0jm&_E)oZyoHu8B%}Z#%`7$tCh|YK7s-cC3bg<&vGCzSdbGZ$JLo zben?$Qyl_5pYtZZk}3du7>spB$(*x*X-%~z^A!pIa`gb(K?4*)-#PLHGOtqeT@lY~b^5K0ua$PyJ3^ZQ$u=vMg!0f!9wgT5R;U<7JErf_m{=9iNUc z*_D~ejy8kU^bKtcC1B9O<59VDh`p+a`tf@0RetO(z|||th5kXlE{N=c%bPPAy{swjrQ;$J z3Iu+A)YH_$?L*;tI@&uj&q>7+<=8a1o2*zw#$Yko`Y8hyf~@3Ocmi@8xVDE2Co>bH zUel;z&EcoH2AiSq?(v;v zBiCL1VGLPQydh$D7lh6}khxJEy7%8sGf!;02grdyirmo7W5@uWzIEX?Vs7OMhp7$?oUZ(znyHh25p{_0o_7tu=ubBQAc(78KOd069y%|n&WU4d$sGyOfa^z!3 z^Qvnffi30ExB`w72`|a$$QvPv`!ylYOIDxB|RLQM{IouC}@yGES zVwKxhN`D073tw*3>`V_f)PhEX`{2jDw8Q&p0k_fXU~kP-_W6=HmfW8U?q)+A) zec#-1Ig^(G*(nZE&BYd6E;kgj9!+3}hU67!{J-|Pw@NBs4UX+%EpUWvV3dXaABz4RZX{cnb+KU1`Lxt;qqEfdS300D9hXh zqdCvM&c)*xgM4hPjnH@QfW=8>zu#XTvC^xrHV|k| zr9&WX)gkx@q;3z!oXe4n35MsbUr&WeFud#dw&JpTxKpa{){eAi4^z*zB|+3cQu~q> zx;3+ui2s$lyKxbS-EJh{7~9plT(mo0B{f&=EuL-+Ho93Xw~w*7+(HJgx|Skz8HvV2wWMqgs{w! z+_(5w#F`_uzdlE;;{BeJb`h+f+(T`2CpD$7g3a*$*Y^=bm#Y7bH`K^?S)i+};TEDHw8q+Z$ zyxoczYL&5_N=f;|SD8I?YS%OouJdIdlYmN*Eu9Q<%IJoQ$Q66b%jQ>v532_S`8rrL zggG?>!+kc(E|O7I6+IB^+ez<4l3Ng_MJsTrv*?CA0}STq z_@?Aa!x+i`-~-bd`Mei7FqH(w~$7JRf~$svya51bXq%c zj8(gnoBE07YZqcB2tTd7!jrfQF4ADmBzUvpZinkO@ zf}03Sx8c9~;T<>sK@_&FvapAQ8!eWO{d707@2$`8|LUG_x&yMrG^zv12e^Sn0XDX! zf4Wn2N59|Vc@u08p1b4s^hdhG@b~84A}8;f-0g{Z=k)+@KA0wlDi;EBXL!0qBX6Wy z_RL^Ub6LcF1u}1FBKDV^sdQ5rw__xDp3#txband-)AR;K2DIQOXgnUz$tHMd?fN%J zm}z0|D=|0JSSB{JGAa)pyjXwy!+s;}zg5;e?DfWDlOXI&7q=vf`(7@$h0+rNx?x+b zDXOYc4=RE+!8+hHh00gYJPDZ_)8YXYUe)oM>Lo)5uC2)w(V+NydU0%0ZyG^8F`ag) z04c%y4)D0OG+@K$FuRmr>KA`*f4wE?=s(e}T)q(F)`LAc*GR zT;DP-Z&klSpnYZc+Qn&3s%p~ksTRD%rY1CYy2b%e4 zEl;$IrM$O`nJpf8w0Nz~s;u!iX|y1w8qR;ezB_3MnbH79(=z%52VpRB;eePGSDyS0MR;?of=$2x%6*Q zNpDpThH$M{2cKKXj|ZC%TwWGyefS=Kx_|2>R5Q%u^GWoao$yRNj&3=9K49|7$^rlV zM}+B#t>fWuG!PI9b`TJi|6hFdKUG!#uVk6Q?_?QmmBoL#&!$I{(z*%k78Vd4Me>A` za~2v_iV+qa;0g2+7;6O&CP!rH&dhcIDaqf)+s5%Kl#zrZyoZF-c6^AikeTZm%H7zb*6ZaH=L&aWpR5LT%*YS;Ed6o%|kSWr~>Ul zf_K5$4B@Z+&2+xxnzLt8nymJXRzr9qa%j1T$+k?%BMB0#dWY=c!# z*orK=AvpwAq6bSJ^6^&`xM2&~ z8DB1Of)VQ(2p9XSHir2mi0N}EZx;b4UiV+al`l&iVcSs%asB{LfF`$5a|krBK>-r2 zjyOCG4gT0ckyOUYH3Y+mQB^28#xjaTy3X)#)nd;6+vlaKT`iWD@lRw`>#&_uHWXKk z-I28?+}dgb5`4RyS>3LN)j&tw0wXZ;2EyHkxr*KUE>6@?i?kvm<`P6pu_VTH$ly<% zaCOSL&WOyPbf|iqh%$_B`}bT8rL5EH$D(k%@+8>RP?+(BC~TXiGNf4W%j)&mN>%rJ z_PF^59Wf*hs0K^sutV64f=GU)SaKnQpc=f9uzh2DYc0sQP1g*ArW}?~-8162oeIN% zD9w7|-JkjAzwn~dBrr2qi^#Ao;X+>m?dQxnp+-hEoF?gyQ8I#8v14W(Xt~LTj(*xi zl1h8jT*;HxuR&7CSXA2RX8l27o0z?YVnxdM7rgmu?=>NuS3454e*r@V@8d4F4%;cG ziO?xZh!q(gty%4Fz9NmeY2c*593PcVd!(IJWRMe+cq;)^DAXDPYqUZfTAVUxc-k?A zyN5#K61>cJ7tC4&!-J_0+lfwBpuum@u^u#sr)niU->`{?cghpz)!`8mZ~AG2Ej#N# zy(Wgi^AyVGrN4p6ss+3N30-c%h*;$*Y!hl*SHv5y%jyqboKJ@RIl-B`U$C|t!40xJ zJ0npxrJ%Wr(a0X@ZN1m9W3@`aRL?ELG~lfPT=VYc?+|ZrpP~)TX%o4Yy{-zBs1R-bK`I&R^4z$tcWc&}1N(0SZ=E zZ_Fw}y9So7O?0@qEk>wm1mwON!QKFK>SwaK3{zv?X~!(`yV3_(FUaZUuXzt?&4{>8u$hR4+ePOAS-|# zb|wt#hYgg|pSlKDKc3DNruja#ITUbnR1G~b@!8k!VFZzd$B;d#>H#2Zx|;Kcc--yKz3FvttjmXRnZn41fjxb4 z;%lh~Gr|GFDsxZGeh)J7Y^ediUI9SO{=75(O0Y=r#?f6s*Rd{eFwL_+O?hSx41`X(bws zO#1|YFNEuLP|=_l%<<_{FMrxg^iW}rr;#>GIVyBh2EK(A)-dr=(!|x`EQ#RPWRwF` z4u?x_UMU(1DZ7b-!pKF^w3 z^##hKvgdI@`O{J8DXWCFE*e3L|B7FPtP+bVA3s)PW8J*E&}M-~*D{iaDm}#tH*Wd7 z0v1gw>Ca8gY*WY%lp>{^c47;1nP1h(`JnTXZU)X=JRD|vx-E*F}gB{bZW|3le92Xx+}zHQvgZDO)-$LIjF<=`-gR9%u6tS z=Odq8w0b^dI6lxt)`}Ax-&a&1(gm#^ne8Y&>x+FMD1ZWLk%tzaA0u`~l*d&^vHBfWe(QqdSQ68UOxSmA}g&>m=&7&w4>_ zjAtZIK>>qnr53tJG=->1Y+Wo$Y#i=r9pgiVjaKQ!DaXd4RUiFjJ0CXi$@>IewLLd4ezHa`_WCj;-CS)cp_E~L_l#t5v8Ru}g!<;Dx|miJD=ka>5C zoQP5$c~9oivH5U^E7^e#3RIfda*?jT;u4TNsL>fp?Q-577)4Y=Q0ad)I!Cw-BcZ;A zsF11~KT<3^%QqL@o>t~hQOOS1tQmy>2gaZ>e~Ud$&V3f`g(>f1k$|Bu9+73 zYQDHflNu&pf3ZuI(&hMK%&*>x?|1Yl!cpZGc0S-&iftBe#+JUyDRd}esAR9x-apP_ z{L9M@_T;gXiu=>{#{6&A{8o1OTW-8R$^sW1X>u^CdA`Ehx$ug*tN`n(^wJO!{V<78 z9&uTBgU}5Tv)5zLQW>`c-ZYdKwZt0o5Qy|2YTp^E3J&`9=Bomxf`r_ul(qkkgWp#! zrp_@$T-W|kUo;T9Rl&g5ancMy(%???_MQd)cC=-JA_~81ZI>HYY|%G(2Uc;ocNXcQ z2L~xDiApP)L3faltru?+=TMF~Je!q2lx5MRn#D>jSkuaDks1yiY|ExOMC%eaeT=UL ziSm=;dVv_H{RI>g&W21Z&+b(^l$uW=PIlB5c6aA9f%`!Zm(G09HL-HFH7*{D8{A^& z8gT>glX>?mJG^7?)Qbg?{+<(<;K!i%q#A+aCX5@UG3fKLHWdUsGUl)`K}pF6vgfS! zDbgS2m~W#7b~EWEmdFq4ptvF-ZTgT5 zpIBr}x*K5cw3C#C(mfb-b(6apA16QfGH@7zf9CHUtqTu#J_%pF z!pMDeBFe~qlxB?peRkS+U6ZI5i`H1i6%VT9;!7o-Pq`2O(En(cu_dir-j`_tU?V?gZM;yMQjw?BrQFnZ}6$DGj*?voWR*I~Ok|u)w zwRmHP!eFDlvQjIue)7?}mW)mqF^e6KEF_c9%STL1P*^;z**IG(1%L3!@*Ri$UQQ#9 z@jRP*w>MWR4s%*`Zm4C(JE0cItF*e|@}9C;aDs}H; zIRZL(z}Og5c;gu(Sz3r~w!>)Mi*zys`;!qzU_t;vb0%~U(t-6t3}?y3+yS6a0DZ zy-n|S7xWO5r);9He~gExplMIx5Y<~oBYZgN(OsLVPUmzGo-B$YiL*ODE3h;v@>b>$ znx{}Z@|seww{Z;PHtUYqmAa?zIf;MgeXP@6;uXg??_zNL%($x{CroWI@dm{O$+x0q z-|P&!tEOh~+n_hM(rh2&?DeJC6KzYecDQyi^Y$AW`W9}*ZdXj}r@rxg<#h+RE#&US zo@KryzIlBl%kAm7aC}u=_37bKe;t(#Y~zLQ`h>G~GWxsh7HVM$jH%y=IOC9n#c-5m z*_JXen_dvl;B6e6;AP9YMR-gs-ae3BRqEr%ly(|haSTZ%RiI+V3sBi^%IKMrIs)Jm z-HUe^Lldv^y|{$Z^1pP5Q-4G*E|WQOIfT5~bi``W^Ay+?yn873OIc#@{?_x)bfp=d z3FJ9bIGU|JC3>S43)5W_K$s`7{>fiZq!^?+&i3k+1RKZ&<& zY33hjiIseNJw&KwS~CR7i$}r7$#$dw95<_V@(-ByV;^_EUQb*5>ClM`F`@PlxCWu- z&O?6N3y`NU{z$Zev?Fe#1FP#5-n5bIe*?swOlAlrw^nQK_SZ;$Kx)k?gjEviX8}$2 zEd$F_*$g;CMt);K?5Uod;QQf5`<$`9SN653ery7Y%Q&t%l!v0|%bM#utR$zoC)ChH zrHH!hPCyF#+O3HPKmeJjAW5csU;*6_l^_XcP8Q=fY2k5UrX>8+Xz&dvw(p zibuQEotSnW73;q?<}b7Kdq9?1z;-;L+n!d!-l@1HULXe^WB#;lfhFidwd;l_-={y7 zUUm^fw40C-wO0KRPaoJIn_|sQOrOHy0=N{PvL+QJf^Ravd&zdx#r;`7Kn$x~|I;C0 zOoi<52)kEOro{vH+J=+VW`#ip+m*TCv?X0LELoa<0#}vMiCTo%= z14xxS#3dd!L{l-q!;k_E8TZZjBg2ZM7LUMj|L*F$Efl(E5i)yhLG3!v+9ejc{{s+! z>rAR5PZwPZ$dGl}N!9Pyo4js=mvc~Eb zp?d}&&08%<+RX{R;n5XrHU(`JDxKyoOsVLH7R)l6(9)@SFO)CLP#;oiRxiwBAF69s zTIacpX*hQ{@@401OX4KajLO^Q{kg*gPfjfpdu4j0vQzB2W4BRuRZxFL5lQlkD^{H) zUle0{6qhV}Oj0(R%>#r^Df3GRodEz^Y$uJD{MqB*-U*)cIt9AFF)A=-Mb2ED>pOz! zl?aN)7j0<6L1r-+;jfDY7GxeR5FhL4X-LC525K*nh1sxke<`%yv7hVyF;CZ=uI@BG zFJKKjBgQoQouuV9&+#*?Vtt+vpzt>|$8bi8N$am7uskrjSPoc}IHe?;z<6pn*-c`g zXr#kOVlX$k)+qrj3Vn152$HBBgGvn=Wrj+ml5R0@L>OY+xDdb#oYfWP14GvV>pW3j ztycqL>__cQ?ClEUAW*EipN#M1PY?C?+n_!e-_AS|Eswt0XOQ&m9I(Rj>45#}X-B~P zK=)birtW>O5>YVDd=#-)v+LIp>zC!z+qFEM%3*sp04lDd2t~K_u&-TZ6hwdYbmouf z_0Q>@+qey~F61-q*Ki8xGn(bYcf@Z#nz}C1T~xH{V`s|a9h*iwLzsSdwj~Vt!HpHk z&Is)GF{ILUF<7~y@bpn)XvD_XP|_BZLE$I*C~c{W#4&BivOWky^`aWBG!>;qF3;J> z9bW9Eo!582Y3RhaXSK&(GukxLshekK+OmnMBu6UaAK)S&)y()vr8(U!gb?x*x~bFo zrgU>mTr8g?jsE9T;ZxiPTUsmBkcyL>J`Pv%m381-de9xAHGR*wJuZ0z_LtI);*Ia~ zkM38|^}qk{Kamm42*BXbK|6Gam<3nynskN=b#E~;61;fSI6 ziX}ADm|U(%Iw?>JKv|qi&B;iL2Ob8E*=CO<<1M>xu!E0DVoRJ?xh`%dYdcYauQ`S) z)JHl)LwiHSDWMl%TarbyY7ZJzE{I%dmzcmJs4SX+zCS>#iAfwFXCU4kD>$1 zjn`V{rMf$kmE#a0autKkwe5g`Ni1^3Aq?yGV4CtjI6J2x&4PAImu=g&ZQHhOySmG^ zZFJeTZTl;`s>`09iMjdD#9W*cu_N}r&3%)ZYpwTL%yC*_r{o_jw)Dx!RA;O6!C3bF zHd&*qm*UR2t+eZf#*`k+kGoEm>U+(P)_d&N0BjrF$L5G2B7 zCr&pIG2KItyaS`IiW*dQe9F-1A)K3m4=lAk>(IN_-6x8Yj{rP%r@AmxlJYN-bBR!? z@u#F)O)&Or34tY!7uC1!DSkz=71J}eo=3B5DOD;ycpE7g&e+UiS=KS2 zfAnhm54}ctcKg89`agOjcTvC8@YXb)1vgUg=Gv&Ip!b|n(o8YcV^r+Qz2dUj^QfGM zo|?ArP{G%zDb;dF{*X7S8+J;q$K~I(=WFeMW5gT?gJZ)VW)S_UG3OSw+I70dWpdXT zA(N-)QuoZYL{}Yt{Nq3CadJ&%;UqCo9Tt8+ZX?0yCBV3p=Aynv4l$EqF5sY(b}sD_ zFYb&HPyLz@h6p=VYd#f2x`>6`mEM4o6>s}W1*g+SK~@e6x8?J%Q$!mJ8QB$XjAPJn zX^NZuhM^fpd6R)l*$f#i5FB0{xtZyjOT7{*vCPL;WT*P4EE+oM-fsdZw7su~Fn|OjORA<}<=j5L3T3M@2MPN#Q&W*~Hc(X(A z$P`C_VYyS9-qdUAkICO;oV>wuoQQNe%1w-Q3s4H)i*j~9i2PEW0ulmFyW;UFvsorL zTL)Fzno7O=5my+2@`Hz0kfHq(ePy5+zh3C91Fzc?&n?a}fGmmfik?E+hk&2>kmf!6 zAG30%orE~w;hhEfaBq3TFCJ&3jU`aU6R(kSu|Ka8TV?(FYtG`wfwDtw_xMGbDN22| zpjM$~Wk);@603lup1H&BFxa9hiSroza(QJsY=ElzpzcXinPrmAWLcgO6r0-o7*4sB zI2S|v@RRo#e>p0}))H(isxD_5+@sox=ZSp!Y4Y$1GNs~fn*|jb>WWKR7b{34U#4pq zyKQ@!mm`d5fHYgeqeM_g;w1#|nFp?O$_lHTv64G=2YHrf6{33`JbsOK@nM7eCo`Cw z4msH@0YC!wU4`&6=Q(z}!?}2|MBHqXZZpi#-P-T?hrwI)i;@aRa%**-Z|*{SX||4z zu91 zK8S|?tDTX%sFRI6ODLh2M~I(o4i-Y(v=ulKzv!D)9y0-tkX=0PWxGD&7DL(y%L+Ei zftbN_IO+XQWBi%J60&e*yF#zbb#{g{5IyS}kl-md$MYgFCQ%6R@Nio&-a@2gM4#j# z6MrA0xtt&U!Vlt^y;Lu#{#V`ar?C`qv09_cDV5vsN5WKs7t#>kdr};0c>C@M!YM7i zVMVJrKJYx@gyw-+1Ui!~a5scyr!(8L z=%+Pjp>f1z=ZaF_Bar9lQ%HtwIpq!n`r2h?w00^D8ENA&ce{AcY9OY?d2|~_fY49X z`lidP(3J6&+0dnW2`JRCf^0OBumB?a^E|oRuxRkbKpT?w@FO`D8q0N0i{XI~H3 z%=?*(KNeyG*-nXSh6QPcaWWTarqTdLBYyGgHyU!*Mr8g03P}*Kyhp^s+&%077S0z+ zABtYlLft*?AfrTI=|%$HSDXaCi(96IF}F`99opa_rVodx(g@U392L>VNgA;n)(uaV!$_vhKt;aja&wIMv z{(Qbq?5RGWZ<3!M8vg6Dg}st;p{1ql*DgPUAHx4c1)Z@c-*dtP0c8;UPgof8=58+5 zrvJ}DKpWaiZ3X@N){Mf@;;$5iC={F$ezgb)wCWcUJ2X{+6cMxx5PHqi|F&$ISRMUt z<)unmJzAo5bnWRinrk#VHFaSl|5fqk@4Wc$z4#|$TnFA}XWF4gE#F>hV(s#J{)3`D z-fo3jWcxA#$Fni zp4Ct0j(#}egOz2cTUrP?p;oxYch_T`8cG7+D)Zl3(r)6-ohZRC-9KT{C=eH|O6gE3 z@Ca&}nuLd%w%_E_F37P<=bKw}Zbd_%bdtcv`}KL)cL<3yi>~F1vQJTyW2>7PV@=s9 z&qLl($ajF>`tHdI?)LN-dGP(R5U-1Or_cc^~5oOIm>NHBhJREmD_GJ zj@s3{)3y73qs~+aW6o*wyg^SLjlHBJ(By?@i$j837Av?S3ChgPEHN28RN0Y9#_X@+ zbAY9D9&_f{6OJ8zTr)9`D{LwrTMmKiaH=mXPgq0v&6Kl9L1CpgMI4Sqc^dL@Et5pO z=9sH9=~L2%ELLQH(L~%jlht|;#UWifoAz-j_1u~>s)3LtPUUj*R>2Vm&zrbcLsPB1`(r0>I0HGZ+;QMLj`4z>$lc8!$5izHbdAS;t>dnM+pUX zMJf6juz)9IRL`VVg1nbD5Z=Yd999l<pHrxx@7b7fg#$mUsAIX2&2I+ z&R@Fs_WOODX)_5i>Ksewk7@sBKI>{M-OaC~`D3xVYk&iOEoC)8eQfO?7QO<9dGsuZ z8r)qaA?#k>@86Nl-4Ak)JZ_1xC01gwt4%aTx$|^3O9g^8>=3C3`-N#`7Kb!_D&dTd zlMTd#)ijwrvMd#MT*=Xg$g&-LV_^H8&7BFK(p?y*_CVZa(ACI9#UsA8t`xb!9!{#$ z#Bx)5>E+UeJIwrEf^V;hhq0+^kE8K~U}`t_?6Bv8?4ADzMIw{9p>|)#cd<1S(C`hf z5w*I?tT&S<(mL1NHZ`w;FTXf`#dg(gV0w&(;q^K^(z4u{ z@AYT7Ofh~HHAeAE7A9Kg94E1UhAZhZ&U$@9I62+f%m@DXk9O^W`VdAwv4F33=<#=$ z47mme^@v=0dbgeasRmHUw@jvj%Y_LvPL%Q47ERBTjXcp%^zL+N_eetdH-_qoVTZjr zOv6A;rkm?jnQ+=`XDv0m;l+UuhJQq5S z{s)@pF%VM96|5ghD8)*=n=iu1XTKIIW#mK>Jz(18B>G41@(cu!UgJhXZeIbf(HtL- zz5t(W|BFoBO2HpT7{z+hOzLkn>>Kq82f3;0JkGBmL+WFg>I$qc1a@Zn^il!lQu6sI z{uH}E_O$9so^l~?3DT53c!>-0(lf%LqMOxXDDgkiPt7hIi+24B&CMi5d|GnZRiZpgj-{vwMd-A? z&_$(b7@R6jXj-^exYY)k8Jq>s#evJ?P9z#*tw4Tmr#I$O*N~#cPpi zaEAGAUZjs*ARf%vD`)9oM#miv&{zX($$xk&g^C&cirdatuOrswLrYop2Ziu;p?n>;^Z^hP~GZ-Od3vh{@KpKL&Bv z>tO-{`d9r1dcU)s$#;M0e~JXM?*>~QBK;fjcfuC{2F*X7-6M+Zo5;VKXZ*uNbQEtN z%}h31Butx#j6WVl(Cay0YnzBE+HRm#KVt7RtlxYm&`T&Lj5kpK%J&>m_YeDmRSd9f z7v_uW5fIF~)cu9)KZWIRy8qV8?)BS|)ZmEq-ek|9d-#Q~d-(;%hWg>j*Q!JS{_{n5 zS*eSo=*~C9>l^3uw^|4a&Yh&nQ%don;wx*>vROEw;xIGz6}HkRb7Q1Bec6zk5{+F# z*FVZ9MJ=`HJ1!8(RhmD}v>GGnowCwK{42T}$Kg5DDaR$)q`}DLB3Kq zuOAx+;g$P`Y?Y+QI5i9zKK252tzN{Rt4W;7qh%#K;fK*9lSDGFL|QR+&G2Mp{{wQ? z4s&pMSyKIns!~VemWKqd17{HVsierHR&#QMr&IE<7q=|+@8Vem-h_`n z&0>JYQv_W}^+JBqQ-LJBj%DRMy^HYmU6e8rhE-xqnU8mMR*QwqVy!rSew#}ERz`E1 zDS<)kNPF==aX4s1n(hEuahZ>6A-)ibm#!8ddq@;ms z)fBiD8u1CGr-zUVnM9yD=qj{Ijf2(kFPm5es#@mpKk5ZeWgc+^nT8=<#u)9V_YshH z7y{(m%rK@FMph%rV8f!}_gJ#~mYtdvAnQvybb;AA(JPLD*?rM;Ta5R-L2oWM z(Ie5yy^%gWZOkW(sbeoqfB;A7;Np|Mpkol}I@^8p~w!1{1%q!9e25CA9Be zlJD~9b|1z!&i}laQMptB)X;!{{%`{U$^N&cS|wu_WBdPKrglab+E4AcT@6*89Hw(YF{H;6) zrs#lU2?Q7Pqsnnf;6ks`)f(?$or;~U^-h(SF(`1?m;~f(*>QS$TjhO{<@XteIt(_Q z7LA$9_^=*jel%7QpLyK*BK(>%3}~+}3n~oeU}1iMevx={ZD&D8CpE$HDfgj6yK;q) zIx~(b6za587blKgcFUr!V{6-GBF_vVD=B}7^0m)24v8FX4dJ|#fl{UMa^Ei4SMa4QI zDzvyV|Ef{QbOitJecGqgmD^a)iRm5Tt*rbakdDeKdL z*6wvDI9)x}Y1&(Tx*s{jkHaoufuA)P(0jCEf1hAj{j$1&sWL#SK0T-mR!Uzng2UF@ zpIAD?fFnXY$ShK53T1)5V(gu{-vXHmj|WzLAl(~OxEKKyZ7RUwXVTCsw%PO?i0?GPFi8sZFE zWwZ9`ZcWdLaUcf%Z@j%e!(X7J=BSrmlHpKxHx9Yx8fI*L?ZX1(90oHD>DiLY>r;oy zY?QC2lX7_fZw7Ka14idUhy}Q;I-Mx2u>?m2M;9CEk^N%veZjs{Q;h;@Cmq#OESo|S zxkiT*i*XWj%p|STpCHF7F8K0tuMNzo^Q8EH1SSq6uY6cb7nHlu^%seLRE+gSQy;Td zN;?UYATAyCS7f78tOX3_a^VNh`nXtomT$xn$G@thREKr1;@Se;5u0jaHGg>R5YWxX zj6Tv(hN4*e)*q-?Z5)PS(1OZ2J zn7Y*T)F>G!Y&WvTGHtWH%ji1Osc}uvgSsBkx}_aTrA$C1%Ba|*x-)4JBZnx7WQtR$ zd*c3jG<1!&^Ob|zI)0x))D&8^sxx=3k;e3_m7e(s&!bXHYBGk|zsA2OF=!X(()D-s zkYHKQx)*ku+7b6@$eb>1@F;s%)sMWc&x5gj^q4S$f@4m`j;E7pJU zW)d$}$tv7;da)Y6-vJRKX|IyB102xzhWKMhNjukL$eCvYN;5TUke~q{G&e(EAtFsP z-ei*`h9~U43S2M*auYFeOq>M$h-!AjLwJsMZ4mr8$1LwKF z(<)dG3x!k!H10B@#_qvv$u~MQG@3~I#LQwnlr;u8+VRqu(+4%ujuNqEVrS0O>&3-eGnRI!H3n0E7jU%e_#agz1?GV*mSVm{ObVmhr8%>}^A;sY^c#8*H&|TQWXMHO;y4$j09ONm`nWA+M zQ`1zrlL+;&7^vD4Ex$!ZX%3gchVpcpvvYa?*ue$W|NR}coH!v7f4fQAVZp0wGm5_7WKeuxskLuo1M;xWy8u> z#7{~`PCQ3=oCO4JP^9K+l|YDTi`*bE_HT)iz=O6NfL!g~XFwUHLn^BWENMmXPxc!> z^^n!?U*n9#{_dlAhl95rjubB=9ereHPdK-wp(V#~d2vzGKEr4{2FbpDVkEHGxOPK0Vose**Pfv;D z61%#OFPTHQDOTo?ho*UNYOSy>ZOK>7i>O;S6NwLCB`Ns*W@n%Q9O1OyvYZQOl%n8_ znUNsi1CZs(hzu*VU#4;yT^4#nKtU%ES)?-y76S%B$QK<{N^yEbFFB?oqA8psj}-Co z$bu0HK+$=mN`pgLOjWS6?&)=~HdH#SSWW?AtmYB(Wuj_XG=R+&ix3cY{@!0A;V$mU z1orICq*(K$4q0J(n5p*=+8}$%9Wwtqfw{wtE5o@Y)hv!Ch>z5vkqwAVBsM4EYJ4ta zFlWfn;G1pUaY%7c0Tz{RDFt4d)6E)Cq=dzb4Q@H^0x4qEBC2}bOv3UNbP~by&UAgKB zHv{W~Wf1&*@oLsEE@k;0UrO^2U%eiwYN?|@N$VCRLwlx1F+xX2$7#-pIi{+dnA{?z z=BYr+l4}d+?3EF2x=mHQq|PInBYxsxt>+a-DqpH$VuQED5X`uURjH4TiQeHDg6{ne z%|K(9_^{B%m}ZJN3cn;@VyLBbla?Ybo7xz7|BUGmP}|Y-CV9WQ0n;E=xHh=lPCP z%bkSg`YsxfQ5BgykTl?M><%F~@z2+c@Y73TA7cx&48~|hKi-_;lE%Yeik{GEnT_F+ zI{&mdXD{tH)3dNB9w^6G|BEzc{gqt9GXLson=Z^eIQ!GbKO=p()dRoOfs)b05_VwI zv$8cgLCp<<355a`PH%MNsVlh%t`eX&J|V(OPjHEpxUGEM#-F&NUEEZy9q)!4;D3=6 zv0x9jQ7h{^IH*~iWm9#UztCLWo5n<*>Y7I8A_Mb=m-|$k{crQ(w<%Tl4FlolPLyDx z*c#+O$i{YKPUsBGFlUEis5FfyZFU51X04fHu#P-ho`i_I6n7ad@oTjwR$(yv=RLX7 z(L`6$9KM&_f{pv6L`z|8D%(%i*1p}6aazI!{$-KQZYZa0Be*NN;|Bu6aFeWtEsxYb z^Nj7W*{CaEK69&2&oYx5R3QT1iUL73==U)5k>yW7Rv_x@tUxJUB;~-Cy)^$8R8AKq zSdUn=I~i8B%s0|d2BWSlEd2vy{(RhU552GObdFr;0kgK_^5)8~9+=a$)ioZz1jo|@ zz#~I!f&XFX@S06&lPyVd?3xJ<@Z0Jrv6S6WH7j$4dkaK!<@uheVy?7SW4g~n2}EQk zRFfowJC=VuQBG&u<~W=nz41y{xc5iQbT~|J;@6@T)!}&%r36{xMw#|a$1D<=b3an< z(gC1HwB=8xs~ua~qSy6=N@ia28&l4F)KC^YA?lt=2=1d+ICcaE`uviEPnZYQW3`N6 z5uxibuaP6^vc1Q}uFpAvL17Dd0J+wBs^5!DWAc^wDlCRgArR{1vd_|0On7+waY|?- z8R3HHW$I8JJ?^Jl9tIo-uHGC*aahgbZI}pS#UmKMwjAU2TjXYa0jwC!xv`E0l-e2Vpzx65 zvBY#%%!E<`C=nq!;Izgsl{5eZtSHq_zdt|MWqOEpX>4|sd%Uoq-NHv9K!YSeb~3+M z7+~4YhXd%6IQq-)wEsw7a852mC}A(L@OX{oIf-$Vy%&9-&3w*GJ$uw=>czu^>zxt2 zpeAPAt4a^t97Uo64oYi(5Px^&_npK1C5@-H8%^y`Rm0_kiva1v?E21uN6+~8-ARwJ zw*|Dxm)Y^~s=GT@#e|!t9;oAQ4`hRMzbCm?#Mi;l09Rr@<32V#oqfZyDMsI=(<-YB z^J@H_jV)O%V42>0wqWJodg@k{5M>3YSd^8Ft;H;txW`dDRSBn%I$zRX20UT6xyfVw zxvW*i0S+DQRafC%jhN-z#1gYeq%P&?J@XFeqMdj&bx5wQ1z#HN>(jX=N!IYsB$J%{ z<&Ov3$6HQ?Ok?C*cld7`(N&%W)=O7>dCF=oL&Mz$+wJIWCnlZU+d*9p4adjhzXi6l z*|cX<5D8FZ?((u5FiuT-KK-x|*VFj%QD1LeT5l(=cF@-`%UP5ZhKxUtoN^|5SC!xe zF-ZGqw+f3vcdiZzp8x9f3KHg4dnO!v7=wzmLmH^ja^9 zGlWhTbk2(d#w5Su;@|NJpPJ%l+x*p{luaeNU}Z)d%U5p)(Y`;>C5RP&7a5g*I)Y0L zfO5PtChX^rYhpGUGV-8*K1ZLUIM*!wtBkEV96QANbmKN8`pJ&N1LNd&v_wg1&bQRz{f0*&1m{v)90vpZfng%W;oupRiY@YntRDEKrqrZEhI1)BaO zvkx|@5&ne}_k}ZfU3ZeRJGx1G7Pf{wh@$%V9=N*jQc0at5`6KD zU)8=naIr9wtWVmn^(Ta32PdNE9pH!^D&jIIvTZWsC$2+cNr15F6S$2>N*|FGz;m#5 z(AEDnm@Hjz6I2%!)Nm72@yWCq9&>^_uwg7e+2z|}uO~;Vb&BBiG$Y$l(s-6@vH^mM z@m9fGaI%*%#icUgSO;}%9WhFB$0;0deT)Fhkw2fx!5a0JI8)+g-``${_{M~5dxp&g z5n-gK!YqAu*1=5(&+vpZ)uFvF+CL>FOj$cL-$NbfJI zjEu3iE8*|9784~t&3Z(S^#xwu{LK6~3}iiKWB5rGG4(;{n=L=ZB7J`Gv;358~-*Bd3d7@=o_Thvw^;cgZZ+&)|dp&|r5f_HJGKCcP+H%I5k&;a0q|(vHl4qerOT(<)CIqC z2>jdU^F#XQk4i~HFP_m2R67=|;0rHj1iY?n4c|c*tIVoUC9~Ke%VANN`y{|fzFrOp zX_g>~)1cAdP@~H3rNJ4KZ2fARUd|Re`xSWoqr_LY;4$#`9h1~#HcHchfm53S103J@ z6bCPQtzW+_zan8H8QnuUc$8`dDrI1Q@`pD3xdj4&6SL3y{Y1!Vh3QrYUpsZR%79jSH_|yMGP5mI=d3d z#iG|onmZwvQCn{Y==djLXmm~9z+5z2FVafK5Cnybk7qW(ZJ@4H1Ola(oM0*droCd(a+VlSE}<3EwkjAYK2a@ zr4ZrXh*e(cC(b8JIod$il0jk&t}`Au4Czofcl5HjYFW3}8PPom6!UFsw&E)aqd}Sv zt8K@LqA1){@Q!VptXe22Ol^=`Xl>GY(v~@m%qp@NPj?Kf!Qw9Zre?quYl@6F*fYlP zj*sEZu@=#`qk2xX>yCtrr4((cBS#9V8kg~^*V~1cXH1cDMG0V!sci@QlILuMQg_;W z$Ju9XBcH6JOP*HpNQ-zbJWM8UFGT~cA02X*)oq`L3$WJ-DDaG=Padjmy@#*d9@p*>SYLlC{~tH z^&Ii2#d_bbDUY2HZ{0!S1O29@qeJ@kWs)7y3?=4BR}_Finu^89Q#)xbXaD)PhLesJ zF+&VBx?;qp2At>S^XKepEE~gQh6Z!6Y)X5L-m<^m+(9+jL9JNv_%E8}1ybzdR=z5d zU~U^a0!%-|RvF>oUw$Kt{6nqHvIuk7JP%%txDT)GF_h|lAh0M1w*|3wlelG+lP?Wo zzLC7T)%(d_I-})kemMEWr&%|pVxo)uTZJH(e{HA)7HJ@!vU@?b(Ro~!)t`RJ(F-ob zSr&A7fGa!{!BigaE)_Xsq1YNJk0!yOqU8+WGfNT5Oix0yL6%BixAynIlcCh2g3d^z znht0vV>EVABR#`-ilst#77v1VU}5OzDqX{5{F{D8&rB{X9H7rlYA7(mrezVR0>I>z zf^8`XyUu)8iqqR;RuC$(Afw>4BD2sENw+&j3nh0jgc|W$s>l`1Re2#87Pw`yuWCK; z)0A$&j1&)_!mo{I`E57a#Y1l=+{Z(}nICxNS#TRRf9pU^m}KS=M2N zaG>DIyz%b~Wr^_XQ=50Nj!AVphRjZTpI`xcB;fw3UXQsuD}J_|%+e1F^sZqd4q70X z@c4iZjFyalQpZGVx+j9E<3NOzRzDdKm&H||c4<@G6f2Q?o5N@J^rm&OzhT54D$&lrD{B)63QsY`v{ zlT|6uEN+k@U1zKKRQH6;2Hxclq4<2D%Ai-3(+#mcC|in1TKw`s&mHopq_sTUH-R!s zZ)kFu)bqhfkN~mVb|q>{6h`D->tk?Fy^5^|ZV>)L&O1{?Ua26Gm0rVN@f-B(9Nz-i zKJ`1^PlHiHweC>CMYqiu$}e~`MrZnK%U~|8fZ|Ngbez5Kg^Um!)q;IK@tGrsz|Gcl zn&an+-9f6!`x5~Onym)}wm^C2rD?2YL$Ui)`>B)B_a32z&a!!>_vk3XgE8f9QeoRB z!d8iF9&>Fr`;qy>+89r3oEsW1mfEGp#c!IKiG7y1#7z9=0e2x}&}G4eJ=cUgzTB>} zHxPc&$E(M^UMWW$esUiVgkIS5thv9Xo90G9hGly;PQZo(n&;F9;@u(sLE1j?A>t9O z9BQH6Fy62JRQL^Bf4J%~F0ubbi3!em6bx&NXjfVBFS&c;UTK!sjh)-0!Xfqs5(^L9 zAD2G%BkHYXJ{l_8u#`*?n$AJ`@C)!gP!NU zj5~;K{_#f;IK$`g?;c^jps&68_k^!N8;TfurTHu6 zL>;fjYRJFp297{>P&DwdbR?beSBbu=4>Q{?er?=l^GI44ls)7ShV1?t;UxS%r+lS` zhC8%$|HOaTfgoupR#)2{J*|Di+8W+Riu~-TJHhNtW#;)x%Io{1`)>PL7PiPa5h1AD zy*p|cS%hSs3*-cP{{!-$=45P+!UFTZ84_yh|4C|8)!Wt0-2T7r?kn1`erlSTKl$D} z6Vo%nLRO3+9zrnC(pbBt(o)dUzkY{Ef)t_^_GES>>t#&m&h{juxwp8>?p$c>=-3xB z*jMU%XzHDBh7sx7=wsSc)!weG*z8=~yw|pFwlIFqc5t#znC)Y#TzpTPo@_t7&c3|= z%z0Ym1spb&1JjvuLhJ|W21$lt3WPQGT>QdOsF>KjJIU+OSvI+2zmVRsF>%sV_msV3 zWfPD6uFsnHT_#}1V^=j+mDTZ4kqt5Zv$1AcajwN>LsrwAC}nl-v=*?m_^#WC4-AHs zLNrAs0X<|c(aC8?0hoFY+lt*apzqO$)sgTK6jiRX*wBa5RBt&|vz4wW+fdrc>uW58 zLYXv^6Xrh8bxKQ%&&TX%Qia`fs3ZtpUhaOyO?k) zx3ECrBarZ`nN-)-M5itg{uq(5yE8=yF3MLl6+B5oRF&Ao;r;#LlNa+=VM0X_%)4B& zS@pE!02hn8D8gAh`YUah(1D;QE2s&G9mU3c*_c@L>qwkgZe_+n2lrB`*uUArHD?t2 z1QSaCz=)w}`f>%b*(~A{m6eS(g{>VDMWT_@44c?DrW(-*I!#84!jxNsNp3du$FaM5#tpZcsG-V z3dWAYRUsVMwheKG2lC@4?R>S`3j*2RJgm?#-O0dknu_D5i8ft|NJ3o>o2!y$cKs4z zLOQb8We!VfQ)1Jz^ibu}`AnLBShv=Y#2`7O*Xc}QTUprptRsij%6JOcDI=&()Q-1U zX1Nq(^;uetc^7JtZzsiyv!u^kJer%XP>oqKNsS?mnJKMx4L7mWd{MFpd9g)wS;2Oc z`tS=AsEaTF|MGP7xg3kaSA$#RS7{B9oJeqg-*N_MPnhZ2ot&CJIMh5{lhv{LBUr#< zy*wg}hpQ{pSUTK*mkFtYe1)WnL}{ID zI9pU^2UnI+U7b1`wAc&}(b$!+<=?vsRcV7RtQ|s!{G6rJI+iA~G)+5XSv&YR`&r@dtYuu- zax*aOp%FbkEE*Ax78Bz}zvAdgr0KCuD`?#u;x1j5?e|F>PDrSVX{$(1^Uub3Co)?( zEFx$id;c<;b>rR=U$nsaatt;9xo5FT*Y(cW<)sj*Az=#GmVlJVTOmEs3C3CYsTGHv z*dKw#yiRlCEu9l<6l+mi8ZRl<$w1UW2y+ctq3{9a0`dg%-2XxmAUdq;pf`WpWc51h z$)Ecwh(SCUI3##^kj(x+)__(+vT;0aTKFlafWQ{y3Q&Bjond0{|vLgvWZTtXZqcTU3?z<n6Ftj7Se6PVsGPdRp zZGy#<%ul-q%QrAlyk#=+(OWb5?DtX`J-x3(3z&U`dw_9yYG)AqjvZXZiwf=vr{@u|p&PCIo?_`8 zR9#}NC`%6TOLZ}bkEIvrcr#4Dhj-`|tfe%yeU>x{@QcPuDRVjdfuxMRJz9_lt~+WP z4`fMEDYdjIT3m7{TT0x+=w&?A4p4_Wqj0{%(dnFvCuEt%lg#1ZWUGOp|9dE@riEF8 z;QRXa0MA(qLw_Ruj*9&g`%_4oxt85QY7$H+NX`x}9G~{$DpO3SA5ZW~o_Z#>Tig{O zZ#VHUir~+$*s?eNN^gl}SZ9Q|`;-*3chBH>3nkl4cldJ$8D#(OQ!U1LIkErao<>yO zhQxTTBm#k*;BC#ko0z1I@(^Mq<8J~pfvKUKtX0~Hr9wvrf1Q|`Xz{*NkAm} z1YLg+94+I8&w*MZvP%4bIg)jzqdl;Jm8AiFqe*6Jy-EeZY^`?Y#9rhWm7 zow2H!#%$T5w-BCMeVGAwLza&owhw=)NBVBIT8&)RFyHG5?Rn%5AEn1T$5B48JUrOC z0?qhiK#eY^J5OF#vKXpbJhrsSMCvmoJhg*;&W+_}LEVO_}@mm77nsK<=|Hef{(?^rCJ#vZ9QUpUrPD3NjCE8#lx7ESKfZo`$9XzAcWg^V*8oEgtcNvPx=wJ(?Ui zcLiq0%>c$JMKKvsTFoC#wCe9j#*ruABi9Ua%s^Zsu-Mp>?`0{mm!nEI>4%K2quOZC z6WuBl&5KMyW1H@$RXSRzAK@CxZBaaaoVQD_uMC+Dt_Os5NM9u=PRtwjSTalw;IHMF zl`-p*I_}A14!OIbh^s~hdj0~*mJZ#;_g{HLbAMxwtj_Fg9eN5~eSL93i+yRM=aKCU zYa(D_wt3DA6gJbBF#?Ry*Z6a7vfCDsowB$8lvdK|3UU(0klZ?DJ z*5ZL?R%41s4%tZ92iX_q{+UhEVfg+6(X+#GY=Ys)-Ss!RVqtE@nOP>-;v`h}_77nC zHfP}1S5S;)3t#Y^2tqZ2oh&s*;}2Vu4Dl29LmOkSAjijO#9mIi-ms&nLi>x`5M|*a zZ5W(w0j$qHl;MK}tl7a5lR0K9nP>4(-r3as#<8n+M^*c$5?|zrco!X`SX9doizSe@ z?;W+o#^wI+gnK zQrK;XG$tpU#AipWE_-5}o^4Yc!a)?jHClVBA$Yo50jn)f4|!0{13g<(SwGI&PN1p? zgF1tqE9w6{Cb)9G)fOu;dc!sqo;{2G#`u3|^}b;eO4GU_62hgqQ{O=vcu z|IR%gzccNabqBX_bSKjedOm$&C|3kT@(vR-P7RJ7veaGQp)6LWbzC4+&)lIJl6-H1 zZ#gi#W@h5@e0%?Dah$M*^m!)R_)_6J_RDQY&{ptc{$ot@Lp2=Rfn$sPZ3>$+)oe;N zYln5+U}w8P2?IL_$h9+>q%|WoeX1TnsOd_|lcgFSm9mOXAtBf-I)wd<7u`D7;M3>j zkE*jR*G%m6ct;CdQ;@#*$nD=n{~h(~G+^2zSH$HMx@6K3CrBF^YtZP8w}L&yGg3^W z8__fifImoI`hs`z_LbiKfrc=j^|At)YBYoNZ3E>=GoZ8Zic2o_=EkYYhghryO_N8w z?Tbb(G20 z0jp_={|Q={)Wm^Lro=IEPV*iCrZxdzm6xKqO;F0T?$O6%>2*Z+3HFrwAgT$sCf&Tof{BAWmcK#SlBxHDe%utdQSd?bx^d zHC~jv@ty}mUYr79FZ;k3Z)6Tbq+GvLy$EOL&sbl9dP8~d@dQHh=cf%18M=eIoDm4k z#oNP^-iWe8MMM66KtTk`Lf;cvyJpmkepQ1a*4uLpKJOEk9U3P(6Ow`GT?^G@P)g zVryIjl{A`L9a|GhS1=X1k=GZu>z(IWFb#2Kt2I^D7bcE^044)U4tT-)qf959g*COQ9QCw=s$%{PA-$ z|NWko{F;@^7%&ouQAlUgE3HKg<=6Gu#XUa{{I@4K0lg1ClJ{~}h*)V`#pQOaW1jGi zJ1XDj=2%Q`ikXGwIS1?EX#d&p*=*Nc>^^Tm4k4QmbBEsIr;hdP80!9B*wEq5a<(8o zSPT%X;*f916}(85gSOzh044OP{p*!m2m}PAPXz?w-Yu2pfloVluvn- zYqsG2wLxVBz^I{sWWoiP>n>Wk05zeiKO*eTm1fwARN^O15IvH-5 z0O%X0`;4;q3Oo6Vv-rk{z9&JKXH+hH^!-C_Ab}P*PEZM^iVbo5uLAsKK@9O_nPw znn;pNr6o1VqsYr@CK3t~~G^KPuRez`+go9PVw z<_-BiUha%rq_Z4S@aS33ZP2&l>@sfoEBT+21UuhLf*~RhP(2k8kmP^ca`0eb{4c%k zEdRGdOWWHIZ^i#dz`9hsP9l8mf3fyXL81lGmSEYoZQHhO-LieFZrQeN+qP}nwymx= zFJ|Jso}Zqc{yCA6=S1Y!UYWVh+G`<+iS=S(7fk3K0Aoutoz}-SAk`aB96O115L;Ak zWj#$+8auGESfn?GjR8U)PpWQ`z%qguV_o& z(?N{(;6yG*)9M0Lv5LPKU~ zh-p0`5X`wtysz8=tCmu8p$1=iNnoI)roWbw+s<2_k;R!DYamjl!bj&2cBltyg!AvMmJixJ<#I)n&ZENtdl>t9yN| zn7FX;aX#_XZBb5jPk}=%n%Rn5hAEMB)UeYeABx*Q0i(IuD_TKYkkXG8e7LZdZ0?I}ni?qG z;21^vHX!da3w4Q;IjdoZo%z8)>CPHypnMOA-I<&Ss@dl5Fc245Pb5dy09C59Np zLL=Yy(j&_o0Q}xLQ*qJ`R3vY(F4Y;K`b!3J#^oR{QxVxqt~fueKH>^fEl5Vp)oEDF zhYNv=Rd4_-w0SN$cV$Li9*=PjOC|mS0fk*6m-Lk-(tokJ$jBi}L7N zC{9M(%-f%yG@VxrhUWKDBE-d)_{&?Urx<1fp zT-*xajeetetB2YXvV*R{V?`~#R>+(?w9pRIi$b_9Pb$F2VPioor^xU7k~bRzuOQ|O zFRfs_+pt`}taVFbjq+G(*wZgCr|a77|!2o#2n7( z0*J{Hjz3_DRtFvP+%6o{Ww zz+>jo<;mQ<`#=?auRBhX5bS8|uB6|Ugv|k)qhmG``e(a7*@UlX-(s1VA}38@#Z^iO*DNt-bRt2KR>a|R>O-*A7U zMcm!2#LMC}MX@A+qe_0oJJ?PMI&|E*f&$xOvyl3DEYX$@%M;YrV`aWf?bDwHOcOP5 zO&;GAh0&L9X4IYj7D_QCwe4*Cb=oY`zhj&oeHG&0IzxYM@0naU4UAzhxeRWhx(jwY zsPs&v)DAs}+X%dnY4$v*x@U&u!?Gf>dA?VuykjwE6jGEQV^lsd_z3|sWkBJw;FHaw z4zR-w4t}b_bLx*R!!vhk#f=d!M|PA~4_$ompgBz?B8D6xS$~tC@liet!vE~%Fg1@Y z3nu;?JdTOR;d*~UFA3}Fp&5HbO~Cg)^g2 z*~!_fT@y^Cjfx6mc|R3z1y>ib57R{Xq^~sF5r!EPAwsl>s{C~xFj_*T(qceqP)SvX zqFhq8879fc2DyG%!|gpXr2?o701dq?Ura|PPlE4BN6x`;+g;ACYx27o$)OB_(y)z+ z4w)JxeMTGubCS5D7uAgJjS17;*L=$khMbk$CT) zH*-6kq}$5ct$d8VgI}ZYwOTkid3HqBiiM}tN|KxB@S6i^xgNW}%3=hEorYJ;5T7Rp z+~Y5vF52U`=UGGN>aPKu?A=a&m8g+zrxw>CrW zfovW?s=j!TuJF?J{*nVZ5jmeXcIE8qhGiJ8S8_y4NPl_}AW_G`_0 zVILGFq`8T44#l(zXv!_JH)m`wR;n0@%WE#1A{oc02IebelDemtqrJR3h_irFreH?8 zu>J(+e@C`@E_K>%l;BHTG!qZaN*=kz00GXC+PAjZOvG z7C@ZkBtoBneF_`oWtfvjnv07#OVb6~xT(k!`7}jr({$93tjAq@z%sMCID13ThMau2 z@#q!Ple?rT=R&gD{0w(JN#;EHGo{j&nuxQ<2Qi0}o7x|$@#%yhSc6pePq^Zw8l!4h??~khA^vguLSd)e$jjGuq)-#(q|K{gj2rzca*T5HIA^Yt*8-) zg*n^vWN=m_99j`TSWI!r9j49Tjk=h}Lu{KoK6~7~SVv1O@I3CnuSyM`4pPLC z2~x+mVpDEL0J|cv@d1M8ko9{)9=PHmyM{@;Fvab&ZieOT(|rQn^wK-9yUlQmVs4X` z-`Yx+#9C#;7?chT=3hpmIb@yQht`9bkfNfZ7Ge7j6-`LV8>B&~xo@rts`+5AZ9Mf) zWur$gv*QdvU)qUAiDQFsPBgfNO+HLz2QMXXjQQx<>UYTR)05v}vD>9g^%%zFZ^Mtl z6Fapwi07u};Qg|gHW=k}Z*(kd;9&0C!-=V5U%<*lN>u=wJX z-$;6B++zBM4dunV-yugu#o}IL08O(0Sj+doH_iWQKnKNK^dVL7Q0wtkSl0Yra8Ca4 z|H*nt9L}s@i_ek?5B&T(B9Xg$d6HCA*pXO1V&Dwgx7?W<4$kyzL75{`lo7M7q$8sC zK>TGJW#grxl0$t}ES!g%Cz??jY*HYa+E?m!(2N=9w6$z0M%)H(eET!S-DG&|A% zketoLt@T8TQ{LnMiWed&*PmF|?|7cN+Rvr9C zqBH6*TRA79weQyu3nQs)ofodQX%wHsS~^7fDhgp5IPbwk46NQjH+peVOgzr9nc1kX zC<&;X+ z03aL;06_Hr^BrEz#PP3%o$dduE67sORz{XY`A!FMG++pqR?%RruFmi+?7D^$L_uUx z)vSfc0QXuwPjeEQFeaOR%w1mohTQo?*J?Ua`q+iPCD&X|HX}nG6ry>|vn!c7`j|dj zxcUCMq4l-Wm^K6mLx~3iV;r=9tXoCfM3c*?NsB2e!VEr6DtH7E&eyOsjuj&ds`N9! zfN7y=83?M9F@Umt)4i4!rxsuDr2Ld!K-Ejot}ftRX)YSUo_|QXpt+L5kb9=Reugz9 z4W3&kXK=ovEYTg?hj66CVYP=TfEfZF0M}Zpo5OE38Kv@BT5=g(LmSX==((65VDZ-1 zXVyG)APPzVlQZ~ih3q<7YJf?0q~?cr$F$dRM}mJ~%<4!*~T14VDg}5MH=KFz%-N>Mbre-BjbP zr8z?mOX`YsH>pXq+&OQEA4U<*qjlEl6OyLTW;=nZUs#%f-r%)>_{#UgOgyt_t3pLo zJJG9q532O!1_{wu$>dOV>~3@IGVn?(?{uiVvaw%`52GQB8Uoe5>Lb9VFRR2C=wraDUrGM;u6;UvYh< z795J!L)`%>kCYqNj<&pflaGBcxv08<$aQP(^TUlZb5rvrbd+nzlSIZ|mhrsomx`Ef zYc8=h*78Bq;LLtY)0Quk_~zwC8DfBGi^B!ix8yM|b(LOxgUmAAXW+}l$c0J7 zCtehhGm*iM@_aS|qyxuqR5=%C+JG;Z8GE1&a}N8}Hx1?f269Gda8GUU1EOpj&W#`F zp-$qSd+tif3EQy~+7slz^J_)mj0h({003~mwaNRxR+}OQf6Wc;3>=LG?d`2Cj0~K9 ztMfluwJeo0+XVrH@8n{K3oI<9YN57`_`rcp^;TerLI9+)aD<-aX*S*SOR)>s5u-bB zs#sTmL1scz+=4!lcF)3^J-ERea^t=UwnrhhufaEm$`qV!S&BIS&J>#3U&agN%}kxZ`5n?Vl&- zmKAB^$*RS0gK4a_Gl+$8Ts&ns{EfPS0c&5Re@u&wXMq+o5=)xQoz&Zw4Txe|8?{N0 zErS^hUipeeoYuK(C3dcfp>Zfte(l!=w$L)v z7h<>n(q=cW&bJ3@OO$ZO-a2a%p;ccLhxx!Ccm}q|IiSJqFu{RnIIPK)CtwX6Awqa@ zAng|+t$aW>VJV#`_*}{NyO)B=R+i;@70geY^;2!)j~2YykxYk3jVaijClgd{3%O7F z{dH3)2bzw3;9BGe+jXcy200$pC1+$qlqRDTnQ2Hmv76rZQ(-lECU#q#b_VzJoSLR% zsCOfwrMQ5W$E!7x%A6Whq&8&a)9j*j{jA$K{LoLh3GP)p#KWs_lQSurf?u*BI;uC$ ztPxMVbb3YMQ-E}aQG<;Jjtkuj*hN++xrpJrhmF$bJc84%PtQJ14G-l4Kw?@g$%%BW zExYD!mVCgk<)f)@JobMQ0}_2+s=ljjZb>X8sn1DKAd@bxr%S;(&Ysy_D-#*kawwJH zohoR)lzZ^58F1b^C}}@?Q@xWY+m|<$0sf+6&lx#Eg)#3ZG|B7ZpBiCDBh#Ap2WXIB z!NAl8n(Qxd_(@%RCRAqGnj-7Dl{bg&4lxYE$sq6wJyLiw;RmM+qO$IHcQ8IElrUN4 zK7t;lYpG0#AGASFvAOHYwPyhfj|7#UwY~W<@pIUf&6I&+> zCpY^4Qc9x#*UWzwRFz7U+=d#;H(lW8-aGx@U1$=Et`oHTYK?e_CiT_~Foh9uT{h+S031so2UUfK%NOKkV3jT))cAy%m>whS1H zKhd})Ca#)%vG&0DNccck-IhwxjQF*S_K)q`NTY6$OzE&0I7t#L^24sVaeEz-%S80y8OJ};5)!C881@tdf_)uN4`*e6evzSe94p29MG{MXZddvRM`a=PCur0!cg-JLc!Nz-8yAF;$}N2 zoJh5;RS&;$;3-igc8OLB&j}EyEdG|9&>3MhEKR6_c{1)jx z2w#H2Fq-gY-6jQ0%Hj4ZHB4N-Y5`lD1{q~eb4KXb)9X63SSIj* z=_9H7}t5W_R)WGYVJtv<1BZZv># zEpRXeA=IaysEr*H-ZB#k^%>FD1grP83^%R}!3KDGtZ+wWH9!23`T}j+rs90nbc@Uy zFC65^eKpnqQ{5YVN+R+$qEHn!&#_31T#GAUt60nc0Pi8=`$B+B1K@XYn8P~uSr`&= zmyls%*OUJ$KIj2G|5whuR9@U1M{s>!e7iBQwZ8xKhSc62_E? zqZ9T-%7R1_hksk(<1AuE*;kQJ<-LC$s`U5-%#EW_FzYmec)LGN1q7d zniPms%?(7V!NaU$<;&m^y@6f#wNAq(LBkS-!%p+sP5q~5gtA@+oTor4R!MVCyvj9h zovK2lnb9Mk{0*<3!bm;lae8kJw}eIP<+?;|V_qOrPElI?pSm8GQqGsvud^>_wv80L zB8Iw@Jrnh~`pB;b?CG;yP7*x7d$Z*4-1@R+W@FR&1sS`pv5wn=VOL@aozBUbGWD59 zWu6!-{-xnUEyDi*{P*p?{6+GR^B1U=u>kT1A}p6!OR+4F=GR>lG6F%s5LqA?fjH?k-c1ru#xyt$9Y$%bBl78xsV+0g@iH+fl5|qX$7OwzjKgtK$DLur zXvlbO4eR1phHm=T%GzOA&+=)Va-(jc%*2uw2$m4o1i}hpCZ#9{OUmlFIw8mr7&X+M z(2O&J854HFN{c;Rds1Uw=4ohOZdvY$wXHJPZ>(QSY&khnp%|-lkOh{DvSL9~d?2!J zo|batyrEvI6U*#0)m9&Dda>432YD(m&7sn|4~Ge^P??e02wl6FaGu=vD(Tp_XfHCo zjXWPMP!ZS+`dFg6x9R`~){N>}a71oc>uQmVy3W5lN?Q(u84;=P0cNuQ4XZfJLX+Cy z1wk>w2=O} z;Q?u)F0Vgj!p~IdhFf_rNH5pR(;ZtRrM?iE1YbA%OhfGNi zgaAlH?VvydNj(W6CPfyK$OH@x{!}xN8=@M9d0!J2)!3FP7w?yh0@cMvdH+0;AoaRa zB}*+-MH&@33c^9_kPMtwg*z#x)-hOO>Sgz^fKGWG)5(TdJhMt)p`O_!o_3S|X4!epp?#O*qnUETKN#@|GB%Cp5nm;cS4X)Jq$$TVzT`{GbhMo!}N$RosHvii@v*GFF<9 z&(%B7|11dXvMUFR>IE$KcbTZY{~wjUw4`FB3udb}26u=kd`d@4+UU&{R1os zRV{zcoxK3eBBEoW@Pv%|+l*)B$SSQtJP@cxhz}t+rbDgA-M9 zcK<2 zNKzK4vH@N_k=UG|(3i0=EoRDT%x9IE9qkIVBk6nJDRj)(Z+{_s4~aXSv|> z8yQhxmyYwqg`M4G!h_ErQjuU;4;7O}G>KCsv;SgGd#w-;E! z?RmNBwA@q;%*`@`p!t8+nQ<21y%Ys{V;1i_%A8bql2s2{>kNs%^GsvC)r7VDysh@4 z+v1}cGMfpvVsY1E{5BH&Gr;VYqU{Q`?+WhK%kL)446E5QnP*e@S-FGKm348IOO9*R zR3>(C3d6!3U{{bj^Z2#RjljU3t=ZHOL%F!45;yS7$YdV9sm7(O>>6&mvA1E9+U|!+ zyl~b1YCJDp&O1vj@W%3Gf9;&V<@MZwUY4FWioSFA z0WZ@Xsg>fRqN2v`Or5m56=JGkWbqe8IkTXth)H%sG|+jFIGjrv5wl~96)!j1(WYO* zjTtgwc}T^NXJcr6vsf67A7B=br`Y&E5S;AK;loCKL1)G zEx*$lu|Z@#3EMiB%Gi&q7Rm-ii_|?w)ZSp;+VoF@>4!lL0$pzcU_b#KD{rB7nrC|T zvGY3LVb?j(#>nKbPY zKMEU7wr^Ga+u%*xYWxEZqPE>kjBhUi2aVkA!r^vxZB>*he@u{gk6M=F9T~6?Y0Q?0$m;c?NJwWofd4Lp&j$r zwn`VyhpoTnOyiG~>phHv0Uwrk2Rm*Q?cTV%YXsR=)igecYtu@1!kx?{aG@^c{*f-h zLx-*Wyyp9ueMUONI1L(D$6%VSRN zAlLX~M#}MAMub0ArpFG#%1dTng^H%_jJM@{6M5(EWH~Ci>pDDLx5#-8d4t+A zL(tA)2H7@%P;vc4`B|q!k$#XNx`1mRESj*--g+l*^;Sf;73C+A8@KK`kkAILp@=ZX zpJ&Jcn6eOaxVcSzi^!fxvE*k(3s#d_|*F#*m6QT&A}%D5U;)gcMA&$s-qT zu{+48t;fYYuE~j8YNpQxzd;W(FT4E;uw(nE@FP}_449Fry;z{Lw#`b&-~!U~^^UBo zaQmCPaAM;N){4!w-D=vEZpDXYYpTt!`JdSrP|YQS@S#gEU}~np(!1psIXzr2d?2 zQaO1pV=AS}T@v`J)6uVKNFx8j@-c09({skomA`=B?YwS7nT~-iwg>C+J985W>_i=I zbJ2!$)F95X)pL{vO9pR2)qp}tz{4iNklKRi1O8*EQysa2#@T^LerEeO(=M|uy0zAy}<)16J$d~=3pUV_SwGD z{y{e3+K}}pIFr-entq=xz68^Pe0_1}@(=KThmE&VbSdOt$>;((0D#8-U)T`;&%5sb z?YaBkP(usaRcFZgTm0kkTq~ZGKejIyqxPvj1p?bpnr$@MWI}=|*_g8)(4$DV2EFFr zk=LsqL7#&T0jw-C5K274e5`mFBz!^>R+508Erg_UZXRi#WJ2@dQZS260$X0}&tzA{ zR#&@YkEhzFS4A50U(@59ztfo`U!PCxd_SN76^m1ViG4=_8@}LrLFL%OAwqqw6o|04 z*xigw@rt+2Lr8U#?x5;k1Ns2olXryrxj4c7oj@MyM95)cN>JY#M9diBX2kBI>Hw&v zk9p(0JSx;GC~8jR$cjOn4s4*`Rd}gC>&AORz!CP@{x`7<)*B@X$~{ea9ZoUJpYac# ztpWxXh{divNU%d2%5#_IzrJNo#w1M1VWh}>I;FLxy(>AALr8P5YZ^Q_lAyI9bo|@- zwYAiJe~tFIwkhHbUBE%>n&mL)*z6(citL4qjN(Kz3`D(Jyn2>{Ergd5tLldw*YdZU z=TY8&8tUf+kkcv8WacwfQvdLKLAuS1NGVz?82BM~3o1KWepK=4RL`=<k5( zx~pB9G*R3^g*S9pU=*4#xLv8Lyw$4Z8HvH<*_%gNrgFtZ7L1873^iPuf!BgnbDH;Y z0be+vk|u?x=AxEo9X5hpfwAcq2)S{^pJfEC-&YDr_ec(ei36ovh?)qh11A66*N|K045f< zo80L%maMz~V0v|K1O_*rL?s>{CPRg}gRq9rg(6)HBD5|b_NY^Jq{l=n4UfrD32VfW zA!TOVrwGh`1Zxxk1GO;)W{cSTR**-$(GX`HIAcn{h9zmr%xj_fBnR9wUM{M$bkIwj z(K*rU(3x>(K$8d+_0NQ;07{rydhg{{VP!m+2x)E6Nx6#e6Yo0d`2>d)NCqQ7;0DUGYtNQ`L@Khr+=D1w)AZ_UkmLF0+(tnU!0VS zQxq(2Ul)uow4;rJ*GBQCjjKzEas2Cs_0|kY6ISRlQgnZBd)8b;f75PP__eldqzp2M zw*e2o*vP%NR~%GXAcA(_2~zNp5!i<=6zD8}kNYmxPd@ZrWRy2=a`d~i(|D=`#*>R) zX2UpQ)e4%=Xt%HsTFvV7|%i4{m=neeix;IiIXdBT*BPN(J|m2h|i3G z{C1)sD3>%tMxqxMYUBh~Mv6%jlNQ#h|0yxBQ@Q`C(a$V!0>4QpR>ntiKR)|A+^v5S$r$es^252gJ(L{nYdc8#iS=0=tKI%jv0u+zm{sE-^~8P;>n)F7F2~3q zgS5_b(L%n!!1b9$w)MRWSa(#)axAAX9>AN^euL@yJ>7R>nN-3~B4L`YTf z5>7kKciy`zEwvxxU2r!=TLxY?=xmFd6oSHEHub_TsGl$$03@DLV@>^+#fZ)uJKl^@iW2;?4-&#C^3ZvkGpHV!* zvfXsQR&1`q*=v+wj8dYMlFZ|V286o7j?!G`hD!vED++vh6Nc%TMy0-kvM(6;NiZ0} z=@nEMzy$?qQDqQ}@E2g%C?loO zTx{26ipEQAl02`#Z3b;V)ve;_lun}OG@3Zg6+c5{3cjqlXitZR7>at-v>m#Xrf!Tb zV_xrID!~d@JyRm2WXv2NVlnfy5H3W0vR}wvzQ7ofQAM9F-$in5OBWbYW&;J-KdBYr zdOs%WS7Z=tW*lE!u9i7vzHnzuhKmzTE)EAm8>F5Jao@c_qc08iFUMx&FU-ob-5<4k zQ?ksUz;Y(7bcQvh?y_3ZnPi%;L<3oi6Qq5v9uVdQYS4Gq_36}5o4SIy%EYK!v|>7w zM_+74{3gqUb7P-|XHRVj7t}dz$v?^>E(zC^`5tdZQh6Vfq)rzNT4eC;zh;gbZl=^Z zy-phz(-R}OTX6azwjonrhteUo@LE>}6t76e6)Yeio=oP9E`Uyc}32b|k`QhIJd@_%EV0eKS_E6cJjO=ohIg6rK+Lt&z{ zg%8|MahaShVVdRlK>#SWC_@Xh5yCf8D4s#@k`HL>edQy(qgShNcY>S@* zMjjY!PPV_`R%-5q+5L9x*x`b@fO9QvEX6jLpHz|WjWk%MtlMZN0j^wxzSkDNxA0g* zx6A3;g?am5d>y))AklWd{i$?bX}17@|9z~*EVfgIj96|_JGwH3EVMtQu=wMAOTF~u ze*9VdqL<&5ft#s+fz_G;>26w9zNmg`)yftWg`=0+nd;^b=~?;QnX~#)eCetA;9vam znft=8dr4^8*1ExLl;4*V`gm#LyB2Kw?p#*CnA+oK+3`sq^f|euZg}D6{H$5~s4{)+ z(Q*-lX0QDRZhLUhj+>OY0i@=Aa?s^j=CaQ;-WCPAj@FsO^bYX6PdDhm?rab5wb+%} z7Sr{iS>^@t>!t7t!{-lqekA=$(d`GWDeR+TRTy*c2~n{Gt3!HofI3kkCEr;-&wE#4 z(oU}Bh&UHv3D0_Ryw+0DMK$Q+2>&(WaK2RGtO580ruUpTR1)k}37dqaxMzX)Aldnr zI%VX&-e*LG+9$od{{%v$&>1D0Gmru5gFRaigD`3qv6;NGF6fTL;##{Na(pJBl7>5q zEGKZd5etl1t9J{~_;9%88h3X8lUk9A#1ae=>j1Yr6x&U%N2_xW%7W>7Leue#Tt-O@g;>Gm5?G^5Yd@ykkrTi4Tqk=^;FrGU2_LCq9^ahJt$ zsuR;+r&YhtdBjmQac1!l+|e3{!xd(LGnT1L!Z}EZ7Ti%g96xIpuz4HsdoaIFPT*KQ z=uvgmaX^V2*ifp!AdbMfW$g||%Nu{p^1z;lwjGi}x?+AT zuRJ5!OMW!BsEp(+`NsNG8px+~l>VM7f~b^~-Y(5U@nXHO21l~Ntz1zjqU$%Ylw_`MH^9~ewo=i=k*npP(zM6c1m{xmBqLVSe{gQeQ?-t{ z#lG8NN$j1^bt=g|_o2h6%A>I87F6pZfmTt28o1CsvL2?FhcE3ab=l%+Gx=g+fGPO*;60+dmo#y`j zmULoV_jkvH)8#?Sgwut=B(genWGfk>$}qJA2}{E)Nn=)rB*{pt{4ElVIJ%1VAo7!0 zeV>hu@WID*m1U=dW2_(C|9%mNxn?bb`c=lLK>`5i{vW!C|33*h|1S^^t&K(77?h}k!?PaX3 zUMg09D+KM}S~f=1bXR_r#A*LVala^iig{0?J2v;HWE;L34^O8)m;wox_mZpBaUu-i z#V79C;Z;PiHw$Pvfk&`oP-jksr33PVB&MutaN}ZO!XEwPjV1fAVbHrOx;(5?VYkBfvHTH@ zF_;RHzAXh#SmP3u<3^nKkF%n;Eg5v=;i1zp9orhvL?C4oT^ADE#CVyQ{aZ?r-;8UL ztSA+&MNvF54ES_EYc{oEklzY7HkwpGZsz_?lY?VXuc#~3g|nVlE?h6`r^>>s)5X3H z{R?%Drt*{pTC?}fBLN{r#>G^Y+N>Y%M4=j%6qGW18*gB=Xljj|EiDp z(mNjLZ+omEYRC%z&M~g~ODG4?mfRewDp7K{%D)AKKj`An?!uFP6Hc%or%W(&33ROP z(4o|#(ahJWvEHaMoAHl29MD#)d&I)1yQ=Qm)J1f&Jf)+2q<}YpL3s6d> z=`KV9$QIU!RR^mt%I|awp3&p(0gY3V7jUwMlGfCMofZt}>_cyHV{PkPo-e)KCOdm& zr?|@0#%d_avGn-mObvL=hIu8S9by!oyn8`N*C08-(k3Vi_ptSPfpfY9Di?DHcu0#J zYryPFqNiT?(+fI4dW3uNL+D+j`(cJ+nfji(Jc4>cHPt?17gcVj*+6&c@frw~fZt|+ zSjcNB)#q*{Sm^n2XdS-0(m!X)K4m4}mUi%*D74)+U;b80ClazH@^Prlnft?!Q`a7m z!LH{h6AL#^xXQdE9l9elq9Z+IBb3`O&p!)%{#AH=o*aBzKL^K4s zQT)~-6(fHeh^va1T!*PfXse7bNUIQL%GLO6N==j1nk_N8O~oP}#6Ju?HKz{8PJ=y> z&F32uIW%W7S)|%TFvJ~bLg7G15D_`re;Nd|{Y0c_FU{kv!>;5hPK8{FhowSltc ziV*FLtM>~1m0hFq55u1`%gUP7gjegHggmoZ=5HJQ`Pi(<2TX`7?9Q~3pUhAn4{(aq zCQSS!grl7|7Pn|>s4?kmfR}{8uFXOcqH8}GL$Rw@1N;R9c5{r$XrVsoD zq}LeAz_VcQ(50J`7bZmz&_RcPq=B8NjV>)sZ4S_-wZ$+TSRM|-g^X^=n%3qoF{_KH z-D^|hP%^r!^fP5Q#+>?S{hn4(Ni=q(-iMg1$WUeWa4kVB)J#CP6myU`E@4aqQk5D0 z+&ESNqY#v=VYeq77yD~#D7eKiSY!R!gIQkm5WYH&7qmym69^zYN^PXK+V5qm@&NwT|KqdDTr%I>n3~S7taZ;{c;LP>u&8 zBdUHdsXw;MTU7?3=D4pI@u}_OS9xfu-F=_QP5bt3UR~p#eS_)a63|e?KGOaJc9wi& zV~e2IG?0ABy~?XFq5SxHY=HStb;Rs>%_SelS^_aBmXkLE?HK1t$Lb4WNdUM8Cigju zUbq77xP*QP?GvjGE z{b=@2q(~Qm%b3{%LToBGvHWcl{AelqVfOD51N-1i=b&x!eCLD&o|q2%cDGg77iR6y zhsIq3o)4UKq~dOt)UA__rT#4%a4PmuN9Lf&GzF+K>h=ZQI@YBIzSZyq(lfM91R)8d z3)bgORn`YkUpVrL+gw|X(&+iW$)7i*TLJ64pZnX+9`vy!?Hh4PP|KMfH*$y74cB{5 z;M46XD=(R>sCB=QzI`KzOaFtkw~UD_?79VUcXxMp*T%hZr*U_8Z)h9}cXxMpXxyQ3 zFWlW>xOZ+Q^SyU|OzxMeN}j5ua;i>p*0ayrd#$C6u!w;x#j2)i8A~>P$!np|ymjI! zPfS1CjmUhB#i2*{uBkVC2eW4!&J0rdZGxUJTF3&2>y z{8B^%OdU2*z{~1d>L+t$D(tNl(1hm2=Rsh@A{Wv~n0thq4)koK7lC3V|A7DDSMX2M zuc>9p8dDDHx3!I~mE88@=I4BGQEm>qi-$YAPwKBz6Dkf zy7a;HFC8Ugp23w6>@FFIZveuSyFX|Xym$eupmX(gv^6>#%Snn@4qV!`F&)11)?Y$Q(iu0w#O~X zA$(?;?Ld}Qy~Sa$+=0@u^^ARe&{{s99XW^;HqRmOZMDe^A9?Z#v0U`F=mav2&DjGm z%^g`;a*1ljWDbUm#v!{TjP}tPcwf*>pq0#w+}=YhQ8H1GxLNl4RF~1Jch3;GAJ|7S z6)# zxr5}dRC@DA**Cl({FUrEn+qGrfAwF!x7%FFV>m+db$#BkX%3K5_E;-@tnf7EAM$@` zR?X{4M!4WM29)8eUh5UWT8$eujdkr>qr+EwBn;_Wyf}v+Q=aQmH`XEkI(CMkKq6q4 z!Wm4$AYY(-8=}v}A0RgmNqPTWvpSyu>vU`lYXPKU^T|IHSCMaqMT=mmSthg(;;p$* z{Jq~u+Er{%_!xntGDJJ)Sm(alecjOVkWT9}2qHj-DK;xv)k2|ZP{!f3+70r77$*VT zv2F1+p|*VY{`cweGRAH3%ol`$KB7@t-Y*RAy1}06+s7tv_dmdpcSLmtJReBhpk`3{ z{nd9^_}!y5XJFTRsjl4!irvoiUguuNElR^7VmljGlGn`7xFLuRXMe6T??~Nf;S*td z26H#C|BJ1F;9-gD#~OeRCHBmOnPF3I znrXXT>U|o8+SzZPbMBUN4vm-cH=HT#qa^C0G{1=T$P`a3H+K@UzpvZcwJvAt-gk?=ts zGOsPr*htvpsCLtr`;|QCZi7wCyEn^0=L~+xE7R zqh$r1DtYPW=~oXkbXf}9@Vt=Fr__Efh`|i?KzVoCgg5fgOuVetjJXs&V_gUlT}Ve~jf>Lt6Qk=_7Y)3agN@Lz(SFV;ZVJA7q&J!0uTrj#SL z9?Nd2^gu-rN+_-+NvJn|%Z?;8!FFhfJJA+mkfO=^Og3Rdpf}>293q;+&4**`l^BAW zLJM8U(8}Ld_+*#6ODBFD!29E#ZZ*Q@#LXJgxDClkPpKB4{v-g?eh5T=qmngJbR&p! zMWGe~-Sj|R|CDv)YE%7p{9j_}1xvBdKTPdC7}XiwSd?g`^$Y!%2CpYq#xo4=8ZMab zeqr_T2E-MkQKmgw`!U8q;qnCPBN8R31a6dDX>eec_@`D(R&GcZGFd5%mnt~0K>U;a z5-=*}+{%x}uUOb*`othB+NTWAwFcq$?L%sX!@XvHu7t=cT5}+6j|RQC^e20r-I`>u zEfEq^`Ve|ZKb1!<0JSYu=tb0=KSP_raE2b95m) z%Ih`mKTP3)ezD1sV8AYuD*Qj6S>pT5ksTp!c+eGQXM|N%dxlo;*`y)M@!UtXoOAq9 z;Qb6rKclr14>WRBD%Zt4jbE{pQFw7E0IF#DO6ZsgA);iIk?p0RsP@JJH!73~VxnX% zfKfARvhZMWa~kts;AG*HsIM3*D7}q1h8mcfyP9(BBAR%N?AY6fm-pS zMwAKuZj!N(5d_6)CWzmr<+$xS=?UnfWYkIGDQ~!|G!f!yqY)4fnNsFXY@R7Z#VaGn zt^x*PbbE=BZK-&PTKNK^{2@g-Y5<*bAyK!fSKLUi7EyQiG4v)K8B;cCAS7i1{-XG) z_uB-V`d(;IbbD)cug|1a9 zTCM)`Pn?@`izGo6<4zHrY{9;F=^0-;Az>aLl&n#f%;ObXhm%|m!(-J4!=(ij^@?fX z8ksWTTNrUgA5o=xc_#1pOIQu6R`cq6g-NVD`2tnB!u<5mwGI8bZ(tngf~2$nzsWvl zK`1bTofeW>u>E)+Qq_BU60Y@?Q%X!aw|cSDe2ky7i-Y_*yP)(O;@}gOE$|#$s?^}W zwqT*d|&x7x`y =kM@yXnoH4rCj{nx9c6gPv}ihg!~UeSeD>=$)td9^@7rWudev%;PSso7OIo{l<=ic!UJrg?IuP0;zdXpnJI@+MmeqKxkxD> z!6IU0q@_0iTy`^$!v?0lDOY7`>gqyD#TwSdJJQvQ$nnUSZsu3E$6iyvl8e`~Z@L87 z`8%(^)rZJ|_&m~N!8tqyP~NEMIDB>fO_LSs^qFz+(C%~Se>M|1Pc|`+Wtf3)@glzn zWWYaIAlM|1W}7M+3^5rRkN+tw*LXFUYfb?UG~i;FXy&FH^^VGvn-o45-o`fSyTceR z`D*TqRM*vHgZ?nU{$a4d;c!F}1M@o&b0{>@%~3Gr{p}7MtMJO@ptnt9V;KnhFm2mU z0@7QhY6WcdK}MrCsMo?5Ie**7Dxd0T^Zw#s>6b*+wzvTVAz$ZW2c#6MbF~{A z!cHtY7`NCgMjg0PKm7=&lWrIwl}EaX=qq+@=`;dchKw#gad%LE#6S0DPg*1nVh2!N zxA)~mE?IwBgSA5J$t|e;JrxKy*q!xAv)-?g<}j)+wvthV^(`m67Nu!(i>>QNWwVf2 zQFCinjNBLaneoV4Ziox6ZM%@*9ZM`?$gzp*{+r5ZkaiB3JuxRP%*V&D5@Vr}Z+$1i zD^Z!ziU&9l!F`~c$6T5IaPSC5@t$Z&r7iDFr5t-Grpb25ku4M^&f17qtBg$K|G{+` zU@JLqgpR~<3~fzFO1lwHCW&S9EyK63N}zw$Z3x`G2sS-EI!G13OAJ{uNdE&N*L@U0(i3PnqLx_p0U1Cm<}x0 zQZT?0EFit_CRD^TEmkdo2?>I8l&`%9=q~uq(3?*DF3V^I7VtNbDGx$}q|lkZh$L9N zLtQl}E@FtSwP??<9O0-X4uzP|Dieu7aMm+FF{Bk>zAXo_b84z%K`hhpSqK!^9l^Nne#(Si<|+% zvqPojGw&ZPSH0Iyg-r-k+)n(>r}Tf|8zPz){Q`uSK3yg>CsoSwe@V{`4LZVG zm+D-1Yz9X*0RA%$0ii=YX83#lbQ}o;MCJb!a-7|4&6q`vU0j`wOk7pI-~7MtYMN8D zRTq9@j3~*HsuVCtY;bSPcR*ljqDY`fz>kydM;ttF3WnimkF|N zrFl^)Z#Sv8tVD|oTALTvPsP}sv}&&w~ND8f`saYkXochsR|qt{f4rFLGUgn zo0Co)$8%x$WhI`^p((3{DYQ{Ji*u1kqg_u3Ot5FuVPJ2xYzMcjesmcrnZ9icd7wy)Hg6yi6|_dkMZSR~c(ts6%rIo}H=E%xCHM8L~iIOnf__ zx&Ctt8H@#H>vV);Gukel|$;CSr=Iq34}OyOC&NHTf`cQ z{_sIhtl>`A7<5TTWT29_cu65dTzSpJx~ma(D4RR!WeBivqrdcw7a61Tcbgr@5yl*G zbjU+#4uL^zElJSSrE%@X%H$_5)*0D{2JaCDyenhdtvTEnMqx3txw0Qq z(?k*HXv`5~U$7irw+DZ@;7k=H&pw*>Cf?&_6Y<4;36TnjV_(;L!nr1JG@*lzQ8uCJ zm(Zhn{F45}a88Xmu?N(=UgiYz^1bD(vR9vXKK;AKGF4?P4BL3H!hJzWQhREY~KC;nU1Bj%y294A@k!lGj>Hl-xvV?FH^H~nms zQT`NOu4%07V}C@FS^Czqjy-k%Mt(nI*fkfn#lMao)GqhXZu_ypoc9FsJ4WNnktYtD zwX#<_PDlOAG4zWv+Ms#&$V2(2f*DV&86`PUrsmc;OE8^3Cl>QL)nE z3S%9Zy&h;8^gD4*D$rDh_Oa;N+TN9J+<478|J$(JEw?7N5R+iDRF}&v#2FFC zS!pUL{=Jm4kirT1}!VF=HeZDNF z+(llA_sIUHq>~nRU!L@XK$@JkB3+Znlj?*uLt4|#&&gUjDXg3L=#Kx zQ=$yMBC=(-46E_zg}agfa*VmUm#w@_MjhPh!GmSPUUb$_rISq7acsl6z7CnBO?9#d zuS7Jwzk-2pMdfZIoFbH|pWuZD-&W+?Mh7sEqYEBkj_{-N#mi}ln=XR#3Y&j}6}g25 zj|A_rr4tzQuCf0HWcb9~c~n_dc7>D^msXD>36&hIAu-L}uIu_F9uBEDa7Mvmu>MA4 z%D1)su5zv+FL5#<)gp|;Dt6`em4giWAR99C6Qf)Q$aoR?09JAKPiR~k{t@TGZCxSs zSMqT(%C)=G4Ok0a5;MUFPCu7S2YdX8+qop8DcJFpN6VOJ3c@r_(}F z2)Rmd_-D?@ryu9q4r7c9jvjw3(v&6K!b7Su!QDfHy%BH#o=F}if)*QZC@pP#2@!0^ zViVF{o0|GX`6areytEF`XzUiqxnX7(TvFf6t*NNFe7Sle_JcDd?5UB$tQdrWT{KJx zDsgfdk1m*zM&iPi!4pv;nAlwWsZx0ggWU^>;--k#Pu zv7EpEyBB*xReq3}ljwo2k;MOzUY4n(J7++DkRf9ezqVf7Mr5RRS12lymr!!Y(9567 zKD$Pg8NRyT>CV+$Zjz>+3d2!vjadG8pfyichmnd4lL)jQp*)o?cl-6PRV9Ufio8uA znjT`UZnEz+lKy5s_DW*kikcNw0V`i_7m=fgAz+q{X|B)gg7Bb8-o3a_eR6GQs*-(( z6O2ABFg#)vH*K0CG!FKhv(gk|?tk&>8)YnX z_U@PV-K&sI!1rxAX7#YZkmP@bQ*lJsYa7B#)z8rrrXOukIYQ5jRc?>58b17jyRYL@ zr8k0DhjgzyRGB|-Z4CKmx^?@0iBKCEbBS?0SX;JDf5nZmY_4#QcKAjW77csv!lDc7 zthAO+#NoG&i|4}VFeyWg>(bh{i9>>@RBF_>`1=Upa*2v#Y{A7|>hOAwntEHlZSvPB z2-V%J5&OKlaLWhca##plo$KNt<#wu{?+N}p%?2^l*?ER(i6?hSK8OcR0HeCAT%7i> zEQldUIj3rE^5EG=zVGl#N7IfMOA)51n5Fs=6TT4)=}#S%@?>C&b8kZi{SK>Dw{U7I z!!*2neVe3r93?b_xz>CVECsd)5gN~AVzZ|i>A~eU{n>C~TsxVG3@;EYg}7ME<{xL1 z-otqm(dAHD*iDg;*Ne(C9f?@9az$~Wye{iZQ~7eE%Ot6Uw^B}Do!nU3gylXWxXpc_wK6>_71jM*qSL(!9YVRPRw0fahxcicTN& z92B`4cG!Fol*2C{kwKdQ;G|!UTkNIqn~tmIQ65rE-q)S1y;p~l224I8-2a;I5N(X> zP&Dt?erc!L_E%%;d}H3KOl`pd)atbZVz8COUyRFHmWrPDept9zKX%No)$n5^Q>k~S zKz=k_mcJppG1(zMx*;ss(z+$+cycRCOa<;Vy7pvDPOUa0 z-hIVH;h4XPPdnyzp}W!eTKp&=(Cn3hvI?L2o6vAwWkjPV$KMDCWiVpwy$~ddy+J30 z1$;AjD7lmDv3tnYaNvUguB(2io(dLjg{yxlKPW6|^~6m)!DXag&fNPZ_7vQ69qTW6 zA^pWIf5Z~RmNCNrlu=Sv>+8Md>OQ+h`mB!b72_NW62nI6IU+da3S0Y;4Y}C*y8}*Z z14~C;#6{QA4YV4PAvLBFzD}XtPQGd%y`EU0GDAMyR%B*9fz7wAb-#57lzm_IilPp>NO2NkZRf5sz7M3_z^ef|q}q9i#Q298!b=T) zz7YB*gd{F;3LR6V1Y;D5anuzBNc;UCs_6FZ;3y_Z7P3phDU=fD*eNM?c>#3-L!O8J zb^rndfIux}{+BZ0SU(#8-SplV5-><77uF>7&3}4n%dr(ajU})F5>4-AApwQs)Wo~N zVc+y8P=Rr5e2!>>IC`Y zi_5y|Yi@2*haDRwzjJiIo~fn*Qh;?J<_0VW5F-!T%e;fTn!~UY2l=ku;~YHqr&26kQm zgF$_Rx}VWxd=)UC@aZ(aXthtHb*vew4yr@^<%)DGzT$#d$QT(FHkizm?ma6zKE24ou_B}m>>EaWwBdaE`0eND}%V)q#DbM zrwTGivK&7vvK-=yL3msO`L?FI>E)^Fs zL>rdXR`eq?$}6bgm771MxX@~=>4+&!fs@}YhvaCc?ayEfvZCSMA)l)71jK&~R%aT= zVzvP0H{v{=uN8x2^$ZOarYe*oTUam0HczJ{?pZ5L08n6Aqe{%#_&7U^`**Gu@@i>JR z;q-!6p-N)Cb;l*YL$-A3J9+RGmNI-DR|5OYvN{HmoM%{%VDw_!)6)=dTqhG)@uQp| zYwmZ&2<|FS`HNX|keu!5D)7Rg$IHyJ_=3FBaw7`$VzrDoIUB{{A!~L$4hfWH6$X;| z%@Rbw2c2UZyoIsg8FsT2Q+O}%a{iftDP;W{qn#lauEDfCq%pf?G*M(D(l)i@@HzJc zFlxe70S(P)r%Z%3;Hz+(?70)?+#=L9=3_ltbVyqa=2YZW4;vmK(~LOY+WfNidbU#b>vT$Ow4 zZq1kwMZ$2crFb^hpPB$Y@@%)7qlzGkS zz9|!dW4=hB8S8+x@)zqjs=BR~S5zNTxqOA+%y=C9xp8PPORmSi4Z3SsUjRq`7#4?rz%*ur?ZtMaCO(B6_y}jhAU10_x-%AkJX=x z^K|p!{oXxDX`dZ~k;7LGpYZ)0DTx0@n-4WVA=C78eU1G5#Xe|e_YNv@K)ICEYOWKR z@yA*{d64A%Xv7m-7BGU6BVqQOY5f$44j3uE6AEH>QfE9#qP5#UokZ>(D85MwqHp)? zdB87^tqrb)^HtbFbDzX@eg|28gkE)8;30f-%BU>{1($PMzR7gaAqIY+Ifwb??0#zs ziX9x?{Qta0-1rd3yt8bhAvfI9q&m_H{yor=-98+kD;{b8A=H0@TS*d2c-E*5m8>Ph|hO(x?SZ#mXi=yrC&wUbCoBl)n96 z(x#}ki-4)*+GNqxS2El7s^x;yFaJ;3deFJ#XsJfRb=;{-JXLnBh>^sxJI~Ue&VXCU z!&vB0uHVHPMI@8iY;K{u{hw_Gvdbs{8Lj5+`OwRZ22}I|yFxw(Z=UM$x2le*b+pR2 z5Uk($E4Cj5&RNxY9Mqh~(|KR#7>~ld`<8V*<~muZkpngP&AE%GY559_=0EIOR~;UG z%LuSq$IWz%8*iEt;9Y44cggs|&<%HR<%<*StzN4#`dV8FOstFKe#NdYei2%46yLjk zjXTx828aj>7kv^d@3V5wGtx+P+yJGY5($*Xov?0ZmkB;T<3AxSIV>5<3C%MVD`MlzoDzGdOWZ5Kyjs)z5R^Un1-S{jF!v{_9;fl-Y=@44(h65&;rBw& z!D5|(oXvdng{3I7#tv5pZB8Qb(5>0hYyA+trF6uyV{npx7&Z-~#7Z1CtRL39K|IrUiDEHy6YQEeRYE`_NJri~P|Hb@*-hfa zI6C1e0o||)zZb8-2Mx0ffuvVHHLAfpip4nk`!(A3A$UWcYu!1}RuwlrA9D2)ay1_^ zy&U>~EEKp}4?$M*Ma-?Z&lH)ZYq5ZAALg4UkgG~u(9VJ9Dwz+??~>pR>+sIf@NCF; zZX})EBz~qY9N$L?K=O^@BJVbcUvDNse2u>M7QH0Nh&A9h5 z&BX>9H1MW_0|VE{r`Dng?t?cyPOBTXctp-DGCAonWM zg#!0EKZpP$W5*Fj6g{M9xwauZ&e#KZ0Q9XSfnv&&68a&zAGExzkw9EFZ!Tz9ZexO% z*5~XnAQSW0oen_r#%FVH<3K+Pd-QOaAZjq11o|@s3rNH~DyI`Kd@6c*6Wk@wRSN{+ zEf+Zk=iHy5DJ_w~8gRK*Wq$d6sKeC2)N{Nyalvrq>eL(MPwU`u<3?-iwkvCt8`Y?C zoV+mI>_X^?R$RqLqaIgxTBkyoQsK~0p;Z1_bgDZ)=7hbSFaV3K)Uxbsa2wVPs4a+h z{;6n{CAwPn*Cs7QI3KB2mHfrR8fQC?>$Y|g<^xgrJ-g;BV7B;C>Ab(UEcyMZF8aPa z8e?AY9*;3g)PTpw>q|5o`Lm&c_8}>MS&A_^sQ&#} zS;p^H$$yXa{C@`g|2IM;#YR0oo+SEm@~Uu0_C1KyLTv-PKh9 zSXwBm1kA3xI7ibim{^Nps+&EYSI&`lfAw)qoxmVki2?9ZaqCbq!J5d!ZkrZHAFtcN zb%gtO&U9zaAp91e--hZ10=7BA#I-r@K*Zb>k}C^Bv7f_;`zT&&_uggfMdomuna@qv zAKe}+NmL08B>oJqGbj9(xX# zrjefn$PGe2*F|Qu`c0^oL0Y|P4PunYY>~>wQtU@K|8pE;bRSjok!hjbu|sTB(Uk{f zoT;DUtsi_sSWh_Y#G9XI$e-~23S#yZ9o%FYH(pIfy2HaN8kBHOyCZC^kk!HB+!&!o z5H!`kCcMOLNv?M;$fIDENu@;0C6miW^w_%BSK^s)XXMwN?kNSh{ zGRx_T{obD6y}c%3_X0q%@P0AMGvptbQ@hhVdweOV}8{JTd6~Sb#BR3 z2kzq>U43niP;H7U#g1MC=TD8$6GJbNXVy;ca+d0lBnW%O$1K~FG* zteK*yz*12{hXc4qV97GaZH9F`f1H05`R=A#aNPgn3;Eb4SXR$G!#)lExlx-8A^*>>13T8v|Q`W;aI-JU*btlBbug<^R-uT1E0cBob|2p z!&+YZY_KFtLSSGY?}I;-7K`N_`a4&=x9^~Q)R4j}Fi0vSVG(qz!1x?Qv&_>UqxRQ> zv`Q6*H*46psuFG!hxfr&l|!IEC6YIKrtGiUg^O=K1|mJ7(W!7?X%XWO_l}lPD$LCa z$}0L7_>QlEC2+j}+}B_>1tK|ZO*_wD6_erDn8{fTFN_#v(%A!qh|Z-tNAn*mN&Jsu zfj+HnO!_qn?N?9_OfA#Ja?gM8;T)+0;2ayPT~44%(`~Ds3iGxepf(C_QKz08OMzZg zX-6Z~XNtK4-RM9eyX;O!I1i>##_#W@$}GHeKA8k|uJfhluq!;62Yb_3yJ#-8FQs)7 z=wbU*JBu|RG{gYtJU;)!kc4qoB^((P1f>1@CHvpHqx?@ybo<$_2*!$$Rd7yMkhde; zC+c%^IQ9n*4K0RZtFv>eL#w68&t|XI>l*x>X5WTYRQ`NdVLkoCCwr#$2^j<%r^FIg z-nlbrTrGV(Y4StXTVGY(h8+GNm%UQ2pI>E*i)ooH{+>$Tq{$cPj6Or_4*3fIP*J4p zMtjxxds-$>-#P;ejJoi~c5vEO-+=988EAN)iZ2XHVcV@!4H2fh#oKOufuzKq%_gKZ zGNsrWx{%>oPDtNb)uub&ybyU`tBqF?opnuUgVwOi4Q4Uet@U>Pq^E zo_(d^r5zeCG9wyj5MgMtvxpr9jA-#nR9l?lPzdq)9?Kr8H|iUYIknPc^Y4D{|GFpj z%s+UZek(uZQ9wX`{2$Zg+v1@D=W@CnjUGL@!PVl z@yZsAvY?cfrY5WtDs8}T4*Z5pSxihdwV!I&)n#8`IfX&wN6*mDi2(^C>6vy5_72xc zzaFQjr#Ifx(|wLEx4%ALumkPi@gxzgLttPQ^9{uAAWf!c8zq^lktvzdWHiM-{OK*) zp*a^NP4-1OEOF%58aoo2(If|E6BP|SCbMh~CaZGTvg8N2;AjDQgY{9ri^}h$JPepI z8cT%uuG$XIVIri8xS~m{U*>2?t|6)q)9f9DYV#TKYU`pqAn8*tBVrn@5=GcE|0SH< z2-xUA=+rBU#d8e02j#7&dK1sIo3AlQKe-Fw4yl5nRxQ_6TazgMb0^$PXp+n0tdh&T zWTnq$C2XyVU6+(SED??_y^%-3hs+svnNV4Ez(zkO$YO7ha5)x`S|*NqL-giJIf69k zi)xB5)U(vq5omSRV}`dq%+sL@^?TW~8j;QvaFEXnIkI!Y$X&0O$b;AA1VxItSf17-ml0^NKjJ;RE@2GajrV zWTZzlfgw*m>~fCH)8_(Xu^R49@J&=F{7W1u?;32Wg}Zlh?edexBwIoa0wq}bX)t?%UIMRZWi;uE+&?#jM?)a_f>vkI|NGlKIH_Zr13jXC6l)mx2;Kmuxs}D z_f_js=xv8&0dvjY+<_Hv4;M5F5r6DDG`nG1w?y8J(c!eJkKw43mC|a&3;j+ivz3mL zTO`vf%j0__bN5>ppOh-mNOtv`mkXak^PLUbJ+`>D&DJZW=K3)y{6#WbJ@_ znJ{Kp)90s8u;(wauYK+c*(kDWA$|!01t(`g?JR|~->hOeM=5RD91Z)D{d*otxQ^^8 zg`@`AUQ7B7;fh-?!GfJlsGFMiBU08_T=%CgFMsZZ6={Nk5e!F8MJ-j+3=~f1H{Qz? zBu(fGOB6E=+F;jGa2Y82GXs@OTqVHoYEsnN2S?W}U)Z+F8K0^OlM9=9G!Gn;*O$>U ze{*TEM$GN%tL9kl9w!Xk&~|)&VNf)<-xge&(FxE+u^KwntiPMBj3cawk5oh9)#N8g zT07k<{Tz&uj|Jb7CRB-CoCWfntSb2I^D5Ni5mJVd2Th~>69?0k z)xw8${T`SA!Ixd3I7lrbNOnE~Kc;k*^NLIIDf0cfb}tF`gcZSuk}`wBHy6riS$O6I z-ZGC_X+quHA-1AuwHgHL-N_VCOp%@{kiz4ak;D_ksnQXlL>q>pxXT{NB(m+Wdxu&6 zLiq9ITfSN-9rL$WH0MsV;gIr_pYKZ~fU@4Gd{apX8i;UVM(+TXGM)B!UbayQmhAv~j7}7(Otj>k#OtR}Zz zknLqs6O{KT*}M_W^e?ir1nhi1RQgSb9%ZhLx(FK4XzQ~gDBwOsPczszj#!OEMtBtQ zwp|-Cw3gW5S&CA64cS=^_BIiZ;sUx|LCB*bP>TrWW6IlQv*2(>qZ@fn5qssgCw1;V z8dFNViBmzS9Az8Bcc8Tb){Jb37nViQv%3Z5pBUHQA%HEBxfYdAE;P?*YkELm?dIfY=2yLva75vI+_lA#t-NL4=jD%&gWuYPF7}V^QBPPqge)&t6R|F?P>NVonnzaV%;q(~YUHY>yQ%XrpE3LFWw)5N z{Ca*%-3EykLmmLH1m@Hbj zgK#TS8p%WiBg7$8d3vcl7bOI0)@iB3K{2Z#cO>Cyp5fu7GYkR+`2)X$^Vc-7efr9L zR|vOSR|Gp4Xa-B>vb-t@T9l?&QZ~9M0(l8Z4OtK{VM+so*7Y^9A*J+yus)g}1N}zb z-BEFvW)Onw#L+zJtRuJ;f^W0Od|c9BpBXYC7_To)r1z|^rz&0syHqer>{uF(=_k3sst==(uxR|M}Yb?1IrQ*w{FJL zIt|lY%P0lY{EN^`aaf>6Ijd?<)OFpYS&jZY$2P4Jn)Q}tf6XBw_X8gdtQPhRW`!GBpG-qG(p>rZ_9WfdO^Im`jOEY;fdAZ zy+>?#&s5>IC|<9VV{Wkd(zm0CI3MYKNerMy+to5N17UpZIi^;{&GXdOZFSx`4y(zI zANEJfp^8;3GedIz-W;0oFYR{i+)f}u9avWc>%1XZ|M zFv1T4y}J{J`qdp(=KhK-ajFVbtJX(E?}t1$jBX`1=`{)&~a_bgPHY_I620SGy5XtN2D0_1!4G-OgQ4Ipqlx z|HnfE0gdLBD~3-P?u+46D=u*QE%4Y z#fABLlr`ISr$`Q+1 zhVzdwC0QQxZPJRs%@@papEsWE$48>S>7K}`YgBaZp%>+mgl2Ef!&G}WDZ7GtRxgnT zK5eHxP`}jlLwJwyfWWGUfd6RHiQ%#g1HP32S$H5IeE&addn*?c2X`~){~5L-V{h*8 zzc5$J%MfD;_p5u#oO)GY6itQ<7OgKZGq8rBpe|4(5KS5;14p)M)YJojFnL+U-zd`b zSl67|Er(py{8$8SSD)-?S>3HG$9!Rh?6du}Y2Cc-bH~=XYD*UXnQ)%zu>JJmzx}dx zKB$!KkJ9J-4@VNj3@@1A0EYED#NzECt+*80ME}DlCUgQt$F4-dgHcSoskjvk6QN8T zM;(u6ghSp!E2mDCb(8Jw!Cx@Nk&Sgky3>5E&RAv>_q6rFmMw)NJG6Uy6lvt21>405 zXy*AzI)a#j6j8(aRK`iaCl2c5?9V|bP;<7)Q3p$<&cAsHX0wlH8q>#khGkJLt*+7Q zsMr{1Jf}{ic2s#eyV3oQq7m6f9C^xvwy{wx;YRrz2`&osDRm1GdR%hTLu>B`SkC3D z)O*QR`+Zy{ZR>eB`l#vzIm)%GswbQ=;DCL-Sg*91p9%BmVi@e<`5k>2b}=@VM2Nvj zuyPd0`^F3yR-K_n8cialQ!NbRSyrX{jNN!TIHyr!U8EK|GUWJ@7-pDSlPn5m2Uu`R z8FHcTY_T{@rT2+L($u(2F|jjh6FdnG1hsuCVHLwJQky#DwoKSuwKQx8ORE$mp@+#o z?&!i+=UT?NYxe$_a1JjtcQfOfOO8|yRn}o?+Gvf`6XB13v652PHcCd0C+D|dED7az zCzvGuWL!v;xp`-ZWwfL=UEpl!u(6P^!%C6p1fV~1xmq3rS7Mn?18;Q8%)?zRI-O>d z?Ut!IYIfVOHWB)pFybC$Sr;4$2i1=jW3vr{#cv0X`xRp?qMnnH@$7x5qJ{KocXg5QW=&x`!o;p8WYuha@_z^E={(BVO8t}0 zfZgPz;pQf-?B8`vz`w}4aTK@iYtmzl)R3fZ2Gx*caZpTY#2)lR4r^N7?9YuJfcSdQBp;^t%CLV@NP4bls)gpM1UW zNjI!bZWVU(v{({#Mi$34T)soSiica?jrb3Cc3@#)Nh+z%4+G=1sA^KUId7*`cwTGN zM~ba#hI0&oMG0ya6$!fRPfDx5X(wbgG6>nj4YYrG<*7RXtW^;?z4a+V1-aw!I2zf# ztQlcj2ScSAnzvcx@{F7vl!hv^A-G<2jqW!LH7LbQ)TZ{fn93SzlovGh0gr}?~l|ZAxssBniD?hw zHZXRy*pw^?niA)+lbG`1BW8;~q~x3`olcpIn6vAzc!+-+&K^)A;p~wcbYd6^wNJ_6 zbjTvc(>`dyW=;H7rIa~WGy8iy6Aa%J(EohPC3}k@!=C zZ9ahSQ4{Mx4k^*!x)2>MM2(3#f5>zMvE9g_eSBfacuW61Zp?px(6WhfCrGX~qgM7K zXs)JaJ>$u^O!m$#`Eo0Q){|d8i-M_!kz4MG>k+fs)Z>vB^Nm zcS9Y!WkD22()tO}h~nZH5n6FKNlR0YhQtp03JK}m_&gUalt~S3r!OBYa7$o$-&+jR zo(zl{of<~-tFc&?a?m(7rUYXec#){m5HJQ{|J?E>ri*(KA*GGR6tCHc+Zgl*{;L@M z9SH_B^Ts`4V1|(%EycJ6zok5;{IiIK-rhiw!2aw^OV&IrzE{-f4Ms*r2KG$$IO z(MUd0+#bHE3sFym1MPa;Jkgw@-M|j5t@(=o3GM9C4ok|cak%A5j(Wd#Kk7X|w-c$* zpvogIFW^zItbh^R^_PG*@PyqgSo$YgdK?^X3QI@%j8Bt93IqP#{gs1I5 z+}}w&AV}`HJ(nl#nr_-1tV6IOcd{Z?r2>@5Fg9CQoSd!dfR)?Xv2IgKu&v4kVJj}? z4#8R{LPv+KBX1T@s$9onYENSVTMWG6+h4QKm3}LevmQqlvivJ^uAm6q(l{M9?u`Mf zOm0vl(VVACFE~qN<1CskE*TzQG+LZ@_8`wzAb%d(g#~jq5oPCi0a0jxOw)rc>nj7t zt~P0Um;oI8y4GB}4j^Ae_e4|jp`XXsPxhiOsh928iNLg2&jp%2Pht_u&5h`uRxxj_etmQ{S!w> zY`e%R^V2LW$J9EXn17a7Om7f`BP=RRb*|kE%QNUKOmj)l=&gj2p?kEuICyZgz<@(= zP#g8KLP))O+Bq{-;&%~_ahS>f#o9XtSHf=F!rkfEHafQL?%1|%o1N}p#ZFdi+h)h< z*tTu!u5;df_ILMN=T_}|?pKwnq}I=siSdj%=9n+r%wux<_)X>BstffaA4!%YSDxFuIKoJf1#@FrKnvTv%A zTI%|p)SUj=&vxu0^wbd2fMIL~%jO7L^aL-F{W6w8?$7-h(>i0d9>1-ke3B<3f2}Hv zkQLX1H8P;v8+bBFr>@50t`uFy{_BmT{6UXndE* z$3bXvNb9lla@W}^0TY3U6k-l6K%vNT*P9b&JaB6O6x^2K%fs=1!PWNrh^|c7i?}n}h$vs$Pa3=*`I0 zBQnn1+|aG7{3AGA(QlZ{J6`v|r6XB7?K;tbD?dcQ?)Efl=ShW$f1?6NsaDV)XnVe( zQ_DZ2qtyB!v{pV6$g5C-h2oXksQ;6SwYeP_I`3=}l3b5g!NU-1$_g*89X4!Img-{P zcZ)fc5sAyKucZF5D4ke0OM=nUJ`ri!3cgiy*5py3uxo5acCw)oY8Xx24yOLCPN@xr%Vx!)c;@`U{ZmFU)^<^LS5GwcLZ9` zaZt`nUJ6X_60R4;Zhcvfq}rptE$)bQdFJdx z4LHFL+hja_Ch$I1s6By5r*vwLdHr(mbxjOo87p78$jI|PTL z0fD{PRX)slyT3G)f0{$UBY0Nn+joal(b@7(!Vs}qP4}bG4J=uwL+ujQvkR^U0)&>o zQjfd&91@4`>A^=hejTB(WnHmFa_W7eQh@!ezUODm78NDfpOQ7Xazn=7324gN-tJ>< z|5CoSjBEF2@tz9rWyn;)7_Ha#R++L6%DJ9Ho}0DIh7fj=!#2upz?&_?UDL4UeXF_s zC^PJX}**7A1&Yl?T1$-K<(O}l7 zQF5ghW`SJFcTdt%kXEZ@W-7s{Ozi8*E46X~t<4SaTj};sYj8vEaHopC%$0^-7?Llr>0{_GR?*GSC6=)#1gSe_6X72H8HUJ76nXe|2xs4P{WaSXy-z1>P zk^{-Utsx`S|1n{;f#l>J8Mi^NZ&WQ&E1SmL6&6{cvB0Bitd%U#I&*)~e}?kn;`iO) zjUP5+N!$6|Yk08!u>K-2@#4w&`r?=61G)M6l@^}p^*gvpLXM8moujE*Xi=gJ%@2d? z=2SNFgo|00)Fsm28_OJoLK0v!$YQ3*wGr%(se!hVz7&=D4U(oxp_Gv}s|u`zK*gCW z>i*=+*~C>9A1T&2kmQpWhe$PUrk*Q-yD(mkJS`C!N7G+6nVUZT7&Z^rIv`}I__r?V zJcBLvpJXekF-hognxl5F&E&w=`JBdB4Bpmcvy2E=4f!+}i&GP|L4@qm(Xg-WuU7JSpq zWRAQjtD}0ekX4LjF_Q?E)zo^UD=*=xx6%hKGnpr5OS(;VTc`Dp7Ox(G{8$23t_&^pm3SE5&maGNXxz0isT?KdlU_>@X2Ynck)^7hzk4 z=Au#Tnqb=qX@-R}1oHKF6~nO$j!C|dxp%(^aY?=uyR~X-JhClxv!do!_?FF$)}i(g zxCI>9!E8aH?ndqR3-rVt4E-V)(*h1MDoF6Awgk8YUy`x}H@3!grTx}7x+G$K?40Y? zCnj=bV;nJ`ekl$76J^$BhJEL{zi2~g#@V)4#PS1>rA%TmkWG$B?Uh_J!F-Pw;p@?$ z)%7#{yUw)-O3Lds^dfHBV^PSo+1e@eb(35aHuqAYg`3bK~$50nQDg=DHs??}n* zw9vyR&*<#)o~I+|vhl2$4l~OeV7Sb2=~1LQ(&!7(ijuMrv`Z@ zQk0^|SGLuFVcRiq83#!izE`P)OG2UB0!ku&0^iqi)D1}Qbql|X z#yyvbF#D>vGprMY{9rwhW;fETbP}$V=ByZYUo!L# z`7S&Oh!CMqcdstOf#_A@2@*DaQ1v9*R#(=qkgs|fy{>rI;Fi#nP4AdJXgAH~e&*#r zy?IyQERIg8zRr90el8&`EGG+8t8I<^W(2;(@W}{>x`M}N^g_;Tg!FhgtK}nc`6KQf zbB*IQ+tzW1-iGAy#h8dxtDBQ_BbNx56XVk0GcS-UA$;wMBoEg%kL(A*qSnssUIUBT zmOy*Kp+kyuGGWI37UA;Q&RWgAsQ@C}QGknC+N6T{SuOiz2!g4>9CKB&L{OSU5+#Zk zk2gw*1KN_PxtBDuCaDkO7NAHRG>LoW3-#GOi`C+c{mjFv;XlN)LfUn6E76fQR81MX z;q9HjF1!0FgImL2BH#?AH(p{^mTXHhe=H63$1V!bjRg!zBu8v?%>?nbbI7fZI|}!< zn6 z51Vcu*&!25nB36N?Q?A+zt~z}1t``#M9ehKY_+=IXUrK%v6}%u{i5byMVDu0r_I9Z ztK4yQF$7TD)^l-OPgaWIZdvAu2+Gko)Na5ADzkI29ZzqUXv0H9lToHl%!Zle-m7_^C%kyxST7Ed+VVc|Gdw#*ZpF_IX9A|? zUHcI?zm>ny{CRa=*24S%O>#Kcu+SI-Dp#k zeTL@~Wa?IZEXZQahAQz71RyXTrMJ zqH?%Ae}OrAi1aX@3DntX1S6PEdzj-40>OH4Me)nm=>jxv+emL%59Vu7?ccwWFTWx@ zn6##&+LZZhUIueBTYF-~3W3BWzU3ESw{tVA$fz*Mpj6f>Qt(ER*l%hjX}<;G^nueZ z+cu67^xBT*^gLK@`|SFTMDu)(VF)|g;P>m2JWBoL06MxBis$eGY+S#u!v=pW*GO#y zI8`n=y6S2Iaisg~8~rZplj!dfX?OonlW}-E^Y|rp0&EdxS`T*mK%@-wVFxbmNu=2X z+&^b!5nn_@WjU)PMQawS*lw{raxbfgbIZIkH1t!vj7&%xPtDH}=StMa>LDUL0>9UO z$)G&9Hyd5AZw`ne>zc6V+Zug$83m7?e02NalZ{#yb8RIO?^b!XHR1Ur1Lq8zNp`I# zVdyH0F20Xxk8iy1#GN0ne*>>#DXnJ*AaVi=bZ$-Z{}$dTTiQCAVTWGDk&)Rt!{gW1vhBMQBCtmn2ZuH!47P{PjKsg`__D%YS_!o!CT9}6D z@4@M?HglI{(CT8CM(4PyaJpV_36mveDoqYluW*)nw&o<#*XcOp8+vKkd3vU{Iisyc zegB?MK%jtOqgDfv0pC)qI@g?&^ z0;88n8h_=z0!otL z4Fi}3fcqwwpTG{bNq}rj+hyXQ0Q@CAT5Bw>yrL6RV@on#Gynk`^=je%_(OB9YY8Kn z^1yGBDHwY5jX15!M|To1f6iuTAgkjI(JW14%w|f2>KsyBGA3Es>rRh=B^j_-DTsUl z`Tn{zZpKKxn*s4Xlae~8sg&2OOL6(%6Kiq+c-@5yE3^`<_&)hek|H=p@YL{Si{a)t zM(s*4dFEXAT(!D(0Rz>MEKCO1rNw3Ks8g9q1@7Paojo!Q;T~wMr>_TgE7;jF_8Sys zCGYeV9HE0tgiC0O`SGZhzR}@aD`JoiG1<6@Bt9~VudRII%jzuO#O|F>%r_wjX2f(^ zh$oXP_CV338S|{sNZ@N#x^orQ2Ime-PiNbK_bq8n;~rrWNmff`E;_vYBg-v!Sl`E0 zK@!axSkoPunvGIziy@YghAl@z87)(soUmLEN&E-XN3)-nOFk4a^$_&NAbu#f%5Ogk z)!cd{(T#~&dWI16ev;JLu|mu0di8b3cLZJ0fS^db(T-*OP@uWU%)>vvyQiUY?d9wRoz# z7-=R{E)%|$+$faVn3S{Pixc-0+Q|h={h0QGGD=A+(fdTp_$E zNlhuONdU-$P@`=r+r;Er^_rc5uM+PaZC@tf)AU#=v2QeYYx3~3{N?L13iGnhSR)j| zx%0VYpJ$j^((keYSouns$K4-*lW0YUk35cuKXhvKR&tu@)22%9Y<97}sBw^oPq-}= zVbp7LC6Kk(Q$2g9q`JYdK-RLBMl!Y?1x1~@bkDK7KvKHs0fNY=QrnciaEBdZ;9g5+ z?-|V2m?lP39R^X~C9#0gWlfm;z?W5E*j6m;5Cb_tpc*Fa`#vL~_ z62zyX7ER{BG&+rWpE0|yTVhaq`F7`KpFBV6j_%x@SDC_EDOnuxDO3fbr&dm}X!vHg zvu#Q|XVB%wVe{;gO5z?4IY%ue=`YC%EK@2QPX44xa=gJFpip|`qdi7fWW?Qz9 zWjw$2O>v7N6{7trP!G=Gg7xPXb=gn&6l>#|{TW#G@-c)M?I$t_5BRXH-DWk-XTh`ZxU#u zF-UC4TyVd3kLex!kBg9{s9rutWuy9kNX(}lrsB(;wgtTjJlf*h#3qwYbslCN9)_Qv zb%m00l5h?&Y#Tp3o3r(-M-$?AyLmO><_mJGzjpC-cA37Cft$T<#wQo3hIgd~$aQ*2 z7!6a0mDNk5egu3E+BQrM{tk>Yq)2EzVGt`K?^?<3l90xJ@ze}c+t{?o7}q8CiRqv@ zOUZXecKYQ;7J3dzT=fWl?Vj$Fb@_G=X%6f?M(j1Jj@6aFGm*F>m%KaGD&4_T@=d$P zZzi4_j#XQK?-drM&ZAHe|K>B?(A%7Zl`4G>}unpCjSqq zhl;H{+IQq1Krs4-hJyCeV$p9aN?iT0R-PznF&4O?z?jGH@wRP15To4D7Kgp#*8?t{ z8!FgMWSZVV>)X=UhxF#qR#!JM3i5X3^m~7QMfe)9_7$*sW6TwZ62T%8{Y0(KR;ixw zwp~ND1fQ2yTDiOe-zjqK0RK7S2?c%&R|vjJdLXoiy0Fv^>z7NZ+Xn2W$(wRfw9EMV0S;$6d`3EF zG;{#9VBbfqhH{_TbTGikYU4)G8>hZNS&}^0yA>QbsP9y*DdUcLDt%XLk%jj0-K*O~ zi`=%+&|7mk!BB{>{;g1%Aj9=34|V*w?@9z|@n;=0W<;tcs&^^f&e@M{)!{EUZ0-OH z;Il*xEmUzO85$5iG=xKU_eo5X}u z->#k zWAz%-y5#}3Y{RH-)QL&`RB)aRGET~XUGI{3&(OCN{bV1%Uq_2F1f09p3y!>)?t9e< z7cEW+yN69Ym?s{a%y5{Z03pS@gDe67jSyl*ln zzm)RGr}~ICqgmFM=nK|_@(K%&_{P@{P|ok*I~24CZEh;xo9tTId#@%2|MR~)sDP?({56;atL8%=wU>Y8P7RJ9Ihc~5I^ z+^}H$tW>Ll$hlX^b;eo8u&m!;-Hy$TZ)VjEKhNweoHNsbO1;*!VFa(QU^o6sr&mQ9 zuw%vYw1+MhYbdcI1Yj>ueeGjfHq^na#1sb_UYDoVTF0NUPB4}A$Qi*;fmgEZK2Li3 ziJ2*T$rL&uER+zpPa&%%8j4Z}p;S0A1=F1RlR+_^>5-MdYJbQPXWv39dLdh0ZT4^WP zS86v4F;ZHxtCXt;sieg5KSa^?{1~RCAYM|^J=p);gwSIDOZYrzi|O?3%bLK!FN=KZ z9(p(YsZ&d&2}J6E^)K(yodp?oG&(S>!$|F~q332@*6AFt&RkEMw1htFIH=BDFPJzd zadPXV@Hd91{-mjnUOgRZLQ|0Xfn~3sTYeYG0#7n4!U=>+1!o4`RHuK_t*xSXIgs4u z1%H8uduI^$YaL(lhG5o0dNIyKPBas{x!i_Xq}(ux9Y{u!GYlP2G5Bd(J~>(~B^MiW zgViSpNH?EwMC2+*aYK60{;v0!{_AmjS{>IUxtNIJs26TG{YF?8+^j;u2?PB(J41}5 z#jWI|e!08Xxw)`cCy8PAIiz~f!-;Ug1xYRy3)~8-%iBe>l zYJ>Uy7+k$}M^J4G{x_dE|EH``wzM<1F;zBo0?82nyX*n=Cy*QH4~78S2-yJ<1rdnPM;>Lcoruh> zee%j+$`M2tjcJNX%gb1(dGADmR=K2qWl!b`u*UTp#V@v&hud4e1HOZTgNco-uFvJ0 zjzLM&Ll-P0JxX;wi z-yh*J#hM#m0@t+25{Z{^uryBE@33s_qd3mhXG!I*o=KNzUiU_X%aa_quiwXnHb*e? zT0XO7ryc6S+XZrApgaw5Wiri5U|7r|s#00HJuUUfkz|m?imyNPvKV`q6h2u_ zvN-v*1!SBck#oxOqsdo1GIMztI}7l=k-c^q@ZH1SKa_!jOdbSVtM{y){rn!)w*c+2 zEm0k|Li|`Vfg&+F_L04VoOwMr1D<-N8v$;X14oVUXoqvY$>1B#GAxp^8*PB9Vw~ba z+l#MoM_z$~Hu`ir?M|4g3d2DbmlTBW?f7|{}iPlS<2IU9g7A7Imxaqc5E1`N!D5;wJp?1I@;4Japy-w5qVz#)%|0vcAac=G}s##LMk@Ob9fMn zZc;sLxme2!0Lf*MXgB#L&w#WjE(T)azIgT`xqdYphF4Zpr5-`k>u7qrrC_UgJbK;` zZh)r!(i*UIt_5d+PE5FYAm;wp$E+wL1Kg1-45vfQ^$BU5Qk5}t$U7I4VfBK zBupFrCS}^e5IP(_R;P6(DmSEq)F_Exb*=4Heh#^IHbJMgNVgwZ4aca(#jh-##2WQF z21lrIYu`}946+Uj8;m?}9H;QXl18r~Rn?A=Ml~{Ao5L#1EkC*R@to_+eT@}!`(jr@ zOYU_nWD_la9Y)P_7f9ngwx{l1{_1ds$*fbT-h$HLlzFCtz^OD4F@p4)KagS4B)T=lXU&+kuO>tD5ubO$;ugIuVMv9&zNo4!v znh)gE&+&bb5*$<(&d`#%!q>A&WJl!Gk8w6H@nldEjno$A(2}LXab3x10c^PnPn2dG znLARiR(Ll?W{g?Z^!ZmYBJ0so@q$lLA z7rXI}gVmSHtdBR4UBai;0cRXm2}udsAp;=sgVc+vGQ!wtiTrYv$DncY+NA8-iit$x zycTLLJe)xB#S!3H!#O&2HJ+H5J(yL2%qQ1?5Ojx_cfO_+$4lGV+G?;tH7PCA&Pn)8 zNnvF=y>huBihWImS8U_1Id4ATF4p+&i~!8L3TK}OAook8$HDC)Aq8LccXRgFXy-uQ zc^>hE&MDKOiwxk@E&kf+)8q{-5ZpzqssCOX0_ze-c)1Z@>W3X!v7uM{Ac5dMid~F;8j+Ir+Yrs9HD}_fX&c9@=A}cuZ_`-0ikb{ z=vB4E!C8`vSKuLO&Ajlllt!sM6x|dMUhr&UfQdm;g6`VZnA*=1ph6vHH!A|D0{xJ# z{#Nn%$s4W>FI9j|s7)VkkG)UZAN&6FbV1b|?hUUw0jtDB2iy)Vb7_?AFt^g%*n(de zFgGBL+Q<)aSvz)OW}2N1cy~(0jhlCI(zgBz(A+ zA5?T4Y-B{6aFUwE$+esGFPy#cs`Xi!zTy$~WqagRl z!CEfjizcVe=0Y}iqeM0{%f=WfKVt38#oU!3AapouGOB#iC}y8^RfoSW2<}4KT|-K+ zU05h>r{!DJ>+U)gCxl3k z$mdow_W<&YBbEeiC~@Og;)bx-6{52}@yC()+#&S~A6AT5?BsX8Ek`0G3sa8}?*JW| zitR3$C&u0NKo~RMgFg}u6!7apzQ{gVll~Gk`kph$%HcyI>j0y(QJlf}l3!BW7qg3J^qd*MZR{3%qT=X}a0E}f|5$^bba&6|;U|=P^ zcmoG&+kBs)(gM&}ccmyh00y@ok0kj55Pu702(Ea-&oEQwNbYwBt{?JLNZ#b-uk`M< zsR2*G2`0V;ZuM?vFw)aWusC9J@Pl#_rZW;ak565J0lbfowtD+pSH1RLG6@BBRU=5y z4*UO0S5&V%+{2)p}LvREWB+3=KG_gm3|*jS8&}NG&Eu{ z3QVPj@RERA=8qwe^w0J!+mlX9K=?WZB>f{4&egDrAPsVaC>I9zi}tr6Rf`tU2(k*53i=?tHe6=Nu|tR=iblyZn7iDm0^}- zO3mZd=#Unw>6E4 z5f*pylSY#@oIhCO`+`qO8iooBH->mUsA0HLRIK?vl;Er~Sb4-Wv%6N4yCt}h*S1YF z=;y@tT0)3}mX2k=b(POwg7e;EB?G)w+fqlqJ*iH=8aWWFT=eYw+ALJj)d+=dfHzFM z&ZPXtAPwaF=0i2`sZwEt%aR*@K)loayv()eq_MA)+FOuFd_AF6A^U(yD4Op(kdW4s z^cn`jnqjf1d$)|TO^i1~P3%PD3H{XilQv}T{PCFqRaRlB8OW2b@k5r3()E37L8`i;0EK)d z2uS|B7Z?7u8yef&nOU0u7ZLauo)rGi&;H^78xl5@X1<{hbb;`sWX=awF_owSEIJ8I zae}{+qYL1>IJQ~4%uGX|B$|wp9sY)-dHv{N1k$E3ccv_f?aVA~`x3wRb%yhgHt*W5 zAATP&o5XHA*xd%`C@{jFY1U(MMPHd7uDGOS&O*^;nc(}xtxKLJ9Y-x8v5-N! z_ncwd0|{$~x}y+zG*qW^N-!3SJkX4`5St<((LF6yZ$}M39y?+SQdl7H!#J(8{cAoa z`Dzb*Mz)jNKqPLjRF1oRI6p&|hGc#+2DKe1$Z6h!m`7R3!k+F!6GTsSQQDA;kJpX` zO9!flVrcf;s4=lbZE-2p zgY8OL)v0IR~Hm#m>J#}IGqpt5B1bkDjMt_ zLC8yqGX){%w(4JECJ?V;E2rmBG8qoTiBe^y_ZZn6tCWe^)%y#Xq(AmPbx5P&9{Cbm ze|tSWPro`y=Npb=N~!!*1MQ6FW-6V0hPtNZ0wE64_L#CUpT~GxdF(jg>q8AIgo=n$Yi0Bjb)BWm_7?<(>t1I{w${Rq)REBIdau2%Ak(1 zG=Ki&8@zr{D?fQeC|P5wd5+O}xuomseZP|BJg)!o{!aN5Y7+FgA=Us!_qAF9rh?AD zdU=4OY{$gkN=d0C#%Z7`$0^F<)SA(xmKXlXbyS+}*Wy;4r_IeRAZxHocA_UgT8?!} zUyijlce0h8^BdBDMC6ypkY!Hdis%bczLJqC$rakTiiX!b`3LtKC7+=E#Zx!0hvF;hS3>dOyI-@z9 z&KJ6Sto9e-_rT&js|M`afb=Wvn@su*mGSP}5 zNnZuw-V`{2i_2jA??Yt76FjJ}#avzi{0N{w#@2fK%a-GpNQc!R`Q&un~x&+zQ& zDXW^eT;YqkQ3Zk?ykVjg51Msjh>W$GjymbkJqAMV-dcG_|GqWh2{Kop%o^elF|K{l z_hB*hI_o3d9EH(y^V+33BZ{sz&CPCRFcr&Qbavk!)>|)< z_^#w#WKT}IOKvzHF-mT@ZxtOn6~0Ww9St6F%(uj? z6)+6#9@<@nd5PzyWC4MC_#Jg4u5X3OCs_EzVfy6A<_hyO+zXXw==$y^FFa@{P;NZD z)&1iBc!*!KtFVYl5vM4lNrX0h63+LYBX9uC;wl5x9!VcL!Q+RL!bsmdV zuyZj}sOrxsLA~z|5=%Uj8LtSeU2Ho zsdG6;cIvmx-29FOC^q>h^|(VM(w#B`?J_{0l!UjGhz4d&;vyL+iXB8W9B}~|BRz@< z-xU0vzG%tv$YCCC7=q+#VzXEbeF`)^3hhoAIZ(T=XQqysv4f(BM~uJlZHvET;l4D@ zeRiju8rY3V*K;*sIdd`ZU_Q6cF!p(bIw#WEz8S*8N;c1vADNtmAQaDB1{^{FNi4Mq zjhzO7#xmo}*WmG4D^C8qIa!tgaJ%g|QkC#XcsOcw3HN_H(4ZHHes>On5}_dUtnxoX z&;NiDf7L=2Cqp}D2YV-%e<_G6D{?C!6paUl_!~S<=ugGoIuG&YG+0NVG&L5r5_pIL zxcrbL(7@z$$jzhVSzd)kp+QM7n@H7l9)?&-C(~od%j|x1iM6io>E_|U{u7)=60*S} zwFXwH*`X(WRS85YEsYQ(m|Af?Dla?J51ZUw5* zjK_4ujkDbX`+L3gVGM{a4EsT==A=Btj-c@14lvtDXbxe zWdevYU7KA~1q5yf+`^C}_J(AO3so6}u-vX2yWJeLZ?e==hxW?x?1n}N+_HiP{c!R< z1V1f_`26`~IvjGsk*4cV0y{U-+h@GNweA-5HWsxDW)8_j&SZvv;W!FsQU|wE8NePW zk*UzxH;XlFtQn=T|Z&*wBE z0^JNps8V&!8KlkjNu6m4QAWr86e@I*G+p!LdDI9%cSL(Ke4RluPXSlT0Wiua2GMAI+=aTgf ze8=~9`R%MQ>@BMI>1Maf?s8)?S})2R$wNQ%{;*}L_1ik`@(@_=um#1_7u%_Bl!~Uq z*Zl&zY1~3arZBzKCi2={E3ox#0$+#}9a3HjvdGU~aZQJE<2s~38C}vJ@))EY-QX4R zhkfX(OlOKwsxwvzJ*cTE<}h=gYd3a;&#)CU7Omxfh@Y0qt#3gjLPnmsMq1J>z#)3v zNvQg&%bFHaSIR)Wvz~lb5|qZPQC(Qd=GgNFv6hi=1;$-|G1-y?WrY5j$GeKf8$)`Z79f0KU2$efuHg7Rw= zgg5?OoAiIh8lX(FGc|Uxw6_y6bvAagba1hE`se#JPS+YVNCa$1PTRDuC1YEcHO}Q* z-ORZacwh-mhM>coiIRT}VOk=HqfT3^Zo3kDm4{9B_Xo}D$upO1mg8(L{`91$^m>oK zj4nOBTr3cMlCP;E4XOu3{318O2`hSK-2AKO_ksTKm9vL5}pgb;33yI>#T^`Q;#d1Up#o$#m$s+9bPz=X8_`WJMI(O0%7CEvdR)Bxtw9cfUkeTueD-hR?rF`NMWL0jiz)%bCH$}lg<3HI-K*O(a;$X<74*e z*Dn^D1o)1U1jB~L#ca_eJMTsVDi@1p@f}0?#|zI16f2F){tSkP0-nKP8Lk+%A@_`v zXMU0F2hm5X`|#V%=`H2$=E^B8(i34^+%x|rIl-%ePV#jr*Nw>CY2TnA*p3Wz{(E%a zTZ=qh;xJ97yJO3>!g$G8MIEd3U%t^MNX96K7XrC+$*`B$yy!Tkvp$`VQ1$lC{o0}Z z?6W)DNho;P?5Tp5EmRA6Et}{}hS;$)f%<2vz?vj|1UdsFk0;V8Q%ZAoIeYw;`!+ z$SL6ZMn?@IBp2B8Osta{S(yj)cZeoM#QzeE@HNqUTL$Yd2CsR0J*VIBJ*2nI2>SWG zLskdrV1I!IXQncM?uDOXJqjRGBd;JKOd3aDGQu7&O|?2>1&=H1M+sy?718LX0tcj* zFNluU7tjF7Z|d`<#Wd+o*d^ygT9%pU`;nbn3l;TL7xb{b^7Q!3 zu&44 zO5;Zek&|cy!}?Z0CB+CCWEg-Y5w*ZC#WJ6iOd)r#5dj0Jlhz`S{KhB8@tXsl14rX-Id<5C@qCeGepG*)gCE)?C zD{?c@0Qx23>nYB_c?2(1OY?f9g7M#-OA4{`hAZ3wpbMRdpB}0ud3$}!pZvQ>ALr2c zHdsC2kXARp2s!uvo?S-LTHZ2T=@9uo;uaS8#aY?GdRA_vI+DQaKo#|hM)F=^TV;>< z$?a-L_PSJAu}=;CP$8jkGg2CzyI{QDqM34y<_EBx|Ma0)YqZR@&U_B>vRQr3sI$~o zd2*Z_*YkzjxpYo2g(=?w)O~egzgm-HcuEo zjPU#Em$1{)COIT9eHHxLz3wbOzT-U6g7p6MFaa8e3!5+nZlQ~zM;JvAzoh#Oss^MX z+*RM}SP=Fu7TO)JWA-{2?wR0QMij*;GJOs*)UQjW;k?DIa#VG;ox>-R& zTrDYcEgN=Ko{IpUz=*r{HPLT*S&=6v*|wdwdiAazaP)e_Tbu88X`2t7=~k=oi*w@P zvAiVsTc&tPH0|BS`QtONMl1q_tCPIb-DKt20(ZQ16`8`z627sz2$jRuW+2*VXWA9# zU!LhHGBKW^$8!c*JIhWoUI$yl>h)X0qp=%mnC&c*TspMcjX}2n3$w5kE%NeH_GUwvyrVLR1a+uTII>S3&`!utUO1a}!o6V15A)P~kBg{gAZ^DR zCO9of+Lhb!1(Xd;+%>tIyMjtqW6UdjF`hALL1^(zlJSdn+c&o)k z8Wtj(XD9EdmQp=vMHy(o+J}!dzhQbtsFb(Hc!wPOOgc8RXsz5Y-<}S#_e1pV{<)&6Km2#Hf~+mvvhNcX?||s(M>~$Vi#ysbQXz z&R~)|V(iK$b!*rihM?uEo8+{H{J5!FW!K9zB{O z;g;rkw*T4rU|BdlWPz{i`}sc2{`qI8ai7oWgrOOr)W?)_I@r7p2_domuu zK1$nzHj}d|8`m?WXPstqpF0}viYH>T6$oe{3CkX&k?JG~794U#G|BsTNeW}KreVtt zq+yq|-A}1m(*)ybUqHND zOrBmYPL@S;@Zo3fi(6vY#+@BI+>#O(PS911Op4lZQB9)Ggu5G)`4;Sx&)h`!h8fW{ z{Uo|7*_@v3UipgW?1|;N$ zLm!A^u|h|Es=VKS5aXo`y~0V$>u-9U4{*a?t7Q|n`9vAXA)v?W_OJXR@s3()c>weL z{>L56Q|u2BSsa=)26le#vOv8K`wsDFh8y>l&&jJE%1DWj{G>g(? zwpm+@wCD4Dy@NOka>>}oU=K)`z`iejpZw6bPfc)Tb&vx(9*tf)-HBF`Ufy?3I6o~0 zj)9pNNClK5au17}<)oIwPbb+5*>jWV~fanS+sw9i?t~s5L863%K42D@iftt(41w1hV(sqw&&|h z-mm^wQY&s5ofLEBB4J;K{VO95zOB!{#<}J04+gCae%)#`(-W2(%}&b$UcR?)a89o@ zgy;Sto@1aGgNU7TSO=1`2m(B{$PQ7`z1lg@5wXN*hVFL*VEqrv0hV00ur&z!&>%76mL{Fb#MtQb0LrZfV$9`EIaQV66Zpcmk4!#^5=%Gp7 z3H4xn<$ODyJ$GD|<;WF}wR;U429J}A+tN?mr>+Pfzx*c25>KY799Lc}X{JOLtys_e zD<3@`TR}M{A)ZV=k<3*?H8w$+3<2F%_A5#>J&T}9oJt(oic}msyCk{jHJB(bnnWq{ za4VTa937dY9*rd7Rs*dBrV<$xm6iNg6bMEZdx^35tbYypsC1y`JSfyDLHp$YGtT30 zA^+b5yRF=a)R*tb<)OosVqXYvH;IzNeXoG=&_dl<`*3FFyeEOfqdcs%kJf~*KYbDw zPhd$FgBeQ8THD;RE{HxcFw-(CHFFwDFE2@{r^;AS*G$aUU(g6ErS+u~bT@ zkc$2|;xcU|eAF#Idp@(o24d6V+uxQ^6!{7x%>iW9sBp*CZOa^-1iIc5)w#7c=+G&0 z8ATZ&h=da&X9NcdCRQDE;1NBCVP{kibGPtL0@L4;_HzXlsHjeJs%iq$vcD14zW(;b z_t~izcO;Y|+B$^$*Y7duqdrX%gmQX7o-6;ql#ahRr2ppIYyfIIuc&|=Un#Lx95GH? zEy41Ug{c&kiu{$dz9vzyv*(XhIO0Ml`O{@_!8V$Zwa66pK5S-S5gI~H<0Nl=xy-@7 z$LEf!fJ=hxdMuxBd-<@O5Iu+%^m`-dcAcFDO{P$VVF9rQLxe}sE)|v9?6zf2eF)LS zH5OWhO`}Z37kzv&`kpG ze=ea%A7Jb{{4y-Il_K4(VImz{R#F?)y)8WcgzXa1Wksz8qvkz-@HJHaf zulRVtVlk=Q?~*7{mMPU!xyh}q<`&XDt@Zav zx>wwl_w@BB54ks-WcvUUip}{MP_xR3GSU*hkf}E&IxClw?YlH9iHq8A{K`ohVx*>0 z_!}#aWi#Q*#zlWBW=1I;)8>54oiEBB0V1%T@h-|BsTJLB{|aL$?1E@e)0gG<=Qq4F zbh|$+Mxt~DmkhlY#D1-~Lk-`;t7DKx37(RQi-LUINIxg2Q5VN2fsf_Rpb389!d3Tws zRX0S>;KGsW2Y9%LtOvd+GOJZ>j2D5e#>l*(g8#+ZS4G9yC|d^i5L|;c?j9V1ySoHw z+}$C#L*s72CAho06WraMAi<`O+&lODGY@m_ofp=(7Tx{yRn@Mly?6bhdNPdvMm}S> zNStuj&Jddz$?xRuSfUu@g?^ock2cMvEZj(HCjaSif%-{W4{kZ+5B-gU1m3)x*QsCC zTkQVxLMfq(377lLMP>&_PhCpl8hjz~B$zUxxXF{0CvS7_%|4k^@n_O3aNBVj$Eg~) zX3&t1PrcB@g?Gu{M#QBsSw(fyWpGKL-fG=M7?>jK&x%FtsU|d|!6){>8nP-mE2+WI zT7eQ~6-#*BNj`LaFZqDWJ*y@X;|!O(_E6{pr&W7wE73)9W6sWsA9|P_@CpzS$lVNb zmfsQiqxSNlVw*AAnWop0`pFF7hYTo>8#!Gvr`r5+1c9I6q~V*FGj~_-j6-dqpN#v^ zw?Yx*BA;AnX9^fG2kmJCM%39y%)|CzDb}M%N9v^-9Rvfwi#M$(z_KuR1b~1{E3aT4 z7rh2P=*AW>q6sR%l)52F2hxi=ro>+ifTEhD?yr=fM?^tDy7)cgGl@9aAW2u6V`1d* zCHSvT7~c58tayOsSilo<4)}i|l0?e0I4l4oI>h}@OqNe%X^8Q-Xn?o3*LZIp+H@oRB&rq?TO+0rdL&@4u2 z*rL<8e%F1@4H$c^ei339i}3t;GyBuMS0_Ksnb>AF8SgU#)|WxYYMSWEBF(JhZPt^m zzwFV?^5^7F!PuuAjD58JTiD0xZ=4Y(aCi1kNzFgN&)=CO8jgnc|1lx~uhaiVSsvS=}8|BZ;@f989%CGJ4`V>@*MQV&Ki?)@9|Hwm?6Kmza_>STZuDFCB!00UX7DZ>{V5I9AP=c z5}1c;ipL7Y_^z*lsAcP^(#-%Y`BQ6B3OjGCb;dCKHMT5^ehR$KCq2M39We6i!@XdQ zI%L&Lp|d}vcfxQfI@fR%)9}zpRnuY`YaE=iF6&zJRP~o|4RZAAp6frhjneSts$C(Q-&Z97-GkD{fTA^AA8*LZ8bxph2mKRr5Hg#wp3t6C@?8=;SUI~0`Rbg0RdhCr~UvK zYq&Uomn7$~MI9=FpKi7XoC1{OtZ)3eP`ut5Ok9DN< z>{r--g$O$Z8|r@Gp(7-C)&Bn{!v28~{?71%Mzl~}pR*|^7?IE-=8+m^K+bo^XRFE4NHsKiTNVb;l>(wo2K$SHUGT#Qd^ zx#lC0Kiz51VdfG}YIuaa9PCHUvB^?8^2@7CBb1pH|!Jhwqs@7)mw6mxLGi0Bc z$D|3{x6^A&_vzc)i84(%VPD=+FC9bQua=BKgu4R!bkZh~rwsy6ZYJ3&+ApDezZIMa zZI#5PaCRuN!b(?0q{;e&;8{lO>lM#!Q@_T=V>*SXOcvYwld6q}+Xi9ch=s|-?QJit zka{3$l)MbAHM%CLG~@Sw9M!K;<6`CR&r`RgUFGBk zHqFpIV{OYzD^Iry^Uzs7?c(4IIc&Q)|9DQC+DZ9v=u#8<)k5;QHnb(n)iz!#oe56j z&_H6J6BSjl{Z1kHoxr;aF{N^up{eH(*j zGdzI*gFm5_OzSa}6b{D-Df4yxjC+D9t(17J-3{+jN_Pcj5Z0*D+7BfJ6vaV$sgTvw zaBe@b8>fD5CYR2@Hk-p$AcHz6GxLvlpWuUYZZ=u5(I+EzcB{}&-=KswLn0D^%+iiZ z(#lB*$b*taBgd9F@!Omu{A(#7;12+say&O5C=O@@FmX&j|4Nq5$ST<19s~qPE62t2 z^%~=iNJar;GKri?(N^Vv`k;k9`^3GP#J%u#%1~o~%wGLkFt9=|L98|+Axc6@y#O%g zPD_p#8`lmf*3gsepTS78vp!#n1(Kt8yoF;_b?yT1f5A?MIf;@bYzmR`V$s4jVIGQz znL=5XG!xQ_OU7k=>>3)FLcMc>TKsY9RcGT<)wJ+HUtRVJ^RH1qdgJNx0&cEez|Fyb zkDvCBy83?>)&D4{KUMxg%*-f|J81==6ym@uO6z2*Rx`B+M+O!CkXE|=gc&~6&>`34 z__w99us2*61bP9wr1uBn;8Yi~6&|Iyvi9-G@kwqkzTKzS!y%>*Qw|0sq26dP7)YAH zlFV?_fM>F!>qaNa^&rFRU_{lM2vWQGHW_NeQuw}pR@snbg8P=MByz%@b@y&#JOC|7 z;6c>;B#7*$8RtG2vH28rS5%x&UX-kbKgRkST5i6|I%nWQ!58he*TSoiQG%f`E;Tyc>QzJWb)wAhnPztsesV$#=>)o18TvyuWZ*aEH5%-7Onx z*Czg`THffYs92jvOdvb1UA~iCTJG_Oq?>&E=Dyhv#RsIO*nW&RoJbF0$3t{Ik_vH* z#P{Mm<7M@vBFtf(S3g4Rq9ZHZm8u10mZfgHS0+$l?PtrL(ai~xwcMr&)(mOgPc38) z+mYR@$m3?&o?P=^-nD;DtYj^0EdIA3I`Qvv&5+GJA(>@q8u*A@%q0Eh3PgQN zv3w3++D`-Q*SpSckTQ*JE=-n2FAC}AQta1okNHt%u3U+(ID*$EjK!B;lXKj4w}+Qg zn;#mLri`FV*~PJ<3^Pgn#s%%?_ZIS6HwCcMhnU~`tC25hM9Oq6D&i@9_ZN;0t$TyyQf2WHN zU1>ifV_;vxH;r-hD4O4EedHUe{&-sZhXO`rm<`CW=}@wATFG1DWASXG0=*ItfLA)< z@>qOWWZ{R&Gcwma&McVu5^R^+YG0cwMjJ?nJRmwaRUE`iQL3kCj}qxD-M)&IJXx(2 zb_{MBW+J<+@~(kt!>uav@~we>zQq?4Z@C=z`BM|nKB zmO5Bh4%Py%@hCVdVJ}2V9YgA3R~TK2QCyi~ZiO3gV{Wn^8V;E216Y!c-63@7ECy5O4W)ld^u$d^<5LttNzZiptd%J22{Ip>2tPG`64%=0wdI#|VVA;!6*w4`25IS$ zijwp^%-`wfiZV5y=kufoeMXf|ajRsLHc37ymCw60d_@4%7K=K@6yoi(2l~nc2pmyO z?`oDAYRDly*<=Tb&amHeM2&B|;n%S0j`^dbBlns>>OHqUMRX@b8qpi$Dm)q@RCcdI z1E4glH0H@Blys$Y+D_8*kB<)R=iC79IF)1=ZViFi{d}y1+C|u0ZInGOlIUTi75*-B zvQXv6;VJXhTw7k~QEX$rkwo()=fH-D1NzdK(YJQeo@Zt$5@|XZZQ2=Sx}6^uC#oE? zXsKlO1K)lOq!*=>U_s&WPV?h zIw5_;44#7TR~eZb&9y|s$dLXc^WBdg?MRM-;P{X}g+kL`jXuJ-RTN$~Iq+__naNRm zSura;SjW7*A% z?up`LdR_vPHHBJNa^f*RyX2&|yiaJ(>Hk}?7`rwssq{9NrNyZ6FptFg0JKdJw8@VS6-Pdh%KixNs1LcKDU%5* zx^#xm5Pt3IbOkv=V3pWL;T{Ib2d3|5+vBRGG1cmg-_}c4{V&SP_q^om)i0sz3-$~V zwcRAn;ts&XYr@CyWTPAMoNikoybVz7>Q89>QQw#8#g{r_vWoejN#{@Hb?3a>T4q5? zF@C&wa5iZ7r_7FSoX$sDX9M&C)}7If7wv=3)Y{AX<;m-d%!pZ9^kxecWO@rrlK5zN z>qhhj$loe>ubd+FuImsAKi=c@T|OrDTt0GtfF^QyVtKpD${Bl9-uxxlv)O#e9VzIo zBf;&@^WxigiZ4LpPUYUk{t7#6W!oCFXj@4bjM6S$31Qufy>VR#p$;|K^>q&?=Qe7Z z8;;lI5T@RgE?Rc;1%;{jf~B%ETHeh)%y6-SC_t)%kKVr+gu@*EoVJF+>H(V*nc5E} zdy%iwih`kzAJUFA1tSalB8wd)+xeYIOcoYWmi4IqR|taD$B-AS_U`u=*^n1mbr{(- z`DKxH8O2lK#`dU?FZuGQ`Sd(h4TgJ-7I_GL?6DarTB4=Us-Olm!9@nch5J1E(G^J& zD}@=F%@Fcc9^|JF?7|D;ud>-q6Dy?Pn>Koh4KqRu`nk9I1mYKz_onAOwg=)1wA5g> zo3U@@K%=hQFSP;PAxPb^Bk$>uQ}^$uUtC24Ptl~YmjVzK9$QX&5qT9c)ZEDww`qAk zH*61w5Q*qp$p0js34xe@`{40_B1>hP-Hn`K;C`CJ=f4`>R!Qay`GB6&dh;P+u9B~R zk6VMt@FsvRmi5V>E|!IRcNDx}@{9FX*vj+UAIeTzOs5k(P_KG}_*djhurG6W14bjp z;E9s@|6ro@PvraeHuoO}VE|7Col45=2W$y`rY7V$FA<;Qj)ABb0FB z;&aVpYqyN`;C|fq1WLqk%D;KoUXNS1IJfO5c&Bl*J$IUAx19ZhQAxKHnUA!tB+7o5 zn__qcB6eEeQgTu$F=HVA@>a+ z#it}wS@w>M4cM7W8i0h^T24D^%LgSyRKuU++s$=23gs+u2jNA27~%If_>7|@q)Z6i ze_rK;X-YI!718F_-6ljjTtgd>3%Ls}-s28YTjgdQFSFml6>&q}MNY_S{H2+w5+~b6q2Q*k=$1`AJLln}%7k>-;ioY2 zLvQ;)zzvz(R$javs?Wq-<7G28R`Lf2sY0l_R6}kyzp!$%S%fyFD5&FO8MG3X&W2ZQ zuzZL6Z%e3JOUjZ~>`uTnR=~UFDMa?G3BXmPpTW$dsDpDs`LymnZH01|;(53B6CV^gHg$Nzcl&Vgj^2QY`nn;*Ka1j3B0| z^MZzDlIbpk;tK)*R(XJ6`*>A?5!f_NUQj^>K-DW_s%6 zcHG%8{%juxzk-IrB66hm?D=dzSyr|YNNhlCx!l4a0z0qqc#yr?=QR2BJ9BmHQc%zr zVyV{`SKu)aUX(e+A>@&}YpZtfcZjzxzlJ4e-(zK2`8`pfV8Tz?zw7GJWXXCJEAiyg ztSpl>T6F8QYYUGW%jnW|4;QrNw@mda3FInI9ObNZ8jVJiCv3zRTNH|0J@Znr7e{-& zde!P2$G22;kVo>Z5^HVBJo8B+hR9OCW*WxRa<%9Svd9``USJTPG|no@N@PVD;M0V# z6w~&#<;Ov4#2^WevyP+uAgWjUS($1$-c8)=6LQDE^de=0wHS0~2z{%W8*{5JGjoc3 znzl^|4AosXf{8OyDv)FwH>*~ z^V;afKN%*kPc>)aIiNLtpQpQ`VEaR}sif0ul5ew+$W`|E)wa!)v%jQTwCP7|rLW*m z=is?XDn`|zSv4tFNZA*h>GWc%ze(#U_56LDfT#5_ypu52)A$ZB03T^}Xu(rhtAdXp zxo`s-xA5G=E>TtOF3}yHMS8Ihkp;3U*A)HLveb0)wjRwjGIq=T5GWYYH2O z!zhM+5?7}m?#rm|DPKRg_BbWMi91wyYD@|J?;;iQXzKb~ z3^w9Q=9Kou9w-(X*6W6kL=-8y67_*edu443(*kd4zGozCl77X z#1Q{zI^?9qeKi}E85?UkTlV^y)G(F#k0#r3 zNj49z=8GrRU0#miBZ$~xe(RvK6wqt3(NENr0 z_G~Z>GgCeC9UfwtWS+5BA8BxL@++?-z%ndm4$*|vz%yNae7P1~Zyu>2sr`bzo=QSCqLH8-f@l@+oB?otmjlqh|iplH_5;eKBpayhY_+K!$ zpVWu`WFR3O@!7@>*nNwycm3TxM!ppEo_WmZIb^iDq=fi3&bZ`ozj=55h`QPG*=&ZX z_oLX#OuMLS+m_@JJ}LGg@>t4bG(wzi5O-<3S`){$Zc5h?Fr(e%>DD;JcAv=e%!qw< zUbdX*$=!pEAC8@>d+$_Ym+bFtxX-e2wVnP7di1NlJ>eKTtuJKZMt<7108vmx7x`O5 zp*wBuBPoBM?=_`~OyTueFDiceJ`EF}h*%v_e{&AD(D3|sxUuR02{dU~ouqLwT8}6y zC23d@=~~tLY4PxSRaU_P%b@r;bqdRZc)o=niBUm`dnM+D(df(8BeGLpKitPS0+cRr z1~-U|$$Sd^t(4WExMtbjco-L(UVfAO3>DP*{=u^b+wj@BI2xO%I+~cs+W}4fN%Tzdb0$>78tO`zFy+cfp?odP`w3|z z$4R5pASAW2#EFgHDz^%d^OGDHxnN&*txK4covoinw_&JP)sDP_`w8pKcU&X-yA<~b=a9DtS>h~Qf2a+U5;mXT|T!zUwA!q9B#JX0lv4m za|EG3LQ-R0<;#lvru0#a1^iZ30E#_Ok{_5;XXHpyWSXLMuC!JX64w4I04@sM!!@wZ)?eh>pRlwpD>C zGSdEViQz72$u2wmF3V4OM&a{1$;pj<;?x=vZpCW+}6a zV-dZPi5C^)!&Cr{gY(;(;i{+uC$MX{-Exq(_H`knHJVCi7Dj*IsL5_Ek)V{9euUv; zup^9{1sHV6TkO;iikKhNKZ@#mn%SqC#&sLjo0o*8(S#0~FtJgK6w!VMxfSro%z$fK7gxW)S&CP?VE@d2OuGshqw2aQu1zqe>QK3$xLg0|3#_Fv@p)i9nF+l@0W4vl$cXv_!kJmQG}{AG#yXSz_X)~_^bz}- zbsU(FHS5r9mly=TQd`2Dndw$vq{jv&pkr#U0d-q!yzY`)?!r^7_tq~a{s~X~V+xti zvGCq7-wIER2wJhov((mAMwTx%kqHOmJDD;rhkX zn(fIo?(#;yyA4Qm=&WX@Ze*n}T92$xm5raOr=eGm%UV_|Z^=@oM=;@!c@F8ztI|h% zR)e18F?KKEm7S&GQ8Z5*f$)G<>l87(r)}q8faRLWfSA^FR+$5K=h7+GTy0t9G>OmZ zq8r;jv}>s^UEVlP{AyJ0Dji$dpUX^fR(Xb&63X^RS-VaDX0B+N)iXUS(XBBNNwIG< zV9>#ild!l(p9-h)4`T~nS8>NE!a3+?6W|M^N{95KlV5WPtq6jiY}s*+eB7OCuNgPZ zVrzU1x$^9_@Mt34XAN7h-y_{avtt(>YRgRtokD9oBfIh}0~CHIMUKLpzy59p+N)oN zwry~1_V?25+v(my3+UbyrIri6ve^<}-E{BJH!2W5GgM(}w4>;io+k#L2ww;rVC?!! zr^L#hsuk5at7V&@Hw>9KnhHB%;5XiUF{WMG8-8PMj>!TP&wDZ5zD>^AK6(@d@-u>$K#0yt4yI8WI8$xVC5szp=o`7mqtM;&9iak^D`||{fJvw*n zdF!rvXe;pz9_6XTLPvJ4SuAAs&q?eMYR+$2k_;Tp;kL22(?J@LO-e@YuK z3U}{(>xY%53b#0BARZ9#8*(<(cj;&MQp6*jFwH?tpT8)4B`=0q>79><87lY2xH#G3>3Hl`_UqGW;lkCS=h788(#2eIa}i`b$}3s4Sd^u0N|D0Hsg}FPA`!yxXj#7HnL{)f$9?xPW=^Asw!gLLZrc09!_v2#D zP@mP{4Le|Ukz6PxfW=OjOXBG`l>Jb(_o?E*^BHx5$jr*F4@=fAch3`EJ5q6McK`A6GW%ZRw=%~93VCv!7E!I#~Z8>fi028X~Q2EGqhB0 z*<>KjmVi$@r)+yJfjHJqeIv52gpSZ>&b;hOcqIT0nUAK#sxb0_`GwfXfduPAn7gxX zhi&3xxP<0c0qiY2?RZ)#Ul@QIxec}lh&@;I*1m*%z~$XMII3(C^jT8obX^Rwy} zUTyvGeffBBCTu?@2cObhx3kqGS%)~9{;*DLmbDFCb7(^^m_c$ZM&F~d1c@^ZuLIe1 zp@E%9wb}@?`!LIe&@De;k8c9jL^vO?A+$~dri0ZXYI~3zbI|v+_=+Kyw_v!1IN>6{ z+l%eQ9N(0GU}+~or55&$I8-AE!P$dfCS-u@rHJF*sDPI86po=2)>jM!bdaDXOpuES zDKidZQ-tlqa2G;9rQ!GA1Vn)*^2LM*ae(FMz+oguZG;;qj$sha9!o8^3N)|{sa6D` zb`I$#2z?L75|pJ6x&=Dr!4Fp>)yg2$t|B>VA>91H2R7mC(bRgh!VeSS0ISe}IXHWG z6vHx>ARm2@*~mc)8OgIA2ud0hs1L$PB>~V3Hea5YmkX#jxGg zDkSLGx%DdGCEEH;AG+YH=RCD#6;S@%gJgaq>_r74o;&_6d*w|CZS0Fy8Udb%|JDA7 z*GTJkJ!ontnHKgHq^3;q`;8ka&p&nEf5!eQ3Ie;XCt-khG=|_S0G$6;FZB<9=6}LL zbt?@O3C#5bX!KsS9hk4>s>dP-pTd$fWIn{Dh(pNaD)uyP08;ENh}c_Zv>WtZKffZq z3N4m7{A^YC6Y^8lm>OSOYuEeq#LD)t#_e_KbTGcV3HFwN>xTCI-3w7nzzAbwZg%zA zLZLxXdJG_fYAoTo1~kv%U=87(+CoM?Z{9X+#+xb<(H;%6U}3%t~UjKRpS39nWo>oy(d=;34?>%?yOg!s+VyU2sYugCX_i$h-y)_3pXx*R zrpcK05GP|WXt_oc`DQa52}7PV?WBKqOJQ#y)HC!L)RO>cOdQ0?sS~kab#5rMa53V9&+lN~6PtZyJOc|qMpwS#e^q>@_DfykW)uT6>rkjGJ9zE%xhn5}x zjQrYukO9{z{)F<;-mupy(2IXhKhDj=29ZfwfNQv;v3Zg6LEAHBG3II~55Cf_c`-k| zp%$qf4_Ra=Id0tClvJX{*;Zm?Cw^e9L0qj(Npk3Jtx=cGg@IsEnOA#qYcqMqga}_% zy=hYa0r}0c`*4V2`j{<$BL2>UNdCTCAooYzOxhpdIGp*(a+5{4Pz^%AVIjx%mss)& z(dBG@&G{(IzICBJ-5BwJ@o+SeitsllQd*elH2#vMn}_o5bK;*cvxdq3UIe|YN5x^+ zKES00v%T|`d>OY`!=fa*TIeAK%N8sI`raPxX1z0fY3-)dKqm&dN+tb@`KItBSjEK|5V0^8u>% zxo|yCE5nLf+CG^1sd1#!-=e8Qu5)M6asOl6=ge9)JLKUXsWVB0BEyhPp5&p+$? zhsm%$$NeA%)ndNNe<7qk=?j4sAB#8by2>amFP3uA~CoR>8vCjdh`WlRNR4XbY`sAH1{Y z#;#)Cq%4MkI7ykKR}|RM2~z8BV{k9!k!a)_hb=R+RAb6f=IAIQD9tWa@rlhOlT*EY z;nL6}Syh3?FUb}xRqF7So-gaD8!eO2H|~`GP01~mQIb5cF8iCU_BH4bTdweAKzp9I zSee1lk1}IZAm*NKo@t?Ull<_N@?<}+RP8l#`ThPJ>NiYu(b?I%>1R>81x8g3i@EDE zrk(6RLNR6$ni^g4yB;UrfnuWbRfUE%VS1Z%tkd#8C;Ad1_$q$w8xEjrt^_b$OW$?9 z{KXHhS)FgC;%_S$usPPhXBFvc$7BYk^ST*&Fd5ogFbM;J!uA$mLWsKEKT~g_&fjdi zho%zst+jIRLdZ6l>S6GbXi+IRpdm>)CHwE@$6cvRhF!sWOQT2ibaPqnE2zi3D6=9R zFa?}xbZk76?J)D*?%?bUJPP)M5Q1uS1bt6K25?9UrwhGBWwBYZmP>3No3)=}NZKLE zJTgGC&1+L3agk*BXTsLyqAi`S_>9Wtv1QFv9xBG_bXGS@p&VqLa5|w_F8NT>d)m$s z-9DMQ3a61D#TcG_+2McxRa3+2L7h9hFk112!jNHPyL|9UR!kPc-{_|Jb0}6NFGF|7M`Fc+$*UnLzb0`~0?CbA$UyfF*HxmQ($fJ22>o@ddCKS=D1gtG@WC20_ABe}g)glK!B ztx1H8Ab~W9j-Q}dU*vQ0FJan|BM3wNlL6DR@J9>>jl~~Ox?U$_u#UA_yirheJHRv> zzrU;{HPK-#TEK+70x%U<>ED7Le~k%y3q?m0poK9wPNbYoZ2mJel=WoRgfRK*Dl_ow zT*@m~F7ItL^2qC_1H`C<1DYEHOg8P}NqOUADexHH$`P^hP+uY5sE@OnOrM4!= zC%6x@z04}XCW#PNAFFiPnGbW14T%{1Ct0%MqiCY{xZX8k#B+Zu6|bBjj{pAC2gBDL z0JYdh#^?V^A_Ev$p~?X&Mw#R(=c{0ifg<8^l!!)|Wh9Gl*b~t3eg{qhq8nb=7eZSQ zUAkNN^TD@3wxULGlZqk70!w4b6HeJzYLbXOHNQ&aW`PjIUjj#F(z-_(9`#4LlP=-e z1VV>F6sA9PX6my8L)QN8_;CqA|y8Qi-?Xb@; zYRP}4mq~hZ>@VZ~DvI&%V&L3)0fwn^|C9Gb%^o~vGWkpTR9Oa_X<~LHOaNR`02F63 z%O`+t5`SprGD$3SYGr6Nh%R+wuSEI%rNL~>-&G~hUw8abxAH%^S#w1ubgKHKwREm> zKM+lA`gOg3=%#a5_b1%rpgvLzLihhk?mAvF){gdS{@FnXo%$R>VVKdseTIF^9%d9@ z)malNtJ`apSmgjQQY&gjNr?PHYTF@&haQ~vuz7x656QaUEftefK5@Bz)gn1c>F%j| z74qKsCYK{5|0QfAr{}@P?w6810S}m6(OXACqL?9rH>y}5#qs&1TF!tRzJ=V{dOg9L zP)F||=^rDD^leCA4`%RA)!ND|1`UAV-J8_S3lu5X1 zov3~#Nqor-v`^a?yICN!LWw7SIS=_AzSU+XSmW2qEvA$`sQQepeZJ)R=P$H3Fdycg z3rsTh2Ky}hd#7;zOI~wyu?9N#2s)E&{w2a|9U+Rgn z&6$NURT{1+fFAp~OD|Yf0UBx{x18e% zh9w7)lDCN{3Vm!PrS9jZOQ>#RRw<{-N#GA2Zh6q}8ri&y{;G-N&-PFt-hm;&R@;x+ zBy~+jmf-}BfXdt_rXNl+ZX`3CvlSX~Y&4Zr_Zx|+?S?`)W@WkhhaOgH8ET~9Y(+fJ zt3QGIWH{TAQy6e95WcZH=2>ehj=$fwt%P%WB}OwwvnIE@SifU8eyq7oJ(O=#N`CY2 zE>g^Ik0?nAx}4RggX<&bswR17k{mA;4iS|LAzeZWWlli@bs00P2!WJdK%O28<+$!_S zRxE$XPn$m~uI~Pbx61V>cmIv(*GMOyr7HPG<(TT=T`qfRHaq*!49y>ogoq})0wp|V zX`W?D6nAInj!ZEde>}%}Xb0?!$|~LmIQPzX!<+Nms!_v(E~c+?MC%%CHRrRJW`mh; zYOUCs-QQk5bRO(J4rt(MK;5a+hQ}7fTXf{iJ$o=*yQrY&Fj3$%2$b(fBwK0k)CJt| zY2LZ{Z_+h8DQZ)P)^-K_PH^;s=|U*vL#oxkPnniC27(E$t~>&QObe{2hRq-PZua|>sU(^$$=n|95XJ5>k%ALjU!k{EY{;} z8p-P@he?rY``myF&@Hhns768u&Jr6y;mI_T%Q_NnqP&O36T&<-S!jA#7PtDDLji_h~1w;K;LiU3TFW z`e6Y-4jehq5bmuM^6-z&bSP|qae((|0O1V@9>yM9)Ds^ppj=p*ez+Fl1_tSd6SdYl zz&o7f+rakNF#e^5R!z>9?Xm2(cwoH#Hfx;%qKa|F1al*Mr z?pmDPoUu8P&-4D)WH-{H-X+t*+GVD?vbgH-_ZFNyf>TwETAtOpL0(4XeS2mk?z#_5~%v1 zGPPiGtg$q_Js;KLZZ*8>mTZ!$pyKTC771{b)(|dE*K>qAX_gr)Ig-|bGn%#8Al3r- z*AUi1cx47QdmgoEeG3>mkscy;L{w#Vv>&$MaBuVFlGcatC0we_%6_!nNLQ8*fr1adho*51Aj8(=5+I#8iBj14n;YF>TwKy`B~e^(@)Zlh||c(sf+`8b>wJw!`alJ@EAAgdIQYPG~Qrd1QI z{TMSlnYLb$n!e3t-#tXHI`zT*Oggs(`xeR#Oh6!PaTM|se^~n+E%(Y@7)+KuCaL?+ z!CbFzqn<~+w56*7L`Npms@EP`%ty;9ja$J#$X>owO$GSkcDKhzwO4npS42frhRwz3 zFiU=0J~8;&HKFI2U2hO}U+tQe;m(8k#ioZDhDT-=$>&%;lA-flGRMe_0XMuSB96F! z`H&u$T){4>%LhMPa*NCQiyCRZJxy+q0}|yHUtlBtgNF+#rW&l(lc3<`6R<{l{peSz zvG4&d`=lgK`6S=HR!o`Lww*m61P_+hj;;Um$Dc`cENhOCuylUHMycL0rj)%fnZ9nW zx;cWdfqNC(J$DKS+F0{arFit+rQHhFo>+OUt=v5 ze>o=;$S^+qAiFasjn4cVT^lxKd(?ktYWhZrt}%K*OTQkTZYTjPsE=n@j(k|I*#wfiB5<$zz!ni6C5W>V#SNK6k7qa$ z4G?;c^0z1Ch4G^AATsk^ucciQNpZL|t^nB{C=BqER)4xTBD_>Qr?2_1VV2Lp0eDuM zg}*&~w&GM4f=v=PjmqcF3*=)97*CgQ`U>X}!@;C16!OcQ2v1o4n1m^s#K{z-!Xt@b zHA+L$hX~w&cNB*!#T6#X5S~0Dsj3;2gTPZFK@tZkeHO(R&Q28;cL9B{>cs@Hz|@90 z3c$zD3%f><$W&WHj+~HO)*Of+!t0IKUrX!O{rQW4iqBDA90V>+K(LF4(7)UB{qrpG z-%kwr2d z*F^}GBcIJC)zX|*rk{z@1Bqm6uWN$&e&U5hY^QQN6^rO(-&{8)GoB{w4kmctULKk@ zANz}FA#Xu)Jbc2p`2%*c$8 zjwzSpt-F#bPGgHz5EAFC);^jgAnpj%a| z8@SYke^*vLXE{&bWlcAVg##>X3;S1Zmo1JPbM3_`SL<&XY-CE6QScWZ`~q$;QrS${ zJB!d!AeHHjrc}hOe5$JeK=hdCUxwL9sRpU~l_M|S>UGxZ?6|w!;q=CLE5f(0U#M6{I3hrP zfvdOZhu4s$=P(W3?$e|6#XnQKWzcclk=%|suj#l4Xosex_LNG79)4xssq(Fg)!|SS zDebB6g=nphM?^D9>6+$G{#Zn>$c$sw#G4&^(MfKG)NZw3)+3BFEhJa!spyWFolTEK z%kH35+F#E8QI*d3RNIddqG5{TQYG0QvH18UeM&@DsejkhAHR@SWFEJCe2@J!DxJxV58GGp=5FQ`taLf<9ZaFgWhuF~dj!h2>Xw$26X?`Wb{+dYbm z{1d{x6e)_Evxur=w`#+Wx)(nQ{Z(TWn`@o}td#U%by>Dcp2qSmmv>h=@)QWlRBFs$ zvbsjc$S%L-nW&&n%>G7CW2RHr=PhmXY3?_N8|pK)Jp9xF$8#)001_wNFs@|hlX@OW zs+ZE$x(1v>Xl&S@dy+nq3U4lgEw+_G)(UGOkINihft{Z#Yl-b*}-ST8N#5E`#;L!YMY}}^FuNW5Qauv2v?_yD`-?32Fdy+p*zFlp8gL2x# zawY$b##)_(9%+cQuDcr7EsxwB$CVfDtkfR*U?J*o1tH)Z3F?+$M}J%rgZFUCp&$2= zcFLLAln#0mZVD&~Q1ipsIJ6Dlfig6Ii(Qiqog47A+?Ms%r|h?3D0}-$f?RFe{mM%dk+%a#w1X+{C0-A7|ol zn_+AmX2>h=ai5SmJ{@0ua_`R?@^^zlpLrFPhelr}kQIHvz@yA@Mj}h$Cxe3wPka$& z^%wmJgF*8Y9+fb4j4g^BJ8UT3m=^YwA3K~TM0TfWL00>QEh`x3w8yp_0B`5}5o{3& zLzV|acCR2nb_f+donhuLnbEe-gHB-AbC1y?Bw&d|=6%8(XU)8zCaCUTU5~A)hH6E| zTw4BC5aBN+2YWy4;uo6;nRQHaz)k!+S$rF;s7SpnRH7`VL$RPnvY@``8H+n^!0O&B z>XM@Mm;GO)y~mTN9u~t_P+VRr=f1H&?evsahAa5(+e1R93I9|9<*x`lSAN<2sqXG-Gam zPm#ZD-D!Px!Rx*6{HY6{-1X9Tf$W-n41^J(RNh)p2$ly{bibA1MV>|U%?^Kciw!C% ztRu;aRI@@w0>gImCHGbKm*(TFv;56rTwvOVs);a}wSi5ZTmv7kX?4KXW)Pr0ou zo41FpKvj{m3{8p<1U)aqo4~++rYM7SW(zK*uYD>&YgAdZOpD=!N)=E18;=+Dbn)p) zVN@bS<`GR6tzjX+9`=^x=}Ev6AAK<=V!?uW&Q#^hGM}lkiyN(NV=3GU(|`SxZ$!t5 zo`gw_1>Ib-@TS3GrNy^c*oL#R&xN}3D=iKiWl?Udnberkh$=&df+9*wOsh4~64V8d z9ExypZ?cwd1jt)rD2$b6kO*{%Su{L~aO;xoNjtC|w`wjgA5joACpfJJ_K?}+24zpb zD(_J$ZH{(J#%vyucra=?ZD5v*@fLB35SD$PY~Mnj3v)(a#hw76#|pg?yJmDa8kXcP zbRa=a%YCGtu0R}N9uNjm6kad@=F!wSg1>pfMNFf)2>;Wv6?FkNDBwU?ZX(%^_ z5~XExi4x6RaXvOSXNF4T^rYKb;-tl;x{93`)Mj*l}N21T16S>ac&lm_xqByIWwrGEiP1=llr24Z2}KcYj8 z-Qy()a&5+B`dv5n22O6{Bg59N94cCsJ8&TUpv@hMUgq9)QpI=eFQH@k}sG;#>%WH(oO#k90IU@F<_og55C7dsCngcWksLX>+#|q)ia;fhrS5uyyE4@ ztE!8}Vwun(KupvWF1;4}LzDc*94J4qxe>-J-DGhjI6uUoI8G~@Qf2O2lr6QONhvOu zx2iny@$U-VbZv{*N#9EE>}#R&q~T@SEH1@4+|D^Q5Nc)0ijyB}J^F+k=x$X<7I6yr zNWke%&(uJ}9X(z={AS+$hCQ~Tpuj3dQY4a!3*kXI9RCKv_gRoyU@T8Skp`6_ zFP6KeDsbTbt@Dnnh-}YKjOBSo@Z-O#kSCPrZzku3ace)Yc+t8!=?C~axv6SHZ%S`0 zWzYQGQY>UH*DJF%Lw*9(xOcD037gwE{$d7d;)ZgRl-_xL4uk}`teOa_=Yb3LkiKB3 zdDfF*{r3@Ke_8x>RNdrvY902bz_UCe3XgcMgy_d&A$&EF?`%ZN4Caih)>b;c^RPoH zYqsm870aWSkXz1f=B*4g#-X(ukUfu z4ye|m1*#|LM(JV*8iU-Dja{-jY#kL{vG)__I0Rc?xb80xUtV7284q9CF3PbYdEPEk zMn_N-dHo?zDw^TO*>@MRi67pc3mqVc(8G{Bu}5b_k6Y?IKksh64ndlH85)u#G6(r> zHNnhDIqd+F&L7eKXI`u&L@ckXq0M#arY9dn^|@Y!LZkFZ(3`|=X`=n#qAax>b6v7F zkj+kib*3#YD#`ov>&1y=_zX)~_meAl1;E!j%Av_$g-T@o8k2`%9gQ6fdYC?`a) zJ<>_8W&A}7XTnp{z(eu@4G~G`iqiQlp+Pao8r-puo37Eq(d@DYm7{T2JnQMWOSh+~ z4ww5aemG#Q!Uq_~Y>cspw$%=o2YVpbPdPjx?L2O?=^PnZgWU%lj#x*1Qk@eM;^cqV z9I_BB6=}+}h5G;uq3WPjo#~DdP@(H1=8c#`xlZRcE+!Y_>ag-D*m7ZBYMhQ#fHr40uB8JcDWp-6KG`gIT;+nyD zr89Z^kgjWKAX6jNU@Hn9!6wRlyj4Bw#`VhV!)=~c-cL42mftUU2erC;YeZx)78_@F z7#^ua?1DY@<~G!Ca+Ph9ly9C_7Z=}iXK)wgR2IH%rRcH~JMme=4e)$qY5fI9+~A8> z2^?60UBZ!^ydv@qFNLDT94as%aYPc`rS=G;A#$Gnj1V4-6pWV*E?l(91gq>b)W3px zRQK@`Ve%fD^K1GAIa&Z}hAYdH<_f<+K6V{?urKB1&O6xTe==Cs1S&W~Z-1I3^mu1m zp%kP_OG_R=Yw)9Lm8VS}F6AJVK2f+M^E)N4#IxAhSQ^LQxmENDu@^>{Tofx+ReFbE;;X(K_tWg`#^IKmrGF z2`MO(LD)l1%J`kpfatb>EL1K>f)Zd86)2Nj?9n!qQM)67r}ls>@@!~O|7cDDxIH%{ z0`W}&y`MAjeh~owh)5oq&U+LCAo%{RKQMkN1Q~^7k5?}i_zLEq@Xz|WmuzP`bbx+& zIoA)GX^xiV1(!ahC7s#RYxwmkk{q4`p+~cvsq?HUtB;V{iwd=dSM`x&Ch*)=Mt8_& zWcPI&D?L4by%Cis+z0k9;`QEd^ncIx!W?3P9)5--Q-88O-v85V?_c96|H}8Oe}B56 zsAK*NqGWH$viuMIO#02-*3v~RXsh$8 zX`Ahu2+CB;16!Iw$Atigw3?Q*J_Y0O^r!#gJmUDxe*Y<4K56I9yqwz>*4 z$T8=8ZlCeF-g5hP+C%bp{UGv(a{o|Zb>CBFuv5yN6NcpF#KQ`g!(!A9u**(oxuOHj zNnMserBXZ+7Z7G;0j)GHFOSb*DD?c9yr^;>WlC&GXF|im z35B6%&5poKNCx_jwoIQ3&KJOZEL0N=dbw+|Arsn4kM1G2)^Y`4y;U*hJO8wptpkXG zvO0Ot5EU%8#Kzo`Geu!(ZVElod*(XGUeXAUdzq`+E7T~;>rn}DCv&dcS+$9>jBOZd z#^MW&qgF^Vau?io6SU|0)TkoRV1sxtl9C_xxc)5XnBo@Ly9cqyO|^O&Wf2&(E58<^6l6d*oIh=|S~c`q$RVL_{ZBC|2x9EDhQ!LkKB zl1||*-6EJXJ-J|YHU^fJ8SHClDWc8LNVu>chwQh(V%vAss&LkG$kC3`wVj`xp!0CV zMk-&G`x))vW({8JVmgOuaO@2Y=(>{_Uq+6-LxU9-T5|={^bi@)t(r_Y&B>p{WDm7o z?$I7lTdtYEFRbFL*wa(1C4P+QG!|QDQs~}T-37r~diEdo`5MpNZYGG!TY0$N)I7P)KW09#hG|u0np~Ws`DOzje zQ@zW;HDS>p)kn)WIk1Ff9@0mvb(gxlmE$bb>`9V>iZ@~=}!|;`}nZlZ^y>0 z%*-~;fhkX0Hiw0oDG2t$&C6Z0=u8lHOxv6#dxV*zyGHYVnL*2UbnEzb5BoZJOAeaA zDQuI`RaP5~mQ`}AID<;)1sV%(v6#tlIx9OL4%7u?L|)^&M&`10WHQVxZ%{)zs_SeK zhEz$}BPqQa33^Kh;NO!1f63PUHJ@{I+|MEEvhkC3YCHhtVPAidLh z-B~|XFO@_rE3%XV&@QA^q*f@rcZK>II!CGKS~Map)^=sy#9qW#nO_nz&k^vAi@LCM z>XQ3e-BpKl1gvU*ofKi+Y)Pz7P6kvhUaGrPY^HR1PcfPzuhC>_6EA?gpfo^NfyIqfBIj4-js-0%O&U2rRx<&e!Hz0FRG+2oiPh@BO;qXo(SLR0;ME-zkw+(=3(NK$ zJ!|FqG%Ve@esCzwb$)AFnBm~v`YP843h`r8csKRb5pbc&U$-SwDMo^Ac$ z$w0aDObh;n(iL&>MqiM~l3Jyjxr9BvkE}_9EToM_9bCs0J2)m@pKK;A)nD(qBV!*<$v{!>1h3Dc{Av?3&o7%6I~S zRjw;4e}z&A7ujdkWB{vn=acc}IV*WlAA6nLs<7F43gkvTT+m>(v`}?2W96EyJ+;xE`}ZoB7dx1LecKV!y*Y&$PR9< zk6YljkN9ES$g|zz8{2B^+@emv}wG&Ol{gL4|*OBO!a@$(_JoPMTW9j9JoI$vEl5P5Fb~-Y1Il zAoIVoiZ8XCK)s$o6{W&9Dsj68e8gQ-dh;(l<{;4eyU_-Fh|>^gct<}$R2Cu)&oE|R z|G`gy^N%ISpQWC`pMR46u{87(EF>cexre(7Xg9L|#(MaOme412L~=)zCJMsWyZH6g z%vymLc@**d?QO-DQHa89fZe=N5AkeB={gHHPnlVeOv^YP%F*(NpqtSXOB@I}EmSf; zqbO@NqSW#bV(T`JP%PI~Zv1mbM(6aJg0{#A*AO`U>x34uECLH`KIGl5M7xNs0^6pIP6ZR5#{ z3DE!gU`mu?A8IymYJdgD(S6yor}Qhu0L?``9uO`PgsMh(Fa^(aT#*hfhzN8^qNHZ}?D z5~hxr2sUuzDJdo9VeeW{4#^$ki?9!M8(uvy8p6Z4&qqWb&s1raKGJP=;TDy(Xa?mO3JAz}}%Zy#B(B#{@Uw z*QJya{HSdc_#y*+#jNhZHc_0*<_EuXYj_pMjJMiT&BrmyeE#|$trAfZqoRTz8YT5V z`lkO`I%V@;B{O>2|N0R#bvCvzbtGZ@C!aW5X+jR05rsDg1`;wKL`v&T;G8ImB*lt| zN+E>;8%n9TC`zf`;N))`ruwvu3Ae-tawc7clDF23iSx$e$y z59nRmr%DKg3W6$QSkq89rc6geXA+{m;!KB9rCMcEcN!fe)Ba)aims)^IB2JmE}3MT zM~rd4xf&M%l0sC?H`b~`Ey3zo*hNe@X6`*Bva(_18*?3b^HAx+h}d3r{lU!_d8%bK zNx$prTPsIdCm837&-nbsYaIrdb?Uezet7u?4Myvj)4q{c7Nw`ga2Qipv2>JUA&u;j z36r#M;LxuMTJ3JW0pcs)O07D!jl$Y}DSP61Nb-EH><8}OMadM2G}Gp%D)jJ+&JchSsdIq6}n81L3m=u>M0 zzb1L4 z6;RYsc;ocpg|Q)g{VkkTf(;R{QU)PFf+(N>qlLo7Waby{(=0E~a-5&@hSR>kJ6*Fw zepLclDW%M?MbR{lmdc>LYL(O6X_h$dWKQ2=J467X}*U?iI0aF&%j7tiaG0dTc()W@>8*Ju5kgyCG|3yw_M-5G%ph??^bb zI{%{1p#zb8QRYnhttin;B1U`(1GTi z^(2vD_$a|}yDD{Plp67}F;Mi2E;nOXIUT3kk~cGQ@hMcP&-r&^P=yo}E2Ck!qVSdP zjIDnOo>cMDEEYYIp}Iv$2={wRvD4PKi;9A12i+?7Aod)PvGNLg>}9Mj!Azjo zQesk)?^%jFW^5T+ix&psQf16eDlp?e&AqU&kE)8sS!Vju3tKjs5=Em8qBK>kMzDo; zS61-|Yy6I|y*woV>qggQ4N2WY`4j6zf3S*oqsJSSiXcj`GMjJkJ92AvU{(c(H{7wr zrj19|?)@^j3iil>BHGKoHn5xO8rgD34+J!vb+{KBssm$rdgXkUGsxU~pUCZYVUs(jkgW>u1m(gO<5piFyw5m<9U%AP&?(*hTz+bIVN4C?@nJ-I*0JqdjvfI$Yds zx0aEI<0uB%X{sH+MzO~~Hqza!&{Ef6n`2yjz<-{7p9>86#@VKPYO9yVkEks)K3xvJ&e;DpXq1^mh7mQbx|Nxi6~SOmYN4wb`E%Op z+a{1i(jAXI8(?@p?wtR`evAxV2F9cSIzw;O{VFH4n4S0>na`(ntC5g|96jixT+a=pK zk>ijIKm&+1Yhz)dFjxzx1n%%oyLI0tPAmlpiv>d`#L8;4`y<>PO-4GUuQZQ9N;)N> zw2gbY;7?3CRmC!#x=;(r=P^0IfHEeP*lAqdXi%Tss9# zxj2NCtZ5z18f;e2>595h6R!$sW>K9t>Q8TZ_ z_J^N*wSN+_pQN7gPp1dmL3Qr_A!!xyXmcsZ>;;EzWht_Xf}@!I6dMy zPQPPviyg|Kw`QuE0XCtFU|2{0>anIW^{;R4pfG9pEEda6%5UwC{sPEEa zcQ{%tzY^UycL0n4{-I-qxOW}_2VZ}49gjMPzY@t}+SE*nBINW4eET<&PgF~nuZ(EDIF6s40Q_fDBneb73#)8bH5oKE)p zNY;s{Fk0QD*18Z|wfw5#QD=&M;(wSm*Er$vhEkkrcPQBJ3e$%9l{FzcbwN-P=@e>m zNhRt9&Gl%*OP|7zSWH-=&p|m^e%qn>O_s#55MZdHv-TWrXj)LJHn^_bPd>yC@Aoni zLRQqgFo#$^A5qz@GSb2NtiBv1CgA37S?mx1f|A`{5rrFiqV7B%-`%42T8~Ir=8sFI z11@X4cs7GzJAWCx8rshN0mXJ%>)m($Zs>P_WXpD&UVv*o*Cxuv5EaZ>)d0G53Iu%Y zkZH7LiniJ3&ycTK*b(+l%lBs>b*tnr;$yO_c{TP2(7zY+GB^VZ@$dlvT7KL+|HES5 z|6BI?Pe62QLmH?owSRpxC$%Sy!LCV|2oO>Tsr9S<0r`yp1cDqW2@tgIoG6o+Fea0g zUT0xbZDBK1+@c!gvU9uk)Z8YsI@nyJ+w^W^OmOo))6F~<3@Ort%ItKl z`Q`NG!|A5y?REo5q_vxtDH(|a#wj~afWA;rWAB$jk8%3o@>bDN0IaI$M}Y?M8l<|_ zW1(-pihfpe{yahyP*Xwn*}RE=aegnJrqgF{SIcsTJ&>?nVNqw^7or-|Q9B$YyGdr6 z7-lJyOTUQw(E3scyr-}@<7^nAw~KuXsGzD(!=})TgdYLP8gsy*c*U+0Pn-{>JuN0cIRP&;f2Gwc;^aWF177mMq*Z)9%T03jL_Y>ZW&k6A2ha8lXVn z3YJt@v)((yb`Nta~I&7(Lm)^Y-KSTI_%w^_wgqCsgK`(dV0E{=9G z92jSt$62C;Q>+rr1D#yS(gjSgY|D8~l?i91H&c!eEefEdwZ+-h)mbh5l`cV+o8 zRr8s!$>kWATpe;19Bq~Oee-K^HYserwbyiD;?0ikuI$S#Hy9WYPnD0$H7 zOkAKS3xNj&h%N9+y@G^>iZ2#4=TKlGGJ~?qVy&Sa=MT(Pl8CaVaJHZ%^&R}j}d?Y zG@J_F^3tiD2P=b~T*N(6Vf?yj4C*)mZXAT@CyTZv{EX$CEBU-2S8|!mfsqDU@c0Q_ zU(KbpZZPXdh=ZTgFiD>H4PXkLOrQCH`eye+C2}6*t1&1^N<5>04hNQhU_Y~Z|Ep;t zFHFWW4Nq`2%@!$%+rMlF{7u4|2T3Vt3!cLPi^-x@((CZ@Ra_1b$fxJj>N_=Ua?5<) z*AoU%9s+ljoz%8z9$|HVB;9Hx>G=hrFASVm_lpWM+NQa3VB?Ku+EYt;N{cu z2}8pIEMRZlRCgbZC|mJ}LB2VO=USG!e2m?6V&{Ho-XnH7u`=ijSXDG{sGsY3J82Kv zoDXwIBR|_HSg!rK0VdBJ46B$Xv9b&sq@xc54*-G2!3ri2oIBTG zor_grl+eXLKGRlob-l-mH81yQf@G5#J%ECJoe81T*z*Xdq=MEH%run4oMfkw-%Pcz z_gDgD1ICcsXXm9mk3qU8rROHp{Hlhh$ae{RDe+J*tgAQ|kLVp5(b?LX3fgw`xVW*} zR`r!UJ<;U%kYV}84$GC8N96!R4<=aH(TyEM>s2r!kxk1>EdF}L!|-7e4VH#ORAXre zZ+cTDRZzIz)7XCj5o(u@nFgAQwe~vIp^xNwZRtdq`&a~34pX`G4LlCeES}d6+n22j zG*WI1+`ISmLCbt0(95v$YZo%|Cyw%9`wv3N1{g3HpbD!=7FTWWE~Lp}7B+<@|I&1K zDw_)n@^EKdny_@k^yUI;JE%tWbcf^yjGkd?R}<=+tQq8EQZc_{nrnrz?=%$fOwH^H zRPXQ3GneH+!qx?}0?>CpOH%*42F9MTNdhy)Z4^3)k-y3XsV-8JA*(kq`qW5k*%+7B z!?dE%(Kl5sv(QYpTEL=&UqRpA#Ib2iJ*+hs=^{gFNs#?p?Iqy2ovbx#*bJr;e2z;XKj;TowCVZ!fO>bpYv-fUTyc!jU=Av<5Bz5+(l<%M=m$9Y<6u zfE_q?5s&8P;21#VS_b!5)Na=GaSX?%%&PW#y*?hXFKu(_#J1s@mjH^pQj`@tK43)*M`s<@caL z**!HeBjGNC_CDi>^7l*e3_E7IgEFPbILw?I1`Lj8frb@iK}78OBhD3S1x8WNs6#+4 z8nK$zhN_owBK-+gjI_Ck3y#3bYja1f)$~Z)*5F&C$*)diemQo*LUyqPQw_n=MjOP} zHkaP5Z_pBd-NVLOZ_(?aI0)4sMQ5Jua8b8NWG2AU{W8Z|?{V$vy7vXm@diNFbd8R# z6GNb{x^eB?U-)`FNSgD>-dCfrryAHT>;=lMV9oGJ( zGo1S)fMA}JibVSW6WWvwpe!7L@`&fVdMN&)n5IRs0WesVU)sW4!5rAZl7@r2iD3bk z-j(^h`=N+yNMNh+TOLj<$CLPG1+@{Lj#HzV%Eoi|7+7g~Y0g(F`2hr|dww5JqzIKV zK@N?7NFMtmdQAVs+;Ah#H2^{%YPxmUyS~q&@TpjNAvr&EePAA0c5mNEK!>UfMvUA%CSq~jhU8-E`VI!`vaN8PWS zz8&^gaHI&7;@nURpw88~!MK+Zux}=l&GI1$#aO>lC;3hF*3<2rzkwLY zcz4pOb*Pv>s;w2W_6M@d_$DR5n;E63VoTD460tA0C1bz3k$vZU0~~3q^>(@17;B4f zjjyLJzp+6Kt-gD_$bXmzeFvh%B*3A?Z3`!Dtc#4|E=4RW!ZAI`ogwit;A$RzepFVxzP~eg1vM71#W$;Q; zno@;1N*Su@d(pzW1@+^STAKOAue^>I!w9#_rj+x@s2U5w39>88E?PYZ5PK2reX&`` zOB7t}Xpd*&*~Vl|u&B12mLG=IiFAmO2ahwV*3=P@ucPC^xYEOe7%pXiBdXFVzLrqM zv(i;A6B|Ius*)tM6dmuk^|gHg1~8AQ=&@o_oI;cTa=L=}k%xduC*!OdBQNDbq?5`X zbbf5B`oi$`tbO3>Ku2McVOFh=7i{v4p~vDiCpcFmuT+L%9Z)H)NT|z?Eu=` zByOHYv399C$p@|&R4J~25%AgCVw>ITKfP6vo~Dvfr6fo2J?A#&1oBr&w~7TA1By4{ zKb~P;@=mA6G?td}SzvR>K>>RhcdT}2!`x?an;!bt^s zKRESmIrh!z0&As(jivT__SpTflDT^QSYFYlM2p&?fE$rq%7{2af5q;Yu>^&eV+mb&H7j=e}0#QjMmBz)S$tKBfyfYzsk3JzAARuBQ znvnP(Ohw(>%a zT7pHe;-XVE^*}sgu1l2u!WyMqro~cOmu88D%fjxvMPvZ6C#QYBg*x0qaoxfi)yBc$J1Q6+lLad4W4zq3;32vJkq_HYe&#E_o6^|)^1$JK1$xaS8ew^r#|W& zM2|O@F}~jdHVk!RcHQ%79tmA)OF#KcExq6)wxV%Q6#Fr?iV_hld9u&8m!BJ8>b4#D zrwcxSmrDgdK!?jk<>KZXd%484(pdE75ShzNz3EpFVy`txu`YIfNVh}YA%COO8JEHc zd8@dbx0rHy;SFWFS@b!Ua5!#ILY}Uy9wD2T&Jt_+jG>}mfwi8`hat^ne%A`;zP%*B zF0tu`2&|TrzuGINqQyBaVW@Y+L}kc`n-kdDjl3Q`=Ud^d|74#+u4)u|LG*&yxM&-y zzdx&z0w9ib`XefMv*!~LdeXn?5tg7GG;kWY5aLu^kX{W+s^zn_7FpxO377VDZZWmWz54>na1e1 z_=|JEW#2_ylU2Ugm`iPw56^g%&xD!n1rc&Ay1fp;wUzCb`B=h7U}Fl?>3DZ9=UEZ% zTmEwrl=426^NvxS?|5wF!;s||3JY0!-h=>QmGriJ8Qy@WI%8%6n9EkC&!okAR3()y zI%fC-(NDu_r>^VskL-4EpaKnSnDLy(AUO|;TlRtDp*v1{EYCoK9TyZ1vhwyaWH4I@ z`&%UzD|KD}N|Hp?;bY@osa-S*uvbEJ04k5z9$G&(IQVcEH;-e!E6NC~g^kBUbFp~r zIH~?GfB<8I301wg|`FWh!c$pTee`KuW&hYm($$4PLyEmr>%~?G7$|%Ix@`I ziov+3;jBoF?F^X($%Kd|rr%xXXpf>sF4Q?F-`Ql98;e&F<}TnlH$@R+e=~2rS8f|S zGRdS<@UO`Up zu~8~R=^LJUSy+4(qR}8juSXcwjVZi%OTik;`D-d%leW{+MsN9=BfFH}CxZ825w~>P zN`1|Cy)6!G-CUcfs=$yl-V_PGsv`MRF`bsgmNVJw-&*+OEeUpoc-s=+ju0Vd{E#!j zj_`ey{LiNJoC4Yh92?MHx{}{#NN3zQBTeHWnP7dm7?uu6gsdAg zbH%aRjL>~yfu}1Ub;e9E1FIsPTg>{v=`+g|Z-|#}6}KLR7Hf*Hsr4=*SobE=tj`;I zfGf=iR#RI&+%()U-kpaQ|6W}1$PM4i6}_uc&CNXudlrv=(s;&}A=(Pu_g)6J zi8>fre?T*?EZ>JEA!;2Fla`5AR=UK@p$>#wd2+$V<#EVC(L3z*NYKtA#2g@@GDIVS z<2RHjw5zUg+7VN7Rmi^aJg2?8eRKbfP|A-gg!qM4>IXB|i-#^VaqwWyq4h zk9ya3Yo(C?J#n$!K8;I|1=j&CKxhf{{iVRwt`9-HlH8LV?Y0DH8|fr!$jpQM`XH|P zx5s@q=QfR90Q<@>Pja}wrViUJz9*ew-R&VY)cMa2JyxG`&n~-#DN(eh3g?!1ciaQOq zu1iN4?g6e!M$RNZyi#*Y)K4)zvwPsCykfT=c+3}|d6M)F!8{|d&oVc~cJ^K0*xY6( zHYIoV#Lv7wKzwrb3-E8XAJ{(jxj*1=_k|zm`DDOT#-xrKg)bzt?il^@J<&Xs{8f+6 zIUl<|G%~i8=*!R@K4WxYP{}*TdxOzaevsSf+uS}uG64LZCERe@fz@dM{N_BBxA`m5 zGuAr_377%W{1q6OC_^j7vt5x#*?8c6BGR+bnt7vpNaI+r7T4>)9x;}@`1?|a zX5qAlWl7gnf~E^Wn{}@0%o@C$AL2?G%~l^JKr$ZKCc7__F+-LOS+CuPTo&R~o&tR; zlp{e%R|FwnQ0dM^AXE6O4a1sS6FRl-4Xa|gfS7RGNpj{ci(i|lsxLGGS_lW zQ}DMXp<~}wYvszUhv=vB2_|xIe2`tN>|{>5dk@ zTTpqnG#g;CJdo;RGmJoGLgsk9e&7<*OPEKXA2GZiv?293f41AZYPLQGaO=cgzS2#* z{WP=dlb9-W{r_qgHDS&qZbad&2!AZweib$!+O^Jt)K>a`zn)Sg`n=Cfv$(=p{ML7;( z`4e?!RFgm95mC|{+#WTi(5p}@%p+Yc@d-~s6ENFCvea6xU!iY#(=AKgGEb{W4G!X& z^wta)(dC@qfdxh!G+nBB&W<%clw9sxxef5K2Vsz@#u|1!YI(>PUWi|WB&^$rg7foj z)$M`7-4@LLfszclK7=t;=!v`oeg<+Iy{NsvV94IOp*V1Jd!ismt+t=Li=lbCqwo92 zqjeA(2^d!+ZBOHr${E#cQ})>-JEX>=zi^AHa9#JbB##f)Wx}*x=}|r%C_fmX)W@R0H1lnud!WI zmB|T9v|9g$>Y|W3pUSp$t`{DtyVs@^dVfcsG}k}FJAl}J?0&)5ruZLsOzYs(R6_QA zMZRb@ioNQ7{)4rF^B;=ZYj9lBpOAamVb`KOB)PzLu zE*Pg6eQ%#!FO3?#7&N}Wc|zZy2RgHez*O7eh`rsQPnPs)rY{WlTFXwjlfT(aS3ka} zzq+g%a7jb^>>^^!*M?;>8JB`*B29jEq$yx9rPbAv4%q$1iS|lDq!l1Z$VjnQvG|0g zE!O@9_uBt+uH(D3{Q(m_ns!3Cq|+nbOvQ1n@`BC!LG()vsYhJ+NGGo7V$7ahIJdw9 zAJ+n3=|W9CRS@OC%BOhn?MMrQeQ@bDC0#3;>+)uL98zt-&h0^!Yv0P46wPEvwagJ? zkI6pC9k%@yXZ#2)W4Jm#o2_EMnE~tKltxef(VLFd;T@uYCup=+;e<~1$l~Er`XTUrQNbyHC}1zNX`f$@H3xjMh3U@ zq%*yeJjmrkdJ|0@l)w2yGq44iS^P!mWaXFKd6oQ{TKN(}}?H@06&iwRNjQ}@>6*)d0wz!;~yiv6DUWn?oID%AW z>iHoAPfqX4%Mnn)KCJU#ZEK)rxL>n+Hm1lTNMTxaG0ud3t-&toZ z;R94^u~^zx;0+RxU58s<+J@t!4z$gdbqE!ImLys4vQZlE60%H*?2GR$_kD7=K`|#eqk0W*EXA zneFc=Zyg)6WDF@5mfEFS?q+oh|D@ef<<@y<7-96eS=m}_nCg8ENibwaKn%gB)%XDd zCoW#!pM(^O0}g}~jt1H_Cxe#4S;b)f%A;m&axOVXlntMSBp+s+Mx0`;Nu8$f3S86G zBX6w}ijil3KH|S4Rdz0ok5^^(ldhA5H{Zbj-guA8cUpk`;bB1kD9!zcQaO&M_I6H| z&UTI-|1BviX)9}L^P`9;Vrph-Yw2uhXRG|P{x6dkW$j--(z0J{l8ur&*fA?s-HX_k z_&6XtNKpBD7Luw+kS`o-*(HUY%oCSYtbU{H_!S0%efYa^NHf+#m4T~)?+oVCuRn*) z(|a8K4gk;K6_^yodl`s^z|ugJ0(ta^GQFnN$8V3AQjmmtD7e%YOxXYr#^BjadR6y8OQgNm|_0x-UYW?qV zaib9j>FUs6Xeq+NN#V}#jNT)fRwlE2HA7pNIVM{dBH?9f5&cTZ(g0BwpDajwG+OxQ zSoGt3N>vLHAq#m?`4C#q4M*#fEgX9HvZhuwaS}FX5mVOp#f3&5Oz8W>IOB$G0?8%i?CPj^s#zwmQM{WvGC{Y|e>RqN*-+Lh>yl{LrRuajCYZ9Sb``C!+Hhl5vOq z>wsN89m)0)(^iIE0Ta$(%-}S8P-9Rv1+4JC0^4x+{Qck23;16Uz3~aq?-PJ@aI{+{NMOnoky~Z0rAedj6FNOo@C%=aKd!ZTvdzM#s$W=kpG@%XrPEAhae<`Uj{2PcN9ukSCRxZ=YsTDHYPR7>O~; zy@h>#Q)Dt+#eCk1*_12}bVE&ERA`-!vNNnlZ%~;!I?PI)%5sG_d82ZG%c|_%0)!*z z&%ph{TueJEGG8{M?NsuVhCI%_zbyn&g5q)hmfysVQ>r#*qe3MEdngd|f8)>LpZJ5e z$D@UZmjk<>O{QWYBD9ki)$T`Ix@xmP*CnU-C~I<43;PHDELq=GmVWRDc^?^P^iTZ7 z{}X@DB*oti-?{Je`HU2Q`)tMk3xD!OeDTIV_``bso1FEH=krX0_%HlrJ(Z;yyYNtU zWxG%nGg1I#&No}X){62w4?NU0Wg@d63a3k2Im%Pow5Mn(7OuRlM{A~Hl@Hs&$PbES zy3rIKhO{iG)WK#KX(^iFR?RNZ&Xp4SKD(c(lrVo{tpD( z(CQTPrs@7cs!6EY<ozL_GrW-2~7v}u^?a`WH$cl<%j1xwfb;4klo`TQTs*Zn{6_rDoP|F!x3 z?1um3!8neM%~dV`jvqij`$PkWbUP#pke z#<;ipcYp1%Vy?X-=8Tx}WmUuIhaAEZg^oUiK5!b3X3r#y@n(Hr7J1u-PoFZSjxcca z$ELgN8j@?$GEJ}5t*Dt>eT5;00w~oko!~5?pnoeROo4a79>g4m3ABdtVYB=KKDqvi zd5{VadcbAkd8~w)WW+feANKFy_J;|%sb^PC8>FDsRHgiqU}Jzm!%`WfZ>FmDe3V+w z)E4A34hbH)p+z&aCQl7!xK!T38tLfi?v+5*d~m z+c!)7##FvuHn!~-HO;cyC{XRuM!(WOBNo zyNfGtav4eDG6mUjXU57zy!V!T_DmM%mvD0Slb-xKZMji4I+xB=FA#ST58AD_gYNHz zr*Bz#ixDg=1xVkiBYu297+EtBvXWl-*keESc1mYXZ|Y=)RFZt&H<*1)^co}$0(JAp z*I?Px-0y(Hk+8&k*8p}t0Jc+}IemRtw!(!f(YZ1Pqj;js2$C_u`gy1w`oUYIgItDJ zlm){y6x$vC$S%>U@4$A*m|$HVR9VxFP@S z*PBv@(!)No|2lqD+cG!KHeOp^12%+j#%-SIA0AGik0-$}lKB%K6cyc9B|~*qwNTxv zxkgSQ4(=WY1_41F#D^P1Y@?Bo_RDla21xq6)%`KPXsW^blnKUMa-jq+4C?i3t7{?K z33a#3JbHF|`uF$8!;BZx_eW)IkK4WEFV+dOU%bfXV^?A8V&F47A1tp62+PHLpK@@Swt)vH`2iQ1mp3JW?7U@ z)q*7WWfw8wu(%bQHVP0r-2vMtGX@7#R&QV9e&~)Mk}t*IQ9=B!fMr=f#QipEHJMw~Z!Qi4MWw zonUI0>yambQN}j)`$|SDm)8*aU<5E#PSwJpfURqL5d=f5i>k(q7NINoJt;4*8yDR5 zjYOn6tPKR@v{muaA++#}5s9>J1*+!l;$xOt)#O~KL9(q|6KlvQW(~@576+qgt1~NG ze0uI>t79bVMRtEP9;8$bYiBYZvMb*2Og5Bi@?{dH3aGpKr}QU zl&P&AZ*Xv9L})TpA?#cr(ioo$nqan?ug6GbdUB5=96lWh7vH$Vw82uMMQ%Ld9Gl8W zaaS$NrK+8+R~|uu#5{twtUUwmh72%i@<;VoMpIwCG*90_z^p;0&W#TnL^M2>V{Nmv zOO9D7kj`7!{aS5J{}XNRQARn_hZAD$;CXdAJ6mo@R)b1Cjz_xB4I>l3hQf#DV&1AE z3cQ73KB9?0#UOAtAmTN@$wRHC&_cD6Zjol$WY7}B(;BmmPSJ;Q0xd^ds;6{5TUw}_ zU+=`YM>rk|fa7Toq%Oj2A+y?3KU&vcLOL=HMr@cqg=3(DO+t=Ayy~FlG}qC93KP=6=a#7kaezzrI}@lss8AMNCDFvBaS^y z1v(w{C+(h%h*T|wt!3gsvClef{+1J`cEr|LAepRRE*i5O_kneT|J#S<0ETlrjIBP5 z1lz^uXNsnBZ^~WXP+{4nqB`jSwo`aSGa1lXNXt^DJnF~itV8Mk^;uIY`HJazt;yPv-{We02s5E+{mXzTUJbgEv0eh zfl~t-Rr1|dy&HE5rT@dtnx@jsZQi*s?*8#b`#Bi$8{+xOh?AEVhSId!h6r`ML$h+A z?5P`Yt`Si$%q4?D`30#02MKu#_2TXVXUu+!@&Y|`QnI!Jn`WaAAH;V|%+63DH=7cN zi{V24OYXv*dy^i>t9N46uNYjG`?MIkUHclDzg;ex24*H|Lv@9>oU-R)RNfVrH*%+c z8?$E_s-tL1o3*|uaCDXKlap>brBU!p8rYslaAeCllCzjRFQ1*g)Z3b(46l}r`j>CP zUia*$T}j@QaZGPRg=7~q(iEJZYE+eWk8f1f2z|V9AR#)G6?_Co*zQD`8H^hm;gzT! z?q`lFXzu0|f(bvuV}1{{q*?DXZDzc}LT3_ah+^l~>@*i)Hj zN`;oR_h%e4m7`xQ3H)BXBl-Z@W2tG6q=H;NU&|H*@CNum@u}Lw!10al$!9wrZPL7B zZ&;K-j4WOZ)1l(GMsa?7gF%3(n;k!U(N0`y9;*w``hV zZ~0>1GdF+Z-GB&UAV&$~uh7?LrStXC-V*rX-^}U;p!Q!cYu6v5Qq7uzCG9*89y5n8 zdFhv~o@JCzkRo2aV#A9aBh<~JhLia`P&k$)#b?@=>u7q8(CWF?LL;YKBX-gs=`MZt z2H$4$ocm1?lw=$GR^=%t$I>OK#E=wBIc-L&Xo&jXi8qzy;ZZ$LC~>yhai; zmC;IWT~r=hIBJ-$z#ii=F`j8>F*7k7$|I*mZ9psAUH2cQuT2}X?g}rtLu6AuvtP*( zaDBTvDA;{cH=se%+`Rj$dIN{=TqXo;%pf&Fp#)Jjzpu?;m2VA9gH^2y?4%zDtk@2P zGUD}oKs<9Bonep&hw0&tK_gWO zhTPQBLT;?z1&JqdHr_Ee%kM!>w% z*+@2jo4TAX`yJ$mI)9!k38Kj#9-AVC63QkHysZh3hTK;PY?zE&7q2s_h#1m=!Tpbd z%Xn@5s^jc=us+{Aiypw41CaTi!|cJ(h7Vr^%Ga-ghcCp6MO}Nb_c1Dd3ZccT;!Gx# z`agT@MSIAN-XnXyhyV%v3CgktV}=s`L|tM1d^mJh`V}^acsow6?a1N`xdqoPIp=ta z8e@1CAC#1s3u-=qweG)$Vp+KTNzAnphBXubSnLol{LHPW`xndz4J8M}ttK2a#@2F% zV~|=ylxDUsKeh|OU1mC~Jujj>53*8X9aOR4luu}bIzo$)l^1cGfQY^R=TZTkz zjy#%@y?G~X-AGjCn>uAVLu&Q2{4CGT!3&oL=6JAghKf%MmFQUS+&SJHp|=xQ+#*jE z_%Be62MXDfw^7IClo(G}Z}0^J4(U=TUGeT6Yt;DnA1SbnKB7&k=O8rA#kh`xEHMLl zQA&>g$gN?7;!tXyFlc6e5`3peQM&bx)q(xkOsB@0CbK~EJ?^7Malxb4_(9_ z4&fd`Ay*)a6Ui-WhB;R^Wsvr?b+;}MTA3FLD*F9Pbya#C#6m&#eA4S#fh;Dpz;=Jl(C`mQHCfEg4 zl6lh`b%L2WTevA?xk0UBuUVJy9?;7(3f*S);1^5Ul*l!2>y}3Xo}pyUz!WJf#D@|%rqO+2oku* zWGTiIo#2@RqxRo%1w3aL4r7RaTfU2zZooh6l{gUCL(4 zbaSN-(%#>MFh{h{jWB!A<|7x}-pEyqP3!Ek0Y{HAcNOjFyhF&@Qj~PrVO64qnPxV#uEpJ z^{I!ERrZ`)foo0GTeF+4VXEwG1-Q1O^f$#jyFp@it6!M6r|+H6x&vHyI~MPuw}Ve^ zZE(?CB@yoSM?8f`c!YZ2jbW~nJ-ql>_XFpn-iv|oQfaxVfrM6R4n^{-L zx~>06V~$ce$MvMY?wxBVFKvi*)xK})7Q z*tYaXxEawj!}2Y1oQ>rpK2MfKGv`cIVR`MHg1aRaW?&|EYTeUv+Wl}Q<#!KrrQZUS z)giZXW>+_n9c0fc8Z_>R@AUFg!q3`*LV(Q#tOP3Kj)zVOor`fvEdQo~t>(rB;f_O% zv%9jb`3pJkdAb#@MZZmaHjhHELsE`YgfAa$D!e+oGfkS`j z38(MkKA`_~7GseZAc5pGeVc+x%TNr~&ufENOsSbAzg{>woK2+O<4foB9%GGyBt>(& zq?uy_9?!6j<7;4f%XHkJ1Flf)j++!3Uslp+P)Bq!kd_4pRPFdf78v0Un3!=D;w z1`gE|^7yjENo=QhYsP;=xY5S@n$T)p$>cd2o0kcPP$rFJ3q*SgVv zW6bs9U8d$joxI!YfMS7xr@MamQ_AU|;e{GojR zi)(HE7ee7b_SyVXZE$unvvn|ca{tF#n}1<@wf~_u@FW(k5!XZy&scnxDT}}F;=iQG zfeRPwqlgpl9vHbwm0V9#H#AuI#?J66^#ug{?!_b7-U@jG2v*n(ZF9Uy_q=X%HSzuU zc*E%>s%nwrUlN=eK|F`16G*f}s4P!|#5JLqDRPmRNE0Q@l#Q-KXklbYcNo65&m2j( zIW=V@uoap<1;-L1be?Bie3zhV8IrrQk;*X3JIg;hfc6U6GoOHQU}IBh`*WJcC;mY> zj^5r^<3{Cntu!fEIIyX)f7qWc6znCJ(R-?18*JRjll5SaixcurCTVC!g`<%U&pA7% zcs4#900NDbpCDQz@-92v$XugSijqR_lG)4!f6=f@p=&5{c7b$XSJ zn`mjiwM*&VIa7FaLZEEMb!wkx zt3;)*+b^nCk>-#e?J)sw{tWPex9>fm0q>HpyN?(*Q$9NDk z>QE%I8myL*F3GC*+&r#7+;|I@8pVufctiPL@HQrQRU`YKctiFI86l%_)t#;iGm>|Z zA`n0Q54=gr-h1ywlxKf1~Y|2zUCqO&o$^kMVfiC9~@9~Lbt@G4$rD^HZta) z@`=V4QH@}tnw>yF($O!r5B!A)r$Lg}yz(1%&mdDY&y6&f%8}6%K#&bm4(4%P-mEEj z3hnzQED{~Gd|kE{g^ub4=I_i<}C~f5oDVCQp56>!-LMR5Rjz*HfkZ!aA9-ekf(I__MQX#&N zuCH|y!I3<8QW$HIO2Cx9dbCT_F$?|zU83D4H&>oNbDZ^wrmA&-=khPxFyvp)>Ot+kzY5!V>9B>Bz5lkQ)4c=C$L$Ae&_7<(lK&TY`~T9ilr?RU zM1R265}i%L;E!r1j=!fc;=%~x;R^07Ef9W*N}>$k8NGtUH03e8j+1(itg*1HzU-Fk66YGePOG1dHlAH#&XMVx2CKt25dQdmdjz};db-!!F6fVD;hl819rh066uu zkv=IoBb~7zb|F?|2`hw1qiGWF@2NtU%HG>6x6ub#mN+LEA@`MzSV9%zkHc3?bvw9}y;Y4=qjd+tp$J5|xpg)D@$U^-gofmfc}8_ zSK07#0Y<^$=W;LnSdaeqWyAmZL-`R6|M4^VpNb*Bk-nXivBN(z&uX<-O{EnKpBZ|3 zdM*2iFoUuJ#B2Z~A;XNY4E%x^05m==14~*aG<1yX?9Dbo66wrqX=}?=Ct1vebz<%L z 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 z%0D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%0Dpn~EB%eh z1DQv*o5N)u$$_?qTCHa!YJdB?wUrpPcV@V#%(0h;q=3)6yj9dGVfbFiX0PdpbS9N; zM$RJJNbFCp?i}vH)l3sJo!LRYLtd~a6#9$P(KsF|Mcf>AS}CU;*9)J-b+tSGe>DqA zJ@vwi-~Ptyze0cd%Q2h6wV0ZedUtK8*5Pz38=u;u*s2?MKlaF>y1*T0zVSb5E9e@s zYWA72n^gwmfrr-7qgAFYgi*-oUcxcdc=eKV^l&_gCtks|Fwa&l-~Gmatqx z^#_$28)u3Bz+o$mKZUc#Qz+=!I$0W_hEPOCtqJ36QPjGk$UD-9>(1UTEMh;T&!3d# z7#*!%bJ#>YqZ5)e5=c)Vtj8@T+&rGPO%JE3H?dA*r^&>Eomv8ZY1|4N8ebE|22Ov1 zFSfEy6KBv8nf~!BSMZJh9%Cn%I>4TTry&(0xRn&Jju263ev&eA*DJ|n$4|hbEJd)< z#O?A4QS~xK;Z4DsxR=-2cvJ>!j-}qXe{>#j_o+v~&!!V}m8|Sd9KollJ4htJ+}1ny z?Q1bwfzAz%e09cr)0vWd>S^zf9@Au1c=j=VKR3+inJQd|I^6ci>f}&V1PaA(4O7k| z!g!P*ghyBcS2!PF9{@nTXR7aH8|Z8|f=|?AOF4(r>QpDIlkvvEEmiOE%XQ!%@7T({ z_IJQP>SWk;x>?^2rjB$}JPg)N1#$I0)ffmHKls2H4iK&+e^MY+NfXpbvxFp*!`@9( zA7iEfsvigvz&D^_UvO7u($*?Y@9<=X93j1I;~100Bbx>GD`%Jx^e-Q*U3t-;N7s&cjXbar}33U?pKBC8?PA_$EQ6`Q59%IuvQ^m;O zD9Z&}^bg!$MDbH<*uhzUga7)9tQ)AW$infdDB|4z72?Z zBaI`b98d)qUG61wh!Dr~^L~|`1?z%C(sJ0oeMw@H1o5cF$ zl%DFSmF~LeCG0bFGn4-IHLoaB-#HMesp_2OE?dz|7Vh{EYA&Qzv%A7t7OrlepFOBy z-KS|RrwOm#!&uT?#q=|mGuLDpg0q@Ohs~+^#8MxZNRhnAA)ic z5b|I-P9Q|6GvefIAOc%-3s7`xZq!4;(`Olj%OHw?Aun%GV_F(6iiPE%27#kKX}A9s zSUn3pw|l+nM{>vxdKYKz{HyxcESwII@iFy@EMg9rXNR{G-6r#Q?bhJVQ4a*-S%&rm zKsT|XaNJ>|^a^@``Yror zjWmiWy5(0#J&cS8efT38p?b}B&98Hm<(rIVQt?sh=$?gzrgJGs$^qiMI^@FAjEnw& z_KN6?+USHN-ZR^;nb+2IVaJr3&`gtTG(BkIbc0}G?*rE?1g_i#E;uu>x~<*ga4s&h zR)m$hMYo4Mtqs+w^0Esox_x?|3Ftff@64^WA^Dztgh#6w`9h=V%}r!>^39^s*)6T< zfFtfyDo2Hl6KRc$Mgtj93h(a$E2>Gn>>kM56mC#i1Dl;xPq< z;sFYI5KByk0ec83z#gFP#BA;zMKul^8mSYDqpSaU(xpQPAQtG&cdKgpr_UY&wws_G zA4Iycn*rGO%rD`eGb&=6=Up(bxotwMUUF=9hZk+W^v1?H%X^aO{f8bJsTPe$5TVU= z`XLYkmWSVEBcf3>R=@kO`ic5$_|Qupubdj_nq1!*h%`nGo>k%UDZAFStZr+qX%F;j z^AJaT$j~*oZnM5v-MDkt4Sn&teUMREG`eoR7hihgv~}xev*)kcn=g6lz}T8i-Q3mM z9qpy{0(k9pfYb2im@x5ScMvrU?GX_=j}gsj8uVru^$GqHv!QGx9cj%lk;xXEMmUXd zn&RxS@!%Zq2va*Dh_@`>YWlvn=vdmXVPsMCY=S3i4+?}7CK7Kh#2yo3pKRPf0|-Wg zaVx>dAc8IlV9o_BQ(7cK6=NsOPp~#L0wBCVSTTRXth(;-rGDTr1P}DrcPtJ~2wl8j z@fE(XuRh$n=C~LZO#nhz5k|+?^oHy4@hg_}UW{`s?nu4g05}e~LbY{{NsYZV3s-{g zE+D7&Mo&aJEOzMQlfvC~vnI@6v2tNeZ{s9KU2Vt(SqK4OnUYJhC7BfWl{_sgm$7Ne zWf!C0BO}-YIkt4_fF5DU*GV<+j6a(uQ-YsP34RBgR^NP+!VqTl4S;!5eUqpUD99pC zoMld_|2#$fZ&51!w)(8=pyph8&;@3^tqmC(ej`Q6*{CuHPn|jl$uIG)#d6JM)Zev> z%@7f1zH_zDBp|RhipQ9o+a;IDf;Yty%@*(5K#+K6py$i)Aa~9#vISx2nfiy2&lb z7Tjw8oPZ)chRq*Qr=-5=RLy^H}6;N=@xr{gs}ffB-t)0Ay7y?QEP(9<^f2$tT4fS-bBQ2DMX zJ?{)PQE?=ah%)DCzdf|w5S4j{vE0{F@GlQ%VI9NuB-ClNV{I}{kO#7#HHk~hJ4grc z$uNbBftqJI`kGN^WRaRONN1U?w`r5#zIFb#Z8JJ-thLHwa$1d?(lTXpOWEp!t0hn` z8Nd)?@l~Am&im9Mizt9TC>u69pSWy=#%ET>E|5N<{@sgOb8i(~3u&1y06j%&6$;N6DD@cE)9{YB0pL(4|Kg^2crP)B) z5+J4&8%RsgwqwEfZc%dnL;S1SdIO*U;Yz9@+W`JU0g7+Uzxts1 z{SWf{Wp-r4x7ymP;h7AFQZ4?#$PDx>`2#Z+%$oJX(S9&wz+uA4L^EDt<*@2`8jVtH z>Oo)Hs3_`-Af_lA$%?L3QNYiXW_W#xR`W~bEQsNJ%?i1qRm%*2bxwSB?fLl8(JUan zQ_OSbzKd_k%@X!Vj};Wf3&ajwMCksx}Ta03Nqe zbPNuy4>*gK%|#1Pdn{+=wswMK4y+apX`|9cn~pUaF5IPVSDV%CyDk(ZR%gQ_W}ic+ zGq3OZJWcEEeHjNCbgAN@OFTC}khi<)4gxX1) zVp+d(pAFtXrT4D{cTOkXkkfYtzd{dWuC(o2x!$7KWbON>azkhg#}@JDq)en)Bmv6S z%lZqXUjD3Pkfr-7n8YX+aEkJIJxfYXo~{m!wr6Q;d@8LJkZvP>-s12x7AE_5E}Mu3 zVGA7D*e7t2MpR1G|KB)|Q3U>3gRH#>biPBbhl}%<)@Jsf*Rn(PDOhw*qa2>rm=$BG z@AMd7>U2vLZKomP0Xlvf`E#jpfAT&rpn&T&rX1Gu>=&0~ydO{~1NilL$zslFf$=bL zVs*{?z7V2KYA2!`34qET5m*l@35x?g?qFr@#8`$#sJRS-ubb3o|0LP0rn}xU0NIo_ z*}wsASfa}!KzmUdO~ji6~&&BT10>FPhf@#*zkE77~ZJ9aeNAewT@}asCDF7gUzR?^5InvjrKXHI;Azx2+J(Nx)PS=5*Nb zLZLnLocbKt3^hxsP_%&5P?cq~OdEzIn=)D!s4S8NK(rtWjQI>7gB!E6d)>ch z#Q`D{Z7hC^AHt1USpetJGT)`3>xQ?j(kZ+GZ9frNL6*$OJl03< zjuXu-ec(08s=jSCNmdZDs%M~I9nK7+^eV6Sgtynb3J#89W&Os9=Drs2zf9y3$wV&6 zq@W+*Z&MwHeXH;lC%oQOedqe_%ZPt%*6&i_D{_oMNuVhZ#`W6vQ+W8ypS6a7jw7r;RthAULbjm?c;xrXSG7*J@#8}%KgHZM% z=)*5%&=;-R_2X+VY6<8cGDrgNK(zz)58qs6G`eAARC9eB=f@*KA2F8;wsLT2RAUv!e~90#%=oB11z3RX0&3 zQHPwewF;)IPGtQ&O~mJO^qWH$hAPyQ#{-5cLZOU*lv8NQ_*GISZMet|66Y_IwJMXY zvdT_8OH5Tj%DMC0WddIbg+diz$m3B{73y!kc$ui5vS$BHIKg?#lp^;JY0vs?u`RTu zbKhUolvdKVnGX;hiRl&SrO`acM3DI}T&6xeA~_wr8Aw7X$VBrZbtIWjCK$@rjfHM% zF69Uah$e*Ng7Qu+Nfgf%V~U+jjE(4(5HcD#)}**R_ys6`Rv(zWhBVMrh`LCj)^>r5 zhBvM_DA>iItOxsP$q=~Y$Ly}(uj1xcKbds270b&t?>1{@%w8I_lHX6;_ z4CbAO5Q{GakQ0RLdK``5_LyAosvWJ_*HB)FA&`V`@stXi&pNDWkn34Z4jREt-Yv7q5HrfWX^;j_o_5@C~QGU>VMzPcs-ppgcWy$tS?r3dhfyj8u8=H%!QwIgC0TyT<6v;o$qZ5PH@^Sa>!FVVN%=d35Q?teTTqAKfwnB z)fQg19W?`_M{=m#xwP9|8})<~+2(ABbWT~GeP`F;ch;Gc!6hI#vP{8ICYpC1PUZ!e zNKOvVg@V@rhm%-qu92mOov(lWAy6slb@rcFMD-ECZ7MML!a z`%{DUQM?+g-YCgOzGHh*y~`rYMzHmlqUnH1S-Mb`@QLk;={k}ZCp#9&6x0xl8o0bz zS`UP>K>k^nl6-g5M2;qcu#A_l3Qgm2HJ0mU_CklV@o?ogaHpU#iomaJ|F`->olYEu(|sKzSS43Ma< z0kAdmy!s9B8C6&cis_-8i8^PuhMwoqrswynDR95K|G%#&b!5W_j^VQJl;k4*Asu7H z(oPv3Z7;<=LkTGko3lBgBm>SsEE*yQ@FGY%psf)R?J+2XG$v`3FKuBwM7j48P)2PX z0?I2K1Y)a)3r@}f09+nY-|~a|ZwgHZC+9t|03X>JP=7`7yWeJf$Vwa(olVJj%$^`X zs6K?6>)9X$A#Lj9$qt?x@J=Vs-YOs4dAUi5&Aa@-!n=B_?~-RK&sS`1(ph-Dsb}l! zslZ(etL~bARe#5;zS%bVuwbghx@#wqoUK4nH(WqZ@CnkfR;7Mxn!7O9j``nx^e z<2TK?czT0_J$nX>FlWKjF>n-sitYyi82J=_G9py8U6i@EvZb=j$V2s;0C7f(J6I3? z8Hfd(dL97vMLa#|BxgmvhKoV5C9?67#K`aDw3xx7DVb#)5;!4AnTK1dpg#{0;m6Ct zUrUnOFFE{GEoX*vhz}Z{NB+K5_`8`&+SD1a5>WZkG1@kVavqrO(tYj}erAMkxy z%k$$wQIw|HO36WroO!NLT7p@X@#oiOKpHPe|V{oL4eanT5DUF+vR#67XaM zG#sYf@=2R?=&Fh%L|2K)fKV6^FBrmN0I=|3CmG`kVJL`(gc#W>F@=5TTQiM>3Xjcv ztXF@eHyI7;5Yfa9QC}9~_R^hs25dKqgfz`4zrPzM)mwS9K@#o%d`%sm)9_ynbJTaH zzxTjEUXO#jc0s05Gadc<0$mT=|TCrKV1N=vM3^eF8kw(%tt!e03qCkt{xaT za%5lt9?uMDwx8m9HahpL zG=Uz=U%PPs4Q6rE$hvG2GmBuzg+J#NkJcEJIzpUp9}bUSW!7J;Ss+XOH0{V~x}(z0 z35Mv-S%&W5-@fr`T?GC9_wyvR=`L4)bD{pFwLEuwjM1Q+XP+Ha0o6Z#Yrw&hI*)3N zLOc2MRoO9KQ-B@kZvfioxtFqizKeJShpCaDTJF!?=fgGv?H!FolbRfw3=v+!Y}6C^ z00@8qmJx{C1>qy%rY>)5?wr-#G(B_QIV$~;yQO#Mw9a~$95q|Qk;NM<(7vE{;QAw% z?0L|q);t8Dpp!cn4(<8<=t8=n**Ch)ZEjnSlz?yb0b9!&xu=(isVZ)9c z;0eLSS&SyRb?LL29n6@zC#g4dq3)kQ&XrV8`Ml=%0(F0-xPCwRoQ7btl|S?K@oGO( zT1_rCZhPc#BU4#D?5f;b*BmxV^?n>d8FUB^$|c4N1e+O9+FoilrjUdLjumQ%zIGcS z1%m=nFEJ6fCmi;;BZCpQN^QKr?~bs8Ni(XqTFp_hHFaHOk9F!j%jWJ0xg(WjuKvdE zfb14U!Qizi?)q5`0ka4cMMjd21@?J6sMQAF6MFIi9Qb$Xu%qklVx6(b{&KVy|ebYWKM!J+(pJWs`Pfb^dtVPth1NPZozU|ME&# z@L`9Yu7;tLIKfajV?zE5H5%h=laTgkLxe+({t32oHN@s5*gjAF3#*fmEZcx+4m8ZF zcPlopK@df^9O!QBca>E}+@U>lm)$ef+EaO5s#T1dt=4*kaxIbhqt*trJs$5^K5vI) zbMfJ-xe=GIy{f6guGrdZqt)SdIj}6X1Hy0_yxJWGpvLW~fIZW;g(u;L>+us5`kXF9 zq;{klrUSRedgcIgGjkvFB=cj+YeGEZiIyxzpw+@yV8s8&IsBJ3;>EJ+dn=dq5yDxB z_(-%2c3X}m1`mkT3AP-B>^7XcInhiwjYyD26KJNibOAp_C(VLi`e{GI;=K?JQ7}w< zj1Zktk1Z@NX^J}n#9_^rBa|)27zN&)$`shOYl&YlOp)fEi~M1Cp&lFb1o z3&shdKv$Q)a)MDf1Ch}aZ!Wjn$~SuK*9BcXP_IshH>+9`UQO+TgP z5R4qE!Rd_Yf;qAHJi)IE8D@iky}U8zvD-bd#&Y{pU0oE;x{Ej9yMs@Q6+C~sx5+YW zc{CV{y+2)D0UnyZU%joW&T9>Wp!#Is$L!~3hM?cWv4C5K!U@w8pt z=7~hgC-qE;xq;DcKrQ#gV)ry>(6<)VwsB@N*H*jiu_qSSw3Bpu&0^FBs($hl=PKu> z3bw|DB(P=aBLIq|9mo9}b zyQSr=&t%-sw5~9@ak}kk_#RD+8FZuU?(`IrvDuzS@rb;9~X4Mpw9F^-pKHTM}<(Hcw0@J&Q~+ zedV-eo92gOvGDxI@Fwo@i0H?!O`G=G^vtq9U*6Ws+wFXB+qRELTCmv!oMt6;yZSd^ zo_%=JV)e7>k1xPiM|vOcB{x~9nv$JiR}36hZwo+24cMpoQWD_au6=jf9i?+)o#;g0Jz_15S@Rma-&}u44IEXuR*VO{I%MpJ|;s@ z7X6z8ZIIR3^+Cd0fM226TnE-$>?0R|%$IFea~-_Yk8Y{UjnUfJq~!TUh`xtd5bTI| z5-+SIphtiM(7i+yU@_b|#`v<|Uh#~q6LkBY6Gffn*$M?E1?%^Gin;+Ww{8AsWI-pY zBjC%r-;PpJBk*?6V6^@ks9%#LQzcqp3}vEF4TSIl8@vVJzgun`i&?|y1%~|xPR*h^ ze5Hx400i`2W3w*@gqqU~B)m=tL@FDgHk06<-2oz$Z@!a{CE(A&yQ=ruhry&-vw&X; zxcokeSE9I-04PGGBuPHMD}YCcGwO{mt1nM%tgH-AagEI(`N0`*;&cXV5;+zjUT<-l z`Lb2X)NK>0ZoKWbvHs-vAoR=952a6x#4pZAIVL-0H!vbpu z_NWjCaVP$lw2MZ(VE;({y6WI+RR>;=J8uU|0RYP~3&2uUR=>&BgN3S7eFQ86e^S4x z%BVwqS^Wc;tiF4(`diA!9=^B_cnMpY`Y!ux^$+SRKvMs%{!RT6C`bF%AE|!_6S44a zz~j;<)W^htM<%U21phf?#ed->ClE?f@`r#R63;hIJoCUHci-U1!T>S{GRwQ*8(o?I z-Uv5td=tE#RzsO5k-rZNXVNfTd+%58f$pQ~W4FQY?#Z0pgZ5+&^ueo7-+%JtIKCJ2 znN0;RmmC;v4(GNq7{PK8k&ckV#%q1RhZ0Q=B0Yg*CyG!MTOvmw#!@uSSqj5k&P~Jr zp8Cvt?}3?MVWKCI=uu}#H_g0qNqJL`&0yw8%W-Cdt*5Dc$(1v2I`=7fDW`w;mE~$; z`77`0IhqE)AZh5J4jte@?J4ikha}Qp@V28*sh5tuKTVJNuFVwZqtss}mXCbRMXOM% zBkfBAckO**@7^ci6Lgc~G19)kk%!5#?7!mYKs?abUk&^TUvaxZr^_Z7UJAkmdwq%QymA0=@{3HRV%N0*EX}ZQGHweu%vSjJRi2QjYiJboLAN&~3gup%E;J&$H+0RiO>96` zoh=v-^*v`1@3?~xwxDMoQeD1guXTUKv&~pO!P6`@J-_E0Gu?GQpV?3^hnLm&*g7c= ztoE*SbhK~9YjVnN9iddji6jkYr=j`^X&*9XlEnueRh8yMB#J*8GoT!Xq+t_;Pl4kF zt*w0sA7{y0MIIv<_Aacf0X5OZvvtc44j`DUn||weZC%mYyC12IblFYyLEq0_3sg3> z7&!C&YX1X9&TVeE_p@&YedZfPYt6P_tA9JVI#Ls3b&g6N=y=(*`P%?J<*KM)CxWU` z*1WrF>K(StvNO>!^-|-iuEyoIiiM!n?&dk0jTg#nic7!?3r;A@AR$`D4h-ene#2H?-*j$~l6#~3u*Ci=Q>{zWC%YzrECZQhk8Tf`0wps8dY0!%lF0mIE2B=$fu ztkfeciN$e$q6mWld%$Y*;TA+s^g5qd(f`=Cd4Y##?&zLqR_)&13jM!wFS~H-vN}#smycvl`zwQZHnWqJV4GN*KaD~oUFzNTi`-Rq{^03IlAzd27kfU|0X6WsD+FkN4} zw0~*YSJl;%E+3cz!9=!Uv@H~!O~DMVJ3;MnjK8FZpIA)l1A3FBSMN3HL|Yaw5HH#+ zYFe)cX^Wz;)Mjxe=TpMK3^zpXne|)A!zL%QL1HkIzmMHw0;|d0!8#MGC}*exH#;1$ z0DN;bZPDIQ3Lt?&8G6qg3Vsd)->HFT2n;DfNul8I=x3~zXbm(!WPtdg>^(KR^l0>a z!m2YwicnH2cr9*<`y^d)6>tOP{qeWs_KeV|$Lw;B2GdowqI{2TNOJF>+YviMS@EE#u z4F-%i}&QEN1%W1Qi*10t(OBztwL6*Bzxe%o`LK0|6 zyz7Z4YXxy*Ac5in{W7v2Mw0`)?RPr;4sgovaQK}gXR6!VmbSOE^HX(m+LyK;Zm+3s z2ea!_@S9uGBkR%^&k&3zVdk3G*US`5Mgbfr=i94m+Szg^xsUem<@RcIVNH8`4ftkt zyOP;hpZWvY`-AqIs)u)hW67WH-1*bwwI+c#9;~iDXygS`=2-5knzlAPj}p1-Gs?MP zW`aP6mjYoB1GB*2D4t4)P&zd^`G|lk1tMhJ5qL6wccOL>!2&!HcrjO~_9HSS0FC1W z&k_-BM!?f22_BJ%#)fzs+9XJaL`=C96XBa$S;j3vNKgmE1xCt@` z#X9kVgA~Z_a5f1%Ui*?NvD#D>ZN_tckR+Wpd~q`o=0Xw?`|-3-?$DF~K1hlKC^QSA z;6-?tjA~6m9zYs_NQWR!i%1HG1RHKhT0)|CquRI#IZ5?!xZX)^evDBt8zGz5K_yRm zTiiyZS+h6JwzQ9fcN#>NQ@B;ES?|&z^=`ZhKuFMwtd#{20*IC*Spgv^01@bChg^YW z0YkLH3=E=OHkp7FEOW4|%@8%W@jBj77WV25GL|Z=We&?08Hf|g5D0nzNkF#0J>?LH zRzc6R2Eht|&1JO#;1G3DVB++WL+^1kBw@A3&xr;OiALKjvDRIdz|(@ItlAn020RWE zggkE$OvpPw;jmXb5b%|oWaoSx1ia4fXCcpW5LVW6Rjln{(Sj;`x@xID%9?n9Z2J1$ z*VQ@=Mu?xu+mRDOD|DDELD#&@{m8(J5a|&zAn+9^T6s?7c!;EGSu}h{Z$v!HB8k<( z1ZP5KQREN=ddRXmNe3(vOxhe!a5=;7h%U0mYuy-;o%*1!cB#^1tDR99^OirDQc{&Q zE>0f=01x4MX{pucvd8_gplFhzkz+v+p`h*RkZb)EXH5-~ZTc%GcGnqLJow2zK^JyJ zY?n$#7B=@rr^E*;Cr#t9oUksr!i>cYgWlsw1Z9sbO3)FJEjC5pazRyF$E^57L)0G# zAPGojx5dM501DuZc-M>!CSF|#bXJbj8F2gRk&e7@sNN;J%w--+xjrb=a1$@J*(N`5 zc@<>quBwl=SI9=txzJbXuuloSW`L%aDQ1C9alR_Mh;;kScmXL)nhL_cR$;LO%CcrB07i>q7FiK;9LpmC zNbPQ;p|e6nLfPbr-R1nlljMy$m%U=L*Q)@)PT64ev(6htbA1&uw>8$gx^)&E zX3sEI#C#ruIU65OWHE{HV>!B>X<|B=rNpZ!96=#s^d}r+C=z7@WR`YnbijBl!2^Y# ziwIhkKTIi=gTH+y<_BWcv6S+pZ#ag{A(|pcGZk_^SkIM5N%y^ z_Dw4zT8PTI)4SW_H9q}SCF`(CawTt{yX=;^hU4(|#?A``Y41BLR@}Y1TQULef4}k7 zDSyB7uk96oeQ(Ym(Io)f_Mr0h*WJ?+?RGWz{*%C1mYOun8?WYExO*YII^f{*yLQ>IxBeU3;)2|~yy z6YM$mShRKd+{S*Nw^}wIsp+n&taUd`+V+jU?)28K$n2%GzHebm)x^r6 zCScYWBjH$9etuSE{-n*pri-t=;~yQmg--+anwIuCo1_bLl3a-Vc^>8+UKVXxYN$rh z;;Mf?Bq`#PM@2Wqp+UQxi6o~WDkY+VFCY%>2H;cagdNbI1zD#lU25@gz;AJTzcIUM ztD5nc&^tsL4Y~}zPqgjT49A%rQ7`&VEtjDw<`z}5t&?6kwbpz)Q{B!Cf7asj8BgxR z59qdQUD{1mCR{eh6?FWo1+7DW)|*XvW}`xm95!BVZeuqkr_P(#_k|vmfz8xeatDc1 zIY(3TS1?Y=zO+a)gJYQ;+kvZ|ko|!0~Q$wT(u`huQ< z`d)iT{!{)xU9m{14p1$#L27mjpmeBv^OKu5KM9USN^`-OEoi3JU=N{h3+n3&fG%V= zXu+*p(4O4Vh|3C6^XH?KmF^}5HcNG7NL_=XCT@n<_5YW%)Mf+tY*cASX>I+adhv(D zi#lMcV-Y$g)`qS{lApZpzC~h94x=J+rmsaJ#vkbEShNVddb%FccQg^NfW8#+nt?f`cKV!b#}NWKh%* zW|N|`c@e{h6%}zUX0~_Yt#5wu=B*Q@6IjUT(7S4_2EDsqk)_y=-qmQ;=v^Jd%J=V= zvy2V|a3Toom;2=VK>#O$Kqe6?Pu~Wg;##&F9nvWj+?3;L_3b1(m}`VesLx*1qrS;xWbY|rr5mfmn;d(7a`L?mo8 zt~ax%otx2M6u0xe=jidDW7|?Y2u%ad8a#q=$_X)rBYv=UOYnbGpNRA!?!toIr*Sw$ z9FMG1JzO{2OVtx?FiQ0Az+22lu^Zrd5f2Mr0W9oyy;uV>P9G|OK1{}kM??t900aRq z0TST4L-u10hXuiqFucebYwM>KrD8K%Dm2>1jZUi|(E69kCAg2hLa0R8OSkP6NPEpocqtV?_R%fLZRzVARhB5e;Ht$$G*=kex7tGmO$)Sg7GSTcz5dGsmCoj2j&q9%6!?(`#e~Uru$fvXH?fIpmBAkQI({^zqtH zvf{CvGDi+3Y2oHBRvU8L7}ls#nZ^z&lmXW2ACjxJajZZy*>w$8t0JDUXM($XY@-$N+{WFn1}jltD30jKT?oWhX2;yqj$O z4mX(%jU$)I39?)Zu9$IrjWvg1?bb># zW?U>Rk0$IgXP~uRMAm2r%(SUrFx+f%|+@ri?p&?X}0* zD&*)x7fgQ}Sf2tz-b&}7&)%L6?&t#_yWc`jNwPjnJFLcZ+I%8=p$VzVQM`!qf#+fk zB-;l753U3Wvn0%VKq6kiV!ofzU=9aQPeeANAp@BsL3VZ4_$hOyPZ?3E(=SGM92V?$ zVK2y?6&N~Y{Is#7yi5La*^(Mt+|HYu8>e=TtYy^_D1S9oDg8**5TS$Fiy{TI04U6d$3Vfjwjc zZywYbWa_-u^`i=n{^4zTn|lBaX}znob!n4RFJxEL)D&xVt6MnZkk&H{ZI=aS> zYD#Fe%p^N+sfm|+pk?@m&MLP74+;$#+rh9(L;Oh*U zI8)a%y|E5<#%lPlbtOJaNd-^4VkMqTdw#L9$1+s}HN-Qj;F zn|?oMw}A@Tje5!KOm8GMw7+1W)=PA&R2j1|RjBX9-(U~MAb3q) zV(lf+r)HI-!%yu(Ki&HJ1Nzn50e@iqn-@bz`6)`Ri|D^W5o?g{hBD3AME#UGjX`i9 znyUkUj_5xElV92Q{;fd1>rs$Xy*cs0B?r*Yo8Gf8N%4O0p4Un%^|n~el=>kT@aTh7 z%8$y<;ISpYK8bLM#-EQT>XVXClZZwwl5G~*R}c*6XeX)^dp;eR7aF5vuJ-4K)miRM z6>}X693^eavZ%IF+t_{Ehwq*^<9lxU8z)0Q2;F7x-k4fGgn9=u#G0^W=fh3BpxAx{NiF zt5uWx1IVTZ#%GA8?`hj_e+GTplrb}sUS?o28rT*4jrQP3@@k2CMCP|!vO($oRqOC` z@{4!+C2R4FU961Yc!oufe;v~9TU=s-3xMR-nCRH!-r^N07*Q1!@JYP5S%{^tm*ahy zJOvt%3+Pys_6r1}7r2=i>kYvL7u}x1Lz*vdZ!hNsb#3bQi(b2*&>G%9kWl!@1E?s?Kaos?t<}lki}>Uqb&jOmp=J2&{JDm=(XCQ z-l~T-tGBSWmN(PdSY9A6rlrk%Utm$dU35bcdMlJuWVI5lP;eL=1BZ!*D5Lh;OdYkE z@jH9cZ2~=CDnlpcf{OWP%WASkO{%kWM1Vfy$i56@T-k>+J+{9C zXYew(Xf>M*R)fJxB=j+l*Y`qvT7CVr!enEg@WEzBb5(c7tA%7x3TzE?+ zo|xKa1+zt51M#oao+BZcx_d{TFcmBV zG9g^)>{6ei=yIBcUKdaRIZzn{4UnNHkc_VFkL`JCUiZkP$|^XtZdHJted?RTi0yA6`eH!Oh5}@a1d=9>F&P<) z9tgo?C>&=jOf~xUBXsp!e+83|9z~yn_!sovVETvaSKJ9quMiidDdRoq?N|SFkNv^W zv1@Mn#Lae~8nk-Js3zBg-nIQY=Az#z6&0e22=ai*pXtK>IPmIY`a!?b*l}!sFh=*% zy{T;H357E|1@M}b>i=Ki%>EfCRB$+O90xcGr6dH9Q&bv1`1DVLCnX;3QvJT7Q*z06 zozM${S?nlDfi*{y8Glu z8N$5bA>XYt11&>BXoN}Oy$%V4RdlO$M70PX0B>gwF=T6F}SdT4TaG_Rp%>z{Ih*LAHdOvFpeowfeqitVr= zU8PjQ=Z1h6K;$Z|cH!5!W>ueG|LQo6COp0TQvLCaPaO6i;u=Z;FBxT$ybF)4KrG9` z<64MB9;UPCq?e}Po2tjqAKtkQeROEmszbne8_0Y6^)-)g{Cg_(_l@JWPigXUs15$B zq3S5w(@Qdda^O6)>aTxYvFQVJ{DVzJLnn0xCA~6fo*;IwK5DqQ8(}8Ofgw?ep2*jt zfec`Cl+93_<|F~O355j<@$fBTn__y3=J<@EhXo&)STqnX!Q5bA&@6#x2Q$;G(^aE? zRqJ$|fh$_IvY0cVBPFfzcq{m0ytM>}PBzU5YICLfsmR9uUMCMbmoqU;gBFz-+ZzeN45K4-T6AC9S zrE$}Btk?fnmY%h^02b_V{$PJB~*PmasU;dXcm3dE9`b8}9mXE^gi zI4cj|JvWCnpnr4iS(Q2NsM=;(y?5_wn^j#5J~}^N;>NQNL1a#5z{dvEQp6XOR8Cxg zjb{{9ssJB0kq&f*n&h;uWj)KBA;-?8ogvc&9%~g*thYbKl9ZB|Q03^#zK0(<35Mc8`VSBFJqNAIBtjU{UFE}=NbM4^o+XIfl-p!LyR=RdG<2qAePlkVX8O3~pd$b%sM=x5t z2SwZ*vOIWgz^?~*rJzl*xInNe@V}rQ#|;h-eI@-B7`g`B{OYT(c0yD7OE45YK_YH} zMx4@&4uIx0%qM->@BmI*jIP0Xn&AQ9e&rSPVPEIno%cwQ1HnP#OD2NbXU(#1K9xVbH!>u~18(SI@lxc;GaM!}LCxAsV^e%*Z!uWN01 z@<_639c?*7iLx=(r3EHE7@3+#&go*HdWIfeK9x&v$vz~&x%e{B_XG}t<7c+7g33N6 z=U>J1=_cwR^%8Z6dYAeq^(pl^^)>Yk;X&OrQP9^wzJT=;O;R`S0cLy|k_<>nlGPAT z4}?V(HE$S+*d|LNp7%wL+R{&9LoS2TK{iUlWC9Uw379%u4P$s{l0+efW8)?*sDaFj!>*VNVgKnbIUUSjNI>?fl(xy-lxu41jyhh1V7)3l)vIY-e>|GRJ6ASXEIvlJ5sqte)3! z3SQ3eTDzf8vwos3(pckamZ`F`%qsIwYn^%7HlN0?%$4yldqm%UO=+H<&iyHTAR%|S zEH=1mO;s)Wx#+?ca3}3Ai*o%c@M!9-qAaW+P)?WY%dd^gNAO ztzcLP)LHtVS+6zI5uN?5Lz)4( zZm+$-F-k7acLKZuO`U2Agf02{GNDZ?kB`0g#avphkP8W3**Dsr>q!)pviV9npnA9n z9o7O~tCaB|7pi%<%%}&d^x9D>t{4FE&JvGnz+>!Rlm*jdlc~*kSqo*PAw++c2=Ya1 zOHr*^8fBtN9gjPSs9T-@B?P^OsNa$O7$7RM5oH8XD^Aq-GG^BLcnR)zVwX*3_#@^T zR&XzA-B`=Ylv*CheDkM8v&ZG~syxAHi5FU3#deKcZ=toEMy}HcN{3%5Q?LpP=u%kn z-QLuufTLx^_(jR3_dwX@YG^9kv3zxweRy57(O;P5bj8;mMqi@C=#w{7;fl^-orQv? z)nDZfISivB%SqFW*TJi{6l$~zRi4!-V~0 zT8&oEF)C1K&d+y_8Vw@l>8qmIi?3IV^L7)C{!O}kiXU~ND z)-E1a>r%*q#)#E9VdSkL*Kmj0I%Meb^?Rtn*jsMAN_J5z@qD0#8W8Tc=S_w%S8d@r zBPJ(mXxf4a1s`Yh(0m~*0LcOgM+lF9vt&dXCgSv@g%Dtcbkak1RNR0za=clz946YL zS~^?~z=d9iv;+GG^t3A?AWQ)lOwF7@QMy@4WLF)lI74oYtW0rkd+J63y7B8kIZ6Jnox%@IO~=p{Z>qoYiJ8Xi(vV);VIr zoj17}o*1iKI(*DZ@LJDJ?%D!VQ`f37Ll^1B{=QCilQK9b6eJm;fjqHwE_ovU=WaMK zPKztHYFewY@Z^nSR!wPk<~530=42k|uH8FExseb}s3lHU#q zGh+xfo|;HarDjv}s4J+ui99D%D7vZ(OUj(#jD}(|M5aT|C@FH{f1=Sb(Y?fDf$R&3 zI-ZisCM_yx`bn;&xEq#?vX(Fi>RDi+!+6@Y09KDbA$f#|2qVcw#InS68xJm^7q_y* zC1Jg&-ICO^(L9`J(!*`QVl?LE@{LSG!$>RRp}98GMvcA^%4W&JZU_Nuw^$7d25>=T zdEpGGs8`Bu3u12PiF-|YjvbTBawPUoNpaR_3cS4gc;MFWqh}L5E zw*X>Bw}LT(muOxlH@et3oIQN17BY|-Z+*<+zCsRsP$?sNcM6v089k?m9Iey&p`W1@ z0H{nbTE<34I=K=Eior3h+M-p_7Ofo*Lq?;5+y9x9zWFmo_IWztf!BG`pLs5-qbr^O zYftFaJ@un(s^JB^98Vnv7%X-Lcs*vMQz!rWBlm+EKqesv92?Mp)QcC*H=!w_y>UPG z0lzNVeltyqhx+5o31I2*md_i>H*#9L1*aoQ5NDrcjH*cat&rzAZn;L2a zo&y$A8$=I+f1v(Iy+(b2DX~*P3p}6@)SO4+H{c{uYIptrcuoJ0-}AThkF$Y%{@>p3 z|I7NZqO!_KNlT^owA+DSKBRtY#?uE#4f0I%n@a)ee}583h3r3zaxM-Z(ICj#?|&`$ z$UyM?5J=|_o)j@t!~^^viuL^udC!1h!n|hfDIL?xcH>bJCKAK5lT?`CxC(7R5jYlQP7u;?Rahtr9ABn7*7(Yt+r5moC_C?%@am4X1t;QZ(#Qs84r zw~o#DUMBJsm$+**lI(v;d=I7_310#vUojxFgtAe_KrAZo?C1C41mZL%I4C#41__G3 zVI*=2(`TyC_^P(GmH61crV>3cy1i|4lXw7EE(eAud^PpCjo;MNr&}Libl+hxv}$~) za!orqt_3sNM>lP5BL^l@Ie+-lT`lBzYx+pX@`bxvJ60^bt?)VY`O<GX`IW7=F2%=|T}$Vz=xE)waCt}TZ3~J0)hP-RU*IMQb5Ss7jNPTms|=6Og@{5_Otqw7DxIo@Po|sFP3(z)Ctd5TccyDSfr1e1HRqXOZ>V50m<-o`z8E0{ z)0Dqbk5W1vNa-v6G!?1W07@o1MQQ3Ks6709ndHahv{f`tVuNBmSdck~`>#p8SR(Po zG^-TIR4^zWa4p5f7aySLM5q?rfEJ(y>>GnF@}%$q)Qp_$Ypb=PT84&fCg=_2 z`oSak*K0{wK(9X+JQB$1?gi!dEZVzwZ+dHgXyv^?anGWspME-Bg}MXPx?>v6F^K=j zSyvqZJ)v6Nli*r>>{Tdwb+sY1=t*6zw5Nh(6btct%W=Dhr~;~vNNY`Anjo8oXiVY7 zpx1|)A4=+xyw_+BdZY0Yzc=nByt>~TB%a4`ir8Ukzn3pX0G#UUTEu~y47+QV>))G! z4!o5H?4c`Poe9$yEj^h4kyrnW{twuOPkaXTp)Xy$WP+9|pqZ?_Z&JFI*M9Z~rqb?bp8TY*;_>(ax;htA?!^U2e~O!+v?D zn+j5S_)VHcKR;)!hJq-4BC-V{XrTRZOsN_(Cl=@NCgP{jeF!uW9kuxJ(8G-~cqi-# z+6vZR+;h$RaO>#yhwff+!GWjOLPg_Ha4WcRW9pvUFMYN8N@Yv&VkKgl=7AdYr!#lK z&~<%ZFI{|lPRXLO5jlGF>=Rv6(8EU;&&g^VqA+fG_`yw=-SbCZ1YESbv>qth`*|(C zALl+y&{+q(7Kk!fOTYeEm{8_m5JFMXNcn*{hZN#*C92O5AX|znxaOs6u6ZfFb^9EL zV@`XW$8%GgsneLXym=0Nc;EUB`}S>Ezi$Wn&p|Xy_3V~aPue~KmyDRAHWQ2iZN zlJSu8*PMLj@OCc8v$L(e)+6)EDqH9e*6+jRA9-ZM)96R^r;U%?v}_XCds`6%JD&nF z^dIUB-cg3%r-5qEAOR5ZDJ5}(qWN+HS2}T85LVUCcm$)F@5IyO?SuXDWvNXFbNJ4Z zp2drMkZxIL=@eT@LFG!DHCEMWHg?i|(wBJ9c>UBlwDrxZ(fcKjgx&YV@}B zfqvTdm#tf8%-l+6_bgsAqGK`o%kHJ+MMfjON99VZmxUKfAM@rRlU80myYI-2JC3}5 z19}DoSAaKgJnEUTb?aZYZ6#>qr^a&Mu%{?B?w9$PPaYUi1=0e5ql00AXeF{_*NNA#d0pv5uCWPB)tl)?Eku*>*jMse zxepG{+kbt{1w|g3c}5R;nSaF9T2TpY=sDpZ#*T=!*k5EV zf;-U)}HvI*<+2yAhp1lVw1oQUl%x3zL8g%tjDlo(2WT4TUXG@?L z(2c?2exuK9Rv74^V8L@=k3v@&$4pJuF0p0UVpMWy+K-o9N>cpjDoxZ9dqMS-i%j_gQ?Av$xGCd>eoug(=Tz1kXgsbtDr2gnZPEg0s5X2FEKrkg?W@? z;`>nnGEm+9SbszaMBJw($(s!vC4a(1iBLMS$3k`#1&V+T_1XdofTH%00JeWD9$z5G z6oG|L2_gFnU^_m347PWbg!EfOHoxB%+NuxX)awThDM3KEKnPtZ9tO=dCMuU|6m?-T zph?m!pE1KuByp^FP;8bME8y6GC{G;7&4}*#z+lz1+3r7~OK!<=nAxl?3qRZ=Xar}s z|7-Nun|BoXZM=K+Mqqi}sq?XU6=g+4v;_FB)D>4JsW<$DN9)D zljj;;GRJJCUm>yWOWre)v?)2n8IFBY$$5Km-`@kRV*k*XsRl(o5taR>(CP4N%L?AV;ZE%XBg|P$)UMMk$w{{K{yA8mQMp&3L;V%H$S{Tn6k1Z8oI> znoLlkoMN#+mD*%dtGe;EhLanOa!vy_q7O_a1+RmcU()f4DT1Js;Sj!-DW~B$qku2e zGPw#|@uF6%#VmnFqcv)$Ycx8u4yaT>XV$){G1v`&<5W-~SIT$|WM=KYxbI(TgL6#x zbHJ^SmtDO3p6{Siq0uPP|M^a#E;#~QbuyNf>A3XM;7g$3m2zGU7Npk8uydfyF5cj>w^gTEsSF6){_yvOBD6|^oHvlO$8aFb2rPS$^UxBYwIvtXIsx}zZ zOD=|MX|0@RWrp+(7vBpFYI?Ip;X^<7ns-zE_ym;b!`LArkWy4uAc?0MBB8GW=3l;I zL~v^9vLpco@DA9u;t;wWb)(x4tpK}z<@x~V0n-lkUmv2Wv7;Z5^f4Y7-S@zt3y?GD zg2}EJDl57lE)oP{31S~3poEXEalE_gqCe{KrYSp+pB0_}EeTQgkb3ug3vcklv3OwWK;n zu5<|V({BPRP#L_P6Fl1Uy;BYq{f#q^-WyL^03)eO8GrQ^m{cFtON1XCJ&Q0+`WxyE zdQopLDUw=5iV)Z5F_zOFCfjLk)xl0T>hKZF*?;>7T_bq z@83(_A1JzjLVlj_pQMHn{G{LXX4S-Y6cFuqVqq$puXxQoE&442MAe;`FJdYe6AFTq zmn4RN{o{Ab?8=yumOb{EjK%@G>_ZKHS&inyv*XcnwH96p&FY%W`8Tx)zC#G#>4zWi z9YXj{AYZ_L=*ZdeX%63!Cbw4LK;NHm0P{TIQ#;wCxV?ymE+&sSC^_~~V6Mk(C$v*C zG~jU^4+5f+G+5ln9-VnX-Cyr2?C5mX&7HBddz=F}?BiFh9&!KjZFe2s|Hw1tyse?4 z&fqDJ#%urYu4?$giDKIx>z?`X#U;_w1A7qnZISBR(oH6gFXM>nV(Hk>P z#Ry9xvCw~m6VW5+(Leo(j^WS`=#h4y!;9CqSApT_dzn}NgdPRz^u2V<*Y~O^&(!y- z&qv2_07rm@=pr!tgTTg(eeZ(p`#-q!vBw^p`~jGaE<)dI1Te54Y)3cerr*!Dq~BMo zq0f>Hec2Z1!<78{mVUfe{37g1+%LyTeNvR#`MtSN+~F7i@F05k2Al{)=9y?K^y7uQ z*;q!3$M@@i`F)aCE!n~=zPgXm(kGh%WFPqIqDiWIE}q&x421XX2G+a5iC2EN_KMlM z8dXDkvb{Z?H?pp-W#r zd(o4LaPHE(%5OP%C;IAc&WgTWy=}U&MN`+1h&Sdmc6K)AT(e@;whI>2*2l_*ND*7l zv_FurH;GkElJFmA8Vv-p@T){ENstVcB*UDJ%ECuqm^Wl4MBlQk1y8`d*$7`cSM?wE zqAh!#?R=o~*^}Qr>vTTb1?$0DDdMG!t5|x*vt3=!Iyve*n!=hcQV16%1@@pV>1V_U z5c-EySoZ85>2{*LCW|}9zD-adz-a|115xIu2tGkpH4*uT<7URd9lPRF)Qfsh@26Kh z3px(Hhu+KhwVj3Dd+!kFcowD}B8gXg3ThvE6DM3uKYnQZL&wG&-lfTBi#;wGOpLk)5BTQO^kvHwqwZGTzza z4bzNygwr`YuTu~_K4YPG!pLT`sj|h&WaSiRYt$NE5y>A>+?ZSB6af7`y6DsawExRX z;EtnUH69_d*sK*d-MG6s8rFIAy4dC=Gu$p)vDeOVOZ825N72G8&*P64EcSVW&3gS( z%}|%C^wtBl`5vQJuZyo;v3AkyQB``qns)i>qaCfY=4@(4X*A=L8;*lciS7~mnhNu| z5vqflOf8^RQCCnm6Mq|_0P&oF|6`_($H$N^Y2kRHc1^4p`FJ83P9!Y}nkR-_98uk| z;4YX9g^AWS>6RoFAEWpN_%?W=%w!8E0+bFPCEZJ0AW4ddrASwx1{uRJl5xx#YVh>D z!|3*T<*vNC8{XB|r9T{Hc9czTw8 zsidf@>_CI(GmYkRZ~cLa@kMzH@`}b+9H>V*b)_VG$X_-ObThhXWe)SGfWK34mzm4_ zA@Y#Yy4OKBP+#^DdLHdY&wq5;Wgme`&;=?#+IOA-GOM0@?Ll90wCs0zV^vV^tSs^F z2e<6^mXYV=6mopt{$ky=KZcL3MY2tjLqqo)P7fk;X8%mJ43@=?UTf)$!&Kv z8opI1zBM%7)doZLP&qc|{?eRM?}M+U_n=w(y(N{-*%vOF;VdonhP*i8{+zK&h#!sD zPExbW2GE4XmG-fr+K+wK9|0lsSE&G zhq*U{r!-WH{!%owINDSUXAIsF`>4LA7Th>ybXP36&gEJ%HabU3>l@=%Iyfu8!LK{m zP^)1*);yW^q7hc799`f@g3SdMOA%Tbm9H{&{sUgzX|#F@FQx%J8cbA#tni&cG7${K z6Qj<;c;%=@JP#cdF|c)_408dsf_U}t`-p!9nyg49Kt_h>NnJ!{VNE)(PgG5g6XqeF z*~hm;fuCsAhhs$5K4=nAt>XGv+$SRT6L@}{5;GB3VR~am^IKZ~;HZ0Ve{g3-WyRXH zD}XwXtJ}Ud63%ZPJGMC=-8f|RMRkug)C`^a%+=kU)4*fzGtB!8oZLLSx-06ELEg%l zLfzayxjou4&6sgj>2HUZm3NG&C^yfTGn1ZF)p^}z;MJE@irnlC`z*3h*pqEBx${Sr zp~JSa`K|X>GTCD;bTZcaM_zTHu=lxb8;MB@u@D!rVMN$TqP;5t z3lSl+2!2cyD=-m4w=Nk`8LN)}ln)#x77r7RDb&;$scP0O?g9VWg?_lbw!vg!*?=il zcEKa5wzkwG&*D>wLLJIh)K1>@x8=73HDl~q>~9!>wj!(93mwMwKm760O_g24{5c(q z3-G}H_bv?^#7}0_nd10#!IC+~h*2Y~*|y?uyC&_z>!2aC4icp1jG}CkK#LH|ZO%iq z*2y>qrVLd@P$>O8f!DN1XiXWHGNPg_?roA|86r;?fnvy3h15uK9ni?kYM|E~Sa;Qd zOD-wytc?0RMiodJXr_H!I3PFaO-dcWL{>$Maa2+U8MgLc@ueecwK7euEPHRKzj68K zI-^HfVPq5#7OhmXjLguI4H$;Dz;^_%v0P`aR$T>hE9;Y{MEUTh=^f?ls0K}m3a~6# z^4A5qOSHx;lLrFkmLbMqK@MZ(E-;t{7BT?jM`*1*5sZXg&o-A7m_}|9F=S5@?Sr?v;rXKh4l<-ah=ViCCj$gkgdoci?G=jzI;RsU zRWodiX6M$|=VsHkSj3T^?})^{Dwbm4gC$`S6D~nNdcyakkM6ekz4oGNN2feJ6uti( zXn)}$P<8|^yyD{IpLaBp40i+P{dWTA9!Aj_jYYySG}W1x?{Mblfp5-^c!0SD{k&^< zD@`jHJ>2ll%fNF#aNfP;^K{L{Z;pHP!r<2Lf&2TdTYr%7OSn_GY1|oK!y?Zbq$P-? zIOZ7$a+Zkgz-E0PEanLj6Hyk zS{UAI1d|zm-}JjQ*%5*6m7m5-IK}>iInk^$o(lS(nt3J=04oQBpPT*;y=8D|tQhxOEdnaar4tgr`oqqb;=zvLl`tyI%WQUD(ujzz_&Fy>P3b>)~pJ&WFCE}bw z=nwqmBwjXV&ZzE-8vXdIn)&{jNQ4U(KQ4QwLtDvwpQBbELLcpV5WRFE4`f#;v^u`! zjTLjAzH;QqE1#Y-ZGY1h#2q!NwTB{M_on$kxPBLK9!j6+SKd1&DxuL%^cRB7b=?+) zO?IUmDyGiC#Si1VG}mA04o8SCA@R(;apuC+hi*ax+I-#p`fI24R~&?|&_JC?hwBQ! z8P;T*P@hCuizN80J>a^tHV#<|Cl1bp9zSPquo^$>S^TU^Fg=;kJ`-n2JcE#JIuVS} zL>nz`I>Xfs&Jo7#Mv#X=zuPA~!bI+kXq}q`vbENnUp7(Hm-a~m- zyDzU?=LJ9=OivD}0SM}9qY<06@IXQC134C(Cp)3_66{M>rjcta3j$Va!GVID`*UnI zUv8<^j|4 zwr(>kINUOgVg=J+Kolh4yqQ0<|Q!q|3Ezjur>(EA9Y226LJ$QX*aB=ri>nrJHf8)|$`%ONm}gH`lQZ~M zRan02;%&QEF3%1IL_UJ_DQb}45u!odKs94($K;I%&(Re2#s!l;D7x3m;JWqn^&C6KQR%E>rz7dq=`gH4cC4?5NJs~P$b|sDhEyumhkwi&DTo?; zmB}XUZ)bed6Kx9OJp{KQ!P&zzIbKJDq;qEBcsx6?m=j_XOz$O6J%xUJ3Zk1Pt;fMj z)=vU+Ac1=$L39&@V9q2+kt|PLqB8FvOOnR!H>;##IAq09%r;>&3Ne?e3g*;t~h^&GpZ}%uDXQnQX)a4 z8Q~CPk!`{5JcZGwR^}Ld8%NvdCkp=ECB zSJ)L@ig%S(WtT!BcgQEovkV#$_@rC&dxO(}|L>egvMO*kyFyOi5;ZFFb}z6MDcH#9 zjXovVTku08zG3a1k6qLM4B#fXuM=top%LU|3gSCEz7dadG3F`p-aVN|84N@EpO0&l z!6hJV%TPx00=#R_W?Di2CDsAJ7W6Nc|s19a)gcz z=)e#1E{c|%FLry#v2mj#l>Q%zfGgFCIS|ZLsP!dn!`jP(!SeQDZ6#>j=^Uf+E%A*9 z_Wd%r2u4wRr!0d5HZU&<1ks3W^z}!GTM1DM7=U(T2STtnWDnU9o{)d$t?)AfZ!2Bm znf!NFzV9f3Is#b)?6*I}^rmroT3jk1MbEXQYhiC+3S|}ryhu6wWL<@KH+>I&@pdF8bd20*r?%4sZ4b5u}qD5bT z>q7IGiqPB;T7>fyt`)N!056a{*9BYWM(CLzLmCM;1mtY-13H%QiZNm|_Y&-hCaMCS``V9BfjCVettrsr;WWCQ*Weq7%* zVZ(+AUF-i*JL2T;MpfiaY@QgK;2Z-R9UNo#^9$J;OJk@x)>75_;;NIQ=ht66XZTnK z$hd z;bTK*%^I3+)jCQ@o6W%M;jYX+Ey0t(Jxg>arWcaL2H%tfdf?^B_Nzdru7jTIu1lXB z3!08%qIo!a^5{{tuyycqRH;?-x|8%#h<(Ki!-+ z+G3;2`1@l)yXJvH4XgJTf#oj`mpRj2Y(;q~x>V-K2JPh$IURzx(k?A}vB3%~1sb;- zw62TFox!3V+|do_U3HdBJ|#zMQUF{)qrYhst^1k;rCbsED5(vPhdx`h?a@Zq?lSn~ zx#(cxEu+Sy0H$_R)Re0S;d%#eh9hSg_2c1Kzaw|DR^d0K|MZuzQPHNAK}?VoM!?KH z^_-x$yjLdL_e=XYsWWUJ9F!l^t;A;y{(2&nrx#%!<7fN`4J!%>y?P^m2Bd>G&QOT# z+;(=F=wIn}WUP^8c)Ox@9xSdJRlj~9P^wREop zB+S&F?Dcv=%sVGVT~($wg^T7;YW^(|Z^47-wvm`F%Zyr+G3mq1O2&#NN%Z|hATSaC z%I_o2h(+=nuPtJ{fGHRp&ftQbj%SRK?dv+%&4FzjHfUS!hf(*1n<|)Na_4UTAyu2*q z+9>|pVNfgD$B%DUs0}-SPBwRXUUhZe4ueXuW&8Fm3Kfpj%5S^lj@#rUINcBM^XYS^7tX*UbLW6|xK2_mDX} zoLOrXlmXA+5yDkjD8UQq5N7^39@2@VK`@XQIndF>zfDNeJurX+UI8e&QT>K*RR$w{ zPjTCbha=39e|!mY{irG%QOul~4d`9lNJh|s*(N``lsCbOk=;ilW* z)x~+m1x*Pp=uOp`fBe1w4OV+gs;%U>*qvnf2z|kAaz&ORxe|mE>JgJr>x8BiE(GDm z^m@2S=U6^v)=*2pTyx724Zo)DQ2pGapGIr6pLG8N!pYP;uXLY3rAzgL`fm=<>HHYEKoAA zsUL`1{ERdg#rwHnjO=9jc**-QzH3P= z>H^})WQh?drhYcN2H+=$NP;CPNq$8+I%Y>n{S%^)mv~F|+V z`YHG>=1gK(GAR=8d-g-mD3D3)Pvd=lBJv^90HY|JOcKU8Nj6tQVbV^abMSqprf#17 z^yMQ*UVd=S&8f{(rry1N(!>oLCQh2XY3h{Cshj5?h4;!C*EU1aNO9+XOB%WBNugoUjBemcV61XOiS2GIzj0u@D3&4!T{o zEUm_4)wk>2uy}@EJ2s(|?={@9jYaOm|*yYq*Vo|wV zB%5r5%cU(1hn+6XaH25`2}KGSnt|j>tRboO?7;(w*)s+=)oju%W9EY@P&sNkI)dJq zJ{{zN{5A8@bLhEwB*&cDI7i=6n${cDYNJ-IMrDvzuz<9Jn#~JYZ3e+QF3TeYYylfN zxd0>90!r;elx|5Ka3#jzG^^F9yKGn>FpT^f8+67s4iiarrhs<799_omCC2A*;%&yQ=?ItNW9$YFyoH%&yEf z(&USg7J*_d$RGLUP}HRc%*TVL0?9wUI2S1JY(OM`_0%|O8Z{5k1na0Psar%ZhXfH; zbogx)11vFw*Y`VzXES@qiPJ+$bQCIKT#KVh+)K_V`o#MO1<-4N3bNkQ^g>YdL@y-C z=*#>-Ow_z0kBgtPYY55$u1dYW${FCktrd(lKaZL*V(Qe^{7QFS9jMJtx=ap}%j(N6 z%c~3&1Z9HLTx7|~YmU_db1=KOrlue_6p6IXp4FPe{8V=bdLG@6j0kaFd#G>kydCrA z?EvuF=B^3N+YUdmV(HQqPk_rh=C)OrUQj0o-uC2iS+c!7$sbR)!=GYa`@0U0x@6{( z*2!pJC^iAKe-_CzDhwK($&nXKM*P`2HK#Hg9eI)3s_gb)U9_kn)NY))eP;S`sEv%@ zzVYg!5PY6Ibe;^1J$4K|ATRAIZ7oCluGS4NEJ6D&fq|2%(&58PnSbLWA;%2^-wtAm zT!Z;gC#J_km>V5IO{5M{AL1FD1#%DoHDDS=39&FplF1m)Ye7rgQbMNRXiz!<>BPpu z#Hl;)51ag9KkpatDi^aPfl`z9C zEXEBJ{gHaVDNO#0Qz2P<#VdY*#}yOs&uhY;oBVju1__tNJ&i0B5>9%ORNBb#Zs5Wk zKIs~yDp7HZPK+x_6wqR%g-C@4Rg)mNNgbFV-W5ow(k8NpZ%(*D(!}+rapHbNCe00K zeSdTK;w3oN7t$~y_C-=`o%o6g`LM3F>F#aYK-Ki8Bcn%U18+{}$XxUVIf9obMMzCS`qLU7yG}l)~;LUwFPs7ws>UY@<92B8z!yZ zV!zZjY~v+0e2&(m(sPc0YtjW5PG3TgU68(X#E9Z#V)#WzE4@P^t}5`ot1`5p5PkOs z{;RA6T67A4C!R>ZVRReSJOmTFx`1}VguYUsEyLx~uYa5zF(L_fS5*}h6c$bgnz0s@ z3c#wW@^Y{`5C56*-vt-s#bF+n|RIwKorwVt#@WX)5!rB)Xemk z+tez+DuZqkX=FH9kG_BT<;u!SuB^bbt3vM*LXkJ|*Q5>}B;!*#Fg}%->+<7qIf}Z7 zx`eue`aN}k`fJ7;RYp#PyR@Gt905Um7#uHxj_@=`Fh__!o48BH3JEcKko7h`;~bQj zT?@h@R0-+57AYYKe)FA-QVAhmBIf5sxRWF?4VNltK6@U9pT~kOe>CU}(t6CS>Y>tL zwp+o}Silt^u_u1lUfmKQSP|K*Rs9U9V7%!-V`epqIaTONV-ORGfXArpwEgKS--DCnJ z{c$ZF%a~D03SF$Y0OQG5A0xPug1CZ9 za5>AsV;6DJ*w0_pHwLmo<@JV!&h~<$x`wc)$kpjF4DB9S6vNC`_eMj3zB(_|l2w?c z$^lns)meoK#pWIMQeEMW9q^+3NONsmwq-{kYgDWXJ$BmX6?HbXS!4Gu$_j;>%ImBei_T*+EY1#Q1OLLyOiN_5 z|2{h4RxanGFW9c4v)rX98$>guk#zOK5EWQt!^^-K=Hb>IEIfBYcRU0q#WT~%H6)KgDA z&*v!(w=9nI4`s|u)$4Or@N};a$1*CsCjMT+&~Z+Xm2_s(Ktvww;e7>kER$IVm zL1PON|5PO$aU&5IKHD(@!hz@X zzS@Rj&)?2U3u_9ctIr0&{rC<%iS9jDFm%qoy>lM3*Z0$Cs%A>U@?_c76H+K|#0h?7 zPs<#?`^5KK_XFOlHxT`LgI>380+@>vi1uvV^)O*RVmOfsbrs$(12NZ(8qig{ki*S} zbi{h#7c0hzRjG>pi=ChOK7~ec&u{Z@9;{)($XpO z{3wFLV#U`z4>Xg}z1;D}|Fq&=7{`31Yo9AbG>3@qLP|olBHGh0T>}Rm8V-rT$NdV5 z1H>8k0TB}AIH|S}Z;H;Z?*>E3E?& zVo=+Bo+z87iIgoS`qfdi$x_i1r`d#OOp+FNY7OH^qje=TlE7(DJjEVxD zrWDVe+<2rO77V#{TeU=T)`*Vt$iEH^Uwq6 za$FPsv(pNTw2u@(`HYT@)Q=za&j%X7ad>s!s^WPMPHtMY@ipzjlT-W<1RTEdh8IsA z0`h}{!umo40HYB`5^e3#(8=m);hY z>p6)`k1=V8O^`ti$bLTY2*P{x#4BcO)1LUdkO2=cN-EAw{B)LF{;u32pB+8s3cPuZ z2}fLT+-xy!)+ZA>UxDG)Xsd)dgZ?$)lUX?OT{%q~2?OTM08LBdW_>!bJxtTK#`MS# z-G}TG^U)zNaalVEQpXJ@#z{17i7s-egp-V@oSlPyvvKmuHBXL*Yx;FQ=h<8bIP~Km zZ#~=GSEwi~QTI_Ll?|COOTtX3ENzHxy>;BPYa^rJfMCZ@L+6 z%+d8aH0p-b|wx zIk7Z3-kS6jlPQCwx$zNt7eCWf6DEEU#Q))%rVeIsVW3)XO|$CVW8u$UM98L&H90Za zq|)eD+8=GQxj9}xWgIUUQuv^nVWL+^<6=AGwRe#N{8qRcy(?!ZmakLRt3 zQ=uqx2z@>W-p?|a!1XFyYP@V@${-_+3^xxQVZ`{3Oc}Ji0^`xFjBdsQJ+d6UEBTRmN7eDn>}X7%rSlYW%ji+-afL~U0OS)VMw8ZeQe?I`aF^JTn?=G1#ZBz5E;JL{)nf>jl=A3@BD>d2$4{)qGQ<0p*Pt7+1V|lN+U<}=}C%T88 zg1Gp~X~L|uN5msBP~=-Y@tLUNDo@(TY!qpKs0+H74s*eO6P)_}e{-g1$T*mv9@GMZ zeu78t80fEA4K-Wge$C)hOJ^USyWBXb@3^80Px4myd2fRUHnztrVu<>g-kx{U ziD2JBRG0(@zSL#QmVyRXvTC;rX*5zRRtQYQhhs7#~<{tCuAsEK9dNAp*GO_rZ4bYKAlMOxfU;GiO?wA3yq> zt_Umwc4VJA+sN~0TKX5CQp-(hqf>Wk!Wke1{n1r)C%QVKvJBm)bG%~iJpL@Y3WR4D zPrse2R)Prlb^XVpVx+?W6yv5p3nG>Fj?^>g%9)-2s4v|EA}urb{tigbB%)4pfl84A zxJm0<&H$P(&S~YTdfHv!j*zW+D{9K_X;&@Ko|8rJ^qA}Rll5^h zDpo@Gf?+Q|!p`gQt+WMX=aZO=nf3AgVNTq;O&QEP&7E`1PJS@&wsCHo`>$3*G-9w? z4KQK=CrRQcgAb9UnX=O$8H@(Wr)9IvK+$9W7bbv+IVHu6A~vrVF37N2Gpx~Z(PNQ7 zb#)*j9^tsAh2YiU%lh|UHXQYxLFa`nxbI!T^MaRP3ozo4r{4~*p+y`kzk{GaQ8NOE zxRK>Bab#x{m4Y;`q?`{7ZE-|kK17< zAoBDJ68|11&S58D?%!^+_Pgae!;d;-;zg~(04R|7wm6u z{%j+NZ2W99$|Kh}5@?!^&;YvwX=s}7nvQftNQlSF@{ON?s?HtwDV>TH7xB!ICbmhm z0pWVsfRs=T9_D)OSYE`c7UF=_I4*wcW>>C2m!b~67sFe>j-yFUPJAQLYQ=|SWGV}6 ztgu=u)(6UrAM zpIS_EAqUhRC@Ux^3$&X|Uy!&jy3WfE1j@<+Xok`Fo6ItJsQc+HJ$)BKJT((7LPs)i zkpHq9>4S6IkCvP^&pv$A> z1wSzBb0O|EtlJ}l0aowS1ECa9cXSG14oVq|;XIpUc!_l+CTUQUwm^#(X)We7?j=JK zd%=*DY!~v&355=eNv|fY(yvSLMOm1U1sMv0N+-hd0wf3 z$IL$%c;sF08egI?)HEV7aCY)q`Qu&L$p=Mq4>NN_K_On}=RHdYl8&M{M_i zKA(KToqtinF4shNUqpYz-!mh6>lW}uW<79y+rk2q^aEasszI=`^(g+w73Zzb_&sDF zSvQP_>x`)!x>qJM;L~GLsX0w&Fc=(((gZMqOEt)3U>culz-d4O;6S<>%#}+M9Y*}m zktj((2Y|z*RG~9mYUg<{1s&F~R!%18(SFHmVBE`62wKmb({zlI@D(Fw135Y$Mmww^ zh#uzDIQ3}>4_1_evIjqU;k1+u00=b7(?F>}uO9+^zy4T?t_*n{CbWH;gww zWw?J)-Csh<^`e&_x0D$rf3OX}uMQme3PAKf>nG#>tc4hyJi<|HqFX zS-kq4rSBX&`3AS5Ls~R$&z^Bb+?BO+=5#z*RK`Y!Z{I$=lg-L@&YPFUZsqPiSl(IZ z_sy8gi+uDkJU5T)vbPxjzn4SbaNP~C+5>5Y(iR)wFWU?g3^sZ|pV#Cpwq{V!w|dj5z@qMkoMaKZk~kKFegLqBuZO!Qfd!cBgzIEO{SZ)`9qs-ro( z^yz@aEn@wf%>Iy9LWI{6rt?Zv%HP|54(^3V+s}=3#s8J6XRA~3&qmL))FWoAXRpA& zm9cYY*91^B|2Ra36%h$=nyHSp_SBa&u1Hzd$n{f7>bEL*{jB*qa&W z#oWjeMq|=_ZHEuHvFLEyefPD2w$hv{ALNvl=77ht!|?lXHh3(j6l@{)4wHmUiw<*z z?Psz}OSAb3a{Se=@G-`RW?=et37^Me>cz+5j)d<0c`9fo_<)?~C4%V*krdM$2#A{; zaaDHlfgryRaC_eU@NoTsRf}iMT)bj`-GSe}ec!YX>Uq0WsxtPUj(%Lb@zc#9`NE2e zhj(t=bZqR5jq4`aW@-(o+CSdccW$vysx~I|dwk-Hh$~{Bee0E7hu#T|U(vF0#rV+E z_Z)hzx|mDR8&!#chIvcg-*g^m#%z7)_|`GEPM;KU*$lejhWp-jWxI@Oee!^+j5 zb&QuK{>OycUgGybh$tAeEaqUUHMSc7_vA3z? zYV_0tni-gUA@JYUnP=Pu`rY`oyD^ig2MmG6W}>_Q>ssq~0T;P}{kI0X*hdvGCo4}1kCL@RH9 z3$>#*Hi~0j=zJNTcnf_C7lN^<4Yh+?Ktu&Konc*HU1wMWRUo2sa1jT~L}$W#Iy+g8 z`rGLIE4+sWKx77Dbh+A2#$ezWZLSV7#EuhJQuqeXMODn*nA2x?B9<3C6pH%aA3~yW z?9U!tJrikJvTd&Q6E~wq0s%^VG_cz4)W7sfV07^TGR+8j{E;JL>*{ntU0odx|LlPz z`giy1+H-oO3css0*iJ{pZJ@|$n?d`ozGqJV_H`f(h=~uv{YA`B|8u{8b9W`VTU)Ew z*M@-$^tBYr`+_WD9F8vbl^0vktLRTUe6#l7X2MxS$j$ipXr#Q~{k7~M7Y*pSCh2(3tL2|kO-M?qQu1#&eBe!<4VaAPBB zh)5$~Ae4`;oGe&{$(5t!R8Lod|JVdxsnF`o%5<+@u2du_lybc{U1`>76-qvVRnS!6 z{#`3O_pRI|OYx2jjD6n(Uw&6RFx{SQo7aDyE!&)$0a$_l9JM#NgS6T7;vP669iV)d35C+cdRU4eEWjQ zmdoLAf+3@@D6?cormLjHmARuNv#2m*7(SMoJxV3!zt=+MMlpQPqsk>Q)BW~V@=x&C9Do9En#QHP;&u|9b^ zx%unn4Lk07RnJ2$)K%o#ocq-T1|+`$hsU)(ZOP<(b|;cJ8D)_k@; z*%OzHC+94{q%PT)Vv6M0%r@)n#d`c&i~D40vgJ~=W9PzDdn#Vh5yAVJ>&5Lc|3-X- zZ^Jz92r?5o3@T{%LJ?2HM3ih)oM7XKCv*y|K}{H0QC8Jca-vzoDN>y_gTa=bn!u?N&B=0{6V5Ne z863fmK*XU~MBI-czd&_0I4=6cf?YmqlBxETgFyI+7?vIf{{G28^yQ*An*g5k2r#Wg zP~aJX>?Sy37?IFi!V&>G1M+z}$3}PR3UtvOyap^XIr+-7k~EVsO|q*{2R$>bmfDwO#vy5Q>BQX}@>I`#P+|+%+b1OTh78lZkZu5*K@14TFP4qb z@U0d%eF0j(X57Jxf4g{a96l|5^Iot9bx>jD%y`kzRUUtBB&sb*(7JoyTq>p}53K=f zXg2MU?z(j8qHu&Z7mK!YIwNjE;6Or!~ojIqTQYF(hkFcUMB0OI zfh@DCyb|eD9gRJ|7VNSuolDR|{+qgyZx`|iU68}ZUefmXWDx2?Dh}FvHv<35jetM$ znu6&vi#$&bWV092JD3RB$<2*(M#pZ9EjkQ#9sVy{iFAY44+j>?fizp1EN^bwMEiWa zTyrPJZcHs)v*w0YB(fh!^qu%9Q^=Gs)l4njnK41h%}9siXNU;tA$Zm_F?f>nNHnaE zG9+#~@d7Q8$!UQPhw=PL*%Ap#SohC;JtziZt|K>E;5mQckw-3^2cFK|n00Awo_XNF z%w{^X!mGD0Uw%6bKTB%yEWN@0;~@I>l%^Lcx{)AV06BVNbF)#8{t$g*1DLmA1KNXr zDmwP(wug$uCdUjpryemvjXFV$HWWS7_UB_ogl_}aBm(Jgl}rsYk(qb1K8M+72_s0- zJzh2>PMxkUJVCmbtYoxL}{=9kFpKhW3r)Ro;X;1BP(Z_S~*hug69u6CqFmxH?Ox zA2=|5>9cH+*!k#X?{SLT?l-72Ic@cD^^Jp7`z%Pi|9PNJNn1Ucj>f;nx*=Fdx?j;l zp!K1m&aSS9!VeYo(jDqYk>h*LnL?Mcq|kfz40UTv{_H$@ahpu$#YAY^@ZR(3@RMTv z$&3GfUVVR?+=3IzwvXsNzYaes#-F_SGxIFG#?g7Ui28FhF-8OA=(esd7z%WMWI+UV z5~~rfXLq-NvHHNsCEz)Q-aoPN)2#|ZS?K2Hk?~?7-oR_YH^lmk7jInct_{075k33S zL+Ee2^y*z-Y&r;Zr!?YcJ2qZ?=5@XPbupvy$LNiYNbh+FujqsbwWG6;#lMX(U#~|W%93R{a{069!x)YKnKAGL_!%GYe4=T@vLZQgS9 z+_|WO#PJcIv;BnA2kXAvQ&K40;y5JlYno?kMao5(%R=1pdb>?B9IpMBdc5-ILrWAR)!e+|!xl}TB z)>y$ltERZ3VQe@wu{1wf`KQOvp&yb`l58fZ_K(Oiv5(Aq@y=NV8_|)*XHKje7B2Mc z&YGH4Tjk^Bhf>FX4#wKbX4UN)SyJ9!Qd;L5J!|Rg+(%zR(buwT^Ri^tv8=jw?)EbYC1n*8ym5v@L``lF#gqT=;D~FFPzUG6xG;(L$5${!Bb9i@ zn}lBel%Vs&Flbcj^-6R^uWVK7(GhY18tFyUKC}QZ6*GxwNHE%imD7v$h7or^arX#= zzNP+?f}t=H1NcYx-T1VaZ?v^w=(oN*RtBaooi=GehPD|0(>4w*i0ecP|DyHtGoyRd zkMu+}5YaM3EWkiPDIH=2ZI#M&$dU9{UZ8LbJu7Om(`r)YtGk|0UX{tV$doGC)vGd< z5(i1(x|pc(Ntdh6Xzo?v17OGjgWj5AwYa+K8~xe%keuUe&*Bzqk} zR}Z~d9b=*Ni?T|ho__2T#=D-QOOpmL5~rbO;WkLq__##}V+eROLmFXSLQ=^lb=K zq3P%#{y!a5h0wRHt$+aoz$!2RG4noy0~XiTyKu>{T;u#sL_}@+DsbF#ou&bzU({d#0lq&Y5nsXJ0t6# z;oneaWT@ZZpIOgFHa_3pN_{qgw+Xyc7v5ZtcV~&xh?~D3_IN+@i)Hz<=(98&ZDWz> z(lku0P;Oc*(bX$>nG`G9^CG@ia|fnF%c%bqE5*Fg(g`Bw&YK8HOlBD*KIA615tXYfLfdRW@*q4MS7(Z`@pKo*4~-NzrTBXcef?I#mfUh2zF`%uRAizmn&g zxg`dx`WnN|>^uzQu(IRNNvX=q?B{Ifi-X`QsJ2Sb_plefy83#2b%*wPO!ao=IwW=O zgsAj(ij!vIiL{$|V)nQtAsVJm%_L$PqJR)I0e_kh1K07ywlfRdc&R0nKpOxi%sZRJ z961+tQcbYi$>Jh*ED+bX=0I%PBYUBkjU!WC2_WJhPeI5Vdk(Mq3^vwG0G8YW#aQxk zo^%4U6!Mp_#JbBYid2DMBwDDr#3Yfw1lZ^uih}Ai2to0kMuOUh3uq1k138kKkwuc| zMG-HP(mW=!57(ZjiWY9_JIjn4CZE`qktaf!^9V@Hw4H23b{ldtG5-mH0@f`ABqlN5 z&EuaZAaROrOk5J`;Torx2)F>8Ihc-{qo4#710#Ji#SHYQq)v%P#S%0ej~GK1{3bR? zkOkc;U=}|QRoEp@VJ5*u;ijCpOlFR{sF%=ZoJOCER7(g3M7TWS0}^M&2SsdHgIG-P zvDB?g3P4bsj4M?jxb;Z^0PB)XrXuB-w45QE^D=VV7b{1LK`(qA^l>Jq1>FT!zG*~F zQ&Zd2f38kmc-yj(@O!CV0OKOTyarQrWb}9DG5MpP2awlGB}uAeL8h>#*pz0g)1osd zgg}ErCQ}cGX>Kd8^r~1W?;}^M%@v?zk=1ULYKEBmvMl5TJ~=0#o|ervqN#AOvh*bCnKH9M*;X2PLYsicA^cG}%ht>P~|rR5EEoLqIM7gU;f# znpF-eZi4?g(igTdKzfFMsx2H$N;CJ{SEd}BEHT4WSwgm44RMtdo!J48b zr`-YNun(Vr^Wj;XW1`fpwU=h}2~^5pexe$8B5Q)os?jNBa;wcKWgkmPvQKl}nxf~H zWp3=Nw5wF%=^C{hG_PhWHsw#VC#C2(eafv{Q&oL8W=hnWX=U27)eAY?mbc7hJ?`y# zogg)A=nvtBV@sAEJGOKQa^sGeybKR21v_}ab6i6MZg#_{T3!v$^;@1KmFP5kQs8>C za{H^H{Fm=h8X-$Se4qfvX5t|!Rp#?j2~S*G0+~UpSFjLhi%MluuTq(kj+-UgqS6dn zrbr0P4F+l;?0>nma8Yr=mdTt9NT5z{Rwxy91JceLjl1)mCYCi?`$s@-u-xqc!-nGi zlW5R!JSROnvER1f+(3e2d8I~`kBeU;@(crHfPaB<=KZKY?_OF8z=qq^@3V1)Bnc(F z7oXC-0{=tfmdTU1M4KmXX>8mQ9a}Va^XFxl$=AXf-pFcynQTdnzJ`j=f--^*+psV7?vC^L~yl z7KJWx0#Uw!c1{eE4N*8Jr*L@2c1H1ebUnM2`B)ypn!y;^KV3Y zUaZmBH5zd1oN8wZUE-%WM~arsaZ~AcY4nEYHqi40bom0?=(co5;(+RWYs)9-t?Sxzhr!@$<+z;#84Huf$fu>W6_hs8_V|38%nVvh9xtUR!*JZ3yc*LSe2ZM-n+X&A9g4IhzDiZwb5YGt5cH&fQgg8fy;vRerrzgIE#iuw1 z#Qo#86QMtj5Pd$7P?VuPC;~|@A`dVkb`Gu>u2X84jL0AJVKJt6t$No@>x|bB^sJ@R z=yy4~t4h2FJMa(pvw$O(6<&=8WVEiNCiqV*I!i=HMB@q9I?6=aaU_p_9ry;Wg6Nlm zM8qFqDU7lBEcrotMlt8W^w<$=3P`sc(@JnkNMI# zunur-pa8wqx2j*0S_6P%QGpTu2oW<+z zDmK^)e~9mDCxUfgVZ2NU=>aOtf289|YJ&{*eCDODJMA2xhTPObRmb7lmcSdVrpC@` zX@OH(=F9=(4x#VwTYl-#ghTinmjD&CE_~*n8_*vfN0%Nu1u{>8oOM4wvk)}&tR?Wk zC;Pncw-@kVpXiW2;2rcb`X1+SY59FXb?6Wpy7k8g8}CQ&Klcdw(~0R1f6YpI<6yD9 zcs0yh^4HP!8}Orz&Ta!X6UFW8#-@tsl^v}_y2*u=`pCrc4od1dJRRV%6Tf%lNIbHU zB#T9J!@3hs1SLm~#P396aWQ|dQbN0lE^B}(X6l*wL>5D&bOc9U+a>?)lKSH1ch?0) z8ILF7;xa99$Au~u27P85$6p^IX~ndYxk@M~1D;fsWYB9 zJ;ezAPPY$B%X4$fbGaQ8?%dt7`_2iKi>J-vbVGIAtZ9oYJD8ira$(|qAsS{QILr1Q zyWxp=1%4?F6%86xL<5>!l6~joswL$PNBNQ}#kO~zdQNaSgy)`mXPe@tu{~v+Im|HJ zYc)_X>EbF6-7dH^x{w=cdu-y<+n|IEIPjP@+la-TiZwcL*Y?z4b~IOZGL_9chUv{_J-OoIS9}C@poMehpoOTT2RaiEcH$AS6YxDyn);`# zed7C;mhYcfn<6+e976BQp0d>(Iv@S-YM2Ea2D5{hPD76q*Y6jr)z-<#*l%SOi?$8@ zV(7L-75{ln%1esd2dw|c>9wh;Yft}UeQ&uiDSN;FuIw!C?M^%n{*$8Dv!m;af=|!< zV&>Dq|GeZEo_L~Dwf*(X%-6T~?oWgM-};k8aJc`w&UE`+cxLYH|8E`1zjLQw>_R=h zgPJKK9_{$+NJ^+g8uCg#4wY1}NzMA}?(%KjC7;4t()#At6x@=Xm6d% z#$2jvJz@Zt+D!I|D2>NO59xz3z%encr)SXPqrSlD0Y6AVy2MEVh}HI)MKeAYFOKZt zJa0KYI6=_kwm`frmd}&ZSf58F!>2MIFCA4@RNik^TC#oGHsyRtQ%y87Y94xP==P}! zUb1ykfp;($sSZRYO+4X^8P>r-8lpWbi$;8~rYx0PgUUOR;z7Hho0K4%lI)s@*{223OeI<%nLJm=7ybEcXkEtsOyo4qErwCs}He_g*5qOHx zOQK2u>x#ot^TrtFNQi7tvh=QK<1fT~R}=$3HH{>K9-hlTeYDhEQpKZ=Is5j_S(H6w z+`c*99JmAz;C=H(qesWzb?~Syz1(XtfZF_05GEn?u~nC)(UkfOI?!lK|1!EP(G;l8 zaY0p-u1KNzEAPU2wN;=lD~Ok%Z*55@?Os$c(CbETM7HM#c-zu}Zu!3V_GzsfYUb?I z{$t;q=(L8d#(Fb+ZO{-^$l)!QACTAht}!^!qLf;UE|V`TJE97)+AGrPKt{RhT)28p z^_*8rvu1QM`g+B{Y=dW|C=ec&yr^uGOeWwvx=Aak&GdspA1>%nx2kB55_=yKv$ z3|w8z3i${gF$}Z?xNA|Ci(mj(K&ZdW5^zJKBZivfcTla0*s6dGYtnDcJV9rU3BT4B zFGz>|mo?R(NKF&^bM)hyriYh<2Qs6z({@YCnrbAi6QaNMggeVDZdRj}`%~F)XDbd% z2j{@ZxQs$REcd0Nf#nnNSkBidL2+UVQ7X5%B}`#{=RfZ|hYk^sFQ@NnsY=r)vcPSzJH3Wfx7}^YR%Q1s%uuUaQ(P0v?H0FiSm{lEg$l4lOgzHd z`IseyX5lqI9!>NRj6u95gBa8sF{ou@kR-%p$;lG!bSE1JlhXGH;s(=`X7YuAXs9Rf zfdUH%#lcQkr=A4Co5NP>rz`m-!s-dy4P)xo8|r2n*4N##Q8j*raH~9I%1g^nn!T^c zhxm&6e0QY&PqLXoFpvOEQ2Joo$P;%#|GeP%6a3kT<$Gl9D zACcYN-KV@@h)Db{n4J9h#KM|Faf%oc#FNF4;M~0?`P3n~1&anHr%YUL9j}>H9`%WY zaPRCv{r3IM4(#NQ$MXSVP~?r^&;m*XlZ~LMamuAW{R=aS$vhAq8yZm^XoP)3BO(Xq zUWNmWV}#8UFD;pmc7#WYWN`M~PUxJouRUgmCjNTti@T^7+sVv&>S?8C6$4r}roxm8 zM66W;=xY+vBx(vpNIQ`^O~u9#EXAn<_bc25jYK~_6rVoCt_fl-&QjDDkGQT5(uI{8 zkfj$d?Vr2dTyNak5S=z>-#@hb=G1JkYB8ZoHV$0+oFk+fGAQJ$!L+ITF_X(^kt$o{ zBHSlU|vTRr)HXO4Z?Ws`89LHD}EpsHoR(*AC7MjFe_qzWuhhvc!u%$ak!% z4zMfDrAJRs9FHCyJ#Qc8mEe*b@0@+(hGZ`ygcx=3RiSj-(SxP=pw?jVmT%T*vUFDT zF$t&JK%>s!D+M!6iP2>P7ka;fW zRCnRP2*2SNCW-Qo#+z&I_)NUsB+yuog5Y|k;S+W2<8cS{B5E)fJN`+jT0EeP6dOdg~`b2_OE?2QHC1~~0D~ZX1QwF7a zZCr;zTvN-KOs21Bhu{(2I0VhHx_H=bZ?hsGnK%!c;B}iMOpgr`vSGsM`a4G5dVl%g zg7Z?DRKMRKefgkHCF()DBPI1y>Z>F<=son^D@&KY0yH2SXlUreo9sfcWepA;`s2fx>^cD2ob@`#{>oUTjp7qYbw1#@R0=`f%ml*ls z35xH6H%cY0m`X8s=;cIS!SSCZyP;{W+dqO6?wO@h2$S94k}qLL9I#< zrVSf9)v8h{08AKe&~uv9B*RNPcD+basn}mi#pU0m*@5vU-;j)>@U=FfmA6x!5=O?E z1&<7bWUMD-mH`3(hi!z=MH}If|Vs#;RhSQ z)thumBCEbEWB7DjPCa9ddD$Gu)Zrc)>FpIDzN^Z|)XRd@i7@q*LQ@f{pB@YOMKyaB zpa5)uKy&$Q&{$9c?k6X8>X2jw}M>+={ZC-NpfiI47>yIvJK8i0oKSBTV;%)D(Uj5!}FS3sy z^e%b{Eq(8vabxygfFsfOXgzVM0M>9|ZFY%l!2xvT;Kna&a%&a!_L{FY9z<6TERdCC zgZX>Gy?<^4cfe%v^&v>!9-K(txo8ofWoV@@J__*fi=!w5tO4rP7uzqc<`fGTj63k& z(&l&ePmBsA8h-}-T8{It_22#6z39q4O;ZbRHLY|_U33qS-uv9$IDXoqCfsLcTw}Nc zlrHLtzAy!A#0R6HTR8{V0P#pJm}AQCc=Z`mE)Nl{BQGoJA=x-gONnBU4Y2*u7W5O4 zgB3uI_C2#68H3KEAI_cy32;?Us8be^oF+tnG9>az z(!`8(oi2$_H01Ql4yX$5%!_5vJXFl`Y=J6}-4EzM!da3V__8;?sVIYZ2G?6B`mH02 z9I6S8$wAC{c^5}616{1BB&BTZme0{kk3EiF`eMuYFnlT33HG=K=Hs>h3+M%>H-BI{ z*z4dUYU@HjZ184d5Wp$O4T8+?JF2p-KOKiu))8{RbEw^Xv;s6DuZx@WtKw zlEsdT%FhMxtZGm{3wR5FttHX#9W&w6`O#||0RS(thBti8qj|T~2d#ab{W^C{D+UKM zJ>avzKp*U$ZSln=z2*_`1}yTB*YiF)UzMq zbaUytKtkQO*@!=2Jd{iEz!Wt+dd}FrW&`#~N0P;z=EK=elr7z~brOq?3M*Q+O@w#M zVy#J>vfq%8HfS(IAOV`eLtc9nBikJl$aQU&GUztWel?O7nW?&tU@5Sv>~Od3JQ0c2;*<;I^Y zm@We*F2uU=Ormj_bP!Vv7YIU6I>9HwgoVBByFYxnB5FB;e(#k$Ob5Pr z4?XyrfWKBSSRk7NUi($_1`%5w72l$ar!JH?5VL;Zf!el|__du?1 zIuvwDDLZMTqBtwHYDQq(o2T6Fx<8P^w-Ey6<4DD ziRY&fHT-ZBf=6Iy`{C~f43I)81a*M|=%Kz9b^OI+FCRo-nI<8G;*0SpIUKDH8_ ze>g?;82a63n@HbyiaieU!2<`j%vyH)vIDQZdSLnH<#RXR&081jT05bAd*=4`32S#P zn70B*_k0T~PCrF@5?J1Or4>E0rgT&xnDW_Qz?7o8vfI$f*!o0+zuR|A7877fnM&&K z#v!g+G222)jSES1EkZh%gw-*4bwYs52n>#ir6iktH$Y{6M8Op}=%N-A#g27<+B5Z0 zA9$$nb9CYO^ACUa;5Rwi@vi~HGyg0F&w?bInz{BwcvgL0_4LX)qvq{e`Q||X)mJBv zZoYff)7~lI3jBco;I18igkuWxcD*uT)O|l}tXl$v<|F+d2D5$|fxf{L&LptZ5}H!J z(a zaJkH6=UDG2dugH)H2xoZd!H_I#~{lSojwoUY7<>w<5A^u-|Nqg-dG@1HZQ$nVsG_bT{ExV~`N#<_St3^_7}Jrlywqsbs^zkha$c_1 zK%KO_Tw~KIB|=%5&Xx>b^X81KdH?(OYihI9Kvv+ByZQrm>g+wc-+pIT-=I~k!K*#D zV%CnqgJ#Vg6kgEM_{65F?b}{Ew=IwerE-VKm}=Cr^KG`yiy&jQcmArC@7IjX@utcY z3X4)E%$Xk9vvFOr4wF9R`iCFbf4f4ms3aUNZED&zbF@_|wE}kRz|}LR1Pcp8xWpW* zcfnd(VtH{nuYqcnATKM|r0DqaGOaCn$g%~qN7jrVUsF5FAtY-x)~OYs4sL0jd12S? zw>1i%U&^wQyJk+W98@#70ZkoHwdwImuWsMAEszEkGP#sDtKo6Ac>zkv9HsY;uNgVJ z3A`;eXp|OVTxMauJU2DGo(`O8Ug8#*I%PI< zuAqyc&0r1YA<_aBOSkFykoe{CKygt6L>p@a25O8D zECwo8qE?&K%93^We6no$x4$_yEltWvB@h048r%Z?4RN(vipTd{4b&zLqwV(eegUxz-- z9=qoBjA{2zE=!6wR+d+dvZ?ybnqSsmB1zF}LL&#{myBCFp^r>0;{mrc|MAfo?`r1e z*Y#1!^*Q&L1Q~H5DmsgWP?IMS62QZ$<-SaXqRlnTU{IL)jmePY)!j92)V2v#eXKIL zw#*)YCRc4Jx&N|xwfVlP2_w>?hezjTo06vF6y6UFxs$qVej;>^@>311xjk$`?GvtUh%+~(%3Z#PVs_|eli~lY9mWtV^D}2e8}k=l5UtMR*JsYiI_>{m)7*XY z?7FT|+y7g88SpwPgDE6fu`&@fDb`9cYyJPL2I9?#kz3@bO)UClAl9X$@xN;p*dH-6 z8L*2Df^(zUM*IF3jRCrN-jo;}0d#7PpL$3qK&!flfjRJXXL`(qKL zrg*Wssc8(jfv}NA$vblSc56mEwKs)f(JGb6uy&pSqKPU?anjmbGpyTbN{HK*`y>A9 z+pPo;k|Ke*En#cNWvb(EVOvFjFr1vEX>Aqd?NWyCpnAn*EHmO>vH&C=7a!M{4u&xI z#k+#Mme;!Qe}K=zXI7Ig8c9ry?vL)5tMpoY3GpSI1!vhi5@EQb5!$)7XdC~d!O$2t-;j-3+LE|D zj+?~9H^RxVBE^P`Qm;jJL5feHP2j%lb=h%TDuIknuars(@Z{HQIU#H-_}F0V*k`Gn|G~W42HlFc*3UXWRlL`__MRa{Ba>-_Y+U;~4&5 zxCcrYIin<0T8sZc5};>d#*6TONPl?1-2yz()93?sdGs{M;0}{89Dy#8SSmNHz1Avu zln+xobO~UbX{?)t#CvN=%<5Gqu5Us?9I4|?l1Js}Ec*55cTUM}7+kNLKP>UM_ul$R zOU&7(P?>+`bg6PxQFsNY>tNfzMw8JNpt5WrB)|Q3fKc^pFIhja+VLy-`LVP)F4+@f!4he9s=;9`>zs? zV-u3$vY^02^o_aBoS>>C#phZbb&HdVijo%BIT{;}+H;MeYL}|{w!sl8TCYj~Lc?ek z030Xh!G?%L!qy}wrzkpqI~p&A*aQibPB#e#bf-!NWuwKqPop%5?Dvc$UPg(YA>EL% z$2MVN5bZ8~2{7|iwS#A%rKS7j zP^Q$dBV9Q-moX(nP=@U8;-%=X^d$|bQDIZa<(U~7nR2;2RgvYB$$VGH%f_sxeR|+E zD0v>YOCFIvl(1wQifB4GY%K27T1f(C{Rk*gNCgB((97lG71ThWso!}PfIWW&3l`4m zI0$AR|HB_&uNsfOLHBQe;YY}R_J_Rw8hESJUNWM#!erWf_0C&{uT%e~9JTlG|IHLJMc zA~3eWrn*tx=rx4i0+ofLISq6{?E*wWJxwjzQ5o9_xb#Owr;2F z?Ci|!oA=(#yb_&;B2%IErEg(=ec85^Gq=nvb{YVL*_T{52(L`GUbaS`#Bl`D;w%LP zNUB6K#4Hu4xRq7k69$JWaZoiCk?<)0B6)69J3vLu!NXKo2p4qXMAgb6+0Lh#-bx;& z?|yb9M*%_hCmChlq~r~2f*uKr$E6K(IO@P&s-F^efgZ%X52t;1<=*eFS#a&~j%{De zc)vqB{Mu3J!*{l9c?SYV--R_&C3>`1nl63y*x(NDW5C1hn-2$TFLUQ;)j9v{T)*p@ z@Aq^Zzjncfw#|1R+wzX|A;BJ`iuceY>BxZe;W=C>efNdbdjyy|2^l9h>Bot9rH zf@m59O^{0P97+RW@4$`A@uE|YKEWTh?j86mESI!r?uJG@1}?eo%*VZW=|Ey_&6zu3 zHrjgTV>D)PZ2E<7*m>?|0w~NQ`H;(+p}0UbQJ5qP2}zpptAk@;^yz&6up zDpMFIC7GvM(!*d>XocZrk@1A_+~0r^DyhJlbPRoCGWt@? z$WpS_U78(A4w@~F3aLF#Z+i#@h*EyLQZzF!(t95hq6oEt8Mk=wA1DFw$&y# zsmEjt`T3=8Bl<`gP#zO_wYk4^wcl6n_8DsjD>v(Ftx1u%oq%?Eh?XJD2r}8F)l!CpHQSQ zDl!tZ+SFvVW8>Qw?Kl}}tF~uXI;OYM&%xVgci!;oRj2=a_cyQXFNg9M{{qV#y*Hey zb7Uk~oLckb$!2X~g}Dy69gYl##i=v5wV8EJXSo?38&hM;$xTSc>Jr!FDHr`}$ zQaX~`g6Ta6%sG*jE2btJdar8E$XK@H_{R0GT)Z^k%8F#0kZ5rh`a;Q8!(zXGLPMrH zFk#E08Jky3>5)NVjC`)+I}~Zhg-1z}jh*vogmooIkffZ^<23;Pd8=3F zPKrz|7_NsW>#v`8df*?G9`1-69W(3Cvb86WD~wF_kM_A;i`Yy)w<#2l!`V@uwa@W# zvb;@{Y10pB!*lL(Fowti9*lPXa9?S|_Zs49lsi(V9S%YIsXcp6Ngt3ad_~)E>|CSR zMHt=i(?8jBYUrt1Bbq)eK7xOx9u3bM$q_EhD~Hzr$Nt?|oi{#s)cE}9=tPI>YW}Cu z=s4G(|G^N9mXGptV+pTeVG7O6ygCpDo=I`bLhwUj*iJWxWKVc(jO2L4Z5My%#THA- z5B(_?3-*dD7XC1QA@(H##}-ZW!X^5oZGpl7!O`SO&2jZh$CK?gn>`sy@Z>W;U`0aO zaF3g5N6&Jy?+J>b2IGf6`6RAqM*|zPP&9^{O7-l3lBg^gl=+Q&z#z0Mh(m-UVq(_* z!Is#icRJ6-)1w<<;+8dW9u+=?cxn zoI9!6FOrcn5z`SISQRQO3!wufdgcVmaKaI%m(OrYwTYfe5~pSsYT59di`z&%gZI)z z2J-M9N{#U3;!b+IbFnlTZq6>I@nQo1X#_5R&(>hGsfR2triWi?I4$h3v&|*Uq(KQ( zc!y#XO4vTquoyG8ZCBuep%|?J|GrYH#8R;$L3*+hq6W2^FBY8AlXDaaCyZ(po+Xjk zCk7UKl?J3FOs=GHRuU%9Q6!!)#7o9wv>p}RjylW1_a_q0a$3FqM1u4LA#X+~9t_Fl zL;}e7U<%EXUKtFvT6z7sn$Vg3aeYk_)3|piOb!KBVH2jZfBf-w32*1$pT z>y^w?VITMH^(Gq&4^52Oam_H}E&<=7G=9ap{9L=!3pC=>v3p;4@jTCNAqm z_hT}+e2yF1IU3qQ5}7qW3*G%<`-gP*iy~(}en;SDw9J^%GBAS${ESazOMMsXPM@&2 z2?XkRHwy=9<9B{Z%gw;7_zWp^(6HYztN9cGa;McSkl^WfHrqGCXD5pT!jo*5#7J72 zLjA!|w=b3qfP9LcB4MCzA5@S}Mwd{r^NC|m-`=$K;K!|t0T#D@ zd~j>i?N9$oCI*AH8wU4JoH>KPmF|TFR4jL(76-LTx3uH!x1}9!rBGbl2 z3(NTr$`_(F{r%k8ty?8({eY9>XKtfUoaOGlm&{4!>2y*Dzw*F=1J-koEgT`Ul1ix( z#1HJnRG`v24i`_)O=%8-kbr`2Ey<_G*=*niJqjV*-%`B$Est-BIv6aEEiTGd@!8eA zJ$t9$01z%pp7~2@?u<3_#*~Jp2gx*g9*Vx$HP z#guMzrDnx0T{+*RoWJXyOZwbZBKG)frDW!BDZAw0^}l@?!k10ydho74-1F(W`STsp zlaPWE^vJ!C8z$S9%TBPEhj}gp3f}Dx=-FAa9ufS?1P}-YjTTUG@`7-*oSMEzLCWLD zXCyyrEi&3l(de~`(5TIEN~fjIrPIzFZIbhac9i5yR;lfYDt)$588Ky=B1&VnUX^H9 ztCF2bsQm?}^f=q#M7ukmAy1x^PCwJx`3wl)0^u2Hy7Y?l*&7=-z5&Tl49P6^%7xZH z3ks9O@^Ue$Fh>k&4}H93vMn)B&1YD5uV260n!&5{5^a;0e0)e75^rVOscS~PiN@MC zz9D@!>V;C?g~ZSZ)K4Jz`|0=?Pa!#WrVhhaKNe=zJ{XtaB;!fIUJL<~$)y$=332ly zS!mh{;V4^GP~Ac*CukQoO%SsAu^A%HF2UZbqx&vj_WHFunl4{|8z}cbnzp!9aDVNb z;DXP6T2t2R(37#RrDb31nGaVj-M#0TeW&;I?k;;B{c}?8z;7~(0gumy`;}|9esJ^U zu^rdGv3yr|5@atr>Jq9Jr@ZS>n5941a>s{1x5C{mw3<`Tj@{k6=hVKR?c2S${o2>L z(LR1>F<)?_eEd=?0SY~m54%}*IgT>B7R+rClV%CYLMF(qM@AQNmm|V*4(D%iSKLMM z5o(slH8v~YPI0i5EvXbJojanPZZy6zWY&trvVBOD!{XwZd=QW7zG zQCQ&R)n=nZ4S2&|y8|B6DiBucc1wq(=&?+v=uFg=C7I9?IC9&^2|kMs5Y}1~ z42bZfn?30R{}Qwqba$*dQ5;?2o|I(Qx-CW()JXT|D+MHIGSv6M7r-N=QZn0TnEO=4 z@yP_!Y6$n7&rRoI+*V5AuuvG+0RqdAcL}y82*~c%C0vAsG zFLE64{k?z}$7&;m%i0EB0E_+uy+!(6RBe{NvsrW~TV;kBdMh4t`ndG1-fGo@_7%7u z49R1&3IZigBLL`~#euAh@)Q$#lH`}4%TFB4e=J_Ucw{~x7pU%7v`X644X+JoY3=26 z3_cV3PH%l#+VWd6hyJ0rN{t%d>biAVIqO=NB_%0SmMz~lCU<@F5~uTjm@l7y3jM;j z+%#@ES)p7)$O3hIPmSs`=ZrxzCV|2zHRQo|Aepyx6xVK7Fk^XiN$5Bysa6gag0tkU z9RlwTI{{R?hgL#2fLM-EA!m>!WgwnKsDuKwItgc?RH+O;$I1kcPE-p@@cTh2s70M8 zVWq=oP^pxFe9lE~D_K{R%&tgD6>)wbkYAis(Tj1VC(-I&bl4fN`2E!9-}LFWCn9Ex zrK^jk4jj0ZCYILKEv3o!-rn{bG%MGu_?#rAUZW9gmK45U>ZdLt1&v0pOv>R^>sM;* zW3@`NDR)71yjHRLL+RTOS8oh1^8uKZ+Ohb~K#|2ydP-duPJd^*QT7kDjXr6<<6=@o;qhkCq#CqWNR#{}le%^MGW_#ka6P{zJD6&l|Yq{1QL7nU!VK z#R9480x3Zb21cYVSTdf1+LhOuwOzqsu( z@r=j~S%ja#&F5OVi?}NYD-a*G$e^c8P{5!Dl}s(MZAe)v!rZFSsmHW^*nT5h?+uQ< zU(S<-I^^w0x7{!Moudq@?0?NJ*au}d;~Db0|BviC54fdd#d<$Wpf4PSK5uGD!0^do zx)NV?z)|4yqz8Sn&jeCt(09WCD-V-Mux-WiOG)qs_}+kBjGwclDJI-(QyNW$w#UJ* zvL$M?*~aCs+Z9G*q3thsuuX>><*kRDv)oePcFGBEOvB>b3~!*kD&z1cbXR6oN!^0H zV5qPzDtl3(ZHhaF_=r8iq&=vKM;h*V4g)qUk=hC(mDQN<=+_u`%&G(n8Y=Z~2shJgmdZ52l-vd}f=?>`OAGA6zaP zlckTp)*I4IM>Kl-ulAYtZ%CaTR-{hKz37_s3SP)dpFcfR)YI&9;s=LHIK4S3iE5C38W&Ss>0(~-g>AO%RD)I!U7Zs-|Q-hwOOX4A7xnTA>O{pemoadWvQmIVSee)U- zN?Nb*LZu^Lw+=KnfvGW3Q9jE#X5xGkc{gdNI!7HgPv0aRqa~#8Zj!!kw0l$K5|HN` zD&hN)x<}|7Tet~?hh0w3yP0%Uz&#`PNk z9rd?^13@b4#=GeRk$(FI2`+u&(iS>}D8MtKlvJ;;(6Q{M zffr5=Jfrn!@6u|;N^<$aIl1cMWpC;{=vW-w_r$>;KBew>XhNPR(YnG=FmFL!$tt$3 zc{ro0JmAg9UEDB+%$|WOXtktPk5&}PRrf{W4A2ceI2M#YVulrvl6ae?uI^R1)ddL3a130G*wPKkWRLC$=O^EFo?lgB!by1dG zP^i^v`1I7oi=OEyjKJC%0*>9f(4K19$iJD8l4@|2O8>e%d)};E070vs2}LuP4cw{F z0XC{uC@sF-smmU`e&wB)74^4{PXDd^86^mn1>vcIe`SP4vBa;2Po$%PJW-5zMLit*4e;PFSfBFh z6O(LDeJJ?80t^Wncj~mHtB?q8Grrxx8}hW#RVZUmQRT;;%mV*k67`<6nF*klPT6dJ z?{w?mE;HCX{#mByV@g*7Xi;%Suo%~v_obKI6DpG$+*y3FyExq+5!_`N!9u7MDl@z} zWh>PceqRo%^+QOv*)b`DWrR?OxGkrr8(>jBe1n7S-vA?^4|$^GDxT%bLzj#lfru*rd^4&aXO=?LltEPjO*Bm>zsY`eOW)l~PBtb>YV3 z^yG)OSYfV8@dzsU>2g<4Wi?v0cBKQK?tWQkQCAxOV3EH3JatCuRll!%S!Y#|jCHtB zk>C)dh%^P0HLn6sO-|1m7|*M-#h=5$q9UBFm7Y{LE$aj`*t#n3UcTxXG$uWH<3ek4 zvUSTtCSEZpM|K@A39W?7&t?8{DK?eGOBoVyh>Ey4uA8o$B2jzLiVWZhQa4XQd(ajL zy2!$cZn{yiA{qTsL@GO0;+=c<{qgfXdoTNTZ|y?2qH5-ypMC;!Pq?c}GJbjZus$Vi z-qtBO1{{q}-M+YeVBX9Rr&v(ti>tjJXQ*?`%A{!t?ltg}_YWUEdiedl|JsvUUYY#Q zyYBh&%X^m0)cNYCACul_1i^jfU2i|IY@+ALE$F?IW6nxXPG7&(Z&`V5Vq}bezBAip zTu|D&uYK&y)r0o280~O!8C;0a)A`JT2NNF?;vEZG_8QJz5Kfmebo}wJyQ8w%$r!9Fl~DZf8~V2(t=qw6HFaW9N_C&6BAY8%D!7~?d!SQl9g@yjr7_(@4`Sr zZpHd*d+O|XHyC@{s~->EoY6F8p~Et9T)N-XIIeJApm17I<~Qfjgu(vLW^!|dgL4SU z96HrsjFUyG>+6t3dPLcm7u^q{mZ=aE_@M!ltzx8el6u};{3z-&`%j+V4N^81chts3? z!GJT6aacpffsR5%_5&shGBLk{%m9}o?j8)ua!ql4CV80TVUt0fN>Cu#&_qEv?z|jV z?|8Q)Nu}4DtIR2pis=HF_#(8yxI)gz8yMP-p83+*Q z7muS-({UiED4gXZKoFQ2n1PImG7xC=6bN!D5U6D!P+79D9cxC-1(0PD313aIo?ejI zAJRdeAS%kC0_f(Fz}8P#3^EO1F@$oVu&9uHW-~{+FF2y*JYlL;+{CV`BD)={3mk?? zx*O1{;FUp zDVkJVsBc1ng2{D-Rh!mTiCk#;q^X&?qWQ~EN<|=BOnpUvU(pt$OQA@b?)K|a16Z_c zq&rg-2}=+phdd?#5TnomWuP*6a;AnJ!zg*vx7B>@XRZ@Mkd>4RRjrs zANKPEql&=rAKld_xP91#l>j_Kny$7=^ z4mOXSJzF1`5zxgaUN|1XnAeT5aHuT`Tej6#_ zIw<}9(7F!}E?<7|gLQ{McW~-J=RhaA7QHl3Hc%$KG{F29p#Gdx{j8}I$b-2Lz3;bw z_Khfhb<&dl{zF;g4z*02GFzYN@n-60PaWTKn3fEUL!;l5VpfP2C0q8{qReL3K3<@k@N{d9P++{H80+@#$b`CUm9Ne(NF+Jys z4f1ymAG` zSG@A!sc*+F=$tVpKMlR;yt%L_Qiy&x@Hl*X`tGQi*DtstWxVHMZqU|yT$azurExi2 z3BiUP+v_YV*DI#S9%L&LhOwf7Aj7^4lVL{0>52}?+&Wv- zQN+$nQY!3n2A=OJ_IQdf$tX+DNO5J{mtK~U;Y!K)Nd^ha1_RK}mp*vlqIa*EYiqe= zy=!c-%N-@Z4!5f~IbYXx$yHNKuA0b6*Sv@JbT;UuNtN}L6^#|BZ~ArhGp~u}Eo&-T z;xiQ#@zWQ8V|-bu^wlzcOjf*tDEZ|UFKt`9B2u_!qC2=``mwwObI!Q7sxfwp16i@! znP6P>!)4y2F^lGv2wEKhmw@qLdZITcx|ILCG&i?2_tgAuS5}s*+m)T|`nNIk+L7bU z_nuh4c;N%@-y*#eD+#lIsfjDW^6+%g^7n;nx9&UeyGeQIq44b4;ey$-r4zMxv`rdw zxV>eSMJz6KS|_~N-6{R0s`8){y0a?f=f~$ws0K@Fts-=+ySSy~@|(BJFHA|qR?!d& zSUWG}D@z20U@}-hOwbbg{EaKWdiWYXk@GVtfx=*#tzbxi))D8x2$cB?io8W$o7Yxg zD;RO+wqKME{6@REy5Wi|8dj9GwCz7~;>3~Le*sI{+dIfVFppv((7LqLOJ^*(`sJ&~ z#2Tr5#oOyTSi!ZUxdTcY{Be94WM1khv=StzFnLX(xRF5W!A9OOV}}a_OhqpLC$~+N zK3#Cz8%HW;^gq@=qvF{c8XEL37S3F(*=2PGc<#)TdHTXJdD2gW#fe=Lmi6~9o6waw zA=`j5%!t~`qvI%m&vpt7nev4 zt6yL3c2~PamAb?k_J-`6=bf%Dfzk)&VUmgaR&4gk_#Qln&M)u$>%Ie9cK)T zkh$Aj(1vf{PEAV+FUe>QrUbN{zDI zHfhqv+dG7syz0{G@N%)^_KlM!*~*ogfnS1Rt_CXuN~h*eUBb$IazB5i@YF$#ljLE| zTu`X1!?R{in>i~qR8PmbN5>#i6n_n6OB(-kX3rD=MK#Wsmrh(Jy@#taC(-Olnbr9HS4)fZ z3aTW?%zV%R&bSC(7JZ?a(`lX4XNG)PCr>WUK%E7o$DWJpu-hGWIKpYE{ECZRY;1Vd z)LZ%TRF5aMoPRl6i3bAs$h_ide?(O-uh&(D?l_zu)+)|W*RS~gGfbNnA1MxWL!IFA z<|icNdtJW!9-B+Sh0}1hvz+jkVfr0T&c%7S09lKMxwQn09J!=fK>-{%2!2e$TtZVt zs-q18_Cr+RVA;{2g2`b-4JfFfs;s$GqFoTZfudjl2P%LX*_E$Rf7l_|Z5F2JZF5i? z8&RsuN=57{GSzydIc|i#3SWrd=x3hu7oK_xpF(IMJjku zz%W*{ifgwB!UjQ{kA*ix;X57~to(B#y!Y34rGgK?dmnbZ3zL62aPmEv@QQS6_1Ck( zpu&ZdM0DsC_|^TVAO7=g-=H-wz>~M0dHRd1T5EV=-SUt7KTFH+6Y$f5Fz={<|BMiP z%Y#Y5`xlB(qY!c$mGHJ2?}Qt8LCRO)u?vuR(KMbf?hx@7jCb;4_f9OJ8-(FJTnfSb z3)rqH_Ud`M@bk#Kp#*I4IcCKcH<2*X=hivn2_s_sgPPR5>H;z9D##7x7Pz8fL3LiL zX8u@IId=a2H@tTP`9qt``r4IMrz@GqjAKbGvbZNqYCkukrH))<+eW#Vz4lnf_c{3WQ)R zey}@)j~W9mAzaR1pf5wlAZ)Fm@A#y2;Q&s(-? zW+9)daj3{Yhb9$xGVPgXX8AgNRA^-aGwnmQhAnYFIZBx)Nh3IJ95;vSqx!-jGz0;N z^#~0*%Z|HC8MMc3`VVQDJQT@B1DLAYU~JgV5ogY*E)nyRvNJO?vy<|~lIjfev~R$RhqPq`Y+b;_!Ug==@Z7YB#6_l^Kd`(12SZ9A=!Z(#*Y|My4AkW} zp)5aC4h`?S{R_?;VR)Ji??CO)Kz=ney59}uoeA>{ASsj&A7Tst`nj2~awILL5*q1* zZZIRH9@$AQYN+s3_P+dJ=mRbTB_wY8g0 za?+iguH>KO!A4}IPCO!H$~@hKmkXm=((kQVjAi}{FJ~xidkZ={;J`|~ z^maX-G21`E3e>5e`ju@^C))pk8Da;r0Q-(XcVTBmlg`^+gp^~P=lvEg?-l9kh^)(} z!V#`|h#An~K`;ca+(H_KGbnSM;=mXwx6VPT(K9)^+|Bu?+X(&ujUAz*9- z82A%Y_AyoxwvbeRcC;P?f|N4`ZGBMyNzE2ou~Fq*sM*>kQ zeH4@IcYn*;$q3|iT?ZJM2C}{d;Lq_9WC0S&J-zUwjEPa2G5EbxD|{0gd~Vkd7m@lF z+T-gv9Sps2glDB>*-c3n?-iW8(hIWL-sf$ERG?_|047vCE()tLM@5~cnk9z&1%hxS zNIInfiNA)lrkl^#k;H2Rr9{dfdks+yhV?Skdc|s%a=h`=v!V)0qxo7l4N0?UHyoYf zMwM7I)RY$D&XEFz4%)<)rBzFXsgzLoOd>40AaH#ubD0KG73OIkU&*({O;~iJQpWin z%3qlF2?QA(g+vUa6)TYyQ#XNgf5c1jrkB^Vf5R1r3Tqic-*8Vjy-o_{JNo%}q^JM@ ztd5NL z&%~r}=K6ZRCoUl7x!={>oUqHlCs_ySG&sU5)xGu>T$(@keK*>KZ7+Psw_u>HeZ{u= zJYRh$ry$yOM$VhGKML89Hy!!y*xo(wHhDf}urz*;(y}7F>KAayENOm{+M>6{X^pcu z;B9Hz!nOu=MsoGxCD7{j` zaoLM$yQ`%@{S!4tpr`O*=SHF@v?8R(b45cv;wi!_!jg4)YM8|#BT#qAU^q*v%;lm@ zW1`clPPsCkrRBNS9IH6_j_)MMNkw6&53_7RSUsCH zoQ+-P_Kcu4Jv~0st$w-|3chr7?ZMe!acyO1TOYL-SY~rY|viV0| zDpaR%e962hRYU)|JmC{uWU<_D^!Mj6&*xL`bo?&F=uh&+GlxsR2oFPFq zrpfa7W@*L~5*9X?vJ9m9dXKa0>cK`~xc2DvI$M0c<3(M8T;W(O3RbE7P2Yw<%K_ad z#}CNrT#9UY|89DPKAm1yH<6P6YpJ5y^Y9$!cf3r<-K$Wnd!O=6Q&yLb%JqZRHdA|rx&`3b*VP_-*C0JN zWO2uHvQo|u+Gq42&jCux>Q}xW~(cc%}9}T2Tjl&^UG^gPR>At6N51kI&?G5X>Zy$V2zUMV z&ZkO~^N)6L6cy1bx9j>|Z*v%Ld4m4L>#9e~7ZG~7aKX&^*w3)-eZVAaVd0!xjmvSG zGyD*XMnP=txc-p{3ej204yqYrZ$BRz4dDZMrvuPiqwhjO_AX#kAKG@iCAGz+JSi;K zp@R@eQ8}W(!!bGs7zahc?J{e9TW2=Y^&0!rD!hi2SAeTXgj@ufZWp*#;!6eFmZ#@jMRxbx}1f&zQw7GOa7oyb^> zeOc%e3xzGzp;}1KEGd;4gkx?wa5nZ?0$c7AcyJ)Hk5vOB- z^r+q!iBUgziL{6z*JNzjJVp*OqA^_Hx%|=4Vw^gl7MIZ|pQ~-U6cUsYCtIp?d~^;_ z^xsW3e;(nskRtdUxS?NXVqz*?Pnf)UL?J8QeEJ|M@1`SPr{N_P55i9O^64dn{}m!z<0FKK&?a`Xlr?UHa5CanDPvTzSJH^}?x}Q-}X} z-lKUVZ>2NkA9b?m`@%#O|J~GEh-xb0x^U)(X`L1dX(Nk>or+uxwhOj@7OqvOW;O#G zw_m5GLY&?lJFVd!b<}2u4YpJu3SpKszU01xXW{H)VQ38I+mwA1uAUk?bhi@%$}Xi7$XMOW0QQT6G3Qk~Mn)JZH>} zuwr}=8P^g$U10FF0~6$kTbVM)oTG?v&x+d;Xpx6btto+@(jRegSTRcdxjW}w#E5Cc zw@(yDX^Ux35vRy}ng;Q=)q-Nc{lD00c(V*O8YI|Y9>4K%{5HW3>+=_Hc|-V#>^iiS zLNm8-5$3xA7`L+l3D8~{RwyON6@P!miFC*0hpLB<6=(x_gs$IKoV5~gDQ3QVssCco zgy&d)o!u3f<6OMHuf@^jOJp(|=nvn?;JiuS-UG-E4G$XHxd)tPqpr8&AN_NlGY06g z;6P*u$?SDPDWj&DV5M~l`9ug$eo3)Q1&9zXirl#KXz0UWtdaEl%afivp~i#E!=6=c zLHUCf>lPDNx`CMhb%~ZEyH7<0mZ36aeYqcsx|=WW8&^Kfon>KZ*thyeo3_#p8Y|sR zR`qm7G4`qN>`6cuKe7Axcr$pR=jR>S` zGI7zXIF(16N><%UJ{kG&?yX~-OuR&nv3_fQxZUqw;8SgfGjY>y{Y}C{t22B^+uP=H zNV+3`(S8ypR`d9NsY_l=sCuV+kW)CAODB-E%8z5#;-qwt4@z3N!nvThRE36Op7o@M(-LZdi&B&7%hQVy- zf|t4U-Jeks5vN-0usf>bu#1KK!aXlDCo3BZrGECzF(dKY_hoFY($uh1XYpk5*T;O7XncULevUDkvLkfHD5ZFQhAZr7 z7;g&VJh84=$MnDKRGb2^!OP0(@yY7|Lr5mVV8YBTKs<^6gvUQUe6cpd=E|dk$24zy z1M7*SkYX+))9U_naax%>72{WwD$Z!^6;$4DwNtIrCAL^*SbcfOm%tP|1Ky>91zqa5 z_pC|Zr`~4(a@%UgkzTMwD)I*K>ZFu%8i=w`P zqsXC({{4N=d0o!r+iV1D$A0djocyV>9Gn3@#g_z6JiR(CMEShDFj&8TJ)f0y7tAJMsJNQ#F}pM(U^YO?2d^ndSQrvpGGIdNB&x=pmQD zfXMz+v~XU=_uJ-TtX%T#2j=0TDdArn*X~D{dEgrQ_7AJnW{9%%HpqwyfT9O+yj6kzrH495J$Q4`qWh&6xn*e(+>S9-C6M+lwsR zW)gWBiwK&wAexI9YTBC1n~DA#oOTugPZ}>47AaC5Hd77QmNti~1rYMDj)B>|1|Op> zd+nT^f1W(4f=7H-T$9!9KqeMzt=h?3;V15RTu2ks7&(l2T*x|;RA{_s7BYqyt}NR< z)u){?UD5EVc2vuGUdD_TtHqG(!c2M+d5)sUdvnkCsPFjwdH-HabX}L2B%XrEhUiMs zU&<$(l0sld72tcl{T|oZC22+HwzvBlY_#58D~gD7i+Diyev!Fft$S>5pDn0Q%9EfM zC;0YUEYS-J0?JzbYej%*|!?%gb`{CS$Gx z);`2|+7lgBDx`7CuqMaqaK!<`>De*XiQc}}iNHSBK`)+H5iiRTYJx6=ae0WyIfIU| z&iXpCf+xxvx?dF8r%T7P#5bfuquI*m2l%Cp-Q4u;LO@UfJ0-tHuz2fEk4E^ z*{|46XG4X}1=sW8uo27rSAxVr_nnR@{`OdUO_u)d!<(SQQtcK4hZ=SE@qfJA)oL2F zubi&kv20!m9@dN*39p+Tnac+X8&xY!0jz~Y92Qmc=HW?&N?r5%dDDc^ujv9Ntzz0| z7sOD%)QS4j-;aX&F+orS{ekZ>Pr;fA4FP`;7%0ZDsU^%1Ovv=wPqEY1#z@RE5Z;oo zy9WRa-#REaTp$yj2$hP2`boaxbe7Wcr}k$$bgw3|3U6~s@p;Viurb0-=uXAIC9GQD z`0rl)TiPZp=L;rS77%|^**{7WRRoT6&?=>#u4?-Nx4FDhty407U;-M(!OFum|`QnTPtE?m++F^ zAQ27XhWM}cD!C$p!eK6s!Io5W^U5@#uLi+2PVxAoU=On`&BVI0c z;4tOUrZ;lPZ3c<@;|CGswoUxb>c9cq4c0npG+7&D1MuUAniDzJs!jUA`^V1&!@m)f zn3AZ?J{PBI?cb{dkB+vsAZnx4zs@PyGWCdexUtjoAv?xeSvfUo@myW0%T;;V zR51#>lyQ#Zc#Y$%)NgP?i{X&0XXAArt_*wr;OZLEja!gacC#*Y*e3j8d2U{ISu`_q zYHWMmg1d7@QwysnV&rdt-vX7*b7z&fmuG@H$3c5rySXutpNWTP|gJ|pTb zHrduDI@L=0xC@PjZDm;5UffvUr-Ks_@~BGu*7>_!M8dd`jL&-H49HwN-#TiSb+s{Y zqkAYn`3+CXx>iSq?271BLiy#Ju_&`MFYdUxURO=#;X>M)x~wJ_daq53M_N=4v0{3s zQn6|1!ozr%ong3rwIl0hCpG1BwfHoI?P)QZ$=SJ{O}4=0X6L43RMlPM)!bRr+S=LN z6N`3wa$#c={y4 zr)FVGXQP{~?N`=(@24n4_o{eT=3Ey)`x(#av?)%`ISpbFT8t6JwBNccl!F1|UwrZoh&oi1J|hj$`Kn1Bu4C_&F#>^FUMc09AGHN@%qO1iU$DojQn)d`QoH#FYU~bwnI}5^Z7hkxTk!{IOu7IYdrIptygC%Rph*Lai%{x4$u^jpP^&%7HBc`Df{QRvdpvDKw!Ub4lr1>O zeE@DKi9M=qfYv^18{U;a*FIev&Q*ZdK5rX=F9>3v+`fQ26n?1Ko`O3Zei-?lggZ=5 zXm0=S8yarN(LE1$VBO%Spu^X)yJa4$(Fq9kUtYEqQ-!GsaNMB&NgBUkvFR&kIJ;AkmRxc1=5W54r`vf<5 zA1GhoyMu`KFtUSKm_X1o#0bEGP$c-!;r43c;~sG^}@d&5!z*zCn>G9wi@$l>M zpuh5jkAx*Cu!;#WBt>kKLb=DHyvJfeD8d&MASQ%0C~*Gf0VYH|C&tLe@+6rNRPt}lK{CS0^2g0#G9pXzPt74RB24qw%dn>foaVW&Y?ujX z`C;dYn=okwq~@8LaI5*L72qpGT*~lS@EK2Hptp*KS5L^kIUnox8?>BKtcY@NY7kaa?8L|5~y z=JA^_E`{Fbft~R>@VEJ2zB1>gPY5}K5ei98C_2EmBW;CR3%Ta9Pw1T4Iv}^Bu7sWo zbMqkQ+7;>*y3KX|fTHrg0ewRFg!2maiu4K*6z&$HoS--(`$X~z z`SJS+`w8Y2($D42|KJhLr=Czhu)INh!uv#h#e4UG-(R!PfR~w?RH1@OGis4xZmabRp>lv+Ym2!|p`B z-wwYZcfspLwjScSllQ>s#klQnzrc9^>VeUVuI*nv;Blwl341;Sec|-x=>gsiw;NzP z40-|Z{)ycyd_ni7?t$Npx$bj2=)Bo}!S|-`LEMe?3nb{{8%A_|5B}HEk%OP#U0d2L za1pWW!q!A#glA=BldZ#;A5!G?nzPek%hJ6xw9)CwcH4!7#xus?F~h?b`GLY4hzj@4 z>aUtp+Y{?QlxOGa;a=w%9(U*a=UiNB)Tbee?)jCS&4p^#Wmd5+tG7w03GX)1hE{fX zM8O$5Yi~OlDVQc`OEf(-&GoG!GFL2aOHIQWp3RO)aZ@|$t)j9FGlJx!YLAZ(EvzSMg zO@d4VMcMTuE4ulmKa3G%%uPdMQ1gf-=cmyw%S)>)Rk~`c+htZ2BtqT6%J@VKC30R$|>7xhY1M9$oN)<~y#g zW?ZW9usJ3)^OFvJbZ+0_h}QrL?8MWj7TcJW7H3vgizA0Tmo7FoBWrJ=EgerC`KGti z)iPighAuM3G0vk&_3&VGW2^G>;zC+xa?(F(Vze^_g{U z*_V-_Gf%E}(Zf$2|6RIzmU{TVnmat~=DL)WkY=mPIP92~kuxh4UCzXnUnm zz2x5YWySG<%_7HM%Zc^Phl*(}X%!i6-sh9CXap~YdIu0Dc)WWpU=3+NFwC$Z;; zNS$$m2X%NAdFvmiCSR`d|7dUzOAhiu`RM*Yu0{i;M;lxw{#s&uc{5-+w#6QhAyov)d{vQ%Y706(CRZmSk z;=Cmk!gW<_#CgYfmK~Dkxu@!LI9OrAOxandmXQp+F;Zbk9Q7?l( z3iaH`1x#o!v`6=jvU99#$%XO7;_`=;FGEOXw6r7#=*$wtA$uDvM_v!-%$fwVu+zn* zsx?G;ZL8pn#JxOI8HdEC%q|KV%v}oyD&yKpy_z^Tz9~#v?^FH{d}n=oV`KV*DHNo6 zs0q{&&IoJSc-p9^hFr2^lC&bn09ie*iIK=Zc!7O99&bbqner2n9C8{_vROhCBViN3 ziu=NqEC|Ci*cT48M8!4ft~v^&nWiEa)W)9z0Pe2TUUO>IT}KjFOXqlNEeU4)9=8jQ zjW9fLl;^L0*ds2s(Ff~rD+tOoRoRKSioBwxl5Pc|oJ*V23!)$brKgAHrv>_wB7Tuw z3RZw1S`-q@qC_22anhfxIl86i=9YMTX6o@lousR>vyJheEI({RL$4|a7pvNm2-b)$ z6O}*AJfbK3QGZG@?lKI2m|S{1VI=XKhp;}P$KvZ7Hzm4@tLr$mnlTf*=?^W1LC&Id)PS?y z76CjlaAW;Hg9?N~LW6UJGL=T>ohLL&y>zesI*uIqrP<8F=EO>spsk~tsMBDpF3T)b z&>2Sd`9)n|wB=?!`Q-+%~+u~I=H|{#>6PFtbVT$fy2rV zNRo7FO2$HY3ANB-Qp|%CQ6;6ZQ{qfMTAfhp&&!jHidAj=o6D^ZBzT=G>Oy}2@|r|= zqMz;N@J3ylnnpI!ZvuiOts}w`%J2bXAVNOXJhaBbozM+Y3ImNj`SFBh?9HcG#+p+k zjt5Yd?&u=&gNtwi%?~ZDXt(e@JmACuGJ#CXOsdhKjQ!HVoSINwt*(zvPjDpSCHY+f z1;eYTM`&f3=VIp=5@Z&&U${S{3eA7+G)fw1Mag);g*XNXReNUFph8#HlgcQ^5Gzd* zW+_0@pNut?Cdfd?IK+waq@=_gs%mlAR^9e{azwW_=A+eIZ2Go+9^GA@Ikk5;`PYxq zEX`-IvG6NO{pXhz)#OZ#Wdz!WxRY>p86zLpW@ihw7vN2Q<62|K8@82~DWttQS^Y4VME!X@Vim7A0H38q;FE|3b09d?KY za^4lbzP+vNyzz2A+|Ked7-+SMBB-b2S0{Fz;3hA?OFg^5_e$+gu+z}W-MR!%Uuv%w z5-v7%Ha05|q7>TkSeRPz6w~s2>m{1jZMGnZ%&$3Q$eihX3*pZA2!UJ*3dy#7f|1x3 zFNp(+WsVAZ7kf`yHeJ`hC647+MSu@^A`5@J6?w5F@%O%88ugZC&-8k~y>8*1>p^-d z%j)61w|sor3+;n^z3w00%b8V0yN}0ahK&y1zu#}3kGj$O@^EkEz9EJoe%A8k7j0fP z@A7oJ&-}Hclk)8N*VC)*gc-R>AeZ~i*4KWzZ1hdF)0=E-b!Jwwy_!nB>3VQAR4$A~ z>CO^?oFte|aX)z<7PdO*ySjVMCdBs}beaS)z%&o*XUrS$@AV(uHS0l6;m_r-Oj>yE zfd6#hAB-6|0b&M%PbY>M0%GKc)7@-v3X`&jrtAOJ29~;qtSx9EY!Qq}BpNu9Oplz2ue%{LQFUy<A{ITCd zS#~iNjrCy#1U8_6U_l<#Zn&hMdrv2pl!q}Xn4-r=^x3=!6BeBMMNIVHk`EjoEFMS* zNBn;k!}kR!M!`P-V}26h&@liO$a%=)fTuxsovwN<91)Z^Mi1<6$n}8Re&>zO3*CRK z;KKa+9Y0UgaXPvbq5IQ(LV+xXoKgY6|I-XO8~lVu)99ozN?`w|Y89$a4&Vw{gI<#1 zD{)*i%qYqBItDohJs*4*$T-5!qDhKacnqWg|APGgidcs?&EgLA7UI>okMpzQv+f!1 zR@D2^7xV5;cL)7drB~;J<@WzWbnG%L>aPs9hdZKNFwW^#bgDYl-TqI*<4#6bYsqp) zrHk6RXPC^6!J_5%e`z%Y=YG9+?zZ}Qy`R6^xjp!W=6=0k$V-8Op#lLxK><}M$tz?2_S*CC z1qM3#*=T@(fE-Pn>|7j;Oq}SgEez>R?QET${`cO%?dODz39Xxn;eU*DZg!@o)~!bN zbkZoa*qg4d))#9n*?5~RHvd`2Q8rsH?|ogaU)@S9r=4q071UOznlii6FaZnz0HE#~ z3-IAbD{jsLzyy%aeHVsDl#hLxjlJZCKl7WsNKKjg9nu@zuQXseiPNfl3pk=B5WM`r%Tn__4}=4_?y)%F>&|PW`qB z2=#do2?6O>ZL69ZPAH&8g!+RQ-_~j0pg4*{jM=Y#M}Avd-@SB{#1zs|?a__zep}mq z_k6&>{aX>9`XTC@Sf6HQj$mM55x`(zQDAr4Wj028w%@x?Jzv*30u}-{*6`NS{{A*! zTo~a{0D$_5fu?eEcXr}$KwUO30AToIi;>dNR_*`he&o}WzDJ+=s?AO~e$D0cPx;Dl zYcs<+#W_E}4!{-^B0Ro6HF3={bq_h#xypbm5VncV|-}{nE%nZ?5kxvlN(@;VX z^4;KyZKsUY&r!@lSiBN9u4xnKS6+`Z@kD|E2~{<3<|}j`YV=-_@y#2x;21C6nA?z@ zcWxbfMzPu;meT%{#VZ^coKzosxWnnMZbLx&z7ERq7qj6Vd*}e=C!sK=TMX?OQ*>yN zd`smTbjhcc7nd817X>5yj9B*k@?H^Hd@=Hugxvgx=T-rB4vzD{2x#7NG@^7spFaX{toGcs$hS)$7Ng?b|5&t4B zN}2)7fIA_=L@tFa0=odS;j!B;F2Srxj2y3?#0~kvwX33{qH!=+#t(_}xviVm&SToK z$CS@edNa!&v)~F*{GeFC4h$ZJnFQV0%vMaOVGx4CEMg}w;v0FJl*z1DWRyVjiGXbM z{%8I!mSX8#GNk~V8l^qwCtK`n3oQG#wO!msGKP4c@DaolO|l{ z4w|d_9lf;Rsq>T~?8%m|Nx_4?;R!7sN8{{Mka?9Q-zQoM!@Fx$DWeY*E4MN8Uw`Uu zM+I)GXn(*`80uU_aMR5ICCN?(1Sc!aIs{geT37FSv2ScCM_3rQzlRI@?=#+HOSx-j zS3^~Bp>LROzqDYz;-Q&voxK^;GZusC*>z$ePsJzK?hdSGf4|-L>H`JiaD;%4t$A^E z(|)F%sO;Aw4~fRmu9!F>QgK;wo_yRYaoI(&8CPi~z^xj>C00fkCQxJ0 z7Yc^?k3E|z4ylxD){%8WS9llep{6+~ala>lC0Lg>h$cQ~r|7&qI)ze(0QQ7OO3!VY zY=|z!FIn8~idEe*|BXrEA;UDLwB}b0nB=<`C#4QJLgDgr{e>U>Jjx)!LvY(GN!Mb8S3Z3S%7tp9b13QG-Y)LVBhN$}@g)SCDa0jh- z1KMX#`EA`i0EZt~eOZ2+a6{RN0t8l;3tw`|xkcCfIn`)?NSu~l??u)dL#OZBunij6lD^RpquwUY2RC{y{z5YA@Hjb+@&<(33k+ zLo9X4Nck3A+v$tuzpZZgT^w!xVl$Brv!hw{HA|tK^@EPoFpX{%PY>okVa~iwRiPL( zGQA$=lC~vrEHuEwex2-+~?mV)a-fq*ewtjXQ z4K_0yn<|%Yz8f@;ZM66!>n=H$QH|p>_^BHn_*mR?^FHhP0tqKKg(o+a%OjeXUM;)&_efAxy3&C-YWjaLXsq@*iaP^L#b@b_!Km!nd2a4U_PprB1PpWVgJEVk zfcGkMzZr(;QZZh*bi#qd-N-(evH}6XaS6+=fyfCzG;VRZR}&$Kj=m5WAW(E1`wR4NZD(QD7VS69 z`~xjc0WYkLn=Om3*;S6+h&3!)7KW=%Zcc^BE;G68##vAR3 z)4s~Y5m2lNzRtQ@W0xi9A5%fUY+vtqAN7{6ufuU2z|isVraW6V9zEZ;y`I*zs$D_X ziB&^dcHY0h@-_MJzG^?Kg;I=w&R(uJD+X-J{UnAzMf_MhvssV8<}JyuY*{V6%m%?G zG#%{rC^xW$r#Qhr>=;l8#7KgCK$JS$fh2>HuSKsvSJUI@`}752uc`VN5&J6l#uO^E z0xTQ8b07|korzjtdehLEo{uSIJTin0T(>gk?}3hEh=-lNxK**JZqh9YGY0vk%XFnt z-^>(j#u!CmXnE5WQPJ3GX?B&tkWmMFP-z$SSa1ZnuCbsC(?OQ9M1V1Aiyjf3^M2jH z3nIkcV^QWZHpbRjl~Fz|-dUwuS0GlDG+PXh)6sq^>?HVX`TyO;%R)Uyi&md3*DH}Z zpJ&!w4uuKN(b{Wq!LND8pRI5)t9EX{fG_B+iDHKWZ|E(F5%txk@N7X`8>+>)$XT`} z*{zAKWNp6538O<7I3Jl|S&qL;E_|3;$kgJ-2S*wCW6(Oa@|S7Fs@(~DdXS|@E%XO~ zk%bf&Iqrf|M^R{C$rStY%M*Y@jlF;_)zTmECp$2bLVcKWtQ-ct!BpM3PV^9{s4fnR zDu-jHI_C2Ni85lz&zY!i+?CQE!`A)>!~oW(cT-ing&eWaQX zyYe-xK#%#?0h>L4#y*FAB!lXB1OR4<&FDcV&idr@Zc=OQ6OaFlr0X(n*Q134>y(a& zPtXTtgqkk(v9A~Rk=yN}nx;qe6ZaL66uL0RNz;GT-@~$WmFV78?lvCeV;~(dq~>FY-oxrzH1QQug5cs$t$hFn?VjLCDGXa z=o^_C@s#?M5ks056xQA8W#skK;V&{D>faNlxB9j@gI{JEZaKJ^nz12$stA(0v?4z3 z0b~-j7TqE^P&S6NcaVCm${)WQXWUgZcbUNA7UeRW;K>31J=W2L)l)?=CLN*j#x-GQOz|&ocwYIR@k6f8&R!ZKMV~ zt2z@mIsPJqEFK}SmfKH5=(Lp_Q-PY~v4dJBWUiqwz!bFH>C>jAx$0(>I+#%2uQ%EP zvldDYu?ETD-Ml{9NdL=v+NtZ4ZDN^wuC@A$7(WJL`yyN$b~4R7?|s&(qRjc7;mO68 z!y49Ph=RAiF9Y{0_9?382{$Y_SU?8}0FqV2;3u~D{3*4HYYV#Rv;vE9UJUk};4)iIin6SRaf%x_VZR>|WX z?E%}z_*?J~%O8A(!PMS8x3jL~i9$^T!cjQ%yHT}Y%%G^qfbhY>S>^gp`|>uyndt6E zI|%@js*e6)k3=6$=kfw|C)#ELIu&xqT>12{2r7CHF4ON4hhOxq)gbX!8g(upIYBA7 zkA`24?KnH5T&+t05H$F#ddiSFO=+Z%r5(I1H+|g5;kC8UPm`?`q=682d4wP-U%-k8 zTf@B09xpjV$sLHYyJA;8n+IPwXQnhwhTQN!+k{@zkch9bn##$Zj)vCOJKGA@JG;We zhL(xBInMy*=&3o)miad$`9A%R1{)OiF(3^5QJeiWn!fz4LNPj5Ijtd=tvm7y<@0v$ zO68#-qJ#`J5KoOLhgr_Rpy#I>2|k%3wvDt8fAaTDzd>Lb=;ycMMacP9`nAo_T%}3{ z(4BLQ0+~B6ASLPiU*d+NIa+z$y@Di&zbyZnDoGvrii|dV50)l+QeZ4-TT(tm4XCu9 zhg{~0Ph?7at^{M>NbEHR^zqeWRC?!hKcqDU7ljD4k8B*hTfY@{_nldJHR~BCnxw*t zj}`B-yjNWuh}dJl;$4kaG+n+kT_`XT-jdnO%Z&xL;}7ysDV9BPN~^6z*dTf)WDY6o z$1_0Z)zebUhtmw(F1&LQQRObM)jczI*oO^x;*(T#x>3RkSuWBX%FaVJuqNg7Qytpq zY4|R!IZUdykq=6SFC?(~zycv)uF_Hnp2HZvP?<%7 z)ko$ycuY$u)lT-3NYBz*hFCG_b2Xh>USZqlPc;CK(}Uc1H;cff)#`*6`C(J)FzAW3 zgnsGZ6mIoohl(gN%r)_7AbM@VC;#{#5^-XPLqRycNdozMfl*#L7&G1N}rw=e=KW z4-Q`e1Fcl58&+YaZh1hotQyPfdoyH)p|QRrID`zyjv7@KUC z8AG``T;bnCQ$>#(4d?s6hkh6u+2(41^0vO6JF_aJ-7f?jV(CJU7MEIB4@epIlKBaE4BYKZIO1f^s^;W!uJWa;vxEK=K=xxNZyx!|k!s^gi;xL= znL8Q@Obu$DoHZ#|VPPLp+?Uzody?^?lCn2~gHwS=rmJ-Y^SyQHI*CFlZe~b);|iC9 zw+Y{({Tn+a#xS{CLoWTMc?$qlLGK(jm}ovn(0N8a9u8v}zS!fMU=W%`a@a;q$;ah{{P}`APtMBcnV9XlPSR&SEmiHrblkM=$&CmB z@KM2P}LV2GE)xnU(`Q%reHgFRmnx3=hkc07Ss;t@Txi$vhA z-B?CvOeF9_g;an5B>q801(_hzvKLboj&GqnSc8&_9Q6iiD3bv@Fd;QomIIxgdC`#- z6z#VP@&x%yx;R%UWP1GU1GuE>K!yq8{Ivnj)JUCP=PC>n9I=)9-X94ss-OnNOm|+( zXqo$=c91G{3fnRvp9IptF&_{(f>r38x&7k22pMPTPnW#6*2}`xcP@|K;nSyit4#Jd zEDov8IT{9Zs!!SiDgj&*)~P}g;VkNm8P)keJ}`N`s9_@?hX_Cx?*L~$BAiI2;pl)i z5%(AJN-R;j+t~Ze*%}ALHRw-t;VmHOYh<8CKMBUDMX4ndo+X|5!)?+E*|5Y$I0Iy3 zOkey@>yxXc#mat6h?YsR$aeem=~ST*W z@t*DJ1{^HMiNT)-!+c047|ziZ)>TMelgmw>U?ghfi!x(ch_bX0%lZeIcwCYrZDs28b48byYzA7NSF_`7V!x?oj+SHrcAFN13{c$vOgfO4 zmPmHuIK=s(km`P-cUAj!Be6p~#zHL6)-wmFc7Nsa;(#{wP+4{m!3!)aV!n7sM;@?@ znMX#6&?PxerD=1>;Vun850&Q+)XjV0hI4_#)JQ%2etBb+^n){Pitr{*d+2tKl_yjL zG|QPS_kbtJhJtWNtB~4X(vpP|#2CiJ%}C&#%1M+Rb-{76Q(u0wuAmhJ2F{@)Jj$iW zDhA}xK**%M9Dg#$@ujAiQZ3Eqww6M89z|U57Z1Ijc+dkKI0BbSyNtr=Fw)&?eqvm& zMUx`P4zb-{wDss~6_0mD7J|xE7_Tm#~IV6y=vz7nRlk72nhpUo<`6+YY*Z zO%qC8-QO}jG2RxZ>$INWSaMB4wB$g^Q8S2PDQ@zgr*sJt@leFj9b<5z&ja0LkV5S1j2Pv^+lz$yyPK9}?G&eJAI?U+>K}^sU zW=s>dgv5MeznG=L8q;Sm2R9KBl%*DMCz0r!vFNd(*Jz=)>*PgRjeYe}&}%<4zbPz4 zAZQtThrq?oxd-nOdz(Q_Ik;C?AJQq0k0E!tk5@BH`WnOp$vl%NoK#Bk$N+&$KM?S* z&)#Oz!!v*a0~Bd2=M9w@SI%TdG~ zAi#y#Nr2G*&Z2=iPh;Z9Xmyc=&uTLEt6FIkXGpM|r-t$-+?h5;!4k6)_xkAnWBb^v_bAg%_?yQGK2lwOzZMvFuyPU+jp=i%>3VOfw@0mFq zel9^Pb>yyOXmV`vvGM?NG3{(JxPM}z&9-NY^pX(JSMa>>`L|UQaaNz_)WKujj(uXE zAufJ7v)kYId0RfI>1hio%;igrL~?1mp8`#BeYdeN-iC|b_GCp|P9^1O$Q0&q#GHRv^%*%${xL^VPV`pC zj(EzEe&;vfS;A#$I1mr__$zYrDgNj-sa(@ zzXy=1zzMG%hJ0sVDsZIoNVVWDSFh#%mFKoT7D0n@T{n}*@QGm$_X4;4UjR-(vA;(& zc)lu1zgUcWdEKP%yXX_=e@Mp`l+pLHEJX0ml;wQpml?}Os)!KtU{5@m0+EgATcy}T zWr2|>qzBQm6!T!uN0c2X8B*b^O?px_jg*a_`2LUUOpvIh^E3XD}ycP87 z^7LqJ+TJmGg!1IhKUVZR#PlK^_DHPY%mi68NziNs`W(xvuLqLoA1)68o6oab-&N9< zmzP!y@5|e>XKogks$Y;#%3xSo(=JX;`KlY%jxf_D+(Ae4`LZVZ)hg`;4?^InvZ;LA)M~#vj4B zOn15NMqNT0Ox;b?CmqIXQa&rQsl)bq_AX7an*^;}EuPP7St7hdjegzqT)+~LuxVY? z;jAsPSxoc?jwo*w*|rV{BpO%TcInq@r61+{bX%0@@OT-X%aL2X-WQeNiFaz{Dh6eQ z7o9HYV~Cy-hWTAwKUYR|?^x}{ka|;e*WMp2U$lwKmjI`gDTP$9AmMXCd-R;;{e!6c z_-kAeV(!VTLXbPzCPSCY9K9^EE=~pvGO7vFnQeHUT$06nD49}wo)N7SuWRIiMElB| zoehSEu0V8Bj3^KdWMLwQ?Qm7-FQ!c4BfwHPA3hZ4+xhfxwn6;{q=HB}^QJI&b%v!u zlg67v#GmBD*D+UnN>hCNJowx=;YNMQJn^R5Q&3+R>;yX6GnijDhiHML^}|_d5V3&W zpuM^7a-eRqtHIiqR|Fluc0|+M)Otnx&{a8VA>F9`crcl1^3KyTa2AU;`{CJCFTEz* zLjELSylrUZyj{W0GmtNC{=7E@(_&gCKmM6*Y9B&l%oD{it?}?S_-~o8mhyeJ87R~# zg^!3^=vhTcKnmJb`Z-%QiX+kxM-?EUtBA`j-(i(&h)A}grI;xZh5!*>CZB;o2#1f) zc~&10TLIiRiO1-8$M}9%1>w{2g_51E+B?SgF`2B!svA=@aJ1DDba*xnv|j|_V`3y$ z6ESaty&3L!o$?%8>mVa)-CF>G3{BiG$vQT%QQB_`syYo-GsXmBg!U4wPE!glPYd5r zcLynpA$6Ybbjw0AqI-S%w1pQaalS000dh{Fal7E3mhLM(A&6`3inv)yRl1nSK zLMXRXS7vNSM?4iE;jgd=(kIA!ellbvA~3~txYZ(__RVVce3c->=0p82 z&-yy5nDDe7E*VS{lEuQrUfmffZ~09S>d2gy zV~NL$bG#>L1Zk{owABp^K{NeEUIVijTXc#C6E+bA4Y=?}^N6Y{!kHw70rdX3IlfL? zjD0eBQHYN+==XrUGoB4R*4lW=;xM6q4am9Ypo`(*2Kj{d!S;v`ho2nC>2y*DK>!ty z(}TsRNzXi7yv8YeFTTJwO7IU!@>;4;BIlpMG1ua0qHwlP{~q(zHf$Uy#0OjSeV;Gi zgvitPJ#)&p>M5o?pO&kpUVzVP!9jt89MNRZ1x#nRAKjGt;OC#htgn;@z$1+E58T7J zgaMTXM&|1hh4rZ!2k)uA=fDJ|p_?m6QWaQ!V5kKblV}V+QGK=kI=B1vD9naKce2KpN5D2+d!FO+(+ey7P)~& z)P^Fw%e)h#7dg1iSx^G?1wzC6@|z`9Ov9*3Ba(1+DJiT5nqo2^b*RD`M#Ns%xsOC% zVR_%c`w?39RLRGZUKo4mCy^~bs@hr^rBm{Ae7^jUxROxszr4{+LvaS`$MWU~L$reU zIJ8#LqzKC7IN}g%$H`<;KviGBM~bo3fSb5I8-BseSrCjuF#~uD3Akk#T!@Xc@Tn5x zsE<&p<#dtK*yO)B*E`HEN#ry>$_Pu|?@aU&E)dcEF5wL4V6`+Zc`b7-)-7U}6VY;J z^@V48c+&0?Tj@=NkQ0(z{_|l^Cte!S`Ay0 zabu!RMcMspnE&J;9&n{hi81DZjLUgcD}3#Y463ka)ne`IfTV`gQw#T;U}S^?+65P`{P(92 zjLvg+Y#}Yg(ZW-LFKgmp0WN-LjEOX*5H9b1ns-nyV3NLxF`RG+FYf$dKzD(Yeenf^n*%uoPBIvoUIWJAiRODU~a4J)i8 zQdBT{7h%y+mXS`A$B?R`gtBZdFU4PyE*FiC(0dlXll8~4k{fj&?kb>ZmLz!-S5n!A zQ4uAWkVXBov9~I7IS#A1ijY+g{O7{d7^n;*1a5$8=Ex`fi%N1_>bz?&Igb?jyw9Gj-`XOr0opOc7i;=G1sB|7uFQ=*-nq znVoF&Q%@CWCvssruWE^R()8J<<=i+X;!j1i7jdhWpcg4=P0xdK0MIi}l3TJ6%ie2w zuVKrrw_6uhff+-6)={kQw(qWRJwWbgG7K_hp|U>TiQ8Qa>vJhnE;jk}PcBi1RW@hF ze06f>Rh6~mR&h%$bml>Qog_hM@H7L-r4H?%CEHGUKCblLcsO}73s)S|M&8E?ybMe~ zwE49vXSCV*+NKGM?*8Eyhzdkp)ajMyJ_}PWGRLl+9+qChKzOIH7g~Lr&{b2HmH*wm zQN?xd^#|5!yWcZe!iYCb1b1tinVnXdIF_{1()4YFE2m#6|C(5hu8`(shpy-MneExvW+uhJV5oh7xPqd<O~=a<@4Wir@l`#)`EQ-aZR^2T5gBz<&$^pw%Tpi zJ*&ST>O7n$zms%weY+jbWgm+c1^nf=#IM{176oqcTHlY{GIg#Bg-q+7wUL(xrH+`u zM`oGGR+UE9+$7C8qBqpV`G%OyBLf_Z)FnK=*ycn>C)l4EVM$!siiOw$%?^v*CRX_j zv->?HJpyip&li%xaRz-=z7cxGr#e7_krifQ8vu^YrRx`TUx7nuk?-U z3{4rvVbSoGm)p0)^Wvzl)8(`DUxPGWc!b?wDVOYKeclypZft9Le8zWZ#Yn8FKippO z#N%`+B|OMIS9>%!mImrfxVuc5QC*1{_66ZRML%fjy9RN=P-eH;^B!Pqt{3?-# zTZwoVwg`YzyBQgYHvNnh>Q6~g<*N%nZY_z((jlKPtd|K1*$j<=+QR!{!Y8$$*iLBK zzQ* znK$r9)*I)@sLtNEp7Bnpq#VUZyA@0Nrn{+b#?a51j1Gv4f(fRMbn6FG{kg+HE|72p zG+65pVqFf2P5|>1`{v;%YLMb87Jpk@=K-s@s7v;;DOf%)1{yw$fVb4(Uy(IxdL2P z$x(bzL(@GksRWm*JUsL8|LwLCuM^(NwyL|KB`MIIC3X_ZI)+;1tgfHIv#henTx+^c z#9C-#8-Yl7ymhKF$W2dMmK)H98bsx#f?UE95o_=~&*;oc_f8&E5EOpUHTERuw>Fh^ zcq!jT;=`tr2hu*4BhkH&f5Tdbp|OGogQ+D`_7jwfC`)M;gyqKrb2=*~`+XN`Gu;wR5r2vCai zmS5a5Ki6K`TI()v5`9zx6`?lzqeRF*8TQz5TUFQnMtt$zJ8CHNLSvijrYscx5LSmL zshLqTPN+N3Fn=MwuG(<3rSj^W`h00MWUdAlN1EDz>+2~jn-KaK_Hl~r~t1!q}mFd>X zz03nob7X6yguXdm(TXKYk! zK~t;ou19h1S<@bJ-0@IS#pX*%<3L)stlG&<;HAv-q3gZ{B5vz5w)KEv=Mv@m&zbC- zoLRq}p3CgN{3-;!nc|9!5HJAMFTeLQ0L*AfP$?jK>=qhuz?Bn(e~UKP4IXQ0oKsrm z5NtL-X|jHv0>PsqEX3~Y}Ih~o+WM$tj_KDZZML@`-p&wJK|!ypl6YJR*p>bd=ViRX^WJR zGVp$hr%`NdPS^`G|4GxU@+mXf0OVfYdY^8J<# zVzzX$pcoC4BaBp)hiWjd>J&dw*S|PRZcwMgII@xb+1LWUAQuEetxyWlW$uP(CPja+ zZyurbGhh-Q3M==K=Tm37V*g@W4iBj+M$K z29-@3mgX81wTjP3lcAw&}`+LHm{W5rOrt1ej z0-5LG!`|ub&$0@+vNi+ZFpwBUk%S4sZl^o9_Q#ICR~67p4ipAz9LoxLJS=nV`?T@u5}I%jZrwoF)nTk-aVuOqZH50Vqvxu! z{_&72t{_j|?xbvR9MOkca`~qonQE%=_hkXEQXZmA~)bFB>G3tI zZdHE1c6Bx$GKk3(2_gw;Q0SZXqJ}#f{M){-US6*lFE?)!w05)yN+Mth-IP+phQf(_ zty`^OdJV?QVQ$mcS?{LUx2By=Ia{U3R?Oi$vE++SzP&Qg1IP%xC8Xp}Rk#BI!XC!; z#5vX`^?7T-=YL|Z%A6IICL=Dg1wg2AYBGxV;{Z`rL7?lvdF%^&fIF$>V0+;u45)Mx zR=QlZeX}mRY1kGb@ktAKmSggB^nSTMd-=D-0K1*$Q z8is1_>h#luf*<1@Do_LrL{E%!)4Hs9QPfooWo0n_>Z%@@U{2CZN z9tx~n?&V`$?$;X<)GR|Es%+_J54YEnO53ePtc*sxO|mq?lS#JpbXp7c5;_{!X38up zHUf(nBVr9On_;lZ(=c9V5_Kh&jFjB)5}VkF7$sb-<3q^&P+NnNs>({p4H3Ys=R@y;sY7Plafx*a;V5y!XQ%LWUxlnFoyQVIn)ythCTsAm zhAtqj=Rj_1I@D`-x__g}lPEtVyGxBL91B#(cT`zs^DK9++!x22oI%i7r!{4Ay?^eHSEgEq zH!6Lb*Lhs*23EN~kAtUu8t$NN-CsPcl~-7^TaMTin4tA(!<2lO4xM!ED6979pplN5 z*X^mvcGHs+&A3e2LlX6ws^le-bkgWO$*%$B$2MK&dlUKEScQS%8e-{3=Perg{)p|~ zrm~DWY|OJ4J3_5)tS4k7u@n{<5_psw98f@wT3FQQz*g<_Eu!GgM&t&F1As9(n`o{(?zxC1CzPY^x52pgsy_NENOVy0&aVTvobynOgS z7?v=!Qdr>0a%)k;_$6;w^|0{3p^$!9XEH7hAe*w~nrG_lAITK-3|YD|x<6n9A~MZE z>txEm&`|R@Nj*3{MQ^qr1Sc$9^2fdErG00*IQX+ab}^>AZAx=})*%kvUVX?3+S51+ zJy)6Z8eR+^XRtY!d(ATl2iC0iv%AuM@82g_H@d?os z3*&42wX;|MsFww}WbBkR-kRF7_1H-OKcB`H2g*UqQKTtz4imz;-wm-C))TZcUdN@9Hy?`YHVQ$ z1Dj);xIh@%yycepF)`l0$3gf$IL|y%I5OYva_LF1FU`sppH^qrYNTiMI?8eVZR;hX zo8I;Ooz||FJv3ODQt$}@fRtEY0OgX~JKV6{08{JXs+MbjU1vy&NBPR*bPnuH>q)C} zWMktbim7-F9y|M^0w`fi+c4$~T#1E+O#LGPdSVlE+=}U^wpR{|O=Ci&vZ}b$j?p1z zwD*a+{(0g+cp@mn7_^e%5?t(JB1_N*Qr1h4cUElJo%Ogz6uml&E^jwQ2;3;gN5SMd zWdyKdhRxxzVo5a?LjA<=W z@yV$hiUcc?JE+?B?IUe%AE{hAW$J9pXIqy* z!M@K)@lu*_70R8#--HC%^~GUt$e2;KTfAOsqP3W-84u)41@4~eq`48*UOHla@Gu{& zN`x>}935lF;;;*QKu&A)%5jDv_qA#?ZEV~LR5!~Q`B$8nXw0mn&T8z#_3x41IC=t@ zmW?A38?E$9QxSvFmpNSjCLowe{>>(4jEzRM3iWMnrY#yZS|o*NX@+awbA~|kNE>`7CV_4Rs)Qr~`gyzclOirfAQn&`6$s$aL- zR^4CkD0w9KegOdZTc^GOAx?W>ECyMieO&uD7n;8!d1fWt2Lc~zajQAGET6l-hplV+ zL1yd0IBq)b2MqC#H)hLrxd55+iVoLSw+;%|;{A=hytj?y*jkU8&=zSP8XnU+zW%Y? z^5l^GPG32(ED&BmJbNrXMXz~x_N$osC`K6>$pdN$P{D6mjo)!@1H8-}R7(^M%TuK<aTSn=|30eBS zHux;j3InB}0m<-H_3OV_TFNtvU<0(A_7s_48V$?y3h1q}d}oev>no|)@VS?=L+TZt@J$fF=x5CwWE4h8gegb4c6RH^YS8FnC?{{l4_}=ug2=-q0 zwdhf!a~W(7(V6ylMy5UqJ|YF7cOAZ@R*x>d;G+53pJZacVE1IBe`h#?1yKrLOs_U{ zaNpA?Qe6urR8-}&_W|AaBSC|^OMcUtF52HFf^omGhJC*0F0toac^wJtVcv8P1+f7BCIKF;+R2ZR>wGAL&hWy@BlFuIVOYcA^|^I5rl zpM}>`YPR!Z-MV?RSn1`vjgIRtQMP*VFOmBd5W>pBe@0PzMu?$8+2X`4{*vUXuRI{s zF=F!Ce^8t??&~B9fN^;G1S&GXhy@X6OegNaUPhDiep!nJxIGpckBTw7V*kCr5ZiVU z5z{DDJ1eFT+q^7T!_ucWl)E3mb~!sL2uO&715yK6-^6=MuKI5rO|*?rR}=UKWgb!8 zUq$U|R#0yc(cG6#xpZJHDY}N`oD0v%G9(qcE(Ov%gx?rtCe~^|<~ZouZo|M~PrHvVY*;C@ck zQwhmNAQUA2;Ail8lr6S^uG)R%))}aDn{#GIP~X-#tk1gbwvGB&SzMMgE5E=rXRmy3 z#1^f*0Tr6~I$_sS3KHd2u61uy8)H>~3&VBlJHh_6$5k4I>MhQd$1=dD3dy zwx!?FBu!{ib?D|=-pr!r!8bGOw;dHXKS_kcp;U$9r#B4XoeSJcZ~fz0TgGf+bqWl_ zG7Nxr)ty#Ulk!vQQQ2PEnWB-K|63ti;qd}HvmnxuiFL)Tkt2LYbM|cPC)Xpm9cD|) zIr=L5Qj{X-@f>PyFI8An(8{a3eb!O)7)qwKP~}w-Gq3IE$RVSv(`d$# zuv3B!>{|w8kZa7L%3ETl5Z^?R1^l<49+$*=4HD)IX^|I@FkkJd#FiLjYk%acH6|KR zWr}HwlzkyyLqp(ko`7ECO~92H0$ysG^nEWn)m7-{E4td6FZ()~SEMtA*@M(xK4hBZ zgKjB`TF>0zAS*wc851$+bunSgujBGPF{%p5|C-i?NHV~{eg5Dy>HGY&-}U>@5mdF7 zIp!~2IY<}H20AI!+(?0bo|Zn{GAvWQXohH1uwX`B!+V*&EdKG--a;`0{~i+H(*mJ< zb(~yLTe@GOCLAPL>9pff*4HpF_n{;#n?v>NIBi_M%}%Z=Jd@+L!V)bPMY zjWw}yMyTT)G@#=4y4@l+RL*j2mpJc|d$1C7T*g!(RLMtzZpTg;g!IxQ~CU>l0{VTWRmC+Z|sAzpBf#xOvGsW;#=y!^e!2{yh1LLBQass7NSq zFr-d+7!;lKk#U%JP1&dj3K6%eYIA=;MdVc7TO!_ZjLqIzkeG3iovpdW(sFqNU3)bc zqM8KTVcnV-v60vLVgG6z6U5acYy@^;(zSa*;lxxcy1hP!&t2w1a6&yw0p7KT5gSE% zm8nDgl9vf*#1atYQw{Hm80qOD;<-Cf{%Xq-8f~Z|hPXg)$f87oyrh6h9eY}Vj_u2a z1QlHBJZkCuRh>Q(WgNCylI8IiPMwG_Z#7TE2gfX>&w4#kT~F|mMX8FR1i{7oB}M18 z*Ixk>`eCfr_wA0$Ip{M(D>*myBb}24+>36RzHZDPq@ouO;Bgou*i+AV2{HJm+`Y4u zjZRM16(CFciEYHnXx2J|+itGNR)q%H3Us*i_q*X+=r_f7_2_0uUC*W6X#>D5w0xa{=wr zPXL`|P#!ftNv@NAuaWAhF(ClP`=S3WyaquyVQ0i@%1&`!H>@`5!)2=zurG=1zK7kj zQgzg#!CEH$RiQ;nskm&maGqIjo;)(?xgr%`ob2=zI@#$tH{LmBvf0|{n2xgmh_fyP zwIK~?Nf#U1!ZZz1Yo+r;Y7wqS(?WF&D`NVXnRHS0P!gSW2+=PL(2z0unN%2BH5`}a zmGs*IhgLcqE75vzg5x;)h-!q6r?GilQ&gnsA*p%@a)IOc`E@v1+qfkC_!HHIghrKh zMp+Zx@eImTY8(mzD_d)fYG4@RN5!V1^(&EiY}3}JS?i09@r^VTQmg0G(=4_ts_AGV zttmaItX0cC&JZ50uX$F_%atL^*j8Q1TI)DRUkVp$R|^}ivT&%TNb2+;)~r!BP^cd1 zI6Zf;Q8~L^SB%W^I55DSIiDV!5&aT-xzTzL79_&|e#E0m4WgG43jl#+@VEs^B) z78FuoHA7-bX{D8Df<;L{r@7qpc%V^0hq*1-O0&a%iT-HnZj_?ekRdmd`-dafosPO$ z3elrj5Urt}7MZ36GVISyjp>PQiPFZD7^Kq8X(oarX@z()ZjVBR0)T#u(j%SneKKw- z&9D>NE_VjD6v+c`vB(rc;GxDI86PN<)(lz4YoQ_*8;ZL%ZV|KhM;Q%JR7Q)Vgt$AC zPKi-K_bB6<<)xz}y6WjAY&TIDKaR?5QX0M+u~6h@LJ}c&n$o07#+_l6!>&i$*^L14 zN~R!#c1s(LXX*i0Pt&ZFyG&o{B%6?Qh_RbtjObe-X(s+2O&9GxN*3awOhRVeQh@{( zp1PnVwG7*%HX-3}tOg62hOHtN1SHxlO1&L>2=NkZG9poL!3KkfuoWXh1W_j;A`%f3 zBeB{HqMk?svO0+_32zCR{XFpjIVxc!3Oq5&lrJp`;i{l0N+yDd9+@N(vI=HiZ;%BG z(VO%aY;qEzT4ylX1*=~Q%UCcSXLj02Xd! zGXqFr7<#>z2+$Kr6buH85R5BEg2*G@Ch~e67WBNRmx*W*B)eH><8>~P-2=ebSgQn` z-fY$j$YLd;hfb{3#9IX~jHQ7pS2&;o00-m&xT``|odub!FlLfof-?U+Z~Uhs+Km5gj5g=)9QJ zSc6Cpa3eW*otNk_Krui7;0iXg30fc%tBw%N>l$r_pxuV81X25?0F6X18qLTqR67Vy z0DOsHF~q=SH%dCaUPm0V9tk>Lw&|fJBe7wVL8p@>5yPkoI%MRr8F~OK4Pk>Q4BsAp z1nL1~!9-iDgK4IaMxX*%R#+4OimOCexkjufybU@-3~_Uvy~^t5rD`41j&PlEiMKME z$wf6GODMj+sF6$MS8D;xnZyKVbL|R(x#D!)SkW>K)H%Or>D0vEF!WXaiX} z)5%qSlT*{_dM*@7FX?rDDE(&rO)zWefXWNyQihT_u}SAy<%nhhXg0DyCl$;P~RVRp=Ew z{Sf-V87TW>Zgnpj&{%kApm(*vweg@CS*$?RC(z~hL#In047y)^LVeUji0YJIwlu207i4s6s&HRg4Qj_np`Ev z?3~-VN!(;^3b&YB$+-EHK(T3@gbX#TU6yGVsPv0=^CXnGbfvFXGt&`FT!{$~Ltb1= zffqh~)g6mA-z@g+=$P6o@VNsw4j;PlfaD6KXRPfq^e(vLt~(a=8oJibNC#Zfux6K! zEGAX;d=&QVPqIM1zPY&1stW+CCF4+5jjjk5L|rhq;6o{BQVUjkP3T zl%=+qwaRCzBSHU(>V}yApuaH1f5IP&)*STv->7aFn~LnZ=-}cVH!eQ0c=__BJ9jL3 zW62ml%EqAd0I4(is;sd#Nj8GJG3NhqweNr*{|Oxa>I42LB&x0(ov85khl>v^zUaq` zcigme`En?Ew6|#EGRJIta~fQ5)IbY0sYpMFrCq~HwMfdn{nY6^Y?t?L#c0CGClTtH zF|htn!)?!_+*5DE9=hi@X}|R(n()HC-G|oq_0;|Z=#A@P&6$~geUMsxXHb{XB>Rh! zHcj*x2%>1p9%5*dK>zCwq#mM@nzNb)DQ8$svkOY%P-!w>ta%c?kmcq zZJDMnMqjLpp!?J<5pCN+McGV=o5!u<)^j_!JGlK^+2+517=MxNaSS=P6qh=~*%M4K zm&s_>vv0_->u82;Qz7Bvq*LZ%nwjBdXV2D~>z1VM?eEwaoxdb`@7&f&i0?(abyC(A3On~T?n!in>7&q**wYwh z4?Ngz3_Eo#K4Js32>p8iXS3?UEdx5t^ETe6=CkPVKEiAFFxt6M$JKKYEu^D&+_ ze`b$xvv4!B0_`kW)zB<=6b1B)S{sNlo01iN*O>Ie%};K-^NQiWZ+YvfC$Gns7`kj` zL*eQ9SFS(MPjo$tvP*gj-}KejC{^fDL$}RjP_OK{Zqf2CJpGD?w>^0U(Ov)eQ~$Q5 z@U+2X>oVX==N?*rb^q|+dzNGu_2B7Vr6y3VUI}sC2J~px@Do6w zm^>f*e$0qozdcc6d5zUU9jkNap;#LIAP`4#Ij2GWqoLKR-N@x&xCsomnyb(Z&XvDS z%7)+TkFk#vaqVA6DM9oyv_9Sm}O)WkdIC28IXAhLp+g#)hB~OVir0TA6O?-?>^?@%^xC zZ{%)ctTIkQJOqvMb1#uG)P`w3}THQ)X@=b+#e$U@DQM*rq5& zGYR_z2jP}Y3)lBfo;10p>1v;DQdqW4v8_jQFHLk}^^n-o+uKr8)f~FWdujXZE2b@) zj&=!u*2ckM(FRKW(guWejWh3BFT7V7Q#o2o7Od)BKC#B1)wLO>HaHMY9bSIDX%5al z6?P<+B%3C9s;b*N5|bCtj4y7^RCTJ~(#Fi1f z*$ZyEZsGpPRvo1que8=$h0w&N?vB~nzPS@y7S`k3$hY^hp^0l&yqMc1o5IS1n>roU zKvO={wz8vr`Ru7vyPeH`?-?$dx^`__YpA)^;qt_6CY{B+v9(r-Ou+SX6y4-V*yXPF zb#_f#GP|aNFM2uEwwIL_%@8i@Q#>PiT%tB0ZkI={=&jb{W^Kr<2tdo@&Ung$Mbo=w z_sGa;cUZ9DM3u324O=5RVy^B??x|n8Xlrd-EyA7IPT7o*MVuJwT7L1mWo=EZ_ORV0 zS%K!3>zl5y;3cp3?*LkVVsy4>B|3}fvig)ceH%6%cy8PF&MvpjUL`DbSVlghE(9@N zj(CXxjc>{7^;MP|%u(?j^-nj?>j<{^9l@}_t$p_6^Vb|)+A-A?LYOQy5HnWHlGlWc zqSYtGjIw&?cQ*AmPidbV2sXF$^>1JB1e*JDRru8HrMYo%oS`hkG4`7R_i;~Y79%SA zZXe?xJ2wB*{;~Cq{YEJLPI<*A>MPu%V^r?kai2V8rJItwOcp_)B5`G#hUnh1Qyp;< z%Xpy|Oi)o6npgRSQMwOTpLwikk3wepl1^oPFav zvzN}5w5!XKE$gr($7gI=l5Z=qb2xDl=T69Faykx>n?OQ>2%(U0g#h6u<|@#TLb-Vf zt=a;m+~I{%T4+s6c?&H^+m`~dwfWD?t_~j|yzl?}K8UrmyR*A9v$HeLGtcw1U=7%7-LH<1~6HlHLW8#aV$Z~jl@|Be=+9gt9aS49E(+8 zLIK4gg8U)@Oi}!hAk#`?Kqvx_5y=I6%ddjuoks01wXEXW54tpx;4_42tdwF+HbI9C zK0(qT#T_tO$@rqw=I#%<7^KN4u>cSWi|Be|`p0CKNexjZhoGeaz`hdr4**&#I7}GR zR1>pTyZz`Uu9N~GkdtAiQ5hTtJP={k9)}nakRlq#|0+fZl?77~DKUp$RE>Rg(3}I~ zHDK!whb?g@Hg0H=w3XJrmJ5H{yW>yStbg+2CFR{SJQ`?#oF#JN!J8i3zoBKCpb0u+ zwXF*ZR#}+W>1Oa%AxR&dO!*rj+>M zboqRTw!*f)`H8b|KV^w2>)r`9T#>s^z6E9;@aE2tWKz~IHcA^hu^vTk_Z02u-U(TVR6lb&2y*L z$SYUhnhiwG*|yw7Uc=alK3hak;RI?Oaa?LM7IcD1_74p7-}eeweD1mDq5puGFT=teuFyVbT`X|TOV>25S&dg;-r9k) zod+))Cf(xs?;b71E>p39tuT)i+w0(oE4P*OFgosw`s_g)7Q+J3NHk(&@A$F&(>HIF zzkGh%w&#KQM&NnvSKA-nbzt7Toxz{OnUWBPavr z=eMPPw)vuWhTgfTYSN;afuXiGoae-e>>47*XfRNPR0Yul33Vy&h~Xfk5+v&Rt6*I# ztVKG7Mfrkp*pAItH)=%3(eueIH_RwA;&sKc8G8=znNg-}U|HYc!6g3fnB?J4L#}Vh ziUW@Ug_AuXwZA)Pl?Oh)>fl8)XI^wr*~n#(!WYQomrmsPfHg8OHRQLyLS zBU@D*(N4qLI5eW!ewWu0W3(Z84tm@f-`%hqsn^n!TE;WHJ9^}EbMeG3j7F0C?(Gi7 z;ekz%*uH}?3>`-C0#go2U_lA7;;J-J%0hWX1L(WFVaoXt03zp4Y4{PC+EBi-Q@&!U zZbErW%z>uoSWEc?-4gjn{?_y6&R|m$R?v+@9}_QpS54^OtIDctYO2e2{UHn%%sLp6 z2NQgCQHdy)6jk$y&zxn~x6SNbPTu(=XgoWI#Ql}4_!f4>RTp~`k`;Z0qTXiliRNnH zvjs?qC0Hgu308o0^WdD->wdVJxmJE^_JX$gHog2568k|Xw3ba-*LL(x`r08M{YOyS zxpHOaw6o71`XK!h6xZ*V6!ApT?}BT=m*dAD^p3AD{&VKNDdTG$nGwYpxLi8nfcDQcl17YVD{_-&-Jc+eDeOh zmHE9JfOP%spzw9NP<~1N==Gh~?b8)#4rrlnMK8+!Cc0|M!~=ON_m`~Mxbt;X#?n(Z z?r-dGu}_A3vp;Ul2#>{BwLfWl&i7sPlq1;=j)!OwQ+7r^5EjkNlg@OQl`JrXjcqsnFn7tKSHm2udtFywK6srO_ik1vE-1q~Gu_$#=bNnZK){hMByR@<{=cH222PIKkof%x}d z<$$|vmN9U**+d>~DgRg_`h-{;fEdvCtE7mF~p zGiTPq4t>Zd>8h%xHS0<^i-jxEHBZY=S5@gGBMYAbmMgli|MLL|-&zUbN-UHzS-Xk` zX~b@d=kTC5;~$lW5zKTvyrD%v2W?R2ti=tli7ItyOKt%7TJwrn#wd-Qw$>`sq{G zEvCuJYgH|}o42cO>P53ED`#CabQ5`-OE3DnxRkQiFRYx~Zn6UXM8UGdRSr>^xA7BoP~tUU<49wq9}<0F3(wjGPW#C5XgRq09-($zg?N7L}7s3cmR`8_Fyu~6*`!) zHeYotgWmgo++%zjRQ&j0>*2nx z*5VVR%NQn(%L+b4)(ZD^>&f%q$U6uou;F=F{qbQsvF1e zhzWc5g$E8?*s%G>TX$WeWkUyx3{=8aky`BQ5pWY%Ze6byo}sl z#}2=4LUCQ0WLmQI@E-cNszXOMwp?k8897NWj?^EEmGPEf!V;BYl$d?U7lGcTH>UXF zlQkjb?cs1?n{tLo61CZ|g((dReDuBVhg_V_(j35U@4n*WKy$p2d5Frmu!e)6VC zWr0uW^r*v@kKkM7lAF2{iSBQ|hBXIKB_N+Oes05`7j!U*V5{)}s#vD)6v9#2K%DWcpjenE}!0O?&qpSM0t@{ECET z0|f(jE@3pVjWn|J79ZwB1?miM$pPdl`PdOwz>!u#_Bi%)P%ZDt(w@S7-~ydN{*?i& zBJK?o1|7~o&IlqL$fWX*iUPB*u%~n|iSNP@D}0B1MUeqC7*2`|g~frB6y1|C8VUV5 z>)t6Um&Os_S^WCZwxoxtpHXj6f26)Z5|jxPgG$gcnzuSSVxJwcKQjMF-s+L(&$R#l z`ua2FA6Z|F2yV%ETaLnF!o1R1F)fGJP36+3^3wEaj-M|5etOEZ!r@s1s z|CRi2dTG`#Bd@;}fDGS2AUfRJs0Bo9qw(z{zN`lGf2DVS-`;l$Yr<$8#A&4$l2du* zNvikD^i7aJqa^0RN&Fw{qi5(*L)SA&FCMVHgGth_=#)~>o}R2@m6EQ^eLjF(ArFL* z(2>aUm}A>(Ge!o=x4sex*NiwPk=K`Hj|gNaBy8EYSsPOTAch%eL&Q28Q*5)@X_zd# z$*+Lqor30ou5f!uF6!#UQ50km-M2PaP=!z9CZl~X}FO8r9qcI zM)qm%sQcg~titA>jO7;lboRRv=x)ScJ(R(gP;l$RR1NwTJC!KPGgke3Nrgmv8l#G7 zMOsV}>4!-TruuWzq8A+m{bSeW^Y0WQGx!_?7am(GI3wT#iU?j#Md`k!#97ZU3P z7ISUBXq>cXIPQ!4keGz=wx>rKG%+NTM?Oq=!GM=ec@sF^;uIB~E+-segSM8UNDH{>>2dGmM#$kc92oQPF_I!j(2tU3hrB~K_F+;kBP!Q_ zX39n7d|Psyy3AMy;avQ1<-YsT6Ua@$Tc})P9fmWMvXZ_1V82@8D&5$Jak*wtS2Gc2 z?y&Y6&JQ7ub&!disn){|e>SS9`1#=cF%MHpxsIW7ZOw155gZfZSO-zLPFvkE4#Q)k zUoOgl3pU1KJQkt;1-Fv-h)bmfBk7h=M^bYS>o@dgV>cEV-%#IxbF=sS-ksodZ=2k6 z1~4)adaiQM|G^6c=brAJ;Coi0dv48@^LsWvU3r@3RPE4;+*qyPrRJmbD7Jj7C##Xy zwSs8g7=o7?za=69mms$N^nll^kfeLPX#$bN;b1N=O=OB8oRyw|UC@HFTa0)N5t_S0 zId`-?9}p9XSjS`Aa7#k~M=?I$hwI`@kT%0(;;bsCNPr10K7>6k*HHh zs-s99(QgVjK|dJZRVP!*>O)=E3I#WbG=Z|-PtWjry+b4egMahqA3Z7$MX5}+tw1qO zW?7zZ$db|?Iy8!wmg&zUt$l7RtOs>Y_YwA=Tzy($6UY!9XKBdt>3+t}KvSE#>5C(zQcV;_*Jrxahw{n+ycx~bC9e@=IMNz zqVLW?Q=S%YNx1X(ZCQWk=WhQGfiHP%4E(W%Ww z3}&JWtjh9hF5Y159E#T-6sAY(x~BKR7R9)JCD|}(LKVOLGU-nJM8Rh>{q;3fuuN=SmdMY%E~$7cI1m5+46 zjYK6;eH-&S<1qeOV5Kpnf(l}a{lVGt;r>@POT;Uo(eYy1WZ(^ElZ9mitt&U*a@$Hw zS}Ri$)*;ac4}X1k6!ia4{xk1)X)RWhHo$en*Yt0nA1gNCm|c<$|6mkX`P?65v1BRo z-PKTw@Jt{8e-)@BEPHurhk`2Q4=etW9vah?(UO%Hn1H{E31=*0%DOpTRws+UFj>$t zucZM0z+1A(XAYb{?$#*}O}V-J`~!)Vhkh{UfjK`ov@$W!61x2QpC4X2GkO1kEBbt` zSGXhR+`HlWyKmUH{@x7{_Z6VGdtOJ!yx~6=UGRWSueUvL!J?8ux&+t$vS7x2!Rxpv#a+5N-6D+hiH>bQr$n(rKa6}BX#il-Af z^D`!m9Yvrt0Li&T7E%!YbtI#b!ehCe#XOc_93chj6c9Vq!UVJz#Dc!)$buoomCZ3P z<(G?C%pG>_tLR{=bcsv;ofu^jrArGyNF2P9rZU)txX^&AILJ0s$?ugPY9CBx%Z)U< zRO~Ff2`&qi7t1#~&4G$yu)+R#f37M=K~r?nJ*|!MjnPTD$}H`#sUq_lo5x39NR?1^ zgk^}BP(uW6gy2E90uLAo>PMNYpjUuq4@4usm`_rEUhrl4<)FstDyY^JT>il21)A}- zPFbh;(o9!;X{N6|`k6fR+0nIV3z*N2ems(B{k02kxZy%{19Y42RjayPPIEPQqffb- zeEKrJY;Eo~Xt*Bn-Hu&1JAv_2?ETo|0)H<5gSu&)wd2)VRTsFN8eCU7{y(c*q@dcI zsg?%a22~Ym|F?D16W{%EY~|1RA>uCf{i~D=xza@6gh`hi`k&QAF$#hw{zrvZ%5uEa55>$W(0A?{aW!FXUSd9Is@mx8VT0w1~c2Jj+mDhWy z$A}dl)d>v;s2=gWbT}`K@}T#I(x?`})8{$k@zbT*{In&Tj^cfZu#=6n37C7#=wH%2 zU`GGcJ%%z5A%T(ZF{iWV$p(zQo7u{gx}V#k+it=ae2b>l>CtZqb|yy91e-{XFY|uW zUyeE?kFld}fU;5l$^9gs8ONUvCGj7A5RHEokvgHS)!C^sY5|tkGQL5)h46$BYydFA zY^YiXGtqI_(Ui%eN5qNSYbIh04erSY_s?lt{lM~LAAfZ`e)g((ys)C-g28hGMa14! z6hM88O$BuP?`~Q&xiB$#Q{!6ss}&~EZ1xrh7G8aC=cZq53PpAvw`+@wi^1Pu?-FlK z{NnV3n@zz2w_v9?2O2Gd0$yNiRx;z|Nm+h zI`PCSuRZqA+wan!{Ov}o#MT>Yr7BlNpu+BONo$|jAX&?5E;#n!{z~5sgAe_$+6p>T z<~7gsfJa`?od4WLx&G;Gl>?lXF65lN#OWD^{zGF_%N@5s{<$TZ=gYw7|GS37YfDHj zA?pVv3LEE$^#i+gWc(@Y9BV;A$5e{K5HW<(c+?s<_9}{8nHPD7`*7u{>-o9NXXN<} zD#z&XGVnCGLKwG_0M=n53dK)S#O`_{GTG1*kSI$K zY!q?3Xk1v{DoLEtUmh*wG**r-faNzP-nnad9&p?72f>SzF}jK>dt*oNN%9sP2{5Da zrro>i4HlqrfrIx=nPnUtkxxEZ`150mtO`#Z^oH`7z)dP_Qr93)4wUDXX))(M z`iEIA=(+z!{Y9(&nizIa*59GOo;>RY-IHhG_*$z)x&J+MOr%u)A|}V9GCjABB98DG z$G%4jM@$hQ3t&Xui)Y3;8y@?RSj!#|3OLYyMRIOM9nwbYD%4GE zb$misS=d5$o#YbcX|kD0etYT`7swx894aquo#ZN5T!$5Rbcn9YrDc<=*isNIYo4VZ zRIu)oB$m^NwD%yAbeB@S)HZ6b$`GusJld@e#V3~dxPb2m`Hb%6AR4LxcBTrL7p1>BK8|I&tvwBUSlf&3HO zdWAHK%Dd%#!ybmmgC6ve43TxsX2q{_nB^OfW6&b>b1Zmcd#6cwCh*6h}Kj6m1gds9Z&hWLB-U>>b}98EFEDhDR)lmDvsGo0*2|8o<&0gyPTye9?$R z2ckX#c@T-UL7y!^OTgwM?!-*y9fcJR8xpA#iPD#RbHu5kX+SeTXSz+6lP^58A6T!1 zHgu5I6kG+s?x$acpQdG+shfG$%(|v=kt)Hy-W8m?{=6${rZ4J>(|^7H{-H9hf#$W) z>O6Tr2mtc~A2A`VL2D@c=mGgF`M2=?*WHC;qOZNJs?`^&3G3ZUgGCc|tg2t$)L7o^ z>sIC=7Wnpuy4S_5f;UG6u@Ac)FT;=?5hC*#UO7#I?ldJo!hL1Z7YrpsjcF>>W=3fm zrD>EVID1UgKfQ2>su<@-TLx{F^}hGXSlX*#WD)dij3;aJ^OzJS6s^m}9%Eu3HEy69 z_{09F1!H7jK^F%wX9AW9EfS`RvEk;&SQ`of5K<5p&l=ZR*%3U?3+#IT#l2N6^8(`n z=ggjWz9;CZ3U;qJtPN_7076(Cqz|v?4pyP#=g;px2j!aAlK5*iU|HY{R8-m#-}a{-yCL<*rAIy1Uo7_$IV*2WKMZ^O@qC%BH)A!ga9zqh)dOyG(avG_~NtOD~$!>B5X{uFg3ZUHaexWnfh0B`S*#5x}+phtJ{* zj_`gMy+0yiNEP(5Db%89ayf}UzntSIo#zCK2`^3(w#DS~iI_o8*`OmxdP@N>0ns4x zU0!?v{)HSsoChT7+9%(!utAx<@=Tk zpi0n#6wRQkSmmAf$SJdy2R%^KuXQ}Kb%;z=w72g;&&KMeX+BMWH`F?H-sux2iDebI zR=#4r2zvmp#dRw=<>eH+WM!^yz>1|;8nf^b1RtboWK+2O@mL8qKJ^np6*zBtboLf2 z6yzkYHRuyYcE0>y^51Dr&?YQ~0i7A_>ghfX<^fi)GK$0slHbZVKGxkMUuM<~Fk1Z5 zte{{%&?Y1+ND9!pW%jezNE!bj?u4Rm0NRJSlFISchyG|E!MEm4+$%r&sIkyp|KO|g zqp!+;!oRmLLu-E0)LaG!(=45+_xgsW(9hsMFlBaU=g)@w!QcUh3dUn~NW;ot)pH~o zCEwITU%gh64KjV^p{uIlYWoY%8y~iVJ_f9-O)B*7{nPX> z=%Wv(Km8~gy-NOcHCP3`Pk?t$uDtth(ti!765M~Q7;-)>lzcpk?koA?J|M9l%KsjE zKRtO07*_;-2tMu@oZ84d6B?X~hPPMbuYew`zW%Pez+5oyXKGuSd4;oMe%`mLj6>Cc zL#-4Zg+uEBjy$zFPXV<>GFEO&D~M;nYUz|RDy_9@7=wP<4tcX&CvV=dOe-)ND;hC- z>>7<}b^BL0D#CW-G2-v`Oqlgd+hE*&_t2KnZ4XAjj>DsGJzh&75ltiv)N)A zg`A(hNt`Bvgd|GAbTTMuwCG*NPDQy_*q4bchu)=@&CM2gkXDw2W2kNUa7F?qD`5`1 z6)6hM>F4F=!Ft$-24u`Vl0J;a?LIL^UpcfrxFNWwep7$_?qHC<67B59J9~mmv;2G- zW3A$=>Tqs+RUN(_UOTich%V~igz{|&(g%X*BDAwRxM5hkD7yd1kmWIaSrvy_dX!%+ z@m^Jy7>0YR=J@yW`u4CDhBNqe;RVVevgSi8NNzcYu4F#%DICbI*UPnp7FEef@6D$` zMdKtY5q*-qm@346*5x1vR*t>F13CI%`lMKz!a-LyjmFTgHG@Q|RJ6E2LTp8^+)dvX z#4Dzv)s)i1WH49^l6JeC^pd#@$-(Fu6z*+OX8lHWCB#&M79WuiV_xk3l`1W9%PDkI zIpwmTN6INd-*41vSxORy?waP6(S1R(I243QeM+!O!)1YzJXrvQbF#pw&+r&rtIqC~ z|EY=tSSDJV{}w-kYgJhQjaTG|3sG9%My zAGsTDuB-0>ZwVIp1B+3xfPh6FgkE_dJwPXy78c%I*j>03_77uaedy-8o_g>fMtq52 z#FwNK&djL`*!sCi?KGJe1pTt^VS$;`!DfEDFS|hRhB5?u`t9W#>(C( zgtE^-4|*y6o^a`oUtD^2y-#<)Uf?-9UC~$dz*VINgA0a+HP>S(KN<;ou(_l^+_s`; z=bGjx{%D}JPOx%EU3Gt%g@vhMjg=e!A$qeS~q+a2O304&=Z=H!?+g z^IQx^IUs^mG6`m-|8$B%8urg%#)C?m>ijl3vTqru^ zlr&M2Qx4Hm3X`QbtA3tF?DIMN&C$yO#d5;!2C3peAnhII6gp!38c`-?xKIa)GndIy znogElL{@wR46Y*14?7uMwIAfU-`2GRqS-;P> zg^uXlcjYyu1-EVb?=%^S$rbeL!+DOeAoDL&rXDmRIqaMX2z7a)Bq-`%zXH_${#x8p*s zYzJo#tX-w3BtqPMQX&iy*!QCf`hfYLB*@SMBhXeFfzO8v=3o7DuSCIn`lJfm~Nta_Aw{ z#3aI3u;Ip*&E2Q?>8|t!aO_-%yt%gb^iJ^t)w|;d*6fQSP6L)oY6tEW4I^Jy3!p(bw z!P&b!!S1?PxN>Io#Bo&xmgnz~jF$^y!-n=|k+T?PYfOTXcEnp3maVwJQWl(ERUNJG ziBAf;z=~Twa6OD$<6&(@WyFb|b-4~gJzV9|ESObT>mTQ^nZzA`f>S`V23t)s<2kz+xJt0L?UNTStI9crDhNPTB}(K~C+$lwCt?J84nmE|S4uOQBsjOzqZe$ptZy!VRUQBQPr-0?A2N`A?*oiX?6WK+th#z=en za8y?x*qDAveh7R^7A$$mcz?!3ov~X(_e=D;moAbM;4XR3f1f|nkqsTV5tV(rAm;H8 zX($7db_&pFdmic;Qb4j>9d$7&?sNDe;Q&5>lpy7Rq9f9z$It;rR|Y17BQx)wjgD;e$?p>U?sx9xokyJf4^P~W zwt5Tfe-qc|Vc#`)bM9hRr!((&v1fsGXY->+QF=IX` zN9r?!8NMD$CX;ETO3Uw{9dzheGU-LVG<~zv34776po6_c)>c-Q!6K8<;FNC$y-wxV zU^K}Os2Q++TYrjT{)*Z$LQN%@Lv~DjA~3uy5cP*`0gE4fMsXwsSt6l;1v@A@YU9y} zErx+mJv3cc#rO#bX>BWqchJ;;c3L^+TJgs1+l+i<=C+IH+}d4st2kA9sd!_p#?0xA zT^rv{_->t3dh4v6y)7p^6;qlQ)y~pr8bcj56RK)F(v*Ud=GxBk2|U~6pIFfpDiP`A zlU;>}ubgtu%usd#+$;#`2kJ|qHwzKr zMe5*h1wrl=?B3G)!GR3ogTm*Ly>BV{Zl>Zkb@(h8RDO7jw$(130j7K8K6@NJv(zqh zrLmwWMy8n(!H$cZem+-Pj9HcTW_2?ljFrUlrytd6H-}NqOQ?y|98{wSrUnY| zXfgr{4pT;bQYIauRk4`pD%J)tg#q@0!7K&<2_H6`F)Cq(f^dM3;H?yqnEQV+)qtt+ znDm!A`R6*LK`*E9N?eNgvS7EDj`Y)Dvq6hV(+uKYFMx6RTF#^ww6<^Fk_V<&|Eqes z{Ndz}@BWzS{av-0u>!wg(31gyGD}vLKyRGv7ccwdENBt6S{l$>|FSs!xkl7O2zStz z^z|J)*w+USr~4G!Pkz1YaJ_@Mdb6jkHyBYf`a9dy@Ue-W$Vhp+9cf8`^D+VJSAIr`U7{CC@2-xic^O3L<7d6$jc6QWGPTzT&N`LOE@7_MCwaO`mP3B-|-WoHs&93PC z!NGHP-RqId?+1|Ah^=!{yZ+eLH*HH-Y{6J{j<@bOcTSC2!*AvpB& z2yU9x1&iITasYxZcu7GJ!Yzq~KCwAi7OrTvO19$K(q@k{)K%fq<<>;yyLj4}ByRA`LVCc*8|L}Ly$^2b|G*AVODVDn7*Z;VEu zMbQehCSP@Dl}oY~>Upi!CHgvQdYuI&Ay;76jD@#Pv~-nRmT1(5O%_WPO=nsn{THPT zNP9fovS{WO!Rq9Kr87cKPjhK)u}!izSA@%g&7yB%Vhe=90(gll2tc{ZT@1S>Z3;G^ zhU@ZT6#C3shL+fo%BdFA8mp;`sjH|vsYj__5MC4P8IM=VA{bgNhy+ITf0RXksu3@u zF5g>N)kg?r!QvxcWw2Q@EHP+6Bu=nJAYiki+;y=!%xQ#!G-^Q|p{4VA2|B3?e(5Fs z42k!AI6%NKZ4pd#N<6lZxTGxHVIU5RT8@BPj!_GEHx*gTW=ql26DOu$=$e` z^l7q)XyXmz0>1WkZ^<|VKL}}qJ6cy{vlgv&+b;7vIUrw>NI;vUn^=B@{CD}Y zD=H@FtXAEG^8GNhzZ|90# z&R^j9+u@*erR(#k?h5cuVPI-#i;I5!@uvz3i20iWGfT4sAv zTO`=U(vZ99k|uX3RMgNlA>slCo1U(}JrcRSE=~VrZbcJoGOHY-^;2SPsQRCBT*VB!QjV_dKdJ29_(nGGb7p@kngN1!lz>|fcj`mPtVW_<$ zR0w7*iPlybHA?_3x;>!eKiln~(%w;3)p2UxIGE zPG|q3%qbreAt(s{!%nXe1okQ?~L2&cQ zG+3u)8JgyFW`~I@SQ<}UH?H)G>#mD0Mia8bq~mB>!YtJctMe9&I&a43MM}ZJ;!^AZ zVq3)w$i-+_U~Iq^=A$6$K>y-4tpO?QpUXdz?QDf?NBX$qdawWhurNIvERaR{$7~gt zBRk{=!9wtf{9{?9TjV$7KZ7>;qjTin6F&CfIX$2dv!%%&F~61nEWZf^`JeJX6UmnCQ{Sq?8BaKL;%6FBoTeOi7CWXuxZ+=NqdXyt|*hvwvug zk2d+zi`wBk?dkts3)ilF4}6f61L;R;Zx0wqCt)?~S(x-OOyV4i; zz)Mcvb>zqxz8ABobvZAW3>a+&=eEQjLUIw7j%d4;Q~H31j@8<+^aSFqbcmqXVmX4Q z%z5LSIXBE@+%&u&%TIs&F_;SG#JXa!E_sS@<NqX3KZ6Y`y zBmHF}*~r&SvqU=TbkQU55wgkf7%5-i&;$6G`Y-=E5Y1kg2VC;85iN+s zeZyR}s9($H!Ps&+Do2<1LLC?!iIi|ietiHwmY&fMYQ~CB?q)Ax??L(mj;?ISeF50H zFpe{dp?6n>$#T(4L~m0<@419Uy#YH;BWY10@eoLcq|yA<29UVp0i47U+=U=I%-}Pa zGb3KYV&4zCTC+VGE-DO_bjCLdFRpBxPBYgpU9$5d>(q)G`2+d0@~VXBSsHKt=>4|n z(ghlmv7%(b8!xP@nldM0E%0*UA7OmJ#+jdR&1WmheM9oC-yAa8j4The0h>!p7y0W; zJiCvBU0~d8&1L}aYwPk_=FG8(h9=8~Efs|qPFj-GXl{l(-2ttpx`x;JU4;QHUsR~k z1cpS{n)XiX_-fjsvHGKdp6AWl8*bqI_4L#C%T7;Sp=D3Vy~$8C&RwUieQDQ2Q(cuF zk4ax81{YR!Sz8GXtn#ijWVCNYIyqst4iPHiSe%5jlTdvLw+|jOvGRdNRjDo(3Zsw4 z1PF&AZrB*+Q(!q>X=@LSjx$(S5l0Dz-E&IHL3w!IG|i%YeKd?$PQLa@YkRojwg)Rh z?KWeT-}B;IzLMH{J!`s4?!DWt6$%3EnH%>hHO9&YDdgN zfa<_8V5nLB*dB<7l`0xZVo}te2*RMx=CfEms0Haqx*d-!?mf0?rtg8NTRO&DS->;@ z4Q9xX8olk~XTI@SpcTOSr59Y#2)*yR7B1Vku#)BFMMLS6p1P<9z7{Ep$_BMN>&#fewIE)Nu`93!-Z}_LeWaZPld9!QJ`oH~lF) zaFmX7fNOpMChIB|^e!m4PhQ@zt#1MZx_a< zzQd@|T2;J2q_mmkq)rEtW=Ud*&0;X)Q$oQso5J^0{Z_KD$#FGE45qX9v6+ovIlens zWn?62kT`HN10gd&HZEWHMwAL(ikjk1L6ctv)IeE({LQF6LnP`^Rp+p<9`MsJs!H2f zW+xh-!VwBG+^P!Eox^HpH;3n4lB`*>U_#66*^!%XyngfMqf^)S`YTtiow8$jUEQp} zgah)2MV_`;EZ9y@pY{l#(F`+T_wMJtUY{TBu>bt%&_R#K@1IbTXpb!4e9?={&X(!Z z+hU@gyYZY2<7hL@7_$ES1dCje4k%y=S_qqyx`jVVFTj6Xa%ekt?Sf)@`*K(b|0{hi zjHY)CeZCvsNS`>e`T7a~b?2GW5jsy0UECq~_}$}FaIZUxGc1XQ+Q zb(btIgo%w12U=q9dhE$sjNKS;pg2#y4E4jPwSy154u{tcj(hEPuVZMiths4Hb2Bq5 zQ8~SNLGyv;^0H9tjfKjXbWE5C^U*>2!aUc1pgp-DgjLCRO{eEJgO83;cDg-=0L)lAx{FJ9JO|i1h0}Q zmd0a0ji&^laGao7BBaa+X!^v#BLZHr!QO^e0g@rnj`2TAo9?FRl`!OjY4JH0S$q(qTmx*I{8UAYic{P5bx` zwK3p{7<0b82Y$Hlzj6G_TV#76w2FAU!|M z@H7p1par^V0jF=FPaiHe0ln5H8jV2k7uXrbst=o*I1Ohn2o~z}B9baB1$OfW5opI1 z(7<2lE`mU7;dLCN=PdwOofazqcC981jI2(u>)iJ0I4pB}S*@O>wFYaaw!&2qL(_t} zpv)5T``mUTgdC^mjdbCxnB7)pr-7%)C^}|oAmB7MF9SJ-g|MWGEoH0^Xw7u7M^h$L zg&89UXsfR3g3Br#dILnymG*oU11|%FAids=IJ} zN2Q)YgP-W(H9>pGdY)ilU|n~3LbR`>VG@hvgjMmyCM0g?b#8aeFSCTJ(waRc zq(Jfw69H%_HdPcuTCW8~lHCK!N*I%1Z~(!@Y8)m#fEHlTTC@U(NKtW zo0@8>oE;jo2C`bd&TN_*(r{G;?MU60ws~#q7rVruS5KE&To7tmV6y%~!_y3{<9Gng zaR!J3dW!}y3}DutaNMbfVwi>9ex5(NxAc4R*b$L$GMM0uARCXs)7eLfG=t zx@mr`(`+xoblz)Y9oB2>HobV(u5ueFa+e+HSg~XC`ldG*)=Vjd&>uvtu8|ByY*3gN zpS*j*6xLT0C_vRJ(Cep7F%(BUZoNs3kH@l@KzWfIT}9PWt<(bSRTK=-0c`Zg9Ak7S z%=qvu?NI1|(O7~83NIVt@gN8Me2m5OJKABSP#9lDMw3=h>tP(RVG#snD>G)K!lx}78Ruo8SFXPdF`ni=}T@cNq8WxR0F zhl>~Aw!A|y0`@oW+&AH$H+|7u{Kd!9|3aS&z;*XZKYH6WDb{S0{eOKF7zz>%orTdd z)`_|ojkE(6zBCpdquPG0)N-tURMFJ{b0ZKytDw(esVIgC8AXge$J`ihTr{Jm*Hc&~nhutCl$KPusv9;v)YFmN*dCg;p!v{Q zc5nBD$n2W3+M?RXe?QpygN+lxh7XVI?VZtitvvYLMsv5i16aHR-m9G(t8nU_Ja0C; zEHj)wzcW!8UtCq(wz0EiNpnyru?yDHaKu|#>20oDdTDU-_Jc=0>^5(F4zSmD&gk8% z?8t+7hv?@ONOyRJ#Im$e9VFr^V-JZFeDYdCQyj{(a>nAE4!e{P2VZ~*?XvKxbj$_l zzXsVtTe{v+%z=QzOD?hJ(n2m%C=*wP{jUZH|D$4s3ey3bWG8-1!^m0c;!-p~t88r~_8ZCanV27z zsxOTc{kigMZOE0HSk+%OG35$rzpngqQKYoq45-d^Ai1s+P-eO3(*L;h(*FPhrS;`t z{yuq)NpyweFRLa_tODkcOEiJo_Q^-f>r0EAAh}_KoOIGX_<~E7vNE`=LE?$43cG>R zY?U_4;)l-|@0lii!-0a6+|AuBw2JwuyFN#2yl<1KwqCK!L9zkAar z@LH}M%6qh7R>2_ZlA&-Y!)k{Y+w6{#`~@BsEH_((@ z1I(x3J^QqtVi%HEN=pm%+A z93(N;EO84ChOi4KmNVl);v>w)3E4cs@L`D~uEWlzmfZHvr|;ahMA?9ij9Gr)XcFZ2 zAJ=(xkIU~1CZqhmnPIh$KdxmNGblkPLCNDXGOf_PlR z!x~3Mz({RLkYm)LPK=chNf|?YV8>x1i8G(a>YtQfe!TbBr`8_*Z0|udUxt>;mkr#G zDQ3660K{7=ETV70l0zqNIRCtH#RC5cs!i<4)P2qJkKf(<+0nJTe)-D3cD@b@Z@&dN zUfs>XapQ_-zOnU&lZPT=u~4dDn{g@Crd_UjFcNdVZLf{efi;iwx-dALI~+C& zZ`jOY)cWTw{kUQwu zL8Qa*yB)`z<4Qfnyj109z}2-h&uhv;rzmH_YV~wCOmNaVr(^;=!-#>cQx0!l<}A)oOoT$|;@DK^~oJG)x z{<79!b2WoRa>!YAz#FdR=x-7qd!v!E26q_}Y2l@3v8IrxfMKl$gKfd2Y7JnWfl1}2 z0*;kvX555!r&CvYO+VnSHrrWFLb4`9>ut3g3X7T-)fBQoQ_|SmSvt{Z@N1!6(z_rq zu$E$9W8LDAzSUn{tc8rLd`WBXg*p=kAE5zcOdaBVIK%pIT2{jK0RK zPK;+`l0^EaBZK#e8Z}r2N_dXJA7VUK5=4408WnMDt%!E9I_SYpYuG4{K3k$%LJv>@ zLt{w0R8-0!IYthl6If-(DmuIen|^27>|)34Z5pjnDB>+1!Sh7rpEhooU0r>mZ{rH2 zBlgRu4*gO7y`b#};LsmI5QL^3{JET#KbHUdoxN8k9|Vi1O{ioz!NhS_{-&z360(BM z(6F>)+q?ovQ|>?ovo30LmNBf$*$n0{jD)qdF_)&Wq_y>-g@xk{#f7{6Ipm*g5?nt2 zB(M86qnl;*#$tihFJIeJ;(unvvZd~#Cz^Y1m@GIxJEUx`>A3dN-q!XVPo1+BFv$mh zFfDPNU_iY9Hnp^EH41vvp&Hl270Y+kqo<=XwDlO#)1Bj3o`83AcHXn4YF zBLe=AIh?~u@xTnakXB9O(Qjdh{*rFAebii=S%=z=Wnk*Ja zE$5uxy<^)o;3wVNTD-L2DbVRYlD`G6Pyu-7xFBkb71Q?2t+obcc2!*34`@hRit49r zom^;<#x=FI)tJmXJ2~s5X`41*-BHlleb%D6lVc_mv(&{q+MJ*rYey(b7pSNR2o}7sh%4*d3pfPDo?WYOu zVv;J6X@+D|Au@gNy8^x7HDmCZ9{sL>uVFH=TGrugtodZD;%Uo@IZJT?b5yLD$+Z7F z3p=0|5wu}uRE3dMKJ}fY9VNdjYo@tkj+Ea=SsSR3%W6@=&Ma0OL;D>8YANhnWl+P$ z456VHzehY6kG}olTpYf58pZ(Co?G@^yZ}W&y1xNxbUpBXCw+kGrOqJT12w{e*u>?%9YJuvyxt6cRciSNEPM5_Kimeiw?6^OS}%?L z@v>*+Z})!S+LGi0-~*qN)>{f9ZObQ4I-8gOm`n!bhG9Ck!s`Bi4VdkWtjItbovlRt&5bQ9y9P$oza~v?_ zC`|oKKK`62z*Q3gr!yxVnkmb&sgqc%d}14G#d{Yn%OvCiBe4Dyd-~>LzXK}zv`q~& zQYw=jjIvg-?->s+E3B4sKT&>rlo*trGe(Dx%1`d}UD4udT&xD;c!mk%U$&T_j`t(+6bPUk(2-g?AYq7J;9(-HF9gpy@6IIp zr1{1fGa7lxm`L7v9<#XY67%Anm6baen=dKjqS4tM9fR}fuiyKkVUxR19&jzL>{(WH z#~nq>da4$=fR_=fYdcH8OGDaipg)nQ_Bjin#c6>BPG5B*!P{w5q@tuEVxsN*P|2ne z&-fe0%fAVgjdwb+S15QB41hPWhbUw871+8H>i2=MMCK6xWc;yW4NKUfE{Bm3~uerL*6u+g&)-pR@ zar^q)UH0ZV@rpa5%83|=#WeGA=IGrvd-MF}iaXZd>l_*avGwxH@SE8!XZxD&x4D`Y z#47LWyVvQ!iF=~j?iO_I|3}+*z(-YO|G#_Rd-JBZH@#;1q$e|(ne@^LP#3r0&w{(SySB9#AanWO``%0l$o_Oc|NlQQ@7?;! zeYc!*&pF={17&gP2y&I!K8v|>bUeRjZVxGv$h$ou8D5b;R1-%pmP*m-xu9bHg?lyG zf+p1kIwC-qc4S`$(yr`7=^mTuz-hb;Nu-)h1ggP6B@+6C+v9yHHm$yXTH$kr${cxV zn63?%CbIi_!=+V$!pB3jL+#)#MuXA9;}8uLzMAuOP0pMEhkORpI{% z&J<>5mzRbE!>w6MY>=1fWJKu&pLqD7c{r7kB?`6&Ebh&NsS(svYB5Fecm)eW0U?tX zL_a}|xTisQC%!+)8}!Bf#D%wL;)$t!mN%J&H4uMW$no)536;g*r5X~DogiLr;#8JD zj^jb%0|duS>l?tL7yr#lS&h`rw4l!la(Fe*zd3BZQYWD`%J!A_pns*)xGecxF!JRa zfMTvZ(abPPi5~an8YKA=FzYsS&!yK)dHbQyEBfvL3qZ@)+qZv>4xt;-ArbK=mipj$vb!T@l(L1K+1uoC@s8Q<5K$B`NvYLBy3(5)A8U7@1T9N;DLMR=fINlZrma~%&8}@_ykm4@C=!? zM`(XN(H8?cHs~i~#Gf!q7^8tP>i{1}1Vb^#%v7VVPoiu7{0A`U_;K_phBb%HDJ!>;M=7QfTB^9KK2=ai@ zm+r#881U$#x&gm)*l}zo7^QpZ-ek7pwA_)M1b9tKX8u<=vQOcR3JDJUi~|x1B}D{~ zvs4P-_}ou~CnX;3k{MsoNttN7PUr>RBy^Mn&zd5Mw7;zYvAQ)HI6kf8iF3(h8&3o> ze!V3B)-wmupV5Bw=YxzMR+~ypOuOk!52IvKm*$pAYRb!@T&C&O$mFoRyiPF|J!Ud7 zT{xTRf=AGcgO(4%|3T&B90#=pQiOTKquyI)`iBk*qTy-<{!@cTf`f(z-&!+AS|9~o z0H7ZH{tM40*&9Ti7Qhn$1s|j!k!N5wOK+~G6C_wn0PW}rs_NYAT2&aGeRxuNB(I@n z+wXG%*LSWgjK@mL9ksqT`3~5Ss!}N63xmK*Abhn(v*=6wWL2Nu@a9;xIyAlfa^25q zpE&Ht!Wv2e4;f|Reit5D{%Dq&!%ra)d6>?k6CRp^e^Ney9(wOqbn@t`RY!s2R*?6X zch)?);eV3J|Jg8h$K)oD1hv3_H&h)*_xF+lpd2`kuKL3tR&4wT{ru6!q9GGI0-|1- zI8P9}S1;8jNFz){IWQVe6?_$j*ICQ3IhJWMZ zHLsGyK-~5LFBx=bgRdmg6mUy`<)xQ_g>(7Atc#3Cuvn|9uGVNJlHy{?yZB*S2R_HD%9Sa6ue89|ub#cyl82 zsnAZ|bUTq|3S^qe#P)|0LgNHO2{ZY2|DmZwYx~eI^_J-SRjSw*F_ntdvN=a{SS>;Y z)dl&r`Jh8Q|D`fF$G!OG`28T?P2?^`#%Fa*<;{y+dAXHYHumd#@B3O}b%W@6_!GPF zMe#KylAIjLE_XqJP&0iVoKxv;W4;Sz<>9O6=CFG7y`(j(GRGBBS_OUv1D;Oz>BGakAJj!ox$$l*Vr6u z+LtT=4_wIAkU8p3F3C<3o?F005+7PLvF~?YFFZ8IdNMiYgqXzyD@RrKJ@V)oFa!ru z4?W!X0=O0oIrHcveVbmuDRk*_q8^jl`_Rv49tCoAI=7-C7cRK}+wTuvQGPr6@zFD< z9tO&)a`bIZMMcg)eudzDPyym*Ty&3m5&D?zP1T~TNt<9VI5BBc?ZEHb15Uu+O_NYo zs&*6OJYQi?ihnjK#ry;JXc@kbPOx?l2)H?9dGJ_)PY3WyK^vnno?uhpe*qm%8yFt) zM(PVNWDU6K%{SldfX3A4U^Ideiyn-c|Gr~u{=*DIJTb-@~7G-KjUS|jQ#5rtLErP1Vq_=yC{E@9??2uvNS zhEY5;NhTk~sWGDl)IjFtVOLI{U6<>bP&ue*)n0#Ir9D(IeW+Z*$Rv53o7K}2001Y| z(Z0=DArGWsMFNjR|L!X5%x;Ioh+J;1MW+V;kSdJ4on_1tjg7lgrnBlaPXKV2sqnhO zM4`Mfm+h#|OXL`ga*HxThx2`)iq&yyiJX%$oW`avRIi($4L8;}2TPS%Sth0Fr?rl} zY^zu8Q{+lHm_5Ajkh(NaN9X<&IvkhTon|XswWg{Tohn*56x>ex%A%zVXB=MVK!ds@ z@_Z$K%q`ERR{===O`!{$R!kjIIxkV>O4MirdmlKmb1Gz585`i7N|!ZY^4My!TX3I{ zYu(KzRauo0+G3N|-DF^F-6pNZOwUuBRC0!eK$WEnm~?!tpX@f_-y9``a|Y?T^Zk^k;TT` z^>QvPlgs!xr|27H%XP;KO4)n`?N>fhgx=NwPNR@=AQ!4Qc&R}Ll&Q5Nm6Borge!|Y zt{#uEe^X{mlTD&F;bkqD-VGu8vt%P*u(lM`n#EBjsMK+|lL)%yaZp0gYl!+Ck;ec* znT;qT2wHK1#+M? z;w-kQWjZshk*H-_HLtMy6jC`WH-k>OIp5_;ZuHxS4j-YPsvb4$FPn zAkT8pG~=;z%FTspja->$F-SQBR55Z!LPL#OqmwX7P-x1}cZ?hb!sX>*0B)JtU1HGH zwblYqHMAPg-h%9vNB5(D{%*n2SAe5u{M~C8536;`r2#|O;ut^TmY}oEuCfdovV7hB z)IjVl7hWYhsg-y>&_Fc^W$bwqLCjT~If((26E!q##)N`bVsO)3AuIri0ue_DkAIVB zL>eO7=?OC-zzXSvn@Ch#fHp`tlVCYav_&;^s0LOOg&JIuDd^els(WCxwtML4mE#AQ z3hI=*6@frtPQbPM_UDv)lz}A+;*91wLdNZToDENnQ7mm6y%N0Dv&U6iU~KAKHF`+5 zcFcoy$~}s}oM3Q1ts6D$;5)rCZ5 z&QMxIF%cxwp~N66a^io2(J|4z#AAWTg#;Z>QDu`B6f}LLR6>x3B_gaj1Ohr1nCTFn zcFlm*;ZI0zAt1tt`yxVJV!Dk77tjf!>`+NaCup}MbZjIKXBu^IJ1`pzdAVF8)6g)& z!nkQki*bWm*9fJvq#+lCfVG(|dN~6m0Y!P?3@EQx$gB(lX{&>_meeXQV;R+3G^Y%@ zTsE_s0kp?ZR4Q77}AZBzc7z22X=A<%%la0aIZBsOmfy_9| z6L!~?GT?;@Dbc%=vmD3hBswUewOSwaF|-^2r4dHT*vJTnqy&Oua6+RpYm~HEW5dIc zQ7hq&zvrZG`WGYpG!=Kl>)ok;xi6`sE1m*tPwP}Y^&_pywgOIurw%;~6g&N#4l~lp zGk^F|@|_AmCN2XK)~^Q1moJ%bM3V)3;|%r!vFRI3jm14-1+|shP2EjBN%i*c^z=K2 zWzUB!C-ejH?PNUXMo+|J*ZoTT|95#_1Qzq?Ko;50Op*h8qP%I>yuP0L$)#b~6Yg^C zafDM@0?^TaJOJwdF2AcMT$)NU$;tKSyer@7T|Ov9&D%A(UP6US!}u|}!e^5G)qwh9 zL3Gj7|E2)g4ye*_52A=SZ=yplq0+LO8frM60~S&11rLG`QNN?!qCUcu*jb=<64R7Yf;8D$}}$&j%!W%i@@)4Fx&eTTz2+;I|gpLDc49H>WB zuzMf9-}kDZT9-sgLA9<$OGg?PAZE7J0CR{ncZRy^jNqb5^uB?_IRKz4_Kf z#Qy3m1&J?kqlmf4o6^Sa;=|)-hrLUtFVh^w-zF6zF?h&;*MG zUb;T{-L1ENcMek|V|V1nR6NkJp?shsA5lb7O=E=!o2Zy-Ny20*Sqq;|HKm%^(|&iV z)=}?B)w=x!LD*}`Gr`_q!6YyVuKjc|LI|cPU!@KuwOWwWRr+WuT(1U{RC<gq5sMRMR{v&5?wIB2ZYqd{<>+rExF7MUW22uCZ+FDVj zf}|7+@q5c~y9cQPs*dc|8a*^YHVx94!iz$W7c)PU*dsZQ!4&XBVkJIL%tLr}pC>>( zkKr7l!_qzvSBd~Q+t=AG0ekcZYL@Fhn1K%eIR)6GSG_qCrY>1}CJw@HzJmS;tZfsX zLw)FT*fI8sWiN(ST(BDQ!tN8>RoefhM9OW*;7UxKRd5!j7SBVBNBwYv+fWN3}kD=ZdL^pIr;(jYGgK zVCRP9{@X5pv-&E<(Bj1k#5BzVHR$)}OTp0feP1qJd|OUQciHe99eVz$&dKPJLd2?ON= z!W>eF$CaQyLx5~4Nx`+RU3=|osck#v*zI##>)h@=EyfN**7Ct~=(itRxBjum)~|bP z7y97{8m4@H^Qxz<{{UNtPga=-#(?6PBS68pN&RcjJookvNsfDWOKYuL>XB9sr9WEt z7_R^5qwAkVKce4ncy!OD6Tt(w7D2H486ZVJQ0MWEQv5y*RBIXufNY;qA~z_QFURpi z$IoqqRb?2DKqUR0IGVhDAhW+Lwh3Vl-&@kNcySNXUfNMQ*;-OixzcKhR&|&R9dw`g zB@P;Hm@?;PIT*j|*s)zV{tUav7Nh)y>laa4g^+!cX2xEnXzr#tJ}8`wDGfJBww*- zDHZOQ`It{0CZHzKTtE=MVg|}&#~d@Q0W{HWjVD5YSQ`P%q0u~P0U)6RA)aU@vP9~{ zsaYhJ6O^sp{yv(t+uJdy zQl|qu-EpNN1Qwy|OisEiU@vXqnFUmK%39tHJRjkdI(tX!j~h_)rK+SZ=Tek zQUTho(Nu|jq*f~Sd9ttDa1Jek_u$qdL?qXrGSG0;lQAI8I1<6_N4kfZs4##NlQ&PE zym=%2^LS{Hr6`#Nvb2zd^y;qep6)&hAG*}~O_LmR&380Q- zDdl--$|^=Fgh}=!alM%okC>iI;?j3cUcY`anzTu@tCf=JHcC}sKE8DTulBz@u!ytl zNqfXH^BKEYaPHmHDO}d1O&5Liq=<@_BrkC4wD`C)2D~@p5z=6C(k1b>KFDC`%5!| zdp}MpIqrD;Fq)gI!>s3+P;U?CJ3D8X3i0N~!S*OFY_FQbVXw)HG^3 zwHR}x+o7&Gm^IDXoET9JRnAP2fc;Fwl`rWia4=Q zq6E+Ow3##bg!Cw;+0SLT(~3Jdf^%em=L~{pB;q33l(;Y^Mnt>tGC-4TvIg=*jA`zV zVS3fXbHzdo^09c@7+=6|7N|OsKnX$$T8l|Ym0YG)tAR>p0yzq$N~)ErfLtMwsTDHW znJ)|msD?TnRFAXSpj2iy%cQ_|#A;Q@q0tECipgd(RH}?dm9h)R)e@P(Ad{%U2K159 zDCe{g^GjMzKAGngQXIl@sbU&VGw?W~lFF3e%9k}74Q2_{YK=iNU9Hxdv_Po@T9f8a zYQ0SlBoZZ*%M?;h4VhU7mi7HxrFV?(dI7j}v9e_c_J0Evasr;u?fupqfkCR>-3HNEw^O#a$iGCVRr|KUr8;>#bDY~S}P)%SfW_h&z9 zW!#USNo2?b7oyESati&AV69#;9OZp4Rq)?~cX>q?l6-44ehW^^RH~E?eum&za*bN? z6+jBL+Jy{XD70F|7vKw}R*R(nRO$7qCClJiS|j6FsXle%vb&&OMQ<|8z35c0=>V0% zC!ho$#&!XLl%lfy2|U%19r`L@`rl)W08TANOX83R?}5E5j-uO87rO1}3b6NA;)g*G zn07Q1KT1<$M%^dsW862Y@4f*MkTW2{f6Ia3+#XWNl3V!>DJv$)QAx5$XOKc7*U_`LL$FGeKn6gj< zATi@fj+ng1@V}6Oqe;;axr&4h`pB3pVUIY%{Q%0zaF=5Kla;sAg;ub+wEXw+}}HoTDl8spZFMakwm4hxWe zv_u1ZB?ZJa8v#})w4D#PI311sYD>>;+P^Q!(U745ODFg3Z$j^OPG=!x@Y74+bxW>; zEMOQ2+3B6Xq1ou<{M3B#iNU6oT4=8f+2PLl^HH;;R z7*Soy@T;%DB>SjdviZ^8(~W7;-|*a^7xng%D#>nAg&=2Uo;9;CL!LK5H47-~F`to* z`JCyq@z>wMN5I8(K(G)Nw4mdBEJ~at!ZaBTlSE07{OHR6_3e^LM8R$IrPqIWz0^28 zIo#wuBKUe^k^}z0uf1_HiKnu6(4BVc$b}0>TJ1HUHJP*_o8X_ZU*~new<@Dr1Z}q8 zv`!c^UL*S*HzeW&=usOIk=0CE0d*x5AzncX07)?jDZk!1F_A-jM;_Qj7=uj*wBV4N z->^X&HyBynj2SxCsDIXO7&}%U4?@1AgonK0x6DojQd8;#aV2@Tuy1^~CNeWxzRAGZxRpvF+r+1e}Vzqy~qZ+>SviS=1?d`VwB3*3BwI2fx zT=Ld?XgB)m<*s|b90J0Jdw)3AyKg;Ul%cHIBgS@4pYZfw(lUKcoYy3j9CK58%$ZsV zHUJNF0X7kmfk0-%8S`#BHh^gqogwX1jIbmk3;kC(0X>Qy|NZajC=Pvx9&H6$ym)(ey4Jm(c<9c}1^U(nVK(aW|u(&kP2Tz3+=l zCMx$Yo6~i)%!mM@_*iS$EKl9D=4#)GIupX=x6JATZilt{f z-`V-RLqc6dQ&`Nz0+1V0ulOP{}AyqvIKlO;L9{)M1GfO85?dZNrv z5qyHIYO>`YikTR_6U2NYE@%T0f{|nj0kvQiFB-cSFqrF!nu=Xgvp%g`&P)IL5(}i^+ENcYbVy`Q zYqeGza%k)-wLCjNN3EI@YBTU4WHj8~;|bA>X}H5NJFkQ1-CjeXXZ(o4CS&DL3zL;o zoUK-=Ie9pLcyVKHk%I^Hhv<^ChtZ+Wx4>P;!D>80q|sR`_Ut?`I1_-2LSIv2J~vFYQL%iEBj_id6Yzh`)N%M2 z)F#Xlj;LJ|D@HCBPlVzLbDZXgA(w=x?wD~GOawzjYnyaSl8cWKd;xqJJW-~Lh2nln zi;tr2C9aSlRfJlkD^LTBVHnXk<~%icdfwaUwt3~wyt*6T*VU!|HqvA-n>MY?#dr8v zY56>K+uNmey7zCa%Uk`aTKz9~!{M^dqLPUvMV)1b8{Gd=t3UPBAFdczl(!(SXk5kN zdX!UFN{R=400%($zh(147o(k4W;c!W`#N}6nW@YdBsVFodk1s@)z*{fMRWkYcyjC3 zlb{lGg36PRU1WgFs+YWV&|4fSyC-jq66ze4C7wgz=0l#+Qpb$$h3H@2gKtUdfpSdV zJ!KI%p*?3zPW!~xI~w%g$mQSY8}4YGC?rj4xua44wOszSzVVJ07_5hiF*)~^=9GF4 zzLmNk%{t^MsdUU<*geBhTIvaUaK^nkV-yhI8n2z?$+ixBTDb3G+WF^XSsbOsRNo+K zF13_sHwFwuN*s;Q>9Z*jllU@f_eO&LPYwiLgs>fC8WuQ^P@InntA>xzH*8GAjgOe3 zF&{}IZUxBn8#VfHWm*s(iGrB;g)UHG)1>*+X8D_2Tm8WUZDoN zO)c0tdQ@jLaGBG&WK3j^hSoL4EOcO2euGbYq@h;Lx-EH9%_YMv4jGziPk>DYW^)l* z8Ii3rc6w}!eumo#{=<-pas6?Ps9WMSbXFK7_Snl5zj+M1PpAgu!p&TT0y*e z_`Jlw0!>yV5+EZ(@T4vvv#>_3$1A8N#|ZNfOUv=i5#S?Q^`R(HwGS8tRI8XS8uJQ> z{REyL=R}RfRhZ6@*8CRNKREKP+YauosH|AKb_G!RbG19xhC}&-$BY@Ak9H1PeM#LD z4K+iiJamM^qgCTde+33n2S%%)Wmd$UztCGncz0ko}?j3RU;ljS> z^2fuelf9k^sawWB@?t1l*)^^LOktqpxt6#ud+l=!x?vNezI5!^@``cPFZ@!=fRDzL z2kis8=r8O&vVpw&R*NC$mX&~;3IB4QQn~?rhr2@FL{N%&bcDX@eBZNWXDQ|t{EeIf zR*(n|#z7(hBimj<5xJ3=q!0^n0UJhuog~`3BCrtIWEQ}WiDCsNLg?lt!z-iJv7hpR z-N@o$qBaJb8pBnCwTpYezxSf=ZmVrDnpxIwjFwG(G}+RUeDryIDv_&#+49;+d;hxp zHlSh*J&Sz}!_hWmF?pcfu2;7GHK!G269ig>SZ+()L~EUlV_-~ERRo37#}Rlkv;5mktd6w?B=)T9DB_2J8|KD=d1aYtpu>ozDsLQgZTV?%zKQD;y22{~cR8qE;hS*GjV==QxO1xx<0Aa{wzkY#j3z}!5@5GcrDERv~u z6VE~hfc!A6vBd-7kQ15!gpgJ|TTL6X8yFdg7XUs(cU5CL^LYU$+=FT4p#p~NIih`_ zs2g598Q>s8`hzeyLtMg7P(=u`9MN7ei=cB_fl@WW#z=NIS&jVjwm~bC+Gdi`mt(m6fj1I1U?{(n57dY8>-!(6Rsxy^^E`uLwU_!lx;xR>~em$IT4qF@Q;ouW$Mt>g+I2_sY)UC7fk{ z!klQPF`Uj_Hfp&Td@}9ff)Rb1;7c~0uS2b~&nMi;O z7CtU}zC&Bld|yJXK8jB6J&0ag$N}kZ5y5zcyc2Mt|*`{)(OO6>6vz=x}WTIM14FBkB_=Yk>rxbw9ZN0>L3m;mm=B z(38KA4OZiOJ&*6T1=Evh?K5GP#4`vH(+OaNM%rL@(P^%3V2KcJH-bD2GH##n2otzB zqIGWMiD=J5<|4i%Q~)ntLb$GEN8Tg(c@O7VY~H+btp@;AAT=qd0wAERjfAb1!ovl* z_vM(a?(De6L$EJdsamF~Ebv<_1&0fA?#;1Uy}6|tAFgPF&scFqpMFHtYQ>k#J(z2? z`tr+hrdL~8=(i*}F5BvMF><+a1=wnoGmPAbwrw}bCBW&n<#Ak&#pPn)LxAP=3qM00a&^Ds=g5`jB*Y-UA8;{W5{wg z$spXud1?Fz!TjW$g0`qpU+A(@!fnR6}dt$uN7b9o-!n_Oj%5XX2rV@0a9w@liO5?iq^!1!LA)!)PC(b3( z$#Y>?d*Vc257{9d03sIzI1Z^~vJd~5^KuY1FqSSR%D24`Q4@g9QPkl^g$nH;a9 z0n$0Ma5|oySj-8rai(|6GtZzOpMhx4#C15hW!*$D2NJk95=46-1al@riWGTfi_&yx z49OaE$fOjj;gAIln| z^@Dnc9{=AxffSYFVm7&qzByu$=N(vJEt0e0Q5(Dp@Ib+LjrfAKw?A=h<{rRBa9_vQ z@_Zx6OIO5KwtpoYWkSj`!nJ$Sx6|riBYgQ!Sb9bk_hnuI2E{odm*}&{pB7IvvB9EuWK&f^;Hagj6RNiwQFnj z*RyuIK-1NiF8guWrB{O{`1adxqlcN~MHt*OLtZ~ak3Rt#lt)|E?%TJv<){)pdty9& z=Jm~C^yfjL&>)Z#rUc)0Y5&j}n}VT&*ATM9a0m4$b%e|g8PC;eSMC?Y!LQ^8GD=Op zUn}|R`JPw_%Lu>@)eK$%U5xI6BD#LZp+NK!DY}Y07lgGJO-?=U2tpXN!?XWQEs#th zv=MDgAzie6+hafls)6#*w)Uv*T$!L9CGEiz{W|aiyo;hG7fam{v~Sp852pT$D&Q)W zd=3ONV42ysa3;Gx^Bo)dQ&(*B`g(? zqUV}ZwXnA@iPDP#UL+_pNTl7JlcPxI3eW5$6sLhB+CoeS-~}qEuK{L21d*I@mi$j3 zfEMlQxf4|!M!Oyd^VSyL*|Q5=7o67|K;55#>x1){is0NJ>c(XX*9t`rgO^B|>jTa6 zaox|rbpb*4Z#}D&{8RATXQavnuS5e;5H8~D(#2xxCN98x#?28ItY-13*NfJ730e^Q zr~M`Hg7XCzFsIi5qb?CQ(R0^7x*q=rKd$Q>zkdDr&UGKx4nK3x$co$vgC|7CJ4VAs zyM(d%xJ7J@xiL66I<%_!-aq#h11V~5XKRyTL#nN`-D5Tl_dH!zQ(+XRA|PfHY9v)i(BHv0Ra z#lEb<=wi?WpcJ47mqZG){7Vi2`|O>85<8UB@QER_W(`R-YwRVY&1T^BaBo^pOYkIc z&l22;>G%Y(!8ay=4tO{se&y-p_0WC&^{F#sK+|zdG`FFrj~_=%7BX$94LnMIDJi1u zXa0HoICEd00=41u<-jBM;qhkydmo#^oM0}Vwc4neWTt|osRbfRX*k0zrI?!R|FDfYR~j~+(G8OGlH%vQ=7z9b0`(}X8~`)jpw!z zm@Z3?TB9N1#mq|DiY7ty{RAK|0sqS9CC-Qi@*A%$LOPEr7#vRHf}Kle4B;J@bzC+F zwyfW{ei*IaEpPkcA78Y|cT;B-$}9f0XY~E+XOu(TF8OA#5+uRO&GKDHp?D0fN2O@} zV+w_CxBMB%KpSM9k?&UBV93hL%QCEu;J;mZmArM_xK_DJzYA!kbEoH3SLf~0E9IMa z?AR<<;zW(?)_wbKm63u^zwyS?q#)6P6YOS$eawMUsTyh+HIkZ6&8ODj!FhpCIO@MV z6KqHk)h-erm^KjWPCGycdmxPqlEa8z1bAIIA@M{H8yLH2B0a2SP7D5zGW9d&cq~2& zNw2q*oE9YKEI!8OiM7dp@Van9uMdn}G%=L~=cM=WteDj+z*39+2D(c~qp8yrDJLOE z;t}sG#eO9rxO#(xeGusJ5tuvzA0QY(k&Vd;Ah^E~CJ>@zA-Z%j_(GToq=hC*WHiz- zQTmnMG!}XDtU;DZKsIDOW3U@nfy1Cg>qED^@;rzG#|J0TL2xZPlH$=~coQ8;^`dcTEi8fxkPqxytIdFB zi?R`!Xg8vvER+NDID#K~;ENLpV#3VQxNmYyKyVAhM*$t>eXL+9Lckr2qKYtQikgVJ zx44NPcY^?C;pk{0YBEPJ?8V%ZSE);AMoBAAZ!A~TqVFL{0L>jb+wvh>9|COPz?=hc z&!F}-djZ%{6s!!5X)>9c7j3*1UQ?V`T+kHPfZk-C>Bk3s@3NYklPx7b3*AYIkI);~ zE|X`;6DvU|t{OfOHIHvv;Y1K_NUeh#wf5zcXALp?jjk+@;yN!_Ib&X<)oV0)fK_@+ zJawqc)J#8rMz|O&^i4~D+YoDsTq;V{VorY?o(X1Ci>cMrUg|0873ve}6i@&wZqrK8 z490;q;A*l9opH{AnZqE|CnQjBj_YB_q=%farydjb)j%}nGe(USFh+b!8>2CEG(j74 zL97B8qoGJN5icnO-dr4sMg1lHLVbV4>|?~a7{}u2kk{-Dd4qy91y8fZk(i*`T5L9& zjGTk`i}y(aQ6kCma-#QReASX@#0i9x(HtdEOc^%22H-mfNrpKg?)(b-=$IWP&mR{y zd5O1VAHEEE1>#6MW93EiLgY@-b9cd4F{Lv@qDhf(-3xDeUWIgKCXe&_$d(V;4KN6s zlL^8YCx~!07$WTy`~|+xl;lmbpS@zlh%1iFxhc76@{~K*O`NcP{e+2=HcpwmDS6YJ zBP8$H**C$NoQ|WN3@eeaw1i=$kfsSJitq;k9_(jKCSGqc>3MKhCEEnHnlOFC>rb2g zX0v}Q(U~OW$euf3pil{d(??uRYnDdswrE@~kIU(C9dJ5zHsWZ+p?S1WZMK>XN|VRt zDpXnAR)fmwae6jNRVu!y$mMVp8fQ9#A(zLb)*HRtO#ddc(&ci>r81d5v^r(;P4!ExiofXDCBggx0sbqCn+Xf?{sQPLm`J#-9|KqA)!biLo<-XgeN3VJ$v8) zV(uS}n`$;`meKP;6{s9J9UVjOPM;3)K>nKf=mqq`JW^uLY+R!6I8EyeDwRQ_QlT

0O$B*{^N#OlMNITz% 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]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 shLIN2 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 - - - - - - - - ${log.path}/console.log - - - ${log.path}/console.%d{yyyy-MM-dd}.log - - 1 - - - ${log.pattern} - utf-8 - - - - INFO - - - - - - ${log.path}/info.log - - - - ${log.path}/info.%d{yyyy-MM-dd}.log - - 60 - - - ${log.pattern} - - - - INFO - - ACCEPT - - DENY - - - - - ${log.path}/error.log - - - - ${log.path}/error.%d{yyyy-MM-dd}.log - - 60 - - - ${log.pattern} - - - - ERROR - - ACCEPT - - DENY - - - - - - - 0 - - 512 - - - - - - - - 0 - - 512 - - - - - - - - - - - diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/logback-plus.xml b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/logback-plus.xml deleted file mode 100644 index 680b0afd4..000000000 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/logback-plus.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - ${console.log.pattern} - utf-8 - - - - - - - - - - - - - - - diff --git a/script/config/nacos/application-common.yml b/script/config/nacos/application-common.yml index 52d1dbf42..ce19fa86a 100644 --- a/script/config/nacos/application-common.yml +++ b/script/config/nacos/application-common.yml @@ -83,19 +83,6 @@ spring: # admin 监控账号密码 username: ruoyi userpassword: 123456 - # sentinel 配置 - sentinel: - # sentinel 开关 - enabled: false - transport: - # dashboard控制台服务名 用于服务发现 - # 如无此配置将默认使用下方 dashboard 配置直接注册 - server-name: ruoyi-sentinel-dashboard - # 客户端指定注册的ip 用于多网卡ip不稳点使用 - # client-ip: - # 控制台地址 从1.3.0开始使用 server-name 注册 - # dashboard: localhost:8718 - bus: id: ${spring.application.name} base-packages: org.dromara.**.event @@ -166,7 +153,6 @@ logging: org.springframework: warn org.apache.dubbo: warn com.alibaba.nacos: warn - com.alibaba.cloud.sentinel: warn org.mybatis.spring.mapper: error org.apache.dubbo.config: error org.apache.fury: warn diff --git a/script/config/nacos/ruoyi-gateway.yml b/script/config/nacos/ruoyi-gateway.yml index d9c8b16e4..038e98c5d 100644 --- a/script/config/nacos/ruoyi-gateway.yml +++ b/script/config/nacos/ruoyi-gateway.yml @@ -81,20 +81,3 @@ spring: - Path=/test-mq/** filters: - StripPrefix=1 - - # sentinel 配置 - sentinel: - filter: - enabled: false - # nacos配置持久化 - datasource: - ds1: - nacos: - server-addr: ${spring.cloud.nacos.server-addr} - dataId: sentinel-${spring.application.name}.json - groupId: ${spring.cloud.nacos.config.group} - username: ${spring.cloud.nacos.username} - password: ${spring.cloud.nacos.password} - namespace: ${spring.profiles.active} - data-type: json - rule-type: gw-flow diff --git a/script/config/nacos/ruoyi-sentinel-dashboard.yml b/script/config/nacos/ruoyi-sentinel-dashboard.yml deleted file mode 100644 index 0ff14a280..000000000 --- a/script/config/nacos/ruoyi-sentinel-dashboard.yml +++ /dev/null @@ -1,27 +0,0 @@ -spring: - mvc: - pathmatch: - # 修复 sentinel 控制台未适配 springboot 2.6 新路由方式 - matching-strategy: ANT_PATH_MATCHER - -server: - servlet: - encoding: - force: true - charset: UTF-8 - enabled: true - session: - cookie: - name: sentinel_dashboard_cookie - -logging: - level: - org.springframework.web: INFO - -auth: - enabled: true - filter: - exclude-urls: /,/auth/login,/auth/logout,/registry/machine,/version,/actuator,/actuator/** - exclude-url-suffixes: htm,html,js,css,map,ico,ttf,woff,png - username: sentinel - password: sentinel diff --git a/script/config/nacos/sentinel-ruoyi-gateway.json b/script/config/nacos/sentinel-ruoyi-gateway.json deleted file mode 100644 index 667faac24..000000000 --- a/script/config/nacos/sentinel-ruoyi-gateway.json +++ /dev/null @@ -1,26 +0,0 @@ -[ - { - "resource": "ruoyi-auth", - "count": 500, - "grade": 1, - "limitApp": "default", - "strategy": 0, - "controlBehavior": 0 - }, - { - "resource": "ruoyi-system", - "count": 1000, - "grade": 1, - "limitApp": "default", - "strategy": 0, - "controlBehavior": 0 - }, - { - "resource": "ruoyi-resource", - "count": 500, - "grade": 1, - "limitApp": "default", - "strategy": 0, - "controlBehavior": 0 - } -] diff --git a/script/docker/docker-compose.yml b/script/docker/docker-compose.yml index 399aac8dd..4b982766b 100644 --- a/script/docker/docker-compose.yml +++ b/script/docker/docker-compose.yml @@ -133,21 +133,6 @@ services: privileged: true network_mode: "host" - sentinel: - image: ruoyi/ruoyi-sentinel-dashboard:2.4.1 - container_name: sentinel - environment: - TZ: Asia/Shanghai - ports: - - "8718:8718" - volumes: - # 配置文件 - - /docker/ruoyi-sentinel-dashboard/logs/:/ruoyi/sentinel-dashboard/logs - # skywalking 探针 - - /docker/skywalking/agent/:/ruoyi/skywalking/agent - restart: always - network_mode: "host" - ruoyi-monitor: image: ruoyi/ruoyi-monitor:2.4.1 container_name: ruoyi-monitor diff --git a/script/sql/oracle/oracle_ry_cloud.sql b/script/sql/oracle/oracle_ry_cloud.sql index 42ae012ca..e83d75fd2 100644 --- a/script/sql/oracle/oracle_ry_cloud.sql +++ b/script/sql/oracle/oracle_ry_cloud.sql @@ -445,7 +445,6 @@ insert into sys_menu values('108', '日志管理', '1', '9', 'log', insert into sys_menu values('109', '在线用户', '2', '1', 'online', 'monitor/online/index', '', 1, 0, 'C', '0', '0', 'monitor:online:list', 'online', 103, 1, sysdate, null, null, '在线用户菜单'); insert into sys_menu values('124', '缓存监控', '2', '1', 'cache', 'monitor/cache/index', '', 1, 0, 'C', '0', '0', 'monitor:cache:list', 'redis', 103, 1, sysdate, null, null, '缓存监控'); insert into sys_menu values('110', 'SnailJob控制台', '2', '2', 'http://localhost:8800/snail-job', '', '', 0, 0, 'C', '0', '0', 'monitor:job:list', 'job', 103, 1, sysdate, null, null, '定时任务菜单'); -insert into sys_menu values('111', 'Sentinel控制台','2', '3', 'http://localhost:8718', '', '', 0, 0, 'C', '0', '0', 'monitor:sentinel:list', 'sentinel', 103, 1, sysdate, null, null, '流量控制菜单'); insert into sys_menu values('112', 'Nacos控制台', '2', '4', 'http://localhost:8848/nacos', '', '', 0, 0, 'C', '0', '0', 'monitor:nacos:list', 'nacos', 103, 1, sysdate, null, null, '服务治理菜单'); insert into sys_menu values('113', 'Admin控制台', '2', '5', 'http://localhost:9100/login', '', '', 0, 0, 'C', '0', '0', 'monitor:server:list', 'server', 103, 1, sysdate, null, null, '服务监控菜单'); insert into sys_menu values('115', '代码生成', '3', '2', 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 103, 1, sysdate, null, null, '代码生成菜单'); diff --git a/script/sql/postgres/postgres_ry_cloud.sql b/script/sql/postgres/postgres_ry_cloud.sql index 04b53d94f..52077f413 100644 --- a/script/sql/postgres/postgres_ry_cloud.sql +++ b/script/sql/postgres/postgres_ry_cloud.sql @@ -447,7 +447,6 @@ insert into sys_menu values('108', '日志管理', '1', '9', 'log', insert into sys_menu values('109', '在线用户', '2', '1', 'online', 'monitor/online/index', '', '1', '0', 'C', '0', '0', 'monitor:online:list', 'online', 103, 1, now(), null, null, '在线用户菜单'); insert into sys_menu values('124', '缓存监控', '2', '1', 'cache', 'monitor/cache/index', '', '1', '0', 'C', '0', '0', 'monitor:cache:list', 'redis', 103, 1, now(), null, null, '缓存监控'); insert into sys_menu values('110', 'SnailJob控制台', '2', '2', 'http://localhost:8800/snail-job', '', '', '0', '0', 'C', '0', '0', 'monitor:job:list', 'job', 103, 1, now(), null, null, 'SJ定时任务菜单'); -insert into sys_menu values('111', 'Sentinel控制台','2', '3', 'http://localhost:8718', '', '', '0', '0', 'C', '0', '0', 'monitor:sentinel:list', 'sentinel', 103, 1, now(), null, null, '流量控制菜单'); insert into sys_menu values('112', 'Nacos控制台', '2', '4', 'http://localhost:8848/nacos', '', '', '0', '0', 'C', '0', '0', 'monitor:nacos:list', 'nacos', 103, 1, now(), null, null, '服务治理菜单'); insert into sys_menu values('113', 'Admin控制台', '2', '5', 'http://localhost:9100/login', '', '', '0', '0', 'C', '0', '0', 'monitor:server:list', 'server', 103, 1, now(), null, null, '服务监控菜单'); insert into sys_menu values('115', '代码生成', '3', '2', 'gen', 'tool/gen/index', '', '1', '0', 'C', '0', '0', 'tool:gen:list', 'code', 103, 1, now(), null, null, '代码生成菜单'); diff --git a/script/sql/ry-cloud.sql b/script/sql/ry-cloud.sql index 802e9d30a..e83122f87 100644 --- a/script/sql/ry-cloud.sql +++ b/script/sql/ry-cloud.sql @@ -281,7 +281,6 @@ insert into sys_menu values('108', '日志管理', '1', '9', 'log', insert into sys_menu values('109', '在线用户', '2', '1', 'online', 'monitor/online/index', '', 1, 0, 'C', '0', '0', 'monitor:online:list', 'online', 103, 1, sysdate(), null, null, '在线用户菜单'); insert into sys_menu values('124', '缓存监控', '2', '1', 'cache', 'monitor/cache/index', '', 1, 0, 'C', '0', '0', 'monitor:cache:list', 'redis', 103, 1, sysdate(), null, null, '缓存监控'); insert into sys_menu values('110', 'SnailJob控制台', '2', '2', 'http://localhost:8800/snail-job', '', '', 0, 0, 'C', '0', '0', 'monitor:job:list', 'job', 103, 1, sysdate(), null, null, 'SJ定时任务菜单'); -insert into sys_menu values('111', 'Sentinel控制台','2', '3', 'http://localhost:8718', '', '', 0, 0, 'C', '0', '0', 'monitor:sentinel:list', 'sentinel', 103, 1, sysdate(), null, null, '流量控制菜单'); insert into sys_menu values('112', 'Nacos控制台', '2', '4', 'http://localhost:8848/nacos', '', '', 0, 0, 'C', '0', '0', 'monitor:nacos:list', 'nacos', 103, 1, sysdate(), null, null, '服务治理菜单'); insert into sys_menu values('113', 'Admin控制台', '2', '5', 'http://localhost:9100/login', '', '', 0, 0, 'C', '0', '0', 'monitor:server:list', 'server', 103, 1, sysdate(), null, null, '服务监控菜单'); insert into sys_menu values('115', '代码生成', '3', '2', 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 103, 1, sysdate(), null, null, '代码生成菜单'); diff --git a/script/sql/ry-config.sql b/script/sql/ry-config.sql index 21a5c9a1d..a217a8086 100644 --- a/script/sql/ry-config.sql +++ b/script/sql/ry-config.sql @@ -35,9 +35,7 @@ insert into config_info(id, data_id, group_id, content, md5, gmt_create, gmt_mod (8, 'ruoyi-job.yml', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:20:18', '2022-01-09 15:21:36', NULL, '0:0:0:0:0:0:0:1', '', 'dev', '定时任务', NULL, NULL, 'yaml', NULL, ''), (9, 'ruoyi-resource.yml', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:20:35', '2022-01-09 15:21:21', NULL, '0:0:0:0:0:0:0:1', '', 'dev', '文件服务', NULL, NULL, 'yaml', NULL, ''), (10, 'ruoyi-workflow.yml', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:20:35', '2022-01-09 15:21:21', NULL, '0:0:0:0:0:0:0:1', '', 'dev', '工作流服务', NULL, NULL, 'yaml', NULL, ''), -(11, 'sentinel-ruoyi-gateway.json', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:21:02', '2022-01-09 15:21:02', NULL, '0:0:0:0:0:0:0:1', '', 'dev', '限流策略', NULL, NULL, 'json', NULL, ''), (12, 'seata-server.properties', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:21:02', '2022-01-09 15:21:02', NULL, '0:0:0:0:0:0:0:1', '', 'dev', 'seata配置文件', NULL, NULL, 'properties', NULL, ''), -(13, 'ruoyi-sentinel-dashboard.yml', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:21:02', '2022-01-09 15:21:02', NULL, '0:0:0:0:0:0:0:1', '', 'dev', 'sentinel控制台配置文件', NULL, NULL, 'yaml', NULL, ''), (14, 'ruoyi-snailjob-server.yml', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:21:02', '2022-01-09 15:21:02', NULL, '0:0:0:0:0:0:0:1', '', 'dev', 'SJ定时任务控制台', NULL, NULL, 'yaml', NULL, ''), (101, 'application-common.yml', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:23:00', '2022-01-09 15:23:00', NULL, '0:0:0:0:0:0:0:1', '', 'prod', '通用配置基础配置', NULL, NULL, 'yaml', NULL, ''), @@ -50,9 +48,7 @@ insert into config_info(id, data_id, group_id, content, md5, gmt_create, gmt_mod (108, 'ruoyi-job.yml', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:23:00', '2022-01-09 15:23:00', NULL, '0:0:0:0:0:0:0:1', '', 'prod', '定时任务', NULL, NULL, 'yaml', NULL, ''), (109, 'ruoyi-resource.yml', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:23:00', '2022-01-09 15:23:00', NULL, '0:0:0:0:0:0:0:1', '', 'prod', '文件服务', NULL, NULL, 'yaml', NULL, ''), (110, 'ruoyi-workflow.yml', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:23:00', '2022-01-09 15:23:00', NULL, '0:0:0:0:0:0:0:1', '', 'prod', '工作流服务', NULL, NULL, 'yaml', NULL, ''), -(111, 'sentinel-ruoyi-gateway.json', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:23:00', '2022-01-09 15:23:00', NULL, '0:0:0:0:0:0:0:1', '', 'prod', '限流策略', NULL, NULL, 'json', NULL, ''), (112, 'seata-server.properties', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:21:02', '2022-01-09 15:21:02', NULL, '0:0:0:0:0:0:0:1', '', 'prod', 'seata配置文件', NULL, NULL, 'properties', NULL, ''), -(113, 'ruoyi-sentinel-dashboard.yml', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:21:02', '2022-01-09 15:21:02', NULL, '0:0:0:0:0:0:0:1', '', 'prod', 'sentinel控制台配置文件', NULL, NULL, 'yaml', NULL, ''), (114, 'ruoyi-snailjob-server.yml', 'DEFAULT_GROUP', '# 将项目路径:config/下对应文件中内容复制到此处', '2944a25cb97926efcaa43b3ad7a64cf0', '2022-01-09 15:21:02', '2022-01-09 15:21:02', NULL, '0:0:0:0:0:0:0:1', '', 'prod', 'SJ定时任务控制台', NULL, NULL, 'yaml', NULL, ''); /******************************************/ -- Gitee From 4f42258f99d6ba49be332cdc39f4b6f74b14dbf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 22 Jul 2025 10:33:21 +0800 Subject: [PATCH 051/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=97=A0=E7=94=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-common/ruoyi-common-oss/pom.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/ruoyi-common/ruoyi-common-oss/pom.xml b/ruoyi-common/ruoyi-common-oss/pom.xml index f9583aa1c..190dc5d46 100644 --- a/ruoyi-common/ruoyi-common-oss/pom.xml +++ b/ruoyi-common/ruoyi-common-oss/pom.xml @@ -31,11 +31,6 @@ software.amazon.awssdk s3 - - - software.amazon.awssdk - netty-nio-client - software.amazon.awssdk -- Gitee From e3b449e91e27b14a5d57b0d6ce8b280b75c119ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 22 Jul 2025 18:09:01 +0800 Subject: [PATCH 052/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20getInfo?= =?UTF-8?q?=20=E6=8E=A5=E5=8F=A3=E5=BF=BD=E7=95=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/controller/system/SysUserController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java index 51e7b9479..237170a5c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java @@ -20,6 +20,7 @@ import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.helper.DataPermissionHelper; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.web.core.BaseController; @@ -111,7 +112,7 @@ public class SysUserController extends BaseController { // 超级管理员 如果重新加载用户信息需清除动态租户 TenantHelper.clearDynamic(); } - SysUserVo user = userService.selectUserById(loginUser.getUserId()); + SysUserVo user = DataPermissionHelper.ignore(() -> userService.selectUserById(loginUser.getUserId())); if (ObjectUtil.isNull(user)) { return R.fail("没有权限访问用户数据!"); } -- Gitee From 7ab62a89be207afbcfe9e5ee400cef0e0de3586d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 22 Jul 2025 18:11:04 +0800 Subject: [PATCH 053/155] =?UTF-8?q?add=20=E5=A2=9E=E5=8A=A0=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=B5=81=E7=A8=8B=E5=8F=98=E9=87=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FlwInstanceController.java | 11 ++++++ .../workflow/domain/bo/FlowVariableBo.java | 39 +++++++++++++++++++ .../workflow/service/IFlwInstanceService.java | 9 +++++ .../service/impl/FlwInstanceServiceImpl.java | 25 ++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowVariableBo.java diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java index 4c0615dad..a1cde9a83 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java @@ -142,6 +142,17 @@ public class FlwInstanceController extends BaseController { return R.ok(flwInstanceService.instanceVariable(instanceId)); } + /** + * 修改流程变量 + * + * @param bo 参数 + */ + @RepeatSubmit() + @PutMapping("/updateVariable") + public R updateVariable(@Validated @RequestBody FlowVariableBo bo) { + return toAjax(flwInstanceService.updateVariable(bo)); + } + /** * 作废流程 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowVariableBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowVariableBo.java new file mode 100644 index 000000000..9361299fe --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowVariableBo.java @@ -0,0 +1,39 @@ +package org.dromara.workflow.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.common.core.validate.AddGroup; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 流程变量参数 + * + * @author may + */ +@Data +public class FlowVariableBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 流程实例id + */ + @NotNull(message = "流程实例id为空", groups = AddGroup.class) + private Long instanceId; + + /** + * 流程变量key + */ + @NotNull(message = "流程变量key为空", groups = AddGroup.class) + private String key; + + /** + * 流程变量value + */ + @NotNull(message = "流程变量value为空", groups = AddGroup.class) + private String value; + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java index 7852c2485..09fed0d63 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java @@ -6,6 +6,7 @@ import org.dromara.warm.flow.orm.entity.FlowInstance; import org.dromara.workflow.domain.bo.FlowCancelBo; import org.dromara.workflow.domain.bo.FlowInstanceBo; import org.dromara.workflow.domain.bo.FlowInvalidBo; +import org.dromara.workflow.domain.bo.FlowVariableBo; import org.dromara.workflow.domain.vo.FlowInstanceVo; import java.util.List; @@ -125,6 +126,14 @@ public interface IFlwInstanceService { */ Map instanceVariable(Long instanceId); + /** + * 更新流程变量 + * + * @param bo 参数 + * @return 结果 + */ + boolean updateVariable(FlowVariableBo bo); + /** * 设置流程变量 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index fe03a7cba..513ae7821 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -39,6 +39,7 @@ import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.domain.bo.FlowCancelBo; import org.dromara.workflow.domain.bo.FlowInstanceBo; import org.dromara.workflow.domain.bo.FlowInvalidBo; +import org.dromara.workflow.domain.bo.FlowVariableBo; import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowInstanceVo; import org.dromara.workflow.handler.FlowProcessEventHandler; @@ -356,6 +357,30 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { return Map.of("variableList", variableList, "variable", flowInstance.getVariable()); } + /** + * 设置流程变量 + * + * @param bo 参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean updateVariable(FlowVariableBo bo) { + FlowInstance flowInstance = flowInstanceMapper.selectById(bo.getInstanceId()); + if (flowInstance == null) { + throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE); + } + try { + Map variableMap = new HashMap<>(Optional.ofNullable(flowInstance.getVariableMap()).orElse(Collections.emptyMap())); + variableMap.put(bo.getKey(), bo.getValue()); + flowInstance.setVariable(FlowEngine.jsonConvert.objToStr(variableMap)); + flowInstanceMapper.updateById(flowInstance); + } catch (Exception e) { + log.error("设置流程变量失败: {}", e.getMessage(), e); + throw new ServiceException(e.getMessage()); + } + return true; + } + /** * 设置流程变量 * -- Gitee From f5729d040d6ab96fcf4b864bcb7b9c2663d16fd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 22 Jul 2025 18:15:26 +0800 Subject: [PATCH 054/155] =?UTF-8?q?add=20=E5=A2=9E=E5=8A=A0=20=E5=82=AC?= =?UTF-8?q?=E5=8A=9E=E6=8E=A5=E5=8F=A3=20=E8=B0=83=E6=95=B4=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FlwTaskController.java | 11 ++++++ .../workflow/domain/bo/FlowUrgeTaskBo.java | 38 +++++++++++++++++++ .../workflow/service/IFlwCommonService.java | 12 ++++++ .../workflow/service/IFlwTaskService.java | 7 ++++ .../service/impl/FlwCommonServiceImpl.java | 14 ++++++- .../service/impl/FlwTaskServiceImpl.java | 25 ++++++++++++ 6 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowUrgeTaskBo.java diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java index 26d4f5efa..88124603f 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java @@ -209,4 +209,15 @@ public class FlwTaskController extends BaseController { return R.ok(flwTaskService.currentTaskAllUser(List.of(taskId))); } + /** + * 催办任务 + * + * @param bo 参数 + * @return 结果 + */ + @PostMapping("/urgeTask") + public R urgeTask(@RequestBody FlowUrgeTaskBo bo) { + return toAjax(flwTaskService.urgeTask(bo)); + } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowUrgeTaskBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowUrgeTaskBo.java new file mode 100644 index 000000000..8e51b12e5 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowUrgeTaskBo.java @@ -0,0 +1,38 @@ +package org.dromara.workflow.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.common.core.validate.AddGroup; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * 流程变量参数 + * + * @author may + */ +@Data +public class FlowUrgeTaskBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 任务id + */ + @NotNull(message = "任务id为空", groups = AddGroup.class) + private List taskIdList; + + /** + * 消息类型 + */ + private List messageType; + + /** + * 催办内容 + */ + @NotNull(message = "催办内容为空", groups = AddGroup.class) + private String message; +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCommonService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCommonService.java index 2390c43e4..2e3eb72d2 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCommonService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCommonService.java @@ -1,5 +1,7 @@ package org.dromara.workflow.service; +import org.dromara.system.api.domain.vo.RemoteUserVo; + import java.util.List; /** @@ -18,6 +20,16 @@ public interface IFlwCommonService { */ void sendMessage(String flowName, Long instId, List messageType, String message); + /** + * 发送消息 + * + * @param messageType 消息类型 + * @param message 消息内容 + * @param subject 邮件标题 + * @param userList 接收用户 + */ + void sendMessage(List messageType, String message, String subject, List userList); + /** * 申请人节点编码 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java index 1e738f9ba..be1e4bbc7 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java @@ -199,4 +199,11 @@ public interface IFlwTaskService { */ FlowNode getByNodeCode(String nodeCode, Long definitionId); + /** + * 催办任务 + * + * @param bo 参数 + * @return 结果 + */ + boolean urgeTask(FlowUrgeTaskBo bo); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java index f442bf2f4..1628514e6 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java @@ -61,6 +61,19 @@ public class FlwCommonServiceImpl implements IFlwCommonService { if (CollUtil.isEmpty(userList)) { return; } + sendMessage(messageType, message, "单据审批提醒", userList); + } + + /** + * 发送消息 + * + * @param messageType 消息类型 + * @param message 消息内容 + * @param subject 邮件标题 + * @param userList 接收用户 + */ + @Override + public void sendMessage(List messageType, String message, String subject, List userList) { for (String code : messageType) { MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); if (ObjectUtil.isEmpty(messageTypeEnum)) { @@ -80,7 +93,6 @@ public class FlwCommonServiceImpl implements IFlwCommonService { default -> throw new IllegalStateException("Unexpected value: " + messageTypeEnum); } } - } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 8f6a5b7e6..212ef901d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -725,4 +725,29 @@ public class FlwTaskServiceImpl implements IFlwTaskService { .eq(FlowNode::getDefinitionId, definitionId)); } + /** + * 催办任务 + * + * @param bo 参数 + */ + @Override + public boolean urgeTask(FlowUrgeTaskBo bo) { + try { + if (CollUtil.isEmpty(bo.getTaskIdList())) { + return false; + } + List userList = this.currentTaskAllUser(bo.getTaskIdList()); + if (CollUtil.isEmpty(userList)) { + return false; + } + List messageType = bo.getMessageType(); + String message = bo.getMessage(); + flwCommonService.sendMessage(messageType, message, "单据审批提醒", userList); + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new ServiceException(e.getMessage()); + } + return true; + } + } -- Gitee From 30653c6d0fc96cc33fbb7c009fbe0945c30a6170 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 23 Jul 2025 17:47:49 +0800 Subject: [PATCH 055/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E4=B8=8A=E4=BC=A0=E8=B6=85=E6=97=B6=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/dromara/common/oss/core/OssClient.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java index 99bc294ed..d5a0c2966 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java @@ -177,12 +177,12 @@ public class OssClient { // 创建异步请求体(length如果为空会报错) BlockingInputStreamAsyncRequestBody body = BlockingInputStreamAsyncRequestBody.builder() .contentLength(length) - .subscribeTimeout(Duration.ofSeconds(30)) + .subscribeTimeout(Duration.ofSeconds(120)) .build(); // 使用 transferManager 进行上传 Upload upload = transferManager.upload( - x -> x.requestBody(body) + x -> x.requestBody(body).addTransferListener(LoggingTransferListener.create()) .putObjectRequest( y -> y.bucket(properties.getBucketName()) .key(key) -- Gitee From 36e18aa71ede281f012234199e4375aaa762ab36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 24 Jul 2025 15:24:10 +0800 Subject: [PATCH 056/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E7=9B=91?= =?UTF-8?q?=E5=90=AC=E5=99=A8=E5=8F=98=E9=87=8F=E4=BD=BF=E7=94=A8=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/workflow/listener/WorkflowGlobalListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index e6d80311f..142cfa6fc 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -157,7 +157,7 @@ public class WorkflowGlobalListener implements GlobalListener { flwTaskService.setCopy(task, flowCopyList); } if (variable.containsKey(FlowConstant.MESSAGE_TYPE)) { - List messageType = MapUtil.get(variable, FlowConstant.FLOW_COPY_LIST, new TypeReference<>() {}); + List messageType = MapUtil.get(variable, FlowConstant.MESSAGE_TYPE, new TypeReference<>() {}); String notice = MapUtil.getStr(variable, FlowConstant.MESSAGE_NOTICE); // 消息通知 if (CollUtil.isNotEmpty(messageType)) { -- Gitee From 1bc23099aa47045e8522f6497a22bbb39e84eecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 25 Jul 2025 15:48:26 +0800 Subject: [PATCH 057/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E6=9D=83?= =?UTF-8?q?=E9=99=90=E4=B8=BAnull=E5=AF=BC=E8=87=B4=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../satoken/core/service/SaPermissionImpl.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java index e6b0404f8..86e16dc1b 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java @@ -1,6 +1,7 @@ package org.dromara.common.satoken.core.service; import cn.dev33.satoken.stp.StpInterface; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import org.dromara.common.core.enums.UserType; import org.dromara.common.core.exception.ServiceException; @@ -39,8 +40,12 @@ public class SaPermissionImpl implements StpInterface { if (userType == UserType.APP_USER) { // 其他端 自行根据业务编写 } - // SYS_USER 默认返回权限 - return new ArrayList<>(loginUser.getMenuPermission()); + if (CollUtil.isNotEmpty(loginUser.getMenuPermission())) { + // SYS_USER 默认返回权限 + return new ArrayList<>(loginUser.getMenuPermission()); + } else { + return new ArrayList<>(); + } } /** @@ -62,8 +67,12 @@ public class SaPermissionImpl implements StpInterface { if (userType == UserType.APP_USER) { // 其他端 自行根据业务编写 } - // SYS_USER 默认返回权限 - return new ArrayList<>(loginUser.getRolePermission()); + if (CollUtil.isNotEmpty(loginUser.getRolePermission())) { + // SYS_USER 默认返回权限 + return new ArrayList<>(loginUser.getMenuPermission()); + } else { + return new ArrayList<>(); + } } private PermissionService getPermissionService() { -- Gitee From 35937624b2c3e32cee3a3f0a1f90cc0bffb1d357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 25 Jul 2025 16:37:55 +0800 Subject: [PATCH 058/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=E4=B8=AD=E5=BF=83=E6=95=B0=E6=8D=AE=E8=A2=AB=E8=84=B1?= =?UTF-8?q?=E6=95=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/SysProfileController.java | 9 +- .../system/domain/vo/ProfileUserVo.java | 90 +++++++++++++++++++ 2 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ProfileUserVo.java diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java index ef34e1417..75a1257c0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java @@ -1,8 +1,8 @@ package org.dromara.system.controller.system; -import cn.hutool.crypto.digest.BCrypt; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.io.FileUtil; +import cn.hutool.crypto.digest.BCrypt; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboReference; import org.apache.seata.spring.annotation.GlobalTransactional; @@ -21,6 +21,7 @@ import org.dromara.resource.api.domain.RemoteFile; import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.bo.SysUserPasswordBo; import org.dromara.system.domain.bo.SysUserProfileBo; +import org.dromara.system.domain.vo.ProfileUserVo; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISysUserService; import org.springframework.http.MediaType; @@ -55,7 +56,9 @@ public class SysProfileController extends BaseController { SysUserVo user = userService.selectUserById(LoginHelper.getUserId()); String roleGroup = userService.selectUserRoleGroup(user.getUserId()); String postGroup = userService.selectUserPostGroup(user.getUserId()); - ProfileVo profileVo = new ProfileVo(user, roleGroup, postGroup); + // 单独做一个vo专门给个人中心用 避免数据被脱敏 + ProfileUserVo profileUser = BeanUtil.toBean(user, ProfileUserVo.class); + ProfileVo profileVo = new ProfileVo(profileUser, roleGroup, postGroup); return R.ok(profileVo); } @@ -134,6 +137,6 @@ public class SysProfileController extends BaseController { public record AvatarVo(String imgUrl) {} - public record ProfileVo(SysUserVo user, String roleGroup, String postGroup) {} + public record ProfileVo(ProfileUserVo user, String roleGroup, String postGroup) {} } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ProfileUserVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ProfileUserVo.java new file mode 100644 index 000000000..70fc5d3bc --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ProfileUserVo.java @@ -0,0 +1,90 @@ +package org.dromara.system.domain.vo; + +import lombok.Data; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 用户信息视图对象 sys_user + * + * @author Lion Li + */ +@Data +public class ProfileUserVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 用户ID + */ + private Long userId; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 部门ID + */ + private Long deptId; + + /** + * 用户账号 + */ + private String userName; + + /** + * 用户昵称 + */ + private String nickName; + + /** + * 用户类型(sys_user系统用户) + */ + private String userType; + + /** + * 用户邮箱 + */ + private String email; + + /** + * 手机号码 + */ + private String phonenumber; + + /** + * 用户性别(0男 1女 2未知) + */ + private String sex; + + /** + * 头像地址 + */ + @Translation(type = TransConstant.OSS_ID_TO_URL) + private Long avatar; + + /** + * 最后登录IP + */ + private String loginIp; + + /** + * 最后登录时间 + */ + private Date loginDate; + + /** + * 部门名 + */ + @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "deptId") + private String deptName; + +} -- Gitee From 3cb0567b3b326c847228c742e317cbfa91e75d71 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Sat, 26 Jul 2025 16:42:13 +0800 Subject: [PATCH 059/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E6=9D=83?= =?UTF-8?q?=E9=99=90=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/satoken/core/service/SaPermissionImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java index 86e16dc1b..3fb71ea8f 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java @@ -67,7 +67,7 @@ public class SaPermissionImpl implements StpInterface { if (userType == UserType.APP_USER) { // 其他端 自行根据业务编写 } - if (CollUtil.isNotEmpty(loginUser.getRolePermission())) { + if (CollUtil.isNotEmpty(loginUser.getMenuPermission())) { // SYS_USER 默认返回权限 return new ArrayList<>(loginUser.getMenuPermission()); } else { -- Gitee From d68ff10e6f3fe1a398871b441b5c4280e3ebdcb2 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Sat, 26 Jul 2025 16:59:12 +0800 Subject: [PATCH 060/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E6=9D=83?= =?UTF-8?q?=E9=99=90=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/satoken/core/service/SaPermissionImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java index 3fb71ea8f..730a14a3e 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java @@ -67,9 +67,9 @@ public class SaPermissionImpl implements StpInterface { if (userType == UserType.APP_USER) { // 其他端 自行根据业务编写 } - if (CollUtil.isNotEmpty(loginUser.getMenuPermission())) { + if (CollUtil.isNotEmpty(loginUser.getRolePermission())) { // SYS_USER 默认返回权限 - return new ArrayList<>(loginUser.getMenuPermission()); + return new ArrayList<>(loginUser.getRolePermission()); } else { return new ArrayList<>(); } -- Gitee From d5e4a069d427af8c8b487c073dcc31f812fcc37a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 28 Jul 2025 13:38:35 +0800 Subject: [PATCH 061/155] =?UTF-8?q?update=20=E5=A2=9E=E5=8A=A0=E5=9B=BD?= =?UTF-8?q?=E5=86=85=E6=96=87=E6=A1=A3=E5=8A=A0=E9=80=9F=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6ebdf6441..c9a06ef39 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ > 成员前端项目地址: 基于soybean [ruoyi-plus-soybean](https://gitee.com/xlsea/ruoyi-plus-soybean)
> 成员项目地址: 删除多租户与工作流 [RuoYi-Vue-Plus-Single](https://gitee.com/ColorDreams/RuoYi-Vue-Plus-Single)
-> 文档地址: [plus-doc](https://plus-doc.dromara.org) 文档在华为云上如果打不开大概率是DNS问题 可以尝试切换网络等方式(或者科学上网) +> 文档地址: [plus-doc](https://plus-doc.dromara.org) 国内加速: [plus-doc.top](https://plus-doc.top) ## 赞助商 -- Gitee From f8152410e3bbcdc6ebadfc71057a153dea8664e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8A=B1=E7=94=9F=E7=B1=B3?= <1769704852@qq.com> Date: Mon, 28 Jul 2025 08:44:09 +0000 Subject: [PATCH 062/155] =?UTF-8?q?!233=20fix=20=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E4=B8=8D=E8=BE=93=E5=87=BA=E6=96=87=E4=BB=B6=EF=BC=8Cadd=20log?= =?UTF-8?q?back-common.xml=20*=20fix=20=E6=97=A5=E5=BF=97=E4=B8=8D?= =?UTF-8?q?=E8=BE=93=E5=87=BA=E6=96=87=E4=BB=B6=EF=BC=8Cadd=20logback-comm?= =?UTF-8?q?on.xml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/logback-common.xml | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 ruoyi-visual/ruoyi-monitor/src/main/resources/logback-common.xml diff --git a/ruoyi-visual/ruoyi-monitor/src/main/resources/logback-common.xml b/ruoyi-visual/ruoyi-monitor/src/main/resources/logback-common.xml new file mode 100644 index 000000000..89eaa97ec --- /dev/null +++ b/ruoyi-visual/ruoyi-monitor/src/main/resources/logback-common.xml @@ -0,0 +1,97 @@ + + + + + + + + + ${log.path}/console.log + + + ${log.path}/console.%d{yyyy-MM-dd}.log + + 1 + + + ${log.pattern} + utf-8 + + + + INFO + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + 0 + + 512 + + + + + + + + 0 + + 512 + + + + + + + + + + + -- Gitee From 36298c79f0980e84068c3707e270fda4ad70df33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 28 Jul 2025 17:31:59 +0800 Subject: [PATCH 063/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E5=A7=94?= =?UTF-8?q?=E6=89=98=E3=80=81=E8=BD=AC=E5=8A=9E=E6=97=B6nextTasks=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E5=AF=BC=E8=87=B4=E7=A9=BA=E6=8C=87=E9=92=88=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/workflow/listener/WorkflowGlobalListener.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 142cfa6fc..88a4dbf5f 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -15,7 +15,6 @@ import org.dromara.warm.flow.core.entity.Task; import org.dromara.warm.flow.core.listener.GlobalListener; import org.dromara.warm.flow.core.listener.ListenerVariable; import org.dromara.warm.flow.core.service.InsService; -import org.dromara.warm.flow.orm.entity.FlowTask; import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.common.enums.TaskStatusEnum; @@ -126,7 +125,7 @@ public class WorkflowGlobalListener implements GlobalListener { if (StringUtils.isNotBlank(status)) { flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, status, params, false); } - if (task != null && nextTasks.size() == 1 && flwCommonService.applyNodeCode(definition.getId()).equals(nextTasks.get(0).getNodeCode())) { + if (task != null && CollUtil.isNotEmpty(nextTasks) && nextTasks.size() == 1 && flwCommonService.applyNodeCode(definition.getId()).equals(nextTasks.get(0).getNodeCode())) { //如果为画线指定驳回 线条指定为驳回 驳回得节点为申请人节点 则修改流程状态为退回 flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, BusinessStatusEnum.BACK.getStatus(), params, false); //修改流程实例状态 @@ -185,7 +184,6 @@ public class WorkflowGlobalListener implements GlobalListener { return flowStatus; } else { Long instanceId = instance.getId(); - List flowTasks = flwTaskService.selectByInstId(instanceId); if (flwTaskService.isTaskEnd(instanceId)) { String status = BusinessStatusEnum.FINISH.getStatus(); // 更新流程状态为已完成 -- Gitee From 0f0fb92ff6d635cdc2b27788fb9f439048238108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 28 Jul 2025 17:32:59 +0800 Subject: [PATCH 064/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20getBackTa?= =?UTF-8?q?skNode=20=E8=8E=B7=E5=8F=96=E9=A9=B3=E5=9B=9E=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E5=A6=82=E6=9E=9C=E6=98=AF=E5=A7=94?= =?UTF-8?q?=E6=B4=BE=E7=9B=B4=E6=8E=A5=E8=BF=94=E5=9B=9E=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E8=8A=82=E7=82=B9=20=E4=B8=8D=E5=85=81=E8=AE=B8=E9=A9=B3?= =?UTF-8?q?=E5=9B=9E=E5=88=B0=E5=85=B6=E4=BB=96=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/controller/FlwTaskController.java | 8 ++++---- .../workflow/service/IFlwTaskService.java | 4 ++-- .../service/impl/FlwTaskServiceImpl.java | 17 ++++++++++++----- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java index 88124603f..b7a3cf9b2 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java @@ -191,12 +191,12 @@ public class FlwTaskController extends BaseController { /** * 获取可驳回的前置节点 * - * @param definitionId 流程定义id + * @param taskId 任务id * @param nowNodeCode 当前节点 */ - @GetMapping("/getBackTaskNode/{definitionId}/{nowNodeCode}") - public R> getBackTaskNode(@PathVariable Long definitionId, @PathVariable String nowNodeCode) { - return R.ok(flwTaskService.getBackTaskNode(definitionId, nowNodeCode)); + @GetMapping("/getBackTaskNode/{taskId}/{nowNodeCode}") + public R> getBackTaskNode(@PathVariable Long taskId, @PathVariable String nowNodeCode) { + return R.ok(flwTaskService.getBackTaskNode(taskId, nowNodeCode)); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java index be1e4bbc7..f415070aa 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java @@ -111,11 +111,11 @@ public interface IFlwTaskService { /** * 获取可驳回的前置节点 * - * @param definitionId 流程定义id + * @param taskId 任务id * @param nowNodeCode 当前节点 * @return 结果 */ - List getBackTaskNode(Long definitionId, String nowNodeCode); + List getBackTaskNode(Long taskId, String nowNodeCode); /** * 终止任务 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 212ef901d..b0a290991 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -29,6 +29,7 @@ import org.dromara.warm.flow.core.dto.FlowParams; import org.dromara.warm.flow.core.entity.*; import org.dromara.warm.flow.core.enums.NodeType; import org.dromara.warm.flow.core.enums.SkipType; +import org.dromara.warm.flow.core.enums.UserType; import org.dromara.warm.flow.core.service.*; import org.dromara.warm.flow.core.utils.ExpressionUtil; import org.dromara.warm.flow.core.utils.MapUtil; @@ -422,22 +423,28 @@ public class FlwTaskServiceImpl implements IFlwTaskService { /** * 获取可驳回的前置节点 * - * @param definitionId 流程定义id + * @param taskId 任务id * @param nowNodeCode 当前节点 */ @Override - public List getBackTaskNode(Long definitionId, String nowNodeCode) { - List nodeCodes = nodeService.getByNodeCodes(Collections.singletonList(nowNodeCode), definitionId); + public List getBackTaskNode(Long taskId, String nowNodeCode) { + FlowTask task = flowTaskMapper.selectById(taskId); + List nodeCodes = nodeService.getByNodeCodes(Collections.singletonList(nowNodeCode), task.getDefinitionId()); if (!CollUtil.isNotEmpty(nodeCodes)) { return nodeCodes; } + List userList = FlowEngine.userService() + .getByAssociateds(Collections.singletonList(task.getId()), UserType.DEPUTE.getKey()); + if (CollUtil.isNotEmpty(userList)) { + return nodeCodes; + } //判断是否配置了固定驳回节点 Node node = nodeCodes.get(0); if (StringUtils.isNotBlank(node.getAnyNodeSkip())) { - return nodeService.getByNodeCodes(Collections.singletonList(node.getAnyNodeSkip()), definitionId); + return nodeService.getByNodeCodes(Collections.singletonList(node.getAnyNodeSkip()), task.getDefinitionId()); } //获取可驳回的前置节点 - List nodes = nodeService.previousNodeList(definitionId, nowNodeCode); + List nodes = nodeService.previousNodeList(task.getDefinitionId(), nowNodeCode); if (CollUtil.isNotEmpty(nodes)) { return StreamUtils.filter(nodes, e -> NodeType.BETWEEN.getKey().equals(e.getNodeType())); } -- Gitee From 44a5eb2ec9b5f83f082a2d191346981d4feb285a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 28 Jul 2025 17:40:55 +0800 Subject: [PATCH 065/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E8=87=AA=E5=8A=A8=E5=AE=A1=E6=89=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/FlowConstant.java | 5 + .../controller/FlwInstanceController.java | 11 ++ .../workflow/service/IFlwInstanceService.java | 8 ++ .../workflow/service/IFlwTaskService.java | 8 ++ .../service/impl/FlwInstanceServiceImpl.java | 73 +++++++++-- .../service/impl/FlwTaskServiceImpl.java | 124 ++++++++++++------ 6 files changed, 178 insertions(+), 51 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java index 81b8de592..234ec9725 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java @@ -83,4 +83,9 @@ public interface FlowConstant { */ String WF_TASK_STATUS = "wf_task_status"; + /** + * 自动通过 + */ + String AUTO_PASS = "autoPass"; + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java index a1cde9a83..cf2de819c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java @@ -13,6 +13,7 @@ import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.domain.bo.FlowCancelBo; import org.dromara.workflow.domain.bo.FlowInstanceBo; import org.dromara.workflow.domain.bo.FlowInvalidBo; +import org.dromara.workflow.domain.bo.FlowVariableBo; import org.dromara.workflow.domain.vo.FlowInstanceVo; import org.dromara.workflow.service.IFlwInstanceService; import org.springframework.validation.annotation.Validated; @@ -88,6 +89,16 @@ public class FlwInstanceController extends BaseController { return toAjax(flwInstanceService.deleteByInstanceIds(instanceIds)); } + /** + * 按照实例id删除已完成得流程实例 + * + * @param instanceIds 实例id + */ + @DeleteMapping("/deleteHisByInstanceIds/{instanceIds}") + public R deleteHisByInstanceIds(@PathVariable List instanceIds) { + return toAjax(flwInstanceService.deleteHisByInstanceIds(instanceIds)); + } + /** * 撤销流程 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java index 09fed0d63..54ffe977e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java @@ -85,6 +85,14 @@ public interface IFlwInstanceService { */ boolean deleteByInstanceIds(List instanceIds); + /** + * 按照实例id删除已完成得流程实例 + * + * @param instanceIds 删除的实例id + * @return 删除结果 + */ + boolean deleteHisByInstanceIds(List instanceIds); + /** * 撤销流程 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java index f415070aa..c1c52dea6 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java @@ -165,6 +165,14 @@ public interface IFlwTaskService { */ List selectByInstId(Long instanceId); + /** + * 按照实例id查询任务 + * + * @param instanceIds 列表 + * @return 结果 + */ + List selectByInstIds(List instanceIds); + /** * 判断流程是否已结束(即该流程实例下是否还有未完成的任务) * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index 513ae7821..230396eb0 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -211,18 +211,71 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { Function.identity() ); - // 逐一触发删除事件 - instances.forEach(instance -> { - Definition definition = definitionMap.get(instance.getDefinitionId()); - if (ObjectUtil.isNull(definition)) { - log.warn("实例 ID: {} 对应的流程定义信息未找到,跳过删除事件触发。", instance.getId()); - return; + try { + // 逐一触发删除事件 + instances.forEach(instance -> { + Definition definition = definitionMap.get(instance.getDefinitionId()); + if (ObjectUtil.isNull(definition)) { + log.warn("实例 ID: {} 对应的流程定义信息未找到,跳过删除事件触发。", instance.getId()); + return; + } + flowProcessEventHandler.processDeleteHandler(definition.getFlowCode(), instance.getBusinessId()); + }); + // 删除实例 + boolean remove = insService.remove(instanceIds); + if (!remove) { + log.warn("删除流程实例失败!"); + throw new ServiceException("删除流程实例失败"); } - flowProcessEventHandler.processDeleteHandler(definition.getFlowCode(), instance.getBusinessId()); - }); + } catch (Exception e) { + log.warn("操作失败!{}", e.getMessage()); + throw new ServiceException(e.getMessage()); + } + return true; + } - // 删除实例 - return insService.remove(instanceIds); + /** + * 按照实例id删除已完成的流程实例 + * + * @param instanceIds 实例id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean deleteHisByInstanceIds(List instanceIds) { + // 获取实例信息 + List instances = insService.getByIds(instanceIds); + if (CollUtil.isEmpty(instances)) { + log.warn("未找到对应的流程实例信息,无法执行删除操作。"); + return false; + } + // 获取定义信息 + Map definitionMap = StreamUtils.toMap( + defService.getByIds(StreamUtils.toList(instances, Instance::getDefinitionId)), + Definition::getId, + Function.identity() + ); + try { + // 逐一触发删除事件 + instances.forEach(instance -> { + Definition definition = definitionMap.get(instance.getDefinitionId()); + if (ObjectUtil.isNull(definition)) { + log.warn("实例 ID: {} 对应的流程定义信息未找到,跳过删除事件触发。", instance.getId()); + return; + } + flowProcessEventHandler.processDeleteHandler(definition.getFlowCode(), instance.getBusinessId()); + }); + List flowTaskList = flwTaskService.selectByInstIds(instanceIds); + if (CollUtil.isNotEmpty(flowTaskList)) { + FlowEngine.userService().deleteByTaskIds(StreamUtils.toList(flowTaskList, FlowTask::getId)); + } + FlowEngine.taskService().deleteByInsIds(instanceIds); + FlowEngine.hisTaskService().deleteByInsIds(instanceIds); + FlowEngine.insService().removeByIds(instanceIds); + } catch (Exception e) { + log.warn("操作失败!{}", e.getMessage()); + throw new ServiceException(e.getMessage()); + } + return true; } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index b0a290991..c7b5130dd 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -3,6 +3,7 @@ package org.dromara.workflow.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -19,6 +20,7 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.ValidatorUtils; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; @@ -34,10 +36,7 @@ import org.dromara.warm.flow.core.service.*; import org.dromara.warm.flow.core.utils.ExpressionUtil; import org.dromara.warm.flow.core.utils.MapUtil; import org.dromara.warm.flow.orm.entity.*; -import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; -import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper; -import org.dromara.warm.flow.orm.mapper.FlowNodeMapper; -import org.dromara.warm.flow.orm.mapper.FlowTaskMapper; +import org.dromara.warm.flow.orm.mapper.*; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.constant.FlowConstant; @@ -46,7 +45,6 @@ import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo; -import org.dromara.workflow.handler.FlowProcessEventHandler; import org.dromara.workflow.mapper.FlwCategoryMapper; import org.dromara.workflow.mapper.FlwTaskMapper; import org.dromara.workflow.service.IFlwCommonService; @@ -81,7 +79,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService { private final FlowTaskMapper flowTaskMapper; private final FlowHisTaskMapper flowHisTaskMapper; private final IdentifierGenerator identifierGenerator; - private final FlowProcessEventHandler flowProcessEventHandler; private final FlwTaskMapper flwTaskMapper; private final FlwCategoryMapper flwCategoryMapper; private final FlowNodeMapper flowNodeMapper; @@ -124,6 +121,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService { dto.setTaskId(taskList.get(0).getId()); return dto; } + // 将流程定义内的扩展参数设置到变量中 + Definition definition = FlowEngine.defService().getPublishByFlowCode(startProcessBo.getFlowCode()); + Dict dict = JsonUtils.parseMap(definition.getExt()); + boolean autoPass = !ObjectUtil.isNull(dict) && dict.getBool(FlowConstant.AUTO_PASS); + variables.put(FlowConstant.AUTO_PASS, autoPass); + FlowParams flowParams = FlowParams.build() .flowCode(startProcessBo.getFlowCode()) .variable(startProcessBo.getVariables()) @@ -161,11 +164,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService { // 获取抄送人 List flowCopyList = completeTaskBo.getFlowCopyList(); // 设置抄送人 - completeTaskBo.getVariables().put(FlowConstant.FLOW_COPY_LIST, flowCopyList); + Map variables = completeTaskBo.getVariables(); + variables.put(FlowConstant.FLOW_COPY_LIST, flowCopyList); // 消息类型 - completeTaskBo.getVariables().put(FlowConstant.MESSAGE_TYPE, messageType); + variables.put(FlowConstant.MESSAGE_TYPE, messageType); // 消息通知 - completeTaskBo.getVariables().put(FlowConstant.MESSAGE_NOTICE, notice); + variables.put(FlowConstant.MESSAGE_NOTICE, notice); FlowTask flowTask = flowTaskMapper.selectById(taskId); if (ObjectUtil.isNull(flowTask)) { @@ -174,23 +178,23 @@ public class FlwTaskServiceImpl implements IFlwTaskService { Instance ins = insService.getById(flowTask.getInstanceId()); // 检查流程状态是否为草稿、已撤销或已退回状态,若是则执行流程提交监听 if (BusinessStatusEnum.isDraftOrCancelOrBack(ins.getFlowStatus())) { - completeTaskBo.getVariables().put(FlowConstant.SUBMIT, true); + variables.put(FlowConstant.SUBMIT, true); } // 设置弹窗处理人 Map assigneeMap = setPopAssigneeMap(completeTaskBo.getAssigneeMap(), ins.getVariableMap()); if (CollUtil.isNotEmpty(assigneeMap)) { - completeTaskBo.getVariables().putAll(assigneeMap); + variables.putAll(assigneeMap); } // 构建流程参数,包括变量、跳转类型、消息、处理人、权限等信息 FlowParams flowParams = FlowParams.build() - .variable(completeTaskBo.getVariables()) + .variable(variables) .skipType(SkipType.PASS.getKey()) .message(completeTaskBo.getMessage()) .flowStatus(BusinessStatusEnum.WAITING.getStatus()) .hisStatus(TaskStatusEnum.PASS.getStatus()) .hisTaskExt(completeTaskBo.getFileId()); - // 执行任务跳转,并根据返回的处理人设置下一步处理人 - taskService.skip(taskId, flowParams); + Boolean autoPass = Convert.toBool(variables.getOrDefault(AUTO_PASS, false)); + skipTask(taskId, flowParams, flowTask.getInstanceId(), autoPass); return true; } catch (Exception e) { log.error(e.getMessage(), e); @@ -198,6 +202,43 @@ public class FlwTaskServiceImpl implements IFlwTaskService { } } + /** + * 流程办理 + * + * @param taskId 任务ID + * @param flowParams 参数 + * @param instanceId 实例ID + * @param autoPass 自动审批 + */ + private void skipTask(Long taskId, FlowParams flowParams, Long instanceId, Boolean autoPass) { + // 执行任务跳转,并根据返回的处理人设置下一步处理人 + taskService.skip(taskId, flowParams); + List flowTaskList = selectByInstId(instanceId); + if (CollUtil.isEmpty(flowTaskList)) { + return; + } + List userList = FlowEngine.userService() + .getByAssociateds(StreamUtils.toList(flowTaskList, FlowTask::getId)); + if (CollUtil.isEmpty(userList)) { + return; + } + for (FlowTask task : flowTaskList) { + if (!task.getId().equals(taskId) && autoPass) { + List users = StreamUtils.filter(userList, e -> ObjectUtil.equals(task.getId(), e.getAssociated()) && ObjectUtil.equal(e.getProcessedBy(), LoginHelper.getUserIdStr())); + if (CollUtil.isEmpty(users)) { + continue; + } + flowParams. + message("流程引擎自动审批!"). + variable(Map.of( + FlowConstant.SUBMIT, false, + FlowConstant.FLOW_COPY_LIST, Collections.emptyList(), + FlowConstant.MESSAGE_NOTICE, StringUtils.EMPTY)); + skipTask(task.getId(), flowParams, instanceId, true); + } + } + } + /** * 设置弹窗处理人 * @@ -241,7 +282,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { return; } // 添加抄送人记录 - FlowHisTask flowHisTask = flowHisTaskMapper.selectList(new LambdaQueryWrapper<>(FlowHisTask.class).eq(FlowHisTask::getTaskId, task.getId())).get(0); + FlowHisTask flowHisTask = flowHisTaskMapper.selectList( + new LambdaQueryWrapper<>(FlowHisTask.class) + .eq(FlowHisTask::getTaskId, task.getId())).get(0); FlowNode flowNode = new FlowNode(); flowNode.setNodeCode(flowHisTask.getTargetNodeCode()); flowNode.setNodeName(flowHisTask.getTargetNodeName()); @@ -262,8 +305,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { new FlowUser() .setType(TaskAssigneeType.COPY.getCode()) .setProcessedBy(String.valueOf(x.getUserId())) - .setAssociated(taskId) - ); + .setAssociated(taskId)); // 批量保存抄送人员 FlowEngine.userService().saveBatch(userList); } @@ -325,8 +367,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { if (CollUtil.isEmpty(taskList)) { return; } - List associatedUsers = FlowEngine.userService() - .getByAssociateds(StreamUtils.toList(taskList, FlowTaskVo::getId)); + List associatedUsers = FlowEngine.userService().getByAssociateds(StreamUtils.toList(taskList, FlowTaskVo::getId)); Map> taskUserMap = StreamUtils.groupByKey(associatedUsers, User::getAssociated); // 组装用户数据回任务列表 for (FlowTaskVo task : taskList) { @@ -488,8 +529,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public List selectByIdList(List taskIdList) { - return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class) - .in(FlowTask::getId, taskIdList)); + return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class).in(FlowTask::getId, taskIdList)); } /** @@ -546,17 +586,14 @@ public class FlwTaskServiceImpl implements IFlwTaskService { //办理人变量替换 ExpressionUtil.evalVariable(buildNextTaskList, FlowParams.build().variable(mergeVariable)); for (FlowNode flowNode : nextFlowNodes) { - Optional first = buildNextTaskList.stream() - .filter(t -> t.getNodeCode().equals(flowNode.getNodeCode())) - .findFirst(); - first.ifPresent(t -> { - if (CollUtil.isNotEmpty(t.getPermissionList())) { - List users = flwTaskAssigneeService.fetchUsersByStorageIds(String.join(StringUtils.SEPARATOR, t.getPermissionList())); - if (CollUtil.isNotEmpty(users)) { - flowNode.setPermissionFlag(StreamUtils.join(users, e -> String.valueOf(e.getUserId()))); - } + Task first = StreamUtils.findFirst(buildNextTaskList, t -> t.getNodeCode().equals(flowNode.getNodeCode())); + if (ObjectUtil.isNotNull(first) && CollUtil.isNotEmpty(first.getPermissionList())) { + List users = flwTaskAssigneeService.fetchUsersByStorageIds(String.join(StringUtils.SEPARATOR, first.getPermissionList())); + if (CollUtil.isNotEmpty(users)) { + flowNode.setPermissionFlag(StreamUtils.join(users, e -> String.valueOf(e.getUserId()))); } - }); + } + } } return nextFlowNodes; @@ -570,8 +607,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public FlowHisTask selectHisTaskById(Long taskId) { - return flowHisTaskMapper.selectOne(new LambdaQueryWrapper<>(FlowHisTask.class) - .eq(FlowHisTask::getId, taskId)); + return flowHisTaskMapper.selectOne(new LambdaQueryWrapper<>(FlowHisTask.class).eq(FlowHisTask::getId, taskId)); } /** @@ -581,8 +617,17 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public List selectByInstId(Long instanceId) { - return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class) - .eq(FlowTask::getInstanceId, instanceId)); + return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class).eq(FlowTask::getInstanceId, instanceId)); + } + + /** + * 按照实例id查询任务 + * + * @param instanceIds 流程实例id + */ + @Override + public List selectByInstIds(List instanceIds) { + return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class).in(FlowTask::getInstanceId, instanceIds)); } /** @@ -593,8 +638,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public boolean isTaskEnd(Long instanceId) { - boolean exists = flowTaskMapper.exists(new LambdaQueryWrapper() - .eq(FlowTask::getInstanceId, instanceId)); + boolean exists = flowTaskMapper.exists(new LambdaQueryWrapper().eq(FlowTask::getInstanceId, instanceId)); return !exists; } @@ -607,8 +651,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @Override @Transactional(rollbackFor = Exception.class) public boolean taskOperation(TaskOperationBo bo, String taskOperation) { - FlowParams flowParams = FlowParams.build() - .message(bo.getMessage()); + FlowParams flowParams = FlowParams.build().message(bo.getMessage()); if (LoginHelper.isSuperAdmin() || LoginHelper.isTenantAdmin()) { flowParams.ignore(true); } @@ -691,8 +734,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { new FlowUser() .setType(TaskAssigneeType.APPROVER.getCode()) .setProcessedBy(userId) - .setAssociated(flowTask.getId()) - ); + .setAssociated(flowTask.getId())); if (CollUtil.isNotEmpty(userList)) { FlowEngine.userService().saveBatch(userList); } -- Gitee From a2392acad60361a51c95fc9036d84d331e667fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 29 Jul 2025 14:28:17 +0800 Subject: [PATCH 066/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20snailjob=20?= =?UTF-8?q?=E6=9C=AA=E5=88=A4=E6=96=AD=E9=85=8D=E7=BD=AE=E7=A9=BA=E7=9A=84?= =?UTF-8?q?=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/register/ServerRegister.java | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 ruoyi-visual/ruoyi-snailjob-server/src/main/java/com/aizuda/snailjob/server/common/register/ServerRegister.java diff --git a/ruoyi-visual/ruoyi-snailjob-server/src/main/java/com/aizuda/snailjob/server/common/register/ServerRegister.java b/ruoyi-visual/ruoyi-snailjob-server/src/main/java/com/aizuda/snailjob/server/common/register/ServerRegister.java new file mode 100644 index 000000000..2a8a47aa4 --- /dev/null +++ b/ruoyi-visual/ruoyi-snailjob-server/src/main/java/com/aizuda/snailjob/server/common/register/ServerRegister.java @@ -0,0 +1,146 @@ +package com.aizuda.snailjob.server.common.register; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.aizuda.snailjob.common.core.enums.NodeTypeEnum; +import com.aizuda.snailjob.common.core.util.JsonUtil; +import com.aizuda.snailjob.common.core.util.NetUtil; +import com.aizuda.snailjob.common.core.util.SnailJobVersion; +import com.aizuda.snailjob.common.core.util.StreamUtils; +import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.server.common.cache.CacheConsumerGroup; +import com.aizuda.snailjob.server.common.config.SystemProperties; +import com.aizuda.snailjob.server.common.convert.RegisterNodeInfoConverter; +import com.aizuda.snailjob.server.common.dto.ServerNodeExtAttrs; +import com.aizuda.snailjob.server.common.handler.InstanceManager; +import com.aizuda.snailjob.template.datasource.persistence.po.ServerNode; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.google.common.collect.Lists; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.autoconfigure.web.ServerProperties; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +/** + * 服务端注册 + * + * @author opensnail + * @date 2023-06-07 + * @since 1.6.0 + */ +@Component(ServerRegister.BEAN_NAME) +@RequiredArgsConstructor +public class ServerRegister extends AbstractRegister { + public static final String BEAN_NAME = "serverRegister"; + private final ScheduledExecutorService serverRegisterNode = Executors.newSingleThreadScheduledExecutor(r -> new Thread(r, "server-register-node")); + public static final int DELAY_TIME = 30; + public static final String CURRENT_CID; + public static final String GROUP_NAME = "DEFAULT_SERVER"; + public static final String NAMESPACE_ID = "DEFAULT_SERVER_NAMESPACE_ID"; + private final InstanceManager instanceManager; + private final SystemProperties systemProperties; + private final ServerProperties serverProperties; + + static { + CURRENT_CID = IdUtil.getSnowflakeNextIdStr(); + } + + @Override + public boolean supports(int type) { + return getNodeType().equals(type); + } + + @Override + protected void beforeProcessor(RegisterContext context) { + // 新增扩展参数 + ServerNodeExtAttrs serverNodeExtAttrs = new ServerNodeExtAttrs(); + serverNodeExtAttrs.setWebPort(serverProperties.getPort()); + serverNodeExtAttrs.setSystemVersion(SnailJobVersion.getVersion()); + + context.setGroupName(GROUP_NAME); + context.setHostId(CURRENT_CID); + String serverHost = systemProperties.getServerHost(); + if (StrUtil.isEmptyIfStr(serverHost)) { + serverHost = NetUtil.getLocalIpStr(); + } + context.setHostIp(serverHost); + context.setHostPort(systemProperties.getServerPort()); + context.setContextPath(Optional.ofNullable(serverProperties.getServlet().getContextPath()).orElse(StrUtil.EMPTY)); + context.setNamespaceId(NAMESPACE_ID); + context.setExtAttrs(JsonUtil.toJsonString(serverNodeExtAttrs)); + } + + @Override + protected LocalDateTime getExpireAt() { + return LocalDateTime.now().plusSeconds(DELAY_TIME); + } + + @Override + protected boolean doRegister(RegisterContext context, ServerNode serverNode) { + refreshExpireAt(Lists.newArrayList(serverNode)); + return Boolean.TRUE; + } + + + @Override + protected void afterProcessor(final ServerNode serverNode) { + try { + // 同步当前POD消费的组的节点信息 + // netty的client只会注册到一个服务端,若组分配的和client连接的不是一个POD则会导致当前POD没有其他客户端的注册信息 + ConcurrentMap/*namespaceId*/> allConsumerGroupName = CacheConsumerGroup.getAllConsumerGroupName(); + if (CollUtil.isNotEmpty(allConsumerGroupName)) { + Set namespaceIdSets = StreamUtils.toSetByFlatMap(allConsumerGroupName.values(), Set::stream); + if (CollUtil.isEmpty(namespaceIdSets)) { + return; + } + + List serverNodes = serverNodeMapper.selectList( + new LambdaQueryWrapper() + .eq(ServerNode::getNodeType, NodeTypeEnum.CLIENT.getType()) + .in(ServerNode::getNamespaceId, namespaceIdSets) + .in(ServerNode::getGroupName, allConsumerGroupName.keySet())); + for (final ServerNode node : serverNodes) { + // 刷新全量本地缓存 + instanceManager.registerOrUpdate(RegisterNodeInfoConverter.INSTANCE.toRegisterNodeInfo(node)); + // 刷新过期时间 + CacheConsumerGroup.addOrUpdate(node.getGroupName(), node.getNamespaceId()); + } + } + } catch (Exception e) { + SnailJobLog.LOCAL.error("Client refresh failed", e); + } + } + + @Override + protected Integer getNodeType() { + return NodeTypeEnum.SERVER.getType(); + } + + @Override + public void start() { + SnailJobLog.LOCAL.info("ServerRegister start"); + + serverRegisterNode.scheduleAtFixedRate(() -> { + try { + this.register(new RegisterContext()); + } catch (Exception e) { + SnailJobLog.LOCAL.error("Server-side registration failed", e); + } + }, 0, DELAY_TIME * 2 / 3, TimeUnit.SECONDS); + + } + + @Override + public void close() { + SnailJobLog.LOCAL.info("ServerRegister close"); + } +} -- Gitee From ba780cb44438c912d2e96574fe9c3aa5840099cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 30 Jul 2025 09:16:34 +0800 Subject: [PATCH 067/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9D=83=E9=99=90=E6=B3=A8=E8=A7=A3=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E4=BA=A4=E7=BB=99AOP=E5=A4=84=E7=90=86=EF=BC=8C=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E8=87=AA=E5=AE=9A=E4=B9=89=E5=8A=A8=E6=80=81=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E5=8C=B9=E9=85=8D=E5=99=A8=E5=8C=B9=E9=85=8D=E6=B3=A8?= =?UTF-8?q?=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/aspect/DataPermissionAdvice.java | 54 +++++++++ .../mybatis/aspect/DataPermissionAspect.java | 50 -------- .../aspect/DataPermissionPointcut.java | 39 +++++++ .../aspect/DataPermissionPointcutAdvisor.java | 33 ++++++ .../config/MybatisPlusConfiguration.java | 13 ++- .../handler/PlusDataPermissionHandler.java | 108 +----------------- .../PlusDataPermissionInterceptor.java | 21 +--- 7 files changed, 146 insertions(+), 172 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionAdvice.java delete mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionAspect.java create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionPointcut.java create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionPointcutAdvisor.java diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionAdvice.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionAdvice.java new file mode 100644 index 000000000..54d5ad41a --- /dev/null +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionAdvice.java @@ -0,0 +1,54 @@ +package org.dromara.common.mybatis.aspect; + +import lombok.extern.slf4j.Slf4j; +import org.aopalliance.intercept.MethodInterceptor; +import org.aopalliance.intercept.MethodInvocation; +import org.dromara.common.mybatis.annotation.DataPermission; +import org.dromara.common.mybatis.helper.DataPermissionHelper; + +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; + +/** + * 数据权限注解Advice + * + * @author 秋辞未寒 + */ +@Slf4j +public class DataPermissionAdvice implements MethodInterceptor { + + @Override + public Object invoke(MethodInvocation invocation) throws Throwable { + Object target = invocation.getThis(); + Method method = invocation.getMethod(); + Object[] args = invocation.getArguments(); + // 设置权限注解 + DataPermissionHelper.setPermission(getDataPermissionAnnotation(target, method, args)); + try { + // 执行代理方法 + return invocation.proceed(); + } finally { + // 清除权限注解 + DataPermissionHelper.removePermission(); + } + } + + /** + * 获取数据权限注解 + */ + private DataPermission getDataPermissionAnnotation(Object target, Method method,Object[] args){ + DataPermission dataPermission = method.getAnnotation(DataPermission.class); + // 优先获取方法上的注解 + if (dataPermission != null) { + return dataPermission; + } + // 方法上没有注解,则获取类上的注解 + Class targetClass = target.getClass(); + // 如果是 JDK 动态代理,则获取真实的Class实例 + if (Proxy.isProxyClass(targetClass)) { + targetClass = targetClass.getInterfaces()[0]; + } + dataPermission = targetClass.getAnnotation(DataPermission.class); + return dataPermission; + } +} diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionAspect.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionAspect.java deleted file mode 100644 index 1c83cc392..000000000 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionAspect.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.dromara.common.mybatis.aspect; - -import lombok.extern.slf4j.Slf4j; -import org.aspectj.lang.JoinPoint; -import org.aspectj.lang.annotation.AfterReturning; -import org.aspectj.lang.annotation.AfterThrowing; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; -import org.dromara.common.mybatis.annotation.DataPermission; -import org.dromara.common.mybatis.helper.DataPermissionHelper; - -/** - * 数据权限处理 - * - * @author Lion Li - */ -@Slf4j -@Aspect -public class DataPermissionAspect { - - /** - * 处理请求前执行 - */ - @Before(value = "@annotation(dataPermission)") - public void doBefore(JoinPoint joinPoint, DataPermission dataPermission) { - DataPermissionHelper.setPermission(dataPermission); - } - - /** - * 处理完请求后执行 - * - * @param joinPoint 切点 - */ - @AfterReturning(pointcut = "@annotation(dataPermission)") - public void doAfterReturning(JoinPoint joinPoint, DataPermission dataPermission) { - DataPermissionHelper.removePermission(); - } - - /** - * 拦截异常操作 - * - * @param joinPoint 切点 - * @param e 异常 - */ - @AfterThrowing(value = "@annotation(dataPermission)", throwing = "e") - public void doAfterThrowing(JoinPoint joinPoint, DataPermission dataPermission, Exception e) { - DataPermissionHelper.removePermission(); - } - -} diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionPointcut.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionPointcut.java new file mode 100644 index 000000000..4b7d945a3 --- /dev/null +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionPointcut.java @@ -0,0 +1,39 @@ +package org.dromara.common.mybatis.aspect; + +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.mybatis.annotation.DataPermission; +import org.springframework.aop.support.StaticMethodMatcherPointcut; + +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; + +/** + * 数据权限匹配切点 + * + * @author 秋辞未寒 + */ +@Slf4j +@SuppressWarnings("all") +public class DataPermissionPointcut extends StaticMethodMatcherPointcut { + + @Override + public boolean matches(Method method, Class targetClass) { + // 优先匹配方法 + // 数据权限注解不对继承生效,所以检查当前方法是否有注解即可,不再往上匹配父类或接口 + if (method.isAnnotationPresent(DataPermission.class)) { + return true; + } + + // MyBatis 的 Mapper 就是通过 JDK 动态代理实现的,所以这里需要检查是否匹配 JDK 的动态代理 + Class targetClassRef = targetClass; + if (Proxy.isProxyClass(targetClassRef)) { + // 数据权限注解不对继承生效,但由于 SpringIOC 容器拿到的实际上是 MyBatis 代理过后的 Mapper,而 targetClass.isAnnotationPresent 实际匹配的是 Proxy 类的注解,不会查找代理类。 + // 所以这里不能用 targetClass.isAnnotationPresent,只能用 AnnotatedElementUtils.hasAnnotation 或 targetClass.getInterfaces()[0].isAnnotationPresent 去做匹配,以检查被代理的 MapperClass 是否具有注解 + // 原理:JDK 动态代理本质上就是对接口进行实现然后对具体的接口实现做代理,所以直接通过接口可以拿到实际的 MapperClass + targetClassRef = targetClass.getInterfaces()[0]; + + } + return targetClassRef.isAnnotationPresent(DataPermission.class); + } + +} diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionPointcutAdvisor.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionPointcutAdvisor.java new file mode 100644 index 000000000..351288ce4 --- /dev/null +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/aspect/DataPermissionPointcutAdvisor.java @@ -0,0 +1,33 @@ +package org.dromara.common.mybatis.aspect; + +import org.aopalliance.aop.Advice; +import org.springframework.aop.Pointcut; +import org.springframework.aop.support.AbstractPointcutAdvisor; + +/** + * 数据权限注解切面定义 + * + * @author 秋辞未寒 + */ +@SuppressWarnings("all") +public class DataPermissionPointcutAdvisor extends AbstractPointcutAdvisor { + + private final Advice advice; + private final Pointcut pointcut; + + public DataPermissionPointcutAdvisor() { + this.advice = new DataPermissionAdvice(); + this.pointcut = new DataPermissionPointcut(); + } + + @Override + public Pointcut getPointcut() { + return this.pointcut; + } + + @Override + public Advice getAdvice() { + return this.advice; + } + +} diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/config/MybatisPlusConfiguration.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/config/MybatisPlusConfiguration.java index 18d8b75df..c11ca8ea5 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/config/MybatisPlusConfiguration.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/config/MybatisPlusConfiguration.java @@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerIntercept import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor; import org.dromara.common.core.factory.YmlPropertySourceFactory; import org.dromara.common.core.utils.SpringUtils; -import org.dromara.common.mybatis.aspect.DataPermissionAspect; +import org.dromara.common.mybatis.aspect.DataPermissionPointcutAdvisor; import org.dromara.common.mybatis.handler.InjectionMetaObjectHandler; import org.dromara.common.mybatis.handler.MybatisExceptionHandler; import org.dromara.common.mybatis.handler.PlusPostInitTableInfoHandler; @@ -19,9 +19,11 @@ import org.dromara.common.mybatis.interceptor.PlusDataPermissionInterceptor; import org.dromara.common.mybatis.service.SysDataScopeService; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.PropertySource; +import org.springframework.context.annotation.Role; import org.springframework.transaction.annotation.EnableTransactionManagement; /** @@ -30,6 +32,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; * @author Lion Li */ @AutoConfiguration +@Role(BeanDefinition.ROLE_INFRASTRUCTURE) @EnableTransactionManagement(proxyTargetClass = true) @MapperScan("${mybatis-plus.mapperPackage}") @PropertySource(value = "classpath:common-mybatis.yml", factory = YmlPropertySourceFactory.class) @@ -57,17 +60,17 @@ public class MybatisPlusConfiguration { * 数据权限拦截器 */ public PlusDataPermissionInterceptor dataPermissionInterceptor() { - return new PlusDataPermissionInterceptor(SpringUtils.getProperty("mybatis-plus.mapperPackage")); + return new PlusDataPermissionInterceptor(); } /** * 数据权限切面处理器 */ @Bean - public DataPermissionAspect dataPermissionAspect() { - return new DataPermissionAspect(); + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) + public DataPermissionPointcutAdvisor dataPermissionPointcutAdvisor() { + return new DataPermissionPointcutAdvisor(); } - /** * 分页插件,自动识别数据库类型 */ diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java index 0acd10a5d..29a70d092 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java @@ -1,6 +1,5 @@ package org.dromara.common.mybatis.handler; -import cn.hutool.core.annotation.AnnotationUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import lombok.AllArgsConstructor; @@ -10,7 +9,6 @@ import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.operators.conditional.AndExpression; import net.sf.jsqlparser.expression.operators.relational.ParenthesedExpressionList; import net.sf.jsqlparser.parser.CCJSqlParserUtil; -import org.apache.ibatis.io.Resources; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StreamUtils; @@ -22,22 +20,13 @@ import org.dromara.common.mybatis.helper.DataPermissionHelper; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.model.LoginUser; import org.dromara.system.api.model.RoleDTO; -import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.expression.BeanFactoryResolver; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.core.io.support.ResourcePatternResolver; -import org.springframework.core.type.ClassMetadata; -import org.springframework.core.type.classreading.CachingMetadataReaderFactory; import org.springframework.expression.*; import org.springframework.expression.common.TemplateParserContext; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; -import org.springframework.util.ClassUtils; -import java.lang.reflect.Method; import java.util.*; -import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; /** @@ -49,11 +38,6 @@ import java.util.function.Function; @Slf4j public class PlusDataPermissionHandler { - /** - * 类名称与注解的映射关系缓存(由于aop无法拦截mybatis接口类上的注解 只能通过启动预扫描的方式进行) - */ - private final Map dataPermissionCacheMap = new ConcurrentHashMap<>(); - /** * spel 解析器 */ @@ -64,27 +48,17 @@ public class PlusDataPermissionHandler { */ private final BeanResolver beanResolver = new BeanFactoryResolver(SpringUtils.getBeanFactory()); - /** - * 构造方法,扫描指定包下的 Mapper 类并初始化缓存 - * - * @param mapperPackage Mapper 类所在的包路径 - */ - public PlusDataPermissionHandler(String mapperPackage) { - scanMapperClasses(mapperPackage); - } - /** * 获取数据过滤条件的 SQL 片段 * * @param where 原始的查询条件表达式 - * @param mappedStatementId Mapper 方法的 ID * @param isSelect 是否为查询语句 * @return 数据过滤条件的 SQL 片段 */ - public Expression getSqlSegment(Expression where, String mappedStatementId, boolean isSelect) { + public Expression getSqlSegment(Expression where, boolean isSelect) { try { // 获取数据权限配置 - DataPermission dataPermission = getDataPermission(mappedStatementId); + DataPermission dataPermission = getDataPermission(); // 获取当前登录用户信息 LoginUser currentUser = DataPermissionHelper.getVariable("user"); if (ObjectUtil.isNull(currentUser)) { @@ -206,92 +180,22 @@ public class PlusDataPermissionHandler { return StringUtils.EMPTY; } - /** - * 扫描指定包下的 Mapper 类,并查找其中带有特定注解的方法或类 - * - * @param mapperPackage Mapper 类所在的包路径 - */ - private void scanMapperClasses(String mapperPackage) { - // 创建资源解析器和元数据读取工厂 - PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); - CachingMetadataReaderFactory factory = new CachingMetadataReaderFactory(); - // 将 Mapper 包路径按分隔符拆分为数组 - String[] packagePatternArray = StringUtils.splitPreserveAllTokens(mapperPackage, ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS); - String classpath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX; - try { - for (String packagePattern : packagePatternArray) { - // 将包路径转换为资源路径 - String path = ClassUtils.convertClassNameToResourcePath(packagePattern); - // 获取指定路径下的所有 .class 文件资源 - Resource[] resources = resolver.getResources(classpath + path + "/*.class"); - for (Resource resource : resources) { - // 获取资源的类元数据 - ClassMetadata classMetadata = factory.getMetadataReader(resource).getClassMetadata(); - // 获取资源对应的类对象 - Class clazz = Resources.classForName(classMetadata.getClassName()); - // 查找类中的特定注解 - findAnnotation(clazz); - } - } - } catch (Exception e) { - log.error("初始化数据安全缓存时出错:{}", e.getMessage()); - } - } - - /** - * 在指定的类中查找特定的注解 DataPermission,并将带有这个注解的方法或类存储到 dataPermissionCacheMap 中 - * - * @param clazz 要查找的类 - */ - private void findAnnotation(Class clazz) { - DataPermission dataPermission; - for (Method method : clazz.getMethods()) { - if (method.isDefault() || method.isVarArgs()) { - continue; - } - String mappedStatementId = clazz.getName() + "." + method.getName(); - if (AnnotationUtil.hasAnnotation(method, DataPermission.class)) { - dataPermission = AnnotationUtil.getAnnotation(method, DataPermission.class); - dataPermissionCacheMap.put(mappedStatementId, dataPermission); - } - } - if (AnnotationUtil.hasAnnotation(clazz, DataPermission.class)) { - dataPermission = AnnotationUtil.getAnnotation(clazz, DataPermission.class); - dataPermissionCacheMap.put(clazz.getName(), dataPermission); - } - } - /** * 根据映射语句 ID 或类名获取对应的 DataPermission 注解对象 * - * @param mapperId 映射语句 ID * @return DataPermission 注解对象,如果不存在则返回 null */ - public DataPermission getDataPermission(String mapperId) { - // 检查上下文中是否包含映射语句 ID 对应的 DataPermission 注解对象 - if (DataPermissionHelper.getPermission() != null) { - return DataPermissionHelper.getPermission(); - } - // 检查缓存中是否包含映射语句 ID 对应的 DataPermission 注解对象 - if (dataPermissionCacheMap.containsKey(mapperId)) { - return dataPermissionCacheMap.get(mapperId); - } - // 如果缓存中不包含映射语句 ID 对应的 DataPermission 注解对象,则尝试使用类名作为键查找 - String clazzName = mapperId.substring(0, mapperId.lastIndexOf(".")); - if (dataPermissionCacheMap.containsKey(clazzName)) { - return dataPermissionCacheMap.get(clazzName); - } - return null; + public DataPermission getDataPermission() { + return DataPermissionHelper.getPermission(); } /** * 检查给定的映射语句 ID 是否有效,即是否能够找到对应的 DataPermission 注解对象 * - * @param mapperId 映射语句 ID * @return 如果找到对应的 DataPermission 注解对象,则返回 false;否则返回 true */ - public boolean invalid(String mapperId) { - return getDataPermission(mapperId) == null; + public boolean invalid() { + return getDataPermission() == null; } /** diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlusDataPermissionInterceptor.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlusDataPermissionInterceptor.java index 85a4d0abc..b37d96ed1 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlusDataPermissionInterceptor.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlusDataPermissionInterceptor.java @@ -35,16 +35,7 @@ import java.util.List; @Slf4j public class PlusDataPermissionInterceptor extends BaseMultiTableInnerInterceptor implements InnerInterceptor { - private final PlusDataPermissionHandler dataPermissionHandler; - - /** - * 构造函数,初始化 PlusDataPermissionHandler 实例 - * - * @param mapperPackage 扫描的映射器包 - */ - public PlusDataPermissionInterceptor(String mapperPackage) { - this.dataPermissionHandler = new PlusDataPermissionHandler(mapperPackage); - } + private final PlusDataPermissionHandler dataPermissionHandler = new PlusDataPermissionHandler(); /** * 在执行查询之前,检查并处理数据权限相关逻辑 @@ -64,7 +55,7 @@ public class PlusDataPermissionInterceptor extends BaseMultiTableInnerIntercepto return; } // 检查是否缺少有效的数据权限注解 - if (dataPermissionHandler.invalid(ms.getId())) { + if (dataPermissionHandler.invalid()) { return; } // 解析 sql 分配对应方法 @@ -92,7 +83,7 @@ public class PlusDataPermissionInterceptor extends BaseMultiTableInnerIntercepto return; } // 检查是否缺少有效的数据权限注解 - if (dataPermissionHandler.invalid(ms.getId())) { + if (dataPermissionHandler.invalid()) { return; } PluginUtils.MPBoundSql mpBs = mpSh.mPBoundSql(); @@ -128,7 +119,7 @@ public class PlusDataPermissionInterceptor extends BaseMultiTableInnerIntercepto */ @Override protected void processUpdate(Update update, int index, String sql, Object obj) { - Expression sqlSegment = dataPermissionHandler.getSqlSegment(update.getWhere(), (String) obj, false); + Expression sqlSegment = dataPermissionHandler.getSqlSegment(update.getWhere(), false); if (null != sqlSegment) { update.setWhere(sqlSegment); } @@ -144,7 +135,7 @@ public class PlusDataPermissionInterceptor extends BaseMultiTableInnerIntercepto */ @Override protected void processDelete(Delete delete, int index, String sql, Object obj) { - Expression sqlSegment = dataPermissionHandler.getSqlSegment(delete.getWhere(), (String) obj, false); + Expression sqlSegment = dataPermissionHandler.getSqlSegment(delete.getWhere(), false); if (null != sqlSegment) { delete.setWhere(sqlSegment); } @@ -157,7 +148,7 @@ public class PlusDataPermissionInterceptor extends BaseMultiTableInnerIntercepto * @param mappedStatementId 映射语句的 ID */ protected void setWhere(PlainSelect plainSelect, String mappedStatementId) { - Expression sqlSegment = dataPermissionHandler.getSqlSegment(plainSelect.getWhere(), mappedStatementId, true); + Expression sqlSegment = dataPermissionHandler.getSqlSegment(plainSelect.getWhere(), true); if (null != sqlSegment) { plainSelect.setWhere(sqlSegment); } -- Gitee From c73d3cdf890461c2db8c69a89608e1724b4dc92d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 30 Jul 2025 15:13:50 +0800 Subject: [PATCH 068/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E9=87=8D?= =?UTF-8?q?=E5=86=99selectOne=E6=96=B9=E6=B3=95=20=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=8B=BC=E6=8E=A5limit=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/core/mapper/BaseMapperPlus.java | 71 +++++++++++-------- 1 file changed, 43 insertions(+), 28 deletions(-) diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java index 7964a37a5..0d777f4e0 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java @@ -6,20 +6,21 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.ReflectionKit; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.core.toolkit.reflect.GenericTypeUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.toolkit.Db; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.logging.Log; import org.apache.ibatis.logging.LogFactory; import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StreamUtils; import java.io.Serializable; import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.function.Function; -import java.util.stream.Collectors; /** * 自定义 Mapper 接口, 实现 自定义扩展 @@ -35,25 +36,21 @@ public interface BaseMapperPlus extends BaseMapper { Log log = LogFactory.getLog(BaseMapperPlus.class); /** - * 获取当前类的泛型类型 V 的 Class 对象 - *

- * 该方法使用反射机制从当前类(继承自 BaseMapperPlus 类)的泛型参数中获取第一个泛型类型 V 的 Class 对象 + * 获取当前实例对象关联的泛型类型 V 的 Class 对象 * - * @return 当前类的泛型类型 V 的 Class 对象 + * @return 返回当前实例对象关联的泛型类型 V 的 Class 对象 */ default Class currentVoClass() { - return (Class) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseMapperPlus.class, 1); + return (Class) GenericTypeUtils.resolveTypeArguments(this.getClass(), BaseMapperPlus.class)[1]; } /** - * 获取当前类的泛型类型 T 的 Class 对象 - *

- * 该方法使用反射机制从当前类(继承自 BaseMapperPlus 类)的泛型参数中获取第一个泛型类型 T 的 Class 对象 + * 获取当前实例对象关联的泛型类型 T 的 Class 对象 * - * @return 当前类的泛型类型 T 的 Class 对象 + * @return 返回当前实例对象关联的泛型类型 T 的 Class 对象 */ default Class currentModelClass() { - return (Class) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseMapperPlus.class, 0); + return (Class) GenericTypeUtils.resolveTypeArguments(this.getClass(), BaseMapperPlus.class)[0]; } /** @@ -135,7 +132,7 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的单个VO对象 */ default V selectVoById(Serializable id) { - return selectVoById(id, this.currentVoClass()); + return this.selectVoById(id, this.currentVoClass()); } /** @@ -161,7 +158,7 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的VO对象列表 */ default List selectVoByIds(Collection idList) { - return selectVoByIds(idList, this.currentVoClass()); + return this.selectVoByIds(idList, this.currentVoClass()); } /** @@ -187,7 +184,7 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的VO对象列表 */ default List selectVoByMap(Map map) { - return selectVoByMap(map, this.currentVoClass()); + return this.selectVoByMap(map, this.currentVoClass()); } /** @@ -213,7 +210,7 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的单个VO对象 */ default V selectVoOne(Wrapper wrapper) { - return selectVoOne(wrapper, this.currentVoClass()); + return this.selectVoOne(wrapper, this.currentVoClass()); } /** @@ -224,11 +221,12 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的单个VO对象 */ default V selectVoOne(Wrapper wrapper, boolean throwEx) { - return selectVoOne(wrapper, this.currentVoClass(), throwEx); + return this.selectVoOne(wrapper, this.currentVoClass(), throwEx); } /** - * 根据条件查询单个VO对象,并指定返回的VO对象的类型 + * 根据条件查询单个VO对象,并指定返回的VO对象的类型(自动拼接 limit 1) + * 注意不要再自己添加 limit 1 做限制了 * * @param wrapper 查询条件Wrapper * @param voClass 返回的VO对象的Class对象 @@ -236,15 +234,12 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的单个VO对象,经过类型转换为指定的VO类后返回 */ default C selectVoOne(Wrapper wrapper, Class voClass) { - T obj = this.selectOne(wrapper); - if (ObjectUtil.isNull(obj)) { - return null; - } - return MapstructUtils.convert(obj, voClass); + return this.selectVoOne(wrapper, voClass, true); } /** - * 根据条件查询单个实体对象,并将其转换为指定的VO对象 + * 根据条件查询单个实体对象,并将其转换为指定的VO对象(自动拼接 limit 1) + * 注意不要再自己添加 limit 1 做限制了 * * @param wrapper 查询条件Wrapper * @param voClass 要转换的VO类的Class对象 @@ -260,13 +255,33 @@ public interface BaseMapperPlus extends BaseMapper { return MapstructUtils.convert(obj, voClass); } + /** + * 根据条件查询单条记录(自动拼接 limit 1 限制返回 1 条数据,不依赖 {@code throwEx} 参数) + * 注意不要再自己添加 limit 1 做限制了 + *

+ * 注意: + * 1. 使用 {@code Page<>(1, 1)} 强制分页查询,确保 SQL 自动添加 {@code LIMIT 1},因此 {@code throwEx} 参数不再生效 + * 2. 原方法的 {@code throwEx} 逻辑(多条数据抛异常)已被优化掉,因为分页查询不会返回多条记录 + *

+ * + * @param queryWrapper 查询条件(可为 null) + * @param throwEx 是否抛出异常(已弃用,此参数不再生效) + * @return 单条记录或无数据时返回 null + */ + @Override + default T selectOne(@Param(Constants.WRAPPER) Wrapper queryWrapper, boolean throwEx) { + // 强制分页查询(LIMIT 1),确保最多返回 1 条记录 + List list = this.selectList(new Page<>(1, 1), queryWrapper); + return CollUtil.isEmpty(list) ? null : list.get(0); + } + /** * 查询所有VO对象列表 * * @return 查询到的VO对象列表 */ default List selectVoList() { - return selectVoList(new QueryWrapper<>(), this.currentVoClass()); + return this.selectVoList(new QueryWrapper<>(), this.currentVoClass()); } /** @@ -303,7 +318,7 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的VO对象分页列表 */ default

> P selectVoPage(IPage page, Wrapper wrapper) { - return selectVoPage(page, wrapper, this.currentVoClass()); + return this.selectVoPage(page, wrapper, this.currentVoClass()); } /** @@ -337,7 +352,7 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的符合条件的对象列表,经过转换为指定类型的对象后返回 */ default List selectObjs(Wrapper wrapper, Function mapper) { - return this.selectObjs(wrapper).stream().filter(Objects::nonNull).map(mapper).collect(Collectors.toList()); + return StreamUtils.toList(this.selectObjs(wrapper), mapper); } } -- Gitee From 4557bc30b6bf80a14581a343b870e3623cb28d5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 30 Jul 2025 16:16:10 +0800 Subject: [PATCH 069/155] update springboot 3.4.7 => 3.5.4 update springcloud 2024.0.0 => 2025.0.0 update springboot-admin 3.4.7 => 3.5.1 update springdoc 2.8.8 => 2.8.9 update lombok 1.18.36 => 1.18.38 --- pom.xml | 24 ++-- .../common/core/config/AsyncConfig.java | 52 -------- ...ot.autoconfigure.AutoConfiguration.imports | 1 - .../config/ApiDecryptAutoConfiguration.java | 18 +-- .../common/web/config/FilterConfig.java | 17 +-- ruoyi-gateway/pom.xml | 2 +- ruoyi-modules/ruoyi-gen/pom.xml | 6 - .../monitor/config/WebSecurityConfigurer.java | 7 +- script/config/nacos/application-common.yml | 5 + script/config/nacos/ruoyi-gateway.yml | 120 +++++++++--------- 10 files changed, 102 insertions(+), 150 deletions(-) delete mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/AsyncConfig.java diff --git a/pom.xml b/pom.xml index be42b0481..9a15147fd 100644 --- a/pom.xml +++ b/pom.xml @@ -17,16 +17,16 @@ UTF-8 UTF-8 17 - 3.4.7 - 2024.0.0 - 3.4.7 + 3.5.4 + 2025.0.0 + 3.5.1 3.5.16 3.5.12 3.9.1 4.3.1 2.3 2.2.30 - 2.8.8 + 2.8.9 0.15.0 1.2.0 5.8.38 @@ -34,7 +34,7 @@ 2.2.7 1.6.0 1.44.0 - 1.18.36 + 1.18.38 7.4 3.0.0 9.3.0 @@ -137,13 +137,6 @@ import - - - me.zhyd.oauth - JustAuth - ${justauth.version} - - org.dromara @@ -324,6 +317,13 @@ ${sms4j.version} + + + me.zhyd.oauth + JustAuth + ${justauth.version} + + org.lionsoul diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/AsyncConfig.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/AsyncConfig.java deleted file mode 100644 index cd01e33d5..000000000 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/AsyncConfig.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.dromara.common.core.config; - -import cn.hutool.core.util.ArrayUtil; -import org.dromara.common.core.exception.ServiceException; -import org.dromara.common.core.utils.SpringUtils; -import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; -import org.springframework.boot.autoconfigure.AutoConfiguration; -import org.springframework.core.task.VirtualThreadTaskExecutor; -import org.springframework.scheduling.annotation.AsyncConfigurer; - -import java.util.Arrays; -import java.util.concurrent.Executor; - -/** - * 异步配置 - *

- * 如果未使用虚拟线程则生效 - * - * @author Lion Li - */ -@AutoConfiguration -public class AsyncConfig implements AsyncConfigurer { - - /** - * 自定义 @Async 注解使用系统线程池 - */ - @Override - public Executor getAsyncExecutor() { - if(SpringUtils.isVirtual()) { - return new VirtualThreadTaskExecutor("async-"); - } - return SpringUtils.getBean("scheduledExecutorService"); - } - - /** - * 异步执行异常处理 - */ - @Override - public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { - return (throwable, method, objects) -> { - throwable.printStackTrace(); - StringBuilder sb = new StringBuilder(); - sb.append("Exception message - ").append(throwable.getMessage()) - .append(", Method name - ").append(method.getName()); - if (ArrayUtil.isNotEmpty(objects)) { - sb.append(", Parameter value - ").append(Arrays.toString(objects)); - } - throw new ServiceException(sb.toString()); - }; - } - -} diff --git a/ruoyi-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index b82846e20..35882667e 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -2,4 +2,3 @@ org.dromara.common.core.utils.SpringUtils org.dromara.common.core.config.ApplicationConfig org.dromara.common.core.config.ValidatorConfig org.dromara.common.core.config.ThreadPoolConfig -org.dromara.common.core.config.AsyncConfig diff --git a/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/config/ApiDecryptAutoConfiguration.java b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/config/ApiDecryptAutoConfiguration.java index 098f6bc8d..38b22f388 100644 --- a/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/config/ApiDecryptAutoConfiguration.java +++ b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/config/ApiDecryptAutoConfiguration.java @@ -6,6 +6,7 @@ import org.dromara.common.encrypt.properties.ApiDecryptProperties; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.web.servlet.FilterRegistration; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; @@ -20,13 +21,14 @@ import org.springframework.context.annotation.Bean; public class ApiDecryptAutoConfiguration { @Bean - public FilterRegistrationBean cryptoFilterRegistration(ApiDecryptProperties properties) { - FilterRegistrationBean registration = new FilterRegistrationBean<>(); - registration.setDispatcherTypes(DispatcherType.REQUEST); - registration.setFilter(new CryptoFilter(properties)); - registration.addUrlPatterns("/*"); - registration.setName("cryptoFilter"); - registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE); - return registration; + @FilterRegistration( + name = "cryptoFilter", + urlPatterns = "/*", + order = FilterRegistrationBean.HIGHEST_PRECEDENCE, + dispatcherTypes = DispatcherType.REQUEST + ) + public CryptoFilter cryptoFilter(ApiDecryptProperties properties) { + return new CryptoFilter(properties); } + } diff --git a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/FilterConfig.java b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/FilterConfig.java index 1faf59313..52f946ea1 100644 --- a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/FilterConfig.java +++ b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/FilterConfig.java @@ -6,6 +6,7 @@ import org.dromara.common.web.filter.XssFilter; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.web.servlet.FilterRegistration; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; @@ -20,14 +21,14 @@ public class FilterConfig { @Bean @ConditionalOnProperty(value = "xss.enabled", havingValue = "true") - public FilterRegistrationBean xssFilterRegistration() { - FilterRegistrationBean registration = new FilterRegistrationBean<>(); - registration.setDispatcherTypes(DispatcherType.REQUEST); - registration.setFilter(new XssFilter()); - registration.addUrlPatterns("/*"); - registration.setName("xssFilter"); - registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE + 1); - return registration; + @FilterRegistration( + name = "xssFilter", + urlPatterns = "/*", + order = FilterRegistrationBean.HIGHEST_PRECEDENCE + 1, + dispatcherTypes = DispatcherType.REQUEST + ) + public XssFilter xssFilter() { + return new XssFilter(); } } diff --git a/ruoyi-gateway/pom.xml b/ruoyi-gateway/pom.xml index bd51d9311..de58ac0ba 100644 --- a/ruoyi-gateway/pom.xml +++ b/ruoyi-gateway/pom.xml @@ -19,7 +19,7 @@ org.springframework.cloud - spring-cloud-starter-gateway + spring-cloud-starter-gateway-server-webflux diff --git a/ruoyi-modules/ruoyi-gen/pom.xml b/ruoyi-modules/ruoyi-gen/pom.xml index 316848d53..a38d250a8 100644 --- a/ruoyi-modules/ruoyi-gen/pom.xml +++ b/ruoyi-modules/ruoyi-gen/pom.xml @@ -69,12 +69,6 @@ ruoyi-common-security - - org.anyline - anyline-environment-spring-data-jdbc - ${anyline.version} - - org.anyline anyline-data-jdbc-mysql diff --git a/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java b/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java index 4261afdb9..f55da9ea8 100644 --- a/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java +++ b/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java @@ -12,6 +12,7 @@ import org.springframework.security.config.annotation.web.configurers.HeadersCon import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; import org.springframework.security.web.servlet.util.matcher.MvcRequestMatcher; +import org.springframework.security.web.servlet.util.matcher.PathPatternRequestMatcher; import org.springframework.web.servlet.handler.HandlerMappingIntrospector; /** @@ -30,7 +31,7 @@ public class WebSecurityConfigurer { } @Bean - public SecurityFilterChain filterChain(HttpSecurity httpSecurity, MvcRequestMatcher.Builder mvc) throws Exception { + public SecurityFilterChain filterChain(HttpSecurity httpSecurity, PathPatternRequestMatcher.Builder mvc) throws Exception { SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setTargetUrlParameter("redirectTo"); successHandler.setDefaultTargetUrl(adminContextPath + "/"); @@ -40,8 +41,8 @@ public class WebSecurityConfigurer { header.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable)) .authorizeHttpRequests((authorize) -> authorize.requestMatchers( - mvc.pattern(adminContextPath + "/assets/**"), - mvc.pattern(adminContextPath + "/login") + mvc.matcher(adminContextPath + "/assets/**"), + mvc.matcher(adminContextPath + "/login") ).permitAll() .anyRequest().authenticated()) .formLogin((formLogin) -> diff --git a/script/config/nacos/application-common.yml b/script/config/nacos/application-common.yml index ce19fa86a..b56e67ae2 100644 --- a/script/config/nacos/application-common.yml +++ b/script/config/nacos/application-common.yml @@ -44,6 +44,11 @@ spring: # 开启虚拟线程 仅jdk21可用 virtual: enabled: false + task: + execution: + # 从 springboot 3.5 开始 spring自带线程池 + # 不再需要 AsyncConfig与ThreadPoolConfig 可直接注入线程池使用 + thread-name-prefix: async- # 资源信息 messages: # 国际化资源文件路径 diff --git a/script/config/nacos/ruoyi-gateway.yml b/script/config/nacos/ruoyi-gateway.yml index 038e98c5d..3ca5d36b6 100644 --- a/script/config/nacos/ruoyi-gateway.yml +++ b/script/config/nacos/ruoyi-gateway.yml @@ -22,62 +22,64 @@ spring: gateway: # 打印请求日志(自定义) requestLog: true - discovery: - locator: - lowerCaseServiceId: true - enabled: true - routes: - # 认证中心 - - id: ruoyi-auth - uri: lb://ruoyi-auth - predicates: - - Path=/auth/** - filters: - - StripPrefix=1 - # 代码生成 - - id: ruoyi-gen - uri: lb://ruoyi-gen - predicates: - - Path=/tool/** - filters: - - StripPrefix=1 - # 系统模块 - - id: ruoyi-system - uri: lb://ruoyi-system - predicates: - - Path=/system/**,/monitor/** - filters: - - StripPrefix=1 - # 资源服务 - - id: ruoyi-resource - uri: lb://ruoyi-resource - predicates: - - Path=/resource/** - filters: - - StripPrefix=1 - # workflow服务 - - id: ruoyi-workflow - uri: lb://ruoyi-workflow - predicates: - - Path=/workflow/** - filters: - - StripPrefix=1 - # warm-flow服务 - - id: warm-flow - uri: lb://ruoyi-workflow - predicates: - - Path=/warm-flow-ui/**,/warm-flow/** - # 演示服务 - - id: ruoyi-demo - uri: lb://ruoyi-demo - predicates: - - Path=/demo/** - filters: - - StripPrefix=1 - # MQ演示服务 - - id: ruoyi-test-mq - uri: lb://ruoyi-test-mq - predicates: - - Path=/test-mq/** - filters: - - StripPrefix=1 + server: + webflux: + discovery: + locator: + lowerCaseServiceId: true + enabled: true + routes: + # 认证中心 + - id: ruoyi-auth + uri: lb://ruoyi-auth + predicates: + - Path=/auth/** + filters: + - StripPrefix=1 + # 代码生成 + - id: ruoyi-gen + uri: lb://ruoyi-gen + predicates: + - Path=/tool/** + filters: + - StripPrefix=1 + # 系统模块 + - id: ruoyi-system + uri: lb://ruoyi-system + predicates: + - Path=/system/**,/monitor/** + filters: + - StripPrefix=1 + # 资源服务 + - id: ruoyi-resource + uri: lb://ruoyi-resource + predicates: + - Path=/resource/** + filters: + - StripPrefix=1 + # workflow服务 + - id: ruoyi-workflow + uri: lb://ruoyi-workflow + predicates: + - Path=/workflow/** + filters: + - StripPrefix=1 + # warm-flow服务 + - id: warm-flow + uri: lb://ruoyi-workflow + predicates: + - Path=/warm-flow-ui/**,/warm-flow/** + # 演示服务 + - id: ruoyi-demo + uri: lb://ruoyi-demo + predicates: + - Path=/demo/** + filters: + - StripPrefix=1 + # MQ演示服务 + - id: ruoyi-test-mq + uri: lb://ruoyi-test-mq + predicates: + - Path=/test-mq/** + filters: + - StripPrefix=1 -- Gitee From 64b7bd5b6cbb7cc506f9d92a3a973b4ce2821763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 30 Jul 2025 16:38:43 +0800 Subject: [PATCH 070/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=8E=BB?= =?UTF-8?q?=E9=99=A4nacos=E6=97=A0=E7=94=A8=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-common/ruoyi-common-alibaba-bom/pom.xml | 14 ++++++++++++++ ruoyi-common/ruoyi-common-nacos/pom.xml | 12 ------------ script/config/nacos/application-common.yml | 5 ++--- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml b/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml index c119eb77a..0242bb0a3 100644 --- a/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml +++ b/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml @@ -34,6 +34,20 @@ com.alibaba.nacos nacos-client ${nacos.client.version} + + + com.alibaba.nacos + nacos-log4j2-adapter + + + com.alibaba.nacos + nacos-logback-adapter-12 + + + com.alibaba.nacos + logback-adapter + + org.apache.seata diff --git a/ruoyi-common/ruoyi-common-nacos/pom.xml b/ruoyi-common/ruoyi-common-nacos/pom.xml index dab39bf5c..9ec5d3e4a 100644 --- a/ruoyi-common/ruoyi-common-nacos/pom.xml +++ b/ruoyi-common/ruoyi-common-nacos/pom.xml @@ -26,18 +26,6 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config - - - com.alibaba.nacos - logback-adapter - 1.1.3 - - - com.alibaba.nacos - nacos-common - - - diff --git a/script/config/nacos/application-common.yml b/script/config/nacos/application-common.yml index b56e67ae2..8cba04c52 100644 --- a/script/config/nacos/application-common.yml +++ b/script/config/nacos/application-common.yml @@ -156,10 +156,9 @@ management: logging: level: org.springframework: warn - org.apache.dubbo: warn - com.alibaba.nacos: warn + org.apache.dubbo: error + com.alibaba.nacos: error org.mybatis.spring.mapper: error - org.apache.dubbo.config: error org.apache.fury: warn io.micrometer: error # 临时处理 spring 调整日志级别导致启动警告问题 不影响使用等待 alibaba 适配 -- Gitee From 5c6ff3fe543457e88fcd3c7566290e293b27d078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 30 Jul 2025 16:58:47 +0800 Subject: [PATCH 071/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E4=BB=A3=E7=A0=81=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monitor/config/WebSecurityConfigurer.java | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java b/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java index f55da9ea8..4f9f0d900 100644 --- a/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java +++ b/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java @@ -3,7 +3,6 @@ package org.dromara.modules.monitor.config; import de.codecentric.boot.admin.server.config.AdminServerProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @@ -11,9 +10,7 @@ import org.springframework.security.config.annotation.web.configurers.AbstractHt import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; -import org.springframework.security.web.servlet.util.matcher.MvcRequestMatcher; import org.springframework.security.web.servlet.util.matcher.PathPatternRequestMatcher; -import org.springframework.web.servlet.handler.HandlerMappingIntrospector; /** * admin 监控 安全配置 @@ -31,11 +28,11 @@ public class WebSecurityConfigurer { } @Bean - public SecurityFilterChain filterChain(HttpSecurity httpSecurity, PathPatternRequestMatcher.Builder mvc) throws Exception { + public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setTargetUrlParameter("redirectTo"); successHandler.setDefaultTargetUrl(adminContextPath + "/"); - + PathPatternRequestMatcher.Builder mvc = PathPatternRequestMatcher.withDefaults(); return httpSecurity .headers((header) -> header.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable)) @@ -54,10 +51,4 @@ public class WebSecurityConfigurer { .build(); } - @Scope("prototype") - @Bean - public MvcRequestMatcher.Builder mvc(HandlerMappingIntrospector introspector) { - return new MvcRequestMatcher.Builder(introspector); - } - } -- Gitee From 2bb9ec989983d782169abac7057cbf97fd16c3b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 31 Jul 2025 09:22:11 +0800 Subject: [PATCH 072/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E6=BC=8F=E5=88=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/ruoyi-gen/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ruoyi-modules/ruoyi-gen/pom.xml b/ruoyi-modules/ruoyi-gen/pom.xml index a38d250a8..316848d53 100644 --- a/ruoyi-modules/ruoyi-gen/pom.xml +++ b/ruoyi-modules/ruoyi-gen/pom.xml @@ -69,6 +69,12 @@ ruoyi-common-security + + org.anyline + anyline-environment-spring-data-jdbc + ${anyline.version} + + org.anyline anyline-data-jdbc-mysql -- Gitee From 3f1e97da2b9f6d15761fe1cef171fef4a754e469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 31 Jul 2025 10:20:22 +0800 Subject: [PATCH 073/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20PlusSaTok?= =?UTF-8?q?enDao=20=E5=88=A0=E9=99=A4key=E5=90=8C=E6=AD=A5=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=9C=AC=E5=9C=B0=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/satoken/core/dao/PlusSaTokenDao.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/dao/PlusSaTokenDao.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/dao/PlusSaTokenDao.java index cd4c5e4aa..14abf896a 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/dao/PlusSaTokenDao.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/dao/PlusSaTokenDao.java @@ -74,7 +74,9 @@ public class PlusSaTokenDao implements SaTokenDaoBySessionFollowObject { */ @Override public void delete(String key) { - RedisUtils.deleteObject(key); + if (RedisUtils.deleteObject(key)) { + CAFFEINE.invalidate(key); + } } /** @@ -151,7 +153,9 @@ public class PlusSaTokenDao implements SaTokenDaoBySessionFollowObject { */ @Override public void deleteObject(String key) { - RedisUtils.deleteObject(key); + if (RedisUtils.deleteObject(key)) { + CAFFEINE.invalidate(key); + } } /** -- Gitee From 4a637756bb08c88eec9b09681eb673faef2e4275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 31 Jul 2025 10:20:49 +0800 Subject: [PATCH 074/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20isLogin?= =?UTF-8?q?=20=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/satoken/utils/LoginHelper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java index 7d2136e66..1bb39d4f6 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java @@ -207,7 +207,8 @@ public class LoginHelper { */ public static boolean isLogin() { try { - return getLoginUser() != null; + StpUtil.checkLogin(); + return true; } catch (Exception e) { return false; } -- Gitee From 9dc682ff03c684c30cfcee384c255c11f53dd2b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 1 Aug 2025 12:47:49 +0800 Subject: [PATCH 075/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=ACgateway=E4=B8=8D=E4=BC=A0=E9=80=92X-?= =?UTF-8?q?Forwarded-Prefix=E8=AF=B7=E6=B1=82=E5=A4=B4=E5=AF=BC=E8=87=B4do?= =?UTF-8?q?c=E6=96=87=E6=A1=A3=E6=97=A0=E6=B3=95=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StripPrefixGatewayFilterFactory.java | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 ruoyi-gateway/src/main/java/org/springframework/cloud/gateway/filter/factory/StripPrefixGatewayFilterFactory.java diff --git a/ruoyi-gateway/src/main/java/org/springframework/cloud/gateway/filter/factory/StripPrefixGatewayFilterFactory.java b/ruoyi-gateway/src/main/java/org/springframework/cloud/gateway/filter/factory/StripPrefixGatewayFilterFactory.java new file mode 100644 index 000000000..45bf5e016 --- /dev/null +++ b/ruoyi-gateway/src/main/java/org/springframework/cloud/gateway/filter/factory/StripPrefixGatewayFilterFactory.java @@ -0,0 +1,115 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.gateway.filter.factory; + +import org.springframework.cloud.gateway.filter.GatewayFilter; +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.util.StringUtils; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +import java.util.Arrays; +import java.util.List; + +import static org.springframework.cloud.gateway.support.GatewayToStringStyler.filterToStringCreator; +import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR; +import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.addOriginalRequestUrl; + +/** + * This filter removes the first part of the path, known as the prefix, from the request + * before sending it downstream. + * + * @author Ryan Baxter + */ +public class StripPrefixGatewayFilterFactory + extends AbstractGatewayFilterFactory { + + /** + * Parts key. + */ + public static final String PARTS_KEY = "parts"; + + public StripPrefixGatewayFilterFactory() { + super(Config.class); + } + + @Override + public List shortcutFieldOrder() { + return Arrays.asList(PARTS_KEY); + } + + @Override + public GatewayFilter apply(Config config) { + return new GatewayFilter() { + @Override + public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { + ServerHttpRequest request = exchange.getRequest(); + addOriginalRequestUrl(exchange, request.getURI()); + String path = request.getURI().getRawPath(); + String[] originalParts = StringUtils.tokenizeToStringArray(path, "/"); + + // all new paths start with / + StringBuilder newPath = new StringBuilder("/"); + for (int i = 0; i < originalParts.length; i++) { + if (i >= config.getParts()) { + // only append slash if this is the second part or greater + if (newPath.length() > 1) { + newPath.append('/'); + } + newPath.append(originalParts[i]); + } + } + if (newPath.length() > 1 && path.endsWith("/")) { + newPath.append('/'); + } + // 增加doc前缀传递 + String prefix = "/" + originalParts[config.getParts() - 1]; + + ServerHttpRequest newRequest = request.mutate() + .header("X-Forwarded-Prefix", prefix) + .path(newPath.toString()) + .build(); + + exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, newRequest.getURI()); + + return chain.filter(exchange.mutate().request(newRequest).build()); + } + + @Override + public String toString() { + return filterToStringCreator(StripPrefixGatewayFilterFactory.this).append("parts", config.getParts()) + .toString(); + } + }; + } + + public static class Config { + + private int parts = 1; + + public int getParts() { + return parts; + } + + public void setParts(int parts) { + this.parts = parts; + } + + } + +} -- Gitee From 087f5d50580a9ce73c96ec41bc3dbb9716d8a8d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 1 Aug 2025 16:33:07 +0800 Subject: [PATCH 076/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20setCacheO?= =?UTF-8?q?bject=20=E7=AE=80=E5=8C=96=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/common/redis/utils/RedisUtils.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java index 355cd2931..c433bffad 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java @@ -129,9 +129,9 @@ public class RedisUtils { } catch (Exception e) { long timeToLive = bucket.remainTimeToLive(); if (timeToLive == -1) { - setCacheObject(key, value); + bucket.set(value); } else { - setCacheObject(key, value, Duration.ofMillis(timeToLive)); + bucket.set(value, Duration.ofMillis(timeToLive)); } } } else { @@ -147,11 +147,8 @@ public class RedisUtils { * @param duration 时间 */ public static void setCacheObject(final String key, final T value, final Duration duration) { - RBatch batch = CLIENT.createBatch(); - RBucketAsync bucket = batch.getBucket(key); - bucket.setAsync(value); - bucket.expireAsync(duration); - batch.execute(); + RBucket bucket = CLIENT.getBucket(key); + bucket.set(value, duration); } /** -- Gitee From 78c6580e28e80f21f0bd99352756c677f86a67e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 1 Aug 2025 17:24:35 +0800 Subject: [PATCH 077/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=8D=87?= =?UTF-8?q?=E7=BA=A7jdk=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-auth/Dockerfile | 4 ++-- ruoyi-gateway/Dockerfile | 4 ++-- ruoyi-modules/ruoyi-gen/Dockerfile | 4 ++-- ruoyi-modules/ruoyi-job/Dockerfile | 4 ++-- ruoyi-modules/ruoyi-resource/Dockerfile | 4 ++-- ruoyi-modules/ruoyi-system/Dockerfile | 4 ++-- ruoyi-modules/ruoyi-workflow/Dockerfile | 4 ++-- ruoyi-visual/ruoyi-monitor/Dockerfile | 4 ++-- ruoyi-visual/ruoyi-nacos/Dockerfile | 4 ++-- ruoyi-visual/ruoyi-seata-server/Dockerfile | 4 ++-- ruoyi-visual/ruoyi-snailjob-server/Dockerfile | 4 ++-- 11 files changed, 22 insertions(+), 22 deletions(-) diff --git a/ruoyi-auth/Dockerfile b/ruoyi-auth/Dockerfile index c24c9e8a8..b82eb3ce7 100644 --- a/ruoyi-auth/Dockerfile +++ b/ruoyi-auth/Dockerfile @@ -1,6 +1,6 @@ # 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ -FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds -#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds +FROM bellsoft/liberica-openjdk-rocky:17.0.16-cds +#FROM bellsoft/liberica-openjdk-rocky:21.0.8-cds #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" diff --git a/ruoyi-gateway/Dockerfile b/ruoyi-gateway/Dockerfile index 01eeb0378..576d9955a 100644 --- a/ruoyi-gateway/Dockerfile +++ b/ruoyi-gateway/Dockerfile @@ -1,6 +1,6 @@ # 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ -FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds -#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds +FROM bellsoft/liberica-openjdk-rocky:17.0.16-cds +#FROM bellsoft/liberica-openjdk-rocky:21.0.8-cds #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" diff --git a/ruoyi-modules/ruoyi-gen/Dockerfile b/ruoyi-modules/ruoyi-gen/Dockerfile index 4427cc226..5e8b6f743 100644 --- a/ruoyi-modules/ruoyi-gen/Dockerfile +++ b/ruoyi-modules/ruoyi-gen/Dockerfile @@ -1,6 +1,6 @@ # 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ -FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds -#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds +FROM bellsoft/liberica-openjdk-rocky:17.0.16-cds +#FROM bellsoft/liberica-openjdk-rocky:21.0.8-cds #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" diff --git a/ruoyi-modules/ruoyi-job/Dockerfile b/ruoyi-modules/ruoyi-job/Dockerfile index ebb1f9d36..6cc6b0532 100644 --- a/ruoyi-modules/ruoyi-job/Dockerfile +++ b/ruoyi-modules/ruoyi-job/Dockerfile @@ -1,6 +1,6 @@ # 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ -FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds -#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds +FROM bellsoft/liberica-openjdk-rocky:17.0.16-cds +#FROM bellsoft/liberica-openjdk-rocky:21.0.8-cds #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" diff --git a/ruoyi-modules/ruoyi-resource/Dockerfile b/ruoyi-modules/ruoyi-resource/Dockerfile index 4708c1a32..acd8ca54b 100644 --- a/ruoyi-modules/ruoyi-resource/Dockerfile +++ b/ruoyi-modules/ruoyi-resource/Dockerfile @@ -1,6 +1,6 @@ # 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ -FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds -#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds +FROM bellsoft/liberica-openjdk-rocky:17.0.16-cds +#FROM bellsoft/liberica-openjdk-rocky:21.0.8-cds #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" diff --git a/ruoyi-modules/ruoyi-system/Dockerfile b/ruoyi-modules/ruoyi-system/Dockerfile index ffc92a6db..4b1eac361 100644 --- a/ruoyi-modules/ruoyi-system/Dockerfile +++ b/ruoyi-modules/ruoyi-system/Dockerfile @@ -1,6 +1,6 @@ # 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ -FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds -#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds +FROM bellsoft/liberica-openjdk-rocky:17.0.16-cds +#FROM bellsoft/liberica-openjdk-rocky:21.0.8-cds #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" diff --git a/ruoyi-modules/ruoyi-workflow/Dockerfile b/ruoyi-modules/ruoyi-workflow/Dockerfile index f3738cab3..6cc7451ac 100644 --- a/ruoyi-modules/ruoyi-workflow/Dockerfile +++ b/ruoyi-modules/ruoyi-workflow/Dockerfile @@ -1,6 +1,6 @@ # 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ -FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds -#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds +FROM bellsoft/liberica-openjdk-rocky:17.0.16-cds +#FROM bellsoft/liberica-openjdk-rocky:21.0.8-cds #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" diff --git a/ruoyi-visual/ruoyi-monitor/Dockerfile b/ruoyi-visual/ruoyi-monitor/Dockerfile index 0b9c718d8..f77e77e87 100644 --- a/ruoyi-visual/ruoyi-monitor/Dockerfile +++ b/ruoyi-visual/ruoyi-monitor/Dockerfile @@ -1,6 +1,6 @@ # 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ -FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds -#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds +FROM bellsoft/liberica-openjdk-rocky:17.0.16-cds +#FROM bellsoft/liberica-openjdk-rocky:21.0.8-cds #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" diff --git a/ruoyi-visual/ruoyi-nacos/Dockerfile b/ruoyi-visual/ruoyi-nacos/Dockerfile index 9b14944ec..fd9f8a745 100644 --- a/ruoyi-visual/ruoyi-nacos/Dockerfile +++ b/ruoyi-visual/ruoyi-nacos/Dockerfile @@ -1,6 +1,6 @@ # 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ -FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds -#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds +FROM bellsoft/liberica-openjdk-rocky:17.0.16-cds +#FROM bellsoft/liberica-openjdk-rocky:21.0.8-cds #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" diff --git a/ruoyi-visual/ruoyi-seata-server/Dockerfile b/ruoyi-visual/ruoyi-seata-server/Dockerfile index 3e004a534..d8082203b 100644 --- a/ruoyi-visual/ruoyi-seata-server/Dockerfile +++ b/ruoyi-visual/ruoyi-seata-server/Dockerfile @@ -1,6 +1,6 @@ # 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ -FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds -#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds +FROM bellsoft/liberica-openjdk-rocky:17.0.16-cds +#FROM bellsoft/liberica-openjdk-rocky:21.0.8-cds #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" diff --git a/ruoyi-visual/ruoyi-snailjob-server/Dockerfile b/ruoyi-visual/ruoyi-snailjob-server/Dockerfile index ef85eb2c9..e10ca1834 100644 --- a/ruoyi-visual/ruoyi-snailjob-server/Dockerfile +++ b/ruoyi-visual/ruoyi-snailjob-server/Dockerfile @@ -1,6 +1,6 @@ # 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ -FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds -#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds +FROM bellsoft/liberica-openjdk-rocky:17.0.16-cds +#FROM bellsoft/liberica-openjdk-rocky:21.0.8-cds #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" -- Gitee From a8de8886ecf865c03e596a81dbc9fbef2a54824a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 4 Aug 2025 10:33:23 +0800 Subject: [PATCH 078/155] =?UTF-8?q?update=20=E5=85=A8=E5=B1=80=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E4=B8=BA=20Convert.toStr=20=E4=BC=98=E5=8C=96=20null?= =?UTF-8?q?=20=E5=AD=97=E7=AC=A6=E4=B8=B2=E5=A4=84=E7=90=86=20String.value?= =?UTF-8?q?Of=20=E8=BF=99=E4=B8=AA=E6=96=B9=E6=B3=95=E6=9C=89=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BC=9A=E6=8A=8Anull=E5=8F=98=E6=88=90"null"?= =?UTF-8?q?=E6=85=8E=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/domain/vo/RemoteTaskAssigneeVo.java | 3 ++- .../dromara/common/core/utils/StringUtils.java | 4 ++-- .../common/excel/core/DropDownOptions.java | 3 ++- .../dromara/common/redis/utils/SequenceUtils.java | 5 +++-- .../common/sensitive/core/SensitiveStrategy.java | 3 ++- .../job/snailjob/TestStaticShardingJob.java | 3 ++- .../dubbo/RemoteTaskAssigneeServiceImpl.java | 2 +- .../handler/WorkflowPermissionHandler.java | 3 ++- .../service/impl/FlwCategoryServiceImpl.java | 15 +++++++++------ .../service/impl/FlwDefinitionServiceImpl.java | 2 +- .../service/impl/FlwInstanceServiceImpl.java | 2 +- .../service/impl/FlwTaskAssigneeServiceImpl.java | 4 ++-- .../workflow/service/impl/FlwTaskServiceImpl.java | 2 +- 13 files changed, 30 insertions(+), 21 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java index 9f95b85dc..34976853c 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java @@ -1,5 +1,6 @@ package org.dromara.system.api.domain.vo; +import cn.hutool.core.convert.Convert; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -62,7 +63,7 @@ public class RemoteTaskAssigneeVo implements Serializable { storageId.apply(item), handlerCode.apply(item), handlerName.apply(item), - groupName != null ? String.valueOf(groupName.apply(item)) : null, + groupName != null ? Convert.toStr(groupName.apply(item)) : null, createTimeMapper.apply(item) )).collect(Collectors.toList()); } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java index 716573431..b3199b8f9 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java @@ -260,13 +260,13 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { if (s != null) { final int len = s.length(); if (s.length() <= size) { - sb.append(String.valueOf(c).repeat(size - len)); + sb.append(Convert.toStr(c).repeat(size - len)); sb.append(s); } else { return s.substring(len - size, len); } } else { - sb.append(String.valueOf(c).repeat(Math.max(0, size))); + sb.append(Convert.toStr(c).repeat(Math.max(0, size))); } return sb.toString(); } diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/DropDownOptions.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/DropDownOptions.java index 8b53a0ce0..7cdb5c5c0 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/DropDownOptions.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/DropDownOptions.java @@ -1,5 +1,6 @@ package org.dromara.common.excel.core; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.StrUtil; import lombok.AllArgsConstructor; import lombok.Data; @@ -65,7 +66,7 @@ public class DropDownOptions { StringBuilder stringBuffer = new StringBuilder(); String regex = "^[\\S\\d\\u4e00-\\u9fa5]+$"; for (int i = 0; i < vars.length; i++) { - String var = StrUtil.trimToEmpty(String.valueOf(vars[i])); + String var = StrUtil.trimToEmpty(Convert.toStr(vars[i])); if (!var.matches(regex)) { throw new ServiceException("选项数据不符合规则,仅允许使用中英文字符以及数字"); } diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/SequenceUtils.java b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/SequenceUtils.java index 5258c8558..a3d0badc0 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/SequenceUtils.java +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/SequenceUtils.java @@ -1,5 +1,6 @@ package org.dromara.common.redis.utils; +import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DatePattern; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -119,7 +120,7 @@ public class SequenceUtils { * @return 唯一id */ public static String getNextIdString(String key, Duration expireTime, long initValue, long stepValue) { - return String.valueOf(getNextId(key, expireTime, initValue, stepValue)); + return Convert.toStr(getNextId(key, expireTime, initValue, stepValue)); } /** @@ -130,7 +131,7 @@ public class SequenceUtils { * @return 唯一id */ public static String getNextIdString(String key, Duration expireTime) { - return String.valueOf(getNextId(key, expireTime)); + return Convert.toStr(getNextId(key, expireTime)); } /** diff --git a/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/core/SensitiveStrategy.java b/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/core/SensitiveStrategy.java index 995dcbd96..c822898fb 100644 --- a/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/core/SensitiveStrategy.java +++ b/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/core/SensitiveStrategy.java @@ -1,5 +1,6 @@ package org.dromara.common.sensitive.core; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.DesensitizedUtil; import lombok.AllArgsConstructor; @@ -52,7 +53,7 @@ public enum SensitiveStrategy { /** * 用户ID */ - USER_ID(s -> String.valueOf(DesensitizedUtil.userId())), + USER_ID(s -> Convert.toStr(DesensitizedUtil.userId())), /** * 密码 diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java index 07a1bc566..11a69733e 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java @@ -1,5 +1,6 @@ package org.dromara.job.snailjob; +import cn.hutool.core.convert.Convert; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; import com.aizuda.snailjob.client.model.ExecuteResult; @@ -17,7 +18,7 @@ import org.springframework.stereotype.Component; public class TestStaticShardingJob { public ExecuteResult jobExecute(JobArgs jobArgs) { - String jobParams = String.valueOf(jobArgs.getJobParams()); + String jobParams = Convert.toStr(jobArgs.getJobParams()); SnailJobLog.LOCAL.info("开始执行分片任务,参数:{}", jobParams); // 获得jobArgs 中传入的开始id和结束id String[] split = jobParams.split(","); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java index c582c2c73..2824dcd16 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java @@ -61,7 +61,7 @@ public class RemoteTaskAssigneeServiceImpl implements RemoteTaskAssigneeService TableDataInfo page = roleService.selectPageRoleList(bo, pageQuery); // 使用封装的字段映射方法进行转换 List handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(), - r -> String.valueOf(r.getRoleId()), SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime); + item -> Convert.toStr(item.getRoleId()), SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime); return new RemoteTaskAssigneeVo(page.getTotal(), handlers); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java index c62069b4e..b63012016 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java @@ -1,6 +1,7 @@ package org.dromara.workflow.handler; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.utils.StreamUtils; @@ -59,7 +60,7 @@ public class WorkflowPermissionHandler implements PermissionHandler { } String storageIds = CollUtil.join(permissions, StringUtils.SEPARATOR); List users = flwTaskAssigneeService.fetchUsersByStorageIds(storageIds); - return StreamUtils.toList(users, userDTO -> String.valueOf(userDTO.getUserId())); + return StreamUtils.toList(users, userDTO -> Convert.toStr(userDTO.getUserId())); } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java index ab2ac1e0d..237824a71 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.workflow.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -8,9 +9,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.exception.ServiceException; -import org.dromara.common.core.utils.*; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.ObjectUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.core.utils.TreeBuildUtils; import org.dromara.common.mybatis.helper.DataBaseHelper; -import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.warm.flow.core.service.DefService; import org.dromara.warm.flow.orm.entity.FlowDefinition; import org.dromara.workflow.common.ConditionalOnEnable; @@ -102,11 +105,11 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService { } return TreeBuildUtils.buildMultiRoot( categoryList, - node -> String.valueOf(node.getCategoryId()), - node -> String.valueOf(node.getParentId()), + node -> Convert.toStr(node.getCategoryId()), + node -> Convert.toStr(node.getParentId()), (node, treeNode) -> treeNode - .setId(String.valueOf(node.getCategoryId())) - .setParentId(String.valueOf(node.getParentId())) + .setId(Convert.toStr(node.getCategoryId())) + .setParentId(Convert.toStr(node.getParentId())) .setName(node.getCategoryName()) .setWeight(node.getOrderNum()) ); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java index 9c7f169cf..c13c5a6a8 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java @@ -233,7 +233,7 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService { flowDefinition.setId(null); flowDefinition.setTenantId(tenantId); flowDefinition.setIsPublish(0); - flowDefinition.setCategory(String.valueOf(flowCategory.getCategoryId())); + flowDefinition.setCategory(Convert.toStr(flowCategory.getCategoryId())); int insert = flowDefinitionMapper.insert(flowDefinition); if (insert <= 0) { log.info("同步流程定义【{}】失败!", definition.getFlowCode()); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index 230396eb0..783fa281a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -110,7 +110,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { */ @Override public FlowInstanceVo queryByBusinessId(Long businessId) { - FlowInstance instance = this.selectInstByBusinessId(String.valueOf(businessId)); + FlowInstance instance = this.selectInstByBusinessId(Convert.toStr(businessId)); FlowInstanceVo instanceVo = BeanUtil.toBean(instance, FlowInstanceVo.class); Definition definition = defService.getById(instanceVo.getDefinitionId()); instanceVo.setFlowName(definition.getFlowName()); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java index 59db41a75..cebdec5ce 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java @@ -151,9 +151,9 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand */ private TreeFunDto buildDeptTree(List depts) { return new TreeFunDto<>(depts) - .setId(dept -> String.valueOf(dept.getDeptId())) + .setId(dept -> Convert.toStr(dept.getDeptId())) .setName(RemoteDeptVo::getDeptName) - .setParentId(dept -> String.valueOf(dept.getParentId())); + .setParentId(dept -> Convert.toStr(dept.getParentId())); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index c7b5130dd..a7010eab4 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -304,7 +304,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { List userList = StreamUtils.toList(flowCopyList, x -> new FlowUser() .setType(TaskAssigneeType.COPY.getCode()) - .setProcessedBy(String.valueOf(x.getUserId())) + .setProcessedBy(Convert.toStr(x.getUserId())) .setAssociated(taskId)); // 批量保存抄送人员 FlowEngine.userService().saveBatch(userList); -- Gitee From 0eeb2a144b75e304397da8e98854e5f158b1f7ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 4 Aug 2025 10:40:10 +0800 Subject: [PATCH 079/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=8A=9E?= =?UTF-8?q?=E7=90=86=E4=BA=BA=E6=9D=83=E9=99=90=E8=AE=BE=E7=BD=AE=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/domain/vo/RemoteTaskAssigneeVo.java | 5 +- .../common/excel/core/ExcelDownHandler.java | 3 +- .../dubbo/RemoteTaskAssigneeServiceImpl.java | 2 +- .../common/enums/TaskAssigneeEnum.java | 26 +++++ .../service/impl/FlwSpelServiceImpl.java | 2 +- .../impl/FlwTaskAssigneeServiceImpl.java | 99 ++++++++++++------- 6 files changed, 98 insertions(+), 39 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java index 34976853c..aba8bde92 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java @@ -1,6 +1,5 @@ package org.dromara.system.api.domain.vo; -import cn.hutool.core.convert.Convert; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -56,14 +55,14 @@ public class RemoteTaskAssigneeVo implements Serializable { Function storageId, Function handlerCode, Function handlerName, - Function groupName, + Function groupName, Function createTimeMapper) { return sourceList.stream() .map(item -> new TaskHandler( storageId.apply(item), handlerCode.apply(item), handlerName.apply(item), - groupName != null ? Convert.toStr(groupName.apply(item)) : null, + groupName.apply(item), createTimeMapper.apply(item) )).collect(Collectors.toList()); } diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java index f3b641545..81a3da449 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java @@ -1,6 +1,7 @@ package org.dromara.common.excel.core; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.EnumUtil; import cn.hutool.core.util.ObjectUtil; @@ -115,7 +116,7 @@ public class ExcelDownHandler implements SheetWriteHandler { // 否则如果指定了@ExcelEnumFormat,则使用枚举的逻辑 ExcelEnumFormat format = field.getDeclaredAnnotation(ExcelEnumFormat.class); List values = EnumUtil.getFieldValues(format.enumClass(), format.textField()); - options = StreamUtils.toList(values, String::valueOf); + options = StreamUtils.toList(values, Convert::toStr); } if (ObjectUtil.isNotEmpty(options)) { // 仅当下拉可选项不为空时执行 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java index 2824dcd16..eec27e842 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java @@ -61,7 +61,7 @@ public class RemoteTaskAssigneeServiceImpl implements RemoteTaskAssigneeService TableDataInfo page = roleService.selectPageRoleList(bo, pageQuery); // 使用封装的字段映射方法进行转换 List handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(), - item -> Convert.toStr(item.getRoleId()), SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime); + item -> Convert.toStr(item.getRoleId()), SysRoleVo::getRoleKey, SysRoleVo::getRoleName, item -> "", SysRoleVo::getCreateTime); return new RemoteTaskAssigneeVo(page.getTotal(), handlers); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java index c604f97e7..fff268837 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java @@ -3,6 +3,7 @@ package org.dromara.workflow.common.enums; import lombok.AllArgsConstructor; import lombok.Getter; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.StringUtils; import java.util.Arrays; import java.util.List; @@ -110,5 +111,30 @@ public enum TaskAssigneeEnum { .map(TaskAssigneeEnum::getCode) .collect(Collectors.toList()); } + + /** + * 判断当前办理人类型是否需要调用部门服务(deptService) + * + * @return 如果类型是 USER、DEPT 或 POST,则返回 true;否则返回 false + */ + public boolean needsDeptService() { + return this == USER || this == DEPT || this == POST; + } + + /** + * 判断给定字符串是否符合 SPEL 表达式格式(以 $ 或 # 开头) + * + * @param value 待判断字符串 + * @return 是否为 SPEL 表达式 + */ + public static boolean isSpelExpression(String value) { + if (value == null) { + return false; + } + // $前缀表示默认办理人变量策略 + // #前缀表示spel办理人变量策略 + return StringUtils.startsWith(value, "$") || StringUtils.startsWith(value, "#"); + } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java index 2a45f8eb5..d103cc513 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java @@ -162,7 +162,7 @@ public class FlwSpelServiceImpl implements IFlwSpelService { TableDataInfo page = this.queryPageList(bo, pageQuery); // 使用封装的字段映射方法进行转换 List handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(), - FlowSpelVo::getViewSpel, c -> "", FlowSpelVo::getRemark, null, FlowSpelVo::getCreateTime); + FlowSpelVo::getViewSpel, item -> "", FlowSpelVo::getRemark, item -> "", FlowSpelVo::getCreateTime); return new RemoteTaskAssigneeVo(page.getTotal(), handlers); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java index cebdec5ce..e74ca985c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java @@ -4,12 +4,14 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Pair; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.enums.FormatsType; import org.dromara.common.core.utils.DateUtils; +import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.system.api.*; import org.dromara.system.api.domain.bo.RemoteTaskAssigneeBo; @@ -29,6 +31,7 @@ import org.dromara.workflow.service.IFlwTaskAssigneeService; import org.springframework.stereotype.Service; import java.util.*; +import java.util.stream.Collectors; /** * 流程设计器-获取办理人权限设置列表 @@ -53,6 +56,7 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand private RemoteRoleService remoteRoleService; @DubboReference private RemotePostService remotePostService; + private final IFlwSpelService spelService; /** @@ -97,10 +101,10 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand return Collections.emptyList(); } // 解析并归类 ID,同时记录原始顺序和对应解析结果 - Map> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class); - Map> parsedMap = new LinkedHashMap<>(); + Map> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class); + Map> parsedMap = new LinkedHashMap<>(); for (String storageId : storageIds) { - Pair parsed = this.parseStorageId(storageId); + Pair parsed = this.parseStorageId(storageId); parsedMap.put(storageId, parsed); if (parsed != null) { typeIdMap.computeIfAbsent(parsed.getKey(), k -> new ArrayList<>()).add(parsed.getValue()); @@ -108,14 +112,13 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand } // 查询所有类型对应的 ID 名称映射 - Map> nameMap = new EnumMap<>(TaskAssigneeEnum.class); + Map> nameMap = new EnumMap<>(TaskAssigneeEnum.class); typeIdMap.forEach((type, ids) -> nameMap.put(type, this.getNamesByType(type, ids))); - // 组装返回结果,保持原始顺序 return parsedMap.entrySet().stream() .map(entry -> { String storageId = entry.getKey(); - Pair parsed = entry.getValue(); + Pair parsed = entry.getValue(); String handlerName = (parsed == null) ? null : nameMap.getOrDefault(parsed.getKey(), Collections.emptyMap()) .get(parsed.getValue()); @@ -140,12 +143,29 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand * 根据任务办理类型获取部门数据 */ private List fetchDeptData(TaskAssigneeEnum type) { - if (type == TaskAssigneeEnum.USER || type == TaskAssigneeEnum.DEPT || type == TaskAssigneeEnum.POST) { + if (type.needsDeptService()) { return remoteDeptService.selectDeptsByList(); } return new ArrayList<>(); } + /** + * 获取权限分组名称 + * + * @param type 任务分配人枚举 + * @param groupName 权限分组 + * @return 权限分组名称 + */ + private String getGroupName(TaskAssigneeEnum type, String groupName) { + if (StringUtils.isEmpty(groupName)) { + return DEFAULT_GROUP_NAME; + } + if (type.needsDeptService()) { + return remoteDeptService.selectDeptNameByIds(groupName); + } + return DEFAULT_GROUP_NAME; + } + /** * 构建部门树状结构 */ @@ -164,10 +184,7 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand .setStorageId(assignee -> type.getCode() + assignee.getStorageId()) .setHandlerCode(assignee -> StringUtils.blankToDefault(assignee.getHandlerCode(), "无")) .setHandlerName(assignee -> StringUtils.blankToDefault(assignee.getHandlerName(), "无")) - .setGroupName(assignee -> StringUtils.defaultIfBlank( - Optional.ofNullable(assignee.getGroupName()) - .map(remoteDeptService::selectDeptNameByIds) - .orElse(DEFAULT_GROUP_NAME), DEFAULT_GROUP_NAME)) + .setGroupName(assignee -> this.getGroupName(type, assignee.getGroupName())) .setCreateTime(assignee -> DateUtils.parseDateToStr(FormatsType.YYYY_MM_DD_HH_MM_SS, assignee.getCreateTime())); } @@ -184,9 +201,9 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand if (StringUtils.isEmpty(storageIds)) { return List.of(); } - Map> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class); + Map> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class); for (String storageId : storageIds.split(StringUtils.SEPARATOR)) { - Pair parsed = this.parseStorageId(storageId); + Pair parsed = this.parseStorageId(storageId); if (parsed != null) { typeIdMap.computeIfAbsent(parsed.getKey(), k -> new ArrayList<>()).add(parsed.getValue()); } @@ -207,13 +224,17 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand * 如果类型为部门(DEPT),则通过部门ID列表查询; * 如果类型为岗位(POST)或无法识别的类型,则返回空列表 */ - private List getUsersByType(TaskAssigneeEnum type, List ids) { + private List getUsersByType(TaskAssigneeEnum type, List ids) { + if (type == TaskAssigneeEnum.SPEL) { + return new ArrayList<>(); + } + List longIds = StreamUtils.toList(ids, Convert::toLong); return switch (type) { - case USER -> remoteUserService.selectListByIds(ids); - case ROLE -> remoteUserService.selectUsersByRoleIds(ids); - case DEPT -> remoteUserService.selectUsersByDeptIds(ids); - case POST -> remoteUserService.selectUsersByPostIds(ids); - case SPEL -> new ArrayList<>(); + case USER -> remoteUserService.selectListByIds(longIds); + case ROLE -> remoteUserService.selectUsersByRoleIds(longIds); + case DEPT -> remoteUserService.selectUsersByDeptIds(longIds); + case POST -> remoteUserService.selectUsersByPostIds(longIds); + default -> new ArrayList<>(); }; } @@ -224,14 +245,28 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand * @param ids ID 列表(如用户ID、角色ID等) * @return 返回 Map,其中 key 为 ID,value 为对应的名称 */ - private Map getNamesByType(TaskAssigneeEnum type, List ids) { - return switch (type) { - case USER -> remoteUserService.selectUserNamesByIds(ids); - case ROLE -> remoteRoleService.selectRoleNamesByIds(ids); - case DEPT -> remoteDeptService.selectDeptNamesByIds(ids); - case POST -> remotePostService.selectPostNamesByIds(ids); - case SPEL -> new HashMap<>(); + private Map getNamesByType(TaskAssigneeEnum type, List ids) { + if (type == TaskAssigneeEnum.SPEL) { + return spelService.selectRemarksBySpels(ids); + } + + List longIds = StreamUtils.toList(ids, Convert::toLong); + Map rawMap = switch (type) { + case USER -> remoteUserService.selectUserNamesByIds(longIds); + case ROLE -> remoteRoleService.selectRoleNamesByIds(longIds); + case DEPT -> remoteDeptService.selectDeptNamesByIds(longIds); + case POST -> remotePostService.selectPostNamesByIds(longIds); + default -> Collections.emptyMap(); }; + if (MapUtil.isEmpty(rawMap)) { + return Collections.emptyMap(); + } + return rawMap.entrySet() + .stream() + .collect(Collectors.toMap( + e -> Convert.toStr(e.getKey()), + Map.Entry::getValue + )); } /** @@ -240,22 +275,20 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand * @param storageId 例如 "user:123" 或 "456" * @return Pair(TaskAssigneeEnum, Long),如果格式非法返回 null */ - private Pair parseStorageId(String storageId) { + private Pair parseStorageId(String storageId) { if (StringUtils.isBlank(storageId)) { return null; } - // 跳过以 $ 或 # 开头的字符串 - if (StringUtils.startsWith(storageId, "$") || StringUtils.startsWith(storageId, "#")) { - log.debug("跳过 storageId 解析,检测到内置变量表达式:{}", storageId); - return null; + if (TaskAssigneeEnum.isSpelExpression(storageId)) { + return Pair.of(TaskAssigneeEnum.SPEL, storageId); } try { String[] parts = storageId.split(StrUtil.COLON, 2); if (parts.length < 2) { - return Pair.of(TaskAssigneeEnum.USER, Convert.toLong(parts[0])); + return Pair.of(TaskAssigneeEnum.USER, parts[0]); } else { TaskAssigneeEnum type = TaskAssigneeEnum.fromCode(parts[0] + StrUtil.COLON); - return Pair.of(type, Convert.toLong(parts[1])); + return Pair.of(type, parts[1]); } } catch (Exception e) { log.warn("解析 storageId 失败,格式非法:{},错误信息:{}", storageId, e.getMessage()); -- Gitee From 716ea1deff6641d17b2158db386d8e0918fa2d1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 4 Aug 2025 11:17:42 +0800 Subject: [PATCH 080/155] update work-flow 1.6.8 => 1.8.0-m1 --- pom.xml | 2 +- .../service/impl/FlwCategoryServiceImpl.java | 23 +- .../service/impl/FlwChartExtServiceImpl.java | 10 +- script/config/nacos/ruoyi-workflow.yml | 2 + script/sql/oracle/oracle_ry_workflow.sql | 4 +- script/sql/postgres/postgres_ry_workflow.sql | 230 +++++++++--------- script/sql/ry-workflow.sql | 9 +- .../sql/update/oracle/update_2.4.1-2.5.0.sql | 8 + .../update/postgres/update_2.4.1-2.5.0.sql | 11 + script/sql/update/update_2.4.1-2.5.0.sql | 8 + 10 files changed, 173 insertions(+), 134 deletions(-) diff --git a/pom.xml b/pom.xml index 9a15147fd..00462ccf2 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ 8.7.2-20250603 - 1.7.4 + 1.8.0-m1 2.3.0 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java index 237824a71..ee8f5b439 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java @@ -9,13 +9,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.exception.ServiceException; -import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.ObjectUtils; -import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.core.utils.TreeBuildUtils; +import org.dromara.common.core.utils.*; import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.warm.flow.core.service.DefService; import org.dromara.warm.flow.orm.entity.FlowDefinition; +import org.dromara.warm.flow.ui.service.CategoryService; import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.domain.FlowCategory; @@ -39,7 +37,7 @@ import java.util.List; @ConditionalOnEnable @RequiredArgsConstructor @Service -public class FlwCategoryServiceImpl implements IFlwCategoryService { +public class FlwCategoryServiceImpl implements IFlwCategoryService, CategoryService { private final DefService defService; private final FlwCategoryMapper baseMapper; @@ -115,6 +113,21 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService { ); } + /** + * 工作流查询分类 + * + * @return 分类树结构列表 + */ + @Override + public List queryCategory() { + List list = this.queryList(new FlowCategoryBo()); + return StreamUtils.toList(list, category -> new org.dromara.warm.flow.core.dto.Tree() + .setId(Convert.toStr(category.getCategoryId())) + .setName(category.getCategoryName()) + .setParentId(Convert.toStr(category.getParentId())) + ); + } + /** * 校验流程分类名称是否唯一 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java index ce215983e..824615781 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java @@ -10,7 +10,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.service.DictService; import org.dromara.common.core.utils.DateUtils; -import org.dromara.common.core.utils.ServletUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.system.api.RemoteDeptService; @@ -61,12 +60,8 @@ public class FlwChartExtServiceImpl implements ChartExtService { */ @Override public void execute(DefJson defJson) { - // 临时修复 后续版本将通过defjson获取流程实例ID - String[] parts = ServletUtils.getRequest().getRequestURI().split("/"); - Long instanceId = Convert.toLong(parts[parts.length - 1]); - // 根据流程实例ID查询所有相关的历史任务列表 - List flowHisTasks = this.getHisTaskGroupedByNode(instanceId); + List flowHisTasks = this.getHisTaskGroupedByNode(defJson.getInstance().getId()); if (CollUtil.isEmpty(flowHisTasks)) { return; } @@ -147,7 +142,8 @@ public class FlwChartExtServiceImpl implements ChartExtService { "fontSize", "14px", "zIndex", "1000", "maxWidth", "500px", - "overflowY", "visible", + "maxHeight", "300px", + "overflowY", "auto", "overflowX", "hidden", "color", "#333", "pointerEvents", "auto", diff --git a/script/config/nacos/ruoyi-workflow.yml b/script/config/nacos/ruoyi-workflow.yml index 70262a1bb..abc297958 100644 --- a/script/config/nacos/ruoyi-workflow.yml +++ b/script/config/nacos/ruoyi-workflow.yml @@ -30,6 +30,8 @@ warm-flow: enabled: true # 是否开启设计器ui ui: true + # 是否显示流程图顶部文字 + top-text-show: true # 默认Authorization,如果有多个token,用逗号分隔 token-name: ${sa-token.token-name},clientid # 流程状态对应的三元色 diff --git a/script/sql/oracle/oracle_ry_workflow.sql b/script/sql/oracle/oracle_ry_workflow.sql index 5ea44efcc..30402d0a0 100644 --- a/script/sql/oracle/oracle_ry_workflow.sql +++ b/script/sql/oracle/oracle_ry_workflow.sql @@ -6,6 +6,7 @@ create table FLOW_DEFINITION ID NUMBER(20) not null, FLOW_CODE VARCHAR2(40) not null, FLOW_NAME VARCHAR2(100) not null, + MODEL_VALUE VARCHAR2(40) default 'CLASSICS' not null, CATEGORY VARCHAR2(100), VERSION VARCHAR2(20) not null, IS_PUBLISH NUMBER(1) default 0 not null, @@ -28,6 +29,7 @@ comment on table FLOW_DEFINITION is '流程定义表'; comment on column FLOW_DEFINITION.ID is '主键id'; comment on column FLOW_DEFINITION.FLOW_CODE is '流程编码'; comment on column FLOW_DEFINITION.FLOW_NAME is '流程名称'; +comment on column FLOW_DEFINITION.MODEL_VALUE is '设计器模型(CLASSICS经典模型 MIMIC仿钉钉模型)'; comment on column FLOW_DEFINITION.CATEGORY is '流程类别'; comment on column FLOW_DEFINITION.VERSION is '流程版本'; comment on column FLOW_DEFINITION.IS_PUBLISH is '是否发布 (0未发布 1已发布 9失效)'; @@ -219,7 +221,7 @@ create table FLOW_HIS_TASK TARGET_NODE_NAME VARCHAR2(200), APPROVER VARCHAR2(40), COOPERATE_TYPE NUMBER(1) default 0, - COLLABORATOR VARCHAR2(40), + COLLABORATOR VARCHAR2(500), SKIP_TYPE VARCHAR2(10), FLOW_STATUS VARCHAR2(20), FORM_CUSTOM VARCHAR2(1) default 'N', diff --git a/script/sql/postgres/postgres_ry_workflow.sql b/script/sql/postgres/postgres_ry_workflow.sql index c56e9f619..b63bc2b83 100644 --- a/script/sql/postgres/postgres_ry_workflow.sql +++ b/script/sql/postgres/postgres_ry_workflow.sql @@ -1,24 +1,22 @@ --- ---------------------------- --- 0、warm-flow-all.sql,地址:https://gitee.com/dromara/warm-flow/blob/master/sql/postgresql/postgresql-warm-flow-all.sql --- ---------------------------- CREATE TABLE flow_definition ( - id int8 NOT NULL, -- 主键id - flow_code varchar(40) NOT NULL, -- 流程编码 - flow_name varchar(100) NOT NULL, -- 流程名称 - category varchar(100) NULL, -- 流程类别 - "version" varchar(20) NOT NULL, -- 流程版本 - is_publish int2 NOT NULL DEFAULT 0, -- 是否发布(0未发布 1已发布 9失效) - form_custom bpchar(1) NULL DEFAULT 'N':: character varying, -- 审批表单是否自定义(Y是 N否) - form_path varchar(100) NULL, -- 审批表单路径 - activity_status int2 NOT NULL DEFAULT 1, -- 流程激活状态(0挂起 1激活) - listener_type varchar(100) NULL, -- 监听器类型 - listener_path varchar(400) NULL, -- 监听器路径 - ext varchar(500) NULL, -- 扩展字段,预留给业务系统使用 - create_time timestamp NULL, -- 创建时间 - update_time timestamp NULL, -- 更新时间 - del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- 删除标志 - tenant_id varchar(40) NULL, -- 租户id + id int8 NOT NULL, + flow_code varchar(40) NOT NULL, + flow_name varchar(100) NOT NULL, + model_value varchar(40) NOT NULL DEFAULT 'CLASSICS', + category varchar(100) NULL, + "version" varchar(20) NOT NULL, + is_publish int2 NOT NULL DEFAULT 0, + form_custom bpchar(1) NULL DEFAULT 'N':: character varying, + form_path varchar(100) NULL, + activity_status int2 NOT NULL DEFAULT 1, + listener_type varchar(100) NULL, + listener_path varchar(400) NULL, + ext varchar(500) NULL, + create_time timestamp NULL, + update_time timestamp NULL, + del_flag bpchar(1) NULL DEFAULT '0':: character varying, + tenant_id varchar(40) NULL, CONSTRAINT flow_definition_pkey PRIMARY KEY (id) ); COMMENT ON TABLE flow_definition IS '流程定义表'; @@ -26,6 +24,7 @@ COMMENT ON TABLE flow_definition IS '流程定义表'; COMMENT ON COLUMN flow_definition.id IS '主键id'; COMMENT ON COLUMN flow_definition.flow_code IS '流程编码'; COMMENT ON COLUMN flow_definition.flow_name IS '流程名称'; +COMMENT ON COLUMN flow_definition.model_value IS '设计器模型(CLASSICS经典模型 MIMIC仿钉钉模型)'; COMMENT ON COLUMN flow_definition.category IS '流程类别'; COMMENT ON COLUMN flow_definition."version" IS '流程版本'; COMMENT ON COLUMN flow_definition.is_publish IS '是否发布(0未发布 1已发布 9失效)'; @@ -42,27 +41,27 @@ COMMENT ON COLUMN flow_definition.tenant_id IS '租户id'; CREATE TABLE flow_node ( - id int8 NOT NULL, -- 主键id - node_type int2 NOT NULL, -- 节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) - definition_id int8 NOT NULL, -- 流程定义id - node_code varchar(100) NOT NULL, -- 流程节点编码 - node_name varchar(100) NULL, -- 流程节点名称 - permission_flag varchar(200) NULL, -- 权限标识(权限类型:权限标识,可以多个,用@@隔开) - node_ratio numeric(6, 3) NULL, -- 流程签署比例值 - coordinate varchar(100) NULL, -- 坐标 - any_node_skip varchar(100) NULL, -- 任意结点跳转 - listener_type varchar(100) NULL, -- 监听器类型 - listener_path varchar(400) NULL, -- 监听器路径 - handler_type varchar(100) NULL, -- 处理器类型 - handler_path varchar(400) NULL, -- 处理器路径 - form_custom bpchar(1) NULL DEFAULT 'N':: character varying, -- 审批表单是否自定义(Y是 N否) - form_path varchar(100) NULL, -- 审批表单路径 - "version" varchar(20) NOT NULL, -- 版本 - create_time timestamp NULL, -- 创建时间 - update_time timestamp NULL, -- 更新时间 - ext text NULL, -- 扩展属性 - del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- 删除标志 - tenant_id varchar(40) NULL, -- 租户id + id int8 NOT NULL, + node_type int2 NOT NULL, + definition_id int8 NOT NULL, + node_code varchar(100) NOT NULL, + node_name varchar(100) NULL, + permission_flag varchar(200) NULL, + node_ratio numeric(6, 3) NULL, + coordinate varchar(100) NULL, + any_node_skip varchar(100) NULL, + listener_type varchar(100) NULL, + listener_path varchar(400) NULL, + handler_type varchar(100) NULL, + handler_path varchar(400) NULL, + form_custom bpchar(1) NULL DEFAULT 'N':: character varying, + form_path varchar(100) NULL, + "version" varchar(20) NOT NULL, + create_time timestamp NULL, + update_time timestamp NULL, + ext text NULL, + del_flag bpchar(1) NULL DEFAULT '0':: character varying, + tenant_id varchar(40) NULL, CONSTRAINT flow_node_pkey PRIMARY KEY (id) ); COMMENT ON TABLE flow_node IS '流程节点表'; @@ -92,20 +91,20 @@ COMMENT ON COLUMN flow_node.tenant_id IS '租户id'; CREATE TABLE flow_skip ( - id int8 NOT NULL, -- 主键id - definition_id int8 NOT NULL, -- 流程定义id - now_node_code varchar(100) NOT NULL, -- 当前流程节点的编码 - now_node_type int2 NULL, -- 当前节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) - next_node_code varchar(100) NOT NULL, -- 下一个流程节点的编码 - next_node_type int2 NULL, -- 下一个节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) - skip_name varchar(100) NULL, -- 跳转名称 - skip_type varchar(40) NULL, -- 跳转类型(PASS审批通过 REJECT退回) - skip_condition varchar(200) NULL, -- 跳转条件 - coordinate varchar(100) NULL, -- 坐标 - create_time timestamp NULL, -- 创建时间 - update_time timestamp NULL, -- 更新时间 - del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- 删除标志 - tenant_id varchar(40) NULL, -- 租户id + id int8 NOT NULL, + definition_id int8 NOT NULL, + now_node_code varchar(100) NOT NULL, + now_node_type int2 NULL, + next_node_code varchar(100) NOT NULL, + next_node_type int2 NULL, + skip_name varchar(100) NULL, + skip_type varchar(40) NULL, + skip_condition varchar(200) NULL, + coordinate varchar(100) NULL, + create_time timestamp NULL, + update_time timestamp NULL, + del_flag bpchar(1) NULL DEFAULT '0':: character varying, + tenant_id varchar(40) NULL, CONSTRAINT flow_skip_pkey PRIMARY KEY (id) ); COMMENT ON TABLE flow_skip IS '节点跳转关联表'; @@ -127,22 +126,22 @@ COMMENT ON COLUMN flow_skip.tenant_id IS '租户id'; CREATE TABLE flow_instance ( - id int8 NOT NULL, -- 主键id - definition_id int8 NOT NULL, -- 对应flow_definition表的id - business_id varchar(40) NOT NULL, -- 业务id - node_type int2 NOT NULL, -- 节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) - node_code varchar(40) NOT NULL, -- 流程节点编码 - node_name varchar(100) NULL, -- 流程节点名称 - variable text NULL, -- 任务变量 - flow_status varchar(20) NOT NULL, -- 流程状态(0待提交 1审批中 2 审批通过 8已完成 9已退回 10失效) - activity_status int2 NOT NULL DEFAULT 1, -- 流程激活状态(0挂起 1激活) - def_json text NULL, -- 流程定义json - create_by varchar(64) NULL DEFAULT '':: character varying, -- 创建者 - create_time timestamp NULL, -- 创建时间 - update_time timestamp NULL, -- 更新时间 - ext varchar(500) NULL, -- 扩展字段,预留给业务系统使用 - del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- 删除标志 - tenant_id varchar(40) NULL, -- 租户id + id int8 NOT NULL, + definition_id int8 NOT NULL, + business_id varchar(40) NOT NULL, + node_type int2 NOT NULL, + node_code varchar(40) NOT NULL, + node_name varchar(100) NULL, + variable text NULL, + flow_status varchar(20) NOT NULL, + activity_status int2 NOT NULL DEFAULT 1, + def_json text NULL, + create_by varchar(64) NULL DEFAULT '':: character varying, + create_time timestamp NULL, + update_time timestamp NULL, + ext varchar(500) NULL, + del_flag bpchar(1) NULL DEFAULT '0':: character varying, + tenant_id varchar(40) NULL, CONSTRAINT flow_instance_pkey PRIMARY KEY (id) ); COMMENT ON TABLE flow_instance IS '流程实例表'; @@ -166,19 +165,19 @@ COMMENT ON COLUMN flow_instance.tenant_id IS '租户id'; CREATE TABLE flow_task ( - id int8 NOT NULL, -- 主键id - definition_id int8 NOT NULL, -- 对应flow_definition表的id - instance_id int8 NOT NULL, -- 对应flow_instance表的id - node_code varchar(100) NOT NULL, -- 节点编码 - node_name varchar(100) NULL, -- 节点名称 - node_type int2 NOT NULL, -- 节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) - flow_status varchar(20) NOT NULL, -- 流程状态(0待提交 1审批中 2 审批通过 8已完成 9已退回 10失效) - form_custom bpchar(1) NULL DEFAULT 'N':: character varying, -- 审批表单是否自定义(Y是 N否) - form_path varchar(100) NULL, -- 审批表单路径 - create_time timestamp NULL, -- 创建时间 - update_time timestamp NULL, -- 更新时间 - del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- 删除标志 - tenant_id varchar(40) NULL, -- 租户id + id int8 NOT NULL, + definition_id int8 NOT NULL, + instance_id int8 NOT NULL, + node_code varchar(100) NOT NULL, + node_name varchar(100) NULL, + node_type int2 NOT NULL, + flow_status varchar(20) NOT NULL, + form_custom bpchar(1) NULL DEFAULT 'N':: character varying, + form_path varchar(100) NULL, + create_time timestamp NULL, + update_time timestamp NULL, + del_flag bpchar(1) NULL DEFAULT '0':: character varying, + tenant_id varchar(40) NULL, CONSTRAINT flow_task_pkey PRIMARY KEY (id) ); COMMENT ON TABLE flow_task IS '待办任务表'; @@ -199,29 +198,29 @@ COMMENT ON COLUMN flow_task.tenant_id IS '租户id'; CREATE TABLE flow_his_task ( - id int8 NOT NULL, -- 主键id - definition_id int8 NOT NULL, -- 对应flow_definition表的id - instance_id int8 NOT NULL, -- 对应flow_instance表的id - task_id int8 NOT NULL, -- 对应flow_task表的id - node_code varchar(100) NULL, -- 开始节点编码 - node_name varchar(100) NULL, -- 开始节点名称 - node_type int2 NULL, -- 开始节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) - target_node_code varchar(200) NULL, -- 目标节点编码 - target_node_name varchar(200) NULL, -- 结束节点名称 - approver varchar(40) NULL, -- 审批者 - cooperate_type int2 NOT NULL DEFAULT 0, -- 协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签) - collaborator varchar(40) NULL, -- 协作人(只有转办、会签、票签、委派) - skip_type varchar(10) NULL, -- 流转类型(PASS通过 REJECT退回 NONE无动作) - flow_status varchar(20) NOT NULL, -- 流程状态(0待提交 1审批中 2 审批通过 8已完成 9已退回 10失效) - form_custom bpchar(1) NULL DEFAULT 'N':: character varying, -- 审批表单是否自定义(Y是 N否) - form_path varchar(100) NULL, -- 审批表单路径 - ext text NULL, -- 扩展字段,预留给业务系统使用 - message varchar(500) NULL, -- 审批意见 - variable text NULL, -- 任务变量 - create_time timestamp NULL, -- 创建时间 - update_time timestamp NULL, -- 更新时间 - del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- 删除标志 - tenant_id varchar(40) NULL, -- 租户id + id int8 NOT NULL, + definition_id int8 NOT NULL, + instance_id int8 NOT NULL, + task_id int8 NOT NULL, + node_code varchar(100) NULL, + node_name varchar(100) NULL, + node_type int2 NULL, + target_node_code varchar(200) NULL, + target_node_name varchar(200) NULL, + approver varchar(40) NULL, + cooperate_type int2 NOT NULL DEFAULT 0, + collaborator varchar(500) NULL, + skip_type varchar(10) NULL, + flow_status varchar(20) NOT NULL, + form_custom bpchar(1) NULL DEFAULT 'N':: character varying, + form_path varchar(100) NULL, + ext text NULL, + message varchar(500) NULL, + variable text NULL, + create_time timestamp NULL, + update_time timestamp NULL, + del_flag bpchar(1) NULL DEFAULT '0':: character varying, + tenant_id varchar(40) NULL, CONSTRAINT flow_his_task_pkey PRIMARY KEY (id) ); COMMENT ON TABLE flow_his_task IS '历史任务记录表'; @@ -252,15 +251,15 @@ COMMENT ON COLUMN flow_his_task.tenant_id IS '租户id'; CREATE TABLE flow_user ( - id int8 NOT NULL, -- 主键id - "type" bpchar(1) NOT NULL, -- 人员类型(1待办任务的审批人权限 2待办任务的转办人权限 3流程实例的抄送人权限 4待办任务的委托人权限) - processed_by varchar(80) NULL, -- 权限人 - associated int8 NOT NULL, -- 任务表id - create_time timestamp NULL, -- 创建时间 - create_by varchar(80) NULL, -- 创建人 - update_time timestamp NULL, -- 更新时间 - del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- 删除标志 - tenant_id varchar(40) NULL, -- 租户id + id int8 NOT NULL, + "type" bpchar(1) NOT NULL, + processed_by varchar(80) NULL, + associated int8 NOT NULL, + create_time timestamp NULL, + create_by varchar(80) NULL, + update_time timestamp NULL, + del_flag bpchar(1) NULL DEFAULT '0':: character varying, + tenant_id varchar(40) NULL, CONSTRAINT flow_user_pk PRIMARY KEY (id) ); CREATE INDEX user_processed_type ON flow_user USING btree (processed_by, type); @@ -422,4 +421,3 @@ COMMENT ON COLUMN public.undo_log.log_status IS '0:normal status,1:defense statu COMMENT ON COLUMN public.undo_log.log_created IS 'create datetime'; COMMENT ON COLUMN public.undo_log.log_modified IS 'modify datetime'; -CREATE SEQUENCE IF NOT EXISTS undo_log_id_seq INCREMENT BY 1 MINVALUE 1 ; diff --git a/script/sql/ry-workflow.sql b/script/sql/ry-workflow.sql index 23fd6c763..ba4c650c7 100644 --- a/script/sql/ry-workflow.sql +++ b/script/sql/ry-workflow.sql @@ -6,6 +6,7 @@ CREATE TABLE `flow_definition` `id` bigint NOT NULL COMMENT '主键id', `flow_code` varchar(40) NOT NULL COMMENT '流程编码', `flow_name` varchar(100) NOT NULL COMMENT '流程名称', + `model_value` varchar(40) NOT NULL DEFAULT 'CLASSICS' COMMENT '设计器模型(CLASSICS经典模型 MIMIC仿钉钉模型)', `category` varchar(100) DEFAULT NULL COMMENT '流程类别', `version` varchar(20) NOT NULL COMMENT '流程版本', `is_publish` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否发布(0未发布 1已发布 9失效)', @@ -24,7 +25,7 @@ CREATE TABLE `flow_definition` CREATE TABLE `flow_node` ( - `id` bigint NOT NULL COMMENT '主键id', + `id` bigint NOT NULL COMMENT '主键id', `node_type` tinyint(1) NOT NULL COMMENT '节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)', `definition_id` bigint NOT NULL COMMENT '流程定义id', `node_code` varchar(100) NOT NULL COMMENT '流程节点编码', @@ -50,7 +51,7 @@ CREATE TABLE `flow_node` CREATE TABLE `flow_skip` ( - `id` bigint NOT NULL COMMENT '主键id', + `id` bigint NOT NULL COMMENT '主键id', `definition_id` bigint NOT NULL COMMENT '流程定义id', `now_node_code` varchar(100) NOT NULL COMMENT '当前流程节点的编码', `now_node_type` tinyint(1) DEFAULT NULL COMMENT '当前节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)', @@ -119,7 +120,7 @@ CREATE TABLE `flow_his_task` `target_node_name` varchar(200) DEFAULT NULL COMMENT '结束节点名称', `approver` varchar(40) DEFAULT NULL COMMENT '审批者', `cooperate_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签)', - `collaborator` varchar(40) DEFAULT NULL COMMENT '协作人', + `collaborator` varchar(500) DEFAULT NULL COMMENT '协作人', `skip_type` varchar(10) NOT NULL COMMENT '流转类型(PASS通过 REJECT退回 NONE无动作)', `flow_status` varchar(20) NOT NULL COMMENT '流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)', `form_custom` char(1) DEFAULT 'N' COMMENT '审批表单是否自定义(Y是 N否)', @@ -137,7 +138,7 @@ CREATE TABLE `flow_his_task` CREATE TABLE `flow_user` ( - `id` bigint NOT NULL COMMENT '主键id', + `id` bigint NOT NULL COMMENT '主键id', `type` char(1) NOT NULL COMMENT '人员类型(1待办任务的审批人权限 2待办任务的转办人权限 3待办任务的委托人权限)', `processed_by` varchar(80) DEFAULT NULL COMMENT '权限人', `associated` bigint NOT NULL COMMENT '任务表id', diff --git a/script/sql/update/oracle/update_2.4.1-2.5.0.sql b/script/sql/update/oracle/update_2.4.1-2.5.0.sql index db0b4d539..d36fb0d4a 100644 --- a/script/sql/update/oracle/update_2.4.1-2.5.0.sql +++ b/script/sql/update/oracle/update_2.4.1-2.5.0.sql @@ -42,3 +42,11 @@ INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2 INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, SYSDATE, NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); + +ALTER TABLE flow_definition ADD model_value VARCHAR2(40) DEFAULT 'CLASSICS' NOT NULL; +COMMENT ON COLUMN flow_definition.model_value IS '设计器模式(CLASSICS经典模式 MIMIC仿钉钉模式)'; + +UPDATE flow_skip SET skip_condition = REPLACE(skip_condition, 'notNike', 'notLike'); + +ALTER TABLE flow_his_task MODIFY (collaborator VARCHAR2(500) DEFAULT NULL NULL); +COMMENT ON COLUMN flow_his_task.collaborator IS '协作人'; diff --git a/script/sql/update/postgres/update_2.4.1-2.5.0.sql b/script/sql/update/postgres/update_2.4.1-2.5.0.sql index eb14bf0c6..7d1c7491a 100644 --- a/script/sql/update/postgres/update_2.4.1-2.5.0.sql +++ b/script/sql/update/postgres/update_2.4.1-2.5.0.sql @@ -41,3 +41,14 @@ INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2 INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, now(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, now(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, now(), NULL, NULL, ''); + +ALTER TABLE flow_definition ADD COLUMN model_value VARCHAR(40) NOT NULL DEFAULT 'CLASSICS'; +COMMENT ON COLUMN flow_definition.model_value IS '设计器模式(CLASSICS经典模式 MIMIC仿钉钉模式)'; + +UPDATE flow_skip SET skip_condition = REPLACE(skip_condition, 'notNike', 'notLike'); + +ALTER TABLE flow_his_task + ALTER COLUMN collaborator DROP NOT NULL, +ALTER COLUMN collaborator SET DEFAULT NULL, + ALTER COLUMN collaborator TYPE VARCHAR(500); +COMMENT ON COLUMN flow_his_task.collaborator IS '协作人'; diff --git a/script/sql/update/update_2.4.1-2.5.0.sql b/script/sql/update/update_2.4.1-2.5.0.sql index 7f8d072f9..de6ec4342 100644 --- a/script/sql/update/update_2.4.1-2.5.0.sql +++ b/script/sql/update/update_2.4.1-2.5.0.sql @@ -26,3 +26,11 @@ INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2 INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, sysdate(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, sysdate(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, sysdate(), NULL, NULL, ''); + +ALTER TABLE `flow_definition` + ADD COLUMN `model_value` varchar(40) NOT NULL DEFAULT 'CLASSICS' COMMENT '设计器模式(CLASSICS经典模式 MIMIC仿钉钉模式)' AFTER `flow_name`; + +update flow_skip set skip_condition = REPLACE(skip_condition,'notNike','notLike'); + +ALTER TABLE `flow_his_task` + MODIFY COLUMN `collaborator` varchar(500) NULL DEFAULT NULL COMMENT '协作人' AFTER `cooperate_type`; -- Gitee From 633252f7300bf57c210752d0ee1db0bccb4660cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 4 Aug 2025 14:35:51 +0800 Subject: [PATCH 081/155] =?UTF-8?q?update=20snailjob=201.6.0=20=3D>=201.7.?= =?UTF-8?q?0(=E6=96=B0=E5=A2=9E=E7=9A=84=E7=BD=91=E5=8D=A1=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=9C=89=E5=BC=82=E5=B8=B8=E7=AD=89=E5=BE=85=E5=AE=98?= =?UTF-8?q?=E6=96=B9=E4=BF=AE=E5=A4=8D=20=E4=B8=8D=E8=80=BD=E8=AF=AF?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E4=BD=BF=E7=94=A8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../src/main/java/org/dromara/job/snailjob/AlipayBillTask.java | 2 +- .../src/main/java/org/dromara/job/snailjob/SummaryBillTask.java | 2 +- .../main/java/org/dromara/job/snailjob/TestAnnoJobExecutor.java | 2 +- .../main/java/org/dromara/job/snailjob/TestBroadcastJob.java | 2 +- .../java/org/dromara/job/snailjob/TestClassJobExecutor.java | 2 +- .../java/org/dromara/job/snailjob/TestMapJobAnnotation.java | 2 +- .../java/org/dromara/job/snailjob/TestMapReduceAnnotation1.java | 2 +- .../java/org/dromara/job/snailjob/TestStaticShardingJob.java | 2 +- .../src/main/java/org/dromara/job/snailjob/WechatBillTask.java | 2 +- script/config/nacos/ruoyi-job.yml | 2 -- script/config/nacos/ruoyi-snailjob-server.yml | 2 -- 12 files changed, 10 insertions(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index 00462ccf2..1ab320039 100644 --- a/pom.xml +++ b/pom.xml @@ -32,7 +32,7 @@ 5.8.38 3.50.0 2.2.7 - 1.6.0 + 1.7.0 1.44.0 1.18.38 7.4 diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/AlipayBillTask.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/AlipayBillTask.java index b8ad8cc39..d5c3ea734 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/AlipayBillTask.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/AlipayBillTask.java @@ -4,8 +4,8 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.dromara.common.json.utils.JsonUtils; import org.dromara.job.entity.BillDto; import org.springframework.stereotype.Component; diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/SummaryBillTask.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/SummaryBillTask.java index bff15f97e..47d730584 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/SummaryBillTask.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/SummaryBillTask.java @@ -3,8 +3,8 @@ package org.dromara.job.snailjob; import cn.hutool.core.util.StrUtil; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.dromara.common.json.utils.JsonUtils; import org.dromara.job.entity.BillDto; import org.springframework.stereotype.Component; diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestAnnoJobExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestAnnoJobExecutor.java index e5339f5b4..aa3d99e4c 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestAnnoJobExecutor.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestAnnoJobExecutor.java @@ -2,9 +2,9 @@ package org.dromara.job.snailjob; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.core.util.JsonUtil; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.springframework.stereotype.Component; /** diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestBroadcastJob.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestBroadcastJob.java index d77e72e6c..9cb830936 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestBroadcastJob.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestBroadcastJob.java @@ -3,8 +3,8 @@ package org.dromara.job.snailjob; import cn.hutool.core.util.RandomUtil; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestClassJobExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestClassJobExecutor.java index 6f7c21fb6..93da0a903 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestClassJobExecutor.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestClassJobExecutor.java @@ -2,7 +2,7 @@ package org.dromara.job.snailjob; import com.aizuda.snailjob.client.job.core.dto.JobArgs; import com.aizuda.snailjob.client.job.core.executor.AbstractJobExecutor; -import com.aizuda.snailjob.client.model.ExecuteResult; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.springframework.stereotype.Component; /** diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapJobAnnotation.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapJobAnnotation.java index 6589ed1c5..f58d7724a 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapJobAnnotation.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapJobAnnotation.java @@ -6,8 +6,8 @@ import com.aizuda.snailjob.client.job.core.MapHandler; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.annotation.MapExecutor; import com.aizuda.snailjob.client.job.core.dto.MapArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.springframework.stereotype.Component; import java.util.List; diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapReduceAnnotation1.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapReduceAnnotation1.java index 4ae2fa80a..f926016f9 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapReduceAnnotation1.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestMapReduceAnnotation1.java @@ -8,8 +8,8 @@ import com.aizuda.snailjob.client.job.core.annotation.MapExecutor; import com.aizuda.snailjob.client.job.core.annotation.ReduceExecutor; import com.aizuda.snailjob.client.job.core.dto.MapArgs; import com.aizuda.snailjob.client.job.core.dto.ReduceArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.springframework.stereotype.Component; import java.util.List; diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java index 11a69733e..060fcd4d6 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java @@ -3,8 +3,8 @@ package org.dromara.job.snailjob; import cn.hutool.core.convert.Convert; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.springframework.stereotype.Component; /** diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/WechatBillTask.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/WechatBillTask.java index d8caf1af0..e19a48ea9 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/WechatBillTask.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/WechatBillTask.java @@ -4,8 +4,8 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; -import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.model.dto.ExecuteResult; import org.dromara.common.json.utils.JsonUtils; import org.dromara.job.entity.BillDto; import org.springframework.stereotype.Component; diff --git a/script/config/nacos/ruoyi-job.yml b/script/config/nacos/ruoyi-job.yml index e1c64ab2a..e9ed16bab 100644 --- a/script/config/nacos/ruoyi-job.yml +++ b/script/config/nacos/ruoyi-job.yml @@ -31,5 +31,3 @@ snail-job: port: 2${server.port} # 客户端ip指定 host: - # RPC类型: netty, grpc - rpc-type: grpc diff --git a/script/config/nacos/ruoyi-snailjob-server.yml b/script/config/nacos/ruoyi-snailjob-server.yml index 23fdc95a2..2e9fb7fe3 100644 --- a/script/config/nacos/ruoyi-snailjob-server.yml +++ b/script/config/nacos/ruoyi-snailjob-server.yml @@ -43,7 +43,5 @@ snail-job: summary-day: 7 # 配置负载均衡周期时间 load-balance-cycle-time: 10 - # 通知类型默认使用grpc(netty 已经下线) - rpc-type: grpc # 重试任务拉取的并行度 retry-max-pull-parallel: 2 -- Gitee From 986082eef376c60aa86e805e22eecc9564cef8df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 4 Aug 2025 14:36:42 +0800 Subject: [PATCH 082/155] =?UTF-8?q?fix=20=E4=B8=B4=E6=97=B6=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=20warmflow=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../warm/flow/ui/service/WarmFlowService.java | 339 ++++++++++++++++++ 1 file changed, 339 insertions(+) create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/warm/flow/ui/service/WarmFlowService.java diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/warm/flow/ui/service/WarmFlowService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/warm/flow/ui/service/WarmFlowService.java new file mode 100644 index 000000000..e72474699 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/warm/flow/ui/service/WarmFlowService.java @@ -0,0 +1,339 @@ +/* + * Copyright 2024-2025, Warm-Flow (290631660@qq.com). + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.dromara.warm.flow.ui.service; + +import lombok.extern.slf4j.Slf4j; +import org.dromara.warm.flow.core.FlowEngine; +import org.dromara.warm.flow.core.config.WarmFlow; +import org.dromara.warm.flow.core.dto.*; +import org.dromara.warm.flow.core.entity.Form; +import org.dromara.warm.flow.core.entity.Instance; +import org.dromara.warm.flow.core.enums.FormCustomEnum; +import org.dromara.warm.flow.core.enums.ModeEnum; +import org.dromara.warm.flow.core.exception.FlowException; +import org.dromara.warm.flow.core.invoker.FrameInvoker; +import org.dromara.warm.flow.core.utils.ExceptionUtil; +import org.dromara.warm.flow.core.utils.StreamUtils; +import org.dromara.warm.flow.core.utils.StringUtils; +import org.dromara.warm.flow.ui.dto.HandlerFeedBackDto; +import org.dromara.warm.flow.ui.dto.HandlerQuery; +import org.dromara.warm.flow.ui.utils.TreeUtil; +import org.dromara.warm.flow.ui.vo.*; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 设计器Controller 可选择是否放行,放行可与业务系统共享权限,主要是用来访问业务系统数据 + * + * @author warm + */ +@Slf4j +public class WarmFlowService { + + /** + * 返回流程定义的配置 + * @return ApiResult + */ + public static ApiResult config() { + WarmFlowVo warmFlowVo = new WarmFlowVo(); + WarmFlow warmFlow = FlowEngine.getFlowConfig(); + // 获取tokenName + String tokenName = warmFlow.getTokenName(); + if (StringUtils.isEmpty(tokenName)) { + return ApiResult.fail("未配置tokenName"); + } + String[] tokenNames = tokenName.split(","); + List tokenNameList = Arrays.stream(tokenNames).filter(StringUtils::isNotEmpty) + .map(String::trim).collect(Collectors.toList()); + warmFlowVo.setTokenNameList(tokenNameList); + + return ApiResult.ok(warmFlowVo); + } + + /** + * 保存流程json字符串 + * + * @param defJson 流程数据集合 + * @return ApiResult + * @throws Exception 异常 + * @author xiarg + * @since 2024/10/29 16:31 + */ + public static ApiResult saveJson(DefJson defJson) throws Exception { + FlowEngine.defService().saveDef(defJson); + return ApiResult.ok(); + } + + /** + * 获取流程定义数据(包含节点和跳转) + * + * @param id 流程定义id + * @return ApiResult + * @author xiarg + * @since 2024/10/29 16:31 + */ + public static ApiResult queryDef(Long id) { + try { + DefJson defJson; + if (id == null) { + defJson = new DefJson() + .setModelValue(ModeEnum.CLASSICS.name()) + .setFormCustom(FormCustomEnum.N.name()); + } else { + defJson = FlowEngine.defService().queryDesign(id); + } + CategoryService categoryService = FrameInvoker.getBean(CategoryService.class); + if (categoryService != null) { + List treeList = categoryService.queryCategory(); + defJson.setCategoryList(TreeUtil.buildTree(treeList)); + } + return ApiResult.ok(defJson); + } catch (Exception e) { + log.error("获取流程json字符串", e); + throw new FlowException(ExceptionUtil.handleMsg("获取流程json字符串失败", e)); + } + } + + /** + * 获取流程图 + * + * @param id 流程实例id + * @return ApiResult + */ + public static ApiResult queryFlowChart(Long id) { + try { + Instance instance = FlowEngine.insService().getById(id); + String defJsonStr = instance.getDefJson(); + DefJson defJson = FlowEngine.jsonConvert.strToBean(defJsonStr, DefJson.class); + if (StringUtils.isEmpty(defJson.getModelValue())) { + defJson.setModelValue(ModeEnum.CLASSICS.name()); + } + defJson.setInstance(instance); + + // 获取流程图三原色 + defJson.setChartStatusColor(FlowEngine.chartService().getChartRgb()); + // 是否显示流程图顶部文字 + defJson.setTopTextShow(FlowEngine.getFlowConfig().isTopTextShow()); + // 需要业务系统实现该接口 + ChartExtService chartExtService = FrameInvoker.getBean(ChartExtService.class); + if (chartExtService != null) { + chartExtService.initPromptContent(defJson); + chartExtService.execute(defJson); + } + + return ApiResult.ok(defJson); + } catch (Exception e) { + log.error("获取流程图", e); + throw new FlowException(ExceptionUtil.handleMsg("获取流程图失败", e)); + } + } + + /** + * 办理人权限设置列表tabs页签 + * @return List + */ + public static ApiResult> handlerType() { + try { + // 需要业务系统实现该接口 + HandlerSelectService handlerSelectService = FrameInvoker.getBean(HandlerSelectService.class); + if (handlerSelectService == null) { + return ApiResult.ok(Collections.emptyList()); + } + List handlerType = handlerSelectService.getHandlerType(); + return ApiResult.ok(handlerType); + } catch (Exception e) { + log.error("办理人权限设置列表tabs页签异常", e); + throw new FlowException(ExceptionUtil.handleMsg("办理人权限设置列表tabs页签失败", e)); + } + } + + /** + * 办理人权限设置列表结果 + * @return HandlerSelectVo + */ + public static ApiResult handlerResult(HandlerQuery query) { + try { + // 需要业务系统实现该接口 + HandlerSelectService handlerSelectService = FrameInvoker.getBean(HandlerSelectService.class); + if (handlerSelectService == null) { + return ApiResult.ok(new HandlerSelectVo()); + } + HandlerSelectVo handlerSelectVo = handlerSelectService.getHandlerSelect(query); + return ApiResult.ok(handlerSelectVo); + } catch (Exception e) { + log.error("办理人权限设置列表结果异常", e); + throw new FlowException(ExceptionUtil.handleMsg("办理人权限设置列表结果失败", e)); + } + } + + /** + * 办理人权限名称回显 + * @return HandlerSelectVo + */ + public static ApiResult> handlerFeedback(HandlerFeedBackDto handlerFeedBackDto) { + try { + // 需要业务系统实现该接口 + HandlerSelectService handlerSelectService = FrameInvoker.getBean(HandlerSelectService.class); + if (handlerSelectService == null) { + List handlerFeedBackVos = StreamUtils.toList(handlerFeedBackDto.getStorageIds(), + storageId -> new HandlerFeedBackVo(storageId, null)); + return ApiResult.ok(handlerFeedBackVos); + } + List handlerFeedBackVos = handlerSelectService.handlerFeedback(handlerFeedBackDto.getStorageIds()); + return ApiResult.ok(handlerFeedBackVos); + } catch (Exception e) { + log.error("办理人权限名称回显", e); + throw new FlowException(ExceptionUtil.handleMsg("办理人权限名称回显", e)); + } + } + + /** + * 办理人选择项 + * @return List + */ + public static ApiResult> handlerDict() { + try { + // 需要业务系统实现该接口 + HandlerDictService handlerDictService = FrameInvoker.getBean(HandlerDictService.class); + if (handlerDictService == null) { + List dictList = new ArrayList<>(); + Dict dict = new Dict(); + dict.setLabel("默认表达式"); + dict.setValue("${handler}"); + Dict dict1 = new Dict(); + dict1.setLabel("spel表达式"); + dict1.setValue("#{@user.evalVar(#handler)}"); + Dict dict2 = new Dict(); + dict2.setLabel("其他"); + dict2.setValue(""); + dictList.add(dict); + dictList.add(dict1); + dictList.add(dict2); + + return ApiResult.ok(dictList); + } + return ApiResult.ok(handlerDictService.getHandlerDict()); + } catch (Exception e) { + log.error("办理人权限设置列表结果异常", e); + throw new FlowException(ExceptionUtil.handleMsg("办理人权限设置列表结果失败", e)); + } + } + + /** + * 已发布表单列表 该接口不需要业务系统实现 + */ + public static ApiResult> publishedForm() { + try { + return ApiResult.ok(FlowEngine.formService().list(FlowEngine.newForm().setIsPublish(1))); + } catch (Exception e) { + log.error("已发布表单列表异常", e); + throw new FlowException(ExceptionUtil.handleMsg("已发布表单列表异常", e)); + } + } + + /** + * 读取表单内容 + * @param id + * @return + */ + public static ApiResult getFormContent(Long id) { + try {return ApiResult.ok(FlowEngine.formService().getById(id).getFormContent()); + } catch (Exception e) { + log.error("获取表单内容字符串", e); + throw new FlowException(ExceptionUtil.handleMsg("获取表单内容字符串失败", e)); + } + } + + /** + * 保存表单内容,该接口不需要系统实现 + * @param flowDto + * @return + */ + public static ApiResult saveFormContent(FlowDto flowDto) { + FlowEngine.formService().saveContent(flowDto.getId(), flowDto.getFormContent()); + return ApiResult.ok(); + } + + + /** + * 根据任务id获取待办任务表单及数据 + * + * @param taskId 当前任务id + * @return {@link ApiResult} + * @author liangli + * @date 2024/8/21 17:08 + **/ + public static ApiResult load(Long taskId) { + FlowParams flowParams = FlowParams.build(); + + return ApiResult.ok(FlowEngine.taskService().load(taskId, flowParams)); + } + + /** + * 根据任务id获取已办任务表单及数据 + * + * @param hisTaskId + * @return + */ + public static ApiResult hisLoad(Long hisTaskId) { + FlowParams flowParams = FlowParams.build(); + + return ApiResult.ok(FlowEngine.taskService().hisLoad(hisTaskId, flowParams)); + } + + /** + * 通用表单流程审批接口 + * + * @param formData + * @param taskId + * @param skipType + * @param message + * @param nodeCode + * @return + */ + public static ApiResult handle(Map formData, Long taskId, String skipType + , String message, String nodeCode) { + FlowParams flowParams = FlowParams.build() + .skipType(skipType) + .nodeCode(nodeCode) + .message(message); + + flowParams.formData(formData); + + return ApiResult.ok(FlowEngine.taskService().skip(taskId, flowParams)); + } + + /** + * 获取节点扩展属性 + * @return List + */ + public static ApiResult> nodeExt() { + try { + // 需要业务系统实现该接口 + NodeExtService nodeExtService = FrameInvoker.getBean(NodeExtService.class); + if (nodeExtService == null) { + return ApiResult.ok(Collections.emptyList()); + } + List nodeExts = nodeExtService.getNodeExt(); + return ApiResult.ok(nodeExts); + } catch (Exception e) { + log.error("获取节点扩展属性", e); + throw new FlowException(ExceptionUtil.handleMsg("获取节点扩展属性失败", e)); + } + } + +} -- Gitee From a0519521a5d1c436ff33ca9e9dd7ee8ac47f64fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 4 Aug 2025 16:11:57 +0800 Subject: [PATCH 083/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=8F=98=E9=87=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/workflow/service/impl/FlwInstanceServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index 783fa281a..be6dfaf1a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -424,6 +424,10 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { } try { Map variableMap = new HashMap<>(Optional.ofNullable(flowInstance.getVariableMap()).orElse(Collections.emptyMap())); + if (!variableMap.containsKey(bo.getKey())) { + log.error("变量不存在: {}", bo.getKey()); + return false; + } variableMap.put(bo.getKey(), bo.getValue()); flowInstance.setVariable(FlowEngine.jsonConvert.objToStr(variableMap)); flowInstanceMapper.updateById(flowInstance); -- Gitee From 0f8ae82257160acdea00bc9e20390a7e80fee2a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 4 Aug 2025 17:18:02 +0800 Subject: [PATCH 084/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E6=BC=8F?= =?UTF-8?q?=E6=94=B9=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java index eec27e842..1161bbb0a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java @@ -85,7 +85,7 @@ public class RemoteTaskAssigneeServiceImpl implements RemoteTaskAssigneeService TableDataInfo page = postService.selectPagePostList(bo, pageQuery); // 使用封装的字段映射方法进行转换 List handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(), - p -> String.valueOf(p.getPostId()), SysPostVo::getPostCategory, SysPostVo::getPostName, SysPostVo::getDeptId, SysPostVo::getCreateTime); + item -> Convert.toStr(item.getPostId()), SysPostVo::getPostCategory, SysPostVo::getPostName, item -> Convert.toStr(item.getDeptId()), SysPostVo::getCreateTime); return new RemoteTaskAssigneeVo(page.getTotal(), handlers); } @@ -109,7 +109,7 @@ public class RemoteTaskAssigneeServiceImpl implements RemoteTaskAssigneeService TableDataInfo page = deptService.selectPageDeptList(bo, pageQuery); // 使用封装的字段映射方法进行转换 List handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(), - d -> String.valueOf(d.getDeptId()), SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, SysDeptVo::getParentId, SysDeptVo::getCreateTime); + item -> Convert.toStr(item.getDeptId()), SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, item -> Convert.toStr(item.getParentId()), SysDeptVo::getCreateTime); return new RemoteTaskAssigneeVo(page.getTotal(), handlers); } @@ -133,7 +133,7 @@ public class RemoteTaskAssigneeServiceImpl implements RemoteTaskAssigneeService TableDataInfo page = userService.selectPageUserList(bo, pageQuery); // 使用封装的字段映射方法进行转换 List handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(), - u -> String.valueOf(u.getUserId()), SysUserVo::getUserName, SysUserVo::getNickName, SysUserVo::getDeptId, SysUserVo::getCreateTime); + item -> Convert.toStr(item.getUserId()), SysUserVo::getUserName, SysUserVo::getNickName, item -> Convert.toStr(item.getDeptId()), SysUserVo::getCreateTime); return new RemoteTaskAssigneeVo(page.getTotal(), handlers); } -- Gitee From c8408ae75048e45e9d72c1c55dadbac4bac0fce7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 5 Aug 2025 11:56:34 +0800 Subject: [PATCH 085/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E6=92=A4?= =?UTF-8?q?=E9=94=80=E7=BB=88=E6=AD=A2=E7=AD=89=E6=93=8D=E4=BD=9C=20?= =?UTF-8?q?=E9=83=BD=E5=8F=98=E6=88=90=E9=80=80=E5=9B=9E=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/listener/WorkflowGlobalListener.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 88a4dbf5f..6a18bea61 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -125,12 +125,15 @@ public class WorkflowGlobalListener implements GlobalListener { if (StringUtils.isNotBlank(status)) { flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, status, params, false); } - if (task != null && CollUtil.isNotEmpty(nextTasks) && nextTasks.size() == 1 && flwCommonService.applyNodeCode(definition.getId()).equals(nextTasks.get(0).getNodeCode())) { - //如果为画线指定驳回 线条指定为驳回 驳回得节点为申请人节点 则修改流程状态为退回 - flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, BusinessStatusEnum.BACK.getStatus(), params, false); - //修改流程实例状态 - instance.setFlowStatus(BusinessStatusEnum.BACK.getStatus()); - insService.updateById(instance); + if (!BusinessStatusEnum.initialState(instance.getFlowStatus())) { + if (task != null && CollUtil.isNotEmpty(nextTasks) && nextTasks.size() == 1 + && flwCommonService.applyNodeCode(definition.getId()).equals(nextTasks.get(0).getNodeCode())) { + // 如果为画线指定驳回 线条指定为驳回 驳回得节点为申请人节点 则修改流程状态为退回 + flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, BusinessStatusEnum.BACK.getStatus(), params, false); + // 修改流程实例状态 + instance.setFlowStatus(BusinessStatusEnum.BACK.getStatus()); + insService.updateById(instance); + } } } //发布任务事件 -- Gitee From b41ed6fd92276f58ca52a54b73483a6e35891b7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 6 Aug 2025 10:08:57 +0800 Subject: [PATCH 086/155] =?UTF-8?q?add=20=E5=A2=9E=E5=8A=A0=E8=B5=9E?= =?UTF-8?q?=E5=8A=A9=E5=95=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c9a06ef39..9d0dff5eb 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ CCFlow 驰聘低代码-流程-表单 - https://gitee.com/opencc/RuoYi-JFlow
**启山商城系统 多租户商城源码可免费商用可二次开发 - https://www.73app.cn/**
Mall4J 高质量Java商城系统 - https://www.mall4j.com/cn/?statId=11
aizuda flowlong 工作流 - https://gitee.com/aizuda/flowlong
+Ruoyi-Plus-Uniapp - https://ruoyi.plus
[如何成为赞助商 加群联系作者详谈](https://plus-doc.dromara.org/#/common/add_group) -- Gitee From e015970f79ad72228375d2a576005be09fed575f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 6 Aug 2025 10:21:27 +0800 Subject: [PATCH 087/155] =?UTF-8?q?add=20=E5=A2=9E=E5=8A=A0=E8=B5=9E?= =?UTF-8?q?=E5=8A=A9=E5=95=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9d0dff5eb..79f0aab06 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Mall4J 高质量Java商城系统 - https://www.mall4j.com/cn/?statId=11
aizuda flowlong 工作流 - https://gitee.com/aizuda/flowlong
Ruoyi-Plus-Uniapp - https://ruoyi.plus
-[如何成为赞助商 加群联系作者详谈](https://plus-doc.dromara.org/#/common/add_group) +[如何成为赞助商 加群联系作者详谈 每日PV2500-3000 IP1700-2500](https://plus-doc.dromara.org/#/common/add_group) # 本框架与RuoYi的功能差异 -- Gitee From 543be7a8094665cdc73b763cbbabc31c2636691b Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Wed, 6 Aug 2025 11:03:01 +0800 Subject: [PATCH 088/155] =?UTF-8?q?update=20=E6=96=B0=E5=A2=9E=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=8D=A0=E4=BD=8D=E7=AC=A6=E6=A0=BC=E5=BC=8F=E7=9A=84?= =?UTF-8?q?=20ServiceException=20=E6=9E=84=E9=80=A0=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 ServiceException(String message, Object... args) 构造器,内部使用 Hutool StrFormatter.format 格式化消息 - 解决日志打印和异常抛出信息格式不统一的问题,统一使用 {} 占位符 - 优化异常消息书写,简化拼接,提升代码可读性和维护性 --- .../common/core/exception/ServiceException.java | 11 ++++------- .../java/org/dromara/common/core/utils/DateUtils.java | 2 +- .../dromara/common/excel/core/ExcelDownHandler.java | 2 +- .../service/impl/SysOssConfigServiceImpl.java | 2 +- .../system/service/impl/SysConfigServiceImpl.java | 2 +- .../system/service/impl/SysDictTypeServiceImpl.java | 2 +- .../system/service/impl/SysPostServiceImpl.java | 2 +- .../system/service/impl/SysUserServiceImpl.java | 6 ++++-- .../service/impl/FlwDefinitionServiceImpl.java | 2 +- 9 files changed, 15 insertions(+), 16 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/exception/ServiceException.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/exception/ServiceException.java index 4fb097a88..90f5752b1 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/exception/ServiceException.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/exception/ServiceException.java @@ -1,5 +1,6 @@ package org.dromara.common.core.exception; +import cn.hutool.core.text.StrFormatter; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -8,7 +9,7 @@ import lombok.NoArgsConstructor; import java.io.Serial; /** - * 业务异常 + * 业务异常(支持占位符 {} ) * * @author ruoyi */ @@ -45,8 +46,8 @@ public final class ServiceException extends RuntimeException { this.code = code; } - public String getDetailMessage() { - return detailMessage; + public ServiceException(String message, Object... args) { + this.message = StrFormatter.format(message, args); } @Override @@ -54,10 +55,6 @@ public final class ServiceException extends RuntimeException { return message; } - public Integer getCode() { - return code; - } - public ServiceException setMessage(String message) { this.message = message; return this; diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java index b52d95e16..b4d146242 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java @@ -293,7 +293,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { // 校验时间跨度不超过最大限制 if (diff > maxValue) { - throw new ServiceException("最大时间跨度为 " + maxValue + " " + unit.toString().toLowerCase()); + throw new ServiceException("最大时间跨度为 {} {}", maxValue, unit.toString().toLowerCase()); } } diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java index 81a3da449..139728390 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java @@ -104,7 +104,7 @@ public class ExcelDownHandler implements SheetWriteHandler { if (StringUtils.isNotBlank(dictType)) { // 如果传递了字典名,则依据字典建立下拉 Collection values = Optional.ofNullable(dictService.getAllDictByDictType(dictType)) - .orElseThrow(() -> new ServiceException(String.format("字典 %s 不存在", dictType))) + .orElseThrow(() -> new ServiceException("字典 {} 不存在", dictType)) .values(); options = new ArrayList<>(values); } else if (StringUtils.isNotBlank(converterExp)) { diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssConfigServiceImpl.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssConfigServiceImpl.java index 18c62f4a3..67c464fec 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssConfigServiceImpl.java @@ -119,7 +119,7 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService { */ private void validEntityBeforeSave(SysOssConfig entity) { if (StringUtils.isNotEmpty(entity.getConfigKey()) && !checkConfigKeyUnique(entity)) { - throw new ServiceException("操作配置'" + entity.getConfigKey() + "'失败, 配置key已存在!"); + throw new ServiceException("操作配置'{}'失败, 配置key已存在!", entity.getConfigKey()); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java index 342dc5c3f..3e9643602 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java @@ -170,7 +170,7 @@ public class SysConfigServiceImpl implements ISysConfigService { List list = baseMapper.selectByIds(configIds); list.forEach(config -> { if (StringUtils.equals(SystemConstants.YES, config.getConfigType())) { - throw new ServiceException(String.format("内置参数【%s】不能删除", config.getConfigKey())); + throw new ServiceException("内置参数【{}】不能删除", config.getConfigKey()); } CacheUtils.evict(CacheNames.SYS_CONFIG, config.getConfigKey()); }); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java index 973b95a5f..c37f1f6b6 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java @@ -138,7 +138,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService { boolean assigned = dictDataMapper.exists(new LambdaQueryWrapper() .eq(SysDictData::getDictType, x.getDictType())); if (assigned) { - throw new ServiceException(String.format("%1$s已分配,不能删除", x.getDictName())); + throw new ServiceException("{}已分配,不能删除", x.getDictName()); } }); baseMapper.deleteByIds(dictIds); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java index 1e39648f0..895c57366 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java @@ -223,7 +223,7 @@ public class SysPostServiceImpl implements ISysPostService { List list = baseMapper.selectByIds(postIds); for (SysPost post : list) { if (this.countUserPostById(post.getPostId()) > 0) { - throw new ServiceException(String.format("%1$s已分配,不能删除!", post.getPostName())); + throw new ServiceException("{}已分配,不能删除!", post.getPostName()); } } return baseMapper.deleteByIds(postIds); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index 68dafc27b..2448adad8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -19,7 +19,9 @@ import org.dromara.common.core.utils.*; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; -import org.dromara.system.domain.*; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.SysUserPost; +import org.dromara.system.domain.SysUserRole; import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.vo.SysPostVo; import org.dromara.system.domain.vo.SysRoleVo; @@ -351,7 +353,7 @@ public class SysUserServiceImpl implements ISysUserService { // 防止错误更新后导致的数据误删除 int flag = baseMapper.updateById(sysUser); if (flag < 1) { - throw new ServiceException("修改用户" + user.getUserName() + "信息失败"); + throw new ServiceException("修改用户{}信息失败", user.getUserName()); } return flag; } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java index c13c5a6a8..1bcda915f 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java @@ -130,7 +130,7 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService { } } if (CollUtil.isNotEmpty(errorMsg)) { - throw new ServiceException("节点【" + StringUtils.join(errorMsg, ",") + "】未配置办理人!"); + throw new ServiceException("节点【{}】未配置办理人!", StringUtils.join(errorMsg, ",")); } } return defService.publish(id); -- Gitee From 8352f25fd9264856c335527b376b364f6cab383a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 6 Aug 2025 18:16:24 +0800 Subject: [PATCH 089/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E4=BB=A5?= =?UTF-8?q?=E9=80=97=E5=8F=B7=E6=8B=BC=E6=8E=A5=E5=85=83=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/utils/ServletUtils.java | 2 +- .../common/core/utils/StringUtils.java | 20 +++++++++++++++++++ .../service/impl/SysOssServiceImpl.java | 2 +- .../system/domain/bo/SysTenantPackageBo.java | 2 +- .../service/impl/SysClientServiceImpl.java | 2 +- .../service/impl/SysDeptServiceImpl.java | 2 +- .../impl/SysTenantPackageServiceImpl.java | 12 ++--------- .../service/impl/SysUserServiceImpl.java | 2 +- .../impl/FlwDefinitionServiceImpl.java | 2 +- .../service/impl/FlwTaskServiceImpl.java | 4 ++-- 10 files changed, 31 insertions(+), 19 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java index bd1aab808..509026f72 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java @@ -115,7 +115,7 @@ public class ServletUtils extends JakartaServletUtil { public static Map getParamMap(ServletRequest request) { Map params = new HashMap<>(); for (Map.Entry entry : getParams(request).entrySet()) { - params.put(entry.getKey(), StringUtils.join(entry.getValue(), StringUtils.SEPARATOR)); + params.put(entry.getKey(), StringUtils.joinComma(entry.getValue())); } return params; } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java index b3199b8f9..f2d6461e0 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java @@ -362,4 +362,24 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { } } + /** + * 将可迭代对象中的元素使用逗号拼接成字符串 + * + * @param iterable 可迭代对象,如 List、Set 等 + * @return 拼接后的字符串 + */ + public static String joinComma(Iterable iterable) { + return StringUtils.join(iterable, SEPARATOR); + } + + /** + * 将数组中的元素使用逗号拼接成字符串 + * + * @param array 任意类型的数组 + * @return 拼接后的字符串 + */ + public static String joinComma(Object[] array) { + return StringUtils.join(array, SEPARATOR); + } + } diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java index 6d1307f40..8111a93e8 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java @@ -113,7 +113,7 @@ public class SysOssServiceImpl implements ISysOssService { } } } - return String.join(StringUtils.SEPARATOR, list); + return StringUtils.joinComma(list); } private LambdaQueryWrapper buildQueryWrapper(SysOssBo bo) { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantPackageBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantPackageBo.java index 9086f5c80..47ba6f015 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantPackageBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantPackageBo.java @@ -38,7 +38,7 @@ public class SysTenantPackageBo extends BaseEntity { /** * 关联菜单id */ - @AutoMapping(target = "menuIds", expression = "java(org.dromara.common.core.utils.StringUtils.join(source.getMenuIds(), \",\"))") + @AutoMapping(target = "menuIds", expression = "java(org.dromara.common.core.utils.StringUtils.joinComma(source.getMenuIds()))") private Long[] menuIds; /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysClientServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysClientServiceImpl.java index 36390a7ce..86b7e0844 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysClientServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysClientServiceImpl.java @@ -111,7 +111,7 @@ public class SysClientServiceImpl implements ISysClientService { @Override public Boolean updateByBo(SysClientBo bo) { SysClient update = MapstructUtils.convert(bo, SysClient.class); - update.setGrantType(String.join(",", bo.getGrantTypeList())); + update.setGrantType(StringUtils.joinComma(bo.getGrantTypeList())); return baseMapper.updateById(update) > 0; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index 389678a18..dda420062 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -198,7 +198,7 @@ public class SysDeptServiceImpl implements ISysDeptService { list.add(vo.getDeptName()); } } - return String.join(StringUtils.SEPARATOR, list); + return StringUtils.joinComma(list); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java index 8d69e96ea..baefdf792 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java @@ -88,11 +88,7 @@ public class SysTenantPackageServiceImpl implements ISysTenantPackageService { SysTenantPackage add = MapstructUtils.convert(bo, SysTenantPackage.class); // 保存菜单id List menuIds = Arrays.asList(bo.getMenuIds()); - if (CollUtil.isNotEmpty(menuIds)) { - add.setMenuIds(StringUtils.join(menuIds, ", ")); - } else { - add.setMenuIds(""); - } + add.setMenuIds(CollUtil.isNotEmpty(menuIds) ? StringUtils.joinComma(menuIds) : ""); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setPackageId(add.getPackageId()); @@ -109,11 +105,7 @@ public class SysTenantPackageServiceImpl implements ISysTenantPackageService { SysTenantPackage update = MapstructUtils.convert(bo, SysTenantPackage.class); // 保存菜单id List menuIds = Arrays.asList(bo.getMenuIds()); - if (CollUtil.isNotEmpty(menuIds)) { - update.setMenuIds(StringUtils.join(menuIds, ", ")); - } else { - update.setMenuIds(""); - } + update.setMenuIds(CollUtil.isNotEmpty(menuIds) ? StringUtils.joinComma(menuIds) : ""); return baseMapper.updateById(update) > 0; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index 2448adad8..dd3aec860 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -622,7 +622,7 @@ public class SysUserServiceImpl implements ISysUserService { list.add(nickname); } } - return String.join(StringUtils.SEPARATOR, list); + return StringUtils.joinComma(list); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java index 1bcda915f..519cfc44b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java @@ -130,7 +130,7 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService { } } if (CollUtil.isNotEmpty(errorMsg)) { - throw new ServiceException("节点【{}】未配置办理人!", StringUtils.join(errorMsg, ",")); + throw new ServiceException("节点【{}】未配置办理人!", StringUtils.joinComma(errorMsg)); } } return defService.publish(id); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index a7010eab4..afd4492c0 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -261,7 +261,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { List variableUserIds = Arrays.asList(userIds.split(StringUtils.SEPARATOR)); hashSet.addAll(popUserIds); hashSet.addAll(variableUserIds); - map.put(entry.getKey(), String.join(StringUtils.SEPARATOR, hashSet)); + map.put(entry.getKey(), StringUtils.joinComma(hashSet)); } } else { map.put(entry.getKey(), entry.getValue()); @@ -588,7 +588,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { for (FlowNode flowNode : nextFlowNodes) { Task first = StreamUtils.findFirst(buildNextTaskList, t -> t.getNodeCode().equals(flowNode.getNodeCode())); if (ObjectUtil.isNotNull(first) && CollUtil.isNotEmpty(first.getPermissionList())) { - List users = flwTaskAssigneeService.fetchUsersByStorageIds(String.join(StringUtils.SEPARATOR, first.getPermissionList())); + List users = flwTaskAssigneeService.fetchUsersByStorageIds(StringUtils.joinComma(first.getPermissionList())); if (CollUtil.isNotEmpty(users)) { flowNode.setPermissionFlag(StreamUtils.join(users, e -> String.valueOf(e.getUserId()))); } -- Gitee From f6500b46f2efeae85c55ea7f7649c63f4fe5fc50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 7 Aug 2025 17:41:00 +0800 Subject: [PATCH 090/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E6=9C=AA?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3=E5=AD=97=E6=AE=B5=E5=AF=BC=E8=87=B4=E5=88=97?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E9=94=99=E4=BD=8D=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/excel/core/CellMergeStrategy.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeStrategy.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeStrategy.java index 515f68e1b..3e1ccfd67 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeStrategy.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeStrategy.java @@ -3,6 +3,8 @@ package org.dromara.common.excel.core; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; +import cn.idev.excel.annotation.ExcelIgnore; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; import cn.idev.excel.metadata.Head; import cn.idev.excel.write.handler.WorkbookWriteHandler; @@ -70,7 +72,17 @@ public class CellMergeStrategy extends AbstractMergeStrategy implements Workbook if (CollUtil.isEmpty(list)) { return cellList; } - Field[] fields = ReflectUtils.getFields(list.get(0).getClass(), field -> !"serialVersionUID".equals(field.getName())); + Class clazz = list.get(0).getClass(); + boolean annotationPresent = clazz.isAnnotationPresent(ExcelIgnoreUnannotated.class); + Field[] fields = ReflectUtils.getFields(clazz, field -> { + if ("serialVersionUID".equals(field.getName())) { + return false; + } + if (field.isAnnotationPresent(ExcelIgnore.class)) { + return false; + } + return !annotationPresent || field.isAnnotationPresent(ExcelProperty.class); + }); // 有注解的字段 List mergeFields = new ArrayList<>(); @@ -91,9 +103,10 @@ public class CellMergeStrategy extends AbstractMergeStrategy implements Workbook Map map = new HashMap<>(); // 生成两两合并单元格 for (int i = 0; i < list.size(); i++) { + Object rowObj = list.get(i); for (int j = 0; j < mergeFields.size(); j++) { Field field = mergeFields.get(j); - Object val = ReflectUtils.invokeGetter(list.get(i), field.getName()); + Object val = ReflectUtils.invokeGetter(rowObj, field.getName()); int colNum = mergeFieldsIndex.get(j); if (!map.containsKey(field)) { -- Gitee From 3cc8b1767e85daf9248626a74a91d019f2653514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 11 Aug 2025 10:28:14 +0800 Subject: [PATCH 091/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E7=94=B1?= =?UTF-8?q?spring=E8=87=AA=E5=B7=B1=E5=88=9D=E5=A7=8B=E5=8C=96=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E6=B1=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/config/nacos/application-common.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/script/config/nacos/application-common.yml b/script/config/nacos/application-common.yml index 8cba04c52..63c0853bb 100644 --- a/script/config/nacos/application-common.yml +++ b/script/config/nacos/application-common.yml @@ -49,6 +49,8 @@ spring: # 从 springboot 3.5 开始 spring自带线程池 # 不再需要 AsyncConfig与ThreadPoolConfig 可直接注入线程池使用 thread-name-prefix: async- + # 由spring自己初始化线程池 + mode: force # 资源信息 messages: # 国际化资源文件路径 -- Gitee From 14091133c4af75aa61db6ea45354178e78d05f8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 11 Aug 2025 14:05:57 +0800 Subject: [PATCH 092/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=9B=91=E6=8E=A7=E6=97=A0=E7=94=A8=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=BB=A3=E7=A0=81(=E5=8D=87=E7=BA=A7=E4=B9=8B=E5=90=8E?= =?UTF-8?q?=E4=B8=8D=E9=9C=80=E8=A6=81=E4=BA=86)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monitor/RuoYiMonitorApplication.java | 2 ++ .../monitor/config/AdminServerConfig.java | 31 ------------------- script/config/nacos/ruoyi-monitor.yml | 3 ++ 3 files changed, 5 insertions(+), 31 deletions(-) delete mode 100644 ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/AdminServerConfig.java diff --git a/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/RuoYiMonitorApplication.java b/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/RuoYiMonitorApplication.java index 088098a45..7662d61fa 100644 --- a/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/RuoYiMonitorApplication.java +++ b/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/RuoYiMonitorApplication.java @@ -1,5 +1,6 @@ package org.dromara.modules.monitor; +import de.codecentric.boot.admin.server.config.EnableAdminServer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -8,6 +9,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * * @author ruoyi */ +@EnableAdminServer @SpringBootApplication public class RuoYiMonitorApplication { public static void main(String[] args) { diff --git a/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/AdminServerConfig.java b/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/AdminServerConfig.java deleted file mode 100644 index 999d21a97..000000000 --- a/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/AdminServerConfig.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.dromara.modules.monitor.config; - -import de.codecentric.boot.admin.server.config.EnableAdminServer; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration; -import org.springframework.boot.task.ThreadPoolTaskExecutorBuilder; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Lazy; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; - -import java.util.concurrent.Executor; - -/** - * springboot-admin server配置类 - * - * @author Lion Li - */ -@Configuration -@EnableAdminServer -public class AdminServerConfig { - - @Lazy - @Bean(name = TaskExecutionAutoConfiguration.APPLICATION_TASK_EXECUTOR_BEAN_NAME) - @ConditionalOnMissingBean(Executor.class) - public ThreadPoolTaskExecutor applicationTaskExecutor(ThreadPoolTaskExecutorBuilder builder) { - return builder.build(); - } - - -} diff --git a/script/config/nacos/ruoyi-monitor.yml b/script/config/nacos/ruoyi-monitor.yml index 92ca04163..38ebc54ff 100644 --- a/script/config/nacos/ruoyi-monitor.yml +++ b/script/config/nacos/ruoyi-monitor.yml @@ -11,3 +11,6 @@ spring: discovery: # seata 不具有健康检查的能力 防止报错排除掉 ignored-services: ruoyi-seata-server + # 忽略无用警告 + thymeleaf: + check-template-location: false -- Gitee From 0daa00e24b94f5c64b51ed292b5c07c2d1ecc04f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 12 Aug 2025 16:50:26 +0800 Subject: [PATCH 093/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20oss?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E6=8E=A5=E5=8F=A3=E6=94=B9=E7=94=A8=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E8=AE=A2=E9=98=85=E7=9A=84=E6=96=B9=E5=BC=8F=E6=9B=BF?= =?UTF-8?q?=E4=BB=A3=E9=98=BB=E5=A1=9E=E6=B5=81=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=A4=A7=E6=96=87=E4=BB=B6=E4=B8=8B=E8=BD=BD=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E5=86=85=E5=AD=98=E5=8D=A0=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/oss/core/OssClient.java | 63 ++++++++++++++----- .../common/oss/core/WriteOutSubscriber.java | 15 +++++ 2 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/WriteOutSubscriber.java diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java index d5a0c2966..b9a90dc75 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java @@ -2,6 +2,7 @@ package org.dromara.common.oss.core; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.IdUtil; +import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.Constants; import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.StringUtils; @@ -13,9 +14,7 @@ import org.dromara.common.oss.exception.OssException; import org.dromara.common.oss.properties.OssProperties; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; -import software.amazon.awssdk.core.ResponseInputStream; -import software.amazon.awssdk.core.async.AsyncResponseTransformer; -import software.amazon.awssdk.core.async.BlockingInputStreamAsyncRequestBody; +import software.amazon.awssdk.core.async.*; import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3AsyncClient; @@ -29,9 +28,12 @@ import software.amazon.awssdk.transfer.s3.progress.LoggingTransferListener; import java.io.*; import java.net.URI; import java.net.URL; +import java.nio.channels.Channels; +import java.nio.channels.WritableByteChannel; import java.nio.file.Files; import java.nio.file.Path; import java.time.Duration; +import java.util.Optional; import java.util.function.Consumer; /** @@ -40,6 +42,7 @@ import java.util.function.Consumer; * * @author AprilWind */ +@Slf4j public class OssClient { /** @@ -236,30 +239,62 @@ public class OssClient { * * @param key 文件在 Amazon S3 中的对象键 * @param out 输出流 - * @return 输出流中写入的字节数(长度) + * @param consumer 自定义处理逻辑 * @throws OssException 如果下载失败,抛出自定义异常 */ public void download(String key, OutputStream out, Consumer consumer) { + try { + this.download(key, consumer).writeTo(out); + } catch (Exception e) { + throw new OssException("文件下载失败,错误信息:[" + e.getMessage() + "]"); + } + } + + /** + * 下载文件从 Amazon S3 到 输出流 + * + * @param key 文件在 Amazon S3 中的对象键 + * @param contentLengthConsumer 文件大小消费者函数 + * @return 写出订阅器 + * @throws OssException 如果下载失败,抛出自定义异常 + */ + public WriteOutSubscriber download(String key, Consumer contentLengthConsumer) { try { // 构建下载请求 - DownloadRequest> downloadRequest = DownloadRequest.builder() + DownloadRequest> publisherDownloadRequest = DownloadRequest.builder() // 文件对象 .getObjectRequest(y -> y.bucket(properties.getBucketName()) .key(key) .build()) .addTransferListener(LoggingTransferListener.create()) - // 使用订阅转换器 - .responseTransformer(AsyncResponseTransformer.toBlockingInputStream()) + // 使用发布订阅转换器 + .responseTransformer(AsyncResponseTransformer.toPublisher()) .build(); + // 使用 S3TransferManager 下载文件 - Download> responseFuture = transferManager.download(downloadRequest); - // 输出到流中 - try (ResponseInputStream responseStream = responseFuture.completionFuture().join().result()) { // auto-closeable stream - if (consumer != null) { - consumer.accept(responseStream.response().contentLength()); + Download> publisherDownload = transferManager.download(publisherDownloadRequest); + // 获取下载发布订阅转换器 + ResponsePublisher publisher = publisherDownload.completionFuture().join().result(); + // 执行文件大小消费者函数 + Optional.ofNullable(contentLengthConsumer) + .ifPresent(lengthConsumer -> lengthConsumer.accept(publisher.response().contentLength())); + + // 构建写出订阅器对象 + return out -> { + // 创建可写入的字节通道 + try(WritableByteChannel channel = Channels.newChannel(out)){ + // 订阅数据 + publisher.subscribe(byteBuffer -> { + while (byteBuffer.hasRemaining()) { + try { + channel.write(byteBuffer); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }).join(); } - responseStream.transferTo(out); // 阻塞调用线程 blocks the calling thread - } + }; } catch (Exception e) { throw new OssException("文件下载失败,错误信息:[" + e.getMessage() + "]"); } diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/WriteOutSubscriber.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/WriteOutSubscriber.java new file mode 100644 index 000000000..d3a9841a1 --- /dev/null +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/WriteOutSubscriber.java @@ -0,0 +1,15 @@ +package org.dromara.common.oss.core; + +import java.io.IOException; + +/** + * 写出订阅器 + * + * @author 秋辞未寒 + */ +@FunctionalInterface +public interface WriteOutSubscriber { + + void writeTo(T out) throws IOException; + +} -- Gitee From d32ba1f92fb5a533597ff2415b7b6f5dd38675dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 13 Aug 2025 10:29:37 +0800 Subject: [PATCH 094/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20Excel?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=A0=BC=E5=90=88=E5=B9=B6=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E6=98=8E=E7=A1=AE=E5=A4=84=E7=90=86?= =?UTF-8?q?=E7=B1=BB=E8=81=8C=E8=B4=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/excel/core/CellMergeHandler.java | 152 ++++++++++++++++++ .../common/excel/core/CellMergeStrategy.java | 151 ++--------------- 2 files changed, 169 insertions(+), 134 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeHandler.java diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeHandler.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeHandler.java new file mode 100644 index 000000000..dd37b6795 --- /dev/null +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeHandler.java @@ -0,0 +1,152 @@ +package org.dromara.common.excel.core; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ReflectUtil; +import cn.hutool.core.util.StrUtil; +import cn.idev.excel.annotation.ExcelIgnore; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import lombok.SneakyThrows; +import org.apache.poi.ss.util.CellRangeAddress; +import org.dromara.common.core.utils.reflect.ReflectUtils; +import org.dromara.common.excel.annotation.CellMerge; + +import java.lang.reflect.Field; +import java.util.*; + +/** + * 单元格合并处理器 + * + * @author Lion Li + */ +public class CellMergeHandler { + + private final boolean hasTitle; + private int rowIndex; + + private CellMergeHandler(final boolean hasTitle) { + this.hasTitle = hasTitle; + // 行合并开始下标 + this.rowIndex = hasTitle ? 1 : 0; + } + + @SneakyThrows + public List handle(List list) { + List cellList = new ArrayList<>(); + if (CollUtil.isEmpty(list)) { + return cellList; + } + Class clazz = list.get(0).getClass(); + boolean annotationPresent = clazz.isAnnotationPresent(ExcelIgnoreUnannotated.class); + Field[] fields = ReflectUtils.getFields(clazz, field -> { + if ("serialVersionUID".equals(field.getName())) { + return false; + } + if (field.isAnnotationPresent(ExcelIgnore.class)) { + return false; + } + return !annotationPresent || field.isAnnotationPresent(ExcelProperty.class); + }); + + // 有注解的字段 + List mergeFields = new ArrayList<>(); + List mergeFieldsIndex = new ArrayList<>(); + for (int i = 0; i < fields.length; i++) { + Field field = fields[i]; + if (field.isAnnotationPresent(CellMerge.class)) { + CellMerge cm = field.getAnnotation(CellMerge.class); + mergeFields.add(field); + mergeFieldsIndex.add(cm.index() == -1 ? i : cm.index()); + if (hasTitle) { + ExcelProperty property = field.getAnnotation(ExcelProperty.class); + rowIndex = Math.max(rowIndex, property.value().length); + } + } + } + + Map map = new HashMap<>(); + // 生成两两合并单元格 + for (int i = 0; i < list.size(); i++) { + Object rowObj = list.get(i); + for (int j = 0; j < mergeFields.size(); j++) { + Field field = mergeFields.get(j); + Object val = ReflectUtils.invokeGetter(rowObj, field.getName()); + + int colNum = mergeFieldsIndex.get(j); + if (!map.containsKey(field)) { + map.put(field, new RepeatCell(val, i)); + } else { + RepeatCell repeatCell = map.get(field); + Object cellValue = repeatCell.value(); + if (cellValue == null || "".equals(cellValue)) { + // 空值跳过不合并 + continue; + } + + if (!cellValue.equals(val)) { + if ((i - repeatCell.current() > 1)) { + cellList.add(new CellRangeAddress(repeatCell.current() + rowIndex, i + rowIndex - 1, colNum, colNum)); + } + map.put(field, new RepeatCell(val, i)); + } else if (i == list.size() - 1) { + if (!isMerge(list, i, field)) { + // 如果最后一行不能合并,检查之前的数据是否需要合并 + if (i - repeatCell.current() > 1) { + cellList.add(new CellRangeAddress(repeatCell.current() + rowIndex, i + rowIndex - 1, colNum, colNum)); + } + } else if (i > repeatCell.current()) { + // 如果最后一行可以合并,则直接合并到最后 + cellList.add(new CellRangeAddress(repeatCell.current() + rowIndex, i + rowIndex, colNum, colNum)); + } + } else if (!isMerge(list, i, field)) { + if ((i - repeatCell.current() > 1)) { + cellList.add(new CellRangeAddress(repeatCell.current() + rowIndex, i + rowIndex - 1, colNum, colNum)); + } + map.put(field, new RepeatCell(val, i)); + } + } + } + } + return cellList; + } + + private boolean isMerge(List list, int i, Field field) { + boolean isMerge = true; + CellMerge cm = field.getAnnotation(CellMerge.class); + final String[] mergeBy = cm.mergeBy(); + if (StrUtil.isAllNotBlank(mergeBy)) { + //比对当前list(i)和list(i - 1)的各个属性值一一比对 如果全为真 则为真 + for (String fieldName : mergeBy) { + final Object valCurrent = ReflectUtil.getFieldValue(list.get(i), fieldName); + final Object valPre = ReflectUtil.getFieldValue(list.get(i - 1), fieldName); + if (!Objects.equals(valPre, valCurrent)) { + //依赖字段如有任一不等值,则标记为不可合并 + isMerge = false; + } + } + } + return isMerge; + } + + record RepeatCell(Object value, int current) {} + + /** + * 创建一个单元格合并处理器实例 + * + * @param hasTitle 是否合并标题 + * @return 单元格合并处理器 + */ + public static CellMergeHandler of(final boolean hasTitle) { + return new CellMergeHandler(hasTitle); + } + + /** + * 创建一个单元格合并处理器实例(默认不合并标题) + * + * @return 单元格合并处理器 + */ + public static CellMergeHandler of() { + return new CellMergeHandler(false); + } + +} diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeStrategy.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeStrategy.java index 3e1ccfd67..34bf4a42f 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeStrategy.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeStrategy.java @@ -1,26 +1,15 @@ package org.dromara.common.excel.core; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ReflectUtil; -import cn.hutool.core.util.StrUtil; -import cn.idev.excel.annotation.ExcelIgnore; -import cn.idev.excel.annotation.ExcelIgnoreUnannotated; -import cn.idev.excel.annotation.ExcelProperty; import cn.idev.excel.metadata.Head; import cn.idev.excel.write.handler.WorkbookWriteHandler; import cn.idev.excel.write.handler.context.WorkbookWriteHandlerContext; import cn.idev.excel.write.merge.AbstractMergeStrategy; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.util.CellRangeAddress; -import org.dromara.common.core.utils.reflect.ReflectUtils; -import org.dromara.common.excel.annotation.CellMerge; -import java.lang.reflect.Field; import java.util.*; /** @@ -32,145 +21,39 @@ import java.util.*; public class CellMergeStrategy extends AbstractMergeStrategy implements WorkbookWriteHandler { private final List cellList; - private final boolean hasTitle; - private int rowIndex; + + public CellMergeStrategy(List cellList) { + this.cellList = cellList; + } public CellMergeStrategy(List list, boolean hasTitle) { - this.hasTitle = hasTitle; - // 行合并开始下标 - this.rowIndex = hasTitle ? 1 : 0; - this.cellList = handle(list, hasTitle); + this.cellList = CellMergeHandler.of(hasTitle).handle(list); } @Override protected void merge(Sheet sheet, Cell cell, Head head, Integer relativeRowIndex) { + if (CollUtil.isEmpty(cellList)){ + return; + } //单元格写入了,遍历合并区域,如果该Cell在区域内,但非首行,则清空 final int rowIndex = cell.getRowIndex(); - if (CollUtil.isNotEmpty(cellList)){ - for (CellRangeAddress cellAddresses : cellList) { - final int firstRow = cellAddresses.getFirstRow(); - if (cellAddresses.isInRange(cell) && rowIndex != firstRow){ - cell.setBlank(); - } + for (CellRangeAddress cellAddresses : cellList) { + final int firstRow = cellAddresses.getFirstRow(); + if (cellAddresses.isInRange(cell) && rowIndex != firstRow){ + cell.setBlank(); } } } @Override public void afterWorkbookDispose(final WorkbookWriteHandlerContext context) { - //当前表格写完后,统一写入 - if (CollUtil.isNotEmpty(cellList)){ - for (CellRangeAddress item : cellList) { - context.getWriteContext().writeSheetHolder().getSheet().addMergedRegion(item); - } - } - } - - @SneakyThrows - private List handle(List list, boolean hasTitle) { - List cellList = new ArrayList<>(); - if (CollUtil.isEmpty(list)) { - return cellList; - } - Class clazz = list.get(0).getClass(); - boolean annotationPresent = clazz.isAnnotationPresent(ExcelIgnoreUnannotated.class); - Field[] fields = ReflectUtils.getFields(clazz, field -> { - if ("serialVersionUID".equals(field.getName())) { - return false; - } - if (field.isAnnotationPresent(ExcelIgnore.class)) { - return false; - } - return !annotationPresent || field.isAnnotationPresent(ExcelProperty.class); - }); - - // 有注解的字段 - List mergeFields = new ArrayList<>(); - List mergeFieldsIndex = new ArrayList<>(); - for (int i = 0; i < fields.length; i++) { - Field field = fields[i]; - if (field.isAnnotationPresent(CellMerge.class)) { - CellMerge cm = field.getAnnotation(CellMerge.class); - mergeFields.add(field); - mergeFieldsIndex.add(cm.index() == -1 ? i : cm.index()); - if (hasTitle) { - ExcelProperty property = field.getAnnotation(ExcelProperty.class); - rowIndex = Math.max(rowIndex, property.value().length); - } - } + if (CollUtil.isEmpty(cellList)){ + return; } - - Map map = new HashMap<>(); - // 生成两两合并单元格 - for (int i = 0; i < list.size(); i++) { - Object rowObj = list.get(i); - for (int j = 0; j < mergeFields.size(); j++) { - Field field = mergeFields.get(j); - Object val = ReflectUtils.invokeGetter(rowObj, field.getName()); - - int colNum = mergeFieldsIndex.get(j); - if (!map.containsKey(field)) { - map.put(field, new RepeatCell(val, i)); - } else { - RepeatCell repeatCell = map.get(field); - Object cellValue = repeatCell.getValue(); - if (cellValue == null || "".equals(cellValue)) { - // 空值跳过不合并 - continue; - } - - if (!cellValue.equals(val)) { - if ((i - repeatCell.getCurrent() > 1)) { - cellList.add(new CellRangeAddress(repeatCell.getCurrent() + rowIndex, i + rowIndex - 1, colNum, colNum)); - } - map.put(field, new RepeatCell(val, i)); - } else if (i == list.size() - 1) { - if (!isMerge(list, i, field)) { - // 如果最后一行不能合并,检查之前的数据是否需要合并 - if (i - repeatCell.getCurrent() > 1) { - cellList.add(new CellRangeAddress(repeatCell.getCurrent() + rowIndex, i + rowIndex - 1, colNum, colNum)); - } - } else if (i > repeatCell.getCurrent()) { - // 如果最后一行可以合并,则直接合并到最后 - cellList.add(new CellRangeAddress(repeatCell.getCurrent() + rowIndex, i + rowIndex, colNum, colNum)); - } - } else if (!isMerge(list, i, field)) { - if ((i - repeatCell.getCurrent() > 1)) { - cellList.add(new CellRangeAddress(repeatCell.getCurrent() + rowIndex, i + rowIndex - 1, colNum, colNum)); - } - map.put(field, new RepeatCell(val, i)); - } - } - } - } - return cellList; - } - - private boolean isMerge(List list, int i, Field field) { - boolean isMerge = true; - CellMerge cm = field.getAnnotation(CellMerge.class); - final String[] mergeBy = cm.mergeBy(); - if (StrUtil.isAllNotBlank(mergeBy)) { - //比对当前list(i)和list(i - 1)的各个属性值一一比对 如果全为真 则为真 - for (String fieldName : mergeBy) { - final Object valCurrent = ReflectUtil.getFieldValue(list.get(i), fieldName); - final Object valPre = ReflectUtil.getFieldValue(list.get(i - 1), fieldName); - if (!Objects.equals(valPre, valCurrent)) { - //依赖字段如有任一不等值,则标记为不可合并 - isMerge = false; - } - } + //当前表格写完后,统一写入 + for (CellRangeAddress item : cellList) { + context.getWriteContext().writeSheetHolder().getSheet().addMergedRegion(item); } - return isMerge; } - @Data - @AllArgsConstructor - static class RepeatCell { - - private Object value; - - private int current; - - } } -- Gitee From 4b51157bc369d097fd29a9d3931c76b4568398c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 13 Aug 2025 10:31:06 +0800 Subject: [PATCH 095/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E7=B1=BB=E5=9E=8B=E8=8E=B7=E5=8F=96=E5=92=8C?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A2=9E=E5=BC=BA?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=8F=AF=E8=AF=BB=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/mybatis/enums/DataBaseType.java | 35 ++++++++++- .../common/mybatis/helper/DataBaseHelper.java | 59 ++++++++++--------- .../org/dromara/gen/util/VelocityUtils.java | 10 +++- 3 files changed, 69 insertions(+), 35 deletions(-) diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataBaseType.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataBaseType.java index 5084424eb..2d5244bcf 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataBaseType.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataBaseType.java @@ -42,17 +42,46 @@ public enum DataBaseType { * 根据数据库产品名称查找对应的数据库类型 * * @param databaseProductName 数据库产品名称 - * @return 对应的数据库类型枚举值,如果未找到则返回 null + * @return 对应的数据库类型枚举值 */ public static DataBaseType find(String databaseProductName) { if (StringUtils.isBlank(databaseProductName)) { - return null; + return MY_SQL; } for (DataBaseType type : values()) { if (type.getType().equals(databaseProductName)) { return type; } } - return null; + return MY_SQL; } + + /** + * 判断是否为 MySQL 类型 + */ + public boolean isMySql() { + return this == MY_SQL; + } + + /** + * 判断是否为 Oracle 类型 + */ + public boolean isOracle() { + return this == ORACLE; + } + + /** + * 判断是否为 PostgreSQL 类型 + */ + public boolean isPostgreSql() { + return this == POSTGRE_SQL; + } + + /** + * 判断是否为 SQL Server 类型 + */ + public boolean isSqlServer() { + return this == SQL_SERVER; + } + } diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java index bf40756b2..487ffd375 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java @@ -26,7 +26,14 @@ public class DataBaseHelper { private static final DynamicRoutingDataSource DS = SpringUtils.getBean(DynamicRoutingDataSource.class); /** - * 获取当前数据库类型 + * 获取当前数据源对应的数据库类型 + *

+ * 通过 DynamicRoutingDataSource 获取当前线程绑定的数据源, + * 然后从数据源获取数据库连接,利用连接的元数据获取数据库产品名称, + * 最后调用 DataBaseType.find 方法将数据库名称转换为对应的枚举类型 + * + * @return 当前数据库对应的 DataBaseType 枚举,找不到时默认返回 MY_SQL + * @throws ServiceException 当获取数据库连接或元数据出现异常时抛出业务异常 */ public static DataBaseType getDataBaseType() { DataSource dataSource = DS.determineDataSource(); @@ -39,37 +46,31 @@ public class DataBaseHelper { } } - public static boolean isMySql() { - return DataBaseType.MY_SQL == getDataBaseType(); - } - - public static boolean isOracle() { - return DataBaseType.ORACLE == getDataBaseType(); - } - - public static boolean isPostgerSql() { - return DataBaseType.POSTGRE_SQL == getDataBaseType(); - } - - public static boolean isSqlServer() { - return DataBaseType.SQL_SERVER == getDataBaseType(); - } - + /** + * 根据当前数据库类型,生成兼容的 FIND_IN_SET 语句片段 + *

+ * 用于判断指定值是否存在于逗号分隔的字符串列中,SQL写法根据不同数据库方言自动切换: + * - Oracle 使用 instr 函数 + * - PostgreSQL 使用 strpos 函数 + * - SQL Server 使用 charindex 函数 + * - 其他默认使用 MySQL 的 find_in_set 函数 + * + * @param var1 要查找的值(支持任意类型,内部会转换成字符串) + * @param var2 存储逗号分隔值的数据库列名 + * @return 适用于当前数据库的 SQL 条件字符串,通常用于 where 或 apply 中拼接 + */ public static String findInSet(Object var1, String var2) { - DataBaseType dataBasyType = getDataBaseType(); String var = Convert.toStr(var1); - if (dataBasyType == DataBaseType.SQL_SERVER) { - // charindex(',100,' , ',0,100,101,') <> 0 - return "charindex(',%s,' , ','+%s+',') <> 0".formatted(var, var2); - } else if (dataBasyType == DataBaseType.POSTGRE_SQL) { - // (select strpos(',0,100,101,' , ',100,')) <> 0 - return "(select strpos(','||%s||',' , ',%s,')) <> 0".formatted(var2, var); - } else if (dataBasyType == DataBaseType.ORACLE) { + return switch (getDataBaseType()) { // instr(',0,100,101,' , ',100,') <> 0 - return "instr(','||%s||',' , ',%s,') <> 0".formatted(var2, var); - } - // find_in_set('100' , '0,100,101') - return "find_in_set('%s' , %s) <> 0".formatted(var, var2); + case ORACLE -> "instr(','||%s||',' , ',%s,') <> 0".formatted(var2, var); + // (select strpos(',0,100,101,' , ',100,')) <> 0 + case POSTGRE_SQL -> "(select strpos(','||%s||',' , ',%s,')) <> 0".formatted(var2, var); + // charindex(',100,' , ',0,100,101,') <> 0 + case SQL_SERVER -> "charindex(',%s,' , ','+%s+',') <> 0".formatted(var, var2); + // find_in_set(100 , '0,100,101') + default -> "find_in_set('%s' , %s) <> 0".formatted(var, var2); + }; } /** diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/util/VelocityUtils.java b/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/util/VelocityUtils.java index 61cd55e9f..25f02dda9 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/util/VelocityUtils.java +++ b/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/util/VelocityUtils.java @@ -1,4 +1,4 @@ -package org.dromara.gen.util; +package org.dromara.generator.util; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; @@ -9,6 +9,7 @@ import org.apache.velocity.VelocityContext; import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.json.utils.JsonUtils; +import org.dromara.common.mybatis.enums.DataBaseType; import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.gen.constant.GenConstants; import org.dromara.gen.domain.GenTable; @@ -118,10 +119,13 @@ public class VelocityUtils { templates.add("vm/java/serviceImpl.java.vm"); templates.add("vm/java/controller.java.vm"); templates.add("vm/xml/mapper.xml.vm"); - if (DataBaseHelper.isOracle()) { + DataBaseType dataBaseType = DataBaseHelper.getDataBaseType(); + if (dataBaseType.isOracle()) { templates.add("vm/sql/oracle/sql.vm"); - } else if (DataBaseHelper.isPostgerSql()) { + } else if (dataBaseType.isPostgreSql()) { templates.add("vm/sql/postgres/sql.vm"); + } else if (dataBaseType.isSqlServer()) { + templates.add("vm/sql/sqlserver/sql.vm"); } else { templates.add("vm/sql/sql.vm"); } -- Gitee From c593ed5839e33576652db0b132cb366ede44e7f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 13 Aug 2025 10:31:43 +0800 Subject: [PATCH 096/155] =?UTF-8?q?update=20warm-flow=20=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=201.8.0-m3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../warm/flow/ui/service/WarmFlowService.java | 339 ------------------ 2 files changed, 1 insertion(+), 340 deletions(-) delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/warm/flow/ui/service/WarmFlowService.java diff --git a/pom.xml b/pom.xml index 1ab320039..9f15df951 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ 8.7.2-20250603 - 1.8.0-m1 + 1.8.0-m3 2.3.0 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/warm/flow/ui/service/WarmFlowService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/warm/flow/ui/service/WarmFlowService.java deleted file mode 100644 index e72474699..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/warm/flow/ui/service/WarmFlowService.java +++ /dev/null @@ -1,339 +0,0 @@ -/* - * Copyright 2024-2025, Warm-Flow (290631660@qq.com). - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.dromara.warm.flow.ui.service; - -import lombok.extern.slf4j.Slf4j; -import org.dromara.warm.flow.core.FlowEngine; -import org.dromara.warm.flow.core.config.WarmFlow; -import org.dromara.warm.flow.core.dto.*; -import org.dromara.warm.flow.core.entity.Form; -import org.dromara.warm.flow.core.entity.Instance; -import org.dromara.warm.flow.core.enums.FormCustomEnum; -import org.dromara.warm.flow.core.enums.ModeEnum; -import org.dromara.warm.flow.core.exception.FlowException; -import org.dromara.warm.flow.core.invoker.FrameInvoker; -import org.dromara.warm.flow.core.utils.ExceptionUtil; -import org.dromara.warm.flow.core.utils.StreamUtils; -import org.dromara.warm.flow.core.utils.StringUtils; -import org.dromara.warm.flow.ui.dto.HandlerFeedBackDto; -import org.dromara.warm.flow.ui.dto.HandlerQuery; -import org.dromara.warm.flow.ui.utils.TreeUtil; -import org.dromara.warm.flow.ui.vo.*; - -import java.util.*; -import java.util.stream.Collectors; - -/** - * 设计器Controller 可选择是否放行,放行可与业务系统共享权限,主要是用来访问业务系统数据 - * - * @author warm - */ -@Slf4j -public class WarmFlowService { - - /** - * 返回流程定义的配置 - * @return ApiResult - */ - public static ApiResult config() { - WarmFlowVo warmFlowVo = new WarmFlowVo(); - WarmFlow warmFlow = FlowEngine.getFlowConfig(); - // 获取tokenName - String tokenName = warmFlow.getTokenName(); - if (StringUtils.isEmpty(tokenName)) { - return ApiResult.fail("未配置tokenName"); - } - String[] tokenNames = tokenName.split(","); - List tokenNameList = Arrays.stream(tokenNames).filter(StringUtils::isNotEmpty) - .map(String::trim).collect(Collectors.toList()); - warmFlowVo.setTokenNameList(tokenNameList); - - return ApiResult.ok(warmFlowVo); - } - - /** - * 保存流程json字符串 - * - * @param defJson 流程数据集合 - * @return ApiResult - * @throws Exception 异常 - * @author xiarg - * @since 2024/10/29 16:31 - */ - public static ApiResult saveJson(DefJson defJson) throws Exception { - FlowEngine.defService().saveDef(defJson); - return ApiResult.ok(); - } - - /** - * 获取流程定义数据(包含节点和跳转) - * - * @param id 流程定义id - * @return ApiResult - * @author xiarg - * @since 2024/10/29 16:31 - */ - public static ApiResult queryDef(Long id) { - try { - DefJson defJson; - if (id == null) { - defJson = new DefJson() - .setModelValue(ModeEnum.CLASSICS.name()) - .setFormCustom(FormCustomEnum.N.name()); - } else { - defJson = FlowEngine.defService().queryDesign(id); - } - CategoryService categoryService = FrameInvoker.getBean(CategoryService.class); - if (categoryService != null) { - List treeList = categoryService.queryCategory(); - defJson.setCategoryList(TreeUtil.buildTree(treeList)); - } - return ApiResult.ok(defJson); - } catch (Exception e) { - log.error("获取流程json字符串", e); - throw new FlowException(ExceptionUtil.handleMsg("获取流程json字符串失败", e)); - } - } - - /** - * 获取流程图 - * - * @param id 流程实例id - * @return ApiResult - */ - public static ApiResult queryFlowChart(Long id) { - try { - Instance instance = FlowEngine.insService().getById(id); - String defJsonStr = instance.getDefJson(); - DefJson defJson = FlowEngine.jsonConvert.strToBean(defJsonStr, DefJson.class); - if (StringUtils.isEmpty(defJson.getModelValue())) { - defJson.setModelValue(ModeEnum.CLASSICS.name()); - } - defJson.setInstance(instance); - - // 获取流程图三原色 - defJson.setChartStatusColor(FlowEngine.chartService().getChartRgb()); - // 是否显示流程图顶部文字 - defJson.setTopTextShow(FlowEngine.getFlowConfig().isTopTextShow()); - // 需要业务系统实现该接口 - ChartExtService chartExtService = FrameInvoker.getBean(ChartExtService.class); - if (chartExtService != null) { - chartExtService.initPromptContent(defJson); - chartExtService.execute(defJson); - } - - return ApiResult.ok(defJson); - } catch (Exception e) { - log.error("获取流程图", e); - throw new FlowException(ExceptionUtil.handleMsg("获取流程图失败", e)); - } - } - - /** - * 办理人权限设置列表tabs页签 - * @return List - */ - public static ApiResult> handlerType() { - try { - // 需要业务系统实现该接口 - HandlerSelectService handlerSelectService = FrameInvoker.getBean(HandlerSelectService.class); - if (handlerSelectService == null) { - return ApiResult.ok(Collections.emptyList()); - } - List handlerType = handlerSelectService.getHandlerType(); - return ApiResult.ok(handlerType); - } catch (Exception e) { - log.error("办理人权限设置列表tabs页签异常", e); - throw new FlowException(ExceptionUtil.handleMsg("办理人权限设置列表tabs页签失败", e)); - } - } - - /** - * 办理人权限设置列表结果 - * @return HandlerSelectVo - */ - public static ApiResult handlerResult(HandlerQuery query) { - try { - // 需要业务系统实现该接口 - HandlerSelectService handlerSelectService = FrameInvoker.getBean(HandlerSelectService.class); - if (handlerSelectService == null) { - return ApiResult.ok(new HandlerSelectVo()); - } - HandlerSelectVo handlerSelectVo = handlerSelectService.getHandlerSelect(query); - return ApiResult.ok(handlerSelectVo); - } catch (Exception e) { - log.error("办理人权限设置列表结果异常", e); - throw new FlowException(ExceptionUtil.handleMsg("办理人权限设置列表结果失败", e)); - } - } - - /** - * 办理人权限名称回显 - * @return HandlerSelectVo - */ - public static ApiResult> handlerFeedback(HandlerFeedBackDto handlerFeedBackDto) { - try { - // 需要业务系统实现该接口 - HandlerSelectService handlerSelectService = FrameInvoker.getBean(HandlerSelectService.class); - if (handlerSelectService == null) { - List handlerFeedBackVos = StreamUtils.toList(handlerFeedBackDto.getStorageIds(), - storageId -> new HandlerFeedBackVo(storageId, null)); - return ApiResult.ok(handlerFeedBackVos); - } - List handlerFeedBackVos = handlerSelectService.handlerFeedback(handlerFeedBackDto.getStorageIds()); - return ApiResult.ok(handlerFeedBackVos); - } catch (Exception e) { - log.error("办理人权限名称回显", e); - throw new FlowException(ExceptionUtil.handleMsg("办理人权限名称回显", e)); - } - } - - /** - * 办理人选择项 - * @return List - */ - public static ApiResult> handlerDict() { - try { - // 需要业务系统实现该接口 - HandlerDictService handlerDictService = FrameInvoker.getBean(HandlerDictService.class); - if (handlerDictService == null) { - List dictList = new ArrayList<>(); - Dict dict = new Dict(); - dict.setLabel("默认表达式"); - dict.setValue("${handler}"); - Dict dict1 = new Dict(); - dict1.setLabel("spel表达式"); - dict1.setValue("#{@user.evalVar(#handler)}"); - Dict dict2 = new Dict(); - dict2.setLabel("其他"); - dict2.setValue(""); - dictList.add(dict); - dictList.add(dict1); - dictList.add(dict2); - - return ApiResult.ok(dictList); - } - return ApiResult.ok(handlerDictService.getHandlerDict()); - } catch (Exception e) { - log.error("办理人权限设置列表结果异常", e); - throw new FlowException(ExceptionUtil.handleMsg("办理人权限设置列表结果失败", e)); - } - } - - /** - * 已发布表单列表 该接口不需要业务系统实现 - */ - public static ApiResult> publishedForm() { - try { - return ApiResult.ok(FlowEngine.formService().list(FlowEngine.newForm().setIsPublish(1))); - } catch (Exception e) { - log.error("已发布表单列表异常", e); - throw new FlowException(ExceptionUtil.handleMsg("已发布表单列表异常", e)); - } - } - - /** - * 读取表单内容 - * @param id - * @return - */ - public static ApiResult getFormContent(Long id) { - try {return ApiResult.ok(FlowEngine.formService().getById(id).getFormContent()); - } catch (Exception e) { - log.error("获取表单内容字符串", e); - throw new FlowException(ExceptionUtil.handleMsg("获取表单内容字符串失败", e)); - } - } - - /** - * 保存表单内容,该接口不需要系统实现 - * @param flowDto - * @return - */ - public static ApiResult saveFormContent(FlowDto flowDto) { - FlowEngine.formService().saveContent(flowDto.getId(), flowDto.getFormContent()); - return ApiResult.ok(); - } - - - /** - * 根据任务id获取待办任务表单及数据 - * - * @param taskId 当前任务id - * @return {@link ApiResult} - * @author liangli - * @date 2024/8/21 17:08 - **/ - public static ApiResult load(Long taskId) { - FlowParams flowParams = FlowParams.build(); - - return ApiResult.ok(FlowEngine.taskService().load(taskId, flowParams)); - } - - /** - * 根据任务id获取已办任务表单及数据 - * - * @param hisTaskId - * @return - */ - public static ApiResult hisLoad(Long hisTaskId) { - FlowParams flowParams = FlowParams.build(); - - return ApiResult.ok(FlowEngine.taskService().hisLoad(hisTaskId, flowParams)); - } - - /** - * 通用表单流程审批接口 - * - * @param formData - * @param taskId - * @param skipType - * @param message - * @param nodeCode - * @return - */ - public static ApiResult handle(Map formData, Long taskId, String skipType - , String message, String nodeCode) { - FlowParams flowParams = FlowParams.build() - .skipType(skipType) - .nodeCode(nodeCode) - .message(message); - - flowParams.formData(formData); - - return ApiResult.ok(FlowEngine.taskService().skip(taskId, flowParams)); - } - - /** - * 获取节点扩展属性 - * @return List - */ - public static ApiResult> nodeExt() { - try { - // 需要业务系统实现该接口 - NodeExtService nodeExtService = FrameInvoker.getBean(NodeExtService.class); - if (nodeExtService == null) { - return ApiResult.ok(Collections.emptyList()); - } - List nodeExts = nodeExtService.getNodeExt(); - return ApiResult.ok(nodeExts); - } catch (Exception e) { - log.error("获取节点扩展属性", e); - throw new FlowException(ExceptionUtil.handleMsg("获取节点扩展属性失败", e)); - } - } - -} -- Gitee From f0056b0ce1e3093d41f0ec852dce5dc2af84302b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 13 Aug 2025 11:39:17 +0800 Subject: [PATCH 097/155] update seata-server 2.4.0 => 2.5.0 --- ruoyi-common/ruoyi-common-alibaba-bom/pom.xml | 2 +- ruoyi-visual/ruoyi-seata-server/pom.xml | 67 ++++-------------- .../store/db/AbstractDataSourceProvider.java | 9 ++- .../src/main/resources/application.yml | 4 +- .../main/resources/lib/seata-server-2.4.0.jar | Bin 531900 -> 0 bytes .../main/resources/lib/seata-server-2.5.0.jar | Bin 0 -> 537063 bytes 6 files changed, 22 insertions(+), 60 deletions(-) delete mode 100644 ruoyi-visual/ruoyi-seata-server/src/main/resources/lib/seata-server-2.4.0.jar create mode 100644 ruoyi-visual/ruoyi-seata-server/src/main/resources/lib/seata-server-2.5.0.jar diff --git a/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml b/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml index 0242bb0a3..d919c2562 100644 --- a/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml +++ b/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml @@ -16,7 +16,7 @@ 2.4.1 2023.0.3.3 - 2.4.0 + 2.5.0 2.5.1 3.3.5 3.3.1 diff --git a/ruoyi-visual/ruoyi-seata-server/pom.xml b/ruoyi-visual/ruoyi-seata-server/pom.xml index 7c84b2017..90fa04efc 100644 --- a/ruoyi-visual/ruoyi-seata-server/pom.xml +++ b/ruoyi-visual/ruoyi-seata-server/pom.xml @@ -27,11 +27,10 @@ jar - 2.4.0 + 2.5.0 2.7.18 5.3.39 2.0 - 9.0.105 7.2 3.8.0 1.9.13 @@ -84,11 +83,6 @@ snakeyaml ${snakeyaml-for-server.version} - - org.apache.tomcat.embed - tomcat-embed-core - ${tomcat-embed.version} - org.apache.seata seata-dependencies @@ -100,53 +94,23 @@ + - org.apache.tomcat.embed - tomcat-embed-core - ${tomcat-embed.version} - - - org.apache.tomcat.embed - tomcat-embed-el - ${tomcat-embed.version} + org.springframework.boot + spring-boot-starter - org.apache.tomcat.embed - tomcat-embed-websocket - ${tomcat-embed.version} - - - - org.springframework.boot - spring-boot-starter-web - - - log4j-to-slf4j - org.apache.logging.log4j - - - org.apache.tomcat.embed - tomcat-embed-core - - - org.apache.tomcat.embed - tomcat-embed-websocket - - - org.apache.tomcat.embed - tomcat-embed-el - - - org.yaml - snakeyaml - - + org.springframework + spring-web org.yaml snakeyaml - + + javax.servlet + javax.servlet-api + org.apache.seata seata-server @@ -161,12 +125,6 @@ ${seata.version} - - org.apache.seata - seata-all - ${seata.version} - - org.apache.seata seata-core @@ -233,7 +191,10 @@ org.postgresql postgresql - + + com.dameng + DmJdbcDriver18 + com.beust jcommander diff --git a/ruoyi-visual/ruoyi-seata-server/src/main/java/org/apache/seata/core/store/db/AbstractDataSourceProvider.java b/ruoyi-visual/ruoyi-seata-server/src/main/java/org/apache/seata/core/store/db/AbstractDataSourceProvider.java index a1aa3c1da..0e00647fe 100644 --- a/ruoyi-visual/ruoyi-seata-server/src/main/java/org/apache/seata/core/store/db/AbstractDataSourceProvider.java +++ b/ruoyi-visual/ruoyi-seata-server/src/main/java/org/apache/seata/core/store/db/AbstractDataSourceProvider.java @@ -16,7 +16,6 @@ */ package org.apache.seata.core.store.db; -import org.apache.seata.common.ConfigurationKeys; import org.apache.seata.common.exception.ShouldNeverHappenException; import org.apache.seata.common.exception.StoreException; import org.apache.seata.common.executor.Initialize; @@ -24,6 +23,7 @@ import org.apache.seata.common.util.ConfigTools; import org.apache.seata.common.util.StringUtils; import org.apache.seata.config.Configuration; import org.apache.seata.config.ConfigurationFactory; +import org.apache.seata.core.constants.ConfigurationKeys; import org.apache.seata.core.constants.DBType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -62,12 +62,12 @@ public abstract class AbstractDataSourceProvider implements DataSourceProvider, private static final String MYSQL_DRIVER_FILE_PREFIX = "mysql-connector-j"; - private static final Map MYSQL_DRIVER_LOADERS; + private static final Map DRIVER_LOADERS; private static final long DEFAULT_DB_MAX_WAIT = 5000; static { - MYSQL_DRIVER_LOADERS = createMysqlDriverClassLoaders(); + DRIVER_LOADERS = createMysqlDriverClassLoaders(); } @Override @@ -161,8 +161,7 @@ public abstract class AbstractDataSourceProvider implements DataSourceProvider, } protected ClassLoader getDriverClassLoader() { - return MYSQL_DRIVER_LOADERS.getOrDefault( - getDriverClassName(), this.getClass().getClassLoader()); + return DRIVER_LOADERS.getOrDefault(getDriverClassName(), this.getClass().getClassLoader()); } private static Map createMysqlDriverClassLoaders() { diff --git a/ruoyi-visual/ruoyi-seata-server/src/main/resources/application.yml b/ruoyi-visual/ruoyi-seata-server/src/main/resources/application.yml index 190bf7aa1..f20f8368f 100644 --- a/ruoyi-visual/ruoyi-seata-server/src/main/resources/application.yml +++ b/ruoyi-visual/ruoyi-seata-server/src/main/resources/application.yml @@ -1,9 +1,11 @@ server: - port: 7091 + port: 8091 spring: application: name: ruoyi-seata-server + main: + web-application-type: none profiles: # 环境配置 active: @profiles.active@ diff --git a/ruoyi-visual/ruoyi-seata-server/src/main/resources/lib/seata-server-2.4.0.jar b/ruoyi-visual/ruoyi-seata-server/src/main/resources/lib/seata-server-2.4.0.jar deleted file mode 100644 index da7bf12d67f42eb5cc817120409d1355b674ace9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531900 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 z zS;f_;DPb|M3wa_AkoW z5JX-`38~+TNN#Iz;vUYxJJ!rd^1I> zhQ16X(&q%*vnZBEF9IDGrA^pT!}Q5=Os}&NUebHFJ}uZQxqV=fzs-vJ1MTSDK^lxB zx_6*n8L_+u!LIsh;#iXaG{$PifS08vVHR!-rj?a zP_3`EUUO-lfKOG~L(q0K=;-veZG`X*?LDCX@(1@{^?L~pfXfk=p3U98`ydhXG}5m; zbY}UL=u)OKYWIWob#BpDl7f)GH|Y@|;-jR*v3~lbBY_BWps_#$_-=p;drV)jKzy^Q zd&V9duR2J;AO3nlt7YHLi|?2ZUnN7F(Y&f-J%cwbUOhn93yo>Ka%0bM4_|PPC%BI% zqHkSzYyP0 zV-Rl*9a2u=b`kWDmY|kAxf+Vngk-@Um**8$Wa^Y7D7@u42aqjy@X<4T!58j0_|3sq zp*4L%s*w;k`1f;|&Yv(=pe>a{9^)~d)Rc&M1v#cK&_PQF%`|4kKV+738_gdb z%7TI)c#@GBHskJ@>J&YJ^tZ*_F!d3+OBdd)0@RPC1{{A0%PJ5{>Y9q_nkMx8#u_!3 z&m;&UkV8NfRs(^za@L4hwJFQE5S9!+saMAiV{&XEJZJiw(i*KeY$ zJB~^Z$p}71@EF~V8KEt zSXybma_F)QB!E(9J(M6KY0R2-*d+ElKr0CoQ3zmvz=RXM2qw?m*Q&QaVByA|;LCG8 zU;6=U_L&g3@YW4AeBx1eWUieDS*;0DT?gCW#D!Zg>v?wdyV$_BIC|=Prj5Ap23}?h zMLd@f4Y*|ZQPULxfgWo-4d5B&gdbYxscrUKtjk;_?0{fo=J5*F^k>r6UBm@qP z8Xon;4yr{MDDI0#V9KUV_?ag-M2Ibu>*guqq&I>wu<}zVUi%?nZZ##C zhCaD;e4!#$?f?Z3SpEiCzFHQ^P$>jY1|8c?d~E*fEIV=P7mrO>0VLwumqvrG883Nm z6i@6lxt|nv~8UEW*BV!SOy%V1@bZ8A` z(4ndmzZL4v;Yol8u$tS378zWxG0udGOqKQUHaUtBApi4aloMu0Cbj+%m*^9%D4dpD z!xu!5>`A7S`2=1B!X9hiodYDzDIUL_mideX;f5>~I{L&X`uJ`Bxi@!pP0|Lzrw#?S$#n z8EV3@SQV3~c!D8a(o9@^Qu`4^kb}OzBN^L@0$x;`F*{okQ`MrdNRlQ|ton3VV&6vX zuDn=k0t~Zw3E1kh5jYk_$eF;7_#lgiOtJ%fC1ce#rb2SPS`WnKkz4_W9R2AG9ZIwB5(Pyle^ zo*#*DvF-wpg)1e_Z8n-6b8NZebFhS#`UQ=+BY8(mcIA{Qrwd|cj_Q6Yv2IG8K7|}8 z0bPuRHEeDHKNmPh2vLf-Fhb3!XPlsPSmVgtp6bpiaGus#B=Dj}TdoblM2;=H`j+#A z=!H7rqeWDRiYJ_$n4TbpP=w!T!6v4t&=eUOu~2-7o=!0;m>?d;G#twev3(ECy-p;G zQOY#|-z8BTfIks%f$b}14wJJf4Xqx|uQ zDo=d~TzE-GoB(6K^p(4ng`lEPE%VfX_5ID5(`N+?1yM6t zhCmNA1ul$9M;E z9RkOr{gV34`=-4I!Hnl0bJ5?4Z-~*&NX^Zjn&w=?EYst$^K_+Xj*cnH*n3Nvv$pDt zQ+38`PTA3VVw9LBYm667-GjC}&@s@SU;SVkvAC!Yc^&t9A$MV0{^bp6St9NCR^=gx zuT2?I&mxeXnBlLPWJqo44E~y8#jOhv^$;eJ(Jj>-dW`BO$6cL{F!(15-A^^- z!%KBMgj6c8Vs$=XpW|!I0fxvZSflI8NidsK{su=+3RMQk6f3vG4P~)zlAB%Oaqrr0D5T1$gLI}L zDrcH;=L*}f9#tqtmm#mj_J%7lyBTvx@1G198^BfV!0-fQrmjEv`LYU^dc)(f+N{H@ zU`^VnEn1spyz+`A0V)-RoPJmbBh`*sXE|mQX723TN~`%qlM0Zgn-)R#Hv^Cd$be%~R6K#+j@lXu zl!k(Ee>GQ`#8E@@MDOLtc`PwN&}SESO>}YM)8KK`h;@5~_bN5o zPX-!UN3!jhn<8P2PO2FLcMgej?DJsK>Y|8>j0hontQ?Zjo1m69uH>)+nIS4gRp*&{}P^ki15|sx_7{&_;B@Y}MoE|aHVz>b34MU1lrphOv zC|8d5ZJ!n*#D^!|2u+b1|1r=PKM45m##oOdc*4s(1X{Bqj$%JfzH{?m?PRMH4b_gF z;nnxV=9+PjRcJ~~zm-;=1=GWu9R2CM!rKG#CnirYEeAN{i$KX}t9OQpxFZK*vjOkdM={lSMehi5aXWrUDKldyTtBp459|d>} zQ=CwYEfePfS=);s%d=`IpAkUq=Q_iXz+-lf{WoHam@6U+#;E*k4Y1F8n326DYODTKL0 zOEb6|fx8cM;ITz6eZ@5$;FNeyOM@m^E`mZQ@-pNQ0ACVme4rITB`0qG&J|F#hl(`x z3cTJ&D-sShMtD&N6cdJ`1VEt#Km^Ge&0!QH4{BcSh%E1ltWbW5?Qk|nPgas5)1Dqt z)(ThTd-f3PFb+yV+)NeIs3zkBsVH*H0}xS+ZPos+dVHq0^OgL{k=E;L9HJa}+4M@u zXcdpP`ISt+y1QmBQ3(lyOSObD5LW^p!W2wbL>`1MjZbway~h=aNSRNn;(Yu~1fES; z%ArQ{!nj-x{g*sjP2x>c#`k1l*Zsk@2bv;UsX%i3KrJCe3Xq4HxK#;#ODZg1e$oW^|)SAyElkryNhbD1I#AhDUH5FZLvyI&nzQ3&dU8l6@e&I z$Rb&+g$a{z9eg}zv{?&yoF;z3T^yDx%7~PRI5wLmph&D}98p|c5nWv0cWQAY z%UfPpH=Bj7{7l+%P5vS4n!jl?L-k2;;@P4G1Xj<-ph2MqUe_a}La{8uyv`>e z5{o0CW(Trbz&#(w6&3yzu29Nt%8j!(n_YynMpI3G18Z!{&AhQ(gt%hR24DZBcyv-y zXYa@^O!_x(@BBPScL*o{8vvx2KHkynsDOq{Gn#=ZWTQmQVl-^SmAf1vx>*E(Te&oz z&%oxGvN^43Kp?rtI4N9AAlAYwTbyeNxlG8;uP# zQd6*xh6d~;*fzzGm`#HoZ1tI6nZ}4e=8JJg>7YPVi~4oOB+#u>0rDvVhaJS(cU6&P zW&3rU8!to|*kz%yN zB;G{7QSH+CO&V+fi1xL!Zz|OgjrCfmnB(Q35mPaR4~VjZ6ch3uPIJ3#B8Ut$J8QWWM_dM2R6AGr%T=<^bzn%seJ?v?0|!A5Y@1?K3Jp6~;%%HR z<~V-rqFj4H;S3vkm-ik)4}dgAGi27z{?6@bg}9p2-MztC)Wz;^|K^I>OOg!#MI2op zQN}=iKrD?wKGxg3AYCscTc7xcR>kP_Eb5IZPk9GNF(=zfXwt|YgjQ~K zdwlRug+nRrSpfG`2Awwxt+ag@uEIhgKHPkKH8!3BJybt_4L$U!!5QaJM`blshl~Gd zKzHX}Lg*g8AI(}TRLuq$++xX>4cgW+$h&rI2kb>~AnF=O>HWE3xuN32GXiIH@W|Mp zC#<^~{W4iGa^Gx7ydCVT0<%<5F&$9K{FuUB1@0u@1CpDBM+Quek&Xh^4O3G;;}fu3 zO3v*3y?_S~oD7!;cj(xu9Awl->UKf8%^Hg}=W6|4rrmC!Fs; zh>?GCzH*&EJPtfo=n*WSf0I(voE}86q%c380(@BBgXc^_=c$2c3+=%s*~>2;$a>c< z;@?^q9xmOCoIdW}9-wr5yu!4@Jpu`d*{M}_E?o9L`R39jrr2o&;t!Zl2?AtU%c;ea zWm!Fi`#-FX=dGC=Hb@9E804pAOnc^TLMe*q6Muf|3p+8PqN@8~VF4=lhp_u{)q!kk z6aLw@G7BnY4od!*1W)UVutgDa49O#=c7pb)ys@-)iG!8!oj)`j3g|b(eLfXvkGpLH zapntJqJ0jtFURV0j#ZvXXzjJw4~M*Rp}zQqB#nV_*|Zh+RAfMk9R zVEa!NXVFE7u>OZR``7N${0HpWzi6}nOE($INJ0+qL3__{SSa71ci6LZ2h;$gbvU4f z?$tU?NTJLg4*;2$$<7YL#5;OHO^2Najm->mA9A?Ja(!>1;Wt_}C?7W?!y7`L;D_Ds%X8b;ijb;)9 zq3pk*geNU}cK-nwQ^0@WRsVxC`rlNwn4^Q4_5Zc!uY@QXAKeukM+OPKD1|Ak-`CCyD@5I~}rs6k?(vt+Cg!8a( z)#Tpb@22yf<+^?xdrs$QKmW^4ul?p1tt%0`-v}Q4q{pOr+eUwZBk_GF%ddkeU84Q( zs3~0nGoEbW%m$caMEr_@HEYUQf>-1QlcVFhdu_LOIN5u#7=gvMB*i^Zb1H%;@g*c; zbH}mc`WwvFUvv*ruh9$OF@o=gE!;{E$cNysJ*{Ch{+T3PbhbB-YyrqUEO2`bJEmp< zt(9nn>K9zP&~y3a%`#F2pna&17^dbxa(ovz7-7HNy-q>){I_AfZ4FbRbw;oyL zZPs7?;~t7YDQ5QFG_iqW=sECR46sbnf`GNS8vWaKMk%h}s0_ z@7|Kv3h2ape|zlEU`^iJ7oGV1#k^R52)v7g5h#SEQ&1wbJ^x7p(+?5-Y*u`RtOgmE z1y8nR2<@NsyBALi_2;9(6(^x=%yUS7K`2P_M)|>P)Ob~2@xMkUfy9P*TEhwusF1Og=aAJfCoA3!v34yFD659!7o^n^4Sh0ZPVkW@V<&vO6ok|aP=eGb zbanC?FW4o*_7*thdE=1tP18x^gzy=fvP(6d0Lpwyu0gbNMgORS1j*a86g6nI&veBV zwokG<1s`C2j2&~Tj7$(hlL0_2y=-~HA5`JoQE~b+r$+vWuH*+-RaTY36sN3nuF7}h za!D?MH11-Xc&S?kN-_yq*^klQ(F^ig%Qgu-jk5hpe>_>|h%c+RUj`9$sk@X!s*n5^ zPyC;fFEd)ar3PDa{1Xe#jaTART-$ReO#5QDZ)y0?`Xt48>{+1-7CaCP!K}6H(c;6_ zi{!)MCt)s0thI`E*(P0rK)uNn)fM5h4SDi~jOha!wkc}%IFLM1v^Rg)*oh@u$~mEa ziU=@e`kpdzEdJ_{_&;{phu+x2=ynD3hG^jAwR1r$kib$Nob4Kc|2W`|e)fk|9jNA0 z4D5%_gb%cmpFw|h3l_xSTPW1WbORn^-kHFD~+R8x(V5ngxrNqQ9lh*mA zb|IFZ6PMb?b2i#Z@DYiV2L?wL_5v2=C>o0cpxq0X&6}vVIEodx+h1u_{f2_prqzE4 zPp?(|+jD5361hg(X|sYrqnfu3WR$xbyzNhu?6kUTYM327Gr~^@FNDp%8&DQ^E!DxC z@~HwM*4zxEv7Y?>W6PXY2q`tz>^7Fnu#$ugGYfN^Wjif#RZdF47}-m4ZpuVAQjf@m zg7L$bS88aW^-s3(>F@rF)5WkNszyLflxcafrf6LFn&2+R&t}geC6Jb6XuNbp$5o$a z-R>?Imq1SFabZM9B;#LWt!BF5y*bj=g-s5^7J$+_k!jP7(@F$q)w*OZSwSmI;1;o& zBaJ=v!0)jvSc|NiD^{;gWlDL~n+#Fh3e|@9tzWPh5yP1_Y>OYiT0cq5K1n7&0<8zs zZLA5JUz}e9@A6pGvV1s_WXN9-buDGwnm`j#m3GS>PmK8f{7vqExpm5kr{+V#A$ZaG z6o8&foa++l9?9yO=TTLWY)4Lc=lq3_qscH$Jt4UPo2<` ze2{XgTGS_I*A(!7TEomSt!GxO*`rtg`16y$;?CTJ*b%GmF=%T%U?3bEOJmD075W|Q zfb%s*v!ykZ#bAP&Xi@ve{3*f5YA8z!g!r$IPC<B%_$>3QkfNR^CB`~GtL+VVl2?d3qPN{*u)wr=UTzR4xk%5 z%G9GT)}F_dRZWXym=NI4W;jS&Xz)g!Nwvs>nexm0p`QgsY%pqx>j%un8FQ+aXG%Q! zE@D$o$g7)W?qXb$oqp_uRr@>B##&>%5Ff8P3Aj91`Amqn)ZT93VD&pe(t26iwPupj zyDd}K#f!1_?%KO+OYTp$ix;~gWu>6DJ!jjLm|UB_$Fpl&=#LT*`Z~CQ$>sDeY9!L- zSRs~QeLvcBypI)CtFO!r)or`}@*DKkwGxq`&9ynSp~E#6vCg0-zF%r&mRD)NrtgU? zX#4oc_Tc5w_X*-n1SK%4c4`;pPRi_Fd3SUKvhyqqWySXix<~m)kZDQ*{MZ7|Uldy~ zQ-S-Mao|{S?3bcky>AMukcBThQ{rkP=_9& zNR%50hYw&jNy@IV$SoO)&}4$yUF(ywb&vhECt^VCSQS$ETVh24GyXrROg;BFPR=C- z`K=BoKqEQ+c}8zZ5!2r_P{Q|N8+Fsc@pXJ4p3lp*2dFU%eB+ zB)oTUg&cDL@tw%ihYHZw{qYj z0I2L9{JXcXwR4HY`lcEBJxj{IXNS*_l63n4z`l(2je;TK529au2shT0M(;Su`P?KU z>@%}A@lE)8N7_{xT!gN_2oOeY>ki+x(tmAF-sRU5Lx+e+-9SgTxl}^njnQ(vnZ=Q> ziD__@>0ru6X7rZyYSK@XAxpuO(Q%~g=mU;F+b zANhQB?-I5+OErXR2x`Olw2*BE3W$~}2`Mg0k znNR+DGEF3M=F&2B9-Oj|e_n4{e)X}d-6`MNI=Vtb6CRVKV$lX6Ktg3ckHp3fQ!}I5 zqnCv!wsAw(wYAd`BDR3H{msT`)X)eM6DDu1=0*>`glN@bzNRJ8aN-i~_N?#U=6rJI zDaZWgd?59&FDOJL(8-)fT~|v5^zPZ)9SD z110^p;qX1EJ5^}ke57_Cw56%#zi`v=H6u@x#9U32@<_lA!CG`vpfihoc?tJox+kRZ zp!1Ly4R&k3K?IQr_Je9k@+Bk(s}SKhTE%E7;&-{Yk1y&UbXJL^BQ8TnOx+QnojoWz zj5$$v=;F^Fi99=dv2yq3_A+nuaC)s`iwBG&UCwqcaa zV|_oBOCH=teWI}suw~KzA7 zc032#Qi{>m;oW#fwm$D`E1U)9p`gTcKSWEC>fmjn*@Wh4&oYGe^MHF>x6`|QU)lN# z@MKf}7`aVHq(*lb^mH%Nza{$1_oxNJ=9`>ONr6jb3__4l{~m-rz*Xp_y;qn?a_`>S z@)~`Sq066OZ967Rz$bXqQ<`fP>&@`t2%%~(F52C1bfX8nQ$)q4h*#pfx*vJ}DS^Ng z^Rhmlo7k_3Xt72J+)I*oj1bAQ+8JBO=!jPyhdUzfbST43S?h*OP^@g)v0hGCNCnfE zmac@F#9qtrI@^g`5lyOcuVfUSelXT0S6!(;h? zJVTaen75*S=FB&-=O?sYtJ?(g3!3?^?^6tKIsLU+Z>k@eW3@Lk3IVzKY#{b~?a*zO zXB?Ny^f!hsJoyh!0h?P#z%yg7_3hQuBlTyn1N&0~_2(~SF`v-i!@B(FRxuijdx@CQ z!+wRhv2?W!5YEgu0fWXLjo(Jx1C0j(Frd1zKrEg>F)@`2qI_vOgIJ9!a640zhRIF@6`66z ztt-ACiuSRj7XFPG=K@I_2Ja2Hm`Dfu3uttc^Np9d+@}6w;?8%bSBzs*6Le69a#^Yb z-qPc+{RY5Q-AZ(#3Xr*QuB(|YYC+Pd#zE{adU5uvg}=%7WJMv+9J&UV|5Tx&2+Fi+ z$O4}()lDjoeo_F=jjfGK|7ji6$*KSzR;oHFI`?ETMdi|KO&RgIo9!;DQQ3$R-l^60 zb9g^t!aAPpJJSy&X3DcmW}s$Ps7;w0Npe%mm`Qb4sx<%D)z zNpG!UZnY^sY-W&GA65!;QJvDjir|}4b6wN}pa8QwG_z_iRN4l88wjkJ*>!LGpUH0BvY?BWVF`UljjW%2>Kw@Z*^eW!lz@uQ8? zYX2(w0g7{_NJ~}~oNt8uh17oj7w}@a2&a&9)E$g98lW|XTf+(T7`_Gjb}<}M?0!3` zo!5E2s=_RVrJ`kgo80ng)iZ^TOut!MNq6ct3shUd%PB)mU$p&dWLNl zEsr%KUJp5*l$ho#**Bea-{Ih(lNKM9_Er;KFFTcMEf4(aw7c=7%|=eOl2*Qf8qd$jcXI8QWSPV{PceBi2y31C>=Pli$bw;s45SoK}x3p?K%(pi)j2n z+G)bZ1^id@JUWOdO5 zb|LbT?p=nka+t$kaHDYVc)y&^lQr<@f7Ym|Bv0g~pw_7B3|u760)@ z*2ia0`!C^GqpoZ0d> zGkmOlwAYIH)Q(Zpx~Ii{U=iCe8D<~2%G)N~g=fI`6mtW9rGF=1->9~&-jD1CKDeow{K;ilnZSjh{Sj07U7moj9^baN@BlIJXM~l#pxyM zg%fl!u}u)XnvxVNuVsw_I49@)vz5`?Qry5Uu~zQGcJ$nM=%<=$VD-e#KiDG@py|faCcfegHM&~g zOVaPyG;{ROI(4ibA`VKw-JI^hj{8B>7;?u(l6-K}c>Qhq8b<^7|2#ymEYKtMP6}Am zwpFQmOf#cRifcxwD|~3Sj>YHx_RnZ`IKaU9jw)Cy`zxk6N!4ywz3PTOjYqv|U(MME z2$+skz{j>dNCODYvk0bMuW0w3o@{E)C3er(J14shH~A!B4*L7dw3O~|vH~QR0_H z-N*dGnWB7g*^lp{^7(@+{P(efmG|GuyK!kdh^k=(=I~wS+wZ+&f38ZeifT30J!QoW-SLdNY15l zq}7CEodc}hIHv%Q)(vUkWPfXakqNx;&6*3mK>xFD80QH7DbS&bk*rV(K!p&2Co>%R zbOfNLFfMtbeiPMNJH^as%5Hd^%h*)gP&8!-{%rH-`1r||<2wq{+G(Pu{`$;yxJ@~o z6Q5L=muirs;e7!CRIbb{=d`R2QUo~0)>Xp~6+;HQAE z^>RGu(zN11$Y0|;V6jrk8?IsSITKH?afix|iQ2yC3pYS{z~_4z||ap4QK`BLE%72Zx=4FxTKgO*I}OBtpd^g^6VHQJi5}fMuJQJrhXgHDjD1}!o`M5k zZ#qy>?1@RhA=%dzJl~N&ax|V2{;W-an+rlKr0yEwR|mUU^WJK-`waC5Fxq zID9%6A8e)k3CN{Hu+y<1zGra}e_{_Kk!~#Zf%&5O06u>l-p4dz0F*qzHwy3Hc;B_Y59-VA~hFLLnF^SbpEKqNCTQ2BBEhL4U zK;QNvvgL#ja&03iTJ<^<5=&@aEmp~7qQA2OW2BQLR5n;ApSoV+k*eU-Fa9hd>?v6U z)lgDs6m!A2x5&8Hrr+cK8>W0Dj+jG?=M9KuJRM~&327LN&o&W5R4U` z`CRu4!`dNR&(V;6@sC{r9Y!;ASEEj@-8?Uj;_RGz0r<9Pkp?B8sP6l+Q!Y|8gN3Fyfn-h~yIR`y9Vy+=0`t-V3^31x=DPQRn=38A@8 z?K{Rda^<{kkC>R%EHLc5I%a>?sWwasn-XhzSIrgNk~RpdT`5rAp$u7NRKj>N3v1x6 zd*ONb2nmpJ2rI>dweJ1X^DfFsXl_yT z4RgFLyJQ;I#3L>YOw;YY>Sw7;+-3G@eQI_$n zA&a2w!kGQ6A<_#$NdNXf=uGYt5_HaM$QGRH#y~P1hgqQ+))T|4S+^$WZg)&Sr$3&F zJ}^K24IyAy{u^q$wQrwK_9@Bx^P>AXKovSLVpMwXcrhz=LhK-TbGh4@Y4n4=ujk*N zK|#^0)oHIEK9R_DUOM`#irF5CIG1#eB=%{UF%Q3WeGKR2bjc1GW?MV0Ft_6ncPe4& z9)W-kiCCthyW>V!w2~k4$3Uuo5BG%iV7zQ5IREWz;Vv|jW%~?JA&K$yE0mtxKmR#isLyC^Ew9%Zew=e z@9p3+)gWBc=|t2bgV29Ee)L7>6bD#xWBS8aqyb`M39}q0&l@TKxabs*!j$e3h|ZfN z{AyVU{TnGg-CxTfZqIZ4(?+wLZgLpUKegms%qWiMc*|>x?qb;=P$f!*g#Cj)9{z{(g04dt?y1 zOy|6=jrm}gp4wXkaag^(215s;El)N~OTMnKwUXFOh zQc;5-%?;74aaU{nnNXj+pLeXD)JJJXU5NWOv9?dKkTj*c_qbvDy9e~SKIlXF?ASD} zqq|~#Yf+zhZBQYpZk9cD=5|G--Z9wpb2?Yk0UbU<3Rk6%7p1ljbDUc!JjnAfLW0;MA`0a$+H`GA3M6I0Q_XNNo!QWIg_S|0^$kd z$)!;ojX|0vV_=@ntWW_&_zQP+u&UcN5AWoD;-bmv z3o=OFjPvCFxu+*9Izff1nk0If#&I~WBE4Xz4&RHN57-J%(=Jgl@(90oPJ$% z{$H8s)U3Ki^Ki?h-}$H5MtH`qaZ7Pa@n%?#@GNn^Vnbpr@n%@_EW7%6MtEkt5}o@8 zu-EQ!k<-b*$lgfOPNz&-dnL;$hqkbS=|on-J)NM z8Tle*;lf6>cg|;4qa&FZ*KALzM21;U?S}{@iwmt7CrIs|thG$*hDer6yH??T zc2k>`ew+q{f2dF0BL;mEGMPW_Dc7Y2Auoq$Yk(JPJKpo7&&-k9Won^6D|=p9iH~P* z1OB5QCeN^8$EM~!gpgcv4?uLtpHJ0IpI>?<(uw-{#1&40KP-|?5d3~Au^9c&08v!u zc8X)+m0W;JYvPQikXQicLcn~8a!k{4ml$}V=|w>8pOE(h|5>;gVcBI3DtM) ziRCrOIdYRra6r(?FU5cK3HP<`#@S=!3GD%GAEhnbZXXjg zJ_J70s0BbM4KnYbvB5m^A`l#+_DEEczhT-cei9Vyi^LQf7ig`id81WQ8mdbV)*&X`z3F%xM}UZt9{WWdR6Mm z^j?;**J9VX>Jx$M17~(;VJ(O$uOOo|9LxaND!-5kfGvIE{;$&Q^-hrG!515(_Jw>2 z{?8d9>Hl^2{&W;^v2>MmcQE}wW@8F+5F&{F)+_p*%P3vmw|gQe9XKc zZn0-+&XN`uulxL8%A@jpEY3eGQg0crF@)zgpU-bjzuw{9!}UdtS9J!i@9jj&j(bof zfw@=%yLu+)U7i0PWCn(!SLAto&h<|X%;$z2tj+gw6mwFr;6^+%7qmR=*)MX(>|5B= zDft@{&)|K-7)aJ5wpY8PF~Tuy5pCh%zy4T}EG7F2!P!r4+;?mbc^&115lkq7pSe@q){v}(lHr%qO)h&6HP^TKt^;?CqJ4V$XtHCjcNMpgT*01k%=3r7tW zSHL4Kl0GX6uHMwVu4DhTH8(eFoT=zmYv@)@JPJK_ zXHHUL$e&z2`meTM^>pT3eBMoW}cvoHa7 z$c}8iL(bf^zHTS3*to+PU65sZ$%sVmyIciG$0rsgREjY6? zg7lGC_Y%gTD0^pW9Y8*%O5710NI$jEaD~TPk`FgDwf5#3pwag>FxY!=%>Tyl(VU$> zL;3EgQ)9K_i1@*ntc`}KvwH|;NNFO07!W+BibapqDz5P-Bu-vCb%{YUZH47fJz{{7 zDpB|jPFI#*jFC~pi_9WjQ?t5EYm7r-=4IVKu3AIp&#i<%Ra~J_V{eIBd%&N8o-!fK zKWT4Sr>7lL&4atKQIFE632L9Hd1P4o9T%RG9rtpb@cVk0pq{51MfuJh*cGh6~ z&M0EYfgKTLqiTus59`bbqy>)X-3`S|m303V*7upBa2mhhZJxM&}seb-k+W3kcRWWo9OIw9g?VI7 zsB|De!1>_%oK-WzVp2yPGwzKw;^B=5i(|{GytwfKPx3&(P7|0e>2#d|gY06`_n_bm zxr#p-5!}NA#tgXCcdgpC@4-R1`th|lIT=EBzonztFKAp65#=VUz z8JngmVACQ83+qO|ndB!APbWlalE%s2CJRUf$9|IrH}b*zSyA6S@>7zsQ4dbDv=Gt$ zr1^X6BRz25KrElR1oQ7Y-?)z{2|p^Cr(O(JHC%WR-Q1+}t2{#K%oB6b4lRs_4NKwz zFZkjIxN*+*0SlKEi}XO@->DCyg>f|u?Etk|-)x0pG56k>+6lgkGIH66M&amERb>Q}6bdR!m{6$U{7}@KS#UC{ zup;8qI)0WPl(oNXzn(ZHi{P~O;)*`bB%YF*w0q(nX(Zt3E*Nq_4R_R@sOTI}{f+np zmw~v_B+($=3RgISKv(&mhSz{*7FO1e5`LFj(hkt^9( z*|cx$R-n01t8GqacZJt~ydDPuOrHG(;fbz<0+U!=5#(r}xpW=_b&k(!qQXtY0#f#w z+!4xpWBVKfbXuV-tZMzae?eW`67Fcg%RB?lqqe zIAwdTy$>66yxUe1MPxd_ee+D--t|=QiQ-f6i6%D9@=PIH0>GSzB!7}Mbwx(-oov8b zJ{;}U)$;0`r!cS(FrtKRb3f<5fi?WzLQb$=E{Meh1>$;W{tXKsn2YTDTP#xPm#Cp+ zH*fG#)Bnl#yzRHTlW>5Fobg7&*T(^D-O$Fq+X#xZ>50iMq!>~NKs>Np@Uz-d_{b1q zeNs&pD)uc9MQ**l=GHkA-7PB|RjW!VXM0i?&p(KsRAN#!AK;xm|4=KX!CLu&o(RrF zvu@)(BS&=!UMsZMyuM!iBc{-TenJgepr4~XvK{`Qhq31yzfKhrof~==TK$g3s(JJ& zS@UO?Y1y0ym9yAAO!Rw`i`-S|{M)?J8t}G^Fxfx}SQwFEQ-&Y$_pe&JO@I?v@N>U2^l;Qv0Ig)E0KSq zQ1%(TxW*zZZ+z%gU}YYaLDdaTCzU%|RR?!?>gxK(_9&6-)lNpGq0M6movH|~pl@b% zqiQir=wi7h6(toZ)&cq?NnL1heGCQo->16t)4kv4OvqL`wH7)NVPpb}d$VnLyG<(C zI0?TnvD$Ma*5y?zZ3T9WPRn5lYUVm1#}fX+-}^rC@%I7rcY2t72B(aT`9%?v+kuR* zCYcBw>k4%x*}9wfa{2-R8&0m;vD6jW=4CbYigiHXtdPRXZ{*U(o{!qm@d~8oX|+=L zx7U*&5f!ZJ)fE^L299M&)ZJx2*_S|8C+ux}>dcqwzXG!lDMPpN{?0I1|F#goZn5y$ zAVsL#k8<=8wc2v}jtkjpAhUHJq(*E&>DJ=53V?{<8$7V%t?mi9cWpo`z(3gxFXxKZ zwof{ex1LV2V8_1>Y$^A%2`DN}mK~UBBO2pPEh<)B4 zee~j;PIUW4IE!r<_d;*+$T{xH(LDld~Xf8YJbAQ%=0zL*jZPV{vW`H5-Q^>R#o zjScwyEGL5*6{L0G||Dt?yy9l-mj_%2U>8THT>(CHnRPbH$aVzYN5Nbel zdg)yL&CJMoXpYrf7Prr}{rEaKNwIgPeY$i1M4?`2)qZeF8~)n9h(j@+A!y23#k z^pB?N_5^c&Zwo&RuewJ%wV9$q1gwCe%ur=hQ&i*+{NCdW`@-wohr`1$_98hKw`{q3 zkUi8x3wU?6a0}LnJrskgAaPmTs7kC-+Zf3`6h|CZXxT@VaHrKVYMB|*!Te5WXo$-+ z(Yb$SPxTD=Rp|s(IZSS|hiFLSij2_07=+676JampKV3n}kLV(>+_A*rtRffL1YuZvcvZ?vPlOCwCbE z*TOMbV!JLmJhzn~DafJ(@zn;MH<4XDLE358I4q>ArV`_H@$yqXh6}0ndulSPo#Ubs z;a&wnRK*n=E{0svmw!3rr1km-{W6lowX~tr0{4r=9%!36C}u`&)dEHm=2Oub@6Ve^ zJSB;_Nmq=SdB_?KPYIB+d*>d8S`NtPCKW6CyQqNxaBIc(2>9ImykWojaFJ>>R$vK4 zv|0fRyeD*E5Z1&+=HUab*AQB5(^Zb0=b6`YdA{qn>EEagNJkM-IIC;57BxJ(zT?ixLF|N~Urk!pTQQY;|&mgv3%`MV#j{fX5cGCqK>(h{W}KDo)F;Y_lP5%?xij9eQqDGmQ+P|}mqDbeNk-`_b8x1_q_Zm<6v*IqxIsq zA9I4@8rmbPxIddX!Skj0Qq0kr#CA4O_%`LGCMCdg%jm{HcWIij0zIu$Xf-I$qBP}H zU#Mr<=imJ`JHjd*4f2J_@XW(MOsgf^`td-j*-e317FK(IA|y-e6PMUE2y8mbJ<9In ziD%lW6Mow!7|#=kUIG60yo7Fu>Q*PozRQ>}c3HcIbhPAgi|LaFZeYXPW6k_?WBUmc z{$Vjh-m@F`rkMO=Q7y}9;u*a_K;ZlnN34)AO3_u~6^U0(8Z%_ZXI|cR zL6CiRf>jB&+4A~l-M8Pf(V97F~ ze~>g)#qIko%!;DjD%s!zcdK4c0HzL4>z)nglB_s}ZN*JRBTu<4;qPWjuE;!ye8ylL zM2W#H=CLr@Rd{lCW1KKQ+nu7jDlvF>n*@FLFdv27(~&GWo|bJbO%pet?H$41lFj8Y zf6~S3J>sSs0Id!`nYeoClQFz(c@S57Q3S_z9m-K3AVk!e-j#d6cnbLIkd-1*3fGf3 z_S9kJfr_h3R6i-VIH$ zG{zfQf86#&?!2`2IvwQF6H>EN36lNb(;xC&Sn><1*&R9I`=Hn?Q13wPXphmDLurEQ zhRG31A>PS_@OzB@`PUC+Yz2Jd%;Wz{6E`Aft9Lt95TI|Fy%4@&3jadxbaJ-H9Bz&LLo!Xta zdlw~Q(y%-hOn_eibmnGLm^HT$Q@1K^jR`2E>aEIOt)uS*VE#NTsAJ%V;^bzNF3tho z>vFsjvTbf1utNP#9QAqINE+OLENCCB>o*NA(!fT-*IAKGueaDQcOSh(X;&@Y#U(odB=(mD-Zww%tN1q7K*`DW(pr8L^7>JB z^A8S0r%!GHFqtq$`>-sGr2>#pZRo&2ig-{!Si!qjk7(_JuG;j*v(E?qmc9*Z3 zz}REFd|?i`Q(v5+h7j^ zWG4Y*x%muk_*Bmg2divUT`+BJe@%-v5wbu`s`{N~)o-V$~Nbulxze&kH^ z4xM75EGQ(!EKH5ggEGR1DX<}0@<{%UESXWK-hHY)A~addDkfCOpDxn-8P%e&!xiP;xqAi{CLCKlG}n+wPKcUuT6$g7uhkgagCLE!bl zZ+@UK;tD=?1}D-3#r&*U7Mv@~moHWL%&y!+lSuEV8P*$!w>*Oy6P*FK?Lavv5m#J3F( zxwl(E5z{a9XF~$_2b+c{>tH9K$yD~?(qIKM9?`;f>jAfDO=UHsEQk5*`Q z^fOr4jw1g;TCfsT(AyH_nUCQRNk*yh#2;x1?7j!$BpVw|TYdwQy1Yt~N& zjb$X5x*NqvoiM=@{1F1_Rg4E!Q`T*%E~W#-Pv9Yme%^w)+Hxv$Me(92>z10BF!vfp zS;YQU9IB~yTO2m*2mhAO%G;GH65HTyM{`IBxI1%J!f~4q*Ke{F(qB}-Vc=O%(`coE zbNKF>w4-$vjob>FpLh$%?BYd-IKlEH`jKXa8&fot!tZ)y81_xx?SzNxq4u*+zP~$=xUq*|lS$L|L?c2* z6ZS+z+#zwm_nUklbb6xBg2fR+cwh5lB$`@d-l2KHtqu3XFPH2 z_xiSvbImyF?6@?b4`o9$&k|N61o3)<`rz8p%EyZR%>g9S;{<2PJMITZa6a5mD?Gm3 zFB)4H_Ls!;8NaO$|Ly0B;)9>07_BOs-n6mP0okxPaY#sUauB_kOOZtpsvZb4q`32h z?J1N75F(c3%S(u6Q=ZqLLeuK^!~B|PHIQaD5Fx39;c_J6*ykXtf3DwTB%z%UCArGJ zGP!ALNG!S8-iirql7&ZtK)$bj0S%U3Qy3>gE!vfFT~U+RXH=%w`Iwcea;o5t=u`n`g+2^4`j=$j3(b4G%6d?N_T0aX4O4dsF-fsk*V&Bs@UK zQMk;Rrc{cDgo3>0Cgquqk;|)UV#k?eK?y)Zl8gfyGiH;Ab@1D}KjJCui{rC-6zph! z#2S*5iQe%*1{@=@aF7)ON`vg4J?*yIm^#dv$#Q$$nd8#3-Uui_Ee;)<;d*xidA^85 zlfv!UX@!Px)w#5*iMD@bl0w@~kb~3DB)j?Ids0&sK1C&7ud3{tRdZ{nB~Crc85uvo z9|974{}?WJXFr`it(kiAnm*q8zvX^H{a3}O`=O50{Yx!V{?fevAExT%tu4$=y-oi! zmPcjkCpar=9(i3sLDb$S#Eyt9BKOaXGMrfIGMN364I*RbwWJoi`z8J_?}-#=k7qd8 z{dbTe-7Ek=UFvW>eC( zi#wt*N*=>Vc{m&_WfY5Mv4xLo=?6(x8gQpxPXwg%;Orn!-<-(iyvh33>pg)?!DPv+E{7KP=yZXw{+B`>l*5XL?6 zcC0nUL;BYY2R~|xH=-E4g>{cx9dJs_m2|rV345Ue6e$SEOapI)8xU~;q#qg!92@{R zOV}YUIW!oTKZ@kPX_&>1$tR7F;9boGp@y^=WwavWB$kH4zB5vArzakoA7IeuP@gZ>V0Qg#U*dO}%cLvTFum=>Pr79^bD zNBxor@bq!qTAQ?wl3wh-g!T_{8DCdi3Sv1iL}B4fBv8>ZIjzm;ClLpEpUvwLdzWrh z97~a;fsu-d+bxd<>8ZFBJ9!#5NyVN7KhtZgjRcG2!sokZVO!=o9H&-@{K-J~9tsLe zqDu&Y2$u87bY=Y32Oqb|6ba_SDO&*>8l71ZX^hGMotos26dSk-WDaKvfqG#Y2zn7P zIz^aH8frxpd|ms58HC!_f6IxvdQZY5{SVJOED#XO|M}6jtf8%;+5dA_JJqz6=LJyt zU<+#tMRWe_eEP4IA^lJiOdw!5CK6_I@$hl=n?~0FMeUiSqFW!pA0z}Hz+aTZ@iri` zc9T~4o07e)MjKHtDV<26OSH1K*>H^Ds|tdnj@6$<48xFOPl22|P!uByfG zmJ2CY3};H-YatUuf`$)BMy$>9gsm>dHNg?e;sIz6?c*D1Ec^=TOR3}5A%Bj*kjeR+ zX0aOo(c#Ysmuai0JjPi$De6v&$^`b@AhSbTKixbsw$+bTZ&cc>s9>^ghpJAn;*h&& zLTNjet`9WID<+-?ZVP=~C5^0pU*i7!W8SEhCxespB>R|T1bwfD$+8=|%F*2FkkLS{|_ z%oEBJs)}d>Cl;f@9?D!o^4=#)y$swpETaOd>wT{5b+j;qeh)XNnHSMb&cpmGkgV-3 z!%hE9%i$A*omaC!rDMs>@%QzGKp$;Z&arLIA-GTj(Ux6xUT*;1+Q@X1b5Nxn34(;u)}Di}^J|E&!AIj-G<)pmCZys!KP7vJZ zqae?&Ko8t_^G?`ud-|*w`2YG;J)UGz=l-d>14tmCA5FxMn9q#f(B9C<+=SlA#L(IB z=he~G#PR3N$;rabmi|8l5z5Yn&Mr=BhSnCwhR$}5|3ev(nV_ls>xaYo9S6SYdvsbP`gJ=2>VSPZt?etvHrK`KFIEcfgT}~NpgaKXD*07`&&I?H(4XWT&fBB|X0L zx=iC^de2u{u7X-z!aG7uF4K9Jl=(7`nqmwd&Npa{yKk^g?fMimqWOF89<4{u@mcCy zWxAfkc$#Wij^^Dmoju^|bubCGYHDDfvTjye8t%=fQz}wXd}~HyfaJ*{d}f?C!i9R) zqons&e68($BD4jjAn>&VCKn1M{f6btyfoIizC5@h>gN-BOP#kpfgM|1hab@zr7@#U37{JN5{f%TW;jg zc>iA5B8J#jo<^&NWtqm?sm(FQ{xDUa?Q=$3b9j!0>E>4dCELn|LW;&uTBZhrcZCbc z@KeSpbD5sfUsT;OT(w)_6q9cvCjOp@Ux@cxgT5?jMh|^gIw`IerGLQ)+A$O05n&Ff zAY4y+2fmGhAi^bYTFwZu4@{YX<_I@3Hu7Fh7>v;WcepaT;TBlNAwjMq%AP8L=D=i= zjU44INcxdj*Y`K`9h5tJ06MMy(EP>RU1$fD1_q{P=d^7HRG*<9Hq2Upc%CxWI+jB@ z+5KD^Zf@&R^&vLwY>CU+im?)BTk=^+z^z8{Sta7Cr^#$J7hG7YMj4je6$N*7Tr;Z@ z7Vz%h-{7W>25KDFww;i4y>Mqix7`{4;Vj_WqR6*QoLxvVdzWo47|p!r zoiC5>gH;{pro+rCYn3mnbduy72AdFkrkF}nzli1TK`A@_N*Zn#E%6C^-#q}j%@EL{ zUQVJ;lOld>PWmxNa;ieDO2dnuhpK>t%A@}tp!4$IB4AhoS0IpoFtg++KtSUEtD>}b zw6Ha!xBk!0=BGISqgDm&?X4}04F4k%>c93pmFk-Azn0Oysv9GD@X--h2$gfdB#f;! z4bXoHD_a|e26PNK$}reWYP2N{C$auEHQob2+r(YTvbUvF&9FG9vCH09{GVkitnzjD`}? z1sI74i49RYLmLrAj*t8n5?(-@SrTm_h2YMZ3GMo{{5?|{j=G&V+}PE!4;h&2l07hYJIg^@Sx*%*stEo&>pLM7IO z;E_R3^~PFz)S>f4!gcF192dM`F?6r;q-Y;dF=!x{=T!nw0MaJ~KSB(xjVlVomdiT| zwLc3|#~N4LITFS6cGz%@fJTG!RgG$kgI0_44HUC!ZZRvzjN<78uj;KSNLr zM2?liGEVcQf)B{6*o;9uhiC*%L?LAw3|TqJNPc>&dkoP6z}V8`*?7(hw>G7amFQa za{M7%UKyJv+Rm&;JKV7C>F&!LKQc7pVaR(J&3u2mJ}~BFmW@gx=g;@bo3zWYu+rE2$NBA*O_Bg zI8sRhC*Zf@5V)v!3o_T#l}#tuFC3QAA6Ms0aq7xOKmZFh02CoN=!@#gJ*6e^#^bFz z=X(>L8ERwDm6ej5`5(Y26Z`IH{@=&)&a*CsSa!ZnQ1%dcsQjqbodw2ZP_CAGs+q)u zmO~&Mz6Zcf8)JA*_mXU##=RvlF<5`T7-xh^Pk5`7^}#>phL1g_u1!;yVJkB?wD* zIC&%6MKv_bw81<}6G!^jgR07PSh&r1tLZnLb=R%VA6>8KX+_qGrOhF9f=-e%EzsQ_ z+AZ-cB&(j?@G|X)lU{rKEc}O)_3#rVjkIEEzT~dXP<)sW(_3Gd`nLW|euc~T_g2jd z>q^ovDe-;p3;iBBY(ymlgjqLd*d_%gf*kv+0!nepHbodq*q}zVVe`dk4!JzYnBPd5 z30K26EONV8TKqA?4$wXisB(Lv5A*4Fk{bh99by@Fd$e19NLxdkAK=(u;f5dZBrh0D z?vVL`MT|}8`xWS#6xSXqu|=Q8wNY~tk{QB4lYx*6K{xWa;*ezA;eI<{uLt>`&7(1L zeRE_y(pj0rtLYL%g7t*6dnb9RB5H1V>83<=nv!OmqWJ+JnkYyt;=cL5be5rQG{4n3qt&%g3fdirzF z0CX3SZEp%p$Cjy2jQ=_cu!BdG;{A*Qtv{oHuG(U zp;%RhIT(0kv`b7iWKo$x${`iF-M`j*b+f9Z|EvYe;1L4$LVq?gR$Fa z6|wi%Ahm*ZoInUO*c^iki!U_{XccDsn!?GVi7kxCaJLBHF3KRl4p2e}_z4Q_lT2}cFqI*k^=L6a^3wr#c6 z_8erE4zabfkQl5^yGpy9RQv!4%OChPoS<_$^dkW_8N*NmJg}C90(`KcIoCK+B{F1` z;s*CjYF6U*hNcn%!EKQ)eCdFtzmg3VK=Km)Fb~G3zRc&<*jW{aHA7NdU@2i70fC%~LT4qfP?xAbQ#|r)iY2oYdn1ITmS% z@(Upri_i*og@6=wgZKCPxt-%Qh9^P50wlC6=CY6B1Np1L%YR#PjR*`qR769*7+0x11XNHa(v&`^r~`N2p+gouQH{1rP=b>d=w zTnmsfZzs|=il}mgZKf58TWm|2l^Q*U>y6@|)QDbr$ zu!{GQ>tXNbtZVOM?wD`R?N@;O_vP#`&_tY_)r&ad(q4$(7p|JTyr%`?OD&H4 z@eUTx`H++4kq5hP-VjDdN?5j~`)q`vyQIU1Osu}^{xRnZxNoVRZ(@M@jXdWItDY)< zwFe`?cg2&t?q^4?dH3y}{!KNuZ~4*I!=Bp5!j?;*Vk2oq&LHFT@si_9hm`Pq{8ysqK$Ev8{tUnREu{ zUYzw93S9_G%-ijeMD$78K^d961=9pwKN{6E-K!<70*DypRBRfmry~7NRB3HqMxL+K z!a1d^n3qXpY(|luJUx)HR`(tjJe-OwuL3YM2)9Wy); zJyhe@FO|v>sx5RqZF921R;$upol#k?vpj4o zVyzs)pEEly;>agLWlpR6PTAKPH=seU0f~sfrx9^1UL)TPv!Pxr+ zXVqMcIxn1>X`@wDrs0+$V<_pV9hVj$f^8Qc*E|tVFG8 z2<|(WJbzdzVrHp8>z~mJeHbKh(V755JxhE`s70x{8k~~3;dlm>vz^*Nt0s)#ar$+r}ndXlqVT_E^vqWp;wb)I>QiHoD7Cdl=} zp(%J^q7xTv!szo5P7&lztf|G&wO6uYf4)Xw14EZkmBAl{SAM$5yOq9VDm>VIUfQ65 zT6z3*+glD*Hm0fyYSgrFwBC|AA_Zd`V+4k11nkXAyrBZ4Ael1M1Vl1&VJIq%bGCfN zBZf}Xmrw636-`cMq>+E}6qygH0`a?G4%SsF{LBz4DT`B()`8APURoAa{( zd(lrrm%c1l9^lIGX|68pv~!$uwI&u=Q)97aeg|){`SB|yCux;oG3&Wo8=azj*mD=1 z@Nt&cNWif~ltD!z#yt00u^HF3W}b^CVdKObFkgApjN$K2g8?AURsNHc1GYK^cfF;r zO~o`8VGD18WKpH+enkA-ay8e~E?^fQsXz2Z50Bt^d|AbO?@-jwj~c8C$1(O+^BDVe zDaeL{GWIyR(O~8Bi3fviEF&m*z&aJ9O1jvEVWL{erWUg%skF-`K@Ddu;LT?(80{{a zr97=t$%~EvSn(n6#X}y={8264sbn@;z|5hL#V^`u69z*cjy)sj2UUH~R;B_P+zSKC z*EKq+R(b~|a`z~Kf1eZ1x=V@_trBo}&&m`Ry>4KIN2c@D2c}xewl*lCYVUwf9Zl<# zx#)3?f5f{6HJcI)Z)>YQ1E(D~o)Od4O{Yj8epd=Lvgpm>OI7wfE3+~;;^;WMyrz_e z0$ENInn&veEtNfu>0Jsum=88*Ou}6Q$Q|B(N0}Cdd&SyXU@-;T!U;ca?5MFfh zw`awOqInPDRWmmqwNC9p@hqvmc`|{Kk-<8_&xY^;H zhGh<+BsuP3KIV(oyxq_Uh#W2;DAnZI@QXGv|SY zhh-BS?jZ18`$&97&xGh z?YQ+7N`wt$bevg$t3cZZKzkKufLJ>ec8Cx~S)w2=wT%Czf1Bvs!iG85qGsFDS^Y=_(BRfz z?PSvjqbB}Z)4k!Pv0!vn3X2?m%;++0pR&J8OW{@2AtuF2^;2d1G@xaeXazP~m`(gD z10t_X90nfgf0WI~ARs737-Z=`Y@a`TF%agKv%<^;GeIWSmi==$i*h&$ufyD zS++t~#!I6c*BeBAQ|gPa$dw|#I_I1bUa64em_Six4v~aWHSc9 zdgje*;Ik+CMJUblKVDtJrKXn#oA&BTPH31Vt&lbPsoSv>!W`65HVt{1Yq6BwxJs4% zIXJbWF~M-&Dxz~UpZ${6Erge@AeA?_d7qG4h49i0$1uY?HdVnmQ=$+Hu`~klt)I=C zQ(~p#U{>WlKRt==GV^Q=|7QX=@4 zc^urEAnKMXkkBMR)T9XZHx?K0@hTV^6uuDJjG9RzCpo%Ck)ix_XB>;3wNN}|BCf3P zCeJsYL`UR9k9X-e+FjzKq9DLorAqB`F+;9N+o&7|>?WSHyGz)g_4Emt8@UJkz_oq+ z4CBo!Jn{mqo!L(jX_g(SF8B~!vU=fuRqQHq!5b6rAXszVCE1NJ z={e1Xm0D21F}}rE+H`WP59I-{-c|^4@5fyQA1b$k8lMZl+-gjmWpM(>wP>p-rs^T_ zx_J_Ty6V#k-c1rW-PN65>VlCkP);A-N=E?)qr9+55Jm1CPR8K2>`bTu;%%Dnz>#B7${$Q| zLK$)}YG{9Ie*?a%KA|CBM%P^AXC(ag(t97UrNxa$Z2wa&(_xncdph6;)xCXBzRN!N zgU+xH?h!8>3%B1tBCn{5;C1tH0PfC*QHG!Yy?pEwOVhrl_b>W=Q!Njgtvvp%A-sks zwvLGP!65FzDBZk$e5}8lN|Eoza2ERx%`${OOs9th>T!JO+*Ibxvu&>xNXs*77<6qx zX}aPITiFGj5#DFsyxCcWChRw(rAV0)5RVV6RR$(W77O2E#Qf?-d*?doCS)T~9D`1% z@G})~t3`(G_DI0!7A=xnA^T9K5sx3hxCDlgEA--2qntGmIxh3bk$cr!5IS`u(Zf-pNcRqmUZ$o7E`WMbs zg+5vRpIy#AAod+ov_7ERc8A^nNH)jxTn{=eysJvNN0q*C*?0zsFFQ3Hcogl+OZfan z|BNhsVY+-nqk9ME>!UZp)Qk1*pbq+vkG8$sK+NBuY28^-k@#?()=ToIKfKa%QIo0P z1eOkLE(nwDbr}=;CddpVE2Gqsr-rhQid0CE?^Ps-bbyFvb>~vY{&9*n5RqC+{H!+3 zRQAa$)|%iN_P}+L@Uo(2o?QP47DrJugiI@3bsC=tZp@*H86m39M2KdhfejA z^wKV!L3Z`2(Sd`Xu93$}y10tP!Rlyfk+F(M~% z#w**B$x&|h-jG#NX(rRGmG9}7A*Xn4=?%e8)^^7E9QbH!){D|)*OUJ6b{!hU-g-ut z5x$)d=hs8~fqWl2YKo6+^TND#i(t|)#j$_Pd?9ou`5vEk_} zhSet7!ccxoqZB>+U$sA?nEmb3D)@`48e*CXukg1#fYwE^4Zpr`S=ev ziA(H4%rQEb8(*vW-l6P_?PG) z5jcFm>5{WJDwwC|HMPQUg=m(YWQwK{b$6S=O8uKqFt-g)f!Wnr6V(=MdRe_hj%%#^U08(XI`k}$9s*RX)D zZ>Zi8u<-$}j1O)%rrVmc@maKoPj5+kSeWmykhX()@~GPLSe_X8RkV-rI7L%}(NeOm zMTJ_`q^LKIW|3V!gSSPr7Izov?AM?=h_Vj$qqXUSHJ2U$_S|C`J0Ch;3Z|2Vo5s}EdQ_s) z{jZH&o2R9T()8$!yGf=F!^n^er#@Y;IObV0;=X!0<;}-qDb~Eov+(8C|3lyq_R6qE|TYZL8=8U;U^7 zLfb0csIeG5OWn@&iyklO6L~5D>wNW65Oa8>!caUiTw%)!b&R^8sc zfrY#ce!b~Jqd5a60EeEHr~jUCiKSvcC>UOZ6XR}mtqkWyOHg01t!7J?wl$Buyxwcy zWMcc62we<%<)N=G)-j02!djdjX)r~6G`%7iJ)zhVZ1;dS*(%UE_W%*s zstNNEc5ERypM>lOtk6vNQCXQi6b^Z5w@+|4zj@uxP`L*TmJXrLHmp}@OVT%p-l;0O zALj}}+2vWg;G;N8qs4-yt$OoM9JfLI5cX^|!dJvG@{m%ZM9eHVLm(kQ(J>V}UuF`` zGII8mgGfdKo#bFak`VNRO_j=`U-M4cq%M2{0%l_1j0YgG1==#AniF{`@b{8%Sr&@r zj>OHJC)7}~o0IS~`}jJKAXs_<|2F@NqBDHqQ8mO6md<4*BeF9c71D z2-o=22C+vL!XPeAd!c0#XfhPh7A322otp^=`K)<997+I>%*zA_Y>j0e(#vN5O zh9x%G{c3l*d^h){ePYu4(9Tc6r3|w1*Yp_WnS_wGiX~Kd?WIkUbrInG2Qg|KL zPzmpe%faN&_~D`gibl8^iLuf_T~Hxi6J~4ZrQi zK+dBCtgTetyFa3}yqu|-ole)ESD!~ynV;|3 z+h1S|f3D*>LUT!j9aQ@zV8xU%`&r@lC3S|QP*FxKQY7-w;ww4+l#;@;$G-s0JC0B= z253`F>DDaOZpj-e$%A!Esz zG$E?GXPvGL{TsjB6XJ8nxoGY0p=_FJQxH>&_`RB34rdeO=>oBj_8A}2F-?Xw9RQIiQ*2`DszZbE<@hb#Ub$3m@=x#)^!zfFps zCoIlFAV9;TdC}=Fi)Q7Sxls@&=*qz*mirqm?mjW2t2h{oUUlBG`cS4R#qXUU3wdnR z;rz8rLVb|-s$!^!>I1KT_5!1C^&&>>J#J6wJg-3OA~zb-@Dgo!rlqh%kgXg111OFg(kQqLc4512SleJu`{dMj_z zc}HzCM`WX-qGZY=vO7GNK6;2NlLBzOo=vfY>$&pbQlb8|Yd=fHeJY_0W7|bemE7fP zOm}h=BQa7#IL{X^3NmyEey3dcKin?KIGsJQxXz~w%99s%PWSlcNy3Gg%TVqj;}$6* zqTV2M1{{f(4?QD`|Kg3|6|W%aiax@0#0%>>p7|2`jYkLftFt@b1@I0xsvld{dQB)C zme~g#enZ;IQP&egE-COEIBkyL!Uv}FnriK&`V1;{`6yx6M)}EJtIb*UqzaCmvUd7gHHf(uBm9BxAlrsX5k-z0w=%&-NP8SvDk$mJ32fxERisyqsc_tUXpA!C=v4%YQPA~D< z681a}Q%j>zvd0p_0gpc&SNtbxc-OQ*n5}K;)|0ltFxz{&%E-@~%W=IbPU3D!*GCr zx_>0}KTy5@xr+Y34GI781XljJX7c}PXawc|b5zj$&y>N*J5vu$C@@^(unHn*2sBV~ zsGmVWNWq`7Wrq~2?+33pA@fh-vkWac58Vycwk6MBO(3ZSNihNzU1Vmduqml+QLC{r z0)6s7A_g_%WPs>C?yg*~TA#BH{iZta&z|LNDDr043^Kotav2|j(zQ;cU%d_e-zMy0z*gRkmKy`CD9lXZVKqyl-Z(p(4&8`T@WG;i1lpu2Jgbg zG$#5TY|#;<51eWvl0D6dnnMKuvmU7-X|EJ_ttw!*eq7%R{mHk7_+ME1x%ZCb#|>D; z*?b=4%3BQ*4Y@4nY5bmsrwtOq!h~9XXTzAw8367%CL-oeuZIX#$ik!u4Bmn>8R2MShy;W1k_JwExI{VFp}p`3TgP5LM{dN3U@j;q;^sh= zr7+ixSZl+Mk|y#Mq^IHZd;>?NV|Y9wj8#|P|ESt*hsZFJ|(MfBU6Q#rXHw#!#dDI^3l=zEEF!GqTli%hjuv>51a zOP=%OGo*0wtC2$y{^YKC4)i+wg1j_Te60?FQ^fDs6n+m2-JH=o$e3wr}4nZr|@5=28WU{JTfxP>c_A=Kt@ne^Sv<`wstz^xF>OM-%PQVSM z3E!sui9B3dmeYgz3w~xM2H+!^LHRW;F*-*&79kP<-&@1)Y`G=|=|+mPyvRJP4s`0$ zC3Rfx(j|7Becl0r31a}6z^M8m5tLr$!lqp|TJ<=5jxGZexFaCN2yG;>9X?S*2ftK& zp%*0=pnVl8r6U19tlk3l%FsM0E)A* z9+cZ6Pg^E%%75+Oh3wZxYlek+dswayFD>JzCpl71XJD}RKheYKjk04pgA*~1Nyeo^ zhemFi&m=bJ9H+x|rTR{?l(la{q7O=X(abne4~%nAq^InnAV;82!S(}f1S);jiq z$^>vln@SW$FTSD&*d4CJwZ+;dPG^QnQ8mim4xvS;>3-&v`0s^j&yqxunZaTfQr=D>>fcQ)9g(0dBL*RV_3BZw@A7BgEA*%Nu z|M&$E?Ei$6qVeb6Lj^Zrz^H2o%nMY-IRBX?<~KtLtG#60@(-X7xO|~ALR9Azu(7ItAZT#EPXS{F6Z>vq2uou)tJj z8ldz8z9$H?7&la~s%I9YwwHit+5Po!U-=p6`C~-v2SRZ!2 z>pS02v+Ry5b`Ba})!qnm_&{rj2uTor!`mbsSQ`L@mkzPup|m0^HsSjHlr&KB<&3mw z<0>x)h`d>e1|8>|)*7tIN{^H`0;VGDG<9Y;I_Yt?2HfDO;ZOQz3f*zm27Ilosz;Uv zJuTm(e>1=|sIXwQGRZxG58Oj8MO~Z6Gof(0@n&ET2)Q)@;^_`7f5S(0;w)BTO;66DNj{@8}e}fibgE-VnlL6~8&sU|26_FZf6eW=UGBk9c5<4m0hazF0E4v*8ofxKDuq}64yF&(?sH;+1uEVlpC*rG< zB4_zD7ObG+-ms;WEmwRo!rys5T%bH!`jh>sTmn979&$Nhhfpq@oMoztKr?1RO;azD zsu~jy$yi?p{wjTjFb97fNz=b{9^g`Q9}afshK4%8$&cxe?AlgfW-!-TlN$~YPFf>z zp3{h{6S6%t1szr0&81|fCLVu?ELeV)tXMiUrAs({*2PRBy{(PzeClhB zn^eOcV*s-4>m=#f^>t0te}Wz~VK12Td|;NHJaOkYg~v61h)IP^K$R@q)=;^=f#WV8 z3x#f#C66r1Jt?`mEog6s)ea!E@-HIs?j(-dt=7A6gJkKVR$u>C=9-pOdfQY~Fv@C*D zT=Xy_BHh&Bn`w9c447~-N8mI@{VcYkq6h(AJ%e(=8|lsQ`Qq$k;1|>M;tH7Ic1@I% zvrK4;^2cR5CCKGO>CyDENqzlo3pM{r9pL;WTEf#^r6rlsvQ{wyMsZ4=K5a@341T)T z8?~*d0NgCApuQ;rUTtGnmA72wX=Emrmw%yptim%oS*)b9Vy3DoRfz~#EqiK?61JrR zmV;383~G2`^0wCD&7|3b-0?!(_?ENLam!bKBAq`nK@~T(`eCgkc*~E_Olu?{ zC8l&prQZygqrQq%;vB(p%bheFmNXSI=xK_#K+w{ljZHMCY{*L`9+>7-n<$6zS0)Y4 zB(9L;a`Ew0WRMUe$-Ea7HCR;>7OHRlap7iY99&!xT$6^>ZXoHD8*8C&loz!^w_ry= zvmH?LU*6zS=vuf^zbA4)z$v#@H^37~cKUOhRM|U$$6J_QBM@=?pf%DkUW^uDUb*sY zAO+-%YhLjr7NSHye=p=q7t`WLYcsj*CP;BmX*8uh^&uYv`|xNOaf$r#0yWOBq9`3G zz?o@eOToI<0Wmnr|DBECCFiGxI;!U8t@%(G5+-N&1|U6h&>1HT;mcIy!+PE{-B3rt zO!NH{M&w6pD*7SU-E4CAU8Vl#07Y+JY_CQS*G|N6h?cm&+PQ6Mc_w-Z0{a2l$8tve zfpI=(0U}_RELIel1}_so^!=Cu!&;`%`4ZE_AXaqp#vvbORaFI#4yd*x$=4tv`}K`w zke~_?{I~E#7}jqyw_k_ISHtjW()gZNp;h_6K64e|KOpw7!O-w$J^tk+qE$2LvzOg1KM>NH$sdS`Ti{gxC z9Z$?_kDBC99;n&K(|E8pMCMV9u83)tQ=VIlWyL4gCpxZ&>(^=V7Bm8HSU)&5jOY*%@EHVMr^o>k()%3cos|4R65=-eFX*f(XG4L0^X z>jxjzaD`jcw22+j(AI6VOP1dbfMtt%S&FJil`%HOnvFh^OK`&FJk<)5THyyR8@ss| z9Np5!ThZg?UNv@^0nJXW0ppqS%3m3k3++11$*tkq&=`vEpe#_V1G~k9s%v6C+Nb95 zCf#ah)w5142H2=3R)v2hTrc>%XwVoETkmwsN6zc>zcHi2$2ULK@7tf4VoK))DL2U9 z)v&Ge9Tna>Dp^GG9YZQ7M%X8M-_8F`$J(vXQ%|vLS(H?;S;NBH6$;_dvAf&6uk(r1 zMD_Gd{nif8DcPt=GLd*2`J0gJ{5@?dH}Ndzesz>AWx#E?X#!5XWF)H+qP}n{|U!ZP8pq^*7>z8m4LX& zx5^@)6s0Xm6wJiKgJbIg2d$F>mV<_5lhrY9tI}vWuwJ*p?nF{^z|`8){XI{)MN`Nn zGAJ3kXIIMeJm4%NQn@ve)V5HXF(z>MRN87( zAuB$+bF0`czf1*U^Yx)v|9C;e`Or4o6DzYej8vVg=DVbDqo}YV*UI~<0C$W>WTwmv zN=8dYhQcBm-aytht#80Qw!*(oQ#i~qh(gASuZi&*Zaq5oTBkedDzR`=>ttdPpk;ZA zQTL#+GWv1GCxKQjy4uvBzBZxEP4s6cJAR_um3Fm%{^Nd?j(gx~@v~f(-KZ{)%*^4s#Xa58F8zhKca|Bt zqH&L0PZ7Q{a1ZS)I*VqF($aC4q1Or@iXsH&`b&LtCr$uV^E#i_982A1a=3ZI*e9 zSkvRP>T$yFKs~lpW$9LAi*%YSJtkF!+HH>KaMwi|mY4Y7b1vDe2_nSIi)|n}jjeud zLe5lzZqnqmBLSZMuLx#%B5s`@>Mj{Pey^>Yc%lG2`J3?o*Z;17PI!Sg$sUTr6t9V7 zD+>tQ!mmg{6svPQb4syCe2^;zXwWdxC7*#0Jo&#?0emNpIi-mYK%(^&BX)EC5Ag0M zjy|YI?HL_003x1Jh6_$THlrMwQw8kO13@S)p_DPU7E9(})g;EKIVJ zmkbk&%9joc*2eu^z9Moxq?t`{79cjlY5Pr|5U7vD6^zqQtc-Cqh_p6#v#JyJrRG|H zQ;*8ZD;g(Stmf=Mc;XqR-@y zQC4-5^S;t_oBUOmAX%<83-HIYBjZqCd?H0?711~oC5%y{7f7UEh1@oC>{o>pKh%4?Y zkzb4Ax`#luul`CrhuqH-x6Ai0_g6?3U#~ALkN{s^>;psMZW}X7mNV_=@0T|Un%r)` z;pCWAwVgW-#J=u-^T{{K)jJ@*YH^vs0y4!2W1cuWj-;L7-Sz%U57g};3>42WNoE!) zbh-rw9}I^gO$`+Q|3jQO^JoGwE>!!pr1%=F`8lZdQ}VjvXyVFBv!jHk-*1f;?AjE# z5nn62${Ui$mYE6V%Ff1;jsVp-qTB)qK$7Ad=msbFqk9>1{L3v6d!DaR`S-8EX8Aea z+=6R+rB~dX6fQ1@ConS5?HU?h2gZ4}6{F)>8OA z_iFLWtX;-fIy1hVo0R3*MNr2P8Z~{w>HMC05uqmXfESPKgQn-D=DwE`(n)Pf$P!fr^p&!SWVq5xRy~E1zWD=0B?g zswCAOwkLRAAI(gcC`-E>|5`Jz>*uLK^%^_Cg;TUVZlVA^f4l)famF=D#?u(bs+Qbt zZ|7u_`_`zOdVv$Jip@_w?3bV?`nMaUysqcE84o|6@!_i zns~?T1j1a8d1*3|R``ir@I|-=l3VOraR>C)o#Q*pX5KA?SLOmY^^Z%YR$EpC2luxt z7c9}R&<)uRrw{jqF>_ojl7j$cJ|!+lGM3c%OgHu+7dhOG`VGY~cS7e2F>VjaXbF>F zmFm<%fzQaQitL|Z8BRj##X7nL>6G|2+cl8=lV8ogINn7>O^Ui)u-B438(W|&m-4-) z!R&{y)#w|@i6aME8cL*d#H~t>gl1}-aTR4mY(z+jiLixktMjEHl)E6hhd{P60ynmY zrFJvCP(jZc5)&@J`zY?=z>iRi>6?jT^CAE_oP41@vJGYNG&q%i;wJ*nfa}w!gqbSZ zVxXJPsv?o4*`q@bUE^)_q+AXJh<@?EMm^qvH~6Dg38p1qNXgk1K)F=vwhcfQmpC%X z0=O7`DV7QPw=x1ATSxAQU(8!dANMHFrj<%#rh)#*A3vc{p8EH91R$c#qPFbrt$G4qlCdsup5Z>RAgOifmc5_-U zx=vGb@hmI`$`^`s;T;>H;d_*S|fkOs5 zzbeM2S7=E*TjdiAxiuft1@3q$h4p|$TYyB-0}yD1d27L2umo{u#ec!>*C4bdq?`Yy z3)&U2pcy`4h?+;*h-g%up-pIahv=L_n+MzQb5@%nBj?+fI&sn!)w`EF!Rks#{f6_@ z=%r22?TV;>HOrV*v)9v|`h1nd9aA%irfLB-q0s9e&gV_4RvF^P@IZBUoTmbA^q?$Q!#p7r_a9YP;}SQD?QB{sJ+p28*XGIg%( zWY51?32#R#b(4l)FG7<|&0vS>?6S~OE=R45#hf>+R3G?TjhK$SOPBddcpxBeMl$$}oY zn`4fpdcpNL!7Sc)BJaM#=Uf+;zbdR;e>SAy6|}z)X!<`Pk+a=u0v-3a4Dv~Ox@Xok z-xHi8EV0ana*5VLj>@Vp*_@3I{laGxYCdRskN?}o2T}5l)D#GBwwCk*or`~KBu}Kh zlB=(SC}=j4;MtU4i1&B)Tp%+?^v1~?il=aMRUK$y#jDxE8`8RllYPw`>->ip4TpPr zNJcO|X#od6bYpl0FqNXDCUkS8KzrpV^*r!%j{>YjoIjWhr_-LJit>=|UKDfUt z@{JabuZ?e0yH4MD|2ZSyJcMT&_e17^`tcC^za{hh?~T6yNzVG8Ex!LIX#I!qqEq8l z3u_sL#~(D`qy|DZqSV2v*s?mtE@n6wh;q%1h*T#|P!#{1-Lw zVEw?Dent3Aby&mS04CQhC^E%IE8HZ<^Lmn~#u{ z_!s^pp&dS8ho?w48P^RVG7%OPVmT&>FxD>^rG-_A1fAUHSl0#2C1qs&5KcEEglZF+wHihy zk#DJMag3HSvQlGU-2Z7z;Iphbg=4H5;z|qFIzC+HdN65RXDz{?YUF4rLRGOgWje*5 z4xMhju_J7w)r{*yy&;y*WXcWZ5LlhI8YX*vLMXR*0j);nWyQx}4bs+ug-)nQ zw?9DH%)5JqG}_~acu|%}32)mr z9^328rZ)AK`?q1%IWM9#UoYHM0kl+u+D$jXvBo7&}ru~r90K3QY z7kV<;;}c`q`h?%Cl_`+FV9nEH#ggm2%WwfuPy^zNhtLQSN(g3B(uc0?qRaVzgC;8e ziZWHwDegB-0wHchU)O|=-X6FyvLM9UgGGhB0|Okw}Z)bdsme<2AX z`3OtbbGpZ}^%4x|e##@~eCC>Jj0{+f|D)Pa5UWpzCi)TMF3AkA*OWCZFk`$7Chm*gWVCG80 z>UxEy!SxnBbojy$_Qn!FB0X2v2=r}J9kyihQd|`SHVC^N(5@7Csa+cvsvMqfQFJ!yTZ9}d43mdOdn<&yor!mB#5Cr2* zkj4aEG<#i#?@ilr1gA3UoUbQ7dDS2z0}VrL)G$9s8P8%@6Sr(^ZS9rTA?P0uVwP8& zF>33A^*cnceFvL0C4=IKP}ZWD#XHq9(x1BgCK0I+M5vZpF&NiC)+kP6sB9A3It`^u|^clGmOO7Zu`hQ_1Hvg)gAsDWk%XEa7Z{?I9+eT|p%s-5C9TFfyWCi`Do zY+#21U!0E`up0lf2SkQ;WycfDFe$4lZRzPIW9rGxXGR$+d#mm4Nw))P`H zQ|a*QvBF+418GL2*&+S`F)o6U*AsB{_<#+-^jLYH6!UY{AU*GZ&T>d}%D{g`!u}ib zvp?Y+#Fvx7H=ClA)Q2r!F10?uc&Z>+nQsq@5u&@8;i|3Xm)m<7DSg!tAO7r^yCQ4j ze)m5iS(ieZ(JI)M83TG&xS0nhjAD&2pqq-hCT@$tpO#Q$6QCfuY-k&;kBr-)c(ERY zg1~h`I%q@>+5`o;!NEplKr9hwSkW&=ub<~uk@~<%+`FzI{er%A4>)5C&F*s8i;km) zEgvp@NLFurP&M~aVo}uyV-<4_RG&m^yszWDq#Sx33|0A;Z3p60uwg-o9c9F?~rO+vGi?koT=~XX;DhY_~4Z2Bj*m-XIfvI-wMcHVl5K-_2EGGdTQ( zY2g)|k+~H6`gV&}km!McWdEP(o1Fej*7U!zfs`E$Y@G~@{)$c79SNZE}mFI@19NV3(@e)_W#5eCMKCRE~ z$6VX)AJeZ>&*auj^ZYGc&FGWFiudm(<(Ny-zTjj^ zrUuu2J|Mf3x_py{?E-e2=ibmPK4nF}%DujHdB0^eziBI73m)+>zm)oYUlDp{sXv-K zzVY9_#58>$j2ONShTC82Z@#MWe0x3T-uN6Yyxl*#y>RDmdXZTVss%Zwko~elxP9*8 z=&%wKV!`BHSWgr7i%XehG+Qxc(3U#5;Z2Tvh3X5d<@4w7b_(Y|nc=QqEqH14O94Tm zP@gLy`Gi-}SNVhlba6`>d1kc@z=Bk!!KK14lJ%t#V~4fE`8hGkjOG9r)}=W{zD%KU z7R}t*)_@9m;w*YX8d3ux9p)um=C+6=SSEC~$bjBy^=J&JA*9)qS=&Ea=_>Qks!nE! z2yD#*5#k%>5&?O!q^BipgcE4x_{LQh*6LdAQ8jK23rXe$Gz+-e`MR47LP7U274{7} z5(F8CtRat@YvPrXym+!KCer{S{i2!ZSn)w zCs)?2Mp_X^^h%Cth@#_D9{EzCKEyOTJ=_hf$ zJR)Q=X&aNnTXWZn!Hv0f6Uh5T(P#u{tk@@gB|_A&hWf7#f|!8?(m|P&Qub%i{r0|I z;>^~^&06_BYsP(tC*gcJhQMB{3r3om*Lqe&1|zFJQEuBh7@mI&wT%82egHkzA(*J$f;n_H#o0Y4 zG@5K5;FA)zCjye9kR3N>S2Mu_{hf2&@&w};NtQVZFTM1b{9G4POqC;-)N0!V^AoAb z={N*M(w< zwt&3zPGR)vsp)cqk* zvq6+}<>)yG@xwWC5R()$FtkgrWaz^#4cpTp5mie2IZD!+o>rUO5CoS|G%NmD@*UCN z+BK=_E^RW1v2#h5nc-DR^bl^CJ3d=1@Ofk?GouCakLXl^JR_#ZCS5EAW2I7rGBTy_ zisE}jq6kSc+DK?i@lUa?wV1c}yn@dZ_AZS0$9J-(I%j?8P7Ed)Uf7{;1LbQ(WR(EM zQyvGdeKNQyV#_b+WK5Q=y|bfQ(Q@$UFP)sMfaO&OCWT|`mGEKK_0`&OQubv`4zKkq zs0B$mpOq79Tb8gOo7k|VvJAP($91xZ*@4e-%|*nf=PMs8zD`!+_T)T=DR8L)Nzy-RhyRSUwa$QwHsfewHrk9`4#>o)}MVq)Y4SLOVypK9jPzGh~$9~Sdki4xAD)k2OEksRCkhq7~UA2d$xPTa_pIKb7o_l9X)GIOm&rx+IU6u`oVo|uUl z=zK=}L@cS(;k;y#3>XeUs)3t6X~A`s#G4-I3AH5xoE70>xHm^^RLiKNZ}o~>Y_xF?s@T_*2xOqTBJUNYPZ>H{+XI8lsg0PZ05`s1KyZ7OJ-#_f4a9P z0IJO)E&qi&(xWY28vm!GIhyxFM}r*~FY&v8xyA%jdl-O=1;o4wMT8Tef&$!MS{J?)z<&%}AC0dm>3V?Nv^lq11>D zj55_Ua#AgwCX^ro*+NQ;x^11aQzi4G)dRal`>c6=0>cbs$gI{l!U`#m6Vs`BJl`(= z1&~J@iyoLt3)a78$XhFI0BZ%mOT8RlGX6Mu2l$PT&ElpAW<`kOXfs%@S3$O5xI{r& z9X%(*Zr6h8Y@x)^q)V0H7(HvEqTP4F@6fiM*Z0>mntJlf**Q`r(OFGJRgH=LsLGaT z;#@>Pzk#uJN&=6jJ%%iQa3P?@O*4GaCDP~K?O8GZDuL9YQ2{{6g)T~g99mrO^g7^b zclI>?=Q&PhF;UABe4eAx@(I9@mH|<=hB&ry#W0^;#gdqbXm7_~=j_2Ko3T`scCQ(2 zEr_{JJZcqO963oqF}pc9-f?<%(Kc$Uq6C0`_H~l+-dBC2ZNa4fxj`tKui(O(_~U@6p$K&l#W)>KGPku&fG5Y^A(g2<@d{ma z5Q&nJDf;v@7MPIasd@@?pd)rTn^U;b61Tbpy%sk0Q1Y?aYbat(F~?i>8yD3p-;5tv zP9t7IN+@^`2W=}ZWUPqnw~(5YK=BEV3Y$6#=!@A@hAaG*7)vu}x29xqBrtPvA@NvD zTz=rc4T(oujs;N7fJ-FbkV)MK@4?IpM}`1ULt-l^t(e@63^6kUI4C4(%Ki>jL-OI| z6pK+O3ylY@*QqdtdYmQYV`RJ;xaj+Y+1P9%uu!%v*(yWZG>fHAxvx>gWZ|JJ@p~*| zq$udH1}MDh;4>j4_8=a$?jGAqTG-X{x~0NI44#Ia^!1ELVIe< zvRVs$EClBhITg|(uUa%!vF+igmU+1UDUQ@oVhd(2IE(M*LA|_+iyI`6jljua5Xl5e zyUM&fKWDn4nxg1VIl=MNNT0b*CAwA_O2@G+?l-=z5zJC#FJnL9nx}@=X6_KRDtDgb zm=Ju0p`s(PxX`OT2;L+;UJknBzYXxQOTk##?b4Wp89a}$@-V5kA!*c%Zz19{kvh}v zZIb35i*L~zhvYCzN~K`ZKcOZ{%;^tdOYuAarpeQNrFbV8-gCH{^QMe8vk!x1HC=s4 zJ}4CeHEdoqe{is_B&e@YtHRJp)=B=(T3czmo@4{uz*RwB@CZG6i%|u`5@(Nm6bYN zF$x!Zu43rhC7mi?aHcK1uzcXgi<28s(k&Z0>c_a*gM_aNfWtZ{L+a6P%{*w9vpri_ z7sl!?Hh^54?cE^wYWsux1%~|GdrygayqMUb_(u4Q zt^Z`55%rtf{MVGS9bDDXvBk)N84n*;NA%-u3-h zDdqL3&X3E(=dw7V5%N0PgJ0Q4);)k>mi{5Hq*yfZnk= z5vT9Lf5g)xfMQ+a2o`zAk@Zdz6eAf@v`7l03Sf{dX!*+sMJR&?f)ES>P>(Da-4|q& z4?2F!u&w2tqOcbI;hmy;M}0T;N1i?;6_)n$dA&9EaX4TEW~j`hcJapA&MY_$*pvUiRQazk0_dJuvpzUPqiy0;3W} z_nU$bxRkDObq8cE%*ehO)kg+NJ%=2sV-)ofwMHL!#xOS8ttU+%_87Pk#-S=2Q3Dhk zy`v{a`#XBG7)GmEtrmfHUkHsT2d`f=WyN+~ZPL=PJc_mU3l-y;Uxz+?Q@8_+aF~)~ zE7MM}B_C*f#{&Duk11n)cQ+IV`=rQwrc-~@SB|x?*EL#<92oAs(_m7@PQ8fk-BXnI z8JcS_njO2RyipHXi$d5ma*Rfn?c47N{nh^-_Uf+tLz*U76elLUz14pFjc-kbOr56U zGS#Gx!oj?f*RUM#=udJlrnwhMO6|SQ5j26PTKRPR4N>_pxf#rzn+!)#Kc}Xsd*al4 zB#_kscWdmOLU!Xbbj&anJj{_KN12|aMTwp6*CaF729>Qam@A%pa9HbvEXfN-67Gnl z1X@^ngWV4hJw=CP_HrTL+gsKdYo2C+*FDr?DMz7ql=7n6*|6E-%~)nG#ygG%y*f4M zIph>QqMXOx5q?2i=%J$ox^7CCfm^AfE_zPHb>G_F;aOJOq2js2zZ-wm+0hzuYPtP` zcggn^1ssR>CEztOE)J`II2Ix3qjDjnlxqiH4nDmLtPfw#gWeP9-!kH#EZ@o)zi;0J zO*erpj3OpLwP5|kvLnV4;0?s`6w*k|W@J)CQ(r*ubmgSZrfJI<1e4M`eT-3s#vUZr zg4osbc!{MRmRt*5U8Ar)5cq<+JeaQyr+4W7fhkvO#{^mJ(9|`x((w=MhIIPynkmJO zoPE88(%1p@Vm~QbEF(9stTw`=C0I+*>K(i0-JVVjM3IJyi17xwE8rdDun^mit~^4$ zSF^h>jWOjIda4yneXP>OM+4K=iJ5!Adub#%Gd7x?2ya(+vlMxXUGj=07*4u1Kk^=#gHD=G?JH3`0+wJy|XU^+W|8XK{k@1D9)4*Rm#x=e@ z@-OuI8>ES0Irpp22&sqI?7$v@|Yj9Fo@#^=gto2Upp$@7}k}4JMEuQJlBmDm{}#;d|G*H^@a}7-N2qHMkD8>n=}U*KWFx*XQc)U+4qP0@nS~R84yo0ZugH0rt3Z z;wdnDz**1)e>ot~{LKfI{7x-yA0yPWP{y4ExZ!9CFoeNO1;q(){KBLRN5x0})Iy}~ zv|#U}NGBH1PRH^~wHHQj!+t6cW64%3 z10Y%)o&q!&gydGJgpCbWrywsLPjv104Uj%8;Hu?uw^&n_F?@h9!U|OH0KJnJhC*)}3~V%+sWw6Vi6- zCLP}gRmHe#gX*LLQUi0Kq&?WE{doo}tu>s~Y((UXHp~ZO&JgLvRWSiZ!Sk+70fa170f;0Fxh4QxG#SQQeQ)CBiUJe%L?BXD# zJ{71X)pd{Z1tFp7`HV_Pxw($LfD4@Fq2z!ys{Az*L>B*L?R(5U|L4+YBoEb;B-xmE zP02_OWlC=cnl?8KQ|4hBD|6>gTRbN5K*!O!^b1+w=;J)D3vZ&WQ5VeeGK=Bz>%OCg zw0w$gVGOMj>DQ*$JWEcRV@!w8`B5IE9^(tIgwq<%(V68#?%EIqh-F2B zvDBOgy{81{CeGVwWzK%Zn~zCXqHmnv?DAKG)y;CAQ489^H$8-e&xLE(p$|7^yc!&F#n@c>su{l|)rOg8Jxx1>5QO$uD`=v^;%8OI#7| zo~0y#2f#0!`P;{&X-i%_B5cv0AiB|U_=AT}#TwYo+B_COsB*4crJWU?xk|w7Ya+(d zM(crQk3i1|*9@CyaJ&7ZTGQ3}7Ju}^&|)8($ipzu%M9dQtc)9jMMRUEli??CIO`dm zb_nTcwTGN*Z-cGrG<*M`wm0ANzrlc?xm2%&p(=$MV1-CsSq%d!ID;gxi+v%7PVoFn z_IvS34DlSo%|j939on#*DT_{V zX(kbeh=oZaq}T}zfZ1QrBr*Yp?qLOF$z>MpNGkkofndIV*Fi|FmMyOFJr-gY(1s1c zA(+M86j1ZuK>wNgdsX#MTYgeL-j8dd@c*0CFKzcf68-;_EC>t85i|VvT(XQ*7_b1e z_wBMQ)ylX=o4pOgjw0wV95`&}4QMS);heIBN_4Q(?l0~IdWGgI=@BX5Yp3^i?Ozcy z5;4Rt_yt(sSdbdHk_28=otw(MBNUoW2-#UX+t^Cjn%e!3 z5LGJa{FmJUPyIvqWs@>!_l?#9@R;A8e=K|>=zM`+Eesv+NkhbXpiA-uZO9iX9&>EU z%MRR)7{;}DuyK0M9Xm5b1{-Ip=r#PT6}Xq^ha7)a=n6zP@;6 zdlr^0y)-hK3kD*IZ#2CU$}-Zr*kxM`i>}=%&Bq_ROUKi)ws!^uR-HY1skE+(&S#8@ zx?>0p%UgW-hidKHLZf@3EptdNc<{d^7T2MrR^8gCQ>WPGntl0l&Yi5oT6a+m69u%J~xH@SG@ z3=VrIIrWeR>-Jb7KHjQ_O=qa)+(zUnqs+$2lI$`n=(%x{Ll;y&iB{pYsyJt%7)neI zvjQoQsipfGVpPHdf9y^sn3vFXKZ=Elgii4mWxe&71%o1QMUB<*f`OJ#S4~bVNcBr@ zDVP#KIO8BVkDP53MQQ)-LaVTfh%&Uk;0&q3q!+Oi@?x@N6mFaW(fi*ck9uokTYd$F z(#0OJ)lMeUi;*vO2+Yc#3>GR$KQybp>34|CxfNqfIm_$(Ni2Our=`*r4b1CAET=$N zTnJeNu;?lgmW>j~Od_P!`KQ&TJz?UE)f62ZhZOm%%dpuyiO+9P#3{(|T5w|LN@RM< z#TQ!G4ZbCWy&(@+rbRzfpe#Q8W6q42Nx*xcfNKi|U|a)Oc#6ycbVT9Z5jaD}(F~#O zCv^FH*sOuX3&b z0u(&*9#8!M3jPtp>%&Xp=Menz^DFr^3l9%WOl^Q5?+^z)s?Tal3K26g3JuB?@4 zS;}S0FD$T5X=$a^Zho$)m8{sfKJBs{FNve{R?FMs6Fw=R(mWc?&|pD&-K2yd3&; zm9XqXKFCVpLp-RXxItsJiL~SS%B!&W`G*f5E5qi-1+SA(2u|{w0Pj@%rg@Uy*NjpGWcf@itzO?{FVa>Jtg?TUpmblXLpTEqh@a^CRN| z<;_?3EL-9>1R4Ijb%9R&HYVDa;E~SzgQ`^T;kLT)D-u~w{5Ar4`t7CJv0@v-P5170 zT;Pl6n}EOhhRQEW?QqqK*JpFs7y1tCgADIm1MpA;*kXLKiS-&D_Ko%Ej{c^6Z0Gfn zJA3y2U@QHmW%Aa);R9}nv8Jw? z9wMTJMUbwvx`ZhgpoJvWH;IE#l*_Y~$-7?=Ht2*_Sy8FU>mORKZGRBCB6!%57GGw{ zh?Cn4Zwt4~CNj1cYfq@Hy1mp!`SYyO@+ft71RJYC&DTkr$i~nnbz{x|%XLn}M|JzZ zTZ?OTFKI`0R}SJ}Sn2C$eUssR&Xe#^OM`utk1{UP>+;R!I$W5!ph5e)9vZo%8;G?D z%2+ydf=YRnvjfWDC}w&_4~V3$CR!lI?^BUYqL!SRXM_x%5avz18y&>h;gZ|90J5~a zn!$xEu_!S^Gf_hm2W+|xbPB7I`N>~nEQT)3}S>(gF*o-PQqGeCK?$4p7R@b5yl|TB?o6ZO%0S4okmfwF8VR1xeUo$ zsSdsC(At}LyA9LwnmLFhckijevTBi^t$}(Ai=th4nTxfX_;dejt+*#Uszr|mQf!jA zm7wu~{Aarfs^}ihWayf>A){bwZbGhhkmGsG2V7C;V14&!sG}mkLg41TwRM}Dh{~e5 z)ozq1nj6>Ej75kQ0detx%v+((lH>WS>Zu z?$rsRFsA0LOKNaB_V8woxwRB?KS&SiO(R!ES7xWH3diqsrxo7VMMJRLP-`W~h_^+P z^oyR6X;w7#IRB4|_j5Em%X4#E^$HTowRI9Gf(05^{Iti)Uy-rGCSueacYv4w$Y3oyhrb|&YesM(7=jNlfIV2sb)3nuKv$d!RTRqex^+m1% zQ5N)dlc}A*^HT>`9Y@$CP=ArF54JB){A|f}rmW?=CxX(7e@JjOGX_&oqIG``aRktd8G&0RgC!Y zk}kinW01BJ-b~XU{!|>wg^daO*QFR`T>P_8Mtx~&XlP85iLQVI*?-f8XFE0HUMna* z#VDfqh5?uM$jV|oC3{c;?YPKNvfCElJ4FlOh;{D6d7RkCJR2(1fs-z8R$O0@4=VK< zvzy~xi+__`!|97sUZNu9p~~~dQ8@P_msFoF^DzBr3uL^H9t~C$TS0do&w#W>nTixh(HqG^X}T8$)_g z?h(w2RplS1e%U`u_?P-pLCcy_SS6vJ0vQ%%@9_gd+|ZJFn6|JeVJ#CUtfuNkmI>uR zOZLC1kElI>hu&!F_R5lKu`2tm{@Vp`B@_XF%L2^6nfc5pD#O|v&e72kQL>$Gh9J%j zWw8=NrO2RN0`sHfeUDu=s+MP(Qe1B54*V zIfn>JjQ%Fma*myk)G4d7);rb42@N8rsd&RKWT*o55=UtjD#Gvrb?QMxili}40$kgY zcp2Q@nl;A24Q-bYjR=dmUhY!Was{I8FiZys{31<)b@o6iY3DM|No6V&Kk;mPPfw=? zU9QbBbN^CVw1hurgpspLiJ>JOP11ofD#d3cS%x{4L$UaBuvl3=Mm~#CUO}Z2UYB$Wth5R3Q?bFRgb4~ur_AM)b}qty zrfyt1*vI&ly=#yqf--+J#gEFg$k~YNG3RXs(=xMKw3ajVEB+O)(7_?n$zfp3-3d)? zT}m9O;eI!4gK=6GjuSk7egOjx! zY7tx;hS`B)B0$jq`?cC$g?)|t&l%$)>1|86GFa8QjFGLomh)b*M6dAeW0kE!hv^o?4nF*oWNO^j~8j zG0#F@;>+Wh?8gCiH)(@dXvUu*A=uLiMi}G0Gd+8=onBkxzc3a%evKu<>0j*~3Tis7 z(^M4l+jw0konN-+(CbJcT9>v^a`CYeSrI+rgof}&jYLkl5cE%J5?LXoA@=8pfC-B& zatr(cHtVb*D9RnAI(ia}e?a|Hh&vf7|E6&I51GeCM^ewWJE)6##DQl}rT*}9AyQK- zqS&%Wv<7XgpCTpdT{BB1anVQ=*R6asT1)q$RuVdlM%6+~YzYvMzONEl`B%+E9r*~7 zjoH{O9)+lp4aOz`qs~Wh;pBerb@c9EtFOaS*S?aMn4=sigkXCJKCO=SQQ;_Bqi1I&^pwrSDLAM3{BM46Z^1+;5X z4;PT%2QuO65aqp%@*~L+>h(nzePNRvO;+l99zZ_^qElZY3yOZKzNftfaq2U3h7+f& zeAZ{jxx{52HIyyJ+S`hogP3Afq7uBn2Q7k|4dNlwaFI@({US%L>V`l(plmRU9%=nK zDEvpecv8Eh$B`4$CPwG^nRVxrYLJ9N^W(G1t#nqhXCG9qnT3tiL(kM6v2D~}0f~B4^AFe>4*Ws|q!&b8xKi4-zeV4H z#{p|>8!O9OY9>k3@4>=5G*Scco=y0)=IRGtCl@}Js}wo4M!r`Q0xp%8=3s+i!@oU$ z*$lX0QxQ>#8P+zbN3)+1Bh64COFP$~3m;c!+QBFMT=BYWg9Lh$Ic-3_M zWfq!)GKU1@EzDbHTG*rUW%@TLKHUX=UiNNYzZD-T*T?Tk|Hr8;tV-}(!ei|8J0)mj zS)^g}u2pgQ-8{M~d$BR@+P%#O_j=SznlC>){~OrDPDnOaSEnvs8G=u;Dvo>Yh1^|I zvhWk${oecaOBS-_L;>=wD>d8b`TfLaTXsz4z2(7m197wYh$$Y=cS{kp)fv+(_5 z3+OcQBIh5RAq(0k@FDS-fIFlMJ<_p`bSr=oWyXRzOtv_`G>Wn`tE}{2(j29xKqPYR zB61uNy;xWdWR5eL|Cn;_WhuHTiiPjatK;{^$eCP~b5DQ%3c%CJnWPVgj`)4@`~Y?r zMvCKaU984zeSf0rfkG4L+$~l;d%iLY^hWy`yY=@;=mF;q=@a7^p&uo-97@Wgad&Is zyUS!|{ZFS*!$wZ`1cSNnT+$CN^rPHnTqk8Rx;E3IiCa6?M&e|Hp{OZ~)og@ksgA7T z7wr$(CZQHg^*|v4cwr%s2b;?y;eZPA<{obULFE^d6ne}7++Iv4^ z?ltCkASKaRKsD9~eY0YRwEA5(qYkQFJDS70uxYqbvI(W2Smz zTV7~Mw}yuCr#0)ud$0{$dh+lh7V8PtY?~uykXk5S-5_HXDTtGFU+8?yWjlv&k<`_A z2Hz;QtM-p;3Hf_ba8oqJ}ahpA*UQbQJYh&V9iwtNJ< zO4m=)*Xl4wkELW+y2NMVvaF7t@FjE~Gv8ci9oOHZ-){O9mV)*&Dhn0D1M2sD4jL$j zby_Ivx3lu3Hm2M$>idSko1{H?o5^Gr0e6RzO}&u|BjBMc8H2tRlozjuY3uobyOXOcQvzk;{+ z!dTskt>%kEeQk)|7;j+8OXGrdaIu@93Dg__)lgKn7iQ}44S$;(h-yEtaksAvu6!wL z1Xbfd7hd1l{1xerO43^xfA;OLL*Q#zR0Z#ARYV>CWmok;SI>^?WIM&lGlc9m~T)66M6YS!hNeO;tTr?4fM z+|YaqHv#LZyRads+?q&!G%S398fd)%GWx7zY&Dycy=T&mj0rgIU{Bm;owVN&5KVKu zqFLG3-nK=Yq3>h}N~B*JFvL>~WOfZNBdrS|`u7x3X_L{8wGc9J`-sr>85jvXU@@f6 zJgU!Bs?UflU{qxQL7D&;lxP)DJu9%fDloL>5j+3GUEo?e!2`4Wl{eupxS3bZgTix} zx(7ga)Uw`bQ9!N!pY%V2ANq4?0)^mBIwIeIZruq@^%scB+-tm8V;4ytW5mgnapEM( zIPgu%+4)Xbo}FjnXj=~6vLk{7SF(jrDf$Xmkz1i2f5s6c#fb-w)Ek-L42cu!nmDJX zEg`bqA|R%K>L4|*F0TyD?K^V30R+#Yia*3eqKS0%tBFTTI$AGzV6$V-XxCnC*M6*t zuEKG@pkCb#PoE7=pU+7|GDsunV;x4C6zar7)&WktFg~*o0F!=Gix_VDVRzJsv2$x) zo)j-9&?gTaDTSx&q!_grk8gv%oliGo%@?dk{j#lcw$-+kZBi{6RD=^#Sb#acbHN@z z#9idg-8NtgZ>Bw2MtdmLtkxc2S{GpGi)9F0QXkV73|7(EProFgNH{~zK2vVy3+Cbr zKT2Z(qEik^mJdmyE~xbE`vYZ>j|upNvxJ?C=xeGy_)GtVsZT#}vZ zmX}~qGu5o4j}0s1gqSy*;%NJ#NBz*AtK2=Y_M#!Hr2S!un<`Jrw?P^Cjto4p6y8XN z4wWbsxBrzT_kA8^sQH{H0*#RlSVv$Iq3zH7jetKb{7Pjm6ezv)UG!62n~ z)OSE;XTTpdg{z<6ugvlpwxhLN9acpY;)RbS83DeGPy%=mV}U1X!Lj25gOP6%7X5$s8FDihc`ufQcu!}0N&^j%&Nx^ zRSm}QM{dm+cj?0LjA*kYpRPpo;uBf>%{_c@K&xtSYGkLA-@dhK>w>Yw)}d}gqsGqS zjNkYxEEJ~TGXExrMSDJ(Mci1>`I#U37+vHghnp7f98etnPInk~lsTUN2JC&o;MGMHfAJ+o83yv5J6>;tM z-0Nd7uWaH+XFX7-uFS8vH(|Tt`1Z)2qvfseS&0H|`c0RMB9x@;(}W|Q8F4G5BpEra z*9l2#eUpV6b(@amUiP1*-VsVeabDUd7;jmY^;!6)+kEswsBIyDm6S@Q6Z2jIn{#PG z_*@)pS^#uIW}kW9AkcelxVa_Q%T=@s`{S}ZsRCuryug`NM{d68X@$faQKghvEBY;e zi1b((9CjUSp>FGjh zU%dI^Ph+pKFNiV?Ck)S8?ZQHXpt~pA$34zxY5w;y;_cQAIyXkRD7zeu-$gu3O zVQF3m`52MYZSuVxQ=1e+k2rPO|EQ~Ct6%iyOeHb`Ee4gew;vp6qJTsq&@1}ER#srJ zzDnvhzIGr9PxQ?SUtOZQ(PB**HeFK~Qmbqy?Zc__2de$=FNdqDe&9Ml_z$)zPg;*X zSC;U)GOZrS4}0jE1MKoh`(li@thwHh-V2BRQWU!Ob;gC0;>886QOjAEY_{BSQ1z$l ztk1KaaJ*;ZWM_bg}ldXyX!1BT%s}Qo`B#eeUxVW0-pGs$={;e1pqE<(ox) zQ@;Y{WRYC$M0@+9L?72b2;K_PhRWY>9Fk`b1mSH&0h=K2-SWeO@5(( z=tAcY6w!%Gyj{~kF4m!)C4HWnJ{h}h3q0-zFLu9xip8fr>8+$YMj(9=8C=;YXC#a=V?dHnc?vEhHR7D>t5jE??9cthEZDV1-^;fJs4NgHotVE{+fAzG@_{LLnO^`;T|iG=P)}W8PhEZtPiN`t(Ow!~X<#r> zUNcSpPPn>6jP&1?IWA9I3%*O=gdJqxn=1s?5e*ZPpp{tYKj)c>M zM>+L+m25J(l-f_Ah#e%xs$a^_{aJ*D)Rpow3#8qT$74a%4Y0k^rIJ5#7@n zdfj-^7fp!ozA%l4dvS?gyCd61BW&`5XOzYN{k~GwuRwsZCD>+k#AZD-6!AOQZgfm7 zHbauLKtON??hR1vy58hXpmY|lgBb;nye;McpC@TO^ z%?G~Lr2c#;flL}89Xmy-HcCXj)BNXzY|ezRJQY1}8H|_U@f^RRfAz;BIFd7h1@&DLdP?wy zAC=DCU0+PxXsu=Wy8ycJ{f(>N)Z^{nkN51I-iMnyx|WEVtFJeDtZI1XnO)YS5FP`3 zc#5mHTbEg87OErPFd?D_-46o*pDpZrYkr8eqKcXO{9_tFj_6%SG?*}-&8KX=EgM9n zMp>Mpq5kGb;lS=~K1(xAGVsZxVp`+t8pJnVwKew%`cA-vhVb;(v_A>UlJG^aA-OWt z6>!Ws(phInOUUJ6b`2NY1&834=z;TR4cx4=X8>Qt--Wd$^!SrI1<&WeykD8u@WZ5= zpuOFoh<(Q|H%JD#D*jBWfKQ6R7WG&X!pj6yYJ^zvUO`wg$xDVVg;+vO%WdUiutl`x z_We!V^L~g=)K(ass)VQIh&W23I^|-VkM2m7}rICZF_zlH%M4ec%yR!ur)$i zGfr|tQKajV46}AIC6f!&n8x{~{8(eTpL$L1oapnB`}@sSe`U`6A?NUyVEvUM*Q56t zt_;s*LQGIp8N*}cBNgT52OvKAHdwO6uXup`n`pDSf66j`xOw!6>52~*@XGS}+_KCx zuT}n}88zKai++(Wi|eY%Yh&Va@x)Y)8+&o)+;rnqsmxbSo;$~UEv5pdMF;rE?Ckey z#xiwqrP!>67SP`qKECk+?UFZ0#a*9gIrnkA#eT%H}?NxOZ_KTO5M^0 zc@_0*B$cI+hsF_r_@KCu#Nbd=Qv)fBBY<&FY)zz57KYL!0ZdaQb;`oThJetU&=O1P zJc&#;tCdoBfsLept(`=7p;$8W`n{*P-Vqgy~>DmV@nI9uPN(^6=3o=@>ogBaZkx;mAxo^oPKxF9dufhlu!e{o&mn zOVOiUFA?zZhed_2=^o!9==jeE$V`0agG>##$pcyPkk;hXca}b4Bj%yLJ+Ijq{G?!c z&j-+j--YOk^ZdGz${u1PO?*7zi$>%{eA)f!F^-VA3ah2ESB8+P1CAyZkRUkqBL zFV;EgH5b43tfWWJR;z z&9eO?8<1qJDs%PyKO;g()oW?v5E^`E6KEB17n4Mm1ec`)U|C6p8g?u{2U^pOq?! zh1@?cDGBP9tfnZaMcGqkdKR+{fnZBbx>5nR;4v!2egY8`6YB>vL2W(&1HG6RW0Aed zGV09A3_BR85E~RyZV2myp}y^@-lKl03~JFBtg)u9 z>Ip+XH_TsYTuw0hGCQkWL5Lu0!Yp;t&3D%=FXKfj?=B!D@N35 zqXc2anPDIz6W&Bg%$R@7YWgA4FMr1@cJ9IhGR04hg}otswS5&ByI)HS2#F5bYHJ7I z23~y$t%Kh#IB-z-J0LUacn{IIG$lxXFAd6%l>L63Qae__XKz?92 z*|A%0br}(HD+WY2`auxil1b2_Q5EE-SMgT+BTln$@7Y6m0F_w^8R_Nf4?h;|BxqHzF+@V9rEJq=0Rv=7v%%@TcI9ob@HXG?^<7(;?G8R8Y>6*;8G)v zq2jq$wlZUl%k#zgr&?u-%xdAAgizGQk45m3&>@V&-MnnTVWy$1Wcy0N8h48SC^xX; zk`iNSBi>Y}hg|pa3rV(kKD+}-Jxlq6Jv=dLfm#bXoSxWY=c^KvbNXwwPcB{5% zFD~~vqq2Z(YH4o$KOU$r$8udzbSaxtK^t)3+B#|lLgsYkn#;p%)fS~?8}(?@SX#3L zoU2mQdNjGE8mScS+HRq|Br!I5%1cd$TAZ5fKeKUB9Xt)>v4pm@?Fx z|D5YXV=q%&>_i*~vkr49mT#x3FlVH4mEFXIVJ;_sAi2)OaQN^TF!H-=y~Lgl5GguL zlkd>2%_6&l{$)KV?B4;7EHmPss81}qN})FHwRpu$p|9hIUA;HotG!nlKfFynWTBF~ zv&CdT3*u>jGxT8=63}J8IHC0Kf^UAJ$UB3dPo&$;k<* zyMdvqN>QBB`of`FQ=K+rj^flVmaAAl);d1vvc_>Hbzy7lEr*GPJuIgZZkoKwyy;n` zU5-CEaGatZJ@WW!z60{+iL;8-&u+XR(K)W-`4M5Qsb9N`zUjm!GQOO8=UTbR?b%@ zMUVqEC55ykCCMSzC8d-|4jKBr(?1=pa`QvUIr)S+K)bRCmDxpK>4@BeQriy5_z?Sf zj?59oLMT=p{I{ERM^y2J;k{(#@%!1fWH#O?JZW{%9U$;9H%%`S9HV30C)OwdtxKR` z(4L#o6HG3lCfixX&DV;RhwZXv^g4)~uQlRk+EC{(DT*Iz+Fh2plaA)SdG}U=77{hJJ^<}U_6D~SqZHP#lnWvg<}>r+>nQOLmmjm z;Sazir>mVT>;Q4a9iMZAQAi@VV0dyp^5C8WaiI-7kqvk@uS#t%?!{#~jNUuow>F(R zlDDI8I>hf^0XbB7GWmmyv2EG)a)Y;RZgWJD{%vyhYlozCY(X9}HuV3!tDHiR9HbUT zW13(B*>e^@cSwWB;0^tuHf7iujj$aBK$_|hF8zD93c?-wFTw{$;MHjsNx?;#8_+xC zGh!V6umB(P-%St?5He37yjf(2Hdz4x_qlt#+MW;+C@LKt`?cZ$TP4TPv6vh;vn`{q z12;GZb}t;y^D=cZdQ-ftvieYJqMkGU^NeU(HzM0f8uVieqFp6H+Lk&H! z^M| zZ?H%Sq>sWWc>BK{0{|ToJl!Kewgi*llQ*~}M|IotQgZrui*NNdcn65jC}?*_k=*%f z@b}T@6n}(((*O|2_uV|PB6kl8MocI(n*|EOId;q_bc57nS41d!Y?kN+w?t3&MWe9k z1_rPRLntjM6WYv{+#IR>zJXG&dkBVv#tJ83cla)k8}khb4ODTHFu2U^hT}XY7wgfz zoT^o$4p&X>b}-Yk1HKb5gn_?ic?2&iTu{x!WRTzgdx|69`!wIz4;LN%hl|efZ*bAg zENx8b#cW)iEkrDxt!3>^O#k(^nWJJWzo>xXM@N0324xc(NDwqIWD9`|q9_RB2}y>H zP)2eF?tDI>MuFRk8@c;|{RORu5+gQf?w@kEWtR~6P9*ClKg(M-J9)0_|NZ&}-N%78 zn2?}$3sA(wWg0^nu~(omB5Eo`6OSTu(9rIUB*YR@2DL30I)^sU9Age6WoK;qq}`ylB2+C-4cc;p;R=X#^6u&PRMs%g;85qqJm~XpRW_ZlagqB>gasbau$34~ zZ0h4}*+I`~cG`_Z-^*p%u;ZcLKgp}ci%g_B+80}lppw5N8(--{C01^uN25}-=ca!ZA05eNX~XPiYu5i(cPmG$I*oH! zqFtQHlO~VI9(~H8*{zC#lf6(=)gd5!OS3XSi?n^?Le9)UI;~f6b1@!AVc95oi^x}) zC!Fypi^AkF$9VV0Lgh_Ybp&^&+CWrB3?(}Zjq;=^w+I$fcH!UXusAojI3hB%_-&H_ z)uGxbY2rz32%-P=-?TK5cjtDV*Z^NlZ3Et3_9Z;eS* zlBF!nOAb*6)<4w818`MHRlz;sEsJ4q&`m)$0RClVD2D<47BUk!ViDqcp)O}Z5dRFX zLSCm_zp64Gm+%qP=?}>MYyu@GM-WjAh*diHyiB}!Vl^X56-@G95&Gy{ZsZWcVg?o5 z3u>&U_7OjUjk!#qOs}XDQZ0J{linKQ%QE0stWK@79#fPZ%G)*iUu+?^HfhClVpopPS3SLQ)<6 zOWHAMwH?Y`m?FRHbseG2@Q3 z{jWUJa|uUz4*DPk4#NH%a1>0uf)%;Mq=hc>pAnPAjNOIB$;r2|*)VzQlwhNC))p!~ zGF}pRbSyGD58frTdRyi!riMxN=W#?q4{uMkE z)IQDNo6VtCd7;@pQ>{jOl(p#^Opd=lX%a6l)ZoePtx?98M(7vbx^eS@Usxj!4GKl6 zre#i<6t-tnKnE{a6FQE%B< zNwskh+q~;m{zFz+vZ9ed+kz`5x)Lx(h9~%`;wR)kvDmJC^RE089`8*C0KoM>#Nxlu zx2*-~p|a}w6>nC|{%|6R6^p=NP;Ud0Dj;No#*l0OkBgO=3N=q7Y#s~)<+n8^sOxE5k1d~G^~F~$XAQkM{Hd0aGTEy_eXc;S8$mB z(yct#pSxMBFI)OA(B1jlI;@_H;og03uFP9s+}J-4njhW(b{}o3C;XoVHL{0e`1N+ZL)hpX^9xR%?= z_*fZHq~#_+kFU;e>wo=;3J-VBECMQGMr%UCRb zgDy_)h%!DeR9<25tKw`xzZaH~Ei$htY71?2lX4k#`6;F04o!)S((DqA4 z?0`}5VK{@EWcunAd#s?E7Ad;e4z0SPcc2@V7sy?_E6=R%GHR$=_dJo0x?%P*+KE&^ zcG@C7Bcj~XY(57o3IUE*-4yW8pIyt6u!B$UsSr-1l4=mo*Qs0HbBTdcM3vRk*JA1< znHDx2f?}jQ;y;~2M*HslTj!a0*f|TWB>}Crr5pPmL`A21;vrWlv7uU1PGt)%W+RYr zI0_dd^{zDQn44(vf3+b^Z*f%HO5zCB6bCn)s*4P*SxR`?at=j zGj69`sCE$XF(ZpDs5Y8-IB_tqFd7F2;hY{re#Mj_8&2}cQJIsmrd{!LIS(1ZjTIMs z^<-OuO-Z;!XB0Eg+Kk{JN|(M@O9(0Mao+W2s)C4@;a5Yr)Mek$z}1TIt5Lj>(;gyW zZc{GiZgK{(>L){?Nw7g>sx)#Mu=j1uM$H1zS#(c`?1gmE8;a60XGq#=kwqd_MtMPn zdkw+CksD7d>RXigF798GYeEiWhWQi#aCok zWALqAC^{I!q$jh5C1~%9$j;Kms@mECad8k;jb=lEWYsj}#u!(nLA^OJF9TiazDcTa zJ^_`b>{)VPzX!l)xCi%$btWv5OeGAYWIKja!Dv!D#ca|80(&{==Xw}1sw|m$r&wkx zqn0`j)Jt=8fyFO}-6(;E?NqbG~jVan(gM4bZA#CEmPL zGdY0GBxlP)BDxyAdKWA9Ib&X{M9`K;&HMBYx!{oex-yo;I$UE4qIjdnxMganWmJBN zYc*4jwUpU8VsqPl3@Z5w%=AwzQ#`7mCSkGUPok((G9kOPE@SjeAv|4=tx3qy?^x}n z4CX*kjU!$@cW@FZ!F#L_;{5>11mc^J}26?(V#=_Nk#G>8{bdH%s+oiEM z&Ow{dZiW3j?73o(W%6bj=ghwK818~~{dZ3^>mAcw!?X+>rOds;4FZb}5diyBg#>&V zjs!GSDZ6gh!Vwymr!9-+8)c=9GKoc3`r>6Q?w!R_<5f?dG8!0d(iRU>rqMXWNt-7p z*E^s3%zZ2SjTNJLWuJVn{;Q(+<0o&`MJ$kC8m^oa?p0_-RSYs(*k*L+ z<%r4(R&jA+6>lwzYp}(}hTz8;fUH%;h+>PBRn7rsrP?6g7tk!}l*dUt(H6s02;*F4 z*DN`uIAU0~V=~u`aiun!bFJ6uycu>2G~&V;EbcY5$1bz=Tz>c^iHivji=xXh2jYU^ z%kWB_;3;%Du%Z)1M#!aD!Ig>{ey_Q-!KPNnMYPVPTM9##O>RX45$n5o@6!ewcpGKa z*3T<7Sv1k_RI1Vn-9mP*U(==V9kCcYzXE> zI>m(TO%Z%H^%Dz>rwe@i{H1Y145@;yaTRSIk$FNZk&s z%L9V5Jj1Txt}(TE5n=-swCmpfXO(`@iaOd?(9^0nYHBbjVdX)CuuZ_)@dIe_YGz@m z+WlARtAAS2rfIGapNj0ghQjjM5aeyh)Y+t;(g@Ycs8rEwLI%9e=Of^k&;@JRC)z%N zo46Lv%2A2Ovgme(XR3p0Kp#a58xwYtqqwC(`#DLaK!pdeBJo?zuF$yVu$$r#tS_rr z4DA+j9OZ|&h}s=jB+KdAVlz7|C-G!8GQv&P`k*gk@4CEvz-F;HLd{{ahm?bs)u((a zfm`JfBXQ&4wWoFe!UoX(<`g&^L9Q0)N!*f2M*P)saJSDwKdnE`E)y2GIBm~t{HaK- zd8*Jl!*V;!R;lk^cU?q$zu=8+=6A(VG;f#MswTU3NSm|l2@*{&8-Ae>oCBbv5y0z# zt&z-0Ey#Y__2sZ*JZm4Wy`9EUd$a+#HQv(Z+!}g=)bn(Fm~c$3Co=xP_NnWmCh#dN zL+#$$ADwjzH*>$2w^;jy9Q$M9oJ-GORipE__pI>-aYQ

7vzNS(gUf|^B;S(yvCoD}*}}#*oGeedBNL7+@y5%OtZ$SNw@fsETLNuV#k)wn}_ZWgs_>2z-j4zg6SDZq7tLHED z$p;sYm(K>0kZ+=c2`WbE3q(xd;Uk-Axgrr#ssdhLG{UYoM zd2zxRVyy0eB8)<;$@Iiw9Dgzd>x@#0p#C`FJu8$+Sv?XVEv?9R^97P9l^43f6UfQ} zFMVfm$b5wjtf0tnIvG@oiH}ze;dLhyqXRi%$0>(lLzkfPhayvm=2Z9pNH{i#TH4cy z;n^mLK49EE=E*&82C}BW}w(ojIKAPKM|& z+waD@E}OjNYYTgRh{yT{Vu*Z4Y#&pH?HxmXp9RkL7Z?N&yl)PJe?5^=DvNgZ1txXA zdZBS&zw=D--_3|!gjYU{H(4Bj)=~UzYATp*#f?2{(9%8E{z0<>fUKb%Gy+*|?5i|B z*uVY6Lv5iNi*|c|soK2nqh$|h+YECfOuS=nT(FXuBuhhmmw(kjMKd67`Hi%>BKM}a z3)Zx|GstQxOE1-hzIV!4<}@3;=rl_&n^SRgxKtDLb!R%;Jir==Ev>SFAv`(rvHqqj z!zYWpmVdHL=sx#Z+1)?RQ_{a6bHZ6CmNBJ_Mx&e|u3T4%pscPi$#e_WU01p0OM8|f z#qTwzUBvupVsTRCW46eH_*j7>G7wAk%}~%C1odlXBArccfL6xtxK5^rT7xf4f%yA} zs>L+Y>etwW`iaC4#IV|tLzDPQRFQ^VF?nHMwTs( zOkZ-ha*);#NQgc_ECY>SRKzEj_CYmxqZstX*zvM@7B(t*C;0)DyEh@p6J2(T?SZ9l z9Pq`MOZdh|tmj5GvH#521%IIImT!IZ*p7RKcmH0Fd#2~)-G+O{<+)=F-Vu)jzh*i` zuv@cqM(FfA7zf{EER8bFOn4^^^40T&&(%AEKqJb2J@EQKQ;!_w`C$kc^NdsJMwxVE zr(*9X??r|Rv`)~Y+urC`n0R(VCqQgJ%lJ?QcVOzL5<*rVe1iz+87Pfe%#KtCbo%5e ziCR&!0X--xZ8m;UOAgx}S|^?Iw9b<|)T4(UjwD-L$V|lMZs?3x3O9O+l0_s|E39rBUMncGoLQLtX)F~{&uR^nmF1O6<9N9<>)15xs+4In43{tV7} z^41+l?o`C|wE;&q)!H4Xf8-xi<}UuJ#b5W^Lp)8I^;ML}zN>7eLH5#P-9p1MrIBl1 z@8je4Jb70pOW%&bWHF(S7Qj1`N6x*z>Bm&B%%nWFX@HHhnRSs6vg=VSh=YR}Du=?6 zhhOX({LFtpQt)4z@%?n4b}?Pm%`VURf^BC}+b;}qF}G8)Cw_lfX2E*D!ep`fY}PDu zPMNE?qcw6Rj7|uv&7w9QY!eJx;nEh2Jvy)LTs+4ZixW2G@|bnlCIXq!>i{-wr0i{?ArD_1CScz|WBpFC+i}|Np2}|A()6 zj+(VHwkn1n9EoNUjeAt=hL&}MB!$f|#IX`pn-imeBoWZ^#JE!u&GsczCw4V|NpAqX z-yCL{LeBi#a^8|-<;^;XRJ%++183TE*Ubap%`wjXbJp$`K!T8DzXC{3dzk@8kXVce zLsSFBwJ}c=_=^%8G89=B1F9g#BI4AZAxKlYG6Ovn=bGZx-H4{aqoxzHPh>5mwZ94WVqOHk0L^ozARu z8E3e?X82PrhKw!J=%M3+nDm4JL+fgYG~D{gwtK8K%q&A|+m3hMys9Bxh`FyO6CarP zeEs(J)$Xiu7>SHwoHn)HKIOl1*m%UvR~keLI=NH^g~upjmV0hAnjC^!J;!IQj-xxq zXL!anPxqMwEli`_z*9t{2D?ho2RYfud#!3Lm%EI3%yh?O+at=d$Wk&~%Mhv2SLn2$ za@$Qhb4|M4%5yih$kciztGY_n;Sfsb`r3mY*E~%zRynqBJrNqE>LU!P*bwH5itRBq z=U#!Me7ySRWbK=r5m{34yXVysb@zZ9R9?j=UKUhG6pw50w)2duYftsu%)*uChN_i7 z1x29?VB&XL&i=J$YtNg=&J#|pw<{U#)0H^=ymmj&wuqb_CYNu)cuip{HRoUW`e%fb9j9y1xev@q)`DF(+dMnN_(NHy)PEACq&@k!; z(4&EsQ1^P1>AFn`8!KpKWe`?nLVEV2@)x*TlCEkO3j^bGoXPfMd(7I%N;>Bs4{_BHe;0*rZgQqD?}L(>v%8bYLSlT_O>N zBnZ%5Ap^HK&Q8liw@~|u2I3@WK7nU|OTaAT-$Ikl<>ML-_%%QD*kjF25Ah>_D{l)t z$k!^3v)OKc|L(uY^MCqz)W%k!8ozLE$Ke&G1o(%m5tBQMSq1#_7H1<+&f$$9g^PJ5 z;Fl5b4)Jmg*5Fx0(RfMH_CZZS#0l+xW|RdK!Nva3E?5xmxOoR`!&r64?Ov(*O(c@F z#E)P#P+l29+}{QQg1az9_za(Qh<>tMnX{?6NrNmqkIvs2{8EhqDRIh=p98~t{{P&Z zz%)6G!GD~b;(yk^eU7MPYGZF`VrXPz`XA1H|2jvEl^2v7WI)gfZ?=R=!SfLD?oZo^ z;vh;0ib5hO-fA6BYL~J#;r_K}iQ@qfFH}7U2Bb2l}5y2%YtZIIhX6UYq6 zEUm$>bzE^fk`(YTZ2No4%|l?_dwE=jvloq_mv}ex4UhJEJlPe9EKsXlovdVH`!=_M zeha;F{_LF~^_$Qw19MZtXQYz!9D?`W7T&}Zp)c$x`Huvj#u6NLUCdWQTaOVnIc-Pw z-}2^#*Z>bjI%&YgfydTD>l3GlY_4EdyH5KZ(Ru=dr@B0UN6w!_G~w;BX*cm-_|OOl zf*gu8dk{vsVmu{?F|U&CWPl+l`;<5jUIF4p0UQGWxqkm`WY9acBk=U|)e`@BCH_0f zUjH$M`>$-T|2;MMXRg%64JQ&Wv0DB#u4nIj${_3F>Vg-O$^;v?OOZ;jW_w>yO)}JFKa{KK>Cghxscc!4_ z2;9qZ@{5<88Jcktxw@wjL9>2g1)&Jg6^jTlu$oiYc|tL4|a ze-^F<&?La~53*SQKOu|hKW9<@K-R6|gn52osptSiKc#|}QbK}`fYh?EJ+`@H%$94* zP8ch!m z4vQCJ*>8B9rmw%ARYLxr;inRQnZ}3yF@g@}NQfW3*^zTNrSDuRYB~cShOzd&Xv+QI zpCX}>nZs06M{W&kLD6>5tV=cS!MlqKqmmvTj~^FBQx<4P>;vuXk{&vG$^%77-h?zy zK-4*T5U8)hMVcL7hC_bR%egJj-^dUU6c%a^>J-RrDE&V%Gb!e8gTW!nog<3NNSrr*1<_6&a*3aE z>iwA6|ADR9|AVd5aZsJT<$h6}f&YUo*sGRM`+s7~eqkRr8yEnf7X1IuuEqSH*!s0? zzo~*Tg5PGD1L8g{CH@R(%rLkSJ1x+5*U&&aEv}szk5q=KfRN1*J~Y@sy?HL+5D)S! z;Se7n4Tgm()F}ky7z^SLfbw8S;xAu~)2GpZ?9k3kdP$dfv9n11?_Olg&4#4}Q}NF!g*Gk%XUxkzKK zG1JIXbdVhd4RzxB(1@#*)3`Rr+glS2Yv@{xCxHmHeeYA@-ks|5C^~8lH3}oT28|L^ zO;1g6<6=$lDSLh)IHtVhyAL)1Wjo9IyNE_-zH~lmwbo8T|281#NOQ75mz$@|z{Rb$ zfFQAG35ra*m72QSPWjDs-lg2U@VMe@`n8ea)_uW-xA5DN!|XQ9(d)5b$!fK7tf>(nGD^uV>gHWRs05 zcfE;ARGX_N=*GJz3>A*LAw`plMwO;Q<9IxGu|A%>s((qrT+`UHUdO~U_ZT!4U30~d zYD~#A*3UGyyiu&T5llVxuR)hsXJLg!4H)J!mqmMENuioRq<(Aj^403isno)y_?pUhc_{js*{r7Bk&sLw79WRg0U@YUJbfYE$YNFn4?!gYRysVn{_%ypMF0u9@y+oqX=J`m$Z}AsK#; zXxC9r7V0nTj;NhsoDk%YqefE*aii^73bBq+448-8AsM#wi&L8e&kXj_z2TgwcjoCL zP>U+Hj8toeJTiVE-_wD)aya66>_@HdCR_waX!e1zX9 z`g_v%v_8T1DbiSthYx~4c?u1W^eBdztMmGTz>jh z(SNsP{eQo<{Hy$@f4u!rmOsBg&DgoKrb%c3fuPaUVG@$ZNRbp~0Qy4=kOcayn=(kO z**YEJ;aap>3Rl#;72s($qDyOu{Lwkfw z*!>dkpooVaHdUdEKVdXdIU+)jSM|(}7Hd2i0E>?vxqA^J`rGkBlba$Q>(e?he88u< zmq{e1tgACnLPvLa&r`cMA!L-BJId@)8f|`O!^ow6%n7vO>De5A8l~7W@u0)<3tBbz zrcg<6(u_|(pff)KMURGn77;q_WMNt7@W8Z7=NQ$KCD zcAVDeO#Sz=sB72Act^W10oyf#HxQLRr5Tql&JkS$I|-d3<0>tkIwvQQ2)3)!)VSlF zQ}RSsPM7GEo$I`5^~v3`k1XN3XG3xwa$%RAz*6Sg%PZFg6Nn=mZ$D${QUY}gRtryjdfL|64Uw%5vo27!7gVWL2V_pT0y;_ivns|WWpRmE-ehkdN|V)05D64lAzeKh_0agR)Q zKm?8xaG}68P#I&Xw?S&%NfUh}yJb+zz=R&Eo#jIDOkY~TDU_Aa&z?OkeG-D)X-V&D zVgNdHSQ$wgoV%6_RolRPyTle4cv(o!kXtUGiAzHLG?B%48Z!58ybFl7+P|XpWToN( zPF84dP0lPEBAXyeE`eSx^eg=-yC@H@+=LqAQ7Q-9bMn(@y*s#r_vI7M0(ywN7=K%s z)}=sb+UiAOwntywp9CbNdBz=`mz#vDK9_jXtFZ`tz^jF&(VIJy^d{x(e#^ zD2kH4`w23l(?W!6043F^BwYh7WZE0~@6gzod?I8(ufPl$f6f`Dw>}fsg4>x4$B8)$qkc11sVFE z7Ajazqiy5I6EbW?=fefM(gpr6*4`;d(x}_kF59+k+qSJP+je!?wyi81UFfoH+h&*R z)ZXXBAMu?y7yre+$;ilvyvbbeSaYp8o-splj640?83enIhALN4_@o_dEjv(Hz!P7u z&bEue7ohMccFv#_ai$@+1bREPtsNm3t{$?h-cbYkzKd?*jAfj}C8AGBu+O9=IYAS# zfiOlk)*q$3RqW?O>qiDf@q3hPlpNUmwT+L~&S;y+ER7WB`W9Y(!=Cqxj@?@cV{nDO z+=%XlyoB+8O_zy%p~iXBK*I{_%EC*?nTaC8(FDXleHJGOekWllK_>0Y9py}${)B_gI z5YW#hG;#~MYT4SP808|!2)QaN*hV*GInsaS&v1cAM^c_48);H+BxS)A)ct|FakH?? z1kC|ApzBxPzmlgMR!lUQ(H|=*ITZY-AJ!tsIQft6bstq!MvZVF_$Tm4zCouN_<#! zd4bK_i0ij(4E6F%M$e2n(dDc|3Wequn8#uHIeZk#nN!+#+;WLV>A2-TV+ul2Tp*>h+%#3W2<|4f(ci9j_!UvfMB!rZl;~zl>)^#ep&X(` z3LWJjCIV61H8CrYuIRNY2Wk{{N+88G=O~zu#6I`zH_PE#+oY>e>1WP|!;Zs_pQ>y! zD1O3}Dz}fLAx&)j`q~MWP9-{_v647`*Nzd!i#;mA(Tf?k_hVlD?lxf$Fett_^~QRD z>m@-b`n1-;)SR8#=7bW^>?|`l}62 zK(0X9U2vD~?0xLQ-$l4s1lX6I!>tI}=z%>f?j!zdji>;bvzzgope%{6Zd9o07kjUK57HUpHt1Bo8ECBF5vbKd=H;rs6># z{%t<;$M()BR`{wN5Z)%!d@CK4zgWfQ?^!69my7_%29ROBG7Fa9Jv8Hck-r*bfbMJd za$AvvpF!gE{$=cZr8Imb=ls+@$iJUq^Un;Zy<>by$N7%>C9Dp(t9w;1(-uwgD&~Vg zQ4d~h8m_x@VCzg1sJ?S}^}yj5ow5G#`2w{Dj{P2GwEo}`98vQ-m;QAi$Sm~@`>lS^ zdq<1&ox3ypLijyow_ssV%G`%88rNTIKu9&M|Jk=!y)!NSn`XJaNz~tA2}_t%*(-L^^ev+4jlLt z4=b&BZ_QAXZ5(AAiEdovA%>+F{k@Igti}Du{dr@Cno~aTV?&pbtw#@|;~Qw)077hL zdOvI5pdBUjc{B|)`37ot$C|^xQfQD`nrdYaO-|iqf0i&oSI8mW4T1ybzf^wb(<($1 z!Kg?buz)J1#X_dysg;5b&6*-uokNWT*Hj_3lhXQbZF#dK7xe0*p2LN5hIeT!>0P0d z9RZ?bRqrj|q15L#WdyQfT{&3Kgw-C)7J8LcVN#H@_Ax;4Dyc*3<;_xtNs>Fag3?&2F&-7CIYs>8(Y_Zv}?>cckUU`KGbN%*Mu zGHl1NLq#M%mCgD=m>9!i8wsy>>5x3?G5Zvo?7$wb+bt%7MC4Yu{MV?=H^D$wJK9_A>)@?(`k?SNKdae2`24&iu96e9Ap<2WhL zCg$vX4FF3j+|%Dct2;;s#yMHCyOrTVTQ28Dt+bk6F=BNU+Nk5?Tq?x7_lW986Hs+r z7loSQymb9)mO-qfbe&(p#DnKBV#uf%qRP3Tz5*iD*9pQ<@Qz1+@s+*-P$8Dk11x~e z&5G?S*3#>kP}F12&Jsa5+uE^bX3L0NDL@GRsTm_eb0=DzGX`K@t>XC1ENwvx(@uk; zPzT~fxY@9mkkmtkau?~l zdn`|>m!z|W z3NYp{(xwHLe8NR!%1TPEnY0dYzZ(PN6huqG)~Xhd^BmPGgD7Ix-)gA27rhMwR%_9y z0BB{z|0_AJkV!}0od(H#VX=WdNd^G-*B)^~p^$6GaYMLg zWe&+_gEIG8c0@JQtgdR%wV_Ab4LR#Nd7Eo+EC&rbmZAaB|U?Sunca< zazFuN3We8<*-KegxQk-UxIk22>ZO=7Mpn~@fWTEf(lg&lLfjvN97xnc?wYM}38sRc zC5|P}N_+y^U02S6L2d%5^aEJdaD1X;lZOjaS?p(*a@MJ&$Ld0Im)Yrl87xqJw}P@s z1lu*$R`(kevpHH!6OWuFMof-Yl$j`DsacBx40#x%dEuzNK!9X?GjHfst0(u_LA8tc z0ujV)MD6yn5)udv*FZf{YPmAcCX@Oa50ZeT2^Ba{sYfjnLp)*UZe^ycDsBR%2aLW)b@?PH;_bF}2TR^P&g{Mi|U%z;@>(PFtG~X>v<>rFQr~ zQ*%?tu&*P>w-g~_{OmYtV&DeD5fOppQ-KVA%1rgrb%;(EX+Wf3K{BWi1#OTb#wv@@)Jo~DFC_9L1tA}ui@M_t>BO9g>+^WAcgXK3f%w& zf0c?AlOB%fLBSj>}BF;h&+myCC)VVEr;6Xu>o z`~H{Wj1IgT^vxMMT0tS1HKWEF4@N$r=g*X2$dR{3(2{G)6N8Rdb3NFGKuh!^CHP@@ zw#4OGj!86Z!&8jTRH-=o;&|YtE36YH0;&B^t~IjlU?9VR?jFJIsNfVI##E!}mM^BG z8bKi)amJ&YVi3KFyNgm}q6zp$Zzdi&Qt;GJic}8iBTr|kV>p^RBE(lq;uaNrHyP`0 z2H?l9}qq*`Dxl93i?Fn@cWzB3gA@D7PHyMhmI0Me@ek5fxt=w zZ>0my-sNWVS%p{j>~YZ^ThUq`A?YP}&-^c$%oq|bQz8iJ#aibM3#o`31@5UH!MH;s zV-?pW0>zwpJB(sX3Qour#WD6tR2@A=_4&++p#AfD3>WTaYFZ;GMiGU@zz#E%$I zllM}74Q{5NPEZim9pnYSv(#GDI}J17klV*^DthhvCkUuH>}jbh+tpnbN6H-$yc2Wb zKP74grsgb3CWjQvY?DG`s>zX1)_Q>M@ZU!I?2-OcW?p1NPpU2p-=pRw4{d_GOruMi zV|at1QnRFfn$>h-gs85YTM<4{EAT~fabLFs%xFEq+bnU`sPFuxAy%ZkbHb^cZ$l~C zG=nxqoV^66cBhWO_e3d)f!r8E_X`1WK@U@<`KPuqv}Ga~#P9xcC{>LE&4^{iYyVTeNWWm4Ek@=iFglsIqdet3g}@6nBJZy7^;>t6P3fEi`Tf@ zXVH{3{)IoQYTks#4^uTBG}GvqSKh$@23&3Frq~53t6cHDGiA^A3?(59?sxEq?VqbZ z^yzF#2d^z`g4DWb5a?}pn%9O)?s%}S-k8gT23sg4=`hMkMB zzZvPQ81P13v8GmqpSz7;sHQSzC0WrugI9dFC7YPoHzbyxS>n5k?tyYQT=q-lUI~LC zdqJu3%b_0$nq7m;gC8C;=n(-Sw)rV}z|9z-E`_DT-J&W*hw4%W4|YIOT4Ik8X10?IOBeux!09{R&d9TkOz_ zJK*Y zL;D@!P5Fq;}?tyBLD9xGfGN&h-?pm9sRD zod^m_|IKUJ1dgmpvUBLH6!WG0Zj>u@OFhO?Cak-bzI5?%9*PDS=xi5nW(0{><9dD% z4V+jxQz#ZMG~lBjx75dLM0{|ugX`JBwD+e%XJFE>5qWJ=j#jabR?Uz(q(avbr}Ax6 z6tZg_I`Ih`h<1+3k^{m-n{`6+qisDGsLZnvRGP?r@=QisD$|$M{_xcns~O5w>#u-b zGBE3{$YTC;6o#pUU+O^5(~Ac4mJP}{z~RAl6;sKzNv!s2E@l&?UWHU4svemp(PXrv z+N3f(G9PaXuf4Z4?#nv&RrJTn=%6-az($kHlYH2{Q@Qm&HtM8PZpScSSRP2O{W}kO z$UE=yK|!15$bN3Qk5}RVnUo!MdQ&3H75`DKjCr!)#usGY_jzzx#@mtLeoytr7nK;^ z9)WPLFI*5c!D)^nC*oTkYw>N;7cGl?(%9?drWu-{(-`{tLa7DI~M(lzo~eOBEE++G&PZ; z+y!#wSEDjbn;Pm{=#0EVn|@DI8j733&?B`rIW@l2rO*+`s9}HfG;ZM;?2P%V=<-lD zm7qtCdsLGue(wwHJ%w_uu4}SpoVJ=aV4q_{>$=&C+cJAnztx4y^iND(V~f)y#_m*W zwpZ1aMvuhsngJPtph&J1jDk1R)pR`5_z`#eIQNkX*$v@>%i(^y(l7q_MAb}@sbQXM z%$BJiN0g?$(2`kKcd9|MxJ7LvYT%>z8+1oXy7Fsp2tJN{tG=*cX+9~E#_I9{<7xUR z1ghQDBdxbM*-r#Rq*Q!j#21~UdC3SB|2%G0UZVzng9bUt=M~!*7q|M`)B9q{d=*W1 z*}OyC0$i&9g@8hnBd*{vR%#Y2>^AZQ^9Q~`UOaXQC100l$B2}dV%*%IVdy8<(!|Qd zq0LhW6}V~o13l>pXmM!VX)oIze$%r=zgOe0{#Smk7f_WpWfC>*Zp06^VyNSb#z%gL zgcat0ly6O$4Vu|QUB%US^hS-I>G+5{5o7_XGJDtcDAfa(?#WBp86CuHd3qMaAFveP z)=QQrrHeOEPV{ovb{IP#6P+yq@Hg&}$?(blu-l_O6q@=cOasiu{VBVFd5gh}9NNcf zB9c*17jYcv0Qt&e*0cF4@MRpo75fkkWT`VGwD+;hH2jSp)2crvou4-BIlIZ3d*r{_ zm`L!}%%bbz+4Tni_cE+98~-#SknAwetDB2z2M&bn6~ZRUQXJQ4`b+td8ED@nC#VS| zLo>P6;=R>EMqx;uED2irM{%Wd^JQP#1>k+WAlyEhsMPa=xAV)#9Jg7xPHnj?V7uk? z9Vel3?seJ^rXB%kqcB{Sn6b&iLTL6IbaS>%Voma$Js>ZfQY&r1-fgaaypAs=7rZ6B zaipGcxB`y^`ljg!hlvP>a_AQi_C~1RMFH7SAFBkk4cKZ$O1_T7tVe?I+jJQCLX z9K!9V?RKQOTem!+@JeVsW}%q--{&AJUD{R&HpNkgrZx?zhCO?MBDEQ)cf`SuGAhoC z8Pr~>$=$JSLucvZC1!Zg^=+uvYcrLGKpvgs9n&!$O|C5el0+0s%SMfD#~+>wlja$b z8QT=$H>SsBvXLO;xCeeh-fb|_UkF0sg+a9fXHZ%27oj6QDeci{$r^Fe9RLKPRx5nt zv5|5tE8x7NP5XMFS86i0Vn_mDy>qL`?aYAEqKlrftR00*M^peKmm5Q;`WJYTFVK!V_N%Mb^k_LhI7l;1J?% zpT*rYMTtg~UnQcC#dQav#r0a|Os{}Hh$AE?E!D0yHbO17%a-_p_{0#65%Z{;V9a5f z_b1f`G*^(2G;XOCOr-ry$BTO4Pr8uEl@QHdnE#NxU0i<>{9) zB6di_Nmi07c9F`1QYHytB)EvO_6P4U63eEbCVYupO>w88#j3*Es-lvkX(31PHR`FQ?IsvgB~^ zYA;9SdnJjXAs(X>!KlBWC!k^^1n=>ZJ}icoo)RG)E{_iJf2wJI<$bLwant+5fZuL~ zhK41^@5l^LjaE%HfP3O;o8D+&gSK2lDz$k*Rry>XJ@baqsXeeDEMRgyqMN;i(fCQm z-eF)mW1n+D9`cHczD^^pX&w8m8E0UA{p5oM))+l?bV$>??hJUdp3vYV_#b|DTlH59 z?vXG|MOzuz_I_5qoInp@Fq}NYAeulldX}Kmag*0-_r)6j?H-GpOnokXBgFwk#ZMJrY6w;+ zRn4BgbYPlzDp?p1SJ4FW6AKA*W_=8IE^PIdIRXIN%i}yEA5wf%6{a?+Qh7605wX8o zlbX&=Tez#dDEUz>!|PcN%m)g)TQ_{v?O2Z7Liz~bIwX+|l(BU7 z=k2LsVTh_&BT+a4Dg$kURdpa032q!v-QFgXilc8x;_nT7R8*niq?*cD1-sqnF+TNtADmV+PEN4 zgsPrlV+09~yqjC;;U0FnFFiph6b;Ai3Xb7MHJ%7NYjmZMXjL@-s5O?I^%~F#uAv>$ zZz@l{WY@bMe*46&|BG!XxO#!>u$Fuiak`B7>FhwlN#q83Eg}5#6ONEfd(@%0asERu z_hYYEIORvpJA<4*pf>{WO5h@!{kd>jIdR{WYO9QazeX9?<-(4v&9jLpp#OK{5>FT< zM;X@Nd&=4@u&*e-YKBEiGZsU74aR;ZUYSTSByVQcoO99O z+P=YZ!BBb}x+Qe!@L?ET+nEW2!xb(PR)V!*+CB@{{@L93C$VSI2kxv4j$ii?CEF+X zhZ9T-q}4L^{1#*@3bMy)kLU{Ya2)$4!B`)ii{0}JZlV0VTekEw&VZbm z?L1B0!CtMcZ8V%Nrb17*d z%gA-XlxMC=VjD{vWwR!R62lxI@(x-xBEvu1A zus)GYIq~!cRW%2syCWEffR~Lk_KgRK_@MbjHkb^Kuf!oU{t}ef_d4X0J^?Dlga{7;iGV{fE!2=YsLU5uw;6(pKR+}dkpvzgc zK^Pw=2tyx9E%ys8gVgTvIBgZQAlT`SI8&%_OrMG!*-My!v$FjRv{49Hw;Jb_eDEfD zMf}g5M0=@-y6#61xPNvN?f*Gp`0uLbKSZG>ju)Yy2}x|kcOQw03k00qz8zSF3?@XZ z{VxhVv9f9K)uAIA-fvOjoLOb1hM|}|ceXz>E1$rIv6W(E%*awK3#&N`jpl*k7Lu~- z%Ga{RtPXTHQmTFK>dLYxkwWISg{LyFp{XYKXp613sjzoQ>L;`FpjCvS69fppHmhEN zYnb*e=6@>3xZOb>t~&wJnAQORF2u-3K?kwle}VF`4OcIqoNmc%!G;r*KOp||SJIqD zg0%dR&tLzu@~Qg&-fq=&RZ*qUzPyu|I^d9+=xC#o)EALLjWh>gJF9RbARwDLs?#o1 zS=q)$nNWSa#qu9_UaF7WYSsyN6&n}tA45c%7oP(C&ICT6&Tcl}pWXw$z?r})!wv8z ziV+VeDDI{DmPbp{{Kxh*@mA(jB2m5M4oor1VYp&hDa_?^%uZbfxRjdqBz7H-TCowh z+g|YPN5&uQIN>(6WRR);JV&m>iN;&|%$<@AkW;46XM417V7QaD?>CS0imWHXkUK#8 zEIo)jBe~}el8*&P{27N0E`z}I6w*;~$$J7({2Z>=SfieQwdV@NT({4L47@EC>s{ub zjL|odTIomco4xT2)QVY257pbB5FjR}bnOU;l~v5=>}y8IDO~NsY@+qEINW-6iK;arCJr^cTW=?BxpQl~88Mdh*PN6>sJArx=6scdX^T}#Wu16IVD z+Q!hIp|Y@{wyCeXn@bkC7z6iejwP#U86I(od#7m0i{V~qx(BJ`f%g%IumtGUJ(Zm6 z_rhax>gy-0(9ZbD>-lo{V_#(dQ|U3Iwd!YEYGsU=g1*fM**_huJXRX9=(TNd#P5Atd>0`j`2)nh8ctN!Ph-`&(#X zx#QIaB?39cE;7J6DMM2fQPltb9ZdyGGb|fs_B+rF!@?ZBSb8y|Sza!yxiz*`exn4w zyL=Uj%&O)&jl*vJ(f_ql@So!8!m|I#CDVj>^i|X8K#oh#>-2l~&XKRnZg)VhAG{F# z7fs(|5kguFeLXpusiz_9m=gytvFKkgQuVRi7;WJR=xFqsDld7cAWT)LT4UMk&v{SVpGU_z6#B#)dUY)0Bhc%OP=! zcQjr9tnMG*XE$9jTDobQ-l-2u99;8-u!fvl%`zs=f9W6Ts6 z?H(WkqtYw-VG*n3V(t$OT(M5wHo4punStYhRQ#CHBPJjs=0sdTU zUpF*;;S%hv#G|li3u+mKP~;?Vky*Bpr8!lZPMSo$#SNCbE|)z5#1b<*PYF1^e2cnw z)(AW6Xa*oy$5ANW%C`_)*YfA`Kde;3j^Ex91|J}-V?LxO@WdNom&RYBi_Q+BvtSxz zWWNBvwM}f8E~sCS`VQtPa_1jqMKC0}k&AV;FlpbyD3R3f$OjmHt}L5gj+-68Lsjb9 zS+uK(q+@-l4KX77MJTN)<`AhUJbE*GS?Kvqu%sr*uFD!3&6ifcrNfm_yE-{T4Vz** zjdP}rfeXSi86vDG*i@$VV9h6rOITh{Da-rA@An=pJUCSv_J!c zivs2p3yZfHA_^81am6PWCDgYHY*k-ilA|8t)fCt;+L|GXd&$%4!>BHaTaP<3)VWhy zr5Fc~=cWrRVNdlraMi{?-~IxDm*@+XS?979p*2HrIOppNB9>3hi0^LB1y4XK>Mx`! zBalY>%Kk#YGVD!}N!uv`JnPR_X1sPnT)Zb&|%Jz}fLQ(PbWp&3J zy|XREWb68s6KLM*cTw*Ff~e(aPld~au)BsLe!hzDs~8w(1pJ;}If!P7RdO@tjIRJr zQ*>6`Ti;8~6(I`K6K{j!U$Dz#PxV4vOZ|fEUu}ps0OKE&PveOxsCw(tRlbW!*WYXE zuwyaa+h0fSTd>RdQWLU6{lbs>1ssraO9>t@{L7q`=UZr&KPW$4ji7Rj?j-d$jxeB} z=RK^2s->krg{m~Y@cG{Y^K&@n`HCh%32U`Pah937ZFQye1$cD9go78ypC{#-@N1XH z(i=P*jC76tzMAoV*&CaZ|E8$wL2c@YfJ7hH8g6$*SAp{EwxDyuz;VOq{{i znBnwHb~%YKSbHElbMG%*N9djA)k_5dJjX3D-pQO!fJN3JS7_d!ojexJiOHk+=(LWV z+Lo_UXrIc{GmN%mBkzwZI5lTSu#_o~*)N7puwhBucK&DgxTb%s7dq=jzCOuxpW2j* z$n?w-n#@JmG8qqi(~4uAQ%;>dWm3z`Np1@4jAKch`xIL^X9YWcqf7GN?+njtH(U5T z>vL<1cx3}G-`IHzT_lwBx}@{<0keIU)4|2eWxnt$xyzbl@INXFm z&|Q($0BWgsOc4jlQ+$^KGfW+c46V*tBc{`>(-O*He^7#+!n}eZY|~#73E0#@|6nxa zggfGL91E;*I#4;kG4h1{jeyq}tG!`q`7_#I1-$gwq?K5P?D6lZaAFp`JtI{~O&g#~ zjahw-X_q7EE08>lS*I=r-EGl5oO%S-RiorC_vmP$Oc*;YB~tJRNgk8sb^K5|VIyth zWxw!hSS+gzQ_7XP=uLdI&#KyK6ZGmx?gu}*sN^<3c%!wFwrCn5oERI27!D(mQx@74 zE}houdqJ)S{0Y)v!bLg89e1iHFTas z$S@?9ob$+(IsF5pky1IAk||f_5GL*pyqDGLBRg7XrxfSJo&>#(=ob5jT#bVGb7;o$ zzk>pQpaQ>FW{dK3Ng{MkCUou}m$K+f)>KO1)rIo$1fOFc-}4WH=@UH&!>-N@a)7Wo zt7HeG+WMzpf?wmOTEX=It5rXuJWVlu^sv2YQez_$>^{4W93G;|woy~x(;b-N#BFVzg zig3?vdspIb+GK=ZzTh^PkVH(BK+V-M0-8x5mC= z9h)2|xx|$0*hqkr)ykT@{?DbZO1b-{d}&Ji zhpvY=I+mdm>V+BPEm*N9@bt9we{jJgZG+@m`$(qEWDzwe`(6*yv3DoTw&l!19L`cc zx*8mQpkS9|+T5}6NbxE-?_5Q{fp-P}uSyAMz$Tm!2*^?b2uSXKtWx?vHPMgBK4qyz z@MPMwXY5cGiWoS2ssM@@8X}<-LbwqaRGSGk?Ke)iDT)LItCM+uQHyoeke@hhMLRBL zihL50MyFL(OHEDPg^k}<^ZWhVc~#45*LTOxq$vtSNE&6YuLtkHZI@~Oi|zy5Z{IU? zlB^m8+>cB-n%#>dmtffZ85z55U;C69`TGuSfwuNjpdFf)jYF3|eID&p8|NLW0v;VN z_C1o;8)k(*@I5oTGuXZX5I^iC1Ox<&7vv4w3ovHvkuJRd>=r?GN&=#)Mb&;9qXa z=)DyAbufOvlCM|vo5Ocz!IGG71J$wHyb^(Yw{|&mKj1N!9xzKkr{umcdd+Uz^be12 zpfVkFZ%w<%^}mg7J@gmpM8QA!gL`j^qF*8JUkiy|NQ1vwlLICNo$h!)ekpua*1ubT zyt@Pk>>d8X`KXPSc<^EPLjPVDzxoIg`WPPSJ=&4J`p57E`mIdyA#EMN@zSf0w%7YJ z(CPM<{)fP~1IBl(;OKtuL-_q`c%LNe+7RJbNn|f$Y9y=L+WlDMg7tfgY^+j87!Gx}7mHbn>X8Ye`mS2>5s(4L zA{ORW)pUX|r;?^gDTjiJ-yPRt2uNS!vSURHFUnoGu^BW_onRyN?D>eqv?bl<5;~NdVQ`C(#Pbt_ z{+ilWeP>T;Ls?~mwtE9}tn{-6eNCm#_I{-Uz)DYD*#_0f5Qi9*y)3wiC1X>Te>?3w zsw^sPC~rOMEvhps4IO^FY$%Uiq<#2@d2mbdGC|%2@|6p;v9i`%Q0Z-qtEA$`@6l>! zoz>AOj9#zL%Ph8FsMSByx1O4+uCmnI-hZmDK{maVD`tyB&nru#Kt!s1SX}nDD{AB7 zz-~N7hzs2L8P=wf=46zK&K{eUlQzB{1{g%B$4y}JvlTMHu+myf(F#xB%P>x)-_Bq} zv4L@Yy8!7U5}QH`LIHtBp|b|vW3dXR5FN(#yOJ|W7LDyu(rs@lYFQ$T9qyBW%2=%8 zcp(}WE@P#?McUP^>9N#?0XmL}dC?unCVI|TpWP;Sik2FAPlG6mti`JkV?#n%dKD3f zpjd#TukB&@bpa8ey@ge3TUBLTstciktw4x;yc;r1}T#>IM8zw3J<&KCk1=zi(hW{fK!dqiq1y@t_9?wV84rLN`8 z!j?5fr}@SFsKg}y@&;!<11lS!HBeA3S2=rjQ&Eq+KbGO-8jKfBQZW-rIezROGs3K+ z*vH&;!Rm*wD&AaFqH=Ss$}QGfSdUIX1!-#`b@df>v&vh>Vy6re3l{=shXHQ0L_j&B zH|qHQ(`M!C))Yt(#}*cwkAKhpd%`zC%BREt+18C?UxVvCNA<#`4J z7dJ#{y_sXHWkpNTKe7-;`(+wc$_U<5sIZmyph~V-LcK-MjrreaZawTy#!RF`8;cN+ z%BH%}IUqQ)DwKwyccK~*Hyz|1C#QuF?lzkJqZ)9c$6z0F6Td?rzEj!5jC&n>3K^Id zK};D&SK#u3LcpVt@7~vw@G502ek*3mw$cZ3WK^SOtQJng?s@16=~h^c5a`&uVj(S5 ztNy}z9>+a}dNtl6;n^w&Zc(-9Edj^vG_l*8BDM=ML}4ZQ%D^IfCOrv`Oc;<#z55`U zS!d&OIu~8Y%EykNn9Azb_nEu&G&KXy9{tY5S*U(+IBQlivA-2hc8B_dS%aQz9R0Em ze+`MF-y^jsh!vKv&&G!Ek4{!H>uduJii2Xzr53Txt_2YHq)R)OAb`bGb-td{Pj@7l zU>HAq0z90>$&(fbk}+QWytvx)_1HL~1Pkv*oP2Xo`PGI<(!{>!j^u}dFIb8kIYE$w z^xNv9c%Ug{yasw^Pp8*yHn!c@yL61zd=jZICyk*`;qN3`#t~&)g933GT8E0RIb5xv z>@s3b&yyfWovf{Io~@o9+tnfJ>EPrVtIBOYDg3w9!1thJZR;f7rdRDHU)w2|#HUz? zqH(HM`Kxc@C@-TW{4gqUI_D<7RV=LQ9yCQBtt+cMFGQ@y8Zsp6gG1!cA2iTFQ)NG& ze}u&4o!w(H-*)sM>%CG^H@_msBl3&s?B8Df}@HBG#Z`F!0OC&g#lwlNMX-)iM00@%g}vMRl1i&Bn@ zMHWC|Df^K(kV6%|Ln>mcB!7NJZs{+oe2a*_DL|sq%d4m`ORh!b=iaWDNW{7&2q({p zk9uOCCg8!nVgVV2o$@Wxc41>FrfrVF=olC>))_RE&REvb>(i&<4kLru8#el7w-5y?Ue1 zqp#(R%33u|?DOQZP948-wUr7OQGFZ0#bUYq6SiA-p*_=*#S%v{Z^xh-C%{gQRe_xk z)4hguQNFA*vkJ~Fy3$^~jd+K7>FOMTjK8c?RqcVnjdS5q6=qZ34e=z)H;wAAyW5Sl zTpeE4<#Bc9cC)#+nTfdH()?MTwdxk-xnJp9PT@5s#3j>`!es%0A#ad`Dt`rm%*gNd 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

=*a;ZOM$N4=?k7!fi0r{ej#%WK9jwnh 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 Date: Thu, 14 Aug 2025 09:54:10 +0800 Subject: [PATCH 098/155] =?UTF-8?q?update=20warm-flow=20=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=201.8.0=20=E6=AD=A3=E5=BC=8F=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9f15df951..275c7d8b0 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ 8.7.2-20250603 - 1.8.0-m3 + 1.8.0 2.3.0 -- Gitee From 1b07733a124447b16c43569dcbae54b9b362d8a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 14 Aug 2025 09:54:34 +0800 Subject: [PATCH 099/155] update snailjob 1.7.0 => 1.7.2 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 275c7d8b0..99b736a57 100644 --- a/pom.xml +++ b/pom.xml @@ -32,7 +32,7 @@ 5.8.38 3.50.0 2.2.7 - 1.7.0 + 1.7.2 1.44.0 1.18.38 7.4 -- Gitee From d1d5336762e1d6dd6e042edf82d6c08fd73ff0d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8A=B1=E7=94=9F=E7=B1=B3?= <1769704852@qq.com> Date: Thu, 14 Aug 2025 09:35:23 +0000 Subject: [PATCH 100/155] =?UTF-8?q?!236=20build(docker):=20=E4=B8=BA=20ELK?= =?UTF-8?q?=20=E6=9C=8D=E5=8A=A1=E6=B7=BB=E5=8A=A0=E6=97=B6=E5=8C=BA?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=20*=20build(docker):=20=E4=B8=BA=20ELK=20?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=B7=BB=E5=8A=A0=E6=97=B6=E5=8C=BA=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/docker/docker-compose.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/script/docker/docker-compose.yml b/script/docker/docker-compose.yml index 4b982766b..94a40b58d 100644 --- a/script/docker/docker-compose.yml +++ b/script/docker/docker-compose.yml @@ -289,6 +289,8 @@ services: - "9200:9200" - "9300:9300" environment: + # 时区上海 + TZ: Asia/Shanghai # 设置集群名称 cluster.name: elasticsearch # 以单一节点模式启动 @@ -309,6 +311,8 @@ services: # kibana在elasticsearch启动之后再启动 - elasticsearch environment: + # 时区上海 + TZ: Asia/Shanghai #设置系统语言文中文 I18N_LOCALE: zh-CN # 访问域名 @@ -322,6 +326,9 @@ services: container_name: logstash ports: - "4560:4560" + environment: + # 时区上海 + TZ: Asia/Shanghai volumes: - /docker/elk/logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf - /docker/elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml -- Gitee From e878adb6e8bb4fd9d6fcf8d8c166f5dbd7602c13 Mon Sep 17 00:00:00 2001 From: Lau Date: Thu, 14 Aug 2025 11:12:59 +0000 Subject: [PATCH 101/155] =?UTF-8?q?!237=20update=20=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B3=A8=E9=87=8A=E6=9B=B4=E6=AD=A3=E6=94=B9?= =?UTF-8?q?=E4=B8=BA1=20*=20update=20=E9=80=BB=E8=BE=91=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E6=9B=B4=E6=AD=A3=E6=94=B9=E4=B8=BA1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/system/domain/SysClient.java | 2 +- .../java/org/dromara/system/domain/SysDept.java | 2 +- .../java/org/dromara/system/domain/SysRole.java | 2 +- .../java/org/dromara/system/domain/SysTenant.java | 2 +- .../dromara/system/domain/SysTenantPackage.java | 2 +- .../java/org/dromara/system/domain/SysUser.java | 2 +- script/sql/oracle/oracle_ry_cloud.sql | 14 +++++++------- script/sql/postgres/postgres_ry_cloud.sql | 14 +++++++------- script/sql/ry-cloud.sql | 14 +++++++------- script/sql/update/oracle/update_2.0-2.1.sql | 4 ++-- script/sql/update/postgres/update_2.0-2.1.sql | 4 ++-- script/sql/update/update_2.0-2.1.sql | 4 ++-- 12 files changed, 33 insertions(+), 33 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysClient.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysClient.java index c659470a8..426bc00a9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysClient.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysClient.java @@ -70,7 +70,7 @@ public class SysClient extends BaseEntity { private String status; /** - * 删除标志(0代表存在 2代表删除) + * 删除标志(0代表存在 1代表删除) */ @TableLogic private String delFlag; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java index 71a5517d7..61b9a913c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java @@ -74,7 +74,7 @@ public class SysDept extends TenantEntity { private String status; /** - * 删除标志(0代表存在 2代表删除) + * 删除标志(0代表存在 1代表删除) */ @TableLogic private String delFlag; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRole.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRole.java index fc5f4f2e4..ad97832fc 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRole.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRole.java @@ -62,7 +62,7 @@ public class SysRole extends TenantEntity { private String status; /** - * 删除标志(0代表存在 2代表删除) + * 删除标志(0代表存在 1代表删除) */ @TableLogic private String delFlag; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java index 94e523092..330a874d8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java @@ -95,7 +95,7 @@ public class SysTenant extends BaseEntity { private String status; /** - * 删除标志(0代表存在 2代表删除) + * 删除标志(0代表存在 1代表删除) */ @TableLogic private String delFlag; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenantPackage.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenantPackage.java index 5556d9ff7..48c0d789f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenantPackage.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenantPackage.java @@ -48,7 +48,7 @@ public class SysTenantPackage extends BaseEntity { */ private String status; /** - * 删除标志(0代表存在 2代表删除) + * 删除标志(0代表存在 1代表删除) */ @TableLogic private String delFlag; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java index 4e603e551..3712f805f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java @@ -83,7 +83,7 @@ public class SysUser extends TenantEntity { private String status; /** - * 删除标志(0代表存在 2代表删除) + * 删除标志(0代表存在 1代表删除) */ @TableLogic private String delFlag; diff --git a/script/sql/oracle/oracle_ry_cloud.sql b/script/sql/oracle/oracle_ry_cloud.sql index e83d75fd2..5a599aabe 100644 --- a/script/sql/oracle/oracle_ry_cloud.sql +++ b/script/sql/oracle/oracle_ry_cloud.sql @@ -65,7 +65,7 @@ comment on column sys_social.create_by is '创建者'; comment on column sys_social.create_time is '创建时间'; comment on column sys_social.update_by is '更新者'; comment on column sys_social.update_time is '更新时间'; -comment on column sys_social.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_social.del_flag is '删除标志(0代表存在 1代表删除)'; -- ---------------------------- -- 租户表 @@ -108,7 +108,7 @@ comment on column sys_tenant.package_id is '租户套餐编号'; comment on column sys_tenant.expire_time is '过期时间'; comment on column sys_tenant.account_count is '用户数量(-1不限制)'; comment on column sys_tenant.status is '租户状态(0正常 1停用)'; -comment on column sys_tenant.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_tenant.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_tenant.create_dept is '创建部门'; comment on column sys_tenant.create_by is '创建者'; comment on column sys_tenant.create_time is '创建时间'; @@ -148,7 +148,7 @@ comment on column sys_tenant_package.package_name is '套餐名称'; comment on column sys_tenant_package.menu_ids is '关联菜单id'; comment on column sys_tenant_package.remark is '备注'; comment on column sys_tenant_package.status is '状态(0正常 1停用)'; -comment on column sys_tenant_package.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_tenant_package.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_tenant_package.create_dept is '创建部门'; comment on column sys_tenant_package.create_by is '创建者'; comment on column sys_tenant_package.create_time is '创建时间'; @@ -193,7 +193,7 @@ comment on column sys_dept.leader is '负责人'; comment on column sys_dept.phone is '联系电话'; comment on column sys_dept.email is '邮箱'; comment on column sys_dept.status is '部门状态(0正常 1停用)'; -comment on column sys_dept.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_dept.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_dept.create_dept is '创建部门'; comment on column sys_dept.create_by is '创建者'; comment on column sys_dept.create_time is '创建时间'; @@ -257,7 +257,7 @@ comment on column sys_user.sex is '用户性别(0男 1女 2未知)' comment on column sys_user.avatar is '头像路径'; comment on column sys_user.password is '密码'; comment on column sys_user.status is '帐号状态(0正常 1停用)'; -comment on column sys_user.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_user.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_user.login_ip is '最后登录IP'; comment on column sys_user.login_date is '最后登录时间'; comment on column sys_user.create_dept is '创建部门'; @@ -356,7 +356,7 @@ comment on column sys_role.data_scope is '数据范围(1:全部 comment on column sys_role.menu_check_strictly is '菜单树选择项是否关联显示'; comment on column sys_role.dept_check_strictly is '部门树选择项是否关联显示'; comment on column sys_role.status is '角色状态(0正常 1停用)'; -comment on column sys_role.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_role.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_role.create_dept is '创建部门'; comment on column sys_role.create_by is '创建者'; comment on column sys_role.create_time is '创建时间'; @@ -1347,7 +1347,7 @@ comment on column sys_client.device_type is '设备类型'; comment on column sys_client.active_timeout is 'token活跃超时时间'; comment on column sys_client.timeout is 'token固定超时'; comment on column sys_client.status is '状态(0正常 1停用)'; -comment on column sys_client.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_client.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_client.create_dept is '创建部门'; comment on column sys_client.create_by is '创建者'; comment on column sys_client.create_time is '创建时间'; diff --git a/script/sql/postgres/postgres_ry_cloud.sql b/script/sql/postgres/postgres_ry_cloud.sql index 52077f413..bcee65302 100644 --- a/script/sql/postgres/postgres_ry_cloud.sql +++ b/script/sql/postgres/postgres_ry_cloud.sql @@ -64,7 +64,7 @@ comment on column sys_social.create_by is '创建者'; comment on column sys_social.create_time is '创建时间'; comment on column sys_social.update_by is '更新者'; comment on column sys_social.update_time is '更新时间'; -comment on column sys_social.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_social.del_flag is '删除标志(0代表存在 1代表删除)'; -- ---------------------------- -- 租户表 @@ -109,7 +109,7 @@ comment on column sys_tenant.package_id is '租户套餐编号'; comment on column sys_tenant.expire_time is '过期时间'; comment on column sys_tenant.account_count is '用户数量(-1不限制)'; comment on column sys_tenant.status is '租户状态(0正常 1停用)'; -comment on column sys_tenant.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_tenant.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_tenant.create_dept is '创建部门'; comment on column sys_tenant.create_by is '创建者'; comment on column sys_tenant.create_time is '创建时间'; @@ -151,7 +151,7 @@ comment on column sys_tenant_package.package_name is '套餐名称'; comment on column sys_tenant_package.menu_ids is '关联菜单id'; comment on column sys_tenant_package.remark is '备注'; comment on column sys_tenant_package.status is '状态(0正常 1停用)'; -comment on column sys_tenant_package.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_tenant_package.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_tenant_package.create_dept is '创建部门'; comment on column sys_tenant_package.create_by is '创建者'; comment on column sys_tenant_package.create_time is '创建时间'; @@ -196,7 +196,7 @@ comment on column sys_dept.leader is '负责人'; comment on column sys_dept.phone is '联系电话'; comment on column sys_dept.email is '邮箱'; comment on column sys_dept.status is '部门状态(0正常 1停用)'; -comment on column sys_dept.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_dept.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_dept.create_dept is '创建部门'; comment on column sys_dept.create_by is '创建者'; comment on column sys_dept.create_time is '创建时间'; @@ -259,7 +259,7 @@ comment on column sys_user.sex is '用户性别(0男 1女 2未知)' comment on column sys_user.avatar is '头像地址'; comment on column sys_user.password is '密码'; comment on column sys_user.status is '帐号状态(0正常 1停用)'; -comment on column sys_user.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_user.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_user.login_ip is '最后登陆IP'; comment on column sys_user.login_date is '最后登陆时间'; comment on column sys_user.create_dept is '创建部门'; @@ -358,7 +358,7 @@ comment on column sys_role.data_scope is '数据范围(1:全部数 comment on column sys_role.menu_check_strictly is '菜单树选择项是否关联显示'; comment on column sys_role.dept_check_strictly is '部门树选择项是否关联显示'; comment on column sys_role.status is '角色状态(0正常 1停用)'; -comment on column sys_role.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_role.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_role.create_dept is '创建部门'; comment on column sys_role.create_by is '创建者'; comment on column sys_role.create_time is '创建时间'; @@ -1345,7 +1345,7 @@ comment on column sys_client.device_type is '设备类型'; comment on column sys_client.active_timeout is 'token活跃超时时间'; comment on column sys_client.timeout is 'token固定超时'; comment on column sys_client.status is '状态(0正常 1停用)'; -comment on column sys_client.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_client.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_client.create_dept is '创建部门'; comment on column sys_client.create_by is '创建者'; comment on column sys_client.create_time is '创建时间'; diff --git a/script/sql/ry-cloud.sql b/script/sql/ry-cloud.sql index e83122f87..8cd3fcbe3 100644 --- a/script/sql/ry-cloud.sql +++ b/script/sql/ry-cloud.sql @@ -31,7 +31,7 @@ create table sys_social create_time datetime comment '创建时间', update_by bigint(20) comment '更新者', update_time datetime comment '更新时间', - del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', + del_flag char(1) default '0' comment '删除标志(0代表存在 1代表删除)', PRIMARY KEY (id) ) engine=innodb comment = '社会化关系表'; @@ -54,7 +54,7 @@ create table sys_tenant expire_time datetime comment '过期时间', account_count int default -1 comment '用户数量(-1不限制)', status char(1) default '0' comment '租户状态(0正常 1停用)', - del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', + del_flag char(1) default '0' comment '删除标志(0代表存在 1代表删除)', create_dept bigint(20) comment '创建部门', create_by bigint(20) comment '创建者', create_time datetime comment '创建时间', @@ -81,7 +81,7 @@ create table sys_tenant_package ( remark varchar(200) comment '备注', menu_check_strictly tinyint(1) default 1 comment '菜单树选择项是否关联显示', status char(1) default '0' comment '状态(0正常 1停用)', - del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', + del_flag char(1) default '0' comment '删除标志(0代表存在 1代表删除)', create_dept bigint(20) comment '创建部门', create_by bigint(20) comment '创建者', create_time datetime comment '创建时间', @@ -106,7 +106,7 @@ create table sys_dept ( phone varchar(11) default null comment '联系电话', email varchar(50) default null comment '邮箱', status char(1) default '0' comment '部门状态(0正常 1停用)', - del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', + del_flag char(1) default '0' comment '删除标志(0代表存在 1代表删除)', create_dept bigint(20) default null comment '创建部门', create_by bigint(20) default null comment '创建者', create_time datetime comment '创建时间', @@ -148,7 +148,7 @@ create table sys_user ( avatar bigint(20) comment '头像地址', password varchar(100) default '' comment '密码', status char(1) default '0' comment '帐号状态(0正常 1停用)', - del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', + del_flag char(1) default '0' comment '删除标志(0代表存在 1代表删除)', login_ip varchar(128) default '' comment '最后登录IP', login_date datetime comment '最后登录时间', create_dept bigint(20) default null comment '创建部门', @@ -212,7 +212,7 @@ create table sys_role ( menu_check_strictly tinyint(1) default 1 comment '菜单树选择项是否关联显示', dept_check_strictly tinyint(1) default 1 comment '部门树选择项是否关联显示', status char(1) not null comment '角色状态(0正常 1停用)', - del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', + del_flag char(1) default '0' comment '删除标志(0代表存在 1代表删除)', create_dept bigint(20) default null comment '创建部门', create_by bigint(20) default null comment '创建者', create_time datetime comment '创建时间', @@ -955,7 +955,7 @@ create table sys_client ( active_timeout int(11) default 1800 comment 'token活跃超时时间', timeout int(11) default 604800 comment 'token固定超时', status char(1) default '0' comment '状态(0正常 1停用)', - del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', + del_flag char(1) default '0' comment '删除标志(0代表存在 1代表删除)', create_dept bigint(20) default null comment '创建部门', create_by bigint(20) default null comment '创建者', create_time datetime default null comment '创建时间', diff --git a/script/sql/update/oracle/update_2.0-2.1.sql b/script/sql/update/oracle/update_2.0-2.1.sql index 0fbee5bc5..278149c70 100644 --- a/script/sql/update/oracle/update_2.0-2.1.sql +++ b/script/sql/update/oracle/update_2.0-2.1.sql @@ -67,7 +67,7 @@ comment on column sys_social.create_by is '创建者'; comment on column sys_social.create_time is '创建时间'; comment on column sys_social.update_by is '更新者'; comment on column sys_social.update_time is '更新时间'; -comment on column sys_social.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_social.del_flag is '删除标志(0代表存在 1代表删除)'; -- ---------------------------- @@ -103,7 +103,7 @@ comment on column sys_client.device_type is '设备类型'; comment on column sys_client.active_timeout is 'token活跃超时时间'; comment on column sys_client.timeout is 'token固定超时'; comment on column sys_client.status is '状态(0正常 1停用)'; -comment on column sys_client.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_client.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_client.create_dept is '创建部门'; comment on column sys_client.create_by is '创建者'; comment on column sys_client.create_time is '创建时间'; diff --git a/script/sql/update/postgres/update_2.0-2.1.sql b/script/sql/update/postgres/update_2.0-2.1.sql index 1556d8b30..882e544aa 100644 --- a/script/sql/update/postgres/update_2.0-2.1.sql +++ b/script/sql/update/postgres/update_2.0-2.1.sql @@ -66,7 +66,7 @@ comment on column sys_social.create_by is '创建者'; comment on column sys_social.create_time is '创建时间'; comment on column sys_social.update_by is '更新者'; comment on column sys_social.update_time is '更新时间'; -comment on column sys_social.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_social.del_flag is '删除标志(0代表存在 1代表删除)'; -- ---------------------------- @@ -102,7 +102,7 @@ comment on column sys_client.device_type is '设备类型'; comment on column sys_client.active_timeout is 'token活跃超时时间'; comment on column sys_client.timeout is 'token固定超时'; comment on column sys_client.status is '状态(0正常 1停用)'; -comment on column sys_client.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_client.del_flag is '删除标志(0代表存在 1代表删除)'; comment on column sys_client.create_dept is '创建部门'; comment on column sys_client.create_by is '创建者'; comment on column sys_client.create_time is '创建时间'; diff --git a/script/sql/update/update_2.0-2.1.sql b/script/sql/update/update_2.0-2.1.sql index 82253f464..9a5cd5e22 100644 --- a/script/sql/update/update_2.0-2.1.sql +++ b/script/sql/update/update_2.0-2.1.sql @@ -34,7 +34,7 @@ create table sys_social create_time datetime comment '创建时间', update_by bigint(20) comment '更新者', update_time datetime comment '更新时间', - del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', + del_flag char(1) default '0' comment '删除标志(0代表存在 1代表删除)', PRIMARY KEY (id) ) engine=innodb comment = '社会化关系表'; @@ -53,7 +53,7 @@ create table sys_client ( active_timeout int(11) default 1800 comment 'token活跃超时时间', timeout int(11) default 604800 comment 'token固定超时', status char(1) default '0' comment '状态(0正常 1停用)', - del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', + del_flag char(1) default '0' comment '删除标志(0代表存在 1代表删除)', create_dept bigint(20) default null comment '创建部门', create_by bigint(20) default null comment '创建者', create_time datetime default null comment '创建时间', -- Gitee From e67399c2c76f05b89c996bd14d696932da1e3f42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 15 Aug 2025 11:28:36 +0800 Subject: [PATCH 102/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E5=90=8E=E5=8F=B0=E5=8F=91=E8=B5=B7=E6=88=96?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E5=8F=AF=E4=BB=A5=E6=89=8B=E5=8A=A8=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=8A=9E=E7=90=86=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/domain/RemoteCompleteTask.java | 5 +++ .../api/domain/RemoteStartProcess.java | 5 +++ .../workflow/domain/bo/CompleteTaskBo.java | 5 +++ .../workflow/domain/bo/StartProcessBo.java | 5 +++ .../workflow/service/WorkflowService.java | 10 ++++++ .../service/impl/FlwTaskServiceImpl.java | 2 ++ .../service/impl/TestLeaveServiceImpl.java | 19 +++++------ .../service/impl/WorkflowServiceImpl.java | 33 +++++++++++++++++++ 8 files changed, 74 insertions(+), 10 deletions(-) diff --git a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteCompleteTask.java b/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteCompleteTask.java index aa21a3fb6..eedd2fcb2 100644 --- a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteCompleteTask.java +++ b/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteCompleteTask.java @@ -50,6 +50,11 @@ public class RemoteCompleteTask implements Serializable { */ private String notice; + /** + * 办理人(可不填 用于覆盖当前节点办理人) + */ + private String handler; + /** * 流程变量 */ diff --git a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteStartProcess.java b/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteStartProcess.java index f7f12a531..c7e9c109d 100644 --- a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteStartProcess.java +++ b/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteStartProcess.java @@ -30,6 +30,11 @@ public class RemoteStartProcess implements Serializable { */ private String flowCode; + /** + * 办理人(可不填 用于覆盖当前节点办理人) + */ + private String handler; + /** * 流程变量,前端会提交一个元素{'entity': {业务详情数据对象}} */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java index 360fc3b81..e24629352 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java @@ -53,6 +53,11 @@ public class CompleteTaskBo implements Serializable { */ private String notice; + /** + * 办理人(可不填 用于覆盖当前节点办理人) + */ + private String handler; + /** * 流程变量 */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java index ea21a81e7..0c3a65720 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java @@ -34,6 +34,11 @@ public class StartProcessBo implements Serializable { @NotBlank(message = "流程定义编码不能为空", groups = {AddGroup.class}) private String flowCode; + /** + * 办理人(可不填 用于覆盖当前节点办理人) + */ + private String handler; + /** * 流程变量,前端会提交一个元素{'entity': {业务详情数据对象}} */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java index 3fde86c0e..293286256 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java @@ -78,6 +78,8 @@ public interface WorkflowService { /** * 办理任务 + * 系统后台发起审批 无用户信息 需要忽略权限 + * completeTask.getVariables().put("ignore", true); * * @param completeTask 参数 * @return 结果 @@ -89,7 +91,15 @@ public interface WorkflowService { * * @param taskId 任务ID * @param message 办理意见 + * @return 结果 */ boolean completeTask(Long taskId, String message); + /** + * 启动流程并办理第一个任务 + * + * @param startProcess 参数 + * @return 结果 + */ + boolean startCompleteTask(RemoteStartProcess startProcess); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index afd4492c0..db4a7d80c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -128,6 +128,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { variables.put(FlowConstant.AUTO_PASS, autoPass); FlowParams flowParams = FlowParams.build() + .handler(startProcessBo.getHandler()) .flowCode(startProcessBo.getFlowCode()) .variable(startProcessBo.getVariables()) .flowStatus(BusinessStatusEnum.DRAFT.getStatus()); @@ -187,6 +188,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { } // 构建流程参数,包括变量、跳转类型、消息、处理人、权限等信息 FlowParams flowParams = FlowParams.build() + .handler(completeTaskBo.getHandler()) .variable(variables) .skipType(SkipType.PASS.getKey()) .message(completeTaskBo.getMessage()) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index a7c93a701..acae9d551 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -132,16 +132,15 @@ public class TestLeaveServiceImpl implements ITestLeaveService { bo.setId(leave.getId()); // 后端发起需要忽略权限 bo.getParams().put("ignore", true); - RemoteStartProcessReturn result = workflowService.startWorkFlow(new RemoteStartProcess() {{ - setBusinessId(leave.getId().toString()); - setFlowCode(StringUtils.isEmpty(bo.getFlowCode()) ? "leave1" : bo.getFlowCode()); - setVariables(bo.getParams()); - }}); - boolean flag1 = workflowService.completeTask(new RemoteCompleteTask() {{ - setTaskId(result.getTaskId()); - setMessageType(List.of("1")); - setVariables(bo.getParams()); - }}); + + RemoteStartProcess startProcess = new RemoteStartProcess(); + startProcess.setBusinessId(leave.getId().toString()); + startProcess.setFlowCode(StringUtils.isEmpty(bo.getFlowCode()) ? "leave1" : bo.getFlowCode()); + startProcess.setVariables(bo.getParams()); + // 后端发起 如果没有登录用户 比如定时任务 可以手动设置一个处理人id + // startProcess.setHandler("0"); + + boolean flag1 = workflowService.startCompleteTask(startProcess); if (!flag1) { throw new ServiceException("流程发起异常"); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java index f55e4810e..479fd41a4 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -3,12 +3,14 @@ package org.dromara.workflow.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.StringUtils; import org.dromara.warm.flow.orm.entity.FlowInstance; import org.dromara.workflow.api.domain.RemoteCompleteTask; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.common.enums.MessageTypeEnum; import org.dromara.workflow.domain.bo.CompleteTaskBo; import org.dromara.workflow.domain.bo.StartProcessBo; import org.dromara.workflow.service.IFlwDefinitionService; @@ -17,6 +19,7 @@ import org.dromara.workflow.service.IFlwTaskService; import org.dromara.workflow.service.WorkflowService; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -148,4 +151,34 @@ public class WorkflowServiceImpl implements WorkflowService { return flwTaskService.completeTask(completeTask); } + /** + * 启动流程并办理第一个任务 + * + * @param startProcess 参数 + */ + @Override + public boolean startCompleteTask(RemoteStartProcess startProcess) { + try { + StartProcessBo processBo = new StartProcessBo(); + processBo.setBusinessId(startProcess.getBusinessId()); + processBo.setFlowCode(startProcess.getFlowCode()); + processBo.setVariables(startProcess.getVariables()); + processBo.setHandler(startProcess.getHandler()); + + RemoteStartProcessReturn result = flwTaskService.startWorkFlow(processBo); + CompleteTaskBo taskBo = new CompleteTaskBo(); + taskBo.setTaskId(result.getTaskId()); + taskBo.setMessageType(Collections.singletonList(MessageTypeEnum.SYSTEM_MESSAGE.getCode())); + taskBo.setVariables(startProcess.getVariables()); + taskBo.setHandler(startProcess.getHandler()); + + boolean flag = flwTaskService.completeTask(taskBo); + if (!flag) { + throw new ServiceException("流程发起异常"); + } + return true; + } catch (Exception e) { + throw new ServiceException(e.getMessage()); + } + } } -- Gitee From 643fead8f44fe9d89c5ed95e379b2694bbcc1780 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 15 Aug 2025 14:04:48 +0800 Subject: [PATCH 103/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=A0=81=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/auth/service/impl/PasswordAuthStrategy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/service/impl/PasswordAuthStrategy.java b/ruoyi-auth/src/main/java/org/dromara/auth/service/impl/PasswordAuthStrategy.java index 53476f939..627678a4e 100644 --- a/ruoyi-auth/src/main/java/org/dromara/auth/service/impl/PasswordAuthStrategy.java +++ b/ruoyi-auth/src/main/java/org/dromara/auth/service/impl/PasswordAuthStrategy.java @@ -98,7 +98,7 @@ public class PasswordAuthStrategy implements IAuthStrategy { loginService.recordLogininfor(tenantId, username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); throw new CaptchaExpireException(); } - if (!code.equalsIgnoreCase(captcha)) { + if (!StringUtils.equalsIgnoreCase(code, captcha)) { loginService.recordLogininfor(tenantId, username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")); throw new CaptchaException(); } -- Gitee From 0ed79627b6a85a1b4eacc9d88fc7313c7b5aa7cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 15 Aug 2025 16:30:33 +0800 Subject: [PATCH 104/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=A0=81=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/dromara/auth/service/SysLoginService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/org/dromara/auth/service/SysLoginService.java index 59af7ccca..da36aaee1 100644 --- a/ruoyi-auth/src/main/java/org/dromara/auth/service/SysLoginService.java +++ b/ruoyi-auth/src/main/java/org/dromara/auth/service/SysLoginService.java @@ -174,7 +174,7 @@ public class SysLoginService { recordLogininfor(tenantId, username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); throw new CaptchaExpireException(); } - if (!code.equalsIgnoreCase(captcha)) { + if (!StringUtils.equalsIgnoreCase(code, captcha)) { recordLogininfor(tenantId, username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")); throw new CaptchaException(); } -- Gitee From 943d8b0f6f583d20d4c8f97ca2db759a87a5c877 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sat, 16 Aug 2025 11:41:22 +0800 Subject: [PATCH 105/155] =?UTF-8?q?add=20=E5=A2=9E=E5=8A=A0=20=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E4=B8=9A=E5=8A=A1=E6=89=A9=E5=B1=95=E8=A1=A8=20flow?= =?UTF-8?q?=5Finstance=5Fbiz=5Fext?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/FlowConstant.java | 5 ++ .../workflow/domain/FlowInstanceBizExt.java | 59 +++++++++++++++++++ .../dromara/workflow/domain/TestLeave.java | 5 ++ .../domain/bo/FlowInstanceBizExtBo.java | 46 +++++++++++++++ .../workflow/domain/bo/StartProcessBo.java | 5 ++ .../workflow/domain/bo/TestLeaveBo.java | 5 ++ .../workflow/domain/vo/FlowHisTaskVo.java | 12 ++++ .../domain/vo/FlowInstanceBizExtVo.java | 58 ++++++++++++++++++ .../workflow/domain/vo/FlowInstanceVo.java | 12 ++++ .../workflow/domain/vo/FlowTaskVo.java | 12 ++++ .../workflow/domain/vo/TestLeaveVo.java | 7 ++- .../mapper/FlwInstanceBizExtMapper.java | 15 +++++ .../service/IFlwInstanceBizExtService.java | 30 ++++++++++ .../impl/FlwInstanceBizExtServiceImpl.java | 57 ++++++++++++++++++ .../service/impl/FlwTaskServiceImpl.java | 40 +++++++++++-- .../service/impl/TestLeaveServiceImpl.java | 4 +- .../workflow/FlwInstanceBizExtMapper.xml | 7 +++ .../mapper/workflow/FlwInstanceMapper.xml | 7 ++- .../mapper/workflow/FlwTaskMapper.xml | 17 ++++-- 19 files changed, 389 insertions(+), 14 deletions(-) create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowInstanceBizExt.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBizExtBo.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceBizExtVo.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceBizExtMapper.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceBizExtService.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceBizExtServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwInstanceBizExtMapper.xml diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java index 234ec9725..94c9b2c1d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java @@ -88,4 +88,9 @@ public interface FlowConstant { */ String AUTO_PASS = "autoPass"; + /** + * 业务编码 + */ + String BUSINESS_CODE = "businessCode"; + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowInstanceBizExt.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowInstanceBizExt.java new file mode 100644 index 000000000..932b0380e --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowInstanceBizExt.java @@ -0,0 +1,59 @@ +package org.dromara.workflow.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; + +/** + * 流程实例业务扩展对象 flow_instance_biz_ext + * + * @author may + * @date 2025-08-05 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("flow_instance_biz_ext") +public class FlowInstanceBizExt extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id") + private Long id; + + /** + * 流程实例ID + */ + private Long instanceId; + + /** + * 业务ID + */ + private String businessId; + + /** + * 业务编码 + */ + private String businessCode; + + /** + * 业务标题 + */ + private String businessTitle; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/TestLeave.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/TestLeave.java index 7d42a9b5f..b54873ca6 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/TestLeave.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/TestLeave.java @@ -29,6 +29,11 @@ public class TestLeave extends BaseEntity { @TableId(value = "id") private Long id; + /** + * 申请编号 + */ + private String applyCode; + /** * 请假类型 */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBizExtBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBizExtBo.java new file mode 100644 index 000000000..5173953a8 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBizExtBo.java @@ -0,0 +1,46 @@ +package org.dromara.workflow.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.workflow.domain.FlowInstanceBizExt; + +/** + * 流程实例业务扩展业务对象 flow_instance_biz_ext + * + * @author may + * @date 2025-08-05 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = FlowInstanceBizExt.class, reverseConvertGenerate = false) +public class FlowInstanceBizExtBo extends BaseEntity { + + /** + * 主键 + */ + private Long id; + + /** + * 流程实例ID + */ + private Long instanceId; + + /** + * 业务ID + */ + private String businessId; + + /** + * 业务编码 + */ + private String businessCode; + + /** + * 业务标题 + */ + private String businessTitle; + + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java index 0c3a65720..d6ab45185 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java @@ -44,6 +44,11 @@ public class StartProcessBo implements Serializable { */ private Map variables; + /** + * 流程业务扩展信息 + */ + private FlowInstanceBizExtBo flowInstanceBizExtBo; + public Map getVariables() { if (variables == null) { return new HashMap<>(16); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java index b040dbe98..2463569bd 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java @@ -36,6 +36,11 @@ public class TestLeaveBo extends BaseEntity { */ private String flowCode; + /** + * 申请编号 + */ + private String applyCode; + /** * 请假类型 */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java index 8776a76b8..ee0fd6330 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java @@ -203,6 +203,18 @@ public class FlowHisTaskVo implements Serializable { */ private String runDuration; + //业务扩展信息开始 + /** + * 业务编码 + */ + private String businessCode; + + /** + * 业务标题 + */ + private String businessTitle; + //业务扩展信息结束 + /** * 设置创建时间并计算任务运行时长 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceBizExtVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceBizExtVo.java new file mode 100644 index 000000000..e0988b4fc --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceBizExtVo.java @@ -0,0 +1,58 @@ +package org.dromara.workflow.domain.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.workflow.domain.FlowInstanceBizExt; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 流程实例业务扩展视图对象 flow_instance_biz_ext + * + * @author may + * @date 2025-08-05 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = FlowInstanceBizExt.class) +public class FlowInstanceBizExtVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ExcelProperty(value = "主键") + private Long id; + + /** + * 流程实例ID + */ + @ExcelProperty(value = "流程实例ID") + private Long instanceId; + + /** + * 业务ID + */ + @ExcelProperty(value = "业务ID") + private String businessId; + + /** + * 业务编码 + */ + @ExcelProperty(value = "业务编码") + private String businessCode; + + /** + * 业务标题 + */ + @ExcelProperty(value = "业务标题") + private String businessTitle; + + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceVo.java index 75543f419..fce6725ff 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceVo.java @@ -134,4 +134,16 @@ public class FlowInstanceVo { @Translation(type = FlowConstant.CATEGORY_ID_TO_NAME, mapper = "category") private String categoryName; + //业务扩展信息开始 + /** + * 业务编码 + */ + private String businessCode; + + /** + * 业务标题 + */ + private String businessTitle; + //业务扩展信息结束 + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java index a7f50643c..4c32d5696 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java @@ -185,5 +185,17 @@ public class FlowTaskVo implements Serializable { */ private List buttonList; + //业务扩展信息开始 + /** + * 业务编码 + */ + private String businessCode; + + /** + * 业务标题 + */ + private String businessTitle; + //业务扩展信息结束 + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java index 4c9b4e936..a62c0836d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java @@ -2,7 +2,6 @@ package org.dromara.workflow.domain.vo; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; -import com.fasterxml.jackson.annotation.JsonFormat; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.workflow.domain.TestLeave; @@ -32,6 +31,12 @@ public class TestLeaveVo implements Serializable { @ExcelProperty(value = "主键") private Long id; + /** + * 申请编号 + */ + @ExcelProperty(value = "申请编号") + private String applyCode; + /** * 请假类型 */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceBizExtMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceBizExtMapper.java new file mode 100644 index 000000000..bd9f032a4 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceBizExtMapper.java @@ -0,0 +1,15 @@ +package org.dromara.workflow.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.workflow.domain.FlowInstanceBizExt; +import org.dromara.workflow.domain.vo.FlowInstanceBizExtVo; + +/** + * 流程实例业务扩展Mapper接口 + * + * @author may + * @date 2025-08-05 + */ +public interface FlwInstanceBizExtMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceBizExtService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceBizExtService.java new file mode 100644 index 000000000..adfe5794f --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceBizExtService.java @@ -0,0 +1,30 @@ +package org.dromara.workflow.service; + +import org.dromara.workflow.domain.bo.FlowInstanceBizExtBo; + +import java.util.List; + +/** + * 流程实例业务扩展Service接口 + * + * @author may + * @date 2025-08-05 + */ +public interface IFlwInstanceBizExtService { + + /** + * 新增/修改流程实例业务扩展 + * + * @param bo 流程实例业务扩展 + * @return 是否新增成功 + */ + Boolean saveOrUpdate(FlowInstanceBizExtBo bo); + + /** + * 按照流程实例ID批量删除 + * + * @param instanceIds 流程实例ID + * @return 是否删除成功 + */ + Boolean deleteByInstIds(List instanceIds); +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceBizExtServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceBizExtServiceImpl.java new file mode 100644 index 000000000..c9c4f1d83 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceBizExtServiceImpl.java @@ -0,0 +1,57 @@ +package org.dromara.workflow.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.workflow.domain.FlowInstanceBizExt; +import org.dromara.workflow.domain.bo.FlowInstanceBizExtBo; +import org.dromara.workflow.mapper.FlwInstanceBizExtMapper; +import org.dromara.workflow.service.IFlwInstanceBizExtService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 流程实例业务扩展Service业务层处理 + * + * @author may + * @date 2025-08-05 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class FlwInstanceBizExtServiceImpl implements IFlwInstanceBizExtService { + + private final FlwInstanceBizExtMapper baseMapper; + + + /** + * 新增/修改流程实例业务扩展 + * + * @param bo 流程实例业务扩展 + * @return 是否新增成功 + */ + @Override + public Boolean saveOrUpdate(FlowInstanceBizExtBo bo) { + FlowInstanceBizExt convert = MapstructUtils.convert(bo, FlowInstanceBizExt.class); + FlowInstanceBizExt flowInstanceBizExt = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(FlowInstanceBizExt::getInstanceId, bo.getInstanceId())); + if (flowInstanceBizExt != null) { + flowInstanceBizExt.setBusinessTitle(convert.getBusinessTitle()); + return baseMapper.insertOrUpdate(convert); + } + return baseMapper.insertOrUpdate(convert); + } + + /** + * 按照流程实例ID批量删除 + * + * @param instanceIds 流程实例ID + * @return 是否删除成功 + */ + @Override + public Boolean deleteByInstIds(List instanceIds) { + return baseMapper.delete(new LambdaQueryWrapper().in(FlowInstanceBizExt::getInstanceId, instanceIds)) > 0; + } +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index db4a7d80c..984d2ae3c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; @@ -47,10 +48,7 @@ import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo; import org.dromara.workflow.mapper.FlwCategoryMapper; import org.dromara.workflow.mapper.FlwTaskMapper; -import org.dromara.workflow.service.IFlwCommonService; -import org.dromara.workflow.service.IFlwNodeExtService; -import org.dromara.workflow.service.IFlwTaskAssigneeService; -import org.dromara.workflow.service.IFlwTaskService; +import org.dromara.workflow.service.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -85,6 +83,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { private final IFlwTaskAssigneeService flwTaskAssigneeService; private final IFlwCommonService flwCommonService; private final IFlwNodeExtService flwNodeExtService; + private final IFlwInstanceBizExtService flowInstanceBizExtService; @DubboReference private RemoteUserService remoteUserService; @@ -119,14 +118,30 @@ public class FlwTaskServiceImpl implements IFlwTaskService { RemoteStartProcessReturn dto = new RemoteStartProcessReturn(); dto.setProcessInstanceId(taskList.get(0).getInstanceId()); dto.setTaskId(taskList.get(0).getId()); + // 保存流程实例业务信息 + buildFlowInstanceBizExt(flowInstance, startProcessBo.getFlowInstanceBizExtBo()); return dto; } + FlowInstanceBizExtBo extBo = startProcessBo.getFlowInstanceBizExtBo(); + String businessCode; + if (ObjectUtil.isEmpty(extBo)) { + extBo = new FlowInstanceBizExtBo(); + startProcessBo.setFlowInstanceBizExtBo(extBo); + } + // 生成业务编号 + if (StringUtils.isBlank(extBo.getBusinessCode())) { + //todo 按照自己业务自行修改 + businessCode = System.currentTimeMillis()+ StrUtil.EMPTY; + extBo.setBusinessCode(businessCode); + } else { + businessCode = extBo.getBusinessCode(); + } // 将流程定义内的扩展参数设置到变量中 Definition definition = FlowEngine.defService().getPublishByFlowCode(startProcessBo.getFlowCode()); Dict dict = JsonUtils.parseMap(definition.getExt()); boolean autoPass = !ObjectUtil.isNull(dict) && dict.getBool(FlowConstant.AUTO_PASS); variables.put(FlowConstant.AUTO_PASS, autoPass); - + variables.put(FlowConstant.BUSINESS_CODE, businessCode); FlowParams flowParams = FlowParams.build() .handler(startProcessBo.getHandler()) .flowCode(startProcessBo.getFlowCode()) @@ -138,6 +153,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService { } catch (Exception e) { throw new ServiceException(e.getMessage()); } + // 保存流程实例业务信息 + buildFlowInstanceBizExt(instance, startProcessBo.getFlowInstanceBizExtBo()); // 申请人执行流程 List taskList = taskService.list(new FlowTask().setInstanceId(instance.getId())); if (taskList.size() > 1) { @@ -149,6 +166,19 @@ public class FlwTaskServiceImpl implements IFlwTaskService { return dto; } + /** + * 构建流程实例业务信息 + * + * @param instance 流程实例 + * @param flowInstanceBizExtBo 业务扩展信息 + */ + private void buildFlowInstanceBizExt(Instance instance, FlowInstanceBizExtBo flowInstanceBizExtBo) { + flowInstanceBizExtBo.setInstanceId(instance.getId()); + flowInstanceBizExtBo.setBusinessId(instance.getBusinessId()); + flowInstanceBizExtBo.setBusinessCode(flowInstanceBizExtBo.getBusinessCode()); + flowInstanceBizExtService.saveOrUpdate(flowInstanceBizExtBo); + } + /** * 办理任务 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index acae9d551..e6c50fdda 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -17,9 +18,7 @@ import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.tenant.helper.TenantHelper; -import org.dromara.workflow.api.domain.RemoteCompleteTask; import org.dromara.workflow.api.domain.RemoteStartProcess; -import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.dromara.workflow.api.event.ProcessDeleteEvent; import org.dromara.workflow.api.event.ProcessEvent; import org.dromara.workflow.api.event.ProcessTaskEvent; @@ -112,6 +111,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { TestLeave add = MapstructUtils.convert(bo, TestLeave.class); if (StringUtils.isBlank(add.getStatus())) { add.setStatus(BusinessStatusEnum.DRAFT.getStatus()); + add.setApplyCode(System.currentTimeMillis() + StrUtil.EMPTY); } boolean flag = baseMapper.insert(add) > 0; if (flag) { diff --git a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwInstanceBizExtMapper.xml b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwInstanceBizExtMapper.xml new file mode 100644 index 000000000..c2cc9c7c6 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwInstanceBizExtMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwInstanceMapper.xml b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwInstanceMapper.xml index 30e2267dc..33ec48801 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwInstanceMapper.xml +++ b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwInstanceMapper.xml @@ -27,10 +27,13 @@ fd.version, fd.form_custom, fd.form_path, - fd.category + fd.category, + biz.business_code, + biz.business_title from flow_instance fi left join flow_definition fd on fi.definition_id = fd.id - ${ew.getCustomSqlSegment} + left join flow_instance_biz_ext biz on biz.instance_id = fi.id + ${ew.getCustomSqlSegment} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml index f539030b4..4790c32d2 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml +++ b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml @@ -30,11 +30,14 @@ COALESCE(t.form_path, d.form_path) as form_path, d.version, uu.processed_by, - uu.type + uu.type, + biz.business_code, + biz.business_title from flow_task t left join flow_user uu on uu.associated = t.id left join flow_definition d on t.definition_id = d.id left join flow_instance i on t.instance_id = i.id + left join flow_instance_biz_ext biz on biz.instance_id = i.id where t.node_type = 1 and t.del_flag = '0' and uu.del_flag = '0' @@ -71,10 +74,13 @@ c.flow_name, c.flow_code, c.category, - c.version + c.version, + biz.business_code, + biz.business_title from flow_his_task a left join flow_instance b on a.instance_id = b.id left join flow_definition c on a.definition_id = c.id + left join flow_instance_biz_ext biz on biz.instance_id = b.id where a.del_flag ='0' and b.del_flag = '0' and c.del_flag = '0' @@ -100,11 +106,14 @@ d.flow_name, d.flow_code, d.category, - d.version + d.version, + biz.business_code, + biz.business_title from flow_user a left join flow_his_task b on a.associated = b.task_id left join flow_instance c on b.instance_id = c.id - left join flow_definition d on c.definition_id=d.id + left join flow_definition d on c.definition_id = d.id + left join flow_instance_biz_ext biz on biz.instance_id = c.id where a.type = '4' and a.del_flag = '0' and b.del_flag = '0' -- Gitee From b3e7bef6034bc11c67481aeca458c3d5746337e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sat, 16 Aug 2025 11:48:11 +0800 Subject: [PATCH 106/155] =?UTF-8?q?add=20=E5=A2=9E=E5=8A=A0=20=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E6=89=A9=E5=B1=95=E8=A1=A8sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/sql/oracle/oracle_ry_workflow.sql | 34 +++++++++++++++ script/sql/postgres/postgres_ry_workflow.sql | 41 +++++++++++++++++-- script/sql/ry-workflow.sql | 21 ++++++++++ .../sql/update/oracle/update_2.4.1-2.5.0.sql | 34 +++++++++++++++ .../update/postgres/update_2.4.1-2.5.0.sql | 33 +++++++++++++++ script/sql/update/update_2.4.1-2.5.0.sql | 20 +++++++++ 6 files changed, 179 insertions(+), 4 deletions(-) diff --git a/script/sql/oracle/oracle_ry_workflow.sql b/script/sql/oracle/oracle_ry_workflow.sql index 30402d0a0..f3041f304 100644 --- a/script/sql/oracle/oracle_ry_workflow.sql +++ b/script/sql/oracle/oracle_ry_workflow.sql @@ -379,6 +379,40 @@ COMMENT ON COLUMN flow_spel.update_time IS '更新时间'; INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'initiatorDeptId', '#{@spelRuleComponent.selectDeptLeaderById(#initiatorDeptId)}', '根据部门id获取部门负责人', '0', '0', 103, 1, SYSDATE, 1, SYSDATE); INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, SYSDATE, 1, SYSDATE); +-- ---------------------------- +-- 流程实例业务扩展表 +-- ---------------------------- +CREATE TABLE flow_instance_biz_ext ( + id NUMBER(20), + tenant_id VARCHAR2(20) DEFAULT '000000', + create_dept NUMBER(20), + create_by NUMBER(20), + create_time TIMESTAMP, + update_by NUMBER(20), + update_time TIMESTAMP, + business_code VARCHAR2(255), + business_title VARCHAR2(1000), + del_flag CHAR(1) DEFAULT '0', + instance_id NUMBER(20), + business_id VARCHAR2(255) +); + +alter table flow_instance_biz_ext add constraint pk_fi_biz_ext primary key (id); + +COMMENT ON TABLE flow_instance_biz_ext IS '流程实例业务扩展表'; +COMMENT ON COLUMN flow_instance_biz_ext.id IS '主键id'; +COMMENT ON COLUMN flow_instance_biz_ext.tenant_id IS '租户编号'; +COMMENT ON COLUMN flow_instance_biz_ext.create_dept IS '创建部门'; +COMMENT ON COLUMN flow_instance_biz_ext.create_by IS '创建者'; +COMMENT ON COLUMN flow_instance_biz_ext.create_time IS '创建时间'; +COMMENT ON COLUMN flow_instance_biz_ext.update_by IS '更新者'; +COMMENT ON COLUMN flow_instance_biz_ext.update_time IS '更新时间'; +COMMENT ON COLUMN flow_instance_biz_ext.business_code IS '业务编码'; +COMMENT ON COLUMN flow_instance_biz_ext.business_title IS '业务标题'; +COMMENT ON COLUMN flow_instance_biz_ext.del_flag IS '删除标志(0代表存在 1代表删除)'; +COMMENT ON COLUMN flow_instance_biz_ext.instance_id IS '流程实例Id'; +COMMENT ON COLUMN flow_instance_biz_ext.business_id IS '业务Id'; + -- ---------------------------- -- 请假单信息 -- ---------------------------- diff --git a/script/sql/postgres/postgres_ry_workflow.sql b/script/sql/postgres/postgres_ry_workflow.sql index b63bc2b83..473a9e07c 100644 --- a/script/sql/postgres/postgres_ry_workflow.sql +++ b/script/sql/postgres/postgres_ry_workflow.sql @@ -325,7 +325,7 @@ INSERT INTO flow_category VALUES (109, '000000', 102, '0,100,102', '离职', 2, -- 流程spel表达式定义表 -- ---------------------------- CREATE TABLE flow_spel ( - id BIGINT NOT NULL, + id int8 NOT NULL, component_name VARCHAR(255), method_name VARCHAR(255), method_params VARCHAR(255), @@ -333,10 +333,10 @@ CREATE TABLE flow_spel ( remark VARCHAR(255), status CHAR(1) DEFAULT '0', del_flag CHAR(1) DEFAULT '0', - create_dept BIGINT, - create_by BIGINT, + create_dept int8, + create_by int8, create_time TIMESTAMP, - update_by BIGINT, + update_by int8, update_time TIMESTAMP, PRIMARY KEY (id) ); @@ -359,6 +359,39 @@ COMMENT ON COLUMN flow_spel.update_time IS '更新时间'; INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'initiatorDeptId', '#{@spelRuleComponent.selectDeptLeaderById(#initiatorDeptId)}', '根据部门id获取部门负责人', '0', '0', 103, 1, now(), 1, now()); INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, now(), 1, now()); +-- ---------------------------- +-- 流程实例业务扩展表 +-- ---------------------------- +CREATE TABLE flow_instance_biz_ext ( + id int8, + tenant_id VARCHAR(20) DEFAULT '000000', + create_dept int8, + create_by int8, + create_time TIMESTAMP, + update_by int8, + update_time TIMESTAMP, + business_code VARCHAR(255), + business_title VARCHAR(1000), + del_flag CHAR(1) DEFAULT '0', + instance_id int8, + business_id VARCHAR(255), + PRIMARY KEY (id) +); + +COMMENT ON TABLE flow_instance_biz_ext IS '流程实例业务扩展表'; +COMMENT ON COLUMN flow_instance_biz_ext.id IS '主键id'; +COMMENT ON COLUMN flow_instance_biz_ext.tenant_id IS '租户编号'; +COMMENT ON COLUMN flow_instance_biz_ext.create_dept IS '创建部门'; +COMMENT ON COLUMN flow_instance_biz_ext.create_by IS '创建者'; +COMMENT ON COLUMN flow_instance_biz_ext.create_time IS '创建时间'; +COMMENT ON COLUMN flow_instance_biz_ext.update_by IS '更新者'; +COMMENT ON COLUMN flow_instance_biz_ext.update_time IS '更新时间'; +COMMENT ON COLUMN flow_instance_biz_ext.business_code IS '业务编码'; +COMMENT ON COLUMN flow_instance_biz_ext.business_title IS '业务标题'; +COMMENT ON COLUMN flow_instance_biz_ext.del_flag IS '删除标志(0代表存在 1代表删除)'; +COMMENT ON COLUMN flow_instance_biz_ext.instance_id IS '流程实例Id'; +COMMENT ON COLUMN flow_instance_biz_ext.business_id IS '业务Id'; + -- ---------------------------- -- 请假单信息 -- ---------------------------- diff --git a/script/sql/ry-workflow.sql b/script/sql/ry-workflow.sql index ba4c650c7..f1c895a6f 100644 --- a/script/sql/ry-workflow.sql +++ b/script/sql/ry-workflow.sql @@ -207,9 +207,30 @@ CREATE TABLE flow_spel ( INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'initiatorDeptId', '#{@spelRuleComponent.selectDeptLeaderById(#initiatorDeptId)}', '根据部门id获取部门负责人', '0', '0', 103, 1, sysdate(), 1, sysdate()); INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, sysdate(), 1, sysdate()); +-- ---------------------------- +-- 流程实例业务扩展表 +-- ---------------------------- + +create table flow_instance_biz_ext ( + id bigint not null comment '主键id', + tenant_id varchar(20) default '000000' null comment '租户编号', + create_dept bigint null comment '创建部门', + create_by bigint null comment '创建者', + create_time datetime null comment '创建时间', + update_by bigint null comment '更新者', + update_time datetime null comment '更新时间', + business_code varchar(255) null comment '业务编码', + business_title varchar(1000) null comment '业务标题', + del_flag char default '0' null comment '删除标志(0代表存在 1代表删除)', + instance_id bigint null comment '流程实例Id', + business_id varchar(255) null comment '业务Id', + PRIMARY KEY (id) +) ENGINE = InnoDB COMMENT '流程实例业务扩展表'; + -- ---------------------------- -- 请假单信息 -- ---------------------------- + create table test_leave ( id bigint(20) not null comment 'id', diff --git a/script/sql/update/oracle/update_2.4.1-2.5.0.sql b/script/sql/update/oracle/update_2.4.1-2.5.0.sql index d36fb0d4a..55f082a34 100644 --- a/script/sql/update/oracle/update_2.4.1-2.5.0.sql +++ b/script/sql/update/oracle/update_2.4.1-2.5.0.sql @@ -50,3 +50,37 @@ UPDATE flow_skip SET skip_condition = REPLACE(skip_condition, 'notNike', 'notLik ALTER TABLE flow_his_task MODIFY (collaborator VARCHAR2(500) DEFAULT NULL NULL); COMMENT ON COLUMN flow_his_task.collaborator IS '协作人'; + +-- ---------------------------- +-- 流程实例业务扩展表 +-- ---------------------------- +CREATE TABLE flow_instance_biz_ext ( + id NUMBER(20), + tenant_id VARCHAR2(20) DEFAULT '000000', + create_dept NUMBER(20), + create_by NUMBER(20), + create_time TIMESTAMP, + update_by NUMBER(20), + update_time TIMESTAMP, + business_code VARCHAR2(255), + business_title VARCHAR2(1000), + del_flag CHAR(1) DEFAULT '0', + instance_id NUMBER(20), + business_id VARCHAR2(255) +); + +alter table flow_instance_biz_ext add constraint pk_fi_biz_ext primary key (id); + +COMMENT ON TABLE flow_instance_biz_ext IS '流程实例业务扩展表'; +COMMENT ON COLUMN flow_instance_biz_ext.id IS '主键id'; +COMMENT ON COLUMN flow_instance_biz_ext.tenant_id IS '租户编号'; +COMMENT ON COLUMN flow_instance_biz_ext.create_dept IS '创建部门'; +COMMENT ON COLUMN flow_instance_biz_ext.create_by IS '创建者'; +COMMENT ON COLUMN flow_instance_biz_ext.create_time IS '创建时间'; +COMMENT ON COLUMN flow_instance_biz_ext.update_by IS '更新者'; +COMMENT ON COLUMN flow_instance_biz_ext.update_time IS '更新时间'; +COMMENT ON COLUMN flow_instance_biz_ext.business_code IS '业务编码'; +COMMENT ON COLUMN flow_instance_biz_ext.business_title IS '业务标题'; +COMMENT ON COLUMN flow_instance_biz_ext.del_flag IS '删除标志(0代表存在 1代表删除)'; +COMMENT ON COLUMN flow_instance_biz_ext.instance_id IS '流程实例Id'; +COMMENT ON COLUMN flow_instance_biz_ext.business_id IS '业务Id'; diff --git a/script/sql/update/postgres/update_2.4.1-2.5.0.sql b/script/sql/update/postgres/update_2.4.1-2.5.0.sql index 7d1c7491a..d7854a552 100644 --- a/script/sql/update/postgres/update_2.4.1-2.5.0.sql +++ b/script/sql/update/postgres/update_2.4.1-2.5.0.sql @@ -52,3 +52,36 @@ ALTER TABLE flow_his_task ALTER COLUMN collaborator SET DEFAULT NULL, ALTER COLUMN collaborator TYPE VARCHAR(500); COMMENT ON COLUMN flow_his_task.collaborator IS '协作人'; + +-- ---------------------------- +-- 流程实例业务扩展表 +-- ---------------------------- +CREATE TABLE flow_instance_biz_ext ( + id int8, + tenant_id VARCHAR(20) DEFAULT '000000', + create_dept int8, + create_by int8, + create_time TIMESTAMP, + update_by int8, + update_time TIMESTAMP, + business_code VARCHAR(255), + business_title VARCHAR(1000), + del_flag CHAR(1) DEFAULT '0', + instance_id int8, + business_id VARCHAR(255), + PRIMARY KEY (id) +); + +COMMENT ON TABLE flow_instance_biz_ext IS '流程实例业务扩展表'; +COMMENT ON COLUMN flow_instance_biz_ext.id IS '主键id'; +COMMENT ON COLUMN flow_instance_biz_ext.tenant_id IS '租户编号'; +COMMENT ON COLUMN flow_instance_biz_ext.create_dept IS '创建部门'; +COMMENT ON COLUMN flow_instance_biz_ext.create_by IS '创建者'; +COMMENT ON COLUMN flow_instance_biz_ext.create_time IS '创建时间'; +COMMENT ON COLUMN flow_instance_biz_ext.update_by IS '更新者'; +COMMENT ON COLUMN flow_instance_biz_ext.update_time IS '更新时间'; +COMMENT ON COLUMN flow_instance_biz_ext.business_code IS '业务编码'; +COMMENT ON COLUMN flow_instance_biz_ext.business_title IS '业务标题'; +COMMENT ON COLUMN flow_instance_biz_ext.del_flag IS '删除标志(0代表存在 1代表删除)'; +COMMENT ON COLUMN flow_instance_biz_ext.instance_id IS '流程实例Id'; +COMMENT ON COLUMN flow_instance_biz_ext.business_id IS '业务Id'; diff --git a/script/sql/update/update_2.4.1-2.5.0.sql b/script/sql/update/update_2.4.1-2.5.0.sql index de6ec4342..5775489b1 100644 --- a/script/sql/update/update_2.4.1-2.5.0.sql +++ b/script/sql/update/update_2.4.1-2.5.0.sql @@ -34,3 +34,23 @@ update flow_skip set skip_condition = REPLACE(skip_condition,'notNike','notLike' ALTER TABLE `flow_his_task` MODIFY COLUMN `collaborator` varchar(500) NULL DEFAULT NULL COMMENT '协作人' AFTER `cooperate_type`; + +-- ---------------------------- +-- 流程实例业务扩展表 +-- ---------------------------- + +create table flow_instance_biz_ext ( + id bigint not null comment '主键id', + tenant_id varchar(20) default '000000' null comment '租户编号', + create_dept bigint null comment '创建部门', + create_by bigint null comment '创建者', + create_time datetime null comment '创建时间', + update_by bigint null comment '更新者', + update_time datetime null comment '更新时间', + business_code varchar(255) null comment '业务编码', + business_title varchar(1000) null comment '业务标题', + del_flag char default '0' null comment '删除标志(0代表存在 1代表删除)', + instance_id bigint null comment '流程实例Id', + business_id varchar(255) null comment '业务Id', + PRIMARY KEY (id) +) ENGINE = InnoDB COMMENT '流程实例业务扩展表'; -- Gitee From 29af0a14232657362cd90f6971987841ff2b9e5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 18 Aug 2025 09:44:29 +0800 Subject: [PATCH 107/155] =?UTF-8?q?add=20=E5=A2=9E=E5=8A=A0=20=E8=AF=B7?= =?UTF-8?q?=E5=81=87=E8=A1=A8=20=E7=94=B3=E8=AF=B7=E7=BC=96=E5=8F=B7?= =?UTF-8?q?=E5=AD=97=E6=AE=B5sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/sql/oracle/oracle_ry_workflow.sql | 2 ++ script/sql/postgres/postgres_ry_workflow.sql | 2 ++ script/sql/ry-workflow.sql | 3 ++- script/sql/update/oracle/update_2.4.1-2.5.0.sql | 3 +++ script/sql/update/postgres/update_2.4.1-2.5.0.sql | 3 +++ script/sql/update/update_2.4.1-2.5.0.sql | 3 +++ 6 files changed, 15 insertions(+), 1 deletion(-) diff --git a/script/sql/oracle/oracle_ry_workflow.sql b/script/sql/oracle/oracle_ry_workflow.sql index f3041f304..a56aa5b5f 100644 --- a/script/sql/oracle/oracle_ry_workflow.sql +++ b/script/sql/oracle/oracle_ry_workflow.sql @@ -420,6 +420,7 @@ CREATE TABLE test_leave ( id NUMBER (20) NOT NULL, tenant_id VARCHAR2 (20) DEFAULT '000000', + apply_code VARCHAR2 (50) NOT NULL, leave_type VARCHAR2 (255) NOT NULL, start_date DATE NOT NULL, end_date DATE NOT NULL, @@ -438,6 +439,7 @@ alter table test_leave add constraint pk_test_leave primary key (id); COMMENT ON TABLE test_leave IS '请假申请表'; COMMENT ON COLUMN test_leave.id IS 'ID'; COMMENT ON COLUMN test_leave.tenant_id IS '租户编号'; +COMMENT ON COLUMN test_leave.apply_code IS '申请编号'; COMMENT ON COLUMN test_leave.leave_type IS '请假类型'; COMMENT ON COLUMN test_leave.start_date IS '开始时间'; COMMENT ON COLUMN test_leave.end_date IS '结束时间'; diff --git a/script/sql/postgres/postgres_ry_workflow.sql b/script/sql/postgres/postgres_ry_workflow.sql index 473a9e07c..9ebb4e794 100644 --- a/script/sql/postgres/postgres_ry_workflow.sql +++ b/script/sql/postgres/postgres_ry_workflow.sql @@ -399,6 +399,7 @@ CREATE TABLE test_leave ( id int8 NOT NULL, tenant_id VARCHAR(20) DEFAULT '000000'::varchar, + apply_code VARCHAR(50) NOT NULL, leave_type VARCHAR(255) NOT NULL, start_date TIMESTAMP NOT NULL, end_date TIMESTAMP NOT NULL, @@ -416,6 +417,7 @@ CREATE TABLE test_leave COMMENT ON TABLE test_leave IS '请假申请表'; COMMENT ON COLUMN test_leave.id IS 'id'; COMMENT ON COLUMN test_leave.tenant_id IS '租户编号'; +COMMENT ON COLUMN test_leave.apply_code IS '申请编号'; COMMENT ON COLUMN test_leave.leave_type IS '请假类型'; COMMENT ON COLUMN test_leave.start_date IS '开始时间'; COMMENT ON COLUMN test_leave.end_date IS '结束时间'; diff --git a/script/sql/ry-workflow.sql b/script/sql/ry-workflow.sql index f1c895a6f..c93359711 100644 --- a/script/sql/ry-workflow.sql +++ b/script/sql/ry-workflow.sql @@ -234,7 +234,8 @@ create table flow_instance_biz_ext ( create table test_leave ( id bigint(20) not null comment 'id', - tenant_id varchar(20) default '000000' comment '租户编号', + tenant_id varchar(20) default '000000' comment '租户编号', + apply_code varchar(50) not null comment '申请编号', leave_type varchar(255) not null comment '请假类型', start_date datetime not null comment '开始时间', end_date datetime not null comment '结束时间', diff --git a/script/sql/update/oracle/update_2.4.1-2.5.0.sql b/script/sql/update/oracle/update_2.4.1-2.5.0.sql index 55f082a34..8e3f04d81 100644 --- a/script/sql/update/oracle/update_2.4.1-2.5.0.sql +++ b/script/sql/update/oracle/update_2.4.1-2.5.0.sql @@ -84,3 +84,6 @@ COMMENT ON COLUMN flow_instance_biz_ext.business_title IS '业务标题'; COMMENT ON COLUMN flow_instance_biz_ext.del_flag IS '删除标志(0代表存在 1代表删除)'; COMMENT ON COLUMN flow_instance_biz_ext.instance_id IS '流程实例Id'; COMMENT ON COLUMN flow_instance_biz_ext.business_id IS '业务Id'; + +ALTER TABLE test_leave ADD COLUMN apply_code VARCHAR2(50) NOT NULL; +COMMENT ON COLUMN test_leave.apply_code IS '申请编号'; diff --git a/script/sql/update/postgres/update_2.4.1-2.5.0.sql b/script/sql/update/postgres/update_2.4.1-2.5.0.sql index d7854a552..4626994da 100644 --- a/script/sql/update/postgres/update_2.4.1-2.5.0.sql +++ b/script/sql/update/postgres/update_2.4.1-2.5.0.sql @@ -85,3 +85,6 @@ COMMENT ON COLUMN flow_instance_biz_ext.business_title IS '业务标题'; COMMENT ON COLUMN flow_instance_biz_ext.del_flag IS '删除标志(0代表存在 1代表删除)'; COMMENT ON COLUMN flow_instance_biz_ext.instance_id IS '流程实例Id'; COMMENT ON COLUMN flow_instance_biz_ext.business_id IS '业务Id'; + +ALTER TABLE test_leave ADD COLUMN apply_code VARCHAR(50) NOT NULL; +COMMENT ON COLUMN test_leave.apply_code IS '申请编号'; diff --git a/script/sql/update/update_2.4.1-2.5.0.sql b/script/sql/update/update_2.4.1-2.5.0.sql index 5775489b1..37c2d402e 100644 --- a/script/sql/update/update_2.4.1-2.5.0.sql +++ b/script/sql/update/update_2.4.1-2.5.0.sql @@ -54,3 +54,6 @@ create table flow_instance_biz_ext ( business_id varchar(255) null comment '业务Id', PRIMARY KEY (id) ) ENGINE = InnoDB COMMENT '流程实例业务扩展表'; + +ALTER TABLE `test_leave` + ADD COLUMN `apply_code` varchar(50) NULL DEFAULT NULL COMMENT '申请编号' AFTER `tenant_id`; -- Gitee From 50fd75bfdde66dcf9727bfb1957359f778d48bd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 19 Aug 2025 18:02:03 +0800 Subject: [PATCH 108/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E9=87=8D=E6=96=B0=E6=8F=90=E4=BA=A4=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FlwInstanceBizExtServiceImpl.java | 2 +- .../workflow/service/impl/FlwTaskServiceImpl.java | 10 +++++----- .../workflow/service/impl/TestLeaveServiceImpl.java | 5 ++++- script/sql/update/update_2.4.1-2.5.0.sql | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceBizExtServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceBizExtServiceImpl.java index c9c4f1d83..29772780b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceBizExtServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceBizExtServiceImpl.java @@ -39,7 +39,7 @@ public class FlwInstanceBizExtServiceImpl implements IFlwInstanceBizExtService { .eq(FlowInstanceBizExt::getInstanceId, bo.getInstanceId())); if (flowInstanceBizExt != null) { flowInstanceBizExt.setBusinessTitle(convert.getBusinessTitle()); - return baseMapper.insertOrUpdate(convert); + return baseMapper.insertOrUpdate(flowInstanceBizExt); } return baseMapper.insertOrUpdate(convert); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 984d2ae3c..090495966 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -110,6 +110,11 @@ public class FlwTaskServiceImpl implements IFlwTaskService { variables.put(BUSINESS_ID, businessId); FlowInstance flowInstance = flowInstanceMapper.selectOne(new LambdaQueryWrapper<>(FlowInstance.class) .eq(FlowInstance::getBusinessId, businessId)); + FlowInstanceBizExtBo extBo = startProcessBo.getFlowInstanceBizExtBo(); + if (ObjectUtil.isEmpty(extBo)) { + extBo = new FlowInstanceBizExtBo(); + startProcessBo.setFlowInstanceBizExtBo(extBo); + } if (ObjectUtil.isNotNull(flowInstance)) { BusinessStatusEnum.checkStartStatus(flowInstance.getFlowStatus()); List taskList = taskService.list(new FlowTask().setInstanceId(flowInstance.getId())); @@ -122,12 +127,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { buildFlowInstanceBizExt(flowInstance, startProcessBo.getFlowInstanceBizExtBo()); return dto; } - FlowInstanceBizExtBo extBo = startProcessBo.getFlowInstanceBizExtBo(); String businessCode; - if (ObjectUtil.isEmpty(extBo)) { - extBo = new FlowInstanceBizExtBo(); - startProcessBo.setFlowInstanceBizExtBo(extBo); - } // 生成业务编号 if (StringUtils.isBlank(extBo.getBusinessCode())) { //todo 按照自己业务自行修改 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index e6c50fdda..8140636bf 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -108,10 +108,10 @@ public class TestLeaveServiceImpl implements ITestLeaveService { long day = DateUtil.betweenDay(bo.getStartDate(), bo.getEndDate(), true); // 截止日期也算一天 bo.setLeaveDays((int) day + 1); + bo.setApplyCode(System.currentTimeMillis() + StrUtil.EMPTY); TestLeave add = MapstructUtils.convert(bo, TestLeave.class); if (StringUtils.isBlank(add.getStatus())) { add.setStatus(BusinessStatusEnum.DRAFT.getStatus()); - add.setApplyCode(System.currentTimeMillis() + StrUtil.EMPTY); } boolean flag = baseMapper.insert(add) > 0; if (flag) { @@ -126,6 +126,9 @@ public class TestLeaveServiceImpl implements ITestLeaveService { long day = DateUtil.betweenDay(bo.getStartDate(), bo.getEndDate(), true); // 截止日期也算一天 bo.setLeaveDays((int) day + 1); + if (ObjectUtil.isNull(bo.getId())) { + bo.setApplyCode(System.currentTimeMillis() + StrUtil.EMPTY); + } TestLeave leave = MapstructUtils.convert(bo, TestLeave.class); boolean flag = baseMapper.insertOrUpdate(leave); if (flag) { diff --git a/script/sql/update/update_2.4.1-2.5.0.sql b/script/sql/update/update_2.4.1-2.5.0.sql index 37c2d402e..ec8cd00b4 100644 --- a/script/sql/update/update_2.4.1-2.5.0.sql +++ b/script/sql/update/update_2.4.1-2.5.0.sql @@ -56,4 +56,4 @@ create table flow_instance_biz_ext ( ) ENGINE = InnoDB COMMENT '流程实例业务扩展表'; ALTER TABLE `test_leave` - ADD COLUMN `apply_code` varchar(50) NULL DEFAULT NULL COMMENT '申请编号' AFTER `tenant_id`; + ADD COLUMN `apply_code` varchar(50) NOT NULL COMMENT '申请编号' AFTER `tenant_id`; -- Gitee From ee68904d591fd27273182870276fd184eaf9afcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 21 Aug 2025 09:21:47 +0800 Subject: [PATCH 109/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E7=A7=9F=E6=88=B7=E8=B4=A6=E5=8F=B7=E4=BD=99=E9=A2=9D?= =?UTF-8?q?=20=E6=9F=A5=E8=AF=A2=E8=AF=AD=E5=8F=A5=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/service/impl/SysTenantServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java index 1bc4ef4c7..f11416f31 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java @@ -347,8 +347,8 @@ public class SysTenantServiceImpl implements ISysTenantService { if (tenant.getAccountCount() == -1) { return true; } - Long userNumber = userMapper.selectCount(new LambdaQueryWrapper<>()); - // 如果余额大于0代表还有可用名额 + Long userNumber = userMapper.selectCount( + new LambdaQueryWrapper().eq(SysUser::getTenantId, tenantId)); // 如果余额大于0代表还有可用名额 return tenant.getAccountCount() - userNumber > 0; } -- Gitee From 415fb7613935e3f6b3cce66735a272a6b9df9a28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 21 Aug 2025 09:25:20 +0800 Subject: [PATCH 110/155] =?UTF-8?q?reset=20=E5=9B=9E=E6=BB=9A=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/service/impl/SysTenantServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java index f11416f31..1bc4ef4c7 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java @@ -347,8 +347,8 @@ public class SysTenantServiceImpl implements ISysTenantService { if (tenant.getAccountCount() == -1) { return true; } - Long userNumber = userMapper.selectCount( - new LambdaQueryWrapper().eq(SysUser::getTenantId, tenantId)); // 如果余额大于0代表还有可用名额 + Long userNumber = userMapper.selectCount(new LambdaQueryWrapper<>()); + // 如果余额大于0代表还有可用名额 return tenant.getAccountCount() - userNumber > 0; } -- Gitee From c710b6365ed55919ca2e7c1c47a6f104db0cd013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 21 Aug 2025 10:09:34 +0800 Subject: [PATCH 111/155] update springdoc 2.8.9 => 2.8.10 --- pom.xml | 4 ++-- .../system/controller/monitor/CacheController.java | 7 +++++++ .../system/controller/system/SysMenuController.java | 6 ++++++ .../controller/system/SysProfileController.java | 12 ++++++++++++ .../system/controller/system/SysRoleController.java | 6 ++++++ 5 files changed, 33 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 99b736a57..0f6000db3 100644 --- a/pom.xml +++ b/pom.xml @@ -25,8 +25,8 @@ 3.9.1 4.3.1 2.3 - 2.2.30 - 2.8.9 + 2.2.36 + 2.8.10 0.15.0 1.2.0 5.8.38 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/CacheController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/CacheController.java index 69fd2ab96..451309693 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/CacheController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/CacheController.java @@ -53,6 +53,13 @@ public class CacheController { } } + /** + * 缓存监控列表信息 + * + * @param info 信息 + * @param dbSize 数据库 + * @param commandStats 命令统计 + */ public record CacheListInfoVo(Properties info, Long dbSize, List> commandStats) {} } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java index 247e97dce..638b5aa1f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java @@ -179,6 +179,12 @@ public class SysMenuController extends BaseController { return toAjax(menuService.deleteMenuById(menuId)); } + /** + * 角色菜单列表树信息 + * + * @param checkedKeys 选中菜单列表 + * @param menus 菜单下拉树结构列表 + */ public record MenuTreeSelectVo(List checkedKeys, List> menus) { } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java index 75a1257c0..e97c45209 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java @@ -135,8 +135,20 @@ public class SysProfileController extends BaseController { return R.fail("上传图片异常,请联系管理员"); } + /** + * 用户头像信息 + * + * @param imgUrl 头像地址 + */ public record AvatarVo(String imgUrl) {} + /** + * 用户个人信息 + * + * @param user 用户信息 + * @param roleGroup 用户所属角色组 + * @param postGroup 用户所属岗位组 + */ public record ProfileVo(ProfileUserVo user, String roleGroup, String postGroup) {} } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java index d222a12a3..3a1cfa77e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java @@ -235,6 +235,12 @@ public class SysRoleController extends BaseController { return R.ok(selectVo); } + /** + * 角色部门列表树信息 + * + * @param checkedKeys 选中部门列表 + * @param depts 下拉树结构列表 + */ public record DeptTreeSelectVo(List checkedKeys, List> depts) {} } -- Gitee From d425383d388a4e277413a8c6bfda1b0c6fa151f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 25 Aug 2025 13:51:10 +0800 Subject: [PATCH 112/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E4=B8=8D=E5=BF=85=E8=A6=81=E7=9A=84=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E9=A2=9C=E8=89=B2=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/config/nacos/ruoyi-workflow.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/script/config/nacos/ruoyi-workflow.yml b/script/config/nacos/ruoyi-workflow.yml index abc297958..8dfe7bb23 100644 --- a/script/config/nacos/ruoyi-workflow.yml +++ b/script/config/nacos/ruoyi-workflow.yml @@ -34,11 +34,3 @@ warm-flow: top-text-show: true # 默认Authorization,如果有多个token,用逗号分隔 token-name: ${sa-token.token-name},clientid - # 流程状态对应的三元色 - chart-status-color: - ## 未办理 - - 62,62,62 - ## 待办理 - - 255,205,23 - ## 已办理 - - 157,255,0 -- Gitee From 4ae432713bb7c595369f42adabeb227fe410aa9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 25 Aug 2025 13:52:05 +0800 Subject: [PATCH 113/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=94=9F=E6=88=90=E6=A8=A1=E6=9D=BF=E7=A9=BA=E6=A0=BC?= =?UTF-8?q?=E5=AF=B9=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi-gen/src/main/resources/vm/ts/types.ts.vm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/ts/types.ts.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/ts/types.ts.vm index 35a468e80..2b87e625e 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/ts/types.ts.vm +++ b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/ts/types.ts.vm @@ -54,10 +54,10 @@ export interface ${BusinessName}Query #if(!${treeCode})extends PageQuery #end{ #end #end #end - /** - * 日期范围参数 - */ - params?: any; + /** + * 日期范围参数 + */ + params?: any; } -- Gitee From 0c5173c38801ac5030cca3bd63f2a9043438a431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 25 Aug 2025 13:52:35 +0800 Subject: [PATCH 114/155] =?UTF-8?q?update=20=E6=9B=B4=E6=96=B0=20warm-flow?= =?UTF-8?q?=20=E7=89=88=E6=9C=AC=E8=87=B3=201.8.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0f6000db3..1b44cda7a 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ 8.7.2-20250603 - 1.8.0 + 1.8.1 2.3.0 -- Gitee From 426a6c484e8c732c5fb59149a444b6eefb33dcd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 25 Aug 2025 13:52:57 +0800 Subject: [PATCH 115/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=AF=B9?= =?UTF-8?q?=E4=B8=89=E6=96=B9=E6=8E=88=E6=9D=83=20redirectUri=20=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E5=9C=B0=E5=9D=80=E8=BF=9B=E8=A1=8Curl=E7=BC=96?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/social/utils/SocialUtils.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/utils/SocialUtils.java b/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/utils/SocialUtils.java index e8f401e9f..59de70a57 100644 --- a/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/utils/SocialUtils.java +++ b/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/utils/SocialUtils.java @@ -14,6 +14,9 @@ import org.dromara.common.social.gitea.AuthGiteaRequest; import org.dromara.common.social.maxkey.AuthMaxKeyRequest; import org.dromara.common.social.topiam.AuthTopIamRequest; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; + /** * 认证授权工具类 * @@ -40,7 +43,7 @@ public class SocialUtils { AuthConfig.AuthConfigBuilder builder = AuthConfig.builder() .clientId(obj.getClientId()) .clientSecret(obj.getClientSecret()) - .redirectUri(obj.getRedirectUri()) + .redirectUri(URLEncoder.encode(obj.getRedirectUri(), StandardCharsets.UTF_8)) .scopes(obj.getScopes()); return switch (source.toLowerCase()) { case "dingtalk" -> new AuthDingTalkV2Request(builder.build(), STATE_CACHE); -- Gitee From 1ebb552d7f06efdbd09ae1bae0dbdbf98c7aba20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 25 Aug 2025 13:53:54 +0800 Subject: [PATCH 116/155] update springdoc 2.8.10 => 2.8.11 update redisson 3.50.0 => 3.51.0 update fastexcel 1.2.0 => 1.3.0 --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 1b44cda7a..0081966ac 100644 --- a/pom.xml +++ b/pom.xml @@ -26,11 +26,11 @@ 4.3.1 2.3 2.2.36 - 2.8.10 + 2.8.11 0.15.0 - 1.2.0 + 1.3.0 5.8.38 - 3.50.0 + 3.51.0 2.2.7 1.7.2 1.44.0 -- Gitee From 3151741d87b158a0f92a0b31f00aeee6b9f0068d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 27 Aug 2025 17:55:49 +0800 Subject: [PATCH 117/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E8=A7=A3=E6=9E=90=E7=B1=BB=E5=BC=82=E5=B8=B8=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/json/handler/CustomDateDeserializer.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/handler/CustomDateDeserializer.java b/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/handler/CustomDateDeserializer.java index 069b924f0..21c6a6aa6 100644 --- a/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/handler/CustomDateDeserializer.java +++ b/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/handler/CustomDateDeserializer.java @@ -1,9 +1,11 @@ package org.dromara.common.json.handler; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; +import org.dromara.common.core.utils.ObjectUtils; import java.io.IOException; import java.util.Date; @@ -25,7 +27,11 @@ public class CustomDateDeserializer extends JsonDeserializer { */ @Override public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { - return DateUtil.parse(p.getText()); + DateTime parse = DateUtil.parse(p.getText()); + if (ObjectUtils.isNull(parse)) { + return null; + } + return parse.toJdkDate(); } } -- Gitee From fbe9cf506b0ec3209ec10f5368cfc648b59f4d03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 27 Aug 2025 17:56:30 +0800 Subject: [PATCH 118/155] =?UTF-8?q?upadte=20=E4=BC=98=E5=8C=96=20Excel?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=A0=BC=E5=90=88=E5=B9=B6=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=99=A8=E4=BB=A3=E7=A0=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/excel/core/CellMergeHandler.java | 184 +++++++++++------- 1 file changed, 116 insertions(+), 68 deletions(-) diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeHandler.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeHandler.java index dd37b6795..204a88e25 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeHandler.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeHandler.java @@ -31,12 +31,89 @@ public class CellMergeHandler { } @SneakyThrows - public List handle(List list) { - List cellList = new ArrayList<>(); - if (CollUtil.isEmpty(list)) { - return cellList; + public List handle(List rows) { + // 如果入参为空集合则返回空集 + if (CollUtil.isEmpty(rows)) { + return Collections.emptyList(); } - Class clazz = list.get(0).getClass(); + + // 获取有合并注解的字段 + Map mergeFields = getFieldColumnIndexMap(rows.get(0).getClass()); + // 如果没有需要合并的字段则返回空集 + if (CollUtil.isEmpty(mergeFields)) { + return Collections.emptyList(); + } + + // 结果集 + List result = new ArrayList<>(); + + // 生成两两合并单元格 + Map rowRepeatCellMap = new HashMap<>(); + for (Map.Entry item : mergeFields.entrySet()) { + Field field = item.getKey(); + FieldColumnIndex itemValue = item.getValue(); + int colNum = itemValue.colIndex(); + CellMerge cellMerge = itemValue.cellMerge(); + + for (int i = 0; i < rows.size(); i++) { + // 当前行数据 + Object currentRowObj = rows.get(i); + // 当前行数据字段值 + Object currentRowObjFieldVal = ReflectUtils.invokeGetter(currentRowObj, field.getName()); + + // 空值跳过不处理 + if (currentRowObjFieldVal == null || "".equals(currentRowObjFieldVal)) { + continue; + } + + // 单元格合并Map是否存在数据,如果不存在则添加当前行的字段值 + if (!rowRepeatCellMap.containsKey(field)) { + rowRepeatCellMap.put(field, RepeatCell.of(currentRowObjFieldVal, i)); + continue; + } + + // 获取 单元格合并Map 中字段值 + RepeatCell repeatCell = rowRepeatCellMap.get(field); + Object cellValue = repeatCell.value(); + int current = repeatCell.current(); + + // 检查是否满足合并条件 + // currentRowObj 当前行数据 + // rows.get(i - 1) 上一行数据 注:由于 if (!rowRepeatCellMap.containsKey(field)) 条件的存在,所以该 i 必不可能小于1 + // cellMerge 当前行字段合并注解 + boolean merge = isMerge(currentRowObj, rows.get(i - 1), cellMerge); + + // 是否添加到结果集 + boolean isAddResult = false; + // 最新行 + int lastRow = i + rowIndex - 1; + + // 如果当前行字段值和缓存中的字段值不相等,或不满足合并条件,则替换 + if (!currentRowObjFieldVal.equals(cellValue) || !merge) { + rowRepeatCellMap.put(field, RepeatCell.of(currentRowObjFieldVal, i)); + isAddResult = true; + } + + // 如果最后一行不能合并,检查之前的数据是否需要合并;如果最后一行可以合并,则直接合并到最后 + if (i == rows.size() - 1) { + isAddResult = true; + if (i > current) { + lastRow = i + rowIndex; + } + } + + if (isAddResult && i > current) { + result.add(new CellRangeAddress(current + rowIndex, lastRow, colNum, colNum)); + } + } + } + return result; + } + + /** + * 获取带有合并注解的字段列索引和合并注解信息Map集 + */ + private Map getFieldColumnIndexMap(Class clazz) { boolean annotationPresent = clazz.isAnnotationPresent(ExcelIgnoreUnannotated.class); Field[] fields = ReflectUtils.getFields(clazz, field -> { if ("serialVersionUID".equals(field.getName())) { @@ -49,86 +126,57 @@ public class CellMergeHandler { }); // 有注解的字段 - List mergeFields = new ArrayList<>(); - List mergeFieldsIndex = new ArrayList<>(); + Map mergeFields = new HashMap<>(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; - if (field.isAnnotationPresent(CellMerge.class)) { - CellMerge cm = field.getAnnotation(CellMerge.class); - mergeFields.add(field); - mergeFieldsIndex.add(cm.index() == -1 ? i : cm.index()); - if (hasTitle) { - ExcelProperty property = field.getAnnotation(ExcelProperty.class); - rowIndex = Math.max(rowIndex, property.value().length); - } + if (!field.isAnnotationPresent(CellMerge.class)) { + continue; } - } + CellMerge cm = field.getAnnotation(CellMerge.class); + int index = cm.index() == -1 ? i : cm.index(); + mergeFields.put(field, FieldColumnIndex.of(index, cm)); - Map map = new HashMap<>(); - // 生成两两合并单元格 - for (int i = 0; i < list.size(); i++) { - Object rowObj = list.get(i); - for (int j = 0; j < mergeFields.size(); j++) { - Field field = mergeFields.get(j); - Object val = ReflectUtils.invokeGetter(rowObj, field.getName()); - - int colNum = mergeFieldsIndex.get(j); - if (!map.containsKey(field)) { - map.put(field, new RepeatCell(val, i)); - } else { - RepeatCell repeatCell = map.get(field); - Object cellValue = repeatCell.value(); - if (cellValue == null || "".equals(cellValue)) { - // 空值跳过不合并 - continue; - } - - if (!cellValue.equals(val)) { - if ((i - repeatCell.current() > 1)) { - cellList.add(new CellRangeAddress(repeatCell.current() + rowIndex, i + rowIndex - 1, colNum, colNum)); - } - map.put(field, new RepeatCell(val, i)); - } else if (i == list.size() - 1) { - if (!isMerge(list, i, field)) { - // 如果最后一行不能合并,检查之前的数据是否需要合并 - if (i - repeatCell.current() > 1) { - cellList.add(new CellRangeAddress(repeatCell.current() + rowIndex, i + rowIndex - 1, colNum, colNum)); - } - } else if (i > repeatCell.current()) { - // 如果最后一行可以合并,则直接合并到最后 - cellList.add(new CellRangeAddress(repeatCell.current() + rowIndex, i + rowIndex, colNum, colNum)); - } - } else if (!isMerge(list, i, field)) { - if ((i - repeatCell.current() > 1)) { - cellList.add(new CellRangeAddress(repeatCell.current() + rowIndex, i + rowIndex - 1, colNum, colNum)); - } - map.put(field, new RepeatCell(val, i)); - } - } + if (hasTitle) { + ExcelProperty property = field.getAnnotation(ExcelProperty.class); + rowIndex = Math.max(rowIndex, property.value().length); } } - return cellList; + return mergeFields; } - private boolean isMerge(List list, int i, Field field) { - boolean isMerge = true; - CellMerge cm = field.getAnnotation(CellMerge.class); - final String[] mergeBy = cm.mergeBy(); + private boolean isMerge(Object currentRow, Object preRow, CellMerge cellMerge) { + final String[] mergeBy = cellMerge.mergeBy(); if (StrUtil.isAllNotBlank(mergeBy)) { - //比对当前list(i)和list(i - 1)的各个属性值一一比对 如果全为真 则为真 + //比对当前行和上一行的各个属性值一一比对 如果全为真 则为真 for (String fieldName : mergeBy) { - final Object valCurrent = ReflectUtil.getFieldValue(list.get(i), fieldName); - final Object valPre = ReflectUtil.getFieldValue(list.get(i - 1), fieldName); + final Object valCurrent = ReflectUtil.getFieldValue(currentRow, fieldName); + final Object valPre = ReflectUtil.getFieldValue(preRow, fieldName); if (!Objects.equals(valPre, valCurrent)) { //依赖字段如有任一不等值,则标记为不可合并 - isMerge = false; + return false; } } } - return isMerge; + return true; + } + + /** + * 单元格合并 + */ + record RepeatCell(Object value, int current) { + static RepeatCell of(Object value, int current) { + return new RepeatCell(value, current); + } } - record RepeatCell(Object value, int current) {} + /** + * 字段列索引和合并注解信息 + */ + record FieldColumnIndex(int colIndex, CellMerge cellMerge) { + static FieldColumnIndex of(int colIndex, CellMerge cellMerge) { + return new FieldColumnIndex(colIndex, cellMerge); + } + } /** * 创建一个单元格合并处理器实例 -- Gitee From bf0130dea6e014bf07c9e66d6b2347363cad14fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 27 Aug 2025 17:57:56 +0800 Subject: [PATCH 119/155] =?UTF-8?q?update=20hutool=205.8.38=20=3D>=205.8.4?= =?UTF-8?q?0=20=E9=BB=98=E8=AE=A4=E6=94=AF=E6=8C=81=E4=BA=86=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=A0=81=E4=B8=8D=E7=94=9F=E6=88=90=E8=B4=9F=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../auth/captcha/UnsignedMathGenerator.java | 88 ------------------- .../auth/controller/CaptchaController.java | 11 ++- .../org/dromara/auth/enums/CaptchaType.java | 4 +- 4 files changed, 10 insertions(+), 95 deletions(-) delete mode 100644 ruoyi-auth/src/main/java/org/dromara/auth/captcha/UnsignedMathGenerator.java diff --git a/pom.xml b/pom.xml index 0081966ac..7dfb5bd31 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,7 @@ 2.8.11 0.15.0 1.3.0 - 5.8.38 + 5.8.40 3.51.0 2.2.7 1.7.2 diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/captcha/UnsignedMathGenerator.java b/ruoyi-auth/src/main/java/org/dromara/auth/captcha/UnsignedMathGenerator.java deleted file mode 100644 index feb4cdf43..000000000 --- a/ruoyi-auth/src/main/java/org/dromara/auth/captcha/UnsignedMathGenerator.java +++ /dev/null @@ -1,88 +0,0 @@ -package org.dromara.auth.captcha; - -import cn.hutool.captcha.generator.CodeGenerator; -import cn.hutool.core.math.Calculator; -import cn.hutool.core.util.CharUtil; -import cn.hutool.core.util.RandomUtil; -import org.dromara.common.core.utils.StringUtils; - -import java.io.Serial; - -/** - * 无符号计算生成器 - * - * @author Lion Li - */ -public class UnsignedMathGenerator implements CodeGenerator { - - @Serial - private static final long serialVersionUID = -5514819971774091076L; - - private static final String OPERATORS = "+-*"; - - /** - * 参与计算数字最大长度 - */ - private final int numberLength; - - /** - * 构造 - */ - public UnsignedMathGenerator() { - this(2); - } - - /** - * 构造 - * - * @param numberLength 参与计算最大数字位数 - */ - public UnsignedMathGenerator(int numberLength) { - this.numberLength = numberLength; - } - - @Override - public String generate() { - final int limit = getLimit(); - int a = RandomUtil.randomInt(limit); - int b = RandomUtil.randomInt(limit); - String max = Integer.toString(Math.max(a,b)); - String min = Integer.toString(Math.min(a,b)); - max = StringUtils.rightPad(max, this.numberLength, CharUtil.SPACE); - min = StringUtils.rightPad(min, this.numberLength, CharUtil.SPACE); - - return max + RandomUtil.randomChar(OPERATORS) + min + '='; - } - - @Override - public boolean verify(String code, String userInputCode) { - int result; - try { - result = Integer.parseInt(userInputCode); - } catch (NumberFormatException e) { - // 用户输入非数字 - return false; - } - - final int calculateResult = (int) Calculator.conversion(code); - return result == calculateResult; - } - - /** - * 获取验证码长度 - * - * @return 验证码长度 - */ - public int getLength() { - return this.numberLength * 2 + 2; - } - - /** - * 根据长度获取参与计算数字最大值 - * - * @return 最大值 - */ - private int getLimit() { - return Integer.parseInt("1" + StringUtils.repeat('0', this.numberLength)); - } -} diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/controller/CaptchaController.java b/ruoyi-auth/src/main/java/org/dromara/auth/controller/CaptchaController.java index 3a2476a18..6f341a45c 100644 --- a/ruoyi-auth/src/main/java/org/dromara/auth/controller/CaptchaController.java +++ b/ruoyi-auth/src/main/java/org/dromara/auth/controller/CaptchaController.java @@ -64,15 +64,18 @@ public class CaptchaController { String verifyKey = GlobalConstants.CAPTCHA_CODE_KEY + uuid; // 生成验证码 CaptchaType captchaType = captchaProperties.getType(); - boolean isMath = CaptchaType.MATH == captchaType; - Integer length = isMath ? captchaProperties.getNumberLength() : captchaProperties.getCharLength(); - CodeGenerator codeGenerator = ReflectUtils.newInstance(captchaType.getClazz(), length); + CodeGenerator codeGenerator; + if (CaptchaType.MATH == captchaType) { + codeGenerator = ReflectUtils.newInstance(captchaType.getClazz(), captchaProperties.getNumberLength(), false); + } else { + codeGenerator = ReflectUtils.newInstance(captchaType.getClazz(), captchaProperties.getCharLength()); + } AbstractCaptcha captcha = SpringUtils.getBean(captchaProperties.getCategory().getClazz()); captcha.setGenerator(codeGenerator); captcha.createCode(); // 如果是数学验证码,使用SpEL表达式处理验证码结果 String code = captcha.getCode(); - if (isMath) { + if (CaptchaType.MATH == captchaType) { ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression(StringUtils.remove(code, "=")); code = exp.getValue(String.class); diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/enums/CaptchaType.java b/ruoyi-auth/src/main/java/org/dromara/auth/enums/CaptchaType.java index b66334599..afe5d3641 100644 --- a/ruoyi-auth/src/main/java/org/dromara/auth/enums/CaptchaType.java +++ b/ruoyi-auth/src/main/java/org/dromara/auth/enums/CaptchaType.java @@ -1,8 +1,8 @@ package org.dromara.auth.enums; import cn.hutool.captcha.generator.CodeGenerator; +import cn.hutool.captcha.generator.MathGenerator; import cn.hutool.captcha.generator.RandomGenerator; -import org.dromara.auth.captcha.UnsignedMathGenerator; import lombok.AllArgsConstructor; import lombok.Getter; @@ -18,7 +18,7 @@ public enum CaptchaType { /** * 数字 */ - MATH(UnsignedMathGenerator.class), + MATH(MathGenerator.class), /** * 字符 -- Gitee From fc6d45d8c9a88e863a1b972160f328780ca74136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 27 Aug 2025 17:59:46 +0800 Subject: [PATCH 120/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E4=B8=8E=E9=83=A8=E9=97=A8=20=E6=9C=AA=E5=81=9A?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E7=8A=B6=E6=80=81=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/mapper/SysDeptMapper.java | 8 ++++++-- .../org/dromara/system/mapper/SysMenuMapper.java | 12 +++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java index 196eefb3c..1f93c5030 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java @@ -30,7 +30,9 @@ public interface SysDeptMapper extends BaseMapperPlus { */ default String buildDeptByRoleSql(Long roleId) { return """ - select dept_id from sys_role_dept where role_id = %d + select srd.dept_id from sys_role_dept srd + left join sys_role sr on sr.role_id = srd.role_id + where srd.role_id = %d and sr.status = 0 """.formatted(roleId); } @@ -47,7 +49,9 @@ public interface SysDeptMapper extends BaseMapperPlus { default String buildParentDeptByRoleSql(Long roleId) { return """ select parent_id from sys_dept where dept_id in ( - select dept_id from sys_role_dept where role_id = %d + select srd.dept_id from sys_role_dept srd + left join sys_role sr on sr.role_id = srd.role_id + where srd.role_id = %d and sr.status = 0 ) """.formatted(roleId); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java index 10bc015f2..b0903057c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java @@ -32,7 +32,9 @@ public interface SysMenuMapper extends BaseMapperPlus { default String buildMenuByUserSql(Long userId) { return """ select menu_id from sys_role_menu where role_id in ( - select role_id from sys_user_role where user_id = %d + select sur.role_id from sys_user_role sur + left join sys_role sr on sr.role_id = sur.role_id + where sur.user_id = %d and sr.status = 0 ) """.formatted(userId); } @@ -50,7 +52,9 @@ public interface SysMenuMapper extends BaseMapperPlus { */ default String buildMenuByRoleSql(Long roleId) { return """ - select menu_id from sys_role_menu where role_id = %d + select srm.menu_id from sys_role_menu srm + left join sys_role sr on sr.role_id = srm.role_id + where srm.role_id = %d and sr.status = 0 """.formatted(roleId); } @@ -68,7 +72,9 @@ public interface SysMenuMapper extends BaseMapperPlus { default String buildParentMenuByRoleSql(Long roleId) { return """ select parent_id from sys_menu where menu_id in ( - select menu_id from sys_role_menu where role_id = %d + select srm.menu_id from sys_role_menu srm + left join sys_role sr on sr.role_id = srm.role_id + where srm.role_id = %d and sr.status = 0 ) """.formatted(roleId); } -- Gitee From d41e373f8b4bb117e2732ea1449c07bea1d3d14b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 28 Aug 2025 18:03:01 +0800 Subject: [PATCH 121/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=AE=9E=E4=BE=8B=E4=B8=9A=E5=8A=A1=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E7=9A=84=E4=BF=9D=E5=AD=98=E5=92=8C=E5=88=A0=E9=99=A4=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E5=A2=9E=E5=BC=BA=E4=BB=A3=E7=A0=81=E5=8F=AF?= =?UTF-8?q?=E8=AF=BB=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/bo/FlowInstanceBizExtBo.java | 46 ----------- .../workflow/domain/bo/StartProcessBo.java | 11 ++- .../domain/vo/FlowInstanceBizExtVo.java | 58 -------------- .../mapper/FlwInstanceBizExtMapper.java | 50 +++++++++++- .../service/IFlwInstanceBizExtService.java | 30 ------- .../impl/FlwInstanceBizExtServiceImpl.java | 57 ------------- .../service/impl/FlwTaskServiceImpl.java | 80 +++++++++++-------- 7 files changed, 104 insertions(+), 228 deletions(-) delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBizExtBo.java delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceBizExtVo.java delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceBizExtService.java delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceBizExtServiceImpl.java diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBizExtBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBizExtBo.java deleted file mode 100644 index 5173953a8..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBizExtBo.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.dromara.workflow.domain.bo; - -import io.github.linpeilie.annotations.AutoMapper; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.dromara.common.mybatis.core.domain.BaseEntity; -import org.dromara.workflow.domain.FlowInstanceBizExt; - -/** - * 流程实例业务扩展业务对象 flow_instance_biz_ext - * - * @author may - * @date 2025-08-05 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@AutoMapper(target = FlowInstanceBizExt.class, reverseConvertGenerate = false) -public class FlowInstanceBizExtBo extends BaseEntity { - - /** - * 主键 - */ - private Long id; - - /** - * 流程实例ID - */ - private Long instanceId; - - /** - * 业务ID - */ - private String businessId; - - /** - * 业务编码 - */ - private String businessCode; - - /** - * 业务标题 - */ - private String businessTitle; - - -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java index d6ab45185..b31f4fa14 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java @@ -1,9 +1,11 @@ package org.dromara.workflow.domain.bo; +import cn.hutool.core.util.ObjectUtil; import jakarta.validation.constraints.NotBlank; import lombok.Data; import org.dromara.common.core.validate.AddGroup; +import org.dromara.workflow.domain.FlowInstanceBizExt; import java.io.Serial; import java.io.Serializable; @@ -47,7 +49,7 @@ public class StartProcessBo implements Serializable { /** * 流程业务扩展信息 */ - private FlowInstanceBizExtBo flowInstanceBizExtBo; + private FlowInstanceBizExt bizExt; public Map getVariables() { if (variables == null) { @@ -56,4 +58,11 @@ public class StartProcessBo implements Serializable { variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue())); return variables; } + + public FlowInstanceBizExt getBizExt() { + if (ObjectUtil.isNull(bizExt)) { + bizExt = new FlowInstanceBizExt(); + } + return bizExt; + } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceBizExtVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceBizExtVo.java deleted file mode 100644 index e0988b4fc..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceBizExtVo.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.dromara.workflow.domain.vo; - -import cn.idev.excel.annotation.ExcelIgnoreUnannotated; -import cn.idev.excel.annotation.ExcelProperty; -import io.github.linpeilie.annotations.AutoMapper; -import lombok.Data; -import org.dromara.workflow.domain.FlowInstanceBizExt; - -import java.io.Serial; -import java.io.Serializable; - - -/** - * 流程实例业务扩展视图对象 flow_instance_biz_ext - * - * @author may - * @date 2025-08-05 - */ -@Data -@ExcelIgnoreUnannotated -@AutoMapper(target = FlowInstanceBizExt.class) -public class FlowInstanceBizExtVo implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @ExcelProperty(value = "主键") - private Long id; - - /** - * 流程实例ID - */ - @ExcelProperty(value = "流程实例ID") - private Long instanceId; - - /** - * 业务ID - */ - @ExcelProperty(value = "业务ID") - private String businessId; - - /** - * 业务编码 - */ - @ExcelProperty(value = "业务编码") - private String businessCode; - - /** - * 业务标题 - */ - @ExcelProperty(value = "业务标题") - private String businessTitle; - - -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceBizExtMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceBizExtMapper.java index bd9f032a4..e11613cf4 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceBizExtMapper.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceBizExtMapper.java @@ -1,8 +1,11 @@ package org.dromara.workflow.mapper; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.workflow.domain.FlowInstanceBizExt; -import org.dromara.workflow.domain.vo.FlowInstanceBizExtVo; + +import java.util.List; /** * 流程实例业务扩展Mapper接口 @@ -10,6 +13,49 @@ import org.dromara.workflow.domain.vo.FlowInstanceBizExtVo; * @author may * @date 2025-08-05 */ -public interface FlwInstanceBizExtMapper extends BaseMapperPlus { +public interface FlwInstanceBizExtMapper extends BaseMapperPlus { + + /** + * 根据 instanceId 保存或更新流程实例业务扩展 + * + * @param entity 流程实例业务扩展实体 + * @return 操作是否成功 + */ + default int saveOrUpdateByInstanceId(FlowInstanceBizExt entity) { + // 查询是否存在 + FlowInstanceBizExt exist = this.selectOne(new LambdaQueryWrapper() + .eq(FlowInstanceBizExt::getInstanceId, entity.getInstanceId())); + + if (ObjectUtil.isNotNull(exist)) { + // 存在就带上主键更新 + entity.setId(exist.getId()); + return updateById(entity); + } else { + // 不存在就插入 + return insert(entity); + } + } + + /** + * 按照流程实例ID删除单个流程实例业务扩展 + * + * @param instanceId 流程实例ID + * @return 删除的行数 + */ + default int deleteByInstId(Long instanceId) { + return this.delete(new LambdaQueryWrapper() + .eq(FlowInstanceBizExt::getInstanceId, instanceId)); + } + + /** + * 按照流程实例ID批量删除流程实例业务扩展 + * + * @param instanceIds 流程实例ID列表 + * @return 删除的行数 + */ + default int deleteByInstIds(List instanceIds) { + return this.delete(new LambdaQueryWrapper() + .in(FlowInstanceBizExt::getInstanceId, instanceIds)); + } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceBizExtService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceBizExtService.java deleted file mode 100644 index adfe5794f..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceBizExtService.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.dromara.workflow.service; - -import org.dromara.workflow.domain.bo.FlowInstanceBizExtBo; - -import java.util.List; - -/** - * 流程实例业务扩展Service接口 - * - * @author may - * @date 2025-08-05 - */ -public interface IFlwInstanceBizExtService { - - /** - * 新增/修改流程实例业务扩展 - * - * @param bo 流程实例业务扩展 - * @return 是否新增成功 - */ - Boolean saveOrUpdate(FlowInstanceBizExtBo bo); - - /** - * 按照流程实例ID批量删除 - * - * @param instanceIds 流程实例ID - * @return 是否删除成功 - */ - Boolean deleteByInstIds(List instanceIds); -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceBizExtServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceBizExtServiceImpl.java deleted file mode 100644 index 29772780b..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceBizExtServiceImpl.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.dromara.workflow.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.workflow.domain.FlowInstanceBizExt; -import org.dromara.workflow.domain.bo.FlowInstanceBizExtBo; -import org.dromara.workflow.mapper.FlwInstanceBizExtMapper; -import org.dromara.workflow.service.IFlwInstanceBizExtService; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * 流程实例业务扩展Service业务层处理 - * - * @author may - * @date 2025-08-05 - */ -@Slf4j -@RequiredArgsConstructor -@Service -public class FlwInstanceBizExtServiceImpl implements IFlwInstanceBizExtService { - - private final FlwInstanceBizExtMapper baseMapper; - - - /** - * 新增/修改流程实例业务扩展 - * - * @param bo 流程实例业务扩展 - * @return 是否新增成功 - */ - @Override - public Boolean saveOrUpdate(FlowInstanceBizExtBo bo) { - FlowInstanceBizExt convert = MapstructUtils.convert(bo, FlowInstanceBizExt.class); - FlowInstanceBizExt flowInstanceBizExt = baseMapper.selectOne(new LambdaQueryWrapper() - .eq(FlowInstanceBizExt::getInstanceId, bo.getInstanceId())); - if (flowInstanceBizExt != null) { - flowInstanceBizExt.setBusinessTitle(convert.getBusinessTitle()); - return baseMapper.insertOrUpdate(flowInstanceBizExt); - } - return baseMapper.insertOrUpdate(convert); - } - - /** - * 按照流程实例ID批量删除 - * - * @param instanceIds 流程实例ID - * @return 是否删除成功 - */ - @Override - public Boolean deleteByInstIds(List instanceIds) { - return baseMapper.delete(new LambdaQueryWrapper().in(FlowInstanceBizExt::getInstanceId, instanceIds)) > 0; - } -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 090495966..8336019e3 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; @@ -37,18 +36,26 @@ import org.dromara.warm.flow.core.service.*; import org.dromara.warm.flow.core.utils.ExpressionUtil; import org.dromara.warm.flow.core.utils.MapUtil; import org.dromara.warm.flow.orm.entity.*; -import org.dromara.warm.flow.orm.mapper.*; +import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; +import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper; +import org.dromara.warm.flow.orm.mapper.FlowNodeMapper; +import org.dromara.warm.flow.orm.mapper.FlowTaskMapper; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.common.enums.TaskAssigneeType; import org.dromara.workflow.common.enums.TaskStatusEnum; +import org.dromara.workflow.domain.FlowInstanceBizExt; import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo; import org.dromara.workflow.mapper.FlwCategoryMapper; +import org.dromara.workflow.mapper.FlwInstanceBizExtMapper; import org.dromara.workflow.mapper.FlwTaskMapper; -import org.dromara.workflow.service.*; +import org.dromara.workflow.service.IFlwCommonService; +import org.dromara.workflow.service.IFlwNodeExtService; +import org.dromara.workflow.service.IFlwTaskAssigneeService; +import org.dromara.workflow.service.IFlwTaskService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -83,7 +90,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { private final IFlwTaskAssigneeService flwTaskAssigneeService; private final IFlwCommonService flwCommonService; private final IFlwNodeExtService flwNodeExtService; - private final IFlwInstanceBizExtService flowInstanceBizExtService; + private final FlwInstanceBizExtMapper flwInstanceBizExtMapper; @DubboReference private RemoteUserService remoteUserService; @@ -100,6 +107,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { if (StringUtils.isBlank(businessId)) { throw new ServiceException("启动工作流时必须包含业务ID"); } + // 启动流程实例(提交申请) Map variables = startProcessBo.getVariables(); // 流程发起人 @@ -108,14 +116,14 @@ public class FlwTaskServiceImpl implements IFlwTaskService { variables.put(INITIATOR_DEPT_ID, LoginHelper.getDeptId()); // 业务id variables.put(BUSINESS_ID, businessId); + FlowInstanceBizExt bizExt = startProcessBo.getBizExt(); + + // 获取已有流程实例 FlowInstance flowInstance = flowInstanceMapper.selectOne(new LambdaQueryWrapper<>(FlowInstance.class) .eq(FlowInstance::getBusinessId, businessId)); - FlowInstanceBizExtBo extBo = startProcessBo.getFlowInstanceBizExtBo(); - if (ObjectUtil.isEmpty(extBo)) { - extBo = new FlowInstanceBizExtBo(); - startProcessBo.setFlowInstanceBizExtBo(extBo); - } + if (ObjectUtil.isNotNull(flowInstance)) { + // 已存在流程 BusinessStatusEnum.checkStartStatus(flowInstance.getFlowStatus()); List taskList = taskService.list(new FlowTask().setInstanceId(flowInstance.getId())); taskService.mergeVariable(flowInstance, variables); @@ -124,24 +132,16 @@ public class FlwTaskServiceImpl implements IFlwTaskService { dto.setProcessInstanceId(taskList.get(0).getInstanceId()); dto.setTaskId(taskList.get(0).getId()); // 保存流程实例业务信息 - buildFlowInstanceBizExt(flowInstance, startProcessBo.getFlowInstanceBizExtBo()); + this.buildFlowInstanceBizExt(flowInstance, bizExt); return dto; } - String businessCode; - // 生成业务编号 - if (StringUtils.isBlank(extBo.getBusinessCode())) { - //todo 按照自己业务自行修改 - businessCode = System.currentTimeMillis()+ StrUtil.EMPTY; - extBo.setBusinessCode(businessCode); - } else { - businessCode = extBo.getBusinessCode(); - } + // 将流程定义内的扩展参数设置到变量中 Definition definition = FlowEngine.defService().getPublishByFlowCode(startProcessBo.getFlowCode()); Dict dict = JsonUtils.parseMap(definition.getExt()); boolean autoPass = !ObjectUtil.isNull(dict) && dict.getBool(FlowConstant.AUTO_PASS); variables.put(FlowConstant.AUTO_PASS, autoPass); - variables.put(FlowConstant.BUSINESS_CODE, businessCode); + variables.put(FlowConstant.BUSINESS_CODE, this.generateBusinessCode(bizExt)); FlowParams flowParams = FlowParams.build() .handler(startProcessBo.getHandler()) .flowCode(startProcessBo.getFlowCode()) @@ -154,7 +154,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { throw new ServiceException(e.getMessage()); } // 保存流程实例业务信息 - buildFlowInstanceBizExt(instance, startProcessBo.getFlowInstanceBizExtBo()); + this.buildFlowInstanceBizExt(instance, bizExt); // 申请人执行流程 List taskList = taskService.list(new FlowTask().setInstanceId(instance.getId())); if (taskList.size() > 1) { @@ -166,17 +166,29 @@ public class FlwTaskServiceImpl implements IFlwTaskService { return dto; } + /** + * 生成业务编号,如果已有则直接返回已有值 + */ + private String generateBusinessCode(FlowInstanceBizExt bizExt) { + if (StringUtils.isBlank(bizExt.getBusinessCode())) { + // TODO: 按照自己业务规则生成编号 + String businessCode = Convert.toStr(System.currentTimeMillis()); + bizExt.setBusinessCode(businessCode); + return businessCode; + } + return bizExt.getBusinessCode(); + } + /** * 构建流程实例业务信息 * - * @param instance 流程实例 - * @param flowInstanceBizExtBo 业务扩展信息 + * @param instance 流程实例 + * @param bizExt 流程业务扩展信息 */ - private void buildFlowInstanceBizExt(Instance instance, FlowInstanceBizExtBo flowInstanceBizExtBo) { - flowInstanceBizExtBo.setInstanceId(instance.getId()); - flowInstanceBizExtBo.setBusinessId(instance.getBusinessId()); - flowInstanceBizExtBo.setBusinessCode(flowInstanceBizExtBo.getBusinessCode()); - flowInstanceBizExtService.saveOrUpdate(flowInstanceBizExtBo); + private void buildFlowInstanceBizExt(Instance instance, FlowInstanceBizExt bizExt) { + bizExt.setInstanceId(instance.getId()); + bizExt.setBusinessId(instance.getBusinessId()); + flwInstanceBizExtMapper.saveOrUpdateByInstanceId(bizExt); } /** @@ -237,10 +249,10 @@ public class FlwTaskServiceImpl implements IFlwTaskService { /** * 流程办理 * - * @param taskId 任务ID - * @param flowParams 参数 - * @param instanceId 实例ID - * @param autoPass 自动审批 + * @param taskId 任务ID + * @param flowParams 参数 + * @param instanceId 实例ID + * @param autoPass 自动审批 */ private void skipTask(Long taskId, FlowParams flowParams, Long instanceId, Boolean autoPass) { // 执行任务跳转,并根据返回的处理人设置下一步处理人 @@ -496,8 +508,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService { /** * 获取可驳回的前置节点 * - * @param taskId 任务id - * @param nowNodeCode 当前节点 + * @param taskId 任务id + * @param nowNodeCode 当前节点 */ @Override public List getBackTaskNode(Long taskId, String nowNodeCode) { -- Gitee From 85160be7f72b637ee7006e355e49a1d4209a4c50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 28 Aug 2025 18:05:20 +0800 Subject: [PATCH 122/155] =?UTF-8?q?update=20=E6=B7=BB=E5=8A=A0=E6=8A=84?= =?UTF-8?q?=E9=80=81=E8=AE=BE=E7=BD=AE=E5=92=8C=E5=8F=98=E9=87=8F=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=EF=BC=8C=E4=BC=98=E5=8C=96=E6=89=A9=E5=B1=95=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E9=85=8D=E7=BD=AE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/enums/CopySettingEnum.java | 20 ++++ .../workflow/common/enums/VariablesEnum.java | 20 ++++ .../service/impl/FlwNodeExtServiceImpl.java | 91 +++++++++++-------- 3 files changed, 93 insertions(+), 38 deletions(-) create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/CopySettingEnum.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/VariablesEnum.java diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/CopySettingEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/CopySettingEnum.java new file mode 100644 index 000000000..a74af3b2d --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/CopySettingEnum.java @@ -0,0 +1,20 @@ +package org.dromara.workflow.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 抄送设置枚举 + * + * @author AprilWind + */ +@Getter +@AllArgsConstructor +public enum CopySettingEnum implements NodeExtEnum { + ; + private final String label; + private final String value; + private final boolean selected; + +} + diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/VariablesEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/VariablesEnum.java new file mode 100644 index 000000000..dbd54ed54 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/VariablesEnum.java @@ -0,0 +1,20 @@ +package org.dromara.workflow.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 变量枚举 + * + * @author AprilWind + */ +@Getter +@AllArgsConstructor +public enum VariablesEnum implements NodeExtEnum { + ; + private final String label; + private final String value; + private final boolean selected; + +} + diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java index f7e07871b..b2174ee73 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java @@ -14,7 +14,9 @@ import org.dromara.warm.flow.ui.service.NodeExtService; import org.dromara.warm.flow.ui.vo.NodeExt; import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.enums.ButtonPermissionEnum; +import org.dromara.workflow.common.enums.CopySettingEnum; import org.dromara.workflow.common.enums.NodeExtEnum; +import org.dromara.workflow.common.enums.VariablesEnum; import org.dromara.workflow.domain.vo.ButtonPermissionVo; import org.dromara.workflow.service.IFlwNodeExtService; import org.springframework.stereotype.Service; @@ -37,14 +39,35 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService /** * 存储不同 dictType 对应的配置信息 */ - private static final Map CHILD_NODE_MAP = new HashMap<>(); - - record ButtonPermission(String label, Integer type, Boolean must, Boolean multiple) { - } + private static final Map> CHILD_NODE_MAP; static { - CHILD_NODE_MAP.put(ButtonPermissionEnum.class.getSimpleName(), - new ButtonPermission("权限按钮", 4, false, true)); + CHILD_NODE_MAP = Map.of( + CopySettingEnum.class.getSimpleName(), + Map.of( + "label", "抄送对象", + "type", 2, + "must", false, + "multiple", false, + "desc", "设置该节点的抄送办理人" + ), + VariablesEnum.class.getSimpleName(), + Map.of( + "label", "自定义参数", + "type", 2, + "must", false, + "multiple", false, + "desc", "节点执行时可以使用的自定义参数" + ), + ButtonPermissionEnum.class.getSimpleName(), + Map.of( + "label", "权限按钮", + "type", 4, + "must", false, + "multiple", true, + "desc", "控制该节点的按钮权限" + ) + ); } @DubboReference @@ -58,6 +81,9 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService @Override public List getNodeExt() { List nodeExtList = new ArrayList<>(); + // 构建基础设置页面 + nodeExtList.add(buildNodeExt("wf_basic_tab", "基础设置", 1, + List.of(CopySettingEnum.class, VariablesEnum.class))); // 构建按钮权限页面 nodeExtList.add(buildNodeExt("wf_button_tab", "权限", 2, List.of(ButtonPermissionEnum.class))); @@ -107,9 +133,20 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService return null; } String simpleName = enumClass.getSimpleName(); - NodeExt.ChildNode childNode = buildChildNodeMap(simpleName); + NodeExt.ChildNode childNode = new NodeExt.ChildNode(); + Map map = CHILD_NODE_MAP.get(simpleName); // 编码,此json中唯 childNode.setCode(simpleName); + // label名称 + childNode.setLabel(Convert.toStr(map.get("label"))); + // 1:输入框 2:文本域 3:下拉框 4:选择框 + childNode.setType(Convert.toInt(map.get("type"), 1)); + // 是否必填 + childNode.setMust(Convert.toBool(map.get("must"), false)); + // 是否多选 + childNode.setMultiple(Convert.toBool(map.get("multiple"), true)); + // 描述 + childNode.setDesc(Convert.toStr(map.get("desc"), null)); // 字典,下拉框和复选框时用到 childNode.setDict(Arrays.stream(enumClass.getEnumConstants()) .map(NodeExtEnum.class::cast) @@ -126,16 +163,21 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService * @return 构建的 `ChildNode` 对象 */ private NodeExt.ChildNode buildChildNode(String dictType) { - RemoteDictTypeVo dictTypeDTO = remoteDictService.selectDictTypeByType(dictType); - if (ObjectUtil.isNull(dictTypeDTO)) { + RemoteDictTypeVo dictTypeDTO = remoteDictService.selectDictTypeByType(dictType); if (ObjectUtil.isNull(dictTypeDTO)) { return null; } - NodeExt.ChildNode childNode = buildChildNodeMap(dictType); + NodeExt.ChildNode childNode = new NodeExt.ChildNode(); // 编码,此json中唯一 childNode.setCode(dictType); // label名称 childNode.setLabel(dictTypeDTO.getDictName()); - // 描述 + // 1:输入框 2:文本域 3:下拉框 4:选择框 + childNode.setType(3); + // 是否必填 + childNode.setMust(false); + // 是否多选 + childNode.setMultiple(true); + // 描述 (可根据描述参数解析更多配置,如type,must,multiple等) childNode.setDesc(dictTypeDTO.getRemark()); // 字典,下拉框和复选框时用到 childNode.setDict(remoteDictService.selectDictDataByType(dictType) @@ -145,33 +187,6 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService return childNode; } - /** - * 根据 CHILD_NODE_MAP 中的配置信息,构建一个基本的 ChildNode 对象 - * 该方法用于设置 ChildNode 的常规属性,例如 label、type、是否必填、是否多选等 - * - * @param key CHILD_NODE_MAP 的 key - * @return 返回构建好的 ChildNode 对象 - */ - private NodeExt.ChildNode buildChildNodeMap(String key) { - NodeExt.ChildNode childNode = new NodeExt.ChildNode(); - ButtonPermission bp = CHILD_NODE_MAP.get(key); - if (bp == null) { - childNode.setType(1); - childNode.setMust(false); - childNode.setMultiple(true); - return childNode; - } - // label名称 - childNode.setLabel(bp.label()); - // 1:输入框 2:输入框 3:下拉框 4:选择框 - childNode.setType(bp.type()); - // 是否必填 - childNode.setMust(bp.must()); - // 是否多选 - childNode.setMultiple(bp.multiple()); - return childNode; - } - /** * 从扩展属性构建按钮权限列表:根据 ext 中记录的权限值,标记每个按钮是否勾选 * -- Gitee From 7c341548c4c533f6a33b98c67680e2c3d372bf5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 28 Aug 2025 18:07:31 +0800 Subject: [PATCH 123/155] =?UTF-8?q?update=20=E8=A7=A3=E6=9E=90=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E5=B1=9E=E6=80=A7=20JSON=EF=BC=8C=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=20Node=20=E6=89=A9=E5=B1=95=E5=B1=9E=E6=80=A7=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=EF=BC=8C=E5=A2=9E=E5=BC=BA=E4=BB=A3=E7=A0=81=E5=8F=AF?= =?UTF-8?q?=E8=AF=BB=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/workflow/domain/vo/NodeExtVo.java | 45 +++++++ .../workflow/service/IFlwNodeExtService.java | 22 ++- .../service/impl/FlwNodeExtServiceImpl.java | 125 +++++++++--------- .../service/impl/FlwTaskServiceImpl.java | 4 +- 4 files changed, 126 insertions(+), 70 deletions(-) create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/NodeExtVo.java diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/NodeExtVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/NodeExtVo.java new file mode 100644 index 000000000..5fb3380b4 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/NodeExtVo.java @@ -0,0 +1,45 @@ +package org.dromara.workflow.domain.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * Node 扩展属性解析结果 VO + *

+ * 用于封装从扩展属性 JSON 中解析出的各类信息,包括按钮权限、抄送对象和自定义参数。 + * + * @author AprilWind + */ +@Data +public class NodeExtVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 按钮权限列表 + *

+ * 根据扩展属性中 ButtonPermissionEnum 类型的数据生成,每个元素表示一个按钮及其是否勾选。 + */ + private List buttonPermissions; + + /** + * 抄送对象 ID 集合 + *

+ * 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID + */ + private Set copySettings; + + /** + * 自定义参数 Map + *

+ * 根据扩展属性中 VariablesEnum 类型的数据生成,存储 key=value 格式的自定义参数 + */ + private Map variables; + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwNodeExtService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwNodeExtService.java index 959516535..2ccc6a73e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwNodeExtService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwNodeExtService.java @@ -1,8 +1,6 @@ package org.dromara.workflow.service; -import org.dromara.workflow.domain.vo.ButtonPermissionVo; - -import java.util.List; +import org.dromara.workflow.domain.vo.NodeExtVo; /** * 流程节点扩展属性 服务层 @@ -12,11 +10,23 @@ import java.util.List; public interface IFlwNodeExtService { /** - * 从扩展属性构建按钮权限列表:根据 ext 中记录的权限值,标记每个按钮是否勾选 + * 解析扩展属性 JSON 并构建 Node 扩展属性对象 + *

+ * 根据传入的 JSON 字符串,将扩展属性分为三类: + * 1. ButtonPermissionEnum:解析为按钮权限列表,标记每个按钮是否勾选 + * 2. CopySettingEnum:解析为抄送对象 ID 集合 + * 3. VariablesEnum:解析为自定义参数 Map + * + *

示例 JSON: + * [ + * {"code": "ButtonPermissionEnum", "value": "back,termination"}, + * {"code": "CopySettingEnum", "value": "1"}, + * {"code": "VariablesEnum", "value": "key1=value1,key2=value2"} + * ] * * @param ext 扩展属性 JSON 字符串 - * @return 按钮权限 VO 列表 + * @return NodeExtVo 对象,封装按钮权限列表、抄送对象集合和自定义参数 Map */ - List buildButtonPermissionsFromExt(String ext); + NodeExtVo parseNodeExt(String ext); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java index b2174ee73..8cb1407d5 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java @@ -1,8 +1,8 @@ package org.dromara.workflow.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; @@ -18,12 +18,12 @@ import org.dromara.workflow.common.enums.CopySettingEnum; import org.dromara.workflow.common.enums.NodeExtEnum; import org.dromara.workflow.common.enums.VariablesEnum; import org.dromara.workflow.domain.vo.ButtonPermissionVo; +import org.dromara.workflow.domain.vo.NodeExtVo; import org.dromara.workflow.service.IFlwNodeExtService; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * 流程设计器-节点扩展属性 @@ -163,7 +163,8 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService * @return 构建的 `ChildNode` 对象 */ private NodeExt.ChildNode buildChildNode(String dictType) { - RemoteDictTypeVo dictTypeDTO = remoteDictService.selectDictTypeByType(dictType); if (ObjectUtil.isNull(dictTypeDTO)) { + RemoteDictTypeVo dictTypeDTO = remoteDictService.selectDictTypeByType(dictType); + if (ObjectUtil.isNull(dictTypeDTO)) { return null; } NodeExt.ChildNode childNode = new NodeExt.ChildNode(); @@ -188,73 +189,71 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService } /** - * 从扩展属性构建按钮权限列表:根据 ext 中记录的权限值,标记每个按钮是否勾选 + * 解析扩展属性 JSON 并构建 Node 扩展属性对象 + *

+ * 根据传入的 JSON 字符串,将扩展属性分为三类: + * 1. ButtonPermissionEnum:解析为按钮权限列表,标记每个按钮是否勾选 + * 2. CopySettingEnum:解析为抄送对象 ID 集合 + * 3. VariablesEnum:解析为自定义参数 Map + * + *

示例 JSON: + * [ + * {"code": "ButtonPermissionEnum", "value": "back,termination"}, + * {"code": "CopySettingEnum", "value": "1"}, + * {"code": "VariablesEnum", "value": "key1=value1,key2=value2"} + * ] * * @param ext 扩展属性 JSON 字符串 - * @return 按钮权限 VO 列表 + * @return NodeExtVo 对象,封装按钮权限列表、抄送对象集合和自定义参数 Map */ @Override - public List buildButtonPermissionsFromExt(String ext) { - // 解析 ext 为 Map>,用于标记权限 - Map> permissionMap = JsonUtils.parseArray(ext, ButtonPermissionVo.class) - .stream() - .collect(Collectors.toMap( - ButtonPermissionVo::getCode, - item -> StringUtils.splitList(item.getValue()).stream() - .map(String::trim) - .filter(StrUtil::isNotBlank) - .collect(Collectors.toSet()), - (a, b) -> b, - HashMap::new - )); + public NodeExtVo parseNodeExt(String ext) { + NodeExtVo nodeExtVo = new NodeExtVo(); - // 构建按钮权限列表,标记哪些按钮在 permissionMap 中出现(表示已勾选) - return buildPermissionsFromSources(permissionMap, List.of(ButtonPermissionEnum.class)); - } + // 解析 JSON 为 Dict 列表 + List nodeExtMap = JsonUtils.parseArrayMap(ext); - /** - * 将权限映射与按钮权限来源(枚举类或字典类型)进行匹配,生成权限视图列表 - *

- * 使用说明: - * - sources 支持传入多个来源类型,支持 NodeExtEnum 枚举类 或 字典类型字符串(dictType) - * - 若需要扩展更多按钮权限,只需在 sources 中新增对应的枚举类或字典类型 - *

- * 示例: - * buildPermissionsFromSources(permissionMap, List.of(ButtonPermissionEnum.class, "custom_button_dict")); - * - * @param permissionMap 权限映射 - * @param sources 枚举类或字典类型列表 - * @return 按钮权限视图对象列表 - */ - @SuppressWarnings("unchecked cast") - private List buildPermissionsFromSources(Map> permissionMap, List sources) { - return sources.stream() - .flatMap(source -> { - if (source instanceof Class clazz && NodeExtEnum.class.isAssignableFrom(clazz)) { - Set selectedSet = permissionMap.getOrDefault(clazz.getSimpleName(), Collections.emptySet()); - return extractDictItems(this.buildChildNode((Class) clazz), selectedSet).stream(); - } else if (source instanceof String dictType) { - Set selectedSet = permissionMap.getOrDefault(dictType, Collections.emptySet()); - return extractDictItems(this.buildChildNode(dictType), selectedSet).stream(); - } - return Stream.empty(); - }).toList(); - } + for (Dict nodeExt : nodeExtMap) { + String code = nodeExt.getStr("code"); + String value = nodeExt.getStr("value"); - /** - * 从节点子项中提取字典项,并构建按钮权限视图对象列表 - * - * @param childNode 子节点 - * @param selectedSet 已选中的值集 - * @return 按钮权限视图对象列表 - */ - private List extractDictItems(NodeExt.ChildNode childNode, Set selectedSet) { - return Optional.ofNullable(childNode) - .map(NodeExt.ChildNode::getDict) - .orElse(List.of()) - .stream() - .map(dict -> new ButtonPermissionVo(dict.getValue(), selectedSet.contains(dict.getValue()))) - .toList(); + if (ButtonPermissionEnum.class.getSimpleName().equals(code)) { + // 解析按钮权限 + // 将 value 拆分为 Set,便于精确匹配 + Set buttonSet = StringUtils.str2Set(value, StringUtils.SEPARATOR); + + // 获取按钮字典配置 + NodeExt.ChildNode childNode = buildChildNode(ButtonPermissionEnum.class); + + // 构建 ButtonPermissionVo 列表 + List buttonList = Optional.ofNullable(childNode) + .map(NodeExt.ChildNode::getDict) + .orElse(List.of()) + .stream() + .map(dict -> new ButtonPermissionVo(dict.getValue(), buttonSet.contains(dict.getValue()))) + .toList(); + + nodeExtVo.setButtonPermissions(buttonList); + + } else if (CopySettingEnum.class.getSimpleName().equals(code)) { + // 解析抄送对象 ID 集合 + nodeExtVo.setCopySettings(StringUtils.str2Set(value, StringUtils.SEPARATOR)); + + } else if (VariablesEnum.class.getSimpleName().equals(code)) { + // 解析自定义参数 + // 将 key=value 字符串拆分为 Map + Map variables = Arrays.stream(StringUtils.split(value, StringUtils.SEPARATOR)) + .map(s -> StringUtils.split(s, "=")) + .filter(arr -> arr.length == 2) + .collect(Collectors.toMap(arr -> arr[0], arr -> arr[1])); + + nodeExtVo.setVariables(variables); + } else { + // 未知扩展类型,记录日志 + log.warn("未知扩展类型:code={}, value={}", code, value); + } + } + return nodeExtVo; } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 8336019e3..b1a31a8e8 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -49,6 +49,7 @@ import org.dromara.workflow.domain.FlowInstanceBizExt; import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo; +import org.dromara.workflow.domain.vo.NodeExtVo; import org.dromara.workflow.mapper.FlwCategoryMapper; import org.dromara.workflow.mapper.FlwInstanceBizExtMapper; import org.dromara.workflow.mapper.FlwTaskMapper; @@ -599,8 +600,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { if (ObjectUtil.isNull(flowNode)) { throw new NullPointerException("当前【" + flowTaskVo.getNodeCode() + "】节点编码不存在"); } + NodeExtVo nodeExtVo = flwNodeExtService.parseNodeExt(flowNode.getExt()); //设置按钮权限 - flowTaskVo.setButtonList(flwNodeExtService.buildButtonPermissionsFromExt(flowNode.getExt())); + flowTaskVo.setButtonList(nodeExtVo.getButtonPermissions()); flowTaskVo.setNodeRatio(flowNode.getNodeRatio()); flowTaskVo.setApplyNode(flowNode.getNodeCode().equals(flwCommonService.applyNodeCode(task.getDefinitionId()))); return flowTaskVo; -- Gitee From 971f0070f702f1909763d62334382cbc14d79635 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 28 Aug 2025 18:08:49 +0800 Subject: [PATCH 124/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=89=8D=E7=AB=AF=E8=BF=94=E5=9B=9E=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E6=89=A9=E5=B1=95=E6=95=B0=E6=8D=AE(=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90=20=E6=8A=84=E9=80=81=E4=BA=BA=20=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E5=8F=98=E9=87=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/workflow/domain/vo/FlowTaskVo.java | 17 ++++++++++++++++- .../service/impl/FlwTaskServiceImpl.java | 13 +++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java index 4c32d5696..aee4a7f1d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java @@ -5,12 +5,14 @@ import org.dromara.common.translation.annotation.Translation; import org.dromara.common.translation.constant.TransConstant; import org.dromara.warm.flow.core.entity.User; import org.dromara.workflow.common.constant.FlowConstant; +import org.dromara.workflow.domain.bo.FlowCopyBo; import java.io.Serial; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import java.util.List; +import java.util.Map; /** * 任务视图 @@ -185,6 +187,20 @@ public class FlowTaskVo implements Serializable { */ private List buttonList; + /** + * 抄送对象 ID 集合 + *

+ * 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID + */ + private List copyList; + + /** + * 自定义参数 Map + *

+ * 根据扩展属性中 VariablesEnum 类型的数据生成,存储 key=value 格式的自定义参数 + */ + private Map varList; + //业务扩展信息开始 /** * 业务编码 @@ -198,4 +214,3 @@ public class FlowTaskVo implements Serializable { //业务扩展信息结束 } - diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index b1a31a8e8..ec6350a48 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -603,6 +603,19 @@ public class FlwTaskServiceImpl implements IFlwTaskService { NodeExtVo nodeExtVo = flwNodeExtService.parseNodeExt(flowNode.getExt()); //设置按钮权限 flowTaskVo.setButtonList(nodeExtVo.getButtonPermissions()); + if (CollUtil.isNotEmpty(nodeExtVo.getCopySettings())) { + List list = StreamUtils.toList(nodeExtVo.getCopySettings(), x -> { + FlowCopyBo bo = new FlowCopyBo(); + Long id = Convert.toLong(x); + bo.setUserId(id); + bo.setUserName(remoteUserService.selectUserNameById(id)); + return bo; + }); + flowTaskVo.setCopyList(list); + } else { + flowTaskVo.setCopyList(new ArrayList<>()); + } + flowTaskVo.setVarList(nodeExtVo.getVariables()); flowTaskVo.setNodeRatio(flowNode.getNodeRatio()); flowTaskVo.setApplyNode(flowNode.getNodeCode().equals(flwCommonService.applyNodeCode(task.getDefinitionId()))); return flowTaskVo; -- Gitee From 2db80ae6dad052e3dcf6839a96f558c423f7416e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 28 Aug 2025 18:10:39 +0800 Subject: [PATCH 125/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=90=8E=E7=AB=AF=E7=9B=91=E5=90=AC=E5=99=A8=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E8=8A=82=E7=82=B9=E6=89=A9=E5=B1=95=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=88=B0=E6=B5=81=E7=A8=8B=E5=8F=98=E9=87=8F(=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E6=9D=83=E9=99=90=20=E6=8A=84=E9=80=81=E4=BA=BA=20?= =?UTF-8?q?=E6=89=A9=E5=B1=95=E5=8F=98=E9=87=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/WorkflowGlobalListener.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 6a18bea61..79b910cb6 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -1,13 +1,17 @@ package org.dromara.workflow.listener; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.TypeReference; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; +import org.dromara.system.api.RemoteUserService; import org.dromara.warm.flow.core.dto.FlowParams; import org.dromara.warm.flow.core.entity.Definition; import org.dromara.warm.flow.core.entity.Instance; @@ -19,15 +23,18 @@ import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.domain.bo.FlowCopyBo; +import org.dromara.workflow.domain.vo.NodeExtVo; import org.dromara.workflow.handler.FlowProcessEventHandler; import org.dromara.workflow.service.IFlwCommonService; import org.dromara.workflow.service.IFlwInstanceService; +import org.dromara.workflow.service.IFlwNodeExtService; import org.dromara.workflow.service.IFlwTaskService; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; /** * 全局任务办理监听 @@ -44,8 +51,12 @@ public class WorkflowGlobalListener implements GlobalListener { private final IFlwInstanceService instanceService; private final FlowProcessEventHandler flowProcessEventHandler; private final IFlwCommonService flwCommonService; + private final IFlwNodeExtService nodeExtService; private final InsService insService; + @DubboReference + private RemoteUserService remoteUserService; + /** * 创建监听器,任务创建时执行 * @@ -63,6 +74,25 @@ public class WorkflowGlobalListener implements GlobalListener { */ @Override public void start(ListenerVariable listenerVariable) { + String ext = listenerVariable.getNode().getExt(); + if (StringUtils.isNotBlank(ext)) { + NodeExtVo nodeExt = nodeExtService.parseNodeExt(ext); + Map variable = listenerVariable.getVariable(); + Set copyList = nodeExt.getCopySettings(); + if (CollUtil.isNotEmpty(copyList)) { + List list = StreamUtils.toList(copyList, x -> { + FlowCopyBo bo = new FlowCopyBo(); + Long id = Convert.toLong(x); + bo.setUserId(id); + bo.setUserName(remoteUserService.selectUserNameById(id)); + return bo; + }); + variable.put(FlowConstant.FLOW_COPY_LIST, list); + } + if (CollUtil.isNotEmpty(nodeExt.getVariables())) { + variable.putAll(nodeExt.getVariables()); + } + } } /** -- Gitee From 4266517ead32e428e8b2b832c36add3cd9ac62b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 29 Aug 2025 09:56:55 +0800 Subject: [PATCH 126/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E5=8C=85?= =?UTF-8?q?=E5=90=8D=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/dromara/gen/util/VelocityUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/util/VelocityUtils.java b/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/util/VelocityUtils.java index 25f02dda9..5f4eecc71 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/util/VelocityUtils.java +++ b/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/util/VelocityUtils.java @@ -1,4 +1,4 @@ -package org.dromara.generator.util; +package org.dromara.gen.util; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; -- Gitee From 328f5dcdac8249fd7582b0a3c3420a7b897b7c3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 29 Aug 2025 10:11:16 +0800 Subject: [PATCH 127/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B0=86?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=80=BC=E4=BB=8Ebo=E6=94=B9=E4=B8=BAvo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/domain/vo/FlowCopyVo.java | 36 +++++++++++++++++++ .../workflow/domain/vo/FlowTaskVo.java | 3 +- .../service/impl/FlwTaskServiceImpl.java | 9 ++--- 3 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCopyVo.java diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCopyVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCopyVo.java new file mode 100644 index 000000000..67ef9e2c3 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCopyVo.java @@ -0,0 +1,36 @@ +package org.dromara.workflow.domain.vo; + +import lombok.Data; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 抄送对象 + * + * @author AprilWind + */ +@Data +public class FlowCopyVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 用户id + */ + private Long userId; + + /** + * 用户名称 + */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "userId") + private String userName; + + public FlowCopyVo(Long userId) { + this.userId = userId; + } + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java index aee4a7f1d..25a7d85b1 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java @@ -5,7 +5,6 @@ import org.dromara.common.translation.annotation.Translation; import org.dromara.common.translation.constant.TransConstant; import org.dromara.warm.flow.core.entity.User; import org.dromara.workflow.common.constant.FlowConstant; -import org.dromara.workflow.domain.bo.FlowCopyBo; import java.io.Serial; import java.io.Serializable; @@ -192,7 +191,7 @@ public class FlowTaskVo implements Serializable { *

* 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID */ - private List copyList; + private List copyList; /** * 自定义参数 Map diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index ec6350a48..59e4ff7be 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -47,6 +47,7 @@ import org.dromara.workflow.common.enums.TaskAssigneeType; import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.domain.FlowInstanceBizExt; import org.dromara.workflow.domain.bo.*; +import org.dromara.workflow.domain.vo.FlowCopyVo; import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo; import org.dromara.workflow.domain.vo.NodeExtVo; @@ -604,13 +605,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { //设置按钮权限 flowTaskVo.setButtonList(nodeExtVo.getButtonPermissions()); if (CollUtil.isNotEmpty(nodeExtVo.getCopySettings())) { - List list = StreamUtils.toList(nodeExtVo.getCopySettings(), x -> { - FlowCopyBo bo = new FlowCopyBo(); - Long id = Convert.toLong(x); - bo.setUserId(id); - bo.setUserName(remoteUserService.selectUserNameById(id)); - return bo; - }); + List list = StreamUtils.toList(nodeExtVo.getCopySettings(), x -> new FlowCopyVo(Convert.toLong(x))); flowTaskVo.setCopyList(list); } else { flowTaskVo.setCopyList(new ArrayList<>()); -- Gitee From de6fffc6fe54b5ff533b37aeda1d7572f7f97803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 29 Aug 2025 10:15:28 +0800 Subject: [PATCH 128/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/WorkflowGlobalListener.java | 16 +++---- .../service/impl/FlwCommonServiceImpl.java | 43 ++++++++++++------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 79b910cb6..30773899b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -12,13 +12,13 @@ import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.system.api.RemoteUserService; +import org.dromara.warm.flow.core.FlowEngine; import org.dromara.warm.flow.core.dto.FlowParams; import org.dromara.warm.flow.core.entity.Definition; import org.dromara.warm.flow.core.entity.Instance; import org.dromara.warm.flow.core.entity.Task; import org.dromara.warm.flow.core.listener.GlobalListener; import org.dromara.warm.flow.core.listener.ListenerVariable; -import org.dromara.warm.flow.core.service.InsService; import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.common.enums.TaskStatusEnum; @@ -48,11 +48,10 @@ import java.util.Set; public class WorkflowGlobalListener implements GlobalListener { private final IFlwTaskService flwTaskService; - private final IFlwInstanceService instanceService; + private final IFlwInstanceService flwInstanceService; private final FlowProcessEventHandler flowProcessEventHandler; private final IFlwCommonService flwCommonService; private final IFlwNodeExtService nodeExtService; - private final InsService insService; @DubboReference private RemoteUserService remoteUserService; @@ -162,7 +161,7 @@ public class WorkflowGlobalListener implements GlobalListener { flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, BusinessStatusEnum.BACK.getStatus(), params, false); // 修改流程实例状态 instance.setFlowStatus(BusinessStatusEnum.BACK.getStatus()); - insService.updateById(instance); + FlowEngine.insService().updateById(instance); } } } @@ -191,12 +190,9 @@ public class WorkflowGlobalListener implements GlobalListener { if (variable.containsKey(FlowConstant.MESSAGE_TYPE)) { List messageType = MapUtil.get(variable, FlowConstant.MESSAGE_TYPE, new TypeReference<>() {}); String notice = MapUtil.getStr(variable, FlowConstant.MESSAGE_NOTICE); - // 消息通知 - if (CollUtil.isNotEmpty(messageType)) { - flwCommonService.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice); - } + flwCommonService.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice); } - insService.removeVariables(instance.getId(), + FlowEngine.insService().removeVariables(instance.getId(), FlowConstant.FLOW_COPY_LIST, FlowConstant.MESSAGE_TYPE, FlowConstant.MESSAGE_NOTICE, @@ -220,7 +216,7 @@ public class WorkflowGlobalListener implements GlobalListener { if (flwTaskService.isTaskEnd(instanceId)) { String status = BusinessStatusEnum.FINISH.getStatus(); // 更新流程状态为已完成 - instanceService.updateStatus(instanceId, status); + flwInstanceService.updateStatus(instanceId, status); log.info("流程已结束,状态更新为: {}", status); return status; } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java index 1628514e6..a1de00f76 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java @@ -11,9 +11,8 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.resource.api.RemoteMailService; import org.dromara.resource.api.RemoteMessageService; import org.dromara.system.api.domain.vo.RemoteUserVo; +import org.dromara.warm.flow.core.FlowEngine; import org.dromara.warm.flow.core.entity.Node; -import org.dromara.warm.flow.core.enums.SkipType; -import org.dromara.warm.flow.core.service.NodeService; import org.dromara.warm.flow.orm.entity.FlowTask; import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.enums.MessageTypeEnum; @@ -21,8 +20,9 @@ import org.dromara.workflow.service.IFlwCommonService; import org.dromara.workflow.service.IFlwTaskService; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; -import java.util.stream.Collectors; /** @@ -36,7 +36,7 @@ import java.util.stream.Collectors; @Service public class FlwCommonServiceImpl implements IFlwCommonService { - private final NodeService nodeService; + private static final String DEFAULT_SUBJECT = "单据审批提醒"; @DubboReference private RemoteMessageService remoteMessageService; @@ -44,16 +44,23 @@ public class FlwCommonServiceImpl implements IFlwCommonService { private RemoteMailService remoteMailService; /** - * 发送消息 + * 根据流程实例发送消息给当前处理人 * * @param flowName 流程定义名称 - * @param messageType 消息类型 - * @param message 消息内容,为空则发送默认配置的消息内容 + * @param instId 流程实例ID + * @param messageType 消息类型列表 + * @param message 消息内容,为空则使用默认消息 */ @Override public void sendMessage(String flowName, Long instId, List messageType, String message) { + if (CollUtil.isNotEmpty(messageType)) { + return; + } IFlwTaskService flwTaskService = SpringUtils.getBean(IFlwTaskService.class); List list = flwTaskService.selectByInstId(instId); + if (CollUtil.isEmpty(list)) { + return; + } if (StringUtils.isBlank(message)) { message = "有新的【" + flowName + "】单据已经提交至您,请您及时处理。"; } @@ -61,19 +68,25 @@ public class FlwCommonServiceImpl implements IFlwCommonService { if (CollUtil.isEmpty(userList)) { return; } - sendMessage(messageType, message, "单据审批提醒", userList); + sendMessage(messageType, message, DEFAULT_SUBJECT, userList); } /** - * 发送消息 + * 发送消息给指定用户列表 * - * @param messageType 消息类型 + * @param messageType 消息类型列表 * @param message 消息内容 * @param subject 邮件标题 - * @param userList 接收用户 + * @param userList 接收用户列表 */ @Override public void sendMessage(List messageType, String message, String subject, List userList) { + if (CollUtil.isEmpty(messageType) || CollUtil.isEmpty(userList)) { + return; + } + List userIds = new ArrayList<>(StreamUtils.toSet(userList, RemoteUserVo::getUserId)); + String emails = StreamUtils.join(userList, RemoteUserVo::getEmail); + for (String code : messageType) { MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); if (ObjectUtil.isEmpty(messageTypeEnum)) { @@ -81,11 +94,10 @@ public class FlwCommonServiceImpl implements IFlwCommonService { } switch (messageTypeEnum) { case SYSTEM_MESSAGE -> { - List userIds = StreamUtils.toList(userList, RemoteUserVo::getUserId).stream().distinct().collect(Collectors.toList()); remoteMessageService.publishMessage(userIds, message); } case EMAIL_MESSAGE -> { - remoteMailService.send(StreamUtils.join(userList, RemoteUserVo::getEmail), "单据审批提醒", message); + remoteMailService.send(emails, subject, message); } case SMS_MESSAGE -> { //todo 短信发送 @@ -103,9 +115,8 @@ public class FlwCommonServiceImpl implements IFlwCommonService { */ @Override public String applyNodeCode(Long definitionId) { - Node startNode = nodeService.getStartNode(definitionId); - Node nextNode = nodeService.getNextNode(definitionId, startNode.getNodeCode(), null, SkipType.PASS.getKey()); - return nextNode.getNodeCode(); + List firstBetweenNode = FlowEngine.nodeService().getFirstBetweenNode(definitionId, new HashMap<>()); + return firstBetweenNode.get(0).getNodeCode(); } } -- Gitee From 6dcb3153c2ec2b0f3fa659a7908645b6c58a4916 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 1 Sep 2025 12:03:09 +0800 Subject: [PATCH 129/155] =?UTF-8?q?upadte=20=E4=BC=98=E5=8C=96=20Stream?= =?UTF-8?q?=E6=B5=81=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/utils/StreamUtils.java | 153 +++++++++++------- .../service/impl/FlwTaskServiceImpl.java | 18 +-- 2 files changed, 108 insertions(+), 63 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java index f9e53a508..5172f3225 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java @@ -1,7 +1,6 @@ package org.dromara.common.core.utils; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.map.MapUtil; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -28,10 +27,12 @@ public class StreamUtils { */ public static List filter(Collection collection, Predicate function) { if (CollUtil.isEmpty(collection)) { - return CollUtil.newArrayList(); + return Collections.emptyList(); } - // 注意此处不要使用 .toList() 新语法 因为返回的是不可变List 会导致序列化问题 - return collection.stream().filter(function).collect(Collectors.toList()); + return collection.stream() + .filter(function) + // 注意此处不要使用 .toList() 新语法 因为返回的是不可变List 会导致序列化问题 + .collect(Collectors.toList()); } /** @@ -39,13 +40,26 @@ public class StreamUtils { * * @param collection 需要查询的集合 * @param function 过滤方法 - * @return 找到符合条件的第一个元素,没有则返回null + * @return 找到符合条件的第一个元素,没有则返回 Optional.empty() */ - public static E findFirst(Collection collection, Predicate function) { + public static Optional findFirst(Collection collection, Predicate function) { if (CollUtil.isEmpty(collection)) { - return null; + return Optional.empty(); } - return collection.stream().filter(function).findFirst().orElse(null); + return collection.stream() + .filter(function) + .findFirst(); + } + + /** + * 找到流中满足条件的第一个元素值 + * + * @param collection 需要查询的集合 + * @param function 过滤方法 + * @return 找到符合条件的第一个元素,没有则返回 null + */ + public static E findFirstValue(Collection collection, Predicate function) { + return findFirst(collection,function).orElse(null); } /** @@ -53,13 +67,26 @@ public class StreamUtils { * * @param collection 需要查询的集合 * @param function 过滤方法 - * @return 找到符合条件的任意一个元素,没有则返回null + * @return 找到符合条件的任意一个元素,没有则返回 Optional.empty() */ public static Optional findAny(Collection collection, Predicate function) { if (CollUtil.isEmpty(collection)) { return Optional.empty(); } - return collection.stream().filter(function).findAny(); + return collection.stream() + .filter(function) + .findAny(); + } + + /** + * 找到流中任意一个满足条件的元素值 + * + * @param collection 需要查询的集合 + * @param function 过滤方法 + * @return 找到符合条件的任意一个元素,没有则返回null + */ + public static E findAnyValue(Collection collection, Predicate function) { + return findAny(collection,function).orElse(null); } /** @@ -85,7 +112,10 @@ public class StreamUtils { if (CollUtil.isEmpty(collection)) { return StringUtils.EMPTY; } - return collection.stream().map(function).filter(Objects::nonNull).collect(Collectors.joining(delimiter)); + return collection.stream() + .map(function) + .filter(Objects::nonNull) + .collect(Collectors.joining(delimiter)); } /** @@ -97,10 +127,13 @@ public class StreamUtils { */ public static List sorted(Collection collection, Comparator comparing) { if (CollUtil.isEmpty(collection)) { - return CollUtil.newArrayList(); + return Collections.emptyList(); } - // 注意此处不要使用 .toList() 新语法 因为返回的是不可变List 会导致序列化问题 - return collection.stream().filter(Objects::nonNull).sorted(comparing).collect(Collectors.toList()); + return collection.stream() + .filter(Objects::nonNull) + .sorted(comparing) + // 注意此处不要使用 .toList() 新语法 因为返回的是不可变List 会导致序列化问题 + .collect(Collectors.toList()); } /** @@ -115,9 +148,11 @@ public class StreamUtils { */ public static Map toIdentityMap(Collection collection, Function key) { if (CollUtil.isEmpty(collection)) { - return MapUtil.newHashMap(); + return Collections.emptyMap(); } - return collection.stream().filter(Objects::nonNull).collect(Collectors.toMap(key, Function.identity(), (l, r) -> l)); + return collection.stream() + .filter(Objects::nonNull) + .collect(Collectors.toMap(key, Function.identity(), (l, r) -> l)); } /** @@ -134,9 +169,27 @@ public class StreamUtils { */ public static Map toMap(Collection collection, Function key, Function value) { if (CollUtil.isEmpty(collection)) { - return MapUtil.newHashMap(); + return Collections.emptyMap(); + } + return collection.stream() + .filter(Objects::nonNull) + .collect(Collectors.toMap(key, value, (l, r) -> l)); + } + + /** + * 获取 map 中的数据作为新 Map 的 value ,key 不变 + * @param map 需要处理的map + * @param take 取值函数 + * @param map中的key类型 + * @param map中的value类型 + * @param 新map中的value类型 + * @return 新的map + */ + public static Map toMap(Map map, BiFunction take) { + if (CollUtil.isEmpty(map)) { + return Collections.emptyMap(); } - return collection.stream().filter(Objects::nonNull).collect(Collectors.toMap(key, value, (l, r) -> l)); + return toMap(map.entrySet(), Map.Entry::getKey, entry -> take.apply(entry.getKey(), entry.getValue())); } /** @@ -151,10 +204,10 @@ public class StreamUtils { */ public static Map> groupByKey(Collection collection, Function key) { if (CollUtil.isEmpty(collection)) { - return MapUtil.newHashMap(); + return Collections.emptyMap(); } - return collection - .stream().filter(Objects::nonNull) + return collection.stream() + .filter(Objects::nonNull) .collect(Collectors.groupingBy(key, LinkedHashMap::new, Collectors.toList())); } @@ -172,10 +225,10 @@ public class StreamUtils { */ public static Map>> groupBy2Key(Collection collection, Function key1, Function key2) { if (CollUtil.isEmpty(collection)) { - return MapUtil.newHashMap(); + return Collections.emptyMap(); } - return collection - .stream().filter(Objects::nonNull) + return collection.stream() + .filter(Objects::nonNull) .collect(Collectors.groupingBy(key1, LinkedHashMap::new, Collectors.groupingBy(key2, LinkedHashMap::new, Collectors.toList()))); } @@ -192,11 +245,11 @@ public class StreamUtils { * @return 分类后的map */ public static Map> group2Map(Collection collection, Function key1, Function key2) { - if (CollUtil.isEmpty(collection) || key1 == null || key2 == null) { - return MapUtil.newHashMap(); + if (CollUtil.isEmpty(collection)) { + return Collections.emptyMap(); } - return collection - .stream().filter(Objects::nonNull) + return collection.stream() + .filter(Objects::nonNull) .collect(Collectors.groupingBy(key1, LinkedHashMap::new, Collectors.toMap(key2, Function.identity(), (l, r) -> l))); } @@ -212,10 +265,9 @@ public class StreamUtils { */ public static List toList(Collection collection, Function function) { if (CollUtil.isEmpty(collection)) { - return CollUtil.newArrayList(); + return Collections.emptyList(); } - return collection - .stream() + return collection.stream() .map(function) .filter(Objects::nonNull) // 注意此处不要使用 .toList() 新语法 因为返回的是不可变List 会导致序列化问题 @@ -233,11 +285,10 @@ public class StreamUtils { * @return 转化后的Set */ public static Set toSet(Collection collection, Function function) { - if (CollUtil.isEmpty(collection) || function == null) { - return CollUtil.newHashSet(); + if (CollUtil.isEmpty(collection)) { + return Collections.emptySet(); } - return collection - .stream() + return collection.stream() .map(function) .filter(Objects::nonNull) .collect(Collectors.toSet()); @@ -257,26 +308,20 @@ public class StreamUtils { * @return 合并后的map */ public static Map merge(Map map1, Map map2, BiFunction merge) { - if (MapUtil.isEmpty(map1) && MapUtil.isEmpty(map2)) { - return MapUtil.newHashMap(); - } else if (MapUtil.isEmpty(map1)) { - map1 = MapUtil.newHashMap(); - } else if (MapUtil.isEmpty(map2)) { - map2 = MapUtil.newHashMap(); - } - Set key = new HashSet<>(); - key.addAll(map1.keySet()); - key.addAll(map2.keySet()); - Map map = new HashMap<>(); - for (K t : key) { - X x = map1.get(t); - Y y = map2.get(t); - V z = merge.apply(x, y); - if (z != null) { - map.put(t, z); - } + if (CollUtil.isEmpty(map1) && CollUtil.isEmpty(map2)) { + // 如果两个 map 都为空,则直接返回空的 map + return Collections.emptyMap(); + } else if (CollUtil.isEmpty(map1)) { + // 如果 map1 为空,则直接处理返回 map2 + return toMap(map2.entrySet(), Map.Entry::getKey, entry -> merge.apply(null, entry.getValue())); + } else if (CollUtil.isEmpty(map2)) { + // 如果 map2 为空,则直接处理返回 map1 + return toMap(map1.entrySet(), Map.Entry::getKey, entry -> merge.apply(entry.getValue(), null)); } - return map; + Set keySet = new HashSet<>(); + keySet.addAll(map1.keySet()); + keySet.addAll(map2.keySet()); + return toMap(keySet, key -> key, key -> merge.apply(map1.get(key), map2.get(key))); } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 59e4ff7be..91661c9f0 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -629,7 +629,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { Instance instance = insService.getById(task.getInstanceId()); Definition definition = defService.getById(task.getDefinitionId()); Map mergeVariable = MapUtil.mergeAll(instance.getVariableMap(), variables); - //获取下一节点列表 + // 获取下一节点列表 List nextNodeList = nodeService.getNextNodeList(task.getDefinitionId(), task.getNodeCode(), null, SkipType.PASS.getKey(), mergeVariable); List nextFlowNodes = BeanUtil.copyToList(nextNodeList, FlowNode.class); // 只获取中间节点 @@ -640,14 +640,14 @@ public class FlwTaskServiceImpl implements IFlwTaskService { //办理人变量替换 ExpressionUtil.evalVariable(buildNextTaskList, FlowParams.build().variable(mergeVariable)); for (FlowNode flowNode : nextFlowNodes) { - Task first = StreamUtils.findFirst(buildNextTaskList, t -> t.getNodeCode().equals(flowNode.getNodeCode())); - if (ObjectUtil.isNotNull(first) && CollUtil.isNotEmpty(first.getPermissionList())) { - List users = flwTaskAssigneeService.fetchUsersByStorageIds(StringUtils.joinComma(first.getPermissionList())); - if (CollUtil.isNotEmpty(users)) { - flowNode.setPermissionFlag(StreamUtils.join(users, e -> String.valueOf(e.getUserId()))); - } - } - + StreamUtils.findFirst(buildNextTaskList, t -> t.getNodeCode().equals(flowNode.getNodeCode())) + .ifPresent(first -> { + List users; + if (CollUtil.isNotEmpty(first.getPermissionList()) + && CollUtil.isNotEmpty(users = flwTaskAssigneeService.fetchUsersByStorageIds(StringUtils.joinComma(first.getPermissionList())))) { + flowNode.setPermissionFlag(StreamUtils.join(users, e -> Convert.toStr(e.getUserId()))); + } + }); } } return nextFlowNodes; -- Gitee From 66dea774217f0d6378ecb1abb59e8f66632c0d50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 1 Sep 2025 12:03:33 +0800 Subject: [PATCH 130/155] =?UTF-8?q?add=20=E6=96=B0=E5=A2=9E=20Excel?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=B1=BB=E6=94=AF=E6=8C=81=E6=9B=B4=E7=81=B5?= =?UTF-8?q?=E6=B4=BB=E7=9A=84=E8=87=AA=E5=AE=9A=E4=B9=89=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=EF=BC=8C=E4=BB=A5=E4=BE=BF=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=88=86=E6=89=B9=E5=A4=84=E7=90=86=E5=AF=BC=E5=87=BA=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/excel/utils/ExcelUtil.java | 39 ++++++ .../excel/utils/ExcelWriterWrapper.java | 127 ++++++++++++++++++ .../demo/controller/TestExcelController.java | 11 ++ .../demo/service/IExportExcelService.java | 9 ++ .../service/impl/ExportExcelServiceImpl.java | 61 +++++++++ 5 files changed, 247 insertions(+) create mode 100644 ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelWriterWrapper.java diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelUtil.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelUtil.java index 1b35e559a..74dbccbac 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelUtil.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelUtil.java @@ -27,6 +27,7 @@ import java.io.UnsupportedEncodingException; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.function.Consumer; /** * Excel相关处理 @@ -203,6 +204,44 @@ public class ExcelUtil { builder.doWrite(list); } + /** + * 导出excel + * + * @param headType 带Excel注解的类型 + * @param os 输出流 + * @param options Excel下拉可选项 + * @param consumer 导出助手消费函数 + */ + public static void exportExcel(Class headType, OutputStream os, List options, Consumer> consumer) { + try (ExcelWriter writer = FastExcel.write(os, headType) + .autoCloseStream(false) + // 自动适配 + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + // 大数值自动转换 防止失真 + .registerConverter(new ExcelBigNumberConvert()) + // 批注必填项处理 + .registerWriteHandler(new DataWriteHandler(headType)) + // 添加下拉框操作 + .registerWriteHandler(new ExcelDownHandler(options)) + .build()) { + // 执行消费函数 + consumer.accept(ExcelWriterWrapper.of(writer)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + /** + * 导出excel + * + * @param headType 带Excel注解的类型 + * @param os 输出流 + * @param consumer 导出助手消费函数 + */ + public static void exportExcel(Class headType, OutputStream os, Consumer> consumer) { + exportExcel(headType, os, null, consumer); + } + /** * 单表多数据模板导出 模板格式为 {.属性} * diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelWriterWrapper.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelWriterWrapper.java new file mode 100644 index 000000000..396f3713e --- /dev/null +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelWriterWrapper.java @@ -0,0 +1,127 @@ +package org.dromara.common.excel.utils; + +import cn.idev.excel.ExcelWriter; +import cn.idev.excel.FastExcel; +import cn.idev.excel.context.WriteContext; +import cn.idev.excel.write.builder.ExcelWriterSheetBuilder; +import cn.idev.excel.write.builder.ExcelWriterTableBuilder; +import cn.idev.excel.write.metadata.WriteSheet; +import cn.idev.excel.write.metadata.WriteTable; +import cn.idev.excel.write.metadata.fill.FillConfig; + +import java.util.Collection; +import java.util.function.Supplier; + +/** + * ExcelWriterWrapper Excel写出包装器 + *
+ * 提供了一组与 ExcelWriter 一一对应的写出方法,避免直接提供 ExcelWriter 而导致的一些不可控问题(比如提前关闭了IO流等) + * + * @author 秋辞未寒 + * @see ExcelWriter + */ +public record ExcelWriterWrapper(ExcelWriter excelWriter) { + + public void write(Collection data, WriteSheet writeSheet) { + excelWriter.write(data, writeSheet); + } + + public void write(Supplier> supplier, WriteSheet writeSheet) { + excelWriter.write(supplier.get(), writeSheet); + } + + public void write(Collection data, WriteSheet writeSheet, WriteTable writeTable) { + excelWriter.write(data, writeSheet, writeTable); + } + + public void write(Supplier> supplier, WriteSheet writeSheet, WriteTable writeTable) { + excelWriter.write(supplier.get(), writeSheet, writeTable); + } + + public void fill(Object data, WriteSheet writeSheet) { + excelWriter.fill(data, writeSheet); + } + + public void fill(Object data, FillConfig fillConfig, WriteSheet writeSheet) { + excelWriter.fill(data, fillConfig, writeSheet); + } + + public void fill(Supplier supplier, WriteSheet writeSheet) { + excelWriter.fill(supplier, writeSheet); + } + + public void fill(Supplier supplier, FillConfig fillConfig, WriteSheet writeSheet) { + excelWriter.fill(supplier, fillConfig, writeSheet); + } + + public WriteContext writeContext() { + return excelWriter.writeContext(); + } + + /** + * 创建一个 ExcelWriterWrapper + * + * @param excelWriter ExcelWriter + * @return ExcelWriterWrapper + */ + public static ExcelWriterWrapper of(ExcelWriter excelWriter) { + return new ExcelWriterWrapper<>(excelWriter); + } + + // -------------------------------- sheet start + + public static WriteSheet buildSheet(Integer sheetNo, String sheetName) { + return sheetBuilder(sheetNo, sheetName).build(); + } + + public static WriteSheet buildSheet(Integer sheetNo) { + return sheetBuilder(sheetNo).build(); + } + + public static WriteSheet buildSheet(String sheetName) { + return sheetBuilder(sheetName).build(); + } + + public static WriteSheet buildSheet() { + return sheetBuilder().build(); + } + + public static ExcelWriterSheetBuilder sheetBuilder(Integer sheetNo, String sheetName) { + return FastExcel.writerSheet(sheetNo, sheetName); + } + + public static ExcelWriterSheetBuilder sheetBuilder(Integer sheetNo) { + return FastExcel.writerSheet(sheetNo); + } + + public static ExcelWriterSheetBuilder sheetBuilder(String sheetName) { + return FastExcel.writerSheet(sheetName); + } + + public static ExcelWriterSheetBuilder sheetBuilder() { + return FastExcel.writerSheet(); + } + + // -------------------------------- sheet end + + // -------------------------------- table start + + public static WriteTable buildTable(Integer tableNo) { + return tableBuilder(tableNo).build(); + } + + public static WriteTable buildTable() { + return tableBuilder().build(); + } + + public static ExcelWriterTableBuilder tableBuilder(Integer tableNo) { + return FastExcel.writerTable(tableNo); + } + + public static ExcelWriterTableBuilder tableBuilder() { + return FastExcel.writerTable(); + } + + // -------------------------------- table end + +} diff --git a/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestExcelController.java b/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestExcelController.java index d82ea3b06..3747da4d1 100644 --- a/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestExcelController.java +++ b/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestExcelController.java @@ -14,6 +14,7 @@ import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -94,6 +95,16 @@ public class TestExcelController { exportExcelService.exportWithOptions(response); } + /** + * 自定义导出 + * + * @param response / + */ + @GetMapping("/customExport") + public void customExport(HttpServletResponse response) throws IOException { + exportExcelService.customExport(response); + } + /** * 多个sheet导出 */ diff --git a/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/service/IExportExcelService.java b/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/service/IExportExcelService.java index 4dfa5effa..ad2392b97 100644 --- a/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/service/IExportExcelService.java +++ b/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/service/IExportExcelService.java @@ -2,6 +2,8 @@ package org.dromara.demo.service; import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; + /** * 导出下拉框Excel示例 * @@ -15,4 +17,11 @@ public interface IExportExcelService { * @param response / */ void exportWithOptions(HttpServletResponse response); + + /** + * 自定义导出 + * + * @param response / + */ + void customExport(HttpServletResponse response) throws IOException; } diff --git a/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ExportExcelServiceImpl.java b/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ExportExcelServiceImpl.java index ebb6ac688..cbc627668 100644 --- a/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ExportExcelServiceImpl.java +++ b/ruoyi-example/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ExportExcelServiceImpl.java @@ -2,17 +2,22 @@ package org.dromara.demo.service.impl; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; +import cn.idev.excel.write.metadata.WriteSheet; import jakarta.servlet.http.HttpServletResponse; import lombok.Data; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.enums.UserStatus; import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.file.FileUtils; import org.dromara.common.excel.core.DropDownOptions; import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.excel.utils.ExcelWriterWrapper; import org.dromara.demo.domain.vo.ExportDemoVo; import org.dromara.demo.service.IExportExcelService; import org.springframework.stereotype.Service; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -233,4 +238,60 @@ public class ExportExcelServiceImpl implements IExportExcelService { this.name = name; } } + + @Override + public void customExport(HttpServletResponse response) throws IOException { + String filename = ExcelUtil.encodingFilename("自定义导出"); + FileUtils.setAttachmentResponseHeader(response, filename); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8"); + + ExcelUtil.exportExcel(ExportDemoVo.class, response.getOutputStream(), wrapper -> { + // 创建表格数据,业务中一般通过数据库查询 + List excelDataList = new ArrayList<>(); + for (int i = 0; i < 30; i++) { + // 模拟数据库中的一条数据 + ExportDemoVo everyRowData = new ExportDemoVo(); + everyRowData.setNickName("用户-" + i); + everyRowData.setUserStatus(SystemConstants.NORMAL); + everyRowData.setGender("1"); + everyRowData.setPhoneNumber(String.format("175%08d", i)); + everyRowData.setEmail(String.format("175%08d", i) + "@163.com"); + everyRowData.setProvinceId(i); + everyRowData.setCityId(i); + everyRowData.setAreaId(i); + excelDataList.add(everyRowData); + } + + // 创建表格 + WriteSheet sheet = ExcelWriterWrapper.sheetBuilder("自定义导出demo") + // 合并单元格 + // .registerWriteHandler(new CellMergeStrategy(excelDataList, true)) + .build(); + + + wrapper.write(excelDataList, sheet); + + List excelDataList2 = new ArrayList<>(); + for (int i = 0; i < 20; i++) { + int index = 1000 + i; + // 模拟数据库中的一条数据 + ExportDemoVo everyRowData = new ExportDemoVo(); + everyRowData.setNickName("用户-" + index); + everyRowData.setUserStatus(SystemConstants.NORMAL); + everyRowData.setGender("1"); + everyRowData.setPhoneNumber(String.format("175%08d", index)); + everyRowData.setEmail(String.format("175%08d", index) + "@163.com"); + everyRowData.setProvinceId(index); + everyRowData.setCityId(index); + everyRowData.setAreaId(index); + excelDataList2.add(everyRowData); + } + + wrapper.write(excelDataList2, sheet); + + // 或者在同一个excel中创建多个表格 + // WriteSheet sheet2 = ExcelWriterWrapper.sheetBuilder("自定义导出demo2").build(); + // wrapper.write(excelDataList2, sheet2); + }); + } } -- Gitee From 0766ef65c7f340b393ca36a6086b7714f21c2768 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 1 Sep 2025 12:04:19 +0800 Subject: [PATCH 131/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20json?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E9=85=8D=E7=BD=AE=20=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E8=A6=86=E7=9B=96=E4=BA=86spring=20module=20=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20=E6=94=B9=E4=B8=BA=E8=AE=A9spring=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8A=A0=E8=BD=BD=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/json/config/JacksonConfig.java | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/config/JacksonConfig.java b/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/config/JacksonConfig.java index 77cf83381..039257387 100644 --- a/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/config/JacksonConfig.java +++ b/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/config/JacksonConfig.java @@ -1,5 +1,6 @@ package org.dromara.common.json.config; +import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; @@ -28,20 +29,24 @@ import java.util.TimeZone; @AutoConfiguration(before = JacksonAutoConfiguration.class) public class JacksonConfig { + @Bean + public Module registerJavaTimeModule() { + // 全局配置序列化返回 JSON 处理 + JavaTimeModule javaTimeModule = new JavaTimeModule(); + javaTimeModule.addSerializer(Long.class, BigNumberSerializer.INSTANCE); + javaTimeModule.addSerializer(Long.TYPE, BigNumberSerializer.INSTANCE); + javaTimeModule.addSerializer(BigInteger.class, BigNumberSerializer.INSTANCE); + javaTimeModule.addSerializer(BigDecimal.class, ToStringSerializer.instance); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(formatter)); + javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter)); + javaTimeModule.addDeserializer(Date.class, new CustomDateDeserializer()); + return javaTimeModule; + } + @Bean public Jackson2ObjectMapperBuilderCustomizer customizer() { return builder -> { - // 全局配置序列化返回 JSON 处理 - JavaTimeModule javaTimeModule = new JavaTimeModule(); - javaTimeModule.addSerializer(Long.class, BigNumberSerializer.INSTANCE); - javaTimeModule.addSerializer(Long.TYPE, BigNumberSerializer.INSTANCE); - javaTimeModule.addSerializer(BigInteger.class, BigNumberSerializer.INSTANCE); - javaTimeModule.addSerializer(BigDecimal.class, ToStringSerializer.instance); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(formatter)); - javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter)); - javaTimeModule.addDeserializer(Date.class, new CustomDateDeserializer()); - builder.modules(javaTimeModule); builder.timeZone(TimeZone.getDefault()); log.info("初始化 jackson 配置"); }; -- Gitee From 7316d058745245db469b7bab6a4009f7262aebc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 1 Sep 2025 14:18:15 +0800 Subject: [PATCH 132/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20oss?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E5=AD=97=E6=AE=B5=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/resource/api/domain/RemoteFile.java | 5 +++++ .../org/dromara/resource/dubbo/RemoteFileServiceImpl.java | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/domain/RemoteFile.java b/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/domain/RemoteFile.java index 7140fe638..406435acf 100644 --- a/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/domain/RemoteFile.java +++ b/ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/domain/RemoteFile.java @@ -41,4 +41,9 @@ public class RemoteFile implements Serializable { */ private String fileSuffix; + /** + * 扩展字段 + */ + private String ext1; + } diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java index dcdc9bd41..b138e9d6c 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java @@ -7,11 +7,13 @@ import org.apache.dubbo.config.annotation.DubboService; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.entity.UploadResult; import org.dromara.common.oss.factory.OssFactory; import org.dromara.resource.api.RemoteFileService; import org.dromara.resource.api.domain.RemoteFile; +import org.dromara.resource.domain.SysOssExt; import org.dromara.resource.domain.bo.SysOssBo; import org.dromara.resource.domain.vo.SysOssVo; import org.dromara.resource.service.ISysOssService; @@ -50,6 +52,10 @@ public class RemoteFileServiceImpl implements RemoteFileService { oss.setFileName(uploadResult.getFilename()); oss.setOriginalName(originalFilename); oss.setService(storage.getConfigKey()); + SysOssExt ext1 = new SysOssExt(); + ext1.setFileSize((long) file.length); + String extStr = JsonUtils.toJsonString(ext1); + oss.setExt1(extStr); sysOssService.insertByBo(oss); RemoteFile sysFile = new RemoteFile(); sysFile.setOssId(oss.getOssId()); @@ -57,6 +63,7 @@ public class RemoteFileServiceImpl implements RemoteFileService { sysFile.setUrl(uploadResult.getUrl()); sysFile.setOriginalName(originalFilename); sysFile.setFileSuffix(suffix); + sysFile.setExt1(extStr); return sysFile; } catch (Exception e) { log.error("上传文件失败", e); -- Gitee From f6ddae57c4c1d9f27d2a38092092cb05b23a1751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 1 Sep 2025 14:27:19 +0800 Subject: [PATCH 133/155] =?UTF-8?q?Revert=20"update=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=20=E9=87=8D=E5=86=99selectOne=E6=96=B9=E6=B3=95=20=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=8B=BC=E6=8E=A5limit=201"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit c73d3cdf890461c2db8c69a89608e1724b4dc92d. --- .../mybatis/core/mapper/BaseMapperPlus.java | 71 ++++++++----------- 1 file changed, 28 insertions(+), 43 deletions(-) diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java index 0d777f4e0..7964a37a5 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java @@ -6,21 +6,20 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.Constants; -import com.baomidou.mybatisplus.core.toolkit.reflect.GenericTypeUtils; +import com.baomidou.mybatisplus.core.toolkit.ReflectionKit; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.toolkit.Db; -import org.apache.ibatis.annotations.Param; import org.apache.ibatis.logging.Log; import org.apache.ibatis.logging.LogFactory; import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.StreamUtils; import java.io.Serializable; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Function; +import java.util.stream.Collectors; /** * 自定义 Mapper 接口, 实现 自定义扩展 @@ -36,21 +35,25 @@ public interface BaseMapperPlus extends BaseMapper { Log log = LogFactory.getLog(BaseMapperPlus.class); /** - * 获取当前实例对象关联的泛型类型 V 的 Class 对象 + * 获取当前类的泛型类型 V 的 Class 对象 + *

+ * 该方法使用反射机制从当前类(继承自 BaseMapperPlus 类)的泛型参数中获取第一个泛型类型 V 的 Class 对象 * - * @return 返回当前实例对象关联的泛型类型 V 的 Class 对象 + * @return 当前类的泛型类型 V 的 Class 对象 */ default Class currentVoClass() { - return (Class) GenericTypeUtils.resolveTypeArguments(this.getClass(), BaseMapperPlus.class)[1]; + return (Class) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseMapperPlus.class, 1); } /** - * 获取当前实例对象关联的泛型类型 T 的 Class 对象 + * 获取当前类的泛型类型 T 的 Class 对象 + *

+ * 该方法使用反射机制从当前类(继承自 BaseMapperPlus 类)的泛型参数中获取第一个泛型类型 T 的 Class 对象 * - * @return 返回当前实例对象关联的泛型类型 T 的 Class 对象 + * @return 当前类的泛型类型 T 的 Class 对象 */ default Class currentModelClass() { - return (Class) GenericTypeUtils.resolveTypeArguments(this.getClass(), BaseMapperPlus.class)[0]; + return (Class) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseMapperPlus.class, 0); } /** @@ -132,7 +135,7 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的单个VO对象 */ default V selectVoById(Serializable id) { - return this.selectVoById(id, this.currentVoClass()); + return selectVoById(id, this.currentVoClass()); } /** @@ -158,7 +161,7 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的VO对象列表 */ default List selectVoByIds(Collection idList) { - return this.selectVoByIds(idList, this.currentVoClass()); + return selectVoByIds(idList, this.currentVoClass()); } /** @@ -184,7 +187,7 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的VO对象列表 */ default List selectVoByMap(Map map) { - return this.selectVoByMap(map, this.currentVoClass()); + return selectVoByMap(map, this.currentVoClass()); } /** @@ -210,7 +213,7 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的单个VO对象 */ default V selectVoOne(Wrapper wrapper) { - return this.selectVoOne(wrapper, this.currentVoClass()); + return selectVoOne(wrapper, this.currentVoClass()); } /** @@ -221,12 +224,11 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的单个VO对象 */ default V selectVoOne(Wrapper wrapper, boolean throwEx) { - return this.selectVoOne(wrapper, this.currentVoClass(), throwEx); + return selectVoOne(wrapper, this.currentVoClass(), throwEx); } /** - * 根据条件查询单个VO对象,并指定返回的VO对象的类型(自动拼接 limit 1) - * 注意不要再自己添加 limit 1 做限制了 + * 根据条件查询单个VO对象,并指定返回的VO对象的类型 * * @param wrapper 查询条件Wrapper * @param voClass 返回的VO对象的Class对象 @@ -234,12 +236,15 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的单个VO对象,经过类型转换为指定的VO类后返回 */ default C selectVoOne(Wrapper wrapper, Class voClass) { - return this.selectVoOne(wrapper, voClass, true); + T obj = this.selectOne(wrapper); + if (ObjectUtil.isNull(obj)) { + return null; + } + return MapstructUtils.convert(obj, voClass); } /** - * 根据条件查询单个实体对象,并将其转换为指定的VO对象(自动拼接 limit 1) - * 注意不要再自己添加 limit 1 做限制了 + * 根据条件查询单个实体对象,并将其转换为指定的VO对象 * * @param wrapper 查询条件Wrapper * @param voClass 要转换的VO类的Class对象 @@ -255,33 +260,13 @@ public interface BaseMapperPlus extends BaseMapper { return MapstructUtils.convert(obj, voClass); } - /** - * 根据条件查询单条记录(自动拼接 limit 1 限制返回 1 条数据,不依赖 {@code throwEx} 参数) - * 注意不要再自己添加 limit 1 做限制了 - *

- * 注意: - * 1. 使用 {@code Page<>(1, 1)} 强制分页查询,确保 SQL 自动添加 {@code LIMIT 1},因此 {@code throwEx} 参数不再生效 - * 2. 原方法的 {@code throwEx} 逻辑(多条数据抛异常)已被优化掉,因为分页查询不会返回多条记录 - *

- * - * @param queryWrapper 查询条件(可为 null) - * @param throwEx 是否抛出异常(已弃用,此参数不再生效) - * @return 单条记录或无数据时返回 null - */ - @Override - default T selectOne(@Param(Constants.WRAPPER) Wrapper queryWrapper, boolean throwEx) { - // 强制分页查询(LIMIT 1),确保最多返回 1 条记录 - List list = this.selectList(new Page<>(1, 1), queryWrapper); - return CollUtil.isEmpty(list) ? null : list.get(0); - } - /** * 查询所有VO对象列表 * * @return 查询到的VO对象列表 */ default List selectVoList() { - return this.selectVoList(new QueryWrapper<>(), this.currentVoClass()); + return selectVoList(new QueryWrapper<>(), this.currentVoClass()); } /** @@ -318,7 +303,7 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的VO对象分页列表 */ default

> P selectVoPage(IPage page, Wrapper wrapper) { - return this.selectVoPage(page, wrapper, this.currentVoClass()); + return selectVoPage(page, wrapper, this.currentVoClass()); } /** @@ -352,7 +337,7 @@ public interface BaseMapperPlus extends BaseMapper { * @return 查询到的符合条件的对象列表,经过转换为指定类型的对象后返回 */ default List selectObjs(Wrapper wrapper, Function mapper) { - return StreamUtils.toList(this.selectObjs(wrapper), mapper); + return this.selectObjs(wrapper).stream().filter(Objects::nonNull).map(mapper).collect(Collectors.toList()); } } -- Gitee From 6551134460b3fd2f7643d85d66c3d024ae703e63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 2 Sep 2025 10:52:59 +0800 Subject: [PATCH 134/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=AD=90=E8=8F=9C=E5=8D=95=E9=85=8D=E7=BD=AE=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=BF=80=E6=B4=BB=E7=9A=84=E7=88=B6=E8=8F=9C=E5=8D=95?= =?UTF-8?q?activeMenu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/domain/vo/MetaVo.java | 17 +++++++++++++++++ .../system/service/impl/SysMenuServiceImpl.java | 4 ++-- script/sql/oracle/oracle_ry_cloud.sql | 12 ++++++------ script/sql/postgres/postgres_ry_cloud.sql | 12 ++++++------ script/sql/ry-cloud.sql | 12 ++++++------ script/sql/update/oracle/update_2.4.1-2.5.0.sql | 7 +++++++ .../sql/update/postgres/update_2.4.1-2.5.0.sql | 7 +++++++ script/sql/update/update_2.4.1-2.5.0.sql | 7 +++++++ 8 files changed, 58 insertions(+), 20 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/MetaVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/MetaVo.java index 10dd81c7a..c4d4f2334 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/MetaVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/MetaVo.java @@ -38,6 +38,11 @@ public class MetaVo implements Serializable { */ private String link; + /** + * 激活菜单 + */ + private String activeMenu; + public MetaVo(String title, String icon) { this.title = title; this.icon = icon; @@ -64,4 +69,16 @@ public class MetaVo implements Serializable { } } + public MetaVo(String title, String icon, Boolean noCache, String link, String activeMenu) { + this.title = title; + this.icon = icon; + this.noCache = noCache; + if (StringUtils.ishttp(link)) { + this.link = link; + } + if (StringUtils.startWithAnyIgnoreCase(activeMenu, "/")) { + this.activeMenu = activeMenu; + } + } + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java index efe9029f8..19d6bfb69 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java @@ -185,7 +185,7 @@ public class SysMenuServiceImpl implements ISysMenuService { router.setPath(menu.getRouterPath()); router.setComponent(menu.getComponentInfo()); router.setQuery(menu.getQueryParam()); - router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); + router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath(), menu.getRemark())); List cMenus = menu.getChildren(); if (CollUtil.isNotEmpty(cMenus) && SystemConstants.TYPE_DIR.equals(menu.getMenuType())) { router.setAlwaysShow(true); @@ -199,7 +199,7 @@ public class SysMenuServiceImpl implements ISysMenuService { children.setPath(menu.getPath()); children.setComponent(menu.getComponent()); children.setName(frameName); - children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); + children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath(), menu.getRemark())); children.setQuery(menu.getQueryParam()); childrenList.add(children); router.setChildren(childrenList); diff --git a/script/sql/oracle/oracle_ry_cloud.sql b/script/sql/oracle/oracle_ry_cloud.sql index 5a599aabe..f72e55571 100644 --- a/script/sql/oracle/oracle_ry_cloud.sql +++ b/script/sql/oracle/oracle_ry_cloud.sql @@ -451,11 +451,11 @@ insert into sys_menu values('115', '代码生成', '3', '2', 'gen', insert into sys_menu values('121', '租户管理', '6', '1', 'tenant', 'system/tenant/index', '', 1, 0, 'C', '0', '0', 'system:tenant:list', 'list', 103, 1, sysdate, null, null, '租户管理菜单'); insert into sys_menu values('122', '租户套餐管理', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', 1, 0, 'C', '0', '0', 'system:tenantPackage:list', 'form', 103, 1, sysdate, null, null, '租户套餐管理菜单'); insert into sys_menu values('123', '客户端管理', '1', '11', 'client', 'system/client/index', '', 1, 0, 'C', '0', '0', 'system:client:list', 'international', 103, 1, sysdate, null, null, '客户端管理菜单'); -insert into sys_menu values('116', '修改生成配置', '3', '2', 'gen-edit/index/:tableId', 'tool/gen/editTable', '', 1, 1, 'C', '1', '0', 'tool:gen:edit', '#', 103, 1, sysdate, null, null, ''); -insert into sys_menu values('130', '分配用户', '1', '2', 'role-auth/user/:roleId', 'system/role/authUser', '', 1, 1, 'C', '1', '0', 'system:role:edit', '#', 103, 1, sysdate, null, null, ''); -insert into sys_menu values('131', '分配角色', '1', '1', 'user-auth/role/:userId', 'system/user/authRole', '', 1, 1, 'C', '1', '0', 'system:user:edit', '#', 103, 1, sysdate, null, null, ''); -insert into sys_menu values('132', '字典数据', '1', '6', 'dict-data/index/:dictId', 'system/dict/data', '', 1, 1, 'C', '1', '0', 'system:dict:list', '#', 103, 1, sysdate, null, null, ''); -insert into sys_menu values('133', '文件配置管理', '1', '10', 'oss-config/index', 'system/oss/config', '', 1, 1, 'C', '1', '0', 'system:ossConfig:list', '#', 103, 1, sysdate, null, null, ''); +insert into sys_menu values('116', '修改生成配置', '3', '2', 'gen-edit/index/:tableId', 'tool/gen/editTable', '', 1, 1, 'C', '1', '0', 'tool:gen:edit', '#', 103, 1, sysdate, null, null, '/tool/gen'); +insert into sys_menu values('130', '分配用户', '1', '2', 'role-auth/user/:roleId', 'system/role/authUser', '', 1, 1, 'C', '1', '0', 'system:role:edit', '#', 103, 1, sysdate, null, null, '/system/role'); +insert into sys_menu values('131', '分配角色', '1', '1', 'user-auth/role/:userId', 'system/user/authRole', '', 1, 1, 'C', '1', '0', 'system:user:edit', '#', 103, 1, sysdate, null, null, '/system/user'); +insert into sys_menu values('132', '字典数据', '1', '6', 'dict-data/index/:dictId', 'system/dict/data', '', 1, 1, 'C', '1', '0', 'system:dict:list', '#', 103, 1, sysdate, null, null, '/system/dict'); +insert into sys_menu values('133', '文件配置管理', '1', '10', 'oss-config/index', 'system/oss/config', '', 1, 1, 'C', '1', '0', 'system:ossConfig:list', '#', 103, 1, sysdate, null, null, '/system/oss'); -- springboot-admin监控 insert into sys_menu values('117', 'Admin监控', '2', '5', 'Admin', 'monitor/admin/index', '', 1, 0, 'C', '0', '0', 'monitor:admin:list', 'dashboard', 103, 1, sysdate, null, null, 'Admin监控菜单'); @@ -583,7 +583,7 @@ INSERT INTO sys_menu VALUES ('11622', '流程分类', '11616', '1', 'category', INSERT INTO sys_menu VALUES ('11629', '我发起的', '11618', '1', 'myDocument', 'workflow/task/myDocument', '', '1', '1', 'C', '0', '0', '', 'guide', 103, 1, SYSDATE, NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11630', '流程监控', '11616', '4', 'monitor', '', '', '1', '0', 'M', '0', '0', '', 'monitor', 103, 1, SYSDATE, NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11631', '待办任务', '11630', '2', 'allTaskWaiting', 'workflow/task/allTaskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, SYSDATE, NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11700', '流程设计', '11616', '5', 'design/index', 'workflow/processDefinition/design', '', '1', '1', 'C', '1', '0', 'workflow:leave:edit', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11700', '流程设计', '11616', '5', 'design/index', 'workflow/processDefinition/design', '', '1', '1', 'C', '1', '0', 'workflow:leave:edit', '#', 103, 1, SYSDATE, NULL, NULL, '/workflow/processDefinition'); INSERT INTO sys_menu VALUES ('11701', '请假申请', '11616', '6', 'leaveEdit/index', 'workflow/leave/leaveEdit', '', '1', '1', 'C', '1', '0', 'workflow:leave:edit', '#', 103, 1, SYSDATE, NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11623', '流程分类查询', '11622', '1', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:query', '#', 103, 1, SYSDATE, NULL, NULL, ''); diff --git a/script/sql/postgres/postgres_ry_cloud.sql b/script/sql/postgres/postgres_ry_cloud.sql index bcee65302..fa8230fc4 100644 --- a/script/sql/postgres/postgres_ry_cloud.sql +++ b/script/sql/postgres/postgres_ry_cloud.sql @@ -453,11 +453,11 @@ insert into sys_menu values('115', '代码生成', '3', '2', 'gen', insert into sys_menu values('121', '租户管理', '6', '1', 'tenant', 'system/tenant/index', '', '1', '0', 'C', '0', '0', 'system:tenant:list', 'list', 103, 1, now(), null, null, '租户管理菜单'); insert into sys_menu values('122', '租户套餐管理', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', '1', '0', 'C', '0', '0', 'system:tenantPackage:list', 'form', 103, 1, now(), null, null, '租户套餐管理菜单'); insert into sys_menu values('123', '客户端管理', '1', '11', 'client', 'system/client/index', '', '1', '0', 'C', '0', '0', 'system:client:list', 'international', 103, 1, now(), null, null, '客户端管理菜单'); -insert into sys_menu values('116', '修改生成配置', '3', '2', 'gen-edit/index/:tableId', 'tool/gen/editTable', '', '1', '1', 'C', '1', '0', 'tool:gen:edit', '#', 103, 1, now(), null, null, ''); -insert into sys_menu values('130', '分配用户', '1', '2', 'role-auth/user/:roleId', 'system/role/authUser', '', '1', '1', 'C', '1', '0', 'system:role:edit', '#', 103, 1, now(), null, null, ''); -insert into sys_menu values('131', '分配角色', '1', '1', 'user-auth/role/:userId', 'system/user/authRole', '', '1', '1', 'C', '1', '0', 'system:user:edit', '#', 103, 1, now(), null, null, ''); -insert into sys_menu values('132', '字典数据', '1', '6', 'dict-data/index/:dictId', 'system/dict/data', '', '1', '1', 'C', '1', '0', 'system:dict:list', '#', 103, 1, now(), null, null, ''); -insert into sys_menu values('133', '文件配置管理', '1', '10', 'oss-config/index', 'system/oss/config', '', '1', '1', 'C', '1', '0', 'system:ossConfig:list', '#', 103, 1, now(), null, null, ''); +insert into sys_menu values('116', '修改生成配置', '3', '2', 'gen-edit/index/:tableId', 'tool/gen/editTable', '', '1', '1', 'C', '1', '0', 'tool:gen:edit', '#', 103, 1, now(), null, null, '/tool/gen'); +insert into sys_menu values('130', '分配用户', '1', '2', 'role-auth/user/:roleId', 'system/role/authUser', '', '1', '1', 'C', '1', '0', 'system:role:edit', '#', 103, 1, now(), null, null, '/system/role'); +insert into sys_menu values('131', '分配角色', '1', '1', 'user-auth/role/:userId', 'system/user/authRole', '', '1', '1', 'C', '1', '0', 'system:user:edit', '#', 103, 1, now(), null, null, '/system/user'); +insert into sys_menu values('132', '字典数据', '1', '6', 'dict-data/index/:dictId', 'system/dict/data', '', '1', '1', 'C', '1', '0', 'system:dict:list', '#', 103, 1, now(), null, null, '/system/dict'); +insert into sys_menu values('133', '文件配置管理', '1', '10', 'oss-config/index', 'system/oss/config', '', '1', '1', 'C', '1', '0', 'system:ossConfig:list', '#', 103, 1, now(), null, null, '/system/oss'); -- oss菜单 insert into sys_menu values('118', '文件管理', '1', '10', 'oss', 'system/oss/index', '', '1', '0', 'C', '0', '0', 'system:oss:list', 'upload', 103, 1, now(), null, null, '文件管理菜单'); @@ -583,7 +583,7 @@ INSERT INTO sys_menu VALUES ('11622', '流程分类', '11616', '1', 'category', INSERT INTO sys_menu VALUES ('11629', '我发起的', '11618', '1', 'myDocument', 'workflow/task/myDocument', '', '1', '1', 'C', '0', '0', '', 'guide', 103, 1, now(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11630', '流程监控', '11616', '4', 'monitor', '', '', '1', '0', 'M', '0', '0', '', 'monitor', 103, 1, now(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11631', '待办任务', '11630', '2', 'allTaskWaiting', 'workflow/task/allTaskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11700', '流程设计', '11616', '5', 'design/index', 'workflow/processDefinition/design', '', '1', '1', 'C', '1', '0', 'workflow:leave:edit', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11700', '流程设计', '11616', '5', 'design/index', 'workflow/processDefinition/design', '', '1', '1', 'C', '1', '0', 'workflow:leave:edit', '#', 103, 1, now(), NULL, NULL, '/workflow/processDefinition'); INSERT INTO sys_menu VALUES ('11701', '请假申请', '11616', '6', 'leaveEdit/index', 'workflow/leave/leaveEdit', '', '1', '1', 'C', '1', '0', 'workflow:leave:edit', '#', 103, 1, now(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11623', '流程分类查询', '11622', '1', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:query', '#', 103, 1, now(), NULL, NULL, ''); diff --git a/script/sql/ry-cloud.sql b/script/sql/ry-cloud.sql index 8cd3fcbe3..a80c299d5 100644 --- a/script/sql/ry-cloud.sql +++ b/script/sql/ry-cloud.sql @@ -287,11 +287,11 @@ insert into sys_menu values('115', '代码生成', '3', '2', 'gen', insert into sys_menu values('121', '租户管理', '6', '1', 'tenant', 'system/tenant/index', '', 1, 0, 'C', '0', '0', 'system:tenant:list', 'list', 103, 1, sysdate(), null, null, '租户管理菜单'); insert into sys_menu values('122', '租户套餐管理', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', 1, 0, 'C', '0', '0', 'system:tenantPackage:list', 'form', 103, 1, sysdate(), null, null, '租户套餐管理菜单'); insert into sys_menu values('123', '客户端管理', '1', '11', 'client', 'system/client/index', '', 1, 0, 'C', '0', '0', 'system:client:list', 'international', 103, 1, sysdate(), null, null, '客户端管理菜单'); -insert into sys_menu values('116', '修改生成配置', '3', '2', 'gen-edit/index/:tableId', 'tool/gen/editTable', '', 1, 1, 'C', '1', '0', 'tool:gen:edit', '#', 103, 1, sysdate(), null, null, ''); -insert into sys_menu values('130', '分配用户', '1', '2', 'role-auth/user/:roleId', 'system/role/authUser', '', 1, 1, 'C', '1', '0', 'system:role:edit', '#', 103, 1, sysdate(), null, null, ''); -insert into sys_menu values('131', '分配角色', '1', '1', 'user-auth/role/:userId', 'system/user/authRole', '', 1, 1, 'C', '1', '0', 'system:user:edit', '#', 103, 1, sysdate(), null, null, ''); -insert into sys_menu values('132', '字典数据', '1', '6', 'dict-data/index/:dictId', 'system/dict/data', '', 1, 1, 'C', '1', '0', 'system:dict:list', '#', 103, 1, sysdate(), null, null, ''); -insert into sys_menu values('133', '文件配置管理', '1', '10', 'oss-config/index', 'system/oss/config', '', 1, 1, 'C', '1', '0', 'system:ossConfig:list', '#', 103, 1, sysdate(), null, null, ''); +insert into sys_menu values('116', '修改生成配置', '3', '2', 'gen-edit/index/:tableId', 'tool/gen/editTable', '', 1, 1, 'C', '1', '0', 'tool:gen:edit', '#', 103, 1, sysdate(), null, null, '/tool/gen'); +insert into sys_menu values('130', '分配用户', '1', '2', 'role-auth/user/:roleId', 'system/role/authUser', '', 1, 1, 'C', '1', '0', 'system:role:edit', '#', 103, 1, sysdate(), null, null, '/system/role'); +insert into sys_menu values('131', '分配角色', '1', '1', 'user-auth/role/:userId', 'system/user/authRole', '', 1, 1, 'C', '1', '0', 'system:user:edit', '#', 103, 1, sysdate(), null, null, '/system/user'); +insert into sys_menu values('132', '字典数据', '1', '6', 'dict-data/index/:dictId', 'system/dict/data', '', 1, 1, 'C', '1', '0', 'system:dict:list', '#', 103, 1, sysdate(), null, null, '/system/dict'); +insert into sys_menu values('133', '文件配置管理', '1', '10', 'oss-config/index', 'system/oss/config', '', 1, 1, 'C', '1', '0', 'system:ossConfig:list', '#', 103, 1, sysdate(), null, null, '/system/oss'); -- oss菜单 insert into sys_menu values('118', '文件管理', '1', '10', 'oss', 'system/oss/index', '', 1, 0, 'C', '0', '0', 'system:oss:list', 'upload', 103, 1, sysdate(), null, null, '文件管理菜单'); @@ -418,7 +418,7 @@ INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', '2', 'spel', insert into sys_menu values ('11629', '我发起的', '11618', '1', 'myDocument', 'workflow/task/myDocument', '', '1', '1', 'C', '0', '0', '', 'guide', 103, 1, sysdate(), NULL, NULL, ''); insert into sys_menu values ('11630', '流程监控', '11616', '4', 'monitor', '', '', '1', '0', 'M', '0', '0', '', 'monitor', 103, 1, sysdate(), NULL, NULL, ''); insert into sys_menu values ('11631', '待办任务', '11630', '2', 'allTaskWaiting', 'workflow/task/allTaskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, sysdate(), NULL, NULL, ''); -insert into sys_menu values ('11700', '流程设计', '11616', '5', 'design/index', 'workflow/processDefinition/design', '', 1, 1, 'C', '1', '0', 'workflow:leave:edit', '#', 103, 1, sysdate(), null, null, ''); +insert into sys_menu values ('11700', '流程设计', '11616', '5', 'design/index', 'workflow/processDefinition/design', '', 1, 1, 'C', '1', '0', 'workflow:leave:edit', '#', 103, 1, sysdate(), null, null, '/workflow/processDefinition'); insert into sys_menu values ('11701', '请假申请', '11616', '6', 'leaveEdit/index', 'workflow/leave/leaveEdit', '', 1, 1, 'C', '1', '0', 'workflow:leave:edit', '#', 103, 1, sysdate(), null, null, ''); -- 流程分类管理相关按钮 insert into sys_menu values ('11623', '流程分类查询', '11622', '1', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:query', '#', 103, 1,sysdate(), null, null, ''); diff --git a/script/sql/update/oracle/update_2.4.1-2.5.0.sql b/script/sql/update/oracle/update_2.4.1-2.5.0.sql index 8e3f04d81..231267cdd 100644 --- a/script/sql/update/oracle/update_2.4.1-2.5.0.sql +++ b/script/sql/update/oracle/update_2.4.1-2.5.0.sql @@ -87,3 +87,10 @@ COMMENT ON COLUMN flow_instance_biz_ext.business_id IS '业务Id'; ALTER TABLE test_leave ADD COLUMN apply_code VARCHAR2(50) NOT NULL; COMMENT ON COLUMN test_leave.apply_code IS '申请编号'; + +update sys_menu set remark = '/tool/gen' where menu_id = 116; +update sys_menu set remark = '/system/role' where menu_id = 130; +update sys_menu set remark = '/system/user' where menu_id = 131; +update sys_menu set remark = '/system/dict' where menu_id = 132; +update sys_menu set remark = '/system/oss' where menu_id = 133; +update sys_menu set remark = '/workflow/processDefinition' where menu_id = 11700; diff --git a/script/sql/update/postgres/update_2.4.1-2.5.0.sql b/script/sql/update/postgres/update_2.4.1-2.5.0.sql index 4626994da..48975b43f 100644 --- a/script/sql/update/postgres/update_2.4.1-2.5.0.sql +++ b/script/sql/update/postgres/update_2.4.1-2.5.0.sql @@ -88,3 +88,10 @@ COMMENT ON COLUMN flow_instance_biz_ext.business_id IS '业务Id'; ALTER TABLE test_leave ADD COLUMN apply_code VARCHAR(50) NOT NULL; COMMENT ON COLUMN test_leave.apply_code IS '申请编号'; + +update sys_menu set remark = '/tool/gen' where menu_id = 116; +update sys_menu set remark = '/system/role' where menu_id = 130; +update sys_menu set remark = '/system/user' where menu_id = 131; +update sys_menu set remark = '/system/dict' where menu_id = 132; +update sys_menu set remark = '/system/oss' where menu_id = 133; +update sys_menu set remark = '/workflow/processDefinition' where menu_id = 11700; diff --git a/script/sql/update/update_2.4.1-2.5.0.sql b/script/sql/update/update_2.4.1-2.5.0.sql index ec8cd00b4..8faead3b0 100644 --- a/script/sql/update/update_2.4.1-2.5.0.sql +++ b/script/sql/update/update_2.4.1-2.5.0.sql @@ -57,3 +57,10 @@ create table flow_instance_biz_ext ( ALTER TABLE `test_leave` ADD COLUMN `apply_code` varchar(50) NOT NULL COMMENT '申请编号' AFTER `tenant_id`; + +update sys_menu set remark = '/tool/gen' where menu_id = 116; +update sys_menu set remark = '/system/role' where menu_id = 130; +update sys_menu set remark = '/system/user' where menu_id = 131; +update sys_menu set remark = '/system/dict' where menu_id = 132; +update sys_menu set remark = '/system/oss' where menu_id = 133; +update sys_menu set remark = '/workflow/processDefinition' where menu_id = 11700; -- Gitee From 0122a09c27e36d35aacfe9eeaae86fa4b57f1e1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 2 Sep 2025 14:49:02 +0800 Subject: [PATCH 135/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E9=80=9A=E7=9F=A5messageType=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=88=A4=E7=A9=BA=E9=80=BB=E8=BE=91=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/workflow/service/impl/FlwCommonServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java index a1de00f76..e0c81cefc 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java @@ -53,7 +53,7 @@ public class FlwCommonServiceImpl implements IFlwCommonService { */ @Override public void sendMessage(String flowName, Long instId, List messageType, String message) { - if (CollUtil.isNotEmpty(messageType)) { + if (CollUtil.isEmpty(messageType)) { return; } IFlwTaskService flwTaskService = SpringUtils.getBean(IFlwTaskService.class); -- Gitee From 1dc9bfe304c794f532b1d40ed23a142ed266bcc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 2 Sep 2025 15:52:33 +0800 Subject: [PATCH 136/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20StreamUtils?= =?UTF-8?q?=20=E8=BF=94=E5=9B=9E=E4=B8=8D=E5=8F=AF=E5=8F=98=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/core/utils/StreamUtils.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java index 5172f3225..f0d43c794 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java @@ -27,7 +27,7 @@ public class StreamUtils { */ public static List filter(Collection collection, Predicate function) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyList(); + return CollUtil.newArrayList(); } return collection.stream() .filter(function) @@ -127,7 +127,7 @@ public class StreamUtils { */ public static List sorted(Collection collection, Comparator comparing) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyList(); + return CollUtil.newArrayList(); } return collection.stream() .filter(Objects::nonNull) @@ -265,7 +265,7 @@ public class StreamUtils { */ public static List toList(Collection collection, Function function) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyList(); + return CollUtil.newArrayList(); } return collection.stream() .map(function) -- Gitee From 9439ec88ab76fb5a788c3446c2e116f6b79c3a3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 2 Sep 2025 15:59:40 +0800 Subject: [PATCH 137/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20StreamUtils?= =?UTF-8?q?=20=E8=BF=94=E5=9B=9E=E4=B8=8D=E5=8F=AF=E5=8F=98=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/core/utils/StreamUtils.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java index f0d43c794..ca5f1c22d 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java @@ -1,6 +1,7 @@ package org.dromara.common.core.utils; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.map.MapUtil; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -148,7 +149,7 @@ public class StreamUtils { */ public static Map toIdentityMap(Collection collection, Function key) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return collection.stream() .filter(Objects::nonNull) @@ -169,7 +170,7 @@ public class StreamUtils { */ public static Map toMap(Collection collection, Function key, Function value) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return collection.stream() .filter(Objects::nonNull) @@ -187,7 +188,7 @@ public class StreamUtils { */ public static Map toMap(Map map, BiFunction take) { if (CollUtil.isEmpty(map)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return toMap(map.entrySet(), Map.Entry::getKey, entry -> take.apply(entry.getKey(), entry.getValue())); } @@ -204,7 +205,7 @@ public class StreamUtils { */ public static Map> groupByKey(Collection collection, Function key) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return collection.stream() .filter(Objects::nonNull) @@ -225,7 +226,7 @@ public class StreamUtils { */ public static Map>> groupBy2Key(Collection collection, Function key1, Function key2) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return collection.stream() .filter(Objects::nonNull) @@ -246,7 +247,7 @@ public class StreamUtils { */ public static Map> group2Map(Collection collection, Function key1, Function key2) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return collection.stream() .filter(Objects::nonNull) @@ -310,7 +311,7 @@ public class StreamUtils { public static Map merge(Map map1, Map map2, BiFunction merge) { if (CollUtil.isEmpty(map1) && CollUtil.isEmpty(map2)) { // 如果两个 map 都为空,则直接返回空的 map - return Collections.emptyMap(); + return MapUtil.newHashMap(); } else if (CollUtil.isEmpty(map1)) { // 如果 map1 为空,则直接处理返回 map2 return toMap(map2.entrySet(), Map.Entry::getKey, entry -> merge.apply(null, entry.getValue())); -- Gitee From 8c315c0c4d3844e76896eb1456e056aa933f453f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 2 Sep 2025 16:00:23 +0800 Subject: [PATCH 138/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20StreamUtils?= =?UTF-8?q?=20=E8=BF=94=E5=9B=9E=E4=B8=8D=E5=8F=AF=E5=8F=98=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/common/core/utils/StreamUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java index ca5f1c22d..c5487c0b6 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StreamUtils.java @@ -287,7 +287,7 @@ public class StreamUtils { */ public static Set toSet(Collection collection, Function function) { if (CollUtil.isEmpty(collection)) { - return Collections.emptySet(); + return CollUtil.newHashSet(); } return collection.stream() .map(function) -- Gitee From c2c778c0c35d7d8a621d24e70aaa2939a8d4ca56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 3 Sep 2025 14:16:22 +0800 Subject: [PATCH 139/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B2=97?= =?UTF-8?q?=E4=BD=8D=E9=A1=B5=E9=9D=A2=E6=9F=A5=E8=AF=A2=E6=9D=83=E9=99=90?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/system/SysPostController.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java index 2b488222f..f1b240c7c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java @@ -1,6 +1,7 @@ package org.dromara.system.controller.system; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ObjectUtil; import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.domain.R; @@ -11,8 +12,10 @@ import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysDeptBo; import org.dromara.system.domain.bo.SysPostBo; import org.dromara.system.domain.vo.SysPostVo; +import org.dromara.system.service.ISysDeptService; import org.dromara.system.service.ISysPostService; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @@ -35,6 +38,7 @@ import java.util.List; public class SysPostController extends BaseController { private final ISysPostService postService; + private final ISysDeptService deptService; /** * 获取岗位列表 @@ -134,4 +138,13 @@ public class SysPostController extends BaseController { return R.ok(list); } + /** + * 获取部门树列表 + */ + @SaCheckPermission("system:post:list") + @GetMapping("/deptTree") + public R>> deptTree(SysDeptBo dept) { + return R.ok(deptService.selectDeptTreeList(dept)); + } + } -- Gitee From 52daba0b36bf347cfce84ae9b44328b014f4343c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 4 Sep 2025 15:47:11 +0800 Subject: [PATCH 140/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E6=97=A5=E6=9C=9F=E6=A0=BC=E5=BC=8F=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/common/web/config/ResourcesConfig.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/ResourcesConfig.java b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/ResourcesConfig.java index 8dbb589dc..13ee3759d 100644 --- a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/ResourcesConfig.java +++ b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/ResourcesConfig.java @@ -1,6 +1,8 @@ package org.dromara.common.web.config; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import org.dromara.common.core.utils.ObjectUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.web.handler.GlobalExceptionHandler; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -29,10 +31,11 @@ public class ResourcesConfig implements WebMvcConfigurer { public void addFormatters(FormatterRegistry registry) { // 全局日期格式转换配置 registry.addConverter(String.class, Date.class, source -> { - if (StringUtils.isBlank(source)) { + DateTime parse = DateUtil.parse(source); + if (ObjectUtils.isNull(parse)) { return null; } - return DateUtil.parse(source); + return parse.toJdkDate(); }); } -- Gitee From 61a4b96831818b5deecdad9b10614457e6e893ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 4 Sep 2025 15:48:23 +0800 Subject: [PATCH 141/155] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89sql=E5=9C=A8pg=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/system/mapper/SysDeptMapper.java | 4 ++-- .../main/java/org/dromara/system/mapper/SysMenuMapper.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java index 1f93c5030..80a99cf34 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java @@ -32,7 +32,7 @@ public interface SysDeptMapper extends BaseMapperPlus { return """ select srd.dept_id from sys_role_dept srd left join sys_role sr on sr.role_id = srd.role_id - where srd.role_id = %d and sr.status = 0 + where srd.role_id = %d and sr.status = '0' """.formatted(roleId); } @@ -51,7 +51,7 @@ public interface SysDeptMapper extends BaseMapperPlus { select parent_id from sys_dept where dept_id in ( select srd.dept_id from sys_role_dept srd left join sys_role sr on sr.role_id = srd.role_id - where srd.role_id = %d and sr.status = 0 + where srd.role_id = %d and sr.status = '0' ) """.formatted(roleId); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java index b0903057c..05e2546b2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java @@ -34,7 +34,7 @@ public interface SysMenuMapper extends BaseMapperPlus { select menu_id from sys_role_menu where role_id in ( select sur.role_id from sys_user_role sur left join sys_role sr on sr.role_id = sur.role_id - where sur.user_id = %d and sr.status = 0 + where sur.user_id = %d and sr.status = '0' ) """.formatted(userId); } @@ -54,7 +54,7 @@ public interface SysMenuMapper extends BaseMapperPlus { return """ select srm.menu_id from sys_role_menu srm left join sys_role sr on sr.role_id = srm.role_id - where srm.role_id = %d and sr.status = 0 + where srm.role_id = %d and sr.status = '0' """.formatted(roleId); } @@ -74,7 +74,7 @@ public interface SysMenuMapper extends BaseMapperPlus { select parent_id from sys_menu where menu_id in ( select srm.menu_id from sys_role_menu srm left join sys_role sr on sr.role_id = srm.role_id - where srm.role_id = %d and sr.status = 0 + where srm.role_id = %d and sr.status = '0' ) """.formatted(roleId); } -- Gitee From 0d994c97b9782e4128b2df8316d6542501ec222c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 4 Sep 2025 17:38:46 +0800 Subject: [PATCH 142/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20SysMenu?= =?UTF-8?q?=20=E7=9A=84=20selectObjs=20=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/system/service/impl/SysMenuServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java index 19d6bfb69..6d4ab42aa 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java @@ -161,6 +161,7 @@ public class SysMenuServiceImpl implements ISysMenuService { }); } return baseMapper.selectObjs(new LambdaQueryWrapper() + .select(SysMenu::getMenuId) .in(SysMenu::getMenuId, menuIds) .notIn(CollUtil.isNotEmpty(parentIds), SysMenu::getMenuId, parentIds), x -> { return Convert.toLong(x); -- Gitee From 3b2854adb89c82f1cb945098d0c2e8576f684948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 4 Sep 2025 17:41:03 +0800 Subject: [PATCH 143/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=8A=82=E7=82=B9=E6=82=AC=E6=B5=AE=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FlwChartExtServiceImpl.java | 19 +++++++++++++++++-- script/config/nacos/ruoyi-workflow.yml | 2 ++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java index 824615781..648e15e1a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java @@ -25,6 +25,7 @@ import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; import org.dromara.warm.flow.ui.service.ChartExtService; import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.constant.FlowConstant; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -47,6 +48,8 @@ public class FlwChartExtServiceImpl implements ChartExtService { private final FlowHisTaskMapper flowHisTaskMapper; private final DictService dictService; + @Value("${warm-flow.node-tooltip:true}") + private boolean nodeTooltip; @DubboReference private RemoteUserService remoteUserService; @@ -60,6 +63,11 @@ public class FlwChartExtServiceImpl implements ChartExtService { */ @Override public void execute(DefJson defJson) { + // 配置关闭,直接返回,不渲染悬浮窗 + if (!nodeTooltip) { + return; + } + // 根据流程实例ID查询所有相关的历史任务列表 List flowHisTasks = this.getHisTaskGroupedByNode(defJson.getInstance().getId()); if (CollUtil.isEmpty(flowHisTasks)) { @@ -107,6 +115,11 @@ public class FlwChartExtServiceImpl implements ChartExtService { */ @Override public void initPromptContent(DefJson defJson) { + // 配置关闭,直接返回,不渲染悬浮窗 + if (!nodeTooltip) { + return; + } + defJson.setTopText("流程名称: " + defJson.getFlowName()); defJson.getNodeList().forEach(nodeJson -> { nodeJson.setPromptContent( @@ -156,8 +169,10 @@ public class FlwChartExtServiceImpl implements ChartExtService { /** * 处理节点的扩展信息,构建用于流程图悬浮提示的内容 * - * @param nodeJson 当前节点对象 - * @param taskList 当前节点对应的历史审批任务列表 + * @param nodeJson 当前流程节点对象,包含节点基础信息和提示内容容器 + * @param taskList 当前节点关联的历史审批任务列表,用于生成提示信息 + * @param userMap 用户信息映射表,key 为用户ID,value 为用户DTO对象,用于获取审批人信息 + * @param dictType 数据字典映射表,key 为字典项编码,value 为对应显示值,用于翻译审批状态等 */ private void processNodeExtInfo(NodeJson nodeJson, List taskList, Map userMap, Map dictType) { diff --git a/script/config/nacos/ruoyi-workflow.yml b/script/config/nacos/ruoyi-workflow.yml index 8dfe7bb23..98f1347ac 100644 --- a/script/config/nacos/ruoyi-workflow.yml +++ b/script/config/nacos/ruoyi-workflow.yml @@ -32,5 +32,7 @@ warm-flow: ui: true # 是否显示流程图顶部文字 top-text-show: true + # 是否渲染节点悬浮提示,默认true + node-tooltip: true # 默认Authorization,如果有多个token,用逗号分隔 token-name: ${sa-token.token-name},clientid -- Gitee From 7fe1d9064150f024b3f0bf88aa89a3b9342c4dca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 12 Sep 2025 15:15:17 +0800 Subject: [PATCH 144/155] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B0=86?= =?UTF-8?q?dubbo=20redis=E9=9B=86=E7=BE=A4=E9=85=8D=E7=BD=AE=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E5=88=B0common=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E9=87=8C=E4=BE=BF=E4=BA=8E=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi-common-dubbo/src/main/resources/common-dubbo.yml | 6 +----- script/config/nacos/application-common.yml | 7 +++++++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ruoyi-common/ruoyi-common-dubbo/src/main/resources/common-dubbo.yml b/ruoyi-common/ruoyi-common-dubbo/src/main/resources/common-dubbo.yml index 790921517..9f9ed6ea7 100644 --- a/ruoyi-common/ruoyi-common-dubbo/src/main/resources/common-dubbo.yml +++ b/ruoyi-common/ruoyi-common-dubbo/src/main/resources/common-dubbo.yml @@ -20,18 +20,14 @@ dubbo: parameters: namespace: ${spring.profiles.active} metadata-report: - address: redis://${spring.data.redis.host}:${spring.data.redis.port} + address: redis://${spring.data.redis.host:localhost}:${spring.data.redis.port:6379} group: DUBBO_GROUP username: dubbo password: ${spring.data.redis.password} - # 集群开关 - cluster: false parameters: namespace: ${spring.profiles.active} database: ${spring.data.redis.database} timeout: ${spring.data.redis.timeout} - # 集群地址 cluster 为 true 生效 - backup: 127.0.0.1:6379,127.0.0.1:6381 # 消费者相关配置 consumer: # 结果缓存(LRU算法) diff --git a/script/config/nacos/application-common.yml b/script/config/nacos/application-common.yml index 63c0853bb..db437fb7f 100644 --- a/script/config/nacos/application-common.yml +++ b/script/config/nacos/application-common.yml @@ -32,6 +32,13 @@ dubbo: consumer: # 超时时间 timeout: 3000 + metadata-report: + # Redis集群开关 + cluster: false + parameters: + # 集群地址 cluster 为 true 生效 + # 集群把所有Redis集群节点写到这里就行了 + backup: 127.0.0.1:6379,127.0.0.1:6381 # 自定义配置 custom: # 全局请求log -- Gitee From 43efa94af9e2f3ff87cd1a13c9619228a14ea858 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 15 Sep 2025 12:04:51 +0800 Subject: [PATCH 145/155] update springboot-admin 3.5.1 => 3.5.3 update springdoc 2.8.11 => 2.8.13 update mybatis-plus 3.5.12 => 3.5.14 update mapstruct-plus 1.4.8 => 1.5.0 update sms4j 3.3.4 => 3.3.5 update rocketmq-client 2.3.0 => 2.3.4 --- pom.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 7dfb5bd31..6836980b9 100644 --- a/pom.xml +++ b/pom.xml @@ -19,14 +19,14 @@ 17 3.5.4 2025.0.0 - 3.5.1 + 3.5.3 3.5.16 - 3.5.12 + 3.5.14 3.9.1 4.3.1 2.3 2.2.36 - 2.8.11 + 2.8.13 0.15.0 1.3.0 5.8.40 @@ -34,12 +34,12 @@ 2.2.7 1.7.2 1.44.0 - 1.18.38 + 1.18.40 7.4 3.0.0 9.3.0 1.80 - 1.4.8 + 1.5.0 0.2.0 1.16.7 @@ -55,7 +55,7 @@ 1.8.1 - 2.3.0 + 2.3.4 3.14.0 -- Gitee From 8512b667467b2538f27b1d8b14a5bffe67240c9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 15 Sep 2025 15:46:30 +0800 Subject: [PATCH 146/155] =?UTF-8?q?update=20=E7=94=9F=E6=88=90=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=89=8D=E7=AB=AF=E5=A2=9E=E5=8A=A0fixed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm | 2 +- .../ruoyi-gen/src/main/resources/vm/vue/index.vue.vm | 2 +- .../ruoyi-gen/src/main/resources/vm/xml/mapper.xml.vm | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm index 4570d46db..fa4e05f63 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm +++ b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm @@ -123,7 +123,7 @@ #end #end #end - +

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 E?)gavkWMGE`eBbWT+rtsaB` zOnv4C=P|9U^gN(4(P`v)Oh=Qeno4=FvU86g8NIV>)yaha6kEg8{{y>`mNT9IjMXJf zf>0stLei6^c(?t@GI~!wyjU2~T2`m_gl6G&;@%QIwHfG5psd)rg>k9#rSJA;Y>>*4?D6cJPK;(HS91zY)O3~z)U_{RP9SX zUdEn$?Au`Y9o_#LMr>$rM%G(esBjJP2Z?#JwibkoKhO;rw zcJia_d<`5}hrZ_M84c&h4wT?{K3Tx+?N?5&nbjZ4G9}ql-CP*F;1r7;5weH2)(ipm{;Jy>g+GC<9 z!M)Ix2GyIa(k_+Rr8!tXBqC!zxJnsfK(}+ofl?WW;rp~2&hag~e{+e4+)IFE~+Y_5lgAdY52ORc<$)6rB$!iMPWtBgR=VNiy|-6<3;33KZ=)qDBY zD00en}%$n3Dp0}6NgMhe8BV_dL98df3X5rbp6E?YD134kK}ljs_Rf` zar8!W?Im|w5a;eyfEhYuKQGkWl{jR6nHVYE50B-ghcqvyJ+0$Ncy#M#kXX^QW(3@6 zN6TYALr<@An2jto%#6(`FUX}kqrX_3=fP|RH)4~Brtm6t9V%zT(pi8XqjrgC=$?c( zx+nC+J-I0NB)qw=Cl{(G2f;P!5Y~i*AZQ>@L0&OQSKE@Y zT@ocZ-7rO`L#?a7C($HkJ$BiPOL#D!kZS~pgg{C$?NShp78s zT1QToQA6&5JqzM(W`n_fo||m%d&P9xEwnP$7jrW;rNW$2cCnY~$-yUU%y5WO(k*{o z5kX=*62iOLqvqP~c`>Cx<^@url;Lkuo*ui6aL=uoHL~s7>~20uP!`&88eafB=mDy| zt;iikjZpBug65t3LxNY1j-ox?5U`t1;p`c4b|jmDP(Rp>1uVuCaL~rw0s-X^4Z2#r z&JPK7h0v){)D0L*m;D?;Rv%kj50mI%f)M&3>}WNQC1Si#YSH>$O)l&N2rsa#V{rdH95wi~%Wvi=&} z$V%p7T<{qeaGB;v|8!Kh%)4*ol>_AFI5lTb>Kw8H{RZuvz?`(=8GCTy>&o!9x$hfY z=afBZH=VHGeD;!C;wa=?Ei9|0AMtM;t5bTQ%zd7*dS6&J(~j!&>iC#ua1^rZHX9!O z?SwmDx=+0=co2D2Cn{1Gk0oTF3q)LoD!{rSCb7F9X3@PB8di*`@J%RQh)F1>A>x&@ zz)pPV@iRMz5hL)e`CbsSn#MKTL`-A-F#{(_eShB*haudu!vab4!r-(?MD1c2PU)cJ z&wNf!BQb{K(l=r7pQg4$g~d?orm1wKal!o>ns1oe6D2qr%=lOQ4DtS1M@nKg+_wLD zFrI(6rhMgM{al3B(fG8d{T ze=#bdI&_zUJ2OBYT@K6Tjtsn;YXy!cJJM2r2e%pRm+|CeOvq7s3On9)MFyN@hi!eK z3(q{FFnAGiKowBMukQR^lQmt-`H)Aq6(S z=bQ+gARV*-V-MbI?H%gA;kT}c(qNZOt!Wz`#!&hE7>Rdb@QvuD0U-!P z4LkeIZ=2saVif){nfm*JXh8b?RwR?T|DAxD$~(5KA;7XTqWkxPPCtuASFLyODjJTH z3FwS(zWH8inPyS&uE}<&xX54if_=*PJGxkRz?kL6xjSJ;`eBfDcG==Zn)@I20_d9h zXFF%VcN=cg!-0E2iNB2|UtDcVeiH?Eqsd}Ma~@t%kNKH{lkgKfflYPlRXTN6;&TKz z_s1n79Me8KMvVv5(DhE2VE*js*>3we0i%Pn-Lw7YOThk5QLuZk-2Pkp?7GpyRd7UQ zxQLH3yW%Ckw>Rmo3YXDz8Bc~w1eH#f{poTr%9a3TK$*YH8C`;YSdP+pxV%6_XV1;6 z==}Dau9>sl=eyZJoQJ`kWQ6#geevXA#`|ewv>46@7sE7g^po@aiEs{f<@e_fLSUs~ zf{* z^m$F0-?hF&XHO6o;W*t@>pX1I;JGJ(e5Q#&Dwjsmyax~d=b)K~dA>O0jQkz5z$N