drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdClueEventController.java
@@ -32,6 +32,7 @@ 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.GdClueEventVO; import org.sxkj.gd.workorder.excel.GdClueEventExcel; import org.sxkj.gd.workorder.wrapper.GdClueEventWrapper; @@ -90,26 +91,26 @@ 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("/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)); // } /** * 事件表(线索事件) 新增或修改 @@ -131,21 +132,30 @@ 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); @PostMapping("/reject") @ApiOperationSupport(order = 8) @ApiOperation(value = "驳回", notes = "传入事件ID") public R reject(@Valid @RequestBody GdClueEventRejectParam rejectParam) { return R.status(gdClueEventService.rejectClueEvent(rejectParam)); } // /** // * 导出数据 // */ // @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/workorder/controller/GdTaskResultController.java
@@ -35,6 +35,8 @@ import org.sxkj.gd.workorder.vo.GdTaskResultVO; import org.sxkj.gd.workorder.excel.GdTaskResultExcel; import org.sxkj.gd.workorder.wrapper.GdTaskResultWrapper; import org.sxkj.gd.workorder.param.GdClueEventDistributeParam; import org.sxkj.gd.workorder.service.IGdClueEventService; import org.sxkj.gd.workorder.service.IGdTaskResultService; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.tool.utils.DateUtil; @@ -58,6 +60,7 @@ public class GdTaskResultController extends BladeController { private final IGdTaskResultService gdTaskResultService; private final IGdClueEventService gdClueEventService; /** * 成果表 详情 @@ -99,26 +102,26 @@ 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("/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)); // } /** * 成果表 新增或修改 @@ -140,6 +143,15 @@ return R.status(gdTaskResultService.deleteLogic(Func.toLongList(ids))); } /** * 成果分发事件 */ @PostMapping("/distribute") @ApiOperationSupport(order = 8) @ApiOperation(value = "分发事件", notes = "传入分发参数") public R distribute(@Valid @RequestBody GdClueEventDistributeParam distributeParam) { return R.status(gdClueEventService.distributeClueEvent(distributeParam)); } /** * 导出数据 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/entity/GdClueEventEntity.java
@@ -23,8 +23,6 @@ import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; import java.util.Date; /** * 事件表(线索事件) 实体类 * @@ -58,20 +56,20 @@ @ApiModelProperty(value = "处置部门") private String disposeDept; /** * 分发时间 * 经度 */ @ApiModelProperty(value = "分发时间") private Date distributeTime; @ApiModelProperty(value = "经度") private Double longitude; /** * 工单位置(经纬度) * 纬度 */ @ApiModelProperty(value = "工单位置(经纬度)") private byte[] workOrderLocation; @ApiModelProperty(value = "纬度") private Double latitude; /** * 状态:0未知、1已分发、2已驳回 * 状态:0未分发、1已分发、2已驳回 */ @ApiModelProperty(value = "状态:0未知、1已分发、2已驳回") private Byte eventStatus; @ApiModelProperty(value = "状态:0未分发、1已分发、2已驳回") private Integer eventStatus; /** * 区域编码 */ drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/entity/GdTaskResultEntity.java
@@ -63,15 +63,20 @@ @ApiModelProperty(value = "照片数据(JSON格式)") private String photoData; /** * 位置(经纬度) * 经度 */ @ApiModelProperty(value = "位置(经纬度)") private byte[] location; @ApiModelProperty(value = "经度") private Double longitude; /** * 纬度 */ @ApiModelProperty(value = "纬度") private Double latitude; /** * 分发事件状态:0未分发、1已分发、2已驳回 */ @ApiModelProperty(value = "分发事件状态:0未分发、1已分发、2已驳回") private Byte distributeStatus; private Integer distributeStatus; /** * 区域编码 */ drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/excel/GdClueEventExcel.java
@@ -24,7 +24,6 @@ import lombok.Data; import java.io.Serializable; import java.util.Date; /** @@ -66,35 +65,23 @@ @ExcelProperty("处置部门") private String disposeDept; /** * 分发人员 * 经度 */ @ColumnWidth(20) @ExcelProperty("分发人员") private String distributeUser; @ExcelProperty("经度") private Double longitude; /** * 分发部门 * 纬度 */ @ColumnWidth(20) @ExcelProperty("分发部门") private String distributeDept; @ExcelProperty("纬度") private Double latitude; /** * 分发时间 * 状态:0未分发、1已分发、2已驳回 */ @ColumnWidth(20) @ExcelProperty("分发时间") private Date distributeTime; /** * 工单位置(经纬度) */ @ColumnWidth(20) @ExcelProperty("工单位置(经纬度)") private byte[] workOrderLocation; /** * 状态:0未知、1已分发、2已驳回 */ @ColumnWidth(20) @ExcelProperty("状态:0未知、1已分发、2已驳回") private Byte eventStatus; @ExcelProperty("状态:0未分发、1已分发、2已驳回") private Integer eventStatus; /** * 区域编码 */ drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/excel/GdTaskResultExcel.java
@@ -72,11 +72,17 @@ @ExcelProperty("照片数据(JSON格式)") private String photoData; /** * 位置(经纬度) * 经度 */ @ColumnWidth(20) @ExcelProperty("位置(经纬度)") private byte[] location; @ExcelProperty("经度") private Double longitude; /** * 纬度 */ @ColumnWidth(20) @ExcelProperty("纬度") private Double latitude; /** * 分发事件状态:0未分发、1已分发、2已驳回 */ drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdClueEventMapper.xml
@@ -9,8 +9,8 @@ <result column="work_order_id" property="workOrderId"/> <result column="dispose_user" property="disposeUser"/> <result column="dispose_dept" property="disposeDept"/> <result column="distribute_time" property="distributeTime"/> <result column="work_order_location" property="workOrderLocation"/> <result column="longitude" property="longitude"/> <result column="latitude" property="latitude"/> <result column="event_status" property="eventStatus"/> <result column="area_code" property="areaCode"/> <result column="create_user" property="createUser"/> @@ -22,13 +22,24 @@ <result column="is_deleted" property="isDeleted"/> </resultMap> <resultMap id="gdClueEventExcelResultMap" type="org.sxkj.gd.workorder.excel.GdClueEventExcel"> <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="longitude" property="longitude"/> <result column="latitude" property="latitude"/> <result column="event_status" property="eventStatus"/> <result column="area_code" property="areaCode"/> <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.workorder.excel.GdClueEventExcel"> <select id="exportGdClueEvent" resultMap="gdClueEventExcelResultMap"> SELECT * FROM ja_gd_clue_event ${ew.customSqlSegment} </select> drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdTaskResultMapper.xml
@@ -10,7 +10,8 @@ <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="longitude" property="longitude"/> <result column="latitude" property="latitude"/> <result column="distribute_status" property="distributeStatus"/> <result column="area_code" property="areaCode"/> <result column="create_user" property="createUser"/> @@ -22,6 +23,19 @@ <result column="is_deleted" property="isDeleted"/> <result column="distribute_user_name" property="distributeUserName"/> <result column="distribute_dept_name" property="distributeDeptName"/> </resultMap> <resultMap id="gdTaskResultExcelResultMap" type="org.sxkj.gd.workorder.excel.GdTaskResultExcel"> <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="longitude" property="longitude"/> <result column="latitude" property="latitude"/> <result column="distribute_status" property="distributeStatus"/> <result column="area_code" property="areaCode"/> <result column="is_deleted" property="isDeleted"/> </resultMap> @@ -42,7 +56,7 @@ </select> <select id="exportGdTaskResult" resultType="org.sxkj.gd.workorder.excel.GdTaskResultExcel"> <select id="exportGdTaskResult" resultMap="gdTaskResultExcelResultMap"> SELECT * FROM ja_gd_task_result ${ew.customSqlSegment} </select> drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/GdClueEventDistributeParam.java
New file @@ -0,0 +1,59 @@ package org.sxkj.gd.workorder.param; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @Data public class GdClueEventDistributeParam { /** * 成果ID */ @ApiModelProperty(value = "成果ID", required = true) @NotNull(message = "成果ID不能为空") private Long resultId; /** * 工单任务ID */ @ApiModelProperty(value = "工单任务ID", required = true) @NotNull(message = "工单任务ID不能为空") private Long workOrderId; /** * 工单处置人 */ @ApiModelProperty(value = "工单处置人", required = true) @NotBlank(message = "工单处置人不能为空") private String disposeUser; /** * 处置部门 */ @ApiModelProperty(value = "处置部门", required = true) @NotBlank(message = "处置部门不能为空") private String disposeDept; /** * 经度 */ @ApiModelProperty(value = "经度", required = true) @NotNull(message = "经度不能为空") private Double longitude; /** * 纬度 */ @ApiModelProperty(value = "纬度", required = true) @NotNull(message = "纬度不能为空") private Double latitude; /** * 区域编码 */ @ApiModelProperty(value = "区域编码") private String areaCode; } drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/GdClueEventRejectParam.java
New file @@ -0,0 +1,17 @@ package org.sxkj.gd.workorder.param; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; @Data public class GdClueEventRejectParam { /** * 事件ID */ @ApiModelProperty(value = "事件ID", required = true) @NotNull(message = "事件ID不能为空") private Long eventId; } drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdClueEventService.java
@@ -18,6 +18,8 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; 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.GdClueEventVO; import org.sxkj.gd.workorder.excel.GdClueEventExcel; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -40,6 +42,21 @@ */ IPage<GdClueEventVO> selectGdClueEventPage(IPage<GdClueEventVO> page, GdClueEventVO gdClueEvent); /** * 分发事件 * * @param distributeParam * @return */ boolean distributeClueEvent(GdClueEventDistributeParam distributeParam); /** * 驳回事件 * * @param rejectParam * @return */ boolean rejectClueEvent(GdClueEventRejectParam rejectParam); /** * 导出数据 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java
@@ -16,15 +16,25 @@ */ package org.sxkj.gd.workorder.service.impl; import org.sxkj.gd.workorder.entity.GdClueEventEntity; import org.sxkj.gd.workorder.vo.GdClueEventVO; import org.sxkj.gd.workorder.excel.GdClueEventExcel; import org.sxkj.gd.workorder.mapper.GdClueEventMapper; import org.sxkj.gd.workorder.service.IGdClueEventService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.StringUtil; import org.sxkj.gd.workorder.entity.GdClueEventEntity; import org.sxkj.gd.workorder.entity.GdTaskResultEntity; import org.sxkj.gd.workorder.excel.GdClueEventExcel; import org.sxkj.gd.workorder.mapper.GdClueEventMapper; import org.sxkj.gd.workorder.param.GdClueEventDistributeParam; 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.GdClueEventVO; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springblade.core.mp.base.BaseServiceImpl; import java.util.Date; import java.util.List; /** @@ -34,13 +44,82 @@ * @since 2026-01-14 */ @Service @AllArgsConstructor public class GdClueEventServiceImpl extends BaseServiceImpl<GdClueEventMapper, GdClueEventEntity> implements IGdClueEventService { private final IGdTaskResultService gdTaskResultService; @Override public IPage<GdClueEventVO> selectGdClueEventPage(IPage<GdClueEventVO> page, GdClueEventVO gdClueEvent) { return page.setRecords(baseMapper.selectGdClueEventPage(page, gdClueEvent)); } @Override @Transactional(rollbackFor = Exception.class) public boolean distributeClueEvent(GdClueEventDistributeParam distributeParam) { GdTaskResultEntity taskResult = gdTaskResultService.getById(distributeParam.getResultId()); if (taskResult == null || (taskResult.getIsDeleted() != null && taskResult.getIsDeleted() != 0)) { throw new RuntimeException("成果不存在"); } if (taskResult.getDistributeStatus() != null && taskResult.getDistributeStatus() == 1) { throw new RuntimeException("成果已分发,无法再次分发"); } GdClueEventEntity clueEvent = new GdClueEventEntity(); clueEvent.setResultId(distributeParam.getResultId()); clueEvent.setWorkOrderId(distributeParam.getWorkOrderId()); clueEvent.setDisposeUser(distributeParam.getDisposeUser()); clueEvent.setDisposeDept(distributeParam.getDisposeDept()); clueEvent.setLongitude(distributeParam.getLongitude()); clueEvent.setLatitude(distributeParam.getLatitude()); clueEvent.setEventStatus(1); if (StringUtil.isBlank(distributeParam.getAreaCode())) { clueEvent.setAreaCode(taskResult.getAreaCode()); } else { clueEvent.setAreaCode(distributeParam.getAreaCode()); } clueEvent.setCreateUser(AuthUtil.getUserId()); clueEvent.setCreateDept(Long.valueOf(AuthUtil.getDeptId())); clueEvent.setCreateTime(new Date()); if (!save(clueEvent)) { throw new RuntimeException("事件分发失败"); } taskResult.setDistributeStatus(1); taskResult.setUpdateUser(AuthUtil.getUserId()); taskResult.setUpdateTime(new Date()); if (!gdTaskResultService.updateById(taskResult)) { throw new RuntimeException("成果状态更新失败"); } return true; } @Override @Transactional(rollbackFor = Exception.class) public boolean rejectClueEvent(GdClueEventRejectParam rejectParam) { GdClueEventEntity clueEvent = getById(rejectParam.getEventId()); if (clueEvent == null || (clueEvent.getIsDeleted() != null && clueEvent.getIsDeleted() != 0)) { throw new RuntimeException("事件不存在"); } if (clueEvent.getEventStatus() == null || clueEvent.getEventStatus() != 1) { throw new RuntimeException("事件当前状态无法驳回"); } clueEvent.setEventStatus(2); clueEvent.setUpdateUser(AuthUtil.getUserId()); clueEvent.setUpdateTime(new Date()); if (!updateById(clueEvent)) { throw new RuntimeException("事件驳回失败"); } GdTaskResultEntity taskResult = gdTaskResultService.getById(clueEvent.getResultId()); if (taskResult == null || (taskResult.getIsDeleted() != null && taskResult.getIsDeleted() != 0)) { throw new RuntimeException("成果不存在"); } taskResult.setDistributeStatus(2); taskResult.setUpdateUser(AuthUtil.getUserId()); taskResult.setUpdateTime(new Date()); if (!gdTaskResultService.updateById(taskResult)) { throw new RuntimeException("成果状态更新失败"); } return true; } @Override public List<GdClueEventExcel> exportGdClueEvent(Wrapper<GdClueEventEntity> queryWrapper) {