Commit 742315c8 authored by 鲁鸿波's avatar 鲁鸿波

安全风险分析对象查询时多条bug问题

parent 3f4bcb82
...@@ -57,30 +57,53 @@ public class THazardAssessmentServiceImpl extends SuperServiceImpl<THazardAssess ...@@ -57,30 +57,53 @@ public class THazardAssessmentServiceImpl extends SuperServiceImpl<THazardAssess
@Override @Override
public THazardAssessmentDTO getDetailsById(String typeId,String planId,String completeTime) { public THazardAssessmentDTO getDetailsById(String typeId,String planId,String completeTime) {
THazardAssessment tHazardAssessment = null; THazardAssessment tHazardAssessment = null;
if(StringUtils.isEmpty(completeTime)){ final int MAX_ATTEMPTS = 5;
tHazardAssessment = this.getOne(new LambdaQueryWrapper<THazardAssessment>().eq(THazardAssessment::getWorkTypeId, typeId).eq(THazardAssessment::getPlanId, planId));
}else{ if (StringUtils.isEmpty(completeTime)) {
tHazardAssessment = this.getOne(new LambdaQueryWrapper<THazardAssessment>().eq(THazardAssessment::getWorkTypeId, typeId).eq(THazardAssessment::getPlanId, planId).eq(THazardAssessment::getCreateDate,completeTime)); // 构建不含时间条件的查询
} tHazardAssessment = this.getOne(
if (StringUtils.isNull(tHazardAssessment)) { new LambdaQueryWrapper<THazardAssessment>()
if(!StringUtils.isEmpty(completeTime)){ .eq(THazardAssessment::getWorkTypeId, typeId)
//可能计算的时候会有时间上的差异,减1后继续查询一次 .eq(THazardAssessment::getPlanId, planId)
//completeTime: 2025-08-19 08:57:04 );
//实际值2025-08-19 08:57:03 } else {
// 定义时间格式 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 将字符串解析为LocalDateTime对象 // 尝试原始时间
tHazardAssessment = this.getOne(
new LambdaQueryWrapper<THazardAssessment>()
.eq(THazardAssessment::getWorkTypeId, typeId)
.eq(THazardAssessment::getPlanId, planId)
.eq(THazardAssessment::getCreateDate, completeTime)
);
// 时间递减查询(最多5次)
if (tHazardAssessment == null) {
LocalDateTime dateTime = LocalDateTime.parse(completeTime, formatter); LocalDateTime dateTime = LocalDateTime.parse(completeTime, formatter);
// 减去1秒
LocalDateTime newDateTime = dateTime.minusSeconds(1); for (int i = 1; i <= MAX_ATTEMPTS; i++) {
// 格式化为字符串 // 每次递减1秒
completeTime = newDateTime.format(formatter); LocalDateTime adjustedTime = dateTime.minusSeconds(i);
tHazardAssessment = this.getOne(new LambdaQueryWrapper<THazardAssessment>().eq(THazardAssessment::getWorkTypeId, typeId).eq(THazardAssessment::getPlanId, planId).eq(THazardAssessment::getCreateDate,completeTime)); String newTime = adjustedTime.format(formatter);
}else{
return null; // 每次创建全新的查询条件
tHazardAssessment = this.getOne(
new LambdaQueryWrapper<THazardAssessment>()
.eq(THazardAssessment::getWorkTypeId, typeId)
.eq(THazardAssessment::getPlanId, planId)
.eq(THazardAssessment::getCreateDate, newTime)
);
if (tHazardAssessment != null) break;
}
} }
}
if(tHazardAssessment == null){
return null; return null;
} }
THazardAssessmentDTO tHazardAssessmentDTO = BeanHelper.beanToBean(tHazardAssessment, THazardAssessmentDTO.class); THazardAssessmentDTO tHazardAssessmentDTO = BeanHelper.beanToBean(tHazardAssessment, THazardAssessmentDTO.class);
THazardWorkPlan tHazardWorkPlan = tHazardWorkPlanService.getById(tHazardAssessment.getPlanId()); THazardWorkPlan tHazardWorkPlan = tHazardWorkPlanService.getById(tHazardAssessment.getPlanId());
//设置作业单位 //设置作业单位
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment