Selaa lähdekoodia

Merge branch 'server-165' of uskycloud/usky-modules into master

gez 8 kuukautta sitten
vanhempi
commit
e8ec6af32e

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

@@ -10,6 +10,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.temporal.TemporalAdjusters;
 import java.util.List;
@@ -57,7 +58,7 @@ public class PmProjectController {
                                                      @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 = "projectId", required = false) Integer projectId) {
         return ApiResult.success(pmProjectService.projectList(projectName, projectType, projectStatus, projectAscription, pageNum, pageSize, projectId));
     }
 
@@ -112,5 +113,27 @@ public class PmProjectController {
         pmProjectService.exitProject(projectId);
     }
 
+    /**
+     * 项目工时统计
+     *
+     * @param projectId
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    @GetMapping("/projectWorkTime")
+    public ApiResult<List<Map<LocalDate, BigDecimal>>> projectIdName(@RequestParam(value = "projectId") Integer projectId,
+                                                                      @RequestParam(value = "startDate", required = false) String startDate,
+                                                                      @RequestParam(value = "endDate", required = false) String endDate) {
+        LocalDate now = LocalDate.now();
+        if (StringUtils.isBlank(endDate)) {
+            endDate = now.toString();
+        }
+        if (StringUtils.isBlank(startDate)) {
+            startDate = now.minusDays(29).toString();;
+        }
+        return ApiResult.success(pmProjectService.projectWorkTime(projectId, startDate, endDate));
+    }
+
 }
 

+ 1 - 3
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/PmWorkContentController.java

@@ -40,16 +40,14 @@ public class PmWorkContentController {
      * @param startDate
      * @param endDate
      * @param projectName
-     * @param reportId
      * @return
      */
     @GetMapping("/projectName")
     public ApiResult<List<PmWorkContent>> pageList(@RequestParam(value = "startDate", required = false) String startDate,
                                                    @RequestParam(value = "endDate", required = false) String endDate,
                                                    @RequestParam(value = "projectName", required = false) String projectName,
-                                                   @RequestParam(value = "reportId", required = false) Integer reportId,
                                                    @RequestParam(value = "projectAscription", required = false, defaultValue = "1") Integer projectAscription) {
-        return ApiResult.success(pmWorkContentService.projectQuery(startDate, endDate, projectName, projectAscription, reportId));
+        return ApiResult.success(pmWorkContentService.projectQuery(startDate, endDate, projectName, projectAscription));
     }
 
     /**

+ 32 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/PmProjectService.java

@@ -3,7 +3,11 @@ package com.usky.iot.service;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.iot.domain.PmProject;
 import com.usky.common.mybatis.core.CrudService;
+import com.usky.iot.service.vo.PmUsersProjectWorkTimeVO;
+import com.usky.system.domain.SysUser;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
 
@@ -31,7 +35,11 @@ public interface PmProjectService extends CrudService<PmProject> {
      */
     void delProject(Integer projectId);
 
-
+    /**
+     * 查询当前租户所有项目
+     *
+     * @return
+     */
     List<PmProject> queryProject();
 
     /**
@@ -84,5 +92,28 @@ public interface PmProjectService extends CrudService<PmProject> {
      */
     List<Map<String, Object>> userOrProject(Integer identifying);
 
+    /**
+     * 退出项目
+     *
+     * @param projectId
+     */
     void exitProject(Integer projectId);
+
+    /**
+     * 项目概览-项目工时统计
+     *
+     * @param projectId
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    List<Map<LocalDate, BigDecimal>> projectWorkTime(Integer projectId, String startDate, String endDate);
+
+    /**
+     * 项目概览-人员项目工时统计
+     *
+     * @param projectId
+     * @return
+     */
+    PmUsersProjectWorkTimeVO usersProjectWorkTime(Integer projectId);
 }

+ 7 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/PmWorkContentService.java

@@ -36,7 +36,7 @@ public interface PmWorkContentService extends CrudService<PmWorkContent> {
      * @param projectAscription 查询标识(1:我负责的;2:我收到,3:我发出的)
      * @return
      */
-    List<PmWorkContent> projectQuery(String startDate, String endDate, String projectName, Integer projectAscription, Integer reportId);
+    List<PmWorkContent> projectQuery(String startDate, String endDate, String projectName, Integer projectAscription);
 
     /**
      * 报告记录
@@ -49,6 +49,12 @@ public interface PmWorkContentService extends CrudService<PmWorkContent> {
      */
     List<PmWorkReport> workReportQuery(String startDate, String endDate, String projectName, Integer projectAscription, Integer reportId);
 
+    /**
+     * 获取用户信息
+     *
+     * @param userIds
+     * @return
+     */
     List<SysUser> nickNames(List<Long> userIds);
 
     List<SysUser> allNickName();

+ 24 - 29
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/DingTalkAndMessage.java

@@ -124,33 +124,29 @@ public class DingTalkAndMessage {
         if (mceMbuser != null) {
             String dingId = mceMbuser.getDingTalkId();
             if (StringUtils.isNotBlank(dingId)) {
-                return mceMbuser.getDingTalkId();
+                return dingId;
             }
-        }
-        LambdaQueryWrapper<SysUser> phoneQuery = Wrappers.lambdaQuery();
-        phoneQuery.select(SysUser::getPhonenumber, SysUser::getUserName)
-                .eq(SysUser::getUserId, userId);
-        SysUser user = sysUserMapper.selectOne(phoneQuery);
-        String mobile = user.getPhonenumber();
-        try {
-            String accessToken = getDingTalkToken();
-            DingTalkClient client = new DefaultDingTalkClient(dingTalkConstant.DING_TALK_USERID_URL);
-            OapiV2UserGetbymobileRequest req = new OapiV2UserGetbymobileRequest();
-            req.setMobile(mobile);
-            OapiV2UserGetbymobileResponse rsp = client.execute(req, accessToken);
-            ObjectMapper objectMapper = new ObjectMapper();
-            JsonNode rootNode = objectMapper.readTree(rsp.getBody());
-            JsonNode resultNode = rootNode.get("result");
-            dingTalkId = resultNode.get("userid").asText();
-        } catch (Exception e) {
-            log.error("获取钉钉用户ID失败", e);
-        }
-        if (mceMbuser != null) {
-            mceMbuser.setDingTalkId(dingTalkId);
-            mceMbuser.setUpdateBy(SecurityUtils.getUsername());
-            mceMbuser.setUpdateTime(LocalDateTime.now());
-            mceMbuserMapper.update(mceMbuser, dingTalkQuery);
         } else {
+            LambdaQueryWrapper<SysUser> phoneQuery = Wrappers.lambdaQuery();
+            phoneQuery.select(SysUser::getPhonenumber, SysUser::getUserName)
+                    .eq(SysUser::getUserId, userId);
+            SysUser user = sysUserMapper.selectOne(phoneQuery);
+            String mobile = user.getPhonenumber();
+            try {
+                String accessToken = getDingTalkToken();
+                DingTalkClient client = new DefaultDingTalkClient(dingTalkConstant.DING_TALK_USERID_URL);
+                OapiV2UserGetbymobileRequest req = new OapiV2UserGetbymobileRequest();
+                req.setMobile(mobile);
+                OapiV2UserGetbymobileResponse rsp = client.execute(req, accessToken);
+                ObjectMapper objectMapper = new ObjectMapper();
+                JsonNode rootNode = objectMapper.readTree(rsp.getBody());
+                JsonNode resultNode = rootNode.get("result");
+                dingTalkId = resultNode.get("userid").asText();
+            } catch (Exception e) {
+                log.error("获取userid:userId 的钉钉ID失败", e);
+            }
+
+            // 钉钉userid存入注册表
             MceMbuser mbuser = new MceMbuser();
             mbuser.setDingTalkId(dingTalkId);
             mbuser.setPhone(mobile);
@@ -165,10 +161,10 @@ public class DingTalkAndMessage {
     @Async("asyncServiceExecutor")// 异步发送
     public void sendDingTalkDailyReport(PmWorkReport workReport, List<PmWorkContent> workContents) {
         String userName = workReport.getCreateBy();
-        try {
         log.info(userName + "的工作报告开始发送钉钉-----------------------------------");
-        String ccToStr = workReport.getCcTo();
-        List<String> ccTo = new ArrayList<>();
+        try {
+            String ccToStr = workReport.getCcTo();
+            List<String> ccTo = new ArrayList<>();
             if (StringUtils.isNotBlank(ccToStr)) {
                 String[] items = ccToStr.split(",");
                 List<Long> userIds = new ArrayList<>();
@@ -251,7 +247,6 @@ public class DingTalkAndMessage {
         } catch (Exception e) {
             log.error("钉钉报告发送消息时发生异常", e);
         }
-
         log.info(userName + "的工作报告发送钉钉结束-----------------------------------");
     }
 

+ 128 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmProjectServiceImpl.java

@@ -9,15 +9,22 @@ import com.usky.common.core.exception.BusinessException;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.iot.domain.PmProject;
 import com.usky.iot.domain.PmWorkContent;
+import com.usky.iot.domain.PmWorkReport;
 import com.usky.iot.mapper.PmProjectMapper;
 import com.usky.iot.mapper.PmWorkContentMapper;
+import com.usky.iot.mapper.PmWorkReportMapper;
 import com.usky.iot.mapper.SysUserMapper;
 import com.usky.iot.service.PmProjectService;
 import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.iot.service.PmWorkContentService;
+import com.usky.iot.service.vo.PmUsersProjectWorkTimeVO;
 import com.usky.system.domain.SysUser;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -42,6 +49,12 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
     @Autowired
     private PmProjectMapper pmProjectMapper;
 
+    @Autowired
+    private PmWorkReportMapper pmWorkReportMapper;
+
+    @Autowired
+    private PmWorkContentService pmWorkContentService;
+
     @Override
     public void addProject(PmProject project) {
         if (Objects.isNull(project.getProjectWorkload())) {
@@ -133,7 +146,7 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
         IPage<PmProject> page = new Page<>(pageNum, pageSize);
         LambdaQueryWrapper<PmProject> lambdaQuery = Wrappers.lambdaQuery();
         lambdaQuery.eq(PmProject::getTenantId, SecurityUtils.getTenantId()).eq(PmProject::getDelFlag, 0);
-        if (projectId != null && projectId!= 0){
+        if (projectId != null && projectId != 0) {
             lambdaQuery.eq(PmProject::getId, projectId);
             page = this.page(page, lambdaQuery);
             return new CommonPage<>(page.getRecords(), page.getTotal(), pageSize, pageNum);
@@ -157,6 +170,35 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
             lambdaQuery.eq(PmProject::getProjectStatus, projectStatus);
         }
         lambdaQuery.orderByDesc(PmProject::getCreateTime);
+
+        // 替换创建人和更新人名字(username→nickname)
+        LambdaQueryWrapper<SysUser> query = Wrappers.lambdaQuery();
+        query.select(SysUser::getUserName, SysUser::getNickName)
+                .eq(SysUser::getTenantId, SecurityUtils.getTenantId())
+                .eq(SysUser::getDelFlag, 0)
+                .eq(SysUser::getStatus, "0");
+        List<SysUser> sysUsers = sysUserMapper.selectList(query);
+
+        Map<String, String> userNameToNickName = new HashMap<>();
+        for (SysUser sysUser : sysUsers) {
+            if (sysUser != null && sysUser.getUserName() != null) {
+                userNameToNickName.put(sysUser.getUserName(), sysUser.getNickName());
+            }
+        }
+
+        page.getRecords().forEach(project -> {
+            if (project != null) {
+                String createBy = project.getCreateBy();
+                String updateBy = project.getUpdateBy();
+                if (createBy != null) {
+                    project.setCreateBy(userNameToNickName.getOrDefault(createBy, createBy));
+                }
+                if (updateBy != null) {
+                    project.setUpdateBy(userNameToNickName.getOrDefault(updateBy, updateBy));
+                }
+            }
+        });
+
         page = this.page(page, lambdaQuery);
         if (page.getRecords() == null || page.getRecords().isEmpty()) {
             return new CommonPage<>(Collections.emptyList(), 0, pageSize, pageNum);
@@ -299,6 +341,11 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
         return returnList;
     }
 
+    /**
+     * 退出项目
+     *
+     * @param projectId
+     */
     @Override
     public void exitProject(Integer projectId) {
         Long userId = SecurityUtils.getUserId();
@@ -312,7 +359,87 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
         pmProjectMapper.updateById(project);
     }
 
+    /**
+     * 查询项目工时统计
+     *
+     * @param projectId
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    @Override
+    public List<Map<LocalDate, BigDecimal>> projectWorkTime(Integer projectId, String startDate, String endDate) {
+        List<Map<LocalDate, BigDecimal>> workTimeCount = new ArrayList<>();
+        if (projectId != null) {
+            LambdaQueryWrapper<PmWorkContent> wrapper = Wrappers.lambdaQuery();
+            wrapper.select(PmWorkContent::getReportId, PmWorkContent::getSubmitterId, PmWorkContent::getWorkTime)
+                    .eq(PmWorkContent::getProjectId, projectId)
+                    .eq(PmWorkContent::getTenantId, SecurityUtils.getTenantId());
+
+            if (StringUtils.isNotBlank(startDate) || StringUtils.isNotBlank(endDate)) {
+                LambdaQueryWrapper<PmWorkReport> wrapper2 = Wrappers.lambdaQuery();
+                wrapper2.select(PmWorkReport::getId, PmWorkReport::getReportDate)
+                        .eq(PmWorkReport::getTenantId, SecurityUtils.getTenantId())
+                        .between(PmWorkReport::getReportDate, startDate, endDate);
+                List<PmWorkReport> pmWorkReports = pmWorkReportMapper.selectList(wrapper2);
 
+                List<Integer> reportIds = pmWorkReports.stream().map(PmWorkReport::getId).collect(Collectors.toList());
+                if (reportIds.isEmpty()) {
+                    return workTimeCount;
+                }
+                wrapper.in(PmWorkContent::getReportId, reportIds);
+                List<PmWorkContent> pmWorkContents = pmWorkContentMapper.selectList(wrapper);
 
+                for (PmWorkContent pmWorkContent : pmWorkContents) {
+                    Integer reportId = pmWorkContent.getReportId();
+                    for (PmWorkReport pmWorkReport : pmWorkReports) {
+                        if (reportId.equals(pmWorkReport.getId())) {
+                            LocalDate reportDate = pmWorkReport.getReportDate();
+                            BigDecimal workTime = pmWorkContent.getWorkTime();
+                            Map<LocalDate, BigDecimal> map = new HashMap<>();
+                            map.put(reportDate, workTime);
+                            workTimeCount.add(map);
+                        }
+                    }
+                }
+            } else {
+                throw new BusinessException("查询项目工时统计时间范围不能为空!");
+            }
+        } else {
+            throw new BusinessException("查询项目工时项目id不能为空!");
+        }
+        return workTimeCount;
+    }
+
+    /**
+     * @description: 查询人员项目工时统计
+     * @author: fu
+     * @date: 2024/8/12 15:44
+     * @param: [projectId]
+     * @return: java.util.List<java.util.Map < java.lang.String, java.math.BigDecimal>>
+     **/
+    @Override
+    public PmUsersProjectWorkTimeVO usersProjectWorkTime(Integer projectId) {
+        PmUsersProjectWorkTimeVO workTimeCount = new PmUsersProjectWorkTimeVO();
+        if (projectId != null) {
+            List<String> users = new ArrayList<>();
+            List<BigDecimal> workTime = new ArrayList<>();
+
+            LambdaQueryWrapper<PmWorkContent> wrapper = Wrappers.lambdaQuery();
+            wrapper.select(PmWorkContent::getSubmitterId, PmWorkContent::getWorkTime)
+                    .eq(PmWorkContent::getProjectId, projectId)
+                    .eq(PmWorkContent::getTenantId, SecurityUtils.getTenantId());
+            List<PmWorkContent> pmWorkContents = pmWorkContentMapper.selectList(wrapper);
+            List<Long> userIds = pmWorkContents.stream().map(PmWorkContent::getSubmitterId).distinct().collect(Collectors.toList());
+            List<SysUser> sysUsers = pmWorkContentService.nickNames(userIds);
+            for (SysUser sysUser : sysUsers) {
+                users.add(sysUser.getNickName());
+                workTime.add(pmWorkContents.stream().filter(pmWorkContent -> pmWorkContent.getSubmitterId().equals(sysUser.getUserId())).map(PmWorkContent::getWorkTime).reduce(BigDecimal.ZERO, BigDecimal::add));
+                workTimeCount.setUsers(users);
+                workTimeCount.setWorkTime(workTime);
+            }
+        }
+        return workTimeCount;
+    }
 
 }

+ 159 - 92
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmWorkContentServiceImpl.java

@@ -46,9 +46,6 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
     @Autowired
     private SysUserMapper sysUserMapper;
 
-    @Autowired
-    private PmProjectService pmProjectService;
-
     @Autowired
     private PmReceiveMapper pmReceiveMapper;
 
@@ -66,7 +63,7 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
     }
 
     /**
-     * @description: 查询报告时间段
+     * @description: 查询报告id时间段
      * @author: fu
      * @date: 2024/8/7 17:48
      * @param: [startDate, endDate]
@@ -80,8 +77,15 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
                 .eq(PmWorkReport::getTenantId, tenantId)
                 .eq(PmWorkReport::getDeptId, deptId);
         if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
-            LocalDate start = LocalDate.parse(startDate);
-            LocalDate end = LocalDate.parse(endDate);
+            LocalDate start = null;
+            LocalDate end = null;
+            try {
+                start = LocalDate.parse(startDate);
+                end = LocalDate.parse(endDate);
+            } catch (Exception e) {
+                log.error("时间格式错误:", e);
+                throw new BusinessException("时间格有误,请重新输入");
+            }
             reportQuery.between(PmWorkReport::getReportDate, start, end);
         }
         List<PmWorkReport> reportIds = pmWorkReportMapper.selectList(reportQuery);
@@ -99,13 +103,16 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
      * @param: []
      * @return: java.util.List<java.lang.Integer>
      **/
-    private List<Integer> receive() {
+    private List<Integer> receive(LocalDate startDate, LocalDate endDate) {
         Long userId = SecurityUtils.getUserId();
         Integer tenantId = SecurityUtils.getTenantId();
         LambdaQueryWrapper<PmWorkReport> reportQuery = Wrappers.lambdaQuery();
         reportQuery.select(PmWorkReport::getId)
                 .eq(PmWorkReport::getTenantId, tenantId)
                 .apply("FIND_IN_SET(" + userId + ", cc_to) > 0");
+        if (startDate != null && endDate != null) {
+            reportQuery.between(PmWorkReport::getReportDate, startDate, endDate);
+        }
         List<PmWorkReport> reportIds = pmWorkReportMapper.selectList(reportQuery);
         return reportIds.stream().map(PmWorkReport::getId).collect(Collectors.toList());
     }
@@ -117,13 +124,16 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
      * @param: []
      * @return: java.util.List<java.lang.Integer>
      **/
-    private List<Integer> sentOut() {
-        Long usernid = SecurityUtils.getUserId();
+    private List<Integer> sentOut(LocalDate startDate, LocalDate endDate) {
+        Long userid = SecurityUtils.getUserId();
         Integer tenantId = SecurityUtils.getTenantId();
         LambdaQueryWrapper<PmWorkReport> reportQuery = Wrappers.lambdaQuery();
         reportQuery.select(PmWorkReport::getId)
                 .eq(PmWorkReport::getTenantId, tenantId)
-                .eq(PmWorkReport::getSubmitterId, usernid);
+                .eq(PmWorkReport::getSubmitterId, userid);
+        if (startDate != null && endDate != null) {
+            reportQuery.between(PmWorkReport::getReportDate, startDate, endDate);
+        }
         List<PmWorkReport> reportIds = pmWorkReportMapper.selectList(reportQuery);
         List<Integer> rIds = new ArrayList<>();
         for (PmWorkReport report : reportIds) {
@@ -183,22 +193,46 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
      * @return: java.util.List<com.usky.iot.domain.PmProject>
      **/
     @Override
-    public List<PmWorkContent> projectQuery(String startDate, String endDate, String projectName, Integer projectAscription, Integer reportId) {
-        if (reportId != null && reportId != 0) {
-            LambdaQueryWrapper<PmWorkContent> contentLambdaQuery = Wrappers.lambdaQuery();
-            contentLambdaQuery.select(PmWorkContent::getProjectId, PmWorkContent::getProjectName)
-                    .eq(PmWorkContent::getReportId, reportId)
-                    .groupBy(PmWorkContent::getProjectId, PmWorkContent::getProjectName);
-            List<PmWorkContent> pmWorkContentList = this.list(contentLambdaQuery);
-            return pmWorkContentList;
+    public List<PmWorkContent> projectQuery(String startDate, String endDate, String projectName, Integer projectAscription) {
+        LocalDateTime startDateTime = null;
+        LocalDateTime endDateTime = null;
+        LocalDate start = null;
+        LocalDate end = null;
+        if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
+            DateTimeFormatter formatter = null;
+            try {
+                formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            } catch (Exception e) {
+                throw new BusinessException("时间传参格式不正确请重试");
+            }
+            start = LocalDate.parse(startDate, formatter);
+            end = LocalDate.parse(endDate, formatter);
+            startDateTime = start.atStartOfDay();
+            endDateTime = end.atTime(23, 59, 59);
         }
+
+        List<PmWorkContent> workContentList = new ArrayList<>();
         List<Integer> reportIds = new ArrayList<>();
         if (StringUtils.isBlank(startDate) && StringUtils.isBlank(endDate)) {
             reportIds = reportDateQuery(startDate, endDate);
         }
-        List<Integer> receiveList = receive();
-        List<Integer> sentOutList = sentOut();
+
+        if (projectAscription != 1 && projectAscription != 2 && projectAscription != 3) {
+            throw new BusinessException("查询标识有误");
+        }
+        List<Integer> receiveList = receive(start, end);
+        if (projectAscription == 2 && receiveList.isEmpty()) {
+            return workContentList;
+        }
+        List<Integer> sentOutList = sentOut(start, end);
+        if (projectAscription == 3 && sentOutList.isEmpty()) {
+            return workContentList;
+        }
         List<Integer> headProjects = head();
+        if (projectAscription == 1 && headProjects.isEmpty()) {
+            return workContentList;
+        }
+
         LambdaQueryWrapper<PmWorkContent> contentLambdaQuery = Wrappers.lambdaQuery();
         contentLambdaQuery.select(PmWorkContent::getProjectId, PmWorkContent::getProjectName);
         if (!reportIds.isEmpty()) {
@@ -208,29 +242,44 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
             contentLambdaQuery.like(PmWorkContent::getProjectName, projectName);
         }
         if (projectAscription == 1) {
-            if (headProjects.isEmpty()) {
-                return new ArrayList<PmWorkContent>();
-            }
-            contentLambdaQuery.in(PmWorkContent::getProjectId, headProjects);
+            contentLambdaQuery.in(PmWorkContent::getProjectId, headProjects)
+                    .between(PmWorkContent::getCreateTime, startDateTime, endDateTime);
         } else if (projectAscription == 2) {
-            if (receiveList.isEmpty()) {
-                return new ArrayList<PmWorkContent>();
-            }
             contentLambdaQuery.in(PmWorkContent::getReportId, receiveList);
-        } else if (projectAscription == 3) {
-            if (sentOutList.isEmpty()) {
-                return new ArrayList<PmWorkContent>();
-            }
+        } else {
             contentLambdaQuery.in(PmWorkContent::getReportId, sentOutList);
         }
-        contentLambdaQuery.groupBy(PmWorkContent::getProjectId, PmWorkContent::getProjectName);
-        List<PmWorkContent> pmWorkContentList = this.list(contentLambdaQuery);
-        return pmWorkContentList;
+        contentLambdaQuery.groupBy(PmWorkContent::getProjectId)
+                .groupBy(PmWorkContent::getProjectName);
+        workContentList = this.list(contentLambdaQuery);
+
+        return workContentList;
     }
 
+    /**
+     * @description: 报告记录
+     * @author: fu
+     * @date: 2024/8/7 17:14
+     * @param: [projectIds]
+     * @return: java.util.List<com.usky.iot.domain.PmProject>
+     **/
     @Override
     public List<PmWorkReport> workReportQuery(String startDate, String endDate, String projectName, Integer projectAscription, Integer reportId) {
+
+        LocalDate start = null;
+        LocalDate end = null;
+        LocalDateTime startDateTime = null;
+        LocalDateTime endDateTime = null;
+        if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            start = LocalDate.parse(startDate, formatter);
+            end = LocalDate.parse(endDate, formatter);
+            startDateTime = start.atStartOfDay();
+            endDateTime = end.atTime(23, 59, 59);
+        }
+
         List<PmWorkReport> reportList = new ArrayList<>();
+        List<PmWorkReport> reportList2 = new ArrayList<>();
         List<PmWorkContent> pmWorkContentList = new ArrayList<>();
         List<Long> userIds = new ArrayList<>();
         if (reportId != null && reportId != 0) {
@@ -239,6 +288,9 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
                             PmWorkReport::getCreateTime, PmWorkReport::getReportDate)
                     .eq(PmWorkReport::getId, reportId);
             PmWorkReport report = pmWorkReportMapper.selectOne(reportQuery);
+            if (report == null) {
+                throw new BusinessException("报告已经不存在了哟");
+            }
             LambdaQueryWrapper<PmWorkContent> contentQuery = Wrappers.lambdaQuery();
             contentQuery.select(PmWorkContent::getWorkContent, PmWorkContent::getWorkTime, PmWorkContent::getProjectName)
                     .eq(PmWorkContent::getReportId, reportId);
@@ -249,24 +301,32 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
                 userIds.add(c.getSubmitterId());
             }
         } else {
-            List<Integer> receiveList2 = receive();
-            List<Integer> sentOutList = sentOut();
+            if (projectAscription != 1 && projectAscription != 2 && projectAscription != 3) {
+                throw new BusinessException("查询标识有误");
+            }
+            List<Integer> receiveList2 = receive(start, end);
+            if (projectAscription == 2 && receiveList2.isEmpty()) {
+                return reportList2;
+            }
+            List<Integer> sentOutList = sentOut(start, end);
+            if (projectAscription == 3 && sentOutList.isEmpty()) {
+                return reportList2;
+            }
             List<Integer> headProjects = head();
+            if (projectAscription == 1 && headProjects.isEmpty()) {
+                return reportList2;
+            }
             LambdaQueryWrapper<PmWorkContent> contentLambdaQuery = Wrappers.lambdaQuery();
             contentLambdaQuery.select(PmWorkContent::getReportId, PmWorkContent::getWorkContent, PmWorkContent::getWorkTime, PmWorkContent::getProjectName);
-            if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
-                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-                LocalDate start = LocalDate.parse(startDate, formatter);
-                LocalDate end = LocalDate.parse(endDate, formatter);
-                LocalDateTime startDateTime = start.atStartOfDay();
-                LocalDateTime endDateTime = end.atTime(23, 59, 59);
+
+            if (startDateTime != null) {
                 contentLambdaQuery.between(PmWorkContent::getCreateTime, startDateTime, endDateTime);
             }
             if (projectAscription == 1) {
                 contentLambdaQuery.in(PmWorkContent::getProjectId, headProjects);
             } else if (projectAscription == 2) {
                 contentLambdaQuery.in(PmWorkContent::getReportId, receiveList2);
-            } else if (projectAscription == 3) {
+            } else {
                 contentLambdaQuery.in(PmWorkContent::getReportId, sentOutList);
             }
             if (StringUtils.isNotBlank(projectName)) {
@@ -377,21 +437,53 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         return sysUserMapper.selectList(usersQuery);
     }
 
+    /**
+     * @description: 报告记录分页
+     * @author: fu
+     * @date: 2024/8/7 17:28
+     * @param: [startDate, endDate, projectName, projectAscription]
+     * @return: java.util.List<com.usky.system.domain.PmWorkContent>
+     **/
     @Override
     public CommonPage<PmWorkReport> reportPage(Integer projectAscription, Integer pageNum, Integer pageSize, Integer reportId, String startDate, String endDate, Integer projectId) {
+        LocalDateTime startDateTime = null;
+        LocalDateTime endDateTime = null;
+        LocalDate start = null;
+        LocalDate end = null;
+        if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
+            DateTimeFormatter formatter = null;
+            try {
+                formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            } catch (Exception e) {
+                throw new BusinessException("时间传参格式不正确请重试");
+            }
+            start = LocalDate.parse(startDate, formatter);
+            end = LocalDate.parse(endDate, formatter);
+            startDateTime = start.atStartOfDay();
+            endDateTime = end.atTime(23, 59, 59);
+        }
+
         CommonPage<PmWorkReport> returnPage = new CommonPage<>(new ArrayList<>(), 0, pageSize, pageNum);
         Integer tenantId = SecurityUtils.getTenantId();
         Long userId = SecurityUtils.getUserId();
-        String userName = SecurityUtils.getUsername();
         Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
+
+        if (projectAscription != 1 && projectAscription != 2 && projectAscription != 3) {
+            throw new BusinessException("查询标识有误");
+        }
         List<Integer> headProjects = head();
         if (projectAscription == 1 && headProjects.isEmpty()) {
             return returnPage;
         }
-        List<Integer> receiveList2 = receive();
+        List<Integer> receiveList2 = receive(start, end);
         if (projectAscription == 2 && receiveList2.isEmpty()) {
             return returnPage;
         }
+        List<Integer> sentOutList = sentOut(start, end);
+        if (projectAscription == 3 && sentOutList.isEmpty()) {
+            return returnPage;
+        }
+
         List<Long> userIds = new ArrayList<>();
         LambdaQueryWrapper<PmWorkContent> contentLambdaQuery = Wrappers.lambdaQuery();
         contentLambdaQuery.select(PmWorkContent::getReportId, PmWorkContent::getWorkContent, PmWorkContent::getWorkTime, PmWorkContent::getProjectName);
@@ -399,17 +491,15 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
             contentLambdaQuery.eq(PmWorkContent::getReportId, reportId);
         } else {
             contentLambdaQuery.eq(PmWorkContent::getTenantId, tenantId).eq(PmWorkContent::getDeptId, deptId);
+
             if (projectId != null && projectId != 0) {
                 contentLambdaQuery.eq(PmWorkContent::getProjectId, projectId);
             }
-            if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
-                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-                LocalDate start = LocalDate.parse(startDate, formatter);
-                LocalDate end = LocalDate.parse(endDate, formatter);
-                LocalDateTime startDateTime = start.atStartOfDay();
-                LocalDateTime endDateTime = end.atTime(23, 59, 59);
+
+            if (startDateTime != null) {
                 contentLambdaQuery.between(PmWorkContent::getCreateTime, startDateTime, endDateTime);
             }
+
             switch (projectAscription) {
                 case 1:
                     contentLambdaQuery.in(PmWorkContent::getReportId, headProjects);
@@ -418,23 +508,23 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
                     contentLambdaQuery.in(PmWorkContent::getReportId, receiveList2);
                     break;
                 case 3:
-                    contentLambdaQuery.eq(PmWorkContent::getCreateBy, userName);
+                    contentLambdaQuery.in(PmWorkContent::getReportId, sentOutList);
                     break;
             }
         }
         List<PmWorkContent> pmWorkContentList = pmWorkContentMapper.selectList(contentLambdaQuery);
-        Set<Integer> reportIds = pmWorkContentList.stream().map(PmWorkContent::getReportId).collect(Collectors.toSet());
-        if (reportIds.isEmpty()) {
+
+        if (receiveList2.isEmpty()) {
             return returnPage;
         }
 
         LambdaQueryWrapper<PmWorkReport> reportQuery = Wrappers.lambdaQuery();
         reportQuery.select(PmWorkReport::getId, PmWorkReport::getCoordinateWork, PmWorkReport::getTomorrowPlan, PmWorkReport::getCcTo, PmWorkReport::getSubmitterId,
-                PmWorkReport::getCreateTime, PmWorkReport::getReportDate);
+                PmWorkReport::getSubmitDate, PmWorkReport::getReportDate, PmWorkReport::getCreateBy);
         if (reportId != null && reportId != 0) {
             reportQuery.eq(PmWorkReport::getId, reportId);
         } else {
-            reportQuery.in(PmWorkReport::getId, reportIds)
+            reportQuery.in(PmWorkReport::getId, receiveList2)
                     .orderByDesc(PmWorkReport::getCreateTime);
         }
         reportQuery.eq(PmWorkReport::getReportStatus, 1);
@@ -447,30 +537,15 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
 
         LambdaQueryWrapper<PmReceive> statusQuery = Wrappers.lambdaQuery();
         statusQuery.select(PmReceive::getReportId, PmReceive::getReadFlag)
-                .eq(PmReceive::getReceiverId, userId)
-                .eq(PmReceive::getTenantId, tenantId);
+                .eq(PmReceive::getReceiverId, userId);
         if (reportId != null && reportId != 0) {
             statusQuery.eq(PmReceive::getReportId, reportId);
-        } else {
-            statusQuery.in(PmReceive::getReportId, reportIds);
+        } else if (!receiveList2.isEmpty()) {
+            statusQuery.in(PmReceive::getReportId, receiveList2);
         }
         List<PmReceive> receiveList = pmReceiveMapper.selectList(statusQuery);
-/*        Map<Integer, Integer> reportReadFlags = receiveList.stream()
-                .collect(Collectors.toMap(PmReceive::getReportId, PmReceive::getReadFlag));
-        reportList.forEach(report -> {
-            List<PmWorkContent> contents = pmWorkContentList.stream()
-                    .filter(content -> content.getReportId().equals(report.getId()))
-                    .collect(Collectors.toList());
-            report.setWorkContents(contents);
-            userIds.add(report.getSubmitterId());
-            if (reportReadFlags.containsKey(report.getId())) {
-                report.setReadFlag(reportReadFlags.get(report.getId()));
-            }
-        });*/
-
 
         Map<Integer, Integer> reportReadFlags = new HashMap<>();
-
         for (PmReceive pmReceive : receiveList) {
             Integer reportId2 = pmReceive.getReportId();
             reportReadFlags.put(reportId2, pmReceive.getReadFlag());
@@ -483,22 +558,21 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
             report.setWorkContents(contents);
             userIds.add(report.getSubmitterId());
 
-            report.setReadFlag(reportReadFlags.getOrDefault(report.getId(), 0));
-        }
+            Integer readFlagValue = reportReadFlags.get(report.getId());
+            report.setReadFlag(readFlagValue);
 
-        if (!userIds.isEmpty()) {
-            List<SysUser> nickNames = nickNames(userIds);
-            Map<Long, String> userNicknameMap = nickNames.stream()
-                    .collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName));
-            reportList.forEach(report -> {
+            // 创建人名字替换
+            if (!userIds.isEmpty()) {
+                List<SysUser> nickNames = nickNames(userIds);
+                Map<Long, String> userNicknameMap = nickNames.stream()
+                        .collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName));
                 report.setCreateBy(userNicknameMap.get(report.getSubmitterId()));
-            });
+            }
         }
 
-        // 已读未读查询
-        List<Integer> reportIdList = new ArrayList<>(reportIds);
-        List<PmReceive> receives = receives(reportIdList);
 
+        // 已读未读查询
+        List<PmReceive> receives = receives(receiveList2);
         List<Long> uId = new ArrayList<>();
         for (PmReceive pmReceive : receives) {
             Long receiverId = pmReceive.getReceiverId();
@@ -651,7 +725,6 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
     public List<Object> workHourStatistic(Long userId, Integer projectId, Integer filter, String startDate, String endDate, Integer workerOrProject) {
         List<ProjectWorkTimeVO> projectWorkTime = new ArrayList<>();
         List<UserWorkTimeVO> userWorkTimeVO = new ArrayList<>();
-        Integer tenantId = SecurityUtils.getTenantId();
         List<Object> returnList = new ArrayList<>();
         if (StringUtils.isBlank(startDate) && StringUtils.isBlank(endDate)) {
             throw new BusinessException("请设置查询时间范围!");
@@ -700,9 +773,6 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         }
         List<WorkHoursStatisticsVO> userAndProjectD = userAndProject;
 
-        // userAndProject = baseMapper.workHoursStatistics(start, end, userId, tenantId);
-        // Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
-        // List<WorkHoursStatisticsVO> userAndProjectD = baseMapper.statisticsDept(start, end, userId, tenantId, deptId);
         if (workerOrProject != 1) {
             returnList.add(nickName);
             // 重组返回数据结构
@@ -783,9 +853,6 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
             start = LocalDate.parse(startDate);
             end = LocalDate.parse(endDate);
         }
-//        else {
-//            throw new BusinessException("导出数据过多请输入正确时间进行筛选");
-//        }
         return pmWorkContentMapper.workHourStatisticExport(userId, projectId, start, end, tenantId);
     }
 

+ 27 - 7
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmWorkReportServiceImpl.java

@@ -206,17 +206,35 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
         String userName = SecurityUtils.getUsername();
         Long userId = SecurityUtils.getUserId();
         Integer tenantId = SecurityUtils.getTenantId();
-        BigDecimal totalWorkTime = BigDecimal.ZERO; // 计算总工时
+        BigDecimal totalWorkTime = BigDecimal.ZERO;
         LocalDateTime dateTime = LocalDateTime.now();
         LocalDateTime timingTime = pmWorkReport.getTimingTime();
         LocalDateTime currentTimePlusMinutes = dateTime.plusMinutes(5);
         String ccTo = pmWorkReport.getCcTo();
         Integer rid = pmWorkReport.getId();
 
-        if (pmWorkReport.getWorkContents() == null) {
+        List<PmWorkContent> workContents = pmWorkReport.getWorkContents();
+        if (workContents == null) {
             throw new BusinessException("报告内容不能为空,请检查!");
+        } else{
+           for (PmWorkContent workContent : workContents){
+               BigDecimal workTime = workContent.getWorkTime();
+               // 单个工时大于零
+               if (workTime == null){
+                   throw new BusinessException("工时不能为空,请检查!");
+               }
+               if (workTime.compareTo(BigDecimal.ZERO) <= 0){
+                   throw new BusinessException("工时必须大于零!");
+               }
+
+               String workContent1 = workContent.getWorkContent();
+               //工作内容不允许为空或空字符串
+               if (StringUtils.isBlank(workContent1)){
+                   throw new BusinessException("工作内容不能为空,请检查!");
+               }
+           }
         }
-        Set<Integer> projectIds2 = new HashSet<>();
+            Set<Integer> projectIds2 = new HashSet<>();
         for (PmWorkContent workContent : pmWorkReport.getWorkContents()) {
             if (!projectIds2.add(workContent.getProjectId())) {
                 throw new BusinessException("存在重复项目,请检查!");
@@ -305,6 +323,12 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
                 }
                 // 是否同步钉钉
                 if (pmWorkReport.getSendDingTalk().equals(1)) {
+
+                    String dingTalkUserId = dingTalkAndMessage.getDingTalkUserId(userId);
+                    if (StringUtils.isBlank(dingTalkUserId)){
+                        throw new BusinessException("注册手机号与钉钉手机号不一致,无法抄送钉钉");
+                    }
+
                     dingTalkAndMessage.sendDingTalkDailyReport(newReport, pmWorkContents);
                 }
 
@@ -360,10 +384,6 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
                 pmWorkContentMapper.insert(e);
                 contentsList.add(e);
             }
-            if (pmWorkReport.getSendDingTalk().equals(1) && pmWorkReport.getReportStatus().equals(1)) {
-                dingTalkAndMessage.sendDingTalkDailyReport(rp, contentsList);
-
-            }
             if (pmWorkReport.getIsRegularlySend() == 0) {
                 receiveMessages(ccTo, rid);
                 rp.setTimingTime(null);

+ 31 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/PmUsersProjectWorkTimeVO.java

@@ -0,0 +1,31 @@
+package com.usky.iot.service.vo;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author fu
+ * @date 2024/8/12
+ */
+public class PmUsersProjectWorkTimeVO {
+    // 用户
+    List<String> users;
+    // 工时
+    List<BigDecimal> workTime;
+
+    public List<String> getUsers() {
+        return users;
+    }
+
+    public void setUsers(List<String> users) {
+        this.users = users;
+    }
+
+    public List<BigDecimal> getWorkTime() {
+        return workTime;
+    }
+
+    public void setWorkTime(List<BigDecimal> workTime) {
+        this.workTime = workTime;
+    }
+}

+ 10 - 1
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingInfoServiceImpl.java

@@ -322,7 +322,16 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
 
             if(CollectionUtils.isNotEmpty(initiatorIdList)) {
                 queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingInfo::getRoomName, requestVO.getRoomName())
-                        .in(CollectionUtils.isNotEmpty(initiatorIdList), MeetingInfo::getInitiatorId, initiatorIdList)
+                        .in(MeetingInfo::getInitiatorId, initiatorIdList)
+                        .eq(null != requestVO.getMeetingStatus(), MeetingInfo::getMeetingStatus, requestVO.getMeetingStatus())
+                        .eq(null != requestVO.getApproveStatus(), MeetingInfo::getApproveStatus, requestVO.getApproveStatus())
+                        .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()), MeetingInfo::getStartDate, requestVO.getStartDate(), requestVO.getEndDate())
+                        .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()), MeetingInfo::getEndDate, requestVO.getStartDate(), requestVO.getEndDate())
+                        .eq(MeetingInfo::getTenantId, SecurityUtils.getTenantId())
+                        .orderByDesc(MeetingInfo::getMeetingId);
+            }else{
+                queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingInfo::getRoomName, requestVO.getRoomName())
+                        .in(MeetingInfo::getInitiatorId, "")
                         .eq(null != requestVO.getMeetingStatus(), MeetingInfo::getMeetingStatus, requestVO.getMeetingStatus())
                         .eq(null != requestVO.getApproveStatus(), MeetingInfo::getApproveStatus, requestVO.getApproveStatus())
                         .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()), MeetingInfo::getStartDate, requestVO.getStartDate(), requestVO.getEndDate())

+ 15 - 6
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingRoomServiceImpl.java

@@ -85,24 +85,33 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
         LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
 
         if (StringUtils.isNotBlank(requestVO.getFloorName())) {
-            String floorId = null;
+            List<String> floorId = new ArrayList<>();
             QueryWrapper<MeetingFloor> query = Wrappers.query();
-            query.select("floor_id").eq("floor_name", requestVO.getFloorName())
+            query.select("floor_id").like("floor_name", requestVO.getFloorName())
                     .eq("tenant_id", SecurityUtils.getTenantId());
             List<Map<String, Object>> map = dmFloorService.listMaps(query);
             if (CollectionUtils.isNotEmpty(map)) {
-                floorId = map.get(0).get("floor_id").toString();
+                for (int i = 0; i < map.size(); i++) {
+                    floorId.add(map.get(i).get("floor_id").toString());
+                }
             }
 
-            if(StringUtils.isNotBlank(floorId)){
+            if(CollectionUtils.isNotEmpty(floorId)){
                 queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingRoom::getRoomName, requestVO.getRoomName())
-                        .eq(StringUtils.isNotBlank(floorId), MeetingRoom::getFloorId, floorId)
+                        .in(MeetingRoom::getFloorId, floorId)
+                        .eq(null != requestVO.getStatus(), MeetingRoom::getStatus, requestVO.getStatus())
+                        .eq(null != requestVO.getRoomStatus(), MeetingRoom::getRoomStatus, requestVO.getRoomStatus())
+                        .eq(MeetingRoom::getTenantId, SecurityUtils.getTenantId())
+                        .orderByDesc(MeetingRoom::getRoomId);
+            }else{
+                queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingRoom::getRoomName, requestVO.getRoomName())
+                        .in(MeetingRoom::getFloorId, "")
                         .eq(null != requestVO.getStatus(), MeetingRoom::getStatus, requestVO.getStatus())
                         .eq(null != requestVO.getRoomStatus(), MeetingRoom::getRoomStatus, requestVO.getRoomStatus())
                         .eq(MeetingRoom::getTenantId, SecurityUtils.getTenantId())
                         .orderByDesc(MeetingRoom::getRoomId);
-
             }
+
         }else{
             queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingRoom::getRoomName, requestVO.getRoomName())
                     .eq(null != requestVO.getStatus(), MeetingRoom::getStatus, requestVO.getStatus())