|  | @ -6,8 +6,10 @@ import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.serializer.SerializerFeature;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.assistance.EmergencyAssistanceDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.device.PatientDeviceDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.security.BaseEmergencyWarnLogDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.security.EmergencyWarnConclusionDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.security.EmergencyWarnDoctorResponseDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.security.SecurityMonitoringOrderDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.sign.ServicePackageSignRecordDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.team.BaseTeamMemberDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.service.common.DictService;
 | 
	
	
		
			
				|  | @ -23,8 +25,10 @@ import com.yihu.jw.entity.base.im.ConsultTeamDo;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.patient.BasePatientDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.assistance.EmergencyAssistanceDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.device.DevicePatientDevice;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.securitymonitoring.BaseEmergencyWarnLogDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.securitymonitoring.EmergencyWarnConclusionDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.securitymonitoring.EmergencyWarnDoctorResponseDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.securitymonitoring.SecurityMonitoringOrderDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.hospital.message.SystemMessageDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.hospital.message.dao.SystemMessageDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.im.dao.ConsultDao;
 | 
	
	
		
			
				|  | @ -96,7 +100,10 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
 | 
	
		
			
				|  |  |     private ConsultDao consultDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private DictService dictService;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BaseEmergencyWarnLogDao logDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private SecurityMonitoringOrderDao securityMonitoringOrderDao;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 新建居民紧急救助
 | 
	
	
		
			
				|  | @ -114,6 +121,12 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
 | 
	
		
			
				|  |  |             result.put(ResponseContant.resultMsg,failMsg);
 | 
	
		
			
				|  |  |             return result;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (emergencyAssistanceDao.findByPatientAndStatus(patient,EmergencyAssistanceDO.Status.apply.getType())!=null){
 | 
	
		
			
				|  |  |             String failMsg = "当前居民存在发起中工单,请完成后再申请";
 | 
	
		
			
				|  |  |             result.put(ResponseContant.resultFlag, ResponseContant.fail);
 | 
	
		
			
				|  |  |             result.put(ResponseContant.resultMsg,failMsg);
 | 
	
		
			
				|  |  |             return result;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         assistanceDO.setOrderSource(orderSource);
 | 
	
		
			
				|  |  |         assistanceDO.setStatus(1);
 | 
	
		
			
				|  |  |         assistanceDO.setPatient(patient);
 | 
	
	
		
			
				|  | @ -173,22 +186,6 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
 | 
	
		
			
				|  |  |             result.put(ResponseContant.resultMsg,failMsg);
 | 
	
		
			
				|  |  |             return result;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         //获取距离患者最近的一个医生(默认直线距离最近的医生)
 | 
	
		
			
				|  |  | //        double distance = 0.0;
 | 
	
		
			
				|  |  | //        for (BaseDoctorDO doctorDO:doctorDOS){
 | 
	
		
			
				|  |  | //            if (StringUtils.isBlank(doctorDO.getDoctorLat())||StringUtils.isBlank(doctorDO.getDoctorLon())){
 | 
	
		
			
				|  |  | //                continue;
 | 
	
		
			
				|  |  | //            }
 | 
	
		
			
				|  |  | //            double distanceTmp = countDistance.getDistance(Double.parseDouble(assistanceDO.getServeLat()),Double.parseDouble(assistanceDO.getServeLon()),Double.parseDouble(doctorDO.getDoctorLat()),Double.parseDouble(doctorDO.getDoctorLon()));
 | 
	
		
			
				|  |  | //            if (distanceTmp>distance){
 | 
	
		
			
				|  |  | //                distance = distanceTmp;
 | 
	
		
			
				|  |  | //                assistanceDO.setDoctor(doctorDO.getId());
 | 
	
		
			
				|  |  | //                assistanceDO.setDoctorName(doctorDO.getName());
 | 
	
		
			
				|  |  | //                assistanceDO.setDoctorAddress(doctorDO.getDoctorLocateAddress());
 | 
	
		
			
				|  |  | //                assistanceDO.setDoctorLon(doctorDO.getDoctorLon());
 | 
	
		
			
				|  |  | //                assistanceDO.setDoctorLat(doctorDO.getDoctorLat());
 | 
	
		
			
				|  |  | //            }
 | 
	
		
			
				|  |  | //        }
 | 
	
		
			
				|  |  |         assistanceDO = emergencyAssistanceDao.save(assistanceDO);
 | 
	
		
			
				|  |  |         //创建im会话  紧急救助咨询的sessionid  为居民code+(wlyy_consult_team表consult)+20
 | 
	
		
			
				|  |  |         JSONObject IMObj = consultTeamService.addServiceConsult(assistanceDO.getId(),patient,proxyPatient,null);
 | 
	
	
		
			
				|  | @ -273,7 +270,7 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
 | 
	
		
			
				|  |  |             case -2:statusName="误警报";break;
 | 
	
		
			
				|  |  |             case -1:statusName="已取消";break;
 | 
	
		
			
				|  |  |             case 0:statusName="已完成";break;
 | 
	
		
			
				|  |  |             case 1:statusName="申请中";break;
 | 
	
		
			
				|  |  |             case 1:statusName="预警中";break;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         emergencyOrderVO.setStatusName(statusName);
 | 
	
		
			
				|  |  |         emergencyOrderVO.setOrderId(orderID);
 | 
	
	
		
			
				|  | @ -287,6 +284,9 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
 | 
	
		
			
				|  |  |         emergencyOrderVO.setSex(patientDO.getSex());
 | 
	
		
			
				|  |  |         emergencyOrderVO.setPhone(assistanceDO.getPatientPhone());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<BaseEmergencyWarnLogDO> logDOS = logDao.findByOrderIdOrderByCreateTimeDesc(assistanceDO.getId());
 | 
	
		
			
				|  |  |         emergencyOrderVO.setOrderLogInfo(logDOS);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(StringUtils.isNotBlank(patientDO.getIdcard())){
 | 
	
		
			
				|  |  |             emergencyOrderVO.setAge((IdCardUtil.getAgeForIdcard(patientDO.getIdcard()))+"");
 | 
	
		
			
				|  |  |         }
 | 
	
	
		
			
				|  | @ -314,7 +314,7 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
 | 
	
		
			
				|  |  |         //附加信息 紧急救助无
 | 
	
		
			
				|  |  |         //通知对象
 | 
	
		
			
				|  |  |         List<Map<String,Object>> noticePersons = new ArrayList<>();
 | 
	
		
			
				|  |  |         JSONArray familyArr =  familyMemberService.getPatientMembers(assistanceDO.getPatient(),null,null,null);
 | 
	
		
			
				|  |  |         JSONArray familyArr =  familyMemberService.getPatientMembers(assistanceDO.getPatient(),null,null,null,null);
 | 
	
		
			
				|  |  |         String emeCallPhone = "";
 | 
	
		
			
				|  |  |         if (assistanceDO.getOrderSource()!=1){//设备发起工单
 | 
	
		
			
				|  |  |             String category = assistanceDO.getOrderSource()==2?"4":"7";
 | 
	
	
		
			
				|  | @ -535,7 +535,7 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
 | 
	
		
			
				|  |  |         tmpObj.put("status_-2",0);//误报警
 | 
	
		
			
				|  |  |         tmpObj.put("status_-1",0);//已取消
 | 
	
		
			
				|  |  |         tmpObj.put("status_0",0);//已完成
 | 
	
		
			
				|  |  |         tmpObj.put("status_1",0);//申请中
 | 
	
		
			
				|  |  |         tmpObj.put("status_1",0);//预警中
 | 
	
		
			
				|  |  |         StringBuilder sql = new StringBuilder(" select ord.status,count(ord.id) count from base_emergency_assistance_order ord where 1=1") ;
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(patient)){
 | 
	
		
			
				|  |  |             sql.append( " and (ord.patient='"+patient+"' or ord.proxy_patient='"+patient+"' ) group by ord.status  ");
 | 
	
	
		
			
				|  | @ -840,6 +840,18 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
 | 
	
		
			
				|  |  |             responseDO.setDoctor(doctor);
 | 
	
		
			
				|  |  |             responseDO.setResponseTime(new Date());
 | 
	
		
			
				|  |  |             emergencyWarnDoctorResponseDao.save(responseDO);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             BaseDoctorDO doctorDO = doctorDao.findById(doctor);
 | 
	
		
			
				|  |  |             if (null!=doctorDO){
 | 
	
		
			
				|  |  |                 BaseEmergencyWarnLogDO logDO = new BaseEmergencyWarnLogDO();
 | 
	
		
			
				|  |  |                 logDO.setUserCode(doctor);
 | 
	
		
			
				|  |  |                 logDO.setUserName(doctorDO.getName());
 | 
	
		
			
				|  |  |                 logDO.setOrderId(orderId);
 | 
	
		
			
				|  |  |                 logDO.setUserType(2);
 | 
	
		
			
				|  |  |                 logDO.setCreateTime(new Date());
 | 
	
		
			
				|  |  |                 logDO.setContent("助老员"+doctorDO.getName()+"前往定位");
 | 
	
		
			
				|  |  |                 logDao.save(logDO);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         result.put("resultFlag", 1);
 | 
	
	
		
			
				|  | @ -916,30 +928,6 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
 | 
	
		
			
				|  |  |         return null;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public String test(String doctor,String orderID){
 | 
	
		
			
				|  |  | //        JSONObject message = new JSONObject();
 | 
	
		
			
				|  |  | //        message.put("session_id","808080eb78b5d8e90178b5fcfa330001_4028030c78f1df510178f217a6c50001_20");
 | 
	
		
			
				|  |  | //        message.put("sender_name","一一");
 | 
	
		
			
				|  |  | //        message.put("sender_code","808080eb78b5d8e90178b5fcfa330001");
 | 
	
		
			
				|  |  | //        message.put("order_id","4028030c78f1df510178f217a6a70000");
 | 
	
		
			
				|  |  | //        message.put("content_type",40);
 | 
	
		
			
				|  |  | //        imUtill.sendMDTSocketMessageToDoctor(doctor,message.toString());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //结束救助咨询
 | 
	
		
			
				|  |  |         String sql = "select id from base_emergency_assistance_order where status!=1";
 | 
	
		
			
				|  |  |         List<String> ids = jdbcTemplate.queryForList(sql,String.class);
 | 
	
		
			
				|  |  |         for (String id:ids){
 | 
	
		
			
				|  |  |             EmergencyAssistanceDO assistanceDO = emergencyAssistanceDao.findOne(orderID);
 | 
	
		
			
				|  |  |             if (!consultTeamService.finishConsult(assistanceDO.getId(),assistanceDO.getPatient(),doctor,2)){
 | 
	
		
			
				|  |  |                 String failMsg = "咨询结束失败 无法完成工单";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 return failMsg;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return null;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public JSONObject getDoctorOrderList(String doctor, int page, int size) {
 | 
	
		
			
				|  |  |         page = page>0?page-1:0;
 | 
	
		
			
				|  |  |         String sqlCount = "select count(ord.id) from  base_life_care_order ord where ord.doctor = '"+doctor+"' ";
 | 
	
	
		
			
				|  | @ -968,10 +956,10 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public PageEnvelop getEmergencyAssistanceList(Integer page, Integer size,String doctor){
 | 
	
		
			
				|  |  |         page = page>0?page-1:0;
 | 
	
		
			
				|  |  |         String sql = " select '20' as OrderType,ord.id,ord.doctor,p.name,'紧急呼叫' as serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time" +
 | 
	
		
			
				|  |  |         String sql = " select '20' as OrderType,ord.id,ord.doctor,ord.status,p.name,'紧急呼叫' as serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time" +
 | 
	
		
			
				|  |  |                 " from base_emergency_assistance_order ord INNER JOIN base_doctor p on ord.doctor = p.id where ord.doctor='"+doctor+"'" ;
 | 
	
		
			
				|  |  |         sql +="UNION " +
 | 
	
		
			
				|  |  |                 "select  '22' as 'OrderType',ord.id,ord.doctor,p.name,ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time " +
 | 
	
		
			
				|  |  |                 "select  '22' as 'OrderType',ord.id,ord.doctor,p.name,ord.status,ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time " +
 | 
	
		
			
				|  |  |                 "from base_security_monitoring_order ord INNER JOIN base_doctor p on ord.doctor = p.id  where ord.doctor='"+doctor+"'" ;
 | 
	
		
			
				|  |  |         String countSql = "select count(id) from ("+sql+")A ";
 | 
	
		
			
				|  |  |         long count = jdbcTemplate.queryForObject(countSql,long.class);
 | 
	
	
		
			
				|  | @ -980,4 +968,32 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
 | 
	
		
			
				|  |  |         return PageEnvelop.getSuccessListWithPage("查询成功",list,page,size,count);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public BaseEmergencyWarnLogDO doctorSendMessageLog(String doctor,String type,String session_id,String message){
 | 
	
		
			
				|  |  |         BaseEmergencyWarnLogDO logDO = new BaseEmergencyWarnLogDO();
 | 
	
		
			
				|  |  |         BaseDoctorDO doctorDO = doctorDao.findById(doctor);
 | 
	
		
			
				|  |  |         if (null!=doctorDO){
 | 
	
		
			
				|  |  |             if ("20".equals(type)){//紧急
 | 
	
		
			
				|  |  |                 List<EmergencyAssistanceDO> orderDOS = emergencyAssistanceDao.findBySessionId(session_id);
 | 
	
		
			
				|  |  |                 if (orderDOS.size()>0){
 | 
	
		
			
				|  |  |                     logDO.setOrderId(orderDOS.get(0).getId());
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }else if ("22".equals(type)){//安防
 | 
	
		
			
				|  |  |                 String[]str  = session_id.split("_");
 | 
	
		
			
				|  |  |                 ConsultTeamDo consultTeam = consultTeamDao.findByConsult(str[1]);
 | 
	
		
			
				|  |  |                 if (null!=consultTeam){
 | 
	
		
			
				|  |  |                     logDO.setOrderId(consultTeam.getRelationCode());
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (StringUtils.isNotBlank(logDO.getOrderId())){
 | 
	
		
			
				|  |  |                 logDO.setUserCode(doctor);
 | 
	
		
			
				|  |  |                 logDO.setUserName(doctorDO.getName());
 | 
	
		
			
				|  |  |                 logDO.setUserType(2);
 | 
	
		
			
				|  |  |                 logDO.setContent("助老员"+doctorDO.getName()+"发送消\""+message+"\"");
 | 
	
		
			
				|  |  |                 logDO.setCreateTime(new Date());
 | 
	
		
			
				|  |  |                 logDao.save(logDO);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return logDO;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |