From 47b42159fbe69fb2b4dbc13c75dd45abd00a55ae Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 13 二月 2026 11:10:34 +0800
Subject: [PATCH] fix: 查询日期缺少时分秒
---
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 286 ++++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 200 insertions(+), 86 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 8de8a83..84d1934 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -2,6 +2,7 @@
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.AccountIncomeMapper;
import com.ruoyi.account.pojo.AccountExpense;
@@ -33,17 +34,15 @@
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.pojo.ProductWorkOrder;
import com.ruoyi.project.system.domain.SysDept;
-import com.ruoyi.project.system.domain.SysUser;
-import com.ruoyi.project.system.domain.SysUserDept;
import com.ruoyi.project.system.mapper.SysDeptMapper;
-import com.ruoyi.project.system.mapper.SysUserDeptMapper;
-import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.purchase.mapper.PaymentRegistrationMapper;
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.pojo.PaymentRegistration;
@@ -143,6 +142,9 @@
@Autowired
private QualityUnqualifiedMapper qualityUnqualifiedMapper;
+
+ @Autowired
+ private ProductProcessMapper productProcessMapper;
@Override
public HomeBusinessDto business() {
@@ -329,10 +331,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))
@@ -463,8 +465,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,
@@ -473,8 +475,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,
@@ -482,8 +484,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,
@@ -492,8 +494,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,
@@ -557,7 +559,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)
@@ -1030,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<>();
@@ -1746,9 +1740,11 @@
.filter(i -> i.getCreateTime() != null)
.collect(Collectors.groupingBy(
i -> i.getCreateTime().toLocalDate().toString(),
- Collectors.reducing(BigDecimal.ZERO,
- i -> i.getQuantity() != null ? i.getQuantity() : BigDecimal.ZERO,
- BigDecimal::add)));
+ Collectors.reducing(BigDecimal.ZERO, i -> {
+ BigDecimal qty = (i.getQuantity() != null) ? i.getQuantity() : BigDecimal.ZERO;
+ BigDecimal scrap = (i.getScrapQty() != null) ? i.getScrapQty() : BigDecimal.ZERO;
+ return qty.subtract(scrap);
+ }, BigDecimal::add)));
finishMap.forEach((date, qty) -> {
WorkOrderEfficiencyDto dto = dateMap.getOrDefault(date, new WorkOrderEfficiencyDto());
@@ -1892,7 +1888,6 @@
return dto;
}
-
@Override
public QualityQualifiedAnalysisDto rawMaterialDetection(Integer type) {
return commonDetection(type, 0);
@@ -1914,10 +1909,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>()
@@ -1955,7 +1948,7 @@
endDate = today.with(DayOfWeek.SUNDAY);
}
- return new LocalDate[]{startDate, endDate};
+ return new LocalDate[] { startDate, endDate };
}
private QualityQualifiedAnalysisDto buildQualifiedAnalysis(List<QualityInspect> list) {
@@ -2007,20 +2000,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)
@@ -2036,14 +2023,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)
@@ -2059,14 +2044,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)
@@ -2099,18 +2082,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();
@@ -2209,29 +2190,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");
@@ -2352,7 +2328,7 @@
return new ArrayList<>();
}
- // 缁熻姣忕澶勭悊缁撴灉鐨勬暟閲�
+ // 缁熻姣忕澶勭悊缁撴灉鐨勬暟閲�
Map<String, BigDecimal> countMap = new HashMap<>();
for (QualityUnqualified item : list) {
if (StringUtils.isEmpty(item.getDealResult()) || item.getQuantity() == null) {
@@ -2365,7 +2341,7 @@
return new ArrayList<>();
}
- // 璁$畻鎬绘暟
+ // 璁$畻鎬绘暟
BigDecimal totalCount = countMap.values()
.stream()
.reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -2374,7 +2350,7 @@
return new ArrayList<>();
}
- // 鎸夋暟閲忓�掑簭鎺掑簭
+ // 鎸夋暟閲忓�掑簭鎺掑簭
List<Map.Entry<String, BigDecimal>> sortedList = countMap.entrySet()
.stream()
.sorted((a, b) -> b.getValue().compareTo(a.getValue()))
@@ -2410,4 +2386,142 @@
return result;
}
-}
\ No newline at end of file
+ @Override
+ public QualityStatisticsDto qualityInspectionStatistics(Integer type) {
+ LocalDate today = LocalDate.now();
+ LocalDate startDate;
+ LocalDate endDate;
+
+ switch (type) {
+ case 1: // 鏈懆
+ startDate = today.with(DayOfWeek.MONDAY);
+ endDate = today.with(DayOfWeek.SUNDAY);
+ break;
+ case 2: // 鏈湀
+ startDate = today.with(TemporalAdjusters.firstDayOfMonth());
+ endDate = today.with(TemporalAdjusters.lastDayOfMonth());
+ break;
+ case 3: // 鏈搴�
+ int currentMonth = today.getMonthValue();
+ int startMonth = ((currentMonth - 1) / 3) * 3 + 1;
+ startDate = LocalDate.of(today.getYear(), startMonth, 1);
+ endDate = startDate.plusMonths(2).with(TemporalAdjusters.lastDayOfMonth());
+ break;
+ default:
+ startDate = today.with(DayOfWeek.MONDAY);
+ endDate = today.with(DayOfWeek.SUNDAY);
+ }
+
+ List<QualityInspect> qualityInspectList = qualityInspectMapper
+ .selectList(new LambdaQueryWrapper<QualityInspect>()
+ .ge(QualityInspect::getCheckTime, startDate.toString())
+ .le(QualityInspect::getCheckTime, endDate.toString())
+ .eq(QualityInspect::getInspectState, 1));
+
+ QualityStatisticsDto dto = new QualityStatisticsDto();
+ dto.setSupplierNum(sumQuantity(qualityInspectList, 0)); // 鍘熸潗鏂�
+ 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;
+ }
+ // 4. 澶勭悊鍥捐〃椤� (Item)
+ List<QualityStatisticsItem> itemList = new ArrayList<>();
+
+ Map<QualityInspect, LocalDate> dateMap = qualityInspectList.stream()
+ .collect(Collectors.toMap(
+ i -> i,
+ i -> i.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()));
+ if (type == 3) {
+ // 瀛e害妯″紡锛氭寜鏈堝垎缁�
+ Map<String, List<QualityInspect>> groupByMonth = qualityInspects.stream()
+ .collect(Collectors.groupingBy(i -> {
+ LocalDate ld = dateMap.get(i);
+ return ld.format(DateTimeFormatter.ofPattern("yyyy-MM"));
+ }));
+
+ for (int i = 0; i < 3; i++) {
+ LocalDate monthDate = startDate.plusMonths(i);
+ String monthStr = monthDate.format(DateTimeFormatter.ofPattern("yyyy-MM"));
+ itemList.add(buildItem(monthStr, groupByMonth.getOrDefault(monthStr, new ArrayList<>())));
+ }
+ } else {
+ // 鍛ㄦ垨鏈堟ā寮忥細鎸夊ぉ鍒嗙粍
+ Map<String, List<QualityInspect>> groupByDay = qualityInspects.stream()
+ .collect(Collectors.groupingBy(i -> {
+ LocalDate ld = dateMap.get(i);
+ return ld.format(DateTimeFormatter.ofPattern("MM/dd"));
+ }));
+ long days = ChronoUnit.DAYS.between(startDate, endDate);
+ for (int i = 0; i <= days; i++) {
+ LocalDate tempDay = startDate.plusDays(i);
+ String dayStr = tempDay.format(DateTimeFormatter.ofPattern("MM/dd"));
+ itemList.add(buildItem(dayStr, groupByDay.getOrDefault(dayStr, new ArrayList<>())));
+ }
+ }
+
+ dto.setItem(itemList);
+ return dto;
+ }
+
+ private BigDecimal sumQuantity(List<QualityInspect> list, Integer type) {
+ return list.stream()
+ .filter(i -> i.getInspectType().equals(type))
+ .map(QualityInspect::getQuantity)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+
+ private QualityStatisticsItem buildItem(String dateLabel, List<QualityInspect> list) {
+ QualityStatisticsItem item = new QualityStatisticsItem();
+ item.setDate(dateLabel);
+
+ item.setSupplierNum(list.stream().filter(i -> i.getInspectType() == 0).map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add));
+ item.setProcessNum(list.stream().filter(i -> i.getInspectType() == 1).map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add));
+ item.setFactoryNum(list.stream().filter(i -> i.getInspectType() == 2).map(QualityInspect::getQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add));
+
+ return item;
+ }
+
+ @Override
+ public List<processDataProductionStatisticsDto> processDataProductionStatistics(Integer type,
+ List<Long> processIds) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ Long userId = SecurityUtils.isAdmin(loginUser.getUserId()) ? null : loginUser.getUserId();
+
+ LocalDate today = LocalDate.now();
+ LocalDate startDate;
+ LocalDate endDate;
+
+ switch (type) {
+ case 1:
+ startDate = today;
+ endDate = today;
+ break;
+ case 2:
+ startDate = today.with(DayOfWeek.MONDAY);
+ endDate = today.with(DayOfWeek.SUNDAY);
+ break;
+ case 3:
+ startDate = today.with(TemporalAdjusters.firstDayOfMonth());
+ endDate = today.with(TemporalAdjusters.lastDayOfMonth());
+ break;
+ default:
+ startDate = today;
+ endDate = today;
+ }
+
+ LocalDateTime startDateTime = startDate.atStartOfDay();
+ LocalDateTime endDateTime = endDate.atTime(LocalTime.MAX);
+
+ return productProcessMapper.calculateProductionStatistics(startDateTime, endDateTime, userId, processIds);
+ }
+}
--
Gitblit v1.9.3