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"></i>添加筛查机构 </button> <button id="screeningOrganization-btn-import" class="layui-btn icon-btn"><i class="layui-icon"></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/机构导入模板.xlsxBinary files differ