diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/controller/HotHiddenDangerInspectionController.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/controller/HotHiddenDangerInspectionController.java index 2185da6..f75b1aa 100644 --- a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/controller/HotHiddenDangerInspectionController.java +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/controller/HotHiddenDangerInspectionController.java @@ -131,7 +131,7 @@ public class HotHiddenDangerInspectionController extends BaseController { @GetMapping("/hidden-danger-plans/page") @Operation( summary = "移动端分页查询隐患排查计划列表", - description = "权限说明:驾驶员仅可查看本人及所属车辆当月全部计划和历史未做计划;管理员可查看企业当月全部计划和历史未做计划。" + description = "权限说明:驾驶员仅可查看当前处于原始周期或补查周期内、且属于本人及所属车辆的计划;管理员可查看企业内当前处于有效时间范围的计划。" ) public TableDataInfo hiddenDangerPlanPage( @RequestParam(value = "keyword", required = false) String keyword, diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/domain/HotHiddenDangerInspection.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/domain/HotHiddenDangerInspection.java index e78cb6f..f090aa3 100644 --- a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/domain/HotHiddenDangerInspection.java +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/domain/HotHiddenDangerInspection.java @@ -80,6 +80,16 @@ public class HotHiddenDangerInspection extends BaseEntity { */ private Date checkDate; + /** + * 是否补查期间处理:0否 1是 + */ + private Long isRecheckProcessed; + + /** + * 补查处理时间 + */ + private Date recheckProcessedTime; + /** * 评估人id */ diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/domain/bo/HotHiddenDangerInspectionBo.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/domain/bo/HotHiddenDangerInspectionBo.java index cb41a2a..8769f69 100644 --- a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/domain/bo/HotHiddenDangerInspectionBo.java +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/domain/bo/HotHiddenDangerInspectionBo.java @@ -86,6 +86,16 @@ public class HotHiddenDangerInspectionBo extends BaseEntity { // @NotNull(message = "排查日期不能为空", groups = {AddGroup.class, EditGroup.class}) private Date checkDate; + /** + * 是否补查期间处理:0否 1是 + */ + private Long isRecheckProcessed; + + /** + * 补查处理时间 + */ + private Date recheckProcessedTime; + /** * 评估人id */ diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/domain/vo/HotHiddenDangerInspectionVo.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/domain/vo/HotHiddenDangerInspectionVo.java index 4f01c6a..5c94be9 100644 --- a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/domain/vo/HotHiddenDangerInspectionVo.java +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/domain/vo/HotHiddenDangerInspectionVo.java @@ -94,6 +94,18 @@ public class HotHiddenDangerInspectionVo implements Serializable { @ExcelProperty(value = "排查日期") private Date checkDate; + /** + * 是否补查期间处理:0否 1是 + */ + @ExcelProperty(value = "是否补查期间处理") + private Long isRecheckProcessed; + + /** + * 补查处理时间 + */ + @ExcelProperty(value = "补查处理时间") + private Date recheckProcessedTime; + /** * 评估人id */ diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/mapper/HotHiddenDangerInspectionMapper.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/mapper/HotHiddenDangerInspectionMapper.java index 106a9e6..7c63543 100644 --- a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/mapper/HotHiddenDangerInspectionMapper.java +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerInspection/mapper/HotHiddenDangerInspectionMapper.java @@ -24,6 +24,5 @@ public interface HotHiddenDangerInspectionMapper extends BaseMapperPlus page = pageQuery.build(); List rows = baseMapper.selectMobilePlanPage( page, @@ -110,8 +113,7 @@ public class HotHiddenDangerInspectionServiceImpl implements IHotHiddenDangerIns driverId, vehicleId, planId, - StringUtils.trimToNull(keyword), - currentMonth + StringUtils.trimToNull(keyword) ); page.setRecords(rows); fillFlowExtras(rows); @@ -210,8 +212,14 @@ public class HotHiddenDangerInspectionServiceImpl implements IHotHiddenDangerIns if (original == null) { throw new ServiceException("排查记录不存在"); } + HotHiddenDangerPlan plan = getPlanByInspectionOrThrow(original); + Date now = new Date(); + if (!timeWindowHelper.canProcess(now, plan)) { + throw new ServiceException("当前计划未处于可处理时间范围内"); + } HotHiddenDangerInspection update = MapstructUtils.convert(bo, HotHiddenDangerInspection.class); validEntityBeforeSave(update); + markRecheckProcessIfNeeded(update, original, plan, now); String signImgUrl = bo.getSignImgUrl(); if (DriverLoginContextHelper.isDriverPort() && StringUtils.isNotBlank(signImgUrl)) { String checkerName = bo.getCheckerName(); @@ -275,6 +283,25 @@ public class HotHiddenDangerInspectionServiceImpl implements IHotHiddenDangerIns } return flag; } + /** + * 标记是否需要补查处理 + */ + private void markRecheckProcessIfNeeded(HotHiddenDangerInspection update, + HotHiddenDangerInspection original, + HotHiddenDangerPlan plan, + Date now) { + if (update == null || original == null || plan == null || now == null) { + return; + } + if (!timeWindowHelper.isInRecheckWindow(now, plan)) { + return; + } + if (Long.valueOf(1L).equals(original.getIsRecheckProcessed())) { + return; + } + update.setIsRecheckProcessed(1L); + update.setRecheckProcessedTime(now); + } private Long parseSignatureOssId(String signImgUrl) { String first = signImgUrl.split(",")[0].trim(); @@ -539,6 +566,22 @@ public class HotHiddenDangerInspectionServiceImpl implements IHotHiddenDangerIns vo.setTaskId(taskId); } + private HotHiddenDangerPlan getPlanByInspectionOrThrow(HotHiddenDangerInspection inspection) { + if (inspection == null || inspection.getPlanId() == null) { + throw new ServiceException("排查计划不存在"); + } + HotHiddenDangerPlan plan = planMapper.selectOne( + Wrappers.lambdaQuery() + .eq(HotHiddenDangerPlan::getId, inspection.getPlanId()) + .eq(HotHiddenDangerPlan::getIsDeleted, 0L) + .last("LIMIT 1") + ); + if (plan == null) { + throw new ServiceException("排查计划不存在"); + } + return plan; + } + /** * 保存前的数据校验 */ diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/controller/HotHiddenDangerPlanController.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/controller/HotHiddenDangerPlanController.java index 7588266..f35cbc1 100644 --- a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/controller/HotHiddenDangerPlanController.java +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/controller/HotHiddenDangerPlanController.java @@ -2,6 +2,8 @@ package com.hotwj.platform.securityManagement.hiddenDangerPlan.controller; import cn.dev33.satoken.annotation.SaIgnore; import com.hotwj.platform.securityManagement.hiddenDangerPlan.domain.bo.HotHiddenDangerPlanBo; +import com.hotwj.platform.securityManagement.hiddenDangerPlan.domain.bo.HotHiddenDangerPlanRecheckBo; +import com.hotwj.platform.securityManagement.hiddenDangerPlan.domain.bo.HotHiddenDangerPlanRecheckCloseBo; import com.hotwj.platform.securityManagement.hiddenDangerPlan.domain.vo.HotHiddenDangerPlanVo; import com.hotwj.platform.securityManagement.hiddenDangerPlan.service.IHotHiddenDangerPlanService; import io.swagger.v3.oas.annotations.Operation; @@ -130,6 +132,39 @@ public class HotHiddenDangerPlanController extends BaseController { return toAjax(hotHiddenDangerPlanService.updateByBo(bo)); } + /** + * 开启补查 + */ + @Log(title = "隐患排查补查", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PostMapping("/recheck/open") + @Operation(summary = "开启隐患排查补查") + public R openRecheck(@Validated @RequestBody HotHiddenDangerPlanRecheckBo bo) { + return toAjax(hotHiddenDangerPlanService.openRecheck(bo.getPlanId(), bo.getRecheckStartTime(), bo.getRecheckEndTime())); + } + + /** + * 修改补查 + */ + @Log(title = "隐患排查补查", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/recheck/update") + @Operation(summary = "修改隐患排查补查") + public R updateRecheck(@Validated @RequestBody HotHiddenDangerPlanRecheckBo bo) { + return toAjax(hotHiddenDangerPlanService.updateRecheck(bo.getPlanId(), bo.getRecheckStartTime(), bo.getRecheckEndTime())); + } + + /** + * 关闭补查 + */ + @Log(title = "隐患排查补查", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/recheck/close") + @Operation(summary = "关闭隐患排查补查") + public R closeRecheck(@Validated @RequestBody HotHiddenDangerPlanRecheckCloseBo bo) { + return toAjax(hotHiddenDangerPlanService.closeRecheck(bo.getPlanId())); + } + /** * 删除隐患排查 * diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/HotHiddenDangerPlan.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/HotHiddenDangerPlan.java index a7477ed..c4f5066 100644 --- a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/HotHiddenDangerPlan.java +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/HotHiddenDangerPlan.java @@ -60,6 +60,21 @@ public class HotHiddenDangerPlan extends BaseEntity { */ private Date endDate; + /** + * 是否开启补查:0否 1是 + */ + private Long isRecheck; + + /** + * 补查开始时间 + */ + private Date recheckStartTime; + + /** + * 补查结束时间 + */ + private Date recheckEndTime; + /** * 进度 0=待处理 1=审核中 2=评估 3=治理 4=复查 5=完结 */ diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/bo/HotHiddenDangerPlanBo.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/bo/HotHiddenDangerPlanBo.java index 65e88bb..96681d8 100644 --- a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/bo/HotHiddenDangerPlanBo.java +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/bo/HotHiddenDangerPlanBo.java @@ -63,6 +63,21 @@ public class HotHiddenDangerPlanBo extends BaseEntity { @NotNull(message = "结束日期不能为空", groups = {AddGroup.class, EditGroup.class}) private Date endDate; + /** + * 是否开启补查:0否 1是 + */ + private Long isRecheck; + + /** + * 补查开始时间 + */ + private Date recheckStartTime; + + /** + * 补查结束时间 + */ + private Date recheckEndTime; + /** * 进度 0=待处理 1=审核中 2=评估 3=治理 4=复查 5=完结 */ diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/bo/HotHiddenDangerPlanRecheckBo.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/bo/HotHiddenDangerPlanRecheckBo.java new file mode 100644 index 0000000..0170f93 --- /dev/null +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/bo/HotHiddenDangerPlanRecheckBo.java @@ -0,0 +1,37 @@ +package com.hotwj.platform.securityManagement.hiddenDangerPlan.domain.bo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.Date; + +/** + * 隐患排查补查开启/修改请求对象 + * + * @author shihongwei + * @date 2026-06-03 + */ +@Data +public class HotHiddenDangerPlanRecheckBo { + + /** + * 计划ID + */ + @NotNull(message = "计划ID不能为空") + private Long planId; + + /** + * 补查开始时间 + */ + @NotNull(message = "补查开始时间不能为空") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date recheckStartTime; + + /** + * 补查结束时间 + */ + @NotNull(message = "补查结束时间不能为空") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date recheckEndTime; +} diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/bo/HotHiddenDangerPlanRecheckCloseBo.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/bo/HotHiddenDangerPlanRecheckCloseBo.java new file mode 100644 index 0000000..c0bb576 --- /dev/null +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/bo/HotHiddenDangerPlanRecheckCloseBo.java @@ -0,0 +1,20 @@ +package com.hotwj.platform.securityManagement.hiddenDangerPlan.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * 隐患排查补查关闭请求对象 + * + * @author shihongwei + * @date 2026-06-03 + */ +@Data +public class HotHiddenDangerPlanRecheckCloseBo { + + /** + * 计划ID + */ + @NotNull(message = "计划ID不能为空") + private Long planId; +} diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/vo/HotHiddenDangerPlanVo.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/vo/HotHiddenDangerPlanVo.java index 9e60c34..e37f9b6 100644 --- a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/vo/HotHiddenDangerPlanVo.java +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/domain/vo/HotHiddenDangerPlanVo.java @@ -67,6 +67,24 @@ public class HotHiddenDangerPlanVo implements Serializable { @ExcelProperty(value = "结束日期") private Date endDate; + /** + * 是否开启补查:0否 1是 + */ + @ExcelProperty(value = "是否开启补查") + private Long isRecheck; + + /** + * 补查开始时间 + */ + @ExcelProperty(value = "补查开始时间") + private Date recheckStartTime; + + /** + * 补查结束时间 + */ + @ExcelProperty(value = "补查结束时间") + private Date recheckEndTime; + /** * 进度 0=待处理 1=审核中 2=评估 3=治理 4=复查 5=完结 */ diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/service/HiddenDangerPlanTimeWindowHelper.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/service/HiddenDangerPlanTimeWindowHelper.java new file mode 100644 index 0000000..13a3601 --- /dev/null +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/service/HiddenDangerPlanTimeWindowHelper.java @@ -0,0 +1,63 @@ +package com.hotwj.platform.securityManagement.hiddenDangerPlan.service; + +import com.hotwj.platform.securityManagement.hiddenDangerPlan.domain.HotHiddenDangerPlan; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 隐患排查计划时间窗口判定 + * + * @author shihongwei + * @date 2026-06-03 + */ +@Component +public class HiddenDangerPlanTimeWindowHelper { + + /** + * 是否在原始时间窗口内 + */ + public boolean isInOriginalWindow(Date now, HotHiddenDangerPlan plan) { + if (now == null || plan == null || plan.getStartDate() == null || plan.getEndDate() == null) { + return false; + } + return !now.before(plan.getStartDate()) && !now.after(plan.getEndDate()); + } + + /** + * 是否在补查时间窗口内 + */ + public boolean isInRecheckWindow(Date now, HotHiddenDangerPlan plan) { + if (now == null || plan == null) { + return false; + } + if (!Long.valueOf(1L).equals(plan.getIsRecheck())) { + return false; + } + if (plan.getRecheckStartTime() == null || plan.getRecheckEndTime() == null) { + return false; + } + return !now.before(plan.getRecheckStartTime()) && !now.after(plan.getRecheckEndTime()); + } + + /** + * 是否在有效时间窗口内 + */ + public boolean isInEffectiveWindow(Date now, HotHiddenDangerPlan plan) { + return isInOriginalWindow(now, plan) || isInRecheckWindow(now, plan); + } + + /** + * 是否可以在有效时间窗口内处理 + */ + public boolean canProcess(Date now, HotHiddenDangerPlan plan) { + return isInEffectiveWindow(now, plan); + } + + /** + * 是否应该在司机端展示 + */ + public boolean shouldDisplayToDriver(Date now, HotHiddenDangerPlan plan) { + return isInEffectiveWindow(now, plan); + } +} diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/service/IHotHiddenDangerPlanService.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/service/IHotHiddenDangerPlanService.java index e6d000d..f6d78d0 100644 --- a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/service/IHotHiddenDangerPlanService.java +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/service/IHotHiddenDangerPlanService.java @@ -69,6 +69,34 @@ public interface IHotHiddenDangerPlanService { */ void generatePlan(Long companyId); + /** + * 开启补查 + * + * @param planId 计划ID + * @param recheckStartTime 补查开始时间 + * @param recheckEndTime 补查结束时间 + * @return 是否成功 + */ + Boolean openRecheck(Long planId, java.util.Date recheckStartTime, java.util.Date recheckEndTime); + + /** + * 修改补查 + * + * @param planId 计划ID + * @param recheckStartTime 补查开始时间 + * @param recheckEndTime 补查结束时间 + * @return 是否成功 + */ + Boolean updateRecheck(Long planId, java.util.Date recheckStartTime, java.util.Date recheckEndTime); + + /** + * 关闭补查 + * + * @param planId 计划ID + * @return 是否成功 + */ + Boolean closeRecheck(Long planId); + /** * 校验并批量删除隐患排查信息 * diff --git a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/service/impl/HotHiddenDangerPlanServiceImpl.java b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/service/impl/HotHiddenDangerPlanServiceImpl.java index a18c4e9..2dabfdf 100644 --- a/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/service/impl/HotHiddenDangerPlanServiceImpl.java +++ b/src/main/java/com/hotwj/platform/securityManagement/hiddenDangerPlan/service/impl/HotHiddenDangerPlanServiceImpl.java @@ -13,6 +13,7 @@ import com.hotwj.platform.config.hiddenDangerCheckConfig.service.IHotHiddenDange import com.hotwj.platform.driverManagement.driver.domain.bo.HotDriverBo; import com.hotwj.platform.driverManagement.driver.domain.vo.HotDriverVo; import com.hotwj.platform.driverManagement.driver.service.IHotDriverService; +import com.hotwj.platform.common.helper.DriverLoginContextHelper; import com.hotwj.platform.noticeManagerment.systemNotification.domain.bo.HotSystemNotificationGroupBo; import com.hotwj.platform.noticeManagerment.systemNotification.service.IHotSystemNotificationService; import com.hotwj.platform.resourceManagement.company.domain.vo.SysCompanyVo; @@ -33,6 +34,7 @@ import com.hotwj.platform.securityManagement.hiddenDangerPlan.mapper.HotHiddenDa import com.hotwj.platform.securityManagement.hiddenDangerPlan.service.IHotHiddenDangerPlanService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; @@ -43,6 +45,7 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.IsoFields; import java.util.Collection; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -183,6 +186,45 @@ public class HotHiddenDangerPlanServiceImpl implements IHotHiddenDangerPlanServi processCompanyPlan(companyConfig, checkConfigsMap); } + @Override + public Boolean openRecheck(Long planId, Date recheckStartTime, Date recheckEndTime) { + HotHiddenDangerPlan plan = getPlanOrThrow(planId); + validateRecheckTime(recheckStartTime, recheckEndTime); + return baseMapper.update( + null, + Wrappers.lambdaUpdate() + .eq(HotHiddenDangerPlan::getId, plan.getId()) + .set(HotHiddenDangerPlan::getIsRecheck, 1L) + .set(HotHiddenDangerPlan::getRecheckStartTime, recheckStartTime) + .set(HotHiddenDangerPlan::getRecheckEndTime, recheckEndTime) + ) > 0; + } + + @Override + public Boolean updateRecheck(Long planId, Date recheckStartTime, Date recheckEndTime) { + HotHiddenDangerPlan plan = getPlanOrThrow(planId); + validateRecheckTime(recheckStartTime, recheckEndTime); + return baseMapper.update( + null, + Wrappers.lambdaUpdate() + .eq(HotHiddenDangerPlan::getId, plan.getId()) + .set(HotHiddenDangerPlan::getIsRecheck, 1L) + .set(HotHiddenDangerPlan::getRecheckStartTime, recheckStartTime) + .set(HotHiddenDangerPlan::getRecheckEndTime, recheckEndTime) + ) > 0; + } + + @Override + public Boolean closeRecheck(Long planId) { + HotHiddenDangerPlan plan = getPlanOrThrow(planId); + return baseMapper.update( + null, + Wrappers.lambdaUpdate() + .eq(HotHiddenDangerPlan::getId, plan.getId()) + .set(HotHiddenDangerPlan::getIsRecheck, 0L) + ) > 0; + } + /** * 处理单个公司的排查计划 */ @@ -511,7 +553,6 @@ public class HotHiddenDangerPlanServiceImpl implements IHotHiddenDangerPlanServi } private LambdaQueryWrapper buildQueryWrapper(HotHiddenDangerPlanBo bo) { - Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByDesc(HotHiddenDangerPlan::getCreateTime); lqw.eq(bo.getCompanyId() != null, HotHiddenDangerPlan::getCompanyId, bo.getCompanyId()); @@ -519,11 +560,32 @@ public class HotHiddenDangerPlanServiceImpl implements IHotHiddenDangerPlanServi lqw.like(StringUtils.isNotBlank(bo.getPlanName()), HotHiddenDangerPlan::getPlanName, bo.getPlanName()); lqw.eq(bo.getStartDate() != null, HotHiddenDangerPlan::getStartDate, bo.getStartDate()); lqw.eq(bo.getEndDate() != null, HotHiddenDangerPlan::getEndDate, bo.getEndDate()); + lqw.eq(bo.getIsRecheck() != null, HotHiddenDangerPlan::getIsRecheck, bo.getIsRecheck()); lqw.eq(bo.getProgress() != null, HotHiddenDangerPlan::getProgress, bo.getProgress()); lqw.eq(bo.getIsDeleted() != null, HotHiddenDangerPlan::getIsDeleted, bo.getIsDeleted()); + if (shouldLimitToEffectiveWindow()) { + Date now = new Date(); + lqw.and(wrapper -> wrapper + .and(original -> original + .le(HotHiddenDangerPlan::getStartDate, now) + .ge(HotHiddenDangerPlan::getEndDate, now)) + .or(recheck -> recheck + .eq(HotHiddenDangerPlan::getIsRecheck, 1L) + .le(HotHiddenDangerPlan::getRecheckStartTime, now) + .ge(HotHiddenDangerPlan::getRecheckEndTime, now)) + ); + } return lqw; } + private boolean shouldLimitToEffectiveWindow() { + try { + return DriverLoginContextHelper.isDriverPort(); + } catch (Exception e) { + return false; + } + } + /** * 新增隐患排查 * @@ -626,6 +688,34 @@ public class HotHiddenDangerPlanServiceImpl implements IHotHiddenDangerPlanServi //TODO 做一些数据校验,如唯一约束 } + private HotHiddenDangerPlan getPlanOrThrow(Long planId) { + if (planId == null) { + throw new ServiceException("计划ID不能为空"); + } + HotHiddenDangerPlan plan = baseMapper.selectOne( + Wrappers.lambdaQuery() + .eq(HotHiddenDangerPlan::getId, planId) + .eq(HotHiddenDangerPlan::getIsDeleted, 0L) + .last("LIMIT 1") + ); + if (plan == null) { + throw new ServiceException("排查计划不存在"); + } + return plan; + } + + private void validateRecheckTime(Date recheckStartTime, Date recheckEndTime) { + if (recheckStartTime == null) { + throw new ServiceException("补查开始时间不能为空"); + } + if (recheckEndTime == null) { + throw new ServiceException("补查结束时间不能为空"); + } + if (!recheckEndTime.after(recheckStartTime)) { + throw new ServiceException("补查结束时间必须晚于补查开始时间"); + } + } + /** * 校验并批量删除隐患排查信息 * diff --git a/src/main/resources/mapper/securityManagement/HotHiddenDangerInspectionMapper.xml b/src/main/resources/mapper/securityManagement/HotHiddenDangerInspectionMapper.xml index b9683c0..e163a7b 100644 --- a/src/main/resources/mapper/securityManagement/HotHiddenDangerInspectionMapper.xml +++ b/src/main/resources/mapper/securityManagement/HotHiddenDangerInspectionMapper.xml @@ -7,77 +7,80 @@ diff --git a/src/main/resources/mapper/securityManagement/HotHiddenDangerPlanMapper.xml b/src/main/resources/mapper/securityManagement/HotHiddenDangerPlanMapper.xml index 7d4668f..bb4db4d 100644 --- a/src/main/resources/mapper/securityManagement/HotHiddenDangerPlanMapper.xml +++ b/src/main/resources/mapper/securityManagement/HotHiddenDangerPlanMapper.xml @@ -12,6 +12,9 @@ p.plan_name, p.start_date, p.end_date, + p.is_recheck, + p.recheck_start_time, + p.recheck_end_time, p.progress, p.remark, p.is_deleted,