|
|
|
@@ -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<ProductProcess> { |
|
|
|
@@ -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, |
|
|
|
|