ソースを参照

update

production_process
MSI\derek 2ヶ月前
コミット
87115f4a71
7個のファイルの変更99行の追加34行の削除
  1. +1
    -0
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderLineRepository.kt
  2. +3
    -2
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt
  3. +1
    -1
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderInfo.kt
  4. +66
    -22
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt
  5. +17
    -7
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt
  6. +1
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLineRepository.kt
  7. +10
    -2
      src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt

+ 1
- 0
src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderLineRepository.kt ファイルの表示

@@ -12,5 +12,6 @@ interface PurchaseOrderLineRepository : AbstractRepository<PurchaseOrderLine, Lo
fun findAllPurchaseOrderLineInfoByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLineInfo>
fun findAllByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLine>
fun findAllByPurchaseOrderIdAndStatusNotAndDeletedIsFalse(purchaseOrderId: Long, status: PurchaseOrderLineStatus): List<PurchaseOrderLine>
// fun findAllByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLine>
// fun find
}

+ 3
- 2
src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt ファイルの表示

@@ -1,19 +1,20 @@
package com.ffii.fpsms.modules.purchaseOrder.entity

import com.ffii.core.support.AbstractRepository
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderDataClass
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderInfo
import org.springframework.data.domain.Page
import org.springframework.stereotype.Repository
import java.io.Serializable
import java.util.Optional
import org.springframework.data.domain.Pageable
import org.springframework.data.jpa.repository.Query
import org.springframework.data.repository.query.Param

@Repository
interface PurchaseOrderRepository : AbstractRepository<PurchaseOrder, Long> {
fun findTopByM18DataLogIdAndDeletedIsFalseOrderByModifiedDesc(m18datalogId: Serializable): PurchaseOrder?

fun findPurchaseOrderInfoByDeletedIsFalse(): List<PurchaseOrderInfo>
fun findPurchaseOrderInfoByDeletedIsFalse(pageable: Pageable): Page<PurchaseOrderInfo>
fun findPurchaseOrderInfoByIdAndDeletedIsFalse(id: Long): PurchaseOrderInfo

fun findByIdAndDeletedFalse(id: Long): Optional<PurchaseOrder>


+ 1
- 1
src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderInfo.kt ファイルの表示

@@ -14,7 +14,7 @@ interface PurchaseOrderInfo {
val status: String
@get:Value("#{target.supplier?.name}")
val supplier: String?
// var escalated: Boolean?
var escalated: Boolean?
}

data class PurchaseOrderDataClass(


+ 66
- 22
src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt ファイルの表示

@@ -30,6 +30,7 @@ import org.springframework.data.domain.Pageable
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.io.IOException
import java.time.LocalDateTime
import java.util.HashMap
import java.util.Objects
import kotlin.jvm.optionals.getOrDefault
@@ -47,33 +48,69 @@ open class PurchaseOrderService(
private val currencyService: CurrencyService,
private val shopService: ShopService,
) : AbstractBaseEntityService<PurchaseOrder, Long, PurchaseOrderRepository>(jdbcDao, purchaseOrderRepository) {

open fun getPoList(request: PagingRequest): RecordsRes<PurchaseOrderDataClass> {
println(request)
val totalCount = purchaseOrderRepository.count().toInt()
val list: List<PurchaseOrderInfo> = if (request.pageNum != null && request.pageSize != null) {
val pageable = PageRequest.of(request.pageNum!!, request.pageSize!!)
purchaseOrderRepository.findPurchaseOrderInfoByDeletedIsFalse(pageable).content
} else {
purchaseOrderRepository.findPurchaseOrderInfoByDeletedIsFalse()
// open fun getPurchaseOrderInfo(args: Map<String, Any>): List<Map<String, Any>> {
// val sql = StringBuilder(
// "SELECT " +
// "po.* " +
// "FROM purchase_order po " +
// "WHERE po.deleted = FALSE"
// );
// if (args.containsKey("name")){
// sql.append(" AND i.name like :name ");
// }
// }
open fun getPoList(args: MutableMap<String, Any>): List<PurchaseOrderDataClass> {
val sql = StringBuilder(
" select "
+ " po.*, "
+ " s.name as supplier, "
+ " CASE "
+ " WHEN sil.purchaseOrderId IS NOT NULL THEN 1 "
+ " ELSE 0 "
+ " END AS escalated "
+ " from purchase_order po "
+ " left join shop s on s.id = po.supplierId "
+ " left join ( "
+ " select "
+ " sil.purchaseOrderId "
+ " from stock_in_line sil "
+ " where sil.status like 'determine%' "
+ " ) sil on sil.purchaseOrderId = po.id "
+ " where po.deleted = false "
)
if (args.containsKey("code")){
sql.append(" AND po.code like :code ");
}
if (args.containsKey("status")){
sql.append(" AND po.status = :status ");
}
if (args.containsKey("escalated")) {
if (args["escalated"] == true) {
sql.append(" and sil.purchaseOrderId IS NOT NULL ");
} else {
sql.append(" and sil.purchaseOrderId IS NULL ");
}
}
val list = jdbcDao.queryForList(sql.toString(), args);
println(list)

val mappedList = list.map {
val escalated = stockInLineRepository.findAllStockInLineInfoByPurchaseOrderIdAndStatusStartsWithAndDeletedFalse(
purchaseOrderId = it.id,
status = "determine"
)
PurchaseOrderDataClass(
id = it.id,
code = it.code,
orderDate = it.orderDate,
estimatedArrivalDate = it.estimatedArrivalDate,
completeDate = it.completeDate,
status = it.status,
supplier = it.supplier,
escalated = escalated.isNotEmpty(),
id = (it["id"] as Int).toLong(),
code = it["code"] as String,
orderDate = it["orderDate"] as LocalDateTime?,
estimatedArrivalDate = it["estimatedArrivalDate"] as LocalDateTime?,
completeDate = it["completeDate"] as LocalDateTime?,
status = it["status"] as String,
supplier = it["supplier"] as String?,
escalated = it["escalated"] == 1L,
)
}
return RecordsRes(mappedList, totalCount)
// println(value1)
// println(value1 == 1L)
// println(value2)
println(mappedList)
return mappedList
}

open fun allPurchaseOrder(): List<PurchaseOrder> {
@@ -188,6 +225,13 @@ open class PurchaseOrderService(
@Transactional
open fun checkPolAndCompletePo(id: Long): MessageResponse {
val unfinishedLines = polRepository.findAllByPurchaseOrderIdAndStatusNotAndDeletedIsFalse(purchaseOrderId = id, status = PurchaseOrderLineStatus.COMPLETED)
// val unfinishedLines = polRepository.findAllByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId = id)
// .filter {
// it.status != PurchaseOrderLineStatus.COMPLETED |
// it.status != PurchaseOrderLineStatus.
// }
println("unfinishedLines")
println(unfinishedLines)
val po = purchaseOrderRepository.findById(id).orElseThrow()
if (unfinishedLines.isEmpty()) {
po.apply {


+ 17
- 7
src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt ファイルの表示

@@ -3,6 +3,7 @@ package com.ffii.fpsms.modules.purchaseOrder.web
import com.ffii.core.response.RecordsRes
import com.ffii.core.support.JdbcDao
import com.ffii.core.utils.CriteriaArgsBuilder
import com.ffii.core.utils.PagingUtils
import com.ffii.fpsms.modules.master.entity.Items
import com.ffii.fpsms.modules.master.service.ItemsService
import com.ffii.fpsms.modules.master.web.models.MessageResponse
@@ -24,16 +25,24 @@ class PurchaseOrderController(
) {
@GetMapping("/list")
fun getPoList(
request: HttpServletRequest
// @RequestParam(required = false) pageNum: Int,
// @RequestParam(required = false) pageSize: Int
): RecordsRes<PurchaseOrderDataClass> {
// println("request")
// println(pageSize)
// println(pageNum - 1)
// request pageNum starts from 1, but pagingRequest starts with 0
// val pageRequest = PagingRequest(pageSize = pageSize, pageNum = pageNum - 1,) // not start from 0
val pageRequest = PagingRequest(pageSize = null, pageNum = null) // not start from 0
return purchaseOrderService.getPoList(pageRequest)
println("request")
println(request)
val criteriaArgs = CriteriaArgsBuilder.withRequest(request)
.addStringLike("code")
.addString("status")
.addBoolean("escalated")
.build()
println(criteriaArgs)
val pageSize = request.getParameter("pageSize")?.toIntOrNull() ?: 10 // Default to 10 if not provided
val pageNum = request.getParameter("pageNum")?.toIntOrNull() ?: 1 // Default to 1 if not provided

val fullList = purchaseOrderService.getPoList(criteriaArgs)
val paginatedList = PagingUtils.getPaginatedList(fullList,pageSize, pageNum)
return RecordsRes(paginatedList, fullList.size)
}

@GetMapping("/testing")
@@ -41,6 +50,7 @@ class PurchaseOrderController(
val criteriaArgs = CriteriaArgsBuilder.withRequest(request)
.addStringLike("code")
.addStringLike("name")
.addBoolean("escalated")
.build()
println("criteriaArgs")
println(criteriaArgs)


+ 1
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLineRepository.kt ファイルの表示

@@ -13,6 +13,7 @@ interface StockInLineRepository : AbstractRepository<StockInLine, Long> {
fun findStockInLineInfoByIdAndDeletedFalse(id: Long): StockInLineInfo
fun findStockInLineInfoByIdInAndDeletedFalse(id: List<Long>): List<StockInLineInfo>
fun findStockInLineInfoByPurchaseOrderLineIdAndStatusNotAndDeletedFalse(purchaseOrderLineId: Long, status: String): List<StockInLineInfo>
fun findStockInLineInfoByPurchaseOrderLineIdAndDeletedFalse(purchaseOrderLineId: Long): List<StockInLineInfo>
fun findStockInLineInfoByIdAndStatusAndDeletedFalse(id: Long, status: String): Optional<StockInLineInfo>
fun findAllStockInLineInfoByPurchaseOrderIdAndStatusStartsWithAndDeletedFalse(purchaseOrderId: Long, status: String): List<Optional<StockInLineInfo>>
}

+ 10
- 2
src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt ファイルの表示

@@ -191,8 +191,16 @@ open class StockInLineService(
@Throws(IOException::class)
@Transactional
fun updatePurchaseOrderLineStatus(request: SaveStockInLineRequest) {
if (request.status == StockInLineStatus.COMPLETE.status) {
val unfinishedLines = stockInLineRepository.findStockInLineInfoByPurchaseOrderLineIdAndStatusNotAndDeletedFalse(purchaseOrderLineId = request.purchaseOrderLineId, status = request.status!!)
println(request.status)
if (request.status == StockInLineStatus.COMPLETE.status || request.status == StockInLineStatus.REJECT.status) {
// val unfinishedLines = stockInLineRepository.findStockInLineInfoByPurchaseOrderLineIdAndStatusNotAndDeletedFalse(purchaseOrderLineId = request.purchaseOrderLineId, status = request.status!!)
val unfinishedLines = stockInLineRepository.findStockInLineInfoByPurchaseOrderLineIdAndDeletedFalse(purchaseOrderLineId = request.purchaseOrderLineId)
.filter {
it.status != StockInLineStatus.COMPLETE.status
&& it.status != StockInLineStatus.REJECT.status
}
println("unfinishedLines")
println(unfinishedLines)
if (unfinishedLines.isEmpty()) {
// all stock in lines finished
// change status of purchase order line


読み込み中…
キャンセル
保存