吉安感知网项目-后端
linwei
5 days ago e28a746eb7cbb23a3d7bbb78dba0ae3023e8215d
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdClueEventController.java
@@ -16,6 +16,7 @@
 */
package org.sxkj.gd.workorder.controller;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -23,20 +24,23 @@
import lombok.AllArgsConstructor;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
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.workorder.entity.GdClueEventEntity;
import org.sxkj.gd.workorder.param.GdClueDisposeRecordAddParam;
import org.sxkj.gd.workorder.param.GdClueEventRejectParam;
import org.sxkj.gd.workorder.vo.GdClueEventVO;
import org.sxkj.gd.workorder.param.GdClueEventStatusUpdateParam;
import org.sxkj.gd.workorder.vo.*;
import org.sxkj.gd.workorder.excel.GdClueEventExcel;
import org.sxkj.gd.workorder.wrapper.GdClueEventWrapper;
import org.sxkj.gd.workorder.service.IGdClueDisposeRecordService;
import org.sxkj.gd.workorder.service.IGdClueEventService;
import org.sxkj.gd.workorder.service.IGdClueEventStatusFlowService;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil;
@@ -52,6 +56,7 @@
 * @author lw
 * @since 2026-01-14
 */
@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping("workOrder/gdClueEvent")
@@ -59,35 +64,63 @@
public class GdClueEventController extends BladeController {
   private final IGdClueEventService gdClueEventService;
   private final IGdClueDisposeRecordService gdClueDisposeRecordService;
   private final IGdClueEventStatusFlowService gdClueEventStatusFlowService;
   /**
    * 事件表(线索事件) 详情
    */
   @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<IPage<GdClueEventListVO>> list(@ApiParam(value = "是否仅我的数据,1为是,0为否")
         @RequestParam(value = "onlyMine", required = false, defaultValue = "0") Integer onlyMine,
         @ApiParam(value = "事件编号关键字")
         @RequestParam(value = "keyword", required = false) String keyword,
         @ApiParam(value = "事件状态:0待确认、1处置中、2已退回、3已处置、4已完成")
         @RequestParam(value = "eventStatus", required = false) Integer eventStatus,
         @ApiParam(value = "开始时间(创建时间)")
         @RequestParam(value = "startTime", required = false) String startTime,
         @ApiParam(value = "结束时间(创建时间)")
         @RequestParam(value = "endTime", required = false) String endTime,
         @ApiParam(value = "分页参数") Query query) {
      // 1. 构建分页对象
      IPage<GdClueEventListVO> pages = Condition.getPage(query);
      // 2. 查询分页数据
      IPage<GdClueEventListVO> result = gdClueEventService.pageGdClueEventByDept(
            pages, onlyMine, keyword, eventStatus, startTime, endTime);
      // 3. 返回分页结果
      return R.data(result);
   }
   /**
    * 事件表(线索事件) 数量统计
    */
   @GetMapping("/count")
   @ApiOperationSupport(order = 3)
   @ApiOperation(value = "数量统计", notes = "返回全部工单与我的工单数量")
   public R<GdClueEventCountVO> count(@ApiParam(value = "事件编号关键字")
         @RequestParam(value = "keyword", required = false) String keyword) {
      return R.data(gdClueEventService.getGdClueEventCount(keyword));
   }
   /**
    * 事件表(线索事件) 自定义分页
    */
   @GetMapping("/page")
   @ApiOperationSupport(order = 3)
   @ApiOperationSupport(order = 4)
   @ApiOperation(value = "分页", notes = "传入gdClueEvent")
   public R<IPage<GdClueEventVO>> page(GdClueEventVO gdClueEvent, Query query) {
      IPage<GdClueEventVO> pages = gdClueEventService.selectGdClueEventPage(Condition.getPage(query), gdClueEvent);
@@ -125,6 +158,17 @@
   }
   /**
    * 事件表(线索事件) 新增或修改-对外接口
    */
   @PostMapping("/submitExternal")
   @ApiOperationSupport(order = 6)
   @ApiOperation(value = "新增或修改", notes = "传入gdClueEvent")
   public R submitExternal(@Valid @RequestBody GdClueEventEntity gdClueEvent) {
      log.info("submitExternal-gdClueEvent:{}", JSON.toJSONString(gdClueEvent));
      return R.status(gdClueEventService.saveOrUpdateExternal(gdClueEvent));
   }
   /**
    * 事件表(线索事件) 删除
    */
   @PostMapping("/remove")
@@ -135,13 +179,78 @@
   }
   /**
    * 事件驳回
    * 事件处理
    */
   @PostMapping("/reject")
   @PostMapping("/handle")
   @ApiOperationSupport(order = 8)
   @ApiOperation(value = "驳回", notes = "传入事件ID")
   public R reject(@Valid @RequestBody GdClueEventRejectParam rejectParam) {
      return R.status(gdClueEventService.rejectClueEvent(rejectParam));
   @ApiOperation(value = "处理", notes = "传入事件ID与事件状态")
   public R handle(@Valid @RequestBody GdClueEventRejectParam rejectParam) {
      return R.status(gdClueEventService.handleClueEvent(rejectParam));
   }
   /**
    * 事件详情(包含处置记录和状态流转)
    */
   @GetMapping("/detailFull")
   @ApiOperationSupport(order = 9)
   @ApiOperation(value = "事件详情(包含处置记录和状态流转)", notes = "传入事件ID")
   public R<GdClueEventDetailVO> detailFull(@ApiParam(value = "事件ID", required = true) @RequestParam Long id) {
      // 1. 查询事件基本信息
      GdClueEventVO eventInfo = gdClueEventService.getGdClueEventDetail(id);
      // 2. 查询处置记录时间线
      List<GdClueDisposeRecordVO> disposeRecords = gdClueDisposeRecordService.getDisposeRecordsByEventId(id);
      // 3. 查询状态流转时间线
      List<GdClueEventStatusFlowVO> statusFlows = gdClueEventStatusFlowService.getStatusFlowsByEventId(id);
      // 4. 组装返回数据
      GdClueEventDetailVO detailVO = new GdClueEventDetailVO();
      detailVO.setEventInfo(eventInfo);
      detailVO.setDisposeRecords(disposeRecords);
      detailVO.setStatusFlows(statusFlows);
      return R.data(detailVO);
   }
   /**
    * 查询处置记录列表
    */
   @GetMapping("/disposeRecords")
   @ApiOperationSupport(order = 10)
   @ApiOperation(value = "查询处置记录列表", notes = "传入事件ID")
   public R<List<GdClueDisposeRecordVO>> getDisposeRecords(@ApiParam(value = "事件ID", required = true) @RequestParam Long eventId) {
      return R.data(gdClueDisposeRecordService.getDisposeRecordsByEventId(eventId));
   }
   /**
    * 新增处置记录
    */
   @PostMapping("/addDisposeRecord")
   @ApiOperationSupport(order = 11)
   @ApiOperation(value = "新增处置记录", notes = "传入处置记录参数,可同步更新事件状态")
   public R addDisposeRecord(@Valid @RequestBody GdClueDisposeRecordAddParam addParam) {
      return R.status(gdClueDisposeRecordService.addDisposeRecord(addParam));
   }
   /**
    * 查询状态流转记录列表
    */
   @GetMapping("/statusFlows")
   @ApiOperationSupport(order = 12)
   @ApiOperation(value = "查询状态流转记录列表", notes = "传入事件ID")
   public R<List<GdClueEventStatusFlowVO>> getStatusFlows(@ApiParam(value = "事件ID", required = true) @RequestParam Long eventId) {
      return R.data(gdClueEventStatusFlowService.getStatusFlowsByEventId(eventId));
   }
   /**
    * 更新事件状态
    */
   @PostMapping("/updateStatus")
   @ApiOperationSupport(order = 13)
   @ApiOperation(value = "更新事件状态", notes = "传入事件ID和目标状态,必须符合状态流转矩阵")
   public R updateStatus(@Valid @RequestBody GdClueEventStatusUpdateParam updateParam) {
      return R.status(gdClueEventService.updateEventStatus(updateParam));
   }
//   /**