package com.ycl.controller.cockpit.enforcementEvents; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.api.CommonResult; import com.ycl.dto.trend.TrendAnalysisParam; import com.ycl.entity.caseHandler.BaseCase; import com.ycl.entity.caseHandler.Violations; import com.ycl.mapper.trend.TrendAnalysisMapper; import com.ycl.service.caseHandler.IBaseCaseService; import com.ycl.service.caseHandler.IViolationsService; import com.ycl.util.CheckApiUtil; import com.ycl.vo.cockpit.CockpitVO; import com.ycl.vo.cockpit.enforcementEvents.EnforcementEventsVO; import com.ycl.vo.cockpit.enforcementEvents.EventVO; import com.ycl.vo.cockpit.enforcementEvents.StatisticsVO; import com.ycl.vo.cockpit.enforcementEvents.VideoAndAreaVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @author Lyq * @version 1.0 * @date 2022/10/26 */ @Api(tags = "驾驶舱数据-执法事件") @RestController @RequestMapping("/api/event") public class EnforcementEventsController { @Resource private CheckApiUtil checkApiUtil; @Autowired IBaseCaseService iBaseCaseService; @Autowired IViolationsService iViolationsService; @Resource TrendAnalysisMapper trendAnalysisMapper; @ApiOperation(value = "执法事件统计") @GetMapping("/statistics") public CommonResult> statistics(@Validated CockpitVO params) { checkApiUtil.cockpit(params); return CommonResult.success(iBaseCaseService.statistics()); // StatisticsVO report = new StatisticsVO(); // report.setCount(63L); // report.setRatio(BigDecimal.valueOf(0.9141)); // report.setUp(true); // StatisticsVO dispose = new StatisticsVO(); // dispose.setCount(2743L); // dispose.setRatio(new BigDecimal(0.9946d).setScale(4, BigDecimal.ROUND_HALF_UP).abs()); // dispose.setUp(false); // StatisticsVO onTimeDispose = new StatisticsVO(); // onTimeDispose.setCount(2743L); // onTimeDispose.setRatio(BigDecimal.valueOf(1.0000)); // onTimeDispose.setUp(false); // StatisticsVO register = new StatisticsVO(); // register.setCount(2758L); // register.setRatio(BigDecimal.valueOf(0.3619)); // register.setUp(false); // Map map = new HashMap<>(); // map.put("reported", report); // map.put("disposition", dispose); // map.put("dispositionInTime", onTimeDispose); // map.put("register", register); // return CommonResult.success(map); } @ApiOperation(value = "事件类型") @GetMapping("/type") public CommonResult type(@Validated CockpitVO params) { checkApiUtil.cockpit(params); EnforcementEventsVO.TypeAndSourceVO typeAndSourceVO = new EnforcementEventsVO.TypeAndSourceVO(); Long count = iViolationsService.count(); typeAndSourceVO.setAll(iViolationsService.count()); // typeAndSourceVO.setAll(7621L); // List videoAndAreaVOS = iViolationsService.selectType(); // videoAndAreaVOS.stream().forEach(item -> item.setRatio(new BigDecimal(item.getCount() * 1.0 / count).setScale(4, BigDecimal.ROUND_HALF_UP))); // typeAndSourceVO.setRecords(videoAndAreaVOS); List videoAndAreaVOS = new ArrayList<>(); VideoAndAreaVO videoAndAreaVO = new VideoAndAreaVO(); videoAndAreaVO.setName("机动车乱停放"); videoAndAreaVO.setRatio(BigDecimal.valueOf(0.5603)); videoAndAreaVO.setCount(4269L); VideoAndAreaVO videoAndAreaVO1 = new VideoAndAreaVO(); videoAndAreaVO1.setName("非机动车乱停放"); videoAndAreaVO1.setRatio(BigDecimal.valueOf(0.2245)); videoAndAreaVO1.setCount(1711L); VideoAndAreaVO videoAndAreaVO2 = new VideoAndAreaVO(); videoAndAreaVO2.setName("占道经营"); videoAndAreaVO2.setRatio(BigDecimal.valueOf(0.0633)); videoAndAreaVO2.setCount(482L); VideoAndAreaVO videoAndAreaVO3 = new VideoAndAreaVO(); videoAndAreaVO3.setName("无照经营游商"); videoAndAreaVO3.setRatio(BigDecimal.valueOf(0.0413)); videoAndAreaVO3.setCount(315L); VideoAndAreaVO videoAndAreaVO4 = new VideoAndAreaVO(); videoAndAreaVO4.setName("店外经营"); videoAndAreaVO4.setRatio(BigDecimal.valueOf(0.0392)); videoAndAreaVO4.setCount(291L); VideoAndAreaVO videoAndAreaVO5 = new VideoAndAreaVO(); videoAndAreaVO5.setName("违规撑伞"); videoAndAreaVO5.setRatio(BigDecimal.valueOf(0.0217)); videoAndAreaVO5.setCount(165L); VideoAndAreaVO videoAndAreaVO6 = new VideoAndAreaVO(); videoAndAreaVO6.setName("其他"); videoAndAreaVO6.setRatio(BigDecimal.valueOf(0.0160)); videoAndAreaVO6.setCount(122L); VideoAndAreaVO videoAndAreaVO7 = new VideoAndAreaVO(); videoAndAreaVO7.setName("群发性事件"); videoAndAreaVO7.setRatio(BigDecimal.valueOf(0.0123)); videoAndAreaVO7.setCount(94L); videoAndAreaVOS.add(videoAndAreaVO); videoAndAreaVOS.add(videoAndAreaVO1); videoAndAreaVOS.add(videoAndAreaVO2); videoAndAreaVOS.add(videoAndAreaVO3); videoAndAreaVOS.add(videoAndAreaVO4); videoAndAreaVOS.add(videoAndAreaVO5); videoAndAreaVOS.add(videoAndAreaVO6); videoAndAreaVOS.add(videoAndAreaVO7); typeAndSourceVO.setRecords(videoAndAreaVOS); return CommonResult.success(typeAndSourceVO); } @ApiOperation(value = "视频抓拍告发点位") @GetMapping("/video") public CommonResult video(@Validated CockpitVO params) { checkApiUtil.cockpit(params); Long count = iViolationsService.count(new LambdaQueryWrapper().isNotNull(Violations::getVideoPointId)); List collect = trendAnalysisMapper.selectTrendInfo(new TrendAnalysisParam()).stream().map(item -> { VideoAndAreaVO videoAndAreaVO = new VideoAndAreaVO(); videoAndAreaVO.setName(item.getName()); videoAndAreaVO.setCount(item.getCount()); videoAndAreaVO.setRatio(new BigDecimal(item.getCount() * 1.0 / count).setScale(4, BigDecimal.ROUND_HALF_UP)); return videoAndAreaVO; }).collect(Collectors.toList()); // collect.get(0).setCount(631L); // collect.get(1).setCount(569L); // collect.get(2).setCount(550L); // collect.get(3).setCount(491L); // collect.get(4).setCount(490L); return CommonResult.success(collect); } @ApiOperation(value = "事件来源") @GetMapping("/source") public CommonResult source(@Validated CockpitVO params) { checkApiUtil.cockpit(params); Long allCount = iBaseCaseService.count(); Long alCount = iBaseCaseService.count(new LambdaQueryWrapper().eq(BaseCase::getEventSource, "1")); Long handCount = iBaseCaseService.count(new LambdaQueryWrapper().eq(BaseCase::getEventSource, "2")); List typeVO1s = new ArrayList<>(); EnforcementEventsVO.TypeAndSourceVO typeVO = new EnforcementEventsVO.TypeAndSourceVO(); VideoAndAreaVO al = new VideoAndAreaVO(); al.setName("视频巡查"); al.setRatio(new BigDecimal(alCount * 1.0 / allCount).setScale(4, BigDecimal.ROUND_HALF_UP)); al.setCount(alCount); typeVO1s.add(al); VideoAndAreaVO hand = new VideoAndAreaVO(); hand.setName("网格巡查"); hand.setRatio(new BigDecimal(handCount * 1.0 / allCount).setScale(4, BigDecimal.ROUND_HALF_UP)); hand.setCount(handCount); typeVO1s.add(hand); typeVO.setAll(allCount); typeVO.setRecords(typeVO1s); return CommonResult.success(typeVO); } @ApiOperation(value = "事件区域统计") @GetMapping("/area") public CommonResult area(@Validated CockpitVO params) { checkApiUtil.cockpit(params); return CommonResult.success(iBaseCaseService.areaCount()); // List videoAndAreaVOS = new ArrayList<>(); // VideoAndAreaVO videoAndAreaVO = new VideoAndAreaVO(); // videoAndAreaVO.setName("妙高街道"); // videoAndAreaVO.setCount(7621L); // videoAndAreaVOS.add(videoAndAreaVO); // return CommonResult.success(videoAndAreaVOS); } @ApiOperation(value = "延误事件") @GetMapping("/delay") public CommonResult delay(@Validated CockpitVO params) { checkApiUtil.cockpit(params); return CommonResult.success(iBaseCaseService.selectDelayList()); } @ApiOperation(value = "事件信息") @GetMapping("/info") public CommonResult info(@Validated CockpitVO params) { checkApiUtil.cockpit(params); EnforcementEventsVO.InfoVO infoVO = new EnforcementEventsVO.InfoVO(); infoVO.setToday(iBaseCaseService.dayCount()); // infoVO.setToday(41); infoVO.setWeek(iBaseCaseService.weekCount()); // infoVO.setWeek(41); infoVO.setDispatch(iBaseCaseService.dispatchCount()); infoVO.setIdentification(iBaseCaseService.alCount()); // infoVO.setIdentification(7621); IPage page = iBaseCaseService.selectEventList(params.getBeginTime(), params.getEndTime(),params.getPageIndex(),params.getPageSize()); infoVO.setEvent(page.getRecords()); infoVO.setTotal(page.getTotal()); return CommonResult.success(infoVO); } }