From f54221e3e6716a1f7713fba00baffc2e08ea5429 Mon Sep 17 00:00:00 2001 From: shizisheng Date: Tue, 17 Jun 2025 15:12:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1-=E7=81=B5=E5=97=85=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E4=BF=9D=E5=AD=98=E6=89=A9=E5=B1=95-=E5=88=9D?= =?UTF-8?q?=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WaylineJobAtmosphereController.java | 128 +++++++++++ .../wayline/domain/WaylineJobAtmosphere.java | 127 +++++++++++ .../domain/bo/WaylineJobAtmosphereBo.java | 178 +++++++++++++++ .../domain/vo/WaylineJobAtmosphereVo.java | 210 ++++++++++++++++++ .../mapper/WaylineJobAtmosphereMapper.java | 15 ++ .../service/IWaylineJobAtmosphereService.java | 74 ++++++ .../impl/WaylineJobAtmosphereServiceImpl.java | 188 ++++++++++++++++ .../mapper/WaylineJobAtmosphereMapper.xml | 7 + 8 files changed, 927 insertions(+) create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobAtmosphereController.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/wayline/domain/WaylineJobAtmosphere.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/wayline/domain/bo/WaylineJobAtmosphereBo.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/wayline/domain/vo/WaylineJobAtmosphereVo.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/WaylineJobAtmosphereMapper.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobAtmosphereService.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobAtmosphereServiceImpl.java create mode 100644 dk-modules/sample/src/main/resources/mapper/WaylineJobAtmosphereMapper.xml diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobAtmosphereController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobAtmosphereController.java new file mode 100644 index 0000000..2fe9863 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobAtmosphereController.java @@ -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 list(WaylineJobAtmosphereBo bo, PageQuery pageQuery) { + return waylineJobAtmosphereService.queryPageList(bo, pageQuery); + } + + @GetMapping("/list/demo") + public List demoList(WaylineJobAtmosphereBo bo, PageQuery pageQuery) { + List 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 list = waylineJobAtmosphereService.queryList(bo); + ExcelUtil.exportExcel(list, "无人机任务-空气质量", WaylineJobAtmosphereVo.class, response); + } + + /** + * 获取无人机任务-空气质量详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("sample:WaylineJobAtmosphere:query") + @GetMapping("/{id}") + public R 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 add(@Validated(AddGroup.class) @RequestBody WaylineJobAtmosphereBo bo) { + +// Optional 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 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 remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(waylineJobAtmosphereService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/domain/WaylineJobAtmosphere.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/domain/WaylineJobAtmosphere.java new file mode 100644 index 0000000..0e9d70d --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/domain/WaylineJobAtmosphere.java @@ -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; + + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/domain/bo/WaylineJobAtmosphereBo.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/domain/bo/WaylineJobAtmosphereBo.java new file mode 100644 index 0000000..b7c25a2 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/domain/bo/WaylineJobAtmosphereBo.java @@ -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; + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/domain/vo/WaylineJobAtmosphereVo.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/domain/vo/WaylineJobAtmosphereVo.java new file mode 100644 index 0000000..0ff451a --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/domain/vo/WaylineJobAtmosphereVo.java @@ -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; + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/WaylineJobAtmosphereMapper.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/WaylineJobAtmosphereMapper.java new file mode 100644 index 0000000..d52158f --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/WaylineJobAtmosphereMapper.java @@ -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 { + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobAtmosphereService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobAtmosphereService.java new file mode 100644 index 0000000..7085f40 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobAtmosphereService.java @@ -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 queryPageList(WaylineJobAtmosphereBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的无人机任务-空气质量列表 + * + * @param bo 查询条件 + * @return 无人机任务-空气质量列表 + */ + List 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 ids, Boolean isValid); + + void handleAdd(WaylineJobDTO waylineJobDTO, JSONObject json); + + List demoList(WaylineJobAtmosphereBo bo); +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobAtmosphereServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobAtmosphereServiceImpl.java new file mode 100644 index 0000000..3c91f8a --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobAtmosphereServiceImpl.java @@ -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 queryPageList(WaylineJobAtmosphereBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page 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 queryList(WaylineJobAtmosphereBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(WaylineJobAtmosphereBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper 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 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 demoList(WaylineJobAtmosphereBo bo) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.gt(WaylineJobAtmosphere::getId, 1240); + wrapper.lt(WaylineJobAtmosphere::getId, 2495); + List waylineJobAtmosphereVos = baseMapper.selectVoList(wrapper); + //转换airData让前台处理 + for (WaylineJobAtmosphereVo record : waylineJobAtmosphereVos) { + if(ObjectUtil.isNotEmpty(record.getAirData())){ + record.setAirDataJson(JSONUtil.parseObj(record.getAirData())); + } + } + return waylineJobAtmosphereVos; + } +} diff --git a/dk-modules/sample/src/main/resources/mapper/WaylineJobAtmosphereMapper.xml b/dk-modules/sample/src/main/resources/mapper/WaylineJobAtmosphereMapper.xml new file mode 100644 index 0000000..537db7b --- /dev/null +++ b/dk-modules/sample/src/main/resources/mapper/WaylineJobAtmosphereMapper.xml @@ -0,0 +1,7 @@ + + + + +