From d1f6a557ae1a7886aa6a54bd3923b3483db02a68 Mon Sep 17 00:00:00 2001
From: zhaoxiaohao <279049017@qq.com>
Date: Wed, 30 Dec 2020 20:26:25 +0800
Subject: [PATCH] Merge branch 'master' into dev

---
 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-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/ExcelUtils.java                       |  290 ++++++++++++++++++++
 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-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysHospitalMapper.xml                      |    2 
 pom.xml                                                                                                                         |   11 
 kidgrow-springcloud/kidgrow-springcloud-zuul/Dockerfile                                                                         |    4 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html                                |   30 +
 kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/excelModel/BackPatientOrderParam.java |   20 +
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html                                          |  353 +++++++++++++-----------
 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-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js                                                      |    2 
 18 files changed, 653 insertions(+), 178 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-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-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-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-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-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/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/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 129af3e..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"));
@@ -563,7 +598,7 @@
                                 minutes: layui.util.toDateString(data.data.endTime, "mm"),
                                 seconds: layui.util.toDateString(data.data.endTime, "ss")
                             }
-                        $("#contractNum_not").val(data.data.count);
+                            $("#contractNum_not").val(data.data.count);
                         }
                     }
 
@@ -715,7 +750,7 @@
                 var listNum = 0;
                 if (!strUtil.isEmpty(listData)) {
                     listData.forEach(item => {
-                        if(item.proType==1){
+                        if (item.proType == 1) {
                             listNum += item.ailightCount;
                         }
                     })
@@ -727,7 +762,7 @@
                 } else {
                     contractNum = $("#contractNum").val();
                     //将自定义的读片量赋值
-                    $("#custom_ailightCount").val($("#contractNum").val()-listNum);
+                    $("#custom_ailightCount").val($("#contractNum").val() - listNum);
                 }
             })
             //自定义的确定
@@ -840,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;
                     }
@@ -871,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) {
@@ -891,7 +926,7 @@
             var listNum = 0;
             if (!strUtil.isEmpty(listData)) {
                 listData.forEach(item => {
-                    if(item.proType==1){
+                    if (item.proType == 1) {
                         listNum += item.ailightCount;
                     }
                 })
@@ -984,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