package com.ruoyi.project.tr.riskList.controller; import com.github.pagehelper.util.StringUtil; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.security.ShiroUtils; import com.ruoyi.doublePrevention.entity.PreventRiskCheckUnit; import com.ruoyi.doublePrevention.entity.PreventRiskControlMeasure; import com.ruoyi.doublePrevention.repository.param.PreventPointAndMeasureParams; import com.ruoyi.doublePrevention.service.RiskService; import com.ruoyi.doublePrevention.service.baseService.PreventCJReportRiskControlMeasureService; import com.ruoyi.doublePrevention.service.baseService.PreventRiskControlMeasureService; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.project.enumerate.TrRiskTypeEnum; import com.ruoyi.project.system.user.domain.User; import com.ruoyi.project.tr.baseCheckPoint.domain.BaseCheckPoint; import com.ruoyi.project.tr.baseCheckPoint.service.IBaseCheckPointService; import com.ruoyi.project.tr.riskCheckPoint.service.IRiskCheckPointService; import com.ruoyi.project.tr.riskList.domain.ImportDataRespBO; import com.ruoyi.project.tr.riskList.domain.RiskList; import com.ruoyi.project.tr.riskList.service.IRiskListService; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 基础清单Controller * * @author wm * @date 2020-05-07 */ @Controller @RequestMapping("/tr/baseRisk") public class BaseRiskController extends BaseController { private String prefix = "tr/baseRisk"; @Autowired private IRiskListService riskListService; @Autowired private IBaseCheckPointService baseCheckPointService; @Autowired private PreventRiskControlMeasureService riskControlMeasureService; @Autowired private RiskService riskService; /** * 查询基础清单列表 * @param mmap * @return */ @GetMapping("") public String riskList( ModelMap mmap) { return prefix + "/riskList"; } /** * 查询风险清单列表 */ @PostMapping("/list") @ResponseBody public TableDataInfo list(RiskList riskList) { startPage(); riskList.setRiskType(TrRiskTypeEnum.BASE.getCode()); riskList.setCompanyId(getSysUser().getCompanyId()); List list = riskListService.selectRiskListList(riskList); return getDataTable(list); } /** * 导出风险清单列表 */ @Log(title = "风险清单", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody public AjaxResult export(RiskList riskList) { riskList.setRiskType(TrRiskTypeEnum.BASE.getCode()); riskList.setCompanyId(getSysUser().getCompanyId()); List list = riskListService.selectRiskListList(riskList); ExcelUtil util = new ExcelUtil(RiskList.class); return util.exportExcel(list, "riskList"); } /** * 新增基础清单 */ @GetMapping("/add") public String add( ModelMap mmap) { return prefix + "/add"; } /** * 新增保存风险清单 */ @Log(title = "风险清单", businessType = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(RiskList riskList) { //老代码 //保存前获取用户名以及公司信息 User sysUser = getSysUser(); riskList.setCreateBy(sysUser.getUserName()); riskList.setCreateTime(DateUtils.getNowDate()); riskList.setRiskType(TrRiskTypeEnum.BASE.getCode()); riskList.setCompanyId(getSysUser().getCompanyId()); return toAjax(riskListService.insertRiskList(riskList)); } /** * 修改风险清单 */ @GetMapping("/edit/{riskListId}") public String edit(@PathVariable("riskListId") Long riskListId, ModelMap mmap) { RiskList riskList = riskListService.selectRiskListById(riskListId); mmap.put("riskList", riskList); //判断如果是作业活动,查询作业活动频率 return prefix + "/edit"; } /** * 修改保存风险清单 */ @Log(title = "风险清单", businessType = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(RiskList riskList) { User sysUser = getSysUser(); riskList.setUpdateBy(sysUser.getUserName()); riskList.setUpdateTime(DateUtils.getNowDate()); return toAjax(riskListService.updateRiskList(riskList)); } /** * 删除风险清单 */ @Log(title = "风险清单", businessType = BusinessType.DELETE) @PostMapping("/remove") @ResponseBody public AjaxResult remove(String ids) { return toAjax(riskListService.deleteRiskListByIds(ids)); } /** * 跳转至风险单元选择页面 * @param riskType * @param mmap * @return */ @GetMapping("/selectRiskList/{riskType}") public String selectRiskList(@PathVariable("riskType") String riskType, ModelMap mmap) { mmap.put("riskType", riskType); mmap.put("companyId", ShiroUtils.getSysUser().getCompanyId()); return prefix + "/selectRiskList"; } /** * 基础排查清单+检查点的导入 todo * @param file * @return * @throws Exception */ @Log(title = "基础排查清单+检查点的导入", businessType = BusinessType.IMPORT) @PostMapping("/importData") @ResponseBody @Transactional public AjaxResult importData(MultipartFile file) throws Exception { if (file.isEmpty()){ return AjaxResult.error("文件不能为空"); }else { ExcelUtil util = new ExcelUtil(ImportDataRespBO.class); System.out.println(file.getInputStream()); List importDataList = util.importExcel(file.getInputStream()); System.out.println(importDataList.size()); Boolean judgeDataBlean = Boolean.TRUE; String errorMessage = ""; for (int i = 0; i < importDataList.size(); i++) { ImportDataRespBO importData = importDataList.get(i); if (StringUtil.isEmpty(importData.getRiskListName())) { judgeDataBlean = Boolean.FALSE; errorMessage += StringUtils.isEmpty(errorMessage)? "第" + (i + 2) + "行,该[基础清单名称]不能为空" :"
第" + (i + 1) + "行,该[基础清单名称]不能为空"; } if (StringUtil.isEmpty(importData.getCheckType())) { judgeDataBlean = Boolean.FALSE; errorMessage += StringUtils.isEmpty(errorMessage)? "第" + (i + 2) + "行,该[检查类别]不能为空" :"
第" + (i + 1) + "行,该[检查类别]不能为空"; } if (StringUtil.isEmpty(importData.getCheckContent())) { judgeDataBlean = Boolean.FALSE; errorMessage += StringUtils.isEmpty(errorMessage)? "第" + (i + 2) + "行,该[检查内容]不能为空" :"
第" + (i + 1) + "行,该[检查内容]不能为空"; } if (StringUtil.isEmpty(importData.getControlMeasureCode())) { judgeDataBlean = Boolean.FALSE; errorMessage += StringUtils.isEmpty(errorMessage)? "第" + (i + 2) + "行,该[管控措施编号]不能为空" :"
第" + (i + 1) + "行,该[管控措施编号]不能为空"; } } if(!judgeDataBlean){ return AjaxResult.error(errorMessage); } // List riskLists = new ArrayList<>(); 先不使用批量插入 // List baseCheckPoints = new ArrayList<>(); for (int i = 0; i < importDataList.size(); i++) { ImportDataRespBO importData = importDataList.get(i); RiskList riskList = new RiskList(); BaseCheckPoint baseCheckPoint = new BaseCheckPoint(); PreventPointAndMeasureParams preventPointAndMeasureParams = new PreventPointAndMeasureParams(); User sysUser = getSysUser(); Date nowDate = DateUtils.getNowDate(); //1.RiskList,拿到id -需要根据那么判断,是否已经存在 RiskList infoByRiskListName = riskListService.getInfoByRiskListName(importData.getRiskListName()); if (ObjectUtils.isEmpty(infoByRiskListName)){ riskList.setRiskListName(importData.getRiskListName()); riskList.setCreateBy(sysUser.getUserName()); riskList.setCreateTime(nowDate); riskList.setRiskType(TrRiskTypeEnum.BASE.getCode()); riskList.setCompanyId(getSysUser().getCompanyId()); int resultRiskList = riskListService.insertRiskList(riskList); if (resultRiskList < 1){ //todo 需要检查是否收到标题行影响 throw new RuntimeException("第" + (i+2) + "行基础清单插入错误,导入失败"); } }else { riskList.setRiskListId(infoByRiskListName.getRiskListId()); } //2.baseCheckPoint,拿到id baseCheckPoint.setRiskId(riskList.getRiskListId()); baseCheckPoint.setCreateBy(sysUser.getUserName()); baseCheckPoint.setCreateTime(nowDate); baseCheckPoint.setCheckContent(importData.getCheckContent()); baseCheckPoint.setCheckType(importData.getCheckType()); if (ObjectUtils.isEmpty(importData.getCheckResult())){ baseCheckPoint.setCheckResult(importData.getCheckResult()); } int resultBaseCheckPoint = baseCheckPointService.insertBaseCheckPoint(baseCheckPoint); if (resultBaseCheckPoint < 1){ throw new RuntimeException("第" + (i+2) + "行风险点插入错误,导入失败"); } //3.preventRiskCheckUnit PreventRiskControlMeasure controlMeasure = riskControlMeasureService.getPreventRiskControlMeasureByControlMeasureCode(importData.getControlMeasureCode()); if (ObjectUtils.isEmpty(controlMeasure)){ throw new RuntimeException("第" + (i+2) + "行管控措施不存在,导入失败"); } preventPointAndMeasureParams.setRiskId(riskList.getRiskListId()); preventPointAndMeasureParams.setBaseCheckPointId(baseCheckPoint.getCheckPointId()); preventPointAndMeasureParams.setControlMeasureId(controlMeasure.getId()); int result = riskService.insertPointAndMeasure(preventPointAndMeasureParams); if (result < 1){ throw new RuntimeException("第" + (i+2) + "行风险点与管控措施关联关系保持出错,导入失败"); } } return AjaxResult.success("导入成功!"); } } }