From 43f0633906b9cadcfa2376494a9ee86e062a6f43 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期一, 16 三月 2026 11:40:48 +0800
Subject: [PATCH] yys 更新首页接口
---
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 141 +++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 136 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
index 265cbec..6b75167 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -32,11 +32,7 @@
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.dto.ProductOrderDto;
import com.ruoyi.production.dto.ProductWorkOrderDto;
-import com.ruoyi.production.mapper.ProductOrderMapper;
-import com.ruoyi.production.mapper.ProductWorkOrderMapper;
-import com.ruoyi.production.mapper.ProductionProductInputMapper;
-import com.ruoyi.production.mapper.ProductionProductOutputMapper;
-import com.ruoyi.production.mapper.SalesLedgerProductionAccountingMapper;
+import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.ProductWorkOrder;
import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysUser;
@@ -143,6 +139,9 @@
@Autowired
private QualityUnqualifiedMapper qualityUnqualifiedMapper;
+
+ @Autowired
+ private ProductProcessMapper productProcessMapper;
@Override
public HomeBusinessDto business() {
@@ -2411,4 +2410,136 @@
return result;
}
+ @Override
+ public QualityStatisticsDto qualityInspectionStatistics(Integer type) {
+ LocalDate today = LocalDate.now();
+ LocalDate startDate;
+ LocalDate endDate;
+
+ switch (type) {
+ case 1: // 鏈懆
+ startDate = today.with(DayOfWeek.MONDAY);
+ endDate = today.with(DayOfWeek.SUNDAY);
+ break;
+ case 2: // 鏈湀
+ startDate = today.with(TemporalAdjusters.firstDayOfMonth());
+ endDate = today.with(TemporalAdjusters.lastDayOfMonth());
+ break;
+ case 3: // 鏈搴�
+ int currentMonth = today.getMonthValue();
+ int startMonth = ((currentMonth - 1) / 3) * 3 + 1;
+ startDate = LocalDate.of(today.getYear(), startMonth, 1);
+ endDate = startDate.plusMonths(2).with(TemporalAdjusters.lastDayOfMonth());
+ break;
+ default:
+ startDate = today.with(DayOfWeek.MONDAY);
+ endDate = today.with(DayOfWeek.SUNDAY);
+ }
+
+ List<QualityInspect> qualityInspectList = qualityInspectMapper
+ .selectList(new LambdaQueryWrapper<QualityInspect>()
+ .ge(QualityInspect::getCheckTime, startDate)
+ .le(QualityInspect::getCheckTime, endDate)
+ .eq(QualityInspect::getInspectState, 1));
+
+ QualityStatisticsDto dto = new QualityStatisticsDto();
+ dto.setSupplierNum(sumQuantity(qualityInspectList, 0)); // 鍘熸潗鏂�
+ dto.setProcessNum(sumQuantity(qualityInspectList, 1)); // 杩囩▼
+ dto.setFactoryNum(sumQuantity(qualityInspectList, 2)); // 鍑哄巶
+
+ // 4. 澶勭悊鍥捐〃椤� (Item)
+ List<QualityStatisticsItem> itemList = new ArrayList<>();
+
+ Map<QualityInspect, LocalDate> dateMap = qualityInspectList.stream()
+ .collect(Collectors.toMap(
+ i -> i,
+ i -> i.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()));
+ if (type == 3) {
+ // 瀛e害妯″紡锛氭寜鏈堝垎缁�
+ Map<String, List<QualityInspect>> groupByMonth = qualityInspectList.stream()
+ .collect(Collectors.groupingBy(i -> {
+ LocalDate ld = dateMap.get(i);
+ return ld.format(DateTimeFormatter.ofPattern("yyyy-MM"));
+ }));
+
+ for (int i = 0; i < 3; i++) {
+ LocalDate monthDate = startDate.plusMonths(i);
+ String monthStr = monthDate.format(DateTimeFormatter.ofPattern("yyyy-MM"));
+ itemList.add(buildItem(monthStr, groupByMonth.getOrDefault(monthStr, new ArrayList<>())));
+ }
+ } else {
+ // 鍛ㄦ垨鏈堟ā寮忥細鎸夊ぉ鍒嗙粍
+ Map<String, List<QualityInspect>> groupByDay = qualityInspectList.stream()
+ .collect(Collectors.groupingBy(i -> {
+ LocalDate ld = dateMap.get(i);
+ return ld.format(DateTimeFormatter.ofPattern("MM/dd"));
+ }));
+ long days = ChronoUnit.DAYS.between(startDate, endDate);
+ for (int i = 0; i <= days; i++) {
+ LocalDate tempDay = startDate.plusDays(i);
+ String dayStr = tempDay.format(DateTimeFormatter.ofPattern("MM/dd"));
+ itemList.add(buildItem(dayStr, groupByDay.getOrDefault(dayStr, new ArrayList<>())));
+ }
+ }
+
+ dto.setItem(itemList);
+ return dto;
+ }
+
+ private BigDecimal sumQuantity(List<QualityInspect> list, Integer type) {
+ return list.stream()
+ .filter(i -> i.getInspectType().equals(type))
+ .map(QualityInspect::getQuantity)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+
+ private QualityStatisticsItem buildItem(String dateLabel, List<QualityInspect> list) {
+ QualityStatisticsItem item = new QualityStatisticsItem();
+ item.setDate(dateLabel);
+
+ item.setSupplierNum(list.stream().filter(i -> i.getInspectType() == 0).map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add));
+ item.setProcessNum(list.stream().filter(i -> i.getInspectType() == 1).map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add));
+ item.setFactoryNum(list.stream().filter(i -> i.getInspectType() == 2).map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add));
+
+ return item;
+ }
+
+ @Override
+ public List<processDataProductionStatisticsDto> processDataProductionStatistics(Integer type,
+ List<Long> processIds) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ Long userId = SecurityUtils.isAdmin(loginUser.getUserId()) ? null : loginUser.getUserId();
+
+ LocalDate today = LocalDate.now();
+ LocalDate startDate;
+ LocalDate endDate;
+
+ switch (type) {
+ case 1:
+ startDate = today;
+ endDate = today;
+ break;
+ case 2:
+ startDate = today.with(DayOfWeek.MONDAY);
+ endDate = today.with(DayOfWeek.SUNDAY);
+ break;
+ case 3:
+ startDate = today.with(TemporalAdjusters.firstDayOfMonth());
+ endDate = today.with(TemporalAdjusters.lastDayOfMonth());
+ break;
+ default:
+ startDate = today;
+ endDate = today;
+ }
+
+ LocalDateTime startDateTime = startDate.atStartOfDay();
+ LocalDateTime endDateTime = endDate.atTime(LocalTime.MAX);
+
+ return productProcessMapper.calculateProductionStatistics(startDateTime, endDateTime, userId, processIds);
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3