Browse Source

导入医生

wangjun 4 năm trước cách đây
mục cha
commit
f85a7cab96

+ 2 - 0
business/base-service/src/main/java/com/yihu/jw/doctor/dao/BaseDoctorDao.java

@ -42,4 +42,6 @@ public interface BaseDoctorDao extends PagingAndSortingRepository<BaseDoctorDO,
    @Query("from BaseDoctorDO d where d.idcard = ?1 AND d.del ='1'")
    BaseDoctorDO findByIdcardAndDel(String id);
    @Query("from BaseDoctorDO d where d.mobile = ?1")
    List<BaseDoctorDO> findByMobile(String id);
}

+ 4 - 2
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java

@ -104,7 +104,8 @@ public class BasicZuulFilter extends ZuulFilter {
            url.contains("/open/noLogin/getSFExpressInfoNew")||
            url.contains("/open/noLogin/sfroutepushservice")||
            url.contains("/open/noLogin/ylzSettleRecord")||
                url.contains("/weixin"))){
                url.contains("/weixin")||
                url.contains("/excelControl"))){
            logger.info("入参"+ctx.getRequestQueryParams());
            try {
                decrypt(ctx,request);
@ -131,7 +132,8 @@ public class BasicZuulFilter extends ZuulFilter {
                || url.contains("/accountAppeal/create")
                || url.contains("/open/")//开放接口
                || url.contains("/image/")//获取默认图片
                ||url.contains("/weixin")) {
                ||url.contains("/weixin")||
                url.contains("/excelControl")) {
            return true;
        }
        System.out.println("进入token验证");

+ 3 - 1
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/PostFilter.java

@ -42,7 +42,9 @@ public class PostFilter extends ZuulFilter {
        logger.info("进入post过滤器");
        HttpServletRequest request = ctx.getRequest();
        String url = request.getRequestURI();
        if (url.contains("/excelControl")){
            return true;
        }
        InputStream stream = RequestContext.getCurrentContext().getResponseDataStream();
        try {
        byte[] bytes;

+ 10 - 0
svr/svr-base/src/main/java/com/yihu/SvrBaseApplication.java

@ -3,9 +3,13 @@ package com.yihu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import javax.servlet.MultipartConfigElement;
/**
 * Created by chenweida on 2017/5/10.
 * localhost:10020/refresh  刷新当个微服务的配置 可以在需要刷新的bean上面@RefreshScope
@ -22,5 +26,11 @@ public class SvrBaseApplication extends SpringBootServletInitializer {
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SvrBaseApplication.class);
    }
    @Bean
    MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setLocation("/home/temp");
        return factory.createMultipartConfig();
    }
}

+ 1 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/dict/DictJobTitleDao.java

@ -35,6 +35,7 @@ public interface DictJobTitleDao extends PagingAndSortingRepository<DictJobTitle
    Long countBySaasId(String saasId);
    DictJobTitleDO findByName(String code);
    DictJobTitleDO findByCode(String code);
    boolean existsByCode(String code);

+ 2 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/doctor/BaseDoctorRoleDictDao.java

@ -11,4 +11,6 @@ import java.util.List;
public interface BaseDoctorRoleDictDao extends PagingAndSortingRepository<BaseDoctorRoleDictDO, String>, JpaSpecificationExecutor<BaseDoctorRoleDictDO> {
    @Query(value = "select * from base_doctor_role_dict where name = ?1",nativeQuery = true)
    List<BaseDoctorRoleDictDO> getByname(String name);
    boolean existsByCode(String code);
    boolean existsByName(String name);
}

+ 96 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/doctor/BaseDoctorEndpoint.java

@ -19,13 +19,21 @@ import com.yihu.jw.rm.base.BaseRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
@ -33,6 +41,7 @@ import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * 医生基础信息控制器
@ -277,7 +286,9 @@ public class BaseDoctorEndpoint extends EnvelopRestEndpoint {
        try {
            request.setCharacterEncoding("UTF-8");
//            AExcelReader excelReader = new BaseDoctorExcelDOReader();
            doctorExcelDOReader.read(file);
            InputStream inputStream = file.getInputStream();
            Workbook workbook = getWorkbook(inputStream,file.getOriginalFilename());
            doctorExcelDOReader.read(workbook);
            //验证未通过(暂无验证)
            List<BaseDoctorExcelDO> errorLs = doctorExcelDOReader.getErrorLs();
            List<BaseDoctorExcelDO> correctLs = doctorExcelDOReader.getCorrectLs();
@ -292,4 +303,88 @@ public class BaseDoctorEndpoint extends EnvelopRestEndpoint {
        }
        return failed("导入失败");
    }
    @GetMapping("/exportExcel")
    public void exportExcel(HttpServletRequest request, HttpServletResponse response) {
        try {
            HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream("/home/医生模板信息.xls"));
// 根据页面index 获取sheet页
            HSSFSheet sheet = wb.getSheet("Sheet1");
            for (int i = 0; i < 2; i++) {
// 创建HSSFRow对象
                HSSFRow row = sheet.createRow(i + 1);
// 创建HSSFCell对象 设置单元格的值
                row.createCell(0).setCellValue("张三" + i);
                row.createCell(1).setCellValue("1");
                row.createCell(2).setCellValue("1");
                row.createCell(3).setCellValue("210503199507250333");
                row.createCell(4).setCellValue("18841409773");
                row.createCell(5).setCellValue("350211A1002/0000001/1303");
                row.createCell(6).setCellValue("1302");
                row.createCell(7).setCellValue("admin");
                row.createCell(8).setCellValue("1");
            }
// 输出Excel文件
            OutputStream output = response.getOutputStream();
            response.reset();
// 设置文件头
            /*response.setHeader("Content-Disposition",
                    "attchement;filename=" + new String("人员信息.xls".getBytes("gb2312"), "ISO8859-1"));
            response.setContentType("application/msexcel");*/
            response.setCharacterEncoding("utf-8");
            response.setContentType("octets/stream");
            response.setHeader("Content-Disposition", "attachment; filename="
                    + new String( "医生模板信息".getBytes("gb2312"), "ISO8859-1" )+".xls");
            wb.write(output);
            wb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 判断文件格式
     * @param in
     * @param fileName
     * @return
     */
    private static Workbook getWorkbook(InputStream in, String fileName) throws Exception {
        Workbook book = null;
        String filetype = fileName.substring(fileName.lastIndexOf("."));
        if(".xls".equals(filetype)) {
            book = new HSSFWorkbook(in);
        } else if (".xlsx".equals(filetype)) {
            book = new XSSFWorkbook(in);
        } else {
            throw new Exception("请上传excel文件!");
        }
        return book;
    }
}

+ 153 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/open/nologin/BaseServiceNologin.java

@ -0,0 +1,153 @@
package com.yihu.jw.base.endpoint.open.nologin;
import com.yihu.jw.base.service.doctor.BaseDoctorService;
import com.yihu.jw.base.service.doctor.excelImport.BaseDoctorExcelDO;
import com.yihu.jw.base.service.doctor.excelImport.BaseDoctorExcelDOReader;
import com.yihu.jw.exception.business.ManageException;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.base.BaseRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/excelControl")
@Api(value = "不走网关接口", description = "不走网关接口", tags = {"base基础服务 - 不走网关接口"})
public class BaseServiceNologin extends EnvelopRestEndpoint {
    @Autowired
    private BaseDoctorService baseDoctorService;
    @Autowired
    private BaseDoctorExcelDOReader doctorExcelDOReader;
    @GetMapping("/exportExcel")
    public void exportExcel(HttpServletRequest request, HttpServletResponse response) {
        try {
            HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream("/home/医生模板信息.xls"));
// 根据页面index 获取sheet页
            HSSFSheet sheet = wb.getSheet("Sheet1");
            for (int i = 0; i < 2; i++) {
// 创建HSSFRow对象
                HSSFRow row = sheet.createRow(i + 1);
// 创建HSSFCell对象 设置单元格的值
                row.createCell(0).setCellValue("张三" + i);
                row.createCell(1).setCellValue("1");
                row.createCell(2).setCellValue("1");
                row.createCell(3).setCellValue("210503199507250333");
                row.createCell(4).setCellValue("18841409773");
                row.createCell(5).setCellValue("350211A1002/0000001/1303");
                row.createCell(6).setCellValue("1302");
                row.createCell(7).setCellValue("admin");
                row.createCell(8).setCellValue("1");
            }
// 输出Excel文件
            OutputStream output = new BufferedOutputStream(response.getOutputStream());
            response.reset();
// 设置文件头
            /*response.setHeader("Content-Disposition",
                    "attchement;filename=" + new String("人员信息.xls".getBytes("gb2312"), "ISO8859-1"));
            response.setContentType("application/msexcel");*/
            response.setCharacterEncoding("UTF-8");
            response.setContentType("application/x-msdownload");
            /*response.setHeader("Content-Disposition", "attachment; filename="
                    + new String( "医生模板信息".getBytes("gb2312"), "ISO8859-1" )+".xls");*/
            response.setHeader("Content-Disposition", "attachment; filename="
                    + URLEncoder.encode("医生模板信息.xls","UTF-8"));
            wb.write(output);
            wb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 判断文件格式
     * @param in
     * @param fileName
     * @return
     */
    private static Workbook getWorkbook(InputStream in, String fileName) throws Exception {
        Workbook book = null;
        String filetype = fileName.substring(fileName.lastIndexOf("."));
        if(".xls".equals(filetype)) {
            book = new HSSFWorkbook(in);
        } else if (".xlsx".equals(filetype)) {
            book = new XSSFWorkbook(in);
        } else {
            throw new Exception("请上传excel文件!");
        }
        return book;
    }
    @PostMapping(value = BaseRequestMapping.BaseDoctor.DOCTOR_INFO_IMPORT)
    @Transactional(rollbackFor = Exception.class)
    @ApiOperation(value = "基础医生信息列表导入")
    public Envelop importData(
            @ApiParam(name = "file", value = "文件", required = true)
            @RequestPart(value = "file") MultipartFile file,
            HttpServletRequest request) throws IOException, ManageException {
        try {
            request.setCharacterEncoding("UTF-8");
//            AExcelReader excelReader = new BaseDoctorExcelDOReader();
            InputStream inputStream = file.getInputStream();
            Workbook workbook = getWorkbook(inputStream,file.getOriginalFilename());
            doctorExcelDOReader.read(workbook);
            //验证未通过(暂无验证)
            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);
                int errors = errorLs.size();
                int corrects = correctLs.size();
                String msg = "当前导入成功"+corrects+"条数据"+";失败"+errors+"条数据";
                return success(msg, result);
            }
        }catch (Exception e){
            e.printStackTrace();
            return failed("导入异常,请检查导入文件格式" + e.getMessage());
        }
        return failed("导入失败");
    }
}

+ 11 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/open/register/RegisterEndpoint.java

@ -22,12 +22,22 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.concurrent.TimeUnit;
@ -216,4 +226,5 @@ public class RegisterEndpoint extends EnvelopRestEndpoint {
            return failed(e.getMessage(), ObjEnvelop.class);
        }
    }
}

+ 5 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorService.java

@ -862,7 +862,11 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
            baseDoctorDO.setIsFamous(one.getIsFamous());
            baseDoctorDO.setExpertise(one.getExpertise());
            baseDoctorDO.setIntroduce(one.getBrief());
            baseDoctorDO.setPassword(baseDoctorDO.getIdcard().substring(11,17));
            baseDoctorDO.setEnabled(1);
            baseDoctorDO.setLocked(0);
            String salt = UUID.randomUUID().toString().substring(0,5);
            String pw = one.getIdcard().substring(one.getIdcard().length()-6,one.getIdcard().length());
            baseDoctorDO.setPassword(MD5.md5Hex(pw + "{" + salt + "}"));
            if(!StringUtils.isEmpty(one.getJobTitleName())){
                String[] job = one.getJobTitleName().split(",");
                String jobCode = job[0];

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

@ -2,11 +2,14 @@ package com.yihu.jw.base.service.doctor.excelImport;
import com.yihu.jw.base.dao.dict.DictJobTitleDao;
import com.yihu.jw.base.dao.doctor.BaseDoctorRoleDictDao;
import com.yihu.jw.base.dao.doctor.BaseDoctorRoleInfoDao;
import com.yihu.jw.base.endpoint.common.excel.AExcelReader;
import com.yihu.jw.dict.dao.DictDoctorDutyDao;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorRoleDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.org.dao.BaseOrgDao;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Sheet;
@ -16,6 +19,7 @@ import org.springframework.stereotype.Component;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
/**
 * 医生信息列表-excel解析类
@ -33,6 +37,10 @@ public class BaseDoctorExcelDOReader extends AExcelReader {
    private DictJobTitleDao jobTitleDao;
    @Autowired
    private BaseDoctorRoleInfoDao roleInfoDao;
    @Autowired
    private BaseDoctorRoleDictDao baseDoctorRoleDictDao;
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Override
    public void read(Workbook rwb) throws Exception {
@ -51,6 +59,8 @@ public class BaseDoctorExcelDOReader extends AExcelReader {
            getRepeat().put("isFamous", new HashSet<>());
            getRepeat().put("expertise", new HashSet<>());
            getRepeat().put("brief", new HashSet<>());
            errorLs.clear();
            correctLs.clear();
            while (sheets.hasNext()){
                Sheet sheet = sheets.next();
                if ((rows = sheet.getLastRowNum()) == 0) {
@ -71,7 +81,7 @@ public class BaseDoctorExcelDOReader extends AExcelReader {
                    baseDoctorExcelDO.setBrief(replaceBlank(getCellCont(sheet, i, 10)));
                    baseDoctorExcelDO.setExcelSeq(i);
                    int rs = baseDoctorExcelDO.validate(repeat);
                    if (rs == 0||validate(baseDoctorExcelDO)== 0) {
                    if (validate(baseDoctorExcelDO)== 0||rs == 0) {
                        errorLs.add(baseDoctorExcelDO);
                    } else if (rs == 1) {
                        correctLs.add(baseDoctorExcelDO);
@ -91,7 +101,23 @@ public class BaseDoctorExcelDOReader extends AExcelReader {
    }
    public int validate(BaseDoctorExcelDO baseDoctorExcelDO) {
        int rs = 1;
        if(StringUtils.isNotEmpty(baseDoctorExcelDO.getHospitalInfo())){
        if (StringUtils.isNoneBlank(baseDoctorExcelDO.getIdcard())){
            List<BaseDoctorDO> baseDoctorDO = baseDoctorDao.findByIdcard(baseDoctorExcelDO.getIdcard());
            System.out.println("当前导入数据的身份证号:"+baseDoctorExcelDO.getIdcard());
            if (baseDoctorDO!=null&&baseDoctorDO.size()>0){
                System.out.println("进入身份验证有重复数据"+baseDoctorDO.get(0).getIdcard());
                return 0;
            }
        }
        if (StringUtils.isNoneBlank(baseDoctorExcelDO.getMobile())){
            System.out.println("当前导入数据的电话号:"+baseDoctorExcelDO.getMobile());
            List<BaseDoctorDO> baseDoctorDO = baseDoctorDao.findByMobile(baseDoctorExcelDO.getMobile());
            if (baseDoctorDO!=null&&baseDoctorDO.size()>0){
                System.out.println("进入电话验证有重复数据"+baseDoctorDO.get(0).getMobile());
                return 0;
            }
        }
        if(StringUtils.isNoneBlank(baseDoctorExcelDO.getHospitalInfo())){
            String[] hospitals = baseDoctorExcelDO.getHospitalInfo().split(";");
            for(String hospital:hospitals){
                String[] element = hospital.split("/");
@ -112,20 +138,20 @@ public class BaseDoctorExcelDOReader extends AExcelReader {
                }
            }
        }
        if(StringUtils.isNotEmpty(baseDoctorExcelDO.getRoleInfo())){
        if(StringUtils.isNoneBlank(baseDoctorExcelDO.getRoleInfo())){
            String[] roles = baseDoctorExcelDO.getRoleInfo().split(";");
            for(String role:roles){
                String[] element = role.split(",");
                String roleCode = element[0];
                if(!roleInfoDao.existsByCode(roleCode)){
                if(!baseDoctorRoleDictDao.existsByCode(roleCode)){
                    return 0;
                }
            }
        }
        if(StringUtils.isEmpty(baseDoctorExcelDO.getIdcard())){
        if(StringUtils.isBlank(baseDoctorExcelDO.getIdcard())){
            return 0;
        }
        if(StringUtils.isEmpty(baseDoctorExcelDO.getMobile())){
        if(StringUtils.isBlank(baseDoctorExcelDO.getMobile())){
            return 0;
        }
        return rs;