郑永安
2023-09-19 69185134fcfaf913ea45f1255677225a2cc311a4
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
230
231
232
233
234
235
236
237
package com.gk.hotwork.Service.ServiceImpl;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
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.RiskSource;
import com.gk.hotwork.Domain.UserInfo;
import com.gk.hotwork.Domain.Vo.RiskEventExportVo;
import com.gk.hotwork.Domain.Vo.RiskSourceSearchVo;
import com.gk.hotwork.Domain.Vo.RiskSourceVo;
import com.gk.hotwork.Domain.dto.RiskSourceDto;
import com.gk.hotwork.Domain.Utils.BeanUtils;
import com.gk.hotwork.Domain.Utils.StringUtils;
import com.gk.hotwork.Domain.dto.RiskSourceUpdateDto;
import com.gk.hotwork.Mapper.RiskSourceMapper;
import com.gk.hotwork.Service.DepartmentService;
import com.gk.hotwork.Service.RiskSourceService;
import com.gk.hotwork.Service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
@Service("RiskSourceService")
public class RiskSourceServiceImpl extends ServiceImpl<RiskSourceMapper, RiskSource> implements RiskSourceService {
 
    @Autowired
    private RiskSourceMapper riskSourceMapper;
 
    @Autowired
    private UserService userService;
 
    @Autowired
    private DepartmentService departmentService;
 
    @Override
    public IPage<RiskSource> findRiskSourceListByConditions(Page<RiskSource> page, RiskSourceSearchVo searchVo) {
        return riskSourceMapper.findRiskSourceListByConditionsAndPage(page,searchVo);
    }
 
    @Override
    public RiskSource findById(Long id) {
        return riskSourceMapper.selectById(id);
    }
 
    @Override
    public boolean updateById(RiskSourceUpdateDto riskSourceUpdateDto) {
        if(riskSourceUpdateDto.getId() == null || riskSourceUpdateDto.getId() <= 0){
            return false;
        }
        boolean updateResult = false;
        RiskSource riskSource = riskSourceMapper.selectById(riskSourceUpdateDto.getId());
        if(riskSource!=null && riskSource.getId() >0){
            //校验数据
            String checkResult = checkRiskSourceForUpdate(riskSource,riskSourceUpdateDto);
            if(checkResult.equals("Y")){
                riskSource.setEditTime(new Date());
                if(riskSourceMapper.updateById(riskSource) > 0){
                    updateResult = true;
                }
            }
        }
        return updateResult;
    }
 
    @Override
    public boolean insertOne(RiskSourceDto riskSourceDto) {
        RiskSource riskSource = new RiskSource();
        BeanUtils.copyProperties(riskSourceDto,riskSource);
        riskSource.setStatus((byte)1);
        riskSource.setCreateTime(new Date());
        riskSource.setEditTime(riskSource.getCreateTime());
        if(!checkRiskSourceForCreate(riskSource)){
            return false;
        }
        if(riskSourceMapper.insert(riskSource) > 0){
            return true;
        }else {
            return false;
        }
    }
 
    @Override
    public void delOne(Long id, UserInfo user) {
        if (id == null) throw new BusinessException("id参数为空");
        if (this.getById(id) == null) throw new BusinessException("找不到风险源");
        RiskSource riskSource = new RiskSource();
        riskSource.setId(id);
        riskSource.setStatus((byte)3);
        boolean success = this.updateById(riskSource);
        if (!success) throw new BusinessException("删除失败,请联系管理员");
 
    }
 
 
 
    private boolean checkRiskSourceForCreate(RiskSource riskSource){
        //检查用户是否存在
        boolean flag = true;
        if(riskSource == null){
            flag = false;
            return flag;
        }
        if(riskSource.getCreateUid() !=null && riskSource.getEditUid() !=null){
            UserInfo u1 = userService.getById(riskSource.getCreateUid());
            UserInfo u2 = userService.getById(riskSource.getEditUid());
            if(u1==null || u1.getId() <=0 || u2 == null || u2.getId() <= 0){
                flag = false;
            }else {
                riskSource.setEditUname(u2.getRealname());
            }
        }else {
            flag = false;
        }
        //检查部门是否存在
        if(riskSource.getDepId() != null){
            DepartmentInfo departmentInfo = departmentService.getById(riskSource.getDepId());
            if(departmentInfo == null || departmentInfo.getId() <= 0){
                flag = false;
            }else {
                riskSource.setDepName(departmentInfo.getDepartment());
            }
        }else {
            flag = false;
        }
 
        //检查状态值、类型值是否支持
        if(riskSource.getType() != null && riskSource.getType() != 1 && riskSource.getType() != 2){
            flag = false;
        }
        if(riskSource.getStatus() != 1 && riskSource.getStatus() != 2 && riskSource.getStatus() != 3){
            flag = false;
        }
        //检查风险等级是否支持
        if(riskSource.getLevel() != 1 && riskSource.getLevel() != 2 && riskSource.getLevel() != 3 && riskSource.getLevel() != 4){
            flag = false;
        }
        return flag;
    }
 
    private String checkRiskSourceForUpdate(RiskSource riskSource,RiskSourceUpdateDto updateDto){
        boolean checkResult = true;
        boolean editFlag = false;
        if(riskSource == null || riskSource.getId() <= 0 || updateDto == null || updateDto.getId() <= 0){
            return "风险源不存在";
        }
        //检查部门
        if(updateDto.getDepId() != null && updateDto.getDepId() != riskSource.getDepId()){
            DepartmentInfo departmentInfo = departmentService.getById(riskSource.getDepId());
            if(departmentInfo == null){
                return "部门不存在";
            }else {
                riskSource.setDepId(departmentInfo.getId());
                riskSource.setDepName(departmentInfo.getDepartment());
                editFlag = true;
            }
        }
        //检查类型变更
        if(updateDto.getType() != null && updateDto.getType() != riskSource.getType()){
            if(updateDto.getType().byteValue() == 1 || updateDto.getType().byteValue() == 2){
                riskSource.setType(updateDto.getType());
                editFlag = true;
            }else {
                return "类型不支持";
            }
        }
        //风险等级
        if(updateDto.getLevel() != null && updateDto.getLevel() != riskSource.getLevel()){
            if(updateDto.getLevel().byteValue() == 1 || updateDto.getLevel().byteValue() == 2
                    || updateDto.getLevel().byteValue() == 3 || updateDto.getLevel().byteValue() == 4){
                riskSource.setLevel(updateDto.getLevel());
                editFlag = true;
            }else {
                return "风险等级不支持";
            }
        }
        //名称变动
        if(updateDto.getName() != null && !updateDto.getName().equals(riskSource.getName())){
            if(updateDto.getName().length() > 15){
                return "风险名称超过15个字符";
            }else {
                riskSource.setName(updateDto.getName());
                editFlag = true;
            }
        }
        //位置变动
        if(updateDto.getLocation() != null && !updateDto.getLocation().equals(riskSource.getLocation())){
            if(updateDto.getLocation().length() > 30){
                return "位置描述超过30个字符";
            }else {
                riskSource.setLocation(updateDto.getLocation());
                editFlag = true;
            }
        }
        //风险描述变动
        if(updateDto.getAccidentDesc() != null && !updateDto.getAccidentDesc().equals(riskSource.getAccidentDesc())){
            if(updateDto.getAccidentDesc().length() > 50){
                return "事故秒数超过50个字符";
            }else {
                riskSource.setAccidentDesc(updateDto.getAccidentDesc());
                editFlag = true;
            }
        }
        if(editFlag == true){
            UserInfo userInfo = userService.getById(updateDto.getEditUid());
            if(userInfo!=null && userInfo.getId()>0){
                riskSource.setEditUid(userInfo.getId());
                riskSource.setEditUname(userInfo.getRealname());
                return "Y";
            }else {
                return "N";
            }
        }else {
            return "N";
        }
    }
 
    /** 生产装置导出 */
    @Override
    public List<RiskSourceVo> getRiskSourceExport(HttpServletRequest request, HttpServletResponse response) {
 
        List<RiskSource> risklist = riskSourceMapper.getRiskSourceList();
        List<RiskSourceVo> list = new ArrayList<>();
 
        for (RiskSource riskSource : risklist) {
            RiskSourceVo copy = BeanUtils.copy(riskSource, RiskSourceVo.class);
            list.add(copy);
        }
        return list;
    }
}