Commit cc63a52884ca3c56df66b74aa508803ff91c20e0

Authored by chenjialing
1 parent 420a87cf

开发----增加预置位查询接口开发

src/main/java/com/genersoft/iot/vmp/domain/req/PresetQuerySipReq.java 0 → 100644
  1 +package com.genersoft.iot.vmp.domain.req;
  2 +
  3 +import lombok.Data;
  4 +
  5 +/**
  6 + * @author chenjialing
  7 + */
  8 +@Data
  9 +public class PresetQuerySipReq {
  10 +
  11 + private String presetId;
  12 +
  13 + private String presetName;
  14 +}
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/PresetQueryResponseMessageHandler.java 0 → 100644
  1 +package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.cmd;
  2 +
  3 +import com.genersoft.iot.vmp.conf.SipConfig;
  4 +import com.genersoft.iot.vmp.conf.UserSetting;
  5 +import com.genersoft.iot.vmp.domain.req.PresetQuerySipReq;
  6 +import com.genersoft.iot.vmp.gb28181.bean.*;
  7 +import com.genersoft.iot.vmp.gb28181.event.DeviceOffLineDetector;
  8 +import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
  9 +import com.genersoft.iot.vmp.gb28181.session.CatalogDataCatch;
  10 +import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
  11 +import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
  12 +import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
  13 +import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
  14 +import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
  15 +import com.genersoft.iot.vmp.gb28181.utils.Coordtransform;
  16 +import com.genersoft.iot.vmp.gb28181.utils.NumericUtil;
  17 +import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
  18 +import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
  19 +import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
  20 +import org.dom4j.DocumentException;
  21 +import org.dom4j.Element;
  22 +import org.slf4j.Logger;
  23 +import org.slf4j.LoggerFactory;
  24 +import org.springframework.beans.factory.InitializingBean;
  25 +import org.springframework.beans.factory.annotation.Autowired;
  26 +import org.springframework.stereotype.Component;
  27 +import org.springframework.util.StringUtils;
  28 +
  29 +import javax.sip.InvalidArgumentException;
  30 +import javax.sip.RequestEvent;
  31 +import javax.sip.SipException;
  32 +import javax.sip.message.Response;
  33 +import java.text.ParseException;
  34 +import java.text.SimpleDateFormat;
  35 +import java.util.ArrayList;
  36 +import java.util.Iterator;
  37 +import java.util.List;
  38 +import java.util.UUID;
  39 +
  40 +import static com.genersoft.iot.vmp.gb28181.utils.XmlUtil.getText;
  41 +
  42 +@Component
  43 +public class PresetQueryResponseMessageHandler extends SIPRequestProcessorParent implements InitializingBean, IMessageHandler {
  44 +
  45 + private Logger logger = LoggerFactory.getLogger(PresetQueryResponseMessageHandler.class);
  46 + private final String cmdType = "PresetQuery";
  47 +
  48 + private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  49 +
  50 + @Autowired
  51 + private ResponseMessageHandler responseMessageHandler;
  52 +
  53 + @Autowired
  54 + private DeferredResultHolder deferredResultHolder;
  55 +
  56 +
  57 + @Override
  58 + public void afterPropertiesSet() throws Exception {
  59 + responseMessageHandler.addHandler(cmdType, this);
  60 + }
  61 +
  62 + @Override
  63 + public void handForDevice(RequestEvent evt, Device device, Element element) {
  64 + Element rootElement = null;
  65 + try {
  66 + rootElement = getRootElement(evt, device.getCharset());
  67 +
  68 + Element presetListNumElement = rootElement.element("PresetList");
  69 + Element snElement = rootElement.element("SN");
  70 + //该字段可能为通道或则设备的id
  71 + String deviceId = getText(rootElement, "DeviceID");
  72 + String key = DeferredResultHolder.CALLBACK_CMD_PRESETQUERY + deviceId;
  73 + if (snElement == null || presetListNumElement == null) {
  74 + responseAck(evt, Response.BAD_REQUEST, "xml error");
  75 + return;
  76 + }
  77 + int sumNum = Integer.parseInt(presetListNumElement.attributeValue("Num"));
  78 + List<PresetQuerySipReq> presetQuerySipReqList = new ArrayList<>();
  79 + if (sumNum == 0) {
  80 + // 数据无预置位信息
  81 +
  82 +
  83 + }else {
  84 + for (Iterator<Element> presetIterator = presetListNumElement.elementIterator();presetIterator.hasNext();){
  85 + Element itemListElement = presetIterator.next();
  86 + PresetQuerySipReq presetQuerySipReq = new PresetQuerySipReq();
  87 + for (Iterator<Element> itemListIterator = itemListElement.elementIterator();itemListIterator.hasNext();){
  88 + // 遍历item
  89 + Element itemOne = itemListIterator.next();
  90 + String name = itemOne.getName();
  91 + String textTrim = itemOne.getTextTrim();
  92 + if("PresetID".equals(name)){
  93 + presetQuerySipReq.setPresetId(textTrim);
  94 + }else {
  95 + presetQuerySipReq.setPresetName(textTrim);
  96 + }
  97 + }
  98 + presetQuerySipReqList.add(presetQuerySipReq);
  99 +
  100 +
  101 + }
  102 +
  103 + }
  104 + RequestMessage requestMessage = new RequestMessage();
  105 + requestMessage.setKey(key);
  106 + requestMessage.setData(presetQuerySipReqList);
  107 + deferredResultHolder.invokeAllResult(requestMessage);
  108 + responseAck(evt, Response.OK);
  109 + } catch (DocumentException e) {
  110 + e.printStackTrace();
  111 + } catch (InvalidArgumentException e) {
  112 + e.printStackTrace();
  113 + } catch (ParseException e) {
  114 + e.printStackTrace();
  115 + } catch (SipException e) {
  116 + e.printStackTrace();
  117 + }
  118 + }
  119 +
  120 + @Override
  121 + public void handForPlatform(RequestEvent evt, ParentPlatform parentPlatform, Element rootElement) {
  122 +
  123 + }
  124 +
  125 +}