package com.tuoheng.admin.service.inspection.add; | package com.tuoheng.admin.service.inspection.add; | ||||
import cn.hutool.core.util.ObjectUtil; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.tuoheng.admin.conver.InspectionConverMapper; | import com.tuoheng.admin.conver.InspectionConverMapper; | ||||
import com.tuoheng.admin.entity.*; | import com.tuoheng.admin.entity.*; | ||||
import com.tuoheng.admin.mapper.*; | import com.tuoheng.admin.mapper.*; | ||||
import com.tuoheng.admin.request.inspection.AddInspectionRequest; | import com.tuoheng.admin.request.inspection.AddInspectionRequest; | ||||
import com.tuoheng.admin.service.third.pilot.PilotService; | import com.tuoheng.admin.service.third.pilot.PilotService; | ||||
import com.tuoheng.admin.tzhl.response.TZHLAirportLineResponse; | |||||
import com.tuoheng.admin.tzhl.service.airportline.TZHLGetAirportLineListService; | |||||
import com.tuoheng.admin.tzhl.service.task.ShelterTaskService; | |||||
import com.tuoheng.admin.utils.CurrentUserUtil; | import com.tuoheng.admin.utils.CurrentUserUtil; | ||||
import com.tuoheng.admin.utils.GaodeUtil; | import com.tuoheng.admin.utils.GaodeUtil; | ||||
import com.tuoheng.common.core.constant.CommonConstants; | import com.tuoheng.common.core.constant.CommonConstants; | ||||
@Autowired | @Autowired | ||||
private InspectionMapper inspectionMapper; | private InspectionMapper inspectionMapper; | ||||
@Autowired | |||||
private InspectionHistoryMapper inspectionHistoryMapper; | |||||
@Autowired | @Autowired | ||||
private TenantMapper tenantMapper; | private TenantMapper tenantMapper; | ||||
@Autowired | @Autowired | ||||
private DspServiceInstMapper dspServiceInstMapper; | private DspServiceInstMapper dspServiceInstMapper; | ||||
@Autowired | |||||
private ShelterTaskService shelterTaskService; | |||||
@Autowired | |||||
private TZHLGetAirportLineListService tzhlGetAirportLineListService; | |||||
/** | /** | ||||
* 添加任务 | * 添加任务 | ||||
* | * | ||||
Inspection inspection = this.buildInspection(user, tenantId, addInspectionRequest); | Inspection inspection = this.buildInspection(user, tenantId, addInspectionRequest); | ||||
// 调用第三方平台 | // 调用第三方平台 | ||||
result = this.callThirdPlatform(user, tenantId, inspection); | |||||
result = this.callThirdPlatform(user, inspection); | |||||
if (0 != result.getCode()) { | if (0 != result.getCode()) { | ||||
log.info("添加任务业务:对接第三方平台失败:{}", result.getMsg()); | log.info("添加任务业务:对接第三方平台失败:{}", result.getMsg()); | ||||
return result; | return result; | ||||
} | } | ||||
if (InspectionTypeEnum.AIRPORT.getCode() == inspection.getInspectionType()) { | |||||
Long recordId = (Long) result.getData(); | |||||
inspection.setRecordId(recordId); | |||||
} | |||||
Integer rowId = inspectionMapper.insert(inspection); | Integer rowId = inspectionMapper.insert(inspection); | ||||
log.info("添加任务, 返回结果: deptId={}", rowId); | log.info("添加任务, 返回结果: deptId={}", rowId); | ||||
if (rowId <= 0) { | if (rowId <= 0) { | ||||
} | } | ||||
/** | /** | ||||
* 与第三方平台(飞手、高德)对接 | |||||
* 与第三方平台(天翼、飞手、高德)对接 | |||||
* | * | ||||
* @param user | * @param user | ||||
* @param tenantId | |||||
* @param inspection | * @param inspection | ||||
* @return | * @return | ||||
*/ | */ | ||||
private JsonResult callThirdPlatform(User user, String tenantId, Inspection inspection) { | |||||
private JsonResult callThirdPlatform(User user, Inspection inspection) { | |||||
// 对接高德地图 | // 对接高德地图 | ||||
JsonResult result = this.callGaode(inspection); | JsonResult result = this.callGaode(inspection); | ||||
if (0 != result.getCode()) { | if (0 != result.getCode()) { | ||||
return result; | return result; | ||||
} | } | ||||
if (InspectionTypeEnum.MABNNEDFLIGHT.getCode() == inspection.getInspectionType()) { | |||||
if (InspectionTypeEnum.AIRPORT.getCode() == inspection.getInspectionType()) { | |||||
// 对接天翼平台 | |||||
return this.callTianYi(inspection); | |||||
} else if (InspectionTypeEnum.MABNNEDFLIGHT.getCode() == inspection.getInspectionType()) { | |||||
// 对接飞手平台 | // 对接飞手平台 | ||||
result = pilotService.addTask(user, inspection); | |||||
if (0 != result.getCode()) { | |||||
return result; | |||||
} | |||||
return pilotService.addTask(user, inspection); | |||||
} | } | ||||
return JsonResult.success(); | return JsonResult.success(); | ||||
} | } | ||||
return JsonResult.success(); | return JsonResult.success(); | ||||
} | } | ||||
private JsonResult callTianYi(Inspection inspection) { | |||||
TZHLAirportLineResponse tzhlAirportLineResponse = tzhlGetAirportLineListService.getAirportLineById(inspection.getInspectionLine()); | |||||
if (ObjectUtil.isEmpty(tzhlAirportLineResponse)) { | |||||
this.insertInspectionHistory(inspection, "创建任务,下发任务,航线不存在"); | |||||
return JsonResult.error("创建任务,下发任务,航线不存在"); | |||||
} | |||||
Long recordId = shelterTaskService.distributeTask(inspection, tzhlAirportLineResponse); | |||||
if (ObjectUtil.isEmpty(recordId)) { | |||||
log.info("创建任务,下发任务失败,status={}", inspection.getStatus()); | |||||
inspection.setStatus(InspectionStatusEnum.FLIGHT_FAILED.getCode()); | |||||
this.insertInspectionHistory(inspection, "创建任务,下发任务失败"); | |||||
return JsonResult.error("创建任务,下发任务失败"); | |||||
} | |||||
return JsonResult.success(recordId); | |||||
} | |||||
/** | |||||
* 更新任务失败记录 | |||||
* | |||||
* @param inspection | |||||
*/ | |||||
private void insertInspectionHistory(Inspection inspection, String msg) { | |||||
InspectionHistory inspectionHistory = new InspectionHistory(); | |||||
inspectionHistory.setTenantId(inspection.getTenantId()); | |||||
inspectionHistory.setInspectionId(inspection.getId()); | |||||
inspectionHistory.setHistoryName(msg); | |||||
inspectionHistory.setCreateUser(""); | |||||
inspectionHistory.setCreateTime(DateUtils.now()); | |||||
inspectionHistoryMapper.insert(inspectionHistory); | |||||
} | |||||
} | } |
import com.tuoheng.admin.tzhl.service.airport.TZHLGetAirportListService; | import com.tuoheng.admin.tzhl.service.airport.TZHLGetAirportListService; | ||||
import com.tuoheng.admin.tzhl.service.airportline.TZHLGetAirportLineListService; | import com.tuoheng.admin.tzhl.service.airportline.TZHLGetAirportLineListService; | ||||
import com.tuoheng.admin.tzhl.service.fly.onlineuav.OnlineUavService; | import com.tuoheng.admin.tzhl.service.fly.onlineuav.OnlineUavService; | ||||
import com.tuoheng.admin.tzhl.service.task.FlightTaskService; | |||||
import com.tuoheng.admin.tzhl.service.task.ShelterTaskService; | import com.tuoheng.admin.tzhl.service.task.ShelterTaskService; | ||||
import com.tuoheng.common.core.exception.ServiceException; | import com.tuoheng.common.core.exception.ServiceException; | ||||
import com.tuoheng.common.core.utils.DateUtils; | import com.tuoheng.common.core.utils.DateUtils; | ||||
private TZHLGetAirportLineListService tzhlGetAirportLineListService; | private TZHLGetAirportLineListService tzhlGetAirportLineListService; | ||||
@Autowired | @Autowired | ||||
private ShelterTaskService shelterTaskService; | |||||
private FlightTaskService flightTaskService; | |||||
public JsonResult executeTask(String userId, Inspection inspection) { | public JsonResult executeTask(String userId, Inspection inspection) { | ||||
log.info("进入泰州海陵区城管,执行任务,inspectionId={}", inspection.getId()); | log.info("进入泰州海陵区城管,执行任务,inspectionId={}", inspection.getId()); | ||||
JsonResult result = this.check(inspection); | JsonResult result = this.check(inspection); | ||||
TZHLAirportLineResponse tzhlAirportLineResponse = tzhlGetAirportLineListService.getAirportLineById(inspection.getInspectionLine()); | |||||
if (0 != result.getCode()) { | if (0 != result.getCode()) { | ||||
this.insertInspectionHistory(inspection, result.getMsg()); | this.insertInspectionHistory(inspection, result.getMsg()); | ||||
return JsonResult.error(result.getMsg()); | return JsonResult.error(result.getMsg()); | ||||
} | } | ||||
Long recordId = shelterTaskService.distributeTask(inspection, tzhlAirportLineResponse); | |||||
if (ObjectUtil.isEmpty(recordId)) { | |||||
log.info("泰州海陵区城管,执行任务,下发任务失败,status={}", inspection.getStatus()); | |||||
result = flightTaskService.flightTask(inspection); | |||||
if (0 != result.getCode()) { | |||||
inspection.setStatus(InspectionStatusEnum.FLIGHT_FAILED.getCode()); | inspection.setStatus(InspectionStatusEnum.FLIGHT_FAILED.getCode()); | ||||
this.updateInspection(userId, inspection, recordId); | |||||
this.updateInspection(userId, inspection); | |||||
log.info("执行任务失败,修改任务状态,status={}", inspection.getStatus()); | |||||
this.insertInspectionHistory(inspection, "下发任务失败"); | |||||
this.insertInspectionHistory(inspection, "执行任务失败"); | |||||
return JsonResult.success("泰州海陵区城管,执行任务,下发任务失败"); | |||||
return JsonResult.success("执行任务失败"); | |||||
} | } | ||||
inspection.setStatus(InspectionStatusEnum.PREPARING.getCode()); | inspection.setStatus(InspectionStatusEnum.PREPARING.getCode()); | ||||
this.updateInspection(userId, inspection, recordId); | |||||
this.updateInspection(userId, inspection); | |||||
log.info("任务下发成功,修改任务状态,status={}", inspection.getStatus()); | |||||
log.info("执行任务成功,修改任务状态,status={}", inspection.getStatus()); | |||||
return JsonResult.success(); | return JsonResult.success(); | ||||
} | } | ||||
* @param userId | * @param userId | ||||
* @param inspection | * @param inspection | ||||
*/ | */ | ||||
private void updateInspection(String userId, Inspection inspection, Long recordId) { | |||||
private void updateInspection(String userId, Inspection inspection) { | |||||
inspection.setExecutionStatus(2); // 修改任务执行状态,防止手动执行和定时重复 | inspection.setExecutionStatus(2); // 修改任务执行状态,防止手动执行和定时重复 | ||||
inspection.setStatus(inspection.getStatus()); | inspection.setStatus(inspection.getStatus()); | ||||
inspection.setUpdateUser(userId); | inspection.setUpdateUser(userId); | ||||
inspection.setUpdateTime(DateUtils.now()); | inspection.setUpdateTime(DateUtils.now()); | ||||
inspection.setRecordId(recordId); | |||||
inspectionMapper.update(inspection); | inspectionMapper.update(inspection); | ||||
} | } | ||||
/** | /** | ||||
* 天翼星云机场平台:票据登录 | * 天翼星云机场平台:票据登录 | ||||
*/ | */ | ||||
String TIAN_YI_API_TICKET_LOGIN = "/prod-api/auth/ticketLogin"; | |||||
String TIAN_YI_API_TICKET_LOGIN = "/auth/ticketLogin"; | |||||
/** | /** | ||||
* 天翼星云机场平台:获取机场列表 | * 天翼星云机场平台:获取机场列表 | ||||
*/ | */ | ||||
String TIAN_YI_API_AIRPORT_LIST = "/prod-api/ctuav/openapi/ctuav/v4/shelter/list"; | |||||
String TIAN_YI_API_AIRPORT_LIST = "/ctuav/openapi/ctuav/v4/shelter/list"; | |||||
/** | /** | ||||
* 天翼星云机场平台:航线列表(跟据方舱序列号查询待开发) | * 天翼星云机场平台:航线列表(跟据方舱序列号查询待开发) | ||||
*/ | */ | ||||
String TIAN_YI_API_FLY_LINE_LIST = "/prod-api/ctuav/openapi/ctuav/v4/flyline/list"; | |||||
String TIAN_YI_API_FLY_LINE_LIST = "/ctuav/openapi/ctuav/v4/flyline/list"; | |||||
/** | /** | ||||
* 天翼星云机场平台:下发任务 | * 天翼星云机场平台:下发任务 | ||||
*/ | */ | ||||
String TIAN_YI_API_SHELTER_TASKS = "/prod-api/shelter/task"; | |||||
String TIAN_YI_API_SHELTER_TASKS = "/shelter/task"; | |||||
/** | |||||
* 天翼星云机场平台:执行航线任务 | |||||
*/ | |||||
String TIAN_YI_API_WAYLINE_FLIGHT_TASKS = "/shelter/wayline/v1.4/flight-tasks"; | |||||
/** | /** | ||||
* 天翼星云机场平台:飞行日志回调 | * 天翼星云机场平台:飞行日志回调 | ||||
*/ | */ | ||||
String TIAN_YI_API_FLIGHT_LOG = "/prod-api/ctuav/mapper/fly/log/listAll"; | |||||
String TIAN_YI_API_FLIGHT_LOG = "/ctuav/mapper/fly/log/listAll"; | |||||
/** | /** | ||||
* 天翼星云机场平台:飞行画面 | * 天翼星云机场平台:飞行画面 | ||||
*/ | */ | ||||
String TIAN_YI_API_FLIGHT_SCREEN = "/prod-api/ctuav/openapi/ctuav/v4/onlineuav/list"; | |||||
String TIAN_YI_API_FLIGHT_SCREEN = "/ctuav/openapi/ctuav/v4/onlineuav/list"; | |||||
/** | /** | ||||
* 天翼星云机场平台:飞行数据 | * 天翼星云机场平台:飞行数据 | ||||
*/ | */ | ||||
String TIAN_YI_API_FLIGHT_DATA = "/prod-api/ctuav/openapi/ctuav/v4/flydata/list"; | |||||
String TIAN_YI_API_FLIGHT_DATA = "/ctuav/openapi/ctuav/v4/flydata/list"; | |||||
/** | /** | ||||
* 天翼星云机场信息:气象数据接口 | * 天翼星云机场信息:气象数据接口 | ||||
*/ | */ | ||||
String TIAN_YI_API_AIRPORT_MSG = "/prod-api/ctuav/openapi/ctuav/v4/shelter/info"; | |||||
String TIAN_YI_API_AIRPORT_MSG = "/ctuav/openapi/ctuav/v4/shelter/info"; | |||||
} | } |
package com.tuoheng.admin.tzhl.service.task; | |||||
import com.alibaba.fastjson.JSONObject; | |||||
import com.tuoheng.admin.entity.Inspection; | |||||
import com.tuoheng.admin.tzhl.constant.TZHLConstant; | |||||
import com.tuoheng.admin.tzhl.response.TZHLAirportLineResponse; | |||||
import com.tuoheng.admin.tzhl.service.CallTianYiPlatformService; | |||||
import com.tuoheng.common.core.utils.JsonResult; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.beans.factory.annotation.Qualifier; | |||||
import org.springframework.stereotype.Service; | |||||
import org.springframework.web.client.RestTemplate; | |||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
@Slf4j | |||||
@Service | |||||
public class FlightTaskService { | |||||
@Autowired | |||||
@Qualifier("restTemplate") | |||||
private RestTemplate restTemplate; | |||||
@Autowired | |||||
private CallTianYiPlatformService callTianYiPlatformService; | |||||
public JsonResult flightTask(Inspection inspection) { | |||||
String apiPath = TZHLConstant.TIAN_YI_API_WAYLINE_FLIGHT_TASKS; | |||||
JSONObject jsonObject = this.buildJSONObject(inspection); | |||||
String dataJson = callTianYiPlatformService.callPost(apiPath, jsonObject); | |||||
return JsonResult.success(dataJson); | |||||
} | |||||
private JSONObject buildJSONObject(Inspection inspection) { | |||||
JSONObject jsonObject = new JSONObject(); | |||||
jsonObject.put("method", "flighttask_prepare"); // 默认值 flighttask_prepare | |||||
jsonObject.put("sn", inspection.getSn()); // 机库序列号 | |||||
jsonObject.put("recordId", inspection.getRecordId()); // 飞行计划Id | |||||
return jsonObject; | |||||
} | |||||
} |
# 泰州海陵区城管 | # 泰州海陵区城管 | ||||
tzhl: | tzhl: | ||||
url: http://221.230.150.241:8889 | |||||
url: http://221.230.150.241:8889/prod-api | |||||
ticket: b6hd+ymZb5bY//0wNMJZsA== | ticket: b6hd+ymZb5bY//0wNMJZsA== |
# 泰州海陵区城管 | # 泰州海陵区城管 | ||||
tzhl: | tzhl: | ||||
url: http://221.230.150.241:8889 | |||||
url: http://221.230.150.241:8889/prod-api | |||||
ticket: b6hd+ymZb5bY//0wNMJZsA== | ticket: b6hd+ymZb5bY//0wNMJZsA== |
# 泰州海陵区城管 | # 泰州海陵区城管 | ||||
tzhl: | tzhl: | ||||
url: http://221.230.150.241:8889 | |||||
url: http://221.230.150.241:8889/prod-api | |||||
ticket: b6hd+ymZb5bY//0wNMJZsA== | ticket: b6hd+ymZb5bY//0wNMJZsA== |
# 泰州海陵区城管 | # 泰州海陵区城管 | ||||
tzhl: | tzhl: | ||||
url: http://221.230.150.241:8889 | |||||
url: http://221.230.150.241:8889/prod-api | |||||
ticket: b6hd+ymZb5bY//0wNMJZsA== | ticket: b6hd+ymZb5bY//0wNMJZsA== |