|
|
|
@@ -4,7 +4,7 @@ import com.ffii.core.response.RecordsRes |
|
|
|
import com.ffii.core.support.AbstractBaseEntityService |
|
|
|
import com.ffii.core.support.JdbcDao |
|
|
|
import com.ffii.fpsms.modules.common.SecurityUtils |
|
|
|
|
|
|
|
import com.ffii.fpsms.modules.common.CodeGenerator |
|
|
|
import com.ffii.fpsms.modules.jobOrder.entity.JobOrderRepository |
|
|
|
import com.ffii.fpsms.modules.master.entity.ItemsRepository |
|
|
|
import com.ffii.fpsms.modules.master.entity.UomConversionRepository |
|
|
|
@@ -1234,9 +1234,14 @@ open class PickOrderService( |
|
|
|
println("Stock out line ${line.id}: status=${line.status}, qty=${line.qty}") |
|
|
|
} |
|
|
|
|
|
|
|
val unfinishedLines = stockOutLines.filter { |
|
|
|
it.status != StockOutLineStatus.COMPLETE.status |
|
|
|
&& it.status != StockOutLineStatus.REJECTED.status |
|
|
|
val unfinishedLines = stockOutLines.filter { sol -> |
|
|
|
val status = sol.status?.trim()?.lowercase() |
|
|
|
val isComplete = status == "completed" || status == StockOutLineStatus.COMPLETE.status.lowercase() |
|
|
|
val isRejected = status == "rejected" || status == StockOutLineStatus.REJECTED.status.lowercase() |
|
|
|
val isPartiallyComplete = status == "partially_completed" || status == StockOutLineStatus.PARTIALLY_COMPLETE.status.lowercase() |
|
|
|
|
|
|
|
// 只要是“结束态”(你认可的状态),就不算 unfinished |
|
|
|
!(isComplete || isRejected || isPartiallyComplete) |
|
|
|
} |
|
|
|
|
|
|
|
println("Unfinished lines: ${unfinishedLines.size}") |
|
|
|
@@ -1334,7 +1339,11 @@ open class PickOrderService( |
|
|
|
} |
|
|
|
|
|
|
|
println(" All pick orders in this do_pick_order are completed, moving to record table") |
|
|
|
|
|
|
|
val prefix = "DN" |
|
|
|
val midfix = CodeGenerator.DEFAULT_MIDFIX |
|
|
|
val latestCode = doPickOrderRecordRepository.findLatestDeliveryNoteCodeByPrefix("${prefix}-${midfix}") |
|
|
|
val deliveryNoteCode = CodeGenerator.generateNo(prefix = prefix, midfix = midfix, latestCode = latestCode) |
|
|
|
|
|
|
|
// 2) 先复制 do_pick_order -> do_pick_order_record |
|
|
|
val dpoRecord = DoPickOrderRecord( |
|
|
|
recordId =dpo.id, |
|
|
|
@@ -1350,6 +1359,7 @@ open class PickOrderService( |
|
|
|
doOrderId = dpo.doOrderId, |
|
|
|
pickOrderCode = dpo.pickOrderCode, |
|
|
|
deliveryOrderCode = dpo.deliveryOrderCode, |
|
|
|
deliveryNoteCode = deliveryNoteCode, |
|
|
|
loadingSequence = dpo.loadingSequence, |
|
|
|
ticketReleaseTime = dpo.ticketReleaseTime, |
|
|
|
ticketCompleteDateTime = java.time.LocalDateTime.now(), |
|
|
|
@@ -1365,7 +1375,7 @@ open class PickOrderService( |
|
|
|
val lineRecords = lines.map { l: DoPickOrderLine -> |
|
|
|
DoPickOrderLineRecord().apply { |
|
|
|
this.recordId=l.id |
|
|
|
this.doPickOrderId = savedHeader.id |
|
|
|
this.doPickOrderId = savedHeader.recordId |
|
|
|
this.pickOrderId = l.pickOrderId |
|
|
|
this.doOrderId = l.doOrderId |
|
|
|
this.pickOrderCode = l.pickOrderCode |
|
|
|
@@ -1483,9 +1493,18 @@ open class PickOrderService( |
|
|
|
} else { |
|
|
|
emptyList() |
|
|
|
} |
|
|
|
val unfinishedLines = stockOutLines.filter { |
|
|
|
it.status != StockOutLineStatus.COMPLETE.status |
|
|
|
&& it.status != StockOutLineStatus.REJECTED.status |
|
|
|
val unfinishedLines = stockOutLines.filter { sol -> |
|
|
|
val status = sol.status?.trim()?.lowercase() |
|
|
|
|
|
|
|
val isComplete = |
|
|
|
status == "completed" || status == StockOutLineStatus.COMPLETE.status.lowercase() |
|
|
|
val isRejected = |
|
|
|
status == "rejected" || status == StockOutLineStatus.REJECTED.status.lowercase() |
|
|
|
val isPartiallyComplete = |
|
|
|
status == "partially_completed" || status == StockOutLineStatus.PARTIALLY_COMPLETE.status.lowercase() |
|
|
|
|
|
|
|
// 只要是你认可的“结束态”,就不算 unfinished |
|
|
|
!(isComplete || isRejected || isPartiallyComplete) |
|
|
|
} |
|
|
|
|
|
|
|
println("📊 Stock out lines: ${stockOutLines.size}, Unfinished: ${unfinishedLines.size}") |
|
|
|
@@ -2403,9 +2422,20 @@ open class PickOrderService( |
|
|
|
emptyList() |
|
|
|
} |
|
|
|
|
|
|
|
val unfinishedLines = stockOutLines.filter { |
|
|
|
it.status != StockOutLineStatus.COMPLETE.status && it.status != StockOutLineStatus.REJECTED.status |
|
|
|
val unfinishedLines = stockOutLines.filter { sol -> |
|
|
|
val status = sol.status?.trim()?.lowercase() |
|
|
|
|
|
|
|
val isComplete = |
|
|
|
status == "completed" || status == StockOutLineStatus.COMPLETE.status.lowercase() |
|
|
|
val isRejected = |
|
|
|
status == "rejected" || status == StockOutLineStatus.REJECTED.status.lowercase() |
|
|
|
val isPartiallyComplete = |
|
|
|
status == "partially_completed" || status == StockOutLineStatus.PARTIALLY_COMPLETE.status.lowercase() |
|
|
|
|
|
|
|
// 只要是结束态,就不算 unfinished |
|
|
|
!(isComplete || isRejected || isPartiallyComplete) |
|
|
|
} |
|
|
|
println("📊 Stock out lines: ${stockOutLines.size}, Unfinished: ${unfinishedLines.size}") |
|
|
|
|
|
|
|
mapOf( |
|
|
|
"pickOrderId" to pickOrder.id, |
|
|
|
|