Selaa lähdekoodia

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

wangzhinan 5 vuotta sitten
vanhempi
commit
56a40cf58f

+ 11 - 2
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/XzzxEntranceService.java

@ -53,7 +53,7 @@ import java.util.*;
/**
 * 心脏中心内网his对接服务
 * Created by Trick on 2020/3/18.
 * Created by Trick on 2020/3/18
 */
@Service
@Transactional
@ -102,6 +102,7 @@ public class XzzxEntranceService{
    private WlyyInspectionDao wlyyInspectionDao;
    private static String key="bvvsf3JA0mUXMU+mVnMaOQ==";
    //发送微信模板消息
@ -126,6 +127,11 @@ public class XzzxEntranceService{
        return url;
    }
    public String getWXTokenUrl(){
        WlyyHospitalSysDictDO sysDictDO = wlyyHospitalSysDictDao.findById("getXzToken");
        return sysDictDO.getDictCode();
    }
    public String getXzzxWebServiceInfo(String api, Map<String,String> params,String url)throws Exception{
        logger.info("url"+url);
@ -853,6 +859,7 @@ public class XzzxEntranceService{
     * @throws Exception
     */
    public String getXzToken() throws Exception{
        String url =getWXTokenUrl();
        JSONObject params = new JSONObject();
        params.put("appId","1BQ08T2R60006501A8C00000BE73319D");
        params.put("encryptType","DES");
@ -864,7 +871,8 @@ public class XzzxEntranceService{
        JSONObject p = new JSONObject();
        p.put("medicalId","3501000014");
        params.put("param",p);
        String rs = HttpUtil.sendPost("http://xzbh.xmheart.com:8090/hospitalPortal-ext-app/ext/app/unifyapi",params.toJSONString());
        String path = url+"hospitalPortal-ext-app/ext/app/unifyapi";
        String rs = HttpUtil.sendPost(path,params.toJSONString());
        logger.info("rs :"+rs);
        JSONObject rsJson = JSON.parseObject(rs);
        String tokenAES = rsJson.getJSONObject("param").getString("token");
@ -872,6 +880,7 @@ public class XzzxEntranceService{
        return token;
    }
    public String ehospitalNotice(String userName, String idCard, String phone, String title, String url, String content, String contentString) {
        logger.info("ehospitalNotice:");
        BasePatientDO patientDO = patientDao.findByIdcardAndDel(idCard,"1");

+ 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";
    }
}

+ 20 - 10
gateway/ag-basic/src/main/resources/application.yml

@ -93,16 +93,26 @@ zuul:
##  zipkin:
##    base-url: http://localhost:9411 #日志追踪的地址
#
#---
#spring:
#  profiles: jwtest
#  datasource:
#     url: jdbc:mysql://172.26.0.104/base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
#     username: root
#     password: jkzlehr
#  redis:
#    host: 172.26.0.253 # Redis server host.
#    port: 6379 # Redis server port.
---
spring:
  profiles: jwtest
  datasource:
     url: jdbc:mysql://172.26.0.104/base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
     username: root
     password: jkzlehr
  redis:
    host: 172.26.0.253 # Redis server host.
    port: 6379 # Redis server port.
---
spring:
  profiles: iottest
  datasource:
     url: jdbc:mysql://172.26.0.104/iot-base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
     username: root
     password: jkzlehr
  redis:
    host: 172.26.0.253 # Redis server host.
    port: 6379 # Redis server port.
#---
#spring:
#  profiles: jwprod

+ 7 - 0
gateway/ag-basic/src/main/resources/bootstrap.yml

@ -34,6 +34,13 @@ spring:
      uri: ${wlyy-spring.config.uri:http://172.26.0.107:1221}
      label: ${wlyy-spring.config.label:jwdev}
---
spring:
  profiles: iottest
  cloud:
    config:
      uri: ${wlyy-spring.config.uri:http://172.26.0.109:1221}
      label: ${wlyy-spring.config.label:jwdev}
---
spring:
  profiles: qytest
  cloud:

+ 9 - 9
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

@ -892,15 +892,15 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
    }
        /**
         * 获取易联众授权码
         * @return
         */
    @RequestMapping(value = "/oauth/getOauthQRCode", method = RequestMethod.GET)
    public ObjEnvelop getOauthQRCode(){
        logger.info("/oauth/getOauthQRCode");
        return ObjEnvelop.getSuccess("success", oauthYlzConfigService.getOauthQRCode());
    }
//        /**
//         * 获取易联众授权码
//         * @return
//         */
//    @RequestMapping(value = "/oauth/getOauthQRCode", method = RequestMethod.GET)
//    public ObjEnvelop getOauthQRCode(){
//        logger.info("/oauth/getOauthQRCode");
//        return ObjEnvelop.getSuccess("success", oauthYlzConfigService.getOauthQRCode());
//    }
    @RequestMapping(value = "/oauth/getCaQRCode", method = RequestMethod.GET)
    public ObjEnvelop getCaQRCode(){

+ 76 - 76
server/svr-authentication/src/main/java/com/yihu/jw/security/service/OauthYlzConfigService.java

@ -48,87 +48,87 @@ public class OauthYlzConfigService {
    @Autowired
    private BasePatientDao basePatientDao;
    @Value("${fastDFS.fastdfs_file_url}")
    private String fastdfs_file_url;
//    @Value("${fastDFS.fastdfs_file_url}")
//    private String fastdfs_file_url;
//
//    @Value("${testPattern.sign}")
//    private String isClose;
    @Value("${testPattern.sign}")
    private String isClose;
    @Value("${testPattern.remote_inner_url}")
    private String remote_inner_url;
//    @Value("${testPattern.remote_inner_url}")
//    private String remote_inner_url;
    @Autowired
    private ObjectMapper objectMapper;
    public Map<String,Object> getOauthQRCode(){
        try {
            OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findOne("ylz_config");
            TransRequest e = new TransRequest();
            e.setMethod("ehc.ehealthcard.authurl");
            e.setApp_id(oauthYlzConfigDO.getAppId());
            e.setTerm_id(oauthYlzConfigDO.getTermId());
            e.setVersion(oauthYlzConfigDO.getVersion());
            e.setTimestamp(DateUtil.dateToStr(new Date(),"yyyyMMddHHmmss"));
            e.setSign_type(oauthYlzConfigDO.getSignType());
            e.setEnc_type(oauthYlzConfigDO.getEncType());
            com.alibaba.fastjson.JSONObject bizContent = new com.alibaba.fastjson.JSONObject();
            String no = UUID.randomUUID().toString().substring(0,30);
            bizContent.put("out_authorize_no", no);
            bizContent.put("out_authorize_time", DateUtils.getOutTradeTime());
            e.setBiz_content(JSON.toJSONString(bizContent));
            String param = com.alibaba.fastjson.JSONObject.toJSONString(e);
            logger.info("TransRequest :"+param);
            EhcHandler ehcHandler = new EhcHandler(oauthYlzConfigDO.getUrl(), oauthYlzConfigDO.getAppId(), oauthYlzConfigDO.getTermId(), oauthYlzConfigDO.getAppKey());
            TransResponse re = ehcHandler.execute(e);
            String rs = com.alibaba.fastjson.JSONObject.toJSONString(re);
            logger.info("TransResponse :"+rs);
            com.alibaba.fastjson.JSONObject json = (com.alibaba.fastjson.JSONObject) com.alibaba.fastjson.JSONObject.parse(rs);
            com.alibaba.fastjson.JSONObject biz = json.getJSONObject("biz_content");
            InputStream qrcode = QrcodeUtil.createQrcode(biz.getString("ehealth_authurl"),300,"jpg");
            Map<String,Object> map = new HashedMap();
            if(isClose.equals("2")){
                //内网上传
                MultipartFile file = new MockMultipartFile("qrcode.jpg","qrcode.jpg","qrcode.jpg",qrcode);
                String rsJson = fileUploadService.request(remote_inner_url,file,null);
                logger.info("内网上传"+rsJson);
                JSONObject uploadJson = JSON.parseObject(rsJson);
                UploadVO uploadVO = objectMapper.readValue(uploadJson.getJSONObject("obj").toJSONString(),UploadVO.class);
                map.put("fileName",uploadVO.getFileName());
                map.put("fileType",uploadVO.getFileType());
                map.put("fullUrl",uploadVO.getFullUrl());
                map.put("fullUri",uploadVO.getFullUri());
                map.put("out_authorize_no",no);
                logger.info("fileUploadService:"+map.toString());
            }else {
                // 得到文件的完整名称  xxx.txt
                logger.info("fastdfs_file_url:"+fastdfs_file_url);
                UploadVO uploadVO = fileUploadService.uploadStream(qrcode,"qrcode.jpg",fastdfs_file_url);
                map = new HashedMap();
                map.put("fileName",uploadVO.getFileName());
                map.put("fileType",uploadVO.getFileType());
                map.put("fullUrl",uploadVO.getFullUrl());
                map.put("fullUri",uploadVO.getFullUri());
                map.put("out_authorize_no",no);
                logger.info("fileUploadService:"+map.toString());
            }
            return map;
        } catch (Exception var5) {
            logger.info("获取电子健康卡图片异常");
            var5.printStackTrace();
        }
        return null;
    }
//    public Map<String,Object> getOauthQRCode(){
//        try {
//            OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findOne("ylz_config");
//            TransRequest e = new TransRequest();
//            e.setMethod("ehc.ehealthcard.authurl");
//            e.setApp_id(oauthYlzConfigDO.getAppId());
//            e.setTerm_id(oauthYlzConfigDO.getTermId());
//            e.setVersion(oauthYlzConfigDO.getVersion());
//            e.setTimestamp(DateUtil.dateToStr(new Date(),"yyyyMMddHHmmss"));
//            e.setSign_type(oauthYlzConfigDO.getSignType());
//            e.setEnc_type(oauthYlzConfigDO.getEncType());
//            com.alibaba.fastjson.JSONObject bizContent = new com.alibaba.fastjson.JSONObject();
//            String no = UUID.randomUUID().toString().substring(0,30);
//            bizContent.put("out_authorize_no", no);
//            bizContent.put("out_authorize_time", DateUtils.getOutTradeTime());
//            e.setBiz_content(JSON.toJSONString(bizContent));
//
//            String param = com.alibaba.fastjson.JSONObject.toJSONString(e);
//            logger.info("TransRequest :"+param);
//
//            EhcHandler ehcHandler = new EhcHandler(oauthYlzConfigDO.getUrl(), oauthYlzConfigDO.getAppId(), oauthYlzConfigDO.getTermId(), oauthYlzConfigDO.getAppKey());
//            TransResponse re = ehcHandler.execute(e);
//
//            String rs = com.alibaba.fastjson.JSONObject.toJSONString(re);
//            logger.info("TransResponse :"+rs);
//
//            com.alibaba.fastjson.JSONObject json = (com.alibaba.fastjson.JSONObject) com.alibaba.fastjson.JSONObject.parse(rs);
//            com.alibaba.fastjson.JSONObject biz = json.getJSONObject("biz_content");
//            InputStream qrcode = QrcodeUtil.createQrcode(biz.getString("ehealth_authurl"),300,"jpg");
//
//            Map<String,Object> map = new HashedMap();
//
//            if(isClose.equals("2")){
//                //内网上传
//                MultipartFile file = new MockMultipartFile("qrcode.jpg","qrcode.jpg","qrcode.jpg",qrcode);
//                String rsJson = fileUploadService.request(remote_inner_url,file,null);
//
//                logger.info("内网上传"+rsJson);
//                JSONObject uploadJson = JSON.parseObject(rsJson);
//
//                UploadVO uploadVO = objectMapper.readValue(uploadJson.getJSONObject("obj").toJSONString(),UploadVO.class);
//                map.put("fileName",uploadVO.getFileName());
//                map.put("fileType",uploadVO.getFileType());
//                map.put("fullUrl",uploadVO.getFullUrl());
//                map.put("fullUri",uploadVO.getFullUri());
//                map.put("out_authorize_no",no);
//
//                logger.info("fileUploadService:"+map.toString());
//            }else {
//                // 得到文件的完整名称  xxx.txt
//                logger.info("fastdfs_file_url:"+fastdfs_file_url);
//                UploadVO uploadVO = fileUploadService.uploadStream(qrcode,"qrcode.jpg",fastdfs_file_url);
//                map = new HashedMap();
//                map.put("fileName",uploadVO.getFileName());
//                map.put("fileType",uploadVO.getFileType());
//                map.put("fullUrl",uploadVO.getFullUrl());
//                map.put("fullUri",uploadVO.getFullUri());
//                map.put("out_authorize_no",no);
//                logger.info("fileUploadService:"+map.toString());
//            }
//
//            return map;
//        } catch (Exception var5) {
//            logger.info("获取电子健康卡图片异常");
//            var5.printStackTrace();
//        }
//
//        return null;
//    }
    public Map<String,Object> getOauthQRCodeImg(){
        try {

+ 24 - 0
server/svr-authentication/src/main/resources/application.yml

@ -80,6 +80,30 @@ spring:
    port: 6379 # Redis server port.
  ##发现服务
## i健康用户信息接口,开放出来给互联网医院登录同步用户信息用
iHealth:
  user-info-uri: http://ehr.yihu.com/wlyy/iHealth/userInfo
zhongshanHospital:
  user-info-uri: http://laptop-u738dn2p:10023/mqsdk/getUserInfoByOpenid
fastDFS:
  fastdfs_file_url: http://172.26.0.110:8888/
#文件服务器上传配置 0本地,1.I健康,2.内网调用
testPattern:
  sign: 0
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
---
spring:
  profiles: iottest
  datasource:
    url: jdbc:mysql://172.26.0.104/iot-base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
    username: root
    password: jkzlehr
  redis:
    host: 172.26.0.253 # Redis server host.
    port: 6379 # Redis server port.
  ##发现服务
## i健康用户信息接口,开放出来给互联网医院登录同步用户信息用
iHealth:
  user-info-uri: http://ehr.yihu.com/wlyy/iHealth/userInfo

+ 8 - 1
server/svr-authentication/src/main/resources/bootstrap.yml

@ -22,6 +22,13 @@ spring:
      uri: ${wlyy.spring.config.uri:http://172.26.0.107:1221}
      label: ${wlyy.spring.config.label:jwdev}
---
spring:
  profiles: iottest
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://172.26.0.109:1221}
      label: ${wlyy.spring.config.label:jwdev}
---
spring:
  profiles: qytest
  cloud:
@ -76,4 +83,4 @@ spring:
  cloud:
    config:
      uri: ${wlyy.pring.config.uri:http://10.95.22.193:1221}
      label: ${wlyy.spring.config.label:master}
      label: ${wlyy.spring.config.label:master}

+ 12 - 0
server/svr-configuration/src/main/resources/bootstrap.yml

@ -27,6 +27,18 @@ spring:
          basedir: /usr/local/wlyy2.0-config
        default-label: ${wlyy.spring.config.git.label:jwdev}
---
spring:
  profiles: iottest
##git配置
  cloud:
    config:
      failFast: true #启动快速失败 即链接不到配置服务就启动失败
      server:
        git:
          uri: ${wlyy.spring.config.git.uri:http://192.168.1.220:10080/Amoy2/wlyy2.0.config.git}
          basedir: /usr/local/wlyy2.0-config
        default-label: ${wlyy.spring.config.git.label:jwdev}
---
spring:
  profiles: qytest
##git配置

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
svr/svr-base/sql/init.sql


+ 44 - 1
svr/svr-base/src/main/resources/application.yml

@ -1,4 +1,4 @@
#通用的配置不用区分环境变量
#通用的配置不用区分环境变量.
server:
  port: ${server.svr-base-port}
@ -163,6 +163,49 @@ testPattern:
  sign: 0
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
---
spring:
  profiles: iottest
  datasource:
    url: jdbc:mysql://172.26.0.104/iot-base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true
    username: ssgg
    password: ssgg@jkzl2019
#    url: jdbc:mysql://172.19.103.77/base?useUnicode:true&characterEncoding=utf-8&autoReconnect=true
#    username: root
#    password: 123456
  elasticsearch:
    cluster-name: jkzl #集群名 默认elasticsearch
    cluster-nodes: 172.19.103.45:9300,172.19.103.68:9300 #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode
    client-transport-sniff: false
    jest:
      uris: http://172.19.103.45:9200,http://172.19.103.68:9200
      connection-timeout: 60000 # Connection timeout in milliseconds.
      multi-threaded: true # Enable connection requests from multiple execution threads.
  activemq:
    broker-url: tcp://172.19.103.87:61616
    user: admin
    password: admin
  redis:
    host: 172.26.0.253 # Redis server host.
    port: 6379 # Redis server port.
fastDFS:
  fastdfs_file_url: http://172.19.103.54:80/
demo:
  flag: true
hospital:
  url: https://wx.xmzsh.com
  mqUser: JKZL
  mqPwd: 123456
  SourceSysCode: S60
  TargetSysCode: S01
wlyy:
  url: http://ehr.yihu.com/wlyy/
wechat:
  id: d24d1367-7f4f-43af-910e-a0a43799e040
#文件服务器上传配置 0本地,1.I健康,2.内网调用
testPattern:
  sign: 0
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
---
spring:
  profiles: jwprod
  datasource:

+ 7 - 1
svr/svr-base/src/main/resources/bootstrap.yml

@ -22,7 +22,13 @@ spring:
    config:
      uri: ${wlyy.spring.config.uri:http://172.26.0.107:1221}
      label: ${wlyy.spring.config.label:jwdev}
---
spring:
  profiles: iottest
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://172.26.0.109:1221}
      label: ${wlyy.spring.config.label:jwdev}
---
spring:
  profiles: jwprod

+ 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