package com.ycl.controller.cockpit.aiIot; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ycl.api.CommonResult; import com.ycl.dto.allot.EfficiencyDto; import com.ycl.entity.video.VideoPoint; import com.ycl.service.allot.IEfficiencyService; import com.ycl.service.carManage.ICarSlagcarService; import com.ycl.service.equipment.IHandheldTerminalService; import com.ycl.service.equipment.ILoudspeakerService; import com.ycl.service.video.impl.IVideoPointService; import com.ycl.util.CheckApiUtil; import com.ycl.util.VideoUtil; import com.ycl.vo.cockpit.CockpitVO; import com.ycl.vo.cockpit.aiIot.*; 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.math.RoundingMode; import java.util.ArrayList; import java.util.List; import java.util.function.Function; import java.util.function.ToIntFunction; import java.util.stream.Collectors; /** * @author Lyq * @version 1.0 * @date 2022/10/26 */ @Api(tags = "驾驶舱数据接口-AI物联") @RestController @RequestMapping("/api/lot") public class AIIotController { @Resource private CheckApiUtil checkApiUtil; @Autowired private IVideoPointService iVideoPointService; @Autowired private VideoUtil videoUtil; @Autowired IHandheldTerminalService iHandheldTerminalService; @Autowired ILoudspeakerService loudspeakerService; @Autowired ICarSlagcarService iCarSlagcarService; @Autowired IEfficiencyService iEfficiencyService; @ApiOperation(value = "监测数据") @GetMapping("/detection") public CommonResult detection(@Validated CockpitVO params) { checkApiUtil.cockpit(params); AIIotVO.DetectionVO detectionVO = new AIIotVO.DetectionVO(); detectionVO.setVideo(iVideoPointService.count()); detectionVO.setIndividual(iHandheldTerminalService.count()); detectionVO.setLampblack(iEfficiencyService.getSmokeCustomer()); detectionVO.setLoudspeaker(34L); detectionVO.setSlagCar(iCarSlagcarService.count()); return CommonResult.success(detectionVO); } @ApiOperation(value = "实时视频监控") @GetMapping("/video") public CommonResult video(@Validated CockpitVO params) { checkApiUtil.cockpit(params); /// TODO: 2022/12/13 视频点位设备为空 没数据 List list = iVideoPointService.list(new LambdaQueryWrapper() .eq(params.getStreetId() != null, VideoPoint::getStreetId, params.getStreetId()) .isNotNull(VideoPoint::getPlatResourceId).orderByDesc(VideoPoint::getId)); List vos = list.stream().map(item -> { VideoVO videoVO = new VideoVO(); videoVO.setName(item.getName()); videoVO.setBrand(item.getEquipmentBrand()); videoVO.setModel(item.getEquipmentModel()); videoVO.setIp(item.getEquipmentIp()); videoVO.setLatitude(item.getLatitude() != null ? item.getLatitude().toString() : ""); videoVO.setLongitude(item.getLongitude() != null ? item.getLongitude().toString() : ""); videoVO.setResourceId(item.getPlatResourceId()); videoVO.setCode(item.getCode()); return videoVO; }).collect(Collectors.toList()); return CommonResult.success(vos); } @ApiOperation(value = "AI算法效能") @GetMapping("/efficiency") public CommonResult efficiency(@Validated CockpitVO params) { checkApiUtil.cockpit(params); List list = iEfficiencyService.list(); List efficiencyVOS = list.stream().map((Function) efficiencyDto -> { EfficiencyVO a = new EfficiencyVO(); a.setType(efficiencyDto.getName()); a.setCount(efficiencyDto.getNumber()); a.setRatio(1.0 - ((double) efficiencyDto.getErrorNumber() / (double) efficiencyDto.getNumber())); return a; }).collect(Collectors.toList()); efficiencyVOS.add(new EfficiencyVO("店外经营", 0, 0.0)); efficiencyVOS.add(new EfficiencyVO("沿街晾晒", 0, 0.0)); efficiencyVOS.add(new EfficiencyVO("无照经营游商", 0, 0.0)); efficiencyVOS.add(new EfficiencyVO("违规撑伞", 0, 0.0)); return CommonResult.success(efficiencyVOS); } @ApiOperation(value = "渣土联动") @GetMapping("/slag_car") public CommonResult slagCar(@Validated CockpitVO params) { checkApiUtil.cockpit(params); AIIotVO.SlagCarVO slagCarVO = new AIIotVO.SlagCarVO(); slagCarVO.setCar(iCarSlagcarService.count()); slagCarVO.setTeam(0L); return CommonResult.success(slagCarVO); } @ApiOperation(value = "AI事件统计") @GetMapping("/event_statistics") public CommonResult> statistics(@Validated CockpitVO params) { checkApiUtil.cockpit(params); List list = iEfficiencyService.aiMonthList(params.getBeginTime(), params.getEndTime()); // List list = new ArrayList<>(); // AIIotStatisticsVO a1 = new AIIotStatisticsVO(); // String type1 = "非机动车乱停放"; // List records1 = new ArrayList<>(); // AIIotStatisticsRecordVO ai1 = new AIIotStatisticsRecordVO(); // ai1.setMonth("2024-01"); // ai1.setCount(210); // AIIotStatisticsRecordVO ai2 = new AIIotStatisticsRecordVO(); // ai2.setMonth("2023-12"); // ai2.setCount(183); // AIIotStatisticsRecordVO ai3 = new AIIotStatisticsRecordVO(); // ai3.setMonth("2023-11"); // ai3.setCount(157); // AIIotStatisticsRecordVO ai4 = new AIIotStatisticsRecordVO(); // ai4.setMonth("2023-10"); // ai4.setCount(231); // AIIotStatisticsRecordVO ai5 = new AIIotStatisticsRecordVO(); // ai5.setMonth("2023-09"); // ai5.setCount(256); // AIIotStatisticsRecordVO ai6 = new AIIotStatisticsRecordVO(); // ai6.setMonth("2023-08"); // ai6.setCount(311); // records1.add(ai1); // records1.add(ai2); // records1.add(ai3); // records1.add(ai4); // records1.add(ai5); // records1.add(ai6); // a1.setType(type1); // a1.setRecords(records1); // list.add(a1); // // AIIotStatisticsVO a2 = new AIIotStatisticsVO(); // String type2 = "店外经营"; // List records2 = new ArrayList<>(); // AIIotStatisticsRecordVO bi1 = new AIIotStatisticsRecordVO(); // bi1.setMonth("2024-01"); // bi1.setCount(273); // AIIotStatisticsRecordVO bi2 = new AIIotStatisticsRecordVO(); // bi2.setMonth("2023-12"); // bi2.setCount(231); // AIIotStatisticsRecordVO bi3 = new AIIotStatisticsRecordVO(); // bi3.setMonth("2023-11"); // bi3.setCount(303); // AIIotStatisticsRecordVO bi4 = new AIIotStatisticsRecordVO(); // bi4.setMonth("2023-10"); // bi4.setCount(219); // AIIotStatisticsRecordVO bi5 = new AIIotStatisticsRecordVO(); // bi5.setMonth("2023-09"); // bi5.setCount(245); // AIIotStatisticsRecordVO bi6 = new AIIotStatisticsRecordVO(); // bi6.setMonth("2023-08"); // bi6.setCount(223); // records2.add(bi1); // records2.add(bi2); // records2.add(bi3); // records2.add(bi4); // records2.add(bi5); // records2.add(bi6); // a2.setType(type2); // a2.setRecords(records2); // list.add(a2); // // AIIotStatisticsVO a3 = new AIIotStatisticsVO(); // String type3 = "无照经营游商"; // List records3 = new ArrayList<>(); // AIIotStatisticsRecordVO ci1 = new AIIotStatisticsRecordVO(); // ci1.setMonth("2024-01"); // ci1.setCount(313); // AIIotStatisticsRecordVO ci2 = new AIIotStatisticsRecordVO(); // ci2.setMonth("2023-12"); // ci2.setCount(247); // AIIotStatisticsRecordVO ci3 = new AIIotStatisticsRecordVO(); // ci3.setMonth("2023-11"); // ci3.setCount(267); // AIIotStatisticsRecordVO ci4 = new AIIotStatisticsRecordVO(); // ci4.setMonth("2023-10"); // ci4.setCount(249); // AIIotStatisticsRecordVO ci5 = new AIIotStatisticsRecordVO(); // ci5.setMonth("2023-09"); // ci5.setCount(265); // AIIotStatisticsRecordVO ci6 = new AIIotStatisticsRecordVO(); // ci6.setMonth("2023-08"); // ci6.setCount(306); // records3.add(ci1); // records3.add(ci2); // records3.add(ci3); // records3.add(ci4); // records3.add(ci5); // records3.add(ci6); // a3.setType(type3); // a3.setRecords(records3); // list.add(a3); // // // AIIotStatisticsVO a4 = new AIIotStatisticsVO(); // String type4 = "占道经营"; // List records4 = new ArrayList<>(); // AIIotStatisticsRecordVO di1 = new AIIotStatisticsRecordVO(); // di1.setMonth("2024-01"); // di1.setCount(267); // AIIotStatisticsRecordVO di2 = new AIIotStatisticsRecordVO(); // di2.setMonth("2023-12"); // di2.setCount(347); // AIIotStatisticsRecordVO di3 = new AIIotStatisticsRecordVO(); // di3.setMonth("2023-11"); // di3.setCount(354); // AIIotStatisticsRecordVO di4 = new AIIotStatisticsRecordVO(); // di4.setMonth("2023-10"); // di4.setCount(314); // AIIotStatisticsRecordVO di5 = new AIIotStatisticsRecordVO(); // di5.setMonth("2023-09"); // di5.setCount(317); // AIIotStatisticsRecordVO di6 = new AIIotStatisticsRecordVO(); // di6.setMonth("2023-08"); // di6.setCount(274); // records4.add(di1); // records4.add(di2); // records4.add(di3); // records4.add(di4); // records4.add(di5); // records4.add(di6); // a4.setType(type4); // a4.setRecords(records4); // list.add(a4); return CommonResult.success(list); } }