feat(mes): 新增看板接口

- 新增看板接口5,返回合格数/不合格数统计数据
- 新增看板接口6,返回产品良率统计数据
master
Yangk 1 week ago
parent 280a25eefe
commit 250c85b1ee

@ -1,6 +1,5 @@
package org.dromara.mes.controller; package org.dromara.mes.controller;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
@ -18,7 +17,6 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* MESController * MESController
* *
@ -40,7 +38,8 @@ public class ProdReportController extends BaseController {
* @return * @return
*/ */
@GetMapping("/planCompletionRateReport") @GetMapping("/planCompletionRateReport")
public TableDataInfo<PlanCompletionRateReportVo> planCompletionRateReportList(@RequestParam(required = false) Map hashMap, PageQuery pageQuery) { public TableDataInfo<PlanCompletionRateReportVo> planCompletionRateReportList(
@RequestParam(required = false) Map hashMap, PageQuery pageQuery) {
return prodReportService.planCompletionRateReportVoList(hashMap, pageQuery); return prodReportService.planCompletionRateReportVoList(hashMap, pageQuery);
} }
@ -51,12 +50,12 @@ public class ProdReportController extends BaseController {
* @return * @return
*/ */
@PostMapping("/planCompletionRateReport/export") @PostMapping("/planCompletionRateReport/export")
public void planCompletionRateReportListExport(@RequestParam(required = false) Map hashMap, HttpServletResponse response) { public void planCompletionRateReportListExport(@RequestParam(required = false) Map hashMap,
HttpServletResponse response) {
List<PlanCompletionRateReportVo> list = prodReportService.planCompletionRateReportVoList(hashMap); List<PlanCompletionRateReportVo> list = prodReportService.planCompletionRateReportVoList(hashMap);
ExcelUtil.exportExcel(list, "生产计划完成率报表", PlanCompletionRateReportVo.class, response); ExcelUtil.exportExcel(list, "生产计划完成率报表", PlanCompletionRateReportVo.class, response);
} }
/** /**
* *
* *
@ -64,7 +63,8 @@ public class ProdReportController extends BaseController {
* @return * @return
*/ */
@GetMapping("/planCompletionContrastReport") @GetMapping("/planCompletionContrastReport")
public TableDataInfo<PlanCompletionContrastReportVo> planCompletionContrastReportVoList(@RequestParam(required = false) Map hashMap, PageQuery pageQuery) { public TableDataInfo<PlanCompletionContrastReportVo> planCompletionContrastReportVoList(
@RequestParam(required = false) Map hashMap, PageQuery pageQuery) {
return prodReportService.planCompletionContrastReportVoList(hashMap, pageQuery); return prodReportService.planCompletionContrastReportVoList(hashMap, pageQuery);
} }
@ -75,12 +75,12 @@ public class ProdReportController extends BaseController {
* @return * @return
*/ */
@PostMapping("/planCompletionContrastReport/export") @PostMapping("/planCompletionContrastReport/export")
public void planCompletionContrastReportExport(@RequestParam(required = false) Map hashMap, HttpServletResponse response) { public void planCompletionContrastReportExport(@RequestParam(required = false) Map hashMap,
HttpServletResponse response) {
List<PlanCompletionContrastReportVo> list = prodReportService.planCompletionContrastReportVoList(hashMap); List<PlanCompletionContrastReportVo> list = prodReportService.planCompletionContrastReportVoList(hashMap);
ExcelUtil.exportExcel(list, "生产计划完成率对比报表", PlanCompletionContrastReportVo.class, response); ExcelUtil.exportExcel(list, "生产计划完成率对比报表", PlanCompletionContrastReportVo.class, response);
} }
/** /**
* *
* *
@ -123,12 +123,12 @@ public class ProdReportController extends BaseController {
return R.ok(vos); return R.ok(vos);
} }
/** /**
* *
*/ */
@GetMapping("/workHourReport") @GetMapping("/workHourReport")
public TableDataInfo<WorkHourReportVo> workHourReport(@RequestParam(required = false) Map hashMap, PageQuery pageQuery) { public TableDataInfo<WorkHourReportVo> workHourReport(@RequestParam(required = false) Map hashMap,
PageQuery pageQuery) {
return prodReportService.workHourReportList(hashMap, pageQuery); return prodReportService.workHourReportList(hashMap, pageQuery);
} }
@ -145,7 +145,8 @@ public class ProdReportController extends BaseController {
* *
*/ */
@GetMapping("/teamWorkReport") @GetMapping("/teamWorkReport")
public TableDataInfo<TeamWorkReportVo> teamWorkReport(@RequestParam(required = false) Map hashMap, PageQuery pageQuery) { public TableDataInfo<TeamWorkReportVo> teamWorkReport(@RequestParam(required = false) Map hashMap,
PageQuery pageQuery) {
return prodReportService.teamWorkReportList(hashMap, pageQuery); return prodReportService.teamWorkReportList(hashMap, pageQuery);
} }
@ -163,7 +164,8 @@ public class ProdReportController extends BaseController {
* *
*/ */
@GetMapping("/wipTrackingReport") @GetMapping("/wipTrackingReport")
public TableDataInfo<WipTrackingReportVo> wipTrackingReport(@RequestParam(required = false) Map hashMap, PageQuery pageQuery) { public TableDataInfo<WipTrackingReportVo> wipTrackingReport(@RequestParam(required = false) Map hashMap,
PageQuery pageQuery) {
return prodReportService.wipTrackingReportList(hashMap, pageQuery); return prodReportService.wipTrackingReportList(hashMap, pageQuery);
} }
@ -205,7 +207,8 @@ public class ProdReportController extends BaseController {
* *
*/ */
@GetMapping("/processWorkOrderStats/page") @GetMapping("/processWorkOrderStats/page")
public TableDataInfo<HashMap<String, Object>> processWorkOrderStatsPage(@RequestParam(required = false) Map hashMap, PageQuery pageQuery) { public TableDataInfo<HashMap<String, Object>> processWorkOrderStatsPage(@RequestParam(required = false) Map hashMap,
PageQuery pageQuery) {
return prodReportService.processWorkOrderStatsPage(hashMap, pageQuery); return prodReportService.processWorkOrderStatsPage(hashMap, pageQuery);
} }
@ -286,4 +289,22 @@ public class ProdReportController extends BaseController {
return R.ok(result); return R.ok(result);
} }
/**
* 5/
*/
@GetMapping("/dashboard/data5")
public R<HashMap<String, Object>> dashboardData5(@RequestParam(required = false) Map hashMap) {
HashMap<String, Object> vos = prodReportService.getDashboardData5(hashMap);
return R.ok(vos);
}
/**
* 6
*/
@GetMapping("/dashboard/data6")
public R<HashMap<String, Object>> dashboardData6(@RequestParam(required = false) Map hashMap) {
HashMap<String, Object> vos = prodReportService.getDashboardData6(hashMap);
return R.ok(vos);
}
} }

@ -1,6 +1,5 @@
package org.dromara.mes.service; package org.dromara.mes.service;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.mes.domain.vo.*; import org.dromara.mes.domain.vo.*;
@ -17,187 +16,204 @@ import java.util.Map;
*/ */
public interface IProdReportService { public interface IProdReportService {
/** /**
* *
* *
* @param hashMap * @param hashMap
* @param pageQuery * @param pageQuery
* @return * @return
*/ */
TableDataInfo<PlanCompletionRateReportVo> planCompletionRateReportVoList(Map hashMap, PageQuery pageQuery); TableDataInfo<PlanCompletionRateReportVo> planCompletionRateReportVoList(Map hashMap, PageQuery pageQuery);
/** /**
* *
* *
* @param hashMap * @param hashMap
* @return * @return
*/ */
List<PlanCompletionRateReportVo> planCompletionRateReportVoList(Map hashMap); List<PlanCompletionRateReportVo> planCompletionRateReportVoList(Map hashMap);
/** /**
* *
* @param hashMap * @param hashMap
* @param pageQuery * @param pageQuery
* @return * @return
*/ */
TableDataInfo<PlanCompletionContrastReportVo> planCompletionContrastReportVoList(Map hashMap, PageQuery pageQuery); TableDataInfo<PlanCompletionContrastReportVo> planCompletionContrastReportVoList(Map hashMap, PageQuery pageQuery);
/** /**
* *
* *
* @param hashMap * @param hashMap
* @return * @return
*/ */
List<PlanCompletionContrastReportVo> planCompletionContrastReportVoList(Map hashMap); List<PlanCompletionContrastReportVo> planCompletionContrastReportVoList(Map hashMap);
/** /**
* *
* @param hashMap * @param hashMap
* @return * @return
*/ */
List<HashMap<String, Object>> designDailyOutputInformation(Map hashMap); List<HashMap<String, Object>> designDailyOutputInformation(Map hashMap);
/** /**
* *
* @param hashMap * @param hashMap
* @return */ * @return
List<HashMap<String, Object>> yieldSummaryByMachine(Map hashMap); */
List<HashMap<String, Object>> yieldSummaryByMachine(Map hashMap);
/** /**
* *
* @param hashMap * @param hashMap
* @return * @return
*/ */
List<HashMap<String, Object>> yieldTrendByDate(Map hashMap); List<HashMap<String, Object>> yieldTrendByDate(Map hashMap);
/** /**
* *
* @param hashMap * @param hashMap
* @param pageQuery * @param pageQuery
* @return * @return
*/ */
TableDataInfo<WorkHourReportVo> workHourReportList(Map hashMap, PageQuery pageQuery); TableDataInfo<WorkHourReportVo> workHourReportList(Map hashMap, PageQuery pageQuery);
/** /**
* *
* @param hashMap * @param hashMap
* @return * @return
*/ */
List<WorkHourReportVo> workHourReportList(Map hashMap); List<WorkHourReportVo> workHourReportList(Map hashMap);
/** /**
* *
* @param hashMap * @param hashMap
* @param pageQuery * @param pageQuery
* @return * @return
*/ */
TableDataInfo<TeamWorkReportVo> teamWorkReportList(Map hashMap, PageQuery pageQuery); TableDataInfo<TeamWorkReportVo> teamWorkReportList(Map hashMap, PageQuery pageQuery);
/** /**
* *
* @param hashMap * @param hashMap
* @return * @return
*/ */
List<TeamWorkReportVo> teamWorkReportList(Map hashMap); List<TeamWorkReportVo> teamWorkReportList(Map hashMap);
/** /**
* *
* @param hashMap * @param hashMap
* @param pageQuery * @param pageQuery
* @return * @return
*/ */
TableDataInfo<WipTrackingReportVo> wipTrackingReportList(Map hashMap, PageQuery pageQuery); TableDataInfo<WipTrackingReportVo> wipTrackingReportList(Map hashMap, PageQuery pageQuery);
/** /**
* *
* @param hashMap * @param hashMap
* @return * @return
*/ */
List<WipTrackingReportVo> wipTrackingReportList(Map hashMap); List<WipTrackingReportVo> wipTrackingReportList(Map hashMap);
/** /**
* *
* @param productOrderId ID * @param productOrderId ID
* @return * @return
*/ */
// List<ProcessProgressVo> getOrderProcessProgress(Long productOrderId); // List<ProcessProgressVo> getOrderProcessProgress(Long productOrderId);
/** /**
* VO * VO
* @param reportList * @param reportList
* @return VO * @return VO
*/ */
List<WipTrackingReportExportVo> convertToExportVo(List<WipTrackingReportVo> reportList); List<WipTrackingReportExportVo> convertToExportVo(List<WipTrackingReportVo> reportList);
/** /**
* *
* @param hashMap beginDate/endDateprocessIdmachineIdshiftIdclassTeamIdmaterialName * @param hashMap beginDate/endDateprocessIdmachineIdshiftIdclassTeamIdmaterialName
* @return productionDatehourSlotproductionQuantityqualifiedQuantityunqualifiedQuantity * @return productionDatehourSlotproductionQuantityqualifiedQuantityunqualifiedQuantity
*/ */
List<HashMap<String, Object>> hourlyOutputByHour(Map hashMap); List<HashMap<String, Object>> hourlyOutputByHour(Map hashMap);
/** /**
* *
* @param hashMap beginDate/endDateprocessIdmachineIdshiftIdclassTeamIdmaterialName * @param hashMap beginDate/endDateprocessIdmachineIdshiftIdclassTeamIdmaterialName
* @return * @return
*/ */
List<HashMap<String, Object>> processWorkOrderStats(Map hashMap); List<HashMap<String, Object>> processWorkOrderStats(Map hashMap);
/** /**
* *
* @param hashMap * @param hashMap
* @param pageQuery * @param pageQuery
* @return * @return
*/ */
TableDataInfo<HashMap<String, Object>> processWorkOrderStatsPage(Map hashMap, PageQuery pageQuery); TableDataInfo<HashMap<String, Object>> processWorkOrderStatsPage(Map hashMap, PageQuery pageQuery);
/** /**
* *
* @param hashMap * @param hashMap
* @return * @return
*/ */
List<ProcessWorkOrderStatsVo> processWorkOrderStatsExport(Map hashMap); List<ProcessWorkOrderStatsVo> processWorkOrderStatsExport(Map hashMap);
/** /**
* plan_code + process_id * plan_code + process_id
* @param hashMap planCodeprocessId * @param hashMap planCodeprocessId
* @return * @return
*/ */
List<HashMap<String, Object>> planProcessDetailChildren(Map hashMap); List<HashMap<String, Object>> planProcessDetailChildren(Map hashMap);
/** /**
* *
* @param hashMap beginDate/endDateprocessIdmachineIdshiftIdclassTeamIdplanCodematerialNamematerialCode * @param hashMap beginDate/endDateprocessIdmachineIdshiftIdclassTeamIdplanCodematerialNamematerialCode
* @return * @return
*/ */
List<HashMap<String, Object>> listPlansByProcess(Map hashMap); List<HashMap<String, Object>> listPlansByProcess(Map hashMap);
/** /**
* 1value1-value5 * 1value1-value5
* @param hashMap * @param hashMap
* @return * @return
*/ */
List<HashMap<String, Object>> getDashboardData1(Map hashMap); List<HashMap<String, Object>> getDashboardData1(Map hashMap);
/** /**
* 2x1y1 * 2x1y1
* @param hashMap * @param hashMap
* @return * @return
*/ */
HashMap<String, Object> getDashboardData2(Map hashMap); HashMap<String, Object> getDashboardData2(Map hashMap);
/** /**
* 3x1y1 * 3x1y1
* @param hashMap * @param hashMap
* @return * @return
*/ */
HashMap<String, Object> getDashboardData3(Map hashMap); HashMap<String, Object> getDashboardData3(Map hashMap);
/** /**
* 4value1-value4 * 4value1-value4
* @param hashMap * @param hashMap
* @return * @return
*/ */
List<HashMap<String, Object>> getDashboardData4(Map hashMap); List<HashMap<String, Object>> getDashboardData4(Map hashMap);
/**
* 5/
*
* @param hashMap
* @return x1: , y1:
*/
HashMap<String, Object> getDashboardData5(Map hashMap);
/**
* 6
*
* @param hashMap
* @return x1: , y1:
*/
HashMap<String, Object> getDashboardData6(Map hashMap);
} }

@ -43,7 +43,8 @@ public class ProdReportServiceImpl implements IProdReportService {
@Override @Override
public TableDataInfo<PlanCompletionRateReportVo> planCompletionRateReportVoList(Map hashMap, PageQuery pageQuery) { public TableDataInfo<PlanCompletionRateReportVo> planCompletionRateReportVoList(Map hashMap, PageQuery pageQuery) {
String tableName = getPlanInfoTableNameByProcessId(Long.parseLong(String.valueOf(hashMap.get("processId")))); String tableName = getPlanInfoTableNameByProcessId(Long.parseLong(String.valueOf(hashMap.get("processId"))));
Page<PlanCompletionRateReportVo> page = prodReportMapper.planCompletionRateReportVoList(hashMap, pageQuery.build(), tableName); Page<PlanCompletionRateReportVo> page = prodReportMapper.planCompletionRateReportVoList(hashMap,
pageQuery.build(), tableName);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@ -91,7 +92,7 @@ public class ProdReportServiceImpl implements IProdReportService {
if (StringUtils.isNull(processId)) { if (StringUtils.isNull(processId)) {
// 默认返回半制品表 // 默认返回半制品表
tableName = DatabaseConstants.TABLE_NAME_PROD_PRODUCT_PLAN_DETAIL_PREFIX + "_2"; tableName = DatabaseConstants.TABLE_NAME_PROD_PRODUCT_PLAN_DETAIL_PREFIX + "_2";
}else if (processId == 17L) { } else if (processId == 17L) {
tableName = DatabaseConstants.TABLE_NAME_PROD_PRODUCT_PLAN_DETAIL_PREFIX + "_3"; tableName = DatabaseConstants.TABLE_NAME_PROD_PRODUCT_PLAN_DETAIL_PREFIX + "_3";
} else if (processId == 18L) { } else if (processId == 18L) {
tableName = DatabaseConstants.TABLE_NAME_PROD_PRODUCT_PLAN_DETAIL_PREFIX + "_4"; tableName = DatabaseConstants.TABLE_NAME_PROD_PRODUCT_PLAN_DETAIL_PREFIX + "_4";
@ -108,9 +109,11 @@ public class ProdReportServiceImpl implements IProdReportService {
* @return * @return
*/ */
@Override @Override
public TableDataInfo<PlanCompletionContrastReportVo> planCompletionContrastReportVoList(Map hashMap, PageQuery pageQuery) { public TableDataInfo<PlanCompletionContrastReportVo> planCompletionContrastReportVoList(Map hashMap,
PageQuery pageQuery) {
String tableName = getPlanInfoTableNameByProcessId(Long.parseLong(String.valueOf(hashMap.get("processId")))); String tableName = getPlanInfoTableNameByProcessId(Long.parseLong(String.valueOf(hashMap.get("processId"))));
Page<PlanCompletionContrastReportVo> page = prodReportMapper.planCompletionContrastReportVoList(hashMap, pageQuery.build(), tableName); Page<PlanCompletionContrastReportVo> page = prodReportMapper.planCompletionContrastReportVoList(hashMap,
pageQuery.build(), tableName);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@ -157,7 +160,8 @@ public class ProdReportServiceImpl implements IProdReportService {
Long processId = parseProcessId(String.valueOf(hashMap.get("processId"))); Long processId = parseProcessId(String.valueOf(hashMap.get("processId")));
String detailTable = getPlanDetailTableNameByProcessId(processId); String detailTable = getPlanDetailTableNameByProcessId(processId);
String planTable = getPlanInfoTableNameByProcessId(processId); String planTable = getPlanInfoTableNameByProcessId(processId);
Page<WorkHourReportVo> page = prodReportMapper.workHourReportList(hashMap, pageQuery.build(), detailTable, planTable); Page<WorkHourReportVo> page = prodReportMapper.workHourReportList(hashMap, pageQuery.build(), detailTable,
planTable);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@ -188,7 +192,8 @@ public class ProdReportServiceImpl implements IProdReportService {
Long processId = parseProcessId(String.valueOf(hashMap.get("processId"))); Long processId = parseProcessId(String.valueOf(hashMap.get("processId")));
String detailTable = getPlanDetailTableNameByProcessId(processId); String detailTable = getPlanDetailTableNameByProcessId(processId);
String planTable = getPlanInfoTableNameByProcessId(processId); String planTable = getPlanInfoTableNameByProcessId(processId);
Page<TeamWorkReportVo> page = prodReportMapper.teamWorkReportList(hashMap, pageQuery.build(), detailTable, planTable); Page<TeamWorkReportVo> page = prodReportMapper.teamWorkReportList(hashMap, pageQuery.build(), detailTable,
planTable);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@ -202,7 +207,7 @@ public class ProdReportServiceImpl implements IProdReportService {
/** /**
* - * -
* @param hashMap * @param hashMap
* @param pageQuery * @param pageQuery
* @return * @return
*/ */
@ -313,10 +318,11 @@ public class ProdReportServiceImpl implements IProdReportService {
/** /**
* *
* @param orderIds ID * @param orderIds ID
* @param orderProcessMap * @param orderProcessMap
*/ */
private void batchQueryProcessProgress(List<String> planCodes, Map<String, List<ProcessProgressVo>> planProcessMap) { private void batchQueryProcessProgress(List<String> planCodes,
Map<String, List<ProcessProgressVo>> planProcessMap) {
// 查询半制品工序进度prod_plan_info_2 // 查询半制品工序进度prod_plan_info_2
queryProcessProgressByTable(planCodes, "prod_plan_info_2", planProcessMap); queryProcessProgressByTable(planCodes, "prod_plan_info_2", planProcessMap);
@ -327,27 +333,29 @@ public class ProdReportServiceImpl implements IProdReportService {
queryProcessProgressByTable(planCodes, "prod_plan_info_4", planProcessMap); queryProcessProgressByTable(planCodes, "prod_plan_info_4", planProcessMap);
// 对每个计划的工序进度进行排序 // 对每个计划的工序进度进行排序
planProcessMap.values().forEach(processList -> planProcessMap.values().forEach(processList -> processList.sort((a, b) -> {
processList.sort((a, b) -> { if (a.getProcessOrder() == null)
if (a.getProcessOrder() == null) return 1; return 1;
if (b.getProcessOrder() == null) return -1; if (b.getProcessOrder() == null)
return a.getProcessOrder().compareTo(b.getProcessOrder()); return -1;
}) return a.getProcessOrder().compareTo(b.getProcessOrder());
); }));
} }
/** /**
* *
* @param orderIds ID * @param orderIds ID
* @param tableName * @param tableName
* @param orderProcessMap * @param orderProcessMap
*/ */
private void queryProcessProgressByTable(List<String> planCodes, String tableName, Map<String, List<ProcessProgressVo>> planProcessMap) { private void queryProcessProgressByTable(List<String> planCodes, String tableName,
Map<String, List<ProcessProgressVo>> planProcessMap) {
try { try {
// 使用批量查询避免 N+1一次性查询该工序表下所有计划的工序进度 // 使用批量查询避免 N+1一次性查询该工序表下所有计划的工序进度
// 返回结果中包含 planCode 字段,便于在此处进行分组 // 返回结果中包含 planCode 字段,便于在此处进行分组
String tenantId = LoginHelper.getTenantId(); String tenantId = LoginHelper.getTenantId();
List<ProcessProgressVo> batchResults = prodReportMapper.getPlansProcessProgressBatch(planCodes, tableName, tenantId); List<ProcessProgressVo> batchResults = prodReportMapper.getPlansProcessProgressBatch(planCodes, tableName,
tenantId);
if (batchResults != null && !batchResults.isEmpty()) { if (batchResults != null && !batchResults.isEmpty()) {
for (ProcessProgressVo progress : batchResults) { for (ProcessProgressVo progress : batchResults) {
String planCode = progress.getPlanCode(); String planCode = progress.getPlanCode();
@ -364,7 +372,7 @@ public class ProdReportServiceImpl implements IProdReportService {
/** /**
* *
* @param vo VO * @param vo VO
* @param processProgress * @param processProgress
*/ */
private void adjustProgressCalculation(WipTrackingReportVo vo, List<ProcessProgressVo> processProgress) { private void adjustProgressCalculation(WipTrackingReportVo vo, List<ProcessProgressVo> processProgress) {
@ -374,35 +382,35 @@ public class ProdReportServiceImpl implements IProdReportService {
try { try {
// 统计工序状态 // 统计工序状态
long completedCount = processProgress.stream() long completedCount = processProgress.stream()
.mapToLong(p -> p.getIsCompleted() != null && p.getIsCompleted() == 1 ? 1 : 0) .mapToLong(p -> p.getIsCompleted() != null && p.getIsCompleted() == 1 ? 1 : 0)
.sum(); .sum();
long inProgressCount = processProgress.stream() long inProgressCount = processProgress.stream()
.mapToLong(p -> p.getIsInProgress() != null && p.getIsInProgress() == 1 ? 1 : 0) .mapToLong(p -> p.getIsInProgress() != null && p.getIsInProgress() == 1 ? 1 : 0)
.sum(); .sum();
long totalCount = processProgress.size(); long totalCount = processProgress.size();
// 更新工序统计信息 // 更新工序统计信息
vo.setTotalProcessCount(totalCount + "道"); vo.setTotalProcessCount(totalCount + "道");
vo.setTotalProcessCountNum((int) totalCount); vo.setTotalProcessCountNum((int) totalCount);
// 构建在制工序名称(进行中的工序) // 构建在制工序名称(进行中的工序)
String wipProcesses = processProgress.stream() String wipProcesses = processProgress.stream()
.filter(p -> p.getIsInProgress() != null && p.getIsInProgress() == 1) .filter(p -> p.getIsInProgress() != null && p.getIsInProgress() == 1)
.map(ProcessProgressVo::getProcessName) .map(ProcessProgressVo::getProcessName)
.filter(Objects::nonNull) .filter(Objects::nonNull)
.collect(Collectors.joining(",")); .collect(Collectors.joining(","));
// 构建剩余工序名称(未派工和已派工但未开始的工序) // 构建剩余工序名称(未派工和已派工但未开始的工序)
String remainingProcesses = processProgress.stream() String remainingProcesses = processProgress.stream()
.filter(p -> (p.getIsCompleted() == null || p.getIsCompleted() == 0) && .filter(p -> (p.getIsCompleted() == null || p.getIsCompleted() == 0) &&
(p.getIsInProgress() == null || p.getIsInProgress() == 0)) (p.getIsInProgress() == null || p.getIsInProgress() == 0))
.map(ProcessProgressVo::getProcessName) .map(ProcessProgressVo::getProcessName)
.filter(Objects::nonNull) .filter(Objects::nonNull)
.collect(Collectors.joining(",")); .collect(Collectors.joining(","));
vo.setWipProcesses(wipProcesses); vo.setWipProcesses(wipProcesses);
vo.setRemainingProcesses(remainingProcesses); vo.setRemainingProcesses(remainingProcesses);
} catch (Exception e) { } catch (Exception e) {
System.out.println("微调进度计算失败,计划编码: " + vo.getPlanCode() + ", 错误: " + e.getMessage()); System.out.println("微调进度计算失败,计划编码: " + vo.getPlanCode() + ", 错误: " + e.getMessage());
@ -452,27 +460,31 @@ public class ProdReportServiceImpl implements IProdReportService {
try { try {
// 不依赖 prod_order_info直接查询三个计划表 // 不依赖 prod_order_info直接查询三个计划表
String[] planTables = { String[] planTables = {
DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_2", DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_2",
DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_3", DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_3",
DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_4" DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_4"
}; };
for (String planTableName : planTables) { for (String planTableName : planTables) {
try { try {
List<ProcessProgressVo> processProgress = prodReportMapper.getPlanProcessProgress(planCode, planTableName); List<ProcessProgressVo> processProgress = prodReportMapper.getPlanProcessProgress(planCode,
planTableName);
if (processProgress != null && !processProgress.isEmpty()) { if (processProgress != null && !processProgress.isEmpty()) {
allProcessProgress.addAll(processProgress); allProcessProgress.addAll(processProgress);
} }
} catch (Exception e) { } catch (Exception e) {
// 记录日志但不中断处理 // 记录日志但不中断处理
System.out.println("查询工序进度失败,计划编码: " + planCode + ", 表: " + planTableName + ", 错误: " + e.getMessage()); System.out.println(
"查询工序进度失败,计划编码: " + planCode + ", 表: " + planTableName + ", 错误: " + e.getMessage());
} }
} }
// 按工序顺序排序 // 按工序顺序排序
allProcessProgress.sort((a, b) -> { allProcessProgress.sort((a, b) -> {
if (a.getProcessOrder() == null) return 1; if (a.getProcessOrder() == null)
if (b.getProcessOrder() == null) return -1; return 1;
if (b.getProcessOrder() == null)
return -1;
return a.getProcessOrder().compareTo(b.getProcessOrder()); return a.getProcessOrder().compareTo(b.getProcessOrder());
}); });
@ -516,10 +528,12 @@ public class ProdReportServiceImpl implements IProdReportService {
// 时间字段转换 // 时间字段转换
if (vo.getPlanBeginTime() != null) { if (vo.getPlanBeginTime() != null) {
exportVo.setPlanBeginTime(vo.getPlanBeginTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); exportVo.setPlanBeginTime(
vo.getPlanBeginTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
} }
if (vo.getRealBeginTime() != null) { if (vo.getRealBeginTime() != null) {
exportVo.setRealBeginTime(vo.getRealBeginTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); exportVo.setRealBeginTime(
vo.getRealBeginTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
} }
if (vo.getPlanEndTime() != null) { if (vo.getPlanEndTime() != null) {
exportVo.setPlanEndTime(vo.getPlanEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); exportVo.setPlanEndTime(vo.getPlanEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
@ -543,12 +557,13 @@ public class ProdReportServiceImpl implements IProdReportService {
processDetail.append("; "); processDetail.append("; ");
} }
processDetail.append(process.getProcessName()) processDetail.append(process.getProcessName())
.append("(") .append("(")
.append(process.getStatusDesc()) .append(process.getStatusDesc())
.append(")"); .append(")");
// 如果有进度百分比,添加进度信息 // 如果有进度百分比,添加进度信息
if (process.getProcessProgress() != null && process.getProcessProgress().compareTo(BigDecimal.ZERO) > 0) { if (process.getProcessProgress() != null
&& process.getProcessProgress().compareTo(BigDecimal.ZERO) > 0) {
processDetail.append(" ").append(process.getProcessProgress()).append("%"); processDetail.append(" ").append(process.getProcessProgress()).append("%");
} }
} }
@ -558,8 +573,6 @@ public class ProdReportServiceImpl implements IProdReportService {
return exportVo; return exportVo;
} }
/** /**
* ID * ID
* @param orderInfo * @param orderInfo
@ -575,7 +588,8 @@ public class ProdReportServiceImpl implements IProdReportService {
if ("2".equals(dispatchType)) { if ("2".equals(dispatchType)) {
// 工艺路线派工通过工艺路线ID获取工序列表 // 工艺路线派工通过工艺路线ID获取工序列表
Long routeId = dispatchIdObj instanceof Integer ? ((Integer) dispatchIdObj).longValue() : (Long) dispatchIdObj; Long routeId = dispatchIdObj instanceof Integer ? ((Integer) dispatchIdObj).longValue()
: (Long) dispatchIdObj;
ProdBaseRouteProcessBo bo = new ProdBaseRouteProcessBo(); ProdBaseRouteProcessBo bo = new ProdBaseRouteProcessBo();
bo.setRouteId(routeId); bo.setRouteId(routeId);
List<ProdBaseRouteProcessVo> routeProcessList = prodBaseRouteProcessService.queryList(bo); List<ProdBaseRouteProcessVo> routeProcessList = prodBaseRouteProcessService.queryList(bo);
@ -588,7 +602,8 @@ public class ProdReportServiceImpl implements IProdReportService {
} else if ("3".equals(dispatchType)) { } else if ("3".equals(dispatchType)) {
// 单工序派工直接使用dispatchId作为工序ID // 单工序派工直接使用dispatchId作为工序ID
if (dispatchIdObj != null) { if (dispatchIdObj != null) {
Long processId = dispatchIdObj instanceof Integer ? ((Integer) dispatchIdObj).longValue() : (Long) dispatchIdObj; Long processId = dispatchIdObj instanceof Integer ? ((Integer) dispatchIdObj).longValue()
: (Long) dispatchIdObj;
processIds.add(processId); processIds.add(processId);
} }
} else { } else {
@ -605,7 +620,6 @@ public class ProdReportServiceImpl implements IProdReportService {
return processIds; return processIds;
} }
/** /**
* *
* @param hashMap * @param hashMap
@ -618,7 +632,6 @@ public class ProdReportServiceImpl implements IProdReportService {
return prodReportMapper.hourlyOutputByHour(hashMap, detailTable, planTable); return prodReportMapper.hourlyOutputByHour(hashMap, detailTable, planTable);
} }
/** /**
* *
* processId * processId
@ -630,7 +643,8 @@ public class ProdReportServiceImpl implements IProdReportService {
if (tenantId != null && !tenantId.isEmpty()) { if (tenantId != null && !tenantId.isEmpty()) {
hashMap.put("tenantId", tenantId); hashMap.put("tenantId", tenantId);
} }
} catch (Exception ignore) {} } catch (Exception ignore) {
}
Long processId = parseProcessId(hashMap.get("processId")); Long processId = parseProcessId(hashMap.get("processId"));
String planTable = getPlanInfoTableNameByProcessId(processId); String planTable = getPlanInfoTableNameByProcessId(processId);
return prodReportMapper.processWorkOrderStats(hashMap, planTable); return prodReportMapper.processWorkOrderStats(hashMap, planTable);
@ -646,7 +660,8 @@ public class ProdReportServiceImpl implements IProdReportService {
if (tenantId != null && !tenantId.isEmpty()) { if (tenantId != null && !tenantId.isEmpty()) {
hashMap.put("tenantId", tenantId); hashMap.put("tenantId", tenantId);
} }
} catch (Exception ignore) {} } catch (Exception ignore) {
}
Long processId = parseProcessId(hashMap.get("processId")); Long processId = parseProcessId(hashMap.get("processId"));
String planTable = getPlanInfoTableNameByProcessId(processId); String planTable = getPlanInfoTableNameByProcessId(processId);
Page<HashMap<String, Object>> mpPage = pageQuery.build(); Page<HashMap<String, Object>> mpPage = pageQuery.build();
@ -686,12 +701,23 @@ public class ProdReportServiceImpl implements IProdReportService {
} }
private Long asLong(Object o) { private Long asLong(Object o) {
if (o == null) return null; if (o == null)
try { return Long.parseLong(String.valueOf(o)); } catch (Exception e) { return null; } return null;
try {
return Long.parseLong(String.valueOf(o));
} catch (Exception e) {
return null;
}
} }
private BigDecimal asBigDecimal(Object o) { private BigDecimal asBigDecimal(Object o) {
if (o == null) return BigDecimal.ZERO; if (o == null)
try { return new BigDecimal(String.valueOf(o)); } catch (Exception e) { return BigDecimal.ZERO; } return BigDecimal.ZERO;
try {
return new BigDecimal(String.valueOf(o));
} catch (Exception e) {
return BigDecimal.ZERO;
}
} }
/** /**
@ -753,7 +779,7 @@ public class ProdReportServiceImpl implements IProdReportService {
x1.add("SC_224NE"); x1.add("SC_224NE");
x1.add("SC_225NE"); x1.add("SC_225NE");
x1.add("SC_226NE"); x1.add("SC_226NE");
List<Integer> y1 = new ArrayList<>(); List<Integer> y1 = new ArrayList<>();
y1.add(5); y1.add(5);
y1.add(12); y1.add(12);
@ -763,7 +789,7 @@ public class ProdReportServiceImpl implements IProdReportService {
y1.add(6); y1.add(6);
y1.add(5); y1.add(5);
y1.add(6); y1.add(6);
result.put("x1", x1); result.put("x1", x1);
result.put("y1", y1); result.put("y1", y1);
return result; return result;
@ -782,14 +808,14 @@ public class ProdReportServiceImpl implements IProdReportService {
x1.add("13:01:00"); x1.add("13:01:00");
x1.add("13:02:00"); x1.add("13:02:00");
x1.add("13:03:00"); x1.add("13:03:00");
List<Integer> y1 = new ArrayList<>(); List<Integer> y1 = new ArrayList<>();
y1.add(3); y1.add(3);
y1.add(4); y1.add(4);
y1.add(2); y1.add(2);
y1.add(5); y1.add(5);
y1.add(6); y1.add(6);
result.put("x1", x1); result.put("x1", x1);
result.put("y1", y1); result.put("y1", y1);
return result; return result;
@ -809,21 +835,71 @@ public class ProdReportServiceImpl implements IProdReportService {
item1.put("value3", 100); item1.put("value3", 100);
item1.put("value4", "10次"); item1.put("value4", "10次");
result.add(item1); result.add(item1);
HashMap<String, Object> item2 = new HashMap<>(); HashMap<String, Object> item2 = new HashMap<>();
item2.put("value1", "2"); item2.put("value1", "2");
item2.put("value2", "SC-228NE"); item2.put("value2", "SC-228NE");
item2.put("value3", 70); item2.put("value3", 70);
item2.put("value4", "7次"); item2.put("value4", "7次");
result.add(item2); result.add(item2);
HashMap<String, Object> item3 = new HashMap<>(); HashMap<String, Object> item3 = new HashMap<>();
item3.put("value1", "3"); item3.put("value1", "3");
item3.put("value2", "SC-228NE"); item3.put("value2", "SC-228NE");
item3.put("value3", 60); item3.put("value3", 60);
item3.put("value4", "6次"); item3.put("value4", "6次");
result.add(item3); result.add(item3);
return result;
}
/**
* 5/
*/
@Override
public HashMap<String, Object> getDashboardData5(Map hashMap) {
HashMap<String, Object> result = new HashMap<>();
// TODO: 根据实际业务逻辑查询数据
// 示例数据结构
List<String> x1 = new ArrayList<>();
x1.add("合格数");
x1.add("不合格数");
List<String> y1 = new ArrayList<>();
y1.add("8");
y1.add("1");
result.put("x1", x1);
result.put("y1", y1);
return result;
}
/**
* 6
*/
@Override
public HashMap<String, Object> getDashboardData6(Map hashMap) {
HashMap<String, Object> result = new HashMap<>();
// TODO: 根据实际业务逻辑查询数据
// 示例数据结构
List<String> x1 = new ArrayList<>();
x1.add("产品1");
x1.add("产品2");
x1.add("产品3");
x1.add("产品4");
x1.add("产品5");
x1.add("产品6");
List<Integer> y1 = new ArrayList<>();
y1.add(98);
y1.add(95);
y1.add(93);
y1.add(95);
y1.add(93);
y1.add(97);
result.put("x1", x1);
result.put("y1", y1);
return result; return result;
} }

Loading…
Cancel
Save