Browse Source

Merge branch 'dev' of liuwenbin/wlyy2.0 into dev

liuwenbin 6 years ago
parent
commit
81d2384051

+ 1 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/specialist/SpecialistMapping.java

@ -37,6 +37,7 @@ public class SpecialistMapping {
        public static final String findSpecialistSignFamilyPatientCout ="/findSpecialistSignFamilyPatientCout";
        public static final String getSpecialistSignFamilyPatientByName ="/getSpecialistSignFamilyPatientByName";
        public static final String getPatientAndDiseaseByDoctor ="/getPatientAndDiseaseByDoctor";
        public static final String searchPatientInSpecialist ="/searchPatientInSpecialist";

+ 4 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/doctor/BaseDoctorRoleInfoDao.java

@ -18,4 +18,8 @@ import org.springframework.data.repository.PagingAndSortingRepository;
 * @since 1.
 */
public interface BaseDoctorRoleInfoDao extends PagingAndSortingRepository<BaseDoctorRoleInfoDO, Integer>, JpaSpecificationExecutor<BaseDoctorRoleInfoDO>  {
    boolean existsByCode(String code);
    BaseDoctorRoleInfoDO findByCode(String code);
}

+ 7 - 4
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/doctor/BaseDoctorEndpoint.java

@ -54,6 +54,9 @@ public class BaseDoctorEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private OrgTreeService orgTreeService;
    @Autowired
    private BaseDoctorExcelDOReader doctorExcelDOReader;
    @PostMapping(value = BaseRequestMapping.BaseDoctor.CREATE)
    @ApiOperation(value = "新增医生")
    public Envelop create(
@ -269,11 +272,11 @@ public class BaseDoctorEndpoint extends EnvelopRestEndpoint {
            HttpServletRequest request) throws IOException, ManageException {
        try {
            request.setCharacterEncoding("UTF-8");
            AExcelReader excelReader = new BaseDoctorExcelDOReader();
            excelReader.read(file);
//            AExcelReader excelReader = new BaseDoctorExcelDOReader();
            doctorExcelDOReader.read(file);
            //验证未通过(暂无验证)
            List<BaseDoctorExcelDO> errorLs = excelReader.getErrorLs();
            List<BaseDoctorExcelDO> correctLs = excelReader.getCorrectLs();
            List<BaseDoctorExcelDO> errorLs = doctorExcelDOReader.getErrorLs();
            List<BaseDoctorExcelDO> correctLs = doctorExcelDOReader.getCorrectLs();
            if(correctLs.size()>0){
                Map<String, Object> result = baseDoctorService.batchInsertDoctor(correctLs);
                result.put("errorLs", errorLs);

+ 21 - 17
svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorService.java

@ -8,6 +8,8 @@ import com.yihu.jw.base.dao.dict.DictDoctorDutyDao;
import com.yihu.jw.base.dao.dict.DictHospitalDeptDao;
import com.yihu.jw.base.dao.dict.DictJobTitleDao;
import com.yihu.jw.base.dao.doctor.BaseDoctorDao;
import com.yihu.jw.base.dao.doctor.BaseDoctorRoleDao;
import com.yihu.jw.base.dao.doctor.BaseDoctorRoleInfoDao;
import com.yihu.jw.base.service.dict.DictDoctorDutyService;
import com.yihu.jw.base.service.dict.DictHospitalDeptService;
import com.yihu.jw.base.dao.doctor.BaseDoctorHospitalDao;
@ -27,6 +29,7 @@ import com.yihu.jw.entity.base.dict.DictDoctorDutyDO;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleInfoDO;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.exception.business.ManageException;
import com.yihu.mysql.query.BaseJpaService;
@ -90,6 +93,10 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
    @Autowired
    private DictHospitalDeptService dictHospitalDeptService;
    @Autowired
    private BaseDoctorRoleDao doctorRoleDao;
    @Autowired
    private BaseDoctorRoleInfoDao doctorRoleInfoDao;
    /**
@ -645,24 +652,21 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
                    doctorHospitalList.add(doctorHospitalDO);
                }
                doctorHospitalDao.save(doctorHospitalList);
                if(!StringUtils.isEmpty(one.getRoleInfo())){
                    BaseDoctorRoleDO baseDoctorRoleDO = null;
                    DictJobTitleDO dictJobTitleDO = null;
                    String[] roles = one.getRoleInfo().split(";");
                    List<BaseDoctorRoleDO> baseDoctorRoleDOList = new ArrayList<>();
                    for(String role:roles){
                        String[] element = role.split(",");
                        String roleCode = element[0];
                        dictJobTitleDO = jobTitleDao.findByCode(roleCode);
                        baseDoctorRoleDO = new BaseDoctorRoleDO();
                        baseDoctorRoleDO.setDoctorCode(baseDoctorDO.getId());
//                        baseDoctorRoleDO.setRoleModuleCode(dictJobTitleDO.getCode());
//                        baseDoctorRoleDO.setName(dictJobTitleDO.getName());
//                        baseDoctorRoleDO.setDel("1");
                        baseDoctorRoleDOList.add(baseDoctorRoleDO);
                    }
                    baseDoctorRoleService.batchInsert(baseDoctorRoleDOList);
            }
            if(!StringUtils.isEmpty(one.getRoleInfo())){
                BaseDoctorRoleDO baseDoctorRoleDO = null;
                String[] roles = one.getRoleInfo().split(";");
                List<BaseDoctorRoleDO> baseDoctorRoleDOList = new ArrayList<>();
                for(String role:roles){
                    String[] element = role.split(",");
                    String roleCode = element[0];
                    baseDoctorRoleDO = new BaseDoctorRoleDO();
                    baseDoctorRoleDO.setDoctorCode(baseDoctorDO.getId());
                    baseDoctorRoleDO.setRoleCode(roleCode);
                    baseDoctorRoleDOList.add(baseDoctorRoleDO);
                }
                baseDoctorRoleService.batchInsert(baseDoctorRoleDOList);
            }
        }
        result.put("correctCount", doctors.size());

+ 25 - 13
svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/excelImport/BaseDoctorExcelDOReader.java

@ -3,6 +3,7 @@ package com.yihu.jw.base.service.doctor.excelImport;
import com.yihu.jw.base.dao.dict.DictDoctorDutyDao;
import com.yihu.jw.base.dao.dict.DictHospitalDeptDao;
import com.yihu.jw.base.dao.dict.DictJobTitleDao;
import com.yihu.jw.base.dao.doctor.BaseDoctorRoleInfoDao;
import com.yihu.jw.base.dao.org.BaseOrgDao;
import com.yihu.jw.base.endpoint.common.excel.AExcelReader;
import com.yihu.jw.entity.base.dict.DictJobTitleDO;
@ -11,6 +12,8 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.util.*;
@ -18,6 +21,7 @@ import java.util.*;
 * 医生信息列表-excel解析类
 * Created by 刘文彬 on 2018/10/24.
 */
@Component
public class BaseDoctorExcelDOReader extends AExcelReader {
    @Autowired
    private BaseOrgDao baseOrgDao;
@ -27,6 +31,8 @@ public class BaseDoctorExcelDOReader extends AExcelReader {
    private DictDoctorDutyDao dutyDao;
    @Autowired
    private DictJobTitleDao jobTitleDao;
    @Autowired
    private BaseDoctorRoleInfoDao roleInfoDao;
    @Override
    public void read(Workbook rwb) throws Exception {
@ -91,19 +97,19 @@ public class BaseDoctorExcelDOReader extends AExcelReader {
                String[] element = hospital.split("/");
                String[] org = element[0].split(",");//机构
                String[] dept = element[1].split(",");//部门
                String[] duty = element[1].split(",");//职务
                String[] duty = element[2].split(",");//职务
                String orgCode = org[0];
                String deptCode = dept[0];
                String dutyCode = duty[0];
//                if(!baseOrgDao.existsByCode(orgCode)){
//                    return 0;
//                }
//                if(!deptDao.existsByCodeAndOrgCode(deptCode,orgCode)){
//                    return 0;
//                }
//                if(!dutyDao.existsByCode(dutyCode)){
//                    return 0;
//                }
                if(!baseOrgDao.existsByCode(orgCode)){
                    return 0;
                }
                if(!deptDao.existsByCodeAndOrgCode(deptCode,orgCode)){
                    return 0;
                }
                if(!dutyDao.existsByCode(dutyCode)){
                    return 0;
                }
            }
        }
        if(StringUtils.isNotEmpty(baseDoctorExcelDO.getRoleInfo())){
@ -111,11 +117,17 @@ public class BaseDoctorExcelDOReader extends AExcelReader {
            for(String role:roles){
                String[] element = role.split(",");
                String roleCode = element[0];
//                if(jobTitleDao.existsByCode(roleCode)){
//                    return 0;
//                }
                if(!roleInfoDao.existsByCode(roleCode)){
                    return 0;
                }
            }
        }
        if(StringUtils.isEmpty(baseDoctorExcelDO.getIdcard())){
            return 0;
        }
        if(StringUtils.isEmpty(baseDoctorExcelDO.getMobile())){
            return 0;
        }
        return rs;
    }
}

+ 17 - 0
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/controller/SpecialistController.java

@ -371,4 +371,21 @@ public class SpecialistController extends EnvelopRestEndpoint {
//            return Envelop.getError(e.getMessage());
//        }
//    }
    @GetMapping(value = SpecialistMapping.specialist.searchPatientInSpecialist)
    @ApiOperation(value = "搜索注册居民")
    public MixEnvelop searchPatientInSpecialist(
            @ApiParam(name = "doctorCode", value = "医生code",required = true) @RequestParam(required = true)String doctorCode,
            @ApiParam(name = "keywords", value = "居民姓名,手机号,身份证") @RequestParam(required = false)String keywords,
            @ApiParam(name = "page", value = "第几页,1开始",defaultValue = "1") @RequestParam(required = true,defaultValue = "1")Integer page,
            @ApiParam(name = "pageSize", value = "每页大小",defaultValue = "5") @RequestParam(required = true,defaultValue = "5")Integer pageSize){
        try {
            return specialistService.searchPatientInSpecialist(doctorCode,keywords,page,pageSize);
        }catch (Exception e){
            e.printStackTrace();
            tracer.getCurrentSpan().logEvent(e.getMessage());
            return MixEnvelop.getError(e.getMessage());
        }
    }
}

+ 60 - 3
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/SpecialistService.java

@ -4,7 +4,9 @@ import com.yihu.jw.dao.*;
import com.yihu.jw.entity.specialist.*;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.specialist.*;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.rm.specialist.SpecialistMapping;
import com.yihu.jw.util.common.IdCardUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@ -14,9 +16,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * Created by Trick on 2018/4/25.
@ -768,4 +768,61 @@ public class SpecialistService{
//        specialistConsultDao.save(consultDO);
//        return Envelop.getSuccess(SpecialistMapping.api_success,true);
//    }
    /**
     * 专科-模糊搜索注册居民
     * @param doctorCode
     * @param keywords
     */
    public MixEnvelop searchPatientInSpecialist(String doctorCode,String keywords,Integer page,Integer pageSize) throws Exception{
        String sql1 = " select count(1) as num ";
        String sql2 = " select p.name as name,p.idcard,p.code,p.photo ";
        String whereSql ="";
        if(!StringUtils.isEmpty(keywords)){
            whereSql+=" and (p.name like '%"+keywords+"%' or p.idcard like '%"+keywords+"%' or p.mobile like '%"+keywords+"%') ";
        }
        String centerSql =" from "+basedb+".wlyy_patient p " +
                " LEFT JOIN wlyy_specialist.wlyy_specialist_patient_relation r on p.code=r.patient and sign_status='1' and doctor='"+doctorCode+"'"+
                " where r.id is not null "+whereSql;
        String sqlCount=sql1+centerSql;
        String sql=sql2+centerSql+" LIMIT "+(page-1)*pageSize+","+pageSize;
        List<Map<String,Object>> map = jdbcTemplate.queryForList(sql);
        List<Map<String,Object>> countMap = jdbcTemplate.queryForList(sqlCount);
        List<Map<String,Object>> resultList = new ArrayList<>();
        Map m = null;
        Integer age = null;
        String sex = null;
        String sexName="";
        for(Map<String,Object> one:map){
            m = new HashMap();
            age = IdCardUtil.getAgeForIdcard(one.get("idcard")+"");
            sex = IdCardUtil.getSexForIdcard_new(one.get("idcard")+"");
            m.put("name",one.get("name"));
            m.put("age",age);
            m.put("sex",sex);
            if("1".equals(sex)){
                sexName="男";
            }else if("2".equals(sex)){
                sexName="女";
            }else{
                sexName="未知";
            }
            m.put("sexName",sexName);
            m.put("patientCode",one.get("code"));
            m.put("photo",one.get("photo"));
            resultList.add(m);
        }
        return MixEnvelop.getSuccessListWithPage(SpecialistMapping.api_success,resultList,page,pageSize,countMap.size()>0?Long.valueOf(countMap.get(0).get("num")+""):0);
    }
    /**
     * 医生的专科信息
     * @param doctor
     */
    public ObjEnvelop doctorForSpecialistInfo(String doctor){
        Map<String,Object> resultMap = new HashMap<>();
        return ObjEnvelop.getSuccess(SpecialistMapping.api_success,resultMap);
    }
}