Procházet zdrojové kódy

项目列表私有/公开数据异常问题修复

fuyuchuan před 5 měsíci
rodič
revize
2da10325a8

+ 4 - 4
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/PmProjectController.java

@@ -54,14 +54,14 @@ public class PmProjectController {
      * @return
      */
     @GetMapping("/page")
-    public ApiResult<CommonPage<PmProject>> pageList(@RequestParam(value = "projectName", required = false, defaultValue = "") String projectName,
-                                                     @RequestParam(value = "projectType", required = false, defaultValue = "0") Integer projectType,
-                                                     @RequestParam(value = "projectStatus", required = false, defaultValue = "0") Integer projectStatus,
+    public ApiResult<CommonPage<PmProject>> pageList(@RequestParam(value = "projectName", required = false) String projectName,
+                                                     @RequestParam(value = "projectType", required = false) Integer projectType,
+                                                     @RequestParam(value = "projectStatus", required = false) Integer projectStatus,
                                                      @RequestParam(value = "projectAscription", required = false, defaultValue = "0") Integer projectAscription,
                                                      @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
                                                      @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize,
                                                      @RequestParam(value = "projectId", required = false) Integer projectId,
-                                                     @RequestParam(value = "visibleRange", required = false, defaultValue = "1") Byte visibleRange) {
+                                                     @RequestParam(value = "visibleRange", required = false) Byte visibleRange) {
         return ApiResult.success(pmProjectService.projectList(projectName, projectType, projectStatus, projectAscription, pageNum, pageSize, projectId, visibleRange));
     }
 

+ 51 - 19
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmProjectServiceImpl.java

@@ -214,47 +214,79 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
         Integer tenantId = SecurityUtils.getTenantId();
 
         LambdaQueryWrapper<PmProject> lambdaQuery = Wrappers.lambdaQuery();
-        lambdaQuery.eq(PmProject::getTenantId, SecurityUtils.getTenantId()).eq(PmProject::getDelFlag, 0)
+        lambdaQuery.eq(PmProject::getTenantId, tenantId)
+                .eq(PmProject::getDelFlag, 0)
                 .eq(visibleRange != null, PmProject::getVisibleRange, visibleRange);
+
         if (projectId != null && projectId != 0) {
             lambdaQuery.eq(PmProject::getId, projectId);
             page = this.page(page, lambdaQuery);
             return new CommonPage<>(page.getRecords(), page.getTotal(), pageSize, pageNum);
         }
+
         switch (projectAscription) {
             case 0:
-                if (visibleRange != null && visibleRange == 1) {
-                    break;
+                if (StringUtils.isNotBlank(projectName) || projectType != null || projectStatus != null) {
+                    lambdaQuery.eq(PmProject::getDelFlag, 0)
+                            .like(StringUtils.isNotBlank(projectName), PmProject::getProjectName, projectName)
+                            .eq(projectType != null, PmProject::getProjectType, projectType)
+                            .eq(projectStatus != null, PmProject::getProjectStatus, projectStatus)
+                            .and(qw -> qw
+                                    .eq(PmProject::getProjectHead, userId)
+                                    .or()
+                                    .apply("FIND_IN_SET('" + userId + "', project_member) > 0")
+                                    .or()
+                                    .eq(PmProject::getCreateBy, username));
+                }
+                if (visibleRange == null) {
+                    lambdaQuery.eq(PmProject::getDelFlag, 0)
+                            .and(wrapper -> wrapper
+                                    .eq(PmProject::getVisibleRange, 2)
+                                    .and(qw -> qw
+                                            .eq(PmProject::getProjectHead, userId)
+                                            .or()
+                                            .apply("FIND_IN_SET('" + userId + "', project_member) > 0")
+                                            .or()
+                                            .eq(PmProject::getCreateBy, username))
+                            )
+                            .or()
+                            .eq(PmProject::getVisibleRange, 1)
+                            .eq(PmProject::getDelFlag, 0);
+                } else if (visibleRange == 2) {
+                    lambdaQuery.and(wrapper -> wrapper
+                            .eq(PmProject::getProjectHead, userId)
+                            .or()
+                            .apply("FIND_IN_SET('" + userId + "', project_member) > 0")
+                            .or()
+                            .eq(PmProject::getCreateBy, username)
+                    );
                 }
-                lambdaQuery.and(wrapper -> wrapper
-                                .eq(PmProject::getVisibleRange, 2)
-                                .or()
-                                .eq(PmProject::getProjectHead, userId)
-                                .or()
-                                .apply("FIND_IN_SET('" + userId + "', project_member) > 0")
-                                .or()
-                                .eq(PmProject::getCreateBy, username)
-                        )
-                        .or()
-                        .eq(PmProject::getVisibleRange, 1);
+                lambdaQuery.like(StringUtils.isNotBlank(projectName), PmProject::getProjectName, projectName)
+                        .eq(projectType != null, PmProject::getProjectType, projectType)
+                        .eq(projectStatus != null, PmProject::getProjectStatus, projectStatus);
                 break;
             case 1:
-                lambdaQuery.eq(PmProject::getProjectHead, userId);
+                lambdaQuery.eq(PmProject::getProjectHead, userId)
+                        .like(StringUtils.isNotBlank(projectName), PmProject::getProjectName, projectName)
+                        .eq(projectType != null, PmProject::getProjectType, projectType)
+                        .eq(projectStatus != null, PmProject::getProjectStatus, projectStatus);
                 break;
             case 2:
-                lambdaQuery.apply("FIND_IN_SET('" + userId + "', project_member) > 0");
+                lambdaQuery.apply("FIND_IN_SET('" + userId + "', project_member) > 0")
+                        .like(StringUtils.isNotBlank(projectName), PmProject::getProjectName, projectName)
+                        .eq(projectType != null, PmProject::getProjectType, projectType)
+                        .eq(projectStatus != null, PmProject::getProjectStatus, projectStatus);
                 break;
             default:
                 throw new BusinessException("查询项目列表参数错误");
         }
-        lambdaQuery.like(projectName != null, PmProject::getProjectName, projectName);
-        lambdaQuery.eq(projectType != null, PmProject::getProjectType, projectType);
-        lambdaQuery.eq(projectStatus != null, PmProject::getProjectStatus, projectStatus);
         lambdaQuery.orderByDesc(PmProject::getCreateTime);
         List<PmProject> pmProjects = pmProjectMapper.selectList(lambdaQuery);
         if (pmProjects.isEmpty()) {
             return new CommonPage<>(pmProjects, 0, pageSize, pageNum);
         }
+        // Set<PmProject> uniqueProjects = new HashSet<>(pmProjects);
+        // pmProjects = new ArrayList<>(uniqueProjects);
 
         // 替换创建人和更新人名字(username→nickname)
         LambdaQueryWrapper<SysUser> query = Wrappers.lambdaQuery();