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