吉安感知网项目-后端
linwei
2026-01-14 f1166532fd4c3e80de0df417bb62a039862dd458
工单管理
40 files added
2614 ■■■■■ changed files
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/controller/GdClueEventController.java 151 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/dto/GdClueEventDTO.java 34 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/entity/GdClueEventEntity.java 91 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/excel/GdClueEventExcel.java 111 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/mapper/GdClueEventMapper.java 54 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/mapper/GdClueEventMapper.xml 37 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/service/IGdClueEventService.java 52 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/service/impl/GdClueEventServiceImpl.java 54 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/vo/GdClueEventVO.java 35 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/wrapper/GdClueEventWrapper.java 50 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/controller/GdFlyerController.java 151 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/dto/GdFlyerDTO.java 34 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/entity/GdFlyerEntity.java 81 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/excel/GdFlyerExcel.java 99 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/mapper/GdFlyerMapper.java 54 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/mapper/GdFlyerMapper.xml 35 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/service/IGdFlyerService.java 52 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/service/impl/GdFlyerServiceImpl.java 54 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/vo/GdFlyerVO.java 35 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/wrapper/GdFlyerWrapper.java 50 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/controller/GdImplementationListController.java 151 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/dto/GdImplementationListDTO.java 34 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/entity/GdImplementationListEntity.java 85 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/excel/GdImplementationListExcel.java 104 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/mapper/GdImplementationListMapper.java 54 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/mapper/GdImplementationListMapper.xml 36 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/service/IGdImplementationListService.java 52 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/service/impl/GdImplementationListServiceImpl.java 54 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/vo/GdImplementationListVO.java 35 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/wrapper/GdImplementationListWrapper.java 50 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/controller/GdTaskResultController.java 151 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/dto/GdTaskResultDTO.java 34 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/entity/GdTaskResultEntity.java 81 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/excel/GdTaskResultExcel.java 99 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/mapper/GdTaskResultMapper.java 54 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/mapper/GdTaskResultMapper.xml 35 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/service/IGdTaskResultService.java 52 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/service/impl/GdTaskResultServiceImpl.java 54 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/vo/GdTaskResultVO.java 35 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/wrapper/GdTaskResultWrapper.java 50 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/controller/GdClueEventController.java
New file
@@ -0,0 +1,151 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.clueEvent.controller;
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.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
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.gd.clueEvent.entity.GdClueEventEntity;
import org.sxkj.gd.clueEvent.vo.GdClueEventVO;
import org.sxkj.gd.clueEvent.excel.GdClueEventExcel;
import org.sxkj.gd.clueEvent.wrapper.GdClueEventWrapper;
import org.sxkj.gd.clueEvent.service.IGdClueEventService;
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 springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
/**
 * 事件表(线索事件) 控制器
 *
 * @author lw
 * @since 2026-01-14
 */
@RestController
@AllArgsConstructor
@RequestMapping("clueEvent/gdClueEvent")
@Api(value = "事件表(线索事件)", tags = "事件表(线索事件)接口")
public class GdClueEventController extends BladeController {
    private final IGdClueEventService gdClueEventService;
    /**
     * 事件表(线索事件) 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入gdClueEvent")
    public R<GdClueEventVO> detail(GdClueEventEntity gdClueEvent) {
        GdClueEventEntity detail = gdClueEventService.getOne(Condition.getQueryWrapper(gdClueEvent));
        return R.data(GdClueEventWrapper.build().entityVO(detail));
    }
    /**
     * 事件表(线索事件) 分页
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入gdClueEvent")
    public R<IPage<GdClueEventVO>> list(@ApiIgnore @RequestParam Map<String, Object> gdClueEvent, Query query) {
        IPage<GdClueEventEntity> pages = gdClueEventService.page(Condition.getPage(query), Condition.getQueryWrapper(gdClueEvent, GdClueEventEntity.class));
        return R.data(GdClueEventWrapper.build().pageVO(pages));
    }
    /**
     * 事件表(线索事件) 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入gdClueEvent")
    public R<IPage<GdClueEventVO>> page(GdClueEventVO gdClueEvent, Query query) {
        IPage<GdClueEventVO> pages = gdClueEventService.selectGdClueEventPage(Condition.getPage(query), gdClueEvent);
        return R.data(pages);
    }
    /**
     * 事件表(线索事件) 新增
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入gdClueEvent")
    public R save(@Valid @RequestBody GdClueEventEntity gdClueEvent) {
        return R.status(gdClueEventService.save(gdClueEvent));
    }
    /**
     * 事件表(线索事件) 修改
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入gdClueEvent")
    public R update(@Valid @RequestBody GdClueEventEntity gdClueEvent) {
        return R.status(gdClueEventService.updateById(gdClueEvent));
    }
    /**
     * 事件表(线索事件) 新增或修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入gdClueEvent")
    public R submit(@Valid @RequestBody GdClueEventEntity gdClueEvent) {
        return R.status(gdClueEventService.saveOrUpdate(gdClueEvent));
    }
    /**
     * 事件表(线索事件) 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(gdClueEventService.deleteLogic(Func.toLongList(ids)));
    }
    /**
     * 导出数据
     */
    @GetMapping("/export-gdClueEvent")
    @ApiOperationSupport(order = 9)
    @ApiOperation(value = "导出数据", notes = "传入gdClueEvent")
    public void exportGdClueEvent(@ApiIgnore @RequestParam Map<String, Object> gdClueEvent, BladeUser bladeUser, HttpServletResponse response) {
        QueryWrapper<GdClueEventEntity> queryWrapper = Condition.getQueryWrapper(gdClueEvent, GdClueEventEntity.class);
        //if (!AuthUtil.isAdministrator()) {
        //    queryWrapper.lambda().eq(GdClueEvent::getTenantId, bladeUser.getTenantId());
        //}
        queryWrapper.lambda().eq(GdClueEventEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
        List<GdClueEventExcel> list = gdClueEventService.exportGdClueEvent(queryWrapper);
        ExcelUtil.export(response, "事件表(线索事件)数据" + DateUtil.time(), "事件表(线索事件)数据表", list, GdClueEventExcel.class);
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/dto/GdClueEventDTO.java
New file
@@ -0,0 +1,34 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.clueEvent.dto;
import org.sxkj.gd.clueEvent.entity.GdClueEventEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 事件表(线索事件) 数据传输对象实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class GdClueEventDTO extends GdClueEventEntity {
    private static final long serialVersionUID = 1L;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/entity/GdClueEventEntity.java
New file
@@ -0,0 +1,91 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.clueEvent.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.util.Date;
/**
 * 事件表(线索事件) 实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@TableName("ja_gd_clue_event")
@ApiModel(value = "GdClueEvent对象", description = "事件表(线索事件)")
@EqualsAndHashCode(callSuper = true)
public class GdClueEventEntity extends BaseEntity {
    /**
     * 关联成果表ID
     */
    @ApiModelProperty(value = "关联成果表ID")
    private Long resultId;
    /**
     * 关联工单任务表ID
     */
    @ApiModelProperty(value = "关联工单任务表ID")
    private Long workOrderId;
    /**
     * 工单处置人
     */
    @ApiModelProperty(value = "工单处置人")
    private String disposeUser;
    /**
     * 处置部门
     */
    @ApiModelProperty(value = "处置部门")
    private String disposeDept;
    /**
     * 分发人员
     */
    @ApiModelProperty(value = "分发人员")
    private String distributeUser;
    /**
     * 分发部门
     */
    @ApiModelProperty(value = "分发部门")
    private String distributeDept;
    /**
     * 分发时间
     */
    @ApiModelProperty(value = "分发时间")
    private Date distributeTime;
    /**
     * 工单位置(经纬度)
     */
    @ApiModelProperty(value = "工单位置(经纬度)")
    private byte[] workOrderLocation;
    /**
     * 状态:0未知、1已分发、2已驳回
     */
    @ApiModelProperty(value = "状态:0未知、1已分发、2已驳回")
    private Byte eventStatus;
    /**
     * 区域编码
     */
    @ApiModelProperty(value = "区域编码")
    private String areaCode;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/excel/GdClueEventExcel.java
New file
@@ -0,0 +1,111 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.clueEvent.excel;
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.util.Date;
/**
 * 事件表(线索事件) Excel实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class GdClueEventExcel implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 关联成果表ID
     */
    @ColumnWidth(20)
    @ExcelProperty("关联成果表ID")
    private Long resultId;
    /**
     * 关联工单任务表ID
     */
    @ColumnWidth(20)
    @ExcelProperty("关联工单任务表ID")
    private Long workOrderId;
    /**
     * 工单处置人
     */
    @ColumnWidth(20)
    @ExcelProperty("工单处置人")
    private String disposeUser;
    /**
     * 处置部门
     */
    @ColumnWidth(20)
    @ExcelProperty("处置部门")
    private String disposeDept;
    /**
     * 分发人员
     */
    @ColumnWidth(20)
    @ExcelProperty("分发人员")
    private String distributeUser;
    /**
     * 分发部门
     */
    @ColumnWidth(20)
    @ExcelProperty("分发部门")
    private String distributeDept;
    /**
     * 分发时间
     */
    @ColumnWidth(20)
    @ExcelProperty("分发时间")
    private Date distributeTime;
    /**
     * 工单位置(经纬度)
     */
    @ColumnWidth(20)
    @ExcelProperty("工单位置(经纬度)")
    private byte[] workOrderLocation;
    /**
     * 状态:0未知、1已分发、2已驳回
     */
    @ColumnWidth(20)
    @ExcelProperty("状态:0未知、1已分发、2已驳回")
    private Byte eventStatus;
    /**
     * 区域编码
     */
    @ColumnWidth(20)
    @ExcelProperty("区域编码")
    private String areaCode;
    /**
     * 删除标志(0存在 1删除)
     */
    @ColumnWidth(20)
    @ExcelProperty("删除标志(0存在 1删除)")
    private Byte isDeleted;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/mapper/GdClueEventMapper.java
New file
@@ -0,0 +1,54 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.clueEvent.mapper;
import org.sxkj.gd.clueEvent.entity.GdClueEventEntity;
import org.sxkj.gd.clueEvent.vo.GdClueEventVO;
import org.sxkj.gd.clueEvent.excel.GdClueEventExcel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * 事件表(线索事件) Mapper 接口
 *
 * @author lw
 * @since 2026-01-14
 */
public interface GdClueEventMapper extends BaseMapper<GdClueEventEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdClueEvent
     * @return
     */
    List<GdClueEventVO> selectGdClueEventPage(IPage page, GdClueEventVO gdClueEvent);
    /**
     * 获取导出数据
     *
     * @param queryWrapper
     * @return
     */
    List<GdClueEventExcel> exportGdClueEvent(@Param("ew") Wrapper<GdClueEventEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/mapper/GdClueEventMapper.xml
New file
@@ -0,0 +1,37 @@
<?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.sxkj.gd.clueEvent.mapper.GdClueEventMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="gdClueEventResultMap" type="org.sxkj.gd.clueEvent.entity.GdClueEventEntity">
        <result column="id" property="id"/>
        <result column="result_id" property="resultId"/>
        <result column="work_order_id" property="workOrderId"/>
        <result column="dispose_user" property="disposeUser"/>
        <result column="dispose_dept" property="disposeDept"/>
        <result column="distribute_user" property="distributeUser"/>
        <result column="distribute_dept" property="distributeDept"/>
        <result column="distribute_time" property="distributeTime"/>
        <result column="work_order_location" property="workOrderLocation"/>
        <result column="event_status" property="eventStatus"/>
        <result column="area_code" property="areaCode"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
    <select id="selectGdClueEventPage" resultMap="gdClueEventResultMap">
        select * from ja_gd_clue_event where is_deleted = 0
    </select>
    <select id="exportGdClueEvent" resultType="org.sxkj.gd.clueEvent.excel.GdClueEventExcel">
        SELECT * FROM ja_gd_clue_event ${ew.customSqlSegment}
    </select>
</mapper>
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/service/IGdClueEventService.java
New file
@@ -0,0 +1,52 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.clueEvent.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.sxkj.gd.clueEvent.entity.GdClueEventEntity;
import org.sxkj.gd.clueEvent.vo.GdClueEventVO;
import org.sxkj.gd.clueEvent.excel.GdClueEventExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
 * 事件表(线索事件) 服务类
 *
 * @author lw
 * @since 2026-01-14
 */
public interface IGdClueEventService extends BaseService<GdClueEventEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdClueEvent
     * @return
     */
    IPage<GdClueEventVO> selectGdClueEventPage(IPage<GdClueEventVO> page, GdClueEventVO gdClueEvent);
    /**
     * 导出数据
     *
     * @param queryWrapper
     * @return
     */
    List<GdClueEventExcel> exportGdClueEvent(Wrapper<GdClueEventEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/service/impl/GdClueEventServiceImpl.java
New file
@@ -0,0 +1,54 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.clueEvent.service.impl;
import org.sxkj.gd.clueEvent.entity.GdClueEventEntity;
import org.sxkj.gd.clueEvent.vo.GdClueEventVO;
import org.sxkj.gd.clueEvent.excel.GdClueEventExcel;
import org.sxkj.gd.clueEvent.mapper.GdClueEventMapper;
import org.sxkj.gd.clueEvent.service.IGdClueEventService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
/**
 * 事件表(线索事件) 服务实现类
 *
 * @author lw
 * @since 2026-01-14
 */
@Service
public class GdClueEventServiceImpl extends BaseServiceImpl<GdClueEventMapper, GdClueEventEntity> implements IGdClueEventService {
    @Override
    public IPage<GdClueEventVO> selectGdClueEventPage(IPage<GdClueEventVO> page, GdClueEventVO gdClueEvent) {
        return page.setRecords(baseMapper.selectGdClueEventPage(page, gdClueEvent));
    }
    @Override
    public List<GdClueEventExcel> exportGdClueEvent(Wrapper<GdClueEventEntity> queryWrapper) {
        List<GdClueEventExcel> gdClueEventList = baseMapper.exportGdClueEvent(queryWrapper);
        //gdClueEventList.forEach(gdClueEvent -> {
        //    gdClueEvent.setTypeName(DictCache.getValue(DictEnum.YES_NO, GdClueEvent.getType()));
        //});
        return gdClueEventList;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/vo/GdClueEventVO.java
New file
@@ -0,0 +1,35 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.clueEvent.vo;
import org.sxkj.gd.clueEvent.entity.GdClueEventEntity;
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 事件表(线索事件) 视图实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class GdClueEventVO extends GdClueEventEntity {
    private static final long serialVersionUID = 1L;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/clueEvent/wrapper/GdClueEventWrapper.java
New file
@@ -0,0 +1,50 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.clueEvent.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.sxkj.gd.clueEvent.entity.GdClueEventEntity;
import org.sxkj.gd.clueEvent.vo.GdClueEventVO;
import java.util.Objects;
/**
 * 事件表(线索事件) 包装类,返回视图层所需的字段
 *
 * @author lw
 * @since 2026-01-14
 */
public class GdClueEventWrapper extends BaseEntityWrapper<GdClueEventEntity, GdClueEventVO>  {
    public static GdClueEventWrapper build() {
        return new GdClueEventWrapper();
     }
    @Override
    public GdClueEventVO entityVO(GdClueEventEntity gdClueEvent) {
        GdClueEventVO gdClueEventVO = Objects.requireNonNull(BeanUtil.copy(gdClueEvent, GdClueEventVO.class));
        //User createUser = UserCache.getUser(gdClueEvent.getCreateUser());
        //User updateUser = UserCache.getUser(gdClueEvent.getUpdateUser());
        //gdClueEventVO.setCreateUserName(createUser.getName());
        //gdClueEventVO.setUpdateUserName(updateUser.getName());
        return gdClueEventVO;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/controller/GdFlyerController.java
New file
@@ -0,0 +1,151 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.flyer.controller;
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.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
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.gd.flyer.entity.GdFlyerEntity;
import org.sxkj.gd.flyer.vo.GdFlyerVO;
import org.sxkj.gd.flyer.excel.GdFlyerExcel;
import org.sxkj.gd.flyer.wrapper.GdFlyerWrapper;
import org.sxkj.gd.flyer.service.IGdFlyerService;
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 springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
/**
 * 飞手表 控制器
 *
 * @author lw
 * @since 2026-01-14
 */
@RestController
@AllArgsConstructor
@RequestMapping("flyer/gdFlyer")
@Api(value = "飞手表", tags = "飞手表接口")
public class GdFlyerController extends BladeController {
    private final IGdFlyerService gdFlyerService;
    /**
     * 飞手表 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入gdFlyer")
    public R<GdFlyerVO> detail(GdFlyerEntity gdFlyer) {
        GdFlyerEntity detail = gdFlyerService.getOne(Condition.getQueryWrapper(gdFlyer));
        return R.data(GdFlyerWrapper.build().entityVO(detail));
    }
    /**
     * 飞手表 分页
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入gdFlyer")
    public R<IPage<GdFlyerVO>> list(@ApiIgnore @RequestParam Map<String, Object> gdFlyer, Query query) {
        IPage<GdFlyerEntity> pages = gdFlyerService.page(Condition.getPage(query), Condition.getQueryWrapper(gdFlyer, GdFlyerEntity.class));
        return R.data(GdFlyerWrapper.build().pageVO(pages));
    }
    /**
     * 飞手表 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入gdFlyer")
    public R<IPage<GdFlyerVO>> page(GdFlyerVO gdFlyer, Query query) {
        IPage<GdFlyerVO> pages = gdFlyerService.selectGdFlyerPage(Condition.getPage(query), gdFlyer);
        return R.data(pages);
    }
    /**
     * 飞手表 新增
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入gdFlyer")
    public R save(@Valid @RequestBody GdFlyerEntity gdFlyer) {
        return R.status(gdFlyerService.save(gdFlyer));
    }
    /**
     * 飞手表 修改
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入gdFlyer")
    public R update(@Valid @RequestBody GdFlyerEntity gdFlyer) {
        return R.status(gdFlyerService.updateById(gdFlyer));
    }
    /**
     * 飞手表 新增或修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入gdFlyer")
    public R submit(@Valid @RequestBody GdFlyerEntity gdFlyer) {
        return R.status(gdFlyerService.saveOrUpdate(gdFlyer));
    }
    /**
     * 飞手表 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(gdFlyerService.deleteLogic(Func.toLongList(ids)));
    }
    /**
     * 导出数据
     */
    @GetMapping("/export-gdFlyer")
    @ApiOperationSupport(order = 9)
    @ApiOperation(value = "导出数据", notes = "传入gdFlyer")
    public void exportGdFlyer(@ApiIgnore @RequestParam Map<String, Object> gdFlyer, BladeUser bladeUser, HttpServletResponse response) {
        QueryWrapper<GdFlyerEntity> queryWrapper = Condition.getQueryWrapper(gdFlyer, GdFlyerEntity.class);
        //if (!AuthUtil.isAdministrator()) {
        //    queryWrapper.lambda().eq(GdFlyer::getTenantId, bladeUser.getTenantId());
        //}
        queryWrapper.lambda().eq(GdFlyerEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
        List<GdFlyerExcel> list = gdFlyerService.exportGdFlyer(queryWrapper);
        ExcelUtil.export(response, "飞手表数据" + DateUtil.time(), "飞手表数据表", list, GdFlyerExcel.class);
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/dto/GdFlyerDTO.java
New file
@@ -0,0 +1,34 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.flyer.dto;
import org.sxkj.gd.flyer.entity.GdFlyerEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 飞手表 数据传输对象实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class GdFlyerDTO extends GdFlyerEntity {
    private static final long serialVersionUID = 1L;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/entity/GdFlyerEntity.java
New file
@@ -0,0 +1,81 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.flyer.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.math.BigDecimal;
/**
 * 飞手表 实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@TableName("ja_gd_flyer")
@ApiModel(value = "GdFlyer对象", description = "飞手表")
@EqualsAndHashCode(callSuper = true)
public class GdFlyerEntity extends BaseEntity {
    /**
     * 飞手姓名
     */
    @ApiModelProperty(value = "飞手姓名")
    private String flyerName;
    /**
     * 飞手电话(唯一)
     */
    @ApiModelProperty(value = "飞手电话(唯一)")
    private String flyerPhone;
    /**
     * 飞行时长(小时)
     */
    @ApiModelProperty(value = "飞行时长(小时)")
    private BigDecimal flightHours;
    /**
     * 项目经验
     */
    @ApiModelProperty(value = "项目经验")
    private String projectExperience;
    /**
     * 技术专长(农业植保/电力巡检等)
     */
    @ApiModelProperty(value = "技术专长(农业植保/电力巡检等)")
    private String technicalStrength;
    /**
     * 擅长机型(微型无人机/轻型无人机等)
     */
    @ApiModelProperty(value = "擅长机型(微型无人机/轻型无人机等)")
    private String skilledUavType;
    /**
     * 擅长任务类型(巡查类/安保类等)
     */
    @ApiModelProperty(value = "擅长任务类型(巡查类/安保类等)")
    private String skilledTaskType;
    /**
     * 区域编码
     */
    @ApiModelProperty(value = "区域编码")
    private String areaCode;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/excel/GdFlyerExcel.java
New file
@@ -0,0 +1,99 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.flyer.excel;
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 lw
 * @since 2026-01-14
 */
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class GdFlyerExcel implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 飞手姓名
     */
    @ColumnWidth(20)
    @ExcelProperty("飞手姓名")
    private String flyerName;
    /**
     * 飞手电话(唯一)
     */
    @ColumnWidth(20)
    @ExcelProperty("飞手电话(唯一)")
    private String flyerPhone;
    /**
     * 飞行时长(小时)
     */
    @ColumnWidth(20)
    @ExcelProperty("飞行时长(小时)")
    private BigDecimal flightHours;
    /**
     * 项目经验
     */
    @ColumnWidth(20)
    @ExcelProperty("项目经验")
    private String projectExperience;
    /**
     * 技术专长(农业植保/电力巡检等)
     */
    @ColumnWidth(20)
    @ExcelProperty("技术专长(农业植保/电力巡检等)")
    private String technicalStrength;
    /**
     * 擅长机型(微型无人机/轻型无人机等)
     */
    @ColumnWidth(20)
    @ExcelProperty("擅长机型(微型无人机/轻型无人机等)")
    private String skilledUavType;
    /**
     * 擅长任务类型(巡查类/安保类等)
     */
    @ColumnWidth(20)
    @ExcelProperty("擅长任务类型(巡查类/安保类等)")
    private String skilledTaskType;
    /**
     * 区域编码
     */
    @ColumnWidth(20)
    @ExcelProperty("区域编码")
    private String areaCode;
    /**
     * 删除标志(0存在 1删除)
     */
    @ColumnWidth(20)
    @ExcelProperty("删除标志(0存在 1删除)")
    private Byte isDeleted;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/mapper/GdFlyerMapper.java
New file
@@ -0,0 +1,54 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.flyer.mapper;
import org.sxkj.gd.flyer.entity.GdFlyerEntity;
import org.sxkj.gd.flyer.vo.GdFlyerVO;
import org.sxkj.gd.flyer.excel.GdFlyerExcel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * 飞手表 Mapper 接口
 *
 * @author lw
 * @since 2026-01-14
 */
public interface GdFlyerMapper extends BaseMapper<GdFlyerEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdFlyer
     * @return
     */
    List<GdFlyerVO> selectGdFlyerPage(IPage page, GdFlyerVO gdFlyer);
    /**
     * 获取导出数据
     *
     * @param queryWrapper
     * @return
     */
    List<GdFlyerExcel> exportGdFlyer(@Param("ew") Wrapper<GdFlyerEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/mapper/GdFlyerMapper.xml
New file
@@ -0,0 +1,35 @@
<?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.sxkj.gd.flyer.mapper.GdFlyerMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="gdFlyerResultMap" type="org.sxkj.gd.flyer.entity.GdFlyerEntity">
        <result column="id" property="id"/>
        <result column="flyer_name" property="flyerName"/>
        <result column="flyer_phone" property="flyerPhone"/>
        <result column="flight_hours" property="flightHours"/>
        <result column="project_experience" property="projectExperience"/>
        <result column="technical_strength" property="technicalStrength"/>
        <result column="skilled_uav_type" property="skilledUavType"/>
        <result column="skilled_task_type" property="skilledTaskType"/>
        <result column="area_code" property="areaCode"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
    <select id="selectGdFlyerPage" resultMap="gdFlyerResultMap">
        select * from ja_gd_flyer where is_deleted = 0
    </select>
    <select id="exportGdFlyer" resultType="org.sxkj.gd.flyer.excel.GdFlyerExcel">
        SELECT * FROM ja_gd_flyer ${ew.customSqlSegment}
    </select>
</mapper>
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/service/IGdFlyerService.java
New file
@@ -0,0 +1,52 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.flyer.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.sxkj.gd.flyer.entity.GdFlyerEntity;
import org.sxkj.gd.flyer.vo.GdFlyerVO;
import org.sxkj.gd.flyer.excel.GdFlyerExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
 * 飞手表 服务类
 *
 * @author lw
 * @since 2026-01-14
 */
public interface IGdFlyerService extends BaseService<GdFlyerEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdFlyer
     * @return
     */
    IPage<GdFlyerVO> selectGdFlyerPage(IPage<GdFlyerVO> page, GdFlyerVO gdFlyer);
    /**
     * 导出数据
     *
     * @param queryWrapper
     * @return
     */
    List<GdFlyerExcel> exportGdFlyer(Wrapper<GdFlyerEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/service/impl/GdFlyerServiceImpl.java
New file
@@ -0,0 +1,54 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.flyer.service.impl;
import org.sxkj.gd.flyer.entity.GdFlyerEntity;
import org.sxkj.gd.flyer.vo.GdFlyerVO;
import org.sxkj.gd.flyer.excel.GdFlyerExcel;
import org.sxkj.gd.flyer.mapper.GdFlyerMapper;
import org.sxkj.gd.flyer.service.IGdFlyerService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
/**
 * 飞手表 服务实现类
 *
 * @author lw
 * @since 2026-01-14
 */
@Service
public class GdFlyerServiceImpl extends BaseServiceImpl<GdFlyerMapper, GdFlyerEntity> implements IGdFlyerService {
    @Override
    public IPage<GdFlyerVO> selectGdFlyerPage(IPage<GdFlyerVO> page, GdFlyerVO gdFlyer) {
        return page.setRecords(baseMapper.selectGdFlyerPage(page, gdFlyer));
    }
    @Override
    public List<GdFlyerExcel> exportGdFlyer(Wrapper<GdFlyerEntity> queryWrapper) {
        List<GdFlyerExcel> gdFlyerList = baseMapper.exportGdFlyer(queryWrapper);
        //gdFlyerList.forEach(gdFlyer -> {
        //    gdFlyer.setTypeName(DictCache.getValue(DictEnum.YES_NO, GdFlyer.getType()));
        //});
        return gdFlyerList;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/vo/GdFlyerVO.java
New file
@@ -0,0 +1,35 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.flyer.vo;
import org.sxkj.gd.flyer.entity.GdFlyerEntity;
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 飞手表 视图实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class GdFlyerVO extends GdFlyerEntity {
    private static final long serialVersionUID = 1L;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/flyer/wrapper/GdFlyerWrapper.java
New file
@@ -0,0 +1,50 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.flyer.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.sxkj.gd.flyer.entity.GdFlyerEntity;
import org.sxkj.gd.flyer.vo.GdFlyerVO;
import java.util.Objects;
/**
 * 飞手表 包装类,返回视图层所需的字段
 *
 * @author lw
 * @since 2026-01-14
 */
public class GdFlyerWrapper extends BaseEntityWrapper<GdFlyerEntity, GdFlyerVO>  {
    public static GdFlyerWrapper build() {
        return new GdFlyerWrapper();
     }
    @Override
    public GdFlyerVO entityVO(GdFlyerEntity gdFlyer) {
        GdFlyerVO gdFlyerVO = Objects.requireNonNull(BeanUtil.copy(gdFlyer, GdFlyerVO.class));
        //User createUser = UserCache.getUser(gdFlyer.getCreateUser());
        //User updateUser = UserCache.getUser(gdFlyer.getUpdateUser());
        //gdFlyerVO.setCreateUserName(createUser.getName());
        //gdFlyerVO.setUpdateUserName(updateUser.getName());
        return gdFlyerVO;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/controller/GdImplementationListController.java
New file
@@ -0,0 +1,151 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementationList.controller;
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.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
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.gd.implementationList.entity.GdImplementationListEntity;
import org.sxkj.gd.implementationList.vo.GdImplementationListVO;
import org.sxkj.gd.implementationList.excel.GdImplementationListExcel;
import org.sxkj.gd.implementationList.wrapper.GdImplementationListWrapper;
import org.sxkj.gd.implementationList.service.IGdImplementationListService;
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 springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
/**
 * 实施清单表(实时清单管理) 控制器
 *
 * @author lw
 * @since 2026-01-14
 */
@RestController
@AllArgsConstructor
@RequestMapping("implementationList/gdImplementationList")
@Api(value = "实施清单表(实时清单管理)", tags = "实施清单表(实时清单管理)接口")
public class GdImplementationListController extends BladeController {
    private final IGdImplementationListService gdImplementationListService;
    /**
     * 实施清单表(实时清单管理) 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入gdImplementationList")
    public R<GdImplementationListVO> detail(GdImplementationListEntity gdImplementationList) {
        GdImplementationListEntity detail = gdImplementationListService.getOne(Condition.getQueryWrapper(gdImplementationList));
        return R.data(GdImplementationListWrapper.build().entityVO(detail));
    }
    /**
     * 实施清单表(实时清单管理) 分页
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入gdImplementationList")
    public R<IPage<GdImplementationListVO>> list(@ApiIgnore @RequestParam Map<String, Object> gdImplementationList, Query query) {
        IPage<GdImplementationListEntity> pages = gdImplementationListService.page(Condition.getPage(query), Condition.getQueryWrapper(gdImplementationList, GdImplementationListEntity.class));
        return R.data(GdImplementationListWrapper.build().pageVO(pages));
    }
    /**
     * 实施清单表(实时清单管理) 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入gdImplementationList")
    public R<IPage<GdImplementationListVO>> page(GdImplementationListVO gdImplementationList, Query query) {
        IPage<GdImplementationListVO> pages = gdImplementationListService.selectGdImplementationListPage(Condition.getPage(query), gdImplementationList);
        return R.data(pages);
    }
    /**
     * 实施清单表(实时清单管理) 新增
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入gdImplementationList")
    public R save(@Valid @RequestBody GdImplementationListEntity gdImplementationList) {
        return R.status(gdImplementationListService.save(gdImplementationList));
    }
    /**
     * 实施清单表(实时清单管理) 修改
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入gdImplementationList")
    public R update(@Valid @RequestBody GdImplementationListEntity gdImplementationList) {
        return R.status(gdImplementationListService.updateById(gdImplementationList));
    }
    /**
     * 实施清单表(实时清单管理) 新增或修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入gdImplementationList")
    public R submit(@Valid @RequestBody GdImplementationListEntity gdImplementationList) {
        return R.status(gdImplementationListService.saveOrUpdate(gdImplementationList));
    }
    /**
     * 实施清单表(实时清单管理) 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(gdImplementationListService.deleteLogic(Func.toLongList(ids)));
    }
    /**
     * 导出数据
     */
    @GetMapping("/export-gdImplementationList")
    @ApiOperationSupport(order = 9)
    @ApiOperation(value = "导出数据", notes = "传入gdImplementationList")
    public void exportGdImplementationList(@ApiIgnore @RequestParam Map<String, Object> gdImplementationList, BladeUser bladeUser, HttpServletResponse response) {
        QueryWrapper<GdImplementationListEntity> queryWrapper = Condition.getQueryWrapper(gdImplementationList, GdImplementationListEntity.class);
        //if (!AuthUtil.isAdministrator()) {
        //    queryWrapper.lambda().eq(GdImplementationList::getTenantId, bladeUser.getTenantId());
        //}
        queryWrapper.lambda().eq(GdImplementationListEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
        List<GdImplementationListExcel> list = gdImplementationListService.exportGdImplementationList(queryWrapper);
        ExcelUtil.export(response, "实施清单表(实时清单管理)数据" + DateUtil.time(), "实施清单表(实时清单管理)数据表", list, GdImplementationListExcel.class);
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/dto/GdImplementationListDTO.java
New file
@@ -0,0 +1,34 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementationList.dto;
import org.sxkj.gd.implementationList.entity.GdImplementationListEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 实施清单表(实时清单管理) 数据传输对象实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class GdImplementationListDTO extends GdImplementationListEntity {
    private static final long serialVersionUID = 1L;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/entity/GdImplementationListEntity.java
New file
@@ -0,0 +1,85 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementationList.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.mp.TenantEntity;
/**
 * 实施清单表(实时清单管理) 实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@TableName("ja_gd_implementation_list")
@ApiModel(value = "GdImplementationList对象", description = "实施清单表(实时清单管理)")
@EqualsAndHashCode(callSuper = true)
public class GdImplementationListEntity extends BaseEntity {
    /**
     * 实施编码(唯一)
     */
    @ApiModelProperty(value = "实施编码(唯一)")
    private String implementationCode;
    /**
     * 实施清单名称
     */
    @ApiModelProperty(value = "实施清单名称")
    private String listName;
    /**
     * 所属区划
     */
    @ApiModelProperty(value = "所属区划")
    private String belongArea;
    /**
     * 所属机构
     */
    @ApiModelProperty(value = "所属机构")
    private String belongOrg;
    /**
     * 项目编码
     */
    @ApiModelProperty(value = "项目编码")
    private String projectCode;
    /**
     * 材料数量
     */
    @ApiModelProperty(value = "材料数量")
    private Integer materialQuantity;
    /**
     * 结果送达方式(短信方式等)
     */
    @ApiModelProperty(value = "结果送达方式(短信方式等)")
    private String resultDeliveryMethod;
    /**
     * 受条件规则(已注册用户等)
     */
    @ApiModelProperty(value = "受条件规则(已注册用户等)")
    private String acceptanceRules;
    /**
     * 区域编码
     */
    @ApiModelProperty(value = "区域编码")
    private String areaCode;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/excel/GdImplementationListExcel.java
New file
@@ -0,0 +1,104 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementationList.excel;
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;
/**
 * 实施清单表(实时清单管理) Excel实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class GdImplementationListExcel implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 实施编码(唯一)
     */
    @ColumnWidth(20)
    @ExcelProperty("实施编码(唯一)")
    private String implementationCode;
    /**
     * 实施清单名称
     */
    @ColumnWidth(20)
    @ExcelProperty("实施清单名称")
    private String listName;
    /**
     * 所属区划
     */
    @ColumnWidth(20)
    @ExcelProperty("所属区划")
    private String belongArea;
    /**
     * 所属机构
     */
    @ColumnWidth(20)
    @ExcelProperty("所属机构")
    private String belongOrg;
    /**
     * 项目编码
     */
    @ColumnWidth(20)
    @ExcelProperty("项目编码")
    private String projectCode;
    /**
     * 材料数量
     */
    @ColumnWidth(20)
    @ExcelProperty("材料数量")
    private Integer materialQuantity;
    /**
     * 结果送达方式(短信方式等)
     */
    @ColumnWidth(20)
    @ExcelProperty("结果送达方式(短信方式等)")
    private String resultDeliveryMethod;
    /**
     * 受条件规则(已注册用户等)
     */
    @ColumnWidth(20)
    @ExcelProperty("受条件规则(已注册用户等)")
    private String acceptanceRules;
    /**
     * 区域编码
     */
    @ColumnWidth(20)
    @ExcelProperty("区域编码")
    private String areaCode;
    /**
     * 删除标志(0存在 1删除)
     */
    @ColumnWidth(20)
    @ExcelProperty("删除标志(0存在 1删除)")
    private Byte isDeleted;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/mapper/GdImplementationListMapper.java
New file
@@ -0,0 +1,54 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementationList.mapper;
import org.sxkj.gd.implementationList.entity.GdImplementationListEntity;
import org.sxkj.gd.implementationList.vo.GdImplementationListVO;
import org.sxkj.gd.implementationList.excel.GdImplementationListExcel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * 实施清单表(实时清单管理) Mapper 接口
 *
 * @author lw
 * @since 2026-01-14
 */
public interface GdImplementationListMapper extends BaseMapper<GdImplementationListEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdImplementationList
     * @return
     */
    List<GdImplementationListVO> selectGdImplementationListPage(IPage page, GdImplementationListVO gdImplementationList);
    /**
     * 获取导出数据
     *
     * @param queryWrapper
     * @return
     */
    List<GdImplementationListExcel> exportGdImplementationList(@Param("ew") Wrapper<GdImplementationListEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/mapper/GdImplementationListMapper.xml
New file
@@ -0,0 +1,36 @@
<?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.sxkj.gd.implementationList.mapper.GdImplementationListMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="gdImplementationListResultMap" type="org.sxkj.gd.implementationList.entity.GdImplementationListEntity">
        <result column="id" property="id"/>
        <result column="implementation_code" property="implementationCode"/>
        <result column="list_name" property="listName"/>
        <result column="belong_area" property="belongArea"/>
        <result column="belong_org" property="belongOrg"/>
        <result column="project_code" property="projectCode"/>
        <result column="material_quantity" property="materialQuantity"/>
        <result column="result_delivery_method" property="resultDeliveryMethod"/>
        <result column="acceptance_rules" property="acceptanceRules"/>
        <result column="area_code" property="areaCode"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
    <select id="selectGdImplementationListPage" resultMap="gdImplementationListResultMap">
        select * from ja_gd_implementation_list where is_deleted = 0
    </select>
    <select id="exportGdImplementationList" resultType="org.sxkj.gd.implementationList.excel.GdImplementationListExcel">
        SELECT * FROM ja_gd_implementation_list ${ew.customSqlSegment}
    </select>
</mapper>
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/service/IGdImplementationListService.java
New file
@@ -0,0 +1,52 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementationList.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.sxkj.gd.implementationList.entity.GdImplementationListEntity;
import org.sxkj.gd.implementationList.vo.GdImplementationListVO;
import org.sxkj.gd.implementationList.excel.GdImplementationListExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
 * 实施清单表(实时清单管理) 服务类
 *
 * @author lw
 * @since 2026-01-14
 */
public interface IGdImplementationListService extends BaseService<GdImplementationListEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdImplementationList
     * @return
     */
    IPage<GdImplementationListVO> selectGdImplementationListPage(IPage<GdImplementationListVO> page, GdImplementationListVO gdImplementationList);
    /**
     * 导出数据
     *
     * @param queryWrapper
     * @return
     */
    List<GdImplementationListExcel> exportGdImplementationList(Wrapper<GdImplementationListEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/service/impl/GdImplementationListServiceImpl.java
New file
@@ -0,0 +1,54 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementationList.service.impl;
import org.sxkj.gd.implementationList.entity.GdImplementationListEntity;
import org.sxkj.gd.implementationList.vo.GdImplementationListVO;
import org.sxkj.gd.implementationList.excel.GdImplementationListExcel;
import org.sxkj.gd.implementationList.mapper.GdImplementationListMapper;
import org.sxkj.gd.implementationList.service.IGdImplementationListService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
/**
 * 实施清单表(实时清单管理) 服务实现类
 *
 * @author lw
 * @since 2026-01-14
 */
@Service
public class GdImplementationListServiceImpl extends BaseServiceImpl<GdImplementationListMapper, GdImplementationListEntity> implements IGdImplementationListService {
    @Override
    public IPage<GdImplementationListVO> selectGdImplementationListPage(IPage<GdImplementationListVO> page, GdImplementationListVO gdImplementationList) {
        return page.setRecords(baseMapper.selectGdImplementationListPage(page, gdImplementationList));
    }
    @Override
    public List<GdImplementationListExcel> exportGdImplementationList(Wrapper<GdImplementationListEntity> queryWrapper) {
        List<GdImplementationListExcel> gdImplementationListList = baseMapper.exportGdImplementationList(queryWrapper);
        //gdImplementationListList.forEach(gdImplementationList -> {
        //    gdImplementationList.setTypeName(DictCache.getValue(DictEnum.YES_NO, GdImplementationList.getType()));
        //});
        return gdImplementationListList;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/vo/GdImplementationListVO.java
New file
@@ -0,0 +1,35 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementationList.vo;
import org.sxkj.gd.implementationList.entity.GdImplementationListEntity;
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 实施清单表(实时清单管理) 视图实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class GdImplementationListVO extends GdImplementationListEntity {
    private static final long serialVersionUID = 1L;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementationList/wrapper/GdImplementationListWrapper.java
New file
@@ -0,0 +1,50 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementationList.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.sxkj.gd.implementationList.entity.GdImplementationListEntity;
import org.sxkj.gd.implementationList.vo.GdImplementationListVO;
import java.util.Objects;
/**
 * 实施清单表(实时清单管理) 包装类,返回视图层所需的字段
 *
 * @author lw
 * @since 2026-01-14
 */
public class GdImplementationListWrapper extends BaseEntityWrapper<GdImplementationListEntity, GdImplementationListVO>  {
    public static GdImplementationListWrapper build() {
        return new GdImplementationListWrapper();
     }
    @Override
    public GdImplementationListVO entityVO(GdImplementationListEntity gdImplementationList) {
        GdImplementationListVO gdImplementationListVO = Objects.requireNonNull(BeanUtil.copy(gdImplementationList, GdImplementationListVO.class));
        //User createUser = UserCache.getUser(gdImplementationList.getCreateUser());
        //User updateUser = UserCache.getUser(gdImplementationList.getUpdateUser());
        //gdImplementationListVO.setCreateUserName(createUser.getName());
        //gdImplementationListVO.setUpdateUserName(updateUser.getName());
        return gdImplementationListVO;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/controller/GdTaskResultController.java
New file
@@ -0,0 +1,151 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.taskResult.controller;
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.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
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.gd.taskResult.entity.GdTaskResultEntity;
import org.sxkj.gd.taskResult.vo.GdTaskResultVO;
import org.sxkj.gd.taskResult.excel.GdTaskResultExcel;
import org.sxkj.gd.taskResult.wrapper.GdTaskResultWrapper;
import org.sxkj.gd.taskResult.service.IGdTaskResultService;
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 springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
/**
 * 成果表 控制器
 *
 * @author lw
 * @since 2026-01-14
 */
@RestController
@AllArgsConstructor
@RequestMapping("taskResult/gdTaskResult")
@Api(value = "成果表", tags = "成果表接口")
public class GdTaskResultController extends BladeController {
    private final IGdTaskResultService gdTaskResultService;
    /**
     * 成果表 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入gdTaskResult")
    public R<GdTaskResultVO> detail(GdTaskResultEntity gdTaskResult) {
        GdTaskResultEntity detail = gdTaskResultService.getOne(Condition.getQueryWrapper(gdTaskResult));
        return R.data(GdTaskResultWrapper.build().entityVO(detail));
    }
    /**
     * 成果表 分页
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入gdTaskResult")
    public R<IPage<GdTaskResultVO>> list(@ApiIgnore @RequestParam Map<String, Object> gdTaskResult, Query query) {
        IPage<GdTaskResultEntity> pages = gdTaskResultService.page(Condition.getPage(query), Condition.getQueryWrapper(gdTaskResult, GdTaskResultEntity.class));
        return R.data(GdTaskResultWrapper.build().pageVO(pages));
    }
    /**
     * 成果表 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入gdTaskResult")
    public R<IPage<GdTaskResultVO>> page(GdTaskResultVO gdTaskResult, Query query) {
        IPage<GdTaskResultVO> pages = gdTaskResultService.selectGdTaskResultPage(Condition.getPage(query), gdTaskResult);
        return R.data(pages);
    }
    /**
     * 成果表 新增
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入gdTaskResult")
    public R save(@Valid @RequestBody GdTaskResultEntity gdTaskResult) {
        return R.status(gdTaskResultService.save(gdTaskResult));
    }
    /**
     * 成果表 修改
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入gdTaskResult")
    public R update(@Valid @RequestBody GdTaskResultEntity gdTaskResult) {
        return R.status(gdTaskResultService.updateById(gdTaskResult));
    }
    /**
     * 成果表 新增或修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入gdTaskResult")
    public R submit(@Valid @RequestBody GdTaskResultEntity gdTaskResult) {
        return R.status(gdTaskResultService.saveOrUpdate(gdTaskResult));
    }
    /**
     * 成果表 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(gdTaskResultService.deleteLogic(Func.toLongList(ids)));
    }
    /**
     * 导出数据
     */
    @GetMapping("/export-gdTaskResult")
    @ApiOperationSupport(order = 9)
    @ApiOperation(value = "导出数据", notes = "传入gdTaskResult")
    public void exportGdTaskResult(@ApiIgnore @RequestParam Map<String, Object> gdTaskResult, BladeUser bladeUser, HttpServletResponse response) {
        QueryWrapper<GdTaskResultEntity> queryWrapper = Condition.getQueryWrapper(gdTaskResult, GdTaskResultEntity.class);
        //if (!AuthUtil.isAdministrator()) {
        //    queryWrapper.lambda().eq(GdTaskResult::getTenantId, bladeUser.getTenantId());
        //}
        queryWrapper.lambda().eq(GdTaskResultEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
        List<GdTaskResultExcel> list = gdTaskResultService.exportGdTaskResult(queryWrapper);
        ExcelUtil.export(response, "成果表数据" + DateUtil.time(), "成果表数据表", list, GdTaskResultExcel.class);
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/dto/GdTaskResultDTO.java
New file
@@ -0,0 +1,34 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.taskResult.dto;
import org.sxkj.gd.taskResult.entity.GdTaskResultEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 成果表 数据传输对象实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class GdTaskResultDTO extends GdTaskResultEntity {
    private static final long serialVersionUID = 1L;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/entity/GdTaskResultEntity.java
New file
@@ -0,0 +1,81 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.taskResult.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.util.Date;
/**
 * 成果表 实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@TableName("ja_gd_task_result")
@ApiModel(value = "GdTaskResult对象", description = "成果表")
@EqualsAndHashCode(callSuper = true)
public class GdTaskResultEntity extends BaseEntity {
    /**
     * 关联巡查任务表ID
     */
    @ApiModelProperty(value = "关联巡查任务表ID")
    private Long patrolTaskId;
    /**
     * 成果编号
     */
    @ApiModelProperty(value = "成果编号")
    private String resultCode;
    /**
     * 成果URL
     */
    @ApiModelProperty(value = "成果URL")
    private String resultUrl;
    /**
     * 拍照时间
     */
    @ApiModelProperty(value = "拍照时间")
    private Date shootTime;
    /**
     * 照片数据(JSON格式)
     */
    @ApiModelProperty(value = "照片数据(JSON格式)")
    private String photoData;
    /**
     * 位置(经纬度)
     */
    @ApiModelProperty(value = "位置(经纬度)")
    private byte[] location;
    /**
     * 分发事件状态:0未分发、1已分发、2已驳回
     */
    @ApiModelProperty(value = "分发事件状态:0未分发、1已分发、2已驳回")
    private Byte distributeStatus;
    /**
     * 区域编码
     */
    @ApiModelProperty(value = "区域编码")
    private String areaCode;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/excel/GdTaskResultExcel.java
New file
@@ -0,0 +1,99 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.taskResult.excel;
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.util.Date;
/**
 * 成果表 Excel实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class GdTaskResultExcel implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 关联巡查任务表ID
     */
    @ColumnWidth(20)
    @ExcelProperty("关联巡查任务表ID")
    private Long patrolTaskId;
    /**
     * 成果编号
     */
    @ColumnWidth(20)
    @ExcelProperty("成果编号")
    private String resultCode;
    /**
     * 成果URL
     */
    @ColumnWidth(20)
    @ExcelProperty("成果URL")
    private String resultUrl;
    /**
     * 拍照时间
     */
    @ColumnWidth(20)
    @ExcelProperty("拍照时间")
    private Date shootTime;
    /**
     * 照片数据(JSON格式)
     */
    @ColumnWidth(20)
    @ExcelProperty("照片数据(JSON格式)")
    private String photoData;
    /**
     * 位置(经纬度)
     */
    @ColumnWidth(20)
    @ExcelProperty("位置(经纬度)")
    private byte[] location;
    /**
     * 分发事件状态:0未分发、1已分发、2已驳回
     */
    @ColumnWidth(20)
    @ExcelProperty("分发事件状态:0未分发、1已分发、2已驳回")
    private Byte distributeStatus;
    /**
     * 区域编码
     */
    @ColumnWidth(20)
    @ExcelProperty("区域编码")
    private String areaCode;
    /**
     * 删除标志(0存在 1删除)
     */
    @ColumnWidth(20)
    @ExcelProperty("删除标志(0存在 1删除)")
    private Byte isDeleted;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/mapper/GdTaskResultMapper.java
New file
@@ -0,0 +1,54 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.taskResult.mapper;
import org.sxkj.gd.taskResult.entity.GdTaskResultEntity;
import org.sxkj.gd.taskResult.vo.GdTaskResultVO;
import org.sxkj.gd.taskResult.excel.GdTaskResultExcel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * 成果表 Mapper 接口
 *
 * @author lw
 * @since 2026-01-14
 */
public interface GdTaskResultMapper extends BaseMapper<GdTaskResultEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdTaskResult
     * @return
     */
    List<GdTaskResultVO> selectGdTaskResultPage(IPage page, GdTaskResultVO gdTaskResult);
    /**
     * 获取导出数据
     *
     * @param queryWrapper
     * @return
     */
    List<GdTaskResultExcel> exportGdTaskResult(@Param("ew") Wrapper<GdTaskResultEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/mapper/GdTaskResultMapper.xml
New file
@@ -0,0 +1,35 @@
<?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.sxkj.gd.taskResult.mapper.GdTaskResultMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="gdTaskResultResultMap" type="org.sxkj.gd.taskResult.entity.GdTaskResultEntity">
        <result column="id" property="id"/>
        <result column="patrol_task_id" property="patrolTaskId"/>
        <result column="result_code" property="resultCode"/>
        <result column="result_url" property="resultUrl"/>
        <result column="shoot_time" property="shootTime"/>
        <result column="photo_data" property="photoData"/>
        <result column="location" property="location"/>
        <result column="distribute_status" property="distributeStatus"/>
        <result column="area_code" property="areaCode"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
    <select id="selectGdTaskResultPage" resultMap="gdTaskResultResultMap">
        select * from ja_gd_task_result where is_deleted = 0
    </select>
    <select id="exportGdTaskResult" resultType="org.sxkj.gd.taskResult.excel.GdTaskResultExcel">
        SELECT * FROM ja_gd_task_result ${ew.customSqlSegment}
    </select>
</mapper>
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/service/IGdTaskResultService.java
New file
@@ -0,0 +1,52 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.taskResult.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.sxkj.gd.taskResult.entity.GdTaskResultEntity;
import org.sxkj.gd.taskResult.vo.GdTaskResultVO;
import org.sxkj.gd.taskResult.excel.GdTaskResultExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
 * 成果表 服务类
 *
 * @author lw
 * @since 2026-01-14
 */
public interface IGdTaskResultService extends BaseService<GdTaskResultEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdTaskResult
     * @return
     */
    IPage<GdTaskResultVO> selectGdTaskResultPage(IPage<GdTaskResultVO> page, GdTaskResultVO gdTaskResult);
    /**
     * 导出数据
     *
     * @param queryWrapper
     * @return
     */
    List<GdTaskResultExcel> exportGdTaskResult(Wrapper<GdTaskResultEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/service/impl/GdTaskResultServiceImpl.java
New file
@@ -0,0 +1,54 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.taskResult.service.impl;
import org.sxkj.gd.taskResult.entity.GdTaskResultEntity;
import org.sxkj.gd.taskResult.vo.GdTaskResultVO;
import org.sxkj.gd.taskResult.excel.GdTaskResultExcel;
import org.sxkj.gd.taskResult.mapper.GdTaskResultMapper;
import org.sxkj.gd.taskResult.service.IGdTaskResultService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
/**
 * 成果表 服务实现类
 *
 * @author lw
 * @since 2026-01-14
 */
@Service
public class GdTaskResultServiceImpl extends BaseServiceImpl<GdTaskResultMapper, GdTaskResultEntity> implements IGdTaskResultService {
    @Override
    public IPage<GdTaskResultVO> selectGdTaskResultPage(IPage<GdTaskResultVO> page, GdTaskResultVO gdTaskResult) {
        return page.setRecords(baseMapper.selectGdTaskResultPage(page, gdTaskResult));
    }
    @Override
    public List<GdTaskResultExcel> exportGdTaskResult(Wrapper<GdTaskResultEntity> queryWrapper) {
        List<GdTaskResultExcel> gdTaskResultList = baseMapper.exportGdTaskResult(queryWrapper);
        //gdTaskResultList.forEach(gdTaskResult -> {
        //    gdTaskResult.setTypeName(DictCache.getValue(DictEnum.YES_NO, GdTaskResult.getType()));
        //});
        return gdTaskResultList;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/vo/GdTaskResultVO.java
New file
@@ -0,0 +1,35 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.taskResult.vo;
import org.sxkj.gd.taskResult.entity.GdTaskResultEntity;
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 成果表 视图实体类
 *
 * @author lw
 * @since 2026-01-14
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class GdTaskResultVO extends GdTaskResultEntity {
    private static final long serialVersionUID = 1L;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/taskResult/wrapper/GdTaskResultWrapper.java
New file
@@ -0,0 +1,50 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.taskResult.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.sxkj.gd.taskResult.entity.GdTaskResultEntity;
import org.sxkj.gd.taskResult.vo.GdTaskResultVO;
import java.util.Objects;
/**
 * 成果表 包装类,返回视图层所需的字段
 *
 * @author lw
 * @since 2026-01-14
 */
public class GdTaskResultWrapper extends BaseEntityWrapper<GdTaskResultEntity, GdTaskResultVO>  {
    public static GdTaskResultWrapper build() {
        return new GdTaskResultWrapper();
     }
    @Override
    public GdTaskResultVO entityVO(GdTaskResultEntity gdTaskResult) {
        GdTaskResultVO gdTaskResultVO = Objects.requireNonNull(BeanUtil.copy(gdTaskResult, GdTaskResultVO.class));
        //User createUser = UserCache.getUser(gdTaskResult.getCreateUser());
        //User updateUser = UserCache.getUser(gdTaskResult.getUpdateUser());
        //gdTaskResultVO.setCreateUserName(createUser.getName());
        //gdTaskResultVO.setUpdateUserName(updateUser.getName());
        return gdTaskResultVO;
    }
}