|
|
@@ -18,7 +18,16 @@ import org.springframework.transaction.annotation.Transactional |
|
|
import java.io.IOException |
|
|
import java.io.IOException |
|
|
import kotlin.jvm.optionals.getOrDefault |
|
|
import kotlin.jvm.optionals.getOrDefault |
|
|
import kotlin.jvm.optionals.getOrNull |
|
|
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 |
|
|
@Service |
|
|
open class DeliveryOrderService( |
|
|
open class DeliveryOrderService( |
|
|
private val deliveryOrderRepository: DeliveryOrderRepository, |
|
|
private val deliveryOrderRepository: DeliveryOrderRepository, |
|
|
@@ -28,6 +37,7 @@ open class DeliveryOrderService( |
|
|
private val m18DataLogRepository: M18DataLogRepository, |
|
|
private val m18DataLogRepository: M18DataLogRepository, |
|
|
private val userService: UserService, |
|
|
private val userService: UserService, |
|
|
private val userRepository: UserRepository, |
|
|
private val userRepository: UserRepository, |
|
|
|
|
|
private val pickOrderService: PickOrderService |
|
|
) { |
|
|
) { |
|
|
|
|
|
|
|
|
open fun findByM18DataLogId(m18DataLogId: Long): DeliveryOrder? { |
|
|
open fun findByM18DataLogId(m18DataLogId: Long): DeliveryOrder? { |
|
|
@@ -37,11 +47,37 @@ open class DeliveryOrderService( |
|
|
open fun getDoList() : List<DeliveryOrderInfo> { |
|
|
open fun getDoList() : List<DeliveryOrderInfo> { |
|
|
return deliveryOrderRepository.findDeliveryOrderInfoByDeletedIsFalse(); |
|
|
return deliveryOrderRepository.findDeliveryOrderInfoByDeletedIsFalse(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
open fun getDetailedDo(id: Long) : DeliveryOrder? { |
|
|
open fun getDetailedDo(id: Long) : DeliveryOrder? { |
|
|
return deliveryOrderRepository.findByIdAndDeletedIsFalse(id); |
|
|
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> { |
|
|
open fun searchByCode(code: String) : List<DeliveryOrderInfo> { |
|
|
return deliveryOrderRepository.findAllByCodeAndDeletedIsFalse(code); |
|
|
return deliveryOrderRepository.findAllByCodeAndDeletedIsFalse(code); |
|
|
} |
|
|
} |
|
|
@@ -123,4 +159,42 @@ open class DeliveryOrderService( |
|
|
|
|
|
|
|
|
return savedDeliveryOrder |
|
|
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) |
|
|
|
|
|
) |
|
|
|
|
|
} |
|
|
} |
|
|
} |