瀏覽代碼

用户信息跨服务调用调优

sangwenwei 1 年之前
父節點
當前提交
9d3cc1d463

+ 14 - 2
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/CwProjectRecordsService.java

@@ -14,6 +14,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.jeeplus.common.TokenProvider;
+import com.jeeplus.common.constant.CacheNames;
+import com.jeeplus.common.redis.RedisUtils;
 import com.jeeplus.core.query.QueryWrapperGenerator;
 import com.jeeplus.finance.contractRegistration.domain.ContractInfo;
 import com.jeeplus.finance.contractRegistration.mapper.ContractInfoMapper;
@@ -35,6 +37,7 @@ import com.jeeplus.finance.workClientInfo.service.dto.CwWorkClientBaseDTO;
 import com.jeeplus.sys.domain.User;
 import com.jeeplus.sys.feign.IUserApi;
 import com.jeeplus.sys.feign.IWorkAttachmentApi;
+import com.jeeplus.sys.service.UserService;
 import com.jeeplus.sys.service.dto.UserDTO;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.http.ResponseEntity;
@@ -77,6 +80,9 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
     @Resource
     private CwProjectMembersService cwProjectMembersService;
 
+    @Resource
+    private UserService userService;
+
     /**
      * 差选项目列表信息
      * @param page
@@ -125,7 +131,13 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
         }
 
         IPage<CwProjectRecordsDTO> list = cwProjectRecordsMapper.findList(page, queryWrapper);
-        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+//        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+
+        List<UserDTO> allUserInfo = (List<UserDTO>) RedisUtils.getInstance().get(CacheNames.USER_CACHE_USER_ALL_INFO);
+        if (null == allUserInfo || allUserInfo.size() == 0) {
+            allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+        }
+        List<UserDTO> finalAllUserInfo = allUserInfo;
         list.getRecords().forEach(li->{
             if (StringUtils.isBlank(li.getProjectMasterName())){
                 //根据项目经理1的id去查项目经理去名称
@@ -151,6 +163,7 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
                             matchingUser = user;
                             break;
                         }
+
                     }
                     if (matchingUser != null) {
                         String projectMasterName = matchingUser.getName(); // Assuming the property name is "userName"
@@ -159,7 +172,6 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
                 }
             }
 
-
         });
         return list;
     }

+ 13 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/service/CwProjectReportService.java

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.spring.SpringUtil;
+import cn.hutool.system.UserInfo;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -14,6 +15,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.jeeplus.common.TokenProvider;
+import com.jeeplus.common.constant.CacheNames;
+import com.jeeplus.common.redis.RedisUtils;
 import com.jeeplus.core.query.QueryWrapperGenerator;
 import com.jeeplus.finance.common.flowable.dto.CommitParamDTO;
 import com.jeeplus.finance.invoice.util.SignaturePostUtil;
@@ -45,6 +48,7 @@ import com.jeeplus.sys.feign.IUserApi;
 import com.jeeplus.sys.feign.IWorkAttachmentApi;
 //import com.jeeplus.sys.service.UserService;
 //import com.jeeplus.sys.mapper.UserMapper;
+import com.jeeplus.sys.service.UserService;
 import com.jeeplus.sys.service.dto.UserDTO;
 //import com.jeeplus.sys.utils.DictUtils;
 //import com.jeeplus.sys.utils.Global;
@@ -126,6 +130,9 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
     @Resource
     private CwProjectRecordsService cwProjectRecordsService;
 
+    @Resource
+    private UserService userService;
+
 
     /**
      * 保存项目以及其他相关信息
@@ -526,7 +533,12 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
         IPage<CwProjectReportData> list = reportMapper.findList(page,isBmzr, officeIds.toString(), queryWrapper);
         long l2 = System.currentTimeMillis();
         System.out.println("报告列表查询service方法消耗时间:" + (l2-l1));
-        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+        List<UserDTO> allUserInfo = (List<UserDTO>) RedisUtils.getInstance().get(CacheNames.USER_CACHE_USER_ALL_INFO);
+        if (null == allUserInfo || allUserInfo.size() == 0) {
+            allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+        }
+        ArrayList<User> users = new ArrayList<>();
+        List<UserDTO> finalAllUserInfo = allUserInfo;
         list.getRecords().forEach(li->{
             if (StringUtils.isBlank(li.getProjectMasterName())){
                 //根据项目经理1的id去查项目经理去名称

+ 12 - 3
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/reportCancellApply/service/ReportCancellApplyService.java

@@ -11,6 +11,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.jeeplus.common.TokenProvider;
+import com.jeeplus.common.constant.CacheNames;
+import com.jeeplus.common.redis.RedisUtils;
 import com.jeeplus.core.query.QueryWrapperGenerator;
 import com.jeeplus.finance.projectReport.domain.CwProjectInfoData;
 import com.jeeplus.finance.projectReport.domain.CwProjectReportCancel;
@@ -27,6 +29,7 @@ import com.jeeplus.flowable.feign.IFlowableApi;
 import com.jeeplus.sys.domain.User;
 import com.jeeplus.sys.feign.IRoleApi;
 import com.jeeplus.sys.feign.IUserApi;
+import com.jeeplus.sys.service.UserService;
 import com.jeeplus.sys.service.dto.RoleDTO;
 import com.jeeplus.sys.service.dto.UserDTO;
 //import com.jeeplus.sys.utils.UserUtils;
@@ -72,6 +75,9 @@ public class ReportCancellApplyService extends ServiceImpl<ReportCancellApplyMap
     @Resource
     private CwProjectReportService projectReportService;
 
+    @Resource
+    private UserService userService;
+
     /**
      * 差选项目列表信息
      * @param page
@@ -151,9 +157,12 @@ public class ReportCancellApplyService extends ServiceImpl<ReportCancellApplyMap
         });
         long l3 = System.currentTimeMillis();
         System.out.println("报告作废列表查询service方法获取审核人数据消耗时间:" + (l3-l2));
-        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
-        long l4 = System.currentTimeMillis();
-        System.out.println("报告作废列表查询service方法获取所有审核人数据消耗时间:" + (l4-l3));
+//        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+        List<UserDTO> allUserInfo = (List<UserDTO>) RedisUtils.getInstance().get(CacheNames.USER_CACHE_USER_ALL_INFO);
+        if (null == allUserInfo || allUserInfo.size() == 0) {
+            allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+        }
+        List<UserDTO> finalAllUserInfo = allUserInfo;
         list.getRecords().forEach(li -> {
             if (StringUtils.isBlank(li.getProjectMasterName())){
                 //根据项目经理1的id去查项目经理去名称

+ 11 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/reportCancellApplyArchived/service/ReportCancellApplyArchivedService.java

@@ -10,6 +10,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.collect.Lists;
 import com.jeeplus.common.TokenProvider;
+import com.jeeplus.common.constant.CacheNames;
+import com.jeeplus.common.redis.RedisUtils;
 import com.jeeplus.core.query.QueryWrapperGenerator;
 import com.jeeplus.finance.projectRecords.service.dto.CwProjectRecordsDTO;
 import com.jeeplus.finance.projectReport.domain.CwProjectInfoData;
@@ -32,6 +34,7 @@ import com.jeeplus.sys.domain.WorkAttachmentInfo;
 import com.jeeplus.sys.feign.IRoleApi;
 import com.jeeplus.sys.feign.IUserApi;
 import com.jeeplus.sys.feign.IWorkAttachmentApi;
+import com.jeeplus.sys.service.UserService;
 import com.jeeplus.sys.service.dto.RoleDTO;
 import com.jeeplus.sys.service.dto.UserDTO;
 //import com.jeeplus.sys.utils.UserUtils;
@@ -78,6 +81,7 @@ public class ReportCancellApplyArchivedService extends ServiceImpl<ReportCancell
     @Resource
     private IFlowableApi flowTaskService;
 
+
     /**
      * 差选项目列表信息
      *
@@ -156,7 +160,13 @@ public class ReportCancellApplyArchivedService extends ServiceImpl<ReportCancell
                 }
             }
         });
-        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+//        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+        List<UserDTO> allUserInfo = (List<UserDTO>) RedisUtils.getInstance().get(CacheNames.USER_CACHE_USER_ALL_INFO);
+        if (null == allUserInfo || allUserInfo.size() == 0) {
+            allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+        }
+        List<UserDTO> finalAllUserInfo = allUserInfo;
+        List<UserDTO> finalAllUserInfo1 = allUserInfo;
         list.getRecords().forEach(li -> {
             if (StringUtils.isBlank(li.getProjectMasterName())){
                 //根据项目经理1的id去查项目经理去名称

+ 7 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/workClientInfo/controller/CwWorkClientController.java

@@ -6,8 +6,10 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.common.constant.CacheNames;
 import com.jeeplus.common.excel.ExcelOptions;
 import com.jeeplus.common.excel.annotation.ExportMode;
+import com.jeeplus.common.redis.RedisUtils;
 import com.jeeplus.common.utils.ResponseUtil;
 import com.jeeplus.core.query.QueryWrapperGenerator;
 import com.jeeplus.finance.invoice.util.EasyPoiUtil;
@@ -70,7 +72,11 @@ public class CwWorkClientController {
     public ResponseEntity<IPage<CwWorkClientBaseDTO>> data(CwWorkClientBaseDTO cwWorkClientBaseDTO, Page<CwWorkClientBaseDTO> page) throws Exception {
         IPage<CwWorkClientBaseDTO> result = new Page<CwWorkClientBaseDTO>();
         result = cwWorkClientService.findList (page,cwWorkClientBaseDTO);
-        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+//        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+        List<UserDTO> allUserInfo = (List<UserDTO>) RedisUtils.getInstance().get(CacheNames.USER_CACHE_USER_ALL_INFO);
+        if (null == allUserInfo || allUserInfo.size() == 0) {
+            allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+        }
         result.getRecords().stream().forEach(i -> {
             if (StringUtils.isNotBlank(i.getTaskId()) && StringUtils.isNotBlank(i.getStatus())) {
                 if ("2".equals(i.getStatus())) { // “审核中”的数据要获取数据审核人

+ 14 - 3
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/service/UserService.java

@@ -68,6 +68,9 @@ public class UserService extends ServiceImpl <UserMapper, User> {
     @Autowired
     private CertService certService;
 
+    @Autowired
+    private RedisUtils redisUtils;
+
     /**
      * 根据用户id 查询该用户会计报告的签字注师被选择次数
      * @param userId
@@ -125,7 +128,6 @@ public class UserService extends ServiceImpl <UserMapper, User> {
      */
     public UserDTO getUserByName(String name) {
         UserDTO userDTO = userMapper.getUserByName(name);
-
         return userDTO;
     }
 
@@ -250,7 +252,6 @@ public class UserService extends ServiceImpl <UserMapper, User> {
         queryWrapper.eq ( "a.del_flag", CommonConstants.NOT_DELETED ); // 排除已经删除
         return baseMapper.userFindPage ( page, queryWrapper );
 
-
     }
 
 
@@ -319,6 +320,7 @@ public class UserService extends ServiceImpl <UserMapper, User> {
      * @param userDTO
      */
     public void saveOrUpdate(UserDTO userDTO) {
+        ArrayList<UserDTO> users = new ArrayList<>();
         User user = userWrapper.toEntity ( userDTO );
         if(StringUtils.isNotBlank(userDTO.getManageOfficeIds())){
             user.setManageOfficeIds(userDTO.getManageOfficeIds());
@@ -326,6 +328,9 @@ public class UserService extends ServiceImpl <UserMapper, User> {
         super.saveOrUpdate ( user );
         if ( StrUtil.isBlank ( userDTO.getId ( ) ) ) {
             userDTO.setId ( user.getId ( ) );
+            userDTO.setName(user.getName());
+            users.add(userDTO);
+            redisUtils.append(CacheNames.USER_CACHE_USER_ALL_INFO, String.valueOf(users));
         }
         // 更新用户与角色关联
         baseMapper.deleteUserRole ( userDTO.getId ( ) );
@@ -532,8 +537,14 @@ public class UserService extends ServiceImpl <UserMapper, User> {
         return  list;
     }
 
+    /**
+     * 获取所有的用户数据
+     * @return
+     */
     public List<UserDTO> getAllUserInfo() {
-        return userMapper.getAllUserInfo();
+        List<UserDTO> allUserInfo = userMapper.getAllUserInfo();
+        RedisUtils.getInstance().set(CacheNames.USER_CACHE_USER_ALL_INFO,allUserInfo);
+        return allUserInfo;
     }
 
     /**