*/ | */ | ||||
String API_AIRPORT_GET_WEATHER = "/api/airportInterface/getWeather"; | String API_AIRPORT_GET_WEATHER = "/api/airportInterface/getWeather"; | ||||
/** | |||||
* 机场平台:控制无人机 | |||||
*/ | |||||
String API_AIRPORT_DRONE_CONTROL = "/api/airportInterface/droneCommand"; | |||||
/** | |||||
* 机场平台:获取机场状态 | |||||
*/ | |||||
String API_AIRPORT_STATUS_BY_AIRPORT_ID = "/api/airportInterface/getAirportStatusByAirportId"; | |||||
// 飞手平台不同接口url | // 飞手平台不同接口url | ||||
/** | /** | ||||
* 新增任务接口 | * 新增任务接口 |
package com.tuoheng.admin.controller; | package com.tuoheng.admin.controller; | ||||
import com.tuoheng.admin.query.AccidentQuery; | import com.tuoheng.admin.query.AccidentQuery; | ||||
import com.tuoheng.admin.request.accident.AccidentVerifyRequest; | |||||
import com.tuoheng.admin.request.accident.QueryAccidentPageListRequest; | import com.tuoheng.admin.request.accident.QueryAccidentPageListRequest; | ||||
import com.tuoheng.admin.request.accident.ReportAccidentRequest; | |||||
import com.tuoheng.admin.request.accident.ReportNoAccidentRequest; | |||||
import com.tuoheng.admin.service.accident.IAccidentService; | import com.tuoheng.admin.service.accident.IAccidentService; | ||||
import com.tuoheng.common.core.utils.JsonResult; | import com.tuoheng.common.core.utils.JsonResult; | ||||
import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
import org.springframework.web.bind.annotation.GetMapping; | |||||
import org.springframework.web.bind.annotation.PathVariable; | |||||
import org.springframework.web.bind.annotation.RequestMapping; | |||||
import org.springframework.web.bind.annotation.RestController; | |||||
import org.springframework.web.bind.annotation.*; | |||||
/** | /** | ||||
* 事故前端控制器 | * 事故前端控制器 | ||||
* 告警列表分页 | * 告警列表分页 | ||||
*/ | */ | ||||
@GetMapping("/index") | @GetMapping("/index") | ||||
public JsonResult queryAccidentPage(AccidentQuery query){ | |||||
public JsonResult queryAccidentPage(AccidentQuery query) { | |||||
return accidentService.index(query); | return accidentService.index(query); | ||||
} | } | ||||
/** | /** | ||||
* 事故详情 | * 事故详情 | ||||
* | |||||
* @param id | * @param id | ||||
* @return | * @return | ||||
*/ | */ | ||||
@GetMapping("/details/{id}") | @GetMapping("/details/{id}") | ||||
public JsonResult accidentDetails(@PathVariable("id") String id){ | |||||
public JsonResult accidentDetails(@PathVariable("id") String id) { | |||||
return accidentService.accidentDetails(id); | return accidentService.accidentDetails(id); | ||||
} | } | ||||
* 告警弹窗通知下发 | * 告警弹窗通知下发 | ||||
*/ | */ | ||||
@GetMapping("/notice") | @GetMapping("/notice") | ||||
public JsonResult notice(){ | |||||
public JsonResult notice() { | |||||
return accidentService.notice(); | return accidentService.notice(); | ||||
} | } | ||||
return accidentService.getTimeAxis(accidentId); | return accidentService.getTimeAxis(accidentId); | ||||
} | } | ||||
/** | |||||
* 事故核实 | |||||
* @param request | |||||
* @return | |||||
*/ | |||||
@PostMapping("/verify") | |||||
public JsonResult verify(AccidentVerifyRequest request) { | |||||
return accidentService.verify(request); | |||||
} | |||||
/** | |||||
* 事故上报 | |||||
*/ | |||||
@PostMapping("/report/accident") | |||||
public JsonResult report(ReportAccidentRequest request) { | |||||
return accidentService.report(request); | |||||
} | |||||
/** | |||||
* 无事故 | |||||
*/ | |||||
@PostMapping("/report/no/accident") | |||||
public JsonResult noAccident(ReportNoAccidentRequest request) { | |||||
return accidentService.noAccident(request); | |||||
} | |||||
/** | |||||
* 预警忽略 | |||||
* | |||||
* @return | |||||
*/ | |||||
@PostMapping("/ignore/{id}") | |||||
public JsonResult ignore(@PathVariable("id") String id){ | |||||
return accidentService.ignore(id); | |||||
} | |||||
} | } |
*/ | */ | ||||
private String questionName; | private String questionName; | ||||
/** | |||||
* 是否有事故:0:无;1:有 | |||||
*/ | |||||
private Integer isAccident; | |||||
/** | /** | ||||
* 是否有伤亡:0:无;1:有 | * 是否有伤亡:0:无;1:有 | ||||
*/ | */ |
private String name; | private String name; | ||||
/** | /** | ||||
* 巡检任务类型 1 临时巡检 | |||||
* 巡检任务类型 1:临时巡检 2:应急任务 | |||||
*/ | */ | ||||
private Integer type; | private Integer type; | ||||
private String patrolLocation; | private String patrolLocation; | ||||
/** | /** | ||||
* 任务类型:0:巡检任务 1:应急任务 | |||||
* 应急任务关联数据任务ID | |||||
*/ | */ | ||||
private Integer accidentTask; | |||||
private String emergencyDataInspectionId; | |||||
} | } |
package com.tuoheng.admin.request.accident; | |||||
import lombok.Data; | |||||
/** | |||||
* 事故核实请求实体 | |||||
* | |||||
* @author wanjing | |||||
* @team tuoheng | |||||
* @date 2023-03-15 | |||||
*/ | |||||
@Data | |||||
public class AccidentVerifyRequest { | |||||
/** | |||||
* 事故id | |||||
*/ | |||||
private String accidentId; | |||||
} |
package com.tuoheng.admin.request.accident; | |||||
import lombok.Data; | |||||
/** | |||||
* 事故上报请求实体 | |||||
* | |||||
* @author wanjing | |||||
* @team tuoheng | |||||
* @date 2023-03-15 | |||||
*/ | |||||
@Data | |||||
public class ReportAccidentRequest { | |||||
/** | |||||
* 事故id | |||||
*/ | |||||
private String accidentId; | |||||
/** | |||||
* 是否有伤亡:0:无;1:有 | |||||
*/ | |||||
private Integer isCasualties; | |||||
/** | |||||
* 是否影响驾驶安全:0:无;1:有 | |||||
*/ | |||||
private Integer isDrivingSafety; | |||||
/** | |||||
* 是否有明火:0:无;1:有 | |||||
*/ | |||||
private Integer isFire; | |||||
/** | |||||
* 事故现场描述 | |||||
*/ | |||||
private String record; | |||||
} |
package com.tuoheng.admin.request.accident; | |||||
import lombok.Data; | |||||
/** | |||||
* 无事故请求实体 | |||||
* | |||||
* @author wanjing | |||||
* @team tuoheng | |||||
* @date 2023-03-15 | |||||
*/ | |||||
@Data | |||||
public class ReportNoAccidentRequest { | |||||
/** | |||||
* 事故id | |||||
*/ | |||||
private String accidentId; | |||||
} |
import com.tuoheng.admin.entity.Accident; | import com.tuoheng.admin.entity.Accident; | ||||
import com.tuoheng.admin.mapper.AccidentMapper; | import com.tuoheng.admin.mapper.AccidentMapper; | ||||
import com.tuoheng.admin.query.AccidentQuery; | import com.tuoheng.admin.query.AccidentQuery; | ||||
import com.tuoheng.admin.request.accident.AccidentVerifyRequest; | |||||
import com.tuoheng.admin.request.accident.QueryAccidentPageListRequest; | import com.tuoheng.admin.request.accident.QueryAccidentPageListRequest; | ||||
import com.tuoheng.admin.request.accident.ReportAccidentRequest; | |||||
import com.tuoheng.admin.request.accident.ReportNoAccidentRequest; | |||||
import com.tuoheng.admin.service.accident.ignore.AccidentIgnoreService; | |||||
import com.tuoheng.admin.service.accident.query.QueryAccidentByIdService; | import com.tuoheng.admin.service.accident.query.QueryAccidentByIdService; | ||||
import com.tuoheng.admin.service.accident.query.QueryAccidentDetailsService; | import com.tuoheng.admin.service.accident.query.QueryAccidentDetailsService; | ||||
import com.tuoheng.admin.service.accident.query.QueryAccidentPageListService; | import com.tuoheng.admin.service.accident.query.QueryAccidentPageListService; | ||||
import com.tuoheng.admin.service.accident.reoprt.ReportAccidentService; | |||||
import com.tuoheng.admin.service.accident.reoprt.ReportNoAccidentService; | |||||
import com.tuoheng.admin.service.accident.verify.AccidentVerifyService; | |||||
import com.tuoheng.common.core.common.BaseServiceImpl; | import com.tuoheng.common.core.common.BaseServiceImpl; | ||||
import com.tuoheng.common.core.utils.JsonResult; | import com.tuoheng.common.core.utils.JsonResult; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
@Autowired | @Autowired | ||||
private TimeAxisService timeAxisService; | private TimeAxisService timeAxisService; | ||||
@Autowired | |||||
private AccidentVerifyService accidentVerifyService; | |||||
@Autowired | |||||
private ReportAccidentService reportAccidentService; | |||||
@Autowired | |||||
private ReportNoAccidentService reportNoAccidentService; | |||||
@Autowired | |||||
private AccidentIgnoreService accidentIgnoreService; | |||||
@Override | @Override | ||||
public JsonResult getPageList(QueryAccidentPageListRequest request) { | public JsonResult getPageList(QueryAccidentPageListRequest request) { | ||||
return queryAccidentPageListService.getPageList(request); | return queryAccidentPageListService.getPageList(request); | ||||
public JsonResult getTimeAxis(String accidentId) { | public JsonResult getTimeAxis(String accidentId) { | ||||
return timeAxisService.getTimeAxis(accidentId); | return timeAxisService.getTimeAxis(accidentId); | ||||
} | } | ||||
/** | |||||
* 事故核实 | |||||
* | |||||
* @param request | |||||
* @return | |||||
*/ | |||||
public JsonResult verify(AccidentVerifyRequest request) { | |||||
return accidentVerifyService.verify(request); | |||||
} | |||||
/** | |||||
* 事故上报 | |||||
* | |||||
* @param request | |||||
* @return | |||||
*/ | |||||
@Override | |||||
public JsonResult report(ReportAccidentRequest request) { | |||||
return reportAccidentService.report(request); | |||||
} | |||||
/** | |||||
* 无事故 | |||||
* | |||||
* @param request | |||||
* @return | |||||
*/ | |||||
@Override | |||||
public JsonResult noAccident(ReportNoAccidentRequest request) { | |||||
return reportNoAccidentService.report(request); | |||||
} | |||||
/** | |||||
* 忽略 | |||||
* | |||||
* @param id | |||||
* @return | |||||
*/ | |||||
@Override | |||||
public JsonResult ignore(String id) { | |||||
return accidentIgnoreService.ignore(id); | |||||
} | |||||
} | } |
import com.tuoheng.admin.entity.Accident; | import com.tuoheng.admin.entity.Accident; | ||||
import com.tuoheng.admin.query.AccidentQuery; | import com.tuoheng.admin.query.AccidentQuery; | ||||
import com.tuoheng.admin.request.accident.AccidentVerifyRequest; | |||||
import com.tuoheng.admin.request.accident.QueryAccidentPageListRequest; | import com.tuoheng.admin.request.accident.QueryAccidentPageListRequest; | ||||
import com.tuoheng.admin.request.accident.ReportAccidentRequest; | |||||
import com.tuoheng.admin.request.accident.ReportNoAccidentRequest; | |||||
import com.tuoheng.common.core.common.IBaseService; | import com.tuoheng.common.core.common.IBaseService; | ||||
import com.tuoheng.common.core.utils.JsonResult; | import com.tuoheng.common.core.utils.JsonResult; | ||||
/** | /** | ||||
* 应急列表分页 | * 应急列表分页 | ||||
* | |||||
* @param query | * @param query | ||||
* @return | * @return | ||||
*/ | */ | ||||
/** | /** | ||||
* 事故详情 | * 事故详情 | ||||
* | |||||
* @param id | * @param id | ||||
* @return | * @return | ||||
*/ | */ | ||||
/** | /** | ||||
* 告警弹窗通知下发 | * 告警弹窗通知下发 | ||||
* | |||||
* @return | * @return | ||||
*/ | */ | ||||
JsonResult notice(); | JsonResult notice(); | ||||
/** | /** | ||||
* 事故告警提示 | * 事故告警提示 | ||||
* | |||||
* @param accidentId | * @param accidentId | ||||
* @return | * @return | ||||
*/ | */ | ||||
/** | /** | ||||
* 事故时间轴 | * 事故时间轴 | ||||
* | |||||
* @param accidentId | * @param accidentId | ||||
* @return | * @return | ||||
*/ | */ | ||||
JsonResult getTimeAxis(String accidentId); | JsonResult getTimeAxis(String accidentId); | ||||
/** | |||||
* 事故核实 | |||||
* | |||||
* @param request | |||||
* @return | |||||
*/ | |||||
JsonResult verify(AccidentVerifyRequest request); | |||||
/** | |||||
* 事故上报 | |||||
* | |||||
* @param request | |||||
* @return | |||||
*/ | |||||
JsonResult report(ReportAccidentRequest request); | |||||
/** | |||||
* 无事故 | |||||
* | |||||
* @param request | |||||
* @return | |||||
*/ | |||||
JsonResult noAccident(ReportNoAccidentRequest request); | |||||
/** | |||||
* 忽略 | |||||
* | |||||
* @param id | |||||
* @return | |||||
*/ | |||||
JsonResult ignore(String id); | |||||
} | } |
package com.tuoheng.admin.service.accident.ignore; | |||||
import cn.hutool.core.util.ObjectUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.tuoheng.admin.entity.Accident; | |||||
import com.tuoheng.admin.entity.User; | |||||
import com.tuoheng.admin.enums.AccidentStatusEnum; | |||||
import com.tuoheng.admin.enums.MarkEnum; | |||||
import com.tuoheng.admin.mapper.AccidentMapper; | |||||
import com.tuoheng.admin.request.accident.ReportAccidentRequest; | |||||
import com.tuoheng.admin.utils.CurrentUserUtil; | |||||
import com.tuoheng.common.core.exception.ServiceException; | |||||
import com.tuoheng.common.core.utils.DateUtils; | |||||
import com.tuoheng.common.core.utils.JsonResult; | |||||
import com.tuoheng.common.core.utils.StringUtils; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
/** | |||||
* 忽略事故业务层处理 | |||||
* | |||||
* @author wanjing | |||||
* @team tuoheng | |||||
* @date 2023-03-15 | |||||
*/ | |||||
@Slf4j | |||||
@Service | |||||
public class AccidentIgnoreService { | |||||
@Autowired | |||||
private AccidentMapper accidentMapper; | |||||
public JsonResult ignore(String id) { | |||||
// log.info("进入忽略事故业务"); | |||||
User user = CurrentUserUtil.getUserInfo(); | |||||
String userId = user.getId(); | |||||
String tenantId = user.getTenantId(); | |||||
JsonResult result = this.check(tenantId, id); | |||||
if (0 != result.getCode()) { | |||||
log.info("忽略事故业务:校验失败:{}", result.getMsg()); | |||||
return result; | |||||
} | |||||
Accident accident = (Accident) result.getData(); | |||||
Accident accidentUpdate = new Accident(); | |||||
accidentUpdate.setId(accident.getId()); | |||||
accidentUpdate.setStatus(AccidentStatusEnum.IGNORED.getCode()); | |||||
accidentUpdate.setUpdateUser(userId); | |||||
accidentUpdate.setUpdateTime(DateUtils.now()); | |||||
accidentUpdate.setCheckUser(userId); | |||||
accidentUpdate.setCheckTime(DateUtils.now()); | |||||
accidentMapper.updateById(accidentUpdate); | |||||
return JsonResult.success(); | |||||
} | |||||
/** | |||||
* 检查参数 | |||||
* | |||||
* @param tenantId | |||||
* @param id | |||||
* @return | |||||
*/ | |||||
private JsonResult check(String tenantId, String id) { | |||||
if (StringUtils.isEmpty(id)) { | |||||
throw new ServiceException("事故ID为空"); | |||||
} | |||||
Accident accident = accidentMapper.selectOne(new LambdaQueryWrapper<Accident>() | |||||
.eq(Accident::getTenantId, tenantId) | |||||
.eq(Accident::getId, id) | |||||
.eq(Accident::getMark, MarkEnum.VALID.getCode())); | |||||
if (ObjectUtil.isNull(accident)) { | |||||
throw new ServiceException("事故不存在"); | |||||
} | |||||
if (AccidentStatusEnum.UNTREATED.getCode() == accident.getStatus()) { | |||||
throw new ServiceException("该事故已处理,不能在忽略"); | |||||
} | |||||
return JsonResult.success(accident); | |||||
} | |||||
} |
package com.tuoheng.admin.service.accident.reoprt; | |||||
import cn.hutool.core.util.ObjectUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.tuoheng.admin.entity.Accident; | |||||
import com.tuoheng.admin.entity.User; | |||||
import com.tuoheng.admin.enums.AccidentStatusEnum; | |||||
import com.tuoheng.admin.enums.MarkEnum; | |||||
import com.tuoheng.admin.mapper.AccidentMapper; | |||||
import com.tuoheng.admin.request.accident.ReportAccidentRequest; | |||||
import com.tuoheng.admin.utils.CurrentUserUtil; | |||||
import com.tuoheng.common.core.exception.ServiceException; | |||||
import com.tuoheng.common.core.utils.DateUtils; | |||||
import com.tuoheng.common.core.utils.JsonResult; | |||||
import com.tuoheng.common.core.utils.StringUtils; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
/** | |||||
* 无事故上报业务层处理 | |||||
* | |||||
* @author wanjing | |||||
* @team tuoheng | |||||
* @date 2023-03-15 | |||||
*/ | |||||
@Slf4j | |||||
@Service | |||||
public class ReportAccidentService { | |||||
@Autowired | |||||
private AccidentMapper accidentMapper; | |||||
public JsonResult report(ReportAccidentRequest request) { | |||||
// log.info("进入事故上报业务"); | |||||
// User user = CurrentUserUtil.getUserInfo(); | |||||
// String userId = user.getId(); | |||||
// String tenantId = user.getTenantId(); | |||||
String userId = "111"; | |||||
String tenantId = "0"; | |||||
JsonResult result = this.check(tenantId, request); | |||||
if (0 != result.getCode()) { | |||||
log.info("无事故业务:校验失败:{}", result.getMsg()); | |||||
return result; | |||||
} | |||||
Accident accident = (Accident) result.getData(); | |||||
Accident accidentUpdate = new Accident(); | |||||
accidentUpdate.setId(accident.getId()); | |||||
accidentUpdate.setIsAccident(1); | |||||
accidentUpdate.setIsCasualties(request.getIsCasualties()); | |||||
accidentUpdate.setIsDrivingSafety(request.getIsDrivingSafety()); | |||||
accidentUpdate.setIsFire(request.getIsFire()); | |||||
accidentUpdate.setStatus(AccidentStatusEnum.PROCESSED.getCode()); | |||||
accidentUpdate.setUpdateUser(userId); | |||||
accidentUpdate.setUpdateTime(DateUtils.now()); | |||||
accidentUpdate.setCheckUser(userId); | |||||
accidentUpdate.setCheckTime(DateUtils.now()); | |||||
accidentUpdate.setRecord(request.getRecord()); | |||||
accidentMapper.updateById(accidentUpdate); | |||||
return JsonResult.success(); | |||||
} | |||||
/** | |||||
* 检查参数 | |||||
* | |||||
* @param tenantId | |||||
* @param request | |||||
* @return | |||||
*/ | |||||
private JsonResult check(String tenantId, ReportAccidentRequest request) { | |||||
if (StringUtils.isEmpty(request.getAccidentId())) { | |||||
throw new ServiceException("事故ID为空"); | |||||
} | |||||
Accident accident = accidentMapper.selectOne(new LambdaQueryWrapper<Accident>() | |||||
.eq(Accident::getTenantId, tenantId) | |||||
.eq(Accident::getId, request.getAccidentId()) | |||||
.eq(Accident::getMark, MarkEnum.VALID.getCode())); | |||||
if (ObjectUtil.isNull(accident)) { | |||||
throw new ServiceException("事故不存在"); | |||||
} | |||||
if (AccidentStatusEnum.UNTREATED.getCode() == accident.getStatus()) { | |||||
throw new ServiceException("该事故已处理"); | |||||
} | |||||
return JsonResult.success(accident); | |||||
} | |||||
} |
package com.tuoheng.admin.service.accident.reoprt; | |||||
import cn.hutool.core.util.ObjectUtil; | |||||
import com.alibaba.fastjson.JSONObject; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.tuoheng.admin.entity.Accident; | |||||
import com.tuoheng.admin.entity.Inspection; | |||||
import com.tuoheng.admin.entity.InspectionFile; | |||||
import com.tuoheng.admin.entity.User; | |||||
import com.tuoheng.admin.enums.AccidentStatusEnum; | |||||
import com.tuoheng.admin.enums.MarkEnum; | |||||
import com.tuoheng.admin.mapper.AccidentMapper; | |||||
import com.tuoheng.admin.mapper.InspectionFileMapper; | |||||
import com.tuoheng.admin.mapper.InspectionMapper; | |||||
import com.tuoheng.admin.request.accident.ReportAccidentRequest; | |||||
import com.tuoheng.admin.request.accident.ReportNoAccidentRequest; | |||||
import com.tuoheng.admin.service.third.airport.DroneControlService; | |||||
import com.tuoheng.admin.utils.CurrentUserUtil; | |||||
import com.tuoheng.common.core.exception.ServiceException; | |||||
import com.tuoheng.common.core.utils.DateUtils; | |||||
import com.tuoheng.common.core.utils.JsonResult; | |||||
import com.tuoheng.common.core.utils.StringUtils; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
/** | |||||
* 无事故业务层处理 | |||||
* | |||||
* @author wanjing | |||||
* @team tuoheng | |||||
* @date 2023-03-15 | |||||
*/ | |||||
@Slf4j | |||||
@Service | |||||
public class ReportNoAccidentService { | |||||
@Autowired | |||||
private AccidentMapper accidentMapper; | |||||
@Autowired | |||||
private InspectionMapper inspectionMapper; | |||||
@Autowired | |||||
private InspectionFileMapper inspectionFileMapper; | |||||
@Autowired | |||||
private DroneControlService droneControlService; | |||||
public JsonResult report(ReportNoAccidentRequest request) { | |||||
// log.info("进入事故上报业务"); | |||||
User user = CurrentUserUtil.getUserInfo(); | |||||
String userId = user.getId(); | |||||
String tenantId = user.getTenantId(); | |||||
JsonResult result = this.check(tenantId, request); | |||||
if (0 != result.getCode()) { | |||||
log.info("事故上报业务:校验失败:{}", result.getMsg()); | |||||
return result; | |||||
} | |||||
Accident accident = (Accident) result.getData(); | |||||
Accident accidentUpdate = new Accident(); | |||||
accidentUpdate.setId(accident.getId()); | |||||
accidentUpdate.setIsAccident(0); | |||||
accidentUpdate.setStatus(AccidentStatusEnum.PROCESSED.getCode()); | |||||
accidentUpdate.setUpdateUser(userId); | |||||
accidentUpdate.setUpdateTime(DateUtils.now()); | |||||
accidentUpdate.setCheckUser(userId); | |||||
accidentUpdate.setCheckTime(DateUtils.now()); | |||||
accidentMapper.updateById(accidentUpdate); | |||||
return JsonResult.success(); | |||||
} | |||||
/** | |||||
* 检查参数 | |||||
* | |||||
* @param tenantId | |||||
* @param request | |||||
* @return | |||||
*/ | |||||
private JsonResult check(String tenantId, ReportNoAccidentRequest request) { | |||||
if (StringUtils.isEmpty(request.getAccidentId())) { | |||||
throw new ServiceException("事故ID为空"); | |||||
} | |||||
Accident accident = accidentMapper.selectOne(new LambdaQueryWrapper<Accident>() | |||||
.eq(Accident::getTenantId, tenantId) | |||||
.eq(Accident::getId, request.getAccidentId()) | |||||
.eq(Accident::getMark, MarkEnum.VALID.getCode())); | |||||
if (ObjectUtil.isNull(accident)) { | |||||
throw new ServiceException("事故不存在"); | |||||
} | |||||
if (AccidentStatusEnum.UNTREATED.getCode() == accident.getStatus()) { | |||||
throw new ServiceException("该事故已处理"); | |||||
} | |||||
return JsonResult.success(accident); | |||||
} | |||||
/** | |||||
* 无人机回仓 | |||||
* | |||||
* @param inspectionId | |||||
*/ | |||||
private void droneReturn(String inspectionId) { | |||||
// 向机场发送无人机回舱指令 | |||||
Inspection inspection = inspectionMapper.selectOne(new LambdaQueryWrapper<Inspection>() | |||||
.eq(Inspection::getId, accident.getInspectionId()) | |||||
.eq(Inspection::getMark, MarkEnum.VALID.getCode())); | |||||
JSONObject jsonObject = new JSONObject(); | |||||
jsonObject.put("zhilin", "03"); | |||||
jsonObject.put("taskId", inspection.getId()); | |||||
jsonObject.put("airportId", inspection.getAirportId()); | |||||
jsonObject.put("msg", "回仓"); | |||||
droneControlService.execute(jsonObject); | |||||
} | |||||
} |
package com.tuoheng.admin.service.accident.verify; | |||||
import cn.hutool.core.util.ObjectUtil; | |||||
import com.alibaba.fastjson.JSONObject; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.tuoheng.admin.constant.SystemConstant; | |||||
import com.tuoheng.admin.entity.Accident; | |||||
import com.tuoheng.admin.entity.Inspection; | |||||
import com.tuoheng.admin.entity.InspectionFile; | |||||
import com.tuoheng.admin.entity.User; | |||||
import com.tuoheng.admin.enums.*; | |||||
import com.tuoheng.admin.mapper.AccidentMapper; | |||||
import com.tuoheng.admin.mapper.InspectionFileMapper; | |||||
import com.tuoheng.admin.mapper.InspectionMapper; | |||||
import com.tuoheng.admin.request.accident.AccidentVerifyRequest; | |||||
import com.tuoheng.admin.utils.CurrentUserUtil; | |||||
import com.tuoheng.common.core.config.common.CommonConfig; | |||||
import com.tuoheng.common.core.exception.ServiceException; | |||||
import com.tuoheng.common.core.utils.DateUtils; | |||||
import com.tuoheng.common.core.utils.HttpUtils; | |||||
import com.tuoheng.common.core.utils.JsonResult; | |||||
import com.tuoheng.common.core.utils.StringUtils; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
import org.springframework.transaction.annotation.Transactional; | |||||
/** | |||||
* 事故核实业务层处理 | |||||
* | |||||
* @author wanjing | |||||
* @team tuoheng | |||||
* @date 2023-03-15 | |||||
*/ | |||||
@Slf4j | |||||
@Service | |||||
public class AccidentVerifyService { | |||||
@Autowired | |||||
private AccidentMapper accidentMapper; | |||||
@Autowired | |||||
private InspectionMapper inspectionMapper; | |||||
@Autowired | |||||
private InspectionFileMapper inspectionFileMapper; | |||||
/** | |||||
* | |||||
* 1、向机场起降平台推送指令,无人机前往事故发生地点,即获取拍摄到事故照片时所处的经纬度,并在事故地点上方悬停 | |||||
* 2、修改该事故状态为处理中 | |||||
* | |||||
* @param request | |||||
* @return | |||||
*/ | |||||
@Transactional | |||||
public JsonResult verify(AccidentVerifyRequest request) { | |||||
// log.info("进入事故核实业务"); | |||||
User user = CurrentUserUtil.getUserInfo(); | |||||
String userId = user.getId(); | |||||
String tenantId = user.getTenantId(); | |||||
JsonResult result = this.check(tenantId, request); | |||||
if (0 != result.getCode()) { | |||||
log.info("事故核实业务:校验失败:{}", result.getMsg()); | |||||
return result; | |||||
} | |||||
Accident accident = (Accident) result.getData(); | |||||
Inspection oldInspection = inspectionMapper.selectOne(new LambdaQueryWrapper<Inspection>() | |||||
.eq(Inspection::getId, accident.getInspectionId()) | |||||
.eq(Inspection::getMark, MarkEnum.VALID.getCode())); | |||||
this.createInspection(user, oldInspection); | |||||
// 1、向机场起降平台推送指令,无人机前往事故发生地点,即获取拍摄到事故照片时所处的经纬度,并在事故地点上方悬停 | |||||
this.callOldAirpor(accident, oldInspection); | |||||
Accident accidentUpdate = new Accident(); | |||||
accidentUpdate.setId(accident.getId()); | |||||
accidentUpdate.setStatus(AccidentStatusEnum.PROCESSING.getCode()); | |||||
accidentUpdate.setUpdateUser(userId); | |||||
accidentUpdate.setUpdateTime(DateUtils.now()); | |||||
accidentUpdate.(DateUtils.now()); | |||||
accidentMapper.updateById(accidentUpdate); | |||||
return JsonResult.success(); | |||||
} | |||||
/** | |||||
* 检查参数 | |||||
* | |||||
* @param tenantId | |||||
* @param request | |||||
* @return | |||||
*/ | |||||
private JsonResult check(String tenantId, AccidentVerifyRequest request) { | |||||
if (StringUtils.isEmpty(request.getAccidentId())) { | |||||
throw new ServiceException("事故ID为空"); | |||||
} | |||||
Accident accident = accidentMapper.selectOne(new LambdaQueryWrapper<Accident>() | |||||
.eq(Accident::getTenantId, tenantId) | |||||
.eq(Accident::getId, request.getAccidentId()) | |||||
.eq(Accident::getMark, MarkEnum.VALID.getCode())); | |||||
if (ObjectUtil.isNull(accident)) { | |||||
throw new ServiceException("事故不存在"); | |||||
} | |||||
if (AccidentStatusEnum.UNTREATED.getCode() == accident.getStatus()) { | |||||
throw new ServiceException("该事故已处理,不能在核实"); | |||||
} | |||||
return JsonResult.success(accident); | |||||
} | |||||
/** | |||||
* 创建应急任务 | |||||
* | |||||
* @param user | |||||
* @param oldInspection | |||||
* @return | |||||
*/ | |||||
private Inspection createInspection(User user, Inspection oldInspection) { | |||||
Inspection inspection = new Inspection(); | |||||
String code = DateUtils.generateCode("XJRW");; | |||||
inspection.setCode(code); | |||||
inspection.setName("应急任务" + code); | |||||
inspection.setTenantId(user.getTenantId()); | |||||
inspection.setType(2); | |||||
inspection.setStatus(InspectionStatusEnum.IN_FLIGHT.getCode()); // 设置应急任务状态为飞行中 | |||||
inspection.setInspectionType(InspectionTypeEnum.AIRPORT.getCode()); | |||||
inspection.setAirportId(oldInspection.getAirportId()); | |||||
inspection.setAirportName(oldInspection.getAirportName()); | |||||
inspection.setInspectionLine(0); | |||||
inspection.setInspectionLineName(""); | |||||
inspection.setExecutionStartTime(DateUtils.now()); | |||||
inspection.setCreateUser(user.getId()); | |||||
inspection.setCreateTime(DateUtils.now()); | |||||
inspection.setEmergencyDataInspectionId(oldInspection.getId()); | |||||
Integer count = inspectionMapper.insert(inspection); | |||||
if (count <= 0) { | |||||
log.info("创建应急任务失败"); | |||||
throw new ServiceException("创建应急任务失败"); | |||||
} else { | |||||
log.info("创建应急任务成功, inspection={}", inspection); | |||||
} | |||||
return inspection; | |||||
} | |||||
private void callOldAirpor(Accident accident, Inspection inspection) { | |||||
InspectionFile inspectionFile = inspectionFileMapper.selectOne(new LambdaQueryWrapper<InspectionFile>() | |||||
.eq(InspectionFile::getId, accident.getInspectionFileId()) | |||||
.eq(InspectionFile::getMark, MarkEnum.VALID.getCode())); | |||||
String url = CommonConfig.airportURL + SystemConstant.API_AIRPORT_DRONE_CONTROL; | |||||
JSONObject jsonObject = new JSONObject(); | |||||
jsonObject.put("taskId", inspection.getId()); | |||||
jsonObject.put("airportId", inspection.getAirportId()); | |||||
jsonObject.put("zalt", ""); | |||||
jsonObject.put("zlon", inspectionFile.getLongitude()); | |||||
jsonObject.put("zlat", inspectionFile.getLatitude()); | |||||
log.info("调用机场平台,原无人机执行定点飞行: url:{}", url); | |||||
log.info("调用机场平台,原无人机执行定点飞行: jsonObject:{}", jsonObject); | |||||
String airPortStr = HttpUtils.doSend(url, jsonObject, null, "POST"); | |||||
if (StringUtils.isEmpty(airPortStr)) { | |||||
log.info("原无人机执行定点飞行:机场接口返回数据为空,飞行失败,jsonObject:{}", jsonObject); | |||||
throw new ServiceException("机场接口返回数据为空,飞行失败"); | |||||
} | |||||
} | |||||
} |
package com.tuoheng.admin.service.third.airport; | |||||
import com.alibaba.fastjson.JSONObject; | |||||
import com.tuoheng.admin.constant.SystemConstant; | |||||
import com.tuoheng.admin.mapper.TenantMapper; | |||||
import com.tuoheng.common.core.config.common.CommonConfig; | |||||
import com.tuoheng.common.core.utils.HttpUtils; | |||||
import com.tuoheng.common.core.utils.JsonResult; | |||||
import com.tuoheng.common.core.utils.StringUtils; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
@Slf4j | |||||
@Service | |||||
public class DroneControlService { | |||||
@Autowired | |||||
private TenantMapper tenantMapper; | |||||
public JsonResult execute(JSONObject jsonObject) { | |||||
log.info("进入调用机场平台,操作无人机"); | |||||
String url = CommonConfig.airportURL + SystemConstant.API_AIRPORT_DRONE_CONTROL; | |||||
log.info("调用机场平台,操作无人机: url:{}", url); | |||||
log.info("调用机场平台,操作无人机: jsonObject:{}", jsonObject); | |||||
String airPortStr = HttpUtils.doSend(url, jsonObject, null, "POST"); | |||||
log.info("调用机场平台,操作无人机: airPortStr:{}", airPortStr); | |||||
if (StringUtils.isEmpty(airPortStr)) { | |||||
log.info("执行定点飞行:机场接口返回数据为空,飞行失败,jsonObject:{}", jsonObject); | |||||
return JsonResult.error(-1, "机场接口返回数据为空"); | |||||
} | |||||
log.info("调用机场平台方法: 操作无人机结束"); | |||||
return JsonResult.success(); | |||||
} | |||||
} |
String code = DateUtils.generateCode("XJRW"); | String code = DateUtils.generateCode("XJRW"); | ||||
inspection.setCode(code); | inspection.setCode(code); | ||||
inspection.setName("应急任务"+code); | inspection.setName("应急任务"+code); | ||||
inspection.setType(1); | |||||
inspection.setType(2); | |||||
inspection.setStatus(TaskStatusEnum.INFLIGHT.getCode()); | inspection.setStatus(TaskStatusEnum.INFLIGHT.getCode()); | ||||
inspection.setRoadId(""); | inspection.setRoadId(""); | ||||
inspection.setSectionId(""); | inspection.setSectionId(""); | ||||
inspection.setAirportName(request.getAirportName()); | inspection.setAirportName(request.getAirportName()); | ||||
inspection.setInspectionLine(0); | inspection.setInspectionLine(0); | ||||
inspection.setInspectionLineName(""); | inspection.setInspectionLineName(""); | ||||
inspection.setAccidentTask(1); | |||||
inspection.setExecutionStartTime(DateUtils.now()); | inspection.setExecutionStartTime(DateUtils.now()); | ||||
inspection.setCreateUser(user.getId()); | inspection.setCreateUser(user.getId()); | ||||
inspection.setCreateTime(DateUtils.now()); | inspection.setCreateTime(DateUtils.now()); |
accident.setRoadId(inspection.getRoadId()); | accident.setRoadId(inspection.getRoadId()); | ||||
accident.setSectionId(inspection.getSectionId()); | accident.setSectionId(inspection.getSectionId()); | ||||
accident.setSectionName(inspection.getSectionName()); | accident.setSectionName(inspection.getSectionName()); | ||||
//根据巡检任务类型判断当前应急事故类型 | //根据巡检任务类型判断当前应急事故类型 | ||||
Integer accidentTaskType = inspection.getAccidentTask(); | |||||
if(AccidentTaskEnum.INSPECTION_ACCIDENT_TASK.getCode() == accidentTaskType){ | |||||
if (AccidentTaskEnum.INSPECTION_ACCIDENT_TASK.getCode() == inspection.getType()) { | |||||
accident.setFlag(FlagEnum.ACCIDENT.getCode()); | accident.setFlag(FlagEnum.ACCIDENT.getCode()); | ||||
}else { | |||||
accident.setFlag(FlagEnum.INSPECTION_ACCIDENT.getCode()); | |||||
} else { | |||||
// 该巡检任务存在应急任务,将后面发现的预警直接设置为不展示 | |||||
Inspection emergencyInspection = inspectionMapper.selectOne(new LambdaQueryWrapper<Inspection>() | |||||
.eq(Inspection::getEmergencyDataInspectionId, inspectionFile.getInspectionId()) | |||||
.eq(Inspection::getMark, MarkEnum.VALID.getCode())); | |||||
if (ObjectUtils.isNotEmpty(emergencyInspection)) { | |||||
accident.setFlag(FlagEnum.ACCIDENT.getCode()); | |||||
} else { | |||||
accident.setFlag(FlagEnum.INSPECTION_ACCIDENT.getCode()); | |||||
} | |||||
} | } | ||||
} | } | ||||
//公路代号 | //公路代号 | ||||
RoadInformation roadInformation = roadInformationMapper.selectById(inspection.getRoadId()); | RoadInformation roadInformation = roadInformationMapper.selectById(inspection.getRoadId()); | ||||
if(ObjectUtils.isNotEmpty(roadInformation)){ | if(ObjectUtils.isNotEmpty(roadInformation)){ |
<result property="createTime" column="create_time" /> | <result property="createTime" column="create_time" /> | ||||
<result property="updateUser" column="update_user" /> | <result property="updateUser" column="update_user" /> | ||||
<result property="updateTime" column="update_time" /> | <result property="updateTime" column="update_time" /> | ||||
<result property="accidentTask" column="accident_task" /> | |||||
<result property="emergencyDataMissionId" column="emergency_data_inspection_id" /> | |||||
<result property="mark" column="mark" /> | <result property="mark" column="mark" /> | ||||
</resultMap> | </resultMap> | ||||