|
@ -33,7 +33,6 @@ import com.yihu.wlyy.util.*;
|
|
|
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
|
|
|
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.hibernate.sql.Select;
|
|
|
import org.json.JSONArray;
|
|
|
import org.json.JSONObject;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@ -403,253 +402,6 @@ public class FamilyContractService extends BaseService {
|
|
|
return signFamilyDao.hasSingStatus(idcard);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 发起签约申请
|
|
|
*
|
|
|
* @param province 省代码
|
|
|
* @param provinceName 省名称
|
|
|
* @param city 城市代码
|
|
|
* @param cityName 城市名称
|
|
|
* @param town 区县代码
|
|
|
* @param townName 区县名称
|
|
|
* @param address 详细地址
|
|
|
* @param name 患者姓名
|
|
|
* @param doctor 医生标识
|
|
|
* @param openid 微信openid
|
|
|
* @param patient 患者标识
|
|
|
* @param idcard 患者身份证号
|
|
|
* @param ssc 患者社保卡号
|
|
|
* @param mobile 患者手机号
|
|
|
* @param emerMobile 患者紧急联系人
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject sign(String province,
|
|
|
String provinceName,
|
|
|
String city,
|
|
|
String cityName,
|
|
|
String town,
|
|
|
String townName,
|
|
|
String address,
|
|
|
String name,
|
|
|
String doctor,
|
|
|
String openid,
|
|
|
String patient,
|
|
|
String idcard,
|
|
|
String ssc,
|
|
|
String mobile,
|
|
|
String emerMobile) throws Exception {
|
|
|
// 查询三师签约
|
|
|
JSONObject json = new JSONObject();
|
|
|
SignFamily sc = signFamilyDao.findByIdcard(idcard);
|
|
|
//判断身份证号是否已经注册
|
|
|
if (sc != null) {
|
|
|
json.put("res", "-3");
|
|
|
return json;
|
|
|
}
|
|
|
Doctor d = doctorDao.findByCode(doctor);
|
|
|
SignFamily sf = new SignFamily();
|
|
|
sf.setCode(getCode());
|
|
|
// 设置两网编码
|
|
|
sf.setLwCode(sc != null ? sc.getCode() : null);
|
|
|
sf.setCzrq(new Date());
|
|
|
sf.setPatientApplyDate(new Date());
|
|
|
sf.setDoctor(doctor);
|
|
|
//设置全科医生的行政团队
|
|
|
sf.setAdminTeamId(doctorAdminTeamDao.findIdByLeaderCode(doctor));
|
|
|
sf.setMobile(mobile);
|
|
|
sf.setDoctorName(d.getName());
|
|
|
sf.setEmerMobile(emerMobile);
|
|
|
sf.setName(name);
|
|
|
sf.setIdcard(idcard);
|
|
|
sf.setOpenid(openid);
|
|
|
sf.setPatient(patient);
|
|
|
sf.setHospital(d.getHospital());
|
|
|
sf.setHospitalName(d.getHospitalName());
|
|
|
sf.setSsc(ssc);
|
|
|
sf.setStatus(0);//0为初始状态
|
|
|
sf.setType(2);// 设置为家庭签约
|
|
|
sf.setSignType("1");//用户申请
|
|
|
sf.setSignSource("2");//签约来源【1 社区签约 2 移动签约】
|
|
|
//******************扣费接口**********************/
|
|
|
sf.setExpensesStatus("0"); //扣费状态 【0未扣费 1已扣费 2已退费】
|
|
|
// 判断用户表是否存在该身份证号
|
|
|
Patient p = patientDao.findByIdcard(idcard);
|
|
|
if (p == null) {
|
|
|
// 插入患者基本信息
|
|
|
IdcardInfoExtractor ie = new IdcardInfoExtractor(idcard);
|
|
|
p = new Patient();
|
|
|
p.setCode(getCode());
|
|
|
p.setName(name);
|
|
|
p.setProvince(province);
|
|
|
p.setProvinceName(provinceName);
|
|
|
p.setCity(city);
|
|
|
p.setCityName(cityName);
|
|
|
p.setTown(town);
|
|
|
p.setTownName(townName);
|
|
|
p.setAddress(address);
|
|
|
p.setOpenid(openid);
|
|
|
p.setOpenidTime(new Date());
|
|
|
p.setIdcard(idcard);
|
|
|
p.setMobile(mobile);
|
|
|
p.setSsc(ssc);
|
|
|
// 从身份证号中提取生日
|
|
|
p.setBirthday(ie.getBirthday());
|
|
|
// 从身份证号中提取性别
|
|
|
p.setSex(ie.getGender());
|
|
|
p.setCzrq(new Date());
|
|
|
p.setStatus(1);
|
|
|
// 保存新的用户信息
|
|
|
p = patientDao.save(p);
|
|
|
} else {
|
|
|
if (StringUtils.isNotEmpty(patient) && !StringUtils.equals(p.getCode(), patient)) {
|
|
|
// 身份证信息与登录信息不匹配
|
|
|
json.put("res", -1);
|
|
|
return json;
|
|
|
}
|
|
|
if (StringUtils.isNotEmpty(openid) && !StringUtils.equals(p.getOpenid(), openid)) {
|
|
|
// 身份证信息与登录信息不匹配
|
|
|
json.put("res", -1);
|
|
|
return json;
|
|
|
}
|
|
|
if (StringUtils.isNotEmpty(idcard) && !StringUtils.equals(p.getIdcard(), idcard)) {
|
|
|
// 身份证信息与登录信息不匹配
|
|
|
json.put("res", -1);
|
|
|
return json;
|
|
|
}
|
|
|
}
|
|
|
// 更新签约用户信息
|
|
|
patient = p.getCode();
|
|
|
sf.setPatient(patient);
|
|
|
SignFamily temp = signFamilyDao.save(sf);
|
|
|
if (temp != null) {
|
|
|
// 添加签约消息
|
|
|
Message message = new Message();
|
|
|
message.setCzrq(new Date());
|
|
|
message.setCreateTime(new Date());
|
|
|
message.setContent("您有一条新的家庭签约申请!");
|
|
|
message.setRead(1);//设置未读
|
|
|
message.setReceiver(doctor);//设置接受医生的code
|
|
|
message.setSender(patient);//设置发送的用户
|
|
|
message.setSenderName(p.getName());
|
|
|
message.setCode(getCode());
|
|
|
message.setSenderPhoto(p.getPhoto());
|
|
|
message.setTitle("家庭签约申请");
|
|
|
message.setType(1);//家庭签约信息
|
|
|
message.setReadonly(1);//是否只读消息
|
|
|
message.setSignStatus("1");//新的签约
|
|
|
message.setSex(p.getSex());
|
|
|
message.setOver("1");//未处理
|
|
|
message.setData(temp.getCode());
|
|
|
messageDao.save(message);
|
|
|
// 发送消息给医生
|
|
|
// 发送消息给医生
|
|
|
JSONObject jsonObject = doctorWorkTimeService.isDoctorWorking(doctor);
|
|
|
if (jsonObject.getString("status").equals("1")) {
|
|
|
//如果在工作时间内就推送
|
|
|
pushMsgTask.put(doctor, MessageType.MESSAGE_TYPE_DOCTOR_NEW_SIGN_WEB.D_SW_01.name(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_SIGN_WEB.家庭签约.name(), "您有一条新的家庭签约申请!", patient);
|
|
|
}
|
|
|
}
|
|
|
json.put("id", p.getId());
|
|
|
json.put("uid", p.getCode());
|
|
|
json.put("res", 1);
|
|
|
return json;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 申请签约
|
|
|
*
|
|
|
* @param doctor 签约医生
|
|
|
* @param patient 居民code
|
|
|
* @return
|
|
|
*/
|
|
|
public int sign(String doctor, String patient, String countryCode) throws Exception {
|
|
|
Patient p = patientDao.findByCode(patient);
|
|
|
if (p == null) {
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
SignFamily sc = signFamilyDao.findByIdcard(p.getIdcard());
|
|
|
//判断身份证号是否已签约
|
|
|
if (sc != null) {
|
|
|
return -2;
|
|
|
}
|
|
|
|
|
|
Doctor d = doctorDao.findByCode(doctor);
|
|
|
|
|
|
if (d == null) {
|
|
|
return -3;
|
|
|
}
|
|
|
|
|
|
SignFamily sf = new SignFamily();
|
|
|
|
|
|
sf.setCode(getCode());
|
|
|
// 设置两网编码
|
|
|
sf.setLwCode(sc != null ? sc.getCode() : null);
|
|
|
sf.setCzrq(new Date());
|
|
|
sf.setPatientApplyDate(new Date());
|
|
|
|
|
|
if (d.getLevel() == 2) {
|
|
|
sf.setDoctor(doctor);
|
|
|
sf.setDoctorName(d.getName());
|
|
|
} else {
|
|
|
sf.setDoctorHealth(doctor);
|
|
|
sf.setDoctorHealthName(d.getName());
|
|
|
}
|
|
|
|
|
|
sf.setMobile(p.getMobile());
|
|
|
sf.setName(p.getName());
|
|
|
sf.setIdcard(p.getIdcard());
|
|
|
sf.setOpenid(p.getOpenid());
|
|
|
sf.setPatient(patient);
|
|
|
sf.setHospital(d.getHospital());
|
|
|
sf.setHospitalName(d.getHospitalName());
|
|
|
sf.setSsc(p.getSsc());
|
|
|
sf.setStatus(0);//0为初始状态
|
|
|
sf.setType(2);// 设置为家庭签约
|
|
|
sf.setSignType("1");//用户申请
|
|
|
sf.setSignSource("2");//签约来源【1 社区签约 2 移动签约】
|
|
|
//******************扣费接口**********************/
|
|
|
sf.setExpensesStatus("0"); //扣费状态 【0未扣费 1已扣费 2已退费】
|
|
|
sf.setBegin(DateUtil.stringToDate(DateUtil.getSignYear() + "-07-01 00:00:00", "yyyy-MM-dd HH:mmm:ss"));
|
|
|
sf.setEnd(DateUtil.stringToDate(DateUtil.getSignYear() + 1 + "-06-30 23:59:59", "yyyy-MM-dd HH:mmm:ss"));
|
|
|
sf.setSignYear(DateUtil.getSignYear() + "");
|
|
|
|
|
|
//1.3.5新增居委会字段
|
|
|
signWebService.setPatientCountryFamily(countryCode, sf);
|
|
|
|
|
|
SignFamily temp = signFamilyDao.save(sf);
|
|
|
|
|
|
if (temp != null) {
|
|
|
// 添加签约消息
|
|
|
Message message = new Message();
|
|
|
message.setCzrq(new Date());
|
|
|
message.setCreateTime(new Date());
|
|
|
message.setContent("您有一条新的家庭签约申请!");
|
|
|
message.setRead(1);//设置未读
|
|
|
message.setReceiver(doctor);//设置接受医生的code
|
|
|
message.setSender(patient);//设置发送的用户
|
|
|
message.setSenderName(p.getName());
|
|
|
message.setCode(getCode());
|
|
|
message.setSenderPhoto(p.getPhoto());
|
|
|
message.setTitle("家庭签约申请");
|
|
|
message.setType(1);//家庭签约信息
|
|
|
message.setReadonly(1);//是否只读消息
|
|
|
message.setSignStatus("1");//新的签约
|
|
|
message.setSex(p.getSex());
|
|
|
message.setOver("1");//未处理
|
|
|
message.setData(temp.getCode());
|
|
|
messageDao.save(message);
|
|
|
// 发送消息给医生
|
|
|
JSONObject jsonObject = doctorWorkTimeService.isDoctorWorking(doctor);
|
|
|
if (jsonObject.getString("status").equals("1")) {
|
|
|
//如果在工作时间内就推送
|
|
|
pushMsgTask.put(doctor, MessageType.MESSAGE_TYPE_DOCTOR_NEW_SIGN_WEB.D_SW_01.name(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_SIGN_WEB.家庭签约.name(), "您有一条新的家庭签约申请!", patient);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 取消签约申请
|
|
|
*
|
|
@ -734,59 +486,6 @@ public class FamilyContractService extends BaseService {
|
|
|
return 200;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 申请解约
|
|
|
*
|
|
|
* @param patient 患者标识
|
|
|
* @param doctor 医生标识
|
|
|
* @param openid 微信openid
|
|
|
* @param reason 解约理由
|
|
|
* @return
|
|
|
*/
|
|
|
public int surrender(String patient, String patientName, String userPhoto, String doctor, String doctorName, String openid, String reason, int sex) throws Exception {
|
|
|
// 更新为待解约
|
|
|
int res = signFamilyDao.surrender(patient, doctor);
|
|
|
SignFamily signFamily = signFamilyDao.findByjiatingPatient(patient);
|
|
|
signFamily.setPatientApplyUnsignDate(new Date());
|
|
|
if (res == 0) {
|
|
|
return 0;
|
|
|
}
|
|
|
// 添加签约消息
|
|
|
Message message = new Message();
|
|
|
// 消息时间
|
|
|
message.setCzrq(new Date());
|
|
|
message.setCreateTime(new Date());
|
|
|
// 消息内容
|
|
|
message.setContent("申请解除与您的签约关系");
|
|
|
// 未读
|
|
|
message.setRead(1);
|
|
|
message.setReceiverName(doctorName);
|
|
|
// 接收人
|
|
|
message.setReceiver(doctor);
|
|
|
message.setCode(getCode());
|
|
|
// 发送人
|
|
|
message.setSender(patient);
|
|
|
message.setSenderName(patientName);
|
|
|
message.setSenderPhoto(userPhoto);
|
|
|
// 标题
|
|
|
message.setTitle("解除家庭签约申请");
|
|
|
message.setType(1);
|
|
|
message.setSignStatus("4");
|
|
|
message.setReadonly(1);
|
|
|
message.setSex(sex);
|
|
|
message.setOver("1");
|
|
|
// 设置解约理由
|
|
|
message.setReason(reason);
|
|
|
message.setData(signFamily.getCode());
|
|
|
messageDao.save(message);
|
|
|
// 发送消息给医生
|
|
|
JSONObject jsonObject = doctorWorkTimeService.isDoctorWorking(doctor);
|
|
|
if (jsonObject.getString("status").equals("1")) {
|
|
|
//如果在工作时间内就推送
|
|
|
pushMsgTask.put(doctor, MessageType.MESSAGE_TYPE_DOCTOR_SIGN_WEB_RELIEVE.D_SW_02.name(), MessageType.MESSAGE_TYPE_DOCTOR_SIGN_WEB_RELIEVE.家庭签约.name(), patientName + " 申请解除与您的家庭签约!", patient);
|
|
|
}
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询患者的签约消息
|
|
@ -3162,399 +2861,6 @@ public class FamilyContractService extends BaseService {
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 续签申请
|
|
|
*
|
|
|
* @param doctor 签约医生
|
|
|
* @param patient 居民code
|
|
|
* @return
|
|
|
*/
|
|
|
@Transactional
|
|
|
public int signRenew(String doctor, String healthDoctor, String patient, String reason) throws Exception {
|
|
|
Patient p = patientDao.findByCode(patient);
|
|
|
if (p == null) {
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
// List<SignFamilyRenew> sc = signFamilyRenewDao.findByIdcard(p.getIdcard());
|
|
|
// //判断身份证号是否已签约
|
|
|
// if (sc != null&&sc.size()>0) {
|
|
|
// return -2;
|
|
|
// }
|
|
|
|
|
|
Doctor d = doctorDao.findByCode(doctor);
|
|
|
Doctor hd = null;
|
|
|
if (StringUtils.isNotBlank(healthDoctor)) {
|
|
|
hd = doctorDao.findByCode(healthDoctor);
|
|
|
}
|
|
|
|
|
|
if (d == null) {
|
|
|
return -3;
|
|
|
}
|
|
|
Calendar cal = Calendar.getInstance();
|
|
|
int year = cal.get(Calendar.YEAR);
|
|
|
int month = cal.get(Calendar.MONTH) + 1;
|
|
|
|
|
|
List<SignFamilyRenew> res = signFamilyRenewDao.findByDoctorAndPatientHossPost(patient, DateUtil.getSignYear() + "");
|
|
|
if (res != null && res.size() > 0) {
|
|
|
return -2;
|
|
|
}
|
|
|
|
|
|
SignFamilyRenew sf = new SignFamilyRenew();
|
|
|
|
|
|
|
|
|
String sql = "";
|
|
|
//判断是否有生效记录SQL
|
|
|
sql = "SELECT t.doctor,t.team_code teamCode,t.admin_team_code adminTeamCode,t.mobile FROM wlyy_sign_family t WHERE t.patient ='" + patient + "' AND t.status>=0 AND t.expenses_status='1' AND t.sign_year ='" + (DateUtil.getSignYear() - 1) + "'";
|
|
|
|
|
|
List<Map<String, Object>> signs = jdbcTemplate.queryForList(sql);
|
|
|
if (signs == null || signs.size() == 0) {
|
|
|
return -4;
|
|
|
}
|
|
|
Map<String, Object> sign = signs.get(0);
|
|
|
//判断续签医生是否一致
|
|
|
if (doctor.equals(sign.get("doctor"))) {
|
|
|
//如果一致保存团队信息
|
|
|
sf.setTeamCode((String) sign.get("teamCode"));
|
|
|
Integer c = (Integer) sign.get("adminTeamCode");
|
|
|
sf.setRenewFlag("1");
|
|
|
sf.setAdminTeamId(c.longValue());
|
|
|
} else {
|
|
|
//如果不一致 查看医生团队
|
|
|
sf.setRenewFlag("2");
|
|
|
// String tcSql = "SELECT t.id FROM wlyy_admin_team t WHERE t.leader_code ='"+doctor+"'";
|
|
|
// List<Map<String ,Object>> ids = jdbcTemplate.queryForList(tcSql);
|
|
|
// if(ids!=null&&ids.size()>0){
|
|
|
// Integer id = (Integer)ids.get(0).get("id");
|
|
|
// Long lid = id.longValue();
|
|
|
// sf.setAdminTeamId(lid);
|
|
|
// }else{
|
|
|
// //未找到团队信息
|
|
|
// return -5;
|
|
|
// }
|
|
|
//新建咨询团队组逻辑
|
|
|
DoctorTeam team = new DoctorTeam();
|
|
|
String code = getCode();
|
|
|
team.setCode(code);
|
|
|
team.setCzrq(new Date());
|
|
|
team.setDel("1");
|
|
|
team.setSignType("2");
|
|
|
//判断是否有健康管理师
|
|
|
if (hd != null && StringUtils.isNotBlank(hd.getName())) {
|
|
|
team.setName(d.getName() + "," + hd.getName() + "," + p.getName());
|
|
|
//新建健康管理师
|
|
|
DoctorTeamMember hdmb = new DoctorTeamMember();
|
|
|
hdmb.setName(hd.getName());
|
|
|
hdmb.setMemberCode(healthDoctor);
|
|
|
hdmb.setCode(getCode());
|
|
|
hdmb.setDel("1");
|
|
|
hdmb.setCzrq(new Date());
|
|
|
hdmb.setTeam(code);
|
|
|
hdmb.setType(3);
|
|
|
hdmb.setSignType("2");
|
|
|
doctorTeamDoctor.save(hdmb);
|
|
|
} else {
|
|
|
team.setName(d.getName() + "," + p.getName());
|
|
|
}
|
|
|
//新建医生成员
|
|
|
DoctorTeamMember dmb = new DoctorTeamMember();
|
|
|
dmb.setName(d.getName());
|
|
|
dmb.setMemberCode(doctor);
|
|
|
dmb.setCode(getCode());
|
|
|
dmb.setDel("1");
|
|
|
dmb.setCzrq(new Date());
|
|
|
dmb.setTeam(code);
|
|
|
dmb.setType(d.getLevel());
|
|
|
dmb.setSignType("2");
|
|
|
|
|
|
//新建病人
|
|
|
DoctorTeamMember pmb = new DoctorTeamMember();
|
|
|
pmb.setName(p.getName());
|
|
|
pmb.setMemberCode(patient);
|
|
|
pmb.setCode(getCode());
|
|
|
pmb.setDel("1");
|
|
|
pmb.setCzrq(new Date());
|
|
|
pmb.setTeam(code);
|
|
|
pmb.setType(5);
|
|
|
pmb.setSignType("2");
|
|
|
|
|
|
doctorTeamDoctor.save(dmb);
|
|
|
doctorTeamDoctor.save(pmb);
|
|
|
doctorTeamDao.save(team);
|
|
|
//关联新团队
|
|
|
sf.setTeamCode(code);
|
|
|
}
|
|
|
sf.setCode(getCode());
|
|
|
sf.setCzrq(new Date());
|
|
|
sf.setPatientApplyDate(new Date());
|
|
|
|
|
|
if (d != null) {
|
|
|
sf.setDoctor(doctor);
|
|
|
sf.setDoctorName(d.getName());
|
|
|
sf.setSignDoctorCode(doctor);
|
|
|
sf.setSignDoctorName(d.getName());
|
|
|
}
|
|
|
|
|
|
if (hd != null) {
|
|
|
sf.setDoctorHealth(healthDoctor);
|
|
|
sf.setDoctorHealthName(hd.getName());
|
|
|
}
|
|
|
sf.setMobile((String) sign.get("mobile"));
|
|
|
sf.setName(p.getName());
|
|
|
sf.setIdcard(p.getIdcard());
|
|
|
sf.setOpenid(p.getOpenid());
|
|
|
sf.setPatient(patient);
|
|
|
sf.setHospital(d.getHospital());
|
|
|
sf.setHospitalName(d.getHospitalName());
|
|
|
sf.setSsc(p.getSsc());
|
|
|
sf.setStatus(0);//0为初始状态
|
|
|
sf.setType(2);// 设置为家庭签约
|
|
|
sf.setSignType("1");//用户申请
|
|
|
sf.setSignSource("2");//签约来源【1 社区签约 2 移动签约】
|
|
|
//******************扣费接口**********************/
|
|
|
sf.setExpensesStatus("0"); //扣费状态 【0未扣费 1已扣费 2已退费】
|
|
|
|
|
|
sf.setSignYear(DateUtil.getSignYear() + "");
|
|
|
sf.setIsValid(0);
|
|
|
sf.setBegin(DateUtil.stringToDate(DateUtil.getSignYear() + "-07-01 00:00:00", "yyyy-MM-dd HH:mmm:ss"));
|
|
|
sf.setEnd(DateUtil.stringToDate(DateUtil.getSignYear() + 1 + "-06-30 23:59:59", "yyyy-MM-dd HH:mmm:ss"));
|
|
|
//设置转签原因
|
|
|
if (StringUtils.isNotBlank(reason)) {
|
|
|
sf.setRenewChangeReason(reason);
|
|
|
}
|
|
|
|
|
|
SignFamilyRenew temp = signFamilyRenewDao.save(sf);
|
|
|
|
|
|
if (temp != null) {
|
|
|
// 添加签约消息
|
|
|
Message message = new Message();
|
|
|
message.setCzrq(new Date());
|
|
|
message.setCreateTime(new Date());
|
|
|
message.setContent("您有一条新的家庭医生续签申请!");
|
|
|
message.setRead(1);//设置未读
|
|
|
message.setReceiver(doctor);//设置接受医生的code
|
|
|
message.setSender(patient);//设置发送的用户
|
|
|
message.setSenderName(p.getName());
|
|
|
message.setCode(getCode());
|
|
|
message.setSenderPhoto(p.getPhoto());
|
|
|
message.setTitle("家庭续签申请");
|
|
|
message.setType(1);//家庭签约信息
|
|
|
message.setReadonly(1);//是否只读消息
|
|
|
if ("1".equals(sf.getRenewFlag())) {
|
|
|
message.setSignStatus("8");//续签
|
|
|
} else {
|
|
|
message.setSignStatus("9");//改签
|
|
|
}
|
|
|
|
|
|
message.setSex(p.getSex());
|
|
|
message.setOver("1");//未处理
|
|
|
message.setData(sf.getCode());
|
|
|
messageDao.save(message);
|
|
|
// 发送消息给医生
|
|
|
JSONObject jsonObject = doctorWorkTimeService.isDoctorWorking(doctor);
|
|
|
if (jsonObject.getString("status").equals("1")) {
|
|
|
//如果在工作时间内就推送
|
|
|
pushMsgTask.put(doctor, MessageType.MESSAGE_TYPE_DOCTOR_NEW_SIGN_WEB.D_SW_01.name(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_SIGN_WEB.家庭签约.name(), p.getName() + "申请与您续签家庭医生", patient);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 续签申请(7月之后)
|
|
|
*
|
|
|
* @param doctor 签约医生
|
|
|
* @param patient 居民code
|
|
|
* @return
|
|
|
*/
|
|
|
@Transactional
|
|
|
public int signRenewOverdue(String doctor, String healthDoctor, String patient, String reason, String countryCode) throws Exception {
|
|
|
Patient p = patientDao.findByCode(patient);
|
|
|
if (p == null) {
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
Doctor d = doctorDao.findByCode(doctor);
|
|
|
Doctor hd = null;
|
|
|
if (StringUtils.isNotBlank(healthDoctor)) {
|
|
|
hd = doctorDao.findByCode(healthDoctor);
|
|
|
}
|
|
|
|
|
|
if (d == null) {
|
|
|
return -3;
|
|
|
}
|
|
|
|
|
|
|
|
|
List<SignFamily> res = signFamilyDao.findByDoctorAndPatientHossPost(patient, DateUtil.getSignYear() + "");
|
|
|
if (res != null && res.size() > 0) {
|
|
|
return -2;
|
|
|
}
|
|
|
|
|
|
SignFamily sf = new SignFamily();
|
|
|
|
|
|
Calendar cal = Calendar.getInstance();
|
|
|
int year = cal.get(Calendar.YEAR);
|
|
|
int month = cal.get(Calendar.MONTH) + 1;
|
|
|
String sql = "SELECT t.doctor,t.team_code teamCode,t.admin_team_code adminTeamCode,t.mobile FROM wlyy_sign_family t WHERE t.patient ='" + patient + "' AND t.status=-4 AND t.expenses_status='1' AND t.sign_year ='" + (year - 1) + "'";
|
|
|
|
|
|
|
|
|
List<Map<String, Object>> signs = jdbcTemplate.queryForList(sql);
|
|
|
if (signs == null || signs.size() == 0) {
|
|
|
return -4;
|
|
|
}
|
|
|
Map<String, Object> sign = signs.get(0);
|
|
|
//判断续签医生是否一致
|
|
|
if (doctor.equals(sign.get("doctor"))) {
|
|
|
//如果一致保存团队信息
|
|
|
sf.setRenewFlag("1");
|
|
|
sf.setTeamCode((String) sign.get("teamCode"));
|
|
|
Integer c = (Integer) sign.get("adminTeamCode");
|
|
|
sf.setAdminTeamId(c.longValue());
|
|
|
} else {
|
|
|
//如果不一致 查看医生团队
|
|
|
sf.setRenewFlag("2");
|
|
|
// String tcSql = "SELECT t.id FROM wlyy_admin_team t WHERE t.leader_code ='"+doctor+"'";
|
|
|
// List<Map<String ,Object>> ids = jdbcTemplate.queryForList(tcSql);
|
|
|
// if(ids!=null&&ids.size()>0){
|
|
|
// Integer id = (Integer)ids.get(0).get("id");
|
|
|
// Long lid = id.longValue();
|
|
|
// sf.setAdminTeamId(lid);
|
|
|
// }else{
|
|
|
// //未找到团队信息
|
|
|
// return -5;
|
|
|
// }
|
|
|
//新建咨询团队组
|
|
|
DoctorTeam team = new DoctorTeam();
|
|
|
String code = getCode();
|
|
|
team.setCode(code);
|
|
|
team.setCzrq(new Date());
|
|
|
team.setDel("1");
|
|
|
team.setSignType("2");
|
|
|
//判断是否有健康管理师
|
|
|
if (hd != null && StringUtils.isNotBlank(hd.getName())) {
|
|
|
team.setName(d.getName() + "," + hd.getName() + "," + p.getName());
|
|
|
//新建健康管理师
|
|
|
DoctorTeamMember hdmb = new DoctorTeamMember();
|
|
|
hdmb.setName(hd.getName());
|
|
|
hdmb.setMemberCode(healthDoctor);
|
|
|
hdmb.setCode(getCode());
|
|
|
hdmb.setDel("1");
|
|
|
hdmb.setCzrq(new Date());
|
|
|
hdmb.setTeam(code);
|
|
|
hdmb.setType(3);
|
|
|
hdmb.setSignType("2");
|
|
|
doctorTeamDoctor.save(hdmb);
|
|
|
} else {
|
|
|
team.setName(d.getName() + "," + p.getName());
|
|
|
}
|
|
|
//新建医生成员
|
|
|
DoctorTeamMember dmb = new DoctorTeamMember();
|
|
|
dmb.setName(d.getName());
|
|
|
dmb.setMemberCode(doctor);
|
|
|
dmb.setCode(getCode());
|
|
|
dmb.setDel("1");
|
|
|
dmb.setCzrq(new Date());
|
|
|
dmb.setTeam(code);
|
|
|
dmb.setType(d.getLevel());
|
|
|
dmb.setSignType("2");
|
|
|
|
|
|
//新建病人
|
|
|
DoctorTeamMember pmb = new DoctorTeamMember();
|
|
|
pmb.setName(p.getName());
|
|
|
pmb.setMemberCode(patient);
|
|
|
pmb.setCode(getCode());
|
|
|
pmb.setDel("1");
|
|
|
pmb.setCzrq(new Date());
|
|
|
pmb.setTeam(code);
|
|
|
pmb.setType(5);
|
|
|
pmb.setSignType("2");
|
|
|
|
|
|
doctorTeamDoctor.save(dmb);
|
|
|
doctorTeamDoctor.save(pmb);
|
|
|
doctorTeamDao.save(team);
|
|
|
//关联新团队
|
|
|
sf.setTeamCode(code);
|
|
|
}
|
|
|
sf.setCode(getCode());
|
|
|
sf.setCzrq(new Date());
|
|
|
sf.setPatientApplyDate(new Date());
|
|
|
|
|
|
if (d != null) {
|
|
|
sf.setDoctor(doctor);
|
|
|
sf.setDoctorName(d.getName());
|
|
|
sf.setSignDoctorCode(doctor);
|
|
|
sf.setSignDoctorName(d.getName());
|
|
|
}
|
|
|
|
|
|
if (hd != null) {
|
|
|
sf.setDoctorHealth(healthDoctor);
|
|
|
sf.setDoctorHealthName(hd.getName());
|
|
|
}
|
|
|
sf.setMobile((String) sign.get("mobile"));
|
|
|
sf.setName(p.getName());
|
|
|
sf.setIdcard(p.getIdcard());
|
|
|
sf.setOpenid(p.getOpenid());
|
|
|
sf.setPatient(patient);
|
|
|
sf.setHospital(d.getHospital());
|
|
|
sf.setHospitalName(d.getHospitalName());
|
|
|
sf.setSsc(p.getSsc());
|
|
|
sf.setStatus(0);//0为初始状态
|
|
|
sf.setType(2);// 设置为家庭签约
|
|
|
sf.setSignType("1");//用户申请
|
|
|
sf.setSignSource("2");//签约来源【1 社区签约 2 移动签约】
|
|
|
//******************扣费接口**********************/
|
|
|
sf.setExpensesStatus("0"); //扣费状态 【0未扣费 1已扣费 2已退费】
|
|
|
|
|
|
sf.setSignYear(year + "");
|
|
|
|
|
|
sf.setBegin(DateUtil.stringToDate(DateUtil.getSignYear() + "-07-01 00:00:00", "yyyy-MM-dd HH:mmm:ss"));
|
|
|
sf.setEnd(DateUtil.stringToDate(DateUtil.getSignYear() + 1 + "-06-30 23:59:59", "yyyy-MM-dd HH:mmm:ss"));
|
|
|
|
|
|
if (StringUtils.isNotBlank(reason)) {
|
|
|
sf.setRenewChangeReason(reason);
|
|
|
}
|
|
|
//1.3.5新增居委会字段
|
|
|
signWebService.setPatientCountryFamily(countryCode, sf);
|
|
|
|
|
|
SignFamily temp = signFamilyDao.save(sf);
|
|
|
|
|
|
if (temp != null) {
|
|
|
// 添加签约消息
|
|
|
Message message = new Message();
|
|
|
message.setCzrq(new Date());
|
|
|
message.setCreateTime(new Date());
|
|
|
message.setContent("您有一条新的家庭医生续签申请!");
|
|
|
message.setRead(1);//设置未读
|
|
|
message.setReceiver(doctor);//设置接受医生的code
|
|
|
message.setSender(patient);//设置发送的用户
|
|
|
message.setSenderName(p.getName());
|
|
|
message.setCode(getCode());
|
|
|
message.setSenderPhoto(p.getPhoto());
|
|
|
message.setTitle("家庭续签申请");
|
|
|
message.setType(1);//家庭签约信息
|
|
|
message.setReadonly(1);//是否只读消息
|
|
|
|
|
|
if ("1".equals(sf.getRenewFlag())) {
|
|
|
message.setSignStatus("8");//续签
|
|
|
} else {
|
|
|
message.setSignStatus("9");//改签
|
|
|
}
|
|
|
//message.setSignStatus("1");//过期以后,变为1为签约
|
|
|
message.setSex(p.getSex());
|
|
|
message.setOver("1");//未处理
|
|
|
message.setData(sf.getCode());
|
|
|
messageDao.save(message);
|
|
|
// 发送消息给医生
|
|
|
JSONObject jsonObject = doctorWorkTimeService.isDoctorWorking(doctor);
|
|
|
if (jsonObject.getString("status").equals("1")) {
|
|
|
//如果在工作时间内就推送
|
|
|
pushMsgTask.put(doctor, MessageType.MESSAGE_TYPE_DOCTOR_NEW_SIGN_WEB.D_SW_01.name(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_SIGN_WEB.家庭签约.name(), p.getName() + "申请与您续签家庭医生", patient);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @param code
|