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 request: GetCompletedDoPickOrdersRequest
): List<CompletedDoPickOrderResponse> { ): List<CompletedDoPickOrderResponse> {
return try { 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()) { if (completedRecords.isEmpty()) {
return emptyList() return emptyList()
@@ -4563,11 +4573,12 @@ println("DEBUG sol polIds in linesResults: " + linesResults.mapNotNull { it["sto
val filteredRecords = completedRecords.filter { record -> val filteredRecords = completedRecords.filter { record ->
val lines = lineRecordsByRecordId[record.recordId] ?: emptyList() 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 } }.sortedByDescending { it.ticketCompleteDateTime }
if (filteredRecords.isEmpty()) { 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}") @GetMapping("/completed-do-pick-orders/{userId}")
fun getCompletedDoPickOrders( fun getCompletedDoPickOrders(
@PathVariable userId: Long, @PathVariable userId: Long,
@RequestParam(required = false) pickOrderCode: String?,
@RequestParam(required = false) shopName: 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> { ): List<CompletedDoPickOrderResponse> {
val request = GetCompletedDoPickOrdersRequest( val request = GetCompletedDoPickOrdersRequest(
pickOrderCode = pickOrderCode,
targetDate = targetDate,
shopName = shopName, shopName = shopName,
deliveryNo = deliveryNo,
ticketNo = ticketNo
deliveryNoteCode = deliveryNoteCode
) )
return pickOrderService.getCompletedDoPickOrders(userId, request) 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?, val pageNum: Int?,
) )
data class GetCompletedDoPickOrdersRequest( data class GetCompletedDoPickOrdersRequest(
val pickOrderCode: String? = null,
val targetDate: String? = null,
val shopName: String? = null, val shopName: String? = null,
val deliveryNo: String? = null,
val ticketNo: String? = null
val deliveryNoteCode: String? = null,
) )
data class CompletedDoPickOrderResponse( data class CompletedDoPickOrderResponse(
val id: Long, 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?, val endTime: LocalDateTime?,
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
val date: LocalDate?, val date: LocalDate?,
val bomId: Long?, val bomId: Long?,
val jobOrderId: 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>? 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> { open fun productProcessDetailfindbyjoid(joid: Long): List<ProductProcessInfo> {
val productProcesses = productProcessRepository.findByJobOrder_Id(joid) 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 //val processId = productProcess.id ?: 0
return productProcesses.map { process -> return productProcesses.map { process ->
ProductProcessInfo( ProductProcessInfo(
id = process.id?:0, id = process.id?:0,
bomId = process.bom?.id?:0, bomId = process.bom?.id?:0,
jobOrderId = process.jobOrder?.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?:"", productProcessCode = process.productProcessCode?:"",
status = process.status?:ProductProcessStatus.PENDING, status = process.status?:ProductProcessStatus.PENDING,
startTime = process.startTime?:LocalDateTime.now(), startTime = process.startTime?:LocalDateTime.now(),
@@ -494,6 +516,7 @@ open class ProductProcessService(
) )
} }
} }
/*
open fun productProcessDetailfindbyidtest(id: Long): ProductProcessInfo { open fun productProcessDetailfindbyidtest(id: Long): ProductProcessInfo {
val zero = BigDecimal.ZERO val zero = BigDecimal.ZERO
val productProcess = productProcessRepository.findById(id).orElse(null) val productProcess = productProcessRepository.findById(id).orElse(null)
@@ -536,6 +559,7 @@ open class ProductProcessService(
} }
) )
} }
*/
open fun createProductProcessByJobOrderId(jobOrderId: Long): MessageResponse { open fun createProductProcessByJobOrderId(jobOrderId: Long): MessageResponse {
val jobOrder = jobOrderRepository.findById(jobOrderId).orElse(null) val jobOrder = jobOrderRepository.findById(jobOrderId).orElse(null)
val bom = bomRepository.findById(jobOrder?.bom?.id ?: 0L).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 user = userRepository.findById(request.operatorId?:0L).orElse(null)
val bomProcess= bomProcessRepository.findById(productProcessLine?.bomProcess?.id?:0L).orElse(null) val bomProcess= bomProcessRepository.findById(productProcessLine?.bomProcess?.id?:0L).orElse(null)
val bomProcessEquipment=bomProcess?.equipment 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)) { if(equipmentId != null &&( equipmentId==bomProcessEquipment?.id)) {


productProcessLine?.equipment = bomProcessEquipment productProcessLine?.equipment = bomProcessEquipment
@@ -599,6 +643,7 @@ open class ProductProcessService(
println("user ${user?.id}") println("user ${user?.id}")
println("bomProcess ${bomProcess?.id}") println("bomProcess ${bomProcess?.id}")
println("not match equipment id${equipmentId} and ${bomProcessEquipment?.id}") println("not match equipment id${equipmentId} and ${bomProcessEquipment?.id}")
} }
if(user != null) { if(user != null) {
productProcessLine.operator = user productProcessLine.operator = user
@@ -646,8 +691,8 @@ open class ProductProcessService(
seqNo = productProcessLine.seqNo?:0, seqNo = productProcessLine.seqNo?:0,
name = productProcessLine.name?:"", name = productProcessLine.name?:"",
description = productProcessLine.description?:"", description = productProcessLine.description?:"",
equipmentType = productProcessLine.equipmentType?:"",
equipment = productProcessLine.equipment?.name?:"",
equipmentType = productProcessLine.equipmentType,
equipmentId = productProcessLine.equipment?.id?:0,
startTime = productProcessLine.startTime?:LocalDateTime.now(), startTime = productProcessLine.startTime?:LocalDateTime.now(),
endTime = productProcessLine.endTime?:LocalDateTime.now(), endTime = productProcessLine.endTime?:LocalDateTime.now(),
status = productProcessLine.status?:"", 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 // 修复:返回正确的 DTO
return productProcessService.getLinesAsDto(entity.productProcess?.id!!).find { it.id == entity.id!! }!! return productProcessService.getLinesAsDto(entity.productProcess?.id!!).find { it.id == entity.id!! }!!
} }
/*
@GetMapping("/demo/{id}") @GetMapping("/demo/{id}")
fun demo(@PathVariable id: Long): ProductProcessInfo { fun demo(@PathVariable id: Long): ProductProcessInfo {
return productProcessService.productProcessDetailfindbyidtest(id) return productProcessService.productProcessDetailfindbyidtest(id)
} }
*/
@GetMapping("/demo/joid/{joid}") @GetMapping("/demo/joid/{joid}")
fun demojoid(@PathVariable joid: Long): List<ProductProcessInfo> { fun demojoid(@PathVariable joid: Long): List<ProductProcessInfo> {
return productProcessService.productProcessDetailfindbyjoid(joid) 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 seqNo: Long?,
val name: String?, val name: String?,
val description: String?, val description: String?,
val equipment: String?,
val equipmentId: Long?,
val startTime: LocalDateTime?, val startTime: LocalDateTime?,
val endTime: LocalDateTime?, val endTime: LocalDateTime?,




Loading…
Cancel
Save