Browse Source

update

master
CANCERYS\kw093 1 month ago
parent
commit
1e0f0341a3
7 changed files with 91 additions and 28 deletions
  1. +26
    -15
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt
  2. +4
    -6
      src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickOrderController.kt
  3. +2
    -3
      src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/SearchPickOrderRequest.kt
  4. +9
    -0
      src/main/java/com/ffii/fpsms/modules/productProcess/entity/projections/ProductProcessInfo.kt
  5. +47
    -2
      src/main/java/com/ffii/fpsms/modules/productProcess/service/ProductProcessService.kt
  6. +2
    -1
      src/main/java/com/ffii/fpsms/modules/productProcess/web/ProductProcessController.kt
  7. +1
    -1
      src/main/java/com/ffii/fpsms/modules/productProcess/web/model/SaveProductProcessRequest.kt

+ 26
- 15
src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt View File

@@ -4542,16 +4542,26 @@ println("DEBUG sol polIds in linesResults: " + linesResults.mapNotNull { it["sto
request: GetCompletedDoPickOrdersRequest
): List<CompletedDoPickOrderResponse> {
return try {
val completedRecords = doPickOrderRecordRepository
.findByHandledByAndTicketStatusAndDeletedFalse(userId, DoPickOrderStatus.completed)
.filter { record ->
val matchTicket = request.ticketNo.isNullOrBlank() ||
record.ticketNo?.contains(request.ticketNo, ignoreCase = true) == true
val matchShop = request.shopName.isNullOrBlank() ||
record.shopName?.contains(request.shopName, ignoreCase = true) == true
matchTicket && matchShop
}
.filter { (it.recordId ?: 0L) > 0 }
val normalizedTargetDate = request.targetDate
?.takeIf { it.isNotBlank() }
?.replace("-", "")
println("request.targetDate: $request.targetDate")
println("request.shopName: $request.shopName")
println("request.deliveryNoteCode: $request.deliveryNoteCode")
val completedRecords = doPickOrderRecordRepository
.findByHandledByAndTicketStatusAndDeletedFalse(userId, DoPickOrderStatus.completed)
.filter { record ->
val matchTargetDate = normalizedTargetDate.isNullOrBlank() ||
record.ticketCompleteDateTime
?.format(DateTimeFormatter.ofPattern("yyyyMMdd"))
?.contains(normalizedTargetDate, ignoreCase = true) == true
val matchShop = request.shopName.isNullOrBlank() ||
record.shopName?.contains(request.shopName, ignoreCase = true) == true
val matchDeliveryNoteCode = request.deliveryNoteCode.isNullOrBlank() ||
record.deliveryNoteCode?.contains(request.deliveryNoteCode, ignoreCase = true) == true
matchTargetDate && matchShop && matchDeliveryNoteCode
}
.filter { (it.recordId ?: 0L) > 0 }
if (completedRecords.isEmpty()) {
return emptyList()
@@ -4563,11 +4573,12 @@ println("DEBUG sol polIds in linesResults: " + linesResults.mapNotNull { it["sto
val filteredRecords = completedRecords.filter { record ->
val lines = lineRecordsByRecordId[record.recordId] ?: emptyList()
val matchPo = request.pickOrderCode.isNullOrBlank() ||
lines.any { it.pickOrderCode?.contains(request.pickOrderCode, ignoreCase = true) == true }
val matchDelivery = request.deliveryNo.isNullOrBlank() ||
lines.any { it.deliveryOrderCode?.contains(request.deliveryNo, ignoreCase = true) == true }
matchPo && matchDelivery
val matchTargetDate = normalizedTargetDate.isNullOrBlank() ||
record.ticketCompleteDateTime
?.format(DateTimeFormatter.ofPattern("yyyyMMdd"))
?.contains(normalizedTargetDate, ignoreCase = true) == true
matchTargetDate
}.sortedByDescending { it.ticketCompleteDateTime }
if (filteredRecords.isEmpty()) {


+ 4
- 6
src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickOrderController.kt View File

@@ -296,16 +296,14 @@ fun confirmLotSubstitution(@RequestBody req: LotSubstitutionConfirmRequest): Mes
@GetMapping("/completed-do-pick-orders/{userId}")
fun getCompletedDoPickOrders(
@PathVariable userId: Long,
@RequestParam(required = false) pickOrderCode: String?,
@RequestParam(required = false) shopName: String?,
@RequestParam(required = false) deliveryNo: String?,
@RequestParam(required = false) ticketNo: String?
@RequestParam(required = false) targetDate: String?,
@RequestParam(required = false) deliveryNoteCode: String?,
): List<CompletedDoPickOrderResponse> {
val request = GetCompletedDoPickOrdersRequest(
pickOrderCode = pickOrderCode,
targetDate = targetDate,
shopName = shopName,
deliveryNo = deliveryNo,
ticketNo = ticketNo
deliveryNoteCode = deliveryNoteCode
)
return pickOrderService.getCompletedDoPickOrders(userId, request)
}


+ 2
- 3
src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/SearchPickOrderRequest.kt View File

@@ -16,10 +16,9 @@ data class SearchPickOrderRequest (
val pageNum: Int?,
)
data class GetCompletedDoPickOrdersRequest(
val pickOrderCode: String? = null,
val targetDate: String? = null,
val shopName: String? = null,
val deliveryNo: String? = null,
val ticketNo: String? = null
val deliveryNoteCode: String? = null,
)
data class CompletedDoPickOrderResponse(
val id: Long,


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

@@ -16,8 +16,17 @@ data class ProductProcessInfo(
val endTime: LocalDateTime?,
@JsonFormat(pattern = "yyyy-MM-dd")
val date: LocalDate?,
val bomId: Long?,
val jobOrderId: Long?,
val jobOrderCode: String?,
val isDark: String?,
val isDense: Int?,
val isFloat: String?,
val outputQtyUom: String?,
val outputQty: Int?,

val productProcessLines: List<ProductProcessLineInfo>?
)



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

@@ -455,12 +455,34 @@ open class ProductProcessService(
open fun productProcessDetailfindbyjoid(joid: Long): List<ProductProcessInfo> {
val productProcesses = productProcessRepository.findByJobOrder_Id(joid)
val jobOrder = jobOrderRepository.findById(joid).orElse(null)
val bom = bomRepository.findById(jobOrder?.bom?.id?:0L).orElse(null)
fun calculateColourScore(value: Int?): String {
return when (value) {
0 -> "淺"
1 -> "深"
else -> ""
}
}
fun calculateFloatScore(value: Int?): String {
return when (value) {
0 -> "沉"
1 -> "浮"
else -> ""
}
}
//val processId = productProcess.id ?: 0
return productProcesses.map { process ->
ProductProcessInfo(
id = process.id?:0,
bomId = process.bom?.id?:0,
jobOrderId = process.jobOrder?.id?:0,
jobOrderCode = jobOrder?.code?:"",
isDark = calculateColourScore(bom?.isDark?:0),
isDense = bom?.isDense?:0,
isFloat = calculateFloatScore(bom?.isFloat?:0),
outputQtyUom = bom?.outputQtyUom?:"",
outputQty = bom?.outputQty?.toInt()?:0,
productProcessCode = process.productProcessCode?:"",
status = process.status?:ProductProcessStatus.PENDING,
startTime = process.startTime?:LocalDateTime.now(),
@@ -494,6 +516,7 @@ open class ProductProcessService(
)
}
}
/*
open fun productProcessDetailfindbyidtest(id: Long): ProductProcessInfo {
val zero = BigDecimal.ZERO
val productProcess = productProcessRepository.findById(id).orElse(null)
@@ -536,6 +559,7 @@ open class ProductProcessService(
}
)
}
*/
open fun createProductProcessByJobOrderId(jobOrderId: Long): MessageResponse {
val jobOrder = jobOrderRepository.findById(jobOrderId).orElse(null)
val bom = bomRepository.findById(jobOrder?.bom?.id ?: 0L).orElse(null)
@@ -587,6 +611,26 @@ open class ProductProcessService(
val user = userRepository.findById(request.operatorId?:0L).orElse(null)
val bomProcess= bomProcessRepository.findById(productProcessLine?.bomProcess?.id?:0L).orElse(null)
val bomProcessEquipment=bomProcess?.equipment
if (equipmentId != null && user != null) {
// 检查 equipmentId 是否与 bomProcessEquipment 匹配
if (equipmentId != bomProcessEquipment?.id) {
println("productProcessLine id${request.productProcessLineId}")
println("operator id${request.operatorId}")
println("user ${user?.id}")
println("bomProcess ${bomProcess?.id}")
println("not match equipment id${equipmentId} and ${bomProcessEquipment?.id}")
// 返回错误响应
return MessageResponse(
id = request.productProcessLineId,
code = "400",
name = "Equipment Validation Failed",
type = "error",
message = "Input Equipment ID($equipmentId) and BOM Process Equipment ID(${bomProcessEquipment?.id}) not match",
errorPosition = "equipmentId"
)
}
}
if(equipmentId != null &&( equipmentId==bomProcessEquipment?.id)) {

productProcessLine?.equipment = bomProcessEquipment
@@ -599,6 +643,7 @@ open class ProductProcessService(
println("user ${user?.id}")
println("bomProcess ${bomProcess?.id}")
println("not match equipment id${equipmentId} and ${bomProcessEquipment?.id}")
}
if(user != null) {
productProcessLine.operator = user
@@ -646,8 +691,8 @@ open class ProductProcessService(
seqNo = productProcessLine.seqNo?:0,
name = productProcessLine.name?:"",
description = productProcessLine.description?:"",
equipmentType = productProcessLine.equipmentType?:"",
equipment = productProcessLine.equipment?.name?:"",
equipmentType = productProcessLine.equipmentType,
equipmentId = productProcessLine.equipment?.id?:0,
startTime = productProcessLine.startTime?:LocalDateTime.now(),
endTime = productProcessLine.endTime?:LocalDateTime.now(),
status = productProcessLine.status?:"",


+ 2
- 1
src/main/java/com/ffii/fpsms/modules/productProcess/web/ProductProcessController.kt View File

@@ -150,11 +150,12 @@ class ProductProcessController(
// 修复:返回正确的 DTO
return productProcessService.getLinesAsDto(entity.productProcess?.id!!).find { it.id == entity.id!! }!!
}
/*
@GetMapping("/demo/{id}")
fun demo(@PathVariable id: Long): ProductProcessInfo {
return productProcessService.productProcessDetailfindbyidtest(id)
}
*/
@GetMapping("/demo/joid/{joid}")
fun demojoid(@PathVariable joid: Long): List<ProductProcessInfo> {
return productProcessService.productProcessDetailfindbyjoid(joid)


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

@@ -117,7 +117,7 @@ data class JobOrderProcessLineDetailResponse(
val seqNo: Long?,
val name: String?,
val description: String?,
val equipment: String?,
val equipmentId: Long?,
val startTime: LocalDateTime?,
val endTime: LocalDateTime?,



Loading…
Cancel
Save