feat(ems): 新增设备隐患记录和安全环保制度文档模块前后端

- 添加设备隐患记录实体类、业务对象和视图对象
- 实现设备隐患记录的增删改查接口及业务逻辑
- 添加安全环保制度文档实体类、业务对象和视图对象
- 实现安全环保制度文档的增删改查接口及业务逻辑
- 配置MyBatis映射文件和Mapper接口- 添加定时任务用于生成模拟报警记录
- 实现Excel导出功能及相关数据转换逻辑
This commit is contained in:
2025-10-13 11:39:55 +08:00
parent 0a366b054c
commit a63387e069
22 changed files with 2312 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
package com.klp.ems.service;
import com.klp.ems.domain.EmsHazardRecord;
import com.klp.ems.domain.vo.EmsHazardRecordVo;
import com.klp.ems.domain.bo.EmsHazardRecordBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 设备隐患记录Service接口
*
* @author Joshi
* @date 2025-10-13
*/
public interface IEmsHazardRecordService {
/**
* 查询设备隐患记录
*/
EmsHazardRecordVo queryById(Long hazardId);
/**
* 查询设备隐患记录列表
*/
TableDataInfo<EmsHazardRecordVo> queryPageList(EmsHazardRecordBo bo, PageQuery pageQuery);
/**
* 查询设备隐患记录列表
*/
List<EmsHazardRecordVo> queryList(EmsHazardRecordBo bo);
/**
* 新增设备隐患记录
*/
Boolean insertByBo(EmsHazardRecordBo bo);
/**
* 修改设备隐患记录
*/
Boolean updateByBo(EmsHazardRecordBo bo);
/**
* 校验并批量删除设备隐患记录信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,49 @@
package com.klp.ems.service;
import com.klp.ems.domain.EmsSafetyEnvDoc;
import com.klp.ems.domain.vo.EmsSafetyEnvDocVo;
import com.klp.ems.domain.bo.EmsSafetyEnvDocBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 安全环保制度文档Service接口
*
* @author Joshi
* @date 2025-10-13
*/
public interface IEmsSafetyEnvDocService {
/**
* 查询安全环保制度文档
*/
EmsSafetyEnvDocVo queryById(Long docId);
/**
* 查询安全环保制度文档列表
*/
TableDataInfo<EmsSafetyEnvDocVo> queryPageList(EmsSafetyEnvDocBo bo, PageQuery pageQuery);
/**
* 查询安全环保制度文档列表
*/
List<EmsSafetyEnvDocVo> queryList(EmsSafetyEnvDocBo bo);
/**
* 新增安全环保制度文档
*/
Boolean insertByBo(EmsSafetyEnvDocBo bo);
/**
* 修改安全环保制度文档
*/
Boolean updateByBo(EmsSafetyEnvDocBo bo);
/**
* 校验并批量删除安全环保制度文档信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,140 @@
package com.klp.ems.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.ems.domain.bo.EmsHazardRecordBo;
import com.klp.ems.domain.vo.EmsHazardRecordVo;
import com.klp.ems.domain.EmsHazardRecord;
import com.klp.ems.mapper.EmsHazardRecordMapper;
import com.klp.ems.service.IEmsHazardRecordService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 设备隐患记录Service业务层处理
*
* @author Joshi
* @date 2025-10-13
*/
@RequiredArgsConstructor
@Service
public class EmsHazardRecordServiceImpl implements IEmsHazardRecordService {
private final EmsHazardRecordMapper baseMapper;
/**
* 查询设备隐患记录
*/
@Override
public EmsHazardRecordVo queryById(Long hazardId){
return baseMapper.selectVoById(hazardId);
}
/**
* 查询设备隐患记录列表
*/
@Override
public TableDataInfo<EmsHazardRecordVo> queryPageList(EmsHazardRecordBo bo, PageQuery pageQuery) {
QueryWrapper<EmsHazardRecord> qw = buildQueryWrapperPlus(bo);
Page<EmsHazardRecordVo> result = baseMapper.selectVoPagePlus(pageQuery.build(), qw);
return TableDataInfo.build(result);
}
/**
* 查询设备隐患记录列表
*/
@Override
public List<EmsHazardRecordVo> queryList(EmsHazardRecordBo bo) {
LambdaQueryWrapper<EmsHazardRecord> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<EmsHazardRecord> buildQueryWrapper(EmsHazardRecordBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<EmsHazardRecord> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getDeviceId() != null, EmsHazardRecord::getDeviceId, bo.getDeviceId());
lqw.eq(StringUtils.isNotBlank(bo.getHazardType()), EmsHazardRecord::getHazardType, bo.getHazardType());
lqw.eq(bo.getHazardLevel() != null, EmsHazardRecord::getHazardLevel, bo.getHazardLevel());
lqw.eq(StringUtils.isNotBlank(bo.getHazardDesc()), EmsHazardRecord::getHazardDesc, bo.getHazardDesc());
lqw.eq(bo.getDiscoveryTime() != null, EmsHazardRecord::getDiscoveryTime, bo.getDiscoveryTime());
lqw.eq(bo.getInputTime() != null, EmsHazardRecord::getInputTime, bo.getInputTime());
lqw.eq(StringUtils.isNotBlank(bo.getInputUser()), EmsHazardRecord::getInputUser, bo.getInputUser());
lqw.eq(bo.getStatus() != null, EmsHazardRecord::getStatus, bo.getStatus());
lqw.eq(StringUtils.isNotBlank(bo.getRectifyUser()), EmsHazardRecord::getRectifyUser, bo.getRectifyUser());
lqw.eq(bo.getRectifyTime() != null, EmsHazardRecord::getRectifyTime, bo.getRectifyTime());
lqw.eq(StringUtils.isNotBlank(bo.getRectifyDesc()), EmsHazardRecord::getRectifyDesc, bo.getRectifyDesc());
return lqw;
}
// 表别名 h 的联表分页查询条件
private QueryWrapper<EmsHazardRecord> buildQueryWrapperPlus(EmsHazardRecordBo bo) {
QueryWrapper<EmsHazardRecord> qw = Wrappers.query();
qw.eq(bo.getDeviceId() != null, "h.device_id", bo.getDeviceId());
qw.eq(StringUtils.isNotBlank(bo.getHazardType()), "h.hazard_type", bo.getHazardType());
qw.eq(bo.getHazardLevel() != null, "h.hazard_level", bo.getHazardLevel());
qw.eq(StringUtils.isNotBlank(bo.getHazardDesc()), "h.hazard_desc", bo.getHazardDesc());
qw.eq(bo.getDiscoveryTime() != null, "h.discovery_time", bo.getDiscoveryTime());
qw.eq(bo.getInputTime() != null, "h.input_time", bo.getInputTime());
qw.eq(StringUtils.isNotBlank(bo.getInputUser()), "h.input_user", bo.getInputUser());
qw.eq(bo.getStatus() != null, "h.status", bo.getStatus());
qw.eq(StringUtils.isNotBlank(bo.getRectifyUser()), "h.rectify_user", bo.getRectifyUser());
qw.eq(bo.getRectifyTime() != null, "h.rectify_time", bo.getRectifyTime());
qw.eq(StringUtils.isNotBlank(bo.getRectifyDesc()), "h.rectify_desc", bo.getRectifyDesc());
//逻辑删除
qw.eq("h.del_flag", 0);
// 这里不用写 joinSQL 在 xml 中定义
return qw;
}
/**
* 新增设备隐患记录
*/
@Override
public Boolean insertByBo(EmsHazardRecordBo bo) {
EmsHazardRecord add = BeanUtil.toBean(bo, EmsHazardRecord.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setHazardId(add.getHazardId());
}
return flag;
}
/**
* 修改设备隐患记录
*/
@Override
public Boolean updateByBo(EmsHazardRecordBo bo) {
EmsHazardRecord update = BeanUtil.toBean(bo, EmsHazardRecord.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(EmsHazardRecord entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除设备隐患记录
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,115 @@
package com.klp.ems.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.ems.domain.bo.EmsSafetyEnvDocBo;
import com.klp.ems.domain.vo.EmsSafetyEnvDocVo;
import com.klp.ems.domain.EmsSafetyEnvDoc;
import com.klp.ems.mapper.EmsSafetyEnvDocMapper;
import com.klp.ems.service.IEmsSafetyEnvDocService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 安全环保制度文档Service业务层处理
*
* @author Joshi
* @date 2025-10-13
*/
@RequiredArgsConstructor
@Service
public class EmsSafetyEnvDocServiceImpl implements IEmsSafetyEnvDocService {
private final EmsSafetyEnvDocMapper baseMapper;
/**
* 查询安全环保制度文档
*/
@Override
public EmsSafetyEnvDocVo queryById(Long docId){
return baseMapper.selectVoById(docId);
}
/**
* 查询安全环保制度文档列表
*/
@Override
public TableDataInfo<EmsSafetyEnvDocVo> queryPageList(EmsSafetyEnvDocBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<EmsSafetyEnvDoc> lqw = buildQueryWrapper(bo);
Page<EmsSafetyEnvDocVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询安全环保制度文档列表
*/
@Override
public List<EmsSafetyEnvDocVo> queryList(EmsSafetyEnvDocBo bo) {
LambdaQueryWrapper<EmsSafetyEnvDoc> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<EmsSafetyEnvDoc> buildQueryWrapper(EmsSafetyEnvDocBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<EmsSafetyEnvDoc> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getDocNo()), EmsSafetyEnvDoc::getDocNo, bo.getDocNo());
lqw.like(StringUtils.isNotBlank(bo.getDocName()), EmsSafetyEnvDoc::getDocName, bo.getDocName());
lqw.eq(bo.getDocCategory() != null, EmsSafetyEnvDoc::getDocCategory, bo.getDocCategory());
lqw.eq(StringUtils.isNotBlank(bo.getDocType()), EmsSafetyEnvDoc::getDocType, bo.getDocType());
lqw.eq(StringUtils.isNotBlank(bo.getAccessory()), EmsSafetyEnvDoc::getAccessory, bo.getAccessory());
lqw.eq(bo.getPublishStatus() != null, EmsSafetyEnvDoc::getPublishStatus, bo.getPublishStatus());
lqw.eq(bo.getPublishTime() != null, EmsSafetyEnvDoc::getPublishTime, bo.getPublishTime());
return lqw;
}
/**
* 新增安全环保制度文档
*/
@Override
public Boolean insertByBo(EmsSafetyEnvDocBo bo) {
EmsSafetyEnvDoc add = BeanUtil.toBean(bo, EmsSafetyEnvDoc.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setDocId(add.getDocId());
}
return flag;
}
/**
* 修改安全环保制度文档
*/
@Override
public Boolean updateByBo(EmsSafetyEnvDocBo bo) {
EmsSafetyEnvDoc update = BeanUtil.toBean(bo, EmsSafetyEnvDoc.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(EmsSafetyEnvDoc entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除安全环保制度文档
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}