|  | @ -1,6 +1,7 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.hospital.prescription.service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONPObject;
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.ObjectMapper;
 | 
	
		
			
				|  |  | import com.yihu.jw.dict.dao.DictDeptDescDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.dict.dao.DictHospitalDeptDao;
 | 
	
	
		
			
				|  | @ -9328,6 +9329,32 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |         return MixEnvelop.getSuccess(IotRequestMapping.Common.message_success_find, object);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public MixEnvelop selectByUrlHsjc(Integer id,String wxId) throws Exception {
 | 
	
		
			
				|  |  |         WxWechatDO wxWechatDO = wechatDao.findById(wxId);
 | 
	
		
			
				|  |  |         if (wxWechatDO == null) {
 | 
	
		
			
				|  |  |             throw new Exception("微信配置不存在!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         BaseNatAppointmentDO natAppointmentDO = baseNatAppointmentDao.findOne(id);
 | 
	
		
			
				|  |  |         List<BasePatientWechatDo> patientWechatDos = patientWechatDao.findByWechatIdAndPatientId(wxId, natAppointmentDO.getPatientId());
 | 
	
		
			
				|  |  |         if (patientWechatDos == null || patientWechatDos.size() == 0) {
 | 
	
		
			
				|  |  |             throw new Exception("openid不存在!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         BasePatientWechatDo patientWechatDo = patientWechatDos.get(0);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String idcard = null;
 | 
	
		
			
				|  |  |         if (natAppointmentDO != null) {
 | 
	
		
			
				|  |  |             idcard = natAppointmentDO.getMedicare();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isNoneBlank(idcard)) {
 | 
	
		
			
				|  |  |             throw new Exception("就诊卡不存在!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         String url = ylzPayService.createSicardPayUrl(wxWechatDO.getAppOriginId(), patientWechatDo.getOpenid(), idcard, "WX");
 | 
	
		
			
				|  |  |         com.alibaba.fastjson.JSONObject object = com.alibaba.fastjson.JSONObject.parseObject(url);
 | 
	
		
			
				|  |  |         return MixEnvelop.getSuccess(IotRequestMapping.Common.message_success_find, object);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 获取居民openId
 | 
	
		
			
				|  |  |      *
 | 
	
	
		
			
				|  | @ -10426,6 +10453,33 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |     public Map saveNatAppointment(String mediaCard,String patientId,String name,String cardNo,String cardType,String mobile,
 | 
	
		
			
				|  |  |                                    String firstJobCode,String firstJobName,String secondJobCode,String secondJobName,String natTime,String address,String provinceName,String cityName,String townName,String streetName) throws Exception {
 | 
	
		
			
				|  |  |         BaseNatAppointmentDO baseNatAppointmentDO= new BaseNatAppointmentDO();
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setMedicare(mediaCard);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setName(name);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setCardNo(cardNo);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setCardType(cardType);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setAddress(address);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setAppointmentTime(DateUtil.strToDate(natTime,"yyyy-MM-dd hh:mm:ss"));
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setCityName(cityName);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setFirstJobCode(firstJobCode);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setFirstJobName(firstJobName);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setSecondJobCode(secondJobCode);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setSecondJobName(secondJobName);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setProvinceName(provinceName);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setTownName(townName);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setStreetName(streetName);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setPatientId(patientId);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setIsSuccess("0");
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setPayStatus("0");
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setCreateTime(new Date());
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setMobile(mobile);
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setInspectionCode("鼻/咽拭子");
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setInspectionName("鼻/咽拭子");
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setIcdCode("Z00.000");
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setChargeCode("361322");
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setWinNo("6");
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setDept("3150000");
 | 
	
		
			
				|  |  |         baseNatAppointmentDO.setDeptName("感染疾病科");
 | 
	
		
			
				|  |  |         baseNatAppointmentDO= baseNatAppointmentDao.save(baseNatAppointmentDO);
 | 
	
		
			
				|  |  |         Map returnMap = new HashMap();
 | 
	
		
			
				|  |  |         net.sf.json.JSONObject jsondate = new JSONObject();
 | 
	
		
			
				|  |  |         jsondate.put("checkPart","鼻/咽拭子");
 | 
	
	
		
			
				|  | @ -10441,12 +10495,14 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |         jsondate.put("address4",streetName);
 | 
	
		
			
				|  |  |         jsondate.put("address5",2);
 | 
	
		
			
				|  |  |         jsondate.put("area",address);
 | 
	
		
			
				|  |  |         jsondate.put("winNo",6);
 | 
	
		
			
				|  |  |         jsondate.put("target",2);
 | 
	
		
			
				|  |  |         jsondate.put("quantity",1);
 | 
	
		
			
				|  |  |         Map<String,Object> map = findRandomDoctor();
 | 
	
		
			
				|  |  |         net.sf.json.JSONObject rs = new JSONObject();
 | 
	
		
			
				|  |  |         if (map!=null){
 | 
	
		
			
				|  |  |             //先进行核算检测预约
 | 
	
		
			
				|  |  |             String result = entranceService.BS10144(map.get("deptCode").toString(),map.get("doctorMappingCode").toString(),natTime,mediaCard,name,patientId,mobile,demoFlag);
 | 
	
		
			
				|  |  |             String result = entranceService.BS10144("3150000","0001",natTime,mediaCard,name,cardNo,mobile,demoFlag);
 | 
	
		
			
				|  |  |             com.alibaba.fastjson.JSONObject object = com.alibaba.fastjson.JSONObject.parseObject(result);
 | 
	
		
			
				|  |  |             logger.info("核酸检测预约结束"+result);
 | 
	
		
			
				|  |  |             Boolean flag = false;
 | 
	
	
		
			
				|  | @ -10478,10 +10534,11 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |                         }else {
 | 
	
		
			
				|  |  |                             returnMap.put("msg","已经挂号的数据有误");
 | 
	
		
			
				|  |  |                             returnMap.put("status","-1");
 | 
	
		
			
				|  |  |                             return map;
 | 
	
		
			
				|  |  |                             returnMap.put("id",baseNatAppointmentDO.getId());
 | 
	
		
			
				|  |  |                             return returnMap;
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                     }else {
 | 
	
		
			
				|  |  |                         rs = entranceService.BS10111(cardNo, map.get("doctorMappingCode").toString(), map.get("deptCode").toString(), "31", "6", demoFlag);
 | 
	
		
			
				|  |  |                         rs = entranceService.BS10111(mediaCard, map.get("doctorMappingCode").toString(), map.get("deptCode").toString(), "31", "6", demoFlag);
 | 
	
		
			
				|  |  |                         net.sf.json.JSONObject res = rs.getJSONObject("resquest");
 | 
	
		
			
				|  |  |                         logger.info("挂号结果 res: " + res.toString());
 | 
	
		
			
				|  |  |                         String rsCode = res.getString("@RESULT");
 | 
	
	
		
			
				|  | @ -10563,7 +10620,8 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |                         }else {
 | 
	
		
			
				|  |  |                             returnMap.put("msg","请求挂号失败");
 | 
	
		
			
				|  |  |                             returnMap.put("status","-1");
 | 
	
		
			
				|  |  |                             return map;
 | 
	
		
			
				|  |  |                             returnMap.put("id",baseNatAppointmentDO.getId());
 | 
	
		
			
				|  |  |                             return returnMap;
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                         baseNatAppointmentDO.setDoctorId(map.get("doctorMappingCode").toString());
 | 
	
		
			
				|  |  |                     }
 | 
	
	
		
			
				|  | @ -10573,8 +10631,10 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 logger.info("开单开始");
 | 
	
		
			
				|  |  |                 logger.info("saveNatAppointment params:"+jsondate.toString());
 | 
	
		
			
				|  |  |                 com.alibaba.fastjson.JSONArray array = new com.alibaba.fastjson.JSONArray();
 | 
	
		
			
				|  |  |                 array.add(jsondate);
 | 
	
		
			
				|  |  |                 try {
 | 
	
		
			
				|  |  |                     JSONObject jsonObject  = entranceService.BS10112(jsondate.toString(),flag);
 | 
	
		
			
				|  |  |                     JSONObject jsonObject  = entranceService.BS10112(array.toString(),demoFlag);
 | 
	
		
			
				|  |  |                     //判断返回结果
 | 
	
		
			
				|  |  |                     String prers = jsonObject.getString("@RESULT");
 | 
	
		
			
				|  |  |                     //保存日志
 | 
	
	
		
			
				|  | @ -10590,10 +10650,12 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |                     if ("0".equals(prers)) {
 | 
	
		
			
				|  |  |                         String realOrder = jsonObject.getString("@real_order");
 | 
	
		
			
				|  |  |                         baseNatAppointmentDO.setRealOrder(realOrder);
 | 
	
		
			
				|  |  |                         baseNatAppointmentDO.setIsSuccess("1");
 | 
	
		
			
				|  |  |                         baseNatAppointmentDao.save(baseNatAppointmentDO);
 | 
	
		
			
				|  |  |                         String recipeTime = DateUtil.dateToStr(new Date(), "yyyyMMddHHmmss");
 | 
	
		
			
				|  |  |                         String applyDepaName = map.get("deptCode").toString();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                         String voucherNo = jsonObject.getString("@xtgzh0") ;
 | 
	
		
			
				|  |  |                         String voucherNo = jsonObject.getString("@xtgzh0");
 | 
	
		
			
				|  |  |                         String applyDoctorName = map.get("doctorName").toString();
 | 
	
		
			
				|  |  |                         BasePatientDO patientDO = basePatientDao.findById(patientId);
 | 
	
		
			
				|  |  |                         String userName = null;
 | 
	
	
		
			
				|  | @ -10609,51 +10671,35 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                         logger.info("cardNo:" + cardNo);
 | 
	
		
			
				|  |  |                         JSONObject jsonObject1 =entranceService.BS15054(patientMappingDO.getMappingCode(),realOrder,demoFlag);
 | 
	
		
			
				|  |  |                         /*JSONObject jsonObject1 =entranceService.BS15054(patientMappingDO.getMappingCode(),realOrder,demoFlag);
 | 
	
		
			
				|  |  |                         net.sf.json.JSONObject res = jsonObject1.getJSONObject("resquest");
 | 
	
		
			
				|  |  |                         logger.info("获取待结算数据 res: " + res.toString());
 | 
	
		
			
				|  |  |                         String rsCode = res.getString("@RESULT");
 | 
	
		
			
				|  |  |                         String free= 0+"";
 | 
	
		
			
				|  |  |                         if ("0".equals(rsCode)) {
 | 
	
		
			
				|  |  |                         String rsCode = res.getString("@RESULT");*/
 | 
	
		
			
				|  |  |                         String free= 80+"";
 | 
	
		
			
				|  |  |                         /*if ("0".equals(rsCode)) {
 | 
	
		
			
				|  |  |                             free = res.getString("@total_charge");
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                         ylzPayService.msgPush("01", cardNo, "01", patientDO.getMobile(), "00", userNo, userName, idcard, voucherNo, applyDepaName, applyDoctorName, recipeTime, free, "1");
 | 
	
		
			
				|  |  |                         }*/
 | 
	
		
			
				|  |  |                         ylzPayService.msgPush("01", mediaCard, "01", patientDO.getMobile(), "00", userNo, userName, idcard, voucherNo, applyDepaName, applyDoctorName, recipeTime, free, "1");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                         /*//成功后发送模板消息
 | 
	
		
			
				|  |  |                         sendNatWxTemplat(name,cardNo,mobile,natTime,realOrder,"natAppointmentRemind");*/
 | 
	
		
			
				|  |  |                     }else{
 | 
	
		
			
				|  |  |                         returnMap.put("msg","核酸检测开方失败");
 | 
	
		
			
				|  |  |                         returnMap.put("status","-1");
 | 
	
		
			
				|  |  |                         return map;
 | 
	
		
			
				|  |  |                         returnMap.put("id",baseNatAppointmentDO.getId());
 | 
	
		
			
				|  |  |                         return returnMap;
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 } catch (Exception e) {
 | 
	
		
			
				|  |  |                     e.printStackTrace();
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setMedicare(mediaCard);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setName(name);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setCardNo(cardNo);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setCardType(cardType);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setAddress(address);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setAppointmentTime(DateUtil.strToDate(natTime,"yyyy-MM-dd hh:mm:ss"));
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setCityName(cityName);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setFirstJobCode(firstJobCode);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setFirstJobName(firstJobName);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setSecondJobCode(secondJobCode);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setSecondJobName(secondJobName);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setProvinceName(provinceName);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setTownName(townName);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setStreetName(streetName);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setPatientId(patientId);
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setIsSuccess("1");
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setPayStatus("0");
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setCreateTime(new Date());
 | 
	
		
			
				|  |  |             baseNatAppointmentDO.setMobile(mobile);
 | 
	
		
			
				|  |  |             baseNatAppointmentDao.save(baseNatAppointmentDO);
 | 
	
		
			
				|  |  |             returnMap.put("msg","预约成功");
 | 
	
		
			
				|  |  |             returnMap.put("status","200");
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             returnMap.put("id",baseNatAppointmentDO.getId());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return map;
 | 
	
		
			
				|  |  |         return returnMap;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  |     public MixEnvelop getNatRecords(String patientId,Integer page ,Integer pageSize){
 | 
	
		
			
				|  |  |         String sql = "select t.name as \"name\"," +
 | 
	
	
		
			
				|  | @ -10701,24 +10747,39 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  |     //患者取消预约
 | 
	
		
			
				|  |  |     public String cancelNatAppointment (Integer id,String patientId ) throws Exception{
 | 
	
		
			
				|  |  |     public String cancelNatAppointment (Integer id,String patientId ){
 | 
	
		
			
				|  |  |         BasePatientDO patientDO = basePatientDao.findById(patientId);
 | 
	
		
			
				|  |  |         String res = "";
 | 
	
		
			
				|  |  |         if (patientDO!=null){
 | 
	
		
			
				|  |  |             String patientCode = null;
 | 
	
		
			
				|  |  |             patientCode = patientMappingService.findHisPatNoByIdCard(patientDO.getIdcard());
 | 
	
		
			
				|  |  |             BaseNatAppointmentDO baseNatAppointmentDO = baseNatAppointmentDao.findOne(id);
 | 
	
		
			
				|  |  |             if (null!=baseNatAppointmentDO){
 | 
	
		
			
				|  |  |                 res = entranceService.BS10145(baseNatAppointmentDO.getDept(),baseNatAppointmentDO.getDoctorId(),DateUtil.dateToStr(baseNatAppointmentDO.getAppointmentTime(),"yyyy-MM-dd hh:mm:ss"),baseNatAppointmentDO.getMedicare(),baseNatAppointmentDO.getName(),patientCode,baseNatAppointmentDO.getMobile(),demoFlag);
 | 
	
		
			
				|  |  |                 if (res.contains("Error")){
 | 
	
		
			
				|  |  |                     throw new Exception(res);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 baseNatAppointmentDO.setIsSuccess("-1");
 | 
	
		
			
				|  |  |                 baseNatAppointmentDO.setCancelReson("患者本人取消");
 | 
	
		
			
				|  |  |                 baseNatAppointmentDO.setCancelTime(new Date());
 | 
	
		
			
				|  |  |                 baseNatAppointmentDO.setCancelBy(patientId);
 | 
	
		
			
				|  |  |                 baseNatAppointmentDao.save(baseNatAppointmentDO);
 | 
	
		
			
				|  |  |             try {
 | 
	
		
			
				|  |  |                 patientCode = patientMappingService.findHisPatNoByIdCard(patientDO.getIdcard());
 | 
	
		
			
				|  |  |                 BaseNatAppointmentDO baseNatAppointmentDO = baseNatAppointmentDao.findOne(id);
 | 
	
		
			
				|  |  |                 if (null!=baseNatAppointmentDO){
 | 
	
		
			
				|  |  |                     res = entranceService.BS10145("3150000","0001",DateUtil.dateToStr(baseNatAppointmentDO.getAppointmentTime(),"yyyy-MM-dd hh:mm:ss"),baseNatAppointmentDO.getMedicare(),baseNatAppointmentDO.getName(),baseNatAppointmentDO.getCardNo(),baseNatAppointmentDO.getMobile(),demoFlag);
 | 
	
		
			
				|  |  |                     logger.info("核酸检测预约取消"+res);
 | 
	
		
			
				|  |  |                     com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(res);
 | 
	
		
			
				|  |  |                     Boolean flag = false;
 | 
	
		
			
				|  |  |                     if (jsonObject!=null){
 | 
	
		
			
				|  |  |                         com.alibaba.fastjson.JSONObject object = jsonObject.getJSONObject("MsgInfo");
 | 
	
		
			
				|  |  |                         String Msg = object.getString("Msg");
 | 
	
		
			
				|  |  |                         if (Msg.contains("Error")){
 | 
	
		
			
				|  |  |                             throw new Exception(Msg);
 | 
	
		
			
				|  |  |                         }else {
 | 
	
		
			
				|  |  |                             baseNatAppointmentDO.setIsSuccess("-1");
 | 
	
		
			
				|  |  |                             baseNatAppointmentDO.setCancelReson("患者本人取消");
 | 
	
		
			
				|  |  |                             baseNatAppointmentDO.setCancelTime(new Date());
 | 
	
		
			
				|  |  |                             baseNatAppointmentDO.setCancelBy(patientId);
 | 
	
		
			
				|  |  |                             baseNatAppointmentDao.save(baseNatAppointmentDO);
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             } catch (Exception e) {
 | 
	
		
			
				|  |  |                 e.printStackTrace();
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return res;
 | 
	
		
			
				|  |  |     }
 |