From cd0984bff3ac9c4480685671d4e033c8b082bfed Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 04 六月 2026 17:04:39 +0800
Subject: [PATCH] 发货去除库存数量限制,产品库存不足也可以发货,库存数量可以展示为负
---
src/main/java/com/ruoyi/quality/service/impl/QualityReportServiceImpl.java | 131 +++++++++++++++++++++++++++++++++++++++----
1 files changed, 118 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityReportServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityReportServiceImpl.java
index ee11f8e..cc5c01a 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityReportServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityReportServiceImpl.java
@@ -1,13 +1,10 @@
package com.ruoyi.quality.service.impl;
+import com.ruoyi.basic.service.IProductModelService;
+import com.ruoyi.basic.service.IProductService;
import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.quality.dto.QualityPassRateDto;
-import com.ruoyi.quality.dto.QualityInspectStatDto;
-import com.ruoyi.quality.dto.QualityMonthlyPassRateDto;
-import com.ruoyi.quality.dto.QualityMonthlyDetailDto;
-import com.ruoyi.quality.dto.QualityParameterStatDto;
-import com.ruoyi.quality.dto.QualityMonthlyPassRateWrapperDto;
-import com.ruoyi.quality.dto.QualityTopParameterDto;
+import com.ruoyi.production.service.ProductOrderService;
+import com.ruoyi.quality.dto.*;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.quality.service.QualityReportService;
import org.springframework.beans.BeanUtils;
@@ -59,11 +56,11 @@
QualityPassRateDto passRateDto = new QualityPassRateDto();
BeanUtils.copyProperties(dto, passRateDto);
- if (dto.getInspectType() == 0) {
+ if (dto.getModelType() == 0) {
wrapper.setRawMaterial(passRateDto);
- } else if (dto.getInspectType() == 1) {
+ } else if (dto.getModelType() == 1) {
wrapper.setProcess(passRateDto);
- } else if (dto.getInspectType() == 2) {
+ } else if (dto.getModelType() == 2) {
wrapper.setOutgoing(passRateDto);
}
}
@@ -90,11 +87,11 @@
}
@Override
- public QualityTopParameterDto getTopParameters(Integer inspectType) {
- if (inspectType == null) {
+ public QualityTopParameterDto getTopParameters(Integer modelType) {
+ if (modelType == null) {
return new QualityTopParameterDto();
}
- List<QualityParameterStatDto> list = qualityInspectMapper.getTopParameters(inspectType);
+ List<QualityParameterStatDto> list = qualityInspectMapper.getTopParameters(modelType);
BigDecimal total = list.stream()
.map(QualityParameterStatDto::getCount)
@@ -106,4 +103,112 @@
return result;
}
+
+ @Override
+ public List<QualityPassRateDto> getMonthlyPassRateWithComparison(String year, Integer month) {
+ if (StringUtils.isEmpty(year) || month == null || month < 1 || month > 12) {
+ return new ArrayList<>();
+ }
+
+ // 鑾峰彇褰撳墠骞存湀鐨勫悎鏍肩巼鏁版嵁
+ List<QualityMonthlyPassRateDto> currentMonthData = qualityInspectMapper.getMonthlyPassRateStatistics(year);
+
+ // 璁$畻涓婃湀
+ int lastMonth = month - 1;
+ String lastMonthYear = year;
+ if (lastMonth == 0) {
+ lastMonth = 12;
+ lastMonthYear = String.valueOf(Integer.parseInt(year) - 1);
+ }
+
+ // 璁$畻鍘诲勾鍚屾湀
+ String lastYear = String.valueOf(Integer.parseInt(year) - 1);
+
+ // 鑾峰彇涓婃湀鏁版嵁
+ List<QualityMonthlyPassRateDto> lastMonthData = qualityInspectMapper.getMonthlyPassRateStatistics(lastMonthYear);
+
+ // 鑾峰彇鍘诲勾鍚屾湀鏁版嵁
+ List<QualityMonthlyPassRateDto> lastYearData = qualityInspectMapper.getMonthlyPassRateStatistics(lastYear);
+
+ // 鏈堜唤鍚嶇О鏄犲皠
+ String[] monthNames = {"涓�鏈�", "浜屾湀", "涓夋湀", "鍥涙湀", "浜旀湀", "鍏湀",
+ "涓冩湀", "鍏湀", "涔濇湀", "鍗佹湀", "鍗佷竴鏈�", "鍗佷簩鏈�"};
+ String currentMonthName = monthNames[month - 1];
+ String lastMonthName = monthNames[lastMonth - 1];
+
+ // 鏋勫缓缁撴灉
+ List<QualityPassRateDto> result = new ArrayList<>();
+
+ for (int modelType = 0; modelType <= 2; modelType++) {
+ final int type = modelType;
+
+ QualityPassRateDto dto = new QualityPassRateDto();
+ dto.setModelType(modelType);
+
+ // 褰撳墠鏈堟暟鎹�
+ QualityMonthlyPassRateDto currentDto = currentMonthData.stream()
+ .filter(d -> d.getMonth().equals(currentMonthName) && d.getModelType() == type)
+ .findFirst()
+ .orElse(null);
+
+ if (currentDto != null) {
+ dto.setTotalCount(currentDto.getTotalCount());
+ dto.setCompletedCount(currentDto.getCompletedCount());
+ dto.setQualifiedCount(currentDto.getQualifiedCount());
+ dto.setUnqualifiedCount(currentDto.getUnqualifiedCount());
+ dto.setCompletionRate(currentDto.getCompletionRate());
+ dto.setPassRate(currentDto.getPassRate());
+ } else {
+ dto.setTotalCount(BigDecimal.ZERO);
+ dto.setCompletedCount(BigDecimal.ZERO);
+ dto.setQualifiedCount(BigDecimal.ZERO);
+ dto.setUnqualifiedCount(BigDecimal.ZERO);
+ dto.setCompletionRate(BigDecimal.ZERO);
+ dto.setPassRate(BigDecimal.ZERO);
+ }
+
+ // 涓婃湀鏁版嵁
+ QualityMonthlyPassRateDto lastMonthDto = lastMonthData.stream()
+ .filter(d -> d.getMonth().equals(lastMonthName) && d.getModelType() == type)
+ .findFirst()
+ .orElse(null);
+
+ BigDecimal lastMonthPassRate = lastMonthDto != null ? lastMonthDto.getPassRate() : BigDecimal.ZERO;
+ dto.setLastMonthPassRate(lastMonthPassRate);
+
+ // 鍘诲勾鍚屾湀鏁版嵁
+ QualityMonthlyPassRateDto lastYearDto = lastYearData.stream()
+ .filter(d -> d.getMonth().equals(currentMonthName) && d.getModelType() == type)
+ .findFirst()
+ .orElse(null);
+
+ BigDecimal lastYearPassRate = lastYearDto != null ? lastYearDto.getPassRate() : BigDecimal.ZERO;
+ dto.setLastYearPassRate(lastYearPassRate);
+
+ // 璁$畻鐜瘮鍙樺寲
+ BigDecimal currentPassRate = dto.getPassRate() != null ? dto.getPassRate() : BigDecimal.ZERO;
+ if (lastMonthPassRate != null && lastMonthPassRate.compareTo(BigDecimal.ZERO) > 0) {
+ BigDecimal momChange = currentPassRate.subtract(lastMonthPassRate);
+ dto.setMomChange(momChange);
+ dto.setMomTrend(momChange.compareTo(BigDecimal.ZERO));
+ } else {
+ dto.setMomChange(BigDecimal.ZERO);
+ dto.setMomTrend(0);
+ }
+
+ // 璁$畻鍚屾瘮鍙樺寲
+ if (lastYearPassRate != null && lastYearPassRate.compareTo(BigDecimal.ZERO) > 0) {
+ BigDecimal yoyChange = currentPassRate.subtract(lastYearPassRate);
+ dto.setYoyChange(yoyChange);
+ dto.setYoyTrend(yoyChange.compareTo(BigDecimal.ZERO));
+ } else {
+ dto.setYoyChange(BigDecimal.ZERO);
+ dto.setYoyTrend(0);
+ }
+
+ result.add(dto);
+ }
+
+ return result;
+ }
}
--
Gitblit v1.9.3