Bladeren bron

优化了项目成本缓存策略,修复了根据条件搜索不在汇集层的任务时,查询结果不一致的问题

lw 1 jaar geleden
bovenliggende
commit
5d22f4575a

+ 1 - 0
module_kzks/src/main/java/org/jeecg/modules/Index/service/impl/IndexKpiServiceImpl.java

@@ -17,6 +17,7 @@ import org.jeecg.modules.projectCost.service.IProjectCostService;
 import org.jeecg.modules.system.service.ISysDepartService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;

+ 28 - 19
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/controller/ProjectCostHuijiController.java

@@ -46,7 +46,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
-import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.*;
 import java.util.stream.Collectors;
 
 /**
@@ -138,6 +138,15 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
 
         QueryWrapper<ProjectCostHuiji> queryWrapper = QueryGenerator.initQueryWrapper(huiji1, req.getParameterMap());
         List<String> departNames = new ArrayList<>();
+
+        if (AuthMark.STAFF.equals(role)) {
+            LoginUser finalSysUser = sysUser;
+            queryWrapper.lambda().and(i -> {
+                i.eq(ProjectCostHuiji::getBusinessManName, finalSysUser.getRealname()).or()
+                        .eq(ProjectCostHuiji::getYwfzrname, finalSysUser.getRealname());
+            });
+        }
+
         if (AuthMark.DEPT_LEADER.equals(role)) {
             String[] deptIds = sysUser.getDepartIds().split(",");
             departNames = sysDepartMapper.getDepNameByIds(deptIds);
@@ -149,21 +158,18 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
                 }
             });
             projectCostHuiji.setDeptNames(departNames);
+            sysUser = new LoginUser();
         }
 
         if (AuthMark.BOSS.equals(role)) {
             queryWrapper.lambda().like(StringUtils.isNotBlank(projectCostHuiji.getJycs()), ProjectCostHuiji::getJycs, projectCostHuiji.getJycs())
                     .or().like(StringUtils.isNotBlank(projectCostHuiji.getZrbm()), ProjectCostHuiji::getZrbm, projectCostHuiji.getZrbm());
+            sysUser = new LoginUser();
         }
 
         queryWrapper.lambda().like(StringUtils.isNotBlank(projectCostHuiji.getTaskno()), ProjectCostHuiji::getTaskno, projectCostHuiji.getTaskno());
         queryWrapper.lambda().like(StringUtils.isNotBlank(projectCostHuiji.getTaskname()), ProjectCostHuiji::getTaskname, projectCostHuiji.getTaskname());
-        if (AuthMark.STAFF.equals(role)) {
-            queryWrapper.lambda().and(i -> {
-                i.eq(ProjectCostHuiji::getBusinessManName, sysUser.getRealname()).or()
-                        .eq(ProjectCostHuiji::getYwfzrname, sysUser.getRealname());
-            });
-        }
+
         String superQueryParams = Arrays.toString(req.getParameterMap().get("superQueryParams"));
         String superQueryParamsMd5 = Md5Util.md5Encode(superQueryParams, "utf-8");
         String ObjectMd5 = Md5Util.md5Encode(projectCostHuiji.toString(), "utf-8");
@@ -274,6 +280,7 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
             resultHuiJiVo.setClys(ys.getClys());
             resultHuiJiVo.setWxys(ys.getWxys());
 
+            if (pageList1.getRecords().isEmpty()) resultHuiJiVo = new ProjectCostHuijiVo();
             sumVO.setProjectCostHuijiSum(resultHuiJiVo);
             sumVO.setPageList(pageList1);
 
@@ -290,9 +297,15 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
             query.lambda().like(StringUtils.isNotBlank(projectCost.getTaskno()), ProjectCost::getTaskno, projectCost.getTaskno());
             query.lambda().like(StringUtils.isNotBlank(projectCost.getTaskname()), ProjectCost::getTaskname, projectCost.getTaskname());
 
+            if (AuthMark.STAFF.equals(role)) {
+                LoginUser finalSysUser1 = sysUser;
+                query.lambda().and(i -> {
+                    i.eq(ProjectCost::getBusinessManName, finalSysUser1.getRealname()).or()
+                            .eq(ProjectCost::getYwfzrname, finalSysUser1.getRealname());
+                });
+            }
+
             if (AuthMark.DEPT_LEADER.equals(role)) {
-                String[] deptIds = sysUser.getDepartIds().split(",");
-                departNames = sysDepartMapper.getDepNameByIds(deptIds);
                 List<String> finalDepartNames1 = departNames;
                 query.lambda().and(i -> {
                     for (String departName : finalDepartNames1) {
@@ -301,21 +314,17 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
                     }
                 });
                 projectCost.setDeptNames(departNames);
+                sysUser = new LoginUser();
             }
 
             if (AuthMark.BOSS.equals(role)) {
                 query.lambda().like(StringUtils.isNotBlank(projectCost.getJycs()), ProjectCost::getJycs, projectCost.getJycs())
                         .or().like(StringUtils.isNotBlank(projectCost.getZrbm()), ProjectCost::getZrbm, projectCost.getZrbm());
+                sysUser = new LoginUser();
             }
-            if (AuthMark.STAFF.equals(role)) {
-                query.lambda().and(i -> {
-                    i.eq(ProjectCost::getBusinessManName, sysUser.getRealname()).or()
-                            .eq(ProjectCost::getYwfzrname, sysUser.getRealname());
-                });
-            }
-           // QueryWrapper<ProjectCost> query1 = query;
 
-                    //根据条件分页查询任务
+            QueryWrapper<ProjectCost> clone = query.clone();
+            //根据条件分页查询任务
             CompletableFuture<Page<ProjectCost>> pageCompletableFuture = CompletableFuture.supplyAsync(() -> {
                 Page<ProjectCost> page1 = new Page<ProjectCost>(pageNo, pageSize);
                 return costService.getCostListPage(page1, query);
@@ -323,7 +332,7 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
 
             //根据条件查询所有满足条件的任务号
             CompletableFuture<List<String>> listCompletableFuture = CompletableFuture.supplyAsync(() -> {
-                List<ProjectCost> costs = costService.projectCostlist(query);
+                List<ProjectCost> costs = costService.projectCostlist(clone);
                 return costs.stream().map(ProjectCost::getTaskno).collect(Collectors.toList());
             });
 
@@ -413,7 +422,7 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
 
             ProjectCostSumVo projectCostSumVo = new ProjectCostSumVo();
             Page<ProjectCostVO> projectCostListVOPage = ProjectCostHuijiConvert.INSTANCE.toProjectCostListVOPage(projectCosts, projectCostVOS);
-
+            if (projectCostListVOPage.getRecords().isEmpty()) resultHuiJiVo = new ProjectCostHuijiVo();
             projectCostSumVo.setProjectCostHuijiSum(resultHuiJiVo);
             projectCostSumVo.setPageList(projectCostListVOPage);