瀏覽代碼

智能问诊日志

gaodm 5 年之前
父節點
當前提交
0bdca1b07b
共有 26 個文件被更改,包括 1404 次插入1 次删除
  1. 8 1
      docs/030.20200208智能问诊等日志记录/znwz_add.sql
  2. 5 0
      znwz-service/pom.xml
  3. 88 0
      znwz-service/src/main/java/com/diagbot/aggregate/OptAggregate.java
  4. 106 0
      znwz-service/src/main/java/com/diagbot/aggregate/OptHospAggregate.java
  5. 18 0
      znwz-service/src/main/java/com/diagbot/dto/HospNameDTO.java
  6. 22 0
      znwz-service/src/main/java/com/diagbot/dto/OptDTO.java
  7. 25 0
      znwz-service/src/main/java/com/diagbot/dto/OptHospDTO.java
  8. 16 0
      znwz-service/src/main/java/com/diagbot/dto/PVDTO.java
  9. 18 0
      znwz-service/src/main/java/com/diagbot/dto/PVHospDTO.java
  10. 17 0
      znwz-service/src/main/java/com/diagbot/dto/PVHospSumDTO.java
  11. 16 0
      znwz-service/src/main/java/com/diagbot/dto/UVDTO.java
  12. 18 0
      znwz-service/src/main/java/com/diagbot/dto/UVHospDTO.java
  13. 17 0
      znwz-service/src/main/java/com/diagbot/dto/UVHospSumDTO.java
  14. 16 0
      znwz-service/src/main/java/com/diagbot/dto/ZZDTO.java
  15. 18 0
      znwz-service/src/main/java/com/diagbot/dto/ZZHospDTO.java
  16. 17 0
      znwz-service/src/main/java/com/diagbot/dto/ZZHospSumDTO.java
  17. 121 0
      znwz-service/src/main/java/com/diagbot/entity/OptInfo.java
  18. 15 0
      znwz-service/src/main/java/com/diagbot/facade/InquiryInfoFacade.java
  19. 125 0
      znwz-service/src/main/java/com/diagbot/facade/OptInfoFacade.java
  20. 53 0
      znwz-service/src/main/java/com/diagbot/mapper/OptInfoMapper.java
  21. 55 0
      znwz-service/src/main/java/com/diagbot/service/OptInfoService.java
  22. 83 0
      znwz-service/src/main/java/com/diagbot/service/impl/OptInfoServiceImpl.java
  23. 67 0
      znwz-service/src/main/java/com/diagbot/vo/OptSaveVO.java
  24. 28 0
      znwz-service/src/main/java/com/diagbot/vo/OptVO.java
  25. 69 0
      znwz-service/src/main/java/com/diagbot/web/OptInfoController.java
  26. 363 0
      znwz-service/src/main/resources/mapper/OptInfoMapper.xml

+ 8 - 1
docs/030.20200208智能问诊等日志记录/znwz_add.sql

@@ -9,9 +9,16 @@ CREATE TABLE `znwz_opt_info` (
   `creator` varchar(20) NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
   `modifier` varchar(20) NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
   `app_id` varchar(64) DEFAULT NULL COMMENT '公众号appid',
+  `organ_name` varchar(64) DEFAULT NULL COMMENT '医院名称',
+  `department` varchar(64) DEFAULT NULL COMMENT '医生所在科室名称',
+  `doctor_id` varchar(64) DEFAULT NULL COMMENT '医生ID',
+  `doctor_name` varchar(64) DEFAULT NULL COMMENT '医生名称',
   `mpi_id` varchar(64) DEFAULT NULL COMMENT '用户在纳里的ID',
+  `patient_name` varchar(64) DEFAULT NULL COMMENT '用户名称',
+  `patient_age` int(2) DEFAULT NULL COMMENT '用户年龄',
+  `patient_sex` varchar(2) DEFAULT NULL COMMENT '用户性别',
   `ip` varchar(100) NOT NULL DEFAULT '' COMMENT '访问者的IP',
-  `from` varchar(10) DEFAULT NULL COMMENT '链接来源 (1:问诊2:挂号3:自诊)',
+  `source` varchar(10) DEFAULT NULL COMMENT '链接来源 (1:问诊2:挂号3:自诊)',
   `opt_type` varchar(10) DEFAULT NULL COMMENT '操作类型:1 开始,2 结束',
   `remark` varchar(128) DEFAULT NULL COMMENT '备注',
   PRIMARY KEY (`id`)

+ 5 - 0
znwz-service/pom.xml

@@ -154,6 +154,11 @@
             <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>io.github.lvyahui8</groupId>
+            <artifactId>spring-boot-data-aggregator-starter</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 88 - 0
znwz-service/src/main/java/com/diagbot/aggregate/OptAggregate.java

@@ -0,0 +1,88 @@
+package com.diagbot.aggregate;
+
+import com.diagbot.dto.OptDTO;
+import com.diagbot.dto.PVDTO;
+import com.diagbot.dto.UVDTO;
+import com.diagbot.dto.ZZDTO;
+import com.diagbot.facade.OptInfoFacade;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.OptVO;
+import io.github.lvyahui8.spring.annotation.DataConsumer;
+import io.github.lvyahui8.spring.annotation.DataProvider;
+import io.github.lvyahui8.spring.annotation.InvokeParameter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 10:38
+ */
+@Component
+public class OptAggregate {
+    @Autowired
+    private OptInfoFacade optInfoFacade;
+
+    @DataProvider("getAllOptSum")
+    public OptDTO getAllOptSum(
+            @InvokeParameter("optVO") OptVO optVO,
+            @DataConsumer("getPV") List<PVDTO> pvdtoList,
+            @DataConsumer("getPVSum") Long pvSum,
+            @DataConsumer("getUV") List<UVDTO> uvdtoList,
+            @DataConsumer("getUVSum") Long uvSum,
+            @DataConsumer("getZZ") List<ZZDTO> zzdtoList,
+            @DataConsumer("getZZSum") Long zzSum) {
+        OptDTO optDTO = new OptDTO();
+        if (ListUtil.isNotEmpty(pvdtoList)) {
+            optDTO.setPvdto(pvdtoList);
+        }
+        if (null != pvSum) {
+            optDTO.setPvSum(pvSum);
+        }
+        if (ListUtil.isNotEmpty(uvdtoList)) {
+            optDTO.setUvdto(uvdtoList);
+        }
+        if (null != uvSum) {
+            optDTO.setUvSum(uvSum);
+        }
+        if (ListUtil.isNotEmpty(zzdtoList)) {
+            optDTO.setZzdto(zzdtoList);
+        }
+        if (null != zzSum) {
+            optDTO.setZzSum(zzSum);
+        }
+        return optDTO;
+    }
+
+    @DataProvider("getPV")
+    public List<PVDTO> getPV(@InvokeParameter("optVO") OptVO optVO) {
+        return optInfoFacade.getPV(optVO);
+    }
+
+    @DataProvider("getPVSum")
+    public Long getPVSum(@InvokeParameter("optVO") OptVO optVO) {
+        return optInfoFacade.getPVSum(optVO);
+    }
+
+    @DataProvider("getUV")
+    public List<UVDTO> getUV(@InvokeParameter("optVO") OptVO optVO) {
+        return optInfoFacade.getUV(optVO);
+    }
+
+    @DataProvider("getUVSum")
+    public Long getUVSum(@InvokeParameter("optVO") OptVO optVO) {
+        return optInfoFacade.getUVSum(optVO);
+    }
+
+    @DataProvider("getZZ")
+    public List<ZZDTO> getZZ(@InvokeParameter("optVO") OptVO optVO) {
+        return optInfoFacade.getZZ(optVO);
+    }
+
+    @DataProvider("getZZSum")
+    public Long getZZSum(@InvokeParameter("optVO") OptVO optVO) {
+        return optInfoFacade.getZZSum(optVO);
+    }
+}

+ 106 - 0
znwz-service/src/main/java/com/diagbot/aggregate/OptHospAggregate.java

@@ -0,0 +1,106 @@
+package com.diagbot.aggregate;
+
+import com.diagbot.dto.OptHospDTO;
+import com.diagbot.dto.PVHospDTO;
+import com.diagbot.dto.PVHospSumDTO;
+import com.diagbot.dto.UVHospDTO;
+import com.diagbot.dto.UVHospSumDTO;
+import com.diagbot.dto.ZZHospDTO;
+import com.diagbot.dto.ZZHospSumDTO;
+import com.diagbot.facade.OptInfoFacade;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.OptVO;
+import io.github.lvyahui8.spring.annotation.DataConsumer;
+import io.github.lvyahui8.spring.annotation.DataProvider;
+import io.github.lvyahui8.spring.annotation.InvokeParameter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 10:38
+ */
+@Component
+public class OptHospAggregate {
+    @Autowired
+    private OptInfoFacade optInfoFacade;
+
+    @DataProvider("getAllOptSumHosp")
+    public OptHospDTO getAllOptSumHosp(
+            @InvokeParameter("optVO") OptVO optVO,
+            @DataConsumer("getPVHosp") List<PVHospDTO> pvHospDto,
+            @DataConsumer("getPVSumHosp") List<PVHospSumDTO> pvHospSumDto,
+            @DataConsumer("getUVHosp") List<UVHospDTO> uvHospDto,
+            @DataConsumer("getUVSumHosp") List<UVHospSumDTO> uvHospSumDto,
+            @DataConsumer("getZZHosp") List<ZZHospDTO> zzHospDto,
+            @DataConsumer("getZZSumHosp") List<ZZHospSumDTO> zzHospSumDto) {
+        OptHospDTO optHospDTO = new OptHospDTO();
+        if (ListUtil.isNotEmpty(pvHospDto)) {
+            optHospDTO.setPvHospDto(pvHospDto);
+        }
+        if (ListUtil.isNotEmpty(pvHospSumDto)) {
+            optHospDTO.setPvHospSumDto(pvHospSumDto);
+            Long pvSum = 0L;
+            for (PVHospSumDTO pvHospSumDTO : pvHospSumDto) {
+                pvSum += pvHospSumDTO.getPvSum();
+            }
+            optHospDTO.setPvSum(pvSum);
+        }
+        if (ListUtil.isNotEmpty(uvHospDto)) {
+            optHospDTO.setUvHospDto(uvHospDto);
+        }
+        if (ListUtil.isNotEmpty(uvHospSumDto)) {
+            optHospDTO.setUvHospSumDto(uvHospSumDto);
+            Long uvSum = 0L;
+            for (UVHospSumDTO uvHospSumDTO : uvHospSumDto) {
+                uvSum += uvHospSumDTO.getUvSum();
+            }
+            optHospDTO.setUvSum(uvSum);
+        }
+        if (ListUtil.isNotEmpty(zzHospDto)) {
+            optHospDTO.setZzHospDto(zzHospDto);
+        }
+        if (ListUtil.isNotEmpty(zzHospSumDto)) {
+            optHospDTO.setZzHospSumDto(zzHospSumDto);
+            Long zzSum = 0L;
+            for (ZZHospSumDTO zzHospSumDTO : zzHospSumDto) {
+                zzSum += zzHospSumDTO.getZzSum();
+            }
+            optHospDTO.setZzSum(zzSum);
+        }
+        return optHospDTO;
+    }
+
+    @DataProvider("getPVHosp")
+    public List<PVHospDTO> getPVHosp(@InvokeParameter("optVO") OptVO optVO) {
+        return optInfoFacade.getPVHosp(optVO);
+    }
+
+    @DataProvider("getPVSumHosp")
+    public List<PVHospSumDTO> getPVSumHosp(@InvokeParameter("optVO") OptVO optVO) {
+        return optInfoFacade.getPVSumHosp(optVO);
+    }
+
+    @DataProvider("getUVHosp")
+    public List<UVHospDTO> getUVHosp(@InvokeParameter("optVO") OptVO optVO) {
+        return optInfoFacade.getUVHosp(optVO);
+    }
+
+    @DataProvider("getUVSumHosp")
+    public List<UVHospSumDTO> getUVSumHosp(@InvokeParameter("optVO") OptVO optVO) {
+        return optInfoFacade.getUVSumHosp(optVO);
+    }
+
+    @DataProvider("getZZHosp")
+    public List<ZZHospDTO> getZZHosp(@InvokeParameter("optVO") OptVO optVO) {
+        return optInfoFacade.getZZHosp(optVO);
+    }
+
+    @DataProvider("getZZSumHosp")
+    public List<ZZHospSumDTO> getZZSumHosp(@InvokeParameter("optVO") OptVO optVO) {
+        return optInfoFacade.getZZSumHosp(optVO);
+    }
+}

+ 18 - 0
znwz-service/src/main/java/com/diagbot/dto/HospNameDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 9:27
+ */
+@Getter
+@Setter
+public class HospNameDTO {
+    //医院名称
+    private List<String> hospitalCode;
+}

+ 22 - 0
znwz-service/src/main/java/com/diagbot/dto/OptDTO.java

@@ -0,0 +1,22 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 9:50
+ */
+@Getter
+@Setter
+public class OptDTO {
+    private List<PVDTO> pvdto;
+    private Long pvSum;
+    private List<UVDTO> uvdto;
+    private Long uvSum;
+    private List<ZZDTO> zzdto;
+    private Long zzSum;
+}

+ 25 - 0
znwz-service/src/main/java/com/diagbot/dto/OptHospDTO.java

@@ -0,0 +1,25 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 9:50
+ */
+@Getter
+@Setter
+public class OptHospDTO {
+    private List<PVHospDTO> pvHospDto;
+    private List<PVHospSumDTO> pvHospSumDto;
+    private Long pvSum;
+    private List<UVHospDTO> uvHospDto;
+    private List<UVHospSumDTO> uvHospSumDto;
+    private Long uvSum;
+    private List<ZZHospDTO> zzHospDto;
+    private List<ZZHospSumDTO> zzHospSumDto;
+    private Long zzSum;
+}

+ 16 - 0
znwz-service/src/main/java/com/diagbot/dto/PVDTO.java

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 9:27
+ */
+@Getter
+@Setter
+public class PVDTO {
+    private String days;
+    private Long pvCnt;
+}

+ 18 - 0
znwz-service/src/main/java/com/diagbot/dto/PVHospDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 9:27
+ */
+@Getter
+@Setter
+public class PVHospDTO {
+    //医院名称
+    private String hospitalCode;
+    private String days;
+    private Long pvCnt;
+}

+ 17 - 0
znwz-service/src/main/java/com/diagbot/dto/PVHospSumDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 9:27
+ */
+@Getter
+@Setter
+public class PVHospSumDTO {
+    //医院名称
+    private String hospitalCode;
+    private Long pvSum;
+}

+ 16 - 0
znwz-service/src/main/java/com/diagbot/dto/UVDTO.java

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 9:27
+ */
+@Getter
+@Setter
+public class UVDTO {
+    private String days;
+    private Long uvCnt;
+}

+ 18 - 0
znwz-service/src/main/java/com/diagbot/dto/UVHospDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 9:27
+ */
+@Getter
+@Setter
+public class UVHospDTO {
+    //医院名称
+    private String hospitalCode;
+    private String days;
+    private Long uvCnt;
+}

+ 17 - 0
znwz-service/src/main/java/com/diagbot/dto/UVHospSumDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 9:27
+ */
+@Getter
+@Setter
+public class UVHospSumDTO {
+    //医院名称
+    private String hospitalCode;
+    private Long uvSum;
+}

+ 16 - 0
znwz-service/src/main/java/com/diagbot/dto/ZZDTO.java

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 9:27
+ */
+@Getter
+@Setter
+public class ZZDTO {
+    private String days;
+    private Long zzCnt;
+}

+ 18 - 0
znwz-service/src/main/java/com/diagbot/dto/ZZHospDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 9:27
+ */
+@Getter
+@Setter
+public class ZZHospDTO {
+    //医院名称
+    private String hospitalCode;
+    private String days;
+    private Long zzCnt;
+}

+ 17 - 0
znwz-service/src/main/java/com/diagbot/dto/ZZHospSumDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 9:27
+ */
+@Getter
+@Setter
+public class ZZHospSumDTO {
+    //医院名称
+    private String hospitalCode;
+    private Long zzSum;
+}

+ 121 - 0
znwz-service/src/main/java/com/diagbot/entity/OptInfo.java

@@ -0,0 +1,121 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 操作信息
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-02-02
+ */
+@Getter
+@Setter
+@TableName("znwz_opt_info")
+public class OptInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+//    //医院编码
+//    private String hospitalCode;
+
+    /**
+     * 访问者的IP
+     */
+    private String ip;
+
+    /**
+     * 操作类型:1 开始,2 结束
+     */
+    private String optType;
+
+    /**
+     * 公众号appid
+     */
+    private String appId;
+
+    /**
+     * 医院名称
+     */
+    private String organName;
+
+    /**
+     * 医生所在科室名称
+     */
+    private String department;
+
+    /**
+     * 医生ID
+     */
+    private String doctorId;
+
+    /**
+     * 医生名称
+     */
+    private String doctorName;
+
+    /**
+     * 用户ID
+     */
+    private String mpiId;
+
+    /**
+     * 用户名称
+     */
+    private String patientName;
+
+    /**
+     * 用户年龄
+     */
+    private Integer patientAge;
+
+    /**
+     * 用户性别
+     */
+    private String patientSex;
+
+    /**
+     * 链接来源 (链接来源 (1:问诊2:挂号3:自诊))
+     */
+    private String source;
+
+}

+ 15 - 0
znwz-service/src/main/java/com/diagbot/facade/InquiryInfoFacade.java

@@ -5,6 +5,7 @@ import com.diagbot.entity.Client;
 import com.diagbot.entity.InquiryDetail;
 import com.diagbot.entity.InquiryInfo;
 import com.diagbot.entity.JSONResponseBean;
+import com.diagbot.entity.OptInfo;
 import com.diagbot.entity.Request;
 import com.diagbot.entity.Response;
 import com.diagbot.exception.CommonErrorCode;
@@ -13,6 +14,7 @@ import com.diagbot.service.impl.InquiryDetailServiceImpl;
 import com.diagbot.service.impl.InquiryInfoServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
+import com.diagbot.util.HttpUtils;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.SaveInquiryVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -45,6 +47,9 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
     @Value("${nali.appSecret}")
     private String appSecret;
 
+    @Autowired
+    private OptInfoFacade optInfoFacade;
+
     public SaveInquiryDTO saveInquiry(SaveInquiryVO saveInquiryVO) {
         SaveInquiryDTO saveInquiryDTO = new SaveInquiryDTO();
         String retUrl = null;
@@ -69,6 +74,16 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
         inquiryDetailService.saveBatch(inquiryDetailList);
 
         saveInquiryDTO.setBody(retUrl);
+
+        //记录日志
+        OptInfo optInfo = new OptInfo();
+        BeanUtil.copyProperties(saveInquiryVO, optInfo);
+        optInfo.setGmtModified(now);
+        optInfo.setGmtCreate(now);
+        optInfo.setIp(HttpUtils.getIpAddress());
+        optInfo.setSource(saveInquiryVO.getFrom());
+        optInfo.setOptType("2");
+        optInfoFacade.save(optInfo);
         return saveInquiryDTO;
     }
 

+ 125 - 0
znwz-service/src/main/java/com/diagbot/facade/OptInfoFacade.java

@@ -0,0 +1,125 @@
+package com.diagbot.facade;
+
+import com.diagbot.dto.HospNameDTO;
+import com.diagbot.dto.OptDTO;
+import com.diagbot.dto.OptHospDTO;
+import com.diagbot.entity.OptInfo;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.impl.OptInfoServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.HttpUtils;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.OptSaveVO;
+import com.diagbot.vo.OptVO;
+import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/2 15:52
+ */
+@Component
+public class OptInfoFacade extends OptInfoServiceImpl {
+    @Autowired
+    DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade;
+    @Autowired
+    private OptInfoFacade optInfoFacade;
+
+    public Boolean saveOptOnfo(OptSaveVO optSaveVO, String optType) {
+        OptInfo optInfo = new OptInfo();
+        BeanUtil.copyProperties(optSaveVO, optInfo);
+        Date now = DateUtil.now();
+        optInfo.setGmtModified(now);
+        optInfo.setGmtCreate(now);
+        optInfo.setIp(HttpUtils.getIpAddress());
+        optInfo.setOptType(optType);
+        Boolean res = this.save(optInfo);
+        return res;
+    }
+
+    public OptDTO getOptSum(OptVO optVO) {
+        //入参验证
+        if (null != optVO && null != optVO.getStartDate()) {
+            optVO.setStartDate(DateUtil.getFirstTimeOfDay(optVO.getStartDate()));
+        }
+        if (null != optVO && null != optVO.getEndDate()) {
+            optVO.setEndDate(DateUtil.getLastTimeOfDay(optVO.getEndDate()));
+        }
+
+        if (null != optVO && null != optVO.getStartDate() && null != optVO.getEndDate()) {
+            if (DateUtil.after(optVO.getStartDate(), optVO.getEndDate())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "开始时间大于结束时间!");
+            }
+        }
+
+        //获取统计数据
+        OptDTO optDTO = new OptDTO();
+
+        try {
+            Map<String, Object> invokeParams = new HashMap<>();
+            invokeParams.put("optVO", optVO);
+            optDTO
+                    = dataBeanAggregateQueryFacade.get("getAllOptSum", invokeParams, OptDTO.class);
+        } catch (Exception e) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
+        }
+        //        optDTO.setPvdto(this.getPV(optVO));
+        //        optDTO.setPvSum(this.getPVSum(optVO));
+        //        optDTO.setUvdto(this.getUV(optVO));
+        //        optDTO.setUvSum(this.getUVSum(optVO));
+        //        optDTO.setZzdto(this.getZZ(optVO));
+        //        optDTO.setZzSum(this.getZZSum(optVO));
+        return optDTO;
+    }
+
+
+
+    public OptHospDTO getOptSumHosp(OptVO optVO) {
+        //入参验证
+        if (null != optVO && null != optVO.getStartDate()) {
+            optVO.setStartDate(DateUtil.getFirstTimeOfDay(optVO.getStartDate()));
+        }
+        if (null != optVO && null != optVO.getEndDate()) {
+            optVO.setEndDate(DateUtil.getLastTimeOfDay(optVO.getEndDate()));
+        }
+
+        if (null != optVO && null != optVO.getStartDate() && null != optVO.getEndDate()) {
+            if (DateUtil.after(optVO.getStartDate(), optVO.getEndDate())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "开始时间大于结束时间!");
+            }
+        }
+
+        //获取统计数据
+        OptHospDTO optHospDTO = new OptHospDTO();
+
+        try {
+            Map<String, Object> invokeParams = new HashMap<>();
+            invokeParams.put("optVO", optVO);
+            optHospDTO
+                    = dataBeanAggregateQueryFacade.get("getAllOptSumHosp", invokeParams, OptHospDTO.class);
+        } catch (Exception e) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
+        }
+
+        return optHospDTO;
+    }
+
+    public HospNameDTO getAllHospitalName(){
+        HospNameDTO hospNameDTO = new HospNameDTO();
+        List<String> hospitalList = optInfoFacade.getAllHospital();
+        if(ListUtil.isNotEmpty(hospitalList)){
+            hospNameDTO.setHospitalCode(hospitalList);
+        }
+        return hospNameDTO;
+    }
+}

+ 53 - 0
znwz-service/src/main/java/com/diagbot/mapper/OptInfoMapper.java

@@ -0,0 +1,53 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.dto.PVDTO;
+import com.diagbot.dto.PVHospDTO;
+import com.diagbot.dto.PVHospSumDTO;
+import com.diagbot.dto.UVDTO;
+import com.diagbot.dto.UVHospDTO;
+import com.diagbot.dto.UVHospSumDTO;
+import com.diagbot.dto.ZZDTO;
+import com.diagbot.dto.ZZHospDTO;
+import com.diagbot.dto.ZZHospSumDTO;
+import com.diagbot.entity.OptInfo;
+import com.diagbot.vo.OptVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 操作信息 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-02-02
+ */
+public interface OptInfoMapper extends BaseMapper<OptInfo> {
+    List<PVDTO> getPV(OptVO optVO);
+
+    Long getPVSum(OptVO optVO);
+
+    List<UVDTO> getUV(OptVO optVO);
+
+    Long getUVSum(OptVO optVO);
+
+    List<ZZDTO> getZZ(OptVO optVO);
+
+    Long getZZSum(OptVO optVO);
+
+    //医院合计
+    List<PVHospDTO> getPVHosp(OptVO optVO);
+
+    List<PVHospSumDTO> getPVSumHosp(OptVO optVO);
+
+    List<UVHospDTO> getUVHosp(OptVO optVO);
+
+    List<UVHospSumDTO> getUVSumHosp(OptVO optVO);
+
+    List<ZZHospDTO> getZZHosp(OptVO optVO);
+
+    List<ZZHospSumDTO> getZZSumHosp(OptVO optVO);
+
+    List<String> getAllHospital();
+}

+ 55 - 0
znwz-service/src/main/java/com/diagbot/service/OptInfoService.java

@@ -0,0 +1,55 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.dto.PVDTO;
+import com.diagbot.dto.PVHospDTO;
+import com.diagbot.dto.PVHospSumDTO;
+import com.diagbot.dto.UVDTO;
+import com.diagbot.dto.UVHospDTO;
+import com.diagbot.dto.UVHospSumDTO;
+import com.diagbot.dto.ZZDTO;
+import com.diagbot.dto.ZZHospDTO;
+import com.diagbot.dto.ZZHospSumDTO;
+import com.diagbot.entity.OptInfo;
+import com.diagbot.vo.OptVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 操作信息 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-02-02
+ */
+public interface OptInfoService extends IService<OptInfo> {
+
+    List<PVDTO> getPV(OptVO optVO);
+
+    Long getPVSum(OptVO optVO);
+
+    List<UVDTO> getUV(OptVO optVO);
+
+    Long getUVSum(OptVO optVO);
+
+    List<ZZDTO> getZZ(OptVO optVO);
+
+    Long getZZSum(OptVO optVO);
+
+    //医院合计
+    List<PVHospDTO> getPVHosp(OptVO optVO);
+
+    List<PVHospSumDTO> getPVSumHosp(OptVO optVO);
+
+    List<UVHospDTO> getUVHosp(OptVO optVO);
+
+    List<UVHospSumDTO> getUVSumHosp(OptVO optVO);
+
+    List<ZZHospDTO> getZZHosp(OptVO optVO);
+
+    List<ZZHospSumDTO> getZZSumHosp(OptVO optVO);
+
+    List<String> getAllHospital();
+
+}

+ 83 - 0
znwz-service/src/main/java/com/diagbot/service/impl/OptInfoServiceImpl.java

@@ -0,0 +1,83 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.dto.PVDTO;
+import com.diagbot.dto.PVHospDTO;
+import com.diagbot.dto.PVHospSumDTO;
+import com.diagbot.dto.UVDTO;
+import com.diagbot.dto.UVHospDTO;
+import com.diagbot.dto.UVHospSumDTO;
+import com.diagbot.dto.ZZDTO;
+import com.diagbot.dto.ZZHospDTO;
+import com.diagbot.dto.ZZHospSumDTO;
+import com.diagbot.entity.OptInfo;
+import com.diagbot.mapper.OptInfoMapper;
+import com.diagbot.service.OptInfoService;
+import com.diagbot.vo.OptVO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 操作信息 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-02-02
+ */
+@Service
+public class OptInfoServiceImpl extends ServiceImpl<OptInfoMapper, OptInfo> implements OptInfoService {
+    public List<PVDTO> getPV(OptVO optVO) {
+        return this.baseMapper.getPV(optVO);
+    }
+
+    public Long getPVSum(OptVO optVO) {
+        return this.baseMapper.getPVSum(optVO);
+    }
+
+    public List<UVDTO> getUV(OptVO optVO) {
+        return this.baseMapper.getUV(optVO);
+    }
+
+    public Long getUVSum(OptVO optVO) {
+        return this.baseMapper.getUVSum(optVO);
+    }
+
+    public List<ZZDTO> getZZ(OptVO optVO) {
+        return this.baseMapper.getZZ(optVO);
+    }
+
+    public Long getZZSum(OptVO optVO) {
+        return this.baseMapper.getZZSum(optVO);
+    }
+
+    //医院合计
+    public List<PVHospDTO> getPVHosp(OptVO optVO) {
+        return this.baseMapper.getPVHosp(optVO);
+    }
+
+    public List<PVHospSumDTO> getPVSumHosp(OptVO optVO) {
+        return this.baseMapper.getPVSumHosp(optVO);
+    }
+
+    public List<UVHospDTO> getUVHosp(OptVO optVO) {
+        return this.baseMapper.getUVHosp(optVO);
+    }
+
+    public List<UVHospSumDTO> getUVSumHosp(OptVO optVO) {
+        return this.baseMapper.getUVSumHosp(optVO);
+    }
+
+    public List<ZZHospDTO> getZZHosp(OptVO optVO) {
+        return this.baseMapper.getZZHosp(optVO);
+    }
+
+    public List<ZZHospSumDTO> getZZSumHosp(OptVO optVO) {
+        return this.baseMapper.getZZSumHosp(optVO);
+    }
+
+    public List<String> getAllHospital(){
+        return this.baseMapper.getAllHospital();
+    }
+}

+ 67 - 0
znwz-service/src/main/java/com/diagbot/vo/OptSaveVO.java

@@ -0,0 +1,67 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/5 12:44
+ */
+@Getter
+@Setter
+public class OptSaveVO {
+    //医院编码
+    //    @NotBlank(message = "请输入医院信息")
+    //    private String hospitalCode = "朗通通用";
+
+    /**
+     * 公众号appid
+     */
+    private String appId;
+
+    /**
+     * 医院名称
+     */
+    private String organName;
+
+    /**
+     * 医生所在科室名称
+     */
+    private String department;
+
+    /**
+     * 医生ID
+     */
+    private String doctorId;
+
+    /**
+     * 医生名称
+     */
+    private String doctorName;
+
+    /**
+     * 用户ID
+     */
+    private String mpiId;
+
+    /**
+     * 用户名称
+     */
+    private String patientName;
+
+    /**
+     * 用户年龄
+     */
+    private Integer patientAge;
+
+    /**
+     * 用户性别
+     */
+    private String patientSex;
+
+    /**
+     * 链接来源 (链接来源 (1:问诊2:挂号3:自诊))
+     */
+    private String source;
+}

+ 28 - 0
znwz-service/src/main/java/com/diagbot/vo/OptVO.java

@@ -0,0 +1,28 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/3 9:21
+ */
+@Getter
+@Setter
+public class OptVO {
+//    //医院名称
+//    private String hospitalCode;
+    //开始时间
+    @ApiModelProperty(value="开始时间,格式为:2018-11-28 17:25:30")
+    @DateTimeFormat(pattern="yyyy-MM-dd hh:mm:ss")
+    private Date startDate;
+    //结束时间
+    @ApiModelProperty(value="结束时间,格式为:2018-11-28 17:25:30")
+    @DateTimeFormat(pattern="yyyy-MM-dd hh:mm:ss")
+    private Date endDate;
+}

+ 69 - 0
znwz-service/src/main/java/com/diagbot/web/OptInfoController.java

@@ -0,0 +1,69 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.OptDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.OptInfoFacade;
+import com.diagbot.vo.OptSaveVO;
+import com.diagbot.vo.OptVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 操作信息 前端控制器
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-02-02
+ */
+@RestController
+@Api(value = "操作记录", tags = { "操作记录API" })
+@SuppressWarnings("unchecked")
+@RequestMapping("/optInfo")
+public class OptInfoController {
+    @Autowired
+    private OptInfoFacade optInfoFacade;
+
+    @ApiOperation(value = "操作记录保存[by:gaodm]")
+    @PostMapping("/saveOptInfo")
+    @SysLogger("saveOptInfo")
+    @Transactional
+    public RespDTO<Boolean> saveOptOnfo(@RequestBody OptSaveVO hospitalVO) {
+        return RespDTO.onSuc(optInfoFacade.saveOptOnfo(hospitalVO, "1"));
+    }
+
+    @ApiOperation(value = "获取合计数据不带医院名称[by:gaodm]",
+            notes = "startDate: 开始时间,Date<br>" +
+                    "endDate: 结束时间,Date<br>")
+    @PostMapping("/getOptSum")
+    @SysLogger("getOptSum")
+    public RespDTO<OptDTO> getOptSum(@RequestBody OptVO optVO) {
+        return RespDTO.onSuc(optInfoFacade.getOptSum(optVO));
+    }
+
+
+//    @ApiOperation(value = "获取合计数据带医院名称[by:gaodm]",
+//            notes = "hospitalCode: 医院名称,String<br>" +
+//                    "startDate: 开始时间,Date<br>" +
+//                    "endDate: 结束时间,Date<br>")
+//    @PostMapping("/getOptSumHosp")
+//    @SysLogger("getOptSumHosp")
+//    public RespDTO<OptHospDTO> getOptSumHosp(@RequestBody OptVO optVO) {
+//        return RespDTO.onSuc(optInfoFacade.getOptSumHosp(optVO));
+//    }
+//
+//    @ApiOperation(value = "获取所有医院名称[by:gaodm]",
+//            notes = "")
+//    @PostMapping("/getAllHospitalName")
+//    @SysLogger("getAllHospitalName")
+//    public RespDTO<HospNameDTO> getAllHospitalName() {
+//        return RespDTO.onSuc(optInfoFacade.getAllHospitalName());
+//    }
+}

+ 363 - 0
znwz-service/src/main/resources/mapper/OptInfoMapper.xml

@@ -0,0 +1,363 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.OptInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.OptInfo">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <!--<result column="hospital_code" property="hospitalCode" />-->
+        <result column="app_id" property="appId" />
+        <result column="organ_name" property="organName" />
+        <result column="department" property="department" />
+        <result column="doctor_id" property="doctorId" />
+        <result column="doctor_name" property="doctorName" />
+        <result column="mpi_id" property="mpiId" />
+        <result column="patient_name" property="patientName" />
+        <result column="patient_age" property="patientAge" />
+        <result column="patient_sex" property="patientSex" />
+        <result column="ip" property="ip" />
+        <result column="opt_type" property="optType" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+    <select id="getPV" parameterType="com.diagbot.vo.OptVO" resultType="com.diagbot.dto.PVDTO">
+        SELECT
+        DATE_FORMAT(gmt_create, '%Y-%m-%d') AS days,
+        count(1) AS pvCnt
+        FROM
+        znwz_opt_info
+        WHERE
+        opt_type = 1
+        <!--<if test="hospitalCode != null and hospitalCode != ''">-->
+          <!--AND hospital_code = #{hospitalCode}-->
+        <!--</if>-->
+        <if test="startDate!=null">
+          AND gmt_create &gt;= #{startDate}
+        </if>
+        <if test="endDate!=null">
+          AND gmt_create &lt;= #{endDate}
+        </if>
+        GROUP BY
+        DATE_FORMAT(gmt_create, '%Y-%m-%d')
+        ORDER BY
+        DATE_FORMAT(gmt_create, '%Y-%m-%d');
+    </select>
+
+    <select id="getPVSum" parameterType="com.diagbot.vo.OptVO" resultType="java.lang.Long">
+        SELECT
+        count(1) AS pvSum
+        FROM
+        znwz_opt_info
+        WHERE
+        opt_type = 1
+        <!--<if test="hospitalCode != null and hospitalCode != ''">-->
+            <!--AND hospital_code = #{hospitalCode}-->
+        <!--</if>-->
+        <if test="startDate!=null">
+            AND gmt_create &gt;= #{startDate}
+        </if>
+        <if test="endDate!=null">
+            AND gmt_create &lt;= #{endDate}
+        </if>
+    </select>
+
+    <select id="getUV" parameterType="com.diagbot.vo.OptVO" resultType="com.diagbot.dto.UVDTO">
+        SELECT
+        t.days AS days,
+        count(ip) AS uvCnt
+        FROM
+        (
+        SELECT DISTINCT
+        DATE_FORMAT(gmt_create, '%Y-%m-%d') AS days,
+        ip
+        FROM
+        znwz_opt_info
+        WHERE
+        opt_type = 1
+        <!--<if test="hospitalCode != null and hospitalCode != ''">-->
+            <!--AND hospital_code = #{hospitalCode}-->
+        <!--</if>-->
+        <if test="startDate!=null">
+            AND gmt_create &gt;= #{startDate}
+        </if>
+        <if test="endDate!=null">
+            AND gmt_create &lt;= #{endDate}
+        </if>
+        ) t
+        GROUP BY
+        days
+        ORDER BY
+        days;
+    </select>
+
+    <select id="getUVSum" parameterType="com.diagbot.vo.OptVO" resultType="java.lang.Long">
+        SELECT
+        count(ip) AS uvSum
+        FROM
+        (
+        SELECT DISTINCT
+        DATE_FORMAT(gmt_create, '%Y-%m-%d') AS days,
+        ip
+        FROM
+        znwz_opt_info
+        WHERE
+        opt_type = 1
+        <!--<if test="hospitalCode != null and hospitalCode != ''">-->
+            <!--AND hospital_code = #{hospitalCode}-->
+        <!--</if>-->
+        <if test="startDate!=null">
+            AND gmt_create &gt;= #{startDate}
+        </if>
+        <if test="endDate!=null">
+            AND gmt_create &lt;= #{endDate}
+        </if>
+        ) t;
+    </select>
+
+    <select id="getZZ" parameterType="com.diagbot.vo.OptVO" resultType="com.diagbot.dto.ZZDTO">
+        SELECT
+        t.days AS days,
+        count(ip) AS zzCnt
+        FROM
+        (
+        SELECT DISTINCT
+        DATE_FORMAT(gmt_create, '%Y-%m-%d') AS days,
+        ip
+        FROM
+        znwz_opt_info
+        WHERE
+        opt_type = 2
+        <!--<if test="hospitalCode != null and hospitalCode != ''">-->
+            <!--AND hospital_code = #{hospitalCode}-->
+        <!--</if>-->
+        <if test="startDate!=null">
+            AND gmt_create &gt;= #{startDate}
+        </if>
+        <if test="endDate!=null">
+            AND gmt_create &lt;= #{endDate}
+        </if>
+        ) t
+        GROUP BY
+        days
+        ORDER BY
+        days;
+    </select>
+
+    <select id="getZZSum" parameterType="com.diagbot.vo.OptVO" resultType="java.lang.Long">
+        SELECT
+        count(ip) AS zzSum
+        FROM
+        (
+        SELECT DISTINCT
+        DATE_FORMAT(gmt_create, '%Y-%m-%d') AS days,
+        ip
+        FROM
+        znwz_opt_info
+        WHERE
+        opt_type = 2
+        <!--<if test="hospitalCode != null and hospitalCode != ''">-->
+            <!--AND hospital_code = #{hospitalCode}-->
+        <!--</if>-->
+        <if test="startDate!=null">
+            AND gmt_create &gt;= #{startDate}
+        </if>
+        <if test="endDate!=null">
+            AND gmt_create &lt;= #{endDate}
+        </if>
+        ) t;
+    </select>
+
+    <!--按照医院合计-->
+    <select id="getPVHosp" parameterType="com.diagbot.vo.OptVO" resultType="com.diagbot.dto.PVHospDTO">
+        SELECT
+        hospital_code AS hospitalCode,
+        DATE_FORMAT(gmt_create, '%Y-%m-%d') AS days,
+        count(1) AS pvCnt
+        FROM
+        znwz_opt_info
+        WHERE
+        opt_type = 1
+        <!--<if test="hospitalCode != null and hospitalCode != ''">-->
+            <!--AND hospital_code = #{hospitalCode}-->
+        <!--</if>-->
+        <if test="startDate!=null">
+            AND gmt_create &gt;= #{startDate}
+        </if>
+        <if test="endDate!=null">
+            AND gmt_create &lt;= #{endDate}
+        </if>
+--         AND hospital_code !='朗通通用'
+        GROUP BY
+        hospital_code,
+        DATE_FORMAT(gmt_create, '%Y-%m-%d')
+        ORDER BY
+        hospital_code,
+        DATE_FORMAT(gmt_create, '%Y-%m-%d');
+    </select>
+
+    <select id="getPVSumHosp" parameterType="com.diagbot.vo.OptVO" resultType="com.diagbot.dto.PVHospSumDTO">
+        SELECT
+        hospital_code AS hospitalCode,
+        count(1) AS pvSum
+        FROM
+        znwz_opt_info
+        WHERE
+        opt_type = 1
+        <!--<if test="hospitalCode != null and hospitalCode != ''">-->
+            <!--AND hospital_code = #{hospitalCode}-->
+        <!--</if>-->
+        <if test="startDate!=null">
+            AND gmt_create &gt;= #{startDate}
+        </if>
+        <if test="endDate!=null">
+            AND gmt_create &lt;= #{endDate}
+        </if>
+--         AND hospital_code !='朗通通用'
+        GROUP BY
+        hospital_code
+        ORDER BY
+        pvSum desc;
+    </select>
+
+    <select id="getUVHosp" parameterType="com.diagbot.vo.OptVO" resultType="com.diagbot.dto.UVHospDTO">
+        SELECT
+        t.hospitalCode AS hospitalCode,
+        t.days AS days,
+        count(ip) AS uvCnt
+        FROM
+        (
+        SELECT DISTINCT
+        hospital_code AS hospitalCode,
+        DATE_FORMAT(gmt_create, '%Y-%m-%d') AS days,
+        ip
+        FROM
+        znwz_opt_info
+        WHERE
+        opt_type = 1
+        <!--<if test="hospitalCode != null and hospitalCode != ''">-->
+            <!--AND hospital_code = #{hospitalCode}-->
+        <!--</if>-->
+        <if test="startDate!=null">
+            AND gmt_create &gt;= #{startDate}
+        </if>
+        <if test="endDate!=null">
+            AND gmt_create &lt;= #{endDate}
+        </if>
+--         AND hospital_code !='朗通通用'
+        ) t
+        GROUP BY
+        hospitalCode,
+        days
+        ORDER BY
+        hospitalCode,
+        days;
+
+    </select>
+
+    <select id="getUVSumHosp" parameterType="com.diagbot.vo.OptVO" resultType="com.diagbot.dto.UVHospSumDTO">
+        SELECT
+        t.hospitalCode AS hospitalCode,
+        count(ip) AS uvSum
+        FROM
+        (
+        SELECT DISTINCT
+        hospital_code AS hospitalCode,
+        DATE_FORMAT(gmt_create, '%Y-%m-%d') AS days,
+        ip
+        FROM
+        znwz_opt_info
+        WHERE
+        opt_type = 1
+        <!--<if test="hospitalCode != null and hospitalCode != ''">-->
+            <!--AND hospital_code = #{hospitalCode}-->
+        <!--</if>-->
+        <if test="startDate!=null">
+            AND gmt_create &gt;= #{startDate}
+        </if>
+        <if test="endDate!=null">
+            AND gmt_create &lt;= #{endDate}
+        </if>
+--         AND hospital_code !='朗通通用'
+        ) t
+        GROUP BY
+        hospitalCode
+        ORDER BY
+        uvSum desc;
+    </select>
+
+    <select id="getZZHosp" parameterType="com.diagbot.vo.OptVO" resultType="com.diagbot.dto.ZZHospDTO">
+        SELECT
+        t.hospitalCode AS hospitalCode,
+        t.days AS days,
+        count(ip) AS zzCnt
+        FROM
+        (
+        SELECT DISTINCT
+        hospital_code AS hospitalCode,
+        DATE_FORMAT(gmt_create, '%Y-%m-%d') AS days,
+        ip
+        FROM
+        znwz_opt_info
+        WHERE
+        opt_type = 2
+        <!--<if test="hospitalCode != null and hospitalCode != ''">-->
+            <!--AND hospital_code = #{hospitalCode}-->
+        <!--</if>-->
+        <if test="startDate!=null">
+            AND gmt_create &gt;= #{startDate}
+        </if>
+        <if test="endDate!=null">
+            AND gmt_create &lt;= #{endDate}
+        </if>
+--         AND hospital_code !='朗通通用'
+        ) t
+        GROUP BY
+        hospitalCode,
+        days
+        ORDER BY
+        hospitalCode,
+        days;
+
+    </select>
+
+    <select id="getZZSumHosp" parameterType="com.diagbot.vo.OptVO" resultType="com.diagbot.dto.ZZHospSumDTO">
+        SELECT
+        t.hospitalCode AS hospitalCode,
+        count(ip) AS zzSum
+        FROM
+        (
+        SELECT DISTINCT
+        hospital_code AS hospitalCode,
+        DATE_FORMAT(gmt_create, '%Y-%m-%d') AS days,
+        ip
+        FROM
+        znwz_opt_info
+        WHERE
+        opt_type = 2
+        <!--<if test="hospitalCode != null and hospitalCode != ''">-->
+            <!--AND hospital_code = #{hospitalCode}-->
+        <!--</if>-->
+        <if test="startDate!=null">
+            AND gmt_create &gt;= #{startDate}
+        </if>
+        <if test="endDate!=null">
+            AND gmt_create &lt;= #{endDate}
+        </if>
+--         AND hospital_code !='朗通通用'
+        ) t
+        GROUP BY
+        hospitalCode
+        ORDER BY
+        zzSum desc;
+    </select>
+
+    <select id="getAllHospital" resultType="java.lang.String">
+        SELECT DISTINCT(hospital_code) AS hospitalCode FROM `znwz_opt_info`;
+    </select>
+
+</mapper>