From c85ab5e9a64729d31d54066c77174dc937e3136f Mon Sep 17 00:00:00 2001 From: "CANCERYS\\kw093" Date: Mon, 22 Dec 2025 14:08:16 +0800 Subject: [PATCH] update time pause --- .../deliveryOrder/web/DoPickOrderController.kt | 6 +++--- .../service/ProductProcessService.kt | 15 ++++++++++++++- .../web/model/SaveProductProcessRequest.kt | 3 +++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/DoPickOrderController.kt b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/DoPickOrderController.kt index 8cda2e0..7894ca8 100644 --- a/src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/DoPickOrderController.kt +++ b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/DoPickOrderController.kt @@ -96,10 +96,10 @@ class DoPickOrderController( return doReleaseCoordinatorService.getBatchReleaseProgress(jobId) } - @GetMapping("/ticket-release-table") + @GetMapping("/ticket-release-table/{startDate}/{endDate}") fun getTicketReleaseTable( - @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) startDate: LocalDate?, - @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) endDate: LocalDate? + @PathVariable startDate: LocalDate, + @PathVariable endDate: LocalDate ): List { return doPickOrderService.getTicketReleaseTable(startDate, endDate) } diff --git a/src/main/java/com/ffii/fpsms/modules/productProcess/service/ProductProcessService.kt b/src/main/java/com/ffii/fpsms/modules/productProcess/service/ProductProcessService.kt index 1794b83..f4f3102 100644 --- a/src/main/java/com/ffii/fpsms/modules/productProcess/service/ProductProcessService.kt +++ b/src/main/java/com/ffii/fpsms/modules/productProcess/service/ProductProcessService.kt @@ -921,6 +921,16 @@ open class ProductProcessService( val productProcessLine = productProcessLineRepository.findById(productProcessLineId).orElse(null) val bomProcess = bomProcessRepository.findById(productProcessLine?.bomProcess?.id?:0L).orElse(null) val productProcessIssue = productionProcessIssueRepository.findByProductProcessLineId(productProcessLineId).filter{it.status == "Paused"}.firstOrNull() + + // ✅ 计算所有已恢复的暂停记录的总暂停时间(毫秒) + val allIssues = productionProcessIssueRepository.findByProductProcessLineId(productProcessLineId) + val totalPausedTimeMs = allIssues + .filter { it.status == "Resumed" && it.stopTime != null && it.resumeTime != null } + .sumOf { issue -> + val stopTime = issue.stopTime?.toEpochSecond(ZoneOffset.UTC) ?: 0L + val resumeTime = issue.resumeTime?.toEpochSecond(ZoneOffset.UTC) ?: 0L + (resumeTime - stopTime) * 1000 // 转换为毫秒 + } return JobOrderProcessLineDetailResponse( id = productProcessLine.id?:0, @@ -940,7 +950,10 @@ open class ProductProcessService( equipmentType = productProcessLine.equipmentType, equipmentId = productProcessLine.equipment?.id?:0, startTime = productProcessLine.startTime?:LocalDateTime.now(), - endTime = productProcessLine.endTime?:LocalDateTime.now(), + endTime = productProcessLine.endTime?:LocalDateTime.now(), + stopTime = productProcessIssue?.stopTime, + // ✅ 添加总暂停时间(毫秒) + totalPausedTimeMs = totalPausedTimeMs.toLong(), status = productProcessLine.status?:"", outputFromProcessQty = productProcessLine.outputFromProcessQty?:0, outputFromProcessUom = productProcessLine.outputFromProcessUom?:"", diff --git a/src/main/java/com/ffii/fpsms/modules/productProcess/web/model/SaveProductProcessRequest.kt b/src/main/java/com/ffii/fpsms/modules/productProcess/web/model/SaveProductProcessRequest.kt index 26a1455..f2fd4b0 100644 --- a/src/main/java/com/ffii/fpsms/modules/productProcess/web/model/SaveProductProcessRequest.kt +++ b/src/main/java/com/ffii/fpsms/modules/productProcess/web/model/SaveProductProcessRequest.kt @@ -122,6 +122,7 @@ data class JobOrderProcessLineDetailResponse( val operatorId: Long?, val equipmentType: String?, val operatorName: String?, + val handlerId: Long?, val durationInMinutes: Int?, val seqNo: Long?, @@ -130,6 +131,8 @@ data class JobOrderProcessLineDetailResponse( val equipmentId: Long?, val startTime: LocalDateTime?, val endTime: LocalDateTime?, + val stopTime: LocalDateTime?, + val totalPausedTimeMs: Long?, val productProcessIssueId: Long?, val productProcessIssueStatus: String?, val status: String,