吉安感知网项目-后端
linwei
2026-01-08 70464cc66f77cf847464ffe71f2fd456ee11b0fb
Merge remote-tracking branch 'origin/master'
21 files modified
1 files deleted
534 ■■■■■ changed files
drone-service/drone-fw/pom.xml 4 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/controller/FwDeviceController.java 33 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/controller/FwDeviceTrackController.java 83 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/dto/FwDeviceAndTrackDTO.java 21 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/dto/FwDeviceDTO.java 32 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/dto/FwDeviceTrackDTO.java 19 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/entity/FwDeviceEntity.java 28 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/entity/FwDeviceTrackEntity.java 13 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/excel/FwDeviceExcel.java 32 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/excel/FwDeviceTrackExcel.java 8 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMapper.java 5 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMapper.xml 33 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceTrackMapper.java 13 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceTrackMapper.xml 12 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/IFwDeviceService.java 13 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/IFwDeviceTrackService.java 5 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/impl/FwDeviceServiceImpl.java 27 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/impl/FwDeviceTrackServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/vo/FwDeviceTrackVO.java 44 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/vo/FwDeviceVO.java 87 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/wrapper/FwDeviceTrackWrapper.java 10 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/wrapper/FwDeviceWrapper.java 7 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/pom.xml
@@ -30,6 +30,10 @@
            <groupId>org.springblade</groupId>
            <artifactId>blade-starter-swagger</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>drone-system-api</artifactId>
        </dependency>
    </dependencies>
    <build>
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/controller/FwDeviceController.java
@@ -33,7 +33,7 @@
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import org.sxkj.fw.device.dto.FwDeviceAndTrackDTO;
import org.sxkj.fw.device.dto.FwDeviceDTO;
import org.sxkj.fw.device.entity.FwDeviceEntity;
import org.sxkj.fw.device.excel.FwDeviceExcel;
import org.sxkj.fw.device.service.IFwDeviceService;
@@ -49,7 +49,7 @@
/**
 * 设备表 控制器
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
@RestController
@@ -66,8 +66,13 @@
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入fwDevice")
    public R<FwDeviceVO> detail(FwDeviceEntity fwDevice) {
        FwDeviceEntity detail = fwDeviceService.getOne(Condition.getQueryWrapper(fwDevice));
    public R<FwDeviceVO> detail(FwDeviceDTO fwDevice) {
        FwDeviceEntity detail = fwDeviceService.getOne(Condition.getQueryWrapper(FwDeviceWrapper.build().entityDTO(fwDevice)));
        if (detail == null) {
            return R.fail("该设备不存在");
        }
        return R.data(FwDeviceWrapper.build().entityVO(detail));
    }
@@ -75,29 +80,28 @@
     * 设备表 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入fwDevice")
    public R<IPage<FwDeviceVO>> page(FwDeviceVO fwDevice, Query query) {
        IPage<FwDeviceVO> pages = fwDeviceService.selectFwDevicePage(Condition.getPage(query), fwDevice);
        return R.data(pages);
    public R<IPage<FwDeviceVO>> page(FwDeviceDTO fwDevice, Query query) {
        IPage<FwDeviceEntity> pages = fwDeviceService.selectFwDevicePage(Condition.getPage(query), fwDevice);
        return R.data(FwDeviceWrapper.build().pageVO(pages));
    }
    /**
     * 设备表 新增或修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "新增或修改", notes = "传入fwDevice")
    public R submit(@Valid @RequestBody FwDeviceAndTrackDTO dto) {
        return R.status(fwDeviceService.saveFwDevice(dto));
    public R submit(@Valid @RequestBody FwDeviceDTO fwDevice) {
        return R.status(fwDeviceService.saveOrUpdate(FwDeviceWrapper.build().entityDTO(fwDevice)));
    }
    /**
     * 设备表 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(fwDeviceService.deleteLogic(Func.toLongList(ids)));
@@ -108,8 +112,9 @@
     * 导出数据
     */
    @GetMapping("/export-fwDevice")
    @ApiOperationSupport(order = 9)
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "导出数据", notes = "传入fwDevice")
    @ApiIgnore
    public void exportFwDevice(@ApiIgnore @RequestParam Map<String, Object> fwDevice, BladeUser bladeUser, HttpServletResponse response) {
        QueryWrapper<FwDeviceEntity> queryWrapper = Condition.getQueryWrapper(fwDevice, FwDeviceEntity.class);
        //if (!AuthUtil.isAdministrator()) {
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/controller/FwDeviceTrackController.java
@@ -16,39 +16,40 @@
 */
package org.sxkj.fw.device.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.validation.Valid;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.sxkj.fw.device.dto.FwDeviceTrackDTO;
import org.sxkj.fw.device.entity.FwDeviceTrackEntity;
import org.sxkj.fw.device.vo.FwDeviceTrackVO;
import org.sxkj.fw.device.excel.FwDeviceTrackExcel;
import org.sxkj.fw.device.wrapper.FwDeviceTrackWrapper;
import org.sxkj.fw.device.service.IFwDeviceTrackService;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tool.constant.BladeConstant;
import org.sxkj.fw.device.vo.FwDeviceTrackVO;
import org.sxkj.fw.device.wrapper.FwDeviceTrackWrapper;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
 * 设备跟踪流转表 控制器
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
@RestController
@@ -65,50 +66,25 @@
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入fwDeviceTrack")
    public R<FwDeviceTrackVO> detail(FwDeviceTrackEntity fwDeviceTrack) {
        FwDeviceTrackEntity detail = fwDeviceTrackService.getOne(Condition.getQueryWrapper(fwDeviceTrack));
    public R<FwDeviceTrackVO> detail(FwDeviceTrackDTO fwDeviceTrack) {
        FwDeviceTrackEntity detail = fwDeviceTrackService.getOne(Condition.getQueryWrapper(FwDeviceTrackWrapper.build().entityDTO(fwDeviceTrack)));
        if (detail == null) {
            return R.fail("该记录不存在");
        }
        return R.data(FwDeviceTrackWrapper.build().entityVO(detail));
    }
    /**
     * 设备跟踪流转表 分页
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入fwDeviceTrack")
    public R<IPage<FwDeviceTrackVO>> list(@ApiIgnore @RequestParam Map<String, Object> fwDeviceTrack, Query query) {
        IPage<FwDeviceTrackEntity> pages = fwDeviceTrackService.page(Condition.getPage(query), Condition.getQueryWrapper(fwDeviceTrack, FwDeviceTrackEntity.class));
        return R.data(FwDeviceTrackWrapper.build().pageVO(pages));
    }
    /**
     * 设备跟踪流转表 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入fwDeviceTrack")
    public R<IPage<FwDeviceTrackVO>> page(FwDeviceTrackVO fwDeviceTrack, Query query) {
        IPage<FwDeviceTrackVO> pages = fwDeviceTrackService.selectFwDeviceTrackPage(Condition.getPage(query), fwDeviceTrack);
        return R.data(pages);
    }
    /**
     * 设备跟踪流转表 新增
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入fwDeviceTrack")
    public R save(@Valid @RequestBody FwDeviceTrackEntity fwDeviceTrack) {
        return R.status(fwDeviceTrackService.save(fwDeviceTrack));
    }
    /**
     * 设备跟踪流转表 修改
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入fwDeviceTrack")
    public R update(@Valid @RequestBody FwDeviceTrackEntity fwDeviceTrack) {
        return R.status(fwDeviceTrackService.updateById(fwDeviceTrack));
    public R<IPage<FwDeviceTrackVO>> page(FwDeviceTrackDTO fwDeviceTrack, Query query) {
        IPage<FwDeviceTrackEntity> pages = fwDeviceTrackService.selectFwDeviceTrackPage(Condition.getPage(query), fwDeviceTrack);
        return R.data(FwDeviceTrackWrapper.build().pageVO(pages));
    }
    /**
@@ -117,8 +93,8 @@
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入fwDeviceTrack")
    public R submit(@Valid @RequestBody FwDeviceTrackEntity fwDeviceTrack) {
        return R.status(fwDeviceTrackService.saveOrUpdate(fwDeviceTrack));
    public R submit(@Valid @RequestBody FwDeviceTrackDTO fwDeviceTrack) {
        return R.status(fwDeviceTrackService.saveOrUpdate(FwDeviceTrackWrapper.build().entityDTO(fwDeviceTrack)));
    }
    /**
@@ -138,6 +114,7 @@
    @GetMapping("/export-fwDeviceTrack")
    @ApiOperationSupport(order = 9)
    @ApiOperation(value = "导出数据", notes = "传入fwDeviceTrack")
    @ApiIgnore
    public void exportFwDeviceTrack(@ApiIgnore @RequestParam Map<String, Object> fwDeviceTrack, BladeUser bladeUser, HttpServletResponse response) {
        QueryWrapper<FwDeviceTrackEntity> queryWrapper = Condition.getQueryWrapper(fwDeviceTrack, FwDeviceTrackEntity.class);
        //if (!AuthUtil.isAdministrator()) {
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/dto/FwDeviceAndTrackDTO.java
File was deleted
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/dto/FwDeviceDTO.java
@@ -17,20 +17,23 @@
package org.sxkj.fw.device.dto;
import io.swagger.annotations.ApiModelProperty;
import org.sxkj.fw.device.entity.FwDeviceEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
 * 设备表 数据传输对象实体类
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
@Data
public class FwDeviceDTO {
public class FwDeviceDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "主键")
    private    Long id;
    /**
     * 设备名称
@@ -68,9 +71,24 @@
    @ApiModelProperty(value = "来源")
    private String source;
    /**
     * 备注
     * 用途
     */
    @ApiModelProperty(value = "备注")
    private String remark;
    @ApiModelProperty(value = "用途")
    private String purpose;
    /**
     * 所属部门
     */
    @ApiModelProperty(value = "所属部门")
    private Long belongDept;
    /**
     * 负责人
     */
    @ApiModelProperty(value = "负责人")
    private String charger;
    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    private String contactPhone;
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/dto/FwDeviceTrackDTO.java
@@ -21,25 +21,33 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
 * 设备跟踪流转表 数据传输对象实体类
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
@Data
public class FwDeviceTrackDTO {
public class FwDeviceTrackDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "主键")
    private    Long id;
    /**
     * 设备ID
     */
    @ApiModelProperty(value = "设备ID")
    private Long deviceId;
    /**
     * 出库时间
     */
    @ApiModelProperty(value = "出库时间")
    private Date outTime;
    /**
     * 出库去向
     */
@@ -60,10 +68,5 @@
     */
    @ApiModelProperty(value = "联系电话")
    private String contactPhone;
    /**
     * 部门名称
     */
    @ApiModelProperty(value = "部门名称")
    private String deptName;
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/entity/FwDeviceEntity.java
@@ -17,18 +17,18 @@
package org.sxkj.fw.device.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.mp.TenantEntity;
import java.math.BigDecimal;
/**
 * 设备表 实体类
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
@Data
@@ -73,6 +73,26 @@
    @ApiModelProperty(value = "来源")
    private String source;
    /**
     * 用途
     */
    @ApiModelProperty(value = "用途")
    private String purpose;
    /**
     * 所属部门
     */
    @ApiModelProperty(value = "所属部门")
    private Long belongDept;
    /**
     * 负责人
     */
    @ApiModelProperty(value = "负责人")
    private String charger;
    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    private String contactPhone;
    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/entity/FwDeviceTrackEntity.java
@@ -17,18 +17,18 @@
package org.sxkj.fw.device.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.mp.TenantEntity;
import java.util.Date;
/**
 * 设备跟踪流转表 实体类
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
@Data
@@ -67,11 +67,6 @@
     */
    @ApiModelProperty(value = "联系电话")
    private String contactPhone;
    /**
     * 部门名称
     */
    @ApiModelProperty(value = "部门名称")
    private String deptName;
    /**
     * 区域编码
     */
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/excel/FwDeviceExcel.java
@@ -17,20 +17,20 @@
package org.sxkj.fw.device.excel;
import lombok.Data;
import java.math.BigDecimal;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * 设备表 Excel实体类
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
@Data
@@ -84,6 +84,30 @@
    @ExcelProperty("来源")
    private String source;
    /**
     * 用途
     */
    @ColumnWidth(20)
    @ExcelProperty("用途")
    private String purpose;
    /**
     * 所属部门
     */
    @ColumnWidth(20)
    @ExcelProperty("所属部门")
    private Long belongDept;
    /**
     * 负责人
     */
    @ColumnWidth(20)
    @ExcelProperty("负责人")
    private String charger;
    /**
     * 联系电话
     */
    @ColumnWidth(20)
    @ExcelProperty("联系电话")
    private String contactPhone;
    /**
     * 备注
     */
    @ColumnWidth(20)
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/excel/FwDeviceTrackExcel.java
@@ -30,7 +30,7 @@
/**
 * 设备跟踪流转表 Excel实体类
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
@Data
@@ -77,12 +77,6 @@
    @ColumnWidth(20)
    @ExcelProperty("联系电话")
    private String contactPhone;
    /**
     * 部门名称
     */
    @ColumnWidth(20)
    @ExcelProperty("部门名称")
    private String deptName;
    /**
     * 区域编码
     */
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMapper.java
@@ -16,6 +16,7 @@
 */
package org.sxkj.fw.device.mapper;
import org.sxkj.fw.device.dto.FwDeviceDTO;
import org.sxkj.fw.device.entity.FwDeviceEntity;
import org.sxkj.fw.device.vo.FwDeviceVO;
import org.sxkj.fw.device.excel.FwDeviceExcel;
@@ -28,7 +29,7 @@
/**
 * 设备表 Mapper 接口
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
public interface FwDeviceMapper extends BaseMapper<FwDeviceEntity> {
@@ -40,7 +41,7 @@
     * @param fwDevice
     * @return
     */
    List<FwDeviceVO> selectFwDevicePage(IPage page, FwDeviceVO fwDevice);
    List<FwDeviceEntity> selectFwDevicePage(IPage page, FwDeviceDTO fwDevice);
    /**
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMapper.xml
@@ -12,6 +12,10 @@
        <result column="device_specification" property="deviceSpecification"/>
        <result column="manufacturer" property="manufacturer"/>
        <result column="source" property="source"/>
        <result column="purpose" property="purpose"/>
        <result column="belong_dept" property="belongDept"/>
        <result column="charger" property="charger"/>
        <result column="contact_phone" property="contactPhone"/>
        <result column="remark" property="remark"/>
        <result column="battery_pct" property="batteryPct"/>
        <result column="azimuth" property="azimuth"/>
@@ -26,7 +30,7 @@
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
<!--        <result column="is_deleted" property="isDeleted"/>-->
    </resultMap>
@@ -38,7 +42,7 @@
                and id = #{param2.id}
            </if>
            <if test="param2.deviceName != null and param2.deviceName != ''">
                and device_name = #{param2.deviceName}
                and device_name like concat('%',#{param2.deviceName},'%')
            </if>
            <if test="param2.deviceType != null and param2.deviceType != ''">
                and device_type = #{param2.deviceType}
@@ -55,29 +59,8 @@
            <if test="param2.source != null and param2.source != ''">
                and source = #{param2.source}
            </if>
            <if test="param2.remark != null and param2.remark != ''">
                and remark = #{param2.remark}
            </if>
            <if test="param2.createUser != null and param2.createUser != ''">
                and create_user = #{param2.createUser}
            </if>
            <if test="param2.createDept != null and param2.createDept != ''">
                and create_dept = #{param2.createDept}
            </if>
            <if test="param2.createTime != null and param2.createTime != ''">
                and create_time = #{param2.createTime}
            </if>
            <if test="param2.updateUser != null and param2.updateUser != ''">
                and update_user = #{param2.updateUser}
            </if>
            <if test="param2.updateTime != null and param2.updateTime != ''">
                and update_time = #{param2.updateTime}
            </if>
            <if test="param2.status != null and param2.status != ''">
                and status = #{param2.status}
            </if>
            <if test="param2.isDeleted != null and param2.isDeleted != ''">
                and is_deleted = #{param2.isDeleted}
            <if test="param2.belongDept != null and param2.belongDept != ''">
                and belong_dept = #{param2.belongDept}
            </if>
        </where>
    </select>
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceTrackMapper.java
@@ -16,19 +16,20 @@
 */
package org.sxkj.fw.device.mapper;
import org.sxkj.fw.device.entity.FwDeviceTrackEntity;
import org.sxkj.fw.device.vo.FwDeviceTrackVO;
import org.sxkj.fw.device.excel.FwDeviceTrackExcel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.sxkj.fw.device.dto.FwDeviceTrackDTO;
import org.sxkj.fw.device.entity.FwDeviceTrackEntity;
import org.sxkj.fw.device.excel.FwDeviceTrackExcel;
import java.util.List;
/**
 * 设备跟踪流转表 Mapper 接口
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
public interface FwDeviceTrackMapper extends BaseMapper<FwDeviceTrackEntity> {
@@ -40,7 +41,7 @@
     * @param fwDeviceTrack
     * @return
     */
    List<FwDeviceTrackVO> selectFwDeviceTrackPage(IPage page, FwDeviceTrackVO fwDeviceTrack);
    List<FwDeviceTrackEntity> selectFwDeviceTrackPage(IPage page, FwDeviceTrackDTO fwDeviceTrack);
    /**
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceTrackMapper.xml
@@ -11,7 +11,6 @@
        <result column="purpose" property="purpose"/>
        <result column="charger" property="charger"/>
        <result column="contact_phone" property="contactPhone"/>
        <result column="dept_name" property="deptName"/>
        <result column="area_code" property="areaCode"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
@@ -24,7 +23,16 @@
    <select id="selectFwDeviceTrackPage" resultMap="fwDeviceTrackResultMap">
        select * from ja_fw_device_track where is_deleted = 0
        select * from ja_fw_device_track
        <where>
            is_deleted = 0
            <if test="param2.id != null and param2.id != ''">
                and id = #{param2.id}
            </if>
            <if test="param2.deviceId != null and param2.deviceId != ''">
                and device_id = #{param2.deviceId}
            </if>
        </where>
    </select>
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/IFwDeviceService.java
@@ -17,7 +17,7 @@
package org.sxkj.fw.device.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.sxkj.fw.device.dto.FwDeviceAndTrackDTO;
import org.sxkj.fw.device.dto.FwDeviceDTO;
import org.sxkj.fw.device.entity.FwDeviceEntity;
import org.sxkj.fw.device.vo.FwDeviceVO;
import org.sxkj.fw.device.excel.FwDeviceExcel;
@@ -28,7 +28,7 @@
/**
 * 设备表 服务类
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
public interface IFwDeviceService extends BaseService<FwDeviceEntity> {
@@ -39,7 +39,7 @@
     * @param fwDevice
     * @return
     */
    IPage<FwDeviceVO> selectFwDevicePage(IPage<FwDeviceVO> page, FwDeviceVO fwDevice);
    IPage<FwDeviceEntity> selectFwDevicePage(IPage<FwDeviceEntity> page, FwDeviceDTO fwDevice);
    /**
@@ -49,12 +49,5 @@
     * @return
     */
    List<FwDeviceExcel> exportFwDevice(Wrapper<FwDeviceEntity> queryWrapper);
    /**
     * 添加或更新
     * @param dto
     * @return
     */
    Boolean saveFwDevice(FwDeviceAndTrackDTO dto);
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/IFwDeviceTrackService.java
@@ -17,6 +17,7 @@
package org.sxkj.fw.device.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.sxkj.fw.device.dto.FwDeviceTrackDTO;
import org.sxkj.fw.device.entity.FwDeviceTrackEntity;
import org.sxkj.fw.device.vo.FwDeviceTrackVO;
import org.sxkj.fw.device.excel.FwDeviceTrackExcel;
@@ -27,7 +28,7 @@
/**
 * 设备跟踪流转表 服务类
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
public interface IFwDeviceTrackService extends BaseService<FwDeviceTrackEntity> {
@@ -38,7 +39,7 @@
     * @param fwDeviceTrack
     * @return
     */
    IPage<FwDeviceTrackVO> selectFwDeviceTrackPage(IPage<FwDeviceTrackVO> page, FwDeviceTrackVO fwDeviceTrack);
    IPage<FwDeviceTrackEntity> selectFwDeviceTrackPage(IPage<FwDeviceTrackEntity> page, FwDeviceTrackDTO fwDeviceTrack);
    /**
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/impl/FwDeviceServiceImpl.java
@@ -16,11 +16,8 @@
 */
package org.sxkj.fw.device.service.impl;
import lombok.AllArgsConstructor;
import org.sxkj.fw.device.dto.FwDeviceAndTrackDTO;
import org.sxkj.fw.device.dto.FwDeviceDTO;
import org.sxkj.fw.device.entity.FwDeviceEntity;
import org.sxkj.fw.device.entity.FwDeviceTrackEntity;
import org.sxkj.fw.device.service.IFwDeviceTrackService;
import org.sxkj.fw.device.vo.FwDeviceVO;
import org.sxkj.fw.device.excel.FwDeviceExcel;
import org.sxkj.fw.device.mapper.FwDeviceMapper;
@@ -29,25 +26,19 @@
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.sxkj.fw.device.wrapper.FwDeviceTrackWrapper;
import org.sxkj.fw.device.wrapper.FwDeviceWrapper;
import java.util.List;
/**
 * 设备表 服务实现类
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
@Service
@AllArgsConstructor
public class FwDeviceServiceImpl extends BaseServiceImpl<FwDeviceMapper, FwDeviceEntity> implements IFwDeviceService {
    private final IFwDeviceTrackService fwDeviceTrackService;
    @Override
    public IPage<FwDeviceVO> selectFwDevicePage(IPage<FwDeviceVO> page, FwDeviceVO fwDevice) {
    public IPage<FwDeviceEntity> selectFwDevicePage(IPage<FwDeviceEntity> page, FwDeviceDTO fwDevice) {
        return page.setRecords(baseMapper.selectFwDevicePage(page, fwDevice));
    }
@@ -61,16 +52,4 @@
        return fwDeviceList;
    }
    @Override
    public Boolean saveFwDevice(FwDeviceAndTrackDTO dto) {
        // 保存设备信息
        FwDeviceEntity entity = FwDeviceWrapper.build().entityDTO(dto.getFwDeviceDTO());
        save(entity);
        // 保存设备跟踪信息
        FwDeviceTrackEntity trackEntity = FwDeviceTrackWrapper.build().entityDTO(dto.getFwDeviceTrackDTO());
        trackEntity.setDeviceId(entity.getId());
        return fwDeviceTrackService.save(trackEntity);
    }
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/impl/FwDeviceTrackServiceImpl.java
@@ -16,6 +16,7 @@
 */
package org.sxkj.fw.device.service.impl;
import org.sxkj.fw.device.dto.FwDeviceTrackDTO;
import org.sxkj.fw.device.entity.FwDeviceTrackEntity;
import org.sxkj.fw.device.vo.FwDeviceTrackVO;
import org.sxkj.fw.device.excel.FwDeviceTrackExcel;
@@ -30,14 +31,14 @@
/**
 * 设备跟踪流转表 服务实现类
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
@Service
public class FwDeviceTrackServiceImpl extends BaseServiceImpl<FwDeviceTrackMapper, FwDeviceTrackEntity> implements IFwDeviceTrackService {
    @Override
    public IPage<FwDeviceTrackVO> selectFwDeviceTrackPage(IPage<FwDeviceTrackVO> page, FwDeviceTrackVO fwDeviceTrack) {
    public IPage<FwDeviceTrackEntity> selectFwDeviceTrackPage(IPage<FwDeviceTrackEntity> page, FwDeviceTrackDTO fwDeviceTrack) {
        return page.setRecords(baseMapper.selectFwDeviceTrackPage(page, fwDeviceTrack));
    }
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/vo/FwDeviceTrackVO.java
@@ -16,20 +16,58 @@
 */
package org.sxkj.fw.device.vo;
import io.swagger.annotations.ApiModelProperty;
import org.sxkj.fw.device.entity.FwDeviceTrackEntity;
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
 * 设备跟踪流转表 视图实体类
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class FwDeviceTrackVO extends FwDeviceTrackEntity {
public class FwDeviceTrackVO implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "主键")
    private    Long id;
    /**
     * 设备ID
     */
    @ApiModelProperty(value = "设备ID")
    private Long deviceId;
    /**
     * 出库时间
     */
    @ApiModelProperty(value = "出库时间")
    private Date outTime;
    /**
     * 出库去向
     */
    @ApiModelProperty(value = "出库去向")
    private String outTarget;
    /**
     * 用途
     */
    @ApiModelProperty(value = "用途")
    private String purpose;
    /**
     * 负责人
     */
    @ApiModelProperty(value = "负责人")
    private String charger;
    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    private String contactPhone;
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/vo/FwDeviceVO.java
@@ -16,20 +16,101 @@
 */
package org.sxkj.fw.device.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import org.sxkj.fw.device.entity.FwDeviceEntity;
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.sxkj.system.cache.SysCache;
import java.io.Serializable;
/**
 * 设备表 视图实体类
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class FwDeviceVO extends FwDeviceEntity {
@Getter
public class FwDeviceVO implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "主键")
    private    Long id;
    /**
     * 设备名称
     */
    @ApiModelProperty(value = "设备名称")
    private String deviceName;
    /**
     * 设备类型(察打一体/便捷侦测箱/反制枪)
     */
    @ApiModelProperty(value = "设备类型(察打一体/便捷侦测箱/反制枪)")
    private String deviceType;
    /**
     * 设备属性(无线电/光电/雷达)
     */
    @ApiModelProperty(value = "设备属性(无线电/光电/雷达)")
    private String deviceAtt;
    /**
     * 型号
     */
    @ApiModelProperty(value = "型号")
    private String deviceModel;
    /**
     * 规格
     */
    @ApiModelProperty(value = "规格")
    private String deviceSpecification;
    /**
     * 生产厂商
     */
    @ApiModelProperty(value = "生产厂商")
    private String manufacturer;
    /**
     * 来源
     */
    @ApiModelProperty(value = "来源")
    private String source;
    /**
     * 用途
     */
    @ApiModelProperty(value = "用途")
    private String purpose;
    /**
     * 所属部门
     */
    @ApiModelProperty(value = "所属部门id")
    private Long belongDept;
    /**
     * 负责人
     */
    @ApiModelProperty(value = "负责人")
    private String charger;
    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    private String contactPhone;
    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;
    @ApiModelProperty("运行状态(0:在线/1:离线/2:故障/3:报废)")
    private Integer status;
    @ApiModelProperty(value = "所属部门名称")
    public String getBelongDeptName() {
        if (belongDept == null) {
            return null;
        }
        return SysCache.getDeptName(belongDept);
    }
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/wrapper/FwDeviceTrackWrapper.java
@@ -21,12 +21,13 @@
import org.sxkj.fw.device.dto.FwDeviceTrackDTO;
import org.sxkj.fw.device.entity.FwDeviceTrackEntity;
import org.sxkj.fw.device.vo.FwDeviceTrackVO;
import java.util.Objects;
/**
 * 设备跟踪流转表 包装类,返回视图层所需的字段
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
public class FwDeviceTrackWrapper extends BaseEntityWrapper<FwDeviceTrackEntity, FwDeviceTrackVO>  {
@@ -40,8 +41,9 @@
        return Objects.requireNonNull(BeanUtil.copy(fwDeviceTrack, FwDeviceTrackVO.class));
    }
    public FwDeviceTrackEntity entityDTO(FwDeviceTrackDTO fwDevice) {
        return Objects.requireNonNull(BeanUtil.copy(fwDevice, FwDeviceTrackEntity.class));
    }
    public FwDeviceTrackEntity entityDTO(FwDeviceTrackDTO fwDeviceTrackDTO) {
        return Objects.requireNonNull(BeanUtil.copy(fwDeviceTrackDTO, FwDeviceTrackEntity.class));
    }
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/wrapper/FwDeviceWrapper.java
@@ -18,7 +18,6 @@
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.sxkj.fw.device.dto.FwDeviceAndTrackDTO;
import org.sxkj.fw.device.dto.FwDeviceDTO;
import org.sxkj.fw.device.entity.FwDeviceEntity;
import org.sxkj.fw.device.vo.FwDeviceVO;
@@ -27,7 +26,7 @@
/**
 * 设备表 包装类,返回视图层所需的字段
 *
 * @author Aix
 * @author aix
 * @since 2026-01-08
 */
public class FwDeviceWrapper extends BaseEntityWrapper<FwDeviceEntity, FwDeviceVO>  {
@@ -41,8 +40,8 @@
        return Objects.requireNonNull(BeanUtil.copy(fwDevice, FwDeviceVO.class));
    }
    public FwDeviceEntity entityDTO(FwDeviceDTO dto) {
        return Objects.requireNonNull(BeanUtil.copy(dto, FwDeviceEntity.class));
    public FwDeviceEntity entityDTO(FwDeviceDTO fwDevice) {
        return Objects.requireNonNull(BeanUtil.copy(fwDevice, FwDeviceEntity.class));
    }