|
@ -312,6 +312,138 @@ public class UnSettledHISPrescriptionService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询HIS的01表中的审方状态,如果已审方,且未结算,则推送一条模板消息给患者,让医生进行接诊提醒。
|
|
|
*/
|
|
|
public void acceptsRemind() throws Exception{
|
|
|
if("xm_ykyy_wx".equals(wechatId)){
|
|
|
//获取审核失败5306758
|
|
|
JSONArray jsonArray = ykyyEntranceService.getNoUnsettledPrescription();
|
|
|
if(jsonArray!=null&&jsonArray.size()>0) {
|
|
|
for (int i = 0; i<jsonArray.size(); i++){
|
|
|
JSONObject json = jsonArray.getJSONObject(i);
|
|
|
String cfsb = json.getString("CFSB");
|
|
|
//查找对应的处方
|
|
|
String sql = "SELECT w.OUTPATIENT_ID,w.ID,w.DOCTOR,w.DOCTOR_NAME from WLYY_PRESCRIPTION w WHERE REAL_ORDER = '"+cfsb+"' and status <> 11 ORDER BY w.CREATE_TIME desc";
|
|
|
List<Map<String, Object>> pre = hibenateUtils.createSQLQuery(sql);
|
|
|
if(pre!=null && pre.size()>0){
|
|
|
String prescriptionId = pre.get(0).get("ID").toString();
|
|
|
String outpatientId=pre.get(0).get("OUTPATIENT_ID").toString();
|
|
|
String doctor = pre.get(0).get("DOCTOR").toString();
|
|
|
String doctorName = pre.get(0).get("DOCTOR_NAME").toString();
|
|
|
//修改处方状态
|
|
|
String updateSql = "update WLYY_PRESCRIPTION set status = 11,check_status=1,check_reason='处方驳回' where id = '"+prescriptionId+"'";
|
|
|
hibenateUtils.updateBySql(updateSql);
|
|
|
com.alibaba.fastjson.JSONObject msgObj = new com.alibaba.fastjson.JSONObject();
|
|
|
msgObj.put("outpatientid",outpatientId);
|
|
|
msgObj.put("prescriptionId",prescriptionId);
|
|
|
msgObj.put("reason","处方驳回");
|
|
|
WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findById(outpatientId);
|
|
|
System.out.println("发送诊断消息开始+"+wlyyOutpatientDO.getId());
|
|
|
String immsg = imService.pushPrescriptionBackMsg(msgObj,doctor,doctorName,outpatientId,wlyyOutpatientDO.getPatient(),wlyyOutpatientDO.getOutpatientType(),wlyyOutpatientDO.getType());
|
|
|
System.out.println("发送诊断消息成功:"+immsg);
|
|
|
//发送短信提醒
|
|
|
String content = "";
|
|
|
WlyyPrescriptionDO prescriptionDO = prescriptionDao.findByRealOrder(cfsb);
|
|
|
BaseDoctorDO baseDoctorDO = doctorDao.findById(doctor);
|
|
|
ykyySMSService.sendSmsByTempcode("check_failed",wlyyOutpatientDO,prescriptionDO,baseDoctorDO.getMobile());
|
|
|
logger.info("极光推送处方驳回消息");
|
|
|
prescriptionService.wxTempalteJPush("prescription_refuse",wlyyOutpatientDO,null,"","","",prescriptionDO.getId());
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//获取已审核未结算的处方
|
|
|
JSONArray array = ykyyEntranceService.getUnsettledPrescription();
|
|
|
//发送模板
|
|
|
if(array!=null&&array.size()>0) {
|
|
|
for (int i = 0; i<array.size(); i++){
|
|
|
JSONObject json = array.getJSONObject(i);
|
|
|
String brid = json.getString("BRID");
|
|
|
String cfsb = json.getString("CFSB");
|
|
|
|
|
|
//查找居民信息
|
|
|
BasePatientDO patientDO = ykyyEntranceService.findPatientByMapingCode(brid);
|
|
|
if(patientDO!=null){
|
|
|
//查找对应的处方
|
|
|
String sql = "SELECT w.OUTPATIENT_ID,w.ID,w.DOCTOR_NAME from WLYY_PRESCRIPTION w WHERE REAL_ORDER = '"+cfsb+"' ORDER BY w.CREATE_TIME desc";
|
|
|
List<Map<String, Object>> pre = hibenateUtils.createSQLQuery(sql);
|
|
|
if(pre!=null && pre.size()>0){
|
|
|
String outpatientId = pre.get(0).get("OUTPATIENT_ID").toString();
|
|
|
WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findById(outpatientId);
|
|
|
String prescriptionId = pre.get(0).get("ID").toString();
|
|
|
String doctorName = pre.get(0).get("DOCTOR_NAME").toString();
|
|
|
//判断是否发送过
|
|
|
String countSql = "SELECT id from WX_PUSH_LOG w WHERE w.RECEIVER = '"+patientDO.getId()
|
|
|
+"' and w.OPENID = '"+prescriptionId+"' and w.scene = 'djsxxtz' and w.WECHAT_ID='"+wechatId+"'";
|
|
|
List<Map<String, Object>> count = hibenateUtils.createSQLQuery(countSql);
|
|
|
if(count==null || count.size() == 0){
|
|
|
List<BasePatientWechatDo> ps = basePatientWechatDao.findByWechatIdAndPatientId(wechatId,patientDO.getId());
|
|
|
//修改处方状态
|
|
|
String updateSql = "update WLYY_PRESCRIPTION set status = 20 where id = '"+prescriptionId+"' and status = 10";
|
|
|
hibenateUtils.updateBySql(updateSql);
|
|
|
prescriptionLogService.addPrescriptionLog(prescriptionId,20,2,"system","system","",new Date());
|
|
|
if(ps.isEmpty()){
|
|
|
logger.info("该用户"+patientDO.getName()+"没有openid,无法推送模版消息,用户ID:"+patientDO.getId()+"wechatId:"+wechatId);
|
|
|
}else{
|
|
|
|
|
|
ps.stream().forEach(one->{
|
|
|
WxTemplateConfigDO config = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId,"template_unsettled_notice","djsxxtz",1);
|
|
|
WxTemplateConfigDO newConfig = new WxTemplateConfigDO();
|
|
|
BeanUtils.copyProperties(config,newConfig);
|
|
|
newConfig.setFirst(config.getFirst().replace("key1",patientDO.getName()));
|
|
|
newConfig.setUrl(config.getUrl()+""+outpatientId);
|
|
|
newConfig.setKeyword3(doctorName);
|
|
|
WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(wechatId);
|
|
|
logger.info("=======setUrl========"+newConfig.getUrl());
|
|
|
weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(),one.getOpenid(),newConfig);
|
|
|
});
|
|
|
}
|
|
|
//保存发送模板记录,
|
|
|
WxPushLogDO wxPushLogDO = new WxPushLogDO();
|
|
|
wxPushLogDO.setCreateTime(new Date());
|
|
|
wxPushLogDO.setOpenid(prescriptionId);
|
|
|
wxPushLogDO.setReceiver(patientDO.getId());
|
|
|
wxPushLogDO.setWechatId(wechatId);
|
|
|
wxPushLogDO.setReceiverName(patientDO.getName());
|
|
|
wxPushLogDO.setScene("djsxxtz");
|
|
|
wxPushLogDao.save(wxPushLogDO);
|
|
|
WlyyPrescriptionDO wlyyPrescriptionDO = prescriptionDao.findOne(prescriptionId);
|
|
|
wlyyPrescriptionDO.setPrescribeTime(new Date());
|
|
|
wlyyPrescriptionDO.setCheckStatus(0);
|
|
|
wlyyPrescriptionDO.setCheckReason("审核通过");
|
|
|
prescriptionDao.save(wlyyPrescriptionDO);
|
|
|
JSONObject object = (JSONObject) JSONObject.toJSON(wlyyPrescriptionDO);
|
|
|
logger.info("wlyyPrescriptionDO参数入参"+object.toJSONString());
|
|
|
WlyyPrescriptionVO prescriptionVO = JSONObject.toJavaObject(object,WlyyPrescriptionVO.class);
|
|
|
List<WlyyPrescriptionInfoDO> wlyyPrescriptionInfoDOS = prescriptionInfoDao.findByPrescriptionId(wlyyPrescriptionDO.getId(),1);
|
|
|
List<WlyyPrescriptionInfoVO> wlyyPrescriptionInfoVOS = new ArrayList<>();
|
|
|
for (WlyyPrescriptionInfoDO wlyyPrescriptionInfoDO:wlyyPrescriptionInfoDOS){
|
|
|
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(wlyyPrescriptionInfoDO);
|
|
|
logger.info("wlyyPrescriptionInfoDO参数入参"+jsonObject.toJSONString());
|
|
|
WlyyPrescriptionInfoVO prescriptionInfoVO = JSONObject.toJavaObject(jsonObject,WlyyPrescriptionInfoVO.class);
|
|
|
wlyyPrescriptionInfoVOS.add(prescriptionInfoVO);
|
|
|
}
|
|
|
prescriptionVO.setInfoVOs(wlyyPrescriptionInfoVOS);
|
|
|
List<WlyyPrescriptionDiagnosisDO> wlyyPrescriptionDiagnosisDOS = prescriptionDiagnosisDao.findByPrescriptionId(wlyyPrescriptionDO.getId(),1);
|
|
|
List<WlyyPrescriptionDiagnosisVO> wlyyPrescriptionDiagnosisVOS = new ArrayList<>();
|
|
|
for (WlyyPrescriptionDiagnosisDO wlyyPrescriptionDiagnosisDO:wlyyPrescriptionDiagnosisDOS){
|
|
|
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(wlyyPrescriptionDiagnosisDO);
|
|
|
logger.info("wlyyPrescriptionDiagnosisDO参数入参"+jsonObject.toJSONString());
|
|
|
WlyyPrescriptionDiagnosisVO prescriptionDiagnosisVO = JSONObject.toJavaObject(jsonObject,WlyyPrescriptionDiagnosisVO.class);
|
|
|
wlyyPrescriptionDiagnosisVOS.add(prescriptionDiagnosisVO);
|
|
|
}
|
|
|
prescriptionVO.setDiagnosisVOs(wlyyPrescriptionDiagnosisVOS);
|
|
|
imService.pushPrescriptionImMessage(prescriptionVO);
|
|
|
ykyySMSService.sendSmsByTempcode("check_success_patient",wlyyOutpatientDO,wlyyPrescriptionDO,"");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
public void updateStatusByPayTime() throws Exception{
|
|
|
if("xm_ykyy_wx".equals(wechatId)){
|