package com.ycl.controller.caseHandler; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ycl.annotation.LogSave; import com.ycl.api.CommonResult; import com.ycl.bo.AdminUserDetails; import com.ycl.controller.BaseController; import com.ycl.common.constant.BaseCaseStatus; import com.ycl.common.util.UtilNumber; import com.ycl.dto.caseHandler.QueryForViolationParam; import com.ycl.dto.casePool.IllegalBuildingParam; import com.ycl.dto.casePool.VideoInspectParam; import com.ycl.dto.casePool.ViolationParam; import com.ycl.entity.caseHandler.BaseCase; import com.ycl.entity.caseHandler.BaseCaseDetail; import com.ycl.entity.caseHandler.DisposeRecord; import com.ycl.entity.resources.ImageResources; import com.ycl.entity.resources.VideoResources; import com.ycl.service.caseHandler.IBaseCaseService; import com.ycl.service.caseHandler.IDisposeRecordService; import com.ycl.service.caseHandler.IIllegalBuildingService; import com.ycl.service.caseHandler.IViolationsService; import com.ycl.service.resources.IImageResourcesService; import com.ycl.service.resources.IVideoResourcesService; import com.ycl.utils.EasyExcelUtils; import com.ycl.vo.casePool.QueryForViolationVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; /** *

* 案件基本信息 前端控制器 *

* * @author wl * @since 2022-09-24 */ @RestController @RequestMapping("/base_case") @Api(tags = "案件池") @Slf4j public class BaseCaseController extends BaseController { private IBaseCaseService baseCaseService; @Autowired IViolationsService violationsService; @Autowired IIllegalBuildingService illegalBuildingService; @Autowired IDisposeRecordService iDisposeRecordService; @Autowired UtilNumber utilNumber; @Autowired IImageResourcesService iImageResourcesService; @Autowired IVideoResourcesService iVideoResourcesService; @Autowired public void setBaseCaseService(IBaseCaseService baseCaseService) { this.baseCaseService = baseCaseService; } @ApiOperation(value = "上传市平台") @PostMapping("/upload-event/{caseId}") public CommonResult uploadEvent(@PathVariable Long caseId) { String msg = baseCaseService.uploadEvent(caseId); if (StringUtils.isEmpty(msg)) { return CommonResult.success(msg); } else { return CommonResult.failed(msg); } } /** * @return com.ycl.api.CommonResult * @Description query illegal building and violation * @Param [size, current, state, type, resource] **/ /* @ApiOperation(value = "查询违规违建") @GetMapping("/query") @ApiImplicitParams({ @ApiImplicitParam(name = "state", value = "处理状态(0-待处理1-误报2-上报3-再学习/再训练4暂不处理5立案6调度7处置8核查9结案)", dataType = "Integer"), @ApiImplicitParam(name = "type", value = "1 违规,2 违建", dataType = "Integer"), @ApiImplicitParam(name = "resource", value = "1 视频,2 手动", dataType = "Integer") }) public CommonResult searchViolation(@RequestParam Integer size, @RequestParam Integer current, @RequestParam Integer state, @RequestParam(required = false) Integer type, @RequestParam(required = false) Integer resource) { if (state != null) { Page queryList; Integer violation = 1; Integer illegalBuilding = 2; if (type == violation) { queryList = baseCaseService.listViolationsPage(new Page<>().setCurrent(current).setSize(size), state, resource); } else if (type == illegalBuilding) { queryList = baseCaseService.listIllegalBuilding(new Page<>().setCurrent(current).setSize(size), state, resource); } else { return CommonResult.failed("bad request url"); } return CommonResult.success(queryList); } return CommonResult.failed("request parameter is null"); }*/ @ApiOperation(value = "查询违规违建") @GetMapping("/query") @ApiImplicitParams({ @ApiImplicitParam(name = "state", value = "处理状态(0-待处理1-误报2-上报3-再学习/再训练4暂不处理5立案6调度7处置8核查9结案)", dataType = "Integer"), @ApiImplicitParam(name = "type", value = "1 违规,2 违建", dataType = "Integer"), @ApiImplicitParam(name = "resource", value = "1 视频,2 手动", dataType = "Integer"), @ApiImplicitParam(name = "code", dataType = "String"), @ApiImplicitParam(name = "categoryBig", dataType = "String"), @ApiImplicitParam(name = "categorySmall", dataType = "String"), @ApiImplicitParam(name = "street", dataType = "Integer"), @ApiImplicitParam(name = "site", dataType = "String"), @ApiImplicitParam(name = "startTime", dataType = "String"), @ApiImplicitParam(name = "endTime", dataType = "String") }) public CommonResult searchViolation(@RequestParam Integer size, @RequestParam Integer current, @RequestParam(required = false) Integer state, @RequestParam Integer type, @RequestParam(required = false) Integer resource, @RequestParam(required = false) String code, @RequestParam(required = false) String categoryBig, @RequestParam(required = false) String categorySmall, @RequestParam(required = false) Integer street, @RequestParam(required = false) String site, @RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) Integer violationsTypeId, @RequestParam(required = false) Integer videoId) { Page queryList; if (type == 1) { queryList = baseCaseService.listViolationsPage(current, size, state, resource, code, categoryBig, categorySmall, street, site, startTime, endTime, violationsTypeId, videoId); } else if (type == 2) { queryList = baseCaseService.listIllegalBuilding(current, size, state, resource); } else { return CommonResult.failed("bad request url"); } return CommonResult.success(queryList); } /** * @return com.ycl.api.CommonResult * @Description delete illegal building or violation * @Param [id, type] **/ @ApiOperation(value = "删除违规/违建案件") @DeleteMapping("/deletion") @ApiImplicitParams({ @ApiImplicitParam(name = "type", value = "1 违规,2 违建", dataType = "Integer") }) @LogSave(operationType = "事项处置管理", contain = "删除案件") public CommonResult removeCase(@RequestParam Integer id, @RequestParam Integer type) { Integer violationType = 1; Integer illegalBuildingType = 2; if (id != null) { if (type == violationType) { return CommonResult.success(violationsService.removeById(id)); } else if (type == illegalBuildingType) { return CommonResult.success(illegalBuildingService.removeById(id)); } return CommonResult.success(baseCaseService.removeById(id)); } return CommonResult.failed("request parameter is null"); } /** * @return com.ycl.api.CommonResult * @Description delete illegal buildings or violations * @Param [ids, type] **/ @ApiOperation(value = "批处理-删除违规/违建案件") @DeleteMapping("/batch_deletion") @ApiImplicitParams({ @ApiImplicitParam(name = "type", value = "1 违规,2 违建", dataType = "Integer") }) @LogSave(operationType = "事项处置管理", contain = "批量删除案件") public CommonResult removeCases(@RequestParam List ids, @RequestParam Integer type) { Integer violationType = 1; Integer illegalBuildingType = 2; if (!ids.isEmpty()) { CommonResult.success(baseCaseService.removeBatchByIds(ids)); if (type == violationType) { return CommonResult.success(violationsService.removeBatchByIds(ids)); } else if (type == illegalBuildingType) { return CommonResult.success(illegalBuildingService.removeBatchByIds(ids)); } } return CommonResult.failed("request parameter is null"); } /** * @return com.ycl.api.CommonResult * @Description add violation * @Param [violationParam] **/ @ApiOperation(value = "添加违规案件") @PostMapping("/addition_violation") @LogSave(operationType = "事项处置管理", contain = "新增违规案件") public CommonResult addViolationCase(@RequestBody @Validated ViolationParam violationParam) { Integer violation = 1; Integer resource = 2; BaseCase baseCase = new BaseCase(); BeanUtils.copyProperties(violationParam, baseCase); baseCase.setEventSource(resource); baseCase.setCategory(violation); baseCase.setCode(utilNumber.createCaseCode()); baseCase.setState(BaseCaseStatus.PENDING); baseCase.setAlarmTime(LocalDateTime.parse(violationParam.getAlarmTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); baseCase.setCreateTime(LocalDateTime.now()); baseCaseService.save(baseCase); // JSONArray arr = JSON.parseArray(baseCase.getPic()); AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (CollUtil.isNotEmpty(violationParam.getImageUrls())) { for (int i = 0; i < violationParam.getImageUrls().size(); i++) { ImageResources imageResources = new ImageResources(); imageResources.setType("01"); imageResources.setBelongToId(baseCase.getId()); imageResources.setUrl(violationParam.getImageUrls().get(i)); imageResources.setCreateTime(LocalDateTime.now()); imageResources.setCreateUser(user.getUserId()); iImageResourcesService.save(imageResources); } } if (CollUtil.isNotEmpty(violationParam.getVideoUrls())) { VideoResources videoResources = new VideoResources(); videoResources.setCreateTime(LocalDateTime.now()); videoResources.setType("1"); videoResources.setCreateUser(user.getUserId()); videoResources.setBelongToId(baseCase.getId().intValue()); StringBuilder sb1 = new StringBuilder(""); violationParam.getImageUrls().forEach(item -> { sb1.append(",").append(item); }); videoResources.setUrl(sb1.substring(1, sb1.length() - 1)); iVideoResourcesService.save(videoResources); } return CommonResult.success(baseCaseService.saveViolationCase(violationParam, baseCase.getId())); } /** * @return com.ycl.api.CommonResult * @Description add illegal building * @Param [violationParam] **/ @ApiOperation(value = "添加违建案件") @PostMapping("/addition_illegal_building") @LogSave(operationType = "事项处置管理", contain = "新增违建案件") public CommonResult addIllegalBuildingCase(@RequestBody @Validated IllegalBuildingParam illegalBuildingParam) { Integer illegalBuilding = 2; Integer resource = 2; BaseCase baseCase = new BaseCase(); BeanUtils.copyProperties(illegalBuildingParam, baseCase); baseCase.setCategory(illegalBuilding); baseCase.setEventSource(resource); baseCase.setCode(utilNumber.createCaseCode()); baseCase.setState(BaseCaseStatus.PENDING); baseCase.setAlarmTime(LocalDateTime.parse(illegalBuildingParam.getAlarmTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); baseCase.setCreateTime(LocalDateTime.now()); baseCaseService.save(baseCase); // if (CollUtil.isNotEmpty(illegalBuildingParam.getImageUrls())) { // ImageResources imageResources = new ImageResources(); // imageResources.setCreateTime(LocalDateTime.now()); // imageResources.setType("1"); // AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); // imageResources.setCreateUser(user.getUserId()); // imageResources.setBelongToId(baseCase.getId()); // StringBuilder sb1 = new StringBuilder(""); // illegalBuildingParam.getImageUrls().forEach(item -> { // sb1.append(",").append(item); // }); // imageResources.setUrl(sb1.substring(1, sb1.length() - 1)); // imageResourcesService.save(imageResources); // } AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (CollUtil.isNotEmpty(illegalBuildingParam.getImageUrls())) { for (int i = 0; i < illegalBuildingParam.getImageUrls().size(); i++) { ImageResources imageResources = new ImageResources(); imageResources.setType("01"); imageResources.setBelongToId(baseCase.getId()); imageResources.setUrl(illegalBuildingParam.getImageUrls().get(i)); imageResources.setCreateTime(LocalDateTime.now()); imageResources.setCreateUser(user.getUserId()); iImageResourcesService.save(imageResources); } } if (CollUtil.isNotEmpty(illegalBuildingParam.getVideoUrls())) { VideoResources videoResources = new VideoResources(); videoResources.setCreateTime(LocalDateTime.now()); videoResources.setType("01"); user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); videoResources.setCreateUser(user.getUserId()); videoResources.setBelongToId(baseCase.getId().intValue()); StringBuilder sb2 = new StringBuilder(""); illegalBuildingParam.getImageUrls().forEach(item -> { sb2.append(",").append(item); }); videoResources.setUrl(sb2.substring(1, sb2.length() - 1)); iVideoResourcesService.save(videoResources); } return CommonResult.success(baseCaseService.saveIllegalBuildingCase(illegalBuildingParam, baseCase.getId())); } @ApiOperation(value = "案件详情") @GetMapping("/baseCaseDetail/{code}") @ApiImplicitParams({ @ApiImplicitParam(name = "code", value = "事件编号") }) public CommonResult baseCaseDetail(@PathVariable(value = "code") String code) { return CommonResult.success(baseCaseService.baseCaseDetail(code)); } @ApiOperation(value = "人工路径案件图片展示") @GetMapping("/hand_work_case_images") @ApiImplicitParams({ @ApiImplicitParam(name = "type", value = "01 违规,02 违建", dataType = "Integer") }) public CommonResult queryCaseImages(@RequestParam Integer id, @RequestParam Integer type) { return CommonResult.success(baseCaseService.listCaseImages(id, type)); } /** * @return com.ycl.api.CommonResult * @Description case status update * @Param [caseId, status] **/ @ApiOperation(value = "案件状态修改") @PutMapping("/case_status_update") @ApiImplicitParams({ @ApiImplicitParam(value = "处理状态(0-待处理1-误报2-上报3-再学习/再训练4暂不处理5立案6调度7处置8核查9结案)", name = "state") }) public CommonResult updateCaseStatus(@RequestParam Integer caseId, @RequestParam Integer state) { return CommonResult.success(baseCaseService .update(new LambdaUpdateWrapper() .eq(BaseCase::getId, caseId) .set(BaseCase::getState, state))); } @ApiOperation(value = "案件批在学习") @PutMapping("/batch_case_study") public CommonResult batchHandCaseByStudy(@RequestParam List ids) { ids.stream().forEach(item -> { BaseCase baseCase = new BaseCase(); baseCase.setId(item); baseCase.setState(3); baseCaseService.updateById(baseCase); }); return CommonResult.success("success"); } @ApiOperation(value = "案件批暂不处理") @PutMapping("/batch_case_Ignore") public CommonResult batchHandCaseByIgnore(@RequestParam List ids) { ids.stream().forEach(item -> { BaseCase baseCase = new BaseCase(); baseCase.setId(item); baseCase.setState(4); baseCaseService.updateById(baseCase); }); return CommonResult.success("success"); } @ApiOperation(value = "调度管理-批量删除") @DeleteMapping("/batch_case_delete") public CommonResult batchCaseDelete(@RequestParam List ids) { ids.forEach( item -> { BaseCase baseCase = baseCaseService.getOne(new LambdaQueryWrapper().eq(BaseCase::getId, item)); if (baseCase.getCategory() == 1) { violationsService.removeById(item); baseCaseService.removeById(item); } else { illegalBuildingService.removeById(item); baseCaseService.removeById(item); } } ); return CommonResult.success("success"); } /** * @return com.ycl.api.CommonResult * @Description reset case * @Param [caseId] **/ @ApiOperation(value = "暂不处置重新处置") @PutMapping("/reset") public CommonResult resetCase(@RequestParam Integer caseId) { Integer firstNum = 1; Integer state = iDisposeRecordService .list(new LambdaQueryWrapper() .eq(DisposeRecord::getBaseCaseId, caseId). orderByDesc(DisposeRecord::getCreateTime)).get(firstNum).getState(); return CommonResult.success(baseCaseService .update(new LambdaUpdateWrapper() .eq(BaseCase::getId, caseId) .set(BaseCase::getState, state))); } @ApiOperation(value = "结案") @PutMapping("/end_case") @LogSave(operationType = "事项处置管理", contain = "案件结案") public CommonResult endCase(@RequestParam Long caseId, @RequestParam String result, @RequestParam String opinion) { baseCaseService.endCase(caseId, result, opinion); return CommonResult.success("end case success~!"); } @ApiOperation(value = "查询案卷") @GetMapping("/query_case") public CommonResult> queryCase(@RequestParam Integer pageSize, @RequestParam Integer current, @RequestParam(required = false) String number, @RequestParam(required = false) Integer communityId, @RequestParam(required = false) Integer categories, @RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) Integer state, @RequestParam(required = false) Integer time, @RequestParam(required = false) Integer streetId, @RequestParam(required = false) String site) { return CommonResult.success(baseCaseService.selectPage(new Page().setCurrent(current).setSize(pageSize), number, communityId, categories, startTime, endTime, site, state, streetId, time)); } @GetMapping("/query_for_violation") @ApiOperation("违规检索") public CommonResult queryForViolation(QueryForViolationParam queryForViolationParam) { return CommonResult.success(baseCaseService.selectViolation(queryForViolationParam)); } @PostMapping("/query_for_violation/export") @ApiOperation("违规检索-导出") public void queryForViolationExport(HttpServletResponse response, QueryForViolationParam queryForViolationParam) { String sheetName = "违规数据"; EasyExcelUtils.export(response, sheetName, QueryForViolationVO.class, baseCaseService.selectViolationList(queryForViolationParam)); } @GetMapping("/video_inspection") @ApiOperation("预警研判") public CommonResult searchVideoInspection(@RequestParam Integer current, @RequestParam Integer pageSize, @RequestParam(required = false) Long gradeId, @RequestParam(required = false) Long videoId, @RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime) { return CommonResult.success(baseCaseService.selectVideoInspection(current, pageSize, gradeId, videoId, beginTime, endTime)); } @GetMapping("/video_inspection/{id}") @ApiOperation("预警研判详情") public CommonResult getVideoInspection(@PathVariable Long id) { return CommonResult.success(baseCaseService.getById(id)); } @GetMapping("/video_inspection/Count") @ApiOperation("预警研判左上角待审核案件,今日审核,今日在学习") public CommonResult searchCount() { return CommonResult.success(baseCaseService.selectCount()); } @PutMapping("/video_inspection") @ApiOperation("预警研判确定") public CommonResult searchCount(@RequestBody VideoInspectParam violationParam) { return CommonResult.success(baseCaseService.updateCase(violationParam)); } }