Browse Source

update

master
CANCERYS\kw093 3 weeks ago
parent
commit
4be7c97572
4 changed files with 30 additions and 4 deletions
  1. +1
    -0
      src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrderRepository.kt
  2. +6
    -2
      src/main/java/com/ffii/fpsms/modules/productProcess/entity/projections/ProductProcessInfo.kt
  3. +21
    -2
      src/main/java/com/ffii/fpsms/modules/productProcess/service/ProductProcessService.kt
  4. +2
    -0
      src/main/java/com/ffii/fpsms/modules/productProcess/web/model/SaveProductProcessRequest.kt

+ 1
- 0
src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrderRepository.kt View File

@@ -16,4 +16,5 @@ 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?
} }

+ 6
- 2
src/main/java/com/ffii/fpsms/modules/productProcess/entity/projections/ProductProcessInfo.kt View File

@@ -64,8 +64,10 @@ data class ProductProcessLineInfo(
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
val startTime: LocalDateTime?, val startTime: LocalDateTime?,
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
val endTime: LocalDateTime?
val endTime: LocalDateTime?,
) )


data class jobOrderLineInfo( data class jobOrderLineInfo(
val id: Long?, val id: Long?,
val itemId: Long?, val itemId: Long?,
@@ -75,5 +77,7 @@ data class jobOrderLineInfo(
val stockQty: Int?, val stockQty: Int?,
val uom: String?, val uom: String?,
val shortUom: String?, val shortUom: String?,
val availableStatus: String?
val availableStatus: String?,
val bomProcessId: Long?,
val bomProcessSeqNo: Long?
) )

+ 21
- 2
src/main/java/com/ffii/fpsms/modules/productProcess/service/ProductProcessService.kt View File

@@ -36,6 +36,8 @@ import com.ffii.fpsms.modules.stock.entity.enum.InventoryLotLineStatus
import com.ffii.fpsms.modules.jobOrder.enums.JobOrderStatus import com.ffii.fpsms.modules.jobOrder.enums.JobOrderStatus
import com.ffii.fpsms.modules.stock.service.StockInLineService import com.ffii.fpsms.modules.stock.service.StockInLineService
import com.ffii.fpsms.modules.stock.web.model.SaveStockInLineRequest import com.ffii.fpsms.modules.stock.web.model.SaveStockInLineRequest
import com.ffii.fpsms.modules.master.entity.BomProcessMaterialRepository
import com.ffii.fpsms.modules.master.entity.BomMaterialRepository
@Service @Service
@Transactional @Transactional
open class ProductProcessService( open class ProductProcessService(
@@ -53,6 +55,8 @@ open class ProductProcessService(
private val inventoryLotLineRepository: InventoryLotLineRepository, private val inventoryLotLineRepository: InventoryLotLineRepository,
private val productionScheduleLineRepository: ProductionScheduleLineRepository, private val productionScheduleLineRepository: ProductionScheduleLineRepository,
private val stockInLineService: StockInLineService, private val stockInLineService: StockInLineService,
private val bomProcessMaterialRepository: BomProcessMaterialRepository,
private val bomMaterialRepository: BomMaterialRepository,
) { ) {
open fun findAll(pageable: Pageable): Page<ProductProcess> { open fun findAll(pageable: Pageable): Page<ProductProcess> {
@@ -473,6 +477,7 @@ open class ProductProcessService(
val bomProcess = bomProcessRepository.findByBomId(jobOrder?.bom?.id?:0L) val bomProcess = bomProcessRepository.findByBomId(jobOrder?.bom?.id?:0L)
// get bom materials // get bom materials
val bomMaterials = jobOrderBomMaterialRepository.findAllByJobOrderId(jobOrder?.id?:0) val bomMaterials = jobOrderBomMaterialRepository.findAllByJobOrderId(jobOrder?.id?:0)
val bomProcessIds = bomProcess.mapNotNull { it.id }
val itemIds = bomMaterials.mapNotNull { it.item?.id } val itemIds = bomMaterials.mapNotNull { it.item?.id }
// calculate each item's available stock // calculate each item's available stock
@@ -591,6 +596,7 @@ open class ProductProcessService(
outputFromProcessUom = line.outputFromProcessUom?:"", outputFromProcessUom = line.outputFromProcessUom?:"",
startTime = line.startTime, startTime = line.startTime,
endTime = line.endTime endTime = line.endTime
) )
}, },
jobOrderLines = bomMaterials.map { line -> jobOrderLines = bomMaterials.map { line ->
@@ -598,7 +604,16 @@ open class ProductProcessService(
val stockQty = stockQtyMap[itemId]?.toInt() ?: 0 val stockQty = stockQtyMap[itemId]?.toInt() ?: 0
val uom = line.uom val uom = line.uom
val shortUom = uom?.udfShortDesc ?: uom?.udfudesc ?: "" val shortUom = uom?.udfShortDesc ?: uom?.udfudesc ?: ""
// 首先通过 bomId 和 itemId 找到 BomMaterial
val bomMaterial = bom?.id?.let { bomId ->
bomMaterialRepository.findByBomIdAndItemId(bomId, itemId)
}
// 然后遍历 bomProcessIds 找到第一个匹配的 BomProcessMaterial
val bomProcessMaterial = bomMaterial?.id?.let { bomMaterialId ->
bomProcessIds.firstNotNullOfOrNull { bomProcessId ->
bomProcessMaterialRepository.findByBomProcessIdAndBomMaterialId(bomProcessId, bomMaterialId)
}
}
// 计算 availableStatus // 计算 availableStatus
val availableStatus = if (stockQty >= (line.reqQty?.toInt() ?: 0)) { val availableStatus = if (stockQty >= (line.reqQty?.toInt() ?: 0)) {
"available" "available"
@@ -615,7 +630,9 @@ open class ProductProcessService(
stockQty = stockQty, stockQty = stockQty,
uom = uom?.udfudesc ?: "", uom = uom?.udfudesc ?: "",
shortUom = shortUom, shortUom = shortUom,
availableStatus = availableStatus
availableStatus = availableStatus,
bomProcessId = bomProcessMaterial?.bomProcess?.id?:0,
bomProcessSeqNo = bomProcessMaterial?.bomProcess?.seqNo?:0
) )
} }
) )
@@ -750,6 +767,7 @@ open class ProductProcessService(
operatorId = productProcessLine.operator?.id?:0, operatorId = productProcessLine.operator?.id?:0,
operatorName = productProcessLine.operator?.name?:"", operatorName = productProcessLine.operator?.name?:"",
handlerId = productProcessLine.handler?.id?:0, handlerId = productProcessLine.handler?.id?:0,
durationInMinutes = productProcessLine.bomProcess?.durationInMinute?:0,
seqNo = productProcessLine.seqNo?:0, seqNo = productProcessLine.seqNo?:0,
name = productProcessLine.name?:"", name = productProcessLine.name?:"",
description = productProcessLine.description?:"", description = productProcessLine.description?:"",
@@ -883,6 +901,7 @@ open fun updateProductProcessLineQty(request: UpdateProductProcessLineQtyRequest
status = productProcesses.status.value, status = productProcesses.status.value,
startTime = productProcesses.startTime, startTime = productProcesses.startTime,
endTime = productProcesses.endTime, endTime = productProcesses.endTime,
RequiredQty = jobOrder?.reqQty?.toInt() ?: 0,
date = productProcesses.date, date = productProcesses.date,
bomId = productProcesses.bom?.id, bomId = productProcesses.bom?.id,
itemName = productProcesses.item?.name, itemName = productProcesses.item?.name,


+ 2
- 0
src/main/java/com/ffii/fpsms/modules/productProcess/web/model/SaveProductProcessRequest.kt View File

@@ -114,6 +114,7 @@ data class JobOrderProcessLineDetailResponse(
val equipmentType: String?, val equipmentType: String?,
val operatorName: String?, val operatorName: String?,
val handlerId: Long?, val handlerId: Long?,
val durationInMinutes: Int?,
val seqNo: Long?, val seqNo: Long?,
val name: String?, val name: String?,
val description: String?, val description: String?,
@@ -143,6 +144,7 @@ data class AllJoborderProductProcessInfoResponse(
val date: LocalDate?, val date: LocalDate?,
val bomId: Long?, val bomId: Long?,
val itemName: String?, val itemName: String?,
val RequiredQty: Int?,
val jobOrderId: Long?, val jobOrderId: Long?,
val jobOrderCode: String?, val jobOrderCode: String?,
val productProcessLineCount: Int, val productProcessLineCount: Int,


Loading…
Cancel
Save