From 7828b982da116070fe11526733609ecce23631b6 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 15 五月 2026 19:55:28 +0800
Subject: [PATCH] feat: 设备维修新增报修人、验收人、维修人
---
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 362 +++++++++++++++++++++------------------------------
1 files changed, 151 insertions(+), 211 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 b0c3cef..e030833 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -2,16 +2,15 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.mapper.AccountExpenseMapper;
import com.ruoyi.account.mapper.AccountIncomeMapper;
import com.ruoyi.account.pojo.AccountExpense;
-import com.ruoyi.home.mapper.HomeMapper;
-import com.ruoyi.account.mapper.AccountExpenseMapper;
import com.ruoyi.approve.mapper.ApproveProcessMapper;
import com.ruoyi.approve.pojo.ApproveProcess;
import com.ruoyi.basic.mapper.CustomerMapper;
import com.ruoyi.basic.mapper.ProductMapper;
-import com.ruoyi.basic.mapper.ProductModelMapper;
import com.ruoyi.basic.mapper.SupplierManageMapper;
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.basic.pojo.Product;
@@ -26,19 +25,11 @@
import com.ruoyi.dto.MapDto;
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.home.dto.*;
+import com.ruoyi.home.mapper.HomeMapper;
import com.ruoyi.home.service.HomeService;
-import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
-import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
-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.ProductProcessMapper;
-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.pojo.ProductProcess;
+import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.ProductWorkOrder;
import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.mapper.SysDeptMapper;
@@ -145,6 +136,12 @@
@Autowired
private ProductProcessMapper productProcessMapper;
+ @Autowired
+ private AccountExpenseMapper accountExpenseMapper;
+
+ @Autowired
+ private AccountIncomeMapper accountIncomeMapper;
+
@Override
public HomeBusinessDto business() {
// 鏋勫缓缁撴灉
@@ -178,28 +175,31 @@
LambdaQueryWrapper<PurchaseLedger> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.ge(PurchaseLedger::getEntryDate, currentMonth.atDay(1).atStartOfDay()) // 澶т簬绛変簬鏈湀绗竴澶�
.lt(PurchaseLedger::getEntryDate, currentMonth.plusMonths(1).atDay(1).atStartOfDay()); // 灏忎簬涓嬫湀绗竴澶�
- // 鎵ц鏌ヨ骞惰绠楁�诲拰
+
List<PurchaseLedger> purchaseLedgers = purchaseLedgerMapper.selectList(queryWrapper);
if (!CollectionUtils.isEmpty(purchaseLedgers)) {
- LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductMapperLambdaQueryWrapperCopy = new LambdaQueryWrapper<SalesLedgerProduct>();
- salesLedgerProductMapperLambdaQueryWrapperCopy.eq(SalesLedgerProduct::getType, 2)
+ LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductMapperLambdaQueryWrapperCopy = new LambdaQueryWrapper<>();
+ salesLedgerProductMapperLambdaQueryWrapperCopy.eq(SalesLedgerProduct::getType, 2) // 閲囪喘绫诲瀷
.in(SalesLedgerProduct::getSalesLedgerId,
purchaseLedgers.stream().map(PurchaseLedger::getId).collect(Collectors.toList()));
+
List<SalesLedgerProduct> salesLedgerProductsCopy = salesLedgerProductMapper
.selectList(salesLedgerProductMapperLambdaQueryWrapperCopy);
- // 鍚堣鍚堝悓閲戦
+
+ // 鍚堣鍚堝悓鎬婚噾棰�
BigDecimal receiveAmount = purchaseLedgers.stream()
.map(PurchaseLedger::getContractAmount)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
- // 鏈紑绁ㄩ噾棰�
+
+ // 寰呬粯娆炬�婚噾棰�
BigDecimal unReceiptPaymentAmount = salesLedgerProductsCopy.stream()
- .map(SalesLedgerProduct::getNoInvoiceAmount)
+ .map(SalesLedgerProduct::getPendingTicketsTotal)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
+
homeBusinessDto.setMonthPurchaseMoney(receiveAmount.setScale(2, RoundingMode.HALF_UP).toString());
- homeBusinessDto
- .setMonthPurchaseHaveMoney(unReceiptPaymentAmount.setScale(2, RoundingMode.HALF_UP).toString());
+ homeBusinessDto.setMonthPurchaseHaveMoney(unReceiptPaymentAmount.setScale(2, RoundingMode.HALF_UP).toString());
}
// 缁熻搴撳瓨
BigDecimal stockQuantityTotal = stockInventoryMapper.selectTotal();
@@ -308,6 +308,47 @@
return analysisCustomerContractAmountsDto;
}
+ private static BigDecimal nz(BigDecimal v) {
+ return v == null ? BigDecimal.ZERO : v;
+ }
+
+ /**
+ * 澶у睆/鎶ヨ〃缁熻鐢ㄥ悎鏍兼暟閲忥細浠� qualified_quantity
+ */
+ private BigDecimal inspectQualifiedQtyForStat(QualityInspect item) {
+ if (item.getQualifiedQuantity() != null) {
+ return item.getQualifiedQuantity();
+ }
+ BigDecimal qty = nz(item.getQuantity());
+ if ("鍚堟牸".equals(item.getCheckResult())) {
+ return qty;
+ }
+ return BigDecimal.ZERO;
+ }
+
+ /**
+ * 澶у睆/鎶ヨ〃缁熻鐢ㄤ笉鍚堟牸鏁伴噺锛氫互 unqualified_quantity
+ */
+ private BigDecimal inspectUnqualifiedQtyForStat(QualityInspect item) {
+ if (item.getUnqualifiedQuantity() != null) {
+ return item.getUnqualifiedQuantity();
+ }
+ BigDecimal qty = nz(item.getQuantity());
+ String cr = item.getCheckResult();
+ if ("涓嶅悎鏍�".equals(cr) || "閮ㄥ垎鍚堟牸".equals(cr)) {
+ return qty;
+ }
+ return BigDecimal.ZERO;
+ }
+
+ private boolean inspectHasUnqualifiedVolume(QualityInspect item) {
+ return inspectUnqualifiedQtyForStat(item).compareTo(BigDecimal.ZERO) > 0;
+ }
+
+ private static int toStatInt(BigDecimal v) {
+ return nz(v).setScale(0, RoundingMode.HALF_UP).intValue();
+ }
+
@Override
public QualityStatisticsDto qualityStatistics() {
// 鑾峰彇杩戝洓涓湀鏁版嵁锛堝線鍓嶆帹涓変釜鏈堬紝鍏�4涓畬鏁存湀浠斤級
@@ -330,10 +371,10 @@
// 褰撴湀鐨勭粨鏉熸棩鏈燂紙姣忔湀鏈�鍚庝竴澶╋級
LocalDate monthEnd = currentMonth.withDayOfMonth(currentMonth.lengthOfMonth());
- // 鏋勫缓褰撴湀鐨勬煡璇㈡潯浠讹紙濡傛灉鎯充竴娆℃�ф煡鍏�4涓湀鏁版嵁鍐嶅唴瀛樼瓫閫夛紝鍙紭鍖栦负鍏堟煡鍏ㄥ啀寰幆绛涢�夛級
+ // 鏋勫缓褰撴湀鐨勬煡璇㈡潯浠�
LambdaQueryWrapper<QualityInspect> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.ge(QualityInspect::getCheckTime, monthStart)
- .le(QualityInspect::getCheckTime, monthEnd); // 绛涢�夊綋鏈堟暟鎹�
+ queryWrapper.ge(QualityInspect::getCheckTime, monthStart.toString())
+ .le(QualityInspect::getCheckTime, monthEnd.toString());
List<QualityInspect> monthInspects = qualityStatisticsMapper.selectList(queryWrapper);
BigDecimal reduce = monthInspects.stream()
.filter(inspect -> inspect.getInspectType().equals(0))
@@ -355,29 +396,27 @@
QualityStatisticsItem item = new QualityStatisticsItem();
item.setDate(monthStart.format(monthFormatter)); // 鏃ユ湡鏄剧ず涓衡�滃勾鏈堚�濓紙濡� 2025-10锛�
- // 1. 渚涘簲鍟嗘楠岋紙绫诲瀷0锛�- 鍚堟牸鏁伴噺
- BigDecimal supplierQualified = monthInspects.stream()
+ // 1锝�3锛氭湰鏈堛�屼笉鍚堟牸鏁伴噺銆嶏紙浠呭凡鎻愪氦妫�楠岋級锛屾寜妫�楠岀被鍒媶鍒嗏�斺�旂敤浜庡浘琛ㄥ浘渚嬨�屆椕椾笉鍚堟牸鏁般��
+ BigDecimal supplierUnq = monthInspects.stream()
.filter(inspect -> inspect.getInspectType().equals(0)
- && "鍚堟牸".equals(inspect.getCheckResult()))
- .map(QualityInspect::getQuantity)
+ && Objects.equals(inspect.getInspectState(), 1))
+ .map(this::inspectUnqualifiedQtyForStat)
.reduce(BigDecimal.ZERO, BigDecimal::add);
- item.setSupplierNum(supplierQualified);
+ item.setSupplierNum(supplierUnq);
- // 2. 宸ュ簭妫�楠岋紙绫诲瀷1锛�- 鍚堟牸鏁伴噺
- BigDecimal processQualified = monthInspects.stream()
+ BigDecimal processUnq = monthInspects.stream()
.filter(inspect -> inspect.getInspectType().equals(1)
- && "鍚堟牸".equals(inspect.getCheckResult()))
- .map(QualityInspect::getQuantity)
+ && Objects.equals(inspect.getInspectState(), 1))
+ .map(this::inspectUnqualifiedQtyForStat)
.reduce(BigDecimal.ZERO, BigDecimal::add);
- item.setProcessNum(processQualified);
+ item.setProcessNum(processUnq);
- // 3. 宸ュ巶妫�楠岋紙绫诲瀷2锛�- 鍚堟牸鏁伴噺
- BigDecimal factoryQualified = monthInspects.stream()
+ BigDecimal factoryUnq = monthInspects.stream()
.filter(inspect -> inspect.getInspectType().equals(2)
- && "鍚堟牸".equals(inspect.getCheckResult()))
- .map(QualityInspect::getQuantity)
+ && Objects.equals(inspect.getInspectState(), 1))
+ .map(this::inspectUnqualifiedQtyForStat)
.reduce(BigDecimal.ZERO, BigDecimal::add);
- item.setFactoryNum(factoryQualified);
+ item.setFactoryNum(factoryUnq);
qualityStatisticsItems.add(item);
}
@@ -464,8 +503,8 @@
}
// 搴旀敹
List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>()
- // .ge(SalesLedger::getEntryDate, startDate)
- // .lt(SalesLedger::getEntryDate, endDate)
+ // .ge(SalesLedger::getEntryDate, startDate)
+ // .lt(SalesLedger::getEntryDate, endDate)
);
// BigDecimal receivableMoney =
// salesLedgers.stream().map(SalesLedger::getContractAmount).reduce(BigDecimal.ZERO,
@@ -474,8 +513,8 @@
// 搴斾粯
List<PurchaseLedger> procurementRecords = purchaseLedgerMapper
.selectList(new LambdaQueryWrapper<PurchaseLedger>()
- // .ge(PurchaseLedger::getEntryDate, startDate)
- // .lt(PurchaseLedger::getEntryDate, endDate)
+ // .ge(PurchaseLedger::getEntryDate, startDate)
+ // .lt(PurchaseLedger::getEntryDate, endDate)
);
// BigDecimal payableMoney =
// procurementRecords.stream().map(PurchaseLedger::getContractAmount).reduce(BigDecimal.ZERO,
@@ -483,8 +522,8 @@
BigDecimal payableMoney = sumAmount(procurementRecords, PurchaseLedger::getContractAmount);
// 棰勬敹
List<ReceiptPayment> receiptPayments = receiptPaymentMapper.selectList(new LambdaQueryWrapper<ReceiptPayment>()
- // .ge(ReceiptPayment::getReceiptPaymentDate, startDate)
- // .lt(ReceiptPayment::getReceiptPaymentDate, endDate)
+ // .ge(ReceiptPayment::getReceiptPaymentDate, startDate)
+ // .lt(ReceiptPayment::getReceiptPaymentDate, endDate)
);
// BigDecimal advanceMoney =
// receiptPayments.stream().map(ReceiptPayment::getReceiptPaymentAmount).reduce(BigDecimal.ZERO,
@@ -493,8 +532,8 @@
// 棰勪粯
List<PaymentRegistration> paymentRegistrations = paymentRegistrationMapper
.selectList(new LambdaQueryWrapper<PaymentRegistration>()
- // .ge(PaymentRegistration::getPaymentDate, startDate)
- // .lt(PaymentRegistration::getPaymentDate, endDate)
+ // .ge(PaymentRegistration::getPaymentDate, startDate)
+ // .lt(PaymentRegistration::getPaymentDate, endDate)
);
// BigDecimal prepayMoney =
// paymentRegistrations.stream().map(PaymentRegistration::getCurrentPaymentAmount).reduce(BigDecimal.ZERO,
@@ -558,7 +597,7 @@
productionProgressDto.setCompletedOrderDetails(productOrderDtos);
long totalCount = productOrderDtos.size();
long count = productOrderDtos.stream().filter(
- productOrderDto -> productOrderDto.getCompleteQuantity().compareTo(productOrderDto.getQuantity()) >= 0)
+ productOrderDto -> productOrderDto.getCompleteQuantity().compareTo(productOrderDto.getQuantity()) >= 0)
.count();
long count2 = productOrderDtos.stream()
.filter(productOrderDto -> productOrderDto.getCompleteQuantity().compareTo(BigDecimal.ZERO) == 0)
@@ -666,64 +705,21 @@
@Override
public HomeSummaryDto summaryStatistics() {
HomeSummaryDto dto = new HomeSummaryDto();
- LocalDate now = LocalDate.now();
- YearMonth currentMonth = YearMonth.from(now);
- YearMonth prevMonth = currentMonth.minusMonths(1);
-
- LocalDateTime currentMonthEnd = currentMonth.atEndOfMonth().atTime(23, 59, 59);
- LocalDateTime prevMonthEnd = prevMonth.atEndOfMonth().atTime(23, 59, 59);
-
// 鎬诲伐浣滀汉鍛�
- Long currentStaff = countStaff(currentMonthEnd);
- Long prevStaff = countStaff(prevMonthEnd);
+ Long currentStaff = 0L;
dto.setTotalStaff(currentStaff);
- dto.setStaffGrowthRate(calculateMoM(currentStaff, prevStaff));
// 鎬诲鎴锋暟
- Long currentCustomers = countCustomers(currentMonthEnd);
- Long prevCustomers = countCustomers(prevMonthEnd);
+ Long currentCustomers = customerMapper.selectCount(null);
dto.setTotalCustomer(currentCustomers);
- dto.setCustomerGrowthRate(calculateMoM(currentCustomers, prevCustomers));
// 鎬讳緵搴斿晢鏁�
- Long currentSuppliers = countSuppliers(currentMonthEnd);
- Long prevSuppliers = countSuppliers(prevMonthEnd);
+ Long currentSuppliers = supplierManageMapper.selectCount(null);
dto.setTotalSupplier(currentSuppliers);
- dto.setSupplierGrowthRate(calculateMoM(currentSuppliers, prevSuppliers));
return dto;
}
- private Long countStaff(LocalDateTime dateTime) {
- Long staffCountItem = staffOnJobMapper.selectCount(new LambdaQueryWrapper<StaffOnJob>()
- .isNotNull(StaffOnJob::getStaffState)
- .eq(StaffOnJob::getStaffState, 1)
- .le(StaffOnJob::getCreateTime, dateTime));
- return staffCountItem;
- }
-
- private Long countCustomers(LocalDateTime dateTime) {
- return customerMapper.selectCount(new LambdaQueryWrapper<Customer>()
- .le(Customer::getMaintenanceTime, dateTime.toLocalDate()));
- }
-
- private Long countSuppliers(LocalDateTime dateTime) {
- return supplierManageMapper.selectCount(new LambdaQueryWrapper<SupplierManage>()
- .le(SupplierManage::getCreateTime, dateTime));
- }
-
- private String calculateMoM(Number current, Number prev) {
- BigDecimal curVal = new BigDecimal(current.toString());
- BigDecimal prevVal = new BigDecimal(prev.toString());
- if (prevVal.compareTo(BigDecimal.ZERO) == 0) {
- return curVal.compareTo(BigDecimal.ZERO) > 0 ? "100.00" : "0.00";
- }
- return curVal.subtract(prevVal)
- .divide(prevVal, 4, RoundingMode.HALF_UP)
- .multiply(new BigDecimal("100"))
- .setScale(2, RoundingMode.HALF_UP)
- .toString();
- }
@Override
public List<SupplierPurchaseRankingDto> supplierPurchaseRanking(Integer type) {
@@ -1031,28 +1027,20 @@
@Override
public List<MapDto> salesPurchaseStorageProductCount() {
- LocalDate now = LocalDate.now();
- DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ LocalDateTime now = LocalDateTime.now();
+ LocalDateTime currentMonthStart = now.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN);
+ LocalDateTime lastMonth = now.minusMonths(1);
+ LocalDateTime lastMonthStart = lastMonth.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN);
+ LocalDateTime lastMonthEnd = lastMonth.with(TemporalAdjusters.lastDayOfMonth()).with(LocalTime.MAX);
- String currentMonthStart = now.with(TemporalAdjusters.firstDayOfMonth()).format(dtf);
- String currentMonthNow = now.format(dtf);
-
- LocalDate lastMonth = now.minusMonths(1);
- String lastMonthStart = lastMonth.with(TemporalAdjusters.firstDayOfMonth()).format(dtf);
- String lastMonthEnd = lastMonth.with(TemporalAdjusters.lastDayOfMonth()).format(dtf);
-
- // 閿�鍞�
- int currentSales = salesLedgerProductMapper.selectProductCountByTypeAndDate(1, currentMonthStart,
- currentMonthNow);
+ // 閿�鍞�
+ int currentSales = salesLedgerProductMapper.selectProductCountByTypeAndDate(1, currentMonthStart, now);
int lastSales = salesLedgerProductMapper.selectProductCountByTypeAndDate(1, lastMonthStart, lastMonthEnd);
-
- // 閲囪喘
- int currentPurchase = salesLedgerProductMapper.selectProductCountByTypeAndDate(2, currentMonthStart,
- currentMonthNow);
+ // 閲囪喘
+ int currentPurchase = salesLedgerProductMapper.selectProductCountByTypeAndDate(2, currentMonthStart, now);
int lastPurchase = salesLedgerProductMapper.selectProductCountByTypeAndDate(2, lastMonthStart, lastMonthEnd);
-
- // 鍌ㄥ瓨
- int currentStorage = stockInventoryMapper.selectStorageProductCountByDate(currentMonthStart, currentMonthNow);
+ // 鍌ㄥ瓨
+ int currentStorage = stockInventoryMapper.selectStorageProductCountByDate(currentMonthStart, now);
int lastStorage = stockInventoryMapper.selectStorageProductCountByDate(lastMonthStart, lastMonthEnd);
List<MapDto> list = new ArrayList<>();
@@ -1151,12 +1139,6 @@
public List<MapDto> productTurnoverDays() {
return homeMapper.productTurnoverDays();
}
-
- @Autowired
- private AccountExpenseMapper accountExpenseMapper;
-
- @Autowired
- private AccountIncomeMapper accountIncomeMapper;
public List<Map<String, Object>> incomeExpenseAnalysis(Integer type) {
@@ -1281,36 +1263,21 @@
String startStr = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
String endStr = endDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
- // List<IncomeExpenseAnalysisDto> incomeList =
- // salesLedgerMapper.selectIncomeStats(startStr, endStr, dateFormat);
- List<IncomeExpenseAnalysisDto> incomeList = new ArrayList<>();
- List<IncomeExpenseAnalysisDto> purchaseList = purchaseLedgerMapper.selectPurchaseStats(startStr, endStr,
- dateFormat);
- List<IncomeExpenseAnalysisDto> expenseList = accountExpenseMapper.selectAccountExpenseStats(startStr, endStr,
- dateFormat);
+ List<IncomeExpenseAnalysisDto> incomeList = accountIncomeMapper.selectIncomeStats(startStr, endStr, dateFormat);
+ List<IncomeExpenseAnalysisDto> expenseList = accountExpenseMapper.selectAccountExpenseStats(startStr, endStr, dateFormat);
Map<String, BigDecimal> incomeMap = incomeList.stream().collect(Collectors
- .toMap(IncomeExpenseAnalysisDto::getDateStr, IncomeExpenseAnalysisDto::getAmount, BigDecimal::add));
- Map<String, BigDecimal> purchaseMap = purchaseList.stream().collect(Collectors
.toMap(IncomeExpenseAnalysisDto::getDateStr, IncomeExpenseAnalysisDto::getAmount, BigDecimal::add));
Map<String, BigDecimal> expenseMap = expenseList.stream().collect(Collectors
.toMap(IncomeExpenseAnalysisDto::getDateStr, IncomeExpenseAnalysisDto::getAmount, BigDecimal::add));
List<MapDto> result = new ArrayList<>();
-
for (String month : months) {
MapDto dto = new MapDto();
dto.setName(month);
-
BigDecimal income = incomeMap.getOrDefault(month, BigDecimal.ZERO);
-
- BigDecimal purchase = purchaseMap.getOrDefault(month, BigDecimal.ZERO);
- income = BigDecimal.ZERO;
BigDecimal expense = expenseMap.getOrDefault(month, BigDecimal.ZERO);
- BigDecimal totalExpense = purchase.add(expense);
-
- BigDecimal profit = income.subtract(totalExpense);
-
+ BigDecimal profit = income.subtract(expense);
dto.setValue(profit.setScale(2, RoundingMode.HALF_UP).toString());
result.add(dto);
}
@@ -1916,10 +1883,8 @@
LocalDate startDate = range[0];
LocalDate endDate = range[1];
- String startStr = startDate.atStartOfDay()
- .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
- String endStr = endDate.atTime(LocalTime.MAX)
- .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+ String startStr = startDate.toString();
+ String endStr = endDate.toString();
List<QualityInspect> list = qualityInspectMapper.selectList(
new LambdaQueryWrapper<QualityInspect>()
@@ -1957,7 +1922,7 @@
endDate = today.with(DayOfWeek.SUNDAY);
}
- return new LocalDate[] { startDate, endDate };
+ return new LocalDate[]{startDate, endDate};
}
private QualityQualifiedAnalysisDto buildQualifiedAnalysis(List<QualityInspect> list) {
@@ -1976,17 +1941,14 @@
BigDecimal unqualifiedCount = BigDecimal.ZERO;
for (QualityInspect item : list) {
- if ("鍚堟牸".equals(item.getCheckResult())) {
- qualifiedCount = qualifiedCount.add(item.getQuantity());
- } else {
- unqualifiedCount = unqualifiedCount.add(item.getQuantity());
- }
+ qualifiedCount = qualifiedCount.add(inspectQualifiedQtyForStat(item));
+ unqualifiedCount = unqualifiedCount.add(inspectUnqualifiedQtyForStat(item));
}
BigDecimal totalCount = qualifiedCount.add(unqualifiedCount);
- dto.setQualifiedCount(qualifiedCount.intValue());
- dto.setUnqualifiedCount(unqualifiedCount.intValue());
+ dto.setQualifiedCount(toStatInt(qualifiedCount));
+ dto.setUnqualifiedCount(toStatInt(unqualifiedCount));
if (totalCount.compareTo(BigDecimal.ZERO) == 0) {
dto.setQualifiedRate(BigDecimal.ZERO.setScale(2));
@@ -2009,20 +1971,14 @@
@Override
public QualityInspectionCountDto qualityInspectionCount() {
- // 鑾峰彇浠婂ぉ鐨勫紑濮嬪拰缁撴潫鏃ユ湡,鍖呭惈鏃跺垎绉�
- LocalDateTime todayStart = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0);
- LocalDateTime todayEnd = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(0);
- // 鑾峰彇鍓嶄竴澶╃殑寮�濮嬪拰缁撴潫鏃ユ湡,鍖呭惈鏃跺垎绉�
- LocalDateTime prevStart = todayStart.minusDays(1);
- LocalDateTime prevEnd = todayEnd.minusDays(1);
+ String todayStr = LocalDate.now().toString();
+ String prevDayStr = LocalDate.now().minusDays(1).toString();
// 鏌ヨ鍑烘埅姝粖鏃ョ殑鎬绘楠屾暟
List<QualityInspect> todayList = qualityInspectMapper.selectList(new LambdaQueryWrapper<QualityInspect>()
- // .eq(QualityInspect::getInspectState, 1)
- .le(QualityInspect::getCheckTime, todayEnd));
+ .le(QualityInspect::getCheckTime, todayStr));
// 鏌ヨ鍑烘埅姝㈠墠涓�澶╃殑鎬绘楠屾暟
List<QualityInspect> prevList = qualityInspectMapper.selectList(new LambdaQueryWrapper<QualityInspect>()
- // .eq(QualityInspect::getInspectState, 1)
- .le(QualityInspect::getCheckTime, prevEnd));
+ .le(QualityInspect::getCheckTime, prevDayStr));
// 璁$畻浠婃棩鐨勬�绘楠屾暟
BigDecimal todayCount = todayList.stream()
.map(QualityInspect::getQuantity)
@@ -2038,14 +1994,12 @@
// 璁$畻浠婂ぉ鐨勫緟瀹屾垚鏁伴噺
List<QualityInspect> todayPendingList = qualityInspectMapper.selectList(new LambdaQueryWrapper<QualityInspect>()
.eq(QualityInspect::getInspectState, 0)
- .ge(QualityInspect::getCheckTime, todayStart)
- .le(QualityInspect::getCheckTime, todayEnd));
+ .eq(QualityInspect::getCheckTime, todayStr));
// 璁$畻鍓嶄竴澶╃殑寰呭畬鎴愭暟閲�
List<QualityInspect> prevPendingList = qualityInspectMapper.selectList(new LambdaQueryWrapper<QualityInspect>()
.eq(QualityInspect::getInspectState, 0)
- .ge(QualityInspect::getCheckTime, prevStart)
- .le(QualityInspect::getCheckTime, prevEnd));
+ .eq(QualityInspect::getCheckTime, prevDayStr));
// 璁$畻浠婂ぉ鐨勫緟瀹屾垚鏁伴噺
BigDecimal todayPendingCount = todayPendingList.stream()
.map(QualityInspect::getQuantity)
@@ -2061,14 +2015,12 @@
List<QualityInspect> todayCompletedList = qualityInspectMapper
.selectList(new LambdaQueryWrapper<QualityInspect>()
.eq(QualityInspect::getInspectState, 1)
- .ge(QualityInspect::getCheckTime, todayStart)
- .le(QualityInspect::getCheckTime, todayEnd));
+ .eq(QualityInspect::getCheckTime, todayStr));
// 璁$畻鍓嶄竴澶╃殑宸插畬鎴愭暟閲�
List<QualityInspect> prevCompletedList = qualityInspectMapper
.selectList(new LambdaQueryWrapper<QualityInspect>()
.eq(QualityInspect::getInspectState, 1)
- .ge(QualityInspect::getCheckTime, prevStart)
- .le(QualityInspect::getCheckTime, prevEnd));
+ .eq(QualityInspect::getCheckTime, prevDayStr));
// 璁$畻浠婂ぉ鐨勫凡瀹屾垚鏁伴噺
BigDecimal todayCompletedCount = todayCompletedList.stream()
.map(QualityInspect::getQuantity)
@@ -2101,18 +2053,16 @@
@Override
public NonComplianceWarningDto nonComplianceWarning() {
-
- // 杩戜竷澶╂椂闂村尯闂�
- LocalDateTime[] range = lastSevenDaysRange();
- LocalDateTime startTime = range[0];
- LocalDateTime endTime = range[1];
+ String[] range = lastSevenDaysDateRange();
+ String startStr = range[0];
+ String endStr = range[1];
// 鏌ヨ杩戜竷澶╁凡澶勭悊涓嶅悎鏍兼暟鎹�
List<QualityUnqualified> list = qualityUnqualifiedMapper.selectList(
new LambdaQueryWrapper<QualityUnqualified>()
.eq(QualityUnqualified::getInspectState, 1)
- .ge(QualityUnqualified::getCheckTime, startTime)
- .le(QualityUnqualified::getCheckTime, endTime));
+ .ge(QualityUnqualified::getCheckTime, startStr)
+ .le(QualityUnqualified::getCheckTime, endStr));
NonComplianceWarningDto dto = new NonComplianceWarningDto();
@@ -2211,29 +2161,24 @@
}
/**
- * 鑾峰彇杩戜竷澶╃殑鏃堕棿鍖洪棿锛堝寘鍚粖澶╋級
+ * 鑾峰彇杩戜竷澶╃殑鏃ユ湡鍖洪棿锛堜粎鍚勾鏈堟棩锛�
*/
- public static LocalDateTime[] lastSevenDaysRange() {
+ public static String[] lastSevenDaysDateRange() {
LocalDate today = LocalDate.now();
-
- LocalDateTime startTime = today.minusDays(6).atStartOfDay();
- LocalDateTime endTime = today.atTime(23, 59, 59);
-
- return new LocalDateTime[] { startTime, endTime };
+ return new String[]{today.minusDays(6).toString(), today.toString()};
}
@Override
public List<CompletedInspectionCountDto> completedInspectionCount() {
- // 杩戜竷澶╂椂闂村尯闂�
- LocalDateTime[] range = lastSevenDaysRange();
- LocalDateTime startTime = range[0];
- LocalDateTime endTime = range[1];
+ String[] range = lastSevenDaysDateRange();
+ String startStr = range[0];
+ String endStr = range[1];
// 鏌ヨ杩戜竷澶╁凡瀹屾垚鐨勬楠屾暟鎹�
List<QualityInspect> list = qualityInspectMapper.selectList(new LambdaQueryWrapper<QualityInspect>()
.eq(QualityInspect::getInspectState, 1)
- .ge(QualityInspect::getCheckTime, startTime)
- .le(QualityInspect::getCheckTime, endTime));
+ .ge(QualityInspect::getCheckTime, startStr)
+ .le(QualityInspect::getCheckTime, endStr));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd");
@@ -2266,13 +2211,8 @@
continue;
}
- BigDecimal quantity = item.getQuantity();
-
- if ("鍚堟牸".equals(item.getCheckResult())) {
- dto.setQualifiedCount(dto.getQualifiedCount().add(quantity));
- } else {
- dto.setUnqualifiedCount(dto.getUnqualifiedCount().add(quantity));
- }
+ dto.setQualifiedCount(dto.getQualifiedCount().add(inspectQualifiedQtyForStat(item)));
+ dto.setUnqualifiedCount(dto.getUnqualifiedCount().add(inspectUnqualifiedQtyForStat(item)));
}
// 璁$畻鍚堟牸鐜�
@@ -2313,14 +2253,11 @@
BigDecimal unqualifiedCount = BigDecimal.ZERO;
for (QualityInspect item : items) {
- BigDecimal qty = item.getQuantity();
+ BigDecimal qty = nz(item.getQuantity());
totalCount = totalCount.add(qty);
- if ("鍚堟牸".equals(item.getCheckResult())) {
- qualifiedCount = qualifiedCount.add(qty);
- } else {
- unqualifiedCount = unqualifiedCount.add(qty);
- }
+ qualifiedCount = qualifiedCount.add(inspectQualifiedQtyForStat(item));
+ unqualifiedCount = unqualifiedCount.add(inspectUnqualifiedQtyForStat(item));
}
if (totalCount.compareTo(BigDecimal.ZERO) == 0) {
@@ -2440,8 +2377,8 @@
List<QualityInspect> qualityInspectList = qualityInspectMapper
.selectList(new LambdaQueryWrapper<QualityInspect>()
- .ge(QualityInspect::getCheckTime, startDate)
- .le(QualityInspect::getCheckTime, endDate)
+ .ge(QualityInspect::getCheckTime, startDate.toString())
+ .le(QualityInspect::getCheckTime, endDate.toString())
.eq(QualityInspect::getInspectState, 1));
QualityStatisticsDto dto = new QualityStatisticsDto();
@@ -2449,10 +2386,13 @@
dto.setProcessNum(sumQuantity(qualityInspectList, 1)); // 杩囩▼
dto.setFactoryNum(sumQuantity(qualityInspectList, 2)); // 鍑哄巶
- // 鍋囪 qualityInspectList 鏄竴涓� List<QualityInspect> 绫诲瀷鐨勯泦鍚�
- Map<String, List<QualityInspect>> groupedByCheckResult = qualityInspectList.stream()
- .collect(Collectors.groupingBy(QualityInspect::getCheckResult));
- List<QualityInspect> qualityInspects = groupedByCheckResult.get("涓嶅悎鏍�");
+ // 瀛樺湪涓嶅悎鏍兼暟閲忕殑妫�楠屽崟锛堝惈鎸夋暟閲忔媶鍒嗙殑鏂版暟鎹紱鏃ф暟鎹粛鍙敤妫�娴嬬粨鏋滃厹搴曪級
+ List<QualityInspect> qualityInspects = qualityInspectList.stream()
+ .filter(this::inspectHasUnqualifiedVolume)
+ .collect(Collectors.toList());
+ if (ObjectUtils.isNull(qualityInspects) || qualityInspects.size() == 0) {
+ return dto;
+ }
// 4. 澶勭悊鍥捐〃椤� (Item)
List<QualityStatisticsItem> itemList = new ArrayList<>();
@@ -2504,11 +2444,11 @@
QualityStatisticsItem item = new QualityStatisticsItem();
item.setDate(dateLabel);
- item.setSupplierNum(list.stream().filter(i -> i.getInspectType() == 0).map(QualityInspect::getQuantity)
+ item.setSupplierNum(list.stream().filter(i -> i.getInspectType() == 0).map(this::inspectUnqualifiedQtyForStat)
.reduce(BigDecimal.ZERO, BigDecimal::add));
- item.setProcessNum(list.stream().filter(i -> i.getInspectType() == 1).map(QualityInspect::getQuantity)
+ item.setProcessNum(list.stream().filter(i -> i.getInspectType() == 1).map(this::inspectUnqualifiedQtyForStat)
.reduce(BigDecimal.ZERO, BigDecimal::add));
- item.setFactoryNum(list.stream().filter(i -> i.getInspectType() == 2).map(QualityInspect::getQuantity)
+ item.setFactoryNum(list.stream().filter(i -> i.getInspectType() == 2).map(this::inspectUnqualifiedQtyForStat)
.reduce(BigDecimal.ZERO, BigDecimal::add));
return item;
@@ -2516,7 +2456,7 @@
@Override
public List<processDataProductionStatisticsDto> processDataProductionStatistics(Integer type,
- List<Long> processIds) {
+ List<Long> processIds) {
LoginUser loginUser = SecurityUtils.getLoginUser();
Long userId = SecurityUtils.isAdmin(loginUser.getUserId()) ? null : loginUser.getUserId();
@@ -2547,4 +2487,4 @@
return productProcessMapper.calculateProductionStatistics(startDateTime, endDateTime, userId, processIds);
}
-}
\ No newline at end of file
+}
--
Gitblit v1.9.3