瀏覽代碼

update

master
CANCERYS\kw093 3 月之前
父節點
當前提交
34b6e91bed
共有 5 個文件被更改,包括 118 次插入5 次删除
  1. +77
    -3
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DeliveryOrderService.kt
  2. +9
    -2
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/DeliveryOrderController.kt
  3. +26
    -0
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/models/DoDetailResponse.kt
  4. +5
    -0
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/models/ReleaseDoRequest.kt
  5. +1
    -0
      src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/SavePickOrderRequest.kt

+ 77
- 3
src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DeliveryOrderService.kt 查看文件

@@ -18,7 +18,16 @@ import org.springframework.transaction.annotation.Transactional
import java.io.IOException
import kotlin.jvm.optionals.getOrDefault
import kotlin.jvm.optionals.getOrNull

import com.ffii.fpsms.modules.deliveryOrder.web.models.DoDetailResponse
import com.ffii.fpsms.modules.deliveryOrder.web.models.DoDetailLineResponse
import com.ffii.fpsms.modules.deliveryOrder.web.models.ReleaseDoRequest
import com.ffii.fpsms.modules.pickOrder.web.models.SavePickOrderRequest
import com.ffii.fpsms.modules.pickOrder.web.models.SavePickOrderLineRequest
import com.ffii.fpsms.modules.pickOrder.enums.PickOrderType
import com.ffii.fpsms.modules.pickOrder.service.PickOrderService
import java.time.LocalDate
import java.math.BigDecimal
import com.ffii.fpsms.modules.master.web.models.MessageResponse
@Service
open class DeliveryOrderService(
private val deliveryOrderRepository: DeliveryOrderRepository,
@@ -28,6 +37,7 @@ open class DeliveryOrderService(
private val m18DataLogRepository: M18DataLogRepository,
private val userService: UserService,
private val userRepository: UserRepository,
private val pickOrderService: PickOrderService
) {

open fun findByM18DataLogId(m18DataLogId: Long): DeliveryOrder? {
@@ -37,11 +47,37 @@ open class DeliveryOrderService(
open fun getDoList() : List<DeliveryOrderInfo> {
return deliveryOrderRepository.findDeliveryOrderInfoByDeletedIsFalse();
}
/*
open fun getDetailedDo(id: Long) : DeliveryOrder? {
return deliveryOrderRepository.findByIdAndDeletedIsFalse(id);
}

*/
open fun getDetailedDo(id: Long): DoDetailResponse? {
val deliveryOrder = deliveryOrderRepository.findByIdAndDeletedIsFalse(id) ?: return null
return DoDetailResponse(
id = deliveryOrder.id!!,
code = deliveryOrder.code ?: "",
supplierCode = deliveryOrder.supplier?.code,
shopCode = deliveryOrder.shop?.code,
currencyCode = deliveryOrder.currency?.code,
orderDate = deliveryOrder.orderDate,
estimatedArrivalDate = deliveryOrder.estimatedArrivalDate,
completeDate = deliveryOrder.completeDate,
status = deliveryOrder.status?.value,
deliveryOrderLines = deliveryOrder.deliveryOrderLines.map { line ->
DoDetailLineResponse(
id = line.id!!,
itemNo = line.itemNo,
qty = line.qty,
price = line.price,
status = line.status?.value,
itemName = line.item?.name,
uomCode = line.uom?.code
)
}
)
}
open fun searchByCode(code: String) : List<DeliveryOrderInfo> {
return deliveryOrderRepository.findAllByCodeAndDeletedIsFalse(code);
}
@@ -123,4 +159,42 @@ open class DeliveryOrderService(

return savedDeliveryOrder
}


@Transactional(rollbackFor = [Exception::class])
open fun releaseDeliveryOrder(request: ReleaseDoRequest): MessageResponse {
val deliveryOrder = deliveryOrderRepository.findByIdAndDeletedIsFalse(request.id)
?: throw NoSuchElementException("Delivery Order not found")
deliveryOrder.apply {
status = DeliveryOrderStatus.PENDING
}
deliveryOrderRepository.save(deliveryOrder)

val pols = deliveryOrder.deliveryOrderLines.map {
SavePickOrderLineRequest(
itemId = it.item?.id,
qty = it.qty ?: BigDecimal.ZERO,
uomId = it.uom?.id,
)
}
val po = SavePickOrderRequest(
doId = deliveryOrder.id, // Set doId instead of joId
type = PickOrderType.DELIVERY_ORDER, // You might need to add this enum value
targetDate = deliveryOrder.estimatedArrivalDate?.toLocalDate() ?: LocalDate.now(),
pickOrderLine = pols
)

pickOrderService.create(po)

return MessageResponse(
id = deliveryOrder.id,
code = deliveryOrder.code,
name = deliveryOrder.shop?.name,
type = null,
message = null,
errorPosition = null,
entity = mapOf("status" to deliveryOrder.status?.value)
)
}
}

+ 9
- 2
src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/DeliveryOrderController.kt 查看文件

@@ -14,7 +14,10 @@ import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController

import com.ffii.fpsms.modules.deliveryOrder.web.models.DoDetailResponse
import com.ffii.fpsms.modules.deliveryOrder.web.models.ReleaseDoRequest
import com.ffii.fpsms.modules.master.web.models.MessageResponse
import jakarta.validation.Valid
@RequestMapping("/do")
@RestController
class DeliveryOrderController(
@@ -26,7 +29,7 @@ class DeliveryOrderController(
}

@GetMapping("/detail/{id}")
fun getDetailedDo(@PathVariable id: Long): DeliveryOrder? {
fun getDetailedDo(@PathVariable id: Long): DoDetailResponse? {
return deliveryOrderService.getDetailedDo(id);
}

@@ -48,4 +51,8 @@ class DeliveryOrderController(
)
return deliveryOrderService.updateDeliveryOrderStatus(request);
}
@PostMapping("/release")
fun releaseDeliveryOrder(@Valid @RequestBody request: ReleaseDoRequest): MessageResponse {
return deliveryOrderService.releaseDeliveryOrder(request)
}
}

+ 26
- 0
src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/models/DoDetailResponse.kt 查看文件

@@ -0,0 +1,26 @@
package com.ffii.fpsms.modules.deliveryOrder.web.models

import java.time.LocalDateTime

data class DoDetailResponse(
val id: Long,
val code: String,
val supplierCode: String?,
val shopCode: String?,
val currencyCode: String?,
val orderDate: LocalDateTime?,
val estimatedArrivalDate: LocalDateTime?,
val completeDate: LocalDateTime?,
val status: String?,
val deliveryOrderLines: List<DoDetailLineResponse>
)

data class DoDetailLineResponse(
val id: Long,
val itemNo: String?,
val qty: java.math.BigDecimal?,
val price: java.math.BigDecimal?,
val status: String?,
val itemName: String?,
val uomCode: String?
)

+ 5
- 0
src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/models/ReleaseDoRequest.kt 查看文件

@@ -0,0 +1,5 @@
package com.ffii.fpsms.modules.deliveryOrder.web.models

data class ReleaseDoRequest(
val id: Long
)

+ 1
- 0
src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/SavePickOrderRequest.kt 查看文件

@@ -14,6 +14,7 @@ data class SavePickOrderLineRequest (
)
data class SavePickOrderRequest (
val joId: Long? = null,
val doId: Long? = null,
val type: PickOrderType,
var targetDate: LocalDate,
val pickOrderLine: List<SavePickOrderLineRequest>


Loading…
取消
儲存