123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519 |
- package com.yihu.wlyy.service.common.util;
- import com.yihu.wlyy.entity.doctor.team.sign.DoctorPatientGroupInfo;
- import com.yihu.wlyy.entity.doctor.team.sign.DoctorTeam;
- import com.yihu.wlyy.entity.doctor.team.sign.DoctorTeamInfo;
- import com.yihu.wlyy.entity.doctor.team.sign.DoctorTeamMember;
- import com.yihu.wlyy.entity.patient.SignFamily;
- import com.yihu.wlyy.repository.doctor.DoctorPatientGroupInfoDao;
- import com.yihu.wlyy.repository.doctor.DoctorTeamDao;
- import com.yihu.wlyy.repository.doctor.DoctorTeamMemberDao;
- import com.yihu.wlyy.repository.patient.SignFamilyDao;
- import com.yihu.wlyy.service.BaseService;
- import com.yihu.wlyy.util.IdCardUtil;
- import com.yihu.wlyy.util.SystemConf;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.domain.Page;
- import org.springframework.data.domain.PageRequest;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import org.springframework.orm.jpa.JpaTransactionManager;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.TransactionDefinition;
- import org.springframework.transaction.TransactionStatus;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.transaction.support.DefaultTransactionDefinition;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import java.util.concurrent.ExecutionException;
- /**
- * Created by lyr-pc on 2016/10/11.
- */
- @Service
- public class ManageUtilService extends BaseService {
- @Autowired
- SignFamilyDao signFamilyDao;
- @Autowired
- DoctorPatientGroupInfoDao groupInfoDao;
- @Autowired
- DoctorTeamDao teamDao;
- @Autowired
- DoctorTeamMemberDao teamMemberDao;
- @Autowired
- JpaTransactionManager transactionManager;
- public static int page = 0;
- public static List<Integer> errorPages = new ArrayList<>();
- public static List<Long> errorSigns = new ArrayList<>();
- /**
- * 清洗头同步签约数据分组
- *
- * @return
- */
- public void signPatientSetGroup() {
- boolean flag = true;
- while (flag) {
- PageRequest pageRequest = new PageRequest(0, 1000);
- Page<SignFamily> signs = signFamilyDao.findByTypeAndSignSource(2, "1", pageRequest);
- if (signs != null && signs.getContent().size() < 1000) {
- flag = false;
- }
- System.out.println("sign-patient-group-team:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
- DefaultTransactionDefinition def = new DefaultTransactionDefinition();
- def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); // 事物隔离级别,开启新事务
- TransactionStatus status = transactionManager.getTransaction(def); // 获得事务状态
- try {
- for (SignFamily sign : signs.getContent()) {
- try {
- if (StringUtils.isNotEmpty(sign.getTeamCode())) {
- continue;
- }
- //建立团队
- DoctorTeam doctorTeam = new DoctorTeam();
- String doctorTeamCode = getCode();
- doctorTeam.setCode(doctorTeamCode);
- doctorTeam.setCzrq(new Date());
- doctorTeam.setName("团队名称:" + sign.getName());
- doctorTeam.setSignType("2");//家庭签约
- doctorTeam.setDel("1");
- teamDao.save(doctorTeam);
- //添加团队成员
- if (StringUtils.isNotEmpty(sign.getDoctor())) {
- //添加全科
- DoctorTeamMember wlyyDoctorTeamDoctor = new DoctorTeamMember();
- wlyyDoctorTeamDoctor.setTeam(doctorTeamCode);
- wlyyDoctorTeamDoctor.setMemberCode(sign.getDoctor());
- wlyyDoctorTeamDoctor.setName(sign.getDoctorName());
- wlyyDoctorTeamDoctor.setDel("1");
- wlyyDoctorTeamDoctor.setType(2);
- wlyyDoctorTeamDoctor.setSignType("2");//家庭签约
- wlyyDoctorTeamDoctor.setCode(getCode());
- wlyyDoctorTeamDoctor.setCzrq(new Date());
- teamMemberDao.save(wlyyDoctorTeamDoctor);
- }
- if (StringUtils.isNotEmpty(sign.getDoctorHealth())) {
- //添加健康管理师
- DoctorTeamMember wlyyDoctorTeamDoctor = new DoctorTeamMember();
- wlyyDoctorTeamDoctor.setTeam(doctorTeamCode);
- wlyyDoctorTeamDoctor.setMemberCode(sign.getDoctorHealth());
- wlyyDoctorTeamDoctor.setName(sign.getDoctorHealthName());
- wlyyDoctorTeamDoctor.setDel("1");
- wlyyDoctorTeamDoctor.setType(3);
- wlyyDoctorTeamDoctor.setSignType("2");//家庭签约
- wlyyDoctorTeamDoctor.setCode(getCode());
- wlyyDoctorTeamDoctor.setCzrq(new Date());
- teamMemberDao.save(wlyyDoctorTeamDoctor);
- }
- //添加患者和团队的关系
- DoctorTeamMember wlyyDoctorTeamPatient = new DoctorTeamMember();
- wlyyDoctorTeamPatient.setTeam(doctorTeamCode);
- wlyyDoctorTeamPatient.setMemberCode(sign.getPatient());
- wlyyDoctorTeamPatient.setName(sign.getName());
- wlyyDoctorTeamPatient.setDel("1");
- wlyyDoctorTeamPatient.setSignType("2");//家庭签约
- wlyyDoctorTeamPatient.setType(5);
- wlyyDoctorTeamPatient.setCode(getCode());
- wlyyDoctorTeamPatient.setCzrq(new Date());
- teamMemberDao.save(wlyyDoctorTeamPatient);
- if (StringUtils.isEmpty(sign.getIdcard())) {
- System.out.println("error:sign-family-set-group:no-idcard:" + sign.getId());
- continue;
- }
- int age = IdCardUtil.getAgeForIdcard(sign.getIdcard());
- String groupCode = "1";
- if (age >= 65) {
- groupCode = "3";
- }
- if (StringUtils.isNotEmpty(sign.getDoctorHealth())) {
- //把病人添加到健康管理师的健康分组里
- DoctorPatientGroupInfo doctorPatientGroupInfo = new DoctorPatientGroupInfo();
- doctorPatientGroupInfo.setCzrq(new Date());
- doctorPatientGroupInfo.setDoctor(sign.getDoctorHealth());
- doctorPatientGroupInfo.setStatus(1);
- doctorPatientGroupInfo.setPatient(sign.getPatient());
- doctorPatientGroupInfo.setPname(sign.getName());
- doctorPatientGroupInfo.setPartAmount(0);
- doctorPatientGroupInfo.setGroup(groupCode);//默认健康分组
- doctorPatientGroupInfo.setQyrq(sign.getApplyDate());
- doctorPatientGroupInfo.setSignType("2");//家庭签约
- groupInfoDao.save(doctorPatientGroupInfo);
- }
- if (StringUtils.isNotEmpty(sign.getDoctor())) {
- //把病人添加到全科医生的健康分组里
- DoctorPatientGroupInfo doctorPatientGroupInfo = new DoctorPatientGroupInfo();
- doctorPatientGroupInfo.setCzrq(new Date());
- doctorPatientGroupInfo.setDoctor(sign.getDoctor());
- doctorPatientGroupInfo.setStatus(1);
- doctorPatientGroupInfo.setPatient(sign.getPatient());
- doctorPatientGroupInfo.setPname(sign.getName());
- doctorPatientGroupInfo.setPartAmount(0);
- doctorPatientGroupInfo.setGroup(groupCode);//默认健康分组
- doctorPatientGroupInfo.setQyrq(sign.getApplyDate());
- doctorPatientGroupInfo.setSignType("2");//家庭签约
- groupInfoDao.save(doctorPatientGroupInfo);
- }
- List<DoctorPatientGroupInfo> groups = groupInfoDao.findPatientGroups(sign.getPatient());
- if (groups != null && groups.size() > 0) {
- for (DoctorPatientGroupInfo group : groups) {
- if (StringUtils.isNotEmpty(group.getSignType()) && group.getSignType().equals("2")) {
- continue;
- }
- DoctorPatientGroupInfo patientGroup = new DoctorPatientGroupInfo();
- patientGroup.setCzrq(new Date());
- patientGroup.setDoctor(group.getDoctor());
- patientGroup.setStatus(1);
- patientGroup.setPatient(sign.getPatient());
- patientGroup.setPname(sign.getName());
- patientGroup.setPartAmount(0);
- patientGroup.setGroup(group.getGroup());
- patientGroup.setQyrq(sign.getApplyDate());
- patientGroup.setSignType("2");//家庭签约
- groupInfoDao.save(patientGroup);
- }
- }
- sign.setTeamCode(doctorTeamCode);
- signFamilyDao.save(sign);
- } catch (Exception e) {
- e.printStackTrace();
- errorSigns.add(sign.getId());
- }
- }
- //事物提交
- transactionManager.commit(status);
- System.out.println("sign-patient-group-team:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
- } catch (Exception e) {
- transactionManager.rollback(status);
- }
- }
- }
- /**
- * 执行某一页
- *
- * @param page
- * @throws Exception
- */
- @Transactional
- public void setSignTeamAndGroupByPage(int page) throws Exception {
- PageRequest pageRequest = new PageRequest(page, 1000);
- Page<SignFamily> signs = signFamilyDao.findByTypeAndSignSource(2, "1", pageRequest);
- for (SignFamily sign : signs.getContent()) {
- if (StringUtils.isNotEmpty(sign.getTeamCode())) {
- continue;
- }
- //建立团队
- DoctorTeam doctorTeam = new DoctorTeam();
- String doctorTeamCode = getCode();
- doctorTeam.setCode(doctorTeamCode);
- doctorTeam.setCzrq(new Date());
- doctorTeam.setName("团队名称:" + sign.getName());
- doctorTeam.setSignType("2");//家庭签约
- doctorTeam.setDel("1");
- teamDao.save(doctorTeam);
- //添加团队成员
- if (StringUtils.isNotEmpty(sign.getDoctor())) {
- //添加全科
- DoctorTeamMember wlyyDoctorTeamDoctor = new DoctorTeamMember();
- wlyyDoctorTeamDoctor.setTeam(doctorTeamCode);
- wlyyDoctorTeamDoctor.setMemberCode(sign.getDoctor());
- wlyyDoctorTeamDoctor.setName(sign.getDoctorName());
- wlyyDoctorTeamDoctor.setDel("1");
- wlyyDoctorTeamDoctor.setType(2);
- wlyyDoctorTeamDoctor.setSignType("2");//家庭签约
- wlyyDoctorTeamDoctor.setCode(getCode());
- wlyyDoctorTeamDoctor.setCzrq(new Date());
- teamMemberDao.save(wlyyDoctorTeamDoctor);
- }
- if (StringUtils.isNotEmpty(sign.getDoctorHealth())) {
- //添加健康管理师
- DoctorTeamMember wlyyDoctorTeamDoctor = new DoctorTeamMember();
- wlyyDoctorTeamDoctor.setTeam(doctorTeamCode);
- wlyyDoctorTeamDoctor.setMemberCode(sign.getDoctorHealth());
- wlyyDoctorTeamDoctor.setName(sign.getDoctorHealthName());
- wlyyDoctorTeamDoctor.setDel("1");
- wlyyDoctorTeamDoctor.setType(3);
- wlyyDoctorTeamDoctor.setSignType("2");//家庭签约
- wlyyDoctorTeamDoctor.setCode(getCode());
- wlyyDoctorTeamDoctor.setCzrq(new Date());
- teamMemberDao.save(wlyyDoctorTeamDoctor);
- }
- //添加患者和团队的关系
- DoctorTeamMember wlyyDoctorTeamPatient = new DoctorTeamMember();
- wlyyDoctorTeamPatient.setTeam(doctorTeamCode);
- wlyyDoctorTeamPatient.setMemberCode(sign.getPatient());
- wlyyDoctorTeamPatient.setName(sign.getName());
- wlyyDoctorTeamPatient.setDel("1");
- wlyyDoctorTeamPatient.setSignType("2");//家庭签约
- wlyyDoctorTeamPatient.setType(5);
- wlyyDoctorTeamPatient.setCode(getCode());
- wlyyDoctorTeamPatient.setCzrq(new Date());
- teamMemberDao.save(wlyyDoctorTeamPatient);
- if (StringUtils.isEmpty(sign.getIdcard())) {
- System.out.println("error:sign-family-set-group:no-idcard:" + sign.getId());
- continue;
- }
- int age = IdCardUtil.getAgeForIdcard(sign.getIdcard());
- String groupCode = "1";
- if (age >= 65) {
- groupCode = "3";
- }
- if (StringUtils.isNotEmpty(sign.getDoctorHealth())) {
- //把病人添加到健康管理师的健康分组里
- DoctorPatientGroupInfo doctorPatientGroupInfo = new DoctorPatientGroupInfo();
- doctorPatientGroupInfo.setCzrq(new Date());
- doctorPatientGroupInfo.setDoctor(sign.getDoctorHealth());
- doctorPatientGroupInfo.setStatus(1);
- doctorPatientGroupInfo.setPatient(sign.getPatient());
- doctorPatientGroupInfo.setPname(sign.getName());
- doctorPatientGroupInfo.setPartAmount(0);
- doctorPatientGroupInfo.setGroup(groupCode);//默认健康分组
- doctorPatientGroupInfo.setQyrq(sign.getApplyDate());
- doctorPatientGroupInfo.setSignType("2");//家庭签约
- groupInfoDao.save(doctorPatientGroupInfo);
- }
- if (StringUtils.isNotEmpty(sign.getDoctor())) {
- //把病人添加到全科医生的健康分组里
- DoctorPatientGroupInfo doctorPatientGroupInfo = new DoctorPatientGroupInfo();
- doctorPatientGroupInfo.setCzrq(new Date());
- doctorPatientGroupInfo.setDoctor(sign.getDoctor());
- doctorPatientGroupInfo.setStatus(1);
- doctorPatientGroupInfo.setPatient(sign.getPatient());
- doctorPatientGroupInfo.setPname(sign.getName());
- doctorPatientGroupInfo.setPartAmount(0);
- doctorPatientGroupInfo.setGroup(groupCode);//默认健康分组
- doctorPatientGroupInfo.setQyrq(sign.getApplyDate());
- doctorPatientGroupInfo.setSignType("2");//家庭签约
- groupInfoDao.save(doctorPatientGroupInfo);
- }
- List<DoctorPatientGroupInfo> groups = groupInfoDao.findPatientGroups(sign.getPatient());
- if (groups != null && groups.size() > 0) {
- for (DoctorPatientGroupInfo group : groups) {
- if (StringUtils.isNotEmpty(group.getSignType()) && group.getSignType().equals("2")) {
- continue;
- }
- DoctorPatientGroupInfo patientGroup = new DoctorPatientGroupInfo();
- patientGroup.setCzrq(new Date());
- patientGroup.setDoctor(group.getDoctor());
- patientGroup.setStatus(1);
- patientGroup.setPatient(sign.getPatient());
- patientGroup.setPname(sign.getName());
- patientGroup.setPartAmount(0);
- patientGroup.setGroup(group.getGroup());
- patientGroup.setQyrq(sign.getApplyDate());
- patientGroup.setSignType("2");//家庭签约
- groupInfoDao.save(patientGroup);
- }
- }
- sign.setTeamCode(doctorTeamCode);
- signFamilyDao.save(sign);
- }
- }
- /**
- * 执行某一条
- *
- * @param id
- */
- @Transactional
- public void setSignTeamAndGroupById(Long id) throws Exception {
- SignFamily sign = signFamilyDao.findOne(id);
- try {
- if (StringUtils.isNotEmpty(sign.getTeamCode())) {
- throw new Exception("error:sign-family-set-group:team-exist:" + id);
- }
- //建立团队
- DoctorTeam doctorTeam = new DoctorTeam();
- String doctorTeamCode = getCode();
- doctorTeam.setCode(doctorTeamCode);
- doctorTeam.setCzrq(new Date());
- doctorTeam.setName("团队名称:" + sign.getName());
- doctorTeam.setSignType("2");//家庭签约
- doctorTeam.setDel("1");
- teamDao.save(doctorTeam);
- //添加团队成员
- if (StringUtils.isNotEmpty(sign.getDoctor())) {
- //添加全科
- DoctorTeamMember wlyyDoctorTeamDoctor = new DoctorTeamMember();
- wlyyDoctorTeamDoctor.setTeam(doctorTeamCode);
- wlyyDoctorTeamDoctor.setMemberCode(sign.getDoctor());
- wlyyDoctorTeamDoctor.setName(sign.getDoctorName());
- wlyyDoctorTeamDoctor.setDel("1");
- wlyyDoctorTeamDoctor.setType(2);
- wlyyDoctorTeamDoctor.setSignType("2");//家庭签约
- wlyyDoctorTeamDoctor.setCode(getCode());
- wlyyDoctorTeamDoctor.setCzrq(new Date());
- teamMemberDao.save(wlyyDoctorTeamDoctor);
- }
- if (StringUtils.isNotEmpty(sign.getDoctorHealth())) {
- //添加健康管理师
- DoctorTeamMember wlyyDoctorTeamDoctor = new DoctorTeamMember();
- wlyyDoctorTeamDoctor.setTeam(doctorTeamCode);
- wlyyDoctorTeamDoctor.setMemberCode(sign.getDoctorHealth());
- wlyyDoctorTeamDoctor.setName(sign.getDoctorHealthName());
- wlyyDoctorTeamDoctor.setDel("1");
- wlyyDoctorTeamDoctor.setType(3);
- wlyyDoctorTeamDoctor.setSignType("2");//家庭签约
- wlyyDoctorTeamDoctor.setCode(getCode());
- wlyyDoctorTeamDoctor.setCzrq(new Date());
- teamMemberDao.save(wlyyDoctorTeamDoctor);
- }
- //添加患者和团队的关系
- DoctorTeamMember wlyyDoctorTeamPatient = new DoctorTeamMember();
- wlyyDoctorTeamPatient.setTeam(doctorTeamCode);
- wlyyDoctorTeamPatient.setMemberCode(sign.getPatient());
- wlyyDoctorTeamPatient.setName(sign.getName());
- wlyyDoctorTeamPatient.setDel("1");
- wlyyDoctorTeamPatient.setSignType("2");//家庭签约
- wlyyDoctorTeamPatient.setType(5);
- wlyyDoctorTeamPatient.setCode(getCode());
- wlyyDoctorTeamPatient.setCzrq(new Date());
- teamMemberDao.save(wlyyDoctorTeamPatient);
- if (StringUtils.isEmpty(sign.getIdcard())) {
- System.out.println("error:sign-family-set-group:no-idcard:" + sign.getId());
- }
- int age = IdCardUtil.getAgeForIdcard(sign.getIdcard());
- String groupCode = "1";
- if (age >= 65) {
- groupCode = "3";
- }
- if (StringUtils.isNotEmpty(sign.getDoctorHealth())) {
- //把病人添加到健康管理师的健康分组里
- DoctorPatientGroupInfo doctorPatientGroupInfo = new DoctorPatientGroupInfo();
- doctorPatientGroupInfo.setCzrq(new Date());
- doctorPatientGroupInfo.setDoctor(sign.getDoctorHealth());
- doctorPatientGroupInfo.setStatus(1);
- doctorPatientGroupInfo.setPatient(sign.getPatient());
- doctorPatientGroupInfo.setPname(sign.getName());
- doctorPatientGroupInfo.setPartAmount(0);
- doctorPatientGroupInfo.setGroup(groupCode);//默认健康分组
- doctorPatientGroupInfo.setQyrq(sign.getApplyDate());
- doctorPatientGroupInfo.setSignType("2");//家庭签约
- groupInfoDao.save(doctorPatientGroupInfo);
- }
- if (StringUtils.isNotEmpty(sign.getDoctor())) {
- //把病人添加到全科医生的健康分组里
- DoctorPatientGroupInfo doctorPatientGroupInfo = new DoctorPatientGroupInfo();
- doctorPatientGroupInfo.setCzrq(new Date());
- doctorPatientGroupInfo.setDoctor(sign.getDoctor());
- doctorPatientGroupInfo.setStatus(1);
- doctorPatientGroupInfo.setPatient(sign.getPatient());
- doctorPatientGroupInfo.setPname(sign.getName());
- doctorPatientGroupInfo.setPartAmount(0);
- doctorPatientGroupInfo.setGroup(groupCode);//默认健康分组
- doctorPatientGroupInfo.setQyrq(sign.getApplyDate());
- doctorPatientGroupInfo.setSignType("2");//家庭签约
- groupInfoDao.save(doctorPatientGroupInfo);
- }
- List<DoctorPatientGroupInfo> groups = groupInfoDao.findPatientGroups(sign.getPatient());
- if (groups != null && groups.size() > 0) {
- for (DoctorPatientGroupInfo group : groups) {
- if (StringUtils.isNotEmpty(group.getSignType()) && group.getSignType().equals("2")) {
- continue;
- }
- DoctorPatientGroupInfo patientGroup = new DoctorPatientGroupInfo();
- patientGroup.setCzrq(new Date());
- patientGroup.setDoctor(group.getDoctor());
- patientGroup.setStatus(1);
- patientGroup.setPatient(sign.getPatient());
- patientGroup.setPname(sign.getName());
- patientGroup.setPartAmount(0);
- patientGroup.setGroup(group.getGroup());
- patientGroup.setQyrq(sign.getApplyDate());
- patientGroup.setSignType("2");//家庭签约
- groupInfoDao.save(patientGroup);
- }
- }
- sign.setTeamCode(doctorTeamCode);
- signFamilyDao.save(sign);
- } catch (Exception e) {
- e.printStackTrace();
- errorSigns.add(sign.getId());
- throw new Exception(e.getMessage());
- }
- }
- }
|