fuliqi
2023-12-16 12ada3a7e6680d5ab92901410e3cedd9b8077e56
ycl-platform/src/main/java/com/ycl/controller/caseHandler/BaseCaseController.java
@@ -1,34 +1,51 @@
package com.ycl.controller.caseHandler;
import com.alibaba.druid.util.StringUtils;
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.controller.BaseController;
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.ArrayList;
import java.util.List;
import java.util.UUID;
/**
@@ -42,6 +59,7 @@
@RestController
@RequestMapping("/base_case")
@Api(tags = "案件池")
@Slf4j
public class BaseCaseController extends BaseController {
    private IBaseCaseService baseCaseService;
@@ -58,6 +76,12 @@
    @Autowired
    UtilNumber utilNumber;
    @Autowired
    IImageResourcesService iImageResourcesService;
    @Autowired
    IVideoResourcesService iVideoResourcesService;
    @Autowired
    public void setBaseCaseService(IBaseCaseService baseCaseService) {
@@ -65,11 +89,11 @@
    }
    @ApiOperation(value = "上传市平台")
    @PostMapping("/upload-event")
    public CommonResult uploadEvent(@RequestParam Integer caseId, CommonResult<Object> success) {
    @PostMapping("/upload-event/{caseId}")
    public CommonResult uploadEvent(@PathVariable Long caseId) {
        String msg = baseCaseService.uploadEvent(caseId);
        if (StringUtils.isEmpty(msg)) {
            return success;
            return CommonResult.success(msg);
        } else {
            return CommonResult.failed(msg);
        }
@@ -80,7 +104,7 @@
     * @Description query illegal building and violation
     * @Param [size, current, state, type, resource]
     **/
    @ApiOperation(value = "查询违规违建")
/*    @ApiOperation(value = "查询违规违建")
    @GetMapping("/query")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "state", value = "处理状态(0-待处理1-误报2-上报3-再学习/再训练4暂不处理5立案6调度7处置8核查9结案)", dataType = "Integer"),
@@ -93,22 +117,79 @@
                                        @RequestParam(required = false) Integer type,
                                        @RequestParam(required = false) Integer resource) {
        if (state != null) {
            Page<Object> page = new Page<>();
            page.setCurrent(current);
            page.setSize(size);
            Page<Object> queryList;
            Integer violation = 1;
            Integer illegalBuilding = 2;
            if (type == violation) {
                queryList = baseCaseService.listViolationsPage(page, state, resource);
                queryList = baseCaseService.listViolationsPage(new Page<>().setCurrent(current).setSize(size), state, resource);
            } else if (type == illegalBuilding) {
                queryList = baseCaseService.listIllegalBuilding(page, state, resource);
                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 = "处理状态(wait(0-待处理)  handle(5立案6调度7处置8核查)  finish(1-误报2-上报3-再学习/再训练4暂不处理 9结案)", dataType = "String"),
            @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) String 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<Object> queryList;
       // 处理状态(wait(0-待处理)  handle(5立案6调度7处置8核查)  finish(1-误报2-上报3-再学习/再训练4暂不处理 9结案)
        List<Integer> stateList = new ArrayList<>();
        switch (state){
            case "wait":
                stateList.add(0);
                break;
            case  "handle":
                stateList.add(5);
                stateList.add(6);
                stateList.add(7);
                stateList.add(8);
                break;
            case "finish":
                stateList.add(1);
                stateList.add(2);
                stateList.add(3);
                stateList.add(4);
                stateList.add(9);
                break;
        }
        if (type == 1) {
            queryList = baseCaseService.listViolationsPage(current, size, stateList, resource, code, categoryBig, categorySmall, street, site, startTime, endTime, violationsTypeId, videoId);
        } else if (type == 2) {
            queryList = baseCaseService.listIllegalBuilding(current, size, stateList, resource);
        } else {
            return CommonResult.failed("bad request url");
        }
        return CommonResult.success(queryList);
    }
    /**
@@ -121,6 +202,7 @@
    @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;
@@ -145,6 +227,7 @@
    @ApiImplicitParams({
            @ApiImplicitParam(name = "type", value = "1 违规,2 违建", dataType = "Integer")
    })
    @LogSave(operationType = "事项处置管理", contain = "批量删除案件")
    public CommonResult removeCases(@RequestParam List<Long> ids, @RequestParam Integer type) {
        Integer violationType = 1;
        Integer illegalBuildingType = 2;
@@ -166,7 +249,15 @@
     **/
    @ApiOperation(value = "添加违规案件")
    @PostMapping("/addition_violation")
    @LogSave(operationType = "事项处置管理", contain = "新增违规案件")
    public CommonResult addViolationCase(@RequestBody @Validated ViolationParam violationParam) {
        log.info("---------------->参数,报警时间{},限时{},对象{}", violationParam.getAlarmTime(), violationParam.getLimitTime(), violationParam);
        if (violationParam.getAlarmTime() != null) {
            violationParam.setAlarmTime(violationParam.getAlarmTime().replace("/", "-"));
        }
        if (violationParam.getLimitTime() != null) {
            violationParam.setLimitTime(violationParam.getLimitTime().replace("/", "-"));
        }
        Integer violation = 1;
        Integer resource = 2;
        BaseCase baseCase = new BaseCase();
@@ -175,7 +266,37 @@
        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()));
    }
@@ -186,7 +307,15 @@
     **/
    @ApiOperation(value = "添加违建案件")
    @PostMapping("/addition_illegal_building")
    @LogSave(operationType = "事项处置管理", contain = "新增违建案件")
    public CommonResult addIllegalBuildingCase(@RequestBody @Validated IllegalBuildingParam illegalBuildingParam) {
        log.info("---------------->参数,报警时间{},限时{},对象{}", illegalBuildingParam.getAlarmTime(), illegalBuildingParam.getLimitTime(), illegalBuildingParam);
        if (illegalBuildingParam.getAlarmTime() != null) {
            illegalBuildingParam.setAlarmTime(illegalBuildingParam.getAlarmTime().replace("/", "-"));
        }
        if (illegalBuildingParam.getLimitTime() != null) {
            illegalBuildingParam.setLimitTime(illegalBuildingParam.getLimitTime().replace("/", "-"));
        }
        Integer illegalBuilding = 2;
        Integer resource = 2;
        BaseCase baseCase = new BaseCase();
@@ -195,7 +324,52 @@
        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().toString());
                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()));
    }
@@ -234,6 +408,50 @@
                        .set(BaseCase::getState, state)));
    }
    @ApiOperation(value = "案件批在学习")
    @PutMapping("/batch_case_study")
    public CommonResult batchHandCaseByStudy(@RequestParam List<Long> 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<Long> 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<Long> ids) {
        ids.forEach(
                item -> {
                    BaseCase baseCase = baseCaseService.getOne(new LambdaQueryWrapper<BaseCase>().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
@@ -255,8 +473,68 @@
    @ApiOperation(value = "结案")
    @PutMapping("/end_case")
    public CommonResult endCase(@RequestParam Long caseId, @RequestParam String result) {
        baseCaseService.endCase(caseId, result);
    @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<Page<BaseCase>> 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<BaseCase>().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) Integer type,
                                              @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, type));
    }
    @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));
    }
}