| 
					
				 | 
			
			
				@ -14,10 +14,14 @@ import com.yihu.jw.entity.base.im.ConsultTeamDo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.patient.BasePatientDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.wx.BasePatientWechatDo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.care.doorCoach.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.care.lifeCare.LifeCareFeeDetailDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.care.lifeCare.LifeCareOrderDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.message.SystemMessageDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.order.BusinessOrderDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.message.dao.SystemMessageDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.im.dao.ConsultDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.im.util.ImUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.order.dao.BusinessOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.patient.dao.BasePatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.ResponseContant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.common.IdCardUtil; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -97,6 +101,8 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseServiceNewsService serviceNewsService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private PayService payService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BusinessOrderDao businessOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 创建上门辅导服务工单 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -137,7 +143,8 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setCreateUser(orderDO.getProxyPatient()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setCreateUserName(orderDO.getProxyPatientName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setOrderInfo("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setStatus(0);//待付款 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setPayStatus(0);//待付款 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        orderDO.setConclusionStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isEmpty(orderDO.getPatient())){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -158,7 +165,9 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //已取消的订单也可以申请 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        boolean bool = baseDoorCoachOrderDao.existsByPatientAndStatusIn(orderDO.getPatient(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                new Integer[]{BaseDoorCoachOrderDO.Status.waitForSend.getType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                new Integer[]{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        BaseDoorCoachOrderDO.Status.waitForPay.getType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        BaseDoorCoachOrderDO.Status.waitForSend.getType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        BaseDoorCoachOrderDO.Status.waitForAccept.getType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        BaseDoorCoachOrderDO.Status.waitForServe.getType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        BaseDoorCoachOrderDO.Status.accept.getType(), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -197,6 +206,11 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject proxyCreate(String jsonData,String doctorCode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //医养暂无该功能--屏蔽 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put(ResponseContant.resultMsg, "暂无该功能"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject jsonObjectParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            jsonObjectParam = JSONObject.parseObject(jsonData); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -238,7 +252,8 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isBlank(orderDO.getId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //已取消的订单也可以申请 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            boolean bool = baseDoorCoachOrderDao.existsByPatientAndStatusIn(orderDO.getPatient(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    new Integer[]{BaseDoorCoachOrderDO.Status.waitForAccept.getType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    new Integer[]{BaseDoorCoachOrderDO.Status.waitForPay.getType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            BaseDoorCoachOrderDO.Status.waitForAccept.getType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            BaseDoorCoachOrderDO.Status.waitForServe.getType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            BaseDoorCoachOrderDO.Status.accept.getType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            BaseDoorCoachOrderDO.Status.waitForSend.getType() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -273,7 +288,8 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setUpdateUser(orderDO.getProxyPatient()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setUpdateUserName(orderDO.getProxyPatientName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setStatus(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setStatus(0);//待付款 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setPayStatus(0);//待付款 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setType(3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setDispatcherResponseTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        this.save(orderDO); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -288,19 +304,31 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sendWeixinMessage(4,orderDO.getDoctor(),orderDO.getPatient()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //发起支付订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        payService.submitOrder(orderDO.getPatient(),"3",orderDO.getId(),orderDO.getTotalFee().doubleValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BusinessOrderDO businessOrderDO =  payService.submitOrder(orderDO.getPatient(),"3",orderDO.getId(),orderDO.getTotalFee().doubleValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put(ResponseContant.resultFlag, ResponseContant.success); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //支付完成后开始上门辅导订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject payOrderAfter(String orderId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoorCoachOrderDO orderDO= baseDoorCoachOrderDao.findOne(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (orderDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            serviceNewsService.addServiceNews(orderDO.getPatientName(),orderDO.getPatient(),"1",null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (orderDO.getPayWay()!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (orderDO.getType()==3){//医生代预约 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BusinessOrderDO businessOrderDO = businessOrderDao.selectByRelationCode(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (businessOrderDO==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String failMsg = "未查询到该订单"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseDoorCoachOrderDO orderDO= baseDoorCoachOrderDao.findOne(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (orderDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                orderDO.setPayStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                orderDO.setPayWay(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                orderDO.setPayTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (orderDO.getType()== 3){//医生代预约 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    orderDO.setStatus(2);//待接单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    this.save(orderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    // 给服务医生发接单消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    this.createMessage("服务工单待接单","707",orderDO.getProxyPatient(),orderDO.getProxyPatientName(), orderDO.getId(),orderDO.getDoctor(),orderDO.getDoctorName(), null,"您有新的服务工单,请前往处理"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //发送智能助手消息 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -336,6 +364,8 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        BaseDoctorDO transDoctor = doctorDao.findById(orderDO.getDoctor()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        sendOrderToDoctor(orderDO.getId(),null,"system","系统",transDoctor.getId(),transDoctor.getName(),transDoctor.getJobTitleName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        orderDO.setStatus(1);//待派单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        this.save(orderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        JSONObject dispatcherJson = queryDispatcherInfoByPatient(orderDO.getHospital()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (dispatcherJson.getInteger("resultFlag")==1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            List<Map<String,Object>> dispatcherInfoList = (List<Map<String, Object>>) dispatcherJson.get(ResponseContant.resultMsg); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -354,16 +384,36 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    result.put(ResponseContant.resultFlag, ResponseContant.success); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String failMsg = "订单未支付"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String failMsg = "工单不存在"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String failMsg = "工单不存在"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //退款后回调 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject refundOrderAfter(String orderId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseDoorCoachOrderDO orderDO= baseDoorCoachOrderDao.findOne(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (orderDO == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String failMsg = "工单不存在"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setPayStatus(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.save(orderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String failMsg = "success"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -807,57 +857,73 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.error(failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(orderDO.getStatus() > BaseDoorCoachOrderDO.Status.waitForServe.getType()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String failMsg = "只有医生服务前的工单才可取消:," + orderId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.error(failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //触发退款流程,退款失败时无法取消工单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String failMsg = "退款失败,无法取消工单:," + orderId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setCancelType(type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setCancelTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setCancelReason(reason); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!StringUtils.isEmpty(dispatcher)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setDoctor(dispatcher); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setDoctorName(dispatcherName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setDispatcher(dispatcher); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setDispatcherName(dispatcherName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //如果是调度员取消,推送IM取消工单json消息, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(dispatcher)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (!consultTeamService.finishConsult(orderDO.getId(),orderDO.getPatient(),dispatcher,2)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String failMsg = "咨询结束失败 无法取消工单"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(type==2){//v0.5.1 患者仅未支付的订单能取消此时未正式开始工单,未创建咨询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(orderDO.getStatus() != BaseDoorCoachOrderDO.Status.waitForPay.getType()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultMsg,failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String failMsg = "无法取消工单,已支付的工单需要到我的订单中进行申请退款," + orderId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.error(failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (!consultTeamService.finishConsult(orderDO.getId(),orderDO.getPatient(),orderDO.getPatient(),1)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String failMsg = "咨询结束失败 无法取消工单"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultMsg,failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else{//调度员拒单,此时工单已支付抵达调度员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (orderDO.getStatus() > BaseDoorCoachOrderDO.Status.waitForPay.getType()&&1==orderDO.getPayWay()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    BusinessOrderDO businessOrderDO = businessOrderDao.selectByRelationCode(orderDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (businessOrderDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (1 == businessOrderDO.getStatus()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            //退款流程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            payService.orderRefund(businessOrderDO.getOrderNo(),"调度员拒单退款"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            orderDO.setPayStatus(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //如果是调度员取消,推送IM取消工单json消息, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (StringUtils.isNotBlank(dispatcher)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (!consultTeamService.finishConsult(orderDO.getId(),orderDO.getPatient(),dispatcher,2)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        String failMsg = "咨询结束失败 无法取消工单"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        result.put(ResponseContant.resultMsg,failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(!StringUtils.isEmpty(dispatcher)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    orderDO.setDoctor(dispatcher); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    orderDO.setDoctorName(dispatcherName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    orderDO.setDispatcher(dispatcher); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    orderDO.setDispatcherName(dispatcherName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(type == BaseDoorCoachOrderDO.CancelType.dispatcher.getType()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    messageUtil.updateDoorCoachMessage(orderDO,new String[]{"702","703","730"},"732",dispatcher,dispatcher); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                else if(type == BaseDoorCoachOrderDO.CancelType.patient.getType()){                   //居民取消,消息列表也应该不显示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    messageUtil.updateDoorCoachMessage(orderDO,new String[]{"702","703","730"},"patientCancel",dispatcher,dispatcher); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ConsultDo consult = consultDao.queryByRelationCode(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                // 发送微信模板消息,通知居民工单已取消(smyyyqx-上门预约已取消) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String first = "key1您好,您的上门预约订单已退回,点击查看原因"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BasePatientDO patient = patientDao.findById(orderDO.getPatient()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                first  = first.replace("key1", null != patient.getName() ? patient.getName() : ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONObject json = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                json.put("id", orderDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<BasePatientWechatDo> basePatientWechatDos = basePatientWechatDao.findByWechatIdAndPatientId(wxId,patient.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (basePatientWechatDos.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String openId = basePatientWechatDos.get(0).getOpenid(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","smyyyqx",openId,first,null,null,2,json, DateUtil.dateToChineseDate(new Date()),"上门预约已取消","已取消"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String failMsg = "退款失败,无法取消工单:," + orderId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setCancelType(type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setCancelTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setCancelReason(reason); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setStatus(BaseDoorCoachOrderDO.Status.cancel.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        this.save(orderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(type == BaseDoorCoachOrderDO.CancelType.dispatcher.getType()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            messageUtil.updateDoorCoachMessage(orderDO,new String[]{"702","703","730"},"732",dispatcher,dispatcher); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        else if(type == BaseDoorCoachOrderDO.CancelType.patient.getType()){                   //居民取消,消息列表也应该不显示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            messageUtil.updateDoorCoachMessage(orderDO,new String[]{"702","703","730"},"patientCancel",dispatcher,dispatcher); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //保存取消记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoorCoachCancelLogDO cancelLogDO = new BaseDoorCoachCancelLogDO(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -878,19 +944,7 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject confirmInfoJson = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        confirmInfoJson.put("confirmInfo",confirmInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        this.orderWithConfirmLogAdd(result,confirmInfo,orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ConsultDo consult = consultDao.queryByRelationCode(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 发送微信模板消息,通知居民工单已取消(smyyyqx-上门预约已取消) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String first = "key1您好,您的上门预约订单已退回,点击查看原因"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BasePatientDO patient = patientDao.findById(orderDO.getPatient()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        first  = first.replace("key1", null != patient.getName() ? patient.getName() : ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject json = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        json.put("id", orderDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BasePatientWechatDo> basePatientWechatDos = basePatientWechatDao.findByWechatIdAndPatientId(wxId,patient.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (basePatientWechatDos.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String openId = basePatientWechatDos.get(0).getOpenid(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","smyyyqx",openId,first,null,null,2,json, DateUtil.dateToChineseDate(new Date()),"上门预约已取消","已取消"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 工单状态变更记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoorCoachProcessLogDO processLogDO = new BaseDoorCoachProcessLogDO(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1133,7 +1187,8 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        order.setTotalFee(totalFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        this.save(order); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1188,6 +1243,7 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Integer> map = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer all = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer waitForPay = 0;//待付款 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer waitForAccept = 0;//待接单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer waitForServe = 0;//待服务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer served = 0;//已完成 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1198,6 +1254,9 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "-1": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    cancel += Integer.valueOf(tmp.get("num").toString()) ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "0": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    waitForPay += Integer.valueOf(tmp.get("num").toString()) ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "1": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    waitForAccept += Integer.valueOf(tmp.get("num").toString()) ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1223,6 +1282,7 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        all = waitForAccept+waitForServe+served+cancel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("all",all); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("waitForPay",waitForAccept); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("waitForAccept",waitForAccept); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("waitForServe",waitForServe); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("served",served); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1307,6 +1367,7 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String statusName = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            switch (statustemp){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case -1:statusName="已取消";break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case 0:statusName="待付款";break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case 1:statusName="待服务";break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case 2:statusName="待服务";break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case 3:statusName="待服务";break; 
			 |