| 
					
				 | 
			
			
				@ -0,0 +1,158 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.base.service.servicePackage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.elasticsearch.ElasticSearchHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.elasticsearch.ElasticSearchUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.dao.servicePackage.ServicePackageDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.dao.servicePackage.ServicePackageDetailsDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.dao.servicePackage.ServicePackageSignRecordDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.servicePackage.ServicePackageDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.servicePackage.ServicePackageDetailsDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.base.servicePackage.RehabilitationVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.base.servicePackage.ServicePackageLogVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.base.servicePackage.ServicePackageVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.mysql.query.BaseJpaService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.BeanUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @author yeshijie on 2018/8/17. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class ServicePackageService extends BaseJpaService<ServicePackageDO, ServicePackageDao> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private Logger logger = LoggerFactory.getLogger(ServicePackageService.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ServicePackageDao servicePackageDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ServicePackageDetailsDao servicePackageDetailsDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ServicePackageSignRecordDao servicePackageSignRecordDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ElasticSearchUtil elasticSearchUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ElasticSearchHelper elastricSearchHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${es.index.servicePackLog}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String servicePackLongIndex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${es.type.servicePackLog}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String servicePackLongType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 新增康复计划 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ServicePackageDO addRehabilitation(RehabilitationVO rehabilitationVO,ServicePackageSignRecordDO signRecordDO) throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ServicePackageVO servicePackageVO = rehabilitationVO.getServicePackageVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ServicePackageDO servicePackageDO = convertToModelDO(servicePackageVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<ServicePackageDetailsDO> detailsDOList = servicePackageDO.getDetailsDOList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //新增服务包主表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        servicePackageDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        servicePackageDO.setDel(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        servicePackageDO.setLevel(ServicePackageDO.Level.doctor.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        servicePackageDO.setLevelCode(servicePackageDO.getCreater()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        servicePackageDO.setStatus(ServicePackageDO.Status.pass.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        servicePackageDO.setNum(detailsDOList.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        servicePackageDO.setType(ServicePackageDO.Type.rehabilitation.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        servicePackageDao.save(servicePackageDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //新增服务项明细表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        detailsDOList.forEach(one->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            one.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            one.setSaasId(servicePackageDO.getSaasId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            one.setServicePackageId(servicePackageDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        servicePackageDetailsDao.save(detailsDOList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //新增签约服务包记录表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        signRecordDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        signRecordDO.setServicePackageId(servicePackageDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        signRecordDO.setStatus(ServicePackageSignRecordDO.Status.create.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        servicePackageSignRecordDao.save(signRecordDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //新增服务包日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ServicePackageLogVO logVO = new ServicePackageLogVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVO.setFlag(ServicePackageLogVO.Flag.success.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVO.setFinish(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVO.setId(getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVO.setMessage(signRecordDO.getSignDoctorName()+"新增了一条康复计划"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVO.setSaasId(servicePackageVO.getSaasId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVO.setSevicePackageId(servicePackageDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVO.setUserType(ServicePackageLogVO.UserType.doctor.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVO.setUserCode(signRecordDO.getSignDoctor()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVO.setUserName(signRecordDO.getSignDoctorName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<ServicePackageLogVO> logVOList = new ArrayList<>(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVOList.add(logVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        elastricSearchHelper.save(servicePackLongIndex,servicePackLongType,logVOList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return servicePackageDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取完成度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param servicePackageId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Integer getFinish(String servicePackageId) throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer finish = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = "select finish from " + servicePackLongIndex + " where servicePackageId='" + servicePackageId + "' and sevicePackageDetailId is not null order by createTime desc limit 1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> returnList = elastricSearchHelper.executeSQL(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(returnList!=null&&returnList.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            finish = Integer.valueOf(returnList.get(0).get("finish").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return finish; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 保存康复计划日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param logVO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ServicePackageLogVO addRehabilitationLog(ServicePackageLogVO logVO) throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVO.setId(getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int finish = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = "select finish from " + servicePackLongIndex + " where servicePackageId='" + logVO.getSevicePackageId() + "' and sevicePackageDetailId is not null order by createTime desc limit 1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> returnList = elastricSearchHelper.executeSQL(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(returnList!=null&&returnList.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            finish = Integer.valueOf(returnList.get(0).get("finish").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(StringUtils.isNotBlank(logVO.getSevicePackageDetailId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                finish++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVO.setFinish(finish); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(logVO.getFlag()==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logVO.setFlag(ServicePackageLogVO.Flag.success.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<ServicePackageLogVO> logVOList = new ArrayList<>(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logVOList.add(logVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        elastricSearchHelper.save(servicePackLongIndex,servicePackLongType,logVOList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return logVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 单个转换 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ServicePackageDO convertToModelDO(ServicePackageVO servicePackageVO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ServicePackageDO target = new ServicePackageDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BeanUtils.copyProperties(servicePackageVO, target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<ServicePackageDetailsDO> voList = convertToModels(servicePackageVO.getDetailsVOList(),new ArrayList<>(servicePackageVO.getDetailsVOList().size()),ServicePackageDetailsDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        target.setDetailsDOList(voList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return target; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |