소스 검색

Merge remote-tracking branch 'origin/master'

Zimo 1 일 전
부모
커밋
3a9facbb17

+ 20 - 0
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/LocalDateTimeUtils.java

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.date.TemporalAccessorUtil;
 import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.enums.DateIntervalEnum;
 
@@ -369,4 +370,23 @@ public class LocalDateTimeUtils {
         return TemporalAccessorUtil.toInstant(sourceDateTime).getEpochSecond();
     }
 
+    /**
+     * 处理时间区间查询逻辑
+     * 时间查询区间内如果包含 未发生的时间段(今年 本季度) 则设置 结束时间为 当前日期
+     * @param timeRange 日期区间
+     * @return 所在季度的第一天
+     */
+    public static void correctFutureTimeRange(LocalDateTime[] timeRange) {
+        // 空数组 / 长度不足2,直接返回
+        if (ObjUtil.isEmpty(timeRange) || timeRange.length < 2) {
+            return;
+        }
+        LocalDateTime now = LocalDateTime.now();
+        LocalDateTime todayEnd = LocalDate.now().atTime(23, 59, 59);
+        // 结束时间在当前时间之后,修正为今日最后一秒
+        if (timeRange[1].isAfter(now)) {
+            timeRange[1] = todayEnd;
+        }
+    }
+
 }

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

@@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
@@ -2344,6 +2345,10 @@ public class IotRyDailyReportController {
             }
         }
 
+        // 时间查询区间内如果包含 未发生的时间段(今年 本季度) 则设置 结束时间为 当前日期
+        // 【调用公共方法】矫正未来时间区间
+        LocalDateTimeUtils.correctFutureTimeRange(pageReqVO.getCreateTime());
+
         // 统计设备利用率
         Long deptId = pageReqVO.getDeptId();
         // 钻井或修井部门 队伍

+ 10 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/IotStaticController.java

@@ -12,6 +12,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.pojo.Pms;
+import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
 import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.pms.ThingsModelDTO;
@@ -2640,6 +2641,10 @@ public class IotStaticController {
                 }
             });
         }
+
+        // 时间查询区间内如果包含 未发生的时间段(今年 本季度) 则设置 结束时间为 当前日期
+        // 【调用公共方法】矫正未来时间区间
+        LocalDateTimeUtils.correctFutureTimeRange(reqVO.getCreateTime());
         // 查询出指定时间区间内 已经填写的日报数量 存在注气时间是0 但是 注气量 不为0的情况
         // reqVO.setStatisticFlag("Y");
         List<IotRhDailyReportDO> dailyReports = iotRhDailyReportMapper.dailyReports(reqVO);
@@ -3110,6 +3115,11 @@ public class IotStaticController {
                 }
             });
         }
+
+        // 时间查询区间内如果包含 未发生的时间段(今年 本季度) 则设置 结束时间为 当前日期
+        // 【调用公共方法】矫正未来时间区间
+        LocalDateTimeUtils.correctFutureTimeRange(reqVO.getCreateTime());
+
         // 查询出指定时间区间内 已经填写的日报数量
         // 瑞鹰区分 钻井 修井 日报
         // 钻井:日报状态 过滤掉 ‘等停dt’    修井:日报状态过滤掉 ‘等停dt’、‘整修zx’

+ 9 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrhdailyreport/IotRhDailyReportServiceImpl.java

@@ -8,6 +8,7 @@ import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
 import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
@@ -901,6 +902,10 @@ public class IotRhDailyReportServiceImpl implements IotRhDailyReportService {
         if (StrUtil.isNotBlank(pageReqVO.getTaskName()) && (CollUtil.isEmpty(pageReqVO.getTaskIds()))) {
             return new PageResult<>(Collections.emptyList(), 0L);
         }
+        // 时间查询区间内如果包含 未发生的时间段(今年 本季度) 则设置 结束时间为 当前日期
+        // 【调用公共方法】矫正未来时间区间
+        LocalDateTimeUtils.correctFutureTimeRange(pageReqVO.getCreateTime());
+
         IPage<IotRhDailyReportDO> page = iotRhDailyReportMapper.rhDailyReports(
                 new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO,
                 pageReqVO.getTaskIds(), pageReqVO.getProjectIds(), ids);
@@ -1006,6 +1011,10 @@ public class IotRhDailyReportServiceImpl implements IotRhDailyReportService {
         if (StrUtil.isNotBlank(pageReqVO.getTaskName()) && (CollUtil.isEmpty(pageReqVO.getTaskIds()))) {
             return new ArrayList<>();
         }
+        // 时间查询区间内如果包含 未发生的时间段(今年 本季度) 则设置 结束时间为 当前日期
+        // 【调用公共方法】矫正未来时间区间
+        LocalDateTimeUtils.correctFutureTimeRange(pageReqVO.getCreateTime());
+
         IPage<IotRhDailyReportDO> page = iotRhDailyReportMapper.rhReportStatistics(
                 new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO,
                 pageReqVO.getTaskIds(), pageReqVO.getProjectIds(), ids);

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

@@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
 import cn.iocoder.yudao.module.pms.constant.PmsConstants;
@@ -551,6 +552,11 @@ public class IotRyDailyReportServiceImpl implements IotRyDailyReportService {
         if (StrUtil.isNotBlank(pageReqVO.getTaskName()) && (CollUtil.isEmpty(pageReqVO.getTaskIds()))) {
             return new ArrayList<>();
         }
+
+        // 时间查询区间内如果包含 未发生的时间段(今年 本季度) 则设置 结束时间为 当前日期
+        // 【调用公共方法】矫正未来时间区间
+        LocalDateTimeUtils.correctFutureTimeRange(pageReqVO.getCreateTime());
+
         PageResult<IotRyDailyReportDO> page = iotRyDailyReportMapper.selectPage(pageReqVO);
         List<IotRyDailyReportDO> dailyReports = page.getList();