| 
					
				 | 
			
			
				@ -1,10 +1,12 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.care.service.lifeCare; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.care.dao.lifeCare.LifeCareCancelLogDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.care.dao.lifeCare.LifeCareFeeDetailDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.care.dao.lifeCare.LifeCareItemDictDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.care.dao.lifeCare.LifeCareOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.care.service.common.OrderNoService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.care.util.MessageUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.BaseDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -21,9 +23,11 @@ import com.yihu.jw.patient.dao.BasePatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.ResponseContant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.PageEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.common.IdCardUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.date.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.entity.EntityUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.dao.BasePatientWechatDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.mysql.query.BaseJpaService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.collections.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.collections.map.HashedMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.Logger; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -70,6 +74,29 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseOrgDao baseOrgDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseDoctorDao doctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private OrderNoService orderNoService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 记录完成情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param orderId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param conclusionImgs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param conclusionRemark 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Integer updateConclusion(String orderId,String conclusionImgs,String conclusionRemark,String doctorId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        LifeCareOrderDO lifeCareOrderDO = lifeCareOrderDao.findOne(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!lifeCareOrderDO.getStatus().equals(LifeCareOrderDO.Status.signIn.getType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!doctorId.equals(lifeCareOrderDO.getSignDoctor())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setConclusionImgs(conclusionImgs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setConclusionRemark(conclusionRemark); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setConclusionTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDao.save(lifeCareOrderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 记录完成情况 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -77,18 +104,23 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param complereImgs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param completeRemark 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void completeOrder(String orderId,String complereImgs,String completeRemark,String doctorId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Integer completeOrder(String orderId,String complereImgs,String completeRemark,String doctorId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoctorDO doctorDO = doctorDao.findById(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        LifeCareOrderDO lifeCareOrderDO = lifeCareOrderDao.findOne(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(lifeCareOrderDO.getStatus().equals(LifeCareOrderDO.Status.waitForAccept.getType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            lifeCareOrderDO.setDoctor(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            lifeCareOrderDO.setDoctorName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            lifeCareOrderDO.setStatus(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            lifeCareOrderDO.setCompleteImgs(complereImgs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            lifeCareOrderDO.setCompleteRemark(completeRemark); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            lifeCareOrderDO.setCompleteTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            lifeCareOrderDao.save(lifeCareOrderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!lifeCareOrderDO.getStatus().equals(LifeCareOrderDO.Status.signIn.getType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!doctorId.equals(lifeCareOrderDO.getSignDoctor())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setDoctor(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setDoctorName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setStatus(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setCompleteImgs(complereImgs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setCompleteRemark(completeRemark); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setCompleteTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDao.save(lifeCareOrderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -140,9 +172,10 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql +=  "  WHERE  a.hospital = ? group BY a.status"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql, hospital); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Integer> map = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //状态 待服务 1、已完成 2 、已取消 -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //状态 待服务 1、已完成 2 、已取消 -1 已签到 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("1",0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("2",0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("3",0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("-1",0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int total = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (Map<String, Object> one:list){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -200,7 +233,7 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ( base_life_care_order o " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " LEFT JOIN base_patient p ON o.patient = p.id ) "+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " WHERE " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.hospital = '{hospital}' and o.type != 3 " +buffer+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.hospital = '{hospital}' " +buffer+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " AND ( o.`status` = {status} OR -100 = {status} ) " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ORDER BY o.create_time desc " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " LIMIT {start},{end};"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -401,6 +434,7 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 申请生活照料 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -413,40 +447,33 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject jsonObjectParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        LifeCareOrderDO orderDO = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            jsonObjectParam = JSONObject.parseObject(jsonData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (jsonObjectParam.getJSONObject("order").getInteger("type")==1||jsonObjectParam.getJSONObject("order").getInteger("type")==2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO = EntityUtils.jsonToEntity(jsonObjectParam.get("order").toString(), LifeCareOrderDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer type = orderDO.getType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (type==1||type==2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //本人或家人代发起 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BasePatientDO patientDO = patientDao.findById(proxyPatient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                jsonObjectParam.put("proxyPatient",proxyPatient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                jsonObjectParam.put("proxyPatientName",patientDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                jsonObjectParam.put("proxyPatientPhone",patientDO.getMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (jsonObjectParam.getJSONObject("order").getInteger("type")==3) {//医生代发起 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                orderDO.setProxyPatient(proxyPatient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                orderDO.setProxyPatientName(patientDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                orderDO.setProxyPatientPhone(patientDO.getMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else if (type==3) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //医生代发起 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BaseDoctorDO doctorDO = doctorDao.findById(proxyPatient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                jsonObjectParam.put("proxyPatient",proxyPatient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                jsonObjectParam.put("proxyPatientName",doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                jsonObjectParam.put("proxyPatientPhone",doctorDO.getMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                orderDO.setProxyPatient(proxyPatient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                orderDO.setProxyPatientName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                orderDO.setProxyPatientPhone(doctorDO.getMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String failMsg = "参数转换成JSON对象异常:" + e.getMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.error(failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        LifeCareOrderDO orderDO = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO = EntityUtils.jsonToEntity(jsonObjectParam.get("order").toString(), LifeCareOrderDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String failMsg = "生活照料工单服务基本信息:" + e.getMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.error(failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setCreateUser(orderDO.getProxyPatient()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setCreateUserName(orderDO.getProxyPatientName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -470,14 +497,8 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseOrgDO orgDO = baseOrgDao.findByCode(orderDO.getHospital()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setHospitalName(orgDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setNumber(orderNoService.getOrderNo(1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //判断创建生活照料类型,发起类型(1本人发起 2家人待预约 3医生代预约) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(orderDO.getProxyPatient().equals(orderDO.getPatient())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setType(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if(!orderDO.getProxyPatient().equals(orderDO.getPatient())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setType(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        this.save(orderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("orderId",orderDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -498,7 +519,7 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            totalFee = new BigDecimal(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for ( LifeCareFeeDetailDO feeDetailDO : feeDetailDOList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (LifeCareFeeDetailDO feeDetailDO : feeDetailDOList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //工单主表中记录总费用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                totalFee = totalFee.add(feeDetailDO.getFee().multiply(BigDecimal.valueOf(feeDetailDO.getNumber()))); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -542,6 +563,30 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public boolean orderWithFeeDelete(JSONObject jsonObjectParam,LifeCareOrderDO orderDO) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BigDecimal totalFee = orderDO.getTotalFee(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //删除的服务项 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONArray itemArray = jsonObjectParam.getJSONArray("deleteItemArr"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!CollectionUtils.isEmpty(itemArray)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<LifeCareFeeDetailDO> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //删除的服务项要减去服务项费用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BigDecimal itemFee = new BigDecimal(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for(Object oneId : itemArray) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONObject oneIdJson = (JSONObject) oneId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                LifeCareFeeDetailDO doorFeeDetail = lifeCareFeeDetailDao.findOne(String.valueOf(oneIdJson.get("id"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(doorFeeDetail.getPayStatus()==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    doorFeeDetail.setStatus(3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    doorFeeDetail.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    list.add(doorFeeDetail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    itemFee = itemFee.add(doorFeeDetail.getFee().multiply(BigDecimal.valueOf(doorFeeDetail.getNumber()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            lifeCareFeeDetailDao.save(list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public PageEnvelop getPatientOrderList(String patient, Integer status, int page, int size) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        page = page>0?page-1:0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -561,4 +606,138 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 签到保存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param orderId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param signTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param signWay 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param signLocation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param signImg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public LifeCareOrderDO signIn(String orderId, String signTime, Integer signWay, String signLocation, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             String signImg, String twoDimensionalCode,String doctorId) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        LifeCareOrderDO lifeCareOrderDO = this.lifeCareOrderDao.findOne(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!"1".equals(lifeCareOrderDO.getStatus())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //待服务状态才能签到 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.info("签到失败"+lifeCareOrderDO.getId()+":"+lifeCareOrderDO.getStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setDoctorSignTime(DateUtil.strToDate(signTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setDoctorSignWay(signWay); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 签到方式-2扫码时,需要去解析地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setDoctorSignLocation(signLocation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setDoctorSignImg(StringUtils.isEmpty(signImg) ? null : signImg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //3 已签到 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setStatus(3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoctorDO doctorDO = doctorDao.findById(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setSignDoctor(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setSignDoctorName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setUpdateUser(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        lifeCareOrderDO.setUpdateUserName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(signWay == 4 ){//扫码签到 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (twoDimensionalCode.equals(lifeCareOrderDO.getNumber())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                lifeCareOrderDO = lifeCareOrderDao.save(lifeCareOrderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return lifeCareOrderDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.info("扫码签到失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            lifeCareOrderDO = lifeCareOrderDao.save(lifeCareOrderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return lifeCareOrderDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 生活照料代预约-- 废弃用原来的接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param jsonData 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param doctorCode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject proxyCreate(String jsonData,String doctorCode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject jsonObjectParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            jsonObjectParam = JSONObject.parseObject(jsonData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String failMsg = "参数转换成JSON对象异常:" + e.getMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.error(failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        LifeCareOrderDO orderDO = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO = EntityUtils.jsonToEntity(jsonObjectParam.get("order").toString(), LifeCareOrderDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String failMsg = "生活照料工单服务基本信息:" + e.getMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.error(failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isEmpty(orderDO.getPatient())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String failMsg = "当前服务对象code为空,请联系管理员检查参数!patient = " + orderDO.getPatient(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.error(failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //医生代预约 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setType(3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoctorDO doctorDO = doctorDao.findById(doctorCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setProxyPatient(doctorCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setProxyPatientName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setProxyPatientPhone(doctorDO.getMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //判断工单是否已存在,新建或者编辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isBlank(orderDO.getId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //已取消的订单也可以申请 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            boolean bool = lifeCareOrderDao.existsByPatientAndStatusIn(orderDO.getPatient(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    new Integer[]{LifeCareOrderDO.Status.waitForAccept.getType() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(bool){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String failMsg = "当前服务对象存在未完成的生活照料,请先完成该服务!"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.error(failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setNumber(orderNoService.getOrderNo(1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setHospital(jsonObjectParam.getJSONObject("hospital").get("code").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setCreateUser(orderDO.getProxyPatient()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setCreateUserName(orderDO.getProxyPatientName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            LifeCareOrderDO serviceOrderDO = lifeCareOrderDao.findOne(orderDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 删除出诊医生或服务项 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Boolean b = this.orderWithFeeDelete(jsonObjectParam, serviceOrderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(b){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String failMsg = "删除服务项失败!"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put(ResponseContant.resultMsg, failMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setNumber(serviceOrderDO.getNumber()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setHospital(serviceOrderDO.getHospital()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setUpdateUser(orderDO.getProxyPatient()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setUpdateUserName(orderDO.getProxyPatientName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setStatus(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        orderDO.setType(3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        this.save(orderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("orderId",orderDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //新增工单与服务项费用关联关系 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (orderWithPackageItemFeeAdd(result, jsonObjectParam, orderDO,doctorCode)) {return result;} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put(ResponseContant.resultFlag, ResponseContant.success); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |