From a381426bb74009f45db150beadb9f67ea72a7df5 Mon Sep 17 00:00:00 2001
From: rain <1679827795@qq.com>
Date: Thu, 22 Jan 2026 16:00:55 +0800
Subject: [PATCH] 事件线索app相关接口

---
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java |   22 ++++
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdClueEventService.java         |   17 +++
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdClueEventController.java    |   24 ++--
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdClueEventListVO.java                |   43 ++++++++
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdClueEventMapper.java            |   20 ++++
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdClueEventVO.java                    |   85 +++++++++++++++++
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdClueEventMapper.xml             |   48 +++++++++
 7 files changed, 246 insertions(+), 13 deletions(-)

diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdClueEventController.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdClueEventController.java
index cdc07d6..4675cbc 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdClueEventController.java
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdClueEventController.java
@@ -29,13 +29,12 @@
 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.workorder.entity.GdClueEventEntity;
 import org.sxkj.gd.workorder.param.GdClueEventRejectParam;
+import org.sxkj.gd.workorder.vo.GdClueEventListVO;
 import org.sxkj.gd.workorder.vo.GdClueEventVO;
 import org.sxkj.gd.workorder.excel.GdClueEventExcel;
-import org.sxkj.gd.workorder.wrapper.GdClueEventWrapper;
 import org.sxkj.gd.workorder.service.IGdClueEventService;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.tool.utils.DateUtil;
@@ -65,22 +64,21 @@
 	 */
 	@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));
+	@ApiOperation(value = "详情", notes = "传入事件ID")
+	public R<GdClueEventVO> detail(@ApiParam(value = "事件ID", required = true) @RequestParam Long id) {
+		return R.data(gdClueEventService.getGdClueEventDetail(id));
 	}
+
 	/**
-	 * 事件表(线索事件) 分页
+	 * 事件表(线索事件) 列表
 	 */
 	@GetMapping("/list")
 	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "分页", notes = "传入gdClueEvent")
-	public R<IPage<GdClueEventVO>> list(@ApiIgnore @RequestParam Map<String, Object> gdClueEvent, Query query) {
-		QueryWrapper<GdClueEventEntity> queryWrapper = Condition.getQueryWrapper(gdClueEvent, GdClueEventEntity.class);
-		queryWrapper.lambda().eq(GdClueEventEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
-		IPage<GdClueEventVO> pages = gdClueEventService.selectGdClueEventList(Condition.getPage(query), queryWrapper);
-		return R.data(pages);
+	@ApiOperation(value = "列表", notes = "固定过滤本部门,onlyMine=1时仅我的数据")
+	public R<List<GdClueEventListVO>> list(@ApiParam(value = "是否仅我的数据,1为是,0为否")
+			@RequestParam(value = "onlyMine", required = false, defaultValue = "0") Integer onlyMine) {
+		List<GdClueEventListVO> list = gdClueEventService.listGdClueEventByDept(onlyMine);
+		return R.data(list);
 	}
 
 	/**
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdClueEventMapper.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdClueEventMapper.java
index 7963093..22ea340 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdClueEventMapper.java
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdClueEventMapper.java
@@ -17,6 +17,7 @@
 package org.sxkj.gd.workorder.mapper;
 
 import org.sxkj.gd.workorder.entity.GdClueEventEntity;
+import org.sxkj.gd.workorder.vo.GdClueEventListVO;
 import org.sxkj.gd.workorder.vo.GdClueEventVO;
 import org.sxkj.gd.workorder.excel.GdClueEventExcel;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -51,6 +52,25 @@
 	 */
 	List<GdClueEventVO> selectGdClueEventList(IPage page, @Param("ew") Wrapper<GdClueEventEntity> queryWrapper);
 
+	/**
+	 * 列表查询(不分页)
+	 *
+	 * @param deptId
+	 * @param userId
+	 * @param onlyMine
+	 * @return
+	 */
+	List<GdClueEventListVO> selectGdClueEventSimpleList(@Param("deptId") Long deptId, @Param("userId") Long userId, @Param("onlyMine") Integer onlyMine);
+
+	/**
+	 * 详情查询
+	 *
+	 * @param id
+	 * @param deptId
+	 * @return
+	 */
+	GdClueEventVO selectGdClueEventDetailById(@Param("id") Long id, @Param("deptId") Long deptId);
+
 
 	/**
 	 * 获取导出数据
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdClueEventMapper.xml b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdClueEventMapper.xml
index 250bcbc..07badd0 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdClueEventMapper.xml
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdClueEventMapper.xml
@@ -34,6 +34,13 @@
         <result column="latitude" property="latitude"/>
         <result column="event_status" property="eventStatus"/>
         <result column="area_code" property="areaCode"/>
+        <result column="event_code" property="eventCode"/>
+        <result column="event_location" property="eventLocation"/>
+        <result column="shoot_time" property="shootTime"/>
+        <result column="event_image_url" property="eventImageUrl"/>
+        <result column="distribute_user_name" property="distributeUserName"/>
+        <result column="distribute_dept_name" property="distributeDeptName"/>
+        <result column="distribute_time" property="distributeTime"/>
         <result column="create_user" property="createUser"/>
         <result column="create_dept" property="createDept"/>
         <result column="create_time" property="createTime"/>
@@ -41,6 +48,12 @@
         <result column="update_time" property="updateTime"/>
         <result column="status" property="status"/>
         <result column="is_deleted" property="isDeleted"/>
+    </resultMap>
+
+    <resultMap id="gdClueEventListVoResultMap" type="org.sxkj.gd.workorder.vo.GdClueEventListVO">
+        <result column="id" property="id"/>
+        <result column="event_image_url" property="eventImageUrl"/>
+        <result column="create_time" property="createTime"/>
     </resultMap>
 
     <resultMap id="gdClueEventExcelResultMap" type="org.sxkj.gd.workorder.excel.GdClueEventExcel">
@@ -68,6 +81,41 @@
         left join blade_dept bd on bd.id = ce.dispose_dept and bd.is_deleted = 0
     </select>
 
+    <select id="selectGdClueEventSimpleList" resultMap="gdClueEventListVoResultMap">
+        select ce.id as id,
+        tr.result_url as event_image_url,
+        ce.create_time as create_time
+        from ja_gd_clue_event ce
+        left join ja_gd_task_result tr on tr.id = ce.result_id and tr.is_deleted = 0
+        where ce.is_deleted = 0
+        and ce.dispose_dept = #{deptId}
+        <if test="onlyMine != null and onlyMine == 1">
+            and ce.dispose_user = #{userId}
+        </if>
+    </select>
+
+    <select id="selectGdClueEventDetailById" resultMap="gdClueEventVoResultMap">
+        select ce.*,
+        ifnull(bu.real_name, bu.name) as dispose_user_name,
+        bd.dept_name as dispose_dept_name,
+        ifnull(cu.real_name, cu.name) as distribute_user_name,
+        cd.dept_name as distribute_dept_name,
+        ce.create_time as distribute_time,
+        concat(ce.longitude, ',', ce.latitude) as event_location,
+        tr.result_code as event_code,
+        tr.shoot_time as shoot_time,
+        tr.result_url as event_image_url
+        from ja_gd_clue_event ce
+        left join blade_user bu on bu.id = ce.dispose_user and bu.is_deleted = 0
+        left join blade_dept bd on bd.id = ce.dispose_dept and bd.is_deleted = 0
+        left join blade_user cu on cu.id = ce.create_user and cu.is_deleted = 0
+        left join blade_dept cd on cd.id = ce.create_dept and cd.is_deleted = 0
+        left join ja_gd_task_result tr on tr.id = ce.result_id and tr.is_deleted = 0
+        where ce.is_deleted = 0
+        and ce.dispose_dept = #{deptId}
+        and ce.id = #{id}
+    </select>
+
 
     <select id="exportGdClueEvent" resultMap="gdClueEventExcelResultMap">
         SELECT * FROM ja_gd_clue_event ${ew.customSqlSegment}
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdClueEventService.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdClueEventService.java
index db91143..53d5a32 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdClueEventService.java
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdClueEventService.java
@@ -20,6 +20,7 @@
 import org.sxkj.gd.workorder.entity.GdClueEventEntity;
 import org.sxkj.gd.workorder.param.GdClueEventDistributeParam;
 import org.sxkj.gd.workorder.param.GdClueEventRejectParam;
+import org.sxkj.gd.workorder.vo.GdClueEventListVO;
 import org.sxkj.gd.workorder.vo.GdClueEventVO;
 import org.sxkj.gd.workorder.excel.GdClueEventExcel;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -52,6 +53,22 @@
 	IPage<GdClueEventVO> selectGdClueEventList(IPage<GdClueEventVO> page, Wrapper<GdClueEventEntity> queryWrapper);
 
 	/**
+	 * 列表查询(不分页)
+	 *
+	 * @param onlyMine
+	 * @return
+	 */
+	List<GdClueEventListVO> listGdClueEventByDept(Integer onlyMine);
+
+	/**
+	 * 详情查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	GdClueEventVO getGdClueEventDetail(Long id);
+
+	/**
 	 * 分发事件
 	 *
 	 * @param distributeParam
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java
index 52e3614..2a107c3 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java
@@ -29,6 +29,7 @@
 import org.sxkj.gd.workorder.param.GdClueEventRejectParam;
 import org.sxkj.gd.workorder.service.IGdClueEventService;
 import org.sxkj.gd.workorder.service.IGdTaskResultService;
+import org.sxkj.gd.workorder.vo.GdClueEventListVO;
 import org.sxkj.gd.workorder.vo.GdClueEventVO;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -60,6 +61,27 @@
 	}
 
 	@Override
+	public List<GdClueEventListVO> listGdClueEventByDept(Integer onlyMine) {
+		Long deptId = Long.valueOf(AuthUtil.getDeptId());
+		Long userId = AuthUtil.getUserId();
+		Integer mine = onlyMine == null ? 0 : onlyMine;
+		return baseMapper.selectGdClueEventSimpleList(deptId, userId, mine);
+	}
+
+	@Override
+	public GdClueEventVO getGdClueEventDetail(Long id) {
+		if (id == null) {
+			throw new RuntimeException("事件ID不能为空");
+		}
+		Long deptId = Long.valueOf(AuthUtil.getDeptId());
+		GdClueEventVO detail = baseMapper.selectGdClueEventDetailById(id, deptId);
+		if (detail == null) {
+			throw new RuntimeException("事件不存在");
+		}
+		return detail;
+	}
+
+	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean distributeClueEvent(GdClueEventDistributeParam distributeParam) {
 		GdTaskResultEntity taskResult = gdTaskResultService.getById(distributeParam.getResultId());
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdClueEventListVO.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdClueEventListVO.java
new file mode 100644
index 0000000..44521e5
--- /dev/null
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdClueEventListVO.java
@@ -0,0 +1,43 @@
+/*
+ *      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.workorder.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 事件表(线索事件) 列表视图实体类
+ *
+ * @author lw
+ * @since 2026-01-14
+ */
+@Data
+public class GdClueEventListVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("事件ID")
+    private Long id;
+
+    @ApiModelProperty(value = "事件图片url")
+    private String eventImageUrl;
+
+    @ApiModelProperty(value = "事件生成时间")
+    private Date createTime;
+}
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdClueEventVO.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdClueEventVO.java
index c39e632..b2939ee 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdClueEventVO.java
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdClueEventVO.java
@@ -19,6 +19,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 事件表(线索事件) 视图实体类
@@ -74,10 +75,94 @@
     @ApiModelProperty(value = "区域编码")
     private String areaCode;
 
+    /**
+     * 事件编号
+     */
+    @ApiModelProperty(value = "事件编号")
+    private String eventCode;
+
+    /**
+     * 事件位置
+     */
+    @ApiModelProperty(value = "事件位置")
+    private String eventLocation;
+
+    /**
+     * 拍摄时间
+     */
+    @ApiModelProperty(value = "拍摄时间")
+    private Date shootTime;
+
+    /**
+     * 事件图片url
+     */
+    @ApiModelProperty(value = "事件图片url")
+    private String eventImageUrl;
+
     @ApiModelProperty(value = "处置人姓名")
     private String disposeUserName;
 
     @ApiModelProperty(value = "处置部门名称")
     private String disposeDeptName;
 
+    /**
+     * 分发人员名称
+     */
+    @ApiModelProperty(value = "分发人员名称")
+    private String distributeUserName;
+
+    /**
+     * 分发部门名称
+     */
+    @ApiModelProperty(value = "分发部门名称")
+    private String distributeDeptName;
+
+    /**
+     * 分发时间
+     */
+    @ApiModelProperty(value = "分发时间")
+    private Date distributeTime;
+
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private Long createUser;
+
+    /**
+     * 创建部门
+     */
+    @ApiModelProperty(value = "创建部门")
+    private Long createDept;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private Long updateUser;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ApiModelProperty(value = "状态(0正常 1停用)")
+    private Integer status;
+
+    /**
+     * 删除标志(0存在 1删除)
+     */
+    @ApiModelProperty(value = "删除标志(0存在 1删除)")
+    private Integer isDeleted;
+
 }

--
Gitblit v1.9.3