26 changed files with 1406 additions and 31 deletions
@ -0,0 +1,9 @@ |
|||||
|
package org.dromara.system.api; |
||||
|
|
||||
|
import org.dromara.system.api.domain.vo.RemoteSysDepartBoundaryVo; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
public interface RemoteDepartBoundaryService { |
||||
|
List<RemoteSysDepartBoundaryVo> listDepartBoundaryByLngAndLat(Double lng, Double lat); |
||||
|
} |
@ -0,0 +1,54 @@ |
|||||
|
package org.dromara.system.api.domain.vo; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.io.Serial; |
||||
|
import java.io.Serializable; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
public class RemoteSysDepartBoundaryVo implements Serializable { |
||||
|
|
||||
|
@Serial |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
private Long id; |
||||
|
/**机构ID*/ |
||||
|
private Long deptId; |
||||
|
|
||||
|
/**机构/部门名称*/ |
||||
|
private String deptName; |
||||
|
|
||||
|
/**部门全路径*/ |
||||
|
private String namePath; |
||||
|
|
||||
|
/**边界*/ |
||||
|
private String boundary; |
||||
|
|
||||
|
/** |
||||
|
* 区域类别 areaType: 0:市级 1:区级(县) 2:镇级(街道) 3:村级 |
||||
|
*/ |
||||
|
private Integer areaType; |
||||
|
|
||||
|
/** |
||||
|
* 父类id |
||||
|
*/ |
||||
|
private Long parentId; |
||||
|
|
||||
|
/**删除状态(0,正常,1已删除)*/ |
||||
|
private String delFlag; |
||||
|
|
||||
|
|
||||
|
private List<Long> deptIds; |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,5 @@ |
|||||
|
package org.dromara.sample.configuration; |
||||
|
|
||||
|
public interface LingxiuMqttMessageProcessor { |
||||
|
void process(String topic, String payload); |
||||
|
} |
@ -0,0 +1,93 @@ |
|||||
|
package org.dromara.sample.configuration; |
||||
|
|
||||
|
import cn.hutool.core.bean.BeanUtil; |
||||
|
import cn.hutool.core.util.ObjectUtil; |
||||
|
import cn.hutool.json.JSONObject; |
||||
|
import cn.hutool.json.JSONUtil; |
||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
|
import lombok.RequiredArgsConstructor; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.dromara.sample.manage.mapper.IDevicePayloadMapper; |
||||
|
import org.dromara.sample.manage.model.dto.DevicePayloadDTO; |
||||
|
import org.dromara.sample.manage.model.entity.DevicePayloadEntity; |
||||
|
import org.dromara.sample.manage.service.IDevicePayloadService; |
||||
|
import org.dromara.sample.wayline.domain.WaylineJobAtmosphere; |
||||
|
import org.dromara.sample.wayline.domain.bo.WaylineJobAtmosphereBo; |
||||
|
import org.dromara.sample.wayline.model.dto.WaylineJobDTO; |
||||
|
import org.dromara.sample.wayline.model.entity.WaylineJobEntity; |
||||
|
import org.dromara.sample.wayline.service.IWaylineJobAtmosphereService; |
||||
|
import org.dromara.sample.wayline.service.IWaylineJobService; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
import java.util.List; |
||||
|
import java.util.Optional; |
||||
|
|
||||
|
@Slf4j |
||||
|
@Component |
||||
|
@RequiredArgsConstructor |
||||
|
public class LingxiuMqttMessageProcessorImpl implements LingxiuMqttMessageProcessor{ |
||||
|
private final IWaylineJobAtmosphereService waylineJobAtmosphereService; |
||||
|
private final IWaylineJobService waylineJobService; |
||||
|
private final IDevicePayloadService devicePayloadService; |
||||
|
|
||||
|
@Autowired |
||||
|
private final IDevicePayloadMapper devicePayloadMapper; |
||||
|
|
||||
|
@Override |
||||
|
public void process(String topic, String payload) { |
||||
|
log.info("处理灵嗅MQTT数据 topic={}, payload={}", topic, payload); |
||||
|
// {"serial":"37c12953","sequence":12,"sateNum":0,"hdop":0,"utcTime":"2025-06-17-01-37-22","latitude":34.270486,"longitude":117.149302,"altitude":0.03,"temperature":29.61,"humidity":21.37,"pressure":100071.42,"airData":{"SO2(ppm)":0,"NO2(ppm)":0,"Ox(ppm)":0,"PM1.0(ug/m3)":14,"PM2.5(ug/m3)":35,"PM10(ug/m3)":46}}
|
||||
|
|
||||
|
// if(1==1){ //关闭数据
|
||||
|
// return;
|
||||
|
// }
|
||||
|
try { |
||||
|
JSONObject json = JSONUtil.parseObj(payload); |
||||
|
System.out.println("json打印"+json); |
||||
|
JSONObject airData = json.getJSONObject("airData"); |
||||
|
String utcTimeStr = json.getStr("utcTime"); |
||||
|
|
||||
|
|
||||
|
//"airData":{"SO2(ppm)":0,"NO2(ppm)":0,"Ox(ppm)":0,"PM1.0(ug/m3)":16,"PM2.5(ug/m3)":39,"PM10(ug/m3)":51}
|
||||
|
//找默认数据
|
||||
|
WaylineJobAtmosphereBo jobAtmosphere = JSONUtil.toBean(json, WaylineJobAtmosphereBo.class); |
||||
|
jobAtmosphere.setAirData(JSONUtil.toJsonStr(airData)); |
||||
|
jobAtmosphere.setUtcTimeStr(utcTimeStr); |
||||
|
|
||||
|
LambdaQueryWrapper<DevicePayloadEntity> queryWrapper = new LambdaQueryWrapper<>(); |
||||
|
queryWrapper.eq(DevicePayloadEntity::getPayloadSn,jobAtmosphere.getSerial()); |
||||
|
DevicePayloadEntity devicePayloadEntity = devicePayloadMapper.selectOne(queryWrapper); |
||||
|
String deviceSn = devicePayloadEntity.getDeviceSn(); |
||||
|
System.out.println(deviceSn); |
||||
|
// List<DevicePayloadDTO> devicePayloadEntitiesByDeviceSn = devicePayloadService.getDevicePayloadEntitiesByDeviceSn("");
|
||||
|
|
||||
|
|
||||
|
// String sn = json.getStr("8UUXN3100A01WS");//8UUXN3100A01WS 8UUXN2T00A01R8
|
||||
|
// 查找无人机/wayline信息
|
||||
|
WaylineJobDTO waylineJobDTO = waylineJobService.getJobByDockSn(deviceSn); |
||||
|
// waylineJobService.getid
|
||||
|
// Optional<WaylineJobDTO> jobOpt = waylineJobService.getJobByJobInternalId(sn);
|
||||
|
// if (jobOpt.isPresent()) {
|
||||
|
// waylineJobAtmosphereService.handleAdd(jobOpt.get(), json);
|
||||
|
// } else {
|
||||
|
// log.warn("找不到对应无人机任务:sn={}", sn);
|
||||
|
// }
|
||||
|
// "{\"SO2(ppm)\":0,\"NO2(ppm)\":0,\"Ox(ppm)\":0,\"PM1.0(ug/m3)\":16,\"PM2.5(ug/m3)\":38,\"PM10(ug/m3)\":48}"
|
||||
|
|
||||
|
if(ObjectUtil.isNotEmpty(waylineJobDTO)){ |
||||
|
jobAtmosphere.setWaylineJobId((long)waylineJobDTO.getId()); |
||||
|
jobAtmosphere.setWaylineName(waylineJobDTO.getWaylineName()); |
||||
|
jobAtmosphere.setJobId(waylineJobDTO.getJobId()); |
||||
|
jobAtmosphere.setName(waylineJobDTO.getJobName()); |
||||
|
jobAtmosphere.setFileId(waylineJobDTO.getFileId()); |
||||
|
jobAtmosphere.setWorkspaceId(waylineJobDTO.getWorkspaceId()); |
||||
|
jobAtmosphere.setDockSn(waylineJobDTO.getDockSn()); |
||||
|
// BeanUtil.copyProperties();
|
||||
|
waylineJobAtmosphereService.insertByBo(jobAtmosphere); |
||||
|
} |
||||
|
} catch (Exception e) { |
||||
|
log.error("处理灵嗅MQTT消息异常", e); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,22 @@ |
|||||
|
package org.dromara.sample.configuration; |
||||
|
|
||||
|
import lombok.RequiredArgsConstructor; |
||||
|
import org.springframework.boot.ApplicationArguments; |
||||
|
import org.springframework.boot.ApplicationRunner; |
||||
|
import org.springframework.boot.CommandLineRunner; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
@Component |
||||
|
@RequiredArgsConstructor |
||||
|
public class LingxiuMqttStartupRunner implements ApplicationRunner { |
||||
|
private final MqttLingxiuSubscriber subscriber; |
||||
|
|
||||
|
@Override |
||||
|
public void run(ApplicationArguments args) { |
||||
|
try { |
||||
|
subscriber.subscribe(); |
||||
|
} catch (Exception e) { |
||||
|
System.err.println("启动灵嗅 MQTT 订阅失败"+ e); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,45 @@ |
|||||
|
package org.dromara.sample.configuration; |
||||
|
|
||||
|
import org.eclipse.paho.client.mqttv3.MqttClient; |
||||
|
import org.eclipse.paho.client.mqttv3.MqttConnectOptions; |
||||
|
import org.eclipse.paho.client.mqttv3.MqttException; |
||||
|
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; |
||||
|
import org.springframework.beans.factory.annotation.Value; |
||||
|
import org.springframework.context.annotation.Bean; |
||||
|
import org.springframework.context.annotation.Configuration; |
||||
|
|
||||
|
@Configuration |
||||
|
public class MqttLingxiuConfig { |
||||
|
|
||||
|
@Value("${lingxiu.mqtt.broker}") |
||||
|
private String brokerUrl; |
||||
|
|
||||
|
@Value("${lingxiu.mqtt.clientId}") |
||||
|
private String clientId; |
||||
|
|
||||
|
@Value("${lingxiu.mqtt.username}") |
||||
|
private String username; |
||||
|
|
||||
|
@Value("${lingxiu.mqtt.password}") |
||||
|
private String password; |
||||
|
|
||||
|
@Bean |
||||
|
public MqttClient lingxiuMqttClient() throws MqttException { |
||||
|
MqttClient client = new MqttClient(brokerUrl, clientId, new MemoryPersistence()); |
||||
|
|
||||
|
MqttConnectOptions options = new MqttConnectOptions(); |
||||
|
options.setUserName(username); |
||||
|
options.setPassword(password.toCharArray()); |
||||
|
options.setAutomaticReconnect(true); |
||||
|
options.setCleanSession(true); |
||||
|
|
||||
|
client.connect(options); |
||||
|
return client; |
||||
|
} |
||||
|
|
||||
|
@Bean |
||||
|
public MqttLingxiuSubscriber mqttLingxiuSubscriber(MqttClient client, |
||||
|
LingxiuMqttMessageProcessor processor) { |
||||
|
return new MqttLingxiuSubscriber(client, processor); |
||||
|
} |
||||
|
} |
@ -0,0 +1,45 @@ |
|||||
|
package org.dromara.sample.configuration; |
||||
|
|
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.eclipse.paho.client.mqttv3.*; |
||||
|
|
||||
|
import java.nio.charset.StandardCharsets; |
||||
|
import java.util.Arrays; |
||||
|
|
||||
|
@Slf4j |
||||
|
public class MqttLingxiuSubscriber { |
||||
|
|
||||
|
private final MqttClient client; |
||||
|
private final LingxiuMqttMessageProcessor processor; |
||||
|
|
||||
|
public MqttLingxiuSubscriber(MqttClient client, LingxiuMqttMessageProcessor processor) { |
||||
|
this.client = client; |
||||
|
this.processor = processor; |
||||
|
} |
||||
|
|
||||
|
public void subscribe() throws MqttException { |
||||
|
String[] topics = new String[]{"/topic/#"}; |
||||
|
|
||||
|
client.setCallback(new MqttCallback() { |
||||
|
@Override |
||||
|
public void connectionLost(Throwable cause) { |
||||
|
log.warn("灵嗅MQTT连接断开", cause); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void messageArrived(String topic, MqttMessage message) { |
||||
|
String payload = new String(message.getPayload(), StandardCharsets.UTF_8); |
||||
|
log.info("MQTT 收到消息:{} -> {}", topic, payload); |
||||
|
|
||||
|
processor.process(topic, payload); // 业务分发
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void deliveryComplete(IMqttDeliveryToken token) {} |
||||
|
}); |
||||
|
|
||||
|
for (String topic : topics) { |
||||
|
client.subscribe(topic, 1); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,128 @@ |
|||||
|
package org.dromara.sample.wayline.controller; |
||||
|
|
||||
|
import java.util.List; |
||||
|
import java.util.Optional; |
||||
|
|
||||
|
import lombok.RequiredArgsConstructor; |
||||
|
import jakarta.servlet.http.HttpServletResponse; |
||||
|
import jakarta.validation.constraints.*; |
||||
|
import cn.dev33.satoken.annotation.SaCheckPermission; |
||||
|
import org.dromara.common.sdk.common.HttpResultResponse; |
||||
|
import org.dromara.sample.wayline.model.dto.WaylineJobDTO; |
||||
|
import org.dromara.sample.wayline.service.IWaylineJobService; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
import org.springframework.validation.annotation.Validated; |
||||
|
import org.dromara.common.idempotent.annotation.RepeatSubmit; |
||||
|
import org.dromara.common.log.annotation.Log; |
||||
|
import org.dromara.common.web.core.BaseController; |
||||
|
import org.dromara.common.mybatis.core.page.PageQuery; |
||||
|
import org.dromara.common.core.domain.R; |
||||
|
import org.dromara.common.core.validate.AddGroup; |
||||
|
import org.dromara.common.core.validate.EditGroup; |
||||
|
import org.dromara.common.log.enums.BusinessType; |
||||
|
import org.dromara.common.excel.utils.ExcelUtil; |
||||
|
import org.dromara.sample.wayline.domain.vo.WaylineJobAtmosphereVo; |
||||
|
import org.dromara.sample.wayline.domain.bo.WaylineJobAtmosphereBo; |
||||
|
import org.dromara.sample.wayline.service.IWaylineJobAtmosphereService; |
||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo; |
||||
|
|
||||
|
/** |
||||
|
* 无人机任务-空气质量 |
||||
|
* 前端访问路由地址为:/sample/WaylineJobAtmosphere |
||||
|
* |
||||
|
* @author szs |
||||
|
* @date 2025-06-16 |
||||
|
*/ |
||||
|
@Validated |
||||
|
@RequiredArgsConstructor |
||||
|
@RestController |
||||
|
@RequestMapping("/WaylineJobAtmosphere") |
||||
|
public class WaylineJobAtmosphereController extends BaseController { |
||||
|
|
||||
|
private final IWaylineJobAtmosphereService waylineJobAtmosphereService; |
||||
|
private final IWaylineJobService waylineJobService; |
||||
|
|
||||
|
/** |
||||
|
* 查询无人机任务-空气质量列表 |
||||
|
*/ |
||||
|
@SaCheckPermission("sample:WaylineJobAtmosphere:list") |
||||
|
@GetMapping("/list") |
||||
|
public TableDataInfo<WaylineJobAtmosphereVo> list(WaylineJobAtmosphereBo bo, PageQuery pageQuery) { |
||||
|
return waylineJobAtmosphereService.queryPageList(bo, pageQuery); |
||||
|
} |
||||
|
|
||||
|
@GetMapping("/list/demo") |
||||
|
public List<WaylineJobAtmosphereVo> demoList(WaylineJobAtmosphereBo bo, PageQuery pageQuery) { |
||||
|
List<WaylineJobAtmosphereVo> demoList= waylineJobAtmosphereService.demoList(bo); |
||||
|
return demoList; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 导出无人机任务-空气质量列表 |
||||
|
*/ |
||||
|
@SaCheckPermission("sample:WaylineJobAtmosphere:export") |
||||
|
@Log(title = "无人机任务-空气质量", businessType = BusinessType.EXPORT) |
||||
|
@PostMapping("/export") |
||||
|
public void export(WaylineJobAtmosphereBo bo, HttpServletResponse response) { |
||||
|
List<WaylineJobAtmosphereVo> list = waylineJobAtmosphereService.queryList(bo); |
||||
|
ExcelUtil.exportExcel(list, "无人机任务-空气质量", WaylineJobAtmosphereVo.class, response); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取无人机任务-空气质量详细信息 |
||||
|
* |
||||
|
* @param id 主键 |
||||
|
*/ |
||||
|
@SaCheckPermission("sample:WaylineJobAtmosphere:query") |
||||
|
@GetMapping("/{id}") |
||||
|
public R<WaylineJobAtmosphereVo> getInfo(@NotNull(message = "主键不能为空") |
||||
|
@PathVariable Long id) { |
||||
|
return R.ok(waylineJobAtmosphereService.queryById(id)); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 新增无人机任务-空气质量 |
||||
|
*/ |
||||
|
@SaCheckPermission("sample:WaylineJobAtmosphere:add") |
||||
|
@Log(title = "无人机任务-空气质量", businessType = BusinessType.INSERT) |
||||
|
@RepeatSubmit() |
||||
|
@PostMapping() |
||||
|
public R<Void> add(@Validated(AddGroup.class) @RequestBody WaylineJobAtmosphereBo bo) { |
||||
|
|
||||
|
// Optional<WaylineJobDTO> waylineJobDTO = waylineJobService.getJobByJobInternalId(objectMap.get("jobId").toString());
|
||||
|
// map.put("jobId",objectMap.get("jobId"));
|
||||
|
// if (!waylineJobDTO.isEmpty()){
|
||||
|
// map.put("jobName",waylineJobDTO.get().getJobName());
|
||||
|
// }else {
|
||||
|
// map.put("jobName",null);
|
||||
|
// }
|
||||
|
|
||||
|
// waylineJobService.getJobByDockSn("");
|
||||
|
|
||||
|
return toAjax(waylineJobAtmosphereService.insertByBo(bo)); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 修改无人机任务-空气质量 |
||||
|
*/ |
||||
|
@SaCheckPermission("sample:WaylineJobAtmosphere:edit") |
||||
|
@Log(title = "无人机任务-空气质量", businessType = BusinessType.UPDATE) |
||||
|
@RepeatSubmit() |
||||
|
@PutMapping() |
||||
|
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WaylineJobAtmosphereBo bo) { |
||||
|
return toAjax(waylineJobAtmosphereService.updateByBo(bo)); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 删除无人机任务-空气质量 |
||||
|
* |
||||
|
* @param ids 主键串 |
||||
|
*/ |
||||
|
@SaCheckPermission("sample:WaylineJobAtmosphere:remove") |
||||
|
@Log(title = "无人机任务-空气质量", businessType = BusinessType.DELETE) |
||||
|
@DeleteMapping("/{ids}") |
||||
|
public R<Void> remove(@NotEmpty(message = "主键不能为空") |
||||
|
@PathVariable Long[] ids) { |
||||
|
return toAjax(waylineJobAtmosphereService.deleteWithValidByIds(List.of(ids), true)); |
||||
|
} |
||||
|
} |
@ -0,0 +1,127 @@ |
|||||
|
package org.dromara.sample.wayline.domain; |
||||
|
|
||||
|
import cn.hutool.json.JSONObject; |
||||
|
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; |
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
import org.dromara.common.mybatis.core.domain.BaseEntity; |
||||
|
import com.baomidou.mybatisplus.annotation.*; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.Date; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
|
||||
|
import java.io.Serial; |
||||
|
|
||||
|
/** |
||||
|
* 无人机任务-空气质量对象 wayline_job_atmosphere |
||||
|
* |
||||
|
* @author szs |
||||
|
* @date 2025-06-16 |
||||
|
*/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
@TableName("wayline_job_atmosphere") |
||||
|
public class WaylineJobAtmosphere implements Serializable { |
||||
|
|
||||
|
@TableId(value = "id", type = IdType.AUTO) |
||||
|
private Long id; |
||||
|
|
||||
|
@TableField("wayline_job_id") |
||||
|
private Long waylineJobId; //无人机任务ID
|
||||
|
|
||||
|
@TableField("job_id") |
||||
|
private String jobId; //任务UUID
|
||||
|
|
||||
|
@TableField("name") |
||||
|
private String name;//任务名称
|
||||
|
|
||||
|
@TableField("file_id") |
||||
|
private String fileId; //航线id 对应wayline_id 字段
|
||||
|
|
||||
|
@TableField("wayline_name") |
||||
|
private String waylineName;//航线名称
|
||||
|
|
||||
|
@TableField("dock_sn") |
||||
|
private String dockSn; //机场sn
|
||||
|
|
||||
|
@TableField("drone_sn") |
||||
|
private String droneSn;//无人机sn
|
||||
|
|
||||
|
@TableField("workspace_id") |
||||
|
private String workspaceId;//工作区id
|
||||
|
|
||||
|
@TableField("task_type") |
||||
|
private Long taskType;//任务类型
|
||||
|
|
||||
|
@TableField("begin_time") |
||||
|
private Date beginTime;//计划的开始时间
|
||||
|
|
||||
|
@TableField("end_time") |
||||
|
private Date endTime; //计划的结束时间
|
||||
|
|
||||
|
@TableField("serial") |
||||
|
private String serial; //负载设备序列号
|
||||
|
|
||||
|
@TableField("sequence") |
||||
|
private Long sequence;//数据序列号
|
||||
|
|
||||
|
@TableField("sate_num") |
||||
|
private Long sateNum; //卫星数量
|
||||
|
|
||||
|
@TableField("hdop") |
||||
|
private Long hdop; //水平精度因子
|
||||
|
|
||||
|
@TableField("utc_time_str") |
||||
|
private String utcTimeStr; //UTC时间
|
||||
|
|
||||
|
@TableField("latitude") |
||||
|
private Float latitude; //纬度
|
||||
|
|
||||
|
@TableField("longitude") |
||||
|
private Float longitude;//经度
|
||||
|
|
||||
|
@TableField("altitude") |
||||
|
private Float altitude;//海拔高度
|
||||
|
|
||||
|
@TableField("temperature") |
||||
|
private Float temperature; //温度
|
||||
|
|
||||
|
@TableField("humidity") |
||||
|
private Float humidity;//湿度
|
||||
|
|
||||
|
@TableField("pressure") |
||||
|
private Float pressure;//气压
|
||||
|
|
||||
|
// @TableField(value = "air_data", typeHandler = JacksonTypeHandler.class)
|
||||
|
@TableField("air_data") |
||||
|
private String airData;//空气质量数据
|
||||
|
|
||||
|
@TableField("error_code") |
||||
|
private Long errorCode;//错误码
|
||||
|
|
||||
|
@TableField("status") |
||||
|
private Long status;//状态 1:待处理;2: 进行中;3:成功;4: 取消;5:失败
|
||||
|
|
||||
|
@TableField("parent_id") |
||||
|
private String parentId; //父级ID
|
||||
|
|
||||
|
@TableField("job_type") |
||||
|
private Long jobType;//任务类型 1:手动任务,2:自动任务,3:指令飞行,4:工单飞行
|
||||
|
|
||||
|
@TableField("pro_id") |
||||
|
private Long proId; //proID
|
||||
|
|
||||
|
|
||||
|
@TableField(value = "create_time", fill = FieldFill.INSERT) |
||||
|
private Date createTime; |
||||
|
|
||||
|
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) |
||||
|
private Date updateTime; |
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,178 @@ |
|||||
|
package org.dromara.sample.wayline.domain.bo; |
||||
|
|
||||
|
import cn.hutool.json.JSONObject; |
||||
|
import org.dromara.sample.wayline.domain.WaylineJobAtmosphere; |
||||
|
import org.dromara.common.mybatis.core.domain.BaseEntity; |
||||
|
import org.dromara.common.core.validate.AddGroup; |
||||
|
import org.dromara.common.core.validate.EditGroup; |
||||
|
import io.github.linpeilie.annotations.AutoMapper; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
import jakarta.validation.constraints.*; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* 无人机任务-空气质量业务对象 wayline_job_atmosphere |
||||
|
* |
||||
|
* @author szs |
||||
|
* @date 2025-06-16 |
||||
|
*/ |
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper = true) |
||||
|
@AutoMapper(target = WaylineJobAtmosphere.class, reverseConvertGenerate = false) |
||||
|
public class WaylineJobAtmosphereBo extends BaseEntity { |
||||
|
|
||||
|
/** |
||||
|
* ID |
||||
|
*/ |
||||
|
private Long id; |
||||
|
|
||||
|
/** |
||||
|
* 无人机任务ID |
||||
|
*/ |
||||
|
// @NotNull(message = "无人机任务ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
|
private Long waylineJobId; |
||||
|
|
||||
|
/** |
||||
|
* 任务UUID |
||||
|
*/ |
||||
|
// @NotBlank(message = "任务UUID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
|
private String jobId; |
||||
|
|
||||
|
/** |
||||
|
* 任务名称 |
||||
|
*/ |
||||
|
// @NotBlank(message = "任务名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
|
private String name; |
||||
|
|
||||
|
/** |
||||
|
* 航线id 对应wayline_id 字段 |
||||
|
*/ |
||||
|
// @NotBlank(message = "航线id 对应wayline_id 字段不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
|
private String fileId; |
||||
|
|
||||
|
/** |
||||
|
* 航线名称 |
||||
|
*/ |
||||
|
private String waylineName; |
||||
|
|
||||
|
/** |
||||
|
* 机场sn |
||||
|
*/ |
||||
|
// @NotBlank(message = "机场sn不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
|
private String dockSn; |
||||
|
|
||||
|
/** |
||||
|
* 无人机sn |
||||
|
*/ |
||||
|
private String droneSn; |
||||
|
|
||||
|
/** |
||||
|
* 工作区id |
||||
|
*/ |
||||
|
// @NotBlank(message = "工作区id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
|
private String workspaceId; |
||||
|
|
||||
|
/** |
||||
|
* 任务类型 |
||||
|
*/ |
||||
|
private Long taskType; |
||||
|
|
||||
|
/** |
||||
|
* 计划的开始时间 |
||||
|
*/ |
||||
|
private Date beginTime; |
||||
|
|
||||
|
/** |
||||
|
* 计划的结束时间 |
||||
|
*/ |
||||
|
private Date endTime; |
||||
|
|
||||
|
/** |
||||
|
* 负载设备序列号 |
||||
|
*/ |
||||
|
// @NotBlank(message = "负载设备序列号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
|
private String serial; |
||||
|
|
||||
|
/** |
||||
|
* 数据序列号 |
||||
|
*/ |
||||
|
private Long sequence; |
||||
|
|
||||
|
/** |
||||
|
* 卫星数量 |
||||
|
*/ |
||||
|
private Long sateNum; |
||||
|
|
||||
|
/** |
||||
|
* 水平精度因子 |
||||
|
*/ |
||||
|
private Long hdop; |
||||
|
|
||||
|
/** |
||||
|
* UTC时间 |
||||
|
*/ |
||||
|
private String utcTimeStr; |
||||
|
|
||||
|
/** |
||||
|
* 纬度 |
||||
|
*/ |
||||
|
private Float latitude; |
||||
|
|
||||
|
/** |
||||
|
* 经度 |
||||
|
*/ |
||||
|
private Float longitude; |
||||
|
|
||||
|
/** |
||||
|
* 海拔高度 |
||||
|
*/ |
||||
|
private Float altitude; |
||||
|
|
||||
|
/** |
||||
|
* 温度 |
||||
|
*/ |
||||
|
private Float temperature; |
||||
|
|
||||
|
/** |
||||
|
* 湿度 |
||||
|
*/ |
||||
|
private Float humidity; |
||||
|
|
||||
|
/** |
||||
|
* 气压 |
||||
|
*/ |
||||
|
private Float pressure; |
||||
|
|
||||
|
/** |
||||
|
* 空气质量数据 |
||||
|
*/ |
||||
|
private String airData; |
||||
|
|
||||
|
/** |
||||
|
* 错误码 |
||||
|
*/ |
||||
|
private Long errorCode; |
||||
|
|
||||
|
/** |
||||
|
* 1:待处理;2: 进行中;3:成功;4: 取消;5:失败 |
||||
|
*/ |
||||
|
private Long status; |
||||
|
|
||||
|
/** |
||||
|
* 父级ID |
||||
|
*/ |
||||
|
private String parentId; |
||||
|
|
||||
|
/** |
||||
|
* 1:手动任务,2:自动任务,3:指令飞行,4:工单飞行 |
||||
|
*/ |
||||
|
private Long jobType; |
||||
|
|
||||
|
/** |
||||
|
* proID |
||||
|
*/ |
||||
|
private Long proId; |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,210 @@ |
|||||
|
package org.dromara.sample.wayline.domain.vo; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
import cn.hutool.json.JSONObject; |
||||
|
import com.fasterxml.jackson.annotation.JsonProperty; |
||||
|
import org.dromara.sample.wayline.domain.WaylineJobAtmosphere; |
||||
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
||||
|
import com.alibaba.excel.annotation.ExcelProperty; |
||||
|
import io.github.linpeilie.annotations.AutoMapper; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serial; |
||||
|
import java.io.Serializable; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 无人机任务-空气质量视图对象 wayline_job_atmosphere |
||||
|
* |
||||
|
* @author szs |
||||
|
* @date 2025-06-16 |
||||
|
*/ |
||||
|
@Data |
||||
|
@ExcelIgnoreUnannotated |
||||
|
@AutoMapper(target = WaylineJobAtmosphere.class) |
||||
|
public class WaylineJobAtmosphereVo implements Serializable { |
||||
|
|
||||
|
@Serial |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* ID |
||||
|
*/ |
||||
|
@ExcelProperty(value = "ID") |
||||
|
private Long id; |
||||
|
|
||||
|
/** |
||||
|
* 无人机任务ID |
||||
|
*/ |
||||
|
@ExcelProperty(value = "无人机任务ID") |
||||
|
private Long waylineJobId; |
||||
|
|
||||
|
/** |
||||
|
* 任务UUID |
||||
|
*/ |
||||
|
@ExcelProperty(value = "任务UUID") |
||||
|
private String jobId; |
||||
|
|
||||
|
/** |
||||
|
* 任务名称 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "任务名称") |
||||
|
private String name; |
||||
|
|
||||
|
/** |
||||
|
* 航线id 对应wayline_id 字段 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "航线id 对应wayline_id 字段") |
||||
|
private String fileId; |
||||
|
|
||||
|
/** |
||||
|
* 航线名称 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "航线名称") |
||||
|
private String waylineName; |
||||
|
|
||||
|
/** |
||||
|
* 机场sn |
||||
|
*/ |
||||
|
@ExcelProperty(value = "机场sn") |
||||
|
private String dockSn; |
||||
|
|
||||
|
/** |
||||
|
* 无人机sn |
||||
|
*/ |
||||
|
@ExcelProperty(value = "无人机sn") |
||||
|
private String droneSn; |
||||
|
|
||||
|
/** |
||||
|
* 工作区id |
||||
|
*/ |
||||
|
@ExcelProperty(value = "工作区id") |
||||
|
private String workspaceId; |
||||
|
|
||||
|
/** |
||||
|
* 任务类型 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "任务类型") |
||||
|
private Long taskType; |
||||
|
|
||||
|
/** |
||||
|
* 计划的开始时间 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "计划的开始时间") |
||||
|
private Date beginTime; |
||||
|
|
||||
|
/** |
||||
|
* 计划的结束时间 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "计划的结束时间") |
||||
|
private Date endTime; |
||||
|
|
||||
|
/** |
||||
|
* 负载设备序列号 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "负载设备序列号") |
||||
|
private String serial; |
||||
|
|
||||
|
/** |
||||
|
* 数据序列号 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "数据序列号") |
||||
|
private Long sequence; |
||||
|
|
||||
|
/** |
||||
|
* 卫星数量 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "卫星数量") |
||||
|
private Long sateNum; |
||||
|
|
||||
|
/** |
||||
|
* 水平精度因子 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "水平精度因子") |
||||
|
private Long hdop; |
||||
|
|
||||
|
/** |
||||
|
* UTC时间 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "UTC时间") |
||||
|
private String utcTimeStr; |
||||
|
|
||||
|
/** |
||||
|
* 纬度 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "纬度") |
||||
|
private Float latitude; |
||||
|
|
||||
|
/** |
||||
|
* 经度 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "经度") |
||||
|
private Float longitude; |
||||
|
|
||||
|
/** |
||||
|
* 海拔高度 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "海拔高度") |
||||
|
private Float altitude; |
||||
|
|
||||
|
/** |
||||
|
* 温度 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "温度") |
||||
|
private Float temperature; |
||||
|
|
||||
|
/** |
||||
|
* 湿度 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "湿度") |
||||
|
private Float humidity; |
||||
|
|
||||
|
/** |
||||
|
* 气压 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "气压") |
||||
|
private Float pressure; |
||||
|
|
||||
|
/** |
||||
|
* 空气质量数据 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "空气质量数据") |
||||
|
// @JsonProperty("air_data") //无效
|
||||
|
private String airData; |
||||
|
|
||||
|
private JSONObject airDataJson; |
||||
|
|
||||
|
/** |
||||
|
* 错误码 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "错误码") |
||||
|
private Long errorCode; |
||||
|
|
||||
|
/** |
||||
|
* 1:待处理;2: 进行中;3:成功;4: 取消;5:失败 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "1:待处理;2: 进行中;3:成功;4: 取消;5:失败") |
||||
|
private Long status; |
||||
|
|
||||
|
/** |
||||
|
* 父级ID |
||||
|
*/ |
||||
|
@ExcelProperty(value = "父级ID") |
||||
|
private String parentId; |
||||
|
|
||||
|
/** |
||||
|
* 1:手动任务,2:自动任务,3:指令飞行,4:工单飞行 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "1:手动任务,2:自动任务,3:指令飞行,4:工单飞行") |
||||
|
private Long jobType; |
||||
|
|
||||
|
/** |
||||
|
* proID |
||||
|
*/ |
||||
|
@ExcelProperty(value = "proID") |
||||
|
private Long proId; |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,15 @@ |
|||||
|
package org.dromara.sample.wayline.mapper; |
||||
|
|
||||
|
import org.dromara.sample.wayline.domain.WaylineJobAtmosphere; |
||||
|
import org.dromara.sample.wayline.domain.vo.WaylineJobAtmosphereVo; |
||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; |
||||
|
|
||||
|
/** |
||||
|
* 无人机任务-空气质量Mapper接口 |
||||
|
* |
||||
|
* @author szs |
||||
|
* @date 2025-06-16 |
||||
|
*/ |
||||
|
public interface WaylineJobAtmosphereMapper extends BaseMapperPlus<WaylineJobAtmosphere, WaylineJobAtmosphereVo> { |
||||
|
|
||||
|
} |
@ -0,0 +1,74 @@ |
|||||
|
package org.dromara.sample.wayline.service; |
||||
|
|
||||
|
import cn.hutool.json.JSONObject; |
||||
|
import org.dromara.sample.wayline.domain.vo.WaylineJobAtmosphereVo; |
||||
|
import org.dromara.sample.wayline.domain.bo.WaylineJobAtmosphereBo; |
||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo; |
||||
|
import org.dromara.common.mybatis.core.page.PageQuery; |
||||
|
import org.dromara.sample.wayline.model.dto.WaylineJobDTO; |
||||
|
|
||||
|
import java.util.Collection; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* 无人机任务-空气质量Service接口 |
||||
|
* |
||||
|
* @author szs |
||||
|
* @date 2025-06-16 |
||||
|
*/ |
||||
|
public interface IWaylineJobAtmosphereService { |
||||
|
|
||||
|
/** |
||||
|
* 查询无人机任务-空气质量 |
||||
|
* |
||||
|
* @param id 主键 |
||||
|
* @return 无人机任务-空气质量 |
||||
|
*/ |
||||
|
WaylineJobAtmosphereVo queryById(Long id); |
||||
|
|
||||
|
/** |
||||
|
* 分页查询无人机任务-空气质量列表 |
||||
|
* |
||||
|
* @param bo 查询条件 |
||||
|
* @param pageQuery 分页参数 |
||||
|
* @return 无人机任务-空气质量分页列表 |
||||
|
*/ |
||||
|
TableDataInfo<WaylineJobAtmosphereVo> queryPageList(WaylineJobAtmosphereBo bo, PageQuery pageQuery); |
||||
|
|
||||
|
/** |
||||
|
* 查询符合条件的无人机任务-空气质量列表 |
||||
|
* |
||||
|
* @param bo 查询条件 |
||||
|
* @return 无人机任务-空气质量列表 |
||||
|
*/ |
||||
|
List<WaylineJobAtmosphereVo> queryList(WaylineJobAtmosphereBo bo); |
||||
|
|
||||
|
/** |
||||
|
* 新增无人机任务-空气质量 |
||||
|
* |
||||
|
* @param bo 无人机任务-空气质量 |
||||
|
* @return 是否新增成功 |
||||
|
*/ |
||||
|
Boolean insertByBo(WaylineJobAtmosphereBo bo); |
||||
|
|
||||
|
/** |
||||
|
* 修改无人机任务-空气质量 |
||||
|
* |
||||
|
* @param bo 无人机任务-空气质量 |
||||
|
* @return 是否修改成功 |
||||
|
*/ |
||||
|
Boolean updateByBo(WaylineJobAtmosphereBo bo); |
||||
|
|
||||
|
/** |
||||
|
* 校验并批量删除无人机任务-空气质量信息 |
||||
|
* |
||||
|
* @param ids 待删除的主键集合 |
||||
|
* @param isValid 是否进行有效性校验 |
||||
|
* @return 是否删除成功 |
||||
|
*/ |
||||
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); |
||||
|
|
||||
|
void handleAdd(WaylineJobDTO waylineJobDTO, JSONObject json); |
||||
|
|
||||
|
List<WaylineJobAtmosphereVo> demoList(WaylineJobAtmosphereBo bo); |
||||
|
} |
@ -0,0 +1,188 @@ |
|||||
|
package org.dromara.sample.wayline.service.impl; |
||||
|
|
||||
|
import cn.hutool.core.util.ObjectUtil; |
||||
|
import cn.hutool.json.JSONObject; |
||||
|
import cn.hutool.json.JSONUtil; |
||||
|
import org.dromara.common.core.utils.MapstructUtils; |
||||
|
import org.dromara.common.core.utils.StringUtils; |
||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo; |
||||
|
import org.dromara.common.mybatis.core.page.PageQuery; |
||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
||||
|
import lombok.RequiredArgsConstructor; |
||||
|
import org.dromara.sample.wayline.model.dto.WaylineJobDTO; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.dromara.sample.wayline.domain.bo.WaylineJobAtmosphereBo; |
||||
|
import org.dromara.sample.wayline.domain.vo.WaylineJobAtmosphereVo; |
||||
|
import org.dromara.sample.wayline.domain.WaylineJobAtmosphere; |
||||
|
import org.dromara.sample.wayline.mapper.WaylineJobAtmosphereMapper; |
||||
|
import org.dromara.sample.wayline.service.IWaylineJobAtmosphereService; |
||||
|
|
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
import java.util.Collection; |
||||
|
|
||||
|
/** |
||||
|
* 无人机任务-空气质量Service业务层处理 |
||||
|
* |
||||
|
* @author szs |
||||
|
* @date 2025-06-16 |
||||
|
*/ |
||||
|
@RequiredArgsConstructor |
||||
|
@Service |
||||
|
public class WaylineJobAtmosphereServiceImpl implements IWaylineJobAtmosphereService { |
||||
|
|
||||
|
private final WaylineJobAtmosphereMapper baseMapper; |
||||
|
|
||||
|
/** |
||||
|
* 查询无人机任务-空气质量 |
||||
|
* |
||||
|
* @param id 主键 |
||||
|
* @return 无人机任务-空气质量 |
||||
|
*/ |
||||
|
@Override |
||||
|
public WaylineJobAtmosphereVo queryById(Long id){ |
||||
|
return baseMapper.selectVoById(id); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 分页查询无人机任务-空气质量列表 |
||||
|
* |
||||
|
* @param bo 查询条件 |
||||
|
* @param pageQuery 分页参数 |
||||
|
* @return 无人机任务-空气质量分页列表 |
||||
|
*/ |
||||
|
@Override |
||||
|
public TableDataInfo<WaylineJobAtmosphereVo> queryPageList(WaylineJobAtmosphereBo bo, PageQuery pageQuery) { |
||||
|
LambdaQueryWrapper<WaylineJobAtmosphere> lqw = buildQueryWrapper(bo); |
||||
|
Page<WaylineJobAtmosphereVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
||||
|
|
||||
|
//转换airData让前台处理
|
||||
|
for (WaylineJobAtmosphereVo record : result.getRecords()) { |
||||
|
if(ObjectUtil.isNotEmpty(record.getAirData())){ |
||||
|
record.setAirDataJson(JSONUtil.parseObj(record.getAirData())); |
||||
|
} |
||||
|
} |
||||
|
return TableDataInfo.build(result); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 查询符合条件的无人机任务-空气质量列表 |
||||
|
* |
||||
|
* @param bo 查询条件 |
||||
|
* @return 无人机任务-空气质量列表 |
||||
|
*/ |
||||
|
@Override |
||||
|
public List<WaylineJobAtmosphereVo> queryList(WaylineJobAtmosphereBo bo) { |
||||
|
LambdaQueryWrapper<WaylineJobAtmosphere> lqw = buildQueryWrapper(bo); |
||||
|
return baseMapper.selectVoList(lqw); |
||||
|
} |
||||
|
|
||||
|
private LambdaQueryWrapper<WaylineJobAtmosphere> buildQueryWrapper(WaylineJobAtmosphereBo bo) { |
||||
|
Map<String, Object> params = bo.getParams(); |
||||
|
LambdaQueryWrapper<WaylineJobAtmosphere> lqw = Wrappers.lambdaQuery(); |
||||
|
lqw.eq(bo.getWaylineJobId() != null, WaylineJobAtmosphere::getWaylineJobId, bo.getWaylineJobId()); |
||||
|
lqw.eq(StringUtils.isNotBlank(bo.getJobId()), WaylineJobAtmosphere::getJobId, bo.getJobId()); |
||||
|
lqw.like(StringUtils.isNotBlank(bo.getName()), WaylineJobAtmosphere::getName, bo.getName()); |
||||
|
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), WaylineJobAtmosphere::getFileId, bo.getFileId()); |
||||
|
lqw.like(StringUtils.isNotBlank(bo.getWaylineName()), WaylineJobAtmosphere::getWaylineName, bo.getWaylineName()); |
||||
|
lqw.eq(StringUtils.isNotBlank(bo.getDockSn()), WaylineJobAtmosphere::getDockSn, bo.getDockSn()); |
||||
|
lqw.eq(StringUtils.isNotBlank(bo.getDroneSn()), WaylineJobAtmosphere::getDroneSn, bo.getDroneSn()); |
||||
|
lqw.eq(StringUtils.isNotBlank(bo.getWorkspaceId()), WaylineJobAtmosphere::getWorkspaceId, bo.getWorkspaceId()); |
||||
|
lqw.eq(bo.getTaskType() != null, WaylineJobAtmosphere::getTaskType, bo.getTaskType()); |
||||
|
lqw.eq(bo.getBeginTime() != null, WaylineJobAtmosphere::getBeginTime, bo.getBeginTime()); |
||||
|
lqw.eq(bo.getEndTime() != null, WaylineJobAtmosphere::getEndTime, bo.getEndTime()); |
||||
|
lqw.eq(StringUtils.isNotBlank(bo.getSerial()), WaylineJobAtmosphere::getSerial, bo.getSerial()); |
||||
|
lqw.eq(bo.getSequence() != null, WaylineJobAtmosphere::getSequence, bo.getSequence()); |
||||
|
lqw.eq(bo.getSateNum() != null, WaylineJobAtmosphere::getSateNum, bo.getSateNum()); |
||||
|
lqw.eq(bo.getHdop() != null, WaylineJobAtmosphere::getHdop, bo.getHdop()); |
||||
|
lqw.eq(bo.getUtcTimeStr() != null, WaylineJobAtmosphere::getUtcTimeStr, bo.getUtcTimeStr()); |
||||
|
lqw.eq(bo.getLatitude() != null, WaylineJobAtmosphere::getLatitude, bo.getLatitude()); |
||||
|
lqw.eq(bo.getLongitude() != null, WaylineJobAtmosphere::getLongitude, bo.getLongitude()); |
||||
|
lqw.eq(bo.getAltitude() != null, WaylineJobAtmosphere::getAltitude, bo.getAltitude()); |
||||
|
lqw.eq(bo.getTemperature() != null, WaylineJobAtmosphere::getTemperature, bo.getTemperature()); |
||||
|
lqw.eq(bo.getHumidity() != null, WaylineJobAtmosphere::getHumidity, bo.getHumidity()); |
||||
|
lqw.eq(bo.getPressure() != null, WaylineJobAtmosphere::getPressure, bo.getPressure()); |
||||
|
// lqw.eq(JSONUtil.isTypeJSONObject(bo.getAirData().toString()), WaylineJobAtmosphere::getAirData, bo.getAirData());
|
||||
|
lqw.eq(bo.getErrorCode() != null, WaylineJobAtmosphere::getErrorCode, bo.getErrorCode()); |
||||
|
lqw.eq(bo.getStatus() != null, WaylineJobAtmosphere::getStatus, bo.getStatus()); |
||||
|
lqw.eq(StringUtils.isNotBlank(bo.getParentId()), WaylineJobAtmosphere::getParentId, bo.getParentId()); |
||||
|
lqw.eq(bo.getJobType() != null, WaylineJobAtmosphere::getJobType, bo.getJobType()); |
||||
|
lqw.eq(bo.getProId() != null, WaylineJobAtmosphere::getProId, bo.getProId()); |
||||
|
return lqw; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 新增无人机任务-空气质量 |
||||
|
* |
||||
|
* @param bo 无人机任务-空气质量 |
||||
|
* @return 是否新增成功 |
||||
|
*/ |
||||
|
@Override |
||||
|
public Boolean insertByBo(WaylineJobAtmosphereBo bo) { |
||||
|
WaylineJobAtmosphere add = MapstructUtils.convert(bo, WaylineJobAtmosphere.class); |
||||
|
validEntityBeforeSave(add); |
||||
|
boolean flag = baseMapper.insert(add) > 0; |
||||
|
if (flag) { |
||||
|
bo.setId(add.getId()); |
||||
|
} |
||||
|
return flag; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 修改无人机任务-空气质量 |
||||
|
* |
||||
|
* @param bo 无人机任务-空气质量 |
||||
|
* @return 是否修改成功 |
||||
|
*/ |
||||
|
@Override |
||||
|
public Boolean updateByBo(WaylineJobAtmosphereBo bo) { |
||||
|
WaylineJobAtmosphere update = MapstructUtils.convert(bo, WaylineJobAtmosphere.class); |
||||
|
validEntityBeforeSave(update); |
||||
|
return baseMapper.updateById(update) > 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 保存前的数据校验 |
||||
|
*/ |
||||
|
private void validEntityBeforeSave(WaylineJobAtmosphere entity){ |
||||
|
//TODO 做一些数据校验,如唯一约束
|
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 校验并批量删除无人机任务-空气质量信息 |
||||
|
* |
||||
|
* @param ids 待删除的主键集合 |
||||
|
* @param isValid 是否进行有效性校验 |
||||
|
* @return 是否删除成功 |
||||
|
*/ |
||||
|
@Override |
||||
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { |
||||
|
if(isValid){ |
||||
|
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
|
} |
||||
|
return baseMapper.deleteByIds(ids) > 0; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void handleAdd(WaylineJobDTO waylineJobDTO, JSONObject json) { |
||||
|
System.out.println(waylineJobDTO); |
||||
|
System.out.println(json); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public List<WaylineJobAtmosphereVo> demoList(WaylineJobAtmosphereBo bo) { |
||||
|
LambdaQueryWrapper<WaylineJobAtmosphere> wrapper = new LambdaQueryWrapper<>(); |
||||
|
wrapper.gt(WaylineJobAtmosphere::getId, 1240); |
||||
|
wrapper.lt(WaylineJobAtmosphere::getId, 2495); |
||||
|
List<WaylineJobAtmosphereVo> waylineJobAtmosphereVos = baseMapper.selectVoList(wrapper); |
||||
|
//转换airData让前台处理
|
||||
|
for (WaylineJobAtmosphereVo record : waylineJobAtmosphereVos) { |
||||
|
if(ObjectUtil.isNotEmpty(record.getAirData())){ |
||||
|
record.setAirDataJson(JSONUtil.parseObj(record.getAirData())); |
||||
|
} |
||||
|
} |
||||
|
return waylineJobAtmosphereVos; |
||||
|
} |
||||
|
} |
@ -0,0 +1,7 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<!DOCTYPE mapper |
||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
<mapper namespace="org.dromara.sample.wayline.mapper.WaylineJobAtmosphereMapper"> |
||||
|
|
||||
|
</mapper> |
@ -0,0 +1,31 @@ |
|||||
|
package org.dromara.system.dubbo; |
||||
|
|
||||
|
import lombok.RequiredArgsConstructor; |
||||
|
import org.apache.dubbo.config.annotation.DubboService; |
||||
|
import org.dromara.common.core.utils.MapstructUtils; |
||||
|
import org.dromara.system.api.RemoteDepartBoundaryService; |
||||
|
import org.dromara.system.api.domain.vo.RemoteSocialVo; |
||||
|
import org.dromara.system.api.domain.vo.RemoteSysDepartBoundaryVo; |
||||
|
import org.dromara.system.domain.SysDepartBoundary; |
||||
|
import org.dromara.system.domain.vo.SysSocialVo; |
||||
|
import org.dromara.system.service.ISysDepartBoundaryService; |
||||
|
import org.dromara.system.service.ISysDeptService; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
import static kotlin.reflect.jvm.internal.impl.builtins.StandardNames.FqNames.list; |
||||
|
|
||||
|
@RequiredArgsConstructor |
||||
|
@Service |
||||
|
@DubboService |
||||
|
public class RemoteDepartBoundaryServiceImpl implements RemoteDepartBoundaryService { |
||||
|
|
||||
|
private final ISysDepartBoundaryService sysDepartBoundaryService; |
||||
|
|
||||
|
@Override |
||||
|
public List<RemoteSysDepartBoundaryVo> listDepartBoundaryByLngAndLat(Double lng, Double lat) { |
||||
|
List<SysDepartBoundary> boundaryList = sysDepartBoundaryService.listDepartBoundaryByLngAndLat(lng, lat); |
||||
|
return MapstructUtils.convert(boundaryList, RemoteSysDepartBoundaryVo.class); |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue