|  | @ -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 {
 |