|  | @ -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;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | }
 |