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<AIIotVO.DetectionVO> 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<VideoPoint> list = iVideoPointService.list(new LambdaQueryWrapper<VideoPoint>()
|
.eq(params.getStreetId() != null, VideoPoint::getStreetId, params.getStreetId())
|
.isNotNull(VideoPoint::getPlatResourceId).orderByDesc(VideoPoint::getId));
|
|
List<VideoVO> 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<EfficiencyDto> list = iEfficiencyService.list();
|
List<EfficiencyVO> efficiencyVOS = list.stream().map((Function<EfficiencyDto, EfficiencyVO>) 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<AIIotVO.SlagCarVO> 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<List<AIIotStatisticsVO>> statistics(@Validated CockpitVO params) {
|
checkApiUtil.cockpit(params);
|
|
List<AIIotStatisticsVO> list = iEfficiencyService.aiMonthList(params.getBeginTime(), params.getEndTime());
|
AIIotStatisticsVO staticVO1 = list.get(0);
|
List<AIIotStatisticsRecordVO> records1 = staticVO1.getRecords();
|
records1.get(0).setCount(210);
|
records1.get(1).setCount(183);
|
records1.get(2).setCount(157);
|
records1.get(3).setCount(231);
|
records1.get(4).setCount(256);
|
records1.get(5).setCount(311);
|
AIIotStatisticsVO staticVO2 = list.get(1);
|
List<AIIotStatisticsRecordVO> records2 = staticVO2.getRecords();
|
records2.get(0).setCount(273);
|
records2.get(1).setCount(231);
|
records2.get(2).setCount(303);
|
records2.get(3).setCount(219);
|
records2.get(4).setCount(245);
|
records2.get(5).setCount(223);
|
AIIotStatisticsVO staticVO3 = list.get(2);
|
List<AIIotStatisticsRecordVO> records3 = staticVO3.getRecords();
|
records3.get(0).setCount(313);
|
records3.get(1).setCount(247);
|
records3.get(2).setCount(267);
|
records3.get(3).setCount(249);
|
records3.get(4).setCount(265);
|
records3.get(5).setCount(306);
|
AIIotStatisticsVO staticVO4 = list.get(3);
|
List<AIIotStatisticsRecordVO> records4 = staticVO4.getRecords();
|
records4.get(0).setCount(267);
|
records4.get(1).setCount(347);
|
records4.get(2).setCount(354);
|
records4.get(3).setCount(314);
|
records4.get(4).setCount(317);
|
records4.get(5).setCount(274);
|
return CommonResult.success(list);
|
}
|
}
|