|
|
@ -1,12 +1,27 @@ |
|
|
|
package com.ccsens.wisdomcar.service; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
|
import com.ccsens.util.bean.dto.QueryDto; |
|
|
|
import com.ccsens.wisdomcar.bean.dto.WisdomCarDto; |
|
|
|
import com.ccsens.wisdomcar.bean.po.HospitalMember; |
|
|
|
import com.ccsens.wisdomcar.bean.po.HospitalMemberExample; |
|
|
|
import com.ccsens.wisdomcar.bean.vo.WisdomCarVo; |
|
|
|
import com.ccsens.wisdomcar.persist.dao.HospitalMemberDao; |
|
|
|
import com.ccsens.wisdomcar.persist.dao.WisdomCarDao; |
|
|
|
import cn.hutool.core.lang.Snowflake; |
|
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
|
import com.ccsens.cloudutil.bean.tall.dto.MemberRoleDto; |
|
|
|
import com.ccsens.cloudutil.bean.tall.dto.ProjectDto; |
|
|
|
import com.ccsens.cloudutil.bean.tall.vo.ProjectVo; |
|
|
|
import com.ccsens.cloudutil.feign.TallFeignClient; |
|
|
|
import com.ccsens.util.JsonResponse; |
|
|
|
import com.ccsens.util.RedisUtil; |
|
|
|
import com.ccsens.wisdomcar.bean.dto.CreateCaseDto; |
|
|
|
import com.ccsens.wisdomcar.bean.po.*; |
|
|
|
import com.ccsens.wisdomcar.persist.dao.HospitalWrokingDao; |
|
|
|
import com.ccsens.wisdomcar.persist.dao.PatientFamilyDao; |
|
|
|
import com.ccsens.wisdomcar.persist.dao.PatientProjectDao; |
|
|
|
import com.ccsens.wisdomcar.util.Constant; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Propagation; |
|
|
@ -17,9 +32,7 @@ import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
/** |
|
|
|
* @description: |
|
|
|
* @author: whj |
|
|
|
* @time: 2021/6/1 21:17 |
|
|
|
* @author AUSU |
|
|
|
*/ |
|
|
|
@Slf4j |
|
|
|
@Service |
|
|
@ -27,9 +40,143 @@ import java.util.List; |
|
|
|
public class WisdomCarService implements IWisdomCarService { |
|
|
|
|
|
|
|
@Resource |
|
|
|
private WisdomCarDao wisdomcarDao; |
|
|
|
private PatientProjectDao patientProjectDao; |
|
|
|
@Resource |
|
|
|
private PatientFamilyDao patientFamilyDao; |
|
|
|
@Resource |
|
|
|
private HospitalMemberDao hospitalMemberDao; |
|
|
|
@Resource |
|
|
|
private Snowflake snowflake; |
|
|
|
@Resource |
|
|
|
private RedisUtil redisUtil; |
|
|
|
@Resource |
|
|
|
private HospitalWrokingDao hospitalWrokingDao; |
|
|
|
@Resource |
|
|
|
private TallFeignClient tallFeignClient; |
|
|
|
@Resource |
|
|
|
private WisdomCarDao wisdomcarDao; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public void createCase(CreateCaseDto.PatientInfo param, Long userId) { |
|
|
|
//tall中需要添加的成员
|
|
|
|
MemberRoleDto.SaveMemberForTemplate saveMemberForTemplate = new MemberRoleDto.SaveMemberForTemplate(); |
|
|
|
List<MemberRoleDto.MemberForTemplate> memberList = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
|
|
//查找医院id
|
|
|
|
HospitalMemberExample hospitalMemberExample = new HospitalMemberExample(); |
|
|
|
hospitalMemberExample.createCriteria().andUserIdEqualTo(userId); |
|
|
|
List<HospitalMember> hospitalMembers = hospitalMemberDao.selectByExample(hospitalMemberExample); |
|
|
|
HospitalMember hospitalMember; |
|
|
|
|
|
|
|
//患者
|
|
|
|
PatientProject patient = new PatientProject(); |
|
|
|
patient.setId(snowflake.nextId()); |
|
|
|
//设置病历号,redis自增
|
|
|
|
if (CollectionUtil.isNotEmpty(hospitalMembers)){ |
|
|
|
hospitalMember = hospitalMembers.get(0); |
|
|
|
long incr = redisUtil.incr("医院_" + hospitalMember.getHospitalId().toString(), 1L); |
|
|
|
patient.setMedicalRecordNum(String.valueOf(incr)); |
|
|
|
} |
|
|
|
if (ObjectUtil.isNotNull(param.getPatientName())){ |
|
|
|
patient.setName(param.getPatientName()); |
|
|
|
} |
|
|
|
if (ObjectUtil.isNotNull(param.getPatientSex())){ |
|
|
|
patient.setSex(param.getPatientSex()); |
|
|
|
} |
|
|
|
if (ObjectUtil.isNotNull(param.getPatientAge())){ |
|
|
|
patient.setAge(param.getPatientAge()); |
|
|
|
} |
|
|
|
if (ObjectUtil.isNotNull(param.getPatientIdCard())){ |
|
|
|
patient.setIdCard(param.getPatientIdCard()); |
|
|
|
} |
|
|
|
if (ObjectUtil.isNotNull(param.getPatientPhone())){ |
|
|
|
patient.setPhone(param.getFamilyPhone()); |
|
|
|
} |
|
|
|
patientProjectDao.insertSelective(patient); |
|
|
|
|
|
|
|
//患者家属
|
|
|
|
if (ObjectUtil.isNotNull(param.getFamilyName()) || ObjectUtil.isNotNull(param.getFamilyPhone())){ |
|
|
|
PatientFamily patientFamily = new PatientFamily(); |
|
|
|
patientFamily.setId(snowflake.nextId()); |
|
|
|
patientFamily.setName(param.getFamilyName()); |
|
|
|
patientFamily.setPhone(param.getFamilyPhone()); |
|
|
|
patientFamily.setPatientId(patient.getId()); |
|
|
|
patientFamilyDao.insertSelective(patientFamily); |
|
|
|
if (ObjectUtil.isNotNull(param.getFamilyPhone())){ |
|
|
|
MemberRoleDto.MemberForTemplate memberForTemplate = new MemberRoleDto.MemberForTemplate(); |
|
|
|
//添加对应角色名称
|
|
|
|
List<String> roleName = new ArrayList<>(); |
|
|
|
roleName.add(Constant.PATIENT_FAMILY); |
|
|
|
memberForTemplate.setRoleName(roleName); |
|
|
|
memberForTemplate.setPhone(param.getFamilyPhone()); |
|
|
|
if (ObjectUtil.isNotNull(param.getFamilyName())){ |
|
|
|
memberForTemplate.setMemberName(param.getFamilyName()); |
|
|
|
} |
|
|
|
memberList.add(memberForTemplate); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//查找正在值班得急救医生和急救护士
|
|
|
|
if (CollectionUtil.isNotEmpty(hospitalMembers)){ |
|
|
|
long currentTime = System.currentTimeMillis(); |
|
|
|
//正在值班的医生(0-急诊护士,1-急诊医生,2-专科医生,3-分诊台)
|
|
|
|
List<HospitalMember> doctor = hospitalWrokingDao.findWorkingDoctor(hospitalMembers.get(0).getHospitalId(),currentTime); |
|
|
|
for (HospitalMember member : doctor) { |
|
|
|
MemberRoleDto.MemberForTemplate memberForTemplate = new MemberRoleDto.MemberForTemplate(); |
|
|
|
List<String> roleName = new ArrayList<>(); |
|
|
|
memberForTemplate.setUserId(member.getUserId()); |
|
|
|
//急诊护士
|
|
|
|
if (Constant.EMERGENCY_NURSE_ZERO.equals(member.getPosition())){ |
|
|
|
roleName.add(Constant.EMERGENCY_NURSE); |
|
|
|
} |
|
|
|
//急诊医生
|
|
|
|
if (Constant.EMERGENCY_DOCTOR_ONE.equals(member.getPosition())){ |
|
|
|
roleName.add(Constant.EMERGENCY_DOCTOR); |
|
|
|
} |
|
|
|
//专科医生
|
|
|
|
if (Constant.SPECIALIST_TWO.equals(member.getPosition())){ |
|
|
|
roleName.add(Constant.SPECIALIST); |
|
|
|
} |
|
|
|
memberForTemplate.setRoleName(roleName); |
|
|
|
memberList.add(memberForTemplate); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
ProjectDto.CopyProject copyProject = new ProjectDto.CopyProject(); |
|
|
|
copyProject.setProjectId(Constant.TEMPLATE_PROJECT); |
|
|
|
log.info("调用tall内的复制项目:{}",copyProject); |
|
|
|
QueryDto<ProjectDto.CopyProject> dto = new QueryDto<>(); |
|
|
|
dto.setParam(copyProject); |
|
|
|
JsonResponse<ProjectVo.ProjectInfo> projectNew = tallFeignClient.copyProjectNew(dto); |
|
|
|
log.info("复制项目后返回:{}", projectNew); |
|
|
|
if (ObjectUtil.isNull(projectNew)) { |
|
|
|
log.info("调用tall返回null"); |
|
|
|
return; |
|
|
|
} |
|
|
|
if(projectNew.getCode().equals(Constant.RESPONSE_OK)){ |
|
|
|
log.info("调用tall异常后返回:{}", projectNew.getMsg()); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
ProjectVo.ProjectInfo newProject = projectNew.getData(); |
|
|
|
if (ObjectUtil.isNotNull(newProject)){ |
|
|
|
saveMemberForTemplate.setProjectId(newProject.getId()); |
|
|
|
saveMemberForTemplate.setMemberForTemplate(memberList); |
|
|
|
//调用tall的添加成员接口
|
|
|
|
log.info("调用tall内的给复制的项目添加成员接口"); |
|
|
|
JsonResponse jsonResponse = tallFeignClient.addMemberForTemplate(saveMemberForTemplate); |
|
|
|
if (jsonResponse.getCode().equals(Constant.RESPONSE_OK)){ |
|
|
|
log.info("调用tall异常后返回:{}",jsonResponse.getMsg()); |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public List<WisdomCarVo.FreeCar> queryFreeCar(WisdomCarDto.FreeCar param, Long userId) { |
|
|
|