|  | @ -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};";
 | 
	
	
		
			
				|  | @ -319,6 +352,7 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
 | 
	
		
			
				|  |  |         //状态 待服务 1、已完成 2 、已取消 -1
 | 
	
		
			
				|  |  |         res.put("1",0);
 | 
	
		
			
				|  |  |         res.put("2",0);
 | 
	
		
			
				|  |  |         res.put("3",0);
 | 
	
		
			
				|  |  |         res.put("-1",0);
 | 
	
		
			
				|  |  |         String countSql = "SELECT " +
 | 
	
		
			
				|  |  |                 "  count(o.id) as count, " +
 | 
	
	
		
			
				|  | @ -401,6 +435,7 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
 | 
	
		
			
				|  |  |         return result;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 申请生活照料
 | 
	
		
			
				|  |  |      *
 | 
	
	
		
			
				|  | @ -413,40 +448,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 +498,9 @@ 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);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         orderDO.setStatus(1);
 | 
	
		
			
				|  |  |         this.save(orderDO);
 | 
	
		
			
				|  |  |         result.put("orderId",orderDO.getId());
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -498,7 +521,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 +565,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 +608,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(!LifeCareOrderDO.Status.waitForAccept.getType().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;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |