|  | @ -1,30 +1,32 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.service.rehabilitation;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONArray;
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | import com.yihu.jw.dao.rehabilitation.PatientRehabilitationPlanDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.dao.rehabilitation.RehabilitationDetailDao;
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.node.ObjectNode;
 | 
	
		
			
				|  |  | import com.yihu.jw.dao.rehabilitation.PatientRehabilitationPlanDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.dao.rehabilitation.RehabilitationPlanTemplateDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.dao.rehabilitation.RehabilitationTemplateDetailDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.specialist.HospitalServiceItemDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.specialist.rehabilitation.PatientRehabilitationPlanDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.specialist.rehabilitation.RehabilitationDetailDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.specialist.rehabilitation.PatientRehabilitationPlanDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.specialist.rehabilitation.RehabilitationPlanTemplateDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.specialist.rehabilitation.RehabilitationTemplateDetailDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.iot.common.UploadVO;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.specialist.PatientSignInfoVO;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.web.MixEnvelop;
 | 
	
		
			
				|  |  | import com.yihu.jw.rm.specialist.SpecialistMapping;
 | 
	
		
			
				|  |  | import com.yihu.jw.service.FileUploadService;
 | 
	
		
			
				|  |  | import com.yihu.jw.service.SpecialistHospitalServiceItemService;
 | 
	
		
			
				|  |  | import com.yihu.jw.service.SpecialistService;
 | 
	
		
			
				|  |  | import com.yihu.jw.util.common.QrcodeUtil;
 | 
	
		
			
				|  |  | import com.yihu.fastdfs.FastDFSUtil;
 | 
	
		
			
				|  |  | import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Value;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.BeanPropertyRowMapper;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.JdbcTemplate;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | import org.springframework.util.StringUtils;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import javax.servlet.http.HttpServletRequest;
 | 
	
		
			
				|  |  | import java.io.InputStream;
 | 
	
	
		
			
				|  | @ -32,6 +34,7 @@ import java.util.ArrayList;
 | 
	
		
			
				|  |  | import java.util.Date;
 | 
	
		
			
				|  |  | import java.util.List;
 | 
	
		
			
				|  |  | import java.util.Map;
 | 
	
		
			
				|  |  | import java.util.*;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * Created by humingfen on 2018/8/17.
 | 
	
	
		
			
				|  | @ -60,6 +63,10 @@ public class RehabilitationPlanService {
 | 
	
		
			
				|  |  |     private FileUploadService fileUploadService;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     protected HttpServletRequest request;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private SpecialistHospitalServiceItemService hospitalServiceItemService;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private SpecialistService specialistService;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public MixEnvelop<String, String> createRehabilitationTemplate(RehabilitationPlanTemplateDO templateDO) {
 | 
	
		
			
				|  |  |         templateDO.setCreateTime(new Date());
 | 
	
	
		
			
				|  | @ -88,18 +95,24 @@ public class RehabilitationPlanService {
 | 
	
		
			
				|  |  |         return MixEnvelop.getSuccess(SpecialistMapping.api_success,true);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public MixEnvelop<RehabilitationPlanTemplateDO, RehabilitationPlanTemplateDO> findRehabilitationPlanTemplate(Integer adminTeamCode, Integer page, Integer size) {
 | 
	
		
			
				|  |  |     public MixEnvelop<RehabilitationPlanTemplateDO, RehabilitationPlanTemplateDO> findRehabilitationPlanTemplate(Long adminTeamCode, String doctor, String patient) {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(page != null && size != null){
 | 
	
		
			
				|  |  |             String sql = "select * from wlyy_rehabilitation_plan_template t where t.admin_team_code = '" + adminTeamCode + "' and t.del = 1 ORDER BY t.create_time DESC LIMIT "+(page-1)*size+","+size;
 | 
	
		
			
				|  |  |             List<RehabilitationPlanTemplateDO> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper(RehabilitationPlanTemplateDO.class));
 | 
	
		
			
				|  |  |             String countSql = "select count(1) from wlyy_rehabilitation_plan_template t where t.admin_team_code = '" + adminTeamCode + "' and t.del = 1";
 | 
	
		
			
				|  |  |             Long count = jdbcTemplate.queryForObject(countSql, Long.class);
 | 
	
		
			
				|  |  |             return MixEnvelop.getSuccessListWithPage(SpecialistMapping.api_success,list,page,size,count);
 | 
	
		
			
				|  |  |         }else {
 | 
	
		
			
				|  |  |             List<RehabilitationPlanTemplateDO> list = templateDao.findByAdminTeamCode(adminTeamCode);
 | 
	
		
			
				|  |  |             return MixEnvelop.getSuccessList(SpecialistMapping.api_success,list, list.size());
 | 
	
		
			
				|  |  |         if(adminTeamCode == null && StringUtils.isNotBlank(doctor) && StringUtils.isNotBlank(patient)){
 | 
	
		
			
				|  |  |             PatientSignInfoVO patientSignSpecialistInfo = (PatientSignInfoVO) specialistService.findPatientSignSpecialistInfo(patient,doctor).getObj();
 | 
	
		
			
				|  |  |             adminTeamCode = patientSignSpecialistInfo.getTeamCode();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         List<RehabilitationPlanTemplateDO> list = templateDao.findByAdminTeamCode(adminTeamCode);
 | 
	
		
			
				|  |  |         return MixEnvelop.getSuccessList(SpecialistMapping.api_success,list, list.size());
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 根据模板id修改康复模板删除状态
 | 
	
		
			
				|  |  |      * @param id
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public MixEnvelop<Boolean,Boolean> deleteRehabilitationPlanTemplate(String id) {
 | 
	
		
			
				|  |  |         templateDao.updateDelById(id);
 | 
	
		
			
				|  |  |         return MixEnvelop.getSuccess(SpecialistMapping.api_success,true);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
	
		
			
				|  | @ -107,9 +120,9 @@ public class RehabilitationPlanService {
 | 
	
		
			
				|  |  |      * @param templateId
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public MixEnvelop<RehabilitationTemplateDetailDO, RehabilitationTemplateDetailDO> findTemplateDetailByTemplateId(String templateId) {
 | 
	
		
			
				|  |  |     public MixEnvelop<HospitalServiceItemDO, HospitalServiceItemDO> findTemplateDetailByTemplateId(String templateId) {
 | 
	
		
			
				|  |  |         List<String> hospitalServiceItemIds = templateDetailDao.findHospitalServiceItemIdByTemplateId(templateId);
 | 
	
		
			
				|  |  |         return MixEnvelop.getSuccess(SpecialistMapping.api_success);
 | 
	
		
			
				|  |  |         return hospitalServiceItemService.selectById(hospitalServiceItemIds);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public PatientRehabilitationPlanDO createPatientRehabilitationPlan(PatientRehabilitationPlanDO planDO) {
 | 
	
	
		
			
				|  | @ -120,7 +133,12 @@ public class RehabilitationPlanService {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public List<RehabilitationDetailDO> createRehabilitationDetail(List<RehabilitationDetailDO> details, String planId) {
 | 
	
		
			
				|  |  |         for(RehabilitationDetailDO detail : details) {
 | 
	
		
			
				|  |  | //            HospitalServiceItemDO hospitalServiceItemDO = hospitalServiceItemService.findById(detail.getHospitalServiceItemId());
 | 
	
		
			
				|  |  |             List<String> list = new ArrayList<>();
 | 
	
		
			
				|  |  |             list.add(detail.getHospitalServiceItemId());
 | 
	
		
			
				|  |  |             HospitalServiceItemDO hospitalServiceItemDO = hospitalServiceItemService.selectById(list).getDetailModelList().get(0);
 | 
	
		
			
				|  |  |             detail.setHospital(hospitalServiceItemDO.getHospital());
 | 
	
		
			
				|  |  |             detail.setHospitalName(hospitalServiceItemDO.getHospitalName());
 | 
	
		
			
				|  |  |             detail.setExpense(hospitalServiceItemDO.getExpense());
 | 
	
		
			
				|  |  |             detail.setPlanId(planId);
 | 
	
		
			
				|  |  |             detail.setCreateTime(new Date());
 | 
	
		
			
				|  |  |             detail.setStatus(0);
 | 
	
	
		
			
				|  | @ -128,6 +146,62 @@ public class RehabilitationPlanService {
 | 
	
		
			
				|  |  |         return (List<RehabilitationDetailDO>)rehabilitationDetailDao.save(details);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public MixEnvelop<HospitalServiceItemDO,HospitalServiceItemDO> findServiceItemsByHospital(String doctorHospital, String signHospital) {
 | 
	
		
			
				|  |  |         JSONArray jsonArray = new JSONArray();
 | 
	
		
			
				|  |  |         List<String> list = new ArrayList<>();
 | 
	
		
			
				|  |  |         list.add(doctorHospital);
 | 
	
		
			
				|  |  |         List<HospitalServiceItemDO> docHospitalServiceItemDO = hospitalServiceItemService.selectByHospital(list).getDetailModelList();
 | 
	
		
			
				|  |  |         if(StringUtils.isNotBlank(signHospital)){
 | 
	
		
			
				|  |  |             if(signHospital.equals(doctorHospital)) {
 | 
	
		
			
				|  |  |                 for (Object object : docHospitalServiceItemDO) {
 | 
	
		
			
				|  |  |                     JSONObject json = (JSONObject) JSONObject.toJSON(object);
 | 
	
		
			
				|  |  |                     json.put("type", "社区");
 | 
	
		
			
				|  |  |                     jsonArray.add(json);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }else if(!signHospital.equals(doctorHospital)){
 | 
	
		
			
				|  |  |                 JSONArray array = new JSONArray();
 | 
	
		
			
				|  |  |                 List<String> itemIds = new ArrayList<>();
 | 
	
		
			
				|  |  |                 list.remove(0);
 | 
	
		
			
				|  |  |                 list.add(signHospital);
 | 
	
		
			
				|  |  |                 List<HospitalServiceItemDO> signHospitalServiceItemDO = hospitalServiceItemService.selectByHospital(list).getDetailModelList();
 | 
	
		
			
				|  |  |                 HashSet signSet = new HashSet();
 | 
	
		
			
				|  |  |                 for(HospitalServiceItemDO h : signHospitalServiceItemDO){
 | 
	
		
			
				|  |  |                     signSet.add(h.getServiceItemId());
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 //将服务项目重复的都放入itemIds集合里,并在列表中删除该条数据
 | 
	
		
			
				|  |  |                 List<HospitalServiceItemDO> temp = new ArrayList<>();
 | 
	
		
			
				|  |  |                 temp.addAll(docHospitalServiceItemDO);
 | 
	
		
			
				|  |  |                 for(HospitalServiceItemDO h : docHospitalServiceItemDO){
 | 
	
		
			
				|  |  |                     int size = signSet.size();
 | 
	
		
			
				|  |  |                     String itemId = h.getServiceItemId();
 | 
	
		
			
				|  |  |                     signSet.add(itemId);
 | 
	
		
			
				|  |  |                     if(signSet.size() == size){
 | 
	
		
			
				|  |  |                         itemIds.add(itemId);
 | 
	
		
			
				|  |  |                         temp.remove(h);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 array.addAll(signHospitalServiceItemDO);
 | 
	
		
			
				|  |  |                 array.addAll(temp);
 | 
	
		
			
				|  |  |                 for(Object obj : array){
 | 
	
		
			
				|  |  |                     //往实体类插入数据
 | 
	
		
			
				|  |  |                     JSONObject json = (JSONObject) JSONObject.toJSON(obj);
 | 
	
		
			
				|  |  |                     if(json.get("hospital").equals(signHospital)){
 | 
	
		
			
				|  |  |                         json.put("type", "社区");
 | 
	
		
			
				|  |  |                     }else if(json.get("hospital").equals(doctorHospital)){
 | 
	
		
			
				|  |  |                         json.put("type", "医院");
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     if(itemIds.contains(json.get("serviceItemId"))){
 | 
	
		
			
				|  |  |                         json.put("type", "社区,医院");
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     jsonArray.add(json);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }else {
 | 
	
		
			
				|  |  |             jsonArray.addAll(docHospitalServiceItemDO);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return MixEnvelop.getSuccess(SpecialistMapping.api_success, jsonArray);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public MixEnvelop<String,String> createServiceQrCode(String planDetailId){
 | 
	
		
			
				|  |  |         RehabilitationDetailDO rehabilitationDetailDO = rehabilitationDetailDao.findById(planDetailId);
 | 
	
		
			
				|  |  |         String fileUrl = "";
 |