双重预防项目-国泰新华二开定制版
heheng
2 天以前 ac8870aae3ec2b5ec5315cc668b482858195cfa4
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.ruoyi.project.mobile.service;
 
 
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.constant.TrHiddenDangerCheckConstants;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.security.ShiroUtils;
import com.ruoyi.doublePrevention.service.RiskService;
import com.ruoyi.doublePrevention.service.baseService.PreventRiskDangerConfirmLogService;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.project.mobile.domain.ApiRequestHeader;
import com.ruoyi.project.mobile.domain.ApiResult;
import com.ruoyi.project.system.user.domain.User;
import com.ruoyi.project.system.user.service.IUserService;
import com.ruoyi.project.tr.hiddenDangerCheck.domain.HiddenDangerCheck;
import com.ruoyi.project.tr.hiddenDangerCheck.service.IHiddenDangerCheckService;
import com.ruoyi.project.tr.hiddenDangerCheckPoint.domain.HiddenDangerCheckPoint;
import com.ruoyi.project.tr.hiddenDangerCheckPoint.service.IHiddenDangerCheckPointService;
import org.apache.commons.lang3.ObjectUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
import java.lang.reflect.AnnotatedType;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
 
@Service
public class ApiDangerReportService extends BaseApiService {
 
    private static Logger logger = LoggerFactory.getLogger(ApiDangerReportService.class);
 
    @Autowired
    IHiddenDangerCheckService hiddenDangerCheckService;//隐患Service
 
    @Autowired
    IHiddenDangerCheckPointService hdcpService;//隐患检查点Service
 
    @Autowired
    IUserService userService;//用户Service
 
    @Autowired
    private PreventRiskDangerConfirmLogService confirmLogService;
 
    @Autowired
    private RiskService riskService;
 
    /**
     * 获取隐患上报列表
     *
     * @param str
     * @param header
     * @return
     */
    public ApiResult getDangerReportList(String str, ApiRequestHeader header) {
        //验证userId,loginName,token,deviceType,deviceId,appType 是否一致
        ApiRequestHeader requestHeader = getHeader(header);
        if (!(header.equals(requestHeader))) {
            return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致");
        }
        try {
            Map<String, String> queryHiddenDangerCheck = new ObjectMapper().readValue(str, HashMap.class);
            String dangerReportType = queryHiddenDangerCheck.get("dangerReportType");//客户端传输隐患类型
            HiddenDangerCheckPoint hdcp = new HiddenDangerCheckPoint();
            if (StringUtils.isEmpty(dangerReportType) || StringUtils.isEmpty(dangerReportType)) {
                return ApiResult.success("传输dangerReportType为空", new ArrayList<HiddenDangerCheck>());
            } else {
                //0待我处理 1我已处理 2我的上报
                if ("0".equals(dangerReportType)) {
                    hdcp.setDangerSources(TrHiddenDangerCheckConstants.DANGER_SOURCES_REPORT_PRODUCE);//隐患来源(隐患主动上报生成)
                    hdcp.setJudgeUserId(Long.valueOf(header.userId));
                    hdcp.setReportStatus("0");//上报判定结果----未判定
                } else if ("1".equals(dangerReportType)) {
                    hdcp.setDangerSources(TrHiddenDangerCheckConstants.DANGER_SOURCES_REPORT_PRODUCE);//隐患来源(隐患主动上报生成)
                    hdcp.setJudgeUserId(Long.valueOf(header.userId));
                    hdcp.setReportStatusByHasHandle("1");//设置任意字段,数据库查询设置report_status为1或2,即上报判定结果----已判定
                } else if ("2".equals(dangerReportType)) {
                    hdcp.setDangerSources(TrHiddenDangerCheckConstants.DANGER_SOURCES_REPORT_PRODUCE);//隐患来源(隐患主动上报生成)
                    hdcp.setRegisterUserId(Long.valueOf(header.userId));//上报userID
                    hdcp.setReportStatusIsNotNull("1");//设置任意字段,数据库查询设置report_status上报判定结果IS NOT NULL*/
                } else {
                    return ApiResult.success("传输dangerReportType有误", new ArrayList<HiddenDangerCheck>());
                }
                List<HiddenDangerCheckPoint> resultList = hdcpService.selectHiddenDangerCheckPointList(hdcp);
                return ApiResult.success("请求数据成功", resultList);
            }
        } catch (Exception e) {
            return ApiResult.error("异常");
        }
    }
 
 
    /**
     * 我的上报删除(进行中的可以删除,已完成的不能删除)
     */
    public ApiResult removeDangerReport(String str, ApiRequestHeader header) {
        //验证userId,loginName,token,deviceType,deviceId,appType 是否一致
        ApiRequestHeader requestHeader = getHeader(header);
        if (!(header.equals(requestHeader))) {
            return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致");
        }
        try {
            HiddenDangerCheckPoint hdcpTemp = new ObjectMapper().readValue(str, HiddenDangerCheckPoint.class);
            if(hdcpTemp.getId()==null){
                return ApiResult.error("id不能为空");
            }
            HiddenDangerCheckPoint hdcp  = hdcpService.selectHiddenDangerCheckPointById(hdcpTemp.getId());
            if(hdcp.getCheckId()!=null){
                hdcpService.deleteHiddenDangerCheckPointById(hdcp.getId());
                hiddenDangerCheckService.deleteHiddenDangerCheckById(hdcp.getCheckId());
 
 
                hdcpService.getTaskCountTotal(Long.valueOf(header.userId));//查询未执行任务总数量并推送
 
                return ApiResult.success("我的上报删除成功");
            }
            return ApiResult.error("数据有误");
        } catch (Exception e) {
            return ApiResult.error("异常");
        }
    }
 
 
 
    /**
     * 新增保存隐患上报------登记隐患
     */
    @Transactional
    public ApiResult addDangerReportSave(String str, ApiRequestHeader header) {
        //验证userId,loginName,token,deviceType,deviceId,appType 是否一致
        ApiRequestHeader requestHeader = getHeader(header);
        if (!(header.equals(requestHeader))) {
            return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致");
        }
        try {
            HiddenDangerCheckPoint hdcp = new ObjectMapper().readValue(str, HiddenDangerCheckPoint.class);
            HiddenDangerCheck hdc = new HiddenDangerCheck();
            if (ObjectUtils.isEmpty(hdcp.getCheckPerson())){
                throw new RuntimeException("检查人不能为空");
            }
            if (ObjectUtils.isEmpty(hdcp.getFindTime())){
                throw new RuntimeException("发现时间不能为空");
            }
            if (ObjectUtils.isEmpty(hdcp.getDangerSrc())){
                throw new RuntimeException("隐患来源不能为空");
            }
            hdc.setCreateBy(header.loginName);//创建者
            hdc.setCreateTime(DateUtils.getNowDate());//获取创建时间
            hdc.setDangerDeptId(hdcp.getDangerDeptId());
            hdc.setDangerDeptName(hdcp.getDangerDeptName());
            hdc.setDangerPlaceId(hdcp.getDangerPlaceId());
            hdc.setDangerPlaceName(hdcp.getDangerPlaceName());
            hiddenDangerCheckService.insertHiddenDangerCheck(hdc);//构造隐患排查对象保存,主要保存隐患责任部门,隐患地点
 
            hdcp.setCheckId(hdc.getCheckId());
            hdcp.setCreateBy(header.loginName);//创建者
            hdcp.setCreateTime(DateUtils.getNowDate());//获取创建时间
            hdcp.setUpdateBy(header.loginName);
            hdcp.setUpdateTime(DateUtils.getNowDate());
            hdcp.setRegisterCreateTime(DateUtils.getNowDate());//设置隐患登记上报创建时间
            hdcp.setRegisterUserId(Long.valueOf(header.userId));//设置隐患登记上报创建人ID
            User user = userService.selectUserById(Long.valueOf(header.userId));
            hdcp.setRegisterUserName(user.getUserName());//设置隐患登记上报创建人名称
            hdcp.setDangerSources(TrHiddenDangerCheckConstants.DANGER_SOURCES_REPORT_PRODUCE); //隐患来源(隐患主动上报生成)
            hdcp.setReportStatus(TrHiddenDangerCheckConstants.REPORT_STATUS_NOT_JUDGE);//隐患上报(未判定)
            hdcp.setRegisterSubmitTime(DateUtils.getNowDate());//设置隐患上报提交时间
 
            hdcp.setCompanyId(user.getCompanyId());
            int result = hdcpService.insertHiddenDangerCheckPoint(hdcp);
            //20250623增加此逻辑
            int result1 = riskService.insertDangerInfo(hdcp.getId(), hdcp);
            if (result1< 1){
                throw new RuntimeException("添加隐患附属信息失败");
            }
 
            hdcpService.getTaskCountTotal(Long.valueOf(header.userId));//查询未执行任务总数量并推送
 
            return ApiResult.success("登记隐患新增成功");
        } catch (Exception e) {
            return ApiResult.error("异常");
        }
    }
 
 
 
    /**
     * 判定隐患
     */
    public ApiResult editJudgeDangerReportSave(String str, ApiRequestHeader header) {
        //验证userId,loginName,token,deviceType,deviceId,appType 是否一致
        ApiRequestHeader requestHeader = getHeader(header);
        if (!(header.equals(requestHeader))) {
            return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致");
        }
        try {
            HiddenDangerCheckPoint hdcp = new ObjectMapper().readValue(str, HiddenDangerCheckPoint.class);
            hdcp.setUpdateBy(header.loginName);
            hdcp.setUpdateTime(DateUtils.getNowDate());
            hdcp.setJudgeCreateTime(DateUtils.getNowDate());//设置隐患上报判定时间
            if (!StringUtils.isEmpty(hdcp.getReportStatus())) {
                if (TrHiddenDangerCheckConstants.REPORT_STATUS_NOT_DANGER.equals(hdcp.getReportStatus())) {//隐患上报(不是隐患)
                    hdcp.setWhetherDanger(TrHiddenDangerCheckConstants.WHETHER_DANGER_NOT);//是否为隐患(正常)
                    hdcp.setExamineUserId(null);
                    hdcp.setExamineUserName(null);
                } else if (TrHiddenDangerCheckConstants.REPORT_STATUS_YES_DANGER.equals(hdcp.getReportStatus())) {//隐患上报(是隐患)
                    hdcp.setWhetherDanger(TrHiddenDangerCheckConstants.WHETHER_DANGER_YES);//是否为隐患(隐患)
                    hdcp.setDangerLevel("0");//默认设置为一般隐患
                    hdcp.setStage(TrHiddenDangerCheckConstants.DANGER_STAGE_PLAN_EXAMINE);//隐患核查阶段(数据进入到隐患核查阶段)
                    hdcp.setExamineStatus(TrHiddenDangerCheckConstants.EXAMINE_STATUS_NOT_EXAMINE);//核查状态(待核查)
                }
            }
            hdcpService.updateHiddenDangerCheckPoint(hdcp);
 
            int result = confirmLogService.saveConfirmLog(hdcp);
            if (result < 1){
                return ApiResult.error("操作失败");
            }
 
            hdcpService.getTaskCountTotal(Long.valueOf(header.userId));//查询未执行任务总数量并推送
 
            return ApiResult.success("判定成功");
        } catch (Exception e) {
            return ApiResult.error("异常");
        }
    }
 
}