隐患
This commit is contained in:
@ -6,6 +6,11 @@ import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.dromara.safety.domain.bo.HazardRuleBo;
|
||||
import org.dromara.safety.domain.dto.EvaluateDto;
|
||||
import org.dromara.safety.domain.vo.HazardRuleVo;
|
||||
import org.dromara.safety.domain.vo.HiddenDangerCountVo;
|
||||
import org.dromara.safety.service.IHazardRuleService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
@ -36,6 +41,8 @@ public class HazardHiddenDangerController extends BaseController {
|
||||
|
||||
private final IHazardHiddenDangerService hazardHiddenDangerService;
|
||||
|
||||
private final IHazardRuleService hazardRuleService;
|
||||
|
||||
/**
|
||||
* 查询隐患信息列表
|
||||
*/
|
||||
@ -102,4 +109,54 @@ public class HazardHiddenDangerController extends BaseController {
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(hazardHiddenDangerService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
/**
|
||||
* 隐患统计
|
||||
*/
|
||||
@GetMapping("/dangerCount/{projectId}")
|
||||
public R<HiddenDangerCountVo> dangerCount(@PathVariable Long projectId) {
|
||||
HiddenDangerCountVo count = hazardHiddenDangerService.dangerCount(projectId);
|
||||
return R.ok(count);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 隐患级别列表
|
||||
*/
|
||||
@GetMapping("/levelList")
|
||||
public R<List<HazardRuleVo>> export(HazardRuleBo bo) {
|
||||
List<HazardRuleVo> list = hazardRuleService.queryList(bo);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 评估隐患
|
||||
*/
|
||||
@SaCheckPermission("safety:hiddenDanger:edit")
|
||||
@Log(title = "隐患信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/evaluate")
|
||||
public R<Void> evaluate(@RequestBody EvaluateDto dto) {
|
||||
return toAjax(hazardHiddenDangerService.evaluate(dto));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -22,12 +22,26 @@ public class HazardHiddenDanger extends BaseEntity {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
// 待评估
|
||||
public static final String EVALUATE = "1";
|
||||
// 待整改
|
||||
public static final String RECTIFY = "2";
|
||||
// 待复查
|
||||
public static final String REVIEW = "3";
|
||||
// 已闭环
|
||||
public static final String CLOSED = "4";
|
||||
|
||||
/**
|
||||
* 角色ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 隐患编号
|
||||
*/
|
||||
@ -67,7 +81,7 @@ public class HazardHiddenDanger extends BaseEntity {
|
||||
/**
|
||||
* 上报人电话
|
||||
*/
|
||||
private String reportPhone;
|
||||
private String reporterPhone;
|
||||
|
||||
/**
|
||||
* 上报时间
|
||||
|
||||
@ -66,7 +66,7 @@ public class HazardHiddenDangerBo extends BaseEntity {
|
||||
/**
|
||||
* 上报人电话
|
||||
*/
|
||||
private String reportPhone;
|
||||
private String reporterPhone;
|
||||
|
||||
/**
|
||||
* 上报时间
|
||||
@ -126,7 +126,6 @@ public class HazardHiddenDangerBo extends BaseEntity {
|
||||
/**
|
||||
* 状态(1-待评估,2-待整改,3-待复查,4-已闭环)
|
||||
*/
|
||||
@NotBlank(message = "状态(1-待评估,2-待整改,3-待复查,4-已闭环)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String status;
|
||||
|
||||
/**
|
||||
@ -135,4 +134,9 @@ public class HazardHiddenDangerBo extends BaseEntity {
|
||||
private String remark;
|
||||
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,59 @@
|
||||
package org.dromara.safety.domain.dto;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.safety.domain.HazardHiddenDanger;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 隐患信息业务对象 hazard_hidden_danger
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-12-03
|
||||
*/
|
||||
@Data
|
||||
@AutoMapper(target = HazardHiddenDanger.class, reverseConvertGenerate = false)
|
||||
public class EvaluateDto {
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 隐患等级ID
|
||||
*/
|
||||
private Long dangerLevelId;
|
||||
|
||||
/**
|
||||
* 评估人
|
||||
*/
|
||||
private Long evaluator;
|
||||
|
||||
/**
|
||||
* 评估时间
|
||||
*/
|
||||
private LocalDateTime evaluateTime;
|
||||
|
||||
/**
|
||||
* 评估依据
|
||||
*/
|
||||
private String evaluateBasis;
|
||||
|
||||
/**
|
||||
* 评估意见
|
||||
*/
|
||||
private String reporterOpinion;
|
||||
|
||||
/**
|
||||
* 评估附件
|
||||
*/
|
||||
private String reporterFile;
|
||||
|
||||
/**
|
||||
* 整改时间
|
||||
*/
|
||||
private LocalDateTime rectifyTime;
|
||||
|
||||
}
|
||||
@ -1,5 +1,7 @@
|
||||
package org.dromara.safety.domain.vo;
|
||||
|
||||
import org.dromara.common.translation.annotation.Translation;
|
||||
import org.dromara.common.translation.constant.TransConstant;
|
||||
import org.dromara.safety.domain.HazardHiddenDanger;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
@ -35,6 +37,11 @@ public class HazardHiddenDangerVo implements Serializable {
|
||||
@ExcelProperty(value = "角色ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 隐患编号
|
||||
*/
|
||||
@ -59,10 +66,16 @@ public class HazardHiddenDangerVo implements Serializable {
|
||||
@ExcelProperty(value = "上报人")
|
||||
private Long reporter;
|
||||
|
||||
/**
|
||||
* 上报人名字
|
||||
*/
|
||||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "reporter")
|
||||
private String reporterName;
|
||||
|
||||
/**
|
||||
* 上报人电话
|
||||
*/
|
||||
private String reportPhone;
|
||||
private String reporterPhone;
|
||||
|
||||
/**
|
||||
* 上报时间
|
||||
@ -91,12 +104,24 @@ public class HazardHiddenDangerVo implements Serializable {
|
||||
*/
|
||||
private String dangerFile;
|
||||
|
||||
/**
|
||||
* 隐患附件地址
|
||||
*/
|
||||
@Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "dangerFile")
|
||||
private String dangerFileUrl;
|
||||
|
||||
/**
|
||||
* 评估人
|
||||
*/
|
||||
@ExcelProperty(value = "评估人")
|
||||
private Long evaluator;
|
||||
|
||||
/**
|
||||
* 评估人名字
|
||||
*/
|
||||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "evaluator")
|
||||
private String evaluatorName;
|
||||
|
||||
/**
|
||||
* 评估时间
|
||||
*/
|
||||
@ -121,6 +146,12 @@ public class HazardHiddenDangerVo implements Serializable {
|
||||
@ExcelProperty(value = "评估附件")
|
||||
private String reporterFile;
|
||||
|
||||
/**
|
||||
* 评估附件地址
|
||||
*/
|
||||
@Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "reporterFile")
|
||||
private String reporterFileUrl;
|
||||
|
||||
/**
|
||||
* 整改时间
|
||||
*/
|
||||
@ -145,6 +176,12 @@ public class HazardHiddenDangerVo implements Serializable {
|
||||
@ExcelProperty(value = "整改负责人Id")
|
||||
private Long rectifyUserId;
|
||||
|
||||
/**
|
||||
* 整改负责人名字
|
||||
*/
|
||||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "rectifyUserId")
|
||||
private String rectifyUserName;
|
||||
|
||||
/**
|
||||
* 状态(1-待评估,2-待整改,3-待复查,4-已闭环)
|
||||
*/
|
||||
@ -159,4 +196,5 @@ public class HazardHiddenDangerVo implements Serializable {
|
||||
private String remark;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
package org.dromara.safety.domain.vo;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class HiddenDangerCountVo {
|
||||
|
||||
/**
|
||||
* 总数量
|
||||
*/
|
||||
private Integer total;
|
||||
/**
|
||||
* 待评估数量
|
||||
*/
|
||||
private Long waitEvaluate;
|
||||
/**
|
||||
* 待整改数量
|
||||
*/
|
||||
private Long waitRectify;
|
||||
/**
|
||||
* 待复查数量
|
||||
*/
|
||||
private Long waitReview;
|
||||
/**
|
||||
* 已闭环数量
|
||||
*/
|
||||
private Long closed;
|
||||
/**
|
||||
* 逾期数量
|
||||
*/
|
||||
private Long overdue;
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
package org.dromara.safety.service;
|
||||
|
||||
import org.dromara.safety.domain.dto.EvaluateDto;
|
||||
import org.dromara.safety.domain.vo.HazardHiddenDangerVo;
|
||||
import org.dromara.safety.domain.bo.HazardHiddenDangerBo;
|
||||
import org.dromara.safety.domain.HazardHiddenDanger;
|
||||
@ -7,6 +8,10 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.safety.domain.vo.HiddenDangerCountVo;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@ -67,4 +72,21 @@ public interface IHazardHiddenDangerService extends IService<HazardHiddenDanger>
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
|
||||
/**
|
||||
* 隐患统计
|
||||
*
|
||||
* @param projectId 项目ID
|
||||
* @return 隐患统计信息
|
||||
*/
|
||||
HiddenDangerCountVo dangerCount(Long projectId);
|
||||
|
||||
/**
|
||||
* 评估隐患
|
||||
*
|
||||
* @param dto 评估信息
|
||||
* @return 是否评估成功
|
||||
*/
|
||||
Boolean evaluate(EvaluateDto dto);
|
||||
}
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
package org.dromara.safety.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.lang.Snowflake;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
@ -8,6 +12,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.safety.domain.HazardRule;
|
||||
import org.dromara.safety.domain.dto.EvaluateDto;
|
||||
import org.dromara.safety.domain.vo.HiddenDangerCountVo;
|
||||
import org.dromara.safety.service.IHazardRuleService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.safety.domain.bo.HazardHiddenDangerBo;
|
||||
import org.dromara.safety.domain.vo.HazardHiddenDangerVo;
|
||||
@ -15,6 +23,7 @@ import org.dromara.safety.domain.HazardHiddenDanger;
|
||||
import org.dromara.safety.mapper.HazardHiddenDangerMapper;
|
||||
import org.dromara.safety.service.IHazardHiddenDangerService;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
@ -27,10 +36,13 @@ import java.util.Collection;
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class HazardHiddenDangerServiceImpl extends ServiceImpl<HazardHiddenDangerMapper, HazardHiddenDanger> implements IHazardHiddenDangerService {
|
||||
public class HazardHiddenDangerServiceImpl extends ServiceImpl<HazardHiddenDangerMapper, HazardHiddenDanger>
|
||||
implements IHazardHiddenDangerService {
|
||||
|
||||
private final HazardHiddenDangerMapper baseMapper;
|
||||
|
||||
private final IHazardRuleService hazardRuleService;
|
||||
|
||||
/**
|
||||
* 查询隐患信息
|
||||
*
|
||||
@ -72,6 +84,8 @@ public class HazardHiddenDangerServiceImpl extends ServiceImpl<HazardHiddenDange
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<HazardHiddenDanger> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(HazardHiddenDanger::getId);
|
||||
lqw.eq(bo.getProjectId()!=null, HazardHiddenDanger::getProjectId, bo.getProjectId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDangerType()), HazardHiddenDanger::getDangerType, bo.getDangerType());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDangerCode()), HazardHiddenDanger::getDangerCode, bo.getDangerCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getDangerName()), HazardHiddenDanger::getDangerName, bo.getDangerName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getReportLocation()), HazardHiddenDanger::getReportLocation, bo.getReportLocation());
|
||||
@ -101,6 +115,9 @@ public class HazardHiddenDangerServiceImpl extends ServiceImpl<HazardHiddenDange
|
||||
public Boolean insertByBo(HazardHiddenDangerBo bo) {
|
||||
HazardHiddenDanger add = MapstructUtils.convert(bo, HazardHiddenDanger.class);
|
||||
validEntityBeforeSave(add);
|
||||
Snowflake snowflake = IdUtil.getSnowflake(1, 1);
|
||||
long id = snowflake.nextId();
|
||||
add.setDangerCode("YH-"+id);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
@ -142,4 +159,36 @@ public class HazardHiddenDangerServiceImpl extends ServiceImpl<HazardHiddenDange
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HiddenDangerCountVo dangerCount(Long projectId) {
|
||||
List<HazardHiddenDanger> list = lambdaQuery().eq(HazardHiddenDanger::getProjectId, projectId).list();
|
||||
HiddenDangerCountVo count = new HiddenDangerCountVo();
|
||||
count.setTotal(list.size());
|
||||
count.setWaitEvaluate(list.stream().filter(item -> item.getStatus().equals(HazardHiddenDanger.EVALUATE)).count());
|
||||
count.setWaitRectify(list.stream().filter(item -> item.getStatus().equals(HazardHiddenDanger.RECTIFY)).count());
|
||||
count.setWaitReview(list.stream().filter(item -> item.getStatus().equals(HazardHiddenDanger.REVIEW)).count());
|
||||
count.setClosed(list.stream().filter(item -> item.getStatus().equals(HazardHiddenDanger.CLOSED)).count());
|
||||
count.setOverdue(list.stream().filter(item ->item.getRectifyTime()!=null && item.getRectifyTime().isBefore(LocalDateTime.now())
|
||||
&& item.getStatus().equals(HazardHiddenDanger.RECTIFY)).count());
|
||||
return count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean evaluate(EvaluateDto dto) {
|
||||
HazardHiddenDanger hazardHiddenDanger = baseMapper.selectById(dto.getId());
|
||||
BeanUtil.copyProperties(dto,hazardHiddenDanger);
|
||||
HazardRule byId = hazardRuleService.getById(hazardHiddenDanger.getDangerLevelId());
|
||||
String responseUnit = byId.getResponseUnit();
|
||||
hazardHiddenDanger.setStatus(HazardHiddenDanger.RECTIFY);
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
if (responseUnit.equals("3")) {
|
||||
hazardHiddenDanger.setRectifyTime(now.plusDays(byId.getResponseTime()));
|
||||
} else if (responseUnit.equals("2")) {
|
||||
hazardHiddenDanger.setRectifyTime(now.plusHours(byId.getResponseTime()));
|
||||
} else if (responseUnit.equals("1")) {
|
||||
hazardHiddenDanger.setRectifyTime(now.plusMinutes(byId.getResponseTime()));
|
||||
}
|
||||
return baseMapper.updateById(hazardHiddenDanger) > 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -234,6 +234,7 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl<HseSafetyInspect
|
||||
}).toList();
|
||||
List<HseSafetyInspectionGis> inspections = safetyInspectionList.stream()
|
||||
// .filter(q -> "2".equals(q.getIsReply()))
|
||||
.sorted(Comparator.comparing(HseSafetyInspection::getCreateTime).reversed())
|
||||
.toList()
|
||||
.stream().map(p -> {
|
||||
HseSafetyInspectionGis gis = new HseSafetyInspectionGis();
|
||||
|
||||
Reference in New Issue
Block a user