Flexible Reflex E-Commerce

Flexible Reflex E-Commerce


Механизм получения GTIN и формирование заказа из КАИС в КМИС.



Общие сведения о сервисe.

Тип — SOAP. Авторизация — http базовая. Адрес WSDL описания
Структура и формат обмена информацией между КАИС и КМИС.


Конфигурация слушателя в системе REFLEX для получения SKU из КАИС, для получений GTIN.

    <bean class="erp.beans.ActiveMq.Listners.MqListenerQueue" init-method="runQueue" destroy-method="destroy">
        <property name="brokerURL" ref="failOver"/>
        <property name="queue" value="REFLEX-KAIS"/>
        <property name="anchor" value="NKGTIN"/>
        <property name="AClass" value="erp.orm.mark.Nsi.Soap.SoapNkgtin"/>
        <property name="router" value="false"/>
        <property name="saveOrUpdate" value="true"/>
        <property name="xmlDateFormat" value="yyyy-MM-dd HH:mm:ss"/>
        <property name="jsonDateFormat" value="yyyy-MM-dd HH:mm:ss"/>
        <property name="db">
            <value type="erp.beans.Db">snqmark</value>
        </property>
    </bean>

    Описание свойств:
  • brokerURL - брокер
  • queue - имя очереди
  • anchor - селектор
  • AClass - имя класса объекта
  • SaveOrUpdate - сохранить обект в БД
  • xmlDateFormat - формат даты XML
  • jsonDateFormat - формат даты JSON
  • db - целевая БД


Конфигурация слушателя в системе REFLEX для формирования заказа в формате XML.

    <bean class="erp.beans.ActiveMq.Listners.MqListenerQueue" init-method="runQueue" destroy-method="destroy">
        <property name="brokerURL" ref="failOver"/>
        <property name="queue" value="KMIS-ORDER"/>
        <property name="anchor" value="ORDER"/>
        <property name="AClass" value="erp.Common.OrdersProcessing.OrdersContainer"/>
        <property name="method" value="processing"/>
        <property name="saveOrUpdate" value="false"/>
        <property name="router" value="false"/>
        <property name="xmlDateFormat" value="yyyy-MM-dd HH:mm:ss"/>
        <property name="jsonDateFormat" value="yyyy-MM-dd'T'HH:mm:ssZ"/>
        <property name="db">
            <value type="erp.beans.Db">snqmark</value>
        </property>
    </bean>



CXF web сервисы для работы с Apache ActiveMQ
    Методы:
  • ProducerMessage: - Отправить сообщение в очередь
  • ConsumerQueue —получить сообщение из очереди
  • ConsumerTopic — получить топик из очереди


Формат сообщения - получение черновика GTIN
@Entity
@Table(name = "NKGTIN")
public class NsiNkgtin {
    private Long sku;
    private Date dt = new java.util.Date();
    private String gtin;
    private Date publicationDate;
    private String goodId;
    private String goodState;
    private String mes;
}

Формат сообщения - список SKU NKGtinsList
@Data
public class NKGtinsList implements Serializable {

    private Collection<Long> skuList;
}
Пример XML сообщения из КАИС в КМИС. Передача SKU для получения GTIN.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.erp/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:Producer>
         <jmsMessagetype>QUEUE</jmsMessagetype>
         <jms>REFLEX-KAIS</jms>
         <anchor>NKGTIN</anchor>
         <jmsType>XML</jmsType>
         <message>&lt;SoapNkgtin>&lt;sku>502085003&lt;/sku>&lt;/SoapNkgtin></message>
         <persistent>true</persistent>
      </ws:Producer>
   </soapenv:Body>
</soapenv:Envelope>

Сообщение можно передавать с использованием CDATA

<message><![CDATA[<SoapNkgtin><sku>502085003</sku></SoapNkgtin>]]></message>

Пример XML сообщения из КАИС в КМИС. Передача списка SKU для получения GTIN
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.erp/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:Producer>
         <jmsMessagetype>QUEUE</jmsMessagetype>
         <jms>REFLEX-KAIS</jms>
         <anchor>NKGTIN-LIST</anchor>
         <jmsType>XML</jmsType>
         <message><![CDATA[<NKGtinsList><skuList><sku>Артикул1</sku><sku>Артикул2</sku></skuList></NKGtinsList>]]></message>
         <persistent>true</persistent>
      </ws:Producer>
   </soapenv:Body>
</soapenv:Envelope>

  • Producer - метод сервиса
  • jmsMessagetype - тип очереди QUEUE
  • jms - имя очереди
  • anchor - селектор сообщения
  • jmsType - тип сообщения XML
  • message - XML сообщение
  • persistent = true

Пример xml текста ответа сервиса:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:ProducerResponse xmlns:ns2="http://ws.erp/">
         <return>true</return>
      </ns2:ProducerResponse>
   </soap:Body>
</soap:Envelope>



Формат сообщения - OrdersContainer
@Data
public class OrdersContainer  implements Serializable {

    private OrmMarkOrdersHeaders ormMarkOrdersHeaders;
}

Формат сообщения - OrmMarkOrdersHeaders - Заказ

@Entity
@Table(name = "mark_orders_headers")
public class OrmMarkOrdersHeaders {
    private Long orderHeadId;
    private Long kaisOrderId;
    private String comments;
    private Long orderStateId;
    private Date dateIns;
    private String labelTemplate;
    private Long emissionTypeId;
    private Long snProdTypeId;
    private Long kmProdTypeId;
    private Date contractDate;
    private String contractPerson;
    private String contractNumber;
    private Set<OrmMarkOrdersDetail> markOrdersDetailsByOrderHeadId;
    private MvcSupp suppByIdsupp;
}

Формат сообщения - OrmMarkOrdersDetail - Спецификация заказа
public class OrmMarkOrdersDetail {
    private Long ordersDetailId;
    private String tnved;
    private Long qty;
    private String crptOrderId;
    private Long manufactureCode;
    private OrmMarkOrdersHeaders markOrdersHeadersByOrderHeadId;
    private MvcMarkOrderStates crptOrderState;
}

Пример XML сообщения из КАИС в КМИС. Передача Заказа для получения Кодов маркировки.
<OrdersContainer>
    <ormMarkOrdersHeaders>
        <orderHeadId>ID заказа КАИС</orderHeadId>
        <kaisOrderId>ID заказа КАИС</kaisOrderId>
        <comments>SS20 ВО Л ж</comments>
        <markOrdersDetailsByOrderHeadId>
            <markOrdersDetailsByOrderHeadId>
                <ordersDetailId>ID строки заказа КАИС</ordersDetailId>
                <tnved>6202</tnved>
                <qty>30</qty>
                <manufactureCode>443455000</manufactureCode>
            </markOrdersDetailsByOrderHeadId>
            ....
            <markOrdersDetailsByOrderHeadId>
                <ordersDetailId>ID строки заказа КАИС</ordersDetailId>
                <tnved>6202</tnved>
                <qty>60</qty>
                <manufactureCode>443426000</manufactureCode>
            </markOrdersDetailsByOrderHeadId>
        </markOrdersDetailsByOrderHeadId>
        <suppByIdsupp>
            <idsupp>421001</idsupp>
            <vsuppcode>435723</vsuppcode>
            <vsupp>Beijing Shangyitong Enterprise Management Services Limited</vsupp>
            <vsuppf>Beijing Shangyitong Enterprise Management Services Limited</vsuppf>
            <inn/>
        </suppByIdsupp>
    </ormMarkOrdersHeaders>
</OrdersContainer>

Пример XML сообщения из КАИС в КМИС. Передача Заказа для получения Кодов маркировки.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.erp/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:Producer>
         <jmsMessagetype>QUEUE</jmsMessagetype>
         <jms>KMIS-ORDER</jms>
         <anchor>ORDER</anchor>
         <jmsType>XML</jmsType>
         <message><![CDATA[<OrdersContainer>
            <ormMarkOrdersHeaders>            
    <orderHeadId>78787878</orderHeadId>
    <kaisOrderId>78787878</kaisOrderId>
    <comments>SS20 ВО Л ж</comments>    
    <markOrdersDetailsByOrderHeadId>
        <markOrdersDetailsByOrderHeadId>
            <ordersDetailId>1027827000</ordersDetailId>
            <tnved>6202</tnved>
            <qty>30</qty>
            <manufactureCode>443455000</manufactureCode>
        </markOrdersDetailsByOrderHeadId>
        ...
        <markOrdersDetailsByOrderHeadId>
            <ordersDetailId>1027798000</ordersDetailId>
            <tnved>6202</tnved>
            <qty>60</qty>
            <manufactureCode>443426000</manufactureCode>
        </markOrdersDetailsByOrderHeadId>
    </markOrdersDetailsByOrderHeadId>
    <suppByIdsupp>
        <idsupp>421001</idsupp>
        <vsuppcode>435723</vsuppcode>
        <vsupp>Beijing Shangyitong Enterprise Management Services Limited</vsupp>
        <vsuppf>Beijing Shangyitong Enterprise Management Services Limited</vsuppf>
        <inn/>
    </suppByIdsupp>
</ormMarkOrdersHeaders>
            </OrdersContainer>]]></message>
         <persistent>true</persistent>
      </ws:Producer>
   </soapenv:Body>
</soapenv:Envelope>
  • Producer - метод сервиса
  • jmsMessagetype - тип очереди QUEUE
  • jms - имя очереди
  • anchor - селектор сообщения
  • jmsType - тип сообщения XML
  • message - XML сообщение
  • persistent = true

Пример xml текста ответа сервиса:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:ProducerResponse xmlns:ns2="http://ws.erp/">
         <return>true</return>
      </ns2:ProducerResponse>
   </soap:Body>
</soap:Envelope>



Формат сообщения - Response
    @Data
    static
    class Response {

        private Long orderHeadId;
        private Status status = new Status();
    }

Прочитать статус обработки заказа
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.erp/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:ConsumerQueue>
         <Queue>KMIS-ORDER</Queue>
         <anchor>ORDER-RESPONSE</anchor>
         <timeout>1000</timeout>
      </ws:ConsumerQueue>
   </soapenv:Body>
</soapenv:Envelope>

Пример xml текста ответа сервиса - получитьс статус обработки заказа:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:ConsumerQueueResponse xmlns:ns2="http://ws.erp/">
         <return>
            <anchor>ORDER-RESPONSE</anchor>
            <message><![CDATA[<Response><orderHeadId>78787878</orderHeadId><status><code>1</code><message>Заказ обработан успешно</message></status></Response>]]></message>
         </return>
      </ns2:ConsumerQueueResponse>
   </soap:Body>
</soap:Envelope>


Просмотр истории ...