package com.ruoyi.project.tr.criterionDetail.controller; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; 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.TrEvaluationMethodDetailsEnum; import com.ruoyi.project.enumerate.TrEvaluationMethodTypeEnum; import com.ruoyi.project.tr.criterionDetail.domain.CriterionDetail; import com.ruoyi.project.tr.criterionDetail.domain.CriterionDetailDTO; import com.ruoyi.project.tr.criterionDetail.service.ICriterionDetailService; import com.ruoyi.project.tr.determination.domain.Determination; import com.ruoyi.project.tr.determination.service.IDeterminationService; import com.ruoyi.project.tr.riskCheckPoint.domain.RiskCheckPoint; import com.ruoyi.project.tr.riskLevel.domain.RiskLevel; import com.ruoyi.project.tr.riskLevel.service.IRiskLevelService; import com.ruoyi.project.tr.rsStandard.domain.RsStandard; import com.ruoyi.project.tr.rsStandard.service.IRsStandardService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.util.List; /** * 准则明细Controller * * @author wm * @date 2020-05-05 */ @Controller @RequestMapping("/tr/criterionDetail") public class CriterionDetailController extends BaseController { private String prefix = "tr/criterionDetail"; @Autowired private ICriterionDetailService criterionDetailService; @Autowired private IRiskLevelService riskLevelService; @Autowired private IDeterminationService determinationService; @Autowired private IRsStandardService rsStandardService; @GetMapping() public String criterionDetail() { return prefix + "/criterionDetail"; } /** * 查询准则明细列表 */ @PostMapping("/list") @ResponseBody public TableDataInfo list(CriterionDetail criterionDetail) { startPage(); List list = criterionDetailService.selectCriterionDetailList(criterionDetail); return getDataTable(list); } /** * 导出准则明细列表 */ @Log(title = "准则明细", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody public AjaxResult export(CriterionDetail criterionDetail) { List list = criterionDetailService.selectCriterionDetailList(criterionDetail); ExcelUtil util = new ExcelUtil(CriterionDetail.class); return util.exportExcel(list, "criterionDetail"); } /** * 新增准则明细 */ @GetMapping("/add") public String add() { return prefix + "/add"; } /** * 新增保存准则明细 */ @Log(title = "准则明细", businessType = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(CriterionDetail criterionDetail) { return toAjax(criterionDetailService.insertCriterionDetail(criterionDetail)); } /** * 修改准则明细 */ @GetMapping("/edit/{detailId}") public String edit(@PathVariable("detailId") Long detailId, ModelMap mmap) { CriterionDetail criterionDetail = criterionDetailService.selectCriterionDetailById(detailId); mmap.put("criterionDetail", criterionDetail); return prefix + "/edit"; } /** * 修改保存准则明细 */ @Log(title = "准则明细", businessType = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(CriterionDetail criterionDetail) { return toAjax(criterionDetailService.updateCriterionDetail(criterionDetail)); } /** * 删除准则明细 */ @Log(title = "准则明细", businessType = BusinessType.DELETE) @PostMapping( "/remove") @ResponseBody public AjaxResult remove(String ids) { return toAjax(criterionDetailService.deleteCriterionDetailByIds(ids)); } /** * 根据方法跳至不同的方法选择列表 * @param criterion * @param time 时间标识 * Now * After * @param mmap * @return */ @GetMapping("/getDetial/{criterion}/{time}") public String getDetial(@PathVariable("criterion") String criterion, @PathVariable("time") String time, ModelMap mmap) { mmap.put("time",time); if (TrEvaluationMethodDetailsEnum.LS_L.getUrl().equals(criterion)){ mmap.put("criterionId",TrEvaluationMethodDetailsEnum.LS_L.getCriterionId()); }else if (TrEvaluationMethodDetailsEnum.LS_S.getUrl().equals(criterion)){ mmap.put("criterionId",TrEvaluationMethodDetailsEnum.LS_S.getCriterionId()); }else if (TrEvaluationMethodDetailsEnum.LEC_L.getUrl().equals(criterion)){ mmap.put("criterionId",TrEvaluationMethodDetailsEnum.LEC_L.getCriterionId()); }else if (TrEvaluationMethodDetailsEnum.LEC_E.getUrl().equals(criterion)){ mmap.put("criterionId",TrEvaluationMethodDetailsEnum.LEC_E.getCriterionId()); }else if (TrEvaluationMethodDetailsEnum.LEC_C.getUrl().equals(criterion)){ mmap.put("criterionId",TrEvaluationMethodDetailsEnum.LEC_C.getCriterionId()); }else if (TrEvaluationMethodDetailsEnum.MES_M.getUrl().equals(criterion)){ mmap.put("criterionId",TrEvaluationMethodDetailsEnum.MES_M.getCriterionId()); }else if (TrEvaluationMethodDetailsEnum.MES_E.getUrl().equals(criterion)){ mmap.put("criterionId",TrEvaluationMethodDetailsEnum.MES_E.getCriterionId()); }else if (TrEvaluationMethodDetailsEnum.MES_S.getUrl().equals(criterion)){ mmap.put("criterionId",TrEvaluationMethodDetailsEnum.MES_S.getCriterionId()); }else if (TrEvaluationMethodDetailsEnum.RS_R.getUrl().equals(criterion)){ mmap.put("criterionId",TrEvaluationMethodDetailsEnum.RS_R.getCriterionId()); }else if (TrEvaluationMethodDetailsEnum.RS_S.getUrl().equals(criterion)){ mmap.put("criterionId",TrEvaluationMethodDetailsEnum.RS_S.getCriterionId()); } return prefix + "/criterion"+criterion; } //用于计算评价结果 @PostMapping( "/calculation") @ResponseBody public AjaxResult calculation(CriterionDetailDTO criterionDetailDTO) { Integer methodId = criterionDetailDTO.getEvaluationMethodType(); BigDecimal sum = BigDecimal.ZERO; if (TrEvaluationMethodTypeEnum.LS.getMethodId().equals(methodId)) { if(criterionDetailDTO.getLS_L()!=null && criterionDetailDTO.getLS_S()!=null){ //LS 评分方法积分 CriterionDetail l = criterionDetailService.selectCriterionDetailById(criterionDetailDTO.getLS_L()); CriterionDetail s = criterionDetailService.selectCriterionDetailById(criterionDetailDTO.getLS_S()); sum = l.getDetailScore().multiply(s.getDetailScore()); } }else if (TrEvaluationMethodTypeEnum.LEC.getMethodId().equals(criterionDetailDTO.getEvaluationMethodType())){ if(criterionDetailDTO.getLEC_L()!=null && criterionDetailDTO.getLEC_E()!=null && criterionDetailDTO.getLEC_C()!=null){ //LEC 评分方法积分 CriterionDetail l = criterionDetailService.selectCriterionDetailById(criterionDetailDTO.getLEC_L()); CriterionDetail e = criterionDetailService.selectCriterionDetailById(criterionDetailDTO.getLEC_E()); CriterionDetail c = criterionDetailService.selectCriterionDetailById(criterionDetailDTO.getLEC_C()); sum = l.getDetailScore().multiply(e.getDetailScore()).multiply(c.getDetailScore()); } }else if (TrEvaluationMethodTypeEnum.MES.getMethodId().equals(criterionDetailDTO.getEvaluationMethodType())){ if(criterionDetailDTO.getMES_M()!=null && criterionDetailDTO.getMES_E()!=null && criterionDetailDTO.getMES_S()!=null){ //MES 评分方法积分 CriterionDetail m = criterionDetailService.selectCriterionDetailById(criterionDetailDTO.getMES_M()); CriterionDetail e = criterionDetailService.selectCriterionDetailById(criterionDetailDTO.getMES_E()); CriterionDetail s = criterionDetailService.selectCriterionDetailById(criterionDetailDTO.getMES_S()); sum = m.getDetailScore().multiply(e.getDetailScore()).multiply(s.getDetailScore()); } }else if (TrEvaluationMethodTypeEnum.RS.getMethodId().equals(criterionDetailDTO.getEvaluationMethodType())){ if(criterionDetailDTO.getRS_R()!=null && criterionDetailDTO.getRS_S()!=null){ //MES 评分方法积分 CriterionDetail r = criterionDetailService.selectCriterionDetailById(criterionDetailDTO.getRS_R()); CriterionDetail s = criterionDetailService.selectCriterionDetailById(criterionDetailDTO.getRS_S()); //根据对应 的可能性,和等级,获取确切的分值 RsStandard rsStandard = rsStandardService.selectRsStandardByKenengxingAndDengji(r.getRsRKenengxing(),s.getRsSDengji()) ; if (StringUtils.isNotNull(rsStandard)){ sum = rsStandard.getResult(); } } } //查询判断标准 List determinationList = determinationService.selectDeterminationListByMethod(Long.parseLong(methodId.toString())); Determination d_result =new Determination(); for(Determination d : determinationList){ //判断是否在这条范围之内 boolean flag = (sum.compareTo(d.getRiskMinNum())>0&& sum.compareTo(d.getRiskMaxNum())<0) ||sum.compareTo(d.getRiskMinNum())==0|| sum.compareTo(d.getRiskMaxNum())==0; if(flag){ d_result =d; } } //查询颜色标准 List riskLevelList = riskLevelService.selectRiskLevelListByMethodId(Long.parseLong(methodId.toString())); RiskLevel r_result = new RiskLevel(); for(RiskLevel r : riskLevelList){ //判断是否在这条范围之内 boolean flag =(sum.compareTo(r.getLevelBeginNum())>0&& sum.compareTo(r.getLevelEndNum())<0) ||sum.compareTo(r.getLevelBeginNum())==0 ||sum.compareTo(r.getLevelEndNum())==0; if(flag){ r_result =r; } } RiskCheckPoint checkPoint = new RiskCheckPoint(); sum = sum.setScale(2); /** 现有措施评价风险值 */ checkPoint.setEvaluationNowFengxianzhi(sum.toString()); /** 现有措施评价级别 */ checkPoint.setEvaluationNowJibie(d_result.getRiskLevel()); /** 现有措施评价风险级别 */ checkPoint.setEvaluationNowFengxianJibie(r_result.getRiskLevel()); /** 现有措施评价风险色 */ checkPoint.setEvaluationNowFengxianse(r_result.getLevelColor()); /** 现有措施评价管控层级(1班组级,2车间级,3部门级,4公司级) */ checkPoint.setEvaluationNowGuankongCengji(r_result.getLevelControlLevel()); return AjaxResult.success(checkPoint); } }