package com.ruoyi.project.tr.riskList.controller; import com.ruoyi.common.utils.BeanCopyUtils; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.security.ShiroUtils; import com.ruoyi.doublePrevention.entity.PreventRiskControlMeasure; import com.ruoyi.doublePrevention.entity.dto.resp.PreventRiskCheckUnitRespDTO; import com.ruoyi.doublePrevention.entity.dto.resp.PreventRiskUnitCodeAndNameListQueryRespDTO; import com.ruoyi.doublePrevention.service.RiskService; 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.system.user.service.IUserService; import com.ruoyi.project.tr.region.domain.Region; import com.ruoyi.project.tr.region.service.IRegionService; import com.ruoyi.project.tr.riskCheckPoint.domain.RiskCheckPoint; import com.ruoyi.project.tr.riskCheckPoint.service.IRiskCheckPointService; import com.ruoyi.project.tr.riskEvaluationPlan.domain.RiskEvaluationPlan; import com.ruoyi.project.tr.riskEvaluationPlan.service.IRiskEvaluationPlanService; import com.ruoyi.project.tr.riskList.domain.RiskList; import com.ruoyi.project.tr.riskList.domain.RiskListByCrafts; import com.ruoyi.project.tr.riskList.domain.RiskListByDevice; import com.ruoyi.project.tr.riskList.domain.RiskListByWork; import com.ruoyi.project.tr.riskList.service.IRiskListService; import com.ruoyi.project.tr.riskType.domain.RiskType; import com.ruoyi.project.tr.riskType.service.IRiskTypeService; 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 java.util.ArrayList; import java.util.Date; import java.util.List; /** * 风险清单Controller * * @author wm * @date 2020-05-07 */ @Controller @RequestMapping("/tr/riskList") public class RiskListController extends BaseController { private String prefix = "tr/riskList"; @Autowired private IRiskListService riskListService; @Autowired private IRiskTypeService riskTypeService; @Autowired private IUserService userService; @Autowired private IRiskEvaluationPlanService planService; @Autowired private IRiskCheckPointService checkPointService; @Autowired private IRegionService regionService; @Autowired private RiskService riskService; @GetMapping("/{name}") public String riskList(@PathVariable("name") String name, ModelMap mmap) { Integer type = null; switch (name) { case "device_list": type = 1; break; case "work_list": type = 2; break; case "crafts_list": type = 3; break; case "room_list": type = 5; break; } RiskType riskType = new RiskType(); List riskTypes = new ArrayList<>(); if (type != null){ riskTypes = getRiskTypes(type); } mmap.put("riskTypes", riskTypes); //查询该公司所有区域 List regionList = regionService.selectRegionListByCompanyId(ShiroUtils.getSysUser().getCompanyId()); mmap.put("regionList", regionList); return prefix + "/riskList_" + name; } /** * 查询风险清单列表 */ @PostMapping("/list/{id}") @ResponseBody public TableDataInfo list(@PathVariable("id") int id, RiskList riskList) { startPage(); riskList.setRiskType(id); User sysUser = getSysUser(); riskList.setCompanyId(sysUser.getCompanyId()); List list = riskListService.selectRiskListList(riskList); //判断是否是作业活动,如果是,则再次查询工作频率类型 if (id == 2) { RiskType riskType = new RiskType(); riskType.setRiskTypeType(4); riskType.setCompanyId(sysUser.getCompanyId()); List riskTypes = riskTypeService.selectRiskTypeList(riskType); //查询后遍历列表,取出类型名称赋值给list中的riskListWorkFrequency字段 list.forEach(ls -> { riskTypes.forEach(rt -> { if (ls.getRiskListWorkFrequency().equals(rt.getRiskTypeId())) { ls.setRiskListWorkFrequencyName(rt.getRiskTypeName()); } }); }); } return getDataTable(list); } /** * 导出风险清单列表 */ @Log(title = "风险清单", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody public AjaxResult export(RiskList riskList) { User user = ShiroUtils.getSysUser(); //按公司导出系统风险清单 riskList.setCompanyId(user.getCompanyId()); if (TrRiskTypeEnum.DEVICE.getCode().equals(riskList.getRiskType())||TrRiskTypeEnum.ROOM.getCode().equals(riskList.getRiskType())){ List list = riskListService.selectRiskListByDevice(riskList); ExcelUtil util = new ExcelUtil(RiskListByDevice.class); return util.exportExcel(list, "riskList"); }else if (TrRiskTypeEnum.WORK.getCode().equals(riskList.getRiskType())){ List list = riskListService.selectRiskListByWork(riskList); ExcelUtil util = new ExcelUtil(RiskListByWork.class); return util.exportExcel(list, "riskList"); }else if (TrRiskTypeEnum.CRAFTS.getCode().equals(riskList.getRiskType())){ List list = riskListService.selectRiskListByCrafts(riskList); ExcelUtil util = new ExcelUtil(RiskListByCrafts.class); return util.exportExcel(list, "riskList"); }else{ return AjaxResult.error("未找到对应类型"); } } /** * 新增风险清单 */ @GetMapping("/add/{id}") public String add(@PathVariable("id") int id, ModelMap mmap) { //查询风险清单类型 List riskTypes = getRiskTypes(id); //判断如果是作业活动,查询作业活动频率 if (id == 2) { List riskTypes1 = getRiskTypes(4); mmap.put("workFrequency", riskTypes1); } //根据公司id查询用户 List userListByCompanyId = getUserListByCompanyId(); mmap.put("riskTypes", riskTypes); mmap.put("userList", userListByCompanyId); String name = chooseName(id); return prefix + "/add_" + name; } private List getUserListByCompanyId() { User sysUser = getSysUser(); User user = new User(); user.setCompanyId(sysUser.getCompanyId()); List users = userService.selectUserList(user); return users; } /** * 新增保存风险清单 */ @Log(title = "风险清单", businessType = BusinessType.INSERT) @PostMapping("/add") @ResponseBody @Transactional public AjaxResult addSave(RiskList riskList) { //保存前获取用户名以及公司信息 User sysUser = getSysUser(); riskList.setCreateBy(sysUser.getUserName()); riskList.setUpdateBy(sysUser.getUserName()); Date nowDate = DateUtils.getNowDate(); riskList.setCreateTime(nowDate); riskList.setUpdateTime(nowDate); riskList.setCompanyId(sysUser.getCompanyId()); int result = riskListService.insertRiskList(riskList); riskList.getRiskListId(); //todo-2022 //新代码,为设施设备清单附属表添加uuid int uuidResult = riskService.insertRiskUnitUuid(riskList.getRiskListId()); if (uuidResult < 0){ throw new RuntimeException("保存uuid对应关系失败"); } return toAjax(result); } /** * 修改风险清单 */ @GetMapping("/edit/{riskListId}") public String edit(@PathVariable("riskListId") Long riskListId, ModelMap mmap) { RiskList riskList = riskListService.selectRiskListById(riskListId); mmap.put("riskList", riskList); //查询风险清单类型 List riskTypes = getRiskTypes(riskList.getRiskType()); mmap.put("riskTypes", riskTypes); //判断如果是作业活动,查询作业活动频率 if (riskList.getRiskType() == 2) { List riskTypes1 = getRiskTypes(4); mmap.put("workFrequency", riskTypes1); } List userListByCompanyId = getUserListByCompanyId(); mmap.put("userList", userListByCompanyId); Integer riskTypeId = riskList.getRiskType(); String name = chooseName(riskTypeId); return prefix + "/edit_" + name; } //根据用户查询该用户的风险告知卡 @GetMapping("/detail/{riskListId}") public String detail(@PathVariable("riskListId") Long riskListId, ModelMap mmap) { //通用查询如下 //查询该风险单元 RiskList riskList = riskListService.selectRiskListById(riskListId); mmap.put("riskList", riskList); //查询该风险单元的负责用户 User user = userService.selectUserById(riskList.getUserId()); mmap.put("user",user); //查询该风险单元,下,最近的一次计划 RiskEvaluationPlan plan = new RiskEvaluationPlan(); plan.setEvaluationRiskId(riskListId); List planList = planService.selectRiskEvaluationPlanList(plan); RiskEvaluationPlan lastPlan = planList.get(0); mmap.put("lastPlan", lastPlan); //查询评价计划中,对应的检查计划 RiskCheckPoint checkPoint = new RiskCheckPoint(); checkPoint.setPlanId(lastPlan.getPlanId()); List checkPointList = checkPointService.selectRiskCheckPointList(checkPoint); mmap.put("checkPointList", checkPointList); return prefix + "/detail"; } //风险告知卡的二维码 @GetMapping("/qrCodeByDetail/{riskListId}") public String qrCodeDetail(@PathVariable("riskListId") Long riskListId, ModelMap mmap) { RiskList riskList = riskListService.selectRiskListById(Long.valueOf(riskListId)); mmap.put("riskListId",riskListId); mmap.put("riskListName",riskList.getRiskListName()); return prefix + "/qrCodeByDetail"; } /** * 根据风险类型ID查询风险类型列表 * * @param riskTypeId * @return */ private List getRiskTypes(Integer riskTypeId) { RiskType riskType = new RiskType(); if (riskTypeId==1||riskTypeId==5){ //此处设备设施和,区域类型风险单元,公用一种风险单元类型 riskType.setRiskTypeType(1); }else{ riskType.setRiskTypeType(riskTypeId); } User sysUser = getSysUser(); riskType.setCompanyId(sysUser.getCompanyId()); List riskTypes = riskTypeService.selectRiskTypeList(riskType); return riskTypes; } /** * 修改保存风险清单 */ @Transactional @Log(title = "风险清单", businessType = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(RiskList riskList) { User sysUser = getSysUser(); riskList.setUpdateBy(sysUser.getUserName()); riskList.setUpdateTime(DateUtils.getNowDate()); int result = riskListService.updateRiskList(riskList); //todo-2022 新代码,附属表变更 riskService.updateRiskUnit(riskList.getRiskListId()); return toAjax(result); } /** * 删除风险清单 */ @Log(title = "风险清单", businessType = BusinessType.DELETE) @PostMapping("/remove") @ResponseBody public AjaxResult remove(String ids) { //删除风险清单的同时,删除评价计划, int result = riskListService.deleteRiskListByIds(ids); //todo-2022 新代码,附属表变更 riskService.deleteRiskUnit(ids); return toAjax(result); } /** * 设备设施风险清单 * @return */ @GetMapping("/riskListByDevice") public String riskListByDevice() { return prefix + "/riskListByDevice"; } /** * 新增风险清单 */ @GetMapping("/addByDevice") public String addByDevice() { return prefix + "/addByDevice"; } @GetMapping("/editByDevice/{riskListId}") public String editByDevice(@PathVariable("riskListId") Long riskListId, ModelMap mmap) { RiskList riskList = riskListService.selectRiskListById(riskListId); mmap.put("riskList", riskList); return prefix + "/editByDevice"; } /** * 工作风险清单 * @return */ @GetMapping("/riskListByWork") public String riskListByWork() { return prefix + "/riskListByWork"; } /** * 新增风险清单 */ @GetMapping("/addByWork") public String addByWork() { return prefix + "/addByWork"; } @GetMapping("/editByWork/{riskListId}") public String editByWork(@PathVariable("riskListId") Long riskListId, ModelMap mmap) { RiskList riskList = riskListService.selectRiskListById(riskListId); mmap.put("riskList", riskList); return prefix + "/editByWork"; } /** * 获取工艺风险列表 * @return */ @GetMapping("/riskListByCrafts") public String riskListByCrafts() { return prefix + "/riskListByCrafts"; } /** * 新增风险清单 */ @GetMapping("/addByCrafts") public String addByCrafts() { return prefix + "/addByCrafts"; } @GetMapping("/editByCrafts/{riskListId}") public String editByCrafts(@PathVariable("riskListId") Long riskListId, ModelMap mmap) { RiskList riskList = riskListService.selectRiskListById(riskListId); mmap.put("riskList", riskList); return prefix + "/editByCrafts"; } /** * 根据id选择需要拼接的名字 */ private String chooseName(int riskType) { String name = ""; switch (riskType) { case 1: name = "device_list"; break; case 2: name = "work_list"; break; case 3: name = "crafts_list"; break; case 5: name = "room_list"; break; } return name; } //跳转至风险单元选择页面 @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"; } @PostMapping("/list") @ResponseBody public TableDataInfo list(RiskList riskList) { startPage(); List riskLists = riskListService.selectRiskListList(riskList); List list = new ArrayList<>(); //todo-2022 新代码,使用DTO,封装进去措施数据 for (RiskList risk : riskLists) { PreventRiskCheckUnitRespDTO respDTO = BeanCopyUtils.copyBean(risk, PreventRiskCheckUnitRespDTO.class); //查询封装管控措施 List riskControlMeasureList = riskService.getRiskControlMeasureByRiskId(risk.getRiskListId()); if (riskControlMeasureList != null && riskControlMeasureList.size() > 1){ respDTO.setRiskControlMeasures(riskControlMeasureList); } list.add(respDTO); } return getDataTable(list); } //隐患上报-----跳转至风险单元选择页面 @GetMapping("/selectRiskListByDangerReport/{riskType}") public String selectRiskListByDangerReport(@PathVariable("riskType") String riskType, ModelMap mmap) { mmap.put("riskType", riskType); mmap.put("companyId", ShiroUtils.getSysUser().getCompanyId()); return prefix + "/selectRiskListByDangerReport"; } @PostMapping("/listByDangerReport") @ResponseBody public TableDataInfo listByDangerReport(RiskList riskList) { riskList.setIsEvaluation(1); List list = riskListService.selectRiskListList(riskList); return getDataTable(list); } //隐患排查定时任务-----跳转至风险单元选择页面(多选) @GetMapping("/selectRiskListByDangerReportMultiple") public String selectRiskListByDangerReport(ModelMap mmap) { mmap.put("companyId", ShiroUtils.getSysUser().getCompanyId()); return prefix + "/selectRiskListByDangerReportMultiple"; } }