|
@ -7,6 +7,7 @@ import com.yihu.wlyy.entity.patient.Patient;
|
|
|
import com.yihu.wlyy.repository.doctor.DoctorAdminTeamDao;
|
|
|
import com.yihu.wlyy.repository.doctor.DoctorAdminTeamMemberDao;
|
|
|
import com.yihu.wlyy.service.BaseService;
|
|
|
import org.apache.commons.lang3.tuple.Pair;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
@ -139,8 +140,7 @@ public class AdminTeamService extends BaseService {
|
|
|
* @param doctorCode
|
|
|
*/
|
|
|
public void addMember(long teamId, String doctorCode) {
|
|
|
Integer count = memberDao.isMemberExist(teamId, doctorCode);
|
|
|
if (count == null || count == 0) {
|
|
|
if (!memberDao.isMemberExist(teamId, doctorCode)) {
|
|
|
AdminTeamMember member = new AdminTeamMember();
|
|
|
member.setTeamId(teamId);
|
|
|
member.setDoctorCode(doctorCode);
|
|
@ -157,9 +157,11 @@ public class AdminTeamService extends BaseService {
|
|
|
* @param teamId
|
|
|
* @param doctorCode
|
|
|
*/
|
|
|
public void removeMember(long teamId, String doctorCode) {
|
|
|
public Pair<Integer, String> removeMember(long teamId, String doctorCode) {
|
|
|
AdminTeamMember member = memberDao.findByTeamIdAndDoctorCodeOrderByDoctorCodeAsc(teamId, doctorCode);
|
|
|
if (member != null) memberDao.delete(member);
|
|
|
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
public List<Doctor> getMembers(long teamId) {
|
|
@ -195,32 +197,17 @@ public class AdminTeamService extends BaseService {
|
|
|
* @param doctors
|
|
|
* @return
|
|
|
*/
|
|
|
public Map<String, Integer> getMemberSigningCount(List<Doctor> doctors) {
|
|
|
public Map<String, Integer> getMemberSigningCount(long teamId, List<Doctor> doctors) {
|
|
|
Map<String, Integer> counts = new HashMap<>();
|
|
|
|
|
|
for (Doctor doctor : doctors) {
|
|
|
if (doctor.isProfessionalDoctor()) continue;
|
|
|
|
|
|
boolean isHealthDoctor = doctor.isHealthDoctor();
|
|
|
|
|
|
List<String> partners = new ArrayList<>();
|
|
|
for (Doctor partner : doctors) {
|
|
|
if (partner == doctor) continue;
|
|
|
|
|
|
if (isHealthDoctor && partner.isGeneralDoctor()) {
|
|
|
partners.add(partner.getCode());
|
|
|
} else if (!isHealthDoctor && partner.isHealthDoctor()) {
|
|
|
partners.add(partner.getCode());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Integer signingCount;
|
|
|
if (partners.isEmpty()) {
|
|
|
signingCount = 0;
|
|
|
} else if (isHealthDoctor) {
|
|
|
signingCount = teamDao.getHealthDoctorSignCount(doctor.getCode(), partners);
|
|
|
if (doctor.isHealthDoctor()) {
|
|
|
signingCount = teamDao.getHealthDoctorSignCount(doctor.getCode(), teamId);
|
|
|
} else {
|
|
|
signingCount = teamDao.getDoctorSignCount(doctor.getCode(), partners);
|
|
|
signingCount = teamDao.getDoctorSignCount(doctor.getCode(), teamId);
|
|
|
}
|
|
|
|
|
|
counts.put(doctor.getCode(), signingCount);
|
|
@ -239,16 +226,7 @@ public class AdminTeamService extends BaseService {
|
|
|
* @return
|
|
|
*/
|
|
|
public List<Patient> getMemberSigningPatients(long teamId, String healthDoctorCode, int page, int size) {
|
|
|
List<String> generalDoctors = new ArrayList<>();
|
|
|
List<Doctor> doctors = getMembers(teamId);
|
|
|
for (Doctor doctor : doctors) {
|
|
|
if (doctor.getLevel() != 2) continue;
|
|
|
|
|
|
generalDoctors.add(doctor.getCode());
|
|
|
}
|
|
|
|
|
|
Page<Patient> result = teamDao.getHealthDoctorSigningPatients(
|
|
|
healthDoctorCode, generalDoctors, new PageRequest(page, size));
|
|
|
Page<Patient> result = teamDao.getHealthDoctorSigningPatients(healthDoctorCode, teamId, new PageRequest(page, size));
|
|
|
|
|
|
return result.getContent();
|
|
|
}
|