Xiajijian
2026-03-04 7b5d4c535ab770db4238389759c5e6a66ea7e661
1. 增加点云文件信息接口业务。
2. yml文件增加路径配置。
7 files added
6 files modified
551 ■■■■■ changed files
ard-admin/src/main/java/com/ard/web/controller/inspection/ArdPointCloudController.java 104 ●●●●● patch | view | raw | blame | history
ard-admin/src/main/java/com/ard/web/controller/inspection/BigFileUploadController.java 14 ●●●●● patch | view | raw | blame | history
ard-admin/src/main/resources/application.yml 8 ●●●●● patch | view | raw | blame | history
ard-inspection/src/main/java/com/ard/inspection/domain/ArdPointCloud.java 47 ●●●●● patch | view | raw | blame | history
ard-inspection/src/main/java/com/ard/inspection/mapper/ArdPointCloudMapper.java 61 ●●●●● patch | view | raw | blame | history
ard-inspection/src/main/java/com/ard/inspection/service/IArdPointCloudService.java 61 ●●●●● patch | view | raw | blame | history
ard-inspection/src/main/java/com/ard/inspection/service/impl/ArdPointCloudServiceImpl.java 92 ●●●●● patch | view | raw | blame | history
ard-inspection/src/main/resources/mapper/ArdPointCloudMapper.xml 105 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/domain/djuav/RoutePointReq.java 16 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/domain/djuav/TargetPosObj.java 29 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/domain/djuav/WaypointTurnReq.java 1 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/domain/route/ArdRouteInfo.java 9 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/util/ToolUtils.java 4 ●●●●● patch | view | raw | blame | history
ard-admin/src/main/java/com/ard/web/controller/inspection/ArdPointCloudController.java
New file
@@ -0,0 +1,104 @@
package com.ard.web.controller.inspection;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ard.common.annotation.Log;
import com.ard.common.core.controller.BaseController;
import com.ard.common.core.domain.AjaxResult;
import com.ard.common.core.page.TableDataInfo;
import com.ard.common.enums.BusinessType;
import com.ard.common.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ard.inspection.domain.ArdPointCloud;
import com.ard.inspection.service.IArdPointCloudService;
/**
 * 点云文件Controller
 *
 * @author xia
 * @date 2026-03-03
 */
@Api(tags = "点云文件信息")
@RestController
@RequestMapping("/inspection/cloud")
@Slf4j
public class ArdPointCloudController extends BaseController {
    @Autowired
    private IArdPointCloudService ardPointCloudService;
    /**
     * 查询点云文件列表
     */
    @PreAuthorize("@ss.hasPermi('inspection:cloud:list')")
    @GetMapping("/list")
    public TableDataInfo list(ArdPointCloud ardPointCloud) {
        startPage();
        List<ArdPointCloud> list = ardPointCloudService.selectArdPointCloudList(ardPointCloud);
        return getDataTable(list);
    }
    /**
     * 导出点云文件列表
     */
    @PreAuthorize("@ss.hasPermi('inspection:cloud:export')")
    @Log(title = "点云文件", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ArdPointCloud ardPointCloud) {
        List<ArdPointCloud> list = ardPointCloudService.selectArdPointCloudList(ardPointCloud);
        ExcelUtil<ArdPointCloud> util = new ExcelUtil<ArdPointCloud>(ArdPointCloud.class);
        util.exportExcel(response, list, "点云文件数据");
    }
    /**
     * 获取点云文件详细信息
     */
    @PreAuthorize("@ss.hasPermi('inspection:cloud:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") String id) {
        return success(ardPointCloudService.selectArdPointCloudById(id));
    }
    /**
     * 新增点云文件
     */
    @PreAuthorize("@ss.hasPermi('inspection:cloud:add')")
    @Log(title = "点云文件", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody ArdPointCloud ardPointCloud) {
        return toAjax(ardPointCloudService.insertArdPointCloud(ardPointCloud));
    }
    /**
     * 修改点云文件
     */
    @PreAuthorize("@ss.hasPermi('inspection:cloud:edit')")
    @Log(title = "点云文件", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody ArdPointCloud ardPointCloud) {
        return toAjax(ardPointCloudService.updateArdPointCloud(ardPointCloud));
    }
    /**
     * 删除点云文件
     */
    @PreAuthorize("@ss.hasPermi('inspection:cloud:remove')")
    @Log(title = "点云文件", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable String[] ids) {
        return toAjax(ardPointCloudService.deleteArdPointCloudByIds(ids));
    }
}
ard-admin/src/main/java/com/ard/web/controller/inspection/BigFileUploadController.java
@@ -5,6 +5,7 @@
import com.ard.common.core.domain.AjaxResult;
import com.ard.common.enums.BusinessType;
import com.ard.inspection.service.IBigFileUploadService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import io.swagger.annotations.Api;
@@ -26,16 +27,17 @@
    @Autowired
    private IBigFileUploadService bigFileUploadService;
    //@Value(value = "${inspection.profile}")
    @Value(value = "${inspection.profile}")
    private String uploadPath;
    //@Value(value = "${inspection.chunk.path}")
    @Value(value = "${inspection.chunk.path}")
    private String chunkPath;
    /**
     * 检查分片是否存在
     */
    @GetMapping("/chunks/{fileMd5}")
    @ApiOperation("检查分片是否存在")
    @GetMapping("/bigfile/{fileMd5}")
    public AjaxResult checkChunk(@PathVariable String fileMd5) {
        Map<String, Object> result = bigFileUploadService.checkChunk(fileMd5,chunkPath);
        return AjaxResult.success(result);
@@ -44,7 +46,8 @@
    /**
     * 上传分片
     */
    @PostMapping("/chunk")
    @ApiOperation("上传分片")
    @PostMapping("/bigfile/chunk")
    public AjaxResult uploadChunk(@RequestParam("file") MultipartFile file,
                                  @RequestParam("chunkNumber") Integer chunkNumber,
                                  @RequestParam("fileMd5") String fileMd5) {
@@ -55,8 +58,9 @@
    /**
     * 合并切片
     */
    @ApiOperation("合并分片")
    @Log(title = "合并切片", businessType = BusinessType.IMPORT)
    @PostMapping("/merge")
    @PostMapping("/bigfile/merge")
    public AjaxResult mergeChunks(@RequestParam("md5") String md5,
                                  @RequestParam("fileName") String fileName) {
        Map<String, Object> result = bigFileUploadService.mergeChunks(md5, fileName, uploadPath);
ard-admin/src/main/resources/application.yml
@@ -160,7 +160,11 @@
          management-url: http://127.0.0.1:8080/actuator
          service-url: http://127.0.0.1:8080/
  # 激活配置文件
  profiles:
    active: @spring.profiles.active@
    active: @spring.profiles.active@
inspection:
 profile: /home/inspection/uploadPath  # 上传文件存储路径
 chunk:
  path: /home/inspection/uploadPath/chunks  # 切片临时目录
ard-inspection/src/main/java/com/ard/inspection/domain/ArdPointCloud.java
New file
@@ -0,0 +1,47 @@
package com.ard.inspection.domain;
import com.ard.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 点云文件
 * @author xia
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class ArdPointCloud extends BaseEntity {
    /**
     * ID
     */
    private String id;
    /**
     * 文件名称
     */
    private String fileName;
    /**
     * 文件大小
     */
    private Long fileSize;
    /**
     * 关联状态
     * 0:未关联
     * 1:已关联
     */
    private String associatedState;
    /**
     * 航线ID
     */
    private String routeId;
    /**
     * 分组ID
     */
    private String groupId;
}
ard-inspection/src/main/java/com/ard/inspection/mapper/ArdPointCloudMapper.java
New file
@@ -0,0 +1,61 @@
package com.ard.inspection.mapper;
import java.util.List;
import com.ard.inspection.domain.ArdPointCloud;
/**
 * 点云文件Mapper接口
 *
 * @author xia
 * @date 2026-03-03
 */
public interface ArdPointCloudMapper {
    /**
     * 查询点云文件
     *
     * @param id 点云文件主键
     * @return 点云文件
     */
    public ArdPointCloud selectArdPointCloudById(String id);
    /**
     * 查询点云文件列表
     *
     * @param ardPointCloud 点云文件
     * @return 点云文件集合
     */
    public List<ArdPointCloud> selectArdPointCloudList(ArdPointCloud ardPointCloud);
    /**
     * 新增点云文件
     *
     * @param ardPointCloud 点云文件
     * @return 结果
     */
    public int insertArdPointCloud(ArdPointCloud ardPointCloud);
    /**
     * 修改点云文件
     *
     * @param ardPointCloud 点云文件
     * @return 结果
     */
    public int updateArdPointCloud(ArdPointCloud ardPointCloud);
    /**
     * 删除点云文件
     *
     * @param id 点云文件主键
     * @return 结果
     */
    public int deleteArdPointCloudById(String id);
    /**
     * 批量删除点云文件
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteArdPointCloudByIds(String[] ids);
}
ard-inspection/src/main/java/com/ard/inspection/service/IArdPointCloudService.java
New file
@@ -0,0 +1,61 @@
package com.ard.inspection.service;
import java.util.List;
import com.ard.inspection.domain.ArdPointCloud;
/**
 * 点云文件Service接口
 *
 * @author xia
 * @date 2026-03-03
 */
public interface IArdPointCloudService {
    /**
     * 查询点云文件
     *
     * @param id 点云文件主键
     * @return 点云文件
     */
    public ArdPointCloud selectArdPointCloudById(String id);
    /**
     * 查询点云文件列表
     *
     * @param ardPointCloud 点云文件
     * @return 点云文件集合
     */
    public List<ArdPointCloud> selectArdPointCloudList(ArdPointCloud ardPointCloud);
    /**
     * 新增点云文件
     *
     * @param ardPointCloud 点云文件
     * @return 结果
     */
    public int insertArdPointCloud(ArdPointCloud ardPointCloud);
    /**
     * 修改点云文件
     *
     * @param ardPointCloud 点云文件
     * @return 结果
     */
    public int updateArdPointCloud(ArdPointCloud ardPointCloud);
    /**
     * 批量删除点云文件
     *
     * @param ids 需要删除的点云文件主键集合
     * @return 结果
     */
    public int deleteArdPointCloudByIds(String[] ids);
    /**
     * 删除点云文件信息
     *
     * @param id 点云文件主键
     * @return 结果
     */
    public int deleteArdPointCloudById(String id);
}
ard-inspection/src/main/java/com/ard/inspection/service/impl/ArdPointCloudServiceImpl.java
New file
@@ -0,0 +1,92 @@
package com.ard.inspection.service.impl;
import java.util.List;
import com.ard.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ard.inspection.mapper.ArdPointCloudMapper;
import com.ard.inspection.domain.ArdPointCloud;
import com.ard.inspection.service.IArdPointCloudService;
/**
 * 点云文件Service业务层处理
 *
 * @author xia
 * @date 2026-03-03
 */
@Service
public class ArdPointCloudServiceImpl implements IArdPointCloudService {
    @Autowired
    private ArdPointCloudMapper ardPointCloudMapper;
    /**
     * 查询点云文件
     *
     * @param id 点云文件主键
     * @return 点云文件
     */
    @Override
    public ArdPointCloud selectArdPointCloudById(String id) {
        return ardPointCloudMapper.selectArdPointCloudById(id);
    }
    /**
     * 查询点云文件列表
     *
     * @param ardPointCloud 点云文件
     * @return 点云文件
     */
    @Override
    public List<ArdPointCloud> selectArdPointCloudList(ArdPointCloud ardPointCloud) {
        return ardPointCloudMapper.selectArdPointCloudList(ardPointCloud);
    }
    /**
     * 新增点云文件
     *
     * @param ardPointCloud 点云文件
     * @return 结果
     */
    @Override
    public int insertArdPointCloud(ArdPointCloud ardPointCloud) {
        ardPointCloud.setCreateTime(DateUtils.getNowDate());
        return ardPointCloudMapper.insertArdPointCloud(ardPointCloud);
    }
    /**
     * 修改点云文件
     *
     * @param ardPointCloud 点云文件
     * @return 结果
     */
    @Override
    public int updateArdPointCloud(ArdPointCloud ardPointCloud) {
        ardPointCloud.setUpdateTime(DateUtils.getNowDate());
        return ardPointCloudMapper.updateArdPointCloud(ardPointCloud);
    }
    /**
     * 批量删除点云文件
     *
     * @param ids 需要删除的点云文件主键
     * @return 结果
     */
    @Override
    public int deleteArdPointCloudByIds(String[] ids) {
        return ardPointCloudMapper.deleteArdPointCloudByIds(ids);
    }
    /**
     * 删除点云文件信息
     *
     * @param id 点云文件主键
     * @return 结果
     */
    @Override
    public int deleteArdPointCloudById(String id) {
        return ardPointCloudMapper.deleteArdPointCloudById(id);
    }
}
ard-inspection/src/main/resources/mapper/ArdPointCloudMapper.xml
New file
@@ -0,0 +1,105 @@
<?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="com.ard.inspection.mapper.ArdPointCloudMapper">
    <resultMap type="ArdPointCloud" id="ArdPointCloudResult">
        <result property="id"    column="id"    />
        <result property="fileName"    column="file_name"    />
        <result property="fileSize"    column="file_size"    />
        <result property="associatedState"    column="associated_state"    />
        <result property="routeId"    column="route_id"    />
        <result property="groupId"    column="group_id"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
    </resultMap>
    <sql id="selectArdPointCloudVo">
        select id,
               file_name,
               file_size,
               associated_state,
               route_id,
               group_id,
               create_by,
               create_time,
               update_by,
               update_time
        from ard_point_cloud
    </sql>
    <select id="selectArdPointCloudList" parameterType="ArdPointCloud" resultMap="ArdPointCloudResult">
        <include refid="selectArdPointCloudVo"/>
        <where>
            <if test="fileName != null  and fileName != ''"> and file_name like concat('%', #{fileName}, '%')</if>
            <if test="fileSize != null "> and file_size = #{fileSize}</if>
            <if test="associatedState != null  and associatedState != ''"> and associated_state = #{associatedState}</if>
            <if test="routeId != null  and routeId != ''"> and route_id = #{routeId}</if>
            <if test="groupId != null  and groupId != ''"> and group_id = #{groupId}</if>
        </where>
    </select>
    <select id="selectArdPointCloudById" parameterType="String" resultMap="ArdPointCloudResult">
        <include refid="selectArdPointCloudVo"/>
        where id = #{id}
    </select>
    <insert id="insertArdPointCloud" parameterType="ArdPointCloud">
        insert into ard_point_cloud
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="fileName != null">file_name,</if>
            <if test="fileSize != null">file_size,</if>
            <if test="associatedState != null">associated_state,</if>
            <if test="routeId != null">route_id,</if>
            <if test="groupId != null">group_id,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="fileName != null">#{fileName},</if>
            <if test="fileSize != null">#{fileSize},</if>
            <if test="associatedState != null">#{associatedState},</if>
            <if test="routeId != null">#{routeId},</if>
            <if test="groupId != null">#{groupId},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
         </trim>
    </insert>
    <update id="updateArdPointCloud" parameterType="ArdPointCloud">
        update ard_point_cloud
        <trim prefix="SET" suffixOverrides=",">
            <if test="fileName != null">file_name = #{fileName},</if>
            <if test="fileSize != null">file_size = #{fileSize},</if>
            <if test="associatedState != null">associated_state = #{associatedState},</if>
            <if test="routeId != null">route_id = #{routeId},</if>
            <if test="groupId != null">group_id = #{groupId},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
        </trim>
        where id = #{id}
    </update>
    <delete id="deleteArdPointCloudById" parameterType="String">
        delete from ard_point_cloud where id = #{id}
    </delete>
    <delete id="deleteArdPointCloudByIds" parameterType="String">
        delete from ard_point_cloud where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
ard-route/src/main/java/com/ard/route/domain/djuav/RoutePointReq.java
@@ -7,6 +7,7 @@
/**
 * 航点列表实体类
 * @author xia
 */
@Data
public class RoutePointReq implements Serializable {
@@ -56,4 +57,19 @@
     */
    private List<ActionGroupReq> actionGroupList;
    /**
     * 目标点
     */
    private TargetPosObj targetPosObj;
    /**
     * 当前航线距离
     */
    private Double distance;
    /**
     * 当前航线速度
     */
    private Integer nowGlobalFlightSpeed;
}
ard-route/src/main/java/com/ard/route/domain/djuav/TargetPosObj.java
New file
@@ -0,0 +1,29 @@
package com.ard.route.domain.djuav;
import lombok.Data;
import java.io.Serializable;
/**
 * 目标点
 * @author xia
 */
@Data
public class TargetPosObj implements Serializable {
    /**
     * 经度
     */
    private Double longitude;
    /**
     * 纬度
     */
    private Double latitude;
    /**
     * 高度
     */
    private Double height;
}
ard-route/src/main/java/com/ard/route/domain/djuav/WaypointTurnReq.java
@@ -26,5 +26,4 @@
     */
    private Integer useStraightLine;
}
ard-route/src/main/java/com/ard/route/domain/route/ArdRouteInfo.java
@@ -5,6 +5,8 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
 * 航线(kmz)对象 ard_route_info
 * 
@@ -13,9 +15,7 @@
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class ArdRouteInfo extends BaseEntity {
    private static final long serialVersionUID = 1L;
public class ArdRouteInfo extends BaseEntity implements Serializable{
    /** ID */
    private String id;
@@ -78,4 +78,7 @@
    /** 航线任务ID */
    private String missionId;
    /** 点云数据 */
    //private List<>
}
ard-route/src/main/java/com/ard/route/util/ToolUtils.java
@@ -1,7 +1,6 @@
package com.ard.route.util;
import com.ard.route.domain.djuav.UavRouteReq;
import java.io.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -86,6 +85,9 @@
    // 对象序列化为字节数组
    public static byte[] serialize(Object obj) throws IOException {
        if (obj == null) {
            return null;
        }
        try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
             ObjectOutputStream oos = new ObjectOutputStream(baos)) {
            oos.writeObject(obj);