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)); } } 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); 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))); } } /** * 添加慢性病管理管理 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 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)); } 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); } 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); } } 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 { // 判断哪些诊所本月没有业绩达标 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:"; 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); } 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); } 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; } 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") 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; } 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); } 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); } 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); } } 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); } } ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsGoodsCountVO.java
New file @@ -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; } ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsGoodsTypeVO.java
New file @@ -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; } ruoyi-system/src/main/java/com/ruoyi/system/vo/ClinicSalesStatisticsVO.java
New file @@ -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; } ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsGoodsCountVO.java
New file @@ -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; } ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsGoodsTypeVO.java
New file @@ -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; } ruoyi-system/src/main/java/com/ruoyi/system/vo/SupplierSalesStatisticsVO.java
New file @@ -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; } 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> 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> 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>