Forráskód Böngészése

修改团队内医生判断 逻辑:使用 SignFamily.adminTeamId 作为依据

Sand 8 éve
szülő
commit
78e6b83581

+ 5 - 5
src/main/java/com/yihu/wlyy/entity/patient/SignFamily.java

@ -60,7 +60,7 @@ public class SignFamily extends IdEntity {
	private String agentDoctorCode;//代理簽約人code
	private String agentDoctorName;//代理簽約人銘
	private String agentDoctorLevel;//代理簽約人等级
	private Long adminTeamCode;//行政团队code
	private Long adminTeamId;//行政团队ID
	public String getCode() {
		return code;
@ -418,12 +418,12 @@ public class SignFamily extends IdEntity {
	}
	@Column(name = "admin_team_code")
	public Long getAdminTeamCode() {
		return adminTeamCode;
	public Long getAdminTeamId() {
		return adminTeamId;
	}
	public void setAdminTeamCode(Long adminTeamCode) {
		this.adminTeamCode = adminTeamCode;
	public void setAdminTeamId(Long adminTeamId) {
		this.adminTeamId = adminTeamId;
	}
	@Override

+ 11 - 12
src/main/java/com/yihu/wlyy/repository/doctor/DoctorAdminTeamDao.java

@ -21,39 +21,38 @@ public interface DoctorAdminTeamDao extends
        PagingAndSortingRepository<AdminTeam, Long>,
        JpaSpecificationExecutor<AdminTeam> {
    /**
     * 全科医生团队内的签约数。
     * 团队内,全科医生的签约数。
     *
     * @param doctorCode
     * @param patterns
     * @param teamId
     * @return
     */
    @Query("SELECT count(s) FROM SignFamily s WHERE doctor = :doctorCode AND doctorHealth IN (:patterns)")
    @Query("SELECT count(s) FROM SignFamily s WHERE doctor = :doctorCode AND adminTeamId = :teamId")
    Integer getDoctorSignCount(@Param(value = "doctorCode") String doctorCode,
                               @Param(value = "patterns") List<String> patterns);
                               @Param(value = "teamId") long teamId);
    /**
     * 团队内,全科医生的签约患者。
     * 团队内,健康管理师的签约数。
     *
     * @param healthDoctorCode
     * @param patterns
     * @param teamId
     * @return
     */
    @Query("SELECT count(s) FROM SignFamily s WHERE doctorHealth = :healthDoctorCode AND doctor IN (:patterns)")
    @Query("SELECT count(s) FROM SignFamily s WHERE doctorHealth = :healthDoctorCode AND adminTeamId = :teamId")
    Integer getHealthDoctorSignCount(@Param(value = "healthDoctorCode") String healthDoctorCode,
                                     @Param(value = "patterns") List<String> patterns);
                                     @Param(value = "teamId") long teamId);
    /**
     * 团队内,健康管理师的签约患者。
     *
     * @param healthDoctorCode
     * @param generalDoctors
     * @param pageable
     * @return
     */
    @Query("SELECT p FROM SignFamily s, Patient p WHERE s.doctorHealth = :healthDoctorCode AND s.doctor IN " +
            "(:generalDoctors) AND s.patient = p.code")
    @Query("SELECT p FROM SignFamily s, Patient p WHERE s.doctorHealth = :healthDoctorCode AND s.patient = p.code AND" +
            " s.adminTeamId = :teamId")
    Page<Patient> getHealthDoctorSigningPatients(@Param(value = "healthDoctorCode") String healthDoctorCode,
                                                 @Param(value = "generalDoctors") List<String> generalDoctors,
                                                 @Param(value = "teamId") long teamId,
                                                 Pageable pageable);
    /**

+ 2 - 2
src/main/java/com/yihu/wlyy/service/app/sign/FamilyContractService.java

@ -369,7 +369,7 @@ public class FamilyContractService extends BaseService {
        sf.setPatientApplyDate(new Date());
        sf.setDoctor(doctor);
        //设置全科医生的行政团队
        sf.setAdminTeamCode(doctorAdminTeamDao.findIdByLeaderCode(doctor));
        sf.setAdminTeamId(doctorAdminTeamDao.findIdByLeaderCode(doctor));
        sf.setMobile(mobile);
        sf.setDoctorName(d.getName());
        sf.setEmerMobile(emerMobile);
@ -654,7 +654,7 @@ public class FamilyContractService extends BaseService {
        sf.setCzrq(new Date());
        //设置全科医生的行政团队
        sf.setAdminTeamCode(doctorAdminTeamDao.findIdByLeaderCode(doctor));
        sf.setAdminTeamId(doctorAdminTeamDao.findIdByLeaderCode(doctor));
        sf.setDoctor(doctor);
        sf.setDoctorName(doctorName);
        sf.setDoctorHealth(doctorHealth);

+ 5 - 29
src/main/java/com/yihu/wlyy/service/app/team/AdminTeamService.java

@ -197,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);
@ -241,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();
    }

+ 37 - 2
src/main/java/com/yihu/wlyy/web/doctor/team/AdminTeamController.java

@ -18,8 +18,10 @@ import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.util.ReflectionUtils;
import org.springframework.web.bind.annotation.*;
import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;
@ -132,7 +134,8 @@ public class AdminTeamController extends BaseController {
        try {
            List<Doctor> members = memberService.getMembers(teamId);
            return write(200, "OK", "data", new JSONArray(members));
            return write(200, "OK", "data", new JSONArray(copyBeans(members, "id", "code", "name", "hospital",
                    "jobName", "level", "sex", "photo")));
        } catch (Exception e) {
            error(e);
            return error(-1, e.getMessage());
@ -203,7 +206,7 @@ public class AdminTeamController extends BaseController {
    public String getDoctorSignPatientCount(@PathVariable("team_id") long teamId) {
        try {
            List<Doctor> members = memberService.getMembers(teamId);
            Map<String, Integer> counts = memberService.getMemberSigningCount(members);
            Map<String, Integer> counts = memberService.getMemberSigningCount(teamId, members);
            return write(200, "OK", "data", new JSONObject(counts));
        } catch (Exception e) {
@ -245,4 +248,36 @@ public class AdminTeamController extends BaseController {
            return error(-1, e.getMessage());
        }
    }
    private List<Map<String, Object>> copyBeans(Collection<? extends Object> beans, String...propertyNames){
        List<Map<String, Object>> result = new ArrayList<>();
        for (Object bean : beans){
            result.add(copyBeanProperties(bean, propertyNames));
        }
        return result;
    }
    /**
     * 复制特定属性。
     *
     * @param bean
     * @param propertyNames
     * @return
     */
    private Map<String, Object> copyBeanProperties(Object bean, String...propertyNames){
        Map<String, Object> simplifiedBean = new HashMap<>();
        for (String propertyName : propertyNames){
            Field field = ReflectionUtils.findField(bean.getClass(), propertyName);
            if (field != null){
                field.setAccessible(true);
                Object value = ReflectionUtils.getField(field, bean);
                simplifiedBean.put(propertyName, value == null ? "" : value);
            } else {
                simplifiedBean.put(propertyName, "");
            }
        }
        return simplifiedBean;
    }
}