From a87edc50cba5e18cda0e2b852a51eab53b7616e6 Mon Sep 17 00:00:00 2001 From: "CANCERYS\\kw093" Date: Mon, 15 Dec 2025 14:29:47 +0800 Subject: [PATCH] update --- .../jobOrder/entity/JoPickOrderRepository.kt | 3 +- .../jobOrder/service/JoPickOrderService.kt | 16 +++++----- .../entity/projections/ProductProcessInfo.kt | 1 + .../service/ProductProcessService.kt | 31 +++++-------------- .../web/model/SaveProductProcessRequest.kt | 1 + 5 files changed, 21 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrderRepository.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrderRepository.kt index 109c222..2450102 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrderRepository.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrderRepository.kt @@ -16,5 +16,6 @@ interface JoPickOrderRepository : JpaRepository { fun findByPickOrderId(pickOrderId: Long): List fun findByPickOrderIdAndItemId(pickOrderId: Long, itemId: Long): java.util.Optional - fun findByJobOrderId(jobOrderId: Long): JoPickOrder? + fun findByJobOrderId(jobOrderId: Long): List? + } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt index f005eda..b81ae5a 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt @@ -77,15 +77,17 @@ open class JoPickOrderService( } // Update JoPickOrder status to released - open fun updateHandledByForPickOrder(pickOrderId: Long, userId: Long?): List { + open fun updateHandledByForPickOrder(pickOrderId: Long, userId: Long?, matchStatus: String?): List { val joPickOrders = joPickOrderRepository.findByPickOrderId(pickOrderId) - + // Get pick order details to populate new fields val pickOrder = pickOrderRepository.findById(pickOrderId).orElse(null) joPickOrders.forEach { it.handledBy = userId - it.matchStatus = JoPickOrderStatus.pending // Set initial status + if (matchStatus != null) { // 只在有传入状态时才修改 + it.matchStatus = JoPickOrderStatus.valueOf(matchStatus) + }// Set initial status // Set ticket release time (similar to pick order released date) it.ticketReleaseTime = LocalDateTime.now() @@ -113,8 +115,8 @@ open class JoPickOrderService( // Update JoPickOrderRecord status to released open fun updateRecordHandledByForPickOrder(pickOrderId: Long, userId: Long?): List { val joPickOrderRecords = joPickOrderRecordRepository.findByPickOrderId(pickOrderId) - - // Get pick order details to populate new fields + + // Get pick order details to populate nw fields val pickOrder = pickOrderRepository.findById(pickOrderId).orElse(null) joPickOrderRecords.forEach { @@ -934,7 +936,7 @@ open fun assignJobOrderPickOrderToUser(pickOrderId: Long, userId: Long): Message pickOrderRepository.save(pickOrder) // 修复:使用 this 而不是 joPickOrderService - this.updateHandledByForPickOrder(pickOrderId, userId) + this.updateHandledByForPickOrder(pickOrderId, userId, null) this.updateRecordHandledByForPickOrder(pickOrderId, userId) MessageResponse( id = pickOrder.id, @@ -975,7 +977,7 @@ open fun assignJobOrderPickOrderToUser(pickOrderId: Long, userId: Long): Message } pickOrder.assignTo = null pickOrderRepository.save(pickOrder) - this.updateHandledByForPickOrder(pickOrderId, null) + this.updateHandledByForPickOrder(pickOrderId, null,null) this.updateRecordHandledByForPickOrder(pickOrderId, null) MessageResponse( id = pickOrder.id, diff --git a/src/main/java/com/ffii/fpsms/modules/productProcess/entity/projections/ProductProcessInfo.kt b/src/main/java/com/ffii/fpsms/modules/productProcess/entity/projections/ProductProcessInfo.kt index bcce1fc..c4ee669 100644 --- a/src/main/java/com/ffii/fpsms/modules/productProcess/entity/projections/ProductProcessInfo.kt +++ b/src/main/java/com/ffii/fpsms/modules/productProcess/entity/projections/ProductProcessInfo.kt @@ -27,6 +27,7 @@ data class ProductProcessInfo( val isDense: Int?, val isFloat: String?, val scrapRate: Int?, + //val matchStatus: String?, val allergicSubstance: String?, val itemId: Long?, val itemCode: String?, 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 0b52880..fd205ca 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 @@ -44,6 +44,7 @@ import com.ffii.fpsms.modules.productProcess.entity.ProductionProcessIssue import com.ffii.fpsms.modules.jobOrder.entity.JobTypeRepository import com.ffii.fpsms.modules.pickOrder.entity.PickOrderRepository import java.time.ZoneOffset +import com.ffii.fpsms.modules.jobOrder.entity.JoPickOrderRepository @Service @Transactional open class ProductProcessService( @@ -66,6 +67,7 @@ open class ProductProcessService( private val equipmentDetailRepository: EquipmentDetailRepository, private val jobTypeRepository: JobTypeRepository, private val pickOrderRepository: PickOrderRepository, + private val joPickOrderRepository: JoPickOrderRepository, ) { open fun findAll(pageable: Pageable): Page { @@ -530,29 +532,7 @@ open class ProductProcessService( val itemId = jobOrder?.bom?.item?.id val planEndDate = jobOrder?.planEnd?.toLocalDate() - /* - val productionPriority = if (itemId != null && planEndDate != null) { - val scheduleLine = productionScheduleLineRepository - .findByItemIdAndProduceAtAndType( - itemId, - planEndDate.atStartOfDay(), - "detailed" - ) - if (scheduleLine != null) { - // 计算 targetMinStock - val targetMinStock = scheduleLine.lastMonthAvgSales * 2 - // 调整后的生产数量(与 generateDetailedScheduleByDay 逻辑一致) - val adjustedProdQty = scheduleLine.prodQty * 2 - // 计算 difference(缺口) - val difference = -(targetMinStock + adjustedProdQty - scheduleLine.estCloseBal) - difference.toString() - } else { - "0" - } - } else { - "0" - } - */ + fun calculateColourScore(value: Int?): String { return when (value) { 0 -> "淺" @@ -578,6 +558,8 @@ open class ProductProcessService( return productProcesses.map { process -> val jobType = jobTypeRepository.findById(process.jobOrder?.jobTypeId?:0L).orElse(null) + + //val joPickOrders = joPickOrderRepository.findByJobOrderId(process.jobOrder?.id?:0L) println("jobType id ${process.jobOrder?.jobTypeId}") ProductProcessInfo( @@ -598,6 +580,7 @@ open class ProductProcessService( scrapRate = bom?.scrapRate?:-1, allergicSubstance = calculateAllergicSubstanceScore(bom?.allergicSubstances), outputQtyUom = bom?.outputQtyUom?:"", + //matchStatus = joPickOrders?.matchStatus?.value?:"", //outputQty = bom?.outputQty?.toInt()?:0, outputQty = jobOrder?.reqQty?.toInt()?:0, productProcessCode = process.productProcessCode?:"", @@ -1098,6 +1081,7 @@ open class ProductProcessService( val stockInLine = jobOrder?.stockInLines?.firstOrNull() val stockInLineId = stockInLine?.id val pickOrder = pickOrderRepository.findAllByJobOrder_Id(jobOrder?.id?:0L).firstOrNull() + val joPickOrders = joPickOrderRepository.findByPickOrderId(pickOrder?.id?:0L).firstOrNull() //val silHandlerId = stockInLine?.escalationLog?.firstOrNull { it.status == "pending" }?.handler?.id @@ -1107,6 +1091,7 @@ open class ProductProcessService( status = productProcesses.status.value, startTime = productProcesses.startTime, endTime = productProcesses.endTime, + matchStatus = joPickOrders?.matchStatus?.value?:"", RequiredQty = jobOrder?.reqQty?.toInt() ?: 0, date = productProcesses.date, bomId = productProcesses.bom?.id, 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 b40efbb..2fa8c04 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 @@ -163,6 +163,7 @@ data class AllJoborderProductProcessInfoResponse( val date: LocalDate?, val bomId: Long?, val itemName: String?, + val matchStatus: String?, val RequiredQty: Int?, val jobOrderId: Long?, val jobOrderCode: String?,