Browse Source

处方接口

zdm 5 years ago
parent
commit
7fa938d755

+ 22 - 0
src/main/java/com/yihu/wlyy/controller/MqSdkController.java

@ -64,6 +64,28 @@ public class MqSdkController /*extends EnvelopRestEndpoint */{
        return "";
    }
    @GetMapping(value = "/BS16017")
    @ApiOperation(value = "门诊处方信息(所有处方)")
    public String BS16017(
            @ApiParam(name = "REGISTER_SN", value = "流水号", required = true)
            @RequestParam(value = "REGISTER_SN") String REGISTER_SN,
            @ApiParam(name = "PAT_NO", value = "病人id", required = false)
            @RequestParam(value = "PAT_NO",required = false) String PAT_NO) {
        try {
            String  obj="";
            if(!testProfiles){
                obj=  entranceService.BS16017(REGISTER_SN,PAT_NO);
            }else {
                obj="[{\"PAT_NO\":\"P5616242-0  \",\"CARD_NO\":\"D40136791\",\"CARD_STAT\":\"旧卡停用\",\"OP_DATE\":\"2011-09-27 15:35:57\",\"CARD_TYPE\":\"2\",\"CARD_TYPE_NAME\":\"社保卡\",\"social_no\":\"350211198411053024\"},{\"PAT_NO\":\"P5616242-0  \",\"CARD_NO\":\"DA1872143\",\"CARD_STAT\":\"激活\",\"OP_DATE\":\"2014-07-25 08:46:40\",\"CARD_TYPE\":\"2\",\"CARD_TYPE_NAME\":\"社保卡\",\"social_no\":\"350211198411053024\"}]";
            }
            System.out.println("obj=="+obj);
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
        return "";
    }
}

+ 44 - 25
src/main/java/com/yihu/wlyy/service/EntranceService.java

@ -1,5 +1,6 @@
package com.yihu.wlyy.service;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.MqSdkUtil;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
@ -7,6 +8,7 @@ import org.json.JSONObject;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -66,37 +68,54 @@ public class EntranceService {
    }
    /**
     * 查询门诊余额
     * 门诊就诊卡列表
     * @param SOCIAL_NO 身份证号
     * @param CARD_NO 就诊卡号
     * @return
     * @throws Exception
     */
    public String BS15018(String SOCIAL_NO, String CARD_NO) throws Exception {
        JSONObject msg=new JSONObject();
        List<String> stringList=new ArrayList<>();
        //<MsgInfo><endNum>20000</endNum><Msg/><query compy="=" item="SOCIAL_NO" splice="and" value="'350211198411053024'"/><startNum>1</startNum></MsgInfo>
        msg.put("endNum","20000");
        msg.put("Msg", "" );
//        JSONArray jsonArray=new JSONArray();
        JSONObject query=new JSONObject();
        query.put("@compy","=");
        query.put("@item","SOCIAL_NO");
        query.put("@splice","and");
        query.put("@value",SOCIAL_NO);
        stringList.add(SOCIAL_NO);
//            JSONObject query1=new JSONObject();
//            query1.put("@compy","=");
//            query1.put("@item","card_no");
//            query1.put("@splice","and");
//            query1.put("@value",CARD_NO);
//            msg.put("query",query1);
//            stringList.add(CARD_NO);
//        jsonArray.put(query);
//        jsonArray.put(query1);
        msg.put("query",query);
        msg.put("startNum",1);
        String resp = MqSdkUtil.putReqAndGetResp(msg.toString(), BS15018, "2",stringList);
        String fid="BS15018";
        StringBuffer sbs= new StringBuffer();
        //AccessControl :用户、密码、服务id
        sbs.append("<ESBEntry><AccessControl><Fid>"+fid+"</Fid><Password>JKZL</Password><UserName>123456</UserName></AccessControl>");
        //MessageHeader :固定值 消费方系统编号 S60,提供方系统编号 S01
        sbs.append("<MessageHeader><Fid>"+fid+"</Fid><MsgDate>"+ DateUtil.dateToStr(new Date(),DateUtil.YYYY_MM_DD_HH_MM_SS)+"</MsgDate><SourceSysCode>S60</SourceSysCode><TargetSysCode>S01</TargetSysCode></MessageHeader>");
       //查询信息拼接
        sbs.append("<MsgInfo><endNum>20000</endNum><Msg/>");
        sbs.append("<query compy=\"=\" item=\"SOCIAL_NO\" splice=\"and\" value=\"'"+SOCIAL_NO+"'\"/>");
        sbs.append("<query compy=\"=\" item=\"card_no\" splice=\"and\" value=\"'"+CARD_NO+"'\"/>");
        //查询信息结束
        sbs.append("<startNum>1</startNum></MsgInfo></ESBEntry>");
        String resp = MqSdkUtil.putReqAndGetRespByQueryStr(sbs.toString(), fid );
        resp= MqSdkUtil.xml2jsonArrayRootRow(resp);
        return resp;
    }
    /**
     * 门诊处方信息(所有处方)
     * @param REGISTER_SN 流水号
     * @param PAT_NO 病人id
     * @return
     * @throws Exception
     */
    public String BS16017(String REGISTER_SN,String PAT_NO) throws Exception {
        String fid="BS16017";
        StringBuffer sbs= new StringBuffer();
        //AccessControl :用户、密码、服务id
        sbs.append("<ESBEntry><AccessControl><Fid>"+fid+"</Fid><Password>JKZL</Password><UserName>123456</UserName></AccessControl>");
        //MessageHeader :固定值 消费方系统编号 S60,提供方系统编号 S01
        sbs.append("<MessageHeader><Fid>"+fid+"</Fid><MsgDate>"+ DateUtil.dateToStr(new Date(),DateUtil.YYYY_MM_DD_HH_MM_SS)+"</MsgDate><SourceSysCode>S60</SourceSysCode><TargetSysCode>S01</TargetSysCode></MessageHeader>");
        //查询信息拼接
        sbs.append("<MsgInfo><endNum>20000</endNum><Msg/>");
        sbs.append("<query compy=\"=\" item=\"REGISTER_SN\" splice=\"and\" value=\"'"+REGISTER_SN+"'\"/>");
        sbs.append("<query compy=\"=\" item=\"PAT_NO\" splice=\"and\" value=\"'"+PAT_NO+"'\"/>");
        //查询信息结束
        sbs.append("<startNum>1</startNum></MsgInfo></ESBEntry>");
        String resp = MqSdkUtil.putReqAndGetRespByQueryStr(sbs.toString(), fid );
        resp= MqSdkUtil.xml2jsonArrayRootRow(resp);
        return resp;
    }

+ 69 - 15
src/main/java/com/yihu/wlyy/util/MqSdkUtil.java

@ -1,6 +1,7 @@
package com.yihu.wlyy.util;
import com.ibm.mq.MQQueueManager;
import io.swagger.models.auth.In;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
import org.apache.commons.lang3.StringUtils;
@ -110,6 +111,49 @@ public class MqSdkUtil {
        return "";
    }
    /**
     * 返回的响应数据中会包含此次请求的返回数据量和当前消息在返回消息中的顺序编号,进行判断是否还要继续获取
     * 请求值为前端拼接的xml字符串
     * @param reqMsg 请求的数据
     * @param xmlNodeName 获取请求节点
     */
    public static String putReqAndGetRespByQueryStr(String reqMsg,String xmlNodeName) throws Exception{
        QueueTools queueTools = new QueueTools();
        // 队列管理器实例
        MQQueueManager queueManager = null;
        // 消息Id
        String msgId = null;
        // 响应数据
        String respMsg = null;
        try {
            // 连接MQ,获取队列管理器实例,该实例如果不调用方法进行断开操作可长期保持连接。连接函数会自动读取配置文件标签名为“QMGR.SXX”下的配置信息进行连接。,
            queueManager = queueTools.connect(gateKeeper);
            // 发送请求消息
            msgId = queueTools.putMsg(queueManager, xmlNodeName, reqMsg);
            // 获取响应消息
            respMsg = queueTools.getMsgById(queueManager, xmlNodeName, msgId, 3);
            return respMsg;
        } catch (MQException e) {
            // 2033表示队列中没有消息
            if (e.reasonCode == 2033) {
            } else {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //断开MQ连接
            if (null != queueManager) {
                try {
                    queueManager.disconnect();
                } catch (MQException e) {
                    e.printStackTrace();
                }
            }
        }
        return "";
    }
    //=======================================================封装xml=============================================================================================
@ -196,18 +240,26 @@ public class MqSdkUtil {
    public static String xml2jsonArrayRootRow(String xmlString) throws Exception {
        XMLSerializer xmlSerializer = new XMLSerializer();
        JSON json = xmlSerializer.read(xmlString);
        Object jsonObject = ((net.sf.json.JSONObject) json).get("MsgInfo");
        if (null != jsonObject) {
            net.sf.json.JSONObject jsonObject1 = (net.sf.json.JSONObject) jsonObject;
            //获取到数组中的CDATA进行再解析
            net.sf.json.JSONArray jsonArray = (net.sf.json.JSONArray) jsonObject1.get("Msg");
            net.sf.json.JSONArray jsonArray1 = new net.sf.json.JSONArray();
            for (Object object : jsonArray) {
                JSON jsonsub = xmlSerializer.read(object.toString());
                jsonArray1.add(jsonsub);
        Object retInfo=  ((JSONObject) json).get("RetInfo");
        Object retCode= ((JSONObject) retInfo).get("RetCode");
        if(retCode.equals("1")){
            //成功
            Object jsonObject = ((net.sf.json.JSONObject) json).get("MsgInfo");
            if (null != jsonObject) {
                net.sf.json.JSONObject jsonObject1 = (net.sf.json.JSONObject) jsonObject;
                //获取到数组中的CDATA进行再解析
                net.sf.json.JSONArray jsonArray = (net.sf.json.JSONArray) jsonObject1.get("Msg");
                net.sf.json.JSONArray jsonArray1 = new net.sf.json.JSONArray();
                for (Object object : jsonArray) {
                    JSON jsonsub = xmlSerializer.read(object.toString());
                    jsonArray1.add(jsonsub);
                }
                //重新封装到json中
                ((net.sf.json.JSONObject) json).element("MsgInfo", jsonArray1);
            }
        }else if(retCode.equals("0")){
            //重新封装到json中
            ((net.sf.json.JSONObject) json).element("MsgInfo", jsonArray1);
            ((net.sf.json.JSONObject) json).element("MsgInfo",   ((JSONObject) retInfo).get("RetCon"));
        }
        return getMsgInfo(json);
    }
@ -240,12 +292,14 @@ public class MqSdkUtil {
     * @throws Exception
     */
    public static String getMsgInfo(JSON json)throws Exception{
        JSONObject jsonObjectBak=new JSONObject();
        Object jsonObject= (( net.sf.json.JSONObject) json).get("RetInfo");
        if(null!=jsonObject){
            net.sf.json.JSONObject  jsonObject1=( net.sf.json.JSONObject)jsonObject;
            if(null!=jsonObject1.get("RetCode")&&"1".equals(jsonObject1.get("RetCode").toString())){
                return (( net.sf.json.JSONObject) json).get("MsgInfo").toString();
            }
        if(null!=jsonObject) {
            net.sf.json.JSONObject jsonObject1 = (net.sf.json.JSONObject) jsonObject;
            jsonObjectBak.element("code", jsonObject1.get("RetCode").toString());
            jsonObjectBak.element("MsgInfo", ((net.sf.json.JSONObject) json).get("MsgInfo").toString());
            return jsonObjectBak.toString();
        }
        return "";
    }