package psdi.app.iface.mdm.mq;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ibm.mq.*;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.jms.listener.adapter.MessageListenerAdapter;
import psdi.app.iface.mdm.Mdm2EamHandler;

import javax.jms.Message;
import javax.jms.TextMessage;

import java.util.Iterator;
import java.util.LinkedHashSet;

import static com.ibm.mq.jms.admin.APWMB.MQ;

/**
 * 消费者
 * 消费MQ消息队列数据
 */
public class ReceiveMqMessage{
    public static void main(String[] args) {
        try {
            ReceiveMqMessage receive = new ReceiveMqMessage();
            receive.receiveMessage();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    public void receiveMessage(){
        System.out.println("sssssssssssssssssssssssssssssssssssssssssssssss");
        MQEnvironment.hostname = "192.168.106.36";
        MQEnvironment.channel="SVRCONN_GW_OUT";
        MQEnvironment.port=1418;
        MQEnvironment.CCSID=1381;
        int openOptions= MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT | MQC.MQOO_INQUIRE;
        MQQueue queue=null;
        try{
            MQQueueManager MQ= new MQQueueManager("PIP_OUT");
            String queueString="SUNDA.EAM.DATA.TEST01";//测试环境本地队列，接收队列
            queue=MQ.accessQueue(queueString, openOptions, null, null, null);
            int depth = queue.getCurrentDepth();
            System.out.println("depth="+depth);
            while(depth-- > 0){
                MQMessage msg = new MQMessage();
                MQGetMessageOptions gmo=new MQGetMessageOptions();
                queue.get(msg, gmo);
                String jsonObj= msg.readStringOfByteLength(msg.getDataLength());
                StringBuilder datas = new StringBuilder();
                while (jsonObj != null) {
                    datas.append(jsonObj);
                    break;
                }
                System.out.println("消息的内容：" + new String(jsonObj.getBytes("iso-8859-1") ,"UTF-8"));
                try{
                    String jsonObj1= new String(jsonObj.getBytes("iso-8859-1") ,"UTF-8");
                    JSONObject jsobj =  JSONObject.parseObject(jsonObj1);
                    System.out.println("jsobj_data_line="+jsobj);
  /*                  JSONObject DATAObj = jsobj.getJSONObject("RequestData").getJSONObject("Data");//返回值
                    Iterator supplyIte = DATAObj.keySet().iterator();
                    while(supplyIte.hasNext()){
                        JSONObject supplyObj = (JSONObject) supplyIte.next();
                        //供应商财务相关
                        JSONArray SUPPLIER_FINANCE_array = (JSONArray) supplyObj.get("SUPPLIER_FINANCE");
                        JSONArray SUPPLIER_FINANCE_KEY = (JSONArray) SUPPLIER_FINANCE_array.get(0);
                        JSONArray SUPPLIER_FINANCE_VAVLUE = (JSONArray) SUPPLIER_FINANCE_array.get(1);
                        //供应商交易相关
                        JSONArray SUPPLIER_TRANSACTION_array = (JSONArray) supplyObj.get("SUPPLIER_TRANSACTION");
                        JSONArray SUPPLIER_TRANSACTION_KEY = (JSONArray) SUPPLIER_FINANCE_array.get(0);
                        JSONArray SUPPLIER_TRANSACTION_VAVLUE = (JSONArray) SUPPLIER_FINANCE_array.get(1);
                        //供应商基础信息
                        JSONArray SUPPLIER_BASE_array = (JSONArray) supplyObj.get("SUPPLIER_BASE");
                        JSONArray SUPPLIER_BASE_KEY = (JSONArray) SUPPLIER_FINANCE_array.get(0);
                        JSONArray SUPPLIER_BASE_VAVLUE = (JSONArray) SUPPLIER_FINANCE_array.get(1);
                        //供应商采购信息
                        JSONArray SUPPLIER_PURCHASE_array = (JSONArray) supplyObj.get("SUPPLIER_PURCHASE");
                        JSONArray SUPPLIER_PURCHASE_KEY = (JSONArray) SUPPLIER_FINANCE_array.get(0);
                        JSONArray SUPPLIER_PURCHASE_VAVLUE = (JSONArray) SUPPLIER_FINANCE_array.get(1);
                    }*/
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if(queue !=null){
                try{
                    queue.close();
                }catch(MQException e){
                    e.printStackTrace();
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            if(queue !=null){
                try{
                    queue.close();
                }catch(MQException e){
                    e.printStackTrace();
                }
            }
        }
    }
}
