package com.ruoyi.project.mobile.service;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.github.pagehelper.util.StringUtil;
|
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.entity.PreventRiskDangerCheckAndMeasure;
|
import com.ruoyi.doublePrevention.entity.PreventRiskDangerCheckLog;
|
import com.ruoyi.doublePrevention.service.RiskService;
|
import com.ruoyi.doublePrevention.service.baseService.PreventRiskDangerCheckAndMeasureService;
|
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 java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
|
@Service
|
public class ApiDangerScheduleService extends BaseApiService {
|
|
private static Logger logger = LoggerFactory.getLogger(ApiDangerScheduleService.class);
|
|
@Autowired
|
IHiddenDangerCheckService hiddenDangerCheckService;//隐患Service
|
|
@Autowired
|
IHiddenDangerCheckPointService hdcpService;//隐患检查点Service
|
|
@Autowired
|
IUserService userService;//用户Service
|
|
@Autowired
|
private RiskService riskService;
|
|
@Autowired
|
private PreventRiskDangerCheckAndMeasureService riskDangerCheckAndMeasureService;//隐患检查点Service
|
|
@Autowired
|
private PreventRiskDangerCheckAndMeasureService preventRiskDangerCheckAndMeasureService;
|
/**
|
* 获取定时任务隐患列表
|
*
|
* @param str
|
* @param header
|
* @return
|
*/
|
public ApiResult getDangerScheduleList(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 不一致");
|
}
|
|
String loginName = header.loginName;
|
try {
|
Map<String, String> queryHiddenDangerCheck = new ObjectMapper().readValue(str, HashMap.class);
|
String hiddenDangerCheckType = queryHiddenDangerCheck.get("hiddenDangerCheckType");//隐患类型
|
String hiddenDangerCheckStatus = queryHiddenDangerCheck.get("hiddenDangerCheckStatus");//隐患状态
|
HiddenDangerCheck hiddenDangerCheck = new HiddenDangerCheck();
|
|
if (StringUtils.isEmpty(hiddenDangerCheckType) || StringUtils.isEmpty(hiddenDangerCheckType)) {
|
return ApiResult.error("传输hiddenDangerCheckType为空");
|
} else {
|
if ("schedule".equals(hiddenDangerCheckType)) {
|
hiddenDangerCheck.setScheduleCheckUserId(Long.valueOf(header.userId));//定时任务排查执行人
|
hiddenDangerCheck.setScheduleCheckStatus(hiddenDangerCheckStatus);//定时任务排查状态
|
|
} else {
|
return ApiResult.error("传输hiddenDangerCheckType有误");
|
}
|
List<HiddenDangerCheck> resultList = hiddenDangerCheckService.selectHiddenDangerCheckList(hiddenDangerCheck);
|
// //特殊处理( 增加清单文件(basicListFileUrl)为在线预览url,其前缀为http://view.xdocin.com/xdoc?_xdoc= )
|
// String xdocinUrl = "http://view.xdocin.com/xdoc?_xdoc=";
|
// for(HiddenDangerCheck hdc : resultList) {
|
// //设置基础清单排查的清单文件
|
// //排查类型(1基础清单排查 2选择风险单元清单排查)
|
// if (!StringUtil.isEmpty(hdc.getCheckType()) && "1".equals(hdc.getCheckType())) {
|
// hdc.setBasicListFileUrl(xdocinUrl + hdc.getBasicListFile());
|
// }
|
// }
|
return ApiResult.success("请求数据成功", resultList);
|
}
|
} catch (Exception e) {
|
return ApiResult.error("异常");
|
}
|
}
|
|
|
|
/**
|
* 定时隐患排查保存
|
*/
|
public ApiResult editDangerScheduleSave(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 {
|
HiddenDangerCheck hiddenDangerCheck = new ObjectMapper().readValue(str, HiddenDangerCheck.class);
|
hiddenDangerCheck.setScheduleCheckStatus(TrHiddenDangerCheckConstants.CHECK_STATUS_ALREADY_CHECK);//排查状态(已排查)
|
hiddenDangerCheck.setCheckTime(DateUtils.getNowDate());//设置排查时间
|
hiddenDangerCheck.setUpdateBy(header.loginName);
|
hiddenDangerCheck.setUpdateTime(DateUtils.getNowDate());
|
HiddenDangerCheckPoint hdcpTemp = new HiddenDangerCheckPoint();
|
hdcpTemp.setCheckId(hiddenDangerCheck.getCheckId());
|
List<HiddenDangerCheckPoint> hdcpList = hdcpService.selectHiddenDangerCheckPointList(hdcpTemp);
|
|
for (HiddenDangerCheckPoint hdcp : hdcpList) {
|
if(StringUtils.isEmpty(hdcp.getWhetherDanger())){
|
return ApiResult.error("检查点需全部操作,请操作检查点。");
|
}
|
}
|
|
hdcpList.forEach(hdcp-> {
|
if (hdcp != null) {
|
hdcp.setUpdateBy(header.loginName);
|
hdcp.setUpdateTime(DateUtils.getNowDate());
|
//是隐患设置核查人ID、核查人名称
|
if((!StringUtils.isEmpty(hdcp.getWhetherDanger()))&&
|
(TrHiddenDangerCheckConstants.WHETHER_DANGER_YES.equals(hdcp.getWhetherDanger()))) {
|
hdcp.setExamineStatus(TrHiddenDangerCheckConstants.EXAMINE_STATUS_NOT_EXAMINE);//核查状态(待核查)
|
hdcp.setExamineUserId(hiddenDangerCheck.getExamineUserId());//核查人ID
|
hdcp.setExamineUserName(hiddenDangerCheck.getExamineUserName());//核查人名称
|
hdcp.setStage(TrHiddenDangerCheckConstants.DANGER_STAGE_PLAN_EXAMINE);//3隐患核查阶段(/** 更新者 */数据进入到3隐患核查阶段)
|
}
|
hdcpService.updateHiddenDangerCheckPoint(hdcp);
|
}
|
});
|
|
hiddenDangerCheckService.updateHiddenDangerCheck(hiddenDangerCheck);
|
|
hdcpService.getTaskCountTotal(Long.valueOf(header.userId));//查询未执行任务总数量并推送
|
|
return ApiResult.success("定时隐患排查--保存成功");
|
} catch (Exception e) {
|
return ApiResult.error("异常");
|
}
|
}
|
|
|
|
|
/**
|
* 设置为记录正常 todo
|
*/
|
public ApiResult editPointScheduleSetNormal(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.setWhetherDanger(TrHiddenDangerCheckConstants.WHETHER_DANGER_NOT);//是否为隐患(正常)
|
hdcp.setScheduleCheckStatus(TrHiddenDangerCheckConstants.CHECK_STATUS_ALREADY_CHECK);//排查状态(已排查)
|
hdcpService.updateHiddenDangerCheckPoint(hdcp);
|
|
PreventRiskDangerCheckAndMeasure dangerCheckPointInfo = preventRiskDangerCheckAndMeasureService.getByDangerCheckPointId(hdcp.getId());
|
int result = riskService.updateCheckLog(dangerCheckPointInfo.getCheckId(), hdcp);
|
if (result < 1){
|
return ApiResult.error("隐患排查记录附属表:写入手机识别码错误");
|
}
|
|
//添加检查说明信息
|
int result1 = riskDangerCheckAndMeasureService.updateCheckDesc(hdcp);
|
if (result1 < 1){
|
throw new RuntimeException("登记检查上报结果失败");
|
}
|
hdcpService.getTaskCountTotal(Long.valueOf(header.userId));//查询未执行任务总数量并推送
|
|
return ApiResult.success("定时隐患排查--设置为正常--成功");
|
} catch (Exception e) {
|
return ApiResult.error("异常");
|
}
|
}
|
|
|
|
/**
|
* 定时隐患排查---隐患登记
|
*/
|
@Transactional
|
public ApiResult editPointScheduleDangerRegisterSave(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);
|
if (ObjectUtils.isEmpty(hdcp.getCheckPerson())){
|
throw new RuntimeException("检查人不能为空");
|
}
|
if (ObjectUtils.isEmpty(hdcp.getFindTime())){
|
throw new RuntimeException("发现时间不能为空");
|
}
|
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.setWhetherDanger(TrHiddenDangerCheckConstants.WHETHER_DANGER_YES);//是否为隐患(是隐患)
|
hdcp.setScheduleCheckStatus(TrHiddenDangerCheckConstants.CHECK_STATUS_ALREADY_CHECK);//排查状态(已排查)
|
hdcp.setExamineStatus(TrHiddenDangerCheckConstants.EXAMINE_STATUS_NOT_EXAMINE);//核查状态(待核查)
|
hdcp.setStage(TrHiddenDangerCheckConstants.DANGER_STAGE_PLAN_EXAMINE);//隐患核查阶段(数据进入到隐患核查阶段)
|
hdcp.setDangerSources(TrHiddenDangerCheckConstants.DANGER_SOURCES_SCHEDULE_PRODUCE); //隐患来源(定时器任务生成)
|
|
HiddenDangerCheckPoint queryExist = new HiddenDangerCheckPoint();
|
queryExist.setWhetherDanger(TrHiddenDangerCheckConstants.WHETHER_DANGER_YES);//是否为隐患(是隐患)
|
queryExist.setCheckPointId(hdcp.getCheckPointId());
|
queryExist.setCheckId(hdcp.getCheckId());
|
|
hdcp.setReportStatus("0");
|
|
/**
|
* 本次查询结果 :如果未上报过隐患,必定为空
|
* 同一个检查任务,同一个排查点,可能多次上报隐患。
|
* 本次查询未用到id,导致数据不唯一
|
* */
|
List<HiddenDangerCheckPoint> queryExistList = hdcpService.selectHiddenDangerCheckPointList(queryExist);
|
int i=0;
|
//如果隐患信息已经存在,就新插入一条;如果不存在,就修改隐患信息
|
if(queryExistList.size()>0){
|
hdcp.setId(null);
|
hdcp.setCheckTime(DateUtils.getNowDate());
|
hdcp.setCreateBy(user.getLoginName());
|
hdcp.setCreateTime(DateUtils.getNowDate());
|
|
hdcp.setCompanyId(user.getCompanyId());
|
i = hdcpService.insertHiddenDangerCheckPoint(hdcp);
|
if (i< 1){
|
throw new RuntimeException("添加隐患信息失败");
|
}
|
|
//获取Id返回值 20250623 放开
|
hdcp.getId();
|
int result = riskService.insertDangerInfo(hdcp.getId(), hdcp);
|
if (result< 1){
|
throw new RuntimeException("添加隐患附属信息失败");
|
}
|
|
// PreventRiskDangerCheckAndMeasure dangerCheckPointInfo = preventRiskDangerCheckAndMeasureService.getByDangerCheckPointId(hdcp.getId());
|
// riskService.updateCheckLog(dangerCheckPointInfo.getCheckId(), hdcp);
|
|
}else{
|
hdcp.setUpdateBy(user.getLoginName());
|
hdcp.setUpdateTime(DateUtils.getNowDate());
|
i = hdcpService.updateHiddenDangerCheckPoint(hdcp);
|
|
// todo-2022 此处修改附属表 20250623 放开
|
int result = riskService.updateDangerInfo(hdcp);
|
if (result < 1){
|
throw new RuntimeException("修改失败");
|
}
|
// int result = riskService.insertDangerInfo(hdcp.getId(), hdcp);
|
// if (result< 1){
|
// throw new RuntimeException("添加隐患附属信息失败");
|
// }
|
|
PreventRiskDangerCheckAndMeasure dangerCheckPointInfo = preventRiskDangerCheckAndMeasureService.getByDangerCheckPointId(hdcp.getId());
|
riskService.updateCheckLog(dangerCheckPointInfo.getCheckId(), hdcp);
|
}
|
hdcpService.getTaskCountTotal(Long.valueOf(header.userId));//查询未执行任务总数量并推送
|
|
return ApiResult.success("定时隐患排查--隐患登记--成功");
|
} catch (Exception e) {
|
return ApiResult.error("异常");
|
}
|
}
|
}
|