From e9cbc4b86621cfdc2b7039e56fad760e80865389 Mon Sep 17 00:00:00 2001
From: zhaoxiaohao <279049017@qq.com>
Date: Tue, 17 Nov 2020 17:53:36 +0800
Subject: [PATCH] Merge branch 'dev' of ssh://192.168.2.240:29418/kidgrow-microservices-platform into dev

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/SreeningOrganizationService.java                         |   28 ++++
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/importScreeningOrganization.html                                                                     |  170 ++++++++++++++++++++++++
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningOrganization.html                                                                           |   18 ++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningOrganizatonServiceFallbackFactory.java |   31 ++++
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/template/机构导入模板.xlsx                                                                                         |    0 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ScreeningOrganizationInfoController.java         |   88 +++++++++++-
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ScreeningOrganizationExcel.java                          |   47 ++++++
 7 files changed, 372 insertions(+), 10 deletions(-)

diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/SreeningOrganizationService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/SreeningOrganizationService.java
new file mode 100644
index 0000000..8816ab1
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/SreeningOrganizationService.java
@@ -0,0 +1,28 @@
+package com.kidgrow.oprationcenter.feign;
+
+import com.kidgrow.common.constant.ServiceNameConstants;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.feign.fallback.ScreeningOrganizatonServiceFallbackFactory;
+import com.kidgrow.oprationcenter.model.ScreeningOrganizationInfo;
+import com.kidgrow.ribbon.config.FeignHttpInterceptorConfig;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2020/11/16 15:54 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+@FeignClient(value = ServiceNameConstants.OPRATION_SERVER,configuration= FeignHttpInterceptorConfig.class,
+        fallbackFactory = ScreeningOrganizatonServiceFallbackFactory.class, decode404 = true)
+public interface SreeningOrganizationService {
+    /**
+     * feign rpc访问远程 接口
+     */
+    @PostMapping(value = "/screeningorganizationinfo/query")
+    ResultBody findByObject(@RequestBody ScreeningOrganizationInfo organizationInfo);
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningOrganizatonServiceFallbackFactory.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningOrganizatonServiceFallbackFactory.java
new file mode 100644
index 0000000..c618ec2
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningOrganizatonServiceFallbackFactory.java
@@ -0,0 +1,31 @@
+package com.kidgrow.oprationcenter.feign.fallback;
+
+
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.feign.SreeningOrganizationService;
+import com.kidgrow.oprationcenter.model.ScreeningOrganizationInfo;
+import feign.hystrix.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2020/11/16 15:58 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+@Component
+public class ScreeningOrganizatonServiceFallbackFactory implements FallbackFactory<SreeningOrganizationService> {
+
+    @Override
+    public SreeningOrganizationService create(Throwable throwable) {
+        return new SreeningOrganizationService(){
+
+            @Override
+            public ResultBody findByObject(ScreeningOrganizationInfo organizationInfo) {
+                return ResultBody.failed().msg("saveProductDetail的FeignClient调用失败");
+            }
+        };
+    }
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ScreeningOrganizationExcel.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ScreeningOrganizationExcel.java
new file mode 100644
index 0000000..2eef69b
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ScreeningOrganizationExcel.java
@@ -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;
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ScreeningOrganizationInfoController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ScreeningOrganizationInfoController.java
index 9c856e7..0a12b38 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ScreeningOrganizationInfoController.java
+++ b/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();
+        }
+    }
 }
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/importScreeningOrganization.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/importScreeningOrganization.html
new file mode 100644
index 0000000..b28d09d
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/importScreeningOrganization.html
@@ -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>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningOrganization.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningOrganization.html
index 4509de1..be1ea41 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningOrganization.html
+++ b/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>
\ No newline at end of file
diff --git "a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/template/\346\234\272\346\236\204\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" "b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/template/\346\234\272\346\236\204\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
new file mode 100644
index 0000000..fb878bb
--- /dev/null
+++ "b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/template/\346\234\272\346\236\204\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
Binary files differ

--
Gitblit v1.8.0