package com.gk.hotwork.Service.ServiceImpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.api.R; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gk.hotwork.Domain.DepartmentInfo; import com.gk.hotwork.Domain.Exception.BusinessException; import com.gk.hotwork.Domain.RiskAnaUnit; import com.gk.hotwork.Domain.RiskEvent; import com.gk.hotwork.Domain.UserInfo; import com.gk.hotwork.Domain.Utils.BeanUtils; import com.gk.hotwork.Domain.Utils.StringUtils; import com.gk.hotwork.Domain.Vo.RiskAnaUintExoprtVo; import com.gk.hotwork.Domain.Vo.RiskEventExportVo; import com.gk.hotwork.Mapper.RiskAnaUintMapper; import com.gk.hotwork.Service.DepartmentService; import com.gk.hotwork.Service.RiskAnaUnitService; import com.gk.hotwork.Service.RiskEventService; import com.gk.hotwork.Service.UserService; import io.netty.util.internal.ObjectUtil; import lombok.SneakyThrows; import org.apache.commons.lang3.ObjectUtils; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * @author celin * @date 2022/3/16 14:40 */ @Service("riskAnaUnitService") public class RiskAnaUnitServiceImpl extends ServiceImpl implements RiskAnaUnitService { @Autowired private RiskAnaUintMapper riskAnaUintMapper; @Autowired private DepartmentService departmentService; @Autowired private RiskEventService riskEventService; @Autowired private UserService userService; /** * @Description: 分页查询 * @date 2022/3/16 10:01 */ @Override public IPage selectPage(Page page, Map filter, UserInfo user) { return riskAnaUintMapper.selectPages(page,filter,user); } /** * @Description: 新增记录 */ @Override public void addOne(RiskAnaUnit riskAnaUnitVo,UserInfo userInfo) { Date date = new Date(); //判空 if (riskAnaUnitVo.getHazardDepId() == null) throw new BusinessException("部门id参数为空"); if (riskAnaUnitVo.getHazardLiablePersonId() == null) throw new BusinessException("负责人id参数为空"); DepartmentInfo department = departmentService.getById(riskAnaUnitVo.getHazardDepId()); if (department == null) throw new BusinessException("部门不存在"); UserInfo hazardLiablePerson = userService.getById(riskAnaUnitVo.getHazardLiablePersonId()); if(hazardLiablePerson == null) throw new BusinessException("择负责人不存在"); if(StringUtils.isBlank(riskAnaUnitVo.getRiskUnitName())) throw new BusinessException("请填写安全风险分析单元名称"); if(StringUtils.isBlank(riskAnaUnitVo.getHazardCode())) throw new BusinessException("请填写危险源编码"); //编号待定 riskAnaUnitVo.setCreateTime(date); riskAnaUnitVo.setUpdateTime(date); riskAnaUnitVo.setCreateBy(userInfo.getRealname()); riskAnaUnitVo.setUpdateBy(userInfo.getRealname()); riskAnaUnitVo.setValidFlag(Boolean.TRUE); this.save(riskAnaUnitVo); } /** * @Description: 修改信息 */ @Override public void modOne(RiskAnaUnit riskAnaUnitVo, UserInfo user) { if (riskAnaUnitVo.getId() == null) throw new BusinessException("id参数为空"); int count = this.count(new LambdaQueryWrapper().eq(RiskAnaUnit::getId, riskAnaUnitVo.getId())); if (count < 1) throw new BusinessException("未找到相应实体"); //判空 if (riskAnaUnitVo.getHazardDepId() == null) throw new BusinessException("部门id参数为空"); DepartmentInfo department = departmentService.getById(riskAnaUnitVo.getHazardDepId()); if (department == null) throw new BusinessException("部门不存在"); if (riskAnaUnitVo.getHazardLiablePersonId() == null) throw new BusinessException("负责人id参数为空"); UserInfo hazardLiablePerson = userService.getById(riskAnaUnitVo.getHazardLiablePersonId()); if(hazardLiablePerson == null) throw new BusinessException("择负责人不存在"); if(StringUtils.isBlank(riskAnaUnitVo.getRiskUnitName())) throw new BusinessException("请填写安全风险分析单元名称"); riskAnaUnitVo.setUpdateBy(user.getRealname()); riskAnaUnitVo.setUpdateTime(new Date()); this.updateById(riskAnaUnitVo); } /** * @Description: 删除 */ @Override public void delOne(Long id, UserInfo userInfo) { if (id == null) throw new BusinessException("id参数为空"); RiskAnaUnit riskAnaUnit = this.getById(id); if (riskAnaUnit == null) throw new BusinessException("未找到相应实体"); int count = riskEventService.count(new LambdaQueryWrapper() .eq(RiskEvent::getRiskUnitId, riskAnaUnit.getId()) .eq(RiskEvent::getValidFlag, Boolean.TRUE)); if (count > 0) throw new BusinessException("安全风险分析单元仍然绑定安全风险事件,无法删除"); RiskAnaUnit delOne = new RiskAnaUnit(); delOne.setId(id); delOne.setValidFlag(Boolean.FALSE); delOne.setUpdateBy(userInfo.getRealname()); delOne.setUpdateTime(new Date()); this.updateById(delOne); } @Override public List selectDepartmentAnalysis() { return riskAnaUintMapper.selectDepartmentAnalysis(); } @SneakyThrows @Override public List getInfo(HttpServletRequest request, HttpServletResponse response) { List riskAnaUnitlist = riskAnaUintMapper.getInfo(); List list = new ArrayList<>(); for (RiskAnaUnit riskAnaUnit : riskAnaUnitlist) { RiskAnaUintExoprtVo copy = BeanUtils.copy(riskAnaUnit, RiskAnaUintExoprtVo.class); list.add(copy); } return list; /* //第一步创建一个webbook,对应一个Excel文件 HSSFWorkbook wb=new HSSFWorkbook(); //第二步,在webbook中添加一个sheet,对应Excel文件中的sheet HSSFSheet sheet=wb.createSheet("管控措施"); //第三步,在sheet中添加表头第0行 HSSFRow row = sheet.createRow(0); //第四步,创建单元格,并设置表头居中 HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(HorizontalAlignment.CENTER);//居中格式 HSSFCell cell = row.createCell(0); cell.setCellValue("安全风险对象编码"); cell.setCellStyle(style); cell=row.createCell((short)1); cell.setCellValue("安全风险单元名称"); cell.setCellStyle(style); cell=row.createCell((short)2); cell.setCellValue("责任人"); cell.setCellStyle(style); cell=row.createCell((short)3); cell.setCellValue("责任部门"); cell.setCellStyle(style); for (int i = 0; i < list.size(); i++) { //创建单元格,并赋值 row=sheet.createRow(i+1); RiskAnaUnit riskAnaUnit = list.get(i); row.createCell((short) 0).setCellValue(riskAnaUnit.getHazardCode()); row.createCell((short)1).setCellValue(riskAnaUnit.getRiskUnitName()); row.createCell((short)2).setCellValue(riskAnaUnit.getHazardLiablePerson()); row.createCell((short)3).setCellValue(riskAnaUnit.getHazardDep()); } //第六步,下载Excel FileOutputStream fileOutputStream = new FileOutputStream(new File("D:\\安全风险分析单元.xls")); wb.write(fileOutputStream);*/ } @Override public RiskAnaUnit getInfoByRiskUnitName(String riskUnitName) { //riskAnaUintMapper.getInfoByRiskUnitName(riskUnitName); return riskAnaUintMapper.getInfoByRiskUnitName(riskUnitName); } @Transactional @Override public void importRiskAnaUnit(List param, UserInfo user) { if (CollectionUtils.isEmpty(param)){ throw new BusinessException("文件不能为空"); } for (RiskAnaUintExoprtVo riskAnaUintVo : param) { /**传入字段 * 风险源编码hazardCode 风险单元名称riskUnitName 责任人hazardLiablePerson 责任部门hazardDep * 补充字段 * 创建时间,修改时间,创建人,修改人,有效状态,责任人id,责任部门id * */ DepartmentInfo departmentInfo = departmentService.getInfoByName(riskAnaUintVo.getHazardDep()); if (departmentInfo.getDepartment() == null) throw new BusinessException("部门不存在"); UserInfo userInfo = userService.getByRealName(riskAnaUintVo.getHazardLiablePerson(), departmentInfo.getDepartment()); if (ObjectUtils.isEmpty(userInfo)) throw new BusinessException("负责人不存在"); if (riskAnaUintVo.getHazardCode() == null && riskAnaUintVo.getRiskUnitName() == null){ throw new BusinessException("生产装置编码与风险单元名称不能为空"); } RiskAnaUnit riskAnaUnit = new RiskAnaUnit(); riskAnaUnit.setHazardCode(riskAnaUintVo.getHazardCode()); riskAnaUnit.setRiskUnitName(riskAnaUintVo.getRiskUnitName()); riskAnaUnit.setHazardLiablePerson(riskAnaUintVo.getHazardLiablePerson()); riskAnaUnit.setHazardDep(riskAnaUintVo.getHazardDep()); riskAnaUnit.setHazardDepId(departmentInfo.getId()); riskAnaUnit.setHazardLiablePersonId(userInfo.getId()); riskAnaUnit.setCreateTime(new Date()); riskAnaUnit.setUpdateTime(new Date()); riskAnaUnit.setCreateBy(user.getRealname()); riskAnaUnit.setUpdateBy(user.getRealname()); riskAnaUnit.setValidFlag(Boolean.TRUE); this.save(riskAnaUnit); } } }