| Autor | SHA1 | Zpráva | Datum |
|---|---|---|---|
|
|
2166741c48 | Merge remote-tracking branch 'origin/master' | před 1 týdnem |
|
|
4dfba0464c | update | před 1 týdnem |
|
|
a87edc50cb | update | před 1 týdnem |
| @@ -16,5 +16,6 @@ interface JoPickOrderRepository : JpaRepository<JoPickOrder, Long> { | |||||
| fun findByPickOrderId(pickOrderId: Long): List<JoPickOrder> | fun findByPickOrderId(pickOrderId: Long): List<JoPickOrder> | ||||
| fun findByPickOrderIdAndItemId(pickOrderId: Long, itemId: Long): java.util.Optional<JoPickOrder> | fun findByPickOrderIdAndItemId(pickOrderId: Long, itemId: Long): java.util.Optional<JoPickOrder> | ||||
| fun findByJobOrderId(jobOrderId: Long): JoPickOrder? | |||||
| fun findByJobOrderId(jobOrderId: Long): List<JoPickOrder>? | |||||
| } | } | ||||
| @@ -77,15 +77,17 @@ open class JoPickOrderService( | |||||
| } | } | ||||
| // Update JoPickOrder status to released | // Update JoPickOrder status to released | ||||
| open fun updateHandledByForPickOrder(pickOrderId: Long, userId: Long?): List<JoPickOrder> { | |||||
| open fun updateHandledByForPickOrder(pickOrderId: Long, userId: Long?, matchStatus: String?): List<JoPickOrder> { | |||||
| val joPickOrders = joPickOrderRepository.findByPickOrderId(pickOrderId) | val joPickOrders = joPickOrderRepository.findByPickOrderId(pickOrderId) | ||||
| // Get pick order details to populate new fields | // Get pick order details to populate new fields | ||||
| val pickOrder = pickOrderRepository.findById(pickOrderId).orElse(null) | val pickOrder = pickOrderRepository.findById(pickOrderId).orElse(null) | ||||
| joPickOrders.forEach { | joPickOrders.forEach { | ||||
| it.handledBy = userId | 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) | // Set ticket release time (similar to pick order released date) | ||||
| it.ticketReleaseTime = LocalDateTime.now() | it.ticketReleaseTime = LocalDateTime.now() | ||||
| @@ -113,8 +115,8 @@ open class JoPickOrderService( | |||||
| // Update JoPickOrderRecord status to released | // Update JoPickOrderRecord status to released | ||||
| open fun updateRecordHandledByForPickOrder(pickOrderId: Long, userId: Long?): List<JoPickOrderRecord> { | open fun updateRecordHandledByForPickOrder(pickOrderId: Long, userId: Long?): List<JoPickOrderRecord> { | ||||
| val joPickOrderRecords = joPickOrderRecordRepository.findByPickOrderId(pickOrderId) | 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) | val pickOrder = pickOrderRepository.findById(pickOrderId).orElse(null) | ||||
| joPickOrderRecords.forEach { | joPickOrderRecords.forEach { | ||||
| @@ -934,7 +936,7 @@ open fun assignJobOrderPickOrderToUser(pickOrderId: Long, userId: Long): Message | |||||
| pickOrderRepository.save(pickOrder) | pickOrderRepository.save(pickOrder) | ||||
| // 修复:使用 this 而不是 joPickOrderService | // 修复:使用 this 而不是 joPickOrderService | ||||
| this.updateHandledByForPickOrder(pickOrderId, userId) | |||||
| this.updateHandledByForPickOrder(pickOrderId, userId, null) | |||||
| this.updateRecordHandledByForPickOrder(pickOrderId, userId) | this.updateRecordHandledByForPickOrder(pickOrderId, userId) | ||||
| MessageResponse( | MessageResponse( | ||||
| id = pickOrder.id, | id = pickOrder.id, | ||||
| @@ -975,7 +977,7 @@ open fun assignJobOrderPickOrderToUser(pickOrderId: Long, userId: Long): Message | |||||
| } | } | ||||
| pickOrder.assignTo = null | pickOrder.assignTo = null | ||||
| pickOrderRepository.save(pickOrder) | pickOrderRepository.save(pickOrder) | ||||
| this.updateHandledByForPickOrder(pickOrderId, null) | |||||
| this.updateHandledByForPickOrder(pickOrderId, null,null) | |||||
| this.updateRecordHandledByForPickOrder(pickOrderId, null) | this.updateRecordHandledByForPickOrder(pickOrderId, null) | ||||
| MessageResponse( | MessageResponse( | ||||
| id = pickOrder.id, | id = pickOrder.id, | ||||
| @@ -27,6 +27,7 @@ data class ProductProcessInfo( | |||||
| val isDense: Int?, | val isDense: Int?, | ||||
| val isFloat: String?, | val isFloat: String?, | ||||
| val scrapRate: Int?, | val scrapRate: Int?, | ||||
| //val matchStatus: String?, | |||||
| val allergicSubstance: String?, | val allergicSubstance: String?, | ||||
| val itemId: Long?, | val itemId: Long?, | ||||
| val itemCode: String?, | val itemCode: String?, | ||||
| @@ -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.jobOrder.entity.JobTypeRepository | ||||
| import com.ffii.fpsms.modules.pickOrder.entity.PickOrderRepository | import com.ffii.fpsms.modules.pickOrder.entity.PickOrderRepository | ||||
| import java.time.ZoneOffset | import java.time.ZoneOffset | ||||
| import com.ffii.fpsms.modules.jobOrder.entity.JoPickOrderRepository | |||||
| @Service | @Service | ||||
| @Transactional | @Transactional | ||||
| open class ProductProcessService( | open class ProductProcessService( | ||||
| @@ -66,6 +67,7 @@ open class ProductProcessService( | |||||
| private val equipmentDetailRepository: EquipmentDetailRepository, | private val equipmentDetailRepository: EquipmentDetailRepository, | ||||
| private val jobTypeRepository: JobTypeRepository, | private val jobTypeRepository: JobTypeRepository, | ||||
| private val pickOrderRepository: PickOrderRepository, | private val pickOrderRepository: PickOrderRepository, | ||||
| private val joPickOrderRepository: JoPickOrderRepository, | |||||
| ) { | ) { | ||||
| open fun findAll(pageable: Pageable): Page<ProductProcess> { | open fun findAll(pageable: Pageable): Page<ProductProcess> { | ||||
| @@ -530,29 +532,7 @@ open class ProductProcessService( | |||||
| val itemId = jobOrder?.bom?.item?.id | val itemId = jobOrder?.bom?.item?.id | ||||
| val planEndDate = jobOrder?.planEnd?.toLocalDate() | 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 { | fun calculateColourScore(value: Int?): String { | ||||
| return when (value) { | return when (value) { | ||||
| 0 -> "淺" | 0 -> "淺" | ||||
| @@ -578,6 +558,8 @@ open class ProductProcessService( | |||||
| return productProcesses.map { process -> | return productProcesses.map { process -> | ||||
| val jobType = jobTypeRepository.findById(process.jobOrder?.jobTypeId?:0L).orElse(null) | val jobType = jobTypeRepository.findById(process.jobOrder?.jobTypeId?:0L).orElse(null) | ||||
| //val joPickOrders = joPickOrderRepository.findByJobOrderId(process.jobOrder?.id?:0L) | |||||
| println("jobType id ${process.jobOrder?.jobTypeId}") | println("jobType id ${process.jobOrder?.jobTypeId}") | ||||
| ProductProcessInfo( | ProductProcessInfo( | ||||
| @@ -598,6 +580,7 @@ open class ProductProcessService( | |||||
| scrapRate = bom?.scrapRate?:-1, | scrapRate = bom?.scrapRate?:-1, | ||||
| allergicSubstance = calculateAllergicSubstanceScore(bom?.allergicSubstances), | allergicSubstance = calculateAllergicSubstanceScore(bom?.allergicSubstances), | ||||
| outputQtyUom = bom?.outputQtyUom?:"", | outputQtyUom = bom?.outputQtyUom?:"", | ||||
| //matchStatus = joPickOrders?.matchStatus?.value?:"", | |||||
| //outputQty = bom?.outputQty?.toInt()?:0, | //outputQty = bom?.outputQty?.toInt()?:0, | ||||
| outputQty = jobOrder?.reqQty?.toInt()?:0, | outputQty = jobOrder?.reqQty?.toInt()?:0, | ||||
| productProcessCode = process.productProcessCode?:"", | productProcessCode = process.productProcessCode?:"", | ||||
| @@ -1098,6 +1081,7 @@ open class ProductProcessService( | |||||
| val stockInLine = jobOrder?.stockInLines?.firstOrNull() | val stockInLine = jobOrder?.stockInLines?.firstOrNull() | ||||
| val stockInLineId = stockInLine?.id | val stockInLineId = stockInLine?.id | ||||
| val pickOrder = pickOrderRepository.findAllByJobOrder_Id(jobOrder?.id?:0L).firstOrNull() | 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 | //val silHandlerId = stockInLine?.escalationLog?.firstOrNull { it.status == "pending" }?.handler?.id | ||||
| @@ -1107,6 +1091,7 @@ open class ProductProcessService( | |||||
| status = productProcesses.status.value, | status = productProcesses.status.value, | ||||
| startTime = productProcesses.startTime, | startTime = productProcesses.startTime, | ||||
| endTime = productProcesses.endTime, | endTime = productProcesses.endTime, | ||||
| matchStatus = joPickOrders?.matchStatus?.value?:"", | |||||
| RequiredQty = jobOrder?.reqQty?.toInt() ?: 0, | RequiredQty = jobOrder?.reqQty?.toInt() ?: 0, | ||||
| date = productProcesses.date, | date = productProcesses.date, | ||||
| bomId = productProcesses.bom?.id, | bomId = productProcesses.bom?.id, | ||||
| @@ -163,6 +163,7 @@ data class AllJoborderProductProcessInfoResponse( | |||||
| val date: LocalDate?, | val date: LocalDate?, | ||||
| val bomId: Long?, | val bomId: Long?, | ||||
| val itemName: String?, | val itemName: String?, | ||||
| val matchStatus: String?, | |||||
| val RequiredQty: Int?, | val RequiredQty: Int?, | ||||
| val jobOrderId: Long?, | val jobOrderId: Long?, | ||||
| val jobOrderCode: String?, | val jobOrderCode: String?, | ||||
| @@ -1,5 +1,5 @@ | |||||
| spring: | spring: | ||||
| datasource: | datasource: | ||||
| jdbc-url: jdbc:mysql://127.0.0.1:3306/fpsmsdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2B8 | |||||
| jdbc-url: jdbc:mysql://127.0.0.1:3308/fpsmsdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2B8 | |||||
| username: root | username: root | ||||
| password: secret | password: secret | ||||