Browse Source

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into dev

Trick 5 years ago
parent
commit
683ae6b09a

+ 10 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java

@ -239,6 +239,8 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    private String register;
    private String phone;
    @Column(name = "register")
    public String getRegister() {
        return register;
@ -624,4 +626,12 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
}

+ 3 - 2
common/common-entity/src/main/java/com/yihu/jw/entity/ylzinfo/OauthYlzConfigDO.java

@ -20,11 +20,12 @@ public class OauthYlzConfigDO extends UuidIdentityEntity {
    private String signType;
    private String encType;
    private String url;
    @Column(name = "private_key")
//    @Column(name = "private_key")
    private String privateKey;
    @Column(name = "ehc_public_key")
//    @Column(name = "ehc_public_key")
    private String ehcPublicKey;
    public String getAppId() {
        return appId;
    }

+ 1 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java

@ -721,6 +721,7 @@ public class BaseRequestMapping {
    public static class ThirdInterface extends Basic{
        public static final String PREFIX  = "/thirdInterface";
        public static final String selectHealthIdCard  = "/selectHealthIdCard";
        public static final String queryHealthIdCard  = "/queryHealthIdCard";
    }
}

+ 43 - 51
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/MultipleCode/MultipleCoderController.java

@ -2,6 +2,7 @@ package com.yihu.jw.hospital.endpoint.MultipleCode;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.wx.BasePatientWechatDo;
import com.yihu.jw.entity.hospital.httplog.WlyyHttpLogDO;
import com.yihu.jw.hospital.httplog.dao.WlyyHttpLogDao;
import com.yihu.jw.hospital.service.MultipleCode.MultipleCodeService;
@ -46,9 +47,8 @@ public class MultipleCoderController extends EnvelopRestEndpoint {
    @Autowired
    private WlyyHttpLogDao wlyyHttpLogDao;
    @Autowired
    private BasePatientWechatDao basePatientWechatDao;
    /**
     *  多码融合-获取健康卡
@ -68,58 +68,50 @@ public class MultipleCoderController extends EnvelopRestEndpoint {
            WlyyHttpLogDO logDO = new WlyyHttpLogDO();
            MixEnvelop envelop = new MixEnvelop();
            BasePatientDO patientDO = basePatientDao.findById(patientId);
            if (patientDO!=null&&patientDO.getRegister().equalsIgnoreCase("0")){
                logDO.setCode("ehc.ehealthcard.register");
                logDO.setName("注册多码融合信息");
                logDO.setPatient(patientId);
                logDO.setRequest("patientId="+patientId+"&wechatId="+wechatId);
                wlyyHttpLogDao.save(logDO);
                envelop = multipleCodeService.mcfRegister(patientDO,wechatId);
                Object obj = envelop.getObj();
                String response = JSONObject.toJSONString(obj);
                logDO.setResponse(response);
                logDO.setStatus("0");
                logDO.setCreateTime(DateUtil.getNowDate());
                wlyyHttpLogDao.save(logDO);
            }else {
                WlyyHttpLogDO queryInfoLogDO = new WlyyHttpLogDO();
                queryInfoLogDO.setCode("ehc.ehealthcard.queryInfo");
                queryInfoLogDO.setName("根据身份证查询多码融合信息");
                queryInfoLogDO.setPatient(patientId);
                queryInfoLogDO.setRequest("idType="+"01"+"&Idcard="+patientDO.getIdcard());//01代表证件类型为身份证
                wlyyHttpLogDao.save(queryInfoLogDO);
                TransResponse re = multipleCodeService.mcfQueryInfo("01", patientDO.getIdcard());
                String code = re.getRet_code();
                if (code.equals("0000")){
                    String ehealthCardId = JSONObject.parseObject(re.getBiz_content()).getString("ehealth_card_id").toString();
                    queryInfoLogDO.setResponse("ehealthCardId="+ehealthCardId);
                    queryInfoLogDO.setStatus("0");
                    queryInfoLogDO.setCreateTime(DateUtil.getNowDate());
                    wlyyHttpLogDao.save(queryInfoLogDO);
                    logDO.setCode("ehc.ehealthcard.getCodeUrl");
                    logDO.setName("获取多码融合展示码URL");
                    logDO.setPatient(patientId);
                    logDO.setRequest("ehealthCardId="+ehealthCardId);
                    wlyyHttpLogDao.save(logDO);
                    envelop = multipleCodeService.mcfGetCodeUrl(ehealthCardId);
                    Object obj = envelop.getObj();
                    String response = JSONObject.toJSONString(obj);
                    logDO.setResponse(response);
                    logDO.setStatus("0");
                    logDO.setCreateTime(DateUtil.getNowDate());
                    wlyyHttpLogDao.save(logDO);
                } else {
                    return MixEnvelop.getError(JSONObject.parseObject(re.getRet_msg()).toString());
                }
            logDO.setCode("ehc.ehealthcard.queryInfo");
            logDO.setName("查询多码融合信息");
            logDO.setPatient(patientId);
            String patient = JSONObject.toJSONString(patientDO);
            logDO.setRequest("patientDO="+patient);
            wlyyHttpLogDao.save(logDO);
            String result = multipleCodeService.mcfQueryInfo(patientDO);
            logDO.setResponse(result);
            logDO.setStatus("0");
            logDO.setCreateTime(DateUtil.getNowDate());
            wlyyHttpLogDao.save(logDO);
            if (patientDO!=null&&patientDO.getRegister().equalsIgnoreCase("0")&&result==null){
                //用户表没查询到注册信息
                    BasePatientWechatDo basePatientWechatDo = basePatientWechatDao.findByWechatIdAndPatientId(wechatId, patientId).get(0);
                    if (basePatientWechatDo.getOpenid()!=null){
//                    有openid 去注册
                        logDO.setCode("ehc.ehealthcard.register");
                        logDO.setName("注册多码融合信息");
                        logDO.setPatient(patientId);
                        logDO.setRequest("patientId="+patientId+"&wechatId="+wechatId);
                        wlyyHttpLogDao.save(logDO);
                        envelop = multipleCodeService.mcfRegister(patientDO,wechatId);
                        Object obj = envelop.getObj();
                        String response = JSONObject.toJSONString(obj);
                        logDO.setResponse(response);
                        logDO.setStatus("0");
                        logDO.setCreateTime(DateUtil.getNowDate());
                        wlyyHttpLogDao.save(logDO);
                        return MixEnvelop.getSuccess("获取注册链接成功",response);
                    } else {
//                    无openID
                        return  MixEnvelop.getError("获取注册链接失败",-1);
                    }
            } else {
//                注册成功 返回空
                return null;
            }
            return envelop;
        } catch (Exception e){
            e.printStackTrace();
            return MixEnvelop.getError(e.getMessage());
        }
    }
}

+ 152 - 35
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/service/MultipleCode/MultipleCodeService.java

@ -3,13 +3,17 @@ package com.yihu.jw.hospital.service.MultipleCode;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.wx.BasePatientWechatDo;
import com.yihu.jw.entity.base.wx.WxWechatDO;
import com.yihu.jw.entity.hospital.httplog.WlyyHttpLogDO;
import com.yihu.jw.entity.ylzinfo.OauthYlzConfigDO;
import com.yihu.jw.hospital.httplog.dao.WlyyHttpLogDao;
import com.yihu.jw.hospital.prescription.dao.OauthYlzConfigDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.wechat.WeiXinMessageReplyUtils;
import com.yihu.jw.wechat.dao.BasePatientWechatDao;
import com.yihu.jw.wechat.dao.WechatDao;
import com.ylzinfo.ehc.EhcHandler;
import com.ylzinfo.ehc.common.utils.DateUtils;
import com.ylzinfo.ehc.trans.TransRequest;
@ -30,7 +34,7 @@ import java.util.UUID;
public class MultipleCodeService {
    @Autowired
    private OauthYlzConfigDao oauthYlzConfigDao;
    private  OauthYlzConfigDao oauthYlzConfigDao;
    @Autowired
    private BasePatientDao basePatientDao;
@ -38,11 +42,20 @@ public class MultipleCodeService {
    @Autowired
    private BasePatientWechatDao basePatientWechatDao;
    @Value("${wx.id}")
    private String wxId;
    @Autowired
    private WechatDao wechatDao;
    @Autowired
    private WlyyHttpLogDao wlyyHttpLogDao;
    public MixEnvelop mcfRegister(BasePatientDO patientDO, String wechatId) throws Exception {
        BasePatientWechatDo patientWechatDo = basePatientWechatDao.findByWechatIdAndPatientId(wechatId, patientDO.getId()).get(0);
        OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findById("mcf_config");
        WxWechatDO wechatDO = wechatDao.findById(wxId);
        OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findOne("mcf_config");
        TransResponse re= new TransResponse();
        WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
        try {
            TransRequest request = new TransRequest();
            request.setMethod("ehc.ehealthcard.register");
@ -56,7 +69,7 @@ public class MultipleCodeService {
            bizContent.put("out_register_time", DateUtils.getOutTradeTime());
            bizContent.put("out_register_no", DateUtils.getOutTradeTime());
            bizContent.put("open_id", patientWechatDo.getOpenid());
            bizContent.put("account_id", "gh_a09552a72c9b");
            bizContent.put("account_id", wechatDO.getAppOriginId());
            bizContent.put("certificate_mode", "01");
            bizContent.put("id_type", "01");
            bizContent.put("id_no", patientDO.getIdcard());
@ -74,9 +87,7 @@ public class MultipleCodeService {
            jsonObject.put("code_url",JSONObject.parseObject(re.getBiz_content()).getString("code_url"));
            String result = jsonObject.toJSONString().replaceAll("\\|888", "");
            if(result!=null){
                patientDO.setRegister("1");
                basePatientDao.save(patientDO);
                return MixEnvelop.getSuccess("注册成功",result);
                return MixEnvelop.getSuccess("注册URL获取成功",result);
            }
            return MixEnvelop.getError(JSONObject.parseObject(re.getRet_msg()).toString());
        } catch (Exception e) {
@ -85,32 +96,85 @@ public class MultipleCodeService {
        }
    }
//     根据openId、 accountId查询三码融合码信息
    public MixEnvelop mcfOpenquery(String openId,String accountId) throws Exception {
            OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findOne("mcf_config");
            TransRequest request = new TransRequest();
            request.setMethod("ehc.ehealthcard.openquery");
            request.setApp_id(oauthYlzConfigDO.getAppId());
            request.setTerm_id(oauthYlzConfigDO.getTermId());
            request.setVersion("X.M.0.1");
            request.setTimestamp(DateUtils.getOutTradeTime());
            request.setSign_type("MD5");
            request.setEnc_type("Plain");
            JSONObject bizContent = new JSONObject();
            bizContent.put("open_id", openId);
            bizContent.put("account_id", accountId);
            request.setBiz_content(JSONObject.toJSONString(bizContent));
            EhcHandler ehcHandler = new EhcHandler(oauthYlzConfigDO.getUrl()+"ehcService/gateway.do", oauthYlzConfigDO.getAppId(), oauthYlzConfigDO.getTermId(), oauthYlzConfigDO.getAppKey());
            TransResponse re = ehcHandler.execute(request);
            if ("0000".equals(JSONObject.parseObject(re.getRet_code()))){
                String ehealth_card_id = JSONObject.parseObject(re.getBiz_content()).getString("ehealth_card_id").toString();
                if (ehealth_card_id!=null){
                    return MixEnvelop.getSuccess("查询用户信息成功",ehealth_card_id);
    public MixEnvelop mcfOpenquery(String patientId,String wechatId) throws Exception {
        WxWechatDO wechatDO = wechatDao.findByAppId(wxId);
        BasePatientDO patientDO = basePatientDao.findById(patientId);
        if (patientDO!=null){
            BasePatientWechatDo patientWechatDo = basePatientWechatDao.findByWechatIdAndPatientId(wechatId, patientDO.getId()).get(0);
            if (patientWechatDo!=null){
                OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findOne("mcf_config");
                TransRequest request = new TransRequest();
                request.setMethod("ehc.ehealthcard.openquery");
                request.setApp_id(oauthYlzConfigDO.getAppId());
                request.setTerm_id(oauthYlzConfigDO.getTermId());
                request.setVersion("X.M.0.1");
                request.setTimestamp(DateUtils.getOutTradeTime());
                request.setSign_type("MD5");
                request.setEnc_type("Plain");
                JSONObject bizContent = new JSONObject();
                bizContent.put("open_id", patientWechatDo.getOpenid());
                bizContent.put("account_id",wechatDO.getAppOriginId());
                request.setBiz_content(JSONObject.toJSONString(bizContent));
                EhcHandler ehcHandler = new EhcHandler(oauthYlzConfigDO.getUrl()+"ehcService/gateway.do", oauthYlzConfigDO.getAppId(), oauthYlzConfigDO.getTermId(), oauthYlzConfigDO.getAppKey());
                TransResponse re = ehcHandler.execute(request);
                JSONObject jsonObject = new JSONObject();
                if ((JSONObject.parseObject(re.getRet_code()).toJSONString()).equalsIgnoreCase("0000")){
                    patientDO.setRegister("1");
                    String idCard = JSONObject.parseObject(re.getBiz_content()).getString("id_no");
                    if (idCard!=null)
                    {
                        patientDO.setIdcard(idCard);
                    }
                    String userName = JSONObject.parseObject(re.getBiz_content()).getString("user_name");
                    if (userName!=null)
                    {
                        patientDO.setName(userName);
                    }
                    String userSex = JSONObject.parseObject(re.getBiz_content()).getString("user_sex");
                    if (userSex!=null){
                        patientDO.setSex(Integer.valueOf(userName));
                    }
                    String mobilePhone = JSONObject.parseObject(re.getBiz_content()).getString("mobile_phone");
                    if (mobilePhone!=null){
                        patientDO.setMobile(mobilePhone);
                    }
                    String birthday = JSONObject.parseObject(re.getBiz_content()).getString("birthday");
                    if (birthday!=null){
                        patientDO.setBirthday(DateUtil.strToDate(birthday));
                    }
                    String telephone = JSONObject.parseObject(re.getBiz_content()).getString("telephone");
                    if (telephone!=null){
                        patientDO.setPhone(telephone);
                    }
                    String address = JSONObject.parseObject(re.getBiz_content()).getString("address");
                    if (address!=null){
                        patientDO.setAddress(address);
                    }
                    basePatientDao.save(patientDO);
                   jsonObject.put("register","1");
                    String ehealthCardId = JSONObject.parseObject(re.getBiz_content()).getString("ehealth_card_id");
                    WlyyHttpLogDO logDO = new WlyyHttpLogDO();
                    logDO.setCode("ehc.ehealthcard.register");
                    logDO.setName("获取多码融合展示码");
                    logDO.setPatient(patientId);
                    logDO.setRequest("ehealthCardId="+ehealthCardId);
                    String codeUrl = mcfGetCodeUrl(ehealthCardId);
                    if (codeUrl!=null){
                        logDO.setResponse(codeUrl);
                        logDO.setStatus("0");
                        logDO.setCreateTime(DateUtil.getNowDate());
                        wlyyHttpLogDao.save(logDO);
                        jsonObject.put("codeUrl",codeUrl);
                        return MixEnvelop.getSuccess("注册成功",jsonObject);
                    }
                }
            }
        return MixEnvelop.getError(JSONObject.parseObject(re.getRet_msg()).toString());
        }
        return null;
    }
//     获取展码地址
    public MixEnvelop mcfGetCodeUrl(String ehealth_card_id) throws Exception {
    public  String mcfGetCodeUrl(String ehealth_card_id) throws Exception {
        OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findById("mcf_config");
        TransRequest request = new TransRequest();
        request.setMethod("ehc.ehealthcard.getCodeUrl");
@ -134,13 +198,13 @@ public class MultipleCodeService {
            jsonObject.put("code_url",JSONObject.parseObject(re.getBiz_content()).getString("code_url"));
            String code_url = jsonObject.toJSONString().replaceAll("\\|888", "");
            if (code_url!=null){
                return MixEnvelop.getSuccess("获取展码成功",code_url);
                return code_url;
            }
        }
        return MixEnvelop.getError("获取展码失败");
        return null;
    }
    //通过身边证查询用户信息
    public  TransResponse  mcfQueryInfo(String idType,String ID) throws Exception {
    public  String  mcfQueryInfo(BasePatientDO patientDO) throws Exception {
        OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findById("mcf_config");
        TransRequest request = new TransRequest();
        request.setMethod("ehc.ehealthcard.queryInfo");
@ -152,12 +216,65 @@ public class MultipleCodeService {
        request.setEnc_type("Plain");
        JSONObject bizContent = new JSONObject();
        String no = UUID.randomUUID().toString();
        bizContent.put("id_type", idType);
        bizContent.put("id_no", ID);
        bizContent.put("id_type", "01");
        bizContent.put("id_no", patientDO.getIdcard());
        request.setBiz_content(JSONObject.toJSONString(bizContent));
        EhcHandler ehcHandler = new EhcHandler(oauthYlzConfigDO.getUrl()+"ehcService/gateway.do", oauthYlzConfigDO.getAppId(), oauthYlzConfigDO.getTermId(), oauthYlzConfigDO.getAppKey());
        TransResponse re = ehcHandler.execute(request);
        return re;
        JSONObject jsonObject = new JSONObject();
        if ((JSONObject.parseObject(re.getRet_code()).toJSONString()).equalsIgnoreCase("0000")){
            patientDO.setRegister("1");
            String idCard = JSONObject.parseObject(re.getBiz_content()).getString("id_no");
            if (idCard!=null)
            {
                patientDO.setIdcard(idCard);
            }
            String userName = JSONObject.parseObject(re.getBiz_content()).getString("user_name");
            if (userName!=null)
            {
                patientDO.setName(userName);
            }
            String userSex = JSONObject.parseObject(re.getBiz_content()).getString("user_sex");
            if (userSex!=null){
                patientDO.setSex(Integer.valueOf(userName));
            }
            String mobilePhone = JSONObject.parseObject(re.getBiz_content()).getString("mobile_phone");
            if (mobilePhone!=null){
                patientDO.setMobile(mobilePhone);
            }
            String birthday = JSONObject.parseObject(re.getBiz_content()).getString("birthday");
            if (birthday!=null){
                patientDO.setBirthday(DateUtil.strToDate(birthday));
            }
            String telephone = JSONObject.parseObject(re.getBiz_content()).getString("telephone");
            if (telephone!=null){
                patientDO.setPhone(telephone);
            }
            String address = JSONObject.parseObject(re.getBiz_content()).getString("address");
            if (address!=null){
                patientDO.setAddress(address);
            }
            basePatientDao.save(patientDO);
            jsonObject.put("register","1");
            String ehealthCardId = JSONObject.parseObject(re.getBiz_content()).getString("ehealth_card_id");
            WlyyHttpLogDO logDO = new WlyyHttpLogDO();
            logDO.setCode("ehc.ehealthcard.getCodeUr");
            logDO.setName("获取多码融合展示码");
            logDO.setPatient(patientDO.getId());
            logDO.setRequest("ehealthCardId="+ehealthCardId);
            String codeUrl = mcfGetCodeUrl(ehealthCardId);
            if (codeUrl!=null){
                logDO.setResponse(codeUrl);
                logDO.setStatus("0");
                logDO.setCreateTime(DateUtil.getNowDate());
                wlyyHttpLogDao.save(logDO);
                jsonObject.put("codeUrl",codeUrl);
                return codeUrl;
            }
        }
        return null;
    }
    public MixEnvelop mcfQueryInfo(String ehealth_card_id ) throws Exception {

+ 2 - 0
svr/svr-internet-hospital/src/main/resources/application.yml

@ -228,6 +228,8 @@ wlyy:
qywx:
  url: 2
  id: 1
wx:
  id: xm_ykyy_wx # base库中,wx_wechat 的id字段
---
spring:
  profiles: jwprod