| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- package com.usky.controller;
- import cn.hutool.core.util.IdUtil;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.extra.qrcode.QrCodeUtil;
- import com.baomidou.mybatisplus.extension.api.R;
- import com.fasterxml.jackson.databind.JsonNode;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
- import com.usky.common.annotation.ModuleRequired;
- import com.usky.common.bo.CommonBo;
- import com.usky.common.listener.ConfigCacheListener;
- import com.usky.common.utils.QrCodeUtils;
- import com.usky.global.Common;
- import com.usky.modules.entity.global.bo.ChannelAddBo;
- import com.usky.modules.entity.global.vo.FeatureVo;
- import com.usky.modules.entity.perception.bo.PerceptionChannelListBo;
- import com.usky.modules.entity.perception.bo.PerceptionDeviceAddBo;
- import com.usky.modules.entity.perception.bo.PerceptionEventAddBo;
- import com.usky.modules.entity.perception.bo.PerceptionUpdateHeartBo;
- import com.usky.modules.entity.usbalarm.bo.ChannelUpdateBo;
- import com.usky.modules.service.PerceptionEventCodeService;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import java.io.IOException;
- import javax.servlet.http.HttpServletRequest;
- import org.apache.commons.lang.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.web.bind.annotation.ModelAttribute;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.multipart.MultipartHttpServletRequest;
- @RestController
- @Api(
- tags = {"状态感知探测控制器"}
- )
- @ModuleRequired("1009")
- public class PerceptionController {
- private static final Logger log = LoggerFactory.getLogger(PerceptionController.class);
- private final PerceptionEventCodeService service;
- private final ConfigCacheListener config;
- @ApiOperation("状态感知探测控制器对外接口")
- @PostMapping({"/agbox/device/perception", "/agbox/device/perception/**"})
- public Object patrol(@ModelAttribute CommonBo bo, HttpServletRequest servletRequest) throws IOException {
- log.info("状态感知控制器请求报文:{}", bo.toString());
- String key = bo.getKey();
- String json = bo.getJson();
- if (StrUtil.isNotBlank(this.config.getConfig("key")) && !Common.key.equals(this.config.getConfig("key")) && !key.equals(this.config.getConfig("key"))) {
- return R.failed("key错误或缺失!");
- } else if (StringUtils.isBlank(json)) {
- return R.failed("json不能为空!");
- } else {
- JsonNode jsonNode = (new ObjectMapper()).readTree(json);
- String jsonrpc = null;
- String standjsonrpc = jsonNode.path("jsonrpc").asText();
- if (StrUtil.isNotBlank(standjsonrpc)) {
- if (!standjsonrpc.equals("2.0")) {
- return R.failed("JSON-RPC 协议版本的字符串,必须准确写为'2.0'!");
- }
- jsonrpc = standjsonrpc;
- }
- String json_rpc = jsonNode.path("json-rpc").asText();
- if (StrUtil.isNotBlank(json_rpc)) {
- if (!json_rpc.equals("2.0")) {
- return R.failed("JSON-RPC 协议版本的字符串,必须准确写为'2.0'!");
- }
- jsonrpc = json_rpc;
- }
- if (StrUtil.isBlank(json_rpc) && StrUtil.isBlank(jsonrpc)) {
- return R.failed("JSON-RPC 协议版本的字符串,必须准确写为'2.0'!");
- } else {
- String method = jsonNode.path("method").asText();
- JsonNode params = jsonNode.path("params");
- MultipartHttpServletRequest request = null;
- if (servletRequest instanceof MultipartHttpServletRequest) {
- request = (MultipartHttpServletRequest)servletRequest;
- }
- if (method.equals("getEventCode")) {
- String id = jsonNode.path("id").asText();
- return this.getEventCode(jsonrpc, id);
- } else if (method.equals("addEvent")) {
- String id = jsonNode.path("id").asText();
- PerceptionEventAddBo eventAddBo = (PerceptionEventAddBo)(new ObjectMapper()).registerModule(new JavaTimeModule()).treeToValue(params, PerceptionEventAddBo.class);
- return this.addEvent(jsonrpc, eventAddBo, request, id, servletRequest);
- } else if (method.equals("updateHeart")) {
- String id = jsonNode.path("id").asText();
- PerceptionUpdateHeartBo updateHeartBo = (PerceptionUpdateHeartBo)(new ObjectMapper()).registerModule(new JavaTimeModule()).treeToValue(params, PerceptionUpdateHeartBo.class);
- return this.updateHeart(jsonrpc, updateHeartBo, servletRequest, id);
- } else if (method.equals("getDeviceList")) {
- String id = jsonNode.path("id").asText();
- return this.getDeviceList(jsonrpc, id);
- } else if (method.equals("getChannelList")) {
- String id = jsonNode.path("id").asText();
- PerceptionChannelListBo channelListBo = (PerceptionChannelListBo)(new ObjectMapper()).treeToValue(params, PerceptionChannelListBo.class);
- return this.getChannelList(jsonrpc, channelListBo, id);
- } else {
- return R.failed("方法名不存在!");
- }
- }
- }
- }
- private Object getChannelList(String jsonrpc, PerceptionChannelListBo params, String id) {
- log.info("perception通道列表");
- return this.service.getChannelList(jsonrpc, params, id);
- }
- private Object getDeviceList(String jsonrpc, String id) {
- log.info("perception设备列表");
- return this.service.getDeviceList(jsonrpc, id);
- }
- private Object updateHeart(String jsonrpc, PerceptionUpdateHeartBo bo, HttpServletRequest servletRequest, String id) {
- log.info("perception心跳");
- return this.service.updateHeart(jsonrpc, bo, servletRequest, id);
- }
- private Object addEvent(String jsonrpc, PerceptionEventAddBo bo, MultipartHttpServletRequest request, String id, HttpServletRequest servletRequest) {
- log.info("perception添加事件");
- return this.service.addEvent(jsonrpc, bo, request, id, servletRequest);
- }
- private Object getEventCode(String jsonrpc, String id) {
- return this.service.getEventCode(jsonrpc, id);
- }
- @ApiOperation("获取设备列表")
- @PostMapping({"/device/perception/getDeviceIdList"})
- public Object getDeviceIdListAdmin() {
- return this.service.getDeviceIdListAdmin();
- }
- @ApiOperation("获取事件类型列表")
- @PostMapping({"/device/perception/getEventCode"})
- public Object getEventCodeListAdmin() {
- return this.service.getEventCodeListAdmin();
- }
- @ApiOperation("获取即时事件列表")
- @PostMapping({"/device/perception/getEventListAdmin"})
- public Object getEventList(@RequestParam(value = "deviceId",required = false) String deviceId, @RequestParam(value = "eventCode",required = false) Integer eventCode, @RequestParam(value = "date",required = false) String date, @RequestParam("page") Integer page, @RequestParam("pageSize") Integer pageSize, HttpServletRequest request) {
- return this.service.getEventList(deviceId, eventCode, date, page, pageSize, request);
- }
- @ApiOperation("获取设备配置列表")
- @PostMapping({"/device/perception/getDeviceListAdmin"})
- public Object getDeviceListAdmin(@RequestParam(value = "deviceId",required = false) String deviceId, @RequestParam(value = "page",defaultValue = "1") Integer page, @RequestParam(value = "pageSize",defaultValue = "10000") Integer pageSize) {
- return this.service.getDeviceListAdmin(deviceId, page, pageSize);
- }
- @ApiOperation("新增设备配置")
- @PostMapping({"/device/perception/addDeviceAdmin"})
- public Object addDeviceAdmin(@RequestBody PerceptionDeviceAddBo bo) {
- return this.service.addDeviceAdmin(bo);
- }
- @ApiOperation("获取设备配置")
- @PostMapping({"/device/perception/getDeviceInfoAdmin"})
- public Object getDeviceInfoAdmin(@RequestParam("deviceId") String deviceId) {
- return this.service.getDeviceInfoAdmin(deviceId);
- }
- @ApiOperation("修改设备配置")
- @PostMapping({"/device/perception/updateDeviceInfoAdmin"})
- public Object updateDeviceInfoAdmin(@RequestBody PerceptionDeviceAddBo bo) {
- return this.service.updateDeviceInfoAdmin(bo);
- }
- @ApiOperation("删除设备配置")
- @PostMapping({"/device/perception/delDeviceAdmin"})
- public Object delDeviceAdmin(@RequestParam("deviceId") String deviceId) {
- return this.service.delDeviceAdmin(deviceId);
- }
- @ApiOperation("获取通道配置列表")
- @PostMapping({"/device/perception/getChannelList"})
- public Object getChannelListAdmin(@RequestParam("deviceId") String deviceId, @RequestParam(value = "page",defaultValue = "1") Integer page, @RequestParam(value = "pageSize",defaultValue = "10000") Integer pageSize) {
- return this.service.getChannelListAdmin(deviceId, page, pageSize);
- }
- @ApiOperation("新增通道配置")
- @PostMapping({"/device/perception/addChannelAdmin"})
- public Object addChannelAdmin(@RequestBody ChannelAddBo bo) {
- return this.service.addChannelAdmin(bo);
- }
- @ApiOperation("获取通道配置信息")
- @PostMapping({"/device/perception/getChannelInfoAdmin"})
- public Object getChannelInfoAdmin(@RequestParam("id") String id) {
- return this.service.getChannelInfoAdmin(id);
- }
- @ApiOperation("修改通道配置信息")
- @PostMapping({"/device/perception/updateChannelInfoAdmin"})
- public Object updateChannelInfoAdmin(@RequestBody ChannelUpdateBo bo) {
- return this.service.updateChannelInfoAdmin(bo);
- }
- @ApiOperation("删除通道配置信息")
- @PostMapping({"/device/perception/delChannelInfoAdmin"})
- public Object delChannelInfoAdmin(@RequestParam("id") String id) {
- return this.service.delChannelInfoAdmin(id);
- }
- @ApiOperation("获取设备特征编码及二维码")
- @PostMapping({"/device/perception/getFeatures"})
- public Object getFeatures() {
- String features = IdUtil.randomUUID();
- String imageToBase64 = QrCodeUtils.imageToBase64(QrCodeUtil.generate(features, 200, 200));
- return R.ok((new FeatureVo()).setFeature(features).setFeatureQrCode(imageToBase64));
- }
- @ApiOperation("获取已占用通道集合")
- @PostMapping({"/device/perception/getOccupiedChannelList"})
- public Object getOccupiedChannelList(@RequestParam(value = "deviceId",required = false) String deviceId) {
- return this.service.getOccupiedChannelList(deviceId);
- }
- @ApiOperation("通道标签列表")
- @PostMapping({"/device/perception/getChannelTagList"})
- public Object getChannelTagList() {
- return this.service.getChannelTagList();
- }
- public PerceptionController(final PerceptionEventCodeService service, final ConfigCacheListener config) {
- this.service = service;
- this.config = config;
- }
- }
|