隐患规则

This commit is contained in:
lcj
2025-12-04 10:18:26 +08:00
parent 0b81a8dc63
commit 556f3b6535
10 changed files with 236 additions and 182 deletions

View File

@ -1,26 +1,27 @@
package org.dromara.safety.controller; package org.dromara.safety.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*; import jakarta.servlet.http.HttpServletResponse;
import org.springframework.validation.annotation.Validated; import jakarta.validation.constraints.NotEmpty;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import jakarta.validation.constraints.NotNull;
import org.dromara.common.log.annotation.Log; import lombok.RequiredArgsConstructor;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup; import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.safety.domain.vo.HazardRuleVo; import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.safety.domain.bo.HazardRuleBo; import org.dromara.common.log.annotation.Log;
import org.dromara.safety.service.IHazardRuleService; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.safety.domain.bo.HazardRuleBo;
import org.dromara.safety.domain.vo.HazardRuleVo;
import org.dromara.safety.service.IHazardRuleService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* 隐患分级通知规则 * 隐患分级通知规则
@ -64,7 +65,7 @@ public class HazardRuleController extends BaseController {
@SaCheckPermission("safety:rule:query") @SaCheckPermission("safety:rule:query")
@GetMapping("/{id}") @GetMapping("/{id}")
public R<HazardRuleVo> getInfo(@NotNull(message = "主键不能为空") public R<HazardRuleVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) { @PathVariable Long id) {
return R.ok(hazardRuleService.queryById(id)); return R.ok(hazardRuleService.queryById(id));
} }

View File

@ -1,5 +1,7 @@
package org.dromara.safety.domain; package org.dromara.safety.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
@ -22,6 +24,7 @@ public class HazardRuleNotifyObject implements Serializable {
/** /**
* 规则ID * 规则ID
*/ */
@TableId(type = IdType.INPUT)
private Long ruleId; private Long ruleId;
/** /**

View File

@ -10,6 +10,9 @@ import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.safety.domain.HazardRule; import org.dromara.safety.domain.HazardRule;
import java.io.Serial;
import java.util.List;
/** /**
* 隐患分级通知规则业务对象 hazard_rule * 隐患分级通知规则业务对象 hazard_rule
* *
@ -21,6 +24,9 @@ import org.dromara.safety.domain.HazardRule;
@AutoMapper(target = HazardRule.class, reverseConvertGenerate = false) @AutoMapper(target = HazardRule.class, reverseConvertGenerate = false)
public class HazardRuleBo extends BaseEntity { public class HazardRuleBo extends BaseEntity {
@Serial
private static final long serialVersionUID = 1523915364119852788L;
/** /**
* 主键 * 主键
*/ */
@ -72,7 +78,6 @@ public class HazardRuleBo extends BaseEntity {
/** /**
* 额外设置 * 额外设置
*/ */
@NotBlank(message = "额外设置不能为空", groups = {AddGroup.class, EditGroup.class})
private String extraSetting; private String extraSetting;
/** /**
@ -80,4 +85,10 @@ public class HazardRuleBo extends BaseEntity {
*/ */
private String remark; private String remark;
/**
* 通知对象
*/
@NotNull(message = "通知对象不能为空", groups = {AddGroup.class, EditGroup.class})
private List<HazardRuleNotifyObjectBo> notifyObjects;
} }

View File

@ -1,13 +1,8 @@
package org.dromara.safety.domain.bo; package org.dromara.safety.domain.bo;
import org.dromara.safety.domain.HazardRuleNotifyObject; import lombok.AllArgsConstructor;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor;
import jakarta.validation.constraints.*;
/** /**
* 隐患规则通知对象业务对象 hazard_rule_notify_object * 隐患规则通知对象业务对象 hazard_rule_notify_object
@ -16,27 +11,18 @@ import jakarta.validation.constraints.*;
* @date 2025-12-03 * @date 2025-12-03
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @NoArgsConstructor
@AutoMapper(target = HazardRuleNotifyObject.class, reverseConvertGenerate = false) @AllArgsConstructor
public class HazardRuleNotifyObjectBo extends BaseEntity { public class HazardRuleNotifyObjectBo {
/**
* 规则ID
*/
@NotNull(message = "规则ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long ruleId;
/** /**
* 通知ID * 通知ID
*/ */
@NotNull(message = "通知ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long notifyId; private Long notifyId;
/** /**
* 通知类型 * 通知类型
*/ */
@NotBlank(message = "通知类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String notifyType; private String notifyType;
} }

View File

@ -36,11 +36,15 @@ public class HazardRuleNotifyObjectVo implements Serializable {
@ExcelProperty(value = "通知ID") @ExcelProperty(value = "通知ID")
private Long notifyId; private Long notifyId;
/**
* 通知名称
*/
private String notifyName;
/** /**
* 通知类型 * 通知类型
*/ */
@ExcelProperty(value = "通知类型") @ExcelProperty(value = "通知类型")
private String notifyType; private String notifyType;
} }

View File

@ -10,6 +10,7 @@ import org.dromara.safety.domain.HazardRule;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
@ -89,5 +90,9 @@ public class HazardRuleVo implements Serializable {
@ExcelProperty(value = "备注") @ExcelProperty(value = "备注")
private String remark; private String remark;
/**
* 通知对象
*/
List<HazardRuleNotifyObjectVo> notifyObjects;
} }

View File

@ -1,13 +1,10 @@
package org.dromara.safety.service; package org.dromara.safety.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.safety.domain.HazardRuleNotifyObject; import org.dromara.safety.domain.HazardRuleNotifyObject;
import org.dromara.safety.domain.bo.HazardRuleNotifyObjectBo;
import org.dromara.safety.domain.vo.HazardRuleNotifyObjectVo; import org.dromara.safety.domain.vo.HazardRuleNotifyObjectVo;
import org.dromara.safety.domain.vo.HazardRuleVo;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
@ -19,52 +16,25 @@ import java.util.List;
public interface IHazardRuleNotifyObjectService extends IService<HazardRuleNotifyObject> { public interface IHazardRuleNotifyObjectService extends IService<HazardRuleNotifyObject> {
/** /**
* 查询隐患规则通知对象 * 根据规则查询通知对象
* *
* @param ruleId 主键 * @param ruleId 规则id
* @return 隐患规则通知对象 * @return 通知对象
*/ */
HazardRuleNotifyObjectVo queryById(Long ruleId); List<HazardRuleNotifyObjectVo> queryVoByRule(Long ruleId);
/** /**
* 分页查询隐患规则通知对象列表 * 根据对象列表查询对象列表
* *
* @param bo 查询条件 * @param objectList 对象列表
* @param pageQuery 分页参数 * @return 对象列表
* @return 隐患规则通知对象分页列表
*/ */
TableDataInfo<HazardRuleNotifyObjectVo> queryPageList(HazardRuleNotifyObjectBo bo, PageQuery pageQuery); List<HazardRuleNotifyObjectVo> queryVo(List<HazardRuleNotifyObject> objectList);
/** /**
* 查询符合条件的隐患规则通知对象列表 * 补充数据
* *
* @param bo 查询条件 * @param voList 规则列表
* @return 隐患规则通知对象列表
*/ */
List<HazardRuleNotifyObjectVo> queryList(HazardRuleNotifyObjectBo bo); void supplementDataByRule(List<HazardRuleVo> voList);
/**
* 新增隐患规则通知对象
*
* @param bo 隐患规则通知对象
* @return 是否新增成功
*/
Boolean insertByBo(HazardRuleNotifyObjectBo bo);
/**
* 修改隐患规则通知对象
*
* @param bo 隐患规则通知对象
* @return 是否修改成功
*/
Boolean updateByBo(HazardRuleNotifyObjectBo bo);
/**
* 校验并批量删除隐患规则通知对象信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
} }

View File

@ -1,24 +1,21 @@
package org.dromara.safety.service.impl; package org.dromara.safety.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
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.HazardRuleNotifyObject; import org.dromara.safety.domain.HazardRuleNotifyObject;
import org.dromara.safety.domain.bo.HazardRuleNotifyObjectBo;
import org.dromara.safety.domain.vo.HazardRuleNotifyObjectVo; import org.dromara.safety.domain.vo.HazardRuleNotifyObjectVo;
import org.dromara.safety.domain.vo.HazardRuleVo;
import org.dromara.safety.mapper.HazardRuleNotifyObjectMapper; import org.dromara.safety.mapper.HazardRuleNotifyObjectMapper;
import org.dromara.safety.service.IHazardRuleNotifyObjectService; import org.dromara.safety.service.IHazardRuleNotifyObjectService;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.ISysUserService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collection; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 隐患规则通知对象Service业务层处理 * 隐患规则通知对象Service业务层处理
@ -31,101 +28,81 @@ import java.util.Map;
public class HazardRuleNotifyObjectServiceImpl extends ServiceImpl<HazardRuleNotifyObjectMapper, HazardRuleNotifyObject> public class HazardRuleNotifyObjectServiceImpl extends ServiceImpl<HazardRuleNotifyObjectMapper, HazardRuleNotifyObject>
implements IHazardRuleNotifyObjectService { implements IHazardRuleNotifyObjectService {
private final ISysUserService userService;
/** /**
* 查询隐患规则通知对象 * 根据规则查询通知对象
* *
* @param ruleId 主键 * @param ruleId 规则id
* @return 隐患规则通知对象 * @return 通知对象
*/ */
@Override @Override
public HazardRuleNotifyObjectVo queryById(Long ruleId) { public List<HazardRuleNotifyObjectVo> queryVoByRule(Long ruleId) {
return baseMapper.selectVoById(ruleId); List<HazardRuleNotifyObject> objectList = this.lambdaQuery()
.eq(HazardRuleNotifyObject::getRuleId, ruleId)
.list();
return this.queryVo(objectList);
} }
/** /**
* 分页查询隐患规则通知对象列表 * 根据对象列表查询对象列表
* *
* @param bo 查询条件 * @param objectList 对象列表
* @param pageQuery 分页参数 * @return 对象列表
* @return 隐患规则通知对象分页列表
*/ */
@Override @Override
public TableDataInfo<HazardRuleNotifyObjectVo> queryPageList(HazardRuleNotifyObjectBo bo, PageQuery pageQuery) { public List<HazardRuleNotifyObjectVo> queryVo(List<HazardRuleNotifyObject> objectList) {
LambdaQueryWrapper<HazardRuleNotifyObject> lqw = buildQueryWrapper(bo); List<HazardRuleNotifyObjectVo> voList = new ArrayList<>();
Page<HazardRuleNotifyObjectVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Map<String, List<HazardRuleNotifyObject>> map = objectList.stream()
return TableDataInfo.build(result); .collect(Collectors.groupingBy(HazardRuleNotifyObject::getNotifyType));
} for (Map.Entry<String, List<HazardRuleNotifyObject>> entry : map.entrySet()) {
String key = entry.getKey();
/** List<HazardRuleNotifyObject> value = entry.getValue();
* 查询符合条件的隐患规则通知对象列表 switch (key) {
* case "1": {
* @param bo 查询条件 List<Long> userIds = value.stream()
* @return 隐患规则通知对象列表 .map(HazardRuleNotifyObject::getNotifyId)
*/ .toList();
@Override List<SysUserVo> userVos = userService.selectUserByIds(userIds, null);
public List<HazardRuleNotifyObjectVo> queryList(HazardRuleNotifyObjectBo bo) { Map<Long, String> userNameMap = userVos.stream()
LambdaQueryWrapper<HazardRuleNotifyObject> lqw = buildQueryWrapper(bo); .collect(Collectors.toMap(SysUserVo::getUserId, SysUserVo::getNickName, (k, v) -> k));
return baseMapper.selectVoList(lqw); List<HazardRuleNotifyObjectVo> vos = value.stream().map(v -> {
} HazardRuleNotifyObjectVo vo = new HazardRuleNotifyObjectVo();
vo.setRuleId(v.getRuleId());
private LambdaQueryWrapper<HazardRuleNotifyObject> buildQueryWrapper(HazardRuleNotifyObjectBo bo) { vo.setNotifyId(v.getNotifyId());
Map<String, Object> params = bo.getParams(); vo.setNotifyName(userNameMap.getOrDefault(v.getNotifyId(), ""));
LambdaQueryWrapper<HazardRuleNotifyObject> lqw = Wrappers.lambdaQuery(); vo.setNotifyType(key);
lqw.eq(bo.getRuleId() != null, HazardRuleNotifyObject::getRuleId, bo.getRuleId()); return vo;
lqw.eq(bo.getNotifyId() != null, HazardRuleNotifyObject::getNotifyId, bo.getNotifyId()); }).toList();
lqw.eq(StringUtils.isNotBlank(bo.getNotifyType()), HazardRuleNotifyObject::getNotifyType, bo.getNotifyType()); voList.addAll(vos);
return lqw; }
} case null, default:
break;
/** }
* 新增隐患规则通知对象
*
* @param bo 隐患规则通知对象
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(HazardRuleNotifyObjectBo bo) {
HazardRuleNotifyObject add = MapstructUtils.convert(bo, HazardRuleNotifyObject.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setRuleId(add.getRuleId());
} }
return flag; return voList;
} }
/** /**
* 修改隐患规则通知对象 * 补充数据
* *
* @param bo 隐患规则通知对象 * @param voList 规则列表
* @return 是否修改成功
*/ */
@Override @Override
public Boolean updateByBo(HazardRuleNotifyObjectBo bo) { public void supplementDataByRule(List<HazardRuleVo> voList) {
HazardRuleNotifyObject update = MapstructUtils.convert(bo, HazardRuleNotifyObject.class); if (CollUtil.isEmpty(voList)) {
validEntityBeforeSave(update); return;
return baseMapper.updateById(update) > 0; }
} List<Long> ruleIds = voList.stream().map(HazardRuleVo::getId).toList();
List<HazardRuleNotifyObject> objectList = this.lambdaQuery()
/** .in(HazardRuleNotifyObject::getRuleId, ruleIds)
* 保存前的数据校验 .list();
*/ List<HazardRuleNotifyObjectVo> objectVos = this.queryVo(objectList);
private void validEntityBeforeSave(HazardRuleNotifyObject entity) { Map<Long, List<HazardRuleNotifyObjectVo>> map = objectVos.stream()
//TODO 做一些数据校验,如唯一约束 .collect(Collectors.groupingBy(HazardRuleNotifyObjectVo::getRuleId));
} for (HazardRuleVo vo : voList) {
List<HazardRuleNotifyObjectVo> vos = map.get(vo.getId());
/** vo.setNotifyObjects(vos);
* 校验并批量删除隐患规则通知对象信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
} }
return baseMapper.deleteByIds(ids) > 0;
} }
} }

View File

@ -5,20 +5,26 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.safety.domain.HazardRule; import org.dromara.safety.domain.HazardRule;
import org.dromara.safety.domain.HazardRuleNotifyObject;
import org.dromara.safety.domain.bo.HazardRuleBo; import org.dromara.safety.domain.bo.HazardRuleBo;
import org.dromara.safety.domain.bo.HazardRuleNotifyObjectBo;
import org.dromara.safety.domain.vo.HazardRuleNotifyObjectVo;
import org.dromara.safety.domain.vo.HazardRuleVo; import org.dromara.safety.domain.vo.HazardRuleVo;
import org.dromara.safety.mapper.HazardRuleMapper; import org.dromara.safety.mapper.HazardRuleMapper;
import org.dromara.safety.service.IHazardRuleNotifyObjectService;
import org.dromara.safety.service.IHazardRuleService; import org.dromara.safety.service.IHazardRuleService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 隐患分级通知规则Service业务层处理 * 隐患分级通知规则Service业务层处理
@ -31,6 +37,8 @@ import java.util.Map;
public class HazardRuleServiceImpl extends ServiceImpl<HazardRuleMapper, HazardRule> public class HazardRuleServiceImpl extends ServiceImpl<HazardRuleMapper, HazardRule>
implements IHazardRuleService { implements IHazardRuleService {
private final IHazardRuleNotifyObjectService hazardRuleNotifyObjectService;
/** /**
* 查询隐患分级通知规则 * 查询隐患分级通知规则
* *
@ -39,7 +47,10 @@ public class HazardRuleServiceImpl extends ServiceImpl<HazardRuleMapper, HazardR
*/ */
@Override @Override
public HazardRuleVo queryById(Long id) { public HazardRuleVo queryById(Long id) {
return baseMapper.selectVoById(id); HazardRuleVo hazardRuleVo = baseMapper.selectVoById(id);
List<HazardRuleNotifyObjectVo> objectVos = hazardRuleNotifyObjectService.queryVoByRule(id);
hazardRuleVo.setNotifyObjects(objectVos);
return hazardRuleVo;
} }
/** /**
@ -53,6 +64,7 @@ public class HazardRuleServiceImpl extends ServiceImpl<HazardRuleMapper, HazardR
public TableDataInfo<HazardRuleVo> queryPageList(HazardRuleBo bo, PageQuery pageQuery) { public TableDataInfo<HazardRuleVo> queryPageList(HazardRuleBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<HazardRule> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<HazardRule> lqw = buildQueryWrapper(bo);
Page<HazardRuleVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<HazardRuleVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
hazardRuleNotifyObjectService.supplementDataByRule(result.getRecords());
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -69,7 +81,6 @@ public class HazardRuleServiceImpl extends ServiceImpl<HazardRuleMapper, HazardR
} }
private LambdaQueryWrapper<HazardRule> buildQueryWrapper(HazardRuleBo bo) { private LambdaQueryWrapper<HazardRule> buildQueryWrapper(HazardRuleBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<HazardRule> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<HazardRule> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(HazardRule::getId); lqw.orderByDesc(HazardRule::getId);
lqw.eq(bo.getProjectId() != null, HazardRule::getProjectId, bo.getProjectId()); lqw.eq(bo.getProjectId() != null, HazardRule::getProjectId, bo.getProjectId());
@ -90,12 +101,25 @@ public class HazardRuleServiceImpl extends ServiceImpl<HazardRuleMapper, HazardR
* @return 是否新增成功 * @return 是否新增成功
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(HazardRuleBo bo) { public Boolean insertByBo(HazardRuleBo bo) {
HazardRule add = MapstructUtils.convert(bo, HazardRule.class); HazardRule add = MapstructUtils.convert(bo, HazardRule.class);
validEntityBeforeSave(add); validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
bo.setId(add.getId()); bo.setId(add.getId());
List<HazardRuleNotifyObjectBo> notifyObjects = bo.getNotifyObjects();
List<HazardRuleNotifyObject> objectList = notifyObjects.stream().map(item -> {
HazardRuleNotifyObject notifyObject = new HazardRuleNotifyObject();
notifyObject.setRuleId(add.getId());
notifyObject.setNotifyId(item.getNotifyId());
notifyObject.setNotifyType(item.getNotifyType());
return notifyObject;
}).toList();
boolean b = hazardRuleNotifyObjectService.saveBatch(objectList);
if (!b) {
throw new ServiceException("数据库操作失败", HttpStatus.ERROR);
}
} }
return flag; return flag;
} }
@ -107,10 +131,37 @@ public class HazardRuleServiceImpl extends ServiceImpl<HazardRuleMapper, HazardR
* @return 是否修改成功 * @return 是否修改成功
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(HazardRuleBo bo) { public Boolean updateByBo(HazardRuleBo bo) {
HazardRule oldRule = this.getById(bo.getId());
if (oldRule == null) {
throw new ServiceException("数据不存在", HttpStatus.ERROR);
}
HazardRule update = MapstructUtils.convert(bo, HazardRule.class); HazardRule update = MapstructUtils.convert(bo, HazardRule.class);
validEntityBeforeSave(update); validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0; boolean b = baseMapper.updateById(update) > 0;
if (b) {
// 旧通知对象
boolean remove = hazardRuleNotifyObjectService.remove(new LambdaQueryWrapper<HazardRuleNotifyObject>()
.eq(HazardRuleNotifyObject::getRuleId, bo.getId()));
if (!remove) {
throw new ServiceException("数据库操作失败", HttpStatus.ERROR);
}
// 新通知对象
List<HazardRuleNotifyObjectBo> notifyObjects = bo.getNotifyObjects();
List<HazardRuleNotifyObject> objectList = notifyObjects.stream().map(item -> {
HazardRuleNotifyObject notifyObject = new HazardRuleNotifyObject();
notifyObject.setRuleId(bo.getId());
notifyObject.setNotifyId(item.getNotifyId());
notifyObject.setNotifyType(item.getNotifyType());
return notifyObject;
}).toList();
boolean b1 = hazardRuleNotifyObjectService.saveBatch(objectList);
if (!b1) {
throw new ServiceException("数据库操作失败", HttpStatus.ERROR);
}
}
return b;
} }
/** /**

View File

@ -2006,21 +2006,67 @@ CREATE TABLE hazard_rule_notify_object
) comment '隐患规则通知对象'; ) comment '隐患规则通知对象';
-- 菜单 SQL -- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
values(1996139632219136001, '隐患分级通知规则', '1996118434672001025', '1', 'rule', 'safety/rule/index', 1, 0, 'C', '0', '0', 'safety:rule:list', '#', 103, 1, sysdate(), null, null, '隐患分级通知规则菜单'); status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1996139632219136001, '隐患分级通知规则', '1996118434672001025', '1', 'rule', 'safety/rule/index', 1, 0, 'C',
'0', '0', 'safety:rule:list', '#', 103, 1, sysdate(), null, null, '隐患分级通知规则菜单');
-- 按钮 SQL -- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
values(1996139632219136002, '隐患分级通知规则查询', 1996139632219136001, '1', '#', '', 1, 0, 'F', '0', '0', 'safety:rule:query', '#', 103, 1, sysdate(), null, null, ''); status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1996139632219136002, '隐患分级通知规则查询', 1996139632219136001, '1', '#', '', 1, 0, 'F', '0', '0',
'safety:rule:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
values(1996139632219136003, '隐患分级通知规则新增', 1996139632219136001, '2', '#', '', 1, 0, 'F', '0', '0', 'safety:rule:add', '#', 103, 1, sysdate(), null, null, ''); status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1996139632219136003, '隐患分级通知规则新增', 1996139632219136001, '2', '#', '', 1, 0, 'F', '0', '0',
'safety:rule:add', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
values(1996139632219136004, '隐患分级通知规则修改', 1996139632219136001, '3', '#', '', 1, 0, 'F', '0', '0', 'safety:rule:edit', '#', 103, 1, sysdate(), null, null, ''); status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1996139632219136004, '隐患分级通知规则修改', 1996139632219136001, '3', '#', '', 1, 0, 'F', '0', '0',
'safety:rule:edit', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
values(1996139632219136005, '隐患分级通知规则删除', 1996139632219136001, '4', '#', '', 1, 0, 'F', '0', '0', 'safety:rule:remove', '#', 103, 1, sysdate(), null, null, ''); status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1996139632219136005, '隐患分级通知规则删除', 1996139632219136001, '4', '#', '', 1, 0, 'F', '0', '0',
'safety:rule:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
values(1996139632219136006, '隐患分级通知规则导出', 1996139632219136001, '5', '#', '', 1, 0, 'F', '0', '0', 'safety:rule:export', '#', 103, 1, sysdate(), null, null, ''); status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1996139632219136006, '隐患分级通知规则导出', 1996139632219136001, '5', '#', '', 1, 0, 'F', '0', '0',
'safety:rule:export', '#', 103, 1, sysdate(), null, null, '');
-- 隐患整改情况表
create table hazard_hidden_danger_rectify
(
`id` bigint not null auto_increment comment '主键',
hidden_danger_id bigint not null comment '关联隐患ID',
rectify_times int not null comment '整改次数',
rectify_desc text null comment '整改说明',
rectify_files varchar(1000) null comment '整改凭证附件',
rectify_finish_time datetime null comment '完成整改时间',
review_user_id bigint null comment '复查人ID',
review_opinion text null comment '复查意见',
review_files varchar(1000) null comment '复查凭证附件',
review_time datetime null comment '复查时间',
review_status char not null default '0' comment '复查状态 0-待复查 1-复查通过 2-复查不通过',
`remark` varchar(512) null comment '备注',
`create_by` bigint null comment '创建者',
`update_by` bigint null comment '更新者',
`create_dept` bigint null comment '创建部门',
`create_time` datetime default CURRENT_TIMESTAMP null comment '创建时间',
`update_time` datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间',
PRIMARY KEY (`id`) USING BTREE,
index `idx_hidden_danger_id` (`hidden_danger_id` asc) using btree comment '关联隐患ID',
)
comment '隐患整改情况表' row_format = DYNAMIC;
-- 索引
create index idx_rectify_times
on hazard_hidden_danger_rectify (hidden_danger_id, rectify_times);