From bd8deb0d389d7634eaa40d258c84605b92fbe43b Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期三, 17 十二月 2025 16:10:36 +0800
Subject: [PATCH] yys 仓储物流模块修改
---
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 294 +++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 195 insertions(+), 99 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..276cfb4 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -4,12 +4,20 @@
import com.ruoyi.approve.mapper.ApproveProcessMapper;
import com.ruoyi.approve.pojo.ApproveProcess;
import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
+import com.ruoyi.device.mapper.DeviceRepairMapper;
+import com.ruoyi.device.pojo.DeviceMaintenance;
+import com.ruoyi.device.pojo.DeviceRepair;
import com.ruoyi.dto.MapDto;
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.CustomStorageMapper;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
+import com.ruoyi.procurementrecord.pojo.CustomStorage;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import com.ruoyi.project.system.domain.SysDept;
@@ -33,7 +41,10 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.time.*;
+import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
@@ -63,6 +74,9 @@
private ProcurementRecordMapper procurementRecordStorageMapper;
@Autowired
+ private CustomStorageMapper customStorageMapper;
+
+ @Autowired
private QualityInspectMapper qualityStatisticsMapper;
@Autowired
@@ -73,6 +87,9 @@
@Autowired
private PaymentRegistrationMapper paymentRegistrationMapper;
+
+ @Autowired
+ private LavorIssueMapper lavorIssueMapper;
@Autowired
private SysDeptMapper sysDeptMapper;
@@ -88,53 +105,56 @@
salesLedgerLambdaQueryWrapper.ge(SalesLedger::getEntryDate, currentMonth.atDay(1).atStartOfDay()) // 澶т簬绛変簬鏈湀绗竴澶�
.lt(SalesLedger::getEntryDate, currentMonth.plusMonths(1).atDay(1).atStartOfDay()); // 灏忎簬涓嬫湀绗竴澶�
List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(salesLedgerLambdaQueryWrapper);
- if(CollectionUtils.isEmpty(salesLedgers)){
- return homeBusinessDto;
+ if(!CollectionUtils.isEmpty(salesLedgers)){
+ // 鍚堣鍚堝悓閲戦
+ BigDecimal contractAmount = salesLedgers.stream().map(SalesLedger::getContractAmount)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductMapperLambdaQueryWrapper = new LambdaQueryWrapper<SalesLedgerProduct>();
+ salesLedgerProductMapperLambdaQueryWrapper.eq(SalesLedgerProduct::getType, 1)
+ .in(SalesLedgerProduct::getSalesLedgerId, salesLedgers.stream().map(SalesLedger::getId).collect(Collectors.toList()));
+ List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(salesLedgerProductMapperLambdaQueryWrapper);
+ // 鏈紑绁ㄩ噾棰�
+ BigDecimal noInvoiceAmountTotal = salesLedgerProducts.stream().map(SalesLedgerProduct::getNoInvoiceAmount)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ homeBusinessDto.setMonthSaleMoney(contractAmount.setScale(2, RoundingMode.HALF_UP).toString());
+ homeBusinessDto.setMonthSaleHaveMoney(noInvoiceAmountTotal.setScale(2, RoundingMode.HALF_UP).toString());
}
- // 鍚堣鍚堝悓閲戦
- BigDecimal contractAmount = salesLedgers.stream().map(SalesLedger::getContractAmount)
- .filter(Objects::nonNull)
- .reduce(BigDecimal.ZERO, BigDecimal::add);
- LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductMapperLambdaQueryWrapper = new LambdaQueryWrapper<SalesLedgerProduct>();
- salesLedgerProductMapperLambdaQueryWrapper.eq(SalesLedgerProduct::getType, 1)
- .in(SalesLedgerProduct::getSalesLedgerId, salesLedgers.stream().map(SalesLedger::getId).collect(Collectors.toList()));
- List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(salesLedgerProductMapperLambdaQueryWrapper);
- // 鏈紑绁ㄩ噾棰�
- BigDecimal noInvoiceAmountTotal = salesLedgerProducts.stream().map(SalesLedgerProduct::getNoInvoiceAmount)
- .filter(Objects::nonNull)
- .reduce(BigDecimal.ZERO, BigDecimal::add);
- homeBusinessDto.setMonthSaleMoney(contractAmount);
- homeBusinessDto.setMonthSaleHaveMoney(noInvoiceAmountTotal);
// 鍒涘缓LambdaQueryWrapper
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)){
- return homeBusinessDto;
+ if(!CollectionUtils.isEmpty(purchaseLedgers)){
+ LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductMapperLambdaQueryWrapperCopy = new LambdaQueryWrapper<SalesLedgerProduct>();
+ 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)
+ .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());
}
-
- LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductMapperLambdaQueryWrapperCopy = new LambdaQueryWrapper<SalesLedgerProduct>();
- salesLedgerProductMapperLambdaQueryWrapper.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)
- .filter(Objects::nonNull)
- .reduce(BigDecimal.ZERO, BigDecimal::add);
-
// 缁熻搴撳瓨
List<ProcurementRecordStorage> procurementRecordStorages = procurementRecordStorageMapper.selectList(null);
BigDecimal stockAmount = procurementRecordStorages.stream()
.map(ProcurementRecordStorage::getInboundNum)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ // 鑷畾涔夊簱瀛�
+ List<CustomStorage> customStorages = customStorageMapper.selectList(null);
+ BigDecimal customStockAmount = customStorages.stream()
+ .map(CustomStorage::getInboundNum)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
List<ProcurementRecordOut> procurementRecordOuts = procurementRecordOutMapper.selectList(null);
@@ -142,7 +162,7 @@
.map(ProcurementRecordOut::getInboundNum)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal stock = stockAmount.subtract(outboundAmount);
+ BigDecimal stock = stockAmount.add(customStockAmount).subtract(outboundAmount);
// 鑾峰彇褰撳ぉ鍏ュ簱鏁伴噺
LambdaQueryWrapper<ProcurementRecordStorage> procurementRecordStorageLambdaQueryWrapper = new LambdaQueryWrapper<>();
procurementRecordStorageLambdaQueryWrapper.ge(ProcurementRecordStorage::getCreateTime, now) // 澶т簬绛変簬褰撳ぉ
@@ -152,11 +172,8 @@
.map(ProcurementRecordStorage::getInboundNum)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
-
- homeBusinessDto.setMonthPurchaseMoney(receiveAmount);
- homeBusinessDto.setMonthPurchaseHaveMoney(unReceiptPaymentAmount);
- homeBusinessDto.setInventoryNum(stock);
- homeBusinessDto.setTodayInventoryNum(stockAmount1);
+ homeBusinessDto.setInventoryNum(stock.setScale(2, RoundingMode.HALF_UP).toString());
+ homeBusinessDto.setTodayInventoryNum(stockAmount1.setScale(2, RoundingMode.HALF_UP).toString());
return homeBusinessDto;
}
@@ -178,7 +195,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 +204,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 +222,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 +244,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 +255,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{
@@ -249,64 +268,119 @@
return analysisCustomerContractAmountsDto;
}
+
@Override
public QualityStatisticsDto qualityStatistics() {
- // 鑾峰彇涓�鍛ㄦ暟鎹�
- // 鑾峰彇褰撳墠鏃堕棿
+ // 鑾峰彇杩戝洓涓湀鏁版嵁锛堝線鍓嶆帹涓変釜鏈堬紝鍏�4涓畬鏁存湀浠斤級
LocalDate today = LocalDate.now();
- // 鑾峰彇鏈懆鍛ㄤ竴
- LocalDate startOfWeek = today.with(DayOfWeek.MONDAY);
- // 鑾峰彇鏈懆鍛ㄦ棩
- LocalDate endOfWeek = today.with(DayOfWeek.SUNDAY);
- LambdaQueryWrapper<QualityInspect> qualityInspectLambdaQueryWrapper = new LambdaQueryWrapper<>();
- qualityInspectLambdaQueryWrapper.ge(QualityInspect::getCheckTime, startOfWeek)
- .gt(QualityInspect::getCheckTime, endOfWeek);
- List<QualityInspect> qualityInspects = qualityStatisticsMapper.selectList(qualityInspectLambdaQueryWrapper);
+ // 瀹氫箟鏃ユ湡鏍煎紡鍖栧櫒锛堢敤浜庢樉绀衡�滃勾鏈堚�濇牸寮忥級
+ DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
+
QualityStatisticsDto qualityStatisticsDto = new QualityStatisticsDto();
- qualityStatisticsDto.setSupplierNum(qualityInspects.stream().filter(item -> item.getInspectType().equals(0)).map(QualityInspect::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
- qualityStatisticsDto.setProcessNum(qualityInspects.stream().filter(item -> item.getInspectType().equals(1)).map(QualityInspect::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
- qualityStatisticsDto.setFactoryNum(qualityInspects.stream().filter(item -> item.getInspectType().equals(2)).map(QualityInspect::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
List<QualityStatisticsItem> qualityStatisticsItems = new ArrayList<>();
- for (int j = 1; j < 8; j++) {
- LocalDate endTime = startOfWeek.plusDays(j);
- LocalDate startTime = endTime.minusDays(1);
- QualityStatisticsItem qualityStatisticsItem = new QualityStatisticsItem();
- qualityStatisticsItem.setDate(startTime.toString());
- qualityStatisticsItem.setSupplierNum(qualityInspects.stream()
- .filter(item -> item.getInspectType().equals(0) && "涓嶅悎鏍�".equals(item.getCheckResult())
- && (startTime.isEqual(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()) || startTime.isAfter(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()))
- && endTime.isBefore(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()))
+
+ BigDecimal supplierNum = new BigDecimal(0);
+ BigDecimal factoryNum = new BigDecimal(0);
+ BigDecimal processNum = 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<QualityInspect> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.ge(QualityInspect::getCheckTime, monthStart)
+ .le(QualityInspect::getCheckTime, monthEnd); // 绛涢�夊綋鏈堟暟鎹�
+ List<QualityInspect> monthInspects = qualityStatisticsMapper.selectList(queryWrapper);
+ BigDecimal reduce = monthInspects.stream()
+ .filter(inspect -> inspect.getInspectType().equals(0))
.map(QualityInspect::getQuantity)
- .reduce(BigDecimal.ZERO, BigDecimal::add)
- );
- qualityStatisticsItem.setFactoryNum(qualityInspects.stream()
- .filter(item -> item.getInspectType().equals(1) && "涓嶅悎鏍�".equals(item.getCheckResult())
- && (startTime.isEqual(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()) || startTime.isAfter(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()))
- && endTime.isBefore(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()))
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ supplierNum = supplierNum.add(reduce);
+ BigDecimal reduce1 = monthInspects.stream()
+ .filter(inspect -> inspect.getInspectType().equals(1))
.map(QualityInspect::getQuantity)
- .reduce(BigDecimal.ZERO, BigDecimal::add)
- );
- qualityStatisticsItem.setProcessNum(qualityInspects.stream()
- .filter(item -> item.getInspectType().equals(2) && "涓嶅悎鏍�".equals(item.getCheckResult())
- && (startTime.isEqual(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()) || startTime.isAfter(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()))
- && endTime.isBefore(item.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()))
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ processNum= processNum.add(reduce1);
+ BigDecimal reduce2 = monthInspects.stream()
+ .filter(inspect -> inspect.getInspectType().equals(2))
.map(QualityInspect::getQuantity)
- .reduce(BigDecimal.ZERO, BigDecimal::add));
- qualityStatisticsItems.add(qualityStatisticsItem);
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ factoryNum = factoryNum.add(reduce2);
+
+ // 鏋勫缓褰撴湀缁熻椤�
+ QualityStatisticsItem item = new QualityStatisticsItem();
+ item.setDate(monthStart.format(monthFormatter)); // 鏃ユ湡鏄剧ず涓衡�滃勾鏈堚�濓紙濡� 2025-10锛�
+
+ // 1. 渚涘簲鍟嗘楠岋紙绫诲瀷0锛�- 鍚堟牸鏁伴噺
+ BigDecimal supplierQualified = monthInspects.stream()
+ .filter(inspect -> inspect.getInspectType().equals(0)
+ && "鍚堟牸".equals(inspect.getCheckResult()))
+ .map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ item.setSupplierNum(supplierQualified);
+
+ // 2. 宸ュ簭妫�楠岋紙绫诲瀷1锛�- 鍚堟牸鏁伴噺
+ BigDecimal processQualified = monthInspects.stream()
+ .filter(inspect -> inspect.getInspectType().equals(1)
+ && "鍚堟牸".equals(inspect.getCheckResult()))
+ .map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ item.setProcessNum(processQualified);
+
+ // 3. 宸ュ巶妫�楠岋紙绫诲瀷2锛�- 鍚堟牸鏁伴噺
+ BigDecimal factoryQualified = monthInspects.stream()
+ .filter(inspect -> inspect.getInspectType().equals(2)
+ && "鍚堟牸".equals(inspect.getCheckResult()))
+ .map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ item.setFactoryNum(factoryQualified);
+
+ qualityStatisticsItems.add(item);
}
+ // 缁熻杩�4涓湀鎬绘暟鎹紙鎵�鏈夋湀浠芥眹鎬伙級
+ qualityStatisticsDto.setProcessNum(processNum);
+ qualityStatisticsDto.setSupplierNum(supplierNum);
+ qualityStatisticsDto.setFactoryNum(factoryNum);
qualityStatisticsDto.setItem(qualityStatisticsItems);
+
return qualityStatisticsDto;
}
@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,32 +417,54 @@
}
// 搴旀敹
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);
return statisticsReceivablePayableDto;
}
+
+ @Autowired
+ private DeviceRepairMapper deviceRepairMapper;
+
+ @Override
+ public Map<String, Object> approveAndDeviceTodos() {
+ // 瀹℃壒鍗忓悓寰呭姙
+ Long aLong = approveProcessMapper.selectCount(new LambdaQueryWrapper<ApproveProcess>()
+ .eq(ApproveProcess::getApproveUserCurrentId, SecurityUtils.getUserId())
+ .eq(ApproveProcess::getApproveDelete, 0)
+ .in(ApproveProcess::getApproveStatus, 0, 1, 3));
+ // 璁惧鎶ヤ慨寰呭姙
+ Long aLong1 = deviceRepairMapper.selectCount(new LambdaQueryWrapper<DeviceRepair>()
+ .eq(DeviceRepair::getStatus, 0)
+ .eq(DeviceRepair::getRepairName, SecurityUtils.getLoginUser().getNickName()));
+ return new HashMap<String, Object>() {{
+ put("approveTodo", aLong);
+ put("deviceRepairTodo", aLong1);
+ }};
+ }
}
--
Gitblit v1.9.3