forked from kidgrow-microservices-platform

dougang
2020-11-17 436faba10a1d0cf27953ff3ec869bdc35aee1932
筛查机构导入和模板下载
2 files modified
3 files added
323 ■■■■■ changed files
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ScreeningOrganizationExcel.java 47 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ScreeningOrganizationInfoController.java 88 ●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/importScreeningOrganization.html 170 ●●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningOrganization.html 18 ●●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/template/机构导入模板.xlsx patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ScreeningOrganizationExcel.java
New file
@@ -0,0 +1,47 @@
package com.kidgrow.oprationcenter.model;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
/**
 * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
 *
 * @version 1.0
 * @Description: 筛查机构信息表<br>
 * @Project: 用户中心<br>
 * @CreateDate: Created in 2020-10-12 17:10:31 <br>
 * @Author: <a href="78125310@kidgrow.com">dougang</a>
 */
@Data
public class ScreeningOrganizationExcel implements Serializable {
    private static final long serialVersionUID = -5886012896705137070L;
    /**
     * 机构名称
     */
    @Excel(name = "机构名称", height = 20, width = 30, isImportField = "true_st")
    private String organizationName;
    /**
     * 联系人
     */
    @Excel(name = "联系人", height = 20, width = 30, isImportField = "true_st")
    private String contactName;
    /**
     * 联系电话
     */
    @Excel(name = "电话", height = 20, width = 30, isImportField = "true_st")
    private String contactNumber;
    /**
     * 机构简称
     */
    @Excel(name = "机构简称", height = 20, width = 30, isImportField = "true_st")
    private String abbreviation;
    /**
     * 机构编码
     */
    @Excel(name = "编码", height = 20, width = 30, isImportField = "true_st")
    private String organizationNo;
}
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ScreeningOrganizationInfoController.java
@@ -1,11 +1,14 @@
package com.kidgrow.oprationcenter.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject;
import com.kidgrow.common.controller.BaseController;
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.utils.ExcelUtil;
import com.kidgrow.common.utils.QRCodeUtil;
import com.kidgrow.oprationcenter.model.ScreeningOrganizationExcel;
import com.kidgrow.oprationcenter.model.ScreeningOrganizationInfo;
import com.kidgrow.oprationcenter.service.IScreeningOrganizationInfoService;
import com.kidgrow.redis.util.RedisUtils;
@@ -20,13 +23,12 @@
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Decoder;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -180,22 +182,88 @@
            out = response.getOutputStream();
            fileInputStream = new ByteArrayInputStream(arr);
            int len = 0;
            byte[] by = new byte[1024*10];
            while ((len = fileInputStream.read(by))>0){
                out.write(by,0,len);
            byte[] by = new byte[1024 * 10];
            while ((len = fileInputStream.read(by)) > 0) {
                out.write(by, 0, len);
            }
        }catch (Exception w){
            log.error("",w);
        }finally {
        } catch (Exception w) {
            log.error("", w);
        } finally {
            try {
                out.close();
                fileInputStream.close();
            }catch(Exception w){
            } catch (Exception w) {
            }
        }
    }
    /**
     * 导入文件
     */
    @ApiOperation(value = "导入")
    @PostMapping("/import")
    public ResultBody downLoad(@RequestParam("file") MultipartFile excel,
                               @RequestParam("hospitalId") String hospitalId,
                               @RequestParam("areaCode") String areaCode,
                               @RequestParam("areaName") String areaName,
                               @RequestParam("hospitalName") String hospitalName) {
        int rowNum = 0;
        try {
            if (!excel.isEmpty()) {
                List<ScreeningOrganizationExcel> list = ExcelUtil.importExcel(excel, 0, 1, ScreeningOrganizationExcel.class);
                rowNum = list.size();
                if (rowNum > 0) {
                    List<ScreeningOrganizationInfo> users = new ArrayList<>(rowNum);
                    String[] area = areaCode.split("#");
                    list.forEach(u -> {
                        ScreeningOrganizationInfo user = new ScreeningOrganizationInfo();
                        BeanUtil.copyProperties(u, user);
                        user.setSourceHospitalName(hospitalName);
                        user.setSourceHospitalId(Long.parseLong(hospitalId));
                        user.setProvince(area[0]);
                        user.setCity(area[1]);
                        user.setArea(area[2]);
                        user.setAreaCode(areaName);
                        users.add(user);
                    });
                    organizationInfoService.saveBatch(users);
                }
            }
        } catch (Exception e) {
            log.error("导入失败", e);
        }
        return ResultBody.ok().msg("导入数据成功,一共【" + rowNum + "】行");
    }
    /**
     * 下载模板
     */
    @ApiOperation(value = "下载模板")
    @PostMapping("/export")
    public void export(HttpServletResponse response) {
        try {
            InputStream inStream =this.getClass().getResourceAsStream("/static/pages/template/机构导入模板.xlsx");
            // 设置输出的格式
            response.reset();
            response.setContentType("bin");
            response.addHeader("Content-Disposition", "attachment; filename=机构导入模板.xlsx");
            // 循环取出流中的数据
            byte[] b = new byte[100];
            int len;
            while ((len = inStream.read(b)) > 0) {
                response.getOutputStream().write(b, 0, len);
            }
            inStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/importScreeningOrganization.html
New file
@@ -0,0 +1,170 @@
<form id="app-form-add" lay-filter="app-form-add" class="layui-form model-form">
    <div style="display:flex">
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label" style="width: 75px;">所在医院</label>
                <div class="layui-input-block" style="width: 150px;">
                    <input name="sourceHospitalName" id="sourceHospitalName" placeholder="请输入医院名称" type="text" class="layui-input"
                           maxlength="50" lay-verify="required" required style="width: 150px;"/>
                    <input type="hidden" name="sourceHospitalId" id="sourceHospitalId"/>
                </div>
            </div>
        </div>
    </div>
    <div style="display:flex">
        <div class="layui-form-item">
            <label class="layui-form-label" style="width: 75px;">所在区域</label>
            <div class="layui-inline" style="width: 134px;">
                <select lay-verify="required" required id="OrganizationProvince" placeholder="省份"
                        lay-filter="OrganizationProvince" >
                </select>
            </div>
            <div class="layui-inline" style="width: 134px;">
                <select id="OrganizationCity"  lay-verify="required" required placeholder="市" lay-filter="OrganizationCity">
                    <option value="">选择市</option>
                </select>
            </div>
            <div class="layui-inline" style="width: 134px;">
                <select id="OrganizationArea"  lay-verify="required" required placeholder="区县" lay-filter="OrganizationArea">
                    <option value="">选择区县</option>
                </select>
            </div>
            </div>
        </div>
    </div>
    <div style="display:flex">
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label" style="width: 75px;">文件上传</label>
                <div class="layui-input-block" style="width: 150px;">
                    <button class="layui-btn test" id="import">选择文件</button>
                </div>
            </div>
        </div>
    </div>
    <div class="layui-form-item model-form-footer">
        <button class="layui-btn"  type="button" id="downLoadTemplate" >下载导入模板</button>
        <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button>
    </div>
</form>
<script>
    layui.use(['form', 'laydate', 'util', 'config', 'admin', 'autocomplete', 'area'], function () {
        var form = layui.form;
        var config = layui.config;
        var autocomplete = layui.autocomplete;
        var $ = layui.jquery;
        var area = layui.area;
        var upload = layui.upload;
        form.render();
        //省份数据加载
        area.areaData("#OrganizationProvince", 1, "", "");
        //装载市区数据
        form.on("select(OrganizationProvince)", function (data) {
            area.areasClear("#OrganizationArea", 3);
            area.areaData("#OrganizationCity", 2, data.value, "");
        });
        //装载区县数据
        form.on("select(OrganizationCity)", function (data) {
            area.areaData("#OrganizationArea", 3, data.value, "");
        });
        //自动完成-医院名称
        autocomplete.render({
            elem: $('#sourceHospitalName')[0],
            keywordsName: 'hospitalName', //查询关键字名称
            url: config.base_server + 'api-opration/hospitalscreening/findByName',
            template_val: '{{d.hospitalName}}', //选择后文本框显示的数据字段
            template_txt: "<div class='layui-table-cell'>{{d.hospitalName}}</div>", //下拉列表模板
            onselect: function (resp) {
                $("#sourceHospitalId").val(resp.id);
            }
        });
        upload.render({
            //绑定元素
            elem: '#import'
            //上传接口
            ,url: config.base_server + 'api-opration/screeningorganizationinfo/import'
            ,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
                layer.load(); //上传loading
            }
            ,done: function(data){
                layer.closeAll("loading");
                //上传完毕回调
                if (0 === data.code) {
                    layer.closeAll();
                    parent.layui.table.reload('app-table', {});
                } else {
                    layer.msg(data.msg, { icon: 2, time: 2000 });
                }
            }
            ,error: function(){
                //请求异常回调
                layer.msg("操作异常", { icon: 2, time: 2000 });
            }
            //允许的文件类型
            ,accept:'file'
            ,exts: 'xls|xlsx'
            //选择文件后是否自动上传
            ,auto: true,
            headers: {
                "Authorization": "Bearer " + config.getToken().access_token
            }
            ,data: {
                hospitalId: function(){
                    return $('#sourceHospitalId').val();
                },
                areaCode:function(){
                    return $('#OrganizationProvince').val() + "#" + $('#OrganizationCity').val() + "#" +
                        $('#OrganizationArea').val();
                },
                areaName:function(){
                    return $("#OrganizationProvince option:selected").text() + $("#OrganizationCity option:selected").text()+
                        $("#OrganizationArea option:selected").text();
                },
                hospitalName:function(){
                    return $("#sourceHospitalName").val();
                }
            }
        });
        $('#downLoadTemplate').click(function () {
            var url = config.base_server + "api-opration/screeningorganizationinfo/export";
            // 获取XMLHttpRequest
            var xmlResquest = new XMLHttpRequest();
            //  发起请求
            xmlResquest.open("POST", url, true);
            // 设置请求头类型
            xmlResquest.setRequestHeader("Content-type", "application/json");
            xmlResquest.setRequestHeader("Authorization","Bearer " + config.getToken().access_token);
            xmlResquest.responseType = "blob";
            //  返回
            xmlResquest.onload = function() {
                if (this.status == 200) {
                    var fileName = "机构导入模板.xlsx";
                    var blob = this.response;
                    var a = document.createElement('a');
                    a.innerHTML = fileName;
                    // 指定生成的文件名
                    a.download = fileName;
                    a.href = URL.createObjectURL(blob);
                    document.body.appendChild(a);
                    var evt = document.createEvent("MouseEvents");
                    evt.initEvent("click", false, false);
                    a.dispatchEvent(evt);
                    document.body.removeChild(a);
                }
            };
            xmlResquest.send();
        });
    });
</script>
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningOrganization.html
@@ -25,6 +25,8 @@
                </button>
                <button id="screeningOrganization-btn-add" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>添加筛查机构
                </button>
                <button id="screeningOrganization-btn-import" class="layui-btn icon-btn"><i class="layui-icon">&#xe630;</i>导入筛查机构
                </button>
                <table class="layui-table" id="app-table" lay-filter="app-table"></table>
            </div>
        </div>
@@ -223,5 +225,21 @@
                window.open(url);
            }
            // 导入按钮点击事件
            $('#screeningOrganization-btn-import').click(function () {
                showEditModel_import("导入");
            });
            var showEditModel_import = function (title, data) {
                admin.popupCenter({
                    title: title,
                    path: 'pages/keaigao/importScreeningOrganization.html',
                    area: '600px',
                    offset: '0px',
                    finish: function () {
                    }
                });
            };
        });
</script>
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/template/机构导入模板.xlsx
Binary files differ