隐患整改

This commit is contained in:
lcj
2025-12-05 14:24:17 +08:00
parent 6032869417
commit 46299e5732
5 changed files with 107 additions and 52 deletions

View File

@ -34,6 +34,11 @@ public class HazardHiddenDangerRectify extends BaseEntity {
*/
private Long hiddenDangerId;
/**
* 整改期限
*/
private LocalDateTime rectifyDeadline;
/**
* 整改次数
*/

View File

@ -41,6 +41,12 @@ public class HazardHiddenDangerRectifyVo implements Serializable {
@ExcelProperty(value = "关联隐患ID")
private Long hiddenDangerId;
/**
* 整改期限
*/
@ExcelProperty(value = "整改期限")
private LocalDateTime rectifyDeadline;
/**
* 整改次数
*/
@ -89,6 +95,12 @@ public class HazardHiddenDangerRectifyVo implements Serializable {
@ExcelProperty(value = "复查人ID")
private Long reviewUserId;
/**
* 复查人名字
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "reviewUserId")
private String reviewUserName;
/**
* 复查说明
*/
@ -106,6 +118,7 @@ public class HazardHiddenDangerRectifyVo implements Serializable {
*/
@Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "reviewFiles")
private String reviewFilesUrl;
/**
* 复查时间
*/

View File

@ -32,7 +32,6 @@ import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* 隐患整改情况Service业务层处理
@ -158,36 +157,29 @@ public class HazardHiddenDangerRectifyServiceImpl extends ServiceImpl<HazardHidd
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean rectification(HazardHiddenDangerRectifyRectificationReq req) {
Long id = req.getId();
HazardHiddenDangerRectify oldRectify = this.getById(id);
if (oldRectify == null) {
throw new ServiceException("未找到该数据");
}
Long userId = LoginHelper.getUserId();
if (!oldRectify.getRectifyUserId().equals(userId)) {
throw new ServiceException("您没有权限修改该数据");
}
if (!oldRectify.getReviewStatus().equals(HseSafetyInspectionReviewTypeEnum.NOT_REVIEW.getValue())) {
throw new ServiceException("该数据已审核,请勿重复操作");
}
Long hiddenDangerId = oldRectify.getHiddenDangerId();
HazardHiddenDanger hiddenDanger = hazardHiddenDangerService.getById(hiddenDangerId);
HazardHiddenDanger hiddenDanger = hazardHiddenDangerService.getById(id);
if (hiddenDanger == null) {
throw new ServiceException("未找到该数据");
}
// 判断是否为最新的一条
Integer maxCount = this.lambdaQuery()
.eq(HazardHiddenDangerRectify::getHiddenDangerId, hiddenDangerId)
.select(HazardHiddenDangerRectify::getRectifyCount)
HazardHiddenDangerRectify oldRectify = this.lambdaQuery()
.eq(HazardHiddenDangerRectify::getHiddenDangerId, id)
.orderByDesc(HazardHiddenDangerRectify::getRectifyCount)
.last("limit 1")
.one()
.getRectifyCount();
if (!Objects.equals(maxCount, oldRectify.getRectifyCount())) {
throw new ServiceException("请修改最新的一条整改记录");
.one();
// todo 待完善
/* Long userId = LoginHelper.getUserId();
if (!oldRectify.getRectifyUserId().equals(userId)) {
throw new ServiceException("您没有权限修改该数据");
}*/
if (!oldRectify.getReviewStatus().equals(HseSafetyInspectionReviewTypeEnum.NOT_REVIEW.getValue())) {
throw new ServiceException("该数据已审核,请勿重复操作");
}
HazardHiddenDangerRectify rectify = new HazardHiddenDangerRectify();
BeanUtils.copyProperties(req, rectify);
rectify.setId(oldRectify.getId());
rectify.setRectifyDesc(req.getRectifyDesc());
rectify.setRectifyFiles(req.getRectifyFiles());
rectify.setRectifyTime(LocalDateTime.now());
boolean update = this.updateById(rectify);
if (!update) {
@ -218,34 +210,32 @@ public class HazardHiddenDangerRectifyServiceImpl extends ServiceImpl<HazardHidd
&& !reviewStatus.equals(HseSafetyInspectionReviewTypeEnum.UNPASS.getValue())) {
throw new ServiceException("请选择复查状态");
}
HazardHiddenDangerRectify oldRectify = this.getById(id);
if (oldRectify == null) {
throw new ServiceException("未找到该数据");
}
Long userId = LoginHelper.getUserId();
if (!oldRectify.getReviewUserId().equals(userId)) {
throw new ServiceException("您没有权限审核该数据");
}
Long hiddenDangerId = oldRectify.getHiddenDangerId();
// 判断是否为最新的一条
Integer maxCount = this.lambdaQuery()
.eq(HazardHiddenDangerRectify::getHiddenDangerId, hiddenDangerId)
.select(HazardHiddenDangerRectify::getRectifyCount)
.orderByDesc(HazardHiddenDangerRectify::getRectifyCount)
.last("limit 1")
.one()
.getRectifyCount();
if (!Objects.equals(maxCount, oldRectify.getRectifyCount())) {
throw new ServiceException("请审核最新的一条整改记录");
}
HazardHiddenDanger hiddenDanger = hazardHiddenDangerService.getById(hiddenDangerId);
HazardHiddenDanger hiddenDanger = hazardHiddenDangerService.getById(id);
if (hiddenDanger == null) {
throw new ServiceException("未找到该数据");
}
HazardHiddenDangerRectify oldRectify = this.lambdaQuery()
.eq(HazardHiddenDangerRectify::getHiddenDangerId, id)
.orderByDesc(HazardHiddenDangerRectify::getRectifyCount)
.last("limit 1")
.one();
Long rectifyId = oldRectify.getId();
Long userId = LoginHelper.getUserId();
// todo 待完善
/* if (!oldRectify.getReviewUserId().equals(userId)) {
throw new ServiceException("您没有权限审核该数据");
}*/
LocalDateTime now = LocalDateTime.now();
HazardHiddenDangerRectify rectify = new HazardHiddenDangerRectify();
String reviewDesc = req.getReviewDesc();
String reviewFiles = req.getReviewFiles();
BeanUtils.copyProperties(req, rectify);
rectify.setReviewTime(LocalDateTime.now());
synchronized (("hd_" + hiddenDangerId).intern()) {
rectify.setId(rectifyId);
rectify.setReviewDesc(reviewDesc);
rectify.setReviewFiles(reviewFiles);
rectify.setReviewStatus(reviewStatus);
rectify.setReviewTime(now);
synchronized (("hd_" + id).intern()) {
boolean update = this.updateById(rectify);
if (!update) {
throw new ServiceException("数据修改失败");
@ -255,20 +245,24 @@ public class HazardHiddenDangerRectifyServiceImpl extends ServiceImpl<HazardHidd
// 修改状态
hiddenDanger.setStatus(HazardHiddenDanger.CLOSED);
} else {
// 修改状态
hiddenDanger.setStatus(HazardHiddenDanger.RECTIFY);
LocalDateTime rectificationDeadline = req.getRectificationDeadline();
if (rectificationDeadline == null) {
throw new ServiceException("请选择整改期限");
}
if (rectificationDeadline.isBefore(now)) {
throw new ServiceException("整改期限不能小于当前时间");
}
// 修改状态
hiddenDanger.setStatus(HazardHiddenDanger.RECTIFY);
// 设置新的整改期限
hiddenDanger.setRectifyTime(rectificationDeadline);
// 生成新的整改
HazardHiddenDangerRectify newRectify = new HazardHiddenDangerRectify();
newRectify.setHiddenDangerId(hiddenDangerId);
newRectify.setRectifyCount(maxCount + 1);
newRectify.setHiddenDangerId(id);
newRectify.setRectifyCount(oldRectify.getRectifyCount() + 1);
newRectify.setReviewUserId(rectify.getReviewUserId());
newRectify.setRectifyUserId(rectifyUserId != null ? rectifyUserId : oldRectify.getRectifyUserId());
newRectify.setRectifyDeadline(rectificationDeadline);
boolean save = this.save(newRectify);
if (!save) {
throw new ServiceException("数据保存失败");

View File

@ -8,20 +8,25 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
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;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.safety.domain.HazardHiddenDanger;
import org.dromara.safety.domain.HazardHiddenDangerRectify;
import org.dromara.safety.domain.HazardRule;
import org.dromara.safety.domain.bo.HazardHiddenDangerBo;
import org.dromara.safety.domain.dto.EvaluateDto;
import org.dromara.safety.domain.vo.HazardHiddenDangerRectifyVo;
import org.dromara.safety.domain.vo.HazardHiddenDangerVo;
import org.dromara.safety.domain.vo.HiddenDangerCountVo;
import org.dromara.safety.mapper.HazardHiddenDangerMapper;
import org.dromara.safety.mapper.HazardHiddenDangerRectifyMapper;
import org.dromara.safety.service.IHazardHiddenDangerService;
import org.dromara.safety.service.IHazardRuleService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.Collection;
@ -43,6 +48,8 @@ public class HazardHiddenDangerServiceImpl extends ServiceImpl<HazardHiddenDange
private final IHazardRuleService hazardRuleService;
private final HazardHiddenDangerRectifyMapper hazardHiddenDangerRectifyMapper;
/**
* 查询隐患信息
*
@ -51,7 +58,15 @@ public class HazardHiddenDangerServiceImpl extends ServiceImpl<HazardHiddenDange
*/
@Override
public HazardHiddenDangerVo queryById(Long id) {
return baseMapper.selectVoById(id);
HazardHiddenDangerVo dangerVo = baseMapper.selectVoById(id);
if (dangerVo == null) {
throw new ServiceException("未找到该数据");
}
List<HazardHiddenDangerRectifyVo> dangerRectifyVos = hazardHiddenDangerRectifyMapper.selectVoList(new LambdaQueryWrapper<>(HazardHiddenDangerRectify.class)
.eq(HazardHiddenDangerRectify::getHiddenDangerId, id)
.orderByAsc(HazardHiddenDangerRectify::getRectifyCount));
dangerVo.setRectifyList(dangerRectifyVos);
return dangerVo;
}
/**
@ -195,6 +210,7 @@ public class HazardHiddenDangerServiceImpl extends ServiceImpl<HazardHiddenDange
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean evaluate(EvaluateDto dto) {
HazardHiddenDanger hazardHiddenDanger = baseMapper.selectById(dto.getId());
BeanUtil.copyProperties(dto, hazardHiddenDanger);
@ -209,6 +225,20 @@ public class HazardHiddenDangerServiceImpl extends ServiceImpl<HazardHiddenDange
} else if (responseUnit.equals("1")) {
hazardHiddenDanger.setRectifyTime(now.plusMinutes(byId.getResponseTime()));
}
return baseMapper.updateById(hazardHiddenDanger) > 0;
// 修改数据
if (baseMapper.updateById(hazardHiddenDanger) <= 0) {
throw new ServiceException("数据修改失败");
}
// 添加整改任务
HazardHiddenDangerRectify rectify = new HazardHiddenDangerRectify();
rectify.setHiddenDangerId(dto.getId());
rectify.setRectifyDeadline(hazardHiddenDanger.getRectifyTime());
rectify.setRectifyUserId(hazardHiddenDanger.getRectifyUserId());
rectify.setReviewUserId(hazardHiddenDanger.getEvaluator());
rectify.setRectifyCount(1);
if (hazardHiddenDangerRectifyMapper.insert(rectify) <= 0) {
throw new ServiceException("数据保存失败");
}
return true;
}
}

View File

@ -2106,3 +2106,16 @@ insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1996413868087308295, '隐患整改情况导出', 1996413868087308290, '5', '#', '', 1, 0, 'F', '0', '0',
'safety:hiddenDangerRectify:export', '#', 103, 1, sysdate(), null, null, '');
CREATE TABLE `hazard_delay_task`
(
`id` BIGINT PRIMARY KEY COMMENT '主键',
`biz_type` VARCHAR(50) NOT NULL COMMENT '业务类型',
`biz_id` BIGINT NOT NULL COMMENT '业务ID',
`execute_time` DATETIME NOT NULL COMMENT '执行的时间点',
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '任务状态 0未执行 1执行中 2执行成功 3执行失败',
`retry_count` INT NOT NULL DEFAULT 0 COMMENT '重试次数',
`max_retry` INT NOT NULL DEFAULT 3 COMMENT '最大重试次数',
`fail_reason` VARCHAR(1024) NULL COMMENT '失败原因'
);