From 5a5df7b6529a62233bd2541a9abbb7bd588e9a4d Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期一, 22 十二月 2025 17:54:27 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/hckx' into hckx
---
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 120 ++++++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 84 insertions(+), 36 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 1dddeb8..cbe815a 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.approve.mapper.ApproveProcessMapper;
import com.ruoyi.approve.pojo.ApproveProcess;
+import com.ruoyi.collaborativeApproval.mapper.NoticeMapper;
+import com.ruoyi.collaborativeApproval.pojo.Notice;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
import com.ruoyi.device.mapper.DeviceRepairMapper;
@@ -44,6 +46,7 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
+import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
@@ -92,6 +95,9 @@
@Autowired
private SysDeptMapper sysDeptMapper;
+
+ @Autowired
+ private NoticeMapper noticeMapper;
@Override
public HomeBusinessDto business() {
@@ -270,50 +276,83 @@
@Override
public QualityStatisticsDto qualityStatistics() {
- // 鑾峰彇涓�鍛ㄦ暟鎹�
- // 鑾峰彇褰撳墠鏃堕棿
+ // 鑾峰彇杩戝洓涓湀鏁版嵁锛堝線鍓嶆帹涓変釜鏈堬紝鍏�4涓畬鏁存湀浠斤級
LocalDate today = LocalDate.now();
- // 鑾峰彇鏈懆鍛ㄤ竴
- LocalDate startOfWeek = today.with(DayOfWeek.MONDAY);
- // 鑾峰彇鏈懆鍛ㄦ棩
- LocalDate endOfWeek = today.with(DayOfWeek.SUNDAY);
- LambdaQueryWrapper<QualityInspect> qualityInspectLambdaQueryWrapper = new LambdaQueryWrapper<>();
- qualityInspectLambdaQueryWrapper.ge(QualityInspect::getCheckTime, startOfWeek)
- .gt(QualityInspect::getCheckTime, endOfWeek);
- List<QualityInspect> qualityInspects = qualityStatisticsMapper.selectList(qualityInspectLambdaQueryWrapper);
+ // 瀹氫箟鏃ユ湡鏍煎紡鍖栧櫒锛堢敤浜庢樉绀衡�滃勾鏈堚�濇牸寮忥級
+ DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
+
QualityStatisticsDto qualityStatisticsDto = new QualityStatisticsDto();
- qualityStatisticsDto.setSupplierNum(qualityInspects.stream().filter(item -> item.getInspectType().equals(0)).map(QualityInspect::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
- qualityStatisticsDto.setProcessNum(qualityInspects.stream().filter(item -> item.getInspectType().equals(1)).map(QualityInspect::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
- qualityStatisticsDto.setFactoryNum(qualityInspects.stream().filter(item -> item.getInspectType().equals(2)).map(QualityInspect::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
List<QualityStatisticsItem> qualityStatisticsItems = new ArrayList<>();
- for (int j = 1; j < 8; j++) {
- LocalDate endTime = startOfWeek.plusDays(j);
- LocalDate startTime = endTime.minusDays(1);
- QualityStatisticsItem qualityStatisticsItem = new QualityStatisticsItem();
- qualityStatisticsItem.setDate(startTime.toString());
- qualityStatisticsItem.setSupplierNum(qualityInspects.stream()
- .filter(item -> item.getInspectType().equals(0) && "涓嶅悎鏍�".equals(item.getCheckResult())
- && (startTime.isEqual(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()) || startTime.isAfter(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()))
- && endTime.isBefore(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()))
+
+ BigDecimal supplierNum = new BigDecimal(0);
+ BigDecimal factoryNum = new BigDecimal(0);
+ BigDecimal processNum = new BigDecimal(0);
+ // 寰幆4娆★紝鍒嗗埆缁熻杩�4涓湀鐨勬暟鎹紙褰撳墠鏈堛�佸墠1涓湀銆佸墠2涓湀銆佸墠3涓湀锛�
+ for (int i = 3; i >= 0; i--) {
+ // 璁$畻褰撳墠寰幆瀵瑰簲鐨勬湀浠斤紙i=0锛氬綋鍓嶆湀锛宨=1锛氬墠1涓湀锛屼互姝ょ被鎺級
+ LocalDate currentMonth = today.minusMonths(i);
+ // 褰撴湀鐨勫紑濮嬫棩鏈燂紙姣忔湀1鍙凤級
+ LocalDate monthStart = currentMonth.withDayOfMonth(1);
+ // 褰撴湀鐨勭粨鏉熸棩鏈燂紙姣忔湀鏈�鍚庝竴澶╋級
+ LocalDate monthEnd = currentMonth.withDayOfMonth(currentMonth.lengthOfMonth());
+
+ // 鏋勫缓褰撴湀鐨勬煡璇㈡潯浠讹紙濡傛灉鎯充竴娆℃�ф煡鍏�4涓湀鏁版嵁鍐嶅唴瀛樼瓫閫夛紝鍙紭鍖栦负鍏堟煡鍏ㄥ啀寰幆绛涢�夛級
+ LambdaQueryWrapper<QualityInspect> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.ge(QualityInspect::getCheckTime, monthStart)
+ .le(QualityInspect::getCheckTime, monthEnd); // 绛涢�夊綋鏈堟暟鎹�
+ List<QualityInspect> monthInspects = qualityStatisticsMapper.selectList(queryWrapper);
+ BigDecimal reduce = monthInspects.stream()
+ .filter(inspect -> inspect.getInspectType().equals(0))
.map(QualityInspect::getQuantity)
- .reduce(BigDecimal.ZERO, BigDecimal::add)
- );
- qualityStatisticsItem.setFactoryNum(qualityInspects.stream()
- .filter(item -> item.getInspectType().equals(1) && "涓嶅悎鏍�".equals(item.getCheckResult())
- && (startTime.isEqual(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()) || startTime.isAfter(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()))
- && endTime.isBefore(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()))
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ supplierNum = supplierNum.add(reduce);
+ BigDecimal reduce1 = monthInspects.stream()
+ .filter(inspect -> inspect.getInspectType().equals(1))
.map(QualityInspect::getQuantity)
- .reduce(BigDecimal.ZERO, BigDecimal::add)
- );
- qualityStatisticsItem.setProcessNum(qualityInspects.stream()
- .filter(item -> item.getInspectType().equals(2) && "涓嶅悎鏍�".equals(item.getCheckResult())
- && (startTime.isEqual(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()) || startTime.isAfter(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()))
- && endTime.isBefore(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()))
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ processNum= processNum.add(reduce1);
+ BigDecimal reduce2 = monthInspects.stream()
+ .filter(inspect -> inspect.getInspectType().equals(2))
.map(QualityInspect::getQuantity)
- .reduce(BigDecimal.ZERO, BigDecimal::add));
- qualityStatisticsItems.add(qualityStatisticsItem);
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ factoryNum = factoryNum.add(reduce2);
+
+ // 鏋勫缓褰撴湀缁熻椤�
+ QualityStatisticsItem item = new QualityStatisticsItem();
+ item.setDate(monthStart.format(monthFormatter)); // 鏃ユ湡鏄剧ず涓衡�滃勾鏈堚�濓紙濡� 2025-10锛�
+
+ // 1. 渚涘簲鍟嗘楠岋紙绫诲瀷0锛�- 鍚堟牸鏁伴噺
+ BigDecimal supplierQualified = monthInspects.stream()
+ .filter(inspect -> inspect.getInspectType().equals(0)
+ && "鍚堟牸".equals(inspect.getCheckResult()))
+ .map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ item.setSupplierNum(supplierQualified);
+
+ // 2. 宸ュ簭妫�楠岋紙绫诲瀷1锛�- 鍚堟牸鏁伴噺
+ BigDecimal processQualified = monthInspects.stream()
+ .filter(inspect -> inspect.getInspectType().equals(1)
+ && "鍚堟牸".equals(inspect.getCheckResult()))
+ .map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ item.setProcessNum(processQualified);
+
+ // 3. 宸ュ巶妫�楠岋紙绫诲瀷2锛�- 鍚堟牸鏁伴噺
+ BigDecimal factoryQualified = monthInspects.stream()
+ .filter(inspect -> inspect.getInspectType().equals(2)
+ && "鍚堟牸".equals(inspect.getCheckResult()))
+ .map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ item.setFactoryNum(factoryQualified);
+
+ qualityStatisticsItems.add(item);
}
+ // 缁熻杩�4涓湀鎬绘暟鎹紙鎵�鏈夋湀浠芥眹鎬伙級
+ qualityStatisticsDto.setProcessNum(processNum);
+ qualityStatisticsDto.setSupplierNum(supplierNum);
+ qualityStatisticsDto.setFactoryNum(factoryNum);
qualityStatisticsDto.setItem(qualityStatisticsItems);
+
return qualityStatisticsDto;
}
@@ -422,6 +461,7 @@
// 瀹℃壒鍗忓悓寰呭姙
Long aLong = approveProcessMapper.selectCount(new LambdaQueryWrapper<ApproveProcess>()
.eq(ApproveProcess::getApproveUserCurrentId, SecurityUtils.getUserId())
+ .eq(ApproveProcess::getApproveDelete, 0)
.in(ApproveProcess::getApproveStatus, 0, 1, 3));
// 璁惧鎶ヤ慨寰呭姙
Long aLong1 = deviceRepairMapper.selectCount(new LambdaQueryWrapper<DeviceRepair>()
@@ -432,4 +472,12 @@
put("deviceRepairTodo", aLong1);
}};
}
+
+ @Override
+ public Long noticesCount() {
+ // 鏌ヨ鏈繃鏈熺殑閫氱煡鏁伴噺锛氱姸鎬佷负鍙戝竷涓旇繃鏈熸椂闂村ぇ浜庣瓑浜庡綋鍓嶆棩鏈�
+ return noticeMapper.selectCount(new LambdaQueryWrapper<Notice>()
+ .eq(Notice::getStatus, 1) // 1琛ㄧず鍙戝竷鐘舵��
+ .ge(Notice::getExpirationDate, new Date())); // 杩囨湡鏃堕棿澶т簬绛変簬褰撳墠鏃ユ湡
+ }
}
--
Gitblit v1.9.3