|
|
@@ -1,19 +1,23 @@ |
|
|
package com.ffii.fpsms.modules.pickOrder.service |
|
|
package com.ffii.fpsms.modules.pickOrder.service |
|
|
|
|
|
|
|
|
import com.ffii.core.response.RecordsRes |
|
|
import com.ffii.core.response.RecordsRes |
|
|
|
|
|
import com.ffii.core.support.AbstractBaseEntityService |
|
|
import com.ffii.core.support.JdbcDao |
|
|
import com.ffii.core.support.JdbcDao |
|
|
import com.ffii.fpsms.modules.common.SecurityUtils |
|
|
import com.ffii.fpsms.modules.common.SecurityUtils |
|
|
|
|
|
import com.ffii.fpsms.modules.pickOrder.entity.PickOrder |
|
|
import com.ffii.fpsms.modules.pickOrder.entity.PickOrderRepository |
|
|
import com.ffii.fpsms.modules.pickOrder.entity.PickOrderRepository |
|
|
import com.ffii.fpsms.modules.pickOrder.entity.projection.PickOrderInfo |
|
|
import com.ffii.fpsms.modules.pickOrder.entity.projection.PickOrderInfo |
|
|
import com.ffii.fpsms.modules.pickOrder.enums.PickOrderStatus |
|
|
import com.ffii.fpsms.modules.pickOrder.enums.PickOrderStatus |
|
|
import com.ffii.fpsms.modules.pickOrder.web.models.* |
|
|
import com.ffii.fpsms.modules.pickOrder.web.models.* |
|
|
import com.ffii.fpsms.modules.stock.entity.InventoryLotLineRepository |
|
|
import com.ffii.fpsms.modules.stock.entity.InventoryLotLineRepository |
|
|
import com.ffii.fpsms.modules.stock.entity.StockOut |
|
|
import com.ffii.fpsms.modules.stock.entity.StockOut |
|
|
|
|
|
import com.ffii.fpsms.modules.stock.entity.StockOutLIneRepository |
|
|
import com.ffii.fpsms.modules.stock.entity.StockOutRepository |
|
|
import com.ffii.fpsms.modules.stock.entity.StockOutRepository |
|
|
import com.ffii.fpsms.modules.stock.entity.projection.CurrentInventoryItemInfo |
|
|
import com.ffii.fpsms.modules.stock.entity.projection.CurrentInventoryItemInfo |
|
|
import com.ffii.fpsms.modules.stock.service.InventoryService |
|
|
import com.ffii.fpsms.modules.stock.service.InventoryService |
|
|
import com.ffii.fpsms.modules.stock.service.StockOutLineService |
|
|
import com.ffii.fpsms.modules.stock.service.StockOutLineService |
|
|
import com.ffii.fpsms.modules.stock.service.SuggestedPickLotService |
|
|
import com.ffii.fpsms.modules.stock.service.SuggestedPickLotService |
|
|
|
|
|
import com.ffii.fpsms.modules.stock.web.model.StockOutLineStatus |
|
|
import com.ffii.fpsms.modules.stock.web.model.StockOutStatus |
|
|
import com.ffii.fpsms.modules.stock.web.model.StockOutStatus |
|
|
import com.ffii.fpsms.modules.stock.web.model.SuggestedPickLotForPoRequest |
|
|
import com.ffii.fpsms.modules.stock.web.model.SuggestedPickLotForPoRequest |
|
|
import com.ffii.fpsms.modules.user.entity.UserRepository |
|
|
import com.ffii.fpsms.modules.user.entity.UserRepository |
|
|
@@ -23,6 +27,7 @@ import org.springframework.http.HttpStatus |
|
|
import org.springframework.http.ResponseEntity |
|
|
import org.springframework.http.ResponseEntity |
|
|
import org.springframework.stereotype.Service |
|
|
import org.springframework.stereotype.Service |
|
|
import org.springframework.transaction.annotation.Transactional |
|
|
import org.springframework.transaction.annotation.Transactional |
|
|
|
|
|
import java.io.IOException |
|
|
import java.io.Serializable |
|
|
import java.io.Serializable |
|
|
import java.math.BigDecimal |
|
|
import java.math.BigDecimal |
|
|
import java.time.LocalDate |
|
|
import java.time.LocalDate |
|
|
@@ -34,13 +39,13 @@ import kotlin.jvm.optionals.getOrNull |
|
|
open class PickOrderService( |
|
|
open class PickOrderService( |
|
|
private val jdbcDao: JdbcDao, |
|
|
private val jdbcDao: JdbcDao, |
|
|
val pickOrderRepository: PickOrderRepository, |
|
|
val pickOrderRepository: PickOrderRepository, |
|
|
val stockOutLineService: StockOutLineService, |
|
|
|
|
|
val suggestedPickLotService: SuggestedPickLotService, |
|
|
val suggestedPickLotService: SuggestedPickLotService, |
|
|
val userService: UserService, |
|
|
val userService: UserService, |
|
|
|
|
|
private val stockOutLIneRepository: StockOutLIneRepository, |
|
|
private val inventoryLotLineRepository: InventoryLotLineRepository, |
|
|
private val inventoryLotLineRepository: InventoryLotLineRepository, |
|
|
val inventoryService: InventoryService, |
|
|
val inventoryService: InventoryService, |
|
|
private val stockOutRepository: StockOutRepository |
|
|
private val stockOutRepository: StockOutRepository |
|
|
) { |
|
|
|
|
|
|
|
|
): AbstractBaseEntityService<PickOrder, Long, PickOrderRepository>(jdbcDao, pickOrderRepository) { |
|
|
open fun localDateTimeParse(dateTime: String?, pattern: String? = "YYYY-MM-DD hh:mm:ss"): LocalDateTime? { |
|
|
open fun localDateTimeParse(dateTime: String?, pattern: String? = "YYYY-MM-DD hh:mm:ss"): LocalDateTime? { |
|
|
try { |
|
|
try { |
|
|
val formatter = DateTimeFormatter.ofPattern(pattern!!) |
|
|
val formatter = DateTimeFormatter.ofPattern(pattern!!) |
|
|
@@ -424,4 +429,30 @@ open class PickOrderService( |
|
|
|
|
|
|
|
|
return releaseConsoPickOrderInfo(request.consoCode) |
|
|
return releaseConsoPickOrderInfo(request.consoCode) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Throws(IOException::class) |
|
|
|
|
|
@Transactional |
|
|
|
|
|
open fun completeStockOut(consoCode: String): Boolean { |
|
|
|
|
|
val stockOut = stockOutRepository.findByConsoPickOrderCode(consoCode).orElseThrow() |
|
|
|
|
|
val stockOutLines = stockOutLIneRepository.findAllByStockOutId(stockOut.id!!) |
|
|
|
|
|
val unfinishedLines = stockOutLines.filter { |
|
|
|
|
|
it.status != StockOutLineStatus.COMPLETE.status |
|
|
|
|
|
&& it.status != StockOutLineStatus.REJECTED.status |
|
|
|
|
|
} |
|
|
|
|
|
if (unfinishedLines.isEmpty()) { |
|
|
|
|
|
stockOut.apply { |
|
|
|
|
|
this.status = StockOutStatus.COMPLETE.status |
|
|
|
|
|
} |
|
|
|
|
|
stockOutRepository.save(stockOut) |
|
|
|
|
|
val pickOrderEntries = pickOrderRepository.findAllByConsoCode(consoCode).map { |
|
|
|
|
|
it.apply { |
|
|
|
|
|
it.status = PickOrderStatus.COMPLETED |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
pickOrderRepository.saveAll(pickOrderEntries) |
|
|
|
|
|
return true |
|
|
|
|
|
} else { |
|
|
|
|
|
return false |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |