Просмотр исходного кода

pms 瑞鹰日报 组织树搜索 等多条件搜索

zhangcl 2 дней назад
Родитель
Сommit
4029324e6b

+ 27 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreport/IotRyDailyReportController.java

@@ -37,10 +37,7 @@ import javax.validation.Valid;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
@@ -100,6 +97,32 @@ public class IotRyDailyReportController {
     @Operation(summary = "获得瑞鹰日报分页")
     @PreAuthorize("@ss.hasPermission('pms:iot-ry-daily-report:query')")
     public CommonResult<PageResult<IotRyDailyReportRespVO>> getIotRyDailyReportPage(@Valid IotRyDailyReportPageReqVO pageReqVO) {
+        // 根据查询参数筛选出 符合条件 的记录id 再传入 分页查询
+        Set<Long> projectIds = new HashSet<>();
+        Set<Long> taskIds = new HashSet<>();
+        if (StrUtil.isNotBlank(pageReqVO.getContractName())) {
+            IotProjectInfoPageReqVO reqVO = new IotProjectInfoPageReqVO();
+            reqVO.setContractName(pageReqVO.getContractName());
+            List<IotProjectInfoDO> projects = iotProjectInfoService.getIotProjectInfos(reqVO);
+            if (CollUtil.isNotEmpty(projects)) {
+                projects.forEach(project -> {
+                    projectIds.add(project.getId());
+                });
+                pageReqVO.setProjectIds(projectIds);
+            }
+        }
+        if (StrUtil.isNotBlank(pageReqVO.getTaskName())) {
+            IotProjectTaskPageReqVO reqVO = new IotProjectTaskPageReqVO();
+            reqVO.setSearchKey(pageReqVO.getTaskName());
+            List<IotProjectTaskDO> tasks = iotProjectTaskService.projectTasks(reqVO);
+            if (CollUtil.isNotEmpty(tasks)) {
+                tasks.forEach(task -> {
+                    taskIds.add(task.getId());
+                });
+                pageReqVO.setTaskIds(taskIds);
+            }
+        }
+
         PageResult<IotRyDailyReportDO> pageResult = iotRyDailyReportService.getIotRyDailyReportPage(pageReqVO);
 
         return success(new PageResult<>(buildRyDailyReports(pageResult.getList()), pageResult.getTotal()));

+ 18 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreport/vo/IotRyDailyReportPageReqVO.java

@@ -9,6 +9,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.Collection;
 
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
@@ -128,4 +129,21 @@ public class IotRyDailyReportPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
+    /**
+     * 扩展字段
+     */
+    @Schema(description = "项目/合同名称", example = "测试")
+    private String contractName;
+
+    @Schema(description = "任务标识", example = "#33 - 一厂")
+    private String taskName;
+
+    @Schema(description = "项目id集合", example = "[123,223]")
+    private Collection<Long> projectIds;
+
+    @Schema(description = "任务id集合", example = "[123,223]")
+    private Collection<Long> taskIds;
+
+    @Schema(description = "部门id集合", example = "[123,223]")
+    private Collection<Long> deptIds;
 }

+ 4 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotrydailyreport/IotRyDailyReportMapper.java

@@ -74,9 +74,12 @@ public interface IotRyDailyReportMapper extends BaseMapperX<IotRyDailyReportDO>
         LambdaQueryWrapperX<IotRyDailyReportDO> queryWrapper = new LambdaQueryWrapperX<IotRyDailyReportDO>();
         // 创建查询包装器
         queryWrapper
-                .eqIfPresent(IotRyDailyReportDO::getDeptId, reqVO.getDeptId())
+                // .eqIfPresent(IotRyDailyReportDO::getDeptId, reqVO.getDeptId())
+                .inIfPresent(IotRyDailyReportDO::getDeptId, reqVO.getDeptIds())
                 .eqIfPresent(IotRyDailyReportDO::getProjectId, reqVO.getProjectId())
+                .inIfPresent(IotRyDailyReportDO::getProjectId, reqVO.getProjectIds())
                 .eqIfPresent(IotRyDailyReportDO::getTaskId, reqVO.getTaskId())
+                .inIfPresent(IotRyDailyReportDO::getTaskId, reqVO.getTaskIds())
                 .eqIfPresent(IotRyDailyReportDO::getRelocationDays, reqVO.getRelocationDays())
                 .betweenIfPresent(IotRyDailyReportDO::getLatestWellDoneTime, reqVO.getLatestWellDoneTime())
                 .eqIfPresent(IotRyDailyReportDO::getCurrentDepth, reqVO.getCurrentDepth())

+ 18 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrydailyreport/IotRyDailyReportServiceImpl.java

@@ -18,6 +18,7 @@ import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotprojecttask.IotProjectTaskMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotrydailyreport.IotRyDailyReportMapper;
 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
+import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.dict.DictTypeService;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
@@ -52,6 +53,8 @@ public class IotRyDailyReportServiceImpl implements IotRyDailyReportService {
     private DictTypeService dictTypeService;
     @Resource
     private IotDeviceMapper iotDeviceMapper;
+    @Resource
+    private DeptService deptService;
 
     @Override
     public Long createIotRyDailyReport(IotRyDailyReportSaveReqVO createReqVO) {
@@ -196,6 +199,21 @@ public class IotRyDailyReportServiceImpl implements IotRyDailyReportService {
 
     @Override
     public PageResult<IotRyDailyReportDO> getIotRyDailyReportPage(IotRyDailyReportPageReqVO pageReqVO) {
+        // 查询选择部门下面所有子部门
+        Set<Long> ids = new HashSet<>();
+        if (Objects.nonNull(pageReqVO.getDeptId())) {
+            ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
+            ids.add(pageReqVO.getDeptId());
+            pageReqVO.setDeptIds(ids);
+        }
+        // 检查contractName不为空但projectIds为空的情况
+        if (StrUtil.isNotBlank(pageReqVO.getContractName()) && (CollUtil.isEmpty(pageReqVO.getProjectIds()))) {
+            return new PageResult<>(Collections.emptyList(), 0L);
+        }
+        // 检查taskName不为空但taskIds为空的情况
+        if (StrUtil.isNotBlank(pageReqVO.getTaskName()) && (CollUtil.isEmpty(pageReqVO.getTaskIds()))) {
+            return new PageResult<>(Collections.emptyList(), 0L);
+        }
         return iotRyDailyReportMapper.selectPage(pageReqVO);
     }