فهرست منبع

his封装代码

zdm 6 سال پیش
والد
کامیت
0b0214a3ad

+ 387 - 0
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/controller/MqSdkController.java

@ -0,0 +1,387 @@
package com.yihu.jw.entrance.controller;
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
/**
 * Created by zdm on 2019/5/16.
 */
@RestController
@RequestMapping(value ="/mqsdk")
@Api(value = "his信息获取解析", description = "his信息获取解析", tags = {"hospital-entrance基础服务"})
public class MqSdkController extends EnvelopRestEndpoint {
    private boolean testProfiles=false;
    @Autowired
    private EntranceService entranceService;
    @Value("${demo.flag}")
    private boolean demoFlag;
    @GetMapping(value = "/BS15017")
    @ApiOperation(value = "固定入参:门诊余额查询")
    public ObjEnvelop BS15017(
            @ApiParam(name = "cardNo", value = "卡号", required = true)
            @RequestParam(value = "cardNo") String cardNo) {
        try {
            String obj = entranceService.qutpatientBalance(cardNo,demoFlag);
          return convertObjectEnvelopByString(obj);
        } catch (Exception e) {
            e.printStackTrace();
            return ObjEnvelop.getError("获取失败"+e.getMessage());
        }
    }
    @GetMapping(value = "/BS15018")
    @ApiOperation(value = "固定入参:门诊就诊卡列表")
    public ListEnvelop BS15018(
            @ApiParam(name = "socialNo", value = "身份证号", required = false)
            @RequestParam(value = "socialNo",required = false) String socialNo,
            @ApiParam(name = "cardNo", value = "就诊卡号", required = false)
            @RequestParam(value = "cardNo",required = false) String cardNo) throws Exception {
        String obj = entranceService.BS15018(socialNo, cardNo, demoFlag);
        return convertListEnvelopByString(obj);
    }
    @GetMapping(value = "/BS16017")
    @ApiOperation(value = "根据流水号或者居民id查找门诊处方信息(所有处方)")
    public ListEnvelop BS16017(
            @ApiParam(name = "registerSn", value = "流水号", required = false)
            @RequestParam(value = "registerSn",required = false) String registerSn,
            @ApiParam(name = "patNo", value = "病人id", required = false)
            @RequestParam(value = "patNo",required = false) String patNo,
            @ApiParam(name = "admNo", value = "住院唯一号", required = false)
            @RequestParam(value = "admNo",required = false) String admNo) throws Exception {
        String obj = entranceService.BS16017(registerSn, patNo, admNo, demoFlag);
        return convertListEnvelopInBodyRow(obj);
    }
    @GetMapping(value = "/BS30025")
    @ApiOperation(value = " 查询某个时间段的患者门诊就诊记录 V1.00")
    public ListEnvelop BS30025(@ApiParam(name = "patNo", value = "居民id")
                          @RequestParam(value = "patNo",required = false) String patNo,
                          @ApiParam(name = "admNo", value = "就诊唯一号")
                          @RequestParam(value = "admNo",required = false) String admNo,
                          @ApiParam(name = "registerSn", value = "流水号(处方号)")
                          @RequestParam(value = "registerSn",required = false) String registerSn,
                          @ApiParam(name = "patCardNo", value = "卡号")
                          @RequestParam(value = "patCardNo",required = false) String patCardNo,
                          @ApiParam(name = "socialNo", value = "身份证号")
                          @RequestParam(value = "socialNo",required = false) String socialNo) throws Exception {
        String obj = entranceService.BS30025(patNo, admNo, registerSn, patCardNo, socialNo, demoFlag);
        return convertListEnvelopInRow(obj);
    }
    @GetMapping(value = "/MS30001")
    @ApiOperation(value = "医院药品字典 V1.00--弃用")
    public ListEnvelop MS30001(@ApiParam(name = "DRUG_CODE", value = "字典编码")
                          @RequestParam(value = "DRUG_CODE", required = false) String DRUG_CODE,
                          @ApiParam(name = "startTime", value = "就诊开始时间")
                          @RequestParam(value = "startTime", required = false) String startTime) throws Exception{
            String obj=  entranceService.MS30001();
           return convertListEnvelopInBody(obj);
    }
    @GetMapping(value = "/MS53001")
    @ApiOperation(value = " 医院药品字典")
    public ListEnvelop MS53001(@ApiParam(name = "chargeCode", value = "收费码")
                          @RequestParam(value = "chargeCode", required = false) String chargeCode,
                          @ApiParam(name = "pyCode", value = "拼音码")
                          @RequestParam(value = "pyCode", required = false) String pyCode,
                          @ApiParam(name = "stockAmount", value = "库存")
                          @RequestParam(value = "stockAmount", required = false) String stockAmount,
                          @ApiParam(name = "visibleFlag", value = "可用标志(0可用1不可用)")
                          @RequestParam(value = "visibleFlag", required = false) String visibleFlag)throws Exception{
           String obj=  entranceService.MS53001(chargeCode,pyCode,stockAmount,visibleFlag,demoFlag);
           return convertListEnvelopInBodyRow(obj);
    }
    @GetMapping(value = "/BS10110")
    @ApiOperation(value = "门诊给药方式")
    public ListEnvelop BS10110(
            @ApiParam(name = "supplyCode", value = "编码")
            @RequestParam(value = "supplyCode", required = false) String supplyCode) throws Exception{
            String obj=  entranceService.BS10110(supplyCode,demoFlag);
            return convertListEnvelopInBodyRow(obj);
    }
    @PostMapping(value = "/BS10111")
    @ApiOperation(value = "  线上挂号接口")
    public ObjEnvelop BS10111(
            @ApiParam(name = "cardNo", value = "卡号")
            @RequestParam(value = "cardNo", required = false) String cardNo,
            @ApiParam(name = "doctor", value = "医生工号")
            @RequestParam(value = "doctor", required = false) String doctor,
            @ApiParam(name = "dept", value = "科室编码")
            @RequestParam(value = "dept", required = false) String dept,
            @ApiParam(name = "chargeType", value = "号别")
            @RequestParam(value = "chargeType", required = false) String chargeType,
            @ApiParam(name = "winNo", value = "分部号")
            @RequestParam(value = "winNo", required = false) String winNo) throws Exception {
        String obj = entranceService.BS10111(cardNo, doctor, dept, chargeType, winNo,demoFlag);
        return convertListEnvelopInRequest(obj);
    }
    //多个前端使用json传参
    @PostMapping(value = "/BS10112")
    @ApiOperation(value = "线上处方接口")
    public ObjEnvelop BS10112(
            @ApiParam(name = "cardNo", value = "卡号")
            @RequestParam(value = "cardNo", required = true) String cardNo,
            @ApiParam(name = "doctor", value = "医生工号")
            @RequestParam(value = "doctor", required = true) String doctor,
            @ApiParam(name = "dept", value = "科室编码")
            @RequestParam(value = "dept", required = true) String dept,
            @ApiParam(name = "chargeCode", value = "收费码")
            @RequestParam(value = "chargeCode", required = true) String chargeCode,
            @ApiParam(name = "winNo", value = "分部号")
            @RequestParam(value = "winNo", required = true) String winNo,
            @ApiParam(name = "chargeFlag", value = "项目类别")
            @RequestParam(value = "chargeFlag", required = true) String chargeFlag,
            @ApiParam(name = "quantity", value = "数量")
            @RequestParam(value = "quantity", required = true) String quantity,
            @ApiParam(name = "serialNo", value = "挂号流水号")
            @RequestParam(value = "serialNo", required = true) String serialNo,
            @ApiParam(name = "groupNo", value = "库房号")
            @RequestParam(value = "groupNo", required = true) String groupNo,
            @ApiParam(name = "serial", value = "药品序列号")
            @RequestParam(value = "serial", required = true) String serial,
            @ApiParam(name = "icdCode", value = "主诊断编码")
            @RequestParam(value = "icdCode", required = true) String icdCode,
            @ApiParam(name = "diagTwo", value = "第二诊断")
            @RequestParam(value = "diagTwo", required = false) String diagTwo,
            @ApiParam(name = "diagThree", value = "第三诊断")
            @RequestParam(value = "diagThree", required = false) String diagThree,
            @ApiParam(name = "diagFour", value = "第四诊断")
            @RequestParam(value = "diagFour", required = false) String diagFour,
            @ApiParam(name = "diagFive", value = "第五诊断")
            @RequestParam(value = "diagFive", required = false) String diagFive,
            @ApiParam(name = "dosage", value = "用量")
            @RequestParam(value = "dosage", required = false) String dosage,
            @ApiParam(name = "unit", value = "用量单位")
            @RequestParam(value = "unit", required = false) String unit,
            @ApiParam(name = "usage", value = "频率")
            @RequestParam(value = "usage", required = false) String usage,
            @ApiParam(name = "supplyCode", value = "用法")
            @RequestParam(value = "supplyCode", required = false) String supplyCode,
            @ApiParam(name = "days", value = "天数")
            @RequestParam(value = "days", required = false) String days,
            @ApiParam(name = "frequency", value = "组号")
            @RequestParam(value = "frequency", required = false) String frequency) throws Exception {
        //TODO 处理多条药品
        String obj = entranceService.BS10112(cardNo, doctor, dept, chargeCode, winNo, chargeFlag, quantity, serialNo, groupNo,
                serial, icdCode, diagTwo, diagThree, diagFour, diagFive, dosage, unit, usage, supplyCode, days, frequency,demoFlag);
        return  convertListEnvelopInRequest(obj);
    }
    @GetMapping(value = "/BS10114")
    @ApiOperation(value = "医生挂号权限查询接口 ")
    public ListEnvelop BS10114(
            @ApiParam(name = "doctorCode", value = "医生工号")
            @RequestParam(value = "doctorCode", required = false) String doctorCode,
            @ApiParam(name = "dept", value = "科室编码")
            @RequestParam(value = "dept", required = false) String dept,
            @ApiParam(name = "chargeType", value = "号别编码")
            @RequestParam(value = "chargeType", required = false) String chargeType,
            @ApiParam(name = "winNo", value = "分部号")
            @RequestParam(value = "winNo", required = false) String winNo) throws Exception {
        String obj = entranceService.BS10114(doctorCode, dept, chargeType, winNo,demoFlag);
        return convertListEnvelopInBodyRow(obj);
    }
    @GetMapping(value = "/MS02001")
    @ApiOperation(value = "科室字典  ")
    public ListEnvelop MS02001() throws Exception {
        String obj = entranceService.MS02001(demoFlag);
        //TODO 待解析 存储入库
        return convertListEnvelopInBody(obj);
    }
    @GetMapping(value = "/MS02013")
    @ApiOperation(value = "号别字典接口   ")
    public ListEnvelop MS02013() throws Exception {
        String obj = entranceService.MS02013(demoFlag);
        return convertListEnvelopInBodyRow(obj);
    }
    @GetMapping(value = "/MS30012")
    @ApiOperation(value = "医院频次")
    public ListEnvelop MS30012() throws Exception {
        String obj = entranceService.MS30012(demoFlag);
        return convertListEnvelopInBody(obj);
    }
    @GetMapping(value = "/MS25001")
    @ApiOperation(value = "Icd10诊断编码")
    public ListEnvelop MS25001( @ApiParam(name = "pyCode", value = "拼音码")
                           @RequestParam(value = "pyCode", required = false) String pyCode)throws Exception {
        String obj = entranceService.MS25001(pyCode,demoFlag);
        return convertListEnvelopInBodyRow(obj);
    }
    /**
     * 返回单个对象数据解析
     * @param obj
     * @return
     * @throws Exception
     */
    public ObjEnvelop convertObjectEnvelopByString(String obj)throws Exception{
        JSONObject jsonObject=JSONObject.fromObject(obj);
        if(null!=jsonObject&&"1".equals(jsonObject.get("code").toString())){
            JSONObject jsonObjectMgsInfo=(JSONObject)jsonObject.get("MsgInfo");
            if(null!=jsonObjectMgsInfo){
                return  ObjEnvelop.getSuccess("获取成功",jsonObjectMgsInfo.get("Msg").toString());
            }else {
                return null;
            }
        }else {
            return ObjEnvelop.getError("获取失败");
        }
    }
    /**
     * 返回对象数组数据解析
     * @param obj
     * @return
     * @throws Exception
     */
    public ListEnvelop convertListEnvelopByString(String obj)throws Exception{
        JSONObject jsonObject=JSONObject.fromObject(obj);
        if(null!=jsonObject&&"1".equals(jsonObject.get("code").toString())){
            JSONArray jsonObjectMgsInfo=(JSONArray)jsonObject.get("MsgInfo");
            if(null!=jsonObjectMgsInfo){
                return success(jsonObjectMgsInfo);
            }else {
                return null;
            }
        }else {
            return  null;
        }
    }
    /**
     * 返回对象数组数据解析
     * @param obj
     * @return
     * @throws Exception
     */
    public ListEnvelop convertListEnvelopInBodyRow(String obj)throws Exception{
        JSONObject jsonObject=JSONObject.fromObject(obj);
        JSONArray jsonArray=new JSONArray();
        if(null!=jsonObject&&"1".equals(jsonObject.get("code").toString())){
            JSONArray jsonObjectMgsInfo=(JSONArray)jsonObject.get("MsgInfo");
            if(null!=jsonObjectMgsInfo){
                for (Object object : jsonObjectMgsInfo) {
                    JSONObject jsonObjectBody=(JSONObject)object;
                    jsonObjectBody= (JSONObject)jsonObjectBody.get("body");
                  if(null!=jsonObjectBody){
                      jsonArray.add(jsonObjectBody.get("row")) ;
                  }
                }
                return success(jsonArray);
            }else {
                return null;
            }
        }else {
            return  null;
        }
    }
    /**
     * 返回对象数组数据解析
     * @param obj
     * @return
     * @throws Exception
     */
    public ListEnvelop convertListEnvelopInRow(String obj)throws Exception{
        JSONObject jsonObject=JSONObject.fromObject(obj);
        JSONArray jsonArray=new JSONArray();
        if(null!=jsonObject&&"1".equals(jsonObject.get("code").toString())){
            JSONArray jsonObjectMgsInfo=(JSONArray)jsonObject.get("MsgInfo");
            if(null!=jsonObjectMgsInfo){
                for (Object object : jsonObjectMgsInfo) {
                    JSONObject jsonObjectBody=(JSONObject)object;
                    if(null!=jsonObjectBody){
                        jsonArray.add(jsonObjectBody.get("row")) ;
                    }
                }
                return success(jsonArray);
            }else {
                return null;
            }
        }else {
            return  null;
        }
    }
    /**
     * 返回对象数组数据解析
     * @param obj
     * @return
     * @throws Exception
     */
    public ListEnvelop convertListEnvelopInBody(String obj)throws Exception{
        JSONObject jsonObject=JSONObject.fromObject(obj);
        JSONArray jsonArray=new JSONArray();
        if(null!=jsonObject&&"1".equals(jsonObject.get("code").toString())){
            JSONArray jsonObjectMgsInfo=(JSONArray)jsonObject.get("MsgInfo");
            if(null!=jsonObjectMgsInfo){
                for (Object object : jsonObjectMgsInfo) {
                    JSONObject jsonObjectBody=(JSONObject)object;
                    Object objectBody=jsonObjectBody.get("body");
                    if(objectBody instanceof JSONArray){
                        net.sf.json.JSONArray jsonArrayBody = (net.sf.json.JSONArray) jsonObjectBody.get("body");
                        for (Object objectBodySub : jsonArrayBody) {
                            jsonArray.add(objectBodySub);
                        }
                    }else {
                        jsonArray.add(jsonObjectBody) ;
                    }
                }
                return success(jsonArray);
            }else {
                return null;
            }
        }else {
            return  null;
        }
    }
    /**
     * 返回对象数组数据解析
     * @param obj
     * @return
     * @throws Exception
     */
    public ObjEnvelop convertListEnvelopInRequest(String obj)throws Exception{
        JSONObject jsonObject=JSONObject.fromObject(obj);
        if(null!=jsonObject&&"1".equals(jsonObject.get("code").toString())){
            JSONArray jsonObjectMgsInfo=(JSONArray)jsonObject.get("MsgInfo");
            if(null!=jsonObjectMgsInfo){
                for (Object object : jsonObjectMgsInfo) {
                    JSONObject jsonObjectBody = (JSONObject) object;
                    return ObjEnvelop.getSuccess("获取成功", jsonObjectBody.get("resquest"));
                }
            }
        }
        return  null;
    }
}

+ 40 - 0
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/entity/MapNamespaceContext.java

@ -0,0 +1,40 @@
package com.yihu.jw.entrance.entity;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.xml.XMLConstants;
import javax.xml.namespace.NamespaceContext;
/**
 * 命名空间映射类主要用于定义XML命名空间及其前缀的映射关系,应用XPath时会使用到
 * Created by zdm on 2019/5/17.
 */
public class MapNamespaceContext implements NamespaceContext {
    private Map<String, String> pairs;
    public MapNamespaceContext() {
        pairs = new HashMap<String, String>();
        pairs.put(XMLConstants.XML_NS_PREFIX, XMLConstants.XML_NS_URI);
        // 为HL7V3消息的命名空间定义前缀s,应用XPath时会使用到
        pairs.put("s", "urn:hl7-org:v3");
    }
    @Override
    public String getNamespaceURI(String prefix) {
        return pairs.get(prefix);
    }
    @Override
    public String getPrefix(String namespaceURI) {
        throw new UnsupportedOperationException("getPrefix");
    }
    @SuppressWarnings("rawtypes")
    @Override
    public Iterator getPrefixes(String namespaceURI) {
        throw new UnsupportedOperationException("getPrefixs");
    }
}

+ 31 - 0
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/entity/MessageEntity.java

@ -0,0 +1,31 @@
package com.yihu.jw.entrance.entity;
/**
 * Created by zdm on 2019/5/16.
 */
public class MessageEntity {
    /** 消息Id */
    private  String msgId = null;
    /** 消息内容*/
    private  String msg = null;
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public String getMsgId() {
        return msgId;
    }
    public void setMsgId(String msgId) {
        this.msgId = msgId;
    }
}

+ 202 - 0
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/util/mqsdk/MqSdkUtil.java

@ -0,0 +1,202 @@
package com.yihu.jw.entrance.util.mqsdk;
import com.ewell.mq.queue.QueueTools;
import com.ibm.mq.MQException;
import com.ibm.mq.MQQueueManager;
import net.sf.json.JSON;
import net.sf.json.JSONSerializer;
import net.sf.json.xml.XMLSerializer;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
/**
 * Created by zdm on 2019/5/16.
 */
public class MqSdkUtil {
    private static final Logger log = LoggerFactory.getLogger(MqSdkUtil.class);
    //    @Value("${ftp.pwd}")
    private static String gateKeeper="QMGR.S60";
    private QueueTools queueTools;
    private MQQueueManager queueManager;
    /**
     * 通过工具类获取队列管理器实例。connect函数的参数为配置文件中队列管理器配置标签名。该实例如果不调用方法进行断开操作可长期保持连接
     * gateKeeper
     *
     * @return
     */
    public MQQueueManager getMQQueueManager(String gateKeeper) throws Exception {
        QueueTools queueTools = new QueueTools();
        MQQueueManager queueManager = null;
        queueManager = queueTools.connect(gateKeeper);
        return queueManager;
    }
    /**
     * 发送请求消息,保存MsgId
     *
     * @return
     * @throws Exception
     */
    public String putMsg(String reqMsg, String xmlNodeName) throws Exception {
        String msgId = queueTools.putMsg(queueManager, xmlNodeName, reqMsg);
        return msgId;
    }
    /**
     * 根据发送时的MsgId提取请求(使用get-wait短期监听提取方式,可自定义超时时间)
     *
     * @param xmlNodeName
     * @param msgId
     * @return
     * @throws Exception
     */
    public String getResp(String xmlNodeName, String msgId) throws Exception {
        //响应数据
        String respMsg = queueTools.getMsgById(queueManager, xmlNodeName, msgId, 3);
        return respMsg;
    }
    /**
     * 返回的响应数据中会包含此次请求的返回数据量和当前消息在返回消息中的顺序编号,进行判断是否还要继续获取
     * @param reqMsg 请求的数据
     * @param xmlNodeName 获取请求节点
     * @param parsingWay 解析方式:1为单个对象,2为数组
     */
    public static String putReqAndGetResp(String reqMsg,String xmlNodeName,String parsingWay) 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);
            if (StringUtils.isNotBlank(respMsg)) {
                if ("1".equals(parsingWay)) {
                    respMsg = xml2jsonObject(respMsg);
                } else {
                    respMsg = xml2jsonArray(respMsg);
                }
            }
            // 此处为获取响应数据后的业务处理
            log.info("respMsg==" + respMsg);
            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=============================================================================================
    /**
     * JSON(数组)字符串<STRONG>转换</STRONG>成XML字符串
     *
     * @param jsonString
     * @return
     */
    public static String json2xml(String jsonString) {
        XMLSerializer xmlSerializer = new XMLSerializer();
        //是否展示类型
        xmlSerializer.setObjectName("ESBEntry");
        xmlSerializer.setTypeHintsEnabled(false);
//{"Fid":"BS15017","Password":[],"UserName":[]},"MessageHeader":{"Fid":"BS15017","MsgDate":"2018-11-21 13:20:40","SourceSysCode":"S60","TargetSysCode":"S01"},"MsgInfo":{"endNum":"20000","Msg":[],"query":{"@compy":"=","@item":"CARD_NO","@splice":"and","@value":"D26818411"},"startNum":"1"}}
        return xmlSerializer.write(JSONSerializer.toJSON(jsonString));
        // return xmlSerializer.write(JSONArray.fromObject(jsonString));//这种方式只支持JSON数组
    }
    //=================================================================解析xml=======================================================================
    /**
     * 将xml字符串<STRONG>转换</STRONG>为JSON字符串
     * XML中Msg为数组
     *
     * @param xmlString xml字符串
     * @return JSON<STRONG>对象</STRONG>
     */
    public static String xml2jsonArray(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(((net.sf.json.JSONObject) jsonsub).get("row"));
            }
            //重新封装到json中
            ((net.sf.json.JSONObject) json).element("MsgInfo", jsonArray1);
        }
        return getMsgInfo(json);
    }
    /**
     * 将xml字符串<STRONG>转换</STRONG>为JSON字符串
     * 其中Msg为一个对象
     *
     * @param xmlString xml字符串
     * @return JSON<STRONG>对象</STRONG>
     */
    public static String xml2jsonObject(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进行再解析
            JSON jsonsub = xmlSerializer.read((jsonObject1).get("Msg").toString());
            //重新封装到json中
            ((net.sf.json.JSONObject) jsonObject).element("Msg", jsonsub);
        }
        return getMsgInfo(json);
    }
    /**
     * 获取返参的主体信息
     * @param json
     * @return
     * @throws Exception
     */
    public static String getMsgInfo(JSON json)throws Exception{
        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();
            }
        }
        return "";
    }
}