From 161c5e12e3d7f5e2f4345ed3609fe05037ea2b23 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期一, 25 五月 2026 17:15:05 +0800
Subject: [PATCH] feat: 大屏调整
---
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 179 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 151 insertions(+), 28 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 08ff1ad..174d0b6 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -8,6 +8,8 @@
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.home.dto.*;
import com.ruoyi.home.service.HomeService;
+import com.ruoyi.lavorissue.mapper.LavorIssueMapper;
+import com.ruoyi.lavorissue.pojo.LaborIssue;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
@@ -33,6 +35,8 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.time.*;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
@@ -75,6 +79,9 @@
private PaymentRegistrationMapper paymentRegistrationMapper;
@Autowired
+ private LavorIssueMapper lavorIssueMapper;
+
+ @Autowired
private SysDeptMapper sysDeptMapper;
@Override
@@ -103,8 +110,8 @@
BigDecimal noInvoiceAmountTotal = salesLedgerProducts.stream().map(SalesLedgerProduct::getNoInvoiceAmount)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
- homeBusinessDto.setMonthSaleMoney(contractAmount);
- homeBusinessDto.setMonthSaleHaveMoney(noInvoiceAmountTotal);
+ homeBusinessDto.setMonthSaleMoney(contractAmount.setScale(2, RoundingMode.HALF_UP).toString());
+ homeBusinessDto.setMonthSaleHaveMoney(noInvoiceAmountTotal.setScale(2, RoundingMode.HALF_UP).toString());
// 鍒涘缓LambdaQueryWrapper
LambdaQueryWrapper<PurchaseLedger> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.ge(PurchaseLedger::getEntryDate, currentMonth.atDay(1).atStartOfDay()) // 澶т簬绛変簬鏈湀绗竴澶�
@@ -153,10 +160,10 @@
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
- homeBusinessDto.setMonthPurchaseMoney(receiveAmount);
- homeBusinessDto.setMonthPurchaseHaveMoney(unReceiptPaymentAmount);
- homeBusinessDto.setInventoryNum(stock);
- homeBusinessDto.setTodayInventoryNum(stockAmount1);
+ homeBusinessDto.setMonthPurchaseMoney(receiveAmount.setScale(2, RoundingMode.HALF_UP).toString());
+ homeBusinessDto.setMonthPurchaseHaveMoney(unReceiptPaymentAmount.setScale(2, RoundingMode.HALF_UP).toString());
+ homeBusinessDto.setInventoryNum(stock.setScale(2, RoundingMode.HALF_UP).toString());
+ homeBusinessDto.setTodayInventoryNum(stockAmount1.setScale(2, RoundingMode.HALF_UP).toString());
return homeBusinessDto;
}
@@ -178,7 +185,7 @@
LocalDate endOfWeek = today.with(DayOfWeek.SUNDAY);
List<SalesLedger> salesLedgers1 = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>()
.ge(SalesLedger::getEntryDate, startOfWeek) // 澶т簬绛変簬鏈懆鍛ㄤ竴
- .gt(SalesLedger::getEntryDate, endOfWeek));
+ .lt(SalesLedger::getEntryDate, endOfWeek.plusDays(1))); // 淇敼锛氫娇鐢� lt 骞跺姞涓婁竴澶╂潵鍖呭惈鍛ㄦ棩
BigDecimal weekContractAmount = salesLedgers1.stream().map(SalesLedger::getContractAmount)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -187,7 +194,7 @@
LocalDate lastYearEndOfWeek = today.minusYears(1).with(DayOfWeek.SUNDAY);
List<SalesLedger> salesLedgers2 = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>()
.ge(SalesLedger::getEntryDate, lastYearStartOfWeek) // 澶т簬绛変簬鍘诲勾鏈懆鍛ㄤ竴
- .gt(SalesLedger::getEntryDate, lastYearEndOfWeek));
+ .lt(SalesLedger::getEntryDate, lastYearEndOfWeek.plusDays(1))); // 淇敼锛氫娇鐢� lt 骞跺姞涓婁竴澶╂潵鍖呭惈鍛ㄦ棩
BigDecimal lastYearWeekContractAmount = salesLedgers2.stream().map(SalesLedger::getContractAmount)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -205,18 +212,18 @@
LocalDate yesterday = today.minusDays(1);
LocalDate plusDays = today.plusDays(1);
List<SalesLedger> salesLedgers3 = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>()
- .ge(SalesLedger::getEntryDate, today) // 澶т簬绛変簬鏄ㄥぉ
- .lt(SalesLedger::getEntryDate, plusDays));
- BigDecimal yesterdayContractAmount = salesLedgers3.stream().map(SalesLedger::getContractAmount)
+ .ge(SalesLedger::getEntryDate, today) // 澶т簬绛変簬浠婂ぉ
+ .lt(SalesLedger::getEntryDate, plusDays)); // 淇敼锛氫娇鐢� 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));
+ .ge(SalesLedger::getEntryDate, yesterday) // 澶т簬绛変簬鏄ㄥぉ
+ .lt(SalesLedger::getEntryDate, today)); // 淇敼锛氫娇鐢� lt 鑰屼笉鏄� gt
BigDecimal lastYearYesterdayContractAmount = salesLedgers4.stream().map(SalesLedger::getContractAmount)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal subtract1 = yesterdayContractAmount.subtract(lastYearYesterdayContractAmount);
+ BigDecimal subtract1 = todayContractAmount.subtract(lastYearYesterdayContractAmount); // 淇敼锛氫娇鐢� todayContractAmount 鑰屼笉鏄� yesterdayContractAmount
// 鏃ョ幆姣�
String chain = "";
if(subtract1.compareTo(BigDecimal.ZERO) == 0 || lastYearYesterdayContractAmount.compareTo(BigDecimal.ZERO) == 0){
@@ -227,7 +234,8 @@
AnalysisCustomerContractAmountsDto analysisCustomerContractAmountsDto = new AnalysisCustomerContractAmountsDto();
- analysisCustomerContractAmountsDto.setSum(contractAmount);
+ // 淇敼锛氬皢鍚堝悓閲戦淇濈暀涓や綅灏忔暟
+ analysisCustomerContractAmountsDto.setSum(contractAmount.setScale(2, RoundingMode.HALF_UP).toString());
analysisCustomerContractAmountsDto.setYny(weekYny);
analysisCustomerContractAmountsDto.setChain(chain);
@@ -237,7 +245,8 @@
collect.forEach((k,v)->{
MapDto mapDto = new MapDto();
mapDto.setName(k);
- mapDto.setValue(v);
+ // 淇敼锛氬皢閲戦鍊间繚鐣欎袱浣嶅皬鏁�
+ mapDto.setValue(v.setScale(2, RoundingMode.HALF_UP).toString());
if(contractAmount.compareTo(new BigDecimal(0)) == 0){
mapDto.setRate("0");
}else{
@@ -248,6 +257,97 @@
analysisCustomerContractAmountsDto.setItem(mapDtos);
return analysisCustomerContractAmountsDto;
}
+
+ @Override
+ public AnalysisCustomerContractAmountsDto analysisSupplierContractAmounts() {
+ List<PurchaseLedger> purchaseLedgers = purchaseLedgerMapper.selectList(null);
+ // 鍚堣鍚堝悓閲戦
+ BigDecimal contractAmount = purchaseLedgers.stream().map(PurchaseLedger::getContractAmount)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ // 璁$畻鍛ㄥ悓姣�
+ // 鑾峰彇褰撳墠鏃堕棿
+ LocalDate today = LocalDate.now();
+
+ // 鑾峰彇鏈懆鍛ㄤ竴
+ LocalDate startOfWeek = today.with(DayOfWeek.MONDAY);
+
+ // 鑾峰彇鏈懆鍛ㄦ棩
+ LocalDate endOfWeek = today.with(DayOfWeek.SUNDAY);
+ List<PurchaseLedger> purchaseLedgers1 = purchaseLedgerMapper.selectList(new LambdaQueryWrapper<PurchaseLedger>()
+ .ge(PurchaseLedger::getEntryDate, startOfWeek) // 澶т簬绛変簬鏈懆鍛ㄤ竴
+ .lt(PurchaseLedger::getEntryDate, endOfWeek.plusDays(1))); // 浣跨敤 lt 骞跺姞涓婁竴澶╂潵鍖呭惈鍛ㄦ棩
+ BigDecimal weekContractAmount = purchaseLedgers1.stream().map(PurchaseLedger::getContractAmount)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ // 鑾峰彇鍘诲勾鏈懆鏃堕棿
+ LocalDate lastYearStartOfWeek = today.minusYears(1).with(DayOfWeek.MONDAY);
+ LocalDate lastYearEndOfWeek = today.minusYears(1).with(DayOfWeek.SUNDAY);
+ List<PurchaseLedger> purchaseLedgers2 = purchaseLedgerMapper.selectList(new LambdaQueryWrapper<PurchaseLedger>()
+ .ge(PurchaseLedger::getEntryDate, lastYearStartOfWeek) // 澶т簬绛変簬鍘诲勾鏈懆鍛ㄤ竴
+ .lt(PurchaseLedger::getEntryDate, lastYearEndOfWeek.plusDays(1))); // 浣跨敤 lt 骞跺姞涓婁竴澶╂潵鍖呭惈鍛ㄦ棩
+ BigDecimal lastYearWeekContractAmount = purchaseLedgers2.stream().map(PurchaseLedger::getContractAmount)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal subtract = weekContractAmount.subtract(lastYearWeekContractAmount);
+ String weekYny = "";
+ // 鍛ㄥ悓姣�
+ if(subtract.compareTo(BigDecimal.ZERO) == 0 || lastYearWeekContractAmount.compareTo(BigDecimal.ZERO) == 0){
+ weekYny = "0.00";
+ }else{
+ weekYny = String.format("%.2f", subtract.divide(lastYearWeekContractAmount, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
+ }
+
+ // 璁$畻鏃ョ幆姣�
+ LocalDate yesterday = today.minusDays(1);
+ LocalDate plusDays = today.plusDays(1);
+ List<PurchaseLedger> purchaseLedgers3 = purchaseLedgerMapper.selectList(new LambdaQueryWrapper<PurchaseLedger>()
+ .ge(PurchaseLedger::getEntryDate, today) // 澶т簬绛変簬浠婂ぉ
+ .lt(PurchaseLedger::getEntryDate, plusDays)); // 浣跨敤 lt 骞跺姞涓婁竴澶╂潵鍖呭惈褰撳ぉ
+ BigDecimal todayContractAmount = purchaseLedgers3.stream().map(PurchaseLedger::getContractAmount)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ List<PurchaseLedger> purchaseLedgers4 = purchaseLedgerMapper.selectList(new LambdaQueryWrapper<PurchaseLedger>()
+ .ge(PurchaseLedger::getEntryDate, yesterday) // 澶т簬绛変簬鏄ㄥぉ
+ .lt(PurchaseLedger::getEntryDate, today)); // 浣跨敤 lt
+ BigDecimal yesterdayContractAmount = purchaseLedgers4.stream().map(PurchaseLedger::getContractAmount)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal subtract1 = todayContractAmount.subtract(yesterdayContractAmount);
+ // 鏃ョ幆姣�
+ String chain = "";
+ if(subtract1.compareTo(BigDecimal.ZERO) == 0 || yesterdayContractAmount.compareTo(BigDecimal.ZERO) == 0){
+ chain = "0.00";
+ }else{
+ chain = String.format("%.2f", subtract1.divide(yesterdayContractAmount, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
+ }
+
+ AnalysisCustomerContractAmountsDto analysisCustomerContractAmountsDto = new AnalysisCustomerContractAmountsDto();
+ // 灏嗗悎鍚岄噾棰濅繚鐣欎袱浣嶅皬鏁�
+ analysisCustomerContractAmountsDto.setSum(contractAmount.setScale(2, RoundingMode.HALF_UP).toString());
+ analysisCustomerContractAmountsDto.setYny(weekYny);
+ analysisCustomerContractAmountsDto.setChain(chain);
+
+ // 鎸変緵搴斿晢鍚嶇О鍒嗙粍缁熻
+ Map<String, BigDecimal> collect = purchaseLedgers.stream().collect(Collectors.groupingBy(PurchaseLedger::getSupplierName, Collectors.reducing(BigDecimal.ZERO,
+ PurchaseLedger::getContractAmount, BigDecimal::add)));
+ List<MapDto> mapDtos = new ArrayList<>();
+ collect.forEach((k,v)->{
+ MapDto mapDto = new MapDto();
+ mapDto.setName(k);
+ // 灏嗛噾棰濆�间繚鐣欎袱浣嶅皬鏁�
+ mapDto.setValue(v.setScale(2, RoundingMode.HALF_UP).toString());
+ if(contractAmount.compareTo(new BigDecimal(0)) == 0){
+ mapDto.setRate("0");
+ }else{
+ mapDto.setRate(String.format("%.2f", v.divide(contractAmount, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"))));
+ }
+ mapDtos.add(mapDto);
+ });
+ analysisCustomerContractAmountsDto.setItem(mapDtos);
+ return analysisCustomerContractAmountsDto;
+ }
+
@Override
public QualityStatisticsDto qualityStatistics() {
@@ -299,14 +399,35 @@
}
@Override
- public List<ApproveProcess> todos() {
+ public List<ApproveProcess> todos() throws ParseException {
LoginUser loginUser = SecurityUtils.getLoginUser();
LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>();
approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveDelete, 0)
.eq(ApproveProcess::getApproveUserCurrentId, loginUser.getUserId())
.ne(ApproveProcess::getApproveStatus, 2)
.eq(ApproveProcess::getTenantId, loginUser.getTenantId());
- return approveProcessMapper.selectList(approveProcessLambdaQueryWrapper);
+ List<ApproveProcess> approveProcesses = approveProcessMapper.selectList(approveProcessLambdaQueryWrapper);
+ if(CollectionUtils.isEmpty(approveProcesses)){
+ approveProcesses = new ArrayList<>();
+ }
+ // 鏌ヨ鏈鐢ㄥ姵淇濊褰�
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+ LaborIssue laborIssue1 = new LaborIssue();
+ laborIssue1.setAdoptedDate(new Date());
+ laborIssue1.setIssueDate(sdf.parse(sdf.format(new Date())));
+ List<LaborIssue> laborIssues = lavorIssueMapper.list(laborIssue1);
+ if(!CollectionUtils.isEmpty(laborIssues)){
+ for (LaborIssue laborIssue : laborIssues) {
+ ApproveProcess approveProcess = new ApproveProcess();
+ approveProcess.setApproveId(laborIssue.getOrderNo());
+ approveProcess.setApproveDeptName(sysDeptMapper.selectDeptById(loginUser.getTenantId()).getDeptName());
+ approveProcess.setApproveTime(laborIssue.getIssueDate());
+ approveProcess.setApproveReason(laborIssue.getDictTypeName() + "-" + laborIssue.getDictName() + "瓒呮椂鏈鍙�");
+ approveProcesses.add(approveProcess);
+ }
+ }
+ return approveProcesses;
}
/**
@@ -343,29 +464,31 @@
}
// 搴旀敹
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, BigDecimal::add);
// 搴斾粯
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, BigDecimal::add);
// 棰勬敹
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, BigDecimal::add);
// 棰勪粯
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, BigDecimal::add);
StatisticsReceivablePayableDto statisticsReceivablePayableDto = new StatisticsReceivablePayableDto();
- statisticsReceivablePayableDto.setPayableMoney(payableMoney);
- statisticsReceivablePayableDto.setReceivableMoney(receivableMoney);
+ statisticsReceivablePayableDto.setPayableMoney(payableMoney.subtract(prepayMoney));
+ statisticsReceivablePayableDto.setReceivableMoney(receivableMoney.subtract(advanceMoney));
statisticsReceivablePayableDto.setAdvanceMoney(advanceMoney);
statisticsReceivablePayableDto.setPrepayMoney(prepayMoney);
--
Gitblit v1.9.3