Browse Source

Merge branch 'wanjing' into develop

tags/v1.2.0^2
wanjing 1 year ago
parent
commit
024a25a9d9
7 changed files with 187 additions and 38 deletions
  1. +5
    -0
      tuoheng-admin/src/main/java/com/tuoheng/admin/config/SystemConstant.java
  2. +5
    -0
      tuoheng-admin/src/main/java/com/tuoheng/admin/entity/domain/Warning.java
  3. +5
    -0
      tuoheng-admin/src/main/java/com/tuoheng/admin/entity/domain/WarningRecord.java
  4. +6
    -18
      tuoheng-admin/src/main/java/com/tuoheng/admin/entity/request/airport/PointFlightRequest.java
  5. +162
    -18
      tuoheng-admin/src/main/java/com/tuoheng/admin/service/third/airport/PointFlightService.java
  6. +2
    -1
      tuoheng-admin/src/main/resources/mapper/WarningMapper.xml
  7. +2
    -1
      tuoheng-admin/src/main/resources/mapper/WarningRecordMapper.xml

+ 5
- 0
tuoheng-admin/src/main/java/com/tuoheng/admin/config/SystemConstant.java View File



public interface SystemConstant { public interface SystemConstant {


/**
* 平台code
*/
String PLATFORM_CODE = "treefarm";

/** /**
* 机场平台:获取机场列表接口 * 机场平台:获取机场列表接口
*/ */

+ 5
- 0
tuoheng-admin/src/main/java/com/tuoheng/admin/entity/domain/Warning.java View File

*/ */
private Integer tenantId; private Integer tenantId;
/**
* 任务ID
*/
private Integer missionId;
/** /**
* 发现方式 1监控摄像 2无人机巡检 3人工巡检 * 发现方式 1监控摄像 2无人机巡检 3人工巡检
*/ */

+ 5
- 0
tuoheng-admin/src/main/java/com/tuoheng/admin/entity/domain/WarningRecord.java View File

*/ */
private Integer missionId; private Integer missionId;
/**
* 应急任务ID
*/
private Integer emergencyMissionId;
} }

+ 6
- 18
tuoheng-admin/src/main/java/com/tuoheng/admin/entity/request/airport/PointFlightRequest.java View File



private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;


@ApiModelProperty(value = "预警id")
private Integer warningId;

@ApiModelProperty(value = "巡检任务id")
private Integer missionId;

@ApiModelProperty(value = "机场id") @ApiModelProperty(value = "机场id")
private Integer airportId; private Integer airportId;


@ApiModelProperty(value = "机场名称") @ApiModelProperty(value = "机场名称")
private String airportName; private String airportName;


@ApiModelProperty(value = "路线id")
private Integer inspectionLine;

@ApiModelProperty(value = "路线名称")
private String inspectionLineName;

@ApiModelProperty(value = "无人机ID")
private Integer droneId;

@ApiModelProperty(value = "无人机名称")
private String droneName;

@ApiModelProperty(value = "业务系统标识")
private String code;

@ApiModelProperty(value = "租户代码")
private String tenantCode;

@ApiModelProperty(value = "指点高度") @ApiModelProperty(value = "指点高度")
private String alt; private String alt;



+ 162
- 18
tuoheng-admin/src/main/java/com/tuoheng/admin/service/third/airport/PointFlightService.java View File



import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.tuoheng.admin.config.SystemConstant; import com.tuoheng.admin.config.SystemConstant;
import com.tuoheng.admin.entity.domain.Tenant; import com.tuoheng.admin.entity.domain.Tenant;
import com.tuoheng.admin.entity.domain.ThMission; import com.tuoheng.admin.entity.domain.ThMission;
import com.tuoheng.admin.entity.domain.Warning;
import com.tuoheng.admin.entity.domain.WarningRecord;
import com.tuoheng.admin.entity.request.airport.PointFlightRequest; import com.tuoheng.admin.entity.request.airport.PointFlightRequest;
import com.tuoheng.admin.enums.AirportFlyTypeEnum; import com.tuoheng.admin.enums.AirportFlyTypeEnum;
import com.tuoheng.admin.enums.InspectionTypeEnum; import com.tuoheng.admin.enums.InspectionTypeEnum;
import com.tuoheng.admin.enums.TaskStatusEnum;
import com.tuoheng.admin.enums.UpdateOrCreateEnum; import com.tuoheng.admin.enums.UpdateOrCreateEnum;
import com.tuoheng.admin.mapper.TenantMapper; import com.tuoheng.admin.mapper.TenantMapper;
import com.tuoheng.admin.mapper.ThMissionMapper; import com.tuoheng.admin.mapper.ThMissionMapper;
import com.tuoheng.admin.mapper.WarningMapper;
import com.tuoheng.admin.mapper.WarningRecordMapper;
import com.tuoheng.admin.utils.CodeUtil; import com.tuoheng.admin.utils.CodeUtil;
import com.tuoheng.common.exception.ServiceException; import com.tuoheng.common.exception.ServiceException;
import com.tuoheng.common.utils.DateUtils; import com.tuoheng.common.utils.DateUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


@Slf4j @Slf4j
@Service @Service
@Autowired @Autowired
private TenantMapper tenantMapper; private TenantMapper tenantMapper;


@Autowired
private WarningMapper warningMapper;

@Autowired @Autowired
private ThMissionMapper missionMapper; private ThMissionMapper missionMapper;


@Autowired
private WarningRecordMapper warningRecordMapper;

@Transactional
public JsonResult executePointFligh(PointFlightRequest request) { public JsonResult executePointFligh(PointFlightRequest request) {
log.info("进入调用机场平台,执行定点飞行"); log.info("进入调用机场平台,执行定点飞行");
// 读取不同租户的机场平台url
JsonResult result = this.check(request);
User user = ShiroUtils.getUserInfo(); User user = ShiroUtils.getUserInfo();
Integer tenantId = user.getTenantId(); Integer tenantId = user.getTenantId();


// 获取租户信息
Tenant tenant = this.getTenant(tenantId);

// 创建应急任务
ThMission mission = this.createMission(user, request);

// 调用机场平台
ThMission oldMission = (ThMission) result.getData();
if (oldMission.getAirportId().equals(request.getAirportId())) {
log.info("原机场执行定点飞行");
// this.callOldAirpor(tenant, request);
} else {
log.info("新机场执行定点飞行");
// this.callNewAirpor(tenant, request, mission.getId());
}

// 创建预警记录
this.createWarningRecord(user.getId(), tenantId, request, mission.getId());

log.info("调用机场平台方法: 执行定点飞行结束");
return JsonResult.success();
}

/**
* 检查参数
*
* @param request
*/
private JsonResult check(PointFlightRequest request) {
if (ObjectUtil.isNull(request.getWarningId())) {
throw new ServiceException("预警ID为空");
}
if (ObjectUtil.isNull(request.getMissionId())) {
throw new ServiceException("原巡检任务ID为空");
}
if (ObjectUtil.isNull(request.getAirportId())) {
throw new ServiceException("机场ID为空");
}
if (ObjectUtil.isNull(request.getAirportName())) {
throw new ServiceException("机场名称为空");
}
if (ObjectUtil.isNull(request.getAlt())) {
throw new ServiceException("指点高度为空");
}
if (ObjectUtil.isNull(request.getLon())) {
throw new ServiceException("经度为空");
}
if (ObjectUtil.isNull(request.getLat())) {
throw new ServiceException("纬度为空");
}
Warning warning = warningMapper.selectOne(new LambdaQueryWrapper<Warning>()
.eq(Warning::getId, request.getWarningId())
.eq(Warning::getMark, 1));
if (ObjectUtil.isNull(warning)) {
throw new ServiceException("该预警信息不存在");
}
ThMission mission = missionMapper.selectOne(new LambdaQueryWrapper<ThMission>()
.eq(ThMission::getId, request.getMissionId())
.eq(ThMission::getMark, 1));
if (ObjectUtil.isNull(mission)) {
throw new ServiceException("原巡检任务不存在");
}
return JsonResult.success(mission);
}

/**
* 获取租户信息
*
* @param tenantId
* @return
*/
private Tenant getTenant(Integer tenantId) {
Tenant tenant = tenantMapper.selectById(tenantId); Tenant tenant = tenantMapper.selectById(tenantId);
if (ObjectUtil.isEmpty(tenant)) { if (ObjectUtil.isEmpty(tenant)) {
log.info("调用机场平台,执行定点飞行: 租户不存在"); log.info("调用机场平台,执行定点飞行: 租户不存在");
throw new ServiceException("租户不存在"); throw new ServiceException("租户不存在");
} }

// 读取不同租户的机场平台url
if (StringUtils.isEmpty(tenant.getAirportUrl())) { if (StringUtils.isEmpty(tenant.getAirportUrl())) {
log.info("调用机场平台,执行定点飞行: 机场平台URL为空"); log.info("调用机场平台,执行定点飞行: 机场平台URL为空");
throw new ServiceException("机场平台URL为空"); throw new ServiceException("机场平台URL为空");
} }
return tenant;
}


// 创建应急任务
this.createMission(user, request);
/**
* 调用老机场平台
*
* @param tenant
* @param request
*/
private void callOldAirpor(Tenant tenant, PointFlightRequest request) {
String url = tenant.getAirportUrl() + SystemConstant.API_AIRPORT_DRONE_CONTROL;
JSONObject jsonObject = new JSONObject();
jsonObject.put("taskId", request.getMissionId());
jsonObject.put("airportId", request.getAirportId());
jsonObject.put("zalt", request.getAlt());
jsonObject.put("zlon", request.getLon());
jsonObject.put("zlat", request.getLat());

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("机场接口返回数据为空,飞行失败");
}
}


/**
* 调用新机场平台
*
* @param tenant
* @param request
*/
private void callNewAirpor(Tenant tenant, PointFlightRequest request, Integer emergencyMissionId) {
String url = tenant.getAirportUrl() + SystemConstant.API_AIRPORT_POINT_FLIGH; String url = tenant.getAirportUrl() + SystemConstant.API_AIRPORT_POINT_FLIGH;
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("airportId", request.getAirportId()); jsonObject.put("airportId", request.getAirportId());
jsonObject.put("requestId", request.getInspectionLine());
jsonObject.put("code", "gs"); // 与机场平台约定好的
jsonObject.put("requestId", emergencyMissionId);
jsonObject.put("code", SystemConstant.PLATFORM_CODE); // 与机场平台约定好的
jsonObject.put("tenantCode", tenant.getCode()); jsonObject.put("tenantCode", tenant.getCode());
jsonObject.put("alt", request.getAlt()); jsonObject.put("alt", request.getAlt());
jsonObject.put("lon", request.getLon()); jsonObject.put("lon", request.getLon());
jsonObject.put("lat", request.getLat()); jsonObject.put("lat", request.getLat());


log.info("调用机场平台,执行定点飞行: url:{}", url);
log.info("调用机场平台,执行定点飞行: jsonObject:{}", jsonObject);
log.info("调用机场平台,新无人机执行定点飞行: url:{}", url);
log.info("调用机场平台,新无人机执行定点飞行: jsonObject:{}", jsonObject);


String airPortStr = HttpUtils.doSend(url, jsonObject, null, "POST"); String airPortStr = HttpUtils.doSend(url, jsonObject, null, "POST");
if (StringUtils.isEmpty(airPortStr)) { if (StringUtils.isEmpty(airPortStr)) {
log.info("执行定点飞行:机场接口返回数据为空,飞行失败,jsonObject:{}", jsonObject);
return JsonResult.error(-1, "机场接口返回数据为空");
log.info("新无人机执行定点飞行:机场接口返回数据为空,飞行失败,jsonObject:{}", jsonObject);
throw new ServiceException("机场接口返回数据为空,飞行失败");
} }

log.info("调用机场平台方法: 执行定点飞行结束");
return JsonResult.success();
} }


private void createMission(User user, PointFlightRequest request) {
/**
* 创建应急任务
*
* @param user
* @param request
* @return
*/
private ThMission createMission(User user, PointFlightRequest request) {
ThMission mission = new ThMission(UpdateOrCreateEnum.CREATE.getCode()); ThMission mission = new ThMission(UpdateOrCreateEnum.CREATE.getCode());
String code = "XJRW" + CodeUtil.createCodeNo(); String code = "XJRW" + CodeUtil.createCodeNo();
mission.setCode(code); mission.setCode(code);
mission.setInspectionType(InspectionTypeEnum.AIRPORT.getCode()); mission.setInspectionType(InspectionTypeEnum.AIRPORT.getCode());
mission.setAirportId(request.getAirportId()); mission.setAirportId(request.getAirportId());
mission.setAirportName(request.getAirportName()); mission.setAirportName(request.getAirportName());
mission.setInspectionLine(request.getInspectionLine());
mission.setInspectionLineName(request.getInspectionLineName());
mission.setDroneId(request.getDroneId());
mission.setDroneName(request.getDroneName());
mission.setInspectionLine(0);
mission.setInspectionLineName("");
mission.setExecutionStartTime(DateUtils.now()); mission.setExecutionStartTime(DateUtils.now());
mission.setAirportFlyType(AirportFlyTypeEnum.POINTING_FLIGHT.getCode()); mission.setAirportFlyType(AirportFlyTypeEnum.POINTING_FLIGHT.getCode());
mission.setCreateUser(user.getId()); mission.setCreateUser(user.getId());
log.info("创建应急任务失败"); log.info("创建应急任务失败");
throw new ServiceException("创建应急任务失败"); throw new ServiceException("创建应急任务失败");
} }
return mission;
}

/**
* 创建预警记录
*
* @param userId
* @param tenantId
* @param request
* @param emergencyMissionId
*/
private void createWarningRecord(Integer userId, Integer tenantId, PointFlightRequest request, Integer emergencyMissionId) {
WarningRecord warningRecord = new WarningRecord();
warningRecord.setTenantId(tenantId);
warningRecord.setWarningId(request.getWarningId());
warningRecord.setMissionId(request.getMissionId());
warningRecord.setEmergencyMissionId(emergencyMissionId);
warningRecord.setName(request.getAirportName() + "执行任务");
warningRecord.setCreateUser(userId);
warningRecord.setCreateTime(DateUtils.now());
Integer count = warningRecordMapper.insert(warningRecord);
if (count <= 0) {
log.info("创建预计记录失败");
throw new ServiceException("创建预计记录失败");
}
} }


} }

+ 2
- 1
tuoheng-admin/src/main/resources/mapper/WarningMapper.xml View File

<resultMap type="com.tuoheng.admin.entity.domain.Warning" id="WarningResult"> <resultMap type="com.tuoheng.admin.entity.domain.Warning" id="WarningResult">
<result property="id" column="id" /> <result property="id" column="id" />
<result property="tenantId" column="tenant_id" /> <result property="tenantId" column="tenant_id" />
<result property="missionId" column="mission_id" />
<result property="discoveryWay" column="discovery_way" /> <result property="discoveryWay" column="discovery_way" />
<result property="location" column="location" /> <result property="location" column="location" />
<result property="status" column="status" /> <result property="status" column="status" />
</resultMap> </resultMap>
<sql id="selectWarningVo"> <sql id="selectWarningVo">
select id, tenant_id, discovery_way, location, status, question_id, create_user, create_time, update_user, update_time, check_user, check_time, check_result, mark from th_warning
select id, tenant_id, mission_id, discovery_way, location, status, question_id, create_user, create_time, update_user, update_time, check_user, check_time, check_result, mark from th_warning
</sql> </sql>
<select id="getList" parameterType="com.tuoheng.admin.entity.request.warning.QueryWarningListRequest" resultMap="WarningResult"> <select id="getList" parameterType="com.tuoheng.admin.entity.request.warning.QueryWarningListRequest" resultMap="WarningResult">

+ 2
- 1
tuoheng-admin/src/main/resources/mapper/WarningRecordMapper.xml View File

<result property="id" column="id" /> <result property="id" column="id" />
<result property="tenantId" column="tenant_id" /> <result property="tenantId" column="tenant_id" />
<result property="warningId" column="warning_id" /> <result property="warningId" column="warning_id" />
<result property="name" column="name" />
<result property="missionId" column="mission_id" /> <result property="missionId" column="mission_id" />
<result property="emergencyMissionId" column="emergency_mission_id" />
<result property="name" column="name" />
<result property="createUser" column="create_user" /> <result property="createUser" column="create_user" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="updateUser" column="update_user" /> <result property="updateUser" column="update_user" />

Loading…
Cancel
Save