Kaynağa Gözat

update

master
MSI\derek 1 ay önce
ebeveyn
işleme
34ac90be04
5 değiştirilmiş dosya ile 57 ekleme ve 72 silme
  1. +33
    -2
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt
  2. +6
    -0
      src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickOrderController.kt
  3. +2
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/StockOutLIneRepository.kt
  4. +4
    -70
      src/main/java/com/ffii/fpsms/modules/stock/service/StockOutService.kt
  5. +12
    -0
      src/main/java/com/ffii/fpsms/modules/stock/web/StockOutController.kt

+ 33
- 2
src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt Dosyayı Görüntüle

@@ -1,19 +1,23 @@
package com.ffii.fpsms.modules.pickOrder.service

import com.ffii.core.response.RecordsRes
import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao
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.projection.PickOrderInfo
import com.ffii.fpsms.modules.pickOrder.enums.PickOrderStatus
import com.ffii.fpsms.modules.pickOrder.web.models.*
import com.ffii.fpsms.modules.stock.entity.InventoryLotLineRepository
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.projection.CurrentInventoryItemInfo
import com.ffii.fpsms.modules.stock.service.InventoryService
import com.ffii.fpsms.modules.stock.service.StockOutLineService
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.SuggestedPickLotForPoRequest
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.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.io.IOException
import java.io.Serializable
import java.math.BigDecimal
import java.time.LocalDate
@@ -34,13 +39,13 @@ import kotlin.jvm.optionals.getOrNull
open class PickOrderService(
private val jdbcDao: JdbcDao,
val pickOrderRepository: PickOrderRepository,
val stockOutLineService: StockOutLineService,
val suggestedPickLotService: SuggestedPickLotService,
val userService: UserService,
private val stockOutLIneRepository: StockOutLIneRepository,
private val inventoryLotLineRepository: InventoryLotLineRepository,
val inventoryService: InventoryService,
private val stockOutRepository: StockOutRepository
) {
): AbstractBaseEntityService<PickOrder, Long, PickOrderRepository>(jdbcDao, pickOrderRepository) {
open fun localDateTimeParse(dateTime: String?, pattern: String? = "YYYY-MM-DD hh:mm:ss"): LocalDateTime? {
try {
val formatter = DateTimeFormatter.ofPattern(pattern!!)
@@ -424,4 +429,30 @@ open class PickOrderService(

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
}
}
}

+ 6
- 0
src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickOrderController.kt Dosyayı Görüntüle

@@ -101,4 +101,10 @@ class PickOrderController(
fun pickConsoPickOrderInfo(@PathVariable consoCode: String): ReleasePickOrderInfoResponse {
return pickOrderService.releaseConsoPickOrderInfo(consoCode);
}

@PostMapping("/consoPickOrder/complete/{consoCode}")
fun completeConsoPickOrders(@PathVariable consoCode: String): Boolean {
return pickOrderService.completeStockOut(consoCode)
}

}

+ 2
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/StockOutLIneRepository.kt Dosyayı Görüntüle

@@ -14,4 +14,6 @@ interface StockOutLIneRepository: AbstractRepository<StockOutLine, Long> {
fun findAllByIdIn(id: List<Long>): List<StockOutLineInfo>

fun findStockOutLineInfoById(id: Long): StockOutLineInfo

fun findAllByStockOutId(stockOutId: Long): List<StockOutLine>
}

+ 4
- 70
src/main/java/com/ffii/fpsms/modules/stock/service/StockOutService.kt Dosyayı Görüntüle

@@ -5,6 +5,8 @@ import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.modules.master.entity.Items
import com.ffii.fpsms.modules.master.entity.ItemsRepository
import com.ffii.fpsms.modules.master.web.models.MessageResponse
import com.ffii.fpsms.modules.pickOrder.entity.PickOrderRepository
import com.ffii.fpsms.modules.pickOrder.enums.PickOrderStatus
import com.ffii.fpsms.modules.stock.entity.*
import com.ffii.fpsms.modules.stock.web.model.SaveStockOutRequest
import com.ffii.fpsms.modules.stock.web.model.StockOutLineStatus
@@ -18,79 +20,11 @@ import java.time.LocalDateTime
@Service
open class StockOutService(
private val jdbcDao: JdbcDao,
private val pickOrderRepository: PickOrderRepository,
private val stockOutRepository: StockOutRepository,
private val stockOutLIneRepository: StockOutLIneRepository,
private val stockOutLineService: StockOutLineService,
private val stockLedgerRepository: StockLedgerRepository,
): AbstractBaseEntityService<StockOut, Long, StockOutRepository>(jdbcDao, stockOutRepository) {
@Throws(IOException::class)
@Transactional
open fun complete(request: SaveStockOutRequest): MessageResponse {
if (request.id === null) {
return MessageResponse(
id = null,
code = null,
name = null,
type = null,
message = "id cannot be null",
errorPosition = "id"
)
}
/// checking pick quantity
val stockOut = stockOutRepository.findById(request.id).orElseThrow()
val allLines = stockOutLineService.findAllByStockOutId(request.id)
val isBalanced = allLines.all{
val status = it.status
var sum = 0.0
when (status) {
StockOutLineStatus.PENDING.status -> sum += it.qty ?: 0.0;
// StockOutLineStatus.PICKED.status -> sum -= it.qty ?: 0.0;
}
sum == 0.0
}
if (!isBalanced) {
return MessageResponse(
id = request.id,
code = "stockOut.consoCode",
name = "stockOut.pickOrderCode ?: stockOut.deliveryOrderCode",
type = stockOut.type,
message = "there are items not picked",
errorPosition = null
)
}
// remove base record
val baseLines = allLines.filter { stockOutLine -> stockOutLine.status === StockOutLineStatus.PENDING.status}
// update pick record to complete
val pickLines = allLines
// .filter { stockOutLine -> stockOutLine.status === StockOutLineStatus.PICKED.status}
.map { stockOutLine ->
stockOutLine.apply {
status = StockOutLineStatus.COMPLETE.status
}
}
// write ledger
val ledgers = pickLines.map {stockOutLine ->
StockLedger().apply {
this.stockOutLine = stockOutLine
// this.inventory = stockOutLine.inventory
outQty = stockOutLine.qty
}
}
stockLedgerRepository.saveAll(ledgers)
stockOutLIneRepository.deleteAll(baseLines)
stockOutLIneRepository.saveAll(pickLines)
stockOut.apply {
completeDate = LocalDateTime.now()
status = StockOutStatus.COMPLETE.status
}
val savedStockOut = stockOutRepository.saveAndFlush(stockOut)
return MessageResponse(
id = savedStockOut.id,
code = "savedStockOut.consoCode",
name = "savedStockOut.pickOrderCode ?: savedStockOut.deliveryOrderCode",
type = savedStockOut.type,
message = "stock out completed",
errorPosition = null
)
}

}

+ 12
- 0
src/main/java/com/ffii/fpsms/modules/stock/web/StockOutController.kt Dosyayı Görüntüle

@@ -0,0 +1,12 @@
package com.ffii.fpsms.modules.stock.web

import com.ffii.fpsms.modules.stock.service.StockOutService
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("/stockOut")
class StockOutController(
private val stockOutService: StockOutService
) {
}

Yükleniyor…
İptal
Kaydet