Merge branch 'master' into dev
3 files added
15 files modified
| | |
| | | FROM openjdk:8-jdk-alpine |
| | | # 作者(可选) |
| | | MAINTAINER kidgrow |
| | | ##时区 |
| | | RUN echo "Asia/Shanghai" > /etc/timezone |
| | | # 删除无用组件 优化容器体积(可选) |
| | | RUN rm -rf /var/lib/apt/lists/* |
| | | # 创建jar包存放目录 |
| | |
| | | # copy当前工程jar包至容器内 |
| | | COPY ${JAR_FILE} /usr/local/kidgrow/app.jar |
| | | # 运行jar包 |
| | | ENTRYPOINT ["java","-Xms64m","-Xmx256m","-jar","/usr/local/kidgrow/app.jar"] |
| | | ENTRYPOINT ["java","-Xms64m","-Xmx1000m","-jar","/usr/local/kidgrow/app.jar"] |
| | |
| | | <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 >= #{p.createTimeBegin} |
| | | </if> |
| | | <if test="p.createTimeEnd != null and p.createTimeEnd !=''"> |
| | | and create_time <= #{p.createTimeEnd} |
| | | </if> |
| | | <if test="p.updateTime != null and p.updateTime !=''"> |
| | | and update_time = #{p.updateTime} |
| | | </if> |
| | |
| | | FROM openjdk:8-jdk-alpine |
| | | # 作者(可选) |
| | | MAINTAINER kidgrow |
| | | ##时区 |
| | | RUN echo "Asia/Shanghai" > /etc/timezone |
| | | # 删除无用组件 优化容器体积(可选) |
| | | RUN rm -rf /var/lib/apt/lists/* |
| | | # 创建jar包存放目录 |
| | |
| | | # copy当前工程jar包至容器内 |
| | | COPY ${JAR_FILE} /usr/local/kidgrow/app.jar |
| | | # 运行jar包 |
| | | ENTRYPOINT ["java","-Xms64m","-Xmx400m","-jar","/usr/local/kidgrow/app.jar"] |
| | | ENTRYPOINT ["java","-Xms64m","-Xmx600m","-jar","/usr/local/kidgrow/app.jar"] |
| | |
| | | */ |
| | | @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") |
| | | private Date healthEndTime; |
| | | |
| | | /** |
| | | * 部门联系人 |
| | | */ |
| | | private String departmentLink; |
| | | |
| | | /** |
| | | * 部门联系人 |
| | | */ |
| | | private String departmentTel; |
| | | |
| | | } |
| | |
| | | * 是否试用,true正式,false试用 |
| | | */ |
| | | private Boolean OrderType; |
| | | /** |
| | | * 部门联系人 |
| | | */ |
| | | private String departmentLink; |
| | | |
| | | /** |
| | | * 部门联系人 |
| | | */ |
| | | private String departmentTel; |
| | | } |
| | |
| | | DEP.is_del, |
| | | DEP.is_pay, |
| | | DEP.enabled, |
| | | DEP.department_link, |
| | | DEP.department_tel, |
| | | hospitals.* |
| | | FROM |
| | | sys_department DEP |
| | |
| | | FROM openjdk:8-jdk-alpine |
| | | # 作者(可选) |
| | | MAINTAINER kidgrow |
| | | ##时区 |
| | | RUN echo "Asia/Shanghai" > /etc/timezone |
| | | # 删除无用组件 优化容器体积(可选) |
| | | RUN rm -rf /var/lib/apt/lists/* |
| | | # 创建jar包存放目录 |
| | |
| | | # copy当前工程jar包至容器内 |
| | | COPY ${JAR_FILE} /usr/local/kidgrow/app.jar |
| | | # 运行jar包 |
| | | ENTRYPOINT ["java","-Xms64m","-Xmx400m","-jar","/usr/local/kidgrow/app.jar"] |
| | | ENTRYPOINT ["java","-Xms64m","-Xmx600m","-jar","/usr/local/kidgrow/app.jar"] |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
| | |
| | | FROM openjdk:8-jdk-alpine |
| | | # 作者(可选) |
| | | MAINTAINER kidgrow |
| | | ##时区 |
| | | RUN echo "Asia/Shanghai" > /etc/timezone |
| | | # 删除无用组件 优化容器体积(可选) |
| | | RUN rm -rf /var/lib/apt/lists/* |
| | | # 创建jar包存放目录 |
| | |
| | | # 接收指定内存 |
| | | ENV JAVA_OPTS=$JAVA_OPTS |
| | | # 运行jar包 |
| | | ENTRYPOINT ["java","-Xms64m","-Xmx256m","-jar","/usr/local/kidgrow/app.jar"] |
| | | ENTRYPOINT ["java","-Xms64m","-Xmx1000m","-jar","/usr/local/kidgrow/app.jar"] |
| | |
| | | # copy当前工程jar包至容器内 |
| | | COPY ${JAR_FILE} /usr/local/kidgrow/app.jar |
| | | # 运行jar包 |
| | | ENTRYPOINT ["java","-Xms64m","-Xmx256m","-jar","/usr/local/kidgrow/app.jar"] |
| | | ENTRYPOINT ["java","-Xms64m","-Xmx600m","-jar","/usr/local/kidgrow/app.jar"] |
| | |
| | | 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) |
| | |
| | | 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()) |
| | | } |
| | | } |
| | | }); |
| | | |
| | | // 渲染表格 |
| | |
| | | { 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); |
| | | } |
| | |
| | | // 搜索按钮点击事件 |
| | | $('#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) { |
| | |
| | | }, |
| | | { |
| | | field: 'hospitalLink', |
| | | width: "6%", |
| | | width: "7%", |
| | | title: '联系人' |
| | | }, |
| | | { |
| | |
| | | title: '联系方式' |
| | | }, |
| | | { |
| | | field: 'departmentLink', |
| | | width: "6%", |
| | | title: '科室联系人' |
| | | }, |
| | | { |
| | | field: 'departmentTel', |
| | | width: "8%", |
| | | title: '科室联系方式' |
| | | }, |
| | | { |
| | | field: 'orderType', width: 80, title: '状态', templet: function (d) { |
| | | if(d.orderType==null){ |
| | | return ""; |
| | |
| | | </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"> |
| | |
| | |  </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> |
| | |
| | | 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) { |
| | |
| | | $("#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] |
| | |
| | | <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 |
| | |
| | | </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> |
| | |
| | | <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> |
| | |
| | | <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="请输开始时间" |
| | |
| | | //充值进行中 |
| | | 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(); |
| | |
| | | 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()) |
| | |
| | | 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,//关键 |
| | |
| | | } |
| | | } |
| | | }); |
| | | 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' //指定元素 |
| | | }); |
| | |
| | | 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")); |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | |
| | | var listNum = 0; |
| | | if (!strUtil.isEmpty(listData)) { |
| | | listData.forEach(item => { |
| | | if(item.proType==1){ |
| | | if (item.proType == 1) { |
| | | listNum += item.ailightCount; |
| | | } |
| | | }) |
| | |
| | | } else { |
| | | contractNum = $("#contractNum").val(); |
| | | //将自定义的读片量赋值 |
| | | $("#custom_ailightCount").val($("#contractNum").val()-listNum); |
| | | $("#custom_ailightCount").val($("#contractNum").val() - listNum); |
| | | } |
| | | }) |
| | | //自定义的确定 |
| | |
| | | //将所选的时间不得大于 合同的时间 |
| | | 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; |
| | | } |
| | |
| | | } |
| | | }); |
| | | //将自定义的数量重新赋值 |
| | | 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) { |
| | |
| | | var listNum = 0; |
| | | if (!strUtil.isEmpty(listData)) { |
| | | listData.forEach(item => { |
| | | if(item.proType==1){ |
| | | if (item.proType == 1) { |
| | | listNum += item.ailightCount; |
| | | } |
| | | }) |
| | |
| | | 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, |
| | |
| | | <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> |