|
@ -0,0 +1,230 @@
|
|
|
package com.yihu.wlyy.statistics.task;
|
|
|
|
|
|
import com.yihu.wlyy.statistics.Application;
|
|
|
import com.yihu.wlyy.statistics.dao.DoctorPatientGroupInfoDao;
|
|
|
import com.yihu.wlyy.statistics.dao.DoctorTeamDao;
|
|
|
import com.yihu.wlyy.statistics.dao.DoctorTeamMemberDao;
|
|
|
import com.yihu.wlyy.statistics.dao.SignFamilyDao;
|
|
|
import com.yihu.wlyy.statistics.model.doctor.DoctorPatientGroupInfo;
|
|
|
import com.yihu.wlyy.statistics.model.signfamily.SignFamily;
|
|
|
import com.yihu.wlyy.statistics.model.team.DoctorTeam;
|
|
|
import com.yihu.wlyy.statistics.model.team.DoctorTeamMember;
|
|
|
import com.yihu.wlyy.statistics.util.IdCardUtil;
|
|
|
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.orm.jpa.JpaTransactionManager;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.TransactionDefinition;
|
|
|
import org.springframework.transaction.TransactionStatus;
|
|
|
import org.springframework.transaction.support.DefaultTransactionDefinition;
|
|
|
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.UUID;
|
|
|
|
|
|
/**
|
|
|
* Created by lyr-pc on 2016/10/11.
|
|
|
*/
|
|
|
public class SignTeamAndGroupRunnable implements Runnable {
|
|
|
|
|
|
long start = 0;
|
|
|
long end = 0;
|
|
|
|
|
|
SignFamilyDao signFamilyDao;
|
|
|
DoctorPatientGroupInfoDao groupInfoDao;
|
|
|
DoctorTeamDao teamDao;
|
|
|
DoctorTeamMemberDao teamMemberDao;
|
|
|
JpaTransactionManager transactionManager;
|
|
|
|
|
|
public SignTeamAndGroupRunnable(Long start, Long end){
|
|
|
this.start = start;
|
|
|
this.end = end;
|
|
|
this.signFamilyDao = Application.ctx.getBean(SignFamilyDao.class);
|
|
|
this.groupInfoDao = Application.ctx.getBean(DoctorPatientGroupInfoDao.class);
|
|
|
this.teamDao = Application.ctx.getBean(DoctorTeamDao.class);
|
|
|
this.teamMemberDao = Application.ctx.getBean(DoctorTeamMemberDao.class);
|
|
|
this.transactionManager = Application.ctx.getBean(JpaTransactionManager.class);
|
|
|
}
|
|
|
|
|
|
public String getCode() {
|
|
|
return UUID.randomUUID().toString().replaceAll("-", "");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void run() {
|
|
|
boolean flag = true;
|
|
|
|
|
|
while (flag) {
|
|
|
|
|
|
PageRequest pageRequest = new PageRequest(0, 100);
|
|
|
Page<SignFamily> signs = signFamilyDao.findByTypeAndSignSourceAndId(2, "1",start, end,pageRequest);
|
|
|
|
|
|
if (signs != null && signs.getContent().size() < 100) {
|
|
|
flag = false;
|
|
|
}
|
|
|
|
|
|
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
|
|
|
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); // 事物隔离级别,开启新事务
|
|
|
TransactionStatus status = transactionManager.getTransaction(def); // 获得事务状态
|
|
|
try {
|
|
|
transform(signs);
|
|
|
//事物提交
|
|
|
transactionManager.commit(status);
|
|
|
} catch (Exception e) {
|
|
|
transactionManager.rollback(status);
|
|
|
}
|
|
|
|
|
|
start = start + 100;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void transform(Page<SignFamily> signs){
|
|
|
System.out.println("sign-patient-group-team:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
|
|
|
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();
|
|
|
}
|
|
|
}
|
|
|
System.out.println("sign-patient-group-team:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
}
|
|
|
}
|