From 38aaf481e936881b79671548d122d27e10997a72 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 12 十二月 2025 16:33:52 +0800
Subject: [PATCH] yys 库存分析
---
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 113 ++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 96 insertions(+), 17 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 dd3505a..d116743 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -296,12 +296,12 @@
.filter(inspect -> inspect.getInspectType().equals(1))
.map(QualityInspect::getQuantity)
.reduce(BigDecimal.ZERO, BigDecimal::add);
- factoryNum= factoryNum.add(reduce1);
+ processNum= processNum.add(reduce1);
BigDecimal reduce2 = monthInspects.stream()
.filter(inspect -> inspect.getInspectType().equals(2))
.map(QualityInspect::getQuantity)
.reduce(BigDecimal.ZERO, BigDecimal::add);
- processNum = processNum.add(reduce2);
+ factoryNum = factoryNum.add(reduce2);
// 鏋勫缓褰撴湀缁熻椤�
QualityStatisticsItem item = new QualityStatisticsItem();
@@ -445,27 +445,39 @@
List<QualityInspect> qualityInspects = qualityStatisticsMapper.selectList(null);
if(!CollectionUtils.isEmpty(qualityInspects)){
// 鍘熸潗鏂欏悎鏍肩巼
- long rawwMaterialCount = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 0).count();
- long count = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 0).count();
- if(count > 0){
- qualityProductQualifiedRateDto.setRawMaterialQualifiedRate(new BigDecimal(rawwMaterialCount)
- .divide(new BigDecimal( count), 4, RoundingMode.HALF_UP)
+ BigDecimal reduce = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 0)
+ .map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal reduce1 = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 0)
+ .map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ if(reduce1.compareTo(BigDecimal.ZERO) != 0){
+ qualityProductQualifiedRateDto.setRawMaterialQualifiedRate(reduce
+ .divide(reduce1, 4, RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(100.0)));
}
// 杩囩▼鍚堟牸鐜�
- long processCount = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 1).count();
- long countOne = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 1).count();
- if(countOne > 0){
- qualityProductQualifiedRateDto.setProcessQualifiedRate(new BigDecimal(processCount)
- .divide(new BigDecimal( countOne), 4, RoundingMode.HALF_UP)
+ BigDecimal reduce2 = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 1)
+ .map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal reduce3 = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 1)
+ .map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ if(reduce3.compareTo(BigDecimal.ZERO) != 0){
+ qualityProductQualifiedRateDto.setProcessQualifiedRate(reduce2
+ .divide(reduce3, 4, RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(100.0)));
}
// 鍑哄巶鍚堟牸鐜�
- long factoryCount = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 2).count();
- long countTwo = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 2).count();
- if(countTwo > 0){
- qualityProductQualifiedRateDto.setFactoryQualifiedRate(new BigDecimal(factoryCount)
- .divide(new BigDecimal( countTwo), 4, RoundingMode.HALF_UP)
+ BigDecimal factoryCount = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 2)
+ .map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal countTwo = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 2)
+ .map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ if(countTwo.compareTo(BigDecimal.ZERO) != 0){
+ qualityProductQualifiedRateDto.setFactoryQualifiedRate(factoryCount
+ .divide(countTwo, 4, RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(100.0)));
}
}
@@ -495,4 +507,71 @@
return qualityProductQualifiedRateDto;
}
+
+ @Override
+ public QualityStatisticsDto inventoryStatistics() {
+ // 鑾峰彇杩戝洓涓湀鏁版嵁锛堝線鍓嶆帹涓変釜鏈堬紝鍏�4涓畬鏁存湀浠斤級
+ LocalDate today = LocalDate.now();
+ // 瀹氫箟鏃ユ湡鏍煎紡鍖栧櫒锛堢敤浜庢樉绀衡�滃勾鏈堚�濇牸寮忥級
+ DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
+
+ QualityStatisticsDto qualityStatisticsDto = new QualityStatisticsDto();
+ List<QualityStatisticsItem> qualityStatisticsItems = new ArrayList<>();
+
+ BigDecimal supplierNum = new BigDecimal(0); //鍏ュ簱鏁伴噺
+ BigDecimal factoryNum = 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<ProcurementRecordStorage> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.ge(ProcurementRecordStorage::getCreateTime, monthStart)
+ .le(ProcurementRecordStorage::getCreateTime, monthEnd); // 绛涢�夊綋鏈堟暟鎹�
+ List<ProcurementRecordStorage> monthInspects = procurementRecordStorageMapper.selectList(queryWrapper);
+ // 鍑哄簱鏁伴噺
+ LambdaQueryWrapper<ProcurementRecordOut> queryWrapper1 = new LambdaQueryWrapper<>();
+ queryWrapper1.ge(ProcurementRecordOut::getCreateTime, monthStart)
+ .le(ProcurementRecordOut::getCreateTime, monthEnd);
+ List<ProcurementRecordOut> monthInspects1 = procurementRecordOutMapper.selectList(queryWrapper1);
+ BigDecimal reduce = monthInspects.stream()
+ .map(ProcurementRecordStorage::getInboundNum)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ supplierNum = supplierNum.add(reduce);
+ BigDecimal reduce1 = monthInspects1.stream()
+ .map(ProcurementRecordOut::getInboundNum)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ factoryNum= factoryNum.add(reduce1);
+
+ // 鏋勫缓褰撴湀缁熻椤�
+ QualityStatisticsItem item = new QualityStatisticsItem();
+ item.setDate(monthStart.format(monthFormatter)); // 鏃ユ湡鏄剧ず涓衡�滃勾鏈堚�濓紙濡� 2025-10锛�
+
+ // 1. 渚涘簲鍟嗘楠岋紙绫诲瀷0锛�- 鍚堟牸鏁伴噺
+ BigDecimal supplierQualified = monthInspects.stream()
+ .map(ProcurementRecordStorage::getInboundNum)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ item.setSupplierNum(supplierQualified);
+
+ // 3. 宸ュ巶妫�楠岋紙绫诲瀷2锛�- 鍚堟牸鏁伴噺
+ BigDecimal factoryQualified = monthInspects1.stream()
+ .map(ProcurementRecordOut::getInboundNum)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ item.setFactoryNum(factoryQualified);
+
+ qualityStatisticsItems.add(item);
+ }
+ // 缁熻杩�4涓湀鎬绘暟鎹紙鎵�鏈夋湀浠芥眹鎬伙級
+ qualityStatisticsDto.setSupplierNum(supplierNum);
+ qualityStatisticsDto.setFactoryNum(factoryNum);
+ qualityStatisticsDto.setItem(qualityStatisticsItems);
+
+ return qualityStatisticsDto;
+ }
}
--
Gitblit v1.9.3