From a3ad909e75ddb7a6271d95704dc002cc70337fd5 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期一, 27 十月 2025 11:07:45 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
---
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java | 292 +++++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 207 insertions(+), 85 deletions(-)
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
index cf45286..e02228a 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.common.AsyncQueryExecutor;
import com.example.erp.tools.AreaComputed.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -21,6 +22,8 @@
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
+import javax.annotation.PreDestroy;
+import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.sql.Date;
@@ -51,23 +54,9 @@
FlowCardMapper flowCardMapper;
private ReportingWorkMapper reportingWorkMapper;
- private static final ExecutorService EXECUTOR = new ThreadPoolExecutor(
- 4, 8, 60L, TimeUnit.SECONDS,
- new LinkedBlockingQueue<>(100),
- new ThreadFactory() {
- private final ThreadFactory defaultFactory = Executors.defaultThreadFactory();
- private int counter = 1;
+ @Resource
+ private AsyncQueryExecutor asyncExecutor;
- @Override
- public Thread newThread(Runnable r) {
- Thread thread = defaultFactory.newThread(r);
- thread.setName("damage-report-query-" + counter++);
- thread.setDaemon(true);
- return thread;
- }
- },
- new ThreadPoolExecutor.CallerRunsPolicy()
- );
//涓婂伐搴忔姤宸ョ彮缁�
private void mergeTeamsGroupsName( List<WorkInProgressDTO> dataList1,List<WorkInProgressDTO> dataList2) {
@@ -321,10 +310,37 @@
return map;
}
- public Map<String, Object> crossProcessBreakingSv(Integer pageNum, Integer pageSize, List<String> selectDate, CrossProcessBreakingDTO crossProcessBreakingDTO) {
+// public Map<String, Object> crossProcessBreakingSv(Integer pageNum, Integer pageSize, List<String> selectDate, CrossProcessBreakingDTO crossProcessBreakingDTO) {
+// Integer offset = (pageNum - 1) * pageSize;
+// String endDate = LocalDate.now().toString();
+// String startDate = LocalDate.now().minusDays(15).toString();
+// if (selectDate != null && selectDate.size() == 2) {
+// if (!selectDate.get(0).isEmpty()) {
+// startDate = selectDate.get(0);
+// }
+// if (!selectDate.get(1).isEmpty()) {
+// endDate = selectDate.get(1);
+// }
+// }
+// Map<String, Object> map = new HashMap<>();
+// map.put("data", reportMapper.getProcessBreaking(offset, pageSize, startDate, endDate, crossProcessBreakingDTO));
+// map.put("total", reportMapper.getProcessBreakingTotal(offset, pageSize, startDate, endDate, crossProcessBreakingDTO));
+// List<String> list = new ArrayList<>();
+// list.add(startDate);
+// list.add(endDate);
+// map.put("selectDate", list);
+// return map;
+// }
+
+ public Map<String, Object> crossProcessBreakingSv(Integer pageNum, Integer pageSize,
+ List<String> selectDate,
+ CrossProcessBreakingDTO crossProcessBreakingDTO) {
Integer offset = (pageNum - 1) * pageSize;
+
+ // 榛樿鏃堕棿鑼冨洿锛氳繃鍘� 15 澶�
String endDate = LocalDate.now().toString();
String startDate = LocalDate.now().minusDays(15).toString();
+
if (selectDate != null && selectDate.size() == 2) {
if (!selectDate.get(0).isEmpty()) {
startDate = selectDate.get(0);
@@ -333,65 +349,171 @@
endDate = selectDate.get(1);
}
}
- Map<String, Object> map = new HashMap<>();
- map.put("data", reportMapper.getProcessBreaking(offset, pageSize, startDate, endDate, crossProcessBreakingDTO));
- map.put("total", reportMapper.getProcessBreakingTotal(offset, pageSize, startDate, endDate, crossProcessBreakingDTO));
+
+ Map<String, Object> result = new HashMap<>();
+
+ // 浣跨敤寮傛绾跨▼姹�
+ String finalEndDate = endDate;
+ String finalStartDate = startDate;
+ CompletableFuture<List<CrossProcessBreakingDTO>> dataFuture = asyncExecutor.runAsync(() ->
+ reportMapper.getProcessBreaking(offset, pageSize, finalStartDate, finalEndDate, crossProcessBreakingDTO));
+
+ CompletableFuture<Map<String, Integer>> totalFuture = asyncExecutor.runAsync(() ->
+ reportMapper.getProcessBreakingTotal(offset, pageSize, finalStartDate, finalEndDate, crossProcessBreakingDTO));
+
+ // 绛夊緟涓や釜浠诲姟鎵ц瀹屾瘯
+ CompletableFuture.allOf(dataFuture, totalFuture).join();
+
+ try {
+ result.put("data", dataFuture.get());
+ result.put("total", totalFuture.get());
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("骞惰鏌ヨ寮傚父锛�" + e.getMessage(), e);
+ }
+
List<String> list = new ArrayList<>();
list.add(startDate);
list.add(endDate);
- map.put("selectDate", list);
- return map;
+ result.put("selectDate", list);
+
+ return result;
}
- public Map<String, Object> workInProgressSv(Integer pageNum, Integer pageSize, String orderId, String inputProject, String selectProcesses, String optionVal, WorkInProgressDTO workInProgressDTO) {
+// public Map<String, Object> workInProgressSv(Integer pageNum, Integer pageSize, String orderId, String inputProject, String selectProcesses, String optionVal, WorkInProgressDTO workInProgressDTO) {
+// Integer offset = (pageNum - 1) * pageSize;
+// if ("null".equals(orderId)) {
+// orderId = "";
+// }
+// if ("null".equals(inputProject)) {
+// inputProject = "";
+// }
+// if ("null".equals(optionVal)) {
+// optionVal = ("");
+// }
+// if (selectProcesses.equals("all")){
+// selectProcesses="";
+// }
+// String laminating = reportMapper.getLaminating(selectProcesses);
+// Map<String, Object> map = new HashMap<>();
+// List<WorkInProgressDTO> dataList2 =reportMapper.workInProgressMpdataList2(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
+// if (optionVal.equals("1")){
+// /* 鏍规嵁閿�鍞崟鍙锋眹鎬�*/
+// List<WorkInProgressDTO> dataList1 =reportMapper.workInProgressOrderMpList1(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
+// mergeTeamsGroupsName(dataList1, dataList2);
+// map.put("data",dataList1);
+// map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO));
+// }else if(optionVal.equals("2")){
+// /* 鏍规嵁娴佺▼鍗″彿姹囨��*/
+// List<WorkInProgressDTO> dataList1 =reportMapper.workInProgressProcessMpList1(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
+// mergeTeamsGroupsName(dataList1, dataList2);
+// map.put("data",dataList1);
+// map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO));
+//
+// } else if (optionVal.equals("3")) {
+//
+// } else {
+// //娌℃湁閫夋嫨鍒嗙粍
+// List<WorkInProgressDTO> dataList1 =reportMapper.workInProgressMpdataList1(offset, pageSize, orderId, inputProject, selectProcesses,laminating, workInProgressDTO);
+// mergeTeamsGroupsName(dataList1, dataList2);
+// map.put("data",dataList1);
+// map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO));
+//
+// }
+// map.put("process", productionSchedulingMapper.selectProcess());
+// return map;
+// }
+
+ public Map<String, Object> workInProgressSv(
+ Integer pageNum, Integer pageSize,
+ String orderId, String inputProject, String selectProcesses,
+ String optionVal, WorkInProgressDTO workInProgressDTO) {
+
Integer offset = (pageNum - 1) * pageSize;
- if ("null".equals(orderId)) {
- orderId = "";
- }
- if ("null".equals(inputProject)) {
- inputProject = "";
- }
- if ("null".equals(optionVal)) {
- optionVal = ("");
- }
- if (selectProcesses.equals("all")){
- selectProcesses="";
- }
+
+ if ("null".equals(orderId)) orderId = "";
+ if ("null".equals(inputProject)) inputProject = "";
+ if ("null".equals(optionVal)) optionVal = "";
+ if ("all".equals(selectProcesses)) selectProcesses = "";
+
String laminating = reportMapper.getLaminating(selectProcesses);
- Map<String, Object> map = new HashMap<>();
- List<WorkInProgressDTO> dataList2 =reportMapper.workInProgressMpdataList2(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
- if (optionVal.equals("1")){
- /* 鏍规嵁閿�鍞崟鍙锋眹鎬�*/
- //map.put("data", reportMapper.workInProgressOrderMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
- List<WorkInProgressDTO> dataList1 =reportMapper.workInProgressOrderMpList1(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
- mergeTeamsGroupsName(dataList1, dataList2);
- map.put("data",dataList1);
- // map.put("total", reportMapper.workInProgressOrderTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
- map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO));
- }else if(optionVal.equals("2")){
- /* 鏍规嵁娴佺▼鍗″彿姹囨��*/
- //map.put("data", reportMapper.workInProgressProcessMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
- List<WorkInProgressDTO> dataList1 =reportMapper.workInProgressProcessMpList1(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
- mergeTeamsGroupsName(dataList1, dataList2);
- map.put("data",dataList1);
- // map.put("total", reportMapper.workInProgressProcessTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
- map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO));
+ Map<String, Object> result = new HashMap<>();
- } else if (optionVal.equals("3")) {
+ try {
+ // dataList2 鏄墍鏈夊垎缁勪笅鐨勫熀纭�鏁版嵁锛岀嫭绔嬫墽琛�
+ String finalOrderId = orderId;
+ String finalInputProject = inputProject;
+ String finalSelectProcesses = selectProcesses;
+ CompletableFuture<List<WorkInProgressDTO>> dataList2Future =
+ asyncExecutor.runAsync(() ->
+ reportMapper.workInProgressMpdataList2(
+ offset, pageSize, finalOrderId, finalInputProject, finalSelectProcesses, workInProgressDTO));
- } else {
- //娌℃湁閫夋嫨鍒嗙粍
- //map.put("data", reportMapper.workInProgressMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
- List<WorkInProgressDTO> dataList1 =reportMapper.workInProgressMpdataList1(offset, pageSize, orderId, inputProject, selectProcesses,laminating, workInProgressDTO);
+ CompletableFuture<List<WorkInProgressDTO>> dataList1Future;
+ CompletableFuture<Map<String, Float>> totalFuture;
+
+ // 鏍规嵁 optionVal 鍐冲畾鏌ヨ绫诲瀷
+ if ("1".equals(optionVal)) {
+ // 閿�鍞崟鍙锋眹鎬�
+ dataList1Future = asyncExecutor.runAsync(() ->
+ reportMapper.workInProgressOrderMpList1(
+ offset, pageSize, finalOrderId, finalInputProject, finalSelectProcesses, workInProgressDTO));
+
+ totalFuture = asyncExecutor.runAsync(() ->
+ reportMapper.workInProgressOrderFootSum(
+ offset, pageSize, finalOrderId, finalInputProject, finalSelectProcesses, workInProgressDTO));
+
+ } else if ("2".equals(optionVal)) {
+ // 娴佺▼鍗″彿姹囨��
+ dataList1Future = asyncExecutor.runAsync(() ->
+ reportMapper.workInProgressProcessMpList1(
+ offset, pageSize, finalOrderId, finalInputProject, finalSelectProcesses, workInProgressDTO));
+
+ totalFuture = asyncExecutor.runAsync(() ->
+ reportMapper.workInProgressOrderFootSum(
+ offset, pageSize, finalOrderId, finalInputProject, finalSelectProcesses, workInProgressDTO));
+
+ } else if ("3".equals(optionVal)) {
+ dataList1Future = asyncExecutor.runAsync(() ->
+ reportMapper.workInProgressMpdataList1(
+ offset, pageSize, finalOrderId, finalInputProject, finalSelectProcesses, laminating, workInProgressDTO));
+ totalFuture = asyncExecutor.runAsync(() ->
+ reportMapper.workInProgressOrderFootSum(
+ offset, pageSize, finalOrderId, finalInputProject, finalSelectProcesses, workInProgressDTO));
+
+ } else {
+ // 涓嶅垎缁�
+ dataList1Future = asyncExecutor.runAsync(() ->
+ reportMapper.workInProgressMpdataList1(
+ offset, pageSize, finalOrderId, finalInputProject, finalSelectProcesses, laminating, workInProgressDTO));
+
+ totalFuture = asyncExecutor.runAsync(() ->
+ reportMapper.workInProgressOrderFootSum(
+ offset, pageSize, finalOrderId, finalInputProject, finalSelectProcesses, workInProgressDTO));
+ }
+
+ // 绛夊緟鍏ㄩ儴浠诲姟瀹屾垚
+ CompletableFuture.allOf(dataList1Future, dataList2Future, totalFuture).join();
+
+ List<WorkInProgressDTO> dataList1 = dataList1Future.get();
+ List<WorkInProgressDTO> dataList2 = dataList2Future.get();
mergeTeamsGroupsName(dataList1, dataList2);
- map.put("data",dataList1);
- //map.put("total", reportMapper.workInProgressTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
- map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO));
+ result.put("data", dataList1);
+ result.put("total", totalFuture.get());
+
+ // 骞惰鏌ヨ宸ュ簭淇℃伅
+ List<Map<String, String>> process = productionSchedulingMapper.selectProcess();
+ result.put("process", process);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("骞惰鏌ヨ鍦ㄥ埗鍝佷俊鎭紓甯革細" + e.getMessage(), e);
}
- map.put("process", productionSchedulingMapper.selectProcess());
- return map;
+
+ return result;
}
+
public Map<String, Object> selectProcessToBeCompletedSv(Date selectTime1, Date selectTime2, String orderId, String inputProject, String selectProcesses, Report report) {
if ("null".equals(orderId)) {
@@ -424,19 +546,20 @@
Map<String, Object> result = new HashMap<>();
// 寮傛浠诲姟瀹氫箟
- CompletableFuture<List<DamageReportDTO>> dataFuture = CompletableFuture.supplyAsync(() ->
- reportMapper.selectDamageReportMp(offset, pageSize, selectTime1, selectTime2, damageReportDTO), EXECUTOR);
- CompletableFuture<Map<String, Integer>> totalFuture = CompletableFuture.supplyAsync(() ->
- reportMapper.getDamageReportPageTotal(offset, pageSize, selectTime1, selectTime2, damageReportDTO), EXECUTOR);
+ CompletableFuture<List<DamageReportDTO>> dataFuture = asyncExecutor.runAsync(() ->
+ reportMapper.selectDamageReportMp(offset, pageSize, selectTime1, selectTime2, damageReportDTO));
- CompletableFuture<Map<String, Float>> footSumFuture = CompletableFuture.supplyAsync(() ->
- reportMapper.damageReportFootSum(selectTime1, selectTime2, damageReportDTO), EXECUTOR);
+ CompletableFuture<Map<String, Integer>> totalFuture = asyncExecutor.runAsync(() ->
+ reportMapper.getDamageReportPageTotal(offset, pageSize, selectTime1, selectTime2, damageReportDTO));
+
+ CompletableFuture<Map<String, Float>> footSumFuture = asyncExecutor.runAsync(() ->
+ reportMapper.damageReportFootSum(selectTime1, selectTime2, damageReportDTO));
+
+ //绛夊緟鍏ㄩ儴浠诲姟瀹屾垚
+ CompletableFuture.allOf(dataFuture, totalFuture, footSumFuture).join();
try {
- //绛夊緟鍏ㄩ儴浠诲姟瀹屾垚
- CompletableFuture.allOf(dataFuture, totalFuture, footSumFuture).join();
-
result.put("data", dataFuture.get());
result.put("total", totalFuture.get());
result.put("footSum", footSumFuture.get());
@@ -730,29 +853,28 @@
String laminating = reportMapper.getLaminating(selectProcesses);
- // 骞惰鎵ц鍥涗釜鏌ヨ浠诲姟
String finalSelectProcesses = selectProcesses;
- CompletableFuture<List<TeamOutputDTO>> dataFuture = CompletableFuture.supplyAsync(() ->
- reportMapper.teamOutputMp(offset, pageSize, selectTime1, selectTime2, finalSelectProcesses, laminating, teamOutputDTO), EXECUTOR);
+ CompletableFuture<List<TeamOutputDTO>> dataFuture = asyncExecutor.runAsync(() ->
+ reportMapper.teamOutputMp(offset, pageSize, selectTime1, selectTime2, finalSelectProcesses, laminating, teamOutputDTO));
- CompletableFuture<List<Map<String, String>>> processFuture = CompletableFuture.supplyAsync(() ->
- productionSchedulingMapper.selectProcess(), EXECUTOR);
+ CompletableFuture<List<Map<String, String>>> processFuture = asyncExecutor.runAsync(() ->
+ productionSchedulingMapper.selectProcess());
- CompletableFuture<Map<String, Integer>> totalFuture = CompletableFuture.supplyAsync(() ->
- reportMapper.teamOutputPageTotal(offset, pageSize, selectTime1, selectTime2, finalSelectProcesses, laminating, teamOutputDTO), EXECUTOR);
+ CompletableFuture<Map<String, Integer>> totalFuture = asyncExecutor.runAsync(() ->
+ reportMapper.teamOutputPageTotal(offset, pageSize, selectTime1, selectTime2, finalSelectProcesses, laminating, teamOutputDTO));
- CompletableFuture<Map<String, Float>> footSumFuture = CompletableFuture.supplyAsync(() ->
- reportMapper.teamOutputFootSum(selectTime1, selectTime2, finalSelectProcesses, laminating, teamOutputDTO), EXECUTOR);
+
+ CompletableFuture<Map<String, Float>> footSumFuture = asyncExecutor.runAsync(() ->
+ reportMapper.teamOutputFootSum(selectTime1, selectTime2, finalSelectProcesses, laminating, teamOutputDTO));
+
+ // 绛夊緟鎵�鏈変换鍔″畬鎴�
+ CompletableFuture.allOf(dataFuture, processFuture, totalFuture, footSumFuture).join();
try {
- // 绛夊緟鍏ㄩ儴浠诲姟鎵ц瀹屾瘯
- CompletableFuture.allOf(dataFuture, processFuture, totalFuture, footSumFuture).join();
-
result.put("data", dataFuture.get());
result.put("process", processFuture.get());
result.put("total", totalFuture.get());
result.put("footSum", footSumFuture.get());
-
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("骞惰鏌ヨ寮傚父锛�" + e.getMessage(), e);
--
Gitblit v1.8.0