双重预防项目-国泰新华二开定制版
SZH
2022-08-20 f9f0687195e0fe349185437d22c495d74c8d4a20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
package com.ruoyi.project.tr.criterionDetail.service.impl;
 
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.text.Convert;
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.mapper.CriterionDetailMapper;
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.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.Service;
 
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
 
/**
 * 准则明细Service业务层处理
 * 
 * @author wm
 * @date 2020-05-05
 */
@Service
public class CriterionDetailServiceImpl implements ICriterionDetailService 
{
    @Autowired
    private CriterionDetailMapper criterionDetailMapper;
 
    @Autowired
    private IRiskLevelService riskLevelService;
 
    @Autowired
    private IDeterminationService determinationService;
 
    @Autowired
    private IRsStandardService rsStandardService;
 
 
    /**
     * 查询准则明细
     * 
     * @param detailId 准则明细ID
     * @return 准则明细
     */
    @Override
    public CriterionDetail selectCriterionDetailById(Long detailId)
    {
        return criterionDetailMapper.selectCriterionDetailById(detailId);
    }
 
    /**
     * 查询准则明细列表
     * 
     * @param criterionDetail 准则明细
     * @return 准则明细
     */
    @Override
    public List<CriterionDetail> selectCriterionDetailList(CriterionDetail criterionDetail)
    {
        return criterionDetailMapper.selectCriterionDetailList(criterionDetail);
    }
 
 
    /**
     * 新增准则明细
     * 
     * @param criterionDetail 准则明细
     * @return 结果
     */
    @Override
    public int insertCriterionDetail(CriterionDetail criterionDetail)
    {
        criterionDetail.setCreateTime(DateUtils.getNowDate());
        return criterionDetailMapper.insertCriterionDetail(criterionDetail);
    }
 
    /**
     * 修改准则明细
     * 
     * @param criterionDetail 准则明细
     * @return 结果
     */
    @Override
    public int updateCriterionDetail(CriterionDetail criterionDetail)
    {
        criterionDetail.setUpdateTime(DateUtils.getNowDate());
        return criterionDetailMapper.updateCriterionDetail(criterionDetail);
    }
 
    /**
     * 删除准则明细对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteCriterionDetailByIds(String ids)
    {
        return criterionDetailMapper.deleteCriterionDetailByIds(Convert.toStrArray(ids));
    }
 
    /**
     * 删除准则明细信息
     * 
     * @param detailId 准则明细ID
     * @return 结果
     */
    @Override
    public int deleteCriterionDetailById(Long detailId)
    {
        return criterionDetailMapper.deleteCriterionDetailById(detailId);
    }
 
 
 
 
    @Override
    public HashMap<String, String> 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 = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getLS_L());
                CriterionDetail s = criterionDetailMapper.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 = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getLEC_L());
                CriterionDetail e = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getLEC_E());
                CriterionDetail c = criterionDetailMapper.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 = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getMES_M());
                CriterionDetail e = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getMES_E());
                CriterionDetail s = criterionDetailMapper.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 = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getRS_R());
                CriterionDetail s = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getRS_S());
 
                //根据对应 的可能性,和等级,获取确切的分值
                RsStandard rsStandard = rsStandardService.selectRsStandardByKenengxingAndDengji(r.getRsRKenengxing(),s.getRsSDengji()) ;
 
                if (StringUtils.isNotNull(rsStandard)){
                    sum = rsStandard.getResult();
                }
            }
        }
 
        //查询判断标准
        List <Determination> 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 <RiskLevel> 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;
            }
        }
 
        sum = sum.setScale(2);
 
        HashMap<String ,String> map = new HashMap<>();
 
 
        /** 现有措施评价风险值 */
        map.put("Fengxianzhi",sum.toString());
        /** 现有措施评价级别 */
        map.put("Jibie",d_result.getRiskLevel());
        /** 现有措施评价风险级别 */
        map.put("FengxianJibie",r_result.getRiskLevel());
        /** 现有措施评价风险色 */
        map.put("Fengxianse",r_result.getLevelColor());
        /** 现有措施评价管控层级(1班组级,2车间级,3部门级,4公司级) */
        map.put("GuankongCengji",r_result.getLevelControlLevel());
 
        return map;
 
    }
 
 
    /**
     * 根据规则id,查询该规则下,对应的评分细则
     * @param criterionId
     * @return
     */
    @Override
    public List<CriterionDetail> selectCriterionDetailListByCriterionId(Long criterionId){
        CriterionDetail detail = new CriterionDetail();
        detail.setCriterionId(criterionId);
 
        return criterionDetailMapper.selectCriterionDetailList(detail);
    }
}