From f8b236340b16d9dfe2ca88407343ac01f34f3cbf Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 21 五月 2026 15:09:42 +0800
Subject: [PATCH] Merge branch 'dev_New_pro' into dev_New_pro_财务
---
src/main/java/com/ruoyi/home/controller/HomeController.java | 146 ++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 122 insertions(+), 24 deletions(-)
diff --git a/src/main/java/com/ruoyi/home/controller/HomeController.java b/src/main/java/com/ruoyi/home/controller/HomeController.java
index 2b3bb32..7878d28 100644
--- a/src/main/java/com/ruoyi/home/controller/HomeController.java
+++ b/src/main/java/com/ruoyi/home/controller/HomeController.java
@@ -16,8 +16,8 @@
import com.ruoyi.production.mapper.ProductionOrderMapper;
import com.ruoyi.production.mapper.ProductionProductOutputMapper;
import com.ruoyi.production.pojo.ProductionOrder;
-import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -28,8 +28,16 @@
import java.math.RoundingMode;
import java.text.ParseException;
import java.time.LocalDate;
+import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
import java.util.*;
/**
@@ -40,7 +48,7 @@
@Tag(name = "棣栭〉缁熻")
@RequestMapping("/home")
@AllArgsConstructor
- public class HomeController extends BaseController {
+public class HomeController extends BaseController {
private final HomeService homeService;
private final ProductionOrderMapper productionOrderMapper;
@@ -49,6 +57,7 @@
private final DeviceRepairMapper deviceRepairMapper;
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
private static final Integer ORDER_STATUS_WAIT = 1;
private static final Integer ORDER_STATUS_RUNNING = 2;
private static final Integer ORDER_STATUS_COMPLETED = 3;
@@ -58,7 +67,7 @@
@GetMapping("/todos")
@Log(title = "寰呭姙浜嬮」", businessType = BusinessType.OTHER)
@Operation(summary = "寰呭姙浜嬮」")
- public R todos(ApproveProcess req) throws ParseException {
+ public R todos() throws ParseException {
List<ApproveProcess> approveProcessList = homeService.todos();
return R.ok(approveProcessList);
}
@@ -130,7 +139,7 @@
@GetMapping("/business")
@Log(title = "閿�鍞�-閲囪喘-搴撳瓨鏁版嵁", businessType = BusinessType.OTHER)
@Operation(summary = "閿�鍞�-閲囪喘-搴撳瓨鏁版嵁")
- public R business(HomeBusinessDto req) {
+ public R business() {
HomeBusinessDto homeBusinessDto = homeService.business();
return R.ok(homeBusinessDto);
}
@@ -138,7 +147,7 @@
@GetMapping("/analysisCustomerContractAmounts")
@Log(title = "瀹㈡埛鍚堝悓閲戦鍒嗘瀽", businessType = BusinessType.OTHER)
@Operation(summary = "瀹㈡埛鍚堝悓閲戦鍒嗘瀽")
- public R analysisCustomerContractAmounts(AnalysisCustomerContractAmountsDto req) {
+ public R analysisCustomerContractAmounts() {
AnalysisCustomerContractAmountsDto analysisCustomerContractAmounts = homeService.analysisCustomerContractAmounts();
return R.ok(analysisCustomerContractAmounts);
}
@@ -241,13 +250,27 @@
@GetMapping("/productionOrderProgress")
@Operation(summary = "Production Order Progress")
public R productionOrderProgress(@RequestParam(defaultValue = "all") String tab,
- @RequestParam(defaultValue = "1") Long pageNum,
- @RequestParam(defaultValue = "10") Long pageSize) {
+ @RequestParam(required = false) String status,
+ @RequestParam(required = false) String bizDate,
+ @RequestParam(defaultValue = "1") Long pageNum,
+ @RequestParam(defaultValue = "10") Long pageSize) {
+ LocalDate queryDate = parseDateOrNull(bizDate);
+ if (!isBlank(bizDate) && queryDate == null) {
+ return R.fail("bizDate鏍煎紡閿欒锛岃浣跨敤yyyy-MM-dd");
+ }
+ Integer statusFromParam = parseOrderStatus(status);
+ if (!isBlank(status) && statusFromParam == null && !"all".equalsIgnoreCase(status.trim())) {
+ return R.fail("status鍙傛暟涓嶅悎娉曪紝鍙�夊�硷細all/waiting/inProgress/completed/paused 鎴� 1/2/3/4");
+ }
+ Integer queryStatus = resolveOrderStatus(status, tab);
+
long safePageNum = pageNum == null || pageNum < 1 ? 1 : pageNum;
long safePageSize = pageSize == null || pageSize < 1 ? 10 : Math.min(pageSize, 50);
- Integer status = resolveOrderStatus(tab);
long offset = (safePageNum - 1) * safePageSize;
- List<Map<String, Object>> rawRows = productionOrderMapper.selectHomeOrderProgressPage(status, offset, safePageSize);
+ LocalDateTime startTime = queryDate == null ? null : queryDate.atStartOfDay();
+ LocalDateTime endTime = queryDate == null ? null : queryDate.plusDays(1).atStartOfDay();
+
+ List<Map<String, Object>> rawRows = productionOrderMapper.selectHomeOrderProgressPage(queryStatus, offset, safePageSize, startTime, endTime);
List<Map<String, Object>> records = new ArrayList<>();
if (rawRows != null) {
for (Map<String, Object> rawRow : rawRows) {
@@ -255,15 +278,18 @@
}
}
+ long waitingCount = 0L;
long inProgressCount = 0L;
long completedCount = 0L;
long pausedCount = 0L;
- List<Map<String, Object>> statusCountRows = productionOrderMapper.countHomeOrderProgressByStatus();
+ List<Map<String, Object>> statusCountRows = productionOrderMapper.countHomeOrderProgressByStatus(startTime, endTime);
if (statusCountRows != null) {
for (Map<String, Object> countRow : statusCountRows) {
Integer statusKey = toInteger(countRow.get("status"));
long cnt = toLong(countRow.get("cnt"));
- if (Objects.equals(statusKey, ORDER_STATUS_RUNNING)) {
+ if (Objects.equals(statusKey, ORDER_STATUS_WAIT)) {
+ waitingCount = cnt;
+ } else if (Objects.equals(statusKey, ORDER_STATUS_RUNNING)) {
inProgressCount = cnt;
} else if (Objects.equals(statusKey, ORDER_STATUS_COMPLETED)) {
completedCount = cnt;
@@ -274,10 +300,13 @@
}
Map<String, Object> result = new LinkedHashMap<>();
- result.put("tab", tab);
- result.put("total", toLong(productionOrderMapper.countHomeOrderProgress(status)));
+ result.put("tab", mapOrderTab(queryStatus));
+ result.put("status", mapOrderStatus(queryStatus));
+ result.put("bizDate", queryDate == null ? null : queryDate.format(DATE_FORMATTER));
+ result.put("total", toLong(productionOrderMapper.countHomeOrderProgress(queryStatus, startTime, endTime)));
result.put("pageNum", safePageNum);
result.put("pageSize", safePageSize);
+ result.put("waitingCount", waitingCount);
result.put("inProgressCount", inProgressCount);
result.put("completedCount", completedCount);
result.put("pausedCount", pausedCount);
@@ -287,10 +316,18 @@
@GetMapping("/todayProductionPlan")
@Operation(summary = "Today Production Plan")
- public R todayProductionPlan(@RequestParam(defaultValue = "4") Long limit) {
+ public R todayProductionPlan(@RequestParam(defaultValue = "4") Long limit,
+ @RequestParam(required = false) String planDate) {
+ LocalDate queryDate = parseDateOrNull(planDate);
+ if (!isBlank(planDate) && queryDate == null) {
+ return R.fail("planDate鏍煎紡閿欒锛岃浣跨敤yyyy-MM-dd");
+ }
+
long safeLimit = limit == null || limit < 1 ? 4 : Math.min(limit, 20);
+ LocalDateTime planStart = queryDate == null ? null : queryDate.atStartOfDay();
+ LocalDateTime planEnd = queryDate == null ? null : queryDate.plusDays(1).atStartOfDay();
List<Map<String, Object>> records = new ArrayList<>();
- List<Map<String, Object>> rawRows = productionOrderMapper.selectHomeTodayProductionPlan(safeLimit);
+ List<Map<String, Object>> rawRows = productionOrderMapper.selectHomeTodayProductionPlan(safeLimit, planStart, planEnd);
if (rawRows != null) {
for (Map<String, Object> rawRow : rawRows) {
Map<String, Object> row = new LinkedHashMap<>();
@@ -306,7 +343,8 @@
}
Map<String, Object> result = new LinkedHashMap<>();
- result.put("total", toLong(productionOrderMapper.countHomeTodayProductionPlan()));
+ result.put("planDate", queryDate == null ? null : queryDate.format(DATE_FORMATTER));
+ result.put("total", toLong(productionOrderMapper.countHomeTodayProductionPlan(planStart, planEnd)));
result.put("records", records);
return R.ok(result);
}
@@ -367,7 +405,7 @@
@GetMapping("/qualityStatistics")
@Log(title = "璐ㄩ噺鍒嗘瀽", businessType = BusinessType.OTHER)
@Operation(summary = "璐ㄩ噺鍒嗘瀽")
- public R qualityStatistics(QualityStatisticsDto req) {
+ public R qualityStatistics() {
QualityStatisticsDto qualityStatisticsDto = homeService.qualityStatistics();
return R.ok(qualityStatisticsDto);
}
@@ -418,7 +456,7 @@
@GetMapping("/statisticsReceivablePayable")
@Log(title = "搴旀敹搴斾粯缁熻", businessType = BusinessType.OTHER)
@Operation(summary = "搴旀敹搴斾粯缁熻")
- public R statisticsReceivablePayable(StatisticsReceivablePayableDto req, @DefaultType Integer type ) {
+ public R statisticsReceivablePayable(@DefaultType Integer type ) {
StatisticsReceivablePayableDto statisticsReceivablePayable = homeService.statisticsReceivablePayable(type);
return R.ok(statisticsReceivablePayable);
}
@@ -467,21 +505,66 @@
return row;
}
- private Integer resolveOrderStatus(String tab) {
- if (tab == null) {
+ private Integer resolveOrderStatus(String status, String tab) {
+ if (!isBlank(status)) {
+ return parseOrderStatus(status);
+ }
+ return parseOrderStatus(tab);
+ }
+
+ private Integer parseOrderStatus(String rawStatus) {
+ if (isBlank(rawStatus)) {
return null;
}
- String normalized = tab.trim().toLowerCase();
- if ("inprogress".equals(normalized)) {
+ String normalized = rawStatus.trim().toLowerCase();
+ if ("all".equals(normalized)) {
+ return null;
+ }
+ if ("1".equals(normalized) || "waiting".equals(normalized) || "wait".equals(normalized)) {
+ return ORDER_STATUS_WAIT;
+ }
+ if ("2".equals(normalized) || "inprogress".equals(normalized) || "running".equals(normalized)) {
return ORDER_STATUS_RUNNING;
}
- if ("completed".equals(normalized)) {
+ if ("3".equals(normalized) || "completed".equals(normalized)) {
return ORDER_STATUS_COMPLETED;
}
- if ("paused".equals(normalized)) {
+ if ("4".equals(normalized) || "paused".equals(normalized)) {
return ORDER_STATUS_PAUSED;
}
return null;
+ }
+
+ private String mapOrderTab(Integer status) {
+ if (Objects.equals(status, ORDER_STATUS_RUNNING)) {
+ return "inProgress";
+ }
+ if (Objects.equals(status, ORDER_STATUS_COMPLETED)) {
+ return "completed";
+ }
+ if (Objects.equals(status, ORDER_STATUS_PAUSED)) {
+ return "paused";
+ }
+ if (Objects.equals(status, ORDER_STATUS_WAIT)) {
+ return "waiting";
+ }
+ return "all";
+ }
+
+ private String mapOrderStatus(Integer status) {
+ if (Objects.equals(status, ORDER_STATUS_WAIT)) {
+ return "waiting";
+ }
+ if (Objects.equals(status, ORDER_STATUS_RUNNING)) {
+ return "inProgress";
+ }
+ if (Objects.equals(status, ORDER_STATUS_COMPLETED)) {
+ return "completed";
+ }
+ if (Objects.equals(status, ORDER_STATUS_PAUSED)) {
+ return "paused";
+ }
+ return "all";
}
private String mapOrderStatusLabel(Integer status) {
@@ -639,6 +722,21 @@
}
}
+ private LocalDate parseDateOrNull(String rawDate) {
+ if (isBlank(rawDate)) {
+ return null;
+ }
+ try {
+ return LocalDate.parse(rawDate.trim(), DATE_FORMATTER);
+ } catch (DateTimeParseException ex) {
+ return null;
+ }
+ }
+
+ private boolean isBlank(String value) {
+ return value == null || value.trim().isEmpty();
+ }
+
private BigDecimal zeroIfNull(BigDecimal value) {
return value == null ? BigDecimal.ZERO : value;
}
--
Gitblit v1.9.3