From 453ee097563df5788f96e102b38249f0ca70d82a Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 14 十月 2025 18:41:54 +0800
Subject: [PATCH] 诊所和供应商首页统计

---
 ruoyi-system/src/main/java/com/ruoyi/system/model/TSysOrderGoods.java                         |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysEducationalInfoController.java     |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java      |   30 +
 ruoyi-system/src/main/resources/mapper/system/TSysOrderMapper.xml                             |   67 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java               |   53 +++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysOrderMapper.java                       |   24 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysLiveController.java                |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/TSysOrderService.java                     |   14 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsGoodsCountVO.java       |   23 +
 ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml                       |   72 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java            |   35 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionController.java          |   18 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java                         |    2 
 ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java                           |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/query/DataStatisticsQuery.java                    |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsVO.java                   |   23 +
 ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsGoodsTypeVO.java          |   17 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysProductIntroductionController.java |   74 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsVO.java                 |   24 +
 ruoyi-system/src/main/resources/mapper/system/TSysOrderGoodsMapper.xml                        |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java                 |   53 +++
 ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspection.java                         |   10 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysChronicDiseaseController.java      |   31 +
 ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsGoodsCountVO.java         |   23 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java          |  295 ++++++++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsGoodsTypeVO.java        |   18 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java             |   36 +
 27 files changed, 931 insertions(+), 26 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java
index 9fa441a..cdd01ec 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java
@@ -7,8 +7,7 @@
 import com.ruoyi.system.model.*;
 import com.ruoyi.system.query.DataStatisticsQuery;
 import com.ruoyi.system.service.*;
-import com.ruoyi.system.vo.SupplierThirtyMoneyProcurementStatisticsVO;
-import com.ruoyi.system.vo.SupplierThirtyProcurementStatisticsVO;
+import com.ruoyi.system.vo.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,9 +37,10 @@
     private final TCrmClinicService crmClinicService;
     private final TSysAppUserService sysAppUserService;
     private final TCrmClinicPointsService crmClinicPointsService;
+    private final TSysOrderService sysOrderService;
 
     @Autowired
-    public DataStatisticsController(TErpProcurementService erpProcurementService, TokenService tokenService, ISysUserService sysUserService, TCrmSupplierService crmSupplierService, TCrmClinicService crmClinicService, TSysAppUserService sysAppUserService, TCrmClinicPointsService crmClinicPointsService) {
+    public DataStatisticsController(TErpProcurementService erpProcurementService, TokenService tokenService, ISysUserService sysUserService, TCrmSupplierService crmSupplierService, TCrmClinicService crmClinicService, TSysAppUserService sysAppUserService, TCrmClinicPointsService crmClinicPointsService, TSysOrderService sysOrderService) {
         this.erpProcurementService = erpProcurementService;
         this.tokenService = tokenService;
         this.sysUserService = sysUserService;
@@ -48,6 +48,7 @@
         this.crmClinicService = crmClinicService;
         this.sysAppUserService = sysAppUserService;
         this.crmClinicPointsService = crmClinicPointsService;
+        this.sysOrderService = sysOrderService;
     }
 
     /**
@@ -75,7 +76,7 @@
                 endTime = LocalDate.now() + " 23:59:59";
                 break;
             case 4:
-                startTime = LocalDate.now().minusMonths(6) + " 00:00:00";
+                startTime = LocalDate.now().minusMonths(5) + " 00:00:00";
                 endTime = LocalDate.now() + " 23:59:59";
                 break;
             case 5:
@@ -216,8 +217,292 @@
         return R.ok(map);
     }
 
+    /**
+     * 供应商销售统计总类总数
+     */
+    @ApiOperation(value = "供应商销售统计总类总数",notes = "typeTotalCount:总类,totalCount:总数")
+    @PostMapping(value = "/supplierSalesStatisticsSum")
+    public R<Map<String,Integer>> supplierSalesStatisticsSum() {
+        Long userId = tokenService.getLoginUser().getUserId();
+
+        TCrmSupplier crmSupplier = crmSupplierService.getOne(Wrappers.lambdaQuery(TCrmSupplier.class)
+                .eq(TCrmSupplier::getUserId, userId));
+        // 查询药品总类和总数
+        Integer typeTotalCount = erpProcurementService.supplierSalesStatisticsTypeCount(crmSupplier.getId());
+        Integer totalCount = erpProcurementService.supplierSalesStatisticsCount(crmSupplier.getId());
+        Map<String,Integer> map = new HashMap<>();
+        map.put("typeTotalCount", typeTotalCount);
+        map.put("totalCount", totalCount);
+
+        return R.ok(map);
+    }
+
+    /**
+     * 供应商销售统计
+     */
+    @ApiOperation(value = "供应商销售统计")
+    @PostMapping(value = "/supplierSalesStatistics")
+    public R<SupplierSalesStatisticsVO> supplierSalesStatistics(@Validated @RequestBody DataStatisticsQuery query) {
+        Long userId = tokenService.getLoginUser().getUserId();
+
+        String startTime = null;
+        String endTime = null;
+        switch (query.getTimeType()){
+            case 1:
+                startTime = LocalDate.now() + " 00:00:00";
+                endTime = LocalDate.now() + " 23:59:59";
+                break;
+            case 2:
+                startTime = LocalDate.now().minusDays(1) + " 00:00:00";
+                endTime = LocalDate.now().minusDays(1) + " 23:59:59";
+                break;
+            case 3:
+                startTime = LocalDate.now().minusDays(6) + " 00:00:00";
+                endTime = LocalDate.now() + " 23:59:59";
+                break;
+            case 4:
+                startTime = LocalDate.now().minusMonths(5).withDayOfMonth(1) + " 00:00:00";
+                endTime = LocalDate.now() + " 23:59:59";
+                break;
+            case 5:
+                startTime = LocalDate.now().minusYears(1).withDayOfMonth(1) + " 00:00:00";
+                endTime = LocalDate.now() + " 23:59:59";
+                break;
+        }
+        TCrmSupplier crmSupplier = crmSupplierService.getOne(Wrappers.lambdaQuery(TCrmSupplier.class)
+                .eq(TCrmSupplier::getUserId, userId));
+        SupplierSalesStatisticsVO supplierSalesStatisticsVO = new SupplierSalesStatisticsVO();
+        // 销售金额
+        BigDecimal totalMoney = erpProcurementService.supplierSalesStatisticsMoney(crmSupplier.getId(), startTime, endTime);
+        supplierSalesStatisticsVO.setSalesMoney(totalMoney);
+
+        // 查询销售前十占比
+        List<SupplierSalesStatisticsGoodsTypeVO> supplierSalesStatisticsGoodsTypeVOS = erpProcurementService.supplierSalesStatisticsGoodsType(crmSupplier.getId(), startTime, endTime);
+        supplierSalesStatisticsVO.setSupplierSalesStatisticsGoodsTypeVOS(supplierSalesStatisticsGoodsTypeVOS);
+        // 查询30天销售统计
+        List<SupplierSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCountVOS;
+        if(query.getTimeType() == 1 || query.getTimeType() == 2 || query.getTimeType() == 3){
+            supplierSalesStatisticsGoodsCountVOS = erpProcurementService.supplierSalesStatisticsGoodsCount(crmSupplier.getId(), startTime, endTime,query.getGoodsName());
+        }else {
+            supplierSalesStatisticsGoodsCountVOS = erpProcurementService.supplierSalesStatisticsGoodsCountMonth(crmSupplier.getId(), startTime, endTime,query.getGoodsName());
+        }
+        SimpleDateFormat format = new SimpleDateFormat("MM.dd");
+        SimpleDateFormat formatMonth = new SimpleDateFormat("yyyy.MM");
+        switch (query.getTimeType()){
+            case 1:
+                if(CollectionUtils.isEmpty(supplierSalesStatisticsGoodsCountVOS)){
+                    SupplierSalesStatisticsGoodsCountVO supplierSalesStatisticsGoodsCountVO = new SupplierSalesStatisticsGoodsCountVO();
+                    String time = format.format(DateUtils.localDateTimeToDate(LocalDateTime.now()));
+                    supplierSalesStatisticsGoodsCountVO.setTime(time);
+                    supplierSalesStatisticsGoodsCountVO.setGoodsCount(0);
+                    supplierSalesStatisticsGoodsCountVOS.add(supplierSalesStatisticsGoodsCountVO);
+                }
+                break;
+            case 2:
+                if(CollectionUtils.isEmpty(supplierSalesStatisticsGoodsCountVOS)){
+                    SupplierSalesStatisticsGoodsCountVO supplierSalesStatisticsGoodsCountVO = new SupplierSalesStatisticsGoodsCountVO();
+                    String time = format.format(DateUtils.localDateTimeToDate(LocalDateTime.now().minusDays(1)));
+                    supplierSalesStatisticsGoodsCountVO.setTime(time);
+                    supplierSalesStatisticsGoodsCountVO.setGoodsCount(0);
+                    supplierSalesStatisticsGoodsCountVOS.add(supplierSalesStatisticsGoodsCountVO);
+                }
+                break;
+            case 3:
+                LocalDateTime days = LocalDateTime.now().minusDays(6);
+                for (int i = 0; i < 7; i++) {
+                    LocalDateTime timeNow = days.plusDays(i);
+                    List<SupplierSalesStatisticsGoodsCountVO> vos = supplierSalesStatisticsGoodsCountVOS.stream().filter(vo -> timeNow.toLocalDate().isEqual(vo.getPayTime())).collect(Collectors.toList());
+                    if(CollectionUtils.isEmpty(vos)){
+                        SupplierSalesStatisticsGoodsCountVO vo = new SupplierSalesStatisticsGoodsCountVO();
+                        String time = format.format(DateUtils.localDateTimeToDate(timeNow));
+                        vo.setTime(time);
+                        vo.setGoodsCount(0);
+                        supplierSalesStatisticsGoodsCountVOS.add(vo);
+                    }
+                }
+                supplierSalesStatisticsGoodsCountVOS.sort(Comparator.comparing(SupplierSalesStatisticsGoodsCountVO::getTime));
+                break;
+            case 4:
+                LocalDateTime month = LocalDateTime.now().minusMonths(5);
+                for (int i = 0; i < 6; i++) {
+                    LocalDateTime timeNow = month.plusMonths(i);
+                    Date date = DateUtils.localDateTimeToDate(timeNow);
+                    String time = formatMonth.format(date);
+                    List<SupplierSalesStatisticsGoodsCountVO> vos = supplierSalesStatisticsGoodsCountVOS.stream().filter(vo -> time.equals(vo.getTime())).collect(Collectors.toList());
+                    if(CollectionUtils.isEmpty(vos)){
+                        SupplierSalesStatisticsGoodsCountVO vo = new SupplierSalesStatisticsGoodsCountVO();
+                        vo.setTime(time);
+                        vo.setGoodsCount(0);
+                        supplierSalesStatisticsGoodsCountVOS.add(vo);
+                    }
+                }
+                supplierSalesStatisticsGoodsCountVOS.sort(Comparator.comparing(SupplierSalesStatisticsGoodsCountVO::getTime));
+                break;
+            case 5:
+                LocalDateTime years = LocalDateTime.now().minusYears(1);
+                for (int i = 0; i < 12; i++) {
+                    LocalDateTime timeNow = years.plusMonths(i);
+                    Date date = DateUtils.localDateTimeToDate(timeNow);
+                    String time = formatMonth.format(date);
+                    List<SupplierSalesStatisticsGoodsCountVO> vos = supplierSalesStatisticsGoodsCountVOS.stream().filter(vo -> time.equals(vo.getTime())).collect(Collectors.toList());
+                    if(CollectionUtils.isEmpty(vos)){
+                        SupplierSalesStatisticsGoodsCountVO vo = new SupplierSalesStatisticsGoodsCountVO();
+                        vo.setTime(time);
+                        vo.setGoodsCount(0);
+                        supplierSalesStatisticsGoodsCountVOS.add(vo);
+                    }
+                }
+                supplierSalesStatisticsGoodsCountVOS.sort(Comparator.comparing(SupplierSalesStatisticsGoodsCountVO::getTime));
+                break;
+        }
+        supplierSalesStatisticsVO.setSupplierSalesStatisticsGoodsCountVOS(supplierSalesStatisticsGoodsCountVOS);
+        return R.ok(supplierSalesStatisticsVO);
+    }
+
+    /**
+     * 诊所销售统计总类总数
+     */
+    @ApiOperation(value = "诊所销售统计总类总数",notes = "typeTotalCount:总类,totalCount:总数")
+    @PostMapping(value = "/clinicSalesStatisticsSum")
+    public R<Map<String,Integer>> clinicSalesStatisticsSum() {
+        Long userId = tokenService.getLoginUser().getUserId();
+
+        TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                .eq(TCrmClinic::getUserId, userId));
+        // 查询药品总类和总数
+        Integer typeTotalCount = sysOrderService.clinicSalesStatisticsTypeCount(crmClinic.getId());
+        Integer totalCount = sysOrderService.clinicSalesStatisticsCount(crmClinic.getId());
+        Map<String,Integer> map = new HashMap<>();
+        map.put("typeTotalCount", typeTotalCount);
+        map.put("totalCount", totalCount);
+
+        return R.ok(map);
+    }
+
+    /**
+     * 诊所销售统计
+     */
+    @ApiOperation(value = "诊所销售统计")
+    @PostMapping(value = "/clinicSalesStatistics")
+    public R<ClinicSalesStatisticsVO> clinicSalesStatistics(@Validated @RequestBody DataStatisticsQuery query) {
+        Long userId = tokenService.getLoginUser().getUserId();
+
+        String startTime = null;
+        String endTime = null;
+        switch (query.getTimeType()){
+            case 1:
+                startTime = LocalDate.now() + " 00:00:00";
+                endTime = LocalDate.now() + " 23:59:59";
+                break;
+            case 2:
+                startTime = LocalDate.now().minusDays(1) + " 00:00:00";
+                endTime = LocalDate.now().minusDays(1) + " 23:59:59";
+                break;
+            case 3:
+                startTime = LocalDate.now().minusDays(6) + " 00:00:00";
+                endTime = LocalDate.now() + " 23:59:59";
+                break;
+            case 4:
+                startTime = LocalDate.now().minusMonths(5).withDayOfMonth(1) + " 00:00:00";
+                endTime = LocalDate.now() + " 23:59:59";
+                break;
+            case 5:
+                startTime = LocalDate.now().minusYears(1).withDayOfMonth(1) + " 00:00:00";
+                endTime = LocalDate.now() + " 23:59:59";
+                break;
+        }
+        TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                .eq(TCrmClinic::getUserId, userId));
+        ClinicSalesStatisticsVO clinicSalesStatisticsVO = new ClinicSalesStatisticsVO();
+        // 销售金额
+        BigDecimal totalMoney = sysOrderService.clinicSalesStatisticsMoney(crmClinic.getId(), startTime, endTime);
+        clinicSalesStatisticsVO.setSalesMoney(totalMoney);
+
+        // 查询销售前十占比
+        List<ClinicSalesStatisticsGoodsTypeVO> clinicSalesStatisticsGoodsTypeVOS = sysOrderService.supplierSalesStatisticsGoodsType(crmClinic.getId(), startTime, endTime);
+        clinicSalesStatisticsVO.setClinicSalesStatisticsGoodsTypeVOS(clinicSalesStatisticsGoodsTypeVOS);
+        // 查询30天销售统计
+        List<ClinicSalesStatisticsGoodsCountVO> clinicSalesStatisticsGoodsCountVOS;
+        if(query.getTimeType() == 1 || query.getTimeType() == 2 || query.getTimeType() == 3){
+            clinicSalesStatisticsGoodsCountVOS = sysOrderService.supplierSalesStatisticsGoodsCount(crmClinic.getId(), startTime, endTime,query.getGoodsName());
+        }else {
+            clinicSalesStatisticsGoodsCountVOS = sysOrderService.supplierSalesStatisticsGoodsCountMonth(crmClinic.getId(), startTime, endTime,query.getGoodsName());
+        }
+        SimpleDateFormat format = new SimpleDateFormat("MM.dd");
+        SimpleDateFormat formatMonth = new SimpleDateFormat("yyyy.MM");
+        switch (query.getTimeType()){
+            case 1:
+                if(CollectionUtils.isEmpty(clinicSalesStatisticsGoodsCountVOS)){
+                    ClinicSalesStatisticsGoodsCountVO clinicSalesStatisticsGoodsCountVO = new ClinicSalesStatisticsGoodsCountVO();
+                    String time = format.format(DateUtils.localDateTimeToDate(LocalDateTime.now()));
+                    clinicSalesStatisticsGoodsCountVO.setTime(time);
+                    clinicSalesStatisticsGoodsCountVO.setGoodsCount(0);
+                    clinicSalesStatisticsGoodsCountVOS.add(clinicSalesStatisticsGoodsCountVO);
+                }
+                break;
+            case 2:
+                if(CollectionUtils.isEmpty(clinicSalesStatisticsGoodsCountVOS)){
+                    ClinicSalesStatisticsGoodsCountVO clinicSalesStatisticsGoodsCountVO = new ClinicSalesStatisticsGoodsCountVO();
+                    String time = format.format(DateUtils.localDateTimeToDate(LocalDateTime.now().minusDays(1)));
+                    clinicSalesStatisticsGoodsCountVO.setTime(time);
+                    clinicSalesStatisticsGoodsCountVO.setGoodsCount(0);
+                    clinicSalesStatisticsGoodsCountVOS.add(clinicSalesStatisticsGoodsCountVO);
+                }
+                break;
+            case 3:
+                LocalDateTime days = LocalDateTime.now().minusDays(6);
+                for (int i = 0; i < 7; i++) {
+                    LocalDateTime timeNow = days.plusDays(i);
+                    List<ClinicSalesStatisticsGoodsCountVO> vos = clinicSalesStatisticsGoodsCountVOS.stream().filter(vo -> timeNow.toLocalDate().isEqual(vo.getPayTime())).collect(Collectors.toList());
+                    if(CollectionUtils.isEmpty(vos)){
+                        ClinicSalesStatisticsGoodsCountVO vo = new ClinicSalesStatisticsGoodsCountVO();
+                        String time = format.format(DateUtils.localDateTimeToDate(timeNow));
+                        vo.setTime(time);
+                        vo.setGoodsCount(0);
+                        clinicSalesStatisticsGoodsCountVOS.add(vo);
+                    }
+                }
+                clinicSalesStatisticsGoodsCountVOS.sort(Comparator.comparing(ClinicSalesStatisticsGoodsCountVO::getTime));
+                break;
+            case 4:
+                LocalDateTime month = LocalDateTime.now().minusMonths(5);
+                for (int i = 0; i < 6; i++) {
+                    LocalDateTime timeNow = month.plusMonths(i);
+                    Date date = DateUtils.localDateTimeToDate(timeNow);
+                    String time = formatMonth.format(date);
+                    List<ClinicSalesStatisticsGoodsCountVO> vos = clinicSalesStatisticsGoodsCountVOS.stream().filter(vo -> time.equals(vo.getTime())).collect(Collectors.toList());
+                    if(CollectionUtils.isEmpty(vos)){
+                        ClinicSalesStatisticsGoodsCountVO vo = new ClinicSalesStatisticsGoodsCountVO();
+                        vo.setTime(time);
+                        vo.setGoodsCount(0);
+                        clinicSalesStatisticsGoodsCountVOS.add(vo);
+                    }
+                }
+                clinicSalesStatisticsGoodsCountVOS.sort(Comparator.comparing(ClinicSalesStatisticsGoodsCountVO::getTime));
+                break;
+            case 5:
+                LocalDateTime years = LocalDateTime.now().minusYears(1);
+                for (int i = 0; i < 12; i++) {
+                    LocalDateTime timeNow = years.plusMonths(i);
+                    Date date = DateUtils.localDateTimeToDate(timeNow);
+                    String time = formatMonth.format(date);
+                    List<ClinicSalesStatisticsGoodsCountVO> vos = clinicSalesStatisticsGoodsCountVOS.stream().filter(vo -> time.equals(vo.getTime())).collect(Collectors.toList());
+                    if(CollectionUtils.isEmpty(vos)){
+                        ClinicSalesStatisticsGoodsCountVO vo = new ClinicSalesStatisticsGoodsCountVO();
+                        vo.setTime(time);
+                        vo.setGoodsCount(0);
+                        clinicSalesStatisticsGoodsCountVOS.add(vo);
+                    }
+                }
+                clinicSalesStatisticsGoodsCountVOS.sort(Comparator.comparing(ClinicSalesStatisticsGoodsCountVO::getTime));
+                break;
+        }
+        clinicSalesStatisticsVO.setClinicSalesStatisticsGoodsCountVOS(clinicSalesStatisticsGoodsCountVOS);
+        return R.ok(clinicSalesStatisticsVO);
+    }
+
     public static void main(String[] args) {
-        System.out.println(LocalDate.now().minusDays(30));
+        System.out.println(LocalDate.now().minusMonths(6));
     }
 
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java
index f21a551..d3f7dbe 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java
@@ -11,14 +11,12 @@
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.WebUtils;
+import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.system.export.TCrmClinicAuditExport;
 import com.ruoyi.system.export.TSysAppUserClinicExport;
 import com.ruoyi.system.export.TSysAppUserExport;
 import com.ruoyi.system.export.TSysAppUserListExport;
-import com.ruoyi.system.model.TSysAppUser;
-import com.ruoyi.system.model.TSysChronicDisease;
-import com.ruoyi.system.model.TSysInspection;
-import com.ruoyi.system.model.TSysMessageTemplate;
+import com.ruoyi.system.model.*;
 import com.ruoyi.system.query.TCrmClinicQuery;
 import com.ruoyi.system.query.TSysAppUserQuery;
 import com.ruoyi.system.service.*;
@@ -30,6 +28,7 @@
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -42,6 +41,7 @@
 import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -62,14 +62,18 @@
     private final TSysChronicDiseaseService sysChronicDiseaseService;
     private final MsgUtils msgUtils;
     private final TSysMessageTemplateService sysMessageTemplateService;
+    private final TCrmClinicService crmClinicService;
+    private final TokenService tokenService;
     @Autowired
-    public TSysAppUserController(TSysAppUserService sysAppUserService, TSysInspectionService sysInspectionService, TSysOrderService sysOrderService, TSysChronicDiseaseService sysChronicDiseaseService, MsgUtils msgUtils, TSysMessageTemplateService sysMessageTemplateService) {
+    public TSysAppUserController(TSysAppUserService sysAppUserService, TSysInspectionService sysInspectionService, TSysOrderService sysOrderService, TSysChronicDiseaseService sysChronicDiseaseService, MsgUtils msgUtils, TSysMessageTemplateService sysMessageTemplateService, TCrmClinicService crmClinicService, TokenService tokenService) {
         this.sysAppUserService = sysAppUserService;
         this.sysInspectionService = sysInspectionService;
         this.sysOrderService = sysOrderService;
         this.sysChronicDiseaseService = sysChronicDiseaseService;
         this.msgUtils = msgUtils;
         this.sysMessageTemplateService = sysMessageTemplateService;
+        this.crmClinicService = crmClinicService;
+        this.tokenService = tokenService;
     }
 
     /**
@@ -135,6 +139,10 @@
         if (sysAppUserService.isExit(dto)) {
             return R.fail("用户管理信息已存在");
         }
+        Long userId = tokenService.getLoginUser().getUserId();
+        TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                .eq(TCrmClinic::getUserId, userId));
+        dto.setClinicId(crmClinic.getId());
         return R.ok(sysAppUserService.save(dto));
     }
 
@@ -169,6 +177,24 @@
         }
         // 查询检测信息
         List<TSysInspection> sysInspections = sysInspectionService.list(Wrappers.lambdaQuery(TSysInspection.class).eq(TSysInspection::getAppUserId, id));
+        if(!CollectionUtils.isEmpty(sysInspections)){
+            List<String> clinicIds = sysInspections.stream().map(TSysInspection::getClinicId).collect(Collectors.toList());
+            List<TCrmClinic> clinicList = crmClinicService.list(Wrappers.lambdaQuery(TCrmClinic.class).in(TCrmClinic::getId, clinicIds));
+            List<TSysOrder> sysOrderList = sysOrderService.list(Wrappers.lambdaQuery(TSysOrder.class).in(TSysOrder::getClinicId, clinicIds));
+            for (TSysInspection sysInspection : sysInspections) {
+                TCrmClinic clinic = clinicList.stream().filter(c -> c.getId().equals(sysInspection.getClinicId())).findFirst().orElse(null);
+                if(clinic != null){
+                    sysInspection.setClinicName(clinic.getClinicName());
+                }
+                List<TSysOrder> sysOrders = sysOrderList.stream().filter(c -> sysInspection.getId().equals(c.getInspectionId())).collect(Collectors.toList());
+                if(CollectionUtils.isEmpty(sysOrders)){
+                    sysInspection.setIsPrescribeMedicine(0);
+                }else {
+                    sysInspection.setIsPrescribeMedicine(1);
+                    sysInspection.setOrderId(sysOrders.get(0).getId());
+                }
+            }
+        }
         sysAppUserVO.setSysInspections(sysInspections);
         // 订单信息
         List<TSysOrderVO> sysOrders = sysOrderService.queryListByAppUserId(id);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysChronicDiseaseController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysChronicDiseaseController.java
index bc88089..fb03f15 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysChronicDiseaseController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysChronicDiseaseController.java
@@ -6,8 +6,11 @@
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.model.TSysAppUser;
 import com.ruoyi.system.model.TSysChronicDisease;
 import com.ruoyi.system.query.TSysChronicDiseaseQuery;
+import com.ruoyi.system.service.TSysAppUserService;
 import com.ruoyi.system.service.TSysChronicDiseaseService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -15,6 +18,7 @@
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -31,9 +35,11 @@
 public class TSysChronicDiseaseController {
 
     private final TSysChronicDiseaseService sysChronicDiseaseService;
+    private final TSysAppUserService sysAppUserService;
     @Autowired
-    public TSysChronicDiseaseController(TSysChronicDiseaseService sysChronicDiseaseService) {
+    public TSysChronicDiseaseController(TSysChronicDiseaseService sysChronicDiseaseService, TSysAppUserService sysAppUserService) {
         this.sysChronicDiseaseService = sysChronicDiseaseService;
+        this.sysAppUserService = sysAppUserService;
     }
 
     /**
@@ -53,6 +59,29 @@
     public R<List<TSysChronicDisease>> list() {
         return R.ok(sysChronicDiseaseService.list(Wrappers.lambdaQuery(TSysChronicDisease.class).orderByDesc(TSysChronicDisease::getCreateTime)));
     }
+    /**
+     * 获取慢性病管理管理列表
+     */
+    @ApiOperation(value = "通过用户id获取慢性病管理列表")
+    @GetMapping(value = "/listByAppUserId")
+    public R<List<TSysChronicDisease>> listByAppUserId(@RequestParam String appUserId) {
+
+        TSysAppUser sysAppUser = sysAppUserService.getById(appUserId);
+        if (sysAppUser == null) {
+            return R.fail("用户不存在");
+        }
+        String chronicDiseaseId = sysAppUser.getChronicDiseaseId();
+        if(StringUtils.isNotBlank(chronicDiseaseId)){
+            String[] split = chronicDiseaseId.split(",");
+            List<TSysChronicDisease> sysChronicDiseases = sysChronicDiseaseService.list(Wrappers.lambdaQuery(TSysChronicDisease.class)
+                    .notIn(TSysChronicDisease::getId, Arrays.asList(split))
+                    .orderByDesc(TSysChronicDisease::getCreateTime));
+            return R.ok(sysChronicDiseases);
+        }else {
+            return R.ok(sysChronicDiseaseService.list(Wrappers.lambdaQuery(TSysChronicDisease.class).orderByDesc(TSysChronicDisease::getCreateTime)));
+        }
+
+    }
 
     /**
      * 添加慢性病管理管理
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysEducationalInfoController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysEducationalInfoController.java
index d0455ca..6575986 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysEducationalInfoController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysEducationalInfoController.java
@@ -35,8 +35,8 @@
 @RestController
 @RequestMapping("/t-sys-educational-info")
 public class TSysEducationalInfoController {
-
     private final TSysEducationalInfoService sysEducationalInfoService;
+
     private final TokenService tokenService;
     private final RedisCache redisCache;
     @Autowired
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionController.java
index f72eb79..4f8433e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionController.java
@@ -5,7 +5,10 @@
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.model.TCrmClinic;
 import com.ruoyi.system.model.TSysInspection;
+import com.ruoyi.system.service.TCrmClinicService;
 import com.ruoyi.system.service.TSysInspectionService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -13,6 +16,8 @@
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -29,9 +34,13 @@
 public class TSysInspectionController {
 
     private final TSysInspectionService sysInspectionService;
+    private final TokenService tokenService;
+    private final TCrmClinicService crmClinicService;
     @Autowired
-    public TSysInspectionController(TSysInspectionService sysInspectionService) {
+    public TSysInspectionController(TSysInspectionService sysInspectionService, TokenService tokenService, TCrmClinicService crmClinicService) {
         this.sysInspectionService = sysInspectionService;
+        this.tokenService = tokenService;
+        this.crmClinicService = crmClinicService;
     }
 
 //    /**
@@ -60,6 +69,13 @@
     @PostMapping(value = "/add")
     public R<Boolean> add(@Validated @RequestBody TSysInspection dto) {
         dto.setIsPay(1);
+        String checkTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
+        dto.setCheckTime(checkTime);
+        Long userId = tokenService.getLoginUser().getUserId();
+        TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                .eq(TCrmClinic::getUserId, userId)
+                .last("LIMIT 1"));
+        dto.setClinicId(crmClinic.getId());
         return R.ok(sysInspectionService.save(dto));
     }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysLiveController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysLiveController.java
index ac6147e..8ff3b5a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysLiveController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysLiveController.java
@@ -124,7 +124,7 @@
             Long userId = tokenService.getLoginUser().getUserId();
             Set<Long> clickCount = new HashSet<>();
             clickCount.add(userId);
-            redisCache.setCacheSet(Constants.SYS_LIVE_COUNT+id,clickCount);
+            redisCache.setCacheSet(Constants.SYS_LIVE_CLICK_COUNT+id,clickCount);
         }
         return R.ok(sysLive);
     }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysProductIntroductionController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysProductIntroductionController.java
index cb12276..e7d0230 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysProductIntroductionController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysProductIntroductionController.java
@@ -9,8 +9,14 @@
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.model.TSysActivity;
+import com.ruoyi.system.model.TSysEducationalInfo;
+import com.ruoyi.system.model.TSysLive;
 import com.ruoyi.system.model.TSysProductIntroduction;
 import com.ruoyi.system.query.TSysProductIntroductionQuery;
+import com.ruoyi.system.service.TSysActivityService;
+import com.ruoyi.system.service.TSysEducationalInfoService;
+import com.ruoyi.system.service.TSysLiveService;
 import com.ruoyi.system.service.TSysProductIntroductionService;
 import com.ruoyi.system.vo.TSysProductIntroductionVO;
 import io.swagger.annotations.Api;
@@ -19,9 +25,7 @@
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * <p>
@@ -39,11 +43,17 @@
     private final TSysProductIntroductionService sysProductIntroductionService;
     private final TokenService tokenService;
     private final RedisCache redisCache;
+    private final TSysEducationalInfoService sysEducationalInfoService;
+    private final TSysActivityService sysActivityService;
+    private final TSysLiveService sysLiveService;
     @Autowired
-    public TSysProductIntroductionController(TSysProductIntroductionService sysProductIntroductionService, TokenService tokenService, RedisCache redisCache) {
+    public TSysProductIntroductionController(TSysProductIntroductionService sysProductIntroductionService, TokenService tokenService, RedisCache redisCache, TSysEducationalInfoService sysEducationalInfoService, TSysActivityService sysActivityService, TSysLiveService sysLiveService) {
         this.sysProductIntroductionService = sysProductIntroductionService;
         this.tokenService = tokenService;
         this.redisCache = redisCache;
+        this.sysEducationalInfoService = sysEducationalInfoService;
+        this.sysActivityService = sysActivityService;
+        this.sysLiveService = sysLiveService;
     }
 
     /**
@@ -147,6 +157,62 @@
                 .eq(TSysProductIntroduction::getId,id));
         return R.ok();
     }
+
+    /**
+     * 热门推荐统计数量
+     */
+    @ApiOperation(value = "热门推荐统计数量")
+    @GetMapping(value = "/recommendationsCount")
+    public R<Map<String,Integer>> recommendationsCount() {
+
+        Long userId = tokenService.getLoginUser().getUserId();
+        // 查询教育资讯
+        List<TSysEducationalInfo> sysEducationalInfos = sysEducationalInfoService.list(Wrappers.<TSysEducationalInfo>lambdaQuery()
+                .eq(TSysEducationalInfo::getStatus, 1));
+        int educationalCount = sysEducationalInfos.size();
+        for (TSysEducationalInfo sysEducationalInfo : sysEducationalInfos) {
+            Set<Long> userIds = redisCache.getCacheSet(Constants.SYS_EDUCATION_CLICK_COUNT+sysEducationalInfo.getId());
+            if(userIds.contains(userId)){
+                educationalCount = educationalCount - 1;
+            }
+        }
+        // 查询产品介绍
+        List<TSysProductIntroduction> sysProductIntroductions = sysProductIntroductionService.list(Wrappers.lambdaQuery(TSysProductIntroduction.class)
+                .eq(TSysProductIntroduction::getStatus, 1));
+        int productCount = sysProductIntroductions.size();
+        for (TSysProductIntroduction sysProductIntroduction : sysProductIntroductions) {
+            Set<Long> userIds = redisCache.getCacheSet(Constants.SYS_PRODUCT_CLICK_COUNT+sysProductIntroduction.getId());
+            if(userIds.contains(userId)){
+                productCount = productCount - 1;
+            }
+        }
+        // 查询热门活动
+        List<TSysActivity> sysActivities = sysActivityService.list(Wrappers.lambdaQuery(TSysActivity.class)
+                .eq(TSysActivity::getStatus, 1));
+        int activityCount = sysActivities.size();
+        for (TSysActivity sysActivity : sysActivities) {
+            Set<Long> userIds = redisCache.getCacheSet(Constants.SYS_ACTIVITY_CLICK_COUNT+sysActivity.getId());
+            if(userIds.contains(userId)){
+                activityCount = activityCount - 1;
+            }
+        }
+        // 查询直播
+        List<TSysLive> sysLives = sysLiveService.list();
+        int liveCount = sysLives.size();
+        for (TSysLive sysLive : sysLives) {
+            Set<Long> userIds = redisCache.getCacheSet(Constants.SYS_LIVE_CLICK_COUNT+sysLive.getId());
+            if(userIds.contains(userId)){
+                liveCount = liveCount - 1;
+            }
+        }
+
+        Map<String,Integer> map = new HashMap<>();
+        map.put("educationalCount",educationalCount);
+        map.put("productCount",productCount);
+        map.put("activityCount",activityCount);
+        map.put("liveCount",liveCount);
+        return R.ok(map);
+    }
     
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
index 5609584..1550b2e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
@@ -60,7 +60,7 @@
         }
     }
 
-    @Scheduled(cron = "10 0 0 * * ?")
+    @Scheduled(cron = "0 0 0 L * ?")
     public void monthUpdateClinicPerformance() {
         try {
             // 判断哪些诊所本月没有业绩达标
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
index 9f58e47..573c1fc 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
@@ -193,7 +193,7 @@
     /**
      * 直播点击缓存
      */
-    public static final String SYS_LIVE_COUNT = "sys_live_count:";
+    public static final String SYS_LIVE_CLICK_COUNT = "sys_live_click_count:";
 
 
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java
index 8a8ba1b..0eadac6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java
@@ -6,12 +6,10 @@
 import com.ruoyi.system.model.TErpProcurement;
 import com.ruoyi.system.query.TErpGoodsQuery;
 import com.ruoyi.system.query.TErpProcurementQuery;
-import com.ruoyi.system.vo.SupplierThirtyMoneyProcurementStatisticsVO;
-import com.ruoyi.system.vo.SupplierThirtyProcurementStatisticsVO;
-import com.ruoyi.system.vo.TErpGoodsVO;
-import com.ruoyi.system.vo.TErpProcurementVo;
+import com.ruoyi.system.vo.*;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -42,4 +40,51 @@
                                                                                               @Param("endTime")String endTime,
                                                                                               @Param("roleType")Integer roleType);
 
+    /**
+     * 供应商销售统计-类型
+     * @param supplierId
+     * @return
+     */
+    Integer supplierSalesStatisticsTypeCount(@Param("supplierId")String supplierId);
+
+    /**
+     * 供应商销售统计-数量
+     * @param supplierId
+     * @return
+     */
+    Integer supplierSalesStatisticsCount(@Param("supplierId")String supplierId);
+
+    /**
+     * 供应商销售统计-金额
+     * @param supplierId
+     * @return
+     */
+    BigDecimal supplierSalesStatisticsMoney(@Param("supplierId")String supplierId,
+                                            @Param("startTime")String startTime,
+                                            @Param("endTime")String endTime);
+
+    /**
+     * 供应商销售统计-商品类型
+     * @param supplierId
+     * @return
+     */
+    List<SupplierSalesStatisticsGoodsTypeVO> supplierSalesStatisticsGoodsType(@Param("supplierId")String supplierId,
+                                                                              @Param("startTime")String startTime,
+                                                                              @Param("endTime")String endTime);
+
+    /**
+     * 供应商销售统计-商品数量
+     * @param supplierId
+     * @return
+     */
+    List<SupplierSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCount(@Param("supplierId")String supplierId,
+                                                                                @Param("startTime")String startTime,
+                                                                                @Param("endTime")String endTime,
+                                                                                @Param("goodsName")String goodsName);
+
+    List<SupplierSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCountMonth(@Param("supplierId")String supplierId,
+                                                                                     @Param("startTime")String startTime,
+                                                                                     @Param("endTime")String endTime,
+                                                                                     @Param("goodsName")String goodsName);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysOrderMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysOrderMapper.java
index 5767450..591b134 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysOrderMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysOrderMapper.java
@@ -4,10 +4,13 @@
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.model.TSysOrder;
 import com.ruoyi.system.query.TSysOrderQuery;
+import com.ruoyi.system.vo.ClinicSalesStatisticsGoodsCountVO;
+import com.ruoyi.system.vo.ClinicSalesStatisticsGoodsTypeVO;
 import com.ruoyi.system.vo.TSysOrderPageVo;
 import com.ruoyi.system.vo.TSysOrderVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -31,4 +34,25 @@
 
     List<TSysOrderPageVo> pageList(@Param("page") PageInfo<TSysOrderPageVo> page, @Param("query") TSysOrderQuery query, @Param("sTime") String sTime, @Param("eTime") String eTime);
 
+    Integer clinicSalesStatisticsCount(@Param("clinicId")String clinicId);
+
+    Integer clinicSalesStatisticsTypeCount(@Param("clinicId")String clinicId);
+
+    BigDecimal clinicSalesStatisticsMoney(@Param("clinicId")String clinicId,
+                                          @Param("startTime")String startTime,
+                                          @Param("endTime")String endTime);
+
+    List<ClinicSalesStatisticsGoodsTypeVO> supplierSalesStatisticsGoodsType(@Param("clinicId")String clinicId,
+                                                                            @Param("startTime")String startTime,
+                                                                            @Param("endTime")String endTime);
+
+    List<ClinicSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCount(@Param("clinicId")String clinicId,
+                                                                              @Param("startTime")String startTime,
+                                                                              @Param("endTime")String endTime,
+                                                                              @Param("goodsName")String goodsName);
+
+    List<ClinicSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCountMonth(@Param("clinicId")String clinicId,
+                                                                                   @Param("startTime")String startTime,
+                                                                                   @Param("endTime")String endTime,
+                                                                                   @Param("goodsName")String goodsName);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspection.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspection.java
index a6a8340..bd7edfd 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspection.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspection.java
@@ -120,5 +120,15 @@
     @ApiModelProperty(value = "是否已支付 1=是 0=否")
     @TableField("is_pay")
     private Integer isPay;
+    @ApiModelProperty(value = "诊所名称")
+    @TableField(exist = false)
+    private String clinicName;
+    @ApiModelProperty(value = "是否已开药 1=是 0=否")
+    @TableField(exist = false)
+    private Integer isPrescribeMedicine;
+    @ApiModelProperty(value = "订单id")
+    @TableField(exist = false)
+    private String orderId;
+
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysOrderGoods.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysOrderGoods.java
index 81be1c8..50a09ea 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysOrderGoods.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysOrderGoods.java
@@ -33,6 +33,9 @@
     @ApiModelProperty(value = "订单id")
     @TableField("order_id")
     private String orderId;
+    @ApiModelProperty(value = "商品id")
+    @TableField("goods_id")
+    private String goodsId;
 
     @ApiModelProperty(value = "商品名称")
     @TableField("goods_name")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/DataStatisticsQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/DataStatisticsQuery.java
index a599899..0ea420e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/DataStatisticsQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/DataStatisticsQuery.java
@@ -16,4 +16,7 @@
     @ApiModelProperty(value = "时间类型 1=今日 2=昨天 3=最近七天 4=最近半年 5=最近一年")
     private Integer timeType;
 
+    @ApiModelProperty(value = "药品名称")
+    private String goodsName;
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java
index 4a9f42e..dffc65a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java
@@ -11,6 +11,7 @@
 import com.ruoyi.system.vo.*;
 
 import javax.validation.Valid;
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -59,4 +60,56 @@
      * @return
      */
     List<SupplierThirtyMoneyProcurementStatisticsVO> supplierThirtyMoneyProcurementStatistics(String supplierAndClinicId, String startTime, String endTime,Integer roleType);
+
+    /**
+     * 供应商30天采购总类统计
+     * @param supplierId
+     * @return
+     */
+    Integer supplierSalesStatisticsTypeCount(String supplierId);
+
+    /**
+     * 供应商30天采购总数统计
+     * @param supplierId
+     * @return
+     */
+    Integer supplierSalesStatisticsCount(String supplierId);
+
+    /**
+     * 供应商30天采购金额统计
+     * @param supplierId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    BigDecimal supplierSalesStatisticsMoney(String supplierId, String startTime, String endTime);
+
+    /**
+     * 供应商30天销售占比
+     * @param supplierId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<SupplierSalesStatisticsGoodsTypeVO> supplierSalesStatisticsGoodsType(String supplierId, String startTime, String endTime);
+
+    /**
+     * 供应商30天销售商品统计
+     * @param supplierId
+     * @param startTime
+     * @param endTime
+     * @param goodsName
+     * @return
+     */
+    List<SupplierSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCount(String supplierId, String startTime, String endTime, String goodsName);
+
+    /**
+     * 供应商30天销售商品统计
+     * @param supplierId
+     * @param startTime
+     * @param endTime
+     * @param goodsName
+     * @return
+     */
+    List<SupplierSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCountMonth(String supplierId, String startTime, String endTime, String goodsName);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysOrderService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysOrderService.java
index 9362430..8a3741b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysOrderService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysOrderService.java
@@ -6,10 +6,13 @@
 import com.ruoyi.system.model.TCrmClinic;
 import com.ruoyi.system.model.TSysOrder;
 import com.ruoyi.system.query.TSysOrderQuery;
+import com.ruoyi.system.vo.ClinicSalesStatisticsGoodsCountVO;
+import com.ruoyi.system.vo.ClinicSalesStatisticsGoodsTypeVO;
 import com.ruoyi.system.vo.TSysOrderPageVo;
 import com.ruoyi.system.vo.TSysOrderVO;
 
 import javax.validation.Valid;
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -34,4 +37,15 @@
     void add(TSysOrderDto dto, TCrmClinic crmClinic);
 
 
+    Integer clinicSalesStatisticsCount(String clinicId);
+
+    Integer clinicSalesStatisticsTypeCount(String clinicId);
+
+    BigDecimal clinicSalesStatisticsMoney(String clinicId, String startTime, String endTime);
+
+    List<ClinicSalesStatisticsGoodsTypeVO> supplierSalesStatisticsGoodsType(String clinicId, String startTime, String endTime);
+
+    List<ClinicSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCount(String clinicId, String startTime, String endTime, String goodsName);
+
+    List<ClinicSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCountMonth(String clinicId, String startTime, String endTime, String goodsName);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
index 1a7583f..3456362 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
@@ -577,4 +577,34 @@
         return this.baseMapper.supplierThirtyMoneyProcurementStatistics(supplierAndClinicId, startTime, endTime, roleType);
     }
 
+    @Override
+    public Integer supplierSalesStatisticsTypeCount(String supplierId) {
+        return this.baseMapper.supplierSalesStatisticsTypeCount(supplierId);
+    }
+
+    @Override
+    public Integer supplierSalesStatisticsCount(String supplierId) {
+        return this.baseMapper.supplierSalesStatisticsCount(supplierId);
+    }
+
+    @Override
+    public BigDecimal supplierSalesStatisticsMoney(String supplierId, String startTime, String endTime) {
+        return this.baseMapper.supplierSalesStatisticsMoney(supplierId,startTime, endTime);
+    }
+
+    @Override
+    public List<SupplierSalesStatisticsGoodsTypeVO> supplierSalesStatisticsGoodsType(String supplierId, String startTime, String endTime) {
+        return this.baseMapper.supplierSalesStatisticsGoodsType(supplierId,startTime, endTime);
+    }
+
+    @Override
+    public List<SupplierSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCount(String supplierId, String startTime, String endTime, String goodsName) {
+        return this.baseMapper.supplierSalesStatisticsGoodsCount(supplierId,startTime, endTime,goodsName);
+    }
+
+    @Override
+    public List<SupplierSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCountMonth(String supplierId, String startTime, String endTime, String goodsName) {
+        return this.baseMapper.supplierSalesStatisticsGoodsCountMonth(supplierId,startTime, endTime,goodsName);
+    }
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java
index 72a7925..ebb9ffb 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java
@@ -12,6 +12,8 @@
 import com.ruoyi.system.service.TCrmClinicService;
 import com.ruoyi.system.service.TErpClinicOutboundService;
 import com.ruoyi.system.service.TSysOrderService;
+import com.ruoyi.system.vo.ClinicSalesStatisticsGoodsCountVO;
+import com.ruoyi.system.vo.ClinicSalesStatisticsGoodsTypeVO;
 import com.ruoyi.system.vo.TSysOrderPageVo;
 import com.ruoyi.system.vo.TSysOrderVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -69,7 +71,7 @@
         for (TSysOrderVO sysOrderVO : sysOrderVOS) {
             sysOrderVO.setSysOrderGoods(sysOrderGoodsList.stream().filter(sysOrderGoods -> sysOrderGoods.getOrderId().equals(sysOrderVO.getId())).collect(Collectors.toList()));
         }
-        return this.baseMapper.queryListByAppUserId(id);
+        return sysOrderVOS;
     }
 
     @Override
@@ -116,6 +118,7 @@
             tSysOrderGoods1.setBatchId(tErpClinicWarehousingBatch.getId());
             tSysOrderGoods1.setBatchNumber(tErpClinicWarehousingBatch.getBatchNumber());
             tSysOrderGoods1.setRemainingQuantity(sysOrderNextDto.getRemainingQuantity());
+            tSysOrderGoods1.setGoodsId(goods.getId());
             tSysOrderGoods.add(tSysOrderGoods1);
 
 
@@ -156,4 +159,34 @@
         }
 
     }
+
+    @Override
+    public Integer clinicSalesStatisticsCount(String clinicId) {
+        return this.baseMapper.clinicSalesStatisticsCount(clinicId);
+    }
+
+    @Override
+    public Integer clinicSalesStatisticsTypeCount(String clinicId) {
+        return this.baseMapper.clinicSalesStatisticsTypeCount(clinicId);
+    }
+
+    @Override
+    public BigDecimal clinicSalesStatisticsMoney(String clinicId, String startTime, String endTime) {
+        return this.baseMapper.clinicSalesStatisticsMoney(clinicId,startTime,endTime);
+    }
+
+    @Override
+    public List<ClinicSalesStatisticsGoodsTypeVO> supplierSalesStatisticsGoodsType(String clinicId, String startTime, String endTime) {
+        return this.baseMapper.supplierSalesStatisticsGoodsType(clinicId,startTime,endTime);
+    }
+
+    @Override
+    public List<ClinicSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCount(String clinicId, String startTime, String endTime, String goodsName) {
+        return this.baseMapper.supplierSalesStatisticsGoodsCount(clinicId,startTime,endTime,goodsName);
+    }
+
+    @Override
+    public List<ClinicSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCountMonth(String clinicId, String startTime, String endTime, String goodsName) {
+        return this.baseMapper.supplierSalesStatisticsGoodsCountMonth(clinicId,startTime,endTime,goodsName);
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsGoodsCountVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsGoodsCountVO.java
new file mode 100644
index 0000000..f1187e5
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsGoodsCountVO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.system.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+@Data
+@ApiModel(value = "诊所30天销售统计视图对象ClinicSalesStatisticsGoodsCountVO")
+public class ClinicSalesStatisticsGoodsCountVO implements Serializable {
+
+    @ApiModelProperty(value = "时间")
+    private String time;
+
+    @ApiModelProperty(value = "商品数")
+    private Integer goodsCount;
+
+    @ApiModelProperty(value = "支付时间,前端忽略")
+    private LocalDate payTime;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsGoodsTypeVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsGoodsTypeVO.java
new file mode 100644
index 0000000..6cee5e0
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsGoodsTypeVO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.system.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "诊所销售统计销售前十占比ClinicSalesStatisticsGoodsTypeVO")
+public class ClinicSalesStatisticsGoodsTypeVO implements Serializable {
+    @ApiModelProperty(value = "类型名称")
+    private String typeName;
+    @ApiModelProperty(value = "商品数量")
+    private Integer goodsCount;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsVO.java
new file mode 100644
index 0000000..625cd43
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsVO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.system.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@ApiModel(value = "诊所销售统计ClinicSalesStatisticsVO")
+public class ClinicSalesStatisticsVO implements Serializable {
+
+    @ApiModelProperty(value = "销售金额")
+    private BigDecimal salesMoney;
+
+    @ApiModelProperty(value = "销售前十占比")
+    private List<ClinicSalesStatisticsGoodsTypeVO> clinicSalesStatisticsGoodsTypeVOS;
+    @ApiModelProperty(value = "销售商品")
+    private List<ClinicSalesStatisticsGoodsCountVO> clinicSalesStatisticsGoodsCountVOS;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsGoodsCountVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsGoodsCountVO.java
new file mode 100644
index 0000000..442c2d4
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsGoodsCountVO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.system.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+@Data
+@ApiModel(value = "供应商30天销售统计视图对象SupplierSalesStatisticsGoodsCountVO")
+public class SupplierSalesStatisticsGoodsCountVO implements Serializable {
+
+    @ApiModelProperty(value = "时间")
+    private String time;
+
+    @ApiModelProperty(value = "商品数")
+    private Integer goodsCount;
+
+    @ApiModelProperty(value = "支付时间,前端忽略")
+    private LocalDate payTime;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsGoodsTypeVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsGoodsTypeVO.java
new file mode 100644
index 0000000..df60809
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsGoodsTypeVO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.system.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "供应商销售统计销售前十占比SupplierSalesStatisticsGoodsTypeVO")
+public class SupplierSalesStatisticsGoodsTypeVO implements Serializable {
+    @ApiModelProperty(value = "类型名称")
+    private String typeName;
+    @ApiModelProperty(value = "商品数量")
+    private Integer goodsCount;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsVO.java
new file mode 100644
index 0000000..2ec1aa0
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsVO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.system.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.License;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@ApiModel(value = "供应商销售统计SupplierSalesStatisticsVO")
+public class SupplierSalesStatisticsVO implements Serializable {
+
+    @ApiModelProperty(value = "销售金额")
+    private BigDecimal salesMoney;
+
+    @ApiModelProperty(value = "销售前十占比")
+    private List<SupplierSalesStatisticsGoodsTypeVO> supplierSalesStatisticsGoodsTypeVOS;
+    @ApiModelProperty(value = "销售商品")
+    private List<SupplierSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCountVOS;
+
+}
diff --git a/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml
index 0f13ff5..bd30f4f 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml
@@ -144,5 +144,77 @@
             </if>
         group by date_format(t1.pay_time, '%m.%d')
     </select>
+    <select id="supplierSalesStatisticsTypeCount" resultType="java.lang.Integer">
+        select count(1)
+        from t_erp_procurement tep
+        left join t_erp_procurement_goods tepg on tep.id = tepg.procurement_id
+        left join t_erp_goods teg on tepg.goods_id = teg.id
+        where tep.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        and tep.status in (3,4,5)
+        and tep.supplier_id = #{supplierId}
+        group by teg.type_id
+    </select>
+    <select id="supplierSalesStatisticsCount" resultType="java.lang.Integer">
+        select count(1)
+        from t_erp_procurement tep
+         left join t_erp_procurement_goods tepg on tep.id = tepg.procurement_id
+        where tep.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+          and tep.status in (3,4,5)
+          and tep.supplier_id = #{supplierId}
+    </select>
+    <select id="supplierSalesStatisticsMoney" resultType="java.math.BigDecimal">
+        select sum(pay_money) from t_erp_procurement
+        where disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+          and status in (3,4,5)
+          and pay_time between #{startTime} and #{endTime}
+          and supplier_id = #{supplierId}
+    </select>
+    <select id="supplierSalesStatisticsGoodsType"
+            resultType="com.ruoyi.system.vo.SupplierSalesStatisticsGoodsTypeVO">
+        select count(1), tegt.type_name
+        from t_erp_procurement tep
+                 left join t_erp_procurement_goods tepg on tep.id = tepg.procurement_id
+                 left join t_erp_goods teg on tepg.goods_id = teg.id
+                 left join t_erp_goods_type tegt on teg.type_id = tegt.id
+        where tep.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+          and tep.status in (3,4,5)
+          and tep.pay_time between #{startTime} and #{endTime}
+          and tep.supplier_id = #{supplierId}
+        group by teg.type_id
+        order by count(1) desc
+    </select>
+    <select id="supplierSalesStatisticsGoodsCount"
+            resultType="com.ruoyi.system.vo.SupplierSalesStatisticsGoodsCountVO">
+        select
+        date_format(t1.pay_time, '%m.%d') as `time`,
+        date_format(t1.pay_time, '%Y-%m-%d') as payTime,
+        sum(t2.purchase_count) as goodsCount
+        from t_erp_procurement t1
+        left join t_erp_procurement_goods t2 on t1.id = t2.procurement_id
+        where t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        and t1.status in (3,4,5)
+        and t1.pay_time between #{startTime} and #{endTime}
+        and t1.supplier_id = #{supplierId}
+        <if test="goodsName != null and goodsName != ''">
+            and t2.goods_name like concat('%',#{goodsName},'%')
+        </if>
+        group by date_format(t1.pay_time, '%m.%d')
+    </select>
+    <select id="supplierSalesStatisticsGoodsCountMonth"
+            resultType="com.ruoyi.system.vo.SupplierSalesStatisticsGoodsCountVO">
+        select
+        date_format(t1.pay_time, '%Y.%m') as `time`,
+        sum(t2.purchase_count) as goodsCount
+        from t_erp_procurement t1
+        left join t_erp_procurement_goods t2 on t1.id = t2.procurement_id
+        where t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        and t1.status in (3,4,5)
+        and t1.pay_time between #{startTime} and #{endTime}
+        and t1.supplier_id = #{supplierId}
+        <if test="goodsName != null and goodsName != ''">
+            and t2.goods_name like concat('%',#{goodsName},'%')
+        </if>
+        group by date_format(t1.pay_time, '%Y.%m')
+    </select>
 
 </mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TSysOrderGoodsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TSysOrderGoodsMapper.xml
index 7f20c6c..5d84e50 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TSysOrderGoodsMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TSysOrderGoodsMapper.xml
@@ -6,6 +6,7 @@
     <resultMap id="BaseResultMap" type="com.ruoyi.system.model.TSysOrderGoods">
         <id column="id" property="id" />
         <result column="order_id" property="orderId" />
+        <result column="goods_id" property="goodsId" />
         <result column="goods_name" property="goodsName" />
         <result column="type_name" property="typeName" />
         <result column="quasi_number" property="quasiNumber" />
@@ -21,7 +22,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, order_id, goods_name, type_name, quasi_number, goods_unit, sale_count, sale_amount, create_time, update_time, create_by, update_by, disabled
+        id, order_id,goods_id, goods_name, type_name, quasi_number, goods_unit, sale_count, sale_amount, create_time, update_time, create_by, update_by, disabled
     </sql>
 
 </mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TSysOrderMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TSysOrderMapper.xml
index 7a4e3c0..a5c39e3 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TSysOrderMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TSysOrderMapper.xml
@@ -45,5 +45,72 @@
         order by t1.create_time desc
 
     </select>
+    <select id="clinicSalesStatisticsCount" resultType="java.lang.Integer">
+        select count(1)
+        from t_sys_order tso
+                 left join t_sys_order_goods tsog on tso.id = tsog.order_id
+                 left join t_erp_goods teg on tepg.goods_id = teg.id
+        where tso.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+          and tso.clinic_id = #{clinicId}
+    </select>
+    <select id="clinicSalesStatisticsTypeCount" resultType="java.lang.Integer">
+        select count(1)
+        from t_sys_order tso
+                 left join t_sys_order_goods tsog on tso.id = tsog.order_id
+                 left join t_erp_goods teg on tepg.goods_id = teg.id
+        where tso.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+          and tso.clinic_id = #{clinicId}
+        group by teg.type_id
+    </select>
+    <select id="clinicSalesStatisticsMoney" resultType="java.math.BigDecimal">
+        select sum(total_money) from t_sys_order
+        where disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+          and pay_time between #{startTime} and #{endTime}
+          and clinic_id = #{clinicId}
+    </select>
+    <select id="supplierSalesStatisticsGoodsType"
+            resultType="com.ruoyi.system.vo.ClinicSalesStatisticsGoodsTypeVO">
+        select count(1), tegt.type_name
+        from t_sys_order tso
+                 left join t_sys_order_goods tsog on tso.id = tsog.order_id
+                 left join t_erp_goods teg on tsog.goods_id = teg.id
+                 left join t_erp_goods_type tegt on teg.type_id = tegt.id
+        where tso.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+          and tso.pay_time between #{startTime} and #{endTime}
+          and tso.clinic_id = #{clinicId}
+        group by teg.type_id
+        order by count(1) desc
+    </select>
+    <select id="supplierSalesStatisticsGoodsCount"
+            resultType="com.ruoyi.system.vo.ClinicSalesStatisticsGoodsCountVO">
+        select
+        date_format(t1.pay_time, '%m.%d') as `time`,
+        date_format(t1.pay_time, '%Y-%m-%d') as payTime,
+        sum(t2.purchase_count) as goodsCount
+        from t_sys_order t1
+        left join t_sys_order_goods t2 on t1.id = t2.order_id
+        where t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        and t1.pay_time between #{startTime} and #{endTime}
+        and t1.clinic_id = #{clinicId}
+        <if test="goodsName != null and goodsName != ''">
+            and t2.goods_name like concat('%',#{goodsName},'%')
+        </if>
+        group by date_format(t1.pay_time, '%m.%d')
+    </select>
+    <select id="supplierSalesStatisticsGoodsCountMonth"
+            resultType="com.ruoyi.system.vo.ClinicSalesStatisticsGoodsCountVO">
+        select
+        date_format(t1.pay_time, '%Y.%m') as `time`,
+        sum(t2.purchase_count) as goodsCount
+        from t_sys_order t1
+        left join t_sys_order_goods t2 on t1.id = t2.order_id
+        where t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        and t1.pay_time between #{startTime} and #{endTime}
+        and t1.clinic_id = #{clinicId}
+        <if test="goodsName != null and goodsName != ''">
+            and t2.goods_name like concat('%',#{goodsName},'%')
+        </if>
+        group by date_format(t1.pay_time, '%Y.%m')
+    </select>
 
 </mapper>

--
Gitblit v1.7.1