liubing vor 3 Jahren
Ursprung
Commit
160f328956

+ 3 - 0
business/im-service/src/main/java/com/yihu/jw/im/dao/ConsultTeamDao.java

@ -1,6 +1,7 @@
package com.yihu.jw.im.dao;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import org.hibernate.validator.constraints.LuhnCheck;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
@ -29,4 +30,6 @@ public interface ConsultTeamDao  extends PagingAndSortingRepository<ConsultTeamD
	Integer  countByTime(int type, String doctor, Date startTime, Date endTime);
	ConsultTeamDo queryByRelationCode(String relationCode);
	List<ConsultTeamDo> findByTypeAndDel(Integer type,String del);
}

+ 11 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/dao/course/DoctorPatientTmpDao.java

@ -2,9 +2,12 @@ package com.yihu.jw.base.dao.course;
import com.yihu.jw.entity.care.course.DoctorPatientTmpDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Bing on 2021/6/7.
 */
@ -16,6 +19,12 @@ public interface DoctorPatientTmpDao extends PagingAndSortingRepository<DoctorPa
    @Query(value = "select count(1) from DoctorPatientTmpDO t where t.patient=?1 and t.doctorCode = ?2 and t.type=?3")
    Integer findByPatientAndDoctorCodeAndType(String patient,String doctorCode,Integer type);
    @Query(value = "select count(1) from DoctorPatientTmpDO t where t.patient=?1 and t.orgCode = ?2 and t.type=?3 and t.del=1")
    Integer findByPatientAndOrgCodeAndType(String patient,String orgCode,Integer type);
    @Query(value = "select count(1) from DoctorPatientTmpDO t where t.patient=?1 and t.orgCode = ?2 and t.type=?3 and t.status=?4 and t.del=1")
    Integer findByPatientAndOrgCodeAndTypeAndStatus(String patient,String orgCode,Integer type,Integer status);
    List<DoctorPatientTmpDO> queryByPatientAndTypeIn(String patient,Integer[] type);
    @Modifying
    @Query(value = "update DoctorPatientTmpDO t set t.del=0 where 1=1")
    void deleteAll();
}

+ 57 - 3
svr/svr-base/src/main/java/com/yihu/jw/base/util/EntranceUtil.java

@ -1,12 +1,24 @@
package com.yihu.jw.base.util;
import com.yihu.jw.base.dao.course.CourseDao;
import com.yihu.jw.base.dao.course.CourseSalesOrderRecordDao;
import com.yihu.jw.base.dao.course.DoctorPatientTmpDao;
import com.yihu.jw.base.dao.course.RecruitStudentsRecordDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.care.course.CourseDO;
import com.yihu.jw.entity.care.course.CourseSalesOrderRecordDO;
import com.yihu.jw.entity.care.course.DoctorPatientTmpDO;
import com.yihu.jw.entity.care.course.RecruitStudentsRecordDO;
import com.yihu.jw.entity.care.doorCoach.BaseDoorCoachOrderDO;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 教师与新生儿 入学关系更新工具
@ -17,6 +29,8 @@ public class EntranceUtil {
    @Autowired
    private DoctorPatientTmpDao doctorPatientTmpDao;
    @Autowired
    private BaseDoctorHospitalDao doctorHospitalDao;
    /**
     *
@ -29,7 +43,7 @@ public class EntranceUtil {
     */
    public void newRecord(String patient,Integer type,Integer del,String doctorCode,String orgCode,String relationCode){
        if (1==type||2==type){//在线咨询与上门辅导不重复保存
            if (doctorPatientTmpDao.findByPatientAndDoctorCodeAndType(patient,orgCode,type)!=0){
            if (doctorPatientTmpDao.findByPatientAndDoctorCodeAndType(patient,doctorCode,type)!=0){
                return ;
            }
        }
@ -37,6 +51,16 @@ public class EntranceUtil {
        tmpDO.setPatient(patient);
        tmpDO.setType(type);
        tmpDO.setDel(del);
        tmpDO.setStatus(0);
        if (StringUtils.isBlank(orgCode)){
            List<BaseDoctorHospitalDO> list = doctorHospitalDao.findByDoctorCode(doctorCode);
            if (list.size()>0){
                orgCode = list.get(0).getOrgCode();
            }
        }
        if (doctorPatientTmpDao.findByPatientAndOrgCodeAndTypeAndStatus(patient,orgCode,3,1)!=0){
            tmpDO.setDel(0);
        }
        tmpDO.setOrgCode(orgCode);
        tmpDO.setDoctorCode(doctorCode);
        tmpDO.setRelationCode(relationCode);
@ -44,7 +68,7 @@ public class EntranceUtil {
    }
    /**
     * 更新状态
     * 更新状态 状态为1 已入学,将该幼儿咨询、上门、课程数据失效
     * @param relationCode
     */
    public void updateStatus(Integer status,String relationCode){
@ -52,7 +76,13 @@ public class EntranceUtil {
        if (tmpDO!=null){
            tmpDO.setStatus(status);
            doctorPatientTmpDao.save(tmpDO);
            if (status==1){//入学后 将该幼儿咨询、上门、课程数据失效
                List<DoctorPatientTmpDO> list = doctorPatientTmpDao.queryByPatientAndTypeIn(tmpDO.getPatient(),new Integer[]{1,2,4});
                List<String> relationCodes  = list.stream().map(DoctorPatientTmpDO::getRelationCode).collect(Collectors.toList());
                deleteRecord2List(relationCodes);
            }
        }
    }
    /**
@ -61,18 +91,25 @@ public class EntranceUtil {
     */
    public void updateStatus2(Integer status,String[] relationCode) {
        List<DoctorPatientTmpDO> list = new ArrayList<>();
        List<String>relationCodes = new ArrayList<>();
        for (String id : relationCode) {
            DoctorPatientTmpDO tmpDO = doctorPatientTmpDao.findByRelationCode(id);
            if (tmpDO != null) {
                tmpDO.setStatus(status);
                list.add(tmpDO);
                if (status==1){//入学后 将该幼儿咨询、上门、课程数据失效
                    List<DoctorPatientTmpDO> listTmp = doctorPatientTmpDao.queryByPatientAndTypeIn(tmpDO.getPatient(),new Integer[]{1,2,4});
                    List<String> relationCodeTmp  = list.stream().map(DoctorPatientTmpDO::getRelationCode).collect(Collectors.toList());
                    relationCodes.addAll(relationCodeTmp);
                }
            }
        }
        doctorPatientTmpDao.save(list);
        deleteRecord2List(relationCodes);
    }
    /**
     * 删除记录
     * 删除记录 单条
     * @param relationCode
     */
    public void deleteRecord(String relationCode){
@ -99,4 +136,21 @@ public class EntranceUtil {
        }
        doctorPatientTmpDao.save(list);
    }
    /**
     * 删除记录
     * @param relationCode
     */
    public void deleteRecord2List(List<String> relationCode){
        List<DoctorPatientTmpDO> list = new ArrayList<>();
        for (String id : relationCode) {
            DoctorPatientTmpDO tmpDO = doctorPatientTmpDao.findByRelationCode(id);
            if (tmpDO!=null){
                tmpDO.setDel(0);
            }
        }
        doctorPatientTmpDao.save(list);
    }
}

+ 3 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/course/CourseSalesOrderRecordDao.java

@ -4,6 +4,8 @@ import com.yihu.jw.entity.care.course.CourseSalesOrderRecordDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created with IntelliJ IDEA.
 *
@ -14,4 +16,5 @@ import org.springframework.data.repository.PagingAndSortingRepository;
public interface CourseSalesOrderRecordDao extends PagingAndSortingRepository<CourseSalesOrderRecordDO, String>
        , JpaSpecificationExecutor<CourseSalesOrderRecordDO> {
    List<CourseSalesOrderRecordDO> findByStatus(String status);
}

+ 11 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/course/DoctorPatientTmpDao.java

@ -2,9 +2,12 @@ package com.yihu.jw.care.dao.course;
import com.yihu.jw.entity.care.course.DoctorPatientTmpDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Bing on 2021/6/7.
 */
@ -13,10 +16,15 @@ public interface DoctorPatientTmpDao extends PagingAndSortingRepository<DoctorPa
    DoctorPatientTmpDO findByRelationCode(String relationCode);
    @Query(value = "select count(1) from DoctorPatientTmpDO t where t.patient=?1 and t.doctorCode = ?2 and t.type=?3 and t.del=1")
    @Query(value = "select count(1) from DoctorPatientTmpDO t where t.patient=?1 and t.doctorCode = ?2 and t.type=?3")
    Integer findByPatientAndDoctorCodeAndType(String patient,String doctorCode,Integer type);
    @Query(value = "select count(1) from DoctorPatientTmpDO t where t.patient=?1 and t.orgCode = ?2 and t.type=?3 and t.del=1")
    Integer findByPatientAndOrgCodeAndType(String patient,String orgCode,Integer type);
    @Query(value = "select count(1) from DoctorPatientTmpDO t where t.patient=?1 and t.orgCode = ?2 and t.type=?3 and t.status=?4 and t.del=1")
    Integer findByPatientAndOrgCodeAndTypeAndStatus(String patient,String orgCode,Integer type,Integer status);
    List<DoctorPatientTmpDO> queryByPatientAndTypeIn(String patient,Integer[] type);
    @Modifying
    @Query(value = "update DoctorPatientTmpDO t set t.del=0 where 1=1")
    void deleteAll();
}

+ 2 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/course/RecruitStudentsRecordDao.java

@ -19,4 +19,6 @@ public interface RecruitStudentsRecordDao extends PagingAndSortingRepository<Rec
    List<RecruitStudentsRecordDO> findByRecruitStudentsIdAndStatus(String recruitStudentsId, String status);
    List<RecruitStudentsRecordDO> findByOrgCodeAndStatus(String orgCode, String status);
    List<RecruitStudentsRecordDO> findByDelAndStatus(Integer del,String status);
}

+ 2 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/doorCoach/BaseDoorCoachOrderDao.java

@ -50,4 +50,6 @@ public interface BaseDoorCoachOrderDao extends PagingAndSortingRepository<BaseDo
    @Query("select o from BaseDoorCoachOrderDO o where o.doctor = ?1 and o.status in (1,2,3,4,5)")
    List<BaseDoorCoachOrderDO> getUnFinishOrderByDoctor(String doctor);
    List<BaseDoorCoachOrderDO> queryByStatusIn(Integer[] status);
}

+ 31 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorEndpoint.java

@ -6,6 +6,7 @@ import com.yihu.jw.care.service.consult.ConsultTeamService;
import com.yihu.jw.care.service.doctor.CareDoctorService;
import com.yihu.jw.care.service.doorCoach.DoctorDoorCoachOrderService;
import com.yihu.jw.care.service.sign.CapacityAssessmentRecordService;
import com.yihu.jw.care.util.EntranceUtil;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
@ -39,6 +40,8 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
    private CapacityAssessmentRecordService capacityAssessmentRecordService;
    @Autowired
    private ConsultTeamService consultTeamService;
    @Autowired
    private EntranceUtil entranceUtil;
    @GetMapping(value = "doctorPage")
    @ApiOperation(value = "获取医生记录分页")
@ -213,18 +216,43 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "管理员获取居民档案列表")
    public PageEnvelop getArchiveList(@ApiParam(name="type",value = "档案类型,1老人 2新生儿")
                                      @RequestParam(value = "type",required = false,defaultValue = "2")Integer type,
                                      @ApiParam(name = "signStatus",value = "签约状况 -1未签约,0全部,1已签约 ")
                                      @RequestParam(value = "signStatus",required = false,defaultValue = "0")Integer signStatus,
                                      @ApiParam(name = "signStatus",value = "签约状况 -1全部,0未签约,1已签约 ")
                                      @RequestParam(value = "signStatus",required = false,defaultValue = "-1")Integer signStatus,
                                      @ApiParam(name = "name", value = "居民姓名", required = false)
                                      @RequestParam(value = "name",required = false) String name,
                                      @ApiParam(name = "page")
                                      @RequestParam(value = "page",required = true)Integer page,
                                      @ApiParam(name = "size")
                                      @RequestParam(value = "size",required = true)Integer size){
        try {
            return doctorService.getArchiveList(type, signStatus, page, size);
            return doctorService.getArchiveList(type, signStatus,name,page, size);
        }catch (Exception e){
            e.printStackTrace();
            return PageEnvelop.getError("查询失败");
        }
    }
    @GetMapping(value = "/initEntranceData")
    @ApiOperation(value = "初始化新生儿未入学埋点数据")
    public Envelop initEntranceData(){
        try {
            entranceUtil.initData();
            return Envelop.getSuccess("操作成功");
        }catch (Exception e){
            e.printStackTrace();
            return Envelop.getError("操作失败");
        }
    }
    @GetMapping(value = "/deleteEntranceData")
    @ApiOperation(value = "删除新生儿未入学埋点数据")
    public Envelop deleteEntranceData(){
        try {
            entranceUtil.deleteAll();
            return Envelop.getSuccess("操作成功");
        }catch (Exception e){
            e.printStackTrace();
            return Envelop.getError("操作失败");
        }
    }
}

+ 33 - 9
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doctor/CareDoctorService.java

@ -424,31 +424,55 @@ public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
    }
    public PageEnvelop getArchiveList(Integer type,Integer signStatus,Integer page,Integer size){
    public PageEnvelop getArchiveList(Integer type,Integer signStatus,String name,Integer page,Integer size){
        page = page>0?page-1:0;
        String countSql  ="select count(DISTINCT p.id)";
        String sql = "select DISTINCT p.id,p.name,p.sex,p.photo,p.idcard from base_patient p  ";
        String countSql  ="select count(DISTINCT p.id) from base_patient p where 1=1 ";
        String sql = "select DISTINCT p.id,p.name,p.sex,p.photo,p.idcard,null as sign_status from base_patient p where 1=1 ";
        String sqlCondition = "";
        if (null!=type){
            sqlCondition +=" and p.del=1 and p.archive_type="+type+" ";
        }
        if (null!=signStatus){
            if (-1==signStatus){//未签约
        if (null!=signStatus&&1==type){
            countSql  ="select count(DISTINCT p.id) from base_patient p,wlyy_archive a where a.patient = p.id ";
            sql = "select DISTINCT p.id,p.name,p.sex,p.photo,p.idcard,a.sign_status as sign_status from base_patient p,wlyy_archive a where a.patient = p.id ";
            if (0==signStatus){//未签约
                sqlCondition +=" and NOT EXISTS(select sr.id from base_service_package_sign_record sr " +
                        " INNER JOIN base_service_package_record pr on sr.id = pr.sign_id and sr.status=1 " +
                        " INNER JOIN base_service_package pack on pr.service_package_id = pack.id and pack.del=1 " +
                        " where sr.patient = p.id) ";
            }
            if (1==signStatus){//已签约
            else if (1==signStatus){//已签约
                sqlCondition +=" and EXISTS(select sr.id from base_service_package_sign_record sr " +
                        " INNER JOIN base_service_package_record pr on sr.id = pr.sign_id and sr.status=1 " +
                        " INNER JOIN base_service_package pack on pr.service_package_id = pack.id and pack.del=1 " +
                        " where sr.patient = p.id) ";
            }
        }
        if (null!=type){//档案类型
            sqlCondition +=" and p.del=1 and p.archive_type="+type+" ";
        }
        if (StringUtils.isNotBlank(name)){
            sqlCondition +=" and p.name like '%"+name+"%' ";
        }
        if(1==type){
            sqlCondition += " order by a.sign_status desc ";
        }
        Long count = jdbcTemplate.queryForObject(countSql+sqlCondition,Long.class);
        sqlCondition +=" limit "+page*size+","+size;
        List<Map<String,Object>> result = jdbcTemplate.queryForList(sql+sqlCondition);
        for (Map<String,Object>tmp:result){
            String idcard= tmp.get("idcard").toString();
            if (StringUtils.isNotBlank(idcard)){
                try {
                    Integer age = IdCardUtil.getAgeForIdcard(idcard);
                    tmp.put("age",age);
                }catch (Exception e){
                    tmp.put("age",null);
                }
            }else {
                tmp.put("age",null);
            }
        }
        return PageEnvelop.getSuccessListWithPage("查询成功",result,page,size,count);
    }

+ 168 - 4
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/EntranceUtil.java

@ -1,12 +1,30 @@
package com.yihu.jw.care.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.course.CourseDao;
import com.yihu.jw.care.dao.course.CourseSalesOrderRecordDao;
import com.yihu.jw.care.dao.course.DoctorPatientTmpDao;
import com.yihu.jw.care.dao.course.RecruitStudentsRecordDao;
import com.yihu.jw.care.dao.doorCoach.BaseDoorCoachOrderDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.care.course.CourseDO;
import com.yihu.jw.entity.care.course.CourseSalesOrderRecordDO;
import com.yihu.jw.entity.care.course.DoctorPatientTmpDO;
import com.yihu.jw.entity.care.course.RecruitStudentsRecordDO;
import com.yihu.jw.entity.care.doorCoach.BaseDoorCoachOrderDO;
import com.yihu.jw.im.dao.ConsultTeamDao;
import io.swagger.models.auth.In;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.swing.table.TableModel;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 教师与新生儿 入学关系更新工具
@ -17,6 +35,18 @@ public class EntranceUtil {
    @Autowired
    private DoctorPatientTmpDao doctorPatientTmpDao;
    @Autowired
    private BaseDoctorHospitalDao doctorHospitalDao;
    @Autowired
    private RecruitStudentsRecordDao recruitStudentsRecordDao;
    @Autowired
    private BaseDoorCoachOrderDao doorCoachOrderDao;
    @Autowired
    private ConsultTeamDao consultTeamDao;
    @Autowired
    private CourseDao courseDao;
    @Autowired
    private CourseSalesOrderRecordDao courseSalesOrderRecordDao;
    /**
     *
@ -29,7 +59,7 @@ public class EntranceUtil {
     */
    public void newRecord(String patient,Integer type,Integer del,String doctorCode,String orgCode,String relationCode){
        if (1==type||2==type){//在线咨询与上门辅导不重复保存
            if (doctorPatientTmpDao.findByPatientAndDoctorCodeAndType(patient,orgCode,type)!=0){
            if (doctorPatientTmpDao.findByPatientAndDoctorCodeAndType(patient,doctorCode,type)!=0){
                return ;
            }
        }
@ -37,14 +67,23 @@ public class EntranceUtil {
        tmpDO.setPatient(patient);
        tmpDO.setType(type);
        tmpDO.setDel(del);
        tmpDO.setStatus(0);
        if (StringUtils.isBlank(orgCode)){
            List<BaseDoctorHospitalDO> list = doctorHospitalDao.findByDoctorCode(doctorCode);
            if (list.size()>0){
                orgCode = list.get(0).getOrgCode();
            }
        }
        if (doctorPatientTmpDao.findByPatientAndOrgCodeAndTypeAndStatus(patient,orgCode,3,1)!=0){
            tmpDO.setDel(0);
        }
        tmpDO.setOrgCode(orgCode);
        tmpDO.setDoctorCode(doctorCode);
        tmpDO.setRelationCode(relationCode);
        doctorPatientTmpDao.save(tmpDO);
    }
    /**
     * 更新状态
     * 更新状态 状态为1 已入学,将该幼儿咨询、上门、课程数据失效
     * @param relationCode
     */
    public void updateStatus(Integer status,String relationCode){
@ -52,7 +91,13 @@ public class EntranceUtil {
        if (tmpDO!=null){
            tmpDO.setStatus(status);
            doctorPatientTmpDao.save(tmpDO);
            if (status==1){//入学后 将该幼儿咨询、上门、课程数据失效
                List<DoctorPatientTmpDO> list = doctorPatientTmpDao.queryByPatientAndTypeIn(tmpDO.getPatient(),new Integer[]{1,2,4});
                List<String> relationCodes  = list.stream().map(DoctorPatientTmpDO::getRelationCode).collect(Collectors.toList());
                deleteRecord2List(relationCodes);
            }
        }
    }
    /**
@ -61,18 +106,25 @@ public class EntranceUtil {
     */
    public void updateStatus2(Integer status,String[] relationCode) {
        List<DoctorPatientTmpDO> list = new ArrayList<>();
        List<String>relationCodes = new ArrayList<>();
        for (String id : relationCode) {
            DoctorPatientTmpDO tmpDO = doctorPatientTmpDao.findByRelationCode(id);
            if (tmpDO != null) {
                tmpDO.setStatus(status);
                list.add(tmpDO);
                if (status==1){//入学后 将该幼儿咨询、上门、课程数据失效
                    List<DoctorPatientTmpDO> listTmp = doctorPatientTmpDao.queryByPatientAndTypeIn(tmpDO.getPatient(),new Integer[]{1,2,4});
                    List<String> relationCodeTmp  = list.stream().map(DoctorPatientTmpDO::getRelationCode).collect(Collectors.toList());
                    relationCodes.addAll(relationCodeTmp);
                }
            }
        }
        doctorPatientTmpDao.save(list);
        deleteRecord2List(relationCodes);
    }
    /**
     * 删除记录
     * 删除记录 单条
     * @param relationCode
     */
    public void deleteRecord(String relationCode){
@ -100,4 +152,116 @@ public class EntranceUtil {
        doctorPatientTmpDao.save(list);
    }
    /**
     * 删除记录
     * @param relationCode
     */
    public void deleteRecord2List(List<String> relationCode){
        List<DoctorPatientTmpDO> list = new ArrayList<>();
        for (String id : relationCode) {
            DoctorPatientTmpDO tmpDO = doctorPatientTmpDao.findByRelationCode(id);
            if (tmpDO!=null){
                tmpDO.setDel(0);
            }
        }
        doctorPatientTmpDao.save(list);
    }
    /**
     * 初始化数据
     */
    public void initData(){
        List<DoctorPatientTmpDO> saveList = new ArrayList<>();
        //入学
        List<RecruitStudentsRecordDO> enList = recruitStudentsRecordDao.findByDelAndStatus(1,"2");
        List<String> patients = enList.stream().map(RecruitStudentsRecordDO::getPatient).collect(Collectors.toList());
        for (RecruitStudentsRecordDO tmp:enList){
            DoctorPatientTmpDO tmpDO = new DoctorPatientTmpDO();
            tmpDO.setPatient(tmp.getPatient());
            tmpDO.setType(3);
            tmpDO.setDel(1);
            tmpDO.setStatus(1);
            tmpDO.setOrgCode(tmp.getOrgCode());
            tmpDO.setRelationCode(tmp.getId());
            saveList.add(tmpDO);
        }
        //上门
        List<BaseDoorCoachOrderDO> doorlist = doorCoachOrderDao.queryByStatusIn(new Integer[]{3,4,5,6,});
        for (BaseDoorCoachOrderDO tmp:doorlist){
            DoctorPatientTmpDO tmpDO = new DoctorPatientTmpDO();
            tmpDO.setPatient(tmp.getPatient());
            tmpDO.setType(2);
            if (patients.contains(tmp.getPatient())){
                tmpDO.setDel(0);
            }
            else {
                tmpDO.setDel(1);
            }
            tmpDO.setStatus(0);
            tmpDO.setDoctorCode(tmp.getDoctor());
            tmpDO.setOrgCode(tmp.getHospital());
            tmpDO.setRelationCode(tmp.getId());
            saveList.add(tmpDO);
        }
        //咨询
        List<ConsultTeamDo> consultList = consultTeamDao.findByTypeAndDel(23,"1");
        for (ConsultTeamDo tmp:consultList){
            DoctorPatientTmpDO tmpDO = new DoctorPatientTmpDO();
            tmpDO.setPatient(tmp.getPatient());
            tmpDO.setType(1);
            if (patients.contains(tmp.getPatient())){
                tmpDO.setDel(0);
            }
            else {
                tmpDO.setDel(1);
            }
            tmpDO.setStatus(0);
            tmpDO.setDoctorCode(tmp.getDoctor());
            if (StringUtils.isNotBlank(tmp.getDoctor())){
                List<BaseDoctorHospitalDO> list = doctorHospitalDao.findByDoctorCode(tmp.getDoctor());
                if (list.size()>0){
                    tmpDO.setOrgCode(list.get(0).getOrgCode());
                }
            }
            tmpDO.setRelationCode(tmp.getConsult());
            saveList.add(tmpDO);
        }
        //课程
        List<CourseSalesOrderRecordDO> courseList = courseSalesOrderRecordDao.findByStatus("2");
        for (CourseSalesOrderRecordDO tmp:courseList){
            DoctorPatientTmpDO tmpDO = new DoctorPatientTmpDO();
            tmpDO.setPatient(tmp.getPatient());
            tmpDO.setType(4);
            if (patients.contains(tmp.getPatient())){
                tmpDO.setDel(0);
            }
            else {
                tmpDO.setDel(1);
            }
            tmpDO.setStatus(0);
            CourseDO courseDO = courseDao.findOne(tmp.getCourseId());
            if (courseDO!=null){
                tmpDO.setDoctorCode(courseDO.getDoctor());
            }
            tmpDO.setOrgCode(tmp.getOrgCode());
            tmpDO.setRelationCode(tmp.getId());
            saveList.add(tmpDO);
        }
        for (DoctorPatientTmpDO tmp:saveList){
            if (1==tmp.getType()||2==tmp.getType()){//在线咨询与上门辅导不重复保存
                if (doctorPatientTmpDao.findByPatientAndDoctorCodeAndType(tmp.getPatient(),tmp.getDoctorCode(),tmp.getType())!=0){
                    continue;
                }
            }
            doctorPatientTmpDao.save(tmp);
        }
    }
    /**
     * 清除所有数据
     */
    public void deleteAll(){
        doctorPatientTmpDao.deleteAll();
    }
}