From 7944fe0c62ad8ac73bfc46b44bdc243c78158abb Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期一, 01 六月 2026 17:38:27 +0800
Subject: [PATCH] 销售订单数据排除反审
---
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 308 ++++++++++++++++++++++-----------------------------
1 files changed, 134 insertions(+), 174 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 0f4425c..24d8bc1 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -4,15 +4,13 @@
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;
@@ -27,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;
@@ -146,6 +136,12 @@
@Autowired
private ProductProcessMapper productProcessMapper;
+ @Autowired
+ private AccountExpenseMapper accountExpenseMapper;
+
+ @Autowired
+ private AccountIncomeMapper accountIncomeMapper;
+
@Override
public HomeBusinessDto business() {
// 鏋勫缓缁撴灉
@@ -155,7 +151,8 @@
// 鍒涘缓LambdaQueryWrapper
LambdaQueryWrapper<SalesLedger> salesLedgerLambdaQueryWrapper = new LambdaQueryWrapper<>();
salesLedgerLambdaQueryWrapper.ge(SalesLedger::getEntryDate, currentMonth.atDay(1).atStartOfDay()) // 澶т簬绛変簬鏈湀绗竴澶�
- .lt(SalesLedger::getEntryDate, currentMonth.plusMonths(1).atDay(1).atStartOfDay()); // 灏忎簬涓嬫湀绗竴澶�
+ .lt(SalesLedger::getEntryDate, currentMonth.plusMonths(1).atDay(1).atStartOfDay()) // 灏忎簬涓嬫湀绗竴澶�
+ .ne(SalesLedger::getReviewStatus, 2); // 鎺掗櫎鍙嶅鏍告暟鎹�
List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(salesLedgerLambdaQueryWrapper);
if (!CollectionUtils.isEmpty(salesLedgers)) {
// 鍚堣鍚堝悓閲戦
@@ -179,28 +176,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();
@@ -214,7 +214,7 @@
@Override
public AnalysisCustomerContractAmountsDto analysisCustomerContractAmounts() {
- List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(null);
+ List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>().ne(SalesLedger::getReviewStatus, 2));
// 鍚堣鍚堝悓閲戦
BigDecimal contractAmount = salesLedgers.stream().map(SalesLedger::getContractAmount)
.filter(Objects::nonNull)
@@ -230,7 +230,8 @@
LocalDate endOfWeek = today.with(DayOfWeek.SUNDAY);
List<SalesLedger> salesLedgers1 = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>()
.ge(SalesLedger::getEntryDate, startOfWeek) // 澶т簬绛変簬鏈懆鍛ㄤ竴
- .lt(SalesLedger::getEntryDate, endOfWeek.plusDays(1))); // 淇敼锛氫娇鐢� lt 骞跺姞涓婁竴澶╂潵鍖呭惈鍛ㄦ棩
+ .lt(SalesLedger::getEntryDate, endOfWeek.plusDays(1))
+ .ne(SalesLedger::getReviewStatus, 2)); // 淇敼锛氫娇鐢� lt 骞跺姞涓婁竴澶╂潵鍖呭惈鍛ㄦ棩
BigDecimal weekContractAmount = salesLedgers1.stream().map(SalesLedger::getContractAmount)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -239,7 +240,8 @@
LocalDate lastYearEndOfWeek = today.minusYears(1).with(DayOfWeek.SUNDAY);
List<SalesLedger> salesLedgers2 = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>()
.ge(SalesLedger::getEntryDate, lastYearStartOfWeek) // 澶т簬绛変簬鍘诲勾鏈懆鍛ㄤ竴
- .lt(SalesLedger::getEntryDate, lastYearEndOfWeek.plusDays(1))); // 淇敼锛氫娇鐢� lt 骞跺姞涓婁竴澶╂潵鍖呭惈鍛ㄦ棩
+ .lt(SalesLedger::getEntryDate, lastYearEndOfWeek.plusDays(1))
+ .ne(SalesLedger::getReviewStatus, 2)); // 淇敼锛氫娇鐢� lt 骞跺姞涓婁竴澶╂潵鍖呭惈鍛ㄦ棩
BigDecimal lastYearWeekContractAmount = salesLedgers2.stream().map(SalesLedger::getContractAmount)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -259,13 +261,15 @@
LocalDate plusDays = today.plusDays(1);
List<SalesLedger> salesLedgers3 = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>()
.ge(SalesLedger::getEntryDate, today) // 澶т簬绛変簬浠婂ぉ
- .lt(SalesLedger::getEntryDate, plusDays)); // 淇敼锛氫娇鐢� lt 骞跺姞涓婁竴澶╂潵鍖呭惈褰撳ぉ
+ .lt(SalesLedger::getEntryDate, plusDays)
+ .ne(SalesLedger::getReviewStatus, 2)); // 淇敼锛氫娇鐢� lt 骞跺姞涓婁竴澶╂潵鍖呭惈褰撳ぉ
BigDecimal todayContractAmount = salesLedgers3.stream().map(SalesLedger::getContractAmount)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
List<SalesLedger> salesLedgers4 = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>()
.ge(SalesLedger::getEntryDate, yesterday) // 澶т簬绛変簬鏄ㄥぉ
- .lt(SalesLedger::getEntryDate, today)); // 淇敼锛氫娇鐢� lt 鑰屼笉鏄� gt
+ .lt(SalesLedger::getEntryDate, today)
+ .ne(SalesLedger::getReviewStatus, 2)); // 淇敼锛氫娇鐢� lt 鑰屼笉鏄� gt
BigDecimal lastYearYesterdayContractAmount = salesLedgers4.stream().map(SalesLedger::getContractAmount)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -307,6 +311,47 @@
});
analysisCustomerContractAmountsDto.setItem(mapDtos);
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
@@ -356,29 +401,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);
}
@@ -465,8 +508,7 @@
}
// 搴旀敹
List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>()
- // .ge(SalesLedger::getEntryDate, startDate)
- // .lt(SalesLedger::getEntryDate, endDate)
+ .ne(SalesLedger::getReviewStatus, 2) // 鎺掗櫎鍙嶅鏍告暟鎹�
);
// BigDecimal receivableMoney =
// salesLedgers.stream().map(SalesLedger::getContractAmount).reduce(BigDecimal.ZERO,
@@ -475,8 +517,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,
@@ -484,8 +526,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,
@@ -494,8 +536,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,
@@ -559,7 +601,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)
@@ -667,64 +709,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) {
@@ -804,7 +803,8 @@
List<SalesLedger> list = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>()
.eq(SalesLedger::getCustomerId, customerId)
.ge(SalesLedger::getEntryDate, start)
- .le(SalesLedger::getEntryDate, end));
+ .le(SalesLedger::getEntryDate, end)
+ .ne(SalesLedger::getReviewStatus, 2));
if (groupByMonth) {
for (int i = 0; i < 3; i++) {
@@ -1032,28 +1032,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<>();
@@ -1152,12 +1144,6 @@
public List<MapDto> productTurnoverDays() {
return homeMapper.productTurnoverDays();
}
-
- @Autowired
- private AccountExpenseMapper accountExpenseMapper;
-
- @Autowired
- private AccountIncomeMapper accountIncomeMapper;
public List<Map<String, Object>> incomeExpenseAnalysis(Integer type) {
@@ -1282,36 +1268,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);
}
@@ -1956,7 +1927,7 @@
endDate = today.with(DayOfWeek.SUNDAY);
}
- return new LocalDate[] { startDate, endDate };
+ return new LocalDate[]{startDate, endDate};
}
private QualityQualifiedAnalysisDto buildQualifiedAnalysis(List<QualityInspect> list) {
@@ -1975,17 +1946,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));
@@ -2202,7 +2170,7 @@
*/
public static String[] lastSevenDaysDateRange() {
LocalDate today = LocalDate.now();
- return new String[] { today.minusDays(6).toString(), today.toString() };
+ return new String[]{today.minusDays(6).toString(), today.toString()};
}
@Override
@@ -2248,13 +2216,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)));
}
// 璁$畻鍚堟牸鐜�
@@ -2295,14 +2258,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) {
@@ -2431,12 +2391,12 @@
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("涓嶅悎鏍�");
- if(ObjectUtils.isNull(qualityInspects) || qualityInspects.size()==0){
- return null;
+ // 瀛樺湪涓嶅悎鏍兼暟閲忕殑妫�楠屽崟锛堝惈鎸夋暟閲忔媶鍒嗙殑鏂版暟鎹紱鏃ф暟鎹粛鍙敤妫�娴嬬粨鏋滃厹搴曪級
+ 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<>();
@@ -2489,11 +2449,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;
@@ -2501,7 +2461,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();
@@ -2532,4 +2492,4 @@
return productProcessMapper.calculateProductionStatistics(startDateTime, endDateTime, userId, processIds);
}
-}
+}
\ No newline at end of file
--
Gitblit v1.9.3