diff --git a/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/controller/DklCameraAnalysisController.java b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/controller/DklCameraAnalysisController.java new file mode 100644 index 0000000..cd3c6bc --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/controller/DklCameraAnalysisController.java @@ -0,0 +1,217 @@ +package com.dkl.large.controller; + + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.dkl.common.core.controller.BaseController; +import com.dkl.large.domain.DklActivity; +import com.dkl.large.domain.DklCameraAnalysis; +import com.dkl.large.service.IDklCameraAnalysisService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import com.dkl.common.core.domain.AjaxResult; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.xml.ws.soap.Addressing; +import com.dkl.common.core.page.TableDataInfo; +import java.io.BufferedReader; +import java.io.IOException; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/large/cameraAnalysis") +public class DklCameraAnalysisController extends BaseController { + @Autowired + private IDklCameraAnalysisService iDklCameraAnalysisService; + + private static final Logger log = LoggerFactory.getLogger(DklCameraAnalysisController.class); + + @PostMapping("/eventRcv") + public AjaxResult export(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + // 1. 获取JSON字符串 + String jsonStr = getBodyJson(request); +// log.error(jsonStr); + // 解析主JSON + JSONObject root = JSONObject.parseObject(jsonStr); + + //获取method 方法名,用于标识报文用途 + String method = root.getString("method"); + + JSONObject params = root.getJSONObject("params"); + + //获取sendTime 事件从接收者(如设备接/入框架)发出的时间 + Date sendtime =convertISOToDateTime( params.getString("sendTime")); + + //ability 事件类别 + String ability = params.getString("ability"); + + // 解析事件数组 + JSONArray events = params.getJSONArray("events"); + for (int i = 0; i < events.size(); i++) { + JSONObject event = events.getJSONObject(i); + + // 解析基本字段 事件 Id, + String eventId = event.getString("eventId"); + + //事件源编号,物理设备是资源编/号 + String srcIndex = event.getString("srcIndex"); + + //事件源类型 + String srcType= event.getString("srcType"); + + //事件类型 + String eventType= event.getString("eventType"); + //事件状态 + String status= event.getString("status"); + //脉冲超时时间 + String timeout= event.getString("timeout"); + //事件发生时间 + String happenTime = event.getString("happenTime"); + +// String happenTimeStr = event.getString("happenTime"); +// LocalDateTime happenTime = LocalDateTime.parse(happenTimeStr, +// DateTimeFormatter.ISO_OFFSET_DATE_TIME); + + //组件标识 + String componentId = event.getString("componentId"); + // dataInfo + String datas = event.getString("data"); + + JSONObject dataInfo = JSONObject.parseObject(datas); + +// for (int j = 0; j < dataInfo.size(); j++) { + //点位纬度 + String latitude = dataInfo.getString("latitude"); + //点位经度 + String longitude = dataInfo.getString("longitude"); + //算法名称 + String baseAlgorithmName = dataInfo.getString("baseAlgorithmName"); + //行为分析算法人数统计字段 + String regionPeopleNum = dataInfo.getString("regionPeopleNum"); + //进区域人口 + String enter = dataInfo.getString("enter"); + //出区域人口 + String exit = dataInfo.getString("exit"); + // 输出解析结果 +// } + DklCameraAnalysis dklCameraAnalysis = new DklCameraAnalysis(); + dklCameraAnalysis.setMethod(method); + dklCameraAnalysis.setSendTime(sendtime); + dklCameraAnalysis.setAbility(ability); + dklCameraAnalysis.setEventId(eventId); + dklCameraAnalysis.setEventType(eventType); + dklCameraAnalysis.setSrcIndex(srcIndex); + dklCameraAnalysis.setSrcType(srcType); + dklCameraAnalysis.setStatus(status); + dklCameraAnalysis.setTimeout(timeout); + dklCameraAnalysis.setHappenTime(happenTime); + dklCameraAnalysis.setComponentId(componentId); + dklCameraAnalysis.setLatitude(latitude); + dklCameraAnalysis.setLongitude(longitude); + dklCameraAnalysis.setBaseAlgorithmName(baseAlgorithmName); + dklCameraAnalysis.setEnter(enter); + dklCameraAnalysis.setExit(exit); + dklCameraAnalysis.setRegionPeopleNum(regionPeopleNum); + iDklCameraAnalysisService.insertDklCameraAnalysis(dklCameraAnalysis); + + + } + return AjaxResult.error(root.toString()); + } + + + + private String getBodyJson(HttpServletRequest request) throws IOException { + StringBuilder sb = new StringBuilder(); + try (BufferedReader reader = request.getReader()) { + String line; + while ((line = reader.readLine()) != null) { + sb.append(line); + } + } + return sb.toString(); + } + + public static Date convertISOToDateTime(String isoTime) { + DateTimeFormatter inputFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME; + OffsetDateTime offsetDateTime = OffsetDateTime.parse(isoTime, inputFormatter); + return Date.from(offsetDateTime.toInstant()); + } + + /** + * 查询算法推送列表 + */ + @PostMapping("/cameraAnalysisCountOut") + public AjaxResult cameraAnalysisCountOut(@RequestBody DklCameraAnalysis dklCameraAnalysis) + { + + return AjaxResult.success(iDklCameraAnalysisService.getAllklCameraAnalysisCount(dklCameraAnalysis)); + } + + @PostMapping("/cameraAnalysisListOut") + public AjaxResult cameraAnalysisListOut(@RequestBody DklCameraAnalysis dklCameraAnalysis) + { + + return AjaxResult.success(iDklCameraAnalysisService.getCameraAnalysisListOut(dklCameraAnalysis)); + } + + /** + * 查询算法推送列表 + */ + @PostMapping("/cameraAnalysisCountPeopleOut") + public AjaxResult cameraAnalysisCountPeopleOut(@RequestBody DklCameraAnalysis dklCameraAnalysis) + { + + return AjaxResult.success(iDklCameraAnalysisService.getAllPeopleCount(dklCameraAnalysis)); + } + @PostMapping("/cameraAnalysisListPeopleOut") + public AjaxResult getcameraAnalysisListPeopleOut(@RequestBody DklCameraAnalysis dklCameraAnalysis) + { + + return AjaxResult.success(iDklCameraAnalysisService.getcameraAnalysisListPeopleOut(dklCameraAnalysis)); + } + + + /** + * @Author :rq + * @Description :查询热力图 + * @Date :2025/08/21 14:13 + * @Param :[] + * @return :com.dkl.common.core.domain.AjaxResult + **/ + @GetMapping("/thermodynamicDiagram") + public AjaxResult thermodynamicDiagram(DklCameraAnalysis dklCameraAnalysis) + { + List dklCameraAnalysisList = iDklCameraAnalysisService.selectDklCameraAnalysisList(dklCameraAnalysis); + return AjaxResult.success(dklCameraAnalysisList); + } + + /** + * 查询算法推送列表 + */ + @GetMapping("/list") + public TableDataInfo list(DklCameraAnalysis dklCameraAnalysis) + { + startPage(); + List list = iDklCameraAnalysisService.selectDklCameraAnalysisList(dklCameraAnalysis); + return getDataTable(list); + } + + /** + * 获取算法推送详细信息 + */ + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Integer id) + { + return success(iDklCameraAnalysisService.selectDklCameraAnalysisById(id)); + } +}