Browse Source

feat:
1. 接入新数据源postgesql,相关实体,mapper,service代码
2. 修改对应mybatis plus配置
3. 修改日志配置,打印INFO级别
4. 增加定时任务数据库配置,业务倍数数据库控制,可动态修改配置
5. 增加头部数据定时任务
6. 增加底部数据定时任务

Jing.Li 4 years ago
parent
commit
5e2c09651f
51 changed files with 1627 additions and 75 deletions
  1. 5 0
      pom.xml
  2. 92 0
      src/main/java/com/yideb/audit/config/GlobalConstant.java
  3. 75 0
      src/main/java/com/yideb/audit/controller/DailyHistoryController.java
  4. 79 0
      src/main/java/com/yideb/audit/dao/audit/BottomMapper.java
  5. 2 2
      src/main/java/com/yideb/audit/dao/ScheduleTaskMapper.java
  6. 16 0
      src/main/java/com/yideb/audit/dao/audit/StatisticConfigMapper.java
  7. 3 3
      src/main/java/com/yideb/audit/dao/TopDataMapper.java
  8. 18 0
      src/main/java/com/yideb/audit/dao/hub/AreaStoreMapper.java
  9. 16 0
      src/main/java/com/yideb/audit/dao/hub/BasicStatisticMapper.java
  10. 18 0
      src/main/java/com/yideb/audit/dao/hub/MedicineRankMapper.java
  11. 18 0
      src/main/java/com/yideb/audit/dao/hub/PrescriptionRankMapper.java
  12. 18 0
      src/main/java/com/yideb/audit/dao/hub/PrescriptionTrendMapper.java
  13. 18 0
      src/main/java/com/yideb/audit/dao/hub/StoreTrendMapper.java
  14. 3 1
      src/main/java/com/yideb/audit/entity/ScheduleTask.java
  15. 52 0
      src/main/java/com/yideb/audit/entity/audit/StatisticConfig.java
  16. 26 0
      src/main/java/com/yideb/audit/entity/audit/vo/BasicVo.java
  17. 22 0
      src/main/java/com/yideb/audit/entity/audit/vo/MapVo.java
  18. 33 0
      src/main/java/com/yideb/audit/entity/hub/AreaStore.java
  19. 18 4
      src/main/java/com/yideb/audit/entity/vo/TopDataVo.java
  20. 30 0
      src/main/java/com/yideb/audit/entity/hub/MedicineRank.java
  21. 30 0
      src/main/java/com/yideb/audit/entity/hub/PrescriptionRank.java
  22. 30 0
      src/main/java/com/yideb/audit/entity/hub/PrescriptionTrend.java
  23. 30 0
      src/main/java/com/yideb/audit/entity/hub/StoreTrend.java
  24. 69 0
      src/main/java/com/yideb/audit/service/audit/IBottomService.java
  25. 7 2
      src/main/java/com/yideb/audit/service/IScheduleTaskService.java
  26. 24 0
      src/main/java/com/yideb/audit/service/audit/IStatisticConfigService.java
  27. 3 3
      src/main/java/com/yideb/audit/service/ITopDataService.java
  28. 64 0
      src/main/java/com/yideb/audit/service/audit/impl/IBottomServiceImpl.java
  29. 6 4
      src/main/java/com/yideb/audit/service/impl/ScheduleTaskServiceImpl.java
  30. 46 0
      src/main/java/com/yideb/audit/service/audit/impl/StatisticConfigServiceImpl.java
  31. 12 12
      src/main/java/com/yideb/audit/service/impl/ITopDataServiceImpl.java
  32. 21 0
      src/main/java/com/yideb/audit/service/hub/IAreaStoreService.java
  33. 18 0
      src/main/java/com/yideb/audit/service/hub/IBasicStatisticService.java
  34. 21 0
      src/main/java/com/yideb/audit/service/hub/IMedicineRankService.java
  35. 21 0
      src/main/java/com/yideb/audit/service/hub/IPrescriptionRankService.java
  36. 23 0
      src/main/java/com/yideb/audit/service/hub/IPrescriptionTrendService.java
  37. 23 0
      src/main/java/com/yideb/audit/service/hub/IStoreTrendService.java
  38. 49 0
      src/main/java/com/yideb/audit/service/hub/impl/AreaStoreServiceImpl.java
  39. 35 0
      src/main/java/com/yideb/audit/service/hub/impl/BasicStatisticServiceImpl.java
  40. 48 0
      src/main/java/com/yideb/audit/service/hub/impl/MedicineRankServiceImpl.java
  41. 49 0
      src/main/java/com/yideb/audit/service/hub/impl/PrescriptionRankServiceImpl.java
  42. 69 0
      src/main/java/com/yideb/audit/service/hub/impl/PrescriptionTrendServiceImpl.java
  43. 69 0
      src/main/java/com/yideb/audit/service/hub/impl/StoreTrendServiceImpl.java
  44. 116 0
      src/main/java/com/yideb/audit/task/BottomScheduleTask.java
  45. 49 15
      src/main/java/com/yideb/audit/task/TopScheduleTask.java
  46. 2 2
      src/main/java/com/yideb/audit/task/dynamic/DynamicScheduleTask.java
  47. 7 12
      src/main/resources/config/application-dev.yml
  48. 1 3
      src/main/resources/config/application.yml
  49. 102 0
      src/main/resources/mapper/audit/BottomMapper.xml
  50. 16 12
      src/main/resources/mapper/TopDataMapper.xml
  51. 5 0
      src/test/java/com/yideb/audit/DateTest.java

+ 5 - 0
pom.xml

@@ -109,6 +109,11 @@
             <artifactId>fastjson</artifactId>
             <artifactId>fastjson</artifactId>
             <version>${fastjson.version}</version>
             <version>${fastjson.version}</version>
         </dependency>
         </dependency>
+
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+        </dependency>
     </dependencies>
     </dependencies>
 
 
     <dependencyManagement>
     <dependencyManagement>

+ 92 - 0
src/main/java/com/yideb/audit/config/GlobalConstant.java

@@ -0,0 +1,92 @@
+package com.yideb.audit.config;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/10 14:56 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+
+public class GlobalConstant {
+
+	public static final Integer DEFAULT_TOP_NUMBER = 30;
+
+	/**
+	 * 是否枚举
+	 */
+	public enum YesOrNo {
+		NO(0, "否"), YES(1, "是");
+
+		/**
+		 * 码值
+		 */
+		private final int code;
+
+		/**
+		 * 描述
+		 */
+		private final String desc;
+
+		YesOrNo(final int code, final String desc) {
+			this.code = code;
+			this.desc = desc;
+		}
+
+		public int getCode() {
+			return this.code;
+		}
+
+		public String getDesc() {
+			return this.desc;
+		}
+	}
+
+	/**
+	 * 业务统计枚举
+	 */
+	public enum BusinessType {
+		// 头部
+		STORE(1001, "药店注册"),
+		PRESCRIPTION(1002, "处方总量"),
+		ACCEPT(1003, "发生业务医生"),
+		AUDIT(1004, "发生业务药师"),
+
+		// 左下
+		STORE_ADD_DAY(1005, "日新增药店趋势"),
+		AUDIT_ADD_DAY(1006, "日处方趋势统计"),
+
+		// 右下
+		MEDICINE_TOP_10(1007, "处方药销量Top"),
+		STORE_TOP_10(1008, "药店处方量Top"),
+		MEDICINE_TOP_LEVEL(1009, "处方药销量Top数据量"),
+		STORE_TOP_LEVEL(1010, "药店处方量Top数据量"),
+
+		AREA_STORE(1011, "地图");
+
+		/**
+		 * 码值
+		 */
+		private final int code;
+
+		/**
+		 * 描述
+		 */
+		private final String desc;
+
+		BusinessType(final int code, final String desc) {
+			this.code = code;
+			this.desc = desc;
+		}
+
+		public int getCode() {
+			return this.code;
+		}
+
+		public String getDesc() {
+			return this.desc;
+		}
+	}
+}

+ 75 - 0
src/main/java/com/yideb/audit/controller/DailyHistoryController.java

@@ -0,0 +1,75 @@
+package com.yideb.audit.controller;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
+import com.yideb.audit.config.GlobalConstant;
+import com.yideb.audit.entity.audit.vo.BasicVo;
+import com.yideb.audit.service.audit.IBottomService;
+import com.yideb.audit.service.audit.IStatisticConfigService;
+import com.yideb.audit.service.hub.IPrescriptionTrendService;
+import com.yideb.audit.service.hub.IStoreTrendService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/10 16:34 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Slf4j
+@RestController
+@RequestMapping("daily")
+public class DailyHistoryController {
+
+	@Resource
+	private IBottomService bottomService;
+	@Resource
+	private IStatisticConfigService statisticConfigService;
+	@Resource
+	private IStoreTrendService storeTrendService;
+	@Resource
+	private IPrescriptionTrendService prescriptionTrendService;
+
+	@GetMapping("dailyPrescriptions")
+	public String dailyPrescriptions() {
+		log.info("dailyPrescriptions 处理开始");
+		String endTime = DateUtil.beginOfDay(DateUtil.yesterday()).toString(DatePattern.NORM_DATETIME_PATTERN);
+		List<BasicVo> dailyPrescriptions = bottomService.dailyPrescriptions(endTime);
+
+		// 插入hub数据库
+		Integer prescriptionAddDayMultiple = getConfig().getOrDefault(GlobalConstant.BusinessType.AUDIT_ADD_DAY.getCode(), 1);
+
+		prescriptionTrendService.batchInsert(dailyPrescriptions, prescriptionAddDayMultiple);
+		log.info("dailyPrescriptions 处理结束");
+
+		return "success";
+	}
+
+	@GetMapping("dailyStores")
+	public String dailyStores() {
+		log.info("dailyStores 处理开始");
+		String endTime = DateUtil.beginOfDay(DateUtil.yesterday()).toString(DatePattern.NORM_DATETIME_PATTERN);
+		List<BasicVo> dailyStores = bottomService.dailyStores(endTime);
+
+		// 插入hub数据库
+		Integer storeAddDayMultiple = getConfig().getOrDefault(GlobalConstant.BusinessType.STORE_ADD_DAY.getCode(), 1);
+		storeTrendService.batchInsert(dailyStores, storeAddDayMultiple);
+		log.info("dailyStores 处理结束");
+
+		return "success";
+	}
+
+	private Map<Integer, Integer> getConfig() {
+		return statisticConfigService.allConfigs();
+	}
+}

+ 79 - 0
src/main/java/com/yideb/audit/dao/audit/BottomMapper.java

@@ -0,0 +1,79 @@
+package com.yideb.audit.dao.audit;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yideb.audit.entity.audit.vo.BasicVo;
+import com.yideb.audit.entity.audit.vo.MapVo;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/10 15:52 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Repository
+public interface BottomMapper extends BaseMapper {
+
+	/**
+	 * 日新增药店
+	 *
+	 * @param endTime
+	 * @return
+	 */
+	List<BasicVo> dailyStores(@Param("endTime") String endTime);
+
+	/**
+	 * 昨日新增药店
+	 *
+	 * @param startTime
+	 * @param endTime
+	 * @return
+	 */
+	List<BasicVo> lastDayStores(@Param("startTime") String startTime, @Param("endTime") String endTime);
+
+	/**
+	 * 日新增处方
+	 *
+	 * @param endTime
+	 * @return
+	 */
+	List<BasicVo> dailyPrescriptions(@Param("endTime") String endTime);
+
+	/**
+	 * 昨日新增处方
+	 *
+	 * @param startTime
+	 * @param endTime
+	 * @return
+	 */
+	List<BasicVo> lastDayPrescriptions(@Param("startTime") String startTime, @Param("endTime") String endTime);
+
+	/**
+	 * 药品排名
+	 *
+	 * @param topNumber
+	 * @return
+	 */
+	List<BasicVo> medicineRank(@Param("topNumber") Integer topNumber);
+
+	/**
+	 * 药店处方量排名
+	 *
+	 * @param topNumber
+	 * @return
+	 */
+	List<BasicVo> storeRank(@Param("topNumber") Integer topNumber);
+
+	/**
+	 * 区域地图分布
+	 *
+	 * @return
+	 */
+	List<MapVo> storeMap();
+}

+ 2 - 2
src/main/java/com/yideb/audit/dao/ScheduleTaskMapper.java

@@ -1,7 +1,7 @@
-package com.yideb.audit.dao;
+package com.yideb.audit.dao.audit;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.yideb.audit.entity.ScheduleTask;
+import com.yideb.audit.entity.audit.ScheduleTask;
 
 
 /**
 /**
  * <p>
  * <p>

+ 16 - 0
src/main/java/com/yideb/audit/dao/audit/StatisticConfigMapper.java

@@ -0,0 +1,16 @@
+package com.yideb.audit.dao.audit;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yideb.audit.entity.audit.StatisticConfig;
+
+/**
+ * <p>
+    * yideb-audit-statistic,业务配置表 Mapper 接口
+    * </p>
+ *
+ * @author lijing
+ * @since 2020-08-10
+ */
+public interface StatisticConfigMapper extends BaseMapper<StatisticConfig> {
+
+}

+ 3 - 3
src/main/java/com/yideb/audit/dao/TopDataMapper.java

@@ -1,4 +1,4 @@
-package com.yideb.audit.dao;
+package com.yideb.audit.dao.audit;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
@@ -11,7 +11,7 @@ import org.apache.ibatis.annotations.Param;
  * <b>@Date:</b> 2020/8/5 14:54 <br>
  * <b>@Date:</b> 2020/8/5 14:54 <br>
  * <b>@author:</b> <a href="mailto:Lijing@miyzh.com"> Lijing </a> <br>
  * <b>@author:</b> <a href="mailto:Lijing@miyzh.com"> Lijing </a> <br>
  */
  */
-public interface TopDataMapper extends BaseMapper {
+public interface TopMapper extends BaseMapper {
 
 
 	/**
 	/**
 	 * 查找药店注册数量
 	 * 查找药店注册数量
@@ -29,7 +29,7 @@ public interface TopDataMapper extends BaseMapper {
 	 * @param endTime
 	 * @param endTime
 	 * @return
 	 * @return
 	 */
 	 */
-	Integer queryAuditCount(@Param("startTime") String startTime, @Param("endTime") String endTime);
+	Integer queryPrescriptionCount(@Param("startTime") String startTime, @Param("endTime") String endTime);
 
 
 	/**
 	/**
 	 * 查找药店总量
 	 * 查找药店总量

+ 18 - 0
src/main/java/com/yideb/audit/dao/hub/AreaStoreMapper.java

@@ -0,0 +1,18 @@
+package com.yideb.audit.dao.hub;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yideb.audit.entity.hub.AreaStore;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:27 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Repository
+public interface AreaStoreMapper extends BaseMapper<AreaStore> {
+}

+ 16 - 0
src/main/java/com/yideb/audit/dao/hub/BasicStatisticMapper.java

@@ -0,0 +1,16 @@
+package com.yideb.audit.dao.hub;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yideb.audit.entity.hub.BasicStatistic;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/10 18:41 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+public interface BasicStatisticMapper extends BaseMapper<BasicStatistic> {
+}

+ 18 - 0
src/main/java/com/yideb/audit/dao/hub/MedicineRankMapper.java

@@ -0,0 +1,18 @@
+package com.yideb.audit.dao.hub;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yideb.audit.entity.hub.MedicineRank;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:30 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Repository
+public interface MedicineRankMapper extends BaseMapper<MedicineRank> {
+}

+ 18 - 0
src/main/java/com/yideb/audit/dao/hub/PrescriptionRankMapper.java

@@ -0,0 +1,18 @@
+package com.yideb.audit.dao.hub;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yideb.audit.entity.hub.PrescriptionRank;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:29 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Repository
+public interface PrescriptionRankMapper extends BaseMapper<PrescriptionRank> {
+}

+ 18 - 0
src/main/java/com/yideb/audit/dao/hub/PrescriptionTrendMapper.java

@@ -0,0 +1,18 @@
+package com.yideb.audit.dao.hub;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yideb.audit.entity.hub.PrescriptionTrend;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:28 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Repository
+public interface PrescriptionTrendMapper extends BaseMapper<PrescriptionTrend> {
+}

+ 18 - 0
src/main/java/com/yideb/audit/dao/hub/StoreTrendMapper.java

@@ -0,0 +1,18 @@
+package com.yideb.audit.dao.hub;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yideb.audit.entity.hub.StoreTrend;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:29 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Repository
+public interface StoreTrendMapper extends BaseMapper<StoreTrend> {
+}

+ 3 - 1
src/main/java/com/yideb/audit/entity/ScheduleTask.java

@@ -1,5 +1,6 @@
-package com.yideb.audit.entity;
+package com.yideb.audit.entity.audit;
 
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
 import lombok.Data;
 
 
@@ -14,6 +15,7 @@ import java.io.Serializable;
  * @since 2020-08-05
  * @since 2020-08-05
  */
  */
 @Data
 @Data
+@TableName("c_schedule_task")
 public class ScheduleTask extends Model<ScheduleTask> {
 public class ScheduleTask extends Model<ScheduleTask> {
 
 
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;

+ 52 - 0
src/main/java/com/yideb/audit/entity/audit/StatisticConfig.java

@@ -0,0 +1,52 @@
+package com.yideb.audit.entity.audit;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+    * yideb-audit-statistic,业务配置表
+    * </p>
+ *
+ * @author lijing
+ * @since 2020-08-10
+ */
+@Data
+@TableName("c_statistic_config")
+public class StatisticConfig extends Model<StatisticConfig> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    private String id;
+
+    /**
+     * 业务类型Code
+     */
+    private Integer businessType;
+
+    /**
+     * 业务数据配置
+     */
+    private Integer value;
+
+    /**
+     * 是否生效
+     */
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+}

+ 26 - 0
src/main/java/com/yideb/audit/entity/audit/vo/BasicVo.java

@@ -0,0 +1,26 @@
+package com.yideb.audit.entity.audit.vo;
+
+import lombok.Data;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/10 15:47 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Data
+public class BasicVo {
+
+	/**
+	 * 日期key
+	 */
+	private String key;
+
+	/**
+	 * 值
+	 */
+	private Integer value;
+}

+ 22 - 0
src/main/java/com/yideb/audit/entity/audit/vo/MapVo.java

@@ -0,0 +1,22 @@
+package com.yideb.audit.entity.audit.vo;
+
+import lombok.Data;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/10 17:54 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Data
+public class MapVo {
+
+	private String province;
+
+	private String city;
+
+	private Integer value;
+}

+ 33 - 0
src/main/java/com/yideb/audit/entity/hub/AreaStore.java

@@ -0,0 +1,33 @@
+package com.yideb.audit.entity.hub;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:09 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Data
+@TableName("yideb_area_store")
+public class AreaStore extends Model<AreaStore> {
+
+	@TableId("id")
+	private String id;
+
+	@TableField("province")
+	private String province;
+
+	@TableField("city")
+	private String city;
+
+	@TableField("number")
+	private Integer number;
+}

+ 18 - 4
src/main/java/com/yideb/audit/entity/vo/TopDataVo.java

@@ -1,5 +1,9 @@
-package com.yideb.audit.entity.vo;
+package com.yideb.audit.entity.hub;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
 import lombok.Data;
 
 
 /**
 /**
@@ -11,40 +15,50 @@ import lombok.Data;
  * <b>@author:</b> <a href="mailto:Lijing@miyzh.com"> Lijing </a> <br>
  * <b>@author:</b> <a href="mailto:Lijing@miyzh.com"> Lijing </a> <br>
  */
  */
 @Data
 @Data
-public class TopDataVo {
+@TableName("yideb_basic_statistic")
+public class BasicStatistic extends Model<BasicStatistic> {
 
 
+	@TableId("id")
+	private String id;
 	/**
 	/**
 	 * 累计药店注册数量
 	 * 累计药店注册数量
 	 */
 	 */
+	@TableField("total_clinic_reg_count")
 	private Integer totalClinicRegCount;
 	private Integer totalClinicRegCount;
 
 
 	/**
 	/**
 	 * 累计处方总量
 	 * 累计处方总量
 	 */
 	 */
-	private Integer auditCount;
+	@TableField("total_prescription_count")
+	private Integer totalPrescriptionCount;
 
 
 	/**
 	/**
 	 * 本周注册药店
 	 * 本周注册药店
 	 */
 	 */
+	@TableField("week_clinic_reg_count")
 	private Integer weekClinicRegCount;
 	private Integer weekClinicRegCount;
 
 
 	/**
 	/**
 	 * 今日处方总量
 	 * 今日处方总量
 	 */
 	 */
-	private Integer todayAuditCount;
+	@TableField("today_prescription_count")
+	private Integer todayPrescriptionCount;
 
 
 	/**
 	/**
 	 * 今日药店数量 (发生业务数据的)
 	 * 今日药店数量 (发生业务数据的)
 	 */
 	 */
+	@TableField("today_clinic_count")
 	private Integer todayClinicCount;
 	private Integer todayClinicCount;
 
 
 	/**
 	/**
 	 * 今日医生数量 (发生业务数据的)
 	 * 今日医生数量 (发生业务数据的)
 	 */
 	 */
+	@TableField("today_doctor_count")
 	private Integer todayDoctorCount;
 	private Integer todayDoctorCount;
 
 
 	/**
 	/**
 	 * 今日药师数量 (发生业务数据的)
 	 * 今日药师数量 (发生业务数据的)
 	 */
 	 */
+	@TableField("today_pharmacist_count")
 	private Integer todayPharmacistCount;
 	private Integer todayPharmacistCount;
 }
 }

+ 30 - 0
src/main/java/com/yideb/audit/entity/hub/MedicineRank.java

@@ -0,0 +1,30 @@
+package com.yideb.audit.entity.hub;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:11 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Data
+@TableName("yideb_medicine_rank")
+public class MedicineRank extends Model<MedicineRank> {
+
+	@TableId("id")
+	private String id;
+
+	@TableField("medicine_name")
+	private String medicineName;
+
+	@TableField("number")
+	private Integer number;
+}

+ 30 - 0
src/main/java/com/yideb/audit/entity/hub/PrescriptionRank.java

@@ -0,0 +1,30 @@
+package com.yideb.audit.entity.hub;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:12 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Data
+@TableName("yideb_prescription_rank")
+public class PrescriptionRank extends Model<PrescriptionRank> {
+
+	@TableId("id")
+	private String id;
+
+	@TableField("clinic_name")
+	private String clinicName;
+
+	@TableField("number")
+	private Integer number;
+}

+ 30 - 0
src/main/java/com/yideb/audit/entity/hub/PrescriptionTrend.java

@@ -0,0 +1,30 @@
+package com.yideb.audit.entity.hub;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:13 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Data
+@TableName("yideb_prescription_trend")
+public class PrescriptionTrend extends Model<PrescriptionTrend> {
+
+	@TableId("id")
+	private String id;
+
+	@TableField("statistic_date")
+	private String statisticDate;
+
+	@TableField("number")
+	private Integer number;
+}

+ 30 - 0
src/main/java/com/yideb/audit/entity/hub/StoreTrend.java

@@ -0,0 +1,30 @@
+package com.yideb.audit.entity.hub;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:14 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Data
+@TableName("yideb_store_trend")
+public class StoreTrend extends Model<StoreTrend> {
+
+	@TableId
+	private String id;
+
+	@TableField("statistic_date")
+	private String statisticDate;
+
+	@TableField("number")
+	private Integer number;
+}

+ 69 - 0
src/main/java/com/yideb/audit/service/audit/IBottomService.java

@@ -0,0 +1,69 @@
+package com.yideb.audit.service.audit;
+
+import com.yideb.audit.entity.audit.vo.BasicVo;
+import com.yideb.audit.entity.audit.vo.MapVo;
+
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/10 15:35 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+public interface IBottomService {
+
+	/**
+	 * 昨日之前所有的日新增药店
+	 *
+	 * @return
+	 */
+	List<BasicVo> dailyStores(String endTime);
+
+	/**
+	 * 昨日新增药店
+	 *
+	 * @return
+	 */
+	List<BasicVo> lastDayStores(String startTime, String endTime);
+
+	/**
+	 * 昨日之前所有的日新增处方
+	 *
+	 * @return
+	 */
+	List<BasicVo> dailyPrescriptions(String endTime);
+
+	/**
+	 * 昨日新增处方
+	 *
+	 * @return
+	 */
+	List<BasicVo> lastDayPrescriptions(String startTime, String endTime);
+
+	/**
+	 * 药品排名
+	 *
+	 * @param topNumber
+	 * @return
+	 */
+	List<BasicVo> medicineRank(Integer topNumber);
+
+	/**
+	 * 药店处方量排名
+	 *
+	 * @param topNumber
+	 * @return
+	 */
+	List<BasicVo> storeRank(Integer topNumber);
+
+	/**
+	 * 区域药店分布
+	 *
+	 * @return
+	 */
+	List<MapVo> storeMap();
+}

+ 7 - 2
src/main/java/com/yideb/audit/service/IScheduleTaskService.java

@@ -1,7 +1,7 @@
-package com.yideb.audit.service;
+package com.yideb.audit.service.audit;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.yideb.audit.entity.ScheduleTask;
+import com.yideb.audit.entity.audit.ScheduleTask;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -15,5 +15,10 @@ import java.util.List;
  */
  */
 public interface IScheduleTaskService extends IService<ScheduleTask> {
 public interface IScheduleTaskService extends IService<ScheduleTask> {
 
 
+	/**
+	 * 查找所有的定时任务
+	 *
+	 * @return
+	 */
 	List<ScheduleTask> findAll();
 	List<ScheduleTask> findAll();
 }
 }

+ 24 - 0
src/main/java/com/yideb/audit/service/audit/IStatisticConfigService.java

@@ -0,0 +1,24 @@
+package com.yideb.audit.service.audit;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yideb.audit.entity.audit.StatisticConfig;
+
+import java.util.Map;
+
+/**
+ * <p>
+    * yideb-audit-statistic,业务配置表 服务类
+    * </p>
+ *
+ * @author lijing
+ * @since 2020-08-10
+ */
+public interface IStatisticConfigService extends IService<StatisticConfig> {
+
+	/**
+	 * 获取所有配置
+	 *
+	 * @return
+	 */
+	Map<Integer, Integer> allConfigs();
+}

+ 3 - 3
src/main/java/com/yideb/audit/service/ITopDataService.java

@@ -1,4 +1,4 @@
-package com.yideb.audit.service;
+package com.yideb.audit.service.audit;
 
 
 /**
 /**
  * <b>Application name:</b> yideb-audit-statistic <br>
  * <b>Application name:</b> yideb-audit-statistic <br>
@@ -8,7 +8,7 @@ package com.yideb.audit.service;
  * <b>@Date:</b> 2020/8/5 18:40 <br>
  * <b>@Date:</b> 2020/8/5 18:40 <br>
  * <b>@author:</b> <a href="mailto:Lijing@miyzh.com"> Lijing </a> <br>
  * <b>@author:</b> <a href="mailto:Lijing@miyzh.com"> Lijing </a> <br>
  */
  */
-public interface ITopDataService {
+public interface ITopService {
 	/**
 	/**
 	 * 查找药店注册数量
 	 * 查找药店注册数量
 	 *
 	 *
@@ -25,7 +25,7 @@ public interface ITopDataService {
 	 * @param endTime
 	 * @param endTime
 	 * @return
 	 * @return
 	 */
 	 */
-	Integer queryAuditCount(String startTime, String endTime);
+	Integer queryPrescriptionCount(String startTime, String endTime);
 
 
 	/**
 	/**
 	 * 查找药店数量
 	 * 查找药店数量

+ 64 - 0
src/main/java/com/yideb/audit/service/audit/impl/IBottomServiceImpl.java

@@ -0,0 +1,64 @@
+package com.yideb.audit.service.audit.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.yideb.audit.dao.audit.BottomMapper;
+import com.yideb.audit.entity.audit.vo.BasicVo;
+import com.yideb.audit.entity.audit.vo.MapVo;
+import com.yideb.audit.service.audit.IBottomService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/10 15:36 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@DS("mysql")
+@Service
+public class IBottomServiceImpl implements IBottomService {
+
+	@Resource
+	private BottomMapper bottomMapper;
+
+
+	@Override
+	public List<BasicVo> dailyStores(String endTime) {
+		return bottomMapper.dailyStores(endTime);
+	}
+
+	@Override
+	public List<BasicVo> lastDayStores(String startTime, String endTime) {
+		return bottomMapper.lastDayStores(startTime, endTime);
+	}
+
+	@Override
+	public List<BasicVo> dailyPrescriptions(String endTime) {
+		return bottomMapper.dailyPrescriptions(endTime);
+	}
+
+	@Override
+	public List<BasicVo> lastDayPrescriptions(String startTime, String endTime) {
+		return bottomMapper.lastDayPrescriptions(startTime, endTime);
+	}
+
+	@Override
+	public List<BasicVo> medicineRank(Integer topNumber) {
+		return bottomMapper.medicineRank(topNumber);
+	}
+
+	@Override
+	public List<BasicVo> storeRank(Integer topNumber) {
+		return bottomMapper.storeRank(topNumber);
+	}
+
+	@Override
+	public List<MapVo> storeMap() {
+		return bottomMapper.storeMap();
+	}
+}

+ 6 - 4
src/main/java/com/yideb/audit/service/impl/ScheduleTaskServiceImpl.java

@@ -1,10 +1,11 @@
-package com.yideb.audit.service.impl;
+package com.yideb.audit.service.audit.impl;
 
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yideb.audit.dao.ScheduleTaskMapper;
-import com.yideb.audit.entity.ScheduleTask;
-import com.yideb.audit.service.IScheduleTaskService;
+import com.yideb.audit.dao.audit.ScheduleTaskMapper;
+import com.yideb.audit.entity.audit.ScheduleTask;
+import com.yideb.audit.service.audit.IScheduleTaskService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
@@ -18,6 +19,7 @@ import java.util.List;
  * @author zhursh
  * @author zhursh
  * @since 2020-08-05
  * @since 2020-08-05
  */
  */
+@DS("mysql")
 @Service
 @Service
 public class ScheduleTaskServiceImpl extends ServiceImpl<ScheduleTaskMapper, ScheduleTask> implements IScheduleTaskService {
 public class ScheduleTaskServiceImpl extends ServiceImpl<ScheduleTaskMapper, ScheduleTask> implements IScheduleTaskService {
 
 

+ 46 - 0
src/main/java/com/yideb/audit/service/audit/impl/StatisticConfigServiceImpl.java

@@ -0,0 +1,46 @@
+package com.yideb.audit.service.audit.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yideb.audit.config.GlobalConstant;
+import com.yideb.audit.dao.audit.StatisticConfigMapper;
+import com.yideb.audit.entity.audit.StatisticConfig;
+import com.yideb.audit.service.audit.IStatisticConfigService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+    * yideb-audit-statistic,业务配置表 服务实现类
+    * </p>
+ *
+ * @author lijing
+ * @since 2020-08-10
+ */
+@DS("mysql")
+@Service
+public class StatisticConfigServiceImpl extends ServiceImpl<StatisticConfigMapper, StatisticConfig> implements IStatisticConfigService {
+
+	@Resource
+	private StatisticConfigMapper configMapper;
+
+	@Override
+	public Map<Integer, Integer> allConfigs() {
+		QueryWrapper<StatisticConfig> wrapper = new QueryWrapper<>();
+		wrapper.eq("status", GlobalConstant.YesOrNo.YES.getCode());
+		List<StatisticConfig> statisticConfigs = configMapper.selectList(wrapper);
+
+		if (CollectionUtil.isEmpty(statisticConfigs)) {
+			return new HashMap<>(2);
+		}
+
+		return statisticConfigs.stream().collect(Collectors.toMap(StatisticConfig::getBusinessType, StatisticConfig::getValue));
+	}
+}

+ 12 - 12
src/main/java/com/yideb/audit/service/impl/ITopDataServiceImpl.java

@@ -1,8 +1,8 @@
-package com.yideb.audit.service.impl;
+package com.yideb.audit.service.audit.impl;
 
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DS;
-import com.yideb.audit.dao.TopDataMapper;
-import com.yideb.audit.service.ITopDataService;
+import com.yideb.audit.dao.audit.TopMapper;
+import com.yideb.audit.service.audit.ITopService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
@@ -15,35 +15,35 @@ import javax.annotation.Resource;
  * <b>@Date:</b> 2020/8/5 18:41 <br>
  * <b>@Date:</b> 2020/8/5 18:41 <br>
  * <b>@author:</b> <a href="mailto:Lijing@miyzh.com"> Lijing </a> <br>
  * <b>@author:</b> <a href="mailto:Lijing@miyzh.com"> Lijing </a> <br>
  */
  */
-@DS("audit")
+@DS("mysql")
 @Service
 @Service
-public class ITopDataServiceImpl implements ITopDataService {
+public class TopServiceImpl implements ITopService {
 
 
 	@Resource
 	@Resource
-	private TopDataMapper topDataMapper;
+	private TopMapper topMapper;
 
 
 	@Override
 	@Override
 	public Integer queryClinicRegCount(String startTime, String endTime) {
 	public Integer queryClinicRegCount(String startTime, String endTime) {
-		return topDataMapper.queryClinicRegCount(startTime, endTime);
+		return topMapper.queryClinicRegCount(startTime, endTime);
 	}
 	}
 
 
 	@Override
 	@Override
-	public Integer queryAuditCount(String startTime, String endTime) {
-		return topDataMapper.queryAuditCount(startTime, endTime);
+	public Integer queryPrescriptionCount(String startTime, String endTime) {
+		return topMapper.queryPrescriptionCount(startTime, endTime);
 	}
 	}
 
 
 	@Override
 	@Override
 	public Integer queryClinicCount(String startTime, String endTime) {
 	public Integer queryClinicCount(String startTime, String endTime) {
-		return topDataMapper.queryClinicCount(startTime, endTime);
+		return topMapper.queryClinicCount(startTime, endTime);
 	}
 	}
 
 
 	@Override
 	@Override
 	public Integer queryDoctorCount(String startTime, String endTime) {
 	public Integer queryDoctorCount(String startTime, String endTime) {
-		return topDataMapper.queryDoctorCount(startTime, endTime);
+		return topMapper.queryDoctorCount(startTime, endTime);
 	}
 	}
 
 
 	@Override
 	@Override
 	public Integer queryPharmacistCount(String startTime, String endTime) {
 	public Integer queryPharmacistCount(String startTime, String endTime) {
-		return topDataMapper.queryPharmacistCount(startTime, endTime);
+		return topMapper.queryPharmacistCount(startTime, endTime);
 	}
 	}
 }
 }

+ 21 - 0
src/main/java/com/yideb/audit/service/hub/IAreaStoreService.java

@@ -0,0 +1,21 @@
+package com.yideb.audit.service.hub;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yideb.audit.entity.audit.vo.MapVo;
+import com.yideb.audit.entity.hub.AreaStore;
+
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:24 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+public interface IAreaStoreService extends IService<AreaStore> {
+
+	Boolean batchService(List<MapVo> list, Integer areaStoreMultiple);
+}

+ 18 - 0
src/main/java/com/yideb/audit/service/hub/IBasicStatisticService.java

@@ -0,0 +1,18 @@
+package com.yideb.audit.service.hub;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yideb.audit.entity.hub.BasicStatistic;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/10 18:39 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+public interface IBasicStatisticService extends IService<BasicStatistic> {
+
+	Boolean flushDb(BasicStatistic dataVo);
+}

+ 21 - 0
src/main/java/com/yideb/audit/service/hub/IMedicineRankService.java

@@ -0,0 +1,21 @@
+package com.yideb.audit.service.hub;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yideb.audit.entity.audit.vo.BasicVo;
+import com.yideb.audit.entity.hub.MedicineRank;
+
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:24 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+public interface IMedicineRankService extends IService<MedicineRank> {
+
+	Boolean batchService(List<BasicVo> list, Integer medicineTopMultiple);
+}

+ 21 - 0
src/main/java/com/yideb/audit/service/hub/IPrescriptionRankService.java

@@ -0,0 +1,21 @@
+package com.yideb.audit.service.hub;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yideb.audit.entity.audit.vo.BasicVo;
+import com.yideb.audit.entity.hub.PrescriptionRank;
+
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:25 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+public interface IPrescriptionRankService extends IService<PrescriptionRank> {
+
+	Boolean batchService(List<BasicVo> list, Integer storeTopMultiple);
+}

+ 23 - 0
src/main/java/com/yideb/audit/service/hub/IPrescriptionTrendService.java

@@ -0,0 +1,23 @@
+package com.yideb.audit.service.hub;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yideb.audit.entity.audit.vo.BasicVo;
+import com.yideb.audit.entity.hub.PrescriptionTrend;
+
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:25 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+public interface IPrescriptionTrendService extends IService<PrescriptionTrend> {
+
+	Boolean insert(List<BasicVo> list, Integer prescriptionAddDayMultiple);
+
+	Boolean batchInsert(List<BasicVo> list, Integer prescriptionAddDayMultiple);
+}

+ 23 - 0
src/main/java/com/yideb/audit/service/hub/IStoreTrendService.java

@@ -0,0 +1,23 @@
+package com.yideb.audit.service.hub;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yideb.audit.entity.audit.vo.BasicVo;
+import com.yideb.audit.entity.hub.StoreTrend;
+
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:26 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+public interface IStoreTrendService extends IService<StoreTrend> {
+
+	Boolean insert(List<BasicVo> list, Integer storeAddDayMultiple);
+
+	Boolean batchInsert(List<BasicVo> list, Integer storeAddDayMultiple);
+}

+ 49 - 0
src/main/java/com/yideb/audit/service/hub/impl/AreaStoreServiceImpl.java

@@ -0,0 +1,49 @@
+package com.yideb.audit.service.hub.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yideb.audit.dao.hub.AreaStoreMapper;
+import com.yideb.audit.entity.audit.vo.MapVo;
+import com.yideb.audit.entity.hub.AreaStore;
+import com.yideb.audit.service.hub.IAreaStoreService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:26 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@DS("postgresql")
+@Service
+public class AreaStoreServiceImpl extends ServiceImpl<AreaStoreMapper, AreaStore> implements IAreaStoreService {
+	@Override
+	public Boolean batchService(List<MapVo> list, Integer areaStoreMultiple) {
+		if (CollectionUtil.isEmpty(list)) {
+			return Boolean.FALSE;
+		}
+
+		remove(new QueryWrapper<>());
+		List<AreaStore> areaStores = new ArrayList<>(30);
+		list.forEach(v -> {
+			AreaStore areaStore = new AreaStore();
+			areaStore.setId(IdUtil.simpleUUID());
+			areaStore.setProvince(v.getProvince());
+			areaStore.setCity(v.getCity());
+			areaStore.setNumber(v.getValue() * areaStoreMultiple);
+			areaStores.add(areaStore);
+		});
+
+
+		return saveBatch(areaStores);
+	}
+}

+ 35 - 0
src/main/java/com/yideb/audit/service/hub/impl/BasicStatisticServiceImpl.java

@@ -0,0 +1,35 @@
+package com.yideb.audit.service.hub.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yideb.audit.dao.hub.BasicStatisticMapper;
+import com.yideb.audit.entity.hub.BasicStatistic;
+import com.yideb.audit.service.hub.IBasicStatisticService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/10 18:39 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@DS("postgresql")
+@Service
+public class BasicStatisticServiceImpl extends ServiceImpl<BasicStatisticMapper, BasicStatistic> implements IBasicStatisticService {
+	@Override
+	public Boolean flushDb(BasicStatistic dataVo) {
+		List<BasicStatistic> list = baseMapper.selectList(new QueryWrapper<>());
+		if (CollectionUtil.isNotEmpty(list)) {
+			remove(new QueryWrapper<>());
+		}
+
+		return save(dataVo);
+	}
+}

+ 48 - 0
src/main/java/com/yideb/audit/service/hub/impl/MedicineRankServiceImpl.java

@@ -0,0 +1,48 @@
+package com.yideb.audit.service.hub.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yideb.audit.dao.hub.MedicineRankMapper;
+import com.yideb.audit.entity.audit.vo.BasicVo;
+import com.yideb.audit.entity.hub.MedicineRank;
+import com.yideb.audit.service.hub.IMedicineRankService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:30 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@DS("postgresql")
+@Service
+public class MedicineRankServiceImpl extends ServiceImpl<MedicineRankMapper, MedicineRank> implements IMedicineRankService {
+	@Override
+	public Boolean batchService(List<BasicVo> list, Integer medicineTopMultiple) {
+		if (CollectionUtil.isEmpty(list)) {
+			return Boolean.FALSE;
+		}
+
+		remove(new QueryWrapper<>());
+		List<MedicineRank> ranks = new ArrayList<>(30);
+		list.forEach(v -> {
+			MedicineRank rank = new MedicineRank();
+			rank.setId(IdUtil.simpleUUID());
+			rank.setMedicineName(v.getKey());
+			rank.setNumber(v.getValue() * medicineTopMultiple);
+			ranks.add(rank);
+		});
+
+
+		return saveBatch(ranks);
+	}
+}

+ 49 - 0
src/main/java/com/yideb/audit/service/hub/impl/PrescriptionRankServiceImpl.java

@@ -0,0 +1,49 @@
+package com.yideb.audit.service.hub.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yideb.audit.dao.hub.PrescriptionRankMapper;
+import com.yideb.audit.entity.audit.vo.BasicVo;
+import com.yideb.audit.entity.hub.PrescriptionRank;
+import com.yideb.audit.service.hub.IPrescriptionRankService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:31 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@DS("postgresql")
+@Service
+public class PrescriptionRankServiceImpl extends ServiceImpl<PrescriptionRankMapper, PrescriptionRank> implements IPrescriptionRankService {
+
+	@Override
+	public Boolean batchService(List<BasicVo> list, Integer storeTopMultiple) {
+		if (CollectionUtil.isEmpty(list)) {
+			return Boolean.FALSE;
+		}
+
+		remove(new QueryWrapper<>());
+		List<PrescriptionRank> ranks = new ArrayList<>(30);
+		list.forEach(v -> {
+			PrescriptionRank rank = new PrescriptionRank();
+			rank.setId(IdUtil.simpleUUID());
+			rank.setClinicName(v.getKey());
+			rank.setNumber(v.getValue() * storeTopMultiple);
+			ranks.add(rank);
+		});
+
+
+		return saveBatch(ranks);
+	}
+}

+ 69 - 0
src/main/java/com/yideb/audit/service/hub/impl/PrescriptionTrendServiceImpl.java

@@ -0,0 +1,69 @@
+package com.yideb.audit.service.hub.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yideb.audit.dao.hub.PrescriptionTrendMapper;
+import com.yideb.audit.entity.audit.vo.BasicVo;
+import com.yideb.audit.entity.hub.PrescriptionTrend;
+import com.yideb.audit.service.hub.IPrescriptionTrendService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:32 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@DS("postgresql")
+@Service
+public class PrescriptionTrendServiceImpl extends ServiceImpl<PrescriptionTrendMapper, PrescriptionTrend> implements IPrescriptionTrendService {
+
+	@Override
+	public Boolean insert(List<BasicVo> list, Integer prescriptionAddDayMultiple) {
+		if (CollectionUtil.isEmpty(list)) {
+			return Boolean.FALSE;
+		}
+
+		if (list.size() > 1) {
+			return Boolean.FALSE;
+		}
+
+		BasicVo basicVo = list.get(0);
+
+		PrescriptionTrend trend = new PrescriptionTrend();
+		trend.setId(IdUtil.simpleUUID());
+		trend.setStatisticDate(basicVo.getKey());
+		trend.setNumber(basicVo.getValue() * prescriptionAddDayMultiple);
+		return save(trend);
+	}
+
+	@Override
+	public Boolean batchInsert(List<BasicVo> list, Integer prescriptionAddDayMultiple) {
+		if (CollectionUtil.isEmpty(list)) {
+			return Boolean.FALSE;
+		}
+
+		// 清理数据
+		remove(new QueryWrapper<>());
+		// 批量保存
+		List<PrescriptionTrend> trends = new ArrayList<>(30);
+		list.forEach(v -> {
+			PrescriptionTrend trend = new PrescriptionTrend();
+			trend.setId(IdUtil.simpleUUID());
+			trend.setStatisticDate(v.getKey());
+			trend.setNumber(v.getValue() * prescriptionAddDayMultiple);
+			trends.add(trend);
+		});
+
+		return saveBatch(trends);
+	}
+}

+ 69 - 0
src/main/java/com/yideb/audit/service/hub/impl/StoreTrendServiceImpl.java

@@ -0,0 +1,69 @@
+package com.yideb.audit.service.hub.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yideb.audit.dao.hub.StoreTrendMapper;
+import com.yideb.audit.entity.audit.vo.BasicVo;
+import com.yideb.audit.entity.hub.StoreTrend;
+import com.yideb.audit.service.hub.IStoreTrendService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/11 10:33 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@DS("postgresql")
+@Service
+public class StoreTrendServiceImpl extends ServiceImpl<StoreTrendMapper, StoreTrend> implements IStoreTrendService {
+
+	@Override
+	public Boolean insert(List<BasicVo> list, Integer storeAddDayMultiple) {
+		if (CollectionUtil.isEmpty(list)) {
+			return Boolean.FALSE;
+		}
+
+		if (list.size() > 1) {
+			return Boolean.FALSE;
+		}
+
+		BasicVo basicVo = list.get(0);
+
+		StoreTrend trend = new StoreTrend();
+		trend.setId(IdUtil.simpleUUID());
+		trend.setStatisticDate(basicVo.getKey());
+		trend.setNumber(basicVo.getValue() * storeAddDayMultiple);
+		return save(trend);
+	}
+
+	@Override
+	public Boolean batchInsert(List<BasicVo> list, Integer storeAddDayMultiple) {
+		if (CollectionUtil.isEmpty(list)) {
+			return Boolean.FALSE;
+		}
+
+		// 清理数据
+		remove(new QueryWrapper<>());
+		// 批量保存
+		List<StoreTrend> trends = new ArrayList<>(30);
+		list.forEach(v -> {
+			StoreTrend trend = new StoreTrend();
+			trend.setId(IdUtil.simpleUUID());
+			trend.setStatisticDate(v.getKey());
+			trend.setNumber(v.getValue() * storeAddDayMultiple);
+			trends.add(trend);
+		});
+
+		return saveBatch(trends);
+	}
+}

+ 116 - 0
src/main/java/com/yideb/audit/task/BottomScheduleTask.java

@@ -0,0 +1,116 @@
+package com.yideb.audit.task;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
+import com.yideb.audit.config.GlobalConstant;
+import com.yideb.audit.entity.audit.vo.BasicVo;
+import com.yideb.audit.entity.audit.vo.MapVo;
+import com.yideb.audit.service.audit.IBottomService;
+import com.yideb.audit.service.audit.IStatisticConfigService;
+import com.yideb.audit.service.hub.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <b>Application name:</b> yideb-audit-statistic <br>
+ * <b>Application describing: </b> <br>
+ * <b>Copyright:</b> Copyright &copy; 2020 明医众禾科技(北京)有限责任公司 版权所有。<br>
+ * <b>Company:</b> 明医众禾科技(北京)有限责任公司 <br>
+ * <b>@Date:</b> 2020/8/10 15:34 <br>
+ * <b>@Author:</b> <a href="mailto:lijing@miyzh.com"> 李璟 </a> <br>
+ * <b>@Checker:</b>
+ */
+@Slf4j
+@Component
+public class BottomScheduleTask {
+
+	@Resource
+	private IBottomService bottomService;
+	@Resource
+	private IStatisticConfigService statisticConfigService;
+	@Resource
+	private IStoreTrendService storeTrendService;
+	@Resource
+	private IPrescriptionTrendService prescriptionTrendService;
+	@Resource
+	private IMedicineRankService medicineRankService;
+	@Resource
+	private IPrescriptionRankService prescriptionRankService;
+	@Resource
+	private IAreaStoreService areaStoreService;
+
+	@Scheduled(cron = "0 0 3 * * ?")
+	public void execute() {
+		log.info("底部数据刷新任务开始");
+		long startTime = System.currentTimeMillis();
+
+		// 读取数据库配置
+		log.info("读取配置表信息开始");
+		Map<Integer, Integer> configMap = statisticConfigService.allConfigs();
+		Integer storeAddDayMultiple = configMap.getOrDefault(GlobalConstant.BusinessType.STORE_ADD_DAY.getCode(), 1);
+		Integer prescriptionAddDayMultiple = configMap.getOrDefault(GlobalConstant.BusinessType.AUDIT_ADD_DAY.getCode(), 1);
+		Integer storeTopMultiple = configMap.getOrDefault(GlobalConstant.BusinessType.STORE_TOP_10.getCode(), 1);
+		Integer storeTopLevel = configMap.getOrDefault(GlobalConstant.BusinessType.STORE_TOP_LEVEL.getCode(), GlobalConstant.DEFAULT_TOP_NUMBER);
+		Integer medicineTopMultiple = configMap.getOrDefault(GlobalConstant.BusinessType.MEDICINE_TOP_10.getCode(), 1);
+		Integer medicineTopLevel = configMap.getOrDefault(GlobalConstant.BusinessType.MEDICINE_TOP_LEVEL.getCode(), GlobalConstant.DEFAULT_TOP_NUMBER);
+		Integer areaStoreMultiple = configMap.getOrDefault(GlobalConstant.BusinessType.AREA_STORE.getCode(), 1);
+		log.info("读取配置表信息结束");
+		log.info("读取配置表,花费时间:{}", System.currentTimeMillis() - startTime);
+
+		// 昨天开始时间
+		String yesterdayStartTime = DateUtil.beginOfDay(DateUtil.yesterday()).toString(DatePattern.NORM_DATETIME_PATTERN);
+		String yesterdayEndTime = DateUtil.endOfDay(DateUtil.yesterday()).toString(DatePattern.NORM_DATETIME_PATTERN);
+
+		log.info("查询底部信息开始");
+		// 昨日新增药店
+		List<BasicVo> lastDayStores = bottomService.lastDayStores(yesterdayStartTime, yesterdayEndTime);
+		// 昨日新增处方
+		List<BasicVo> lastDayPrescriptions = bottomService.lastDayPrescriptions(yesterdayStartTime, yesterdayEndTime);
+		// 处方药销售排名
+		List<BasicVo> storeRankList = bottomService.storeRank(storeTopLevel);
+		// 药品排名
+		List<BasicVo> medicineRankList = bottomService.medicineRank(medicineTopLevel);
+		// 地图数据
+		List<MapVo> storeMapList = bottomService.storeMap();
+		log.info("查询底部信息结束");
+		log.info("查询底部信息,花费时间:{}", System.currentTimeMillis() - startTime);
+
+		// 昨日新增药店保存
+		log.info("写数据到远程数据库开始");
+		if (CollectionUtil.isEmpty(lastDayStores)) {
+			lastDayStores = new ArrayList<>();
+			BasicVo vo = new BasicVo();
+			vo.setKey(DateUtil.yesterday().toString(DatePattern.NORM_DATE_PATTERN));
+			vo.setValue(GlobalConstant.YesOrNo.NO.getCode());
+			lastDayStores.add(vo);
+		}
+		storeTrendService.insert(lastDayStores, storeAddDayMultiple);
+		// 昨日新增处方
+		if (CollectionUtil.isEmpty(lastDayPrescriptions)) {
+			lastDayPrescriptions = new ArrayList<>();
+			BasicVo vo = new BasicVo();
+			vo.setKey(DateUtil.yesterday().toString(DatePattern.NORM_DATE_PATTERN));
+			vo.setValue(GlobalConstant.YesOrNo.NO.getCode());
+			lastDayPrescriptions.add(vo);
+		}
+		prescriptionTrendService.insert(lastDayPrescriptions, prescriptionAddDayMultiple);
+		// 处方药销售排名
+		prescriptionRankService.batchService(storeRankList, storeTopMultiple);
+		// 药品排名
+		medicineRankService.batchService(medicineRankList, medicineTopMultiple);
+		// 地图数据
+		areaStoreService.batchService(storeMapList, areaStoreMultiple);
+		log.info("写数据到远程数据库结束");
+		log.info("写数据到远程数据库,花费时间:{}", System.currentTimeMillis() - startTime);
+
+		log.info("底部数据刷新任务结束");
+		log.info("消耗时间:{}", System.currentTimeMillis() - startTime);
+	}
+}

+ 49 - 15
src/main/java/com/yideb/audit/task/TopScheduleTask.java

@@ -2,13 +2,19 @@ package com.yideb.audit.task;
 
 
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
-import com.yideb.audit.entity.vo.TopDataVo;
-import com.yideb.audit.service.ITopDataService;
+import cn.hutool.core.util.IdUtil;
+import com.yideb.audit.config.GlobalConstant;
+import com.yideb.audit.entity.hub.BasicStatistic;
+import com.yideb.audit.service.audit.IStatisticConfigService;
+import com.yideb.audit.service.audit.ITopService;
+import com.yideb.audit.service.hub.IBasicStatisticService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.util.Date;
 import java.util.Date;
+import java.util.Map;
 
 
 /**
 /**
  * <b>Application name:</b> yideb-audit-statistic <br>
  * <b>Application name:</b> yideb-audit-statistic <br>
@@ -18,16 +24,33 @@ import java.util.Date;
  * <b>@Date:</b> 2020/8/5 18:36 <br>
  * <b>@Date:</b> 2020/8/5 18:36 <br>
  * <b>@author:</b> <a href="mailto:Lijing@miyzh.com"> Lijing </a> <br>
  * <b>@author:</b> <a href="mailto:Lijing@miyzh.com"> Lijing </a> <br>
  */
  */
+@Slf4j
 @Component
 @Component
 public class TopScheduleTask {
 public class TopScheduleTask {
 
 
 	@Resource
 	@Resource
-	private ITopDataService topDataService;
+	private ITopService topDataService;
+	@Resource
+	private IStatisticConfigService statisticConfigService;
+	@Resource
+	private IBasicStatisticService basicStatisticService;
 
 
-	@Scheduled(cron = "0 0 * * * ?")
+	@Scheduled(cron = "0 0 0/1 * * ?")
 	public void execute() {
 	public void execute() {
+		log.info("头部数据刷新任务开始");
+		long startTime = System.currentTimeMillis();
+		// 读取数据库配置
+		log.info("读取配置表信息开始");
+		Map<Integer, Integer> configMap = statisticConfigService.allConfigs();
+		Integer storeMultiple = configMap.getOrDefault(GlobalConstant.BusinessType.STORE.getCode(), 1);
+		Integer prescriptionMultiple = configMap.getOrDefault(GlobalConstant.BusinessType.PRESCRIPTION.getCode(), 1);
+		Integer acceptMultiple = configMap.getOrDefault(GlobalConstant.BusinessType.ACCEPT.getCode(), 1);
+		Integer auditMultiple = configMap.getOrDefault(GlobalConstant.BusinessType.AUDIT.getCode(), 1);
+		log.info("读取配置表信息结束");
+		log.info("读取配置表,花费时间:{}", System.currentTimeMillis() - startTime);
+
 		// 数据容器
 		// 数据容器
-		TopDataVo dataVo = new TopDataVo();
+		BasicStatistic dataVo = new BasicStatistic();
 		// 星期时间
 		// 星期时间
 		String weekStartTime = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -6).toString(DatePattern.NORM_DATETIME_PATTERN);
 		String weekStartTime = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -6).toString(DatePattern.NORM_DATETIME_PATTERN);
 		String weekEndTime = DateUtil.endOfDay(new Date()).toString(DatePattern.NORM_DATETIME_PATTERN);
 		String weekEndTime = DateUtil.endOfDay(new Date()).toString(DatePattern.NORM_DATETIME_PATTERN);
@@ -35,30 +58,41 @@ public class TopScheduleTask {
 		String todayStartTime = DateUtil.beginOfDay(new Date()).toString(DatePattern.NORM_DATETIME_PATTERN);
 		String todayStartTime = DateUtil.beginOfDay(new Date()).toString(DatePattern.NORM_DATETIME_PATTERN);
 		String todayEndTime = DateUtil.endOfDay(new Date()).toString(DatePattern.NORM_DATETIME_PATTERN);
 		String todayEndTime = DateUtil.endOfDay(new Date()).toString(DatePattern.NORM_DATETIME_PATTERN);
 
 
+		log.info("查询头部信息开始");
 		// 累计注册药店
 		// 累计注册药店
 		Integer totalClinicRegCount = topDataService.queryClinicRegCount(null, null);
 		Integer totalClinicRegCount = topDataService.queryClinicRegCount(null, null);
 		// 累计审核处方
 		// 累计审核处方
-		Integer auditCount = topDataService.queryAuditCount(null, null);
+		Integer totalPrescriptionCount = topDataService.queryPrescriptionCount(null, null);
 		// 本周注册药店
 		// 本周注册药店
 		Integer weekClinicRegCount = topDataService.queryClinicRegCount(weekStartTime, weekEndTime);
 		Integer weekClinicRegCount = topDataService.queryClinicRegCount(weekStartTime, weekEndTime);
 		// 今日处方总量
 		// 今日处方总量
-		Integer todayAuditCount = topDataService.queryAuditCount(todayStartTime, todayEndTime);
+		Integer todayPrescriptionCount = topDataService.queryPrescriptionCount(todayStartTime, todayEndTime);
 		// 今日药店数量
 		// 今日药店数量
 		Integer todayClinicCount = topDataService.queryClinicCount(todayStartTime, todayEndTime);
 		Integer todayClinicCount = topDataService.queryClinicCount(todayStartTime, todayEndTime);
 		// 今日医生数量
 		// 今日医生数量
 		Integer todayDoctorCount = topDataService.queryDoctorCount(todayStartTime, todayEndTime);
 		Integer todayDoctorCount = topDataService.queryDoctorCount(todayStartTime, todayEndTime);
 		// 今日药师数量
 		// 今日药师数量
 		Integer todayPharmacistCount = topDataService.queryPharmacistCount(todayStartTime, todayEndTime);
 		Integer todayPharmacistCount = topDataService.queryPharmacistCount(todayStartTime, todayEndTime);
-
-		dataVo.setTotalClinicRegCount(totalClinicRegCount);
-		dataVo.setAuditCount(auditCount);
-		dataVo.setWeekClinicRegCount(weekClinicRegCount);
-		dataVo.setTodayAuditCount(todayAuditCount);
-		dataVo.setTodayClinicCount(todayClinicCount);
-		dataVo.setTodayDoctorCount(todayDoctorCount);
-		dataVo.setTodayPharmacistCount(todayPharmacistCount);
+		log.info("查询头部信息结束");
+		log.info("查询头部信息,花费时间:{}", System.currentTimeMillis() - startTime);
 
 
 		// 写数据
 		// 写数据
+		dataVo.setId(IdUtil.simpleUUID());
+		dataVo.setTotalClinicRegCount(totalClinicRegCount * storeMultiple);
+		dataVo.setTotalPrescriptionCount(totalPrescriptionCount * prescriptionMultiple);
+		dataVo.setWeekClinicRegCount(weekClinicRegCount * storeMultiple);
+		dataVo.setTodayPrescriptionCount(todayPrescriptionCount * prescriptionMultiple);
+		dataVo.setTodayClinicCount(todayClinicCount * storeMultiple);
+		dataVo.setTodayDoctorCount(todayDoctorCount * acceptMultiple);
+		dataVo.setTodayPharmacistCount(todayPharmacistCount * auditMultiple);
+
+		log.info("写数据到远程数据库开始");
+		basicStatisticService.flushDb(dataVo);
+		log.info("写数据到远程数据库结束");
+		log.info("写数据到远程数据库,花费时间:{}", System.currentTimeMillis() - startTime);
+
+		log.info("头部数据刷新任务结束");
+		log.info("消耗时间:{}", System.currentTimeMillis() - startTime);
 	}
 	}
 
 
 }
 }

+ 2 - 2
src/main/java/com/yideb/audit/task/dynamic/DynamicScheduleTask.java

@@ -3,8 +3,8 @@ package com.yideb.audit.task.dynamic;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
-import com.yideb.audit.entity.ScheduleTask;
-import com.yideb.audit.service.IScheduleTaskService;
+import com.yideb.audit.entity.audit.ScheduleTask;
+import com.yideb.audit.service.audit.IScheduleTaskService;
 import com.yideb.audit.util.SpringUtil;
 import com.yideb.audit.util.SpringUtil;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.Trigger;
 import org.springframework.scheduling.Trigger;

+ 7 - 12
src/main/resources/config/application-dev.yml

@@ -1,9 +1,9 @@
 spring:
 spring:
   datasource:
   datasource:
     dynamic:
     dynamic:
-      primary: dev
+      primary: mysql
       datasource:
       datasource:
-        dev:
+        mysql:
           driverClassName: com.mysql.cj.jdbc.Driver
           driverClassName: com.mysql.cj.jdbc.Driver
           url: jdbc:mysql://192.168.1.204:3306/yideb-dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true
           url: jdbc:mysql://192.168.1.204:3306/yideb-dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true
           username: root
           username: root
@@ -13,13 +13,8 @@ spring:
             filters: config,stat
             filters: config,stat
             connectProperties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAINWThlExenD0JcLXyJAToGhihqKDLOSrK7KZkqkEUWmW8JX9pGjah4PEVt2Z3uMVrYH87UX7PEQD9qo0C5L5p0CAwEAAQ==
             connectProperties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAINWThlExenD0JcLXyJAToGhihqKDLOSrK7KZkqkEUWmW8JX9pGjah4PEVt2Z3uMVrYH87UX7PEQD9qo0C5L5p0CAwEAAQ==
             validationQuery: "SELECT 1"
             validationQuery: "SELECT 1"
-        audit:
-          driverClassName: com.mysql.cj.jdbc.Driver
-          url: jdbc:mysql://192.168.1.204:3306/yideb-audit?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true
-          username: root
-          password: I3CmCne0WYHicNXAOXACXccYdlPGzv4sOTC65DMX20cwzWgcCd060FcrQ06NZy7EvHH0H9F2U4lt2sAsW4Jmqw==
-          druid:
-            publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAINWThlExenD0JcLXyJAToGhihqKDLOSrK7KZkqkEUWmW8JX9pGjah4PEVt2Z3uMVrYH87UX7PEQD9qo0C5L5p0CAwEAAQ==
-            filters: config,stat
-            connectProperties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAINWThlExenD0JcLXyJAToGhihqKDLOSrK7KZkqkEUWmW8JX9pGjah4PEVt2Z3uMVrYH87UX7PEQD9qo0C5L5p0CAwEAAQ==
-            validationQuery: "SELECT 1"
+        postgresql:
+          driverClassName: org.postgresql.Driver
+          url: jdbc:postgresql://140.207.240.244:54532/datahub?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true
+          username: datahubrole
+          password: "!myzh123"

+ 1 - 3
src/main/resources/config/application.yml

@@ -8,9 +8,7 @@ server:
   port: 3001
   port: 3001
 
 
 mybatis-plus:
 mybatis-plus:
-  configuration:
-    mapper-locations: classpath:mapper/*TopDataMapper.xml
-    config-location: classpath:config/mybatis-config.xml
+  mapper-locations: classpath:mapper/*/*Mapper.xml
 
 
 logging:
 logging:
   config: classpath:config/logback.xml
   config: classpath:config/logback.xml

+ 102 - 0
src/main/resources/mapper/audit/BottomMapper.xml

@@ -0,0 +1,102 @@
+<?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.yideb.audit.dao.audit.BottomMapper">
+
+    <select id="dailyStores" resultType="com.yideb.audit.entity.audit.vo.BasicVo">
+        SELECT
+            DATE_FORMAT(open_time, '%Y-%m-%d') `key`,
+            COUNT(id) `value`
+        FROM
+            c_cooperation_clinic
+        WHERE
+            open_time &lt;= #{endTime}
+        GROUP BY
+            `key`
+        ORDER BY
+            open_time ASC
+    </select>
+
+    <select id="lastDayStores" resultType="com.yideb.audit.entity.audit.vo.BasicVo">
+        SELECT
+            DATE_FORMAT(open_time, '%Y-%m-%d') `key`,
+            COUNT(id) `value`
+        FROM
+            c_cooperation_clinic
+        WHERE
+            open_time &gt;= #{startTime}
+            AND open_time &lt;= #{endTime}
+        GROUP BY `key`
+    </select>
+
+    <select id="dailyPrescriptions" resultType="com.yideb.audit.entity.audit.vo.BasicVo">
+        SELECT
+            DATE_FORMAT(launch_time, '%Y-%m-%d') `key`,
+            COUNT(id) `value`
+        FROM
+            c_cooperation_audit
+        WHERE
+            launch_time &lt;= #{endTime}
+        GROUP BY
+            `key`
+        ORDER BY
+            launch_time ASC
+    </select>
+
+    <select id="lastDayPrescriptions" resultType="com.yideb.audit.entity.audit.vo.BasicVo">
+        SELECT
+            DATE_FORMAT(launch_time, '%Y-%m-%d') `key`,
+            COUNT(id) `value`
+        FROM
+            c_cooperation_audit
+        WHERE
+            launch_time &gt;= #{startTime}
+            AND launch_time &lt; #{endTime}
+        GROUP BY `key`
+    </select>
+
+    <select id="medicineRank" resultType="com.yideb.audit.entity.audit.vo.BasicVo">
+        SELECT
+            medicine_name `key`,
+            COUNT(id) `value`
+        FROM
+            clc_prescription_med
+        WHERE
+            clinic_id IN (SELECT clinic_id FROM c_cooperation_clinic WHERE type = 1)
+        GROUP BY
+            medicine_name
+        ORDER BY
+            `value` DESC
+        LIMIT
+            #{topNumber}
+    </select>
+
+    <select id="storeRank" resultType="com.yideb.audit.entity.audit.vo.BasicVo">
+        SELECT
+            t2.clinic_name `key`,
+            COUNT(t1.id) `value`
+        FROM
+            c_cooperation_audit t1 LEFT JOIN clc_clinic t2 ON t1.launch_clinic_id = t2.clinic_id
+        GROUP BY
+            t1.launch_clinic_id
+        ORDER BY
+            `value` DESC
+        LIMIT
+            #{topNumber}
+    </select>
+
+    <select id="storeMap" resultType="com.yideb.audit.entity.audit.vo.MapVo">
+        SELECT
+            t2.NAME province,
+            t3.NAME city,
+            count( t1.id ) AS `value`
+        FROM
+            `c_cooperation_clinic` t1
+            LEFT JOIN sys_nation t2 ON LEFT ( t1.clinic_id, 2 ) = t2.CODE AND t2.`level` = 1
+            LEFT JOIN sys_nation t3 ON LEFT ( t1.clinic_id, 4 ) = t3.CODE AND t3.`level` = 2
+        WHERE
+            t1.type = 1
+            AND LEFT ( t1.clinic_id, 2 ) NOT IN ( '11', '12', '71', '81', '82' )
+        GROUP BY
+            LEFT ( t1.clinic_id, 4 )
+    </select>
+</mapper>

+ 16 - 12
src/main/resources/mapper/TopDataMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?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">
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.yideb.audit.dao.TopDataMapper">
+<mapper namespace="com.yideb.audit.dao.audit.TopMapper">
     <select id="queryClinicRegCount" resultType="java.lang.Integer">
     <select id="queryClinicRegCount" resultType="java.lang.Integer">
         SELECT
         SELECT
             COUNT(1)
             COUNT(1)
@@ -16,60 +16,64 @@
             </if>
             </if>
     </select>
     </select>
 
 
-    <select id="queryAuditCount" resultType="java.lang.Integer">
+    <select id="queryPrescriptionCount" resultType="java.lang.Integer">
         SELECT
         SELECT
             COUNT(1)
             COUNT(1)
         FROM
         FROM
             c_cooperation_audit
             c_cooperation_audit
-        WHERE
+        <where>
             <if test="startTime != null">
             <if test="startTime != null">
                 AND launch_time &gt;= #{startTime}
                 AND launch_time &gt;= #{startTime}
             </if>
             </if>
             <if test="endTime != null">
             <if test="endTime != null">
                 AND launch_time &lt; #{endTime}
                 AND launch_time &lt; #{endTime}
             </if>
             </if>
+        </where>
     </select>
     </select>
 
 
     <select id="queryClinicCount" resultType="java.lang.Integer">
     <select id="queryClinicCount" resultType="java.lang.Integer">
-        SELECT DISTINCT
-            launch_clinic_id
+        SELECT
+            COUNT(DISTINCT launch_clinic_id)
         FROM
         FROM
             c_cooperation_audit
             c_cooperation_audit
-        WHERE
+        <where>
             <if test="startTime != null">
             <if test="startTime != null">
                 AND launch_time &gt;= #{startTime}
                 AND launch_time &gt;= #{startTime}
             </if>
             </if>
             <if test="endTime != null">
             <if test="endTime != null">
                 AND launch_time &lt; #{endTime}
                 AND launch_time &lt; #{endTime}
             </if>
             </if>
+        </where>
     </select>
     </select>
 
 
     <select id="queryDoctorCount" resultType="java.lang.Integer">
     <select id="queryDoctorCount" resultType="java.lang.Integer">
-        SELECT DISTINCT
-            accept_user_id
+        SELECT
+            COUNT(DISTINCT accept_user_id)
         FROM
         FROM
             c_cooperation_audit
             c_cooperation_audit
-        WHERE
+        <where>
             <if test="startTime != null">
             <if test="startTime != null">
                 AND launch_time &gt;= #{startTime}
                 AND launch_time &gt;= #{startTime}
             </if>
             </if>
             <if test="endTime != null">
             <if test="endTime != null">
                 AND launch_time &lt; #{endTime}
                 AND launch_time &lt; #{endTime}
             </if>
             </if>
+        </where>
     </select>
     </select>
 
 
     <select id="queryPharmacistCount" resultType="java.lang.Integer">
     <select id="queryPharmacistCount" resultType="java.lang.Integer">
-        SELECT DISTINCT
-            audit_user_id
+        SELECT
+            COUNT(DISTINCT audit_user_id)
         FROM
         FROM
             c_cooperation_audit
             c_cooperation_audit
-        WHERE
+        <where>
             <if test="startTime != null">
             <if test="startTime != null">
                 AND launch_time &gt;= #{startTime}
                 AND launch_time &gt;= #{startTime}
             </if>
             </if>
             <if test="endTime != null">
             <if test="endTime != null">
                 AND launch_time &lt; #{endTime}
                 AND launch_time &lt; #{endTime}
             </if>
             </if>
+        </where>
     </select>
     </select>
 
 
 </mapper>
 </mapper>

+ 5 - 0
src/test/java/com/yideb/audit/DateTest.java

@@ -20,5 +20,10 @@ public class DateTest {
 	public void test() {
 	public void test() {
 		System.out.println(DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -6).toString(DatePattern.NORM_DATETIME_PATTERN));
 		System.out.println(DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -6).toString(DatePattern.NORM_DATETIME_PATTERN));
 		System.out.println(DateUtil.endOfDay(new Date()));
 		System.out.println(DateUtil.endOfDay(new Date()));
+
+		System.out.println(DateUtil.beginOfDay(DateUtil.yesterday()).toString(DatePattern.NORM_DATETIME_PATTERN));
+		System.out.println(DateUtil.endOfDay(DateUtil.yesterday()).toString(DatePattern.NORM_DATETIME_PATTERN));
+
+		System.out.println(DateUtil.yesterday().toString(DatePattern.NORM_DATE_PATTERN));
 	}
 	}
 }
 }