ycl-common/src/main/java/com/ycl/vo/cockpit/CockpitVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/controller/cockpit/statisticsEvents/StatisticsEventsController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EnforcementEventsVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/vo/cockpit/statisticsEvents/StatisticsEventsVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ycl-common/src/main/java/com/ycl/vo/cockpit/CockpitVO.java
New file @@ -0,0 +1,42 @@ package com.ycl.vo.cockpit; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; /** * @author Lyq * @version 1.0 * @date 2022/10/26 */ public class CockpitVO { @Data @ApiModel public static class Params1VO { @ApiModelProperty(value = "appId", example = "1") @NotBlank(message = "appId不能为空") private String appId; @ApiModelProperty(value = "appKey", example = "1") @NotBlank(message = "appKey不能为空") private String appKey; private String sign; } @Data @ApiModel public static class Params2VO { @ApiModelProperty(value = "appId", example = "1") @NotBlank(message = "appId不能为空") private String appId; @ApiModelProperty(value = "appKey", example = "1") @NotBlank(message = "appKey不能为空") private String appKey; private String sign; @ApiModelProperty(value = "开始时间,格式yyyy-MM-dd hh:mm:ss") private String beginTime; @ApiModelProperty(value = "结束时间,格式yyyy-MM-dd hh:mm:ss") private String endTime; } } ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java
New file @@ -0,0 +1,105 @@ package com.ycl.controller.cockpit.aiIot; import com.ycl.api.CommonResult; import com.ycl.vo.cockpit.CockpitVO; import com.ycl.vo.cockpit.aiIot.AIIotVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; 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 java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; /** * @author Lyq * @version 1.0 * @date 2022/10/26 */ @Api(tags = "驾驶舱数据接口-AI物联") @RestController @RequestMapping("/api/lot") public class AIIotController { @ApiOperation(value = "监测数据") @GetMapping("/detection") public CommonResult<AIIotVO.DetectionVO> detection(@Validated CockpitVO.Params1VO params) { AIIotVO.DetectionVO detectionVO = new AIIotVO.DetectionVO(); detectionVO.setVideo(121); detectionVO.setIndividual(20); detectionVO.setLampblack(154); detectionVO.setLoudspeaker(30); detectionVO.setSlagCar(33); return CommonResult.success(detectionVO); } @ApiOperation(value = "实时视频监控") @GetMapping("/video") public CommonResult<List<AIIotVO.VideoVO>> video(@Validated CockpitVO.Params1VO params) { List<AIIotVO.VideoVO> videoVOS = new ArrayList<>(); AIIotVO.VideoVO a = null; for (int i = 0; i < 4; i++) { a = new AIIotVO.VideoVO(); a.setLongitude("32.11"); a.setLatitude("106.111"); a.setName("设备一"); a.setResourceId("012"); a.setBrand("大华"); a.setModel("球机"); a.setIp("10.23.14.2"); a.setUrl("http://10.23.14.2:12001"); videoVOS.add(a); } return CommonResult.success(videoVOS); } @ApiOperation(value = "AI算法效能") @GetMapping("/efficiency") public CommonResult<List<AIIotVO.EfficiencyVO>> efficiency(@Validated CockpitVO.Params2VO params) { List<AIIotVO.EfficiencyVO> efficiencyVOS = new ArrayList<>(); AIIotVO.EfficiencyVO a = null; for (int i = 0; i < 4; i++) { a = new AIIotVO.EfficiencyVO(); a.setType("道路破损"); a.setCount(12); a.setRatio(new BigDecimal("0.63").setScale(2, RoundingMode.HALF_UP)); efficiencyVOS.add(a); } return CommonResult.success(efficiencyVOS); } @ApiOperation(value = "渣土联动") @GetMapping("/slag_car") public CommonResult<AIIotVO.SlagCarVO> slagCar(@Validated CockpitVO.Params1VO params) { AIIotVO.SlagCarVO slagCarVO = new AIIotVO.SlagCarVO(); slagCarVO.setCar(236); slagCarVO.setTeam(20); return CommonResult.success(slagCarVO); } @ApiOperation(value = "AI事件统计") @GetMapping("/event_statistics") public CommonResult<List<AIIotVO.StatisticsVO>> statistics(@Validated CockpitVO.Params2VO params) { List<AIIotVO.StatisticsVO> statisticsVOS = new ArrayList<>(); List<AIIotVO.Statistics1VO> statistics1VOS = new ArrayList<>(); AIIotVO.StatisticsVO a = null; AIIotVO.Statistics1VO a1 = null; for (int i = 0; i < 4; i++) { a = new AIIotVO.StatisticsVO(); a1 = new AIIotVO.Statistics1VO(); a.setType("道路破损"); a1.setCount(12); a1.setMonth("2022-10"); statistics1VOS.add(a1); a.setRecords(statistics1VOS); statisticsVOS.add(a); } return CommonResult.success(statisticsVOS); } } ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java
New file @@ -0,0 +1,141 @@ package com.ycl.controller.cockpit.enforcementEvents; import com.ycl.api.CommonResult; import com.ycl.vo.cockpit.CockpitVO; import com.ycl.vo.cockpit.enforcementEvents.EnforcementEventsVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; 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 java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author Lyq * @version 1.0 * @date 2022/10/26 */ @Api(tags = "驾驶舱数据-执法事件") @RestController @RequestMapping("/api/event") public class EnforcementEventsController { @ApiOperation(value = "执法事件统计") @GetMapping("/statistics") public CommonResult<Map<String, Object>> statistics(@Validated CockpitVO.Params2VO params) { Map<String, Object> map = new HashMap<>(); EnforcementEventsVO.StatisticsEventVO eventVO = new EnforcementEventsVO.StatisticsEventVO(); eventVO.setCount(10); eventVO.setRatio(new BigDecimal("0.69").setScale(2, RoundingMode.HALF_UP)); map.put("reported", eventVO); map.put("disposition", eventVO); map.put("dispositionInTime",eventVO); map.put("register", eventVO); return CommonResult.success(map); } @ApiOperation(value = "事件类型") @GetMapping("/type") public CommonResult<EnforcementEventsVO.TypeAndSourceVO> type(@Validated CockpitVO.Params2VO params) { List<EnforcementEventsVO.TypeAndSourceVO1> typeVO1s = new ArrayList<>(); EnforcementEventsVO.TypeAndSourceVO typeVO = new EnforcementEventsVO.TypeAndSourceVO(); EnforcementEventsVO.TypeAndSourceVO1 typeVO1 = null; for (int i = 0; i < 4; i++) { typeVO1 = new EnforcementEventsVO.TypeAndSourceVO1(); typeVO1.setName("团结屯"); typeVO1.setCount(20); typeVO1.setRatio(new BigDecimal("0.69").setScale(2, RoundingMode.HALF_UP)); typeVO1s.add(typeVO1); } typeVO.setAll(100); typeVO.setRecords(typeVO1s); return CommonResult.success(typeVO); } @ApiOperation(value = "视频抓拍告发点位") @GetMapping("/video") public CommonResult<List<EnforcementEventsVO.VideoAndAreaVO>> video(@Validated CockpitVO.Params2VO params) { List<EnforcementEventsVO.VideoAndAreaVO> videoVOS = new ArrayList<>(); EnforcementEventsVO.VideoAndAreaVO videoVO = null; for (int i = 0; i < 4; i++) { videoVO = new EnforcementEventsVO.VideoAndAreaVO(); videoVO.setName("团结屯"); videoVO.setCount(10); videoVOS.add(videoVO); } return CommonResult.success(videoVOS); } @ApiOperation(value = "事件来源") @GetMapping("/source") public CommonResult<EnforcementEventsVO.TypeAndSourceVO> source(@Validated CockpitVO.Params2VO params) { List<EnforcementEventsVO.TypeAndSourceVO1> typeVO1s = new ArrayList<>(); EnforcementEventsVO.TypeAndSourceVO typeVO = new EnforcementEventsVO.TypeAndSourceVO(); EnforcementEventsVO.TypeAndSourceVO1 typeVO1 = null; for (int i = 0; i < 4; i++) { typeVO1 = new EnforcementEventsVO.TypeAndSourceVO1(); typeVO1.setName("团结屯"); typeVO1.setCount(20); typeVO1.setRatio(new BigDecimal("0.69").setScale(2, RoundingMode.HALF_UP)); typeVO1s.add(typeVO1); } typeVO.setAll(100); typeVO.setRecords(typeVO1s); return CommonResult.success(typeVO); } @ApiOperation(value = "事件区域统计") @GetMapping("/area") public CommonResult<List<EnforcementEventsVO.VideoAndAreaVO>> area(@Validated CockpitVO.Params2VO params) { List<EnforcementEventsVO.VideoAndAreaVO> videoVOS = new ArrayList<>(); EnforcementEventsVO.VideoAndAreaVO videoVO = null; for (int i = 0; i < 4; i++) { videoVO = new EnforcementEventsVO.VideoAndAreaVO(); videoVO.setName("团结屯"); videoVO.setCount(10); videoVOS.add(videoVO); } return CommonResult.success(videoVOS); } @ApiOperation(value = "延误事件") @GetMapping("/delay") public CommonResult<List<EnforcementEventsVO.DelayVO>> delay(@Validated CockpitVO.Params2VO params) { List<EnforcementEventsVO.DelayVO> delayVOS = new ArrayList<>(); EnforcementEventsVO.DelayVO delayVO = null; for (int i = 0; i < 4; i++) { delayVO = new EnforcementEventsVO.DelayVO(); delayVO.setCode("201245555555"); delayVO.setDescription("团结屯"); delayVO.setDuration(30); delayVOS.add(delayVO); } return CommonResult.success(delayVOS); } @ApiOperation(value = "事件信息") @GetMapping("/info") public CommonResult<EnforcementEventsVO.InfoVO> info(@Validated CockpitVO.Params2VO params) { EnforcementEventsVO.InfoVO infoVO = new EnforcementEventsVO.InfoVO(); EnforcementEventsVO.EventVO eventVO = new EnforcementEventsVO.EventVO(); infoVO.setToday(5); infoVO.setWeek(10); infoVO.setDispatch(20); infoVO.setIdentification(20); eventVO.setDescription("事件描述"); eventVO.setAddress("事发地址"); eventVO.setAlarmTime("2022-10-15 16:12:13"); eventVO.setPoint("1号点位"); eventVO.setPicture("http://12.2.23.4/xx.png"); eventVO.setSource("AI识别"); infoVO.setEvent(eventVO); return CommonResult.success(infoVO); } } ycl-platform/src/main/java/com/ycl/controller/cockpit/statisticsEvents/StatisticsEventsController.java
New file @@ -0,0 +1,103 @@ package com.ycl.controller.cockpit.statisticsEvents; import com.ycl.api.CommonResult; import com.ycl.vo.cockpit.CockpitVO; import com.ycl.vo.cockpit.statisticsEvents.StatisticsEventsVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; 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 java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; /** * @author Lyq * @version 1.0 * @date 2022/10/26 */ @Api(tags = "驾驶舱数据接口-综合决策") @RestController @RequestMapping("/api/data") public class StatisticsEventsController { @ApiOperation(value = "执法事件") @GetMapping("/law_enforcement_event") public CommonResult<List<StatisticsEventsVO.LawEnforcementEventVO>> detection(@Validated CockpitVO.Params2VO params) { List<StatisticsEventsVO.LawEnforcementEventVO> lawEnforcementEventVOS = new ArrayList<>(); StatisticsEventsVO.LawEnforcementEventVO a = null; for (int i = 0; i < 4; i++) { a = new StatisticsEventsVO.LawEnforcementEventVO(); a.setName("团结屯"); a.setMonth("10"); a.setCityManagementCount(10); a.setEnforcementEventCount(10); lawEnforcementEventVOS.add(a); } return CommonResult.success(lawEnforcementEventVOS); } @ApiOperation(value = "物联感知") @GetMapping("/lot") public CommonResult<List<StatisticsEventsVO.LotVO>> lot(@Validated CockpitVO.Params1VO params) { List<StatisticsEventsVO.LotVO> lotVOS = new ArrayList<>(); StatisticsEventsVO.LotVO a = null; for (int i = 0; i < 4; i++) { a = new StatisticsEventsVO.LotVO(); a.setName("团结屯"); a.setType("摄像头"); a.setCount(10); lotVOS.add(a); } return CommonResult.success(lotVOS); } @ApiOperation(value = "执法队伍") @GetMapping("/team") public CommonResult<StatisticsEventsVO.TeamVO> team(@Validated CockpitVO.Params1VO params) { StatisticsEventsVO.TeamVO teamVO = new StatisticsEventsVO.TeamVO(); teamVO.setAll(30); teamVO.setAssistant(10); teamVO.setOfficer(10); teamVO.setSecondOfficer(1); teamVO.setOffline(10); teamVO.setOnline(20); return CommonResult.success(teamVO); } @ApiOperation(value = "网格员") @GetMapping("/grid_member") public CommonResult<List<StatisticsEventsVO.GridMemberVO>> gridMember(@Validated CockpitVO.Params1VO params) { List<StatisticsEventsVO.GridMemberVO> gridMemberVOS = new ArrayList<>(); StatisticsEventsVO.GridMemberVO a = null; for (int i = 0; i < 4; i++) { a = new StatisticsEventsVO.GridMemberVO(); a.setRatio(new BigDecimal("0.20").setScale(2, RoundingMode.HALF_UP)); a.setName("团结屯"); a.setCount(10); gridMemberVOS.add(a); } return CommonResult.success(gridMemberVOS); } @ApiOperation(value = "指数体征") @GetMapping("/index_signs") public CommonResult<StatisticsEventsVO.IndexSignsVO> indexSigns(@Validated CockpitVO.Params1VO params) { StatisticsEventsVO.IndexSignsVO indexSignsVO = new StatisticsEventsVO.IndexSignsVO(); indexSignsVO.setEvent(1); indexSignsVO.setGridMember(20); indexSignsVO.setCompletePercentage(new BigDecimal("0.60").setScale(2, RoundingMode.HALF_UP)); indexSignsVO.setEquipment(30); indexSignsVO.setAccuracy(new BigDecimal("0.80").setScale(2, RoundingMode.HALF_UP)); indexSignsVO.setTrigger(10); indexSignsVO.setLot(30); indexSignsVO.setLotOnline(10); indexSignsVO.setCityData(10); indexSignsVO.setEvaluationData(10); return CommonResult.success(indexSignsVO); } } ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java
New file @@ -0,0 +1,93 @@ package com.ycl.vo.cockpit.aiIot; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.List; /** * @author Lyq * @version 1.0 * @date 2022/10/26 */ @ApiModel(description = "驾驶舱数据-AI物联VO层") public class AIIotVO { @ApiModel(description = "监测数据") @Data public static class DetectionVO { @ApiModelProperty(value = "城市监控") private Integer video; @ApiModelProperty(value = "单兵设备") private Integer individual; @ApiModelProperty(value = "油烟监测") private Integer lampblack; @ApiModelProperty(value = "室外音柱") private Integer loudspeaker; @ApiModelProperty(value = "渣土车") private Integer slagCar; } @ApiModel(description = "实时监控") @Data public static class VideoVO { @ApiModelProperty(value = "点位经度") private String longitude; @ApiModelProperty(value = "点位纬度") private String latitude; @ApiModelProperty(value = "点位名称") private String name; @ApiModelProperty(value = "设备唯一编码") private String resourceId; @ApiModelProperty(value = "设备品牌") private String brand; @ApiModelProperty(value = "设备型号") private String model; @ApiModelProperty(value = "设备IP地址") private String ip; @ApiModelProperty(value = "URL地址") private String url; } @ApiModel(description = "AI算法效能") @Data public static class EfficiencyVO { @ApiModelProperty(value = "物联网设备类型") private String type; @ApiModelProperty(value = "数量") private Integer count; @ApiModelProperty(value = "比例") private BigDecimal ratio; } @ApiModel(description = "AI事件统计") @Data public static class StatisticsVO { @ApiModelProperty(value = "物联网设备类型") private String type; private List<AIIotVO.Statistics1VO> records; } @Data @ApiModel(description = "AI事件统计") public static class Statistics1VO { @ApiModelProperty(value = "月份") private String month; @ApiModelProperty(value = "数量") private Integer count; } @ApiModel(description = "渣土联动") @Data public static class SlagCarVO { @ApiModelProperty(value = "车队数") private Integer team; @ApiModelProperty(value = "车辆数") private Integer car; } } ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EnforcementEventsVO.java
New file @@ -0,0 +1,100 @@ package com.ycl.vo.cockpit.enforcementEvents; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import io.swagger.models.auth.In; import io.swagger.v3.oas.models.security.SecurityScheme; import lombok.Data; import java.math.BigDecimal; import java.util.List; /** * @author Lyq * @version 1.0 * @date 2022/10/26 */ @ApiModel(description = "驾驶舱数据-执法事件VO层") public class EnforcementEventsVO { @ApiModel(description = "执法事件统计") @Data public static class StatisticsEventVO { @ApiModelProperty(value = "数量") private Integer count; @ApiModelProperty(value = "比例") private BigDecimal ratio; } @Data @ApiModel(description = "事件类型/事件来源") public static class TypeAndSourceVO { @ApiModelProperty(value = "事件的总数") private Integer all; @ApiModelProperty(value = "事件类型的数量、各占比") private List<EnforcementEventsVO.TypeAndSourceVO1> records; } @Data @ApiModel(description = "事件类型/事件来源") public static class TypeAndSourceVO1 { @ApiModelProperty(value = "名称") private String name; @ApiModelProperty(value = "数量") private Integer count; @ApiModelProperty(value = "比例") private BigDecimal ratio; } @Data @ApiModel(description = "视频抓拍高发点位/事件区域统计") public static class VideoAndAreaVO { @ApiModelProperty(value = "点位名称") private String name; @ApiModelProperty(value = "次数") private Integer count; } @Data @ApiModel(description = "延误事件") public static class DelayVO { @ApiModelProperty(value = "事件编码(唯一)") private String code; @ApiModelProperty(value = "事件描述") private String description; @ApiModelProperty(value = "超期时间(分钟)") private Integer duration; } @Data @ApiModel(description = "事件信息") public static class InfoVO { @ApiModelProperty(value = "今日事件总数") private Integer today; @ApiModelProperty(value = "本周事件总数") private Integer week; @ApiModelProperty(value = "执法出动总数") private Integer dispatch; @ApiModelProperty(value = "AI识别的事件总数") private Integer identification; @ApiModelProperty(value = "具体事件的数据信息") private EnforcementEventsVO.EventVO event; } @Data @ApiModel(description = "具体事件的数据信息") public static class EventVO { @ApiModelProperty(value = "事件描述") private String description; @ApiModelProperty(value = "事发地点") private String address; @ApiModelProperty(value = "发生时间") private String alarmTime; @ApiModelProperty(value = "关联摄像点位") private String point; @ApiModelProperty(value = "监控画面") private String picture; @ApiModelProperty(value = "来源") private String source; } } ycl-platform/src/main/java/com/ycl/vo/cockpit/statisticsEvents/StatisticsEventsVO.java
New file @@ -0,0 +1,93 @@ package com.ycl.vo.cockpit.statisticsEvents; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; /** * @author Lyq * @version 1.0 * @date 2022/10/26 */ @ApiModel(description = "驾驶舱数据-综合决策VO层") public class StatisticsEventsVO { @ApiModel(description = "执法事件") @Data public static class LawEnforcementEventVO { @ApiModelProperty(value = "月份") private String month; @ApiModelProperty(value = "地区名字") private String name; @ApiModelProperty(value = "城管事件数") private Integer cityManagementCount; @ApiModelProperty(value = "执法案件数") private Integer enforcementEventCount; } @ApiModel(description = "物联感知") @Data public static class LotVO { @ApiModelProperty(value = "物联网设备类型") private String type; @ApiModelProperty(value = "地区名字") private String name; @ApiModelProperty(value = "数量") private Integer count; } @ApiModel(description = "执法队伍") @Data public static class TeamVO { @ApiModelProperty(value = "执法中队数量") private Integer secondOfficer; @ApiModelProperty(value = "在线人员数量") private Integer online; @ApiModelProperty(value = "离线人员数量") private Integer offline; @ApiModelProperty(value = "全部人员数量") private Integer all; @ApiModelProperty(value = "执法人员数量") private Integer officer; @ApiModelProperty(value = "协管人员数量") private Integer assistant; } @ApiModel(description = "网格员") @Data public static class GridMemberVO { @ApiModelProperty(value = "地区名称") private String name; @ApiModelProperty(value = "数量") private Integer count; @ApiModelProperty(value = "比例") private BigDecimal ratio; } @ApiModel(description = "指数体征") @Data public static class IndexSignsVO { @ApiModelProperty(value = "近30日事件数") private Integer event; @ApiModelProperty(value = "网格员总数") private Integer gridMember; @ApiModelProperty(value = "近30日事件办结率") private BigDecimal completePercentage; @ApiModelProperty(value = "AI设备数量") private Integer equipment; @ApiModelProperty(value = "AI近30日准确率") private BigDecimal accuracy; @ApiModelProperty(value = "近30日触发次数") private Integer trigger; @ApiModelProperty(value = "物联感知设备数量") private Integer lot; @ApiModelProperty(value = "近30日物联感知设备在线数量") private Integer lotOnline; @ApiModelProperty(value = "市、 区任务完成指标市平台内数据") private Integer cityData; @ApiModelProperty(value = "动态考核数据") private Integer evaluationData; } }