From 6fb14149d62199cfcc0448c82eb2f51f9c5181de Mon Sep 17 00:00:00 2001
From: luliqiang <kidgrow>
Date: Thu, 31 Dec 2020 16:55:30 +0800
Subject: [PATCH] Merge branch 'dev' of http://192.168.2.240:7070/r/kidgrow-microservices-platform into parter

---
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java                                                       |    9 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/dataNeed.html                                                                                       |   37 +
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/Dockerfile                                                                                                     |    4 
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDepartment.java                                                     |   11 
 kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/excelModel/ExportField.java                                                        |   30 +
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/Dockerfile                                                                                                     |    4 
 kidgrow-uaa/kidgrow-uaa-server/Dockerfile                                                                                                                                    |    2 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html                                                                                       |   12 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital_form.html                                                                          |   27 +
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysHospitalMapper.xml                                                                   |    2 
 kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java                                                                        |    9 
 pom.xml                                                                                                                                                                      |   11 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js                                                                                                |    2 
 kidgrow-config/src/main/resources/application-dev.properties                                                                                                                 |    8 
 kidgrow-springcloud/kidgrow-springcloud-zuul/Dockerfile                                                                                                                      |    4 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/SreeningOrganizationService.java                         |   12 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html                                                                             |   30 +
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningOrganization.html                                                                           |    2 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html                                                                                       |  387 ++++++++++++--------
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ScreeningOrganizationInfoServiceImpl.java         |    7 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java                                   |   10 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/DataNeedMapper.xml                                                            |    6 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/Dockerfile                                                                                           |    4 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IScreeningOrganizationInfoService.java                 |    7 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html                                                                                    |    9 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ScreeningOrganizationInfoMapper.java                    |    7 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningOrganizatonServiceFallbackFactory.java |    8 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ScreeningOrganizationInfoMapper.xml                                           |   12 
 kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/ExcelUtils.java                                                                    |  290 ++++++++++++++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/template/机构导入模板.xlsx                                                              |    0 
 kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/excelModel/BackPatientOrderParam.java                                              |   20 +
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ScreeningOrganizationInfoController.java         |   73 ++-
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js                                                                                                   |    2 
 33 files changed, 843 insertions(+), 215 deletions(-)

diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/Dockerfile b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/Dockerfile
index 78e6474..a288db7 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/Dockerfile
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/Dockerfile
@@ -2,6 +2,8 @@
 FROM openjdk:8-jdk-alpine
 # 作者(可选)
 MAINTAINER kidgrow
+##时区
+RUN echo "Asia/Shanghai" > /etc/timezone
 # 删除无用组件 优化容器体积(可选)
 RUN rm -rf /var/lib/apt/lists/*
 # 创建jar包存放目录
@@ -11,4 +13,4 @@
 # copy当前工程jar包至容器内
 COPY ${JAR_FILE} /usr/local/kidgrow/app.jar
 # 运行jar包
-ENTRYPOINT ["java","-Xms64m","-Xmx256m","-jar","/usr/local/kidgrow/app.jar"]
\ No newline at end of file
+ENTRYPOINT ["java","-Xms64m","-Xmx1000m","-jar","/usr/local/kidgrow/app.jar"]
\ No newline at end of file
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
index 8ae42f9..3d83c10 100644
--- 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
@@ -1,6 +1,7 @@
 package com.kidgrow.oprationcenter.feign;
 
 import com.kidgrow.common.constant.ServiceNameConstants;
+import com.kidgrow.common.model.PageResult;
 import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.oprationcenter.feign.fallback.ScreeningOrganizatonServiceFallbackFactory;
 import com.kidgrow.oprationcenter.model.ScreeningOrganizationInfo;
@@ -8,6 +9,9 @@
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Map;
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
@@ -33,4 +37,12 @@
      */
     @PostMapping(value = "/screeningorganizationinfo/getOrganizationListByHospitalId")
     ResultBody getOrganizationListByHospitalId(@RequestBody String id);
+
+    /**
+     * 通过医院关键字查询机构
+     * @param params
+     * @return
+     */
+    @PostMapping(value = "/screeningorganizationinfo/listByKeyWord")
+    PageResult<ScreeningOrganizationInfo> listByKeyWord(@RequestParam Map<String, Object> params);
 }
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
index aced7a7..4f77d71 100644
--- 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
@@ -1,11 +1,14 @@
 package com.kidgrow.oprationcenter.feign.fallback;
 
 
+import com.kidgrow.common.model.PageResult;
 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;
+
+import java.util.Map;
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
@@ -31,6 +34,11 @@
             public ResultBody getOrganizationListByHospitalId(String id) {
                 return ResultBody.failed().msg("getOrganizationListByHospitalId的FeignClient调用失败");
             }
+
+            @Override
+            public PageResult<ScreeningOrganizationInfo> listByKeyWord(Map<String, Object> params) {
+                return PageResult.<ScreeningOrganizationInfo>builder().code(1000).build();
+            }
         };
     }
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java
index d03f898..f728567 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java
@@ -86,4 +86,14 @@
      */
     @TableField(exist = false)
     private String keyWord;
+
+    /**
+     * 联系电话
+     */
+    private String contactNumber;
+
+    /**
+     * 联系地址
+     */
+    private String contactAddress;
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ScreeningOrganizationInfoMapper.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ScreeningOrganizationInfoMapper.java
index 404a753..004c801 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ScreeningOrganizationInfoMapper.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ScreeningOrganizationInfoMapper.java
@@ -38,4 +38,11 @@
      * @return
      */
     List<ScreeningOrganizationInfo> findByHospitalId(@Param("t") Long id);
+
+    /**
+     * 通过医院名称查询机构
+     * @param params
+     * @return
+     */
+    List<ScreeningOrganizationInfo> findByKeyWord(Page<ScreeningOrganizationInfo> page, @Param("p") Map<String, Object> params);
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IScreeningOrganizationInfoService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IScreeningOrganizationInfoService.java
index d8f652c..3b98928 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IScreeningOrganizationInfoService.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IScreeningOrganizationInfoService.java
@@ -37,5 +37,12 @@
      * @return
      */
     List<ScreeningOrganizationInfo> findByHospitalId(Long id);
+
+    /**
+     * 通过医院名称查询机构
+     * @param params
+     * @return
+     */
+    PageResult<ScreeningOrganizationInfo> findByKeyWord(Map<String, Object> params);
 }
 
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ScreeningOrganizationInfoServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ScreeningOrganizationInfoServiceImpl.java
index 8e4c8e9..3538f36 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ScreeningOrganizationInfoServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ScreeningOrganizationInfoServiceImpl.java
@@ -56,4 +56,11 @@
         return baseMapper.findByHospitalId(id);
     }
 
+    @Override
+    public PageResult<ScreeningOrganizationInfo> findByKeyWord(Map<String, Object> params) {
+        Page<ScreeningOrganizationInfo> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
+        List<ScreeningOrganizationInfo> list  =  baseMapper.findByKeyWord(page, params);
+        return PageResult.<ScreeningOrganizationInfo>builder().data(list).code(0).count(page.getTotal()).build();
+    }
+
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/DataNeedMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/DataNeedMapper.xml
index 59a3051..91a5abd 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/DataNeedMapper.xml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/DataNeedMapper.xml
@@ -74,6 +74,12 @@
             <if test="p.createTime != null and p.createTime !=''">
                 and create_time = #{p.createTime}
             </if>
+            <if test="p.createTimeBegin != null and p.createTimeBegin !=''">
+                and create_time &gt;=  #{p.createTimeBegin}
+            </if>
+            <if test="p.createTimeEnd != null and p.createTimeEnd !=''">
+                and create_time &lt;= #{p.createTimeEnd}
+            </if>
             <if test="p.updateTime != null and p.updateTime !=''">
                 and update_time = #{p.updateTime}
             </if>
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ScreeningOrganizationInfoMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ScreeningOrganizationInfoMapper.xml
index 9b87cf7..b7901ce 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ScreeningOrganizationInfoMapper.xml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ScreeningOrganizationInfoMapper.xml
@@ -105,4 +105,16 @@
         from screening_organization_info
         where source_hospital_id=#{t}
     </select>
+
+    <select id="findByKeyWord" resultType="com.kidgrow.oprationcenter.model.ScreeningOrganizationInfo" parameterType="java.util.Map" >
+        SELECT
+            *
+        FROM
+            screening_organization_info
+        WHERE
+            source_hospital_id=${p.id}
+            <if test="p.keyword != null and p.keyword != ''">
+             and organization_name LIKE '%${p.keyword}%'
+            </if>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/Dockerfile b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/Dockerfile
index 80fee4b..cba9220 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/Dockerfile
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/Dockerfile
@@ -2,6 +2,8 @@
 FROM openjdk:8-jdk-alpine
 # 作者(可选)
 MAINTAINER kidgrow
+##时区
+RUN echo "Asia/Shanghai" > /etc/timezone
 # 删除无用组件 优化容器体积(可选)
 RUN rm -rf /var/lib/apt/lists/*
 # 创建jar包存放目录
@@ -11,4 +13,4 @@
 # copy当前工程jar包至容器内
 COPY ${JAR_FILE} /usr/local/kidgrow/app.jar
 # 运行jar包
-ENTRYPOINT ["java","-Xms64m","-Xmx400m","-jar","/usr/local/kidgrow/app.jar"]
\ No newline at end of file
+ENTRYPOINT ["java","-Xms64m","-Xmx600m","-jar","/usr/local/kidgrow/app.jar"]
\ No newline at end of file
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 07ebabc..32e9fb3 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
@@ -20,6 +20,7 @@
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.ObjectError;
 import org.springframework.web.bind.annotation.*;
@@ -28,7 +29,10 @@
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -106,15 +110,16 @@
             }
             return ResultBody.failed().msg(errMsg.toString());
         } else {
-            if (organizationInfo.getId() == null) {
-                //新增机构增加关注二维码
-                String url = createQr(String.valueOf(organizationInfo.getId()));
-                if (StringUtils.isNotBlank(url)) {
-                    organizationInfo.setQrCode(url);
-                }
-            }
             boolean v = organizationInfoService.saveOrUpdate(organizationInfo);
             if (v) {
+                if (StringUtils.isBlank(organizationInfo.getQrCode())) {
+                    //新增机构增加关注二维码
+                    String url = createQr(String.valueOf(organizationInfo.getId()));
+                    if (StringUtils.isNotBlank(url)) {
+                        organizationInfo.setQrCode(url);
+                        organizationInfoService.updateById(organizationInfo);
+                    }
+                }
                 return ResultBody.ok().data(organizationInfo).msg("保存成功");
             } else {
                 return ResultBody.failed().msg("保存失败");
@@ -124,7 +129,7 @@
 
     private String createQr(String id) {
         String url = "";
-        String str = "{\"action_name\": \"QR_LIMIT_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": \"kagscreening_\" " + id + "}}}";
+        String str = "{\"action_name\": \"QR_LIMIT_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": \"kagscreening_" + id + "\"}}}";
 
         String token = redisUtils.get("Wechat:Token:KagReceiveToken").toString();
         String result = HttpRequest.post("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + token)
@@ -219,21 +224,24 @@
                 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);
+                        ScreeningOrganizationInfo organizationInfo = new ScreeningOrganizationInfo();
+                        BeanUtil.copyProperties(u, organizationInfo);
+                        organizationInfo.setSourceHospitalName(hospitalName);
+                        organizationInfo.setSourceHospitalId(Long.parseLong(hospitalId));
+                        organizationInfo.setProvince(area[0]);
+                        organizationInfo.setCity(area[1]);
+                        organizationInfo.setArea(area[2]);
+                        organizationInfo.setAreaCode(areaName);
+                        organizationInfoService.saveOrUpdate(organizationInfo);
+                        if (StringUtils.isBlank(organizationInfo.getQrCode())) {
+                            organizationInfo.setQrCode(createQr(String.valueOf(organizationInfo.getId())));
+                            organizationInfoService.updateById(organizationInfo);
+                        }
                     });
-                    organizationInfoService.saveBatch(users);
+
                 }
             }
         } catch (Exception e) {
@@ -249,7 +257,11 @@
     @PostMapping("/export")
     public void export(HttpServletResponse response) {
         try {
-            InputStream inStream =this.getClass().getResourceAsStream("/static/pages/template/机构导入模板.xlsx");
+            InputStream inStream = null;
+            ClassPathResource resource = new ClassPathResource(File.separator + "template" + File.separator + "机构导入模板.xlsx");
+            if (resource.exists()) {
+                inStream = resource.getInputStream();
+            }
             // 设置输出的格式
             response.reset();
             response.setContentType("bin");
@@ -274,9 +286,26 @@
     @PostMapping("/getOrganizationListByHospitalId")
     public ResultBody getOrganizationListByHospitalId(@RequestBody String id) {
         List<ScreeningOrganizationInfo> byHospitalId = organizationInfoService.findByHospitalId(Long.valueOf(id));
-        if(byHospitalId != null && byHospitalId.size() > 0){
+        if (byHospitalId != null && byHospitalId.size() > 0) {
             return ResultBody.ok().data(byHospitalId).msg("查询成功");
         }
         return ResultBody.failed().msg("查询失败");
     }
+
+    /**
+     * 关键字查询列表
+     */
+    @ApiOperation(value = "关键字查询列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer")
+    })
+    @PostMapping(value = "/listByKeyWord")
+    public PageResult<ScreeningOrganizationInfo> listByKeyWord(@RequestParam Map<String, Object> params) {
+        if (params.size() == 0) {
+            params.put("page", 1);
+            params.put("limit", 10);
+        }
+        return organizationInfoService.findByKeyWord(params);
+    }
 }
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-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/template/\346\234\272\346\236\204\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
similarity index 100%
rename from "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"
rename to "kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/template/\346\234\272\346\236\204\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
Binary files differ
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDepartment.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDepartment.java
index aaa7938..5480135 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDepartment.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDepartment.java
@@ -102,4 +102,15 @@
      */
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
     private Date healthEndTime;
+
+    /**
+     * 部门联系人
+     */
+    private String departmentLink;
+
+    /**
+     * 部门联系人
+     */
+    private String departmentTel;
+
 }
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java
index b4a11b6..e93021e 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java
@@ -114,4 +114,13 @@
      * 是否试用,true正式,false试用
      */
     private Boolean OrderType;
+    /**
+     * 部门联系人
+     */
+    private String departmentLink;
+
+    /**
+     * 部门联系人
+     */
+    private String departmentTel;
 }
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysHospitalMapper.xml b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysHospitalMapper.xml
index 6d4321c..7cfb392 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysHospitalMapper.xml
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysHospitalMapper.xml
@@ -265,6 +265,8 @@
         DEP.is_del,
         DEP.is_pay,
         DEP.enabled,
+        DEP.department_link,
+        DEP.department_tel,
         hospitals.*
         FROM
         sys_department DEP
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/Dockerfile b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/Dockerfile
index 80fee4b..cba9220 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/Dockerfile
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/Dockerfile
@@ -2,6 +2,8 @@
 FROM openjdk:8-jdk-alpine
 # 作者(可选)
 MAINTAINER kidgrow
+##时区
+RUN echo "Asia/Shanghai" > /etc/timezone
 # 删除无用组件 优化容器体积(可选)
 RUN rm -rf /var/lib/apt/lists/*
 # 创建jar包存放目录
@@ -11,4 +13,4 @@
 # copy当前工程jar包至容器内
 COPY ${JAR_FILE} /usr/local/kidgrow/app.jar
 # 运行jar包
-ENTRYPOINT ["java","-Xms64m","-Xmx400m","-jar","/usr/local/kidgrow/app.jar"]
\ No newline at end of file
+ENTRYPOINT ["java","-Xms64m","-Xmx600m","-jar","/usr/local/kidgrow/app.jar"]
\ No newline at end of file
diff --git a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/ExcelUtils.java b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/ExcelUtils.java
new file mode 100644
index 0000000..c6c572b
--- /dev/null
+++ b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/ExcelUtils.java
@@ -0,0 +1,290 @@
+package com.kidgrow.common.utils;
+
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.ExcelImportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import cn.afterturn.easypoi.excel.entity.ImportParams;
+import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
+import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
+import com.google.common.collect.Lists;
+import com.kidgrow.common.utils.excelModel.ExportField;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Method;
+import java.net.URLEncoder;
+import java.util.*;
+
+/**
+ * @author : heyanfeng
+ * create at:  2019-05-27  19:11
+ * @description: excel
+ */
+@Slf4j
+public class ExcelUtils {
+    public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, boolean isCreateHeader, HttpServletResponse response){
+        ExportParams exportParams = new ExportParams(title, sheetName);
+        exportParams.setCreateHeadRows(isCreateHeader);
+        defaultExport(list, pojoClass, fileName, response, exportParams);
+
+    }
+    public static void  exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass,String fileName, HttpServletResponse response){
+        defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));
+    }
+    public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response){
+        defaultExport(list, fileName, response);
+    }
+    public static void exportExcel(String fileName,ExportParams exportParams, List<ExcelExportEntity> entities,List<Map<String, Object>> list,HttpServletResponse response){
+        defaultExport(fileName,exportParams,entities,list,response);
+    }
+
+    private  static void defaultExport(String fileName,ExportParams exportParams, List<ExcelExportEntity> entities,List<Map<String, Object>> list,HttpServletResponse response ){
+        Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, list);
+        if (workbook != null){
+        downLoadExcel(fileName, response, workbook);}
+    }
+
+    private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) {
+        Workbook workbook = ExcelExportUtil.exportExcel(exportParams,pojoClass,list);
+        if (workbook != null) {
+            downLoadExcel(fileName, response, workbook);
+        }
+    }
+
+    private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {
+        try {
+            response.setCharacterEncoding("UTF-8");
+            response.setHeader("content-Type", "application/vnd.ms-excel");
+            response.setHeader("Content-Disposition",
+                    "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
+            workbook.write(response.getOutputStream());
+        } catch (IOException e) {
+            log.error("excel异常:{}",e.getMessage());
+        }
+    }
+    private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {
+        Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);
+        if (workbook != null){
+        downLoadExcel(fileName, response, workbook);}
+    }
+    public static <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass){
+        ImportParams params = new ImportParams();
+        params.setTitleRows(titleRows);
+        params.setHeadRows(headerRows);
+        List<T> list = null;
+        try {
+            File file = new File(filePath);
+            list = ExcelImportUtil.importExcel(file, pojoClass, params);
+        }catch (NoSuchElementException e){
+            throw new IllegalArgumentException("模板不能为空");
+        } catch (Exception e) {
+            log.error("excel异常:{}",e.getMessage());
+        }
+        return list;
+    }
+
+    public static <T> List<T> importExcel(InputStream inputStream, Integer titleRows, Integer headerRows, Class<T> pojoClass){
+        ImportParams params = new ImportParams();
+        params.setTitleRows(titleRows);
+        params.setHeadRows(headerRows);
+        List<T> list = null;
+        try {
+            list = ExcelImportUtil.importExcel(inputStream, pojoClass, params);
+        }catch (NoSuchElementException e){
+            throw new IllegalArgumentException("模板不能为空");
+        } catch (Exception e) {
+            log.error("excel异常:{}",e.getMessage());
+        }
+        return list;
+    }
+    public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass){
+        if (file == null){
+            return null;
+        }
+        ImportParams params = new ImportParams();
+        params.setTitleRows(titleRows);
+        params.setHeadRows(headerRows);
+        List<T> list = null;
+        try {
+            list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);
+        }catch (NoSuchElementException e){
+            throw new IllegalArgumentException("excel文件不能为空");
+        } catch (Exception e) {
+            log.error("excel异常:{}",e.getMessage());
+        }
+        return list;
+    }
+
+
+    /**
+     * description: 动态生成excel 列
+     * create by heyanfeng at 2019-05-29 18:02
+     * @param ef
+     * @param entities
+     */
+    public static void dynamicNewAddExcel(List<ExportField> ef, List<ExcelExportEntity> entities) {
+        //单元格的excel 表头
+        ef.forEach(item -> {
+            //需要合并单元格的表头
+            List<ExportField> children = item.getChildren();
+            if(!CollectionUtils.isEmpty(children)){
+                ExcelExportEntity parent = new ExcelExportEntity(item.getFiledChineseName(), item.getEntityAttrName());
+                List<ExcelExportEntity> entitiesChildren = Lists.newArrayList();
+                children.forEach(e -> {
+                    entitiesChildren.add(new ExcelExportEntity(e.getFiledChineseName(),e.getEntityAttrName(),30));
+                });
+                parent.setNeedMerge(true);
+                parent.setList(entitiesChildren);
+                entities.add(parent);
+            }else{
+                entities.add(new ExcelExportEntity(item.getFiledChineseName(),item.getEntityAttrName(),30));
+            }
+        });
+    }
+
+
+    /**
+     * description: 根据属性名称 获取属性的值
+     * create by heyanfeng at 2019-05-29 19:26
+     * @return Object
+     * @param fieldName
+     * @param o
+     */
+     public static  Object getFieldValueByName(String fieldName,Object o){
+        try{
+            String firstLetter = fieldName.substring(0, 1).toUpperCase();
+            String getter = "get" + firstLetter + fieldName.substring(1);
+            Method method = o.getClass().getMethod(getter, new Class[] {});
+            Object value = method.invoke(o, new Object[]{});
+            return  value;
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            return null;
+        }
+    }
+
+    /**
+     * description: 组装excel 数据
+     * create by heyanfeng at 2019-05-29 20:30
+     * @return  List<Map<String, Object>>
+     * @param ef
+     * @param statisData
+     */
+    public static List<Map<String, Object>> dynamicListDataByKey(List<ExportField> ef, List<?> statisData) {
+        //最终的数据
+        List<Map<String, Object>> datas = new ArrayList<>();
+        Map map;
+        for (Object t : statisData) {
+            map = new HashMap();
+            for (int j = 0; j < ef.size(); j++) {
+                List<ExportField> children = ef.get(j).getChildren();
+                if(!CollectionUtils.isEmpty(children)){
+                   //遍历需要合并单元格的子列
+                    traversechildren(map, t, children,ef.get(j).getEntityAttrName());
+                }else if(StringUtils.isNotBlank(ef.get(j).getEntityAttrName())){
+                    map.put(ef.get(j).getEntityAttrName(),getFieldValueByName(ef.get(j).getEntityAttrName(),t));
+                }
+            }
+            datas.add(map);
+        }
+        return datas;
+    }
+
+    /**
+    * description: 遍历需要合并单元格的子列
+    * create by heyanfeng at 2019-05-31 14:19
+    */
+    private static void traversechildren(Map map, Object t, List<ExportField> children,String entityAttrName) {
+        ArrayList<Map<String,Object>> childrenMaps = Lists.newArrayList();
+        Map<String,Object> childrenMap= new HashMap();
+        for (int k = 0; k < children.size(); k++) {
+            if(StringUtils.isNotBlank(children.get(k).getEntityAttrName())){
+                childrenMap.put(children.get(k).getEntityAttrName(),getFieldValueByName(children.get(k).getEntityAttrName(),t));
+            }
+        }
+        childrenMaps.add(childrenMap);
+        map.put(entityAttrName,childrenMaps);
+    }
+
+
+    /**
+    * description: 组装sql 查询条件
+    * create by heyanfeng at 2019-05-30 10:09
+    */
+//    public static String getExcelSql(List<ExportField> exportField) {
+//        String fileds;
+//        StringBuilder stringBuilder = new StringBuilder();
+//        exportField.forEach(item -> {
+//            //如果存在需要合并表头的列 则遍历
+//            List<ExportField> children = item.getChildren();
+//            if(!CollectionUtils.isEmpty(children)){
+//                children.forEach(e -> {
+//                    if(StringUtils.isNotBlank(e.getFiled())){
+//                        stringBuilder.append(e.getFiled() + GlobalConstant.PIC_SPLIT);
+//                    }
+//                });
+//            }else if(StringUtils.isNotBlank(item.getFiled())){
+//                stringBuilder.append(item.getFiled() + GlobalConstant.PIC_SPLIT);
+//            }
+//        });
+//        stringBuilder.deleteCharAt(stringBuilder.lastIndexOf(GlobalConstant.PIC_SPLIT));
+//        fileds = stringBuilder.toString();
+//        return fileds;
+//    }
+
+    /**
+     * description: 组装sql 查询条件
+     * create by heyanfeng at 2019-05-30 10:09
+     */
+//    public static String getGroupBySql(List<ExportField> exportField) {
+//        String fileds;
+//        //是否加入 group by
+//        Boolean[] flag = {false};
+//        StringBuilder stringBuilder = new StringBuilder();
+//        exportField.forEach(item -> {
+//            if(item.getGroupBy() == null && StringUtils.isNotBlank(item.getFiled())){
+//                stringBuilder.append(item.getFiled() + GlobalConstant.PIC_SPLIT);
+//            }else if(item.getGroupBy() != null  && item.getGroupBy() == YESNOEnum.YES.getValue()){
+//                flag[0] = true;
+//            }
+//        });
+//        stringBuilder.deleteCharAt(stringBuilder.lastIndexOf(GlobalConstant.PIC_SPLIT));
+//        fileds =  stringBuilder.toString();
+//        if (flag[0]){
+//            fileds =   " group by " + fileds;
+//            return  fileds;
+//        }
+//        return "";
+//    }
+
+
+    /**
+    * description: 检查导出字段是否为空
+    * create by heyanfeng at 2019-05-30 10:10
+    */
+    public  static void checkExportField( List<ExportField> exportField) {
+        if(CollectionUtils.isEmpty(exportField)){
+            throw new IllegalArgumentException("导出的字段不能为空");
+        }
+    }
+
+    /**
+    * description: 动态导出生成excel
+    * create by heyanfeng at 2019-05-30 10:37
+    */
+    public static void DynamicExcel(String fileName, String title,String sheet,List<ExportField> exportField, HttpServletResponse response, List<?> list) {
+        //生成动态列
+        List<ExcelExportEntity> entities = Lists.newArrayList();
+        ExcelUtils.dynamicNewAddExcel(exportField, entities);
+        //组装数据entities
+        List<Map<String, Object>> maps = ExcelUtils.dynamicListDataByKey(exportField, list);
+        ExcelUtils.exportExcel(fileName,new ExportParams(title, sheet),entities,maps,response);
+    }
+}
\ No newline at end of file
diff --git a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/excelModel/BackPatientOrderParam.java b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/excelModel/BackPatientOrderParam.java
new file mode 100644
index 0000000..4d6eb1e
--- /dev/null
+++ b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/excelModel/BackPatientOrderParam.java
@@ -0,0 +1,20 @@
+package com.kidgrow.common.utils.excelModel;
+
+//import io.swagger.annotations.ApiModel;
+//import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @program family_dr_api
+ * @description: 管理后台患者订单
+ * @author: luqiang
+ * @create: 2019/05/24 19:14
+ */
+//@ApiModel(value = "管理后台患者订单")
+@Data
+public class BackPatientOrderParam {
+//    @ApiModelProperty("导出字段,逗号分割")
+    private List<ExportField> exportField;
+}
\ No newline at end of file
diff --git a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/excelModel/ExportField.java b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/excelModel/ExportField.java
new file mode 100644
index 0000000..e449512
--- /dev/null
+++ b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/excelModel/ExportField.java
@@ -0,0 +1,30 @@
+package com.kidgrow.common.utils.excelModel;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author : heyanfeng
+ * create at:  2019-05-27  22:00
+ * @description:
+ */
+//@ApiModel(value = "管理后台患者订单导出的字段")
+@Data
+public class ExportField {
+
+//    @ApiModelProperty("实体映射的字段")
+    private String entityAttrName;
+
+//    @ApiModelProperty("导出字段,中文描述")
+    private String filedChineseName;
+
+//    @ApiModelProperty("组装sql 字段")
+    private String filed;
+
+//    @ApiModelProperty("sql-group-by去除字段:0 否 1是")
+    private Integer groupBy;
+
+//    @ApiModelProperty("合并单元格")
+    private List<ExportField>  children;
+}
\ No newline at end of file
diff --git a/kidgrow-config/src/main/resources/application-dev.properties b/kidgrow-config/src/main/resources/application-dev.properties
index bb73239..9f0bbad 100644
--- a/kidgrow-config/src/main/resources/application-dev.properties
+++ b/kidgrow-config/src/main/resources/application-dev.properties
@@ -82,11 +82,11 @@
 wechat.miniapp.secret=c16d8e42e42137bd7ba6e6999f226803
 
 ## C\u7AEF\u4EA7\u54C1\u516C\u4F17\u53F7\u914D\u7F6E\u4FE1\u606F
-wechat.xigao.mp.appid=dev-wx1cc7074ce3014652
-wechat.xigao.mp.secret=dev-0fa9eb188ae52aa8c2380744109f161c
+wechat.xigao.mp.appid=wx1cc7074ce3014652
+wechat.xigao.mp.secret=0fa9eb188ae52aa8c2380744109f161c
 wechat.xigao.mp.token=c83AR9oqRAJNg83A
 
 ## C\u7AEF\u4EA7\u54C1\u53EF\u7231\u9AD8\u7B5B\u67E5\u5C0F\u7A0B\u5E8F\u914D\u7F6E\u4FE1\u606F
-wechat.screening.applets.appid=wx5a9bc7ebd13eb6cc
-wechat.screening.applets.secret=c16d8e42e42137bd7ba6e6999f226803
+wechat.screening.applets.appid=wx0f3a6409155f1bac
+wechat.screening.applets.secret=ce485ae3192bb6a6cd68ce140ac81327
 health_url_net=http://192.168.2.22/
\ No newline at end of file
diff --git a/kidgrow-springcloud/kidgrow-springcloud-zuul/Dockerfile b/kidgrow-springcloud/kidgrow-springcloud-zuul/Dockerfile
index 11fd628..3aa8201 100644
--- a/kidgrow-springcloud/kidgrow-springcloud-zuul/Dockerfile
+++ b/kidgrow-springcloud/kidgrow-springcloud-zuul/Dockerfile
@@ -2,6 +2,8 @@
 FROM openjdk:8-jdk-alpine
 # 作者(可选)
 MAINTAINER kidgrow
+##时区
+RUN echo "Asia/Shanghai" > /etc/timezone
 # 删除无用组件 优化容器体积(可选)
 RUN rm -rf /var/lib/apt/lists/*
 # 创建jar包存放目录
@@ -13,4 +15,4 @@
 # 接收指定内存
 ENV JAVA_OPTS=$JAVA_OPTS
 # 运行jar包
-ENTRYPOINT ["java","-Xms64m","-Xmx256m","-jar","/usr/local/kidgrow/app.jar"]
\ No newline at end of file
+ENTRYPOINT ["java","-Xms64m","-Xmx1000m","-jar","/usr/local/kidgrow/app.jar"]
\ No newline at end of file
diff --git a/kidgrow-uaa/kidgrow-uaa-server/Dockerfile b/kidgrow-uaa/kidgrow-uaa-server/Dockerfile
index af7a2e0..e002403 100644
--- a/kidgrow-uaa/kidgrow-uaa-server/Dockerfile
+++ b/kidgrow-uaa/kidgrow-uaa-server/Dockerfile
@@ -89,4 +89,4 @@
 # copy当前工程jar包至容器内
 COPY ${JAR_FILE} /usr/local/kidgrow/app.jar
 # 运行jar包
-ENTRYPOINT ["java","-Xms64m","-Xmx256m","-jar","/usr/local/kidgrow/app.jar"]
\ No newline at end of file
+ENTRYPOINT ["java","-Xms64m","-Xmx600m","-jar","/usr/local/kidgrow/app.jar"]
\ No newline at end of file
diff --git a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java
index 84121f2..70df892 100644
--- a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java
+++ b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java
@@ -3,10 +3,10 @@
 import com.kidgrow.oauth2.handler.SingleTokenServices;
 import com.kidgrow.oauth2.service.impl.RedisClientDetailsService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Primary;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.AuthenticationProvider;
@@ -80,8 +80,8 @@
     private RandomValueAuthorizationCodeServices authorizationCodeServices;
     @Autowired
     private AuthenticationProvider daoAuhthenticationOauthProvider;
-    @Autowired
-    private SingleTokenServices tokenServices;
+//    @Autowired
+//    private SingleTokenServices tokenServices;
 
 
     /**
@@ -107,7 +107,7 @@
                     @Override
                     public Authentication authenticate(Authentication authentication) throws AuthenticationException {
                         String token = (String) authentication.getPrincipal();
-                        OAuth2Authentication auth = tokenServices.loadAuthentication(token);
+                        OAuth2Authentication auth = KidgrowTokenServices().loadAuthentication(token);
                         if (auth == null) {
                             throw new InvalidTokenException("Invalid token: " + token);
                         }
@@ -134,6 +134,7 @@
 
     @Bean
     @Primary
+    @Lazy
     public SingleTokenServices KidgrowTokenServices(){
         SingleTokenServices tokenServices = new SingleTokenServices();
         tokenServices.setTokenStore(tokenStore);
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
index e1908dc..8c93db6 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
@@ -297,7 +297,7 @@
             layer.msg('登录过期', {icon: 2, time: 1500}, function () {
                 location.replace('/login.html');
             }, 5000);
-        }else if(msg.includes("Invalid access token")){
+        }else if(res.msg.includes("Invalid access token")){
             layer.msg('您的账号在其他地方登陆,请重新登录或修改密码', {icon: 2, time: 1500}, function () {
                 location.replace('/login.html');
             }, 5000);
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js
index dbb5291..3c0c6dc 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js
@@ -1,7 +1,7 @@
  var my_api_server_url = 'http://127.0.0.1:8888/';
 // var my_api_server_url = 'http://192.168.2.240:8888/';
 // var my_api_server_url = 'http://open.zuul.kidgrow.cloud/';
- // var my_api_server_url = 'zuul.kidgrow.cloud/';
+//  var my_api_server_url = 'https://zuul.kidgrow.cloud/';
 //var my_api_server_url = 'https://zuul.kidgrow.cloud/';
 
 if(my_api_server_url.indexOf("http")<0)
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital_form.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital_form.html
index f1df902..9f20b57 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital_form.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital_form.html
@@ -25,6 +25,23 @@
     <div style="display:flex">
         <div class="layui-form-item">
             <div class="layui-inline">
+                <label class="layui-form-label">联系电话</label>
+                <div class="layui-input-block" style="width: 150px;">
+                    <input name="contactNumber" id="contactNumber" placeholder="联系电话" lay-verify="required" required class="layui-input" maxlength="20"/>
+
+                </div>
+            </div>
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 68px;">联系地址</label>
+                <div class="layui-input-block" style="width: 150px;">
+                    <input name="contactAddress" id="contactAddress" lay-verify="required" required placeholder="联系地址" class="layui-input" maxlength="50"/>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
                 <label class="layui-form-label">推送标题</label>
                 <div class="layui-input-block" style="width: 150px;">
                     <textarea name="pushTitle" id="pushTitle" placeholder="请输入推送标题" lay-verify="required" required class="layui-textarea"
@@ -52,7 +69,7 @@
                     <input name="hospitalQrImage" id="hospitalQrImage" type="hidden" class="layui-input" maxlength="20"/>
                     <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
                         预览效果
-                        <div class="layui-upload-list" id="qrImage"></div>
+                        <div class="layui-upload-list" id="qrImage" style="text-align: center"></div>
                     </blockquote>
                 </div>
             </div>
@@ -102,6 +119,8 @@
             data.field.pushTitle = $("#pushTitle").val();
             data.field.pushDescription = $("#pushDescription").val();
             data.field.enabled = "1";
+            data.field.contactNumber = $("#contactNumber").val();
+            data.field.contactAddress = $("#contactAddress").val();
 
             layer.load(2);
             admin.req('api-opration/hospitalscreening', JSON.stringify(data.field), function (data) {
@@ -146,7 +165,7 @@
                 obj.preview(function (index, file, result) {
                     $("#qrImage").html('');
                     $('#qrImage').append('<img src="' + result +
-                        '" width="50px" height="50px" alt="' + file.name +
+                        '" width="60px" height="60px" alt="' + file.name +
                         '" class="layui-upload-img">')
                 });
             },
@@ -174,7 +193,7 @@
                 obj.preview(function (index, file, result) {
                     $("#indexImage").html('');
                     $('#indexImage').append('<img src="' + result +
-                        '" width="50px" height="50px" alt="' + file.name +
+                        '" width="110px" height="50px" alt="' + file.name +
                         '" class="layui-upload-img">')
                 });
             },
@@ -194,6 +213,8 @@
             $("#id").val(screeningHospital.id);
             $("#pushTitle").val(screeningHospital.pushTitle);
             $("#pushDescription").val(screeningHospital.pushDescription);
+            $("#contactNumber").val(screeningHospital.contactNumber);
+            $("#contactAddress").val(screeningHospital.contactAddress);
 
             if (screeningHospital.isScreeningPush == 1) {
                 $("#isScreeningPush_yes").prop("checked", true)
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 be1ea41..d48019e 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
@@ -200,7 +200,7 @@
                     //  返回
                     xmlResquest.onload = function() {
                         if (this.status == 200) {
-                            var fileName = "002.png";
+                            var fileName = JSON.parse(data).no + ".png";
                             var blob = this.response;
                             var a = document.createElement('a');
                             a.innerHTML = fileName;
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/dataNeed.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/dataNeed.html
index daaa6c0..67ec24c 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/dataNeed.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/dataNeed.html
@@ -126,10 +126,30 @@
         var laydate = layui.laydate;
         //执行一个laydate实例
         laydate.render({
-            elem: '#test1' //指定元素
+            elem: '#test1', //指定元素
+            done: function (value, date, endDate) {
+                var startDate = new Date(value).getTime();
+                var endTime = new Date($('#test2').val()).getTime();
+                if (endTime < startDate) {
+                    layer.msg('结束时间不能小于开始时间');
+                    $('#test1').val($('#test2').val());
+                } else {
+                    $('#custom_beginTime').val($("#test1").val())
+                }
+            }
         });
         laydate.render({
-            elem: '#test2' //指定元素
+            elem: '#test2', //指定元素
+            done: function (value, date, endDate) {
+                var startDate = new Date($('#test1').val()).getTime();
+                var endTime = new Date(value).getTime();
+                if (endTime < startDate) {
+                    layer.msg('结束时间不能小于开始时间');
+                    $('#test2').val($('#test1').val());
+                } else {
+                    $('#custom_endTime').val($("#test2").val())
+                }
+            }
         });
 
         // 渲染表格
@@ -148,7 +168,8 @@
                 { field: 'needType',align:'center', width: 100, title: '数据类型', templet: function (d) { if (d.needType == 1) { return '筛查' } else { return '就诊' } } },// 0就诊数据 1筛查
                 { field: 'needTags',align:'center', width: 100, align: 'center', toolbar: '#app-table-bar', title: '需求标签' },
                 { field: 'enabled',align:'center', width: 200, toolbar: '#app-table-bar1', title: '处理状态', },
-                { field: 'downTime',align:'center', width: 250, title: '下载时间', templet: "<div>{{layui.util.toDateString(d.downTime, 'yyyy-MM-dd HH:mm')}}</div>" }
+                { field: 'downTime',align:'center', width: 250, title: '下载时间', templet: "<div>{{layui.util.toDateString(d.downTime, 'yyyy-MM-dd HH:mm')}}</div>" },
+                { field: 'creatTime',align:'center', width: 250, title: '创建时间', templet: "<div>{{layui.util.toDateString(d.creatTime, 'yyyy-MM-dd')}}</div>" }
             ]],done:function(res){
                 permissionsInput(res,config);
             }
@@ -212,17 +233,17 @@
         // 搜索按钮点击事件
         $('#app-btn-search').click(function () {
             var key = $('#app-edit-search').val();
-            var needBegintime = $('#test1').val();
-            var needEndtime = $('#test2').val();
-            if (needBegintime != null && needEndtime != null) {
-                var flag = compareDate(needBegintime, needEndtime);
+            var createTimeBegin = $('#test1').val();
+            var createTimeEnd = $('#test2').val();
+            if (createTimeBegin != null && createTimeEnd != null) {
+                var flag = compareDate(createTimeBegin, createTimeEnd);
                 if (!flag) {
                     layer.msg('结束时间不得小于开始时间');
                     return;
                 }
             }
 
-            table.reload('app-table', { where: { doctorName: key, needBegintime: needBegintime, needEndtime: needEndtime },page: {curr: 1  }  });
+            table.reload('app-table', { where: { doctorName: key, createTimeBegin: createTimeBegin, createTimeEnd: createTimeEnd },page: {curr: 1  }  });
         });
         //比较日期大小
         function compareDate(logintime, logouttime) {
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html
index 96ee3fa..98cbfd4 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html
@@ -530,6 +530,7 @@
         $("#username").blur(function () {
             if (!validatorTel(doctorTel_add)) {
                 layer.msg("请输入正确的手机号");
+                
             } else {
                 username_is_usered("username");
             }
@@ -539,6 +540,10 @@
             var doctorTel_add = $("#doctorTel-add").val();
             if (!validatorTel(doctorTel_add)) {
                 layer.msg("请输入正确的手机号");
+                //将手机号还原
+                $("#doctorTel-add").val("")
+                $("#username").val("")
+
             } else {
                 username_is_usered("username");
             }
@@ -611,8 +616,8 @@
             $("#hospitalId").val(doctor.hospitalId);
             $("#password_div").hide();
             $("#passwordSure_div").hide();
-            $("#doctorTel-add").prop("disabled",true)
-
+            // $("#doctorTel-add").prop("disabled",true)
+            $("#doctorTel-add").unbind("blur")
             //将密码项取消
             if (doctor.doctorType == 2) {
                 $(".account").hide();
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
index aa1b656..e8dd898 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
@@ -106,7 +106,7 @@
                     },
                     {
                         field: 'hospitalLink',
-                        width: "6%",
+                        width: "7%",
                         title: '联系人'
                     },
                     {
@@ -115,6 +115,16 @@
                         title: '联系方式'
                     },
                     {
+                        field: 'departmentLink',
+                        width: "6%",
+                        title: '科室联系人'
+                    },
+                    {
+                        field: 'departmentTel',
+                        width: "8%",
+                        title: '科室联系方式'
+                    },
+                    {
                         field: 'orderType', width: 80,  title: '状态', templet: function (d) {
                             if(d.orderType==null){
                                 return "";
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html
index 7bc7364..7c34ac0 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html
@@ -19,6 +19,22 @@
     </div>
     <div class="layui-form-item">
         <div class="layui-row">
+            <div class="layui-col-sm5">
+                <label class="layui-form-label">医院联系人</label>
+                <div class="layui-input-block">
+                    <input name="hospitalLink" type="text" class="layui-input" maxlength="20" style="width: 200px;" />
+                </div>
+            </div>
+            <div class="layui-col-sm5">
+                <label class="layui-form-label">医院电话</label>
+                <div class="layui-input-block">
+                    <input name="hospitalTel" id="hospitalTel" type="text" class="layui-input" maxlength="20" />
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <div class="layui-row">
             <div class="layui-col-sm4">
                 <label class="layui-form-label">科室名称</label>
                 <div class="layui-input-block">
@@ -27,15 +43,15 @@
                     &emsp;</div>
             </div>
             <div class="layui-col-sm3">
-                <label class="layui-form-label">联系电话</label>
+                <label class="layui-form-label">科室电话</label>
                 <div class="layui-input-block">
-                    <input name="hospitalTel" id="hospitalTel" type="text" class="layui-input" maxlength="20" />
+                    <input name="departmentTel" id="departmentTel" type="text" class="layui-input" maxlength="20" />
                 </div>
             </div>
             <div class="layui-col-sm3">
-                <label class="layui-form-label">联系人</label>
+                <label class="layui-form-label">科室联系人</label>
                 <div class="layui-input-block">
-                    <input name="hospitalLink" type="text" class="layui-input" maxlength="20" style="width: 200px;" />
+                    <input name="departmentLink" id="departmentLink" type="text" class="layui-input" maxlength="20" style="width: 200px;" />
                 </div>
             </div>
         </div>
@@ -343,7 +359,9 @@
                             saleUserId: '' + $("#saleUserName").val(),
                             saleUserName: $("#saleUserName option:selected").text(),
                             saleUserTel: $("#saleUserTel").val(),
-                            accountsCount: $("#accountsCount").val()
+                            accountsCount: $("#accountsCount").val(),
+                            departmentTel: $("#departmentTel").val(),
+                            departmentLink: $("#departmentLink").val(),
                         };
                         admin.req('api-user/sysdepartment/'+data.data.id, JSON.stringify(departmentData),
                             function (data) {
@@ -469,6 +487,8 @@
                                         $("#accountsCount").val(departData[0]
                                             .accountsCount);
                                         $('#saleUserName').val(departData[0].saleUserId);
+                                        $('#departmentLink').val(departData[0].departmentLink);
+                                        $('#departmentTel').val(departData[0].departmentTel);
 
                                         if (hosIdForEdit != "") {
                                             $("#serverUserTel").val(departData[0]
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html
index a5c65f0..2c810d5 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html
@@ -80,12 +80,12 @@
                         <div class="layui-row">
                             <div class="layui-col-sm6">
                                 <label class="layui-form-label">当前软件服务周期:</label>
-                                <div class="layui-input-block" >
+                                <div class="layui-input-block">
                                     <input autocomplete="off" name="contractBeginTime_not" disabled
                                         id="contractBeginTime_not" type="text" placeholder="请输开始时间" class="layui-input"
                                         maxlength="50" readonly
                                         style="border: none; display: inline-block;width: 30%;" />
-                                       <span id="contractBeginTime_not_heng"> 至 </span>
+                                    <span id="contractBeginTime_not_heng"> 至 </span>
                                     <input autocomplete="off" name="contractEndTime_not" disabled
                                         id="contractEndTime_not" type="text" placeholder="请输入结束时间" class="layui-input"
                                         maxlength="50" readonly
@@ -137,6 +137,17 @@
                             </div>
                         </div>
                     </div>
+                    <div class="layui-form-item" style="margin: 10px 0px 0px 0px;">
+                        <div class="layui-row">
+                            <div class="layui-col-sm6">
+                                <label class="layui-form-label">签订日期</label>
+                                <div class="layui-input-block">
+                                    <input autocomplete="off" name="contractTime" id="contractTime" type="text"
+                                        class="layui-input" maxlength="50" lay-verify="required" style="display: inline-block;width: 40%;" required />
+                                </div>
+                            </div>
+                        </div>
+                    </div>
                 </div>
             </div>
         </div>
@@ -169,13 +180,14 @@
                                 <label class="layui-form-label">读片充值量:</label>
                                 <div class="layui-input-inline">
                                     <input autocomplete="off" id="custom_ailightCount"
-                                        onkeyup="this.value=this.value.replace(/[^\d]/g,'') " type="text" 
+                                        onkeyup="this.value=this.value.replace(/[^\d]/g,'') " type="text"
                                         class="layui-input" maxlength="50" />
                                 </div>
                             </div>
                             <div class="layui-col-sm6">
                                 <div class="layui-input-inline">
-                                    <input type="checkbox" id="custom_isShare" name="gongxiang" value="1" lay-skin="primary" title="是否共享" />
+                                    <input type="checkbox" id="custom_isShare" name="gongxiang" value="1"
+                                        lay-skin="primary" title="是否共享" />
                                 </div>
                             </div>
                         </div>
@@ -184,8 +196,8 @@
                         <div class="layui-row">
                             <div class="layui-col-sm12">
                                 <div class="layui-input-inline" style="width: 160px;text-align: right;">
-                                    <input type="checkbox" id="termType" lay-skin="primary" name="termType" value="true" checked
-                                        title="期限限制" />
+                                    <input type="checkbox" id="termType" lay-skin="primary" name="termType" value="true"
+                                        checked title="期限限制" />
                                 </div>
                                 <div class="layui-col-sm4" style="margin-right: 30px;">
                                     <input autocomplete="off" id="custom_beginTime" type="text" placeholder="请输开始时间"
@@ -262,7 +274,7 @@
         //充值进行中
         var isRun = false;
         //执行一个laydate实例
-        var contractBeginTime= laydate.render({
+        var contractBeginTime = laydate.render({
             elem: '#contractBeginTime', //指定元素
             done: function (value, date, endDate) {
                 var startDate = new Date(value).getTime();
@@ -270,11 +282,11 @@
                 if (endTime <= startDate) {
                     layer.msg('结束时间不能小于或等于开始时间');
                     var end = new Date($('#contractEndTime').val())
-                    end.setDate(end.getDate()-1)
+                    end.setDate(end.getDate() - 1)
                     $('#contractBeginTime').val(util.toDateString(end, "yyyy-MM-dd"));
                 } else {
-                    var flag=termTypeTime();
-                    if(!false){
+                    var flag = termTypeTime();
+                    if (!flag) {
                         return false;
                     }
                     $('#custom_beginTime').val($("#contractBeginTime").val())
@@ -298,15 +310,33 @@
                 if (endTime <= startDate) {
                     layer.msg('结束时间不能小于或等于开始时间');
                     var begin = new Date($('#contractBeginTime').val())
-                    begin.setDate(begin.getDate()+1)
+                    begin.setDate(begin.getDate() + 1)
                     $('#contractEndTime').val(util.toDateString(begin, "yyyy-MM-dd"));
                     // $('#contractEndTime').val($('#contractBeginTime').val());
                 } else {
-                    var flag=termTypeTime();
-                    if(!false){
+                    var flag = termTypeTime();
+                    if (!flag) {
                         return false;
                     }
                     $('#custom_endTime').val($("#contractEndTime").val())
+                    //将自定义的开始时间都限制
+                    custom_beginTimes.config.min = {
+                        year: layui.util.toDateString(begin, "yyyy"),
+                        month: layui.util.toDateString(begin, "MM") - 1,//关键
+                        date: layui.util.toDateString(begin, "dd"),
+                        hours: layui.util.toDateString(begin, "HH"),
+                        minutes: layui.util.toDateString(begin, "mm"),
+                        seconds: layui.util.toDateString(begin, "ss")
+                    }
+                    custom_beginTimes.config.max = {
+                        year: date.year,
+                        month: date.month - 1,//关键
+                        date: date.date,
+                        hours: date.hours,
+                        minutes: date.minutes,
+                        seconds: date.seconds
+                    }
+                    //将自定义的结束时间都限制
                     custom_endTimes.config.max = {
                         year: date.year,
                         month: date.month - 1,//关键
@@ -328,43 +358,48 @@
                 }
             }
         });
-        function termTypeTime(){
+        function termTypeTime() {
             var listData = admin.getTempData("t_tempProduct");
-            var max= "";
-            var min= '';
-            if(listData!=null&&listData.length>0){
-               
-                listData.forEach((element,index) => {
-                    if(index==0){
-                        max=element.endTime;
-                        min=element.beginTime;
-                    }else{
+            var max = "";
+            var min = '';
+            if (listData != null && listData.length > 0) {
+
+                listData.forEach((element, index) => {
+                    if (index == 0) {
+                        max = element.endTime;
+                        min = element.beginTime;
+                    } else {
                         if (dateUtil.compareDate(min, element.beginTime)) {
-                        min=element.beginTime;
+                            min = element.beginTime;
                         }
-                        if (dateUtil.compareDate( element.endTime,max)) {
-                            max=element.endTime;
+                        if (dateUtil.compareDate(element.endTime, max)) {
+                            max = element.endTime;
                         }
                     }
-                    
+
                 });
+            } else {
+                return true;
             }
-            if(dateUtil.compareDate( $('#contractBeginTime').val(),min)){
+            if (dateUtil.compareDate($('#contractBeginTime').val(), min)) {
                 layer.msg("合同的时间必须小于待充值的开始时间")
                 $('#contractBeginTime').val(contractBeginTime_cheng);
                 return false;
-            }else{
-                contractBeginTime_cheng=$('#contractBeginTime').val()
+            } else {
+                contractBeginTime_cheng = $('#contractBeginTime').val()
             }
-            if(dateUtil.compareDate(max, $('#contractEndTime').val())){
+            if (dateUtil.compareDate(max, $('#contractEndTime').val())) {
                 layer.msg("合同的时间必须小于待充值的开始时间")
                 $('#contractEndTime').val(contractEndTime_cheng);
                 return false;
-            }else{
-                contractEndTime_cheng=$('#contractEndTime').val()
+            } else {
+                contractEndTime_cheng = $('#contractEndTime').val()
             }
 
         }
+        laydate.render({
+            elem: '#contractTime' //指定元素
+        });
         laydate.render({
             elem: '#contractBeginTime_not' //指定元素
         });
@@ -500,13 +535,13 @@
             admin.req('api-opration/productorderdetail/getContractBeginEndTimeAndNum', { departmentId: departmentId },
                 function (data) {
                     if (data.code == 0) {
-                        if(data.data.beginTime==undefined){
+                        if (data.data.beginTime == undefined) {
                             $("#contractBeginTime_not").hide();
                             $("#contractEndTime_not").hide();
                             $("#contractBeginTime_not_heng").hide();
                             $("#contractNum_not").hide();
                             form.render();
-                        }else{
+                        } else {
                             $("#contractBeginTime_not").val(layui.util.toDateString(data.data.beginTime, "yyyy-MM-dd"));
                             $("#contractEndTime_not").val(layui.util.toDateString(data.data.endTime, "yyyy-MM-dd"));
                             $("#contractBeginTime").val(layui.util.toDateString(data.data.beginTime, "yyyy-MM-dd"));
@@ -529,7 +564,41 @@
                                 minutes: layui.util.toDateString(data.data.endTime, "mm"),
                                 seconds: layui.util.toDateString(data.data.endTime, "ss")
                             }
-                        $("#contractNum_not").val(data.data.count);
+                            //自定义的时间段  开始时间进行限制
+                            custom_beginTimes.config.min = {
+                                year: layui.util.toDateString(data.data.beginTime, "yyyy"),
+                                month: layui.util.toDateString(data.data.beginTime, "MM") - 1,//关键
+                                date: layui.util.toDateString(data.data.beginTime, "dd"),
+                                hours: layui.util.toDateString(data.data.beginTime, "HH"),
+                                minutes: layui.util.toDateString(data.data.beginTime, "mm"),
+                                seconds: layui.util.toDateString(data.data.beginTime, "ss")
+                            }
+                            custom_beginTimes.config.max = {
+                                year: layui.util.toDateString(data.data.endTime, "yyyy"),
+                                month: layui.util.toDateString(data.data.endTime, "MM") - 1,//关键
+                                date: layui.util.toDateString(data.data.endTime, "dd"),
+                                hours: layui.util.toDateString(data.data.endTime, "HH"),
+                                minutes: layui.util.toDateString(data.data.endTime, "mm"),
+                                seconds: layui.util.toDateString(data.data.endTime, "ss")
+                            }
+                            //自定义的时间段  结束时间进行限制
+                            custom_endTimes.config.min = {
+                                year: layui.util.toDateString(data.data.beginTime, "yyyy"),
+                                month: layui.util.toDateString(data.data.beginTime, "MM") - 1,//关键
+                                date: layui.util.toDateString(data.data.beginTime, "dd"),
+                                hours: layui.util.toDateString(data.data.beginTime, "HH"),
+                                minutes: layui.util.toDateString(data.data.beginTime, "mm"),
+                                seconds: layui.util.toDateString(data.data.beginTime, "ss")
+                            }
+                            custom_endTimes.config.max = {
+                                year: layui.util.toDateString(data.data.endTime, "yyyy"),
+                                month: layui.util.toDateString(data.data.endTime, "MM") - 1,//关键
+                                date: layui.util.toDateString(data.data.endTime, "dd"),
+                                hours: layui.util.toDateString(data.data.endTime, "HH"),
+                                minutes: layui.util.toDateString(data.data.endTime, "mm"),
+                                seconds: layui.util.toDateString(data.data.endTime, "ss")
+                            }
+                            $("#contractNum_not").val(data.data.count);
                         }
                     }
 
@@ -681,7 +750,7 @@
                 var listNum = 0;
                 if (!strUtil.isEmpty(listData)) {
                     listData.forEach(item => {
-                        if(item.proType==1){
+                        if (item.proType == 1) {
                             listNum += item.ailightCount;
                         }
                     })
@@ -693,7 +762,7 @@
                 } else {
                     contractNum = $("#contractNum").val();
                     //将自定义的读片量赋值
-                    $("#custom_ailightCount").val($("#contractNum").val()-listNum);
+                    $("#custom_ailightCount").val($("#contractNum").val() - listNum);
                 }
             })
             //自定义的确定
@@ -806,14 +875,14 @@
                 //将所选的时间不得大于  合同的时间
                 var contractBeginTime = $("#contractBeginTime").val();
                 var contractEndTime = $("#contractEndTime").val();
-                if (!strUtil.isEmpty(data.beginTime)){
-                    if (dateUtil.compareDate( contractBeginTime,data.beginTime)) {
+                if (!strUtil.isEmpty(data.beginTime)) {
+                    if (dateUtil.compareDate(contractBeginTime, data.beginTime)) {
                         layer.msg("开始时间必须大于合同的开始时间!");
                         return false;
                     }
                 }
-                if (!strUtil.isEmpty(data.endTime)){
-                    if (dateUtil.compareDate(data.endTime,contractEndTime)) {
+                if (!strUtil.isEmpty(data.endTime)) {
+                    if (dateUtil.compareDate(data.endTime, contractEndTime)) {
                         layer.msg("结束时间必须小于合同的结束时间!");
                         return false;
                     }
@@ -837,17 +906,17 @@
             }
         });
         //将自定义的数量重新赋值
-        function zidingyiNum(){
+        function zidingyiNum() {
             var listData = admin.getTempData("t_tempProduct");
             var listNum = 0;
             if (!strUtil.isEmpty(listData)) {
                 listData.forEach(item => {
-                    if(item.proType==1){
+                    if (item.proType == 1) {
                         listNum += item.ailightCount;
                     }
                 })
             }
-            $("#custom_ailightCount").val($("#contractNum").val()-listNum);     
+            $("#custom_ailightCount").val($("#contractNum").val() - listNum);
         }
         function isthenNum(num) {
             if (num <= 0) {
@@ -857,7 +926,7 @@
             var listNum = 0;
             if (!strUtil.isEmpty(listData)) {
                 listData.forEach(item => {
-                    if(item.proType==1){
+                    if (item.proType == 1) {
                         listNum += item.ailightCount;
                     }
                 })
@@ -950,120 +1019,122 @@
                 layer.load(2);
                 var listData = admin.getTempData("t_tempProduct");
                 // if (listData != null) {
-                    var count= 0;
-                    if(listData!=null){
-                        listData.forEach(element => {
-                            if(element.proType==1){
-                                count+=element.ailightCount;
-                            }
-                        });
-                    }
-                    if(count!=data.field.contractNum){
-                        layer.closeAll('loading');
-                        layer.msg("合同读片充值量与套餐充值量不一致")
-                        return false;
-                    }
-                    if (data.field != null) {
-                        var len=listData!=null&&listData.length>0 ? listData.length : 0
-                        layer.confirm("确定要将待充值列表中的" + len + "个产品充值给当前医院的科室吗?", {
-                            btn: ["确定", "返回"]
-                        }, function () {
-                            isRun = true;
-                            data.field.contractBeginTime = data.field.contractBeginTime +
-                                " 00:00:00";
-                            data.field.contractEndTime = data.field.contractEndTime +
-                                " 23:59:59";
-                            // data.field.contractTime = data.field.contractTime + " 00:00:00";
-                            delete data.field.contractNum_not
-                            delete data.field.contractBeginTime_not
-                            delete data.field.contractEndTime_not
-                            admin.req('api-opration/contract', JSON.stringify(data.field),
-                                function (data) {
-                                    layer.closeAll('loading');
-                                    if (data.code === 0) {
-                                        var orderData = data.data;
-                                        //处理订单明细数据
-                                        var listDetailData = new Array();
-                                        $.each(listData, function (index, item) {
-                                            var detailData = {
-                                                orderId: orderData.id + '',
-                                                proId: item.termType == null ? item.id + '' : "0",
-                                                proType: item.proType,
-                                                proName: item.proName,
-                                                isShare: item.isShare,
-                                                ailightCount: item.ailightCount != null ? item.ailightCount : 0,
-                                                recordCount: item.recordCount != null ? item.recordCount : 0,
-                                                termType: item.termType,
-                                                proBegintime: item.beginTime != "" ? item.beginTime +
-                                                    ' 00:00:00' : "",
-                                                proEndtime: item.endTime != "" ? item.endTime +
-                                                    ' 00:00:00' : "",
-                                                orderAilightCount: item.ailightCount,
-                                                orderRecordCount: item.recordCount != null ? item.recordCount : 0,
-                                            };
-                                            listDetailData.push(detailData);
-                                        })
+                var count = 0;
+                if (listData != null) {
+                    listData.forEach(element => {
+                        if (element.proType == 1) {
+                            count += element.ailightCount;
+                        }
+                    });
+                }
+                if (count != data.field.contractNum) {
+                    layer.closeAll('loading');
+                    layer.msg("合同读片充值量与套餐充值量不一致")
+                    return false;
+                }
+                if (data.field != null) {
+                    var len = listData != null && listData.length > 0 ? listData.length : 0
+                    layer.confirm("确定要将待充值列表中的" + len + "个产品充值给当前医院的科室吗?", {
+                        btn: ["确定", "返回"]
+                    }, function () {
+                        isRun = true;
+                        data.field.contractBeginTime = data.field.contractBeginTime +
+                            " 00:00:00";
+                        data.field.contractEndTime = data.field.contractEndTime +
+                            " 23:59:59";
+                        data.field.contractTime = data.field.contractTime +
+                            " 00:00:00";
+                        // data.field.contractTime = data.field.contractTime + " 00:00:00";
+                        delete data.field.contractNum_not
+                        delete data.field.contractBeginTime_not
+                        delete data.field.contractEndTime_not
+                        admin.req('api-opration/contract', JSON.stringify(data.field),
+                            function (data) {
+                                layer.closeAll('loading');
+                                if (data.code === 0) {
+                                    var orderData = data.data;
+                                    //处理订单明细数据
+                                    var listDetailData = new Array();
+                                    $.each(listData, function (index, item) {
+                                        var detailData = {
+                                            orderId: orderData.id + '',
+                                            proId: item.termType == null ? item.id + '' : "0",
+                                            proType: item.proType,
+                                            proName: item.proName,
+                                            isShare: item.isShare,
+                                            ailightCount: item.ailightCount != null ? item.ailightCount : 0,
+                                            recordCount: item.recordCount != null ? item.recordCount : 0,
+                                            termType: item.termType,
+                                            proBegintime: item.beginTime != "" ? item.beginTime +
+                                                ' 00:00:00' : "",
+                                            proEndtime: item.endTime != "" ? item.endTime +
+                                                ' 00:00:00' : "",
+                                            orderAilightCount: item.ailightCount,
+                                            orderRecordCount: item.recordCount != null ? item.recordCount : 0,
+                                        };
+                                        listDetailData.push(detailData);
+                                    })
 
-                                        if (listDetailData.length <=0) {
-                                            var detailData = {
-                                                orderId: orderData.id + '',
-                                                proId:  "0",
-                                                proType: 1,
-                                                proName: "软件服务周期",
-                                                isShare: 0,
-                                                ailightCount:  0,
-                                                recordCount: 0,
-                                                proBegintime: $("#contractBeginTime").val()+' 00:00:00' ,
-                                                proEndtime: $("#contractEndTime").val()+' 00:00:00' ,
-                                                orderAilightCount: 0,
-                                                orderRecordCount: 0,
-                                            };
-                                            listDetailData.push(detailData)
-                                        } 
-                                            //提交订单数据
-                                            admin.req(
-                                                'api-opration/productorderdetail/saveall',
-                                                JSON.stringify(listDetailData),
-                                                function (data) {
-                                                    isRun = false;
-                                                    layer.closeAll('loading');
-                                                    if (data.code === 0) {
-                                                        //现将临时数据清理
-                                                        admin.putTempData(
-                                                            "t_tempProduct",
-                                                            "");
-                                                        layer.msg(data.msg, {
-                                                            icon: 1,
-                                                            time: 2000
-                                                        }, function () {
-                                                            admin
-                                                                .finishPopupCenter();
-                                                        });
-                                                    } else {
-                                                        layer.msg(data.msg, {
-                                                            icon: 2,
-                                                            time: 1000
-                                                        });
-                                                    }
-                                                }, 'POST');
-                                            // layer.closeAll();
-                                            // layer.msg("充值数据成功!");
-                                            // isRun = false;
-                                    } else {
-                                        layer.msg(data.msg, {
-                                            icon: 2,
-                                            time: 1000
-                                        });
-                                        isRun = false;
+                                    if (listDetailData.length <= 0) {
+                                        var detailData = {
+                                            orderId: orderData.id + '',
+                                            proId: "0",
+                                            proType: 1,
+                                            proName: "软件服务周期",
+                                            isShare: 0,
+                                            ailightCount: 0,
+                                            recordCount: 0,
+                                            proBegintime: $("#contractBeginTime").val() + ' 00:00:00',
+                                            proEndtime: $("#contractEndTime").val() + ' 00:00:00',
+                                            orderAilightCount: 0,
+                                            orderRecordCount: 0,
+                                        };
+                                        listDetailData.push(detailData)
                                     }
-                                }, 'POST');
-                        })
-                    } else {
-                        layer.msg("数据异常!", {
-                            icon: 2,
-                            time: 1000
-                        });
-                    }
+                                    //提交订单数据
+                                    admin.req(
+                                        'api-opration/productorderdetail/saveall',
+                                        JSON.stringify(listDetailData),
+                                        function (data) {
+                                            isRun = false;
+                                            layer.closeAll('loading');
+                                            if (data.code === 0) {
+                                                //现将临时数据清理
+                                                admin.putTempData(
+                                                    "t_tempProduct",
+                                                    "");
+                                                layer.msg(data.msg, {
+                                                    icon: 1,
+                                                    time: 2000
+                                                }, function () {
+                                                    admin
+                                                        .finishPopupCenter();
+                                                });
+                                            } else {
+                                                layer.msg(data.msg, {
+                                                    icon: 2,
+                                                    time: 1000
+                                                });
+                                            }
+                                        }, 'POST');
+                                    // layer.closeAll();
+                                    // layer.msg("充值数据成功!");
+                                    // isRun = false;
+                                } else {
+                                    layer.msg(data.msg, {
+                                        icon: 2,
+                                        time: 1000
+                                    });
+                                    isRun = false;
+                                }
+                            }, 'POST');
+                    })
+                } else {
+                    layer.msg("数据异常!", {
+                        icon: 2,
+                        time: 1000
+                    });
+                }
                 // } else {
                 //     layer.msg("请先将要充值的产品加入待充值!", {
                 //         icon: 2,
diff --git a/pom.xml b/pom.xml
index b4fcfd1..d991724 100644
--- a/pom.xml
+++ b/pom.xml
@@ -431,11 +431,22 @@
                 <artifactId>easypoi-base</artifactId>
                 <version>${easypoi.version}</version>
             </dependency>
+<!--            <dependency>-->
+<!--                <groupId>cn.afterturn</groupId>-->
+<!--                <artifactId>easypoi-web</artifactId>-->
+<!--                <version>${easypoi.version}</version>-->
+<!--            </dependency>-->
+            <dependency>
+                <groupId>cn.afterturn</groupId>
+                <artifactId>easypoi-annotation</artifactId>
+                <version>${easypoi.version}</version>
+            </dependency>
             <dependency>
                 <groupId>org.modelmapper</groupId>
                 <artifactId>modelmapper</artifactId>
                 <version>${modle-mapper.version}</version>
             </dependency>
+
             <!-- swagger -->
             <dependency>
                 <groupId>io.springfox</groupId>

--
Gitblit v1.8.0