浏览代码

Merge branch 'master' of https://git.2fi-solutions.com/derek/FPSMS-backend

create_edit_user
jason.lam 3 个月前
父节点
当前提交
d01be28991
共有 13 个文件被更改,包括 173 次插入22 次删除
  1. +2
    -2
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrder.kt
  2. +3
    -3
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderLine.kt
  3. +5
    -0
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderLineRepository.kt
  4. +4
    -0
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt
  5. +18
    -0
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderInfo.kt
  6. +29
    -0
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderLineInfo.kt
  7. +9
    -5
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderLineService.kt
  8. +53
    -5
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt
  9. +27
    -0
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt
  10. +9
    -7
      src/main/java/com/ffii/fpsms/modules/stock/entity/StockIn.kt
  11. +1
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLineRepository.kt
  12. +1
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/StockInRepository.kt
  13. +12
    -0
      src/main/resources/db/changelog/changes/20250509_01_derek/01_update_stock_in_ref.sql

+ 2
- 2
src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrder.kt 查看文件

@@ -19,7 +19,7 @@ open class PurchaseOrder : BaseEntity<Long>() {
@Column(name = "code", nullable = false, length = 30)
open var code: String? = null

@ManyToOne(fetch = FetchType.LAZY)
@ManyToOne
@JoinColumn(name = "supplierId")
open var supplier: Shop? = null

@@ -38,7 +38,7 @@ open class PurchaseOrder : BaseEntity<Long>() {
open var status: PurchaseOrderStatus? = null

@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@ManyToOne
@JoinColumn(name = "m18DataLogId", nullable = false)
open var m18DataLog: M18DataLog? = null
}

+ 3
- 3
src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderLine.kt 查看文件

@@ -15,7 +15,7 @@ import java.math.BigDecimal
@Table(name = "purchase_order_line")
open class PurchaseOrderLine : BaseEntity<Long>(){
@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@ManyToOne
@JoinColumn(name = "itemId", nullable = false)
open var item: Items? = null

@@ -30,7 +30,7 @@ open class PurchaseOrderLine : BaseEntity<Long>(){
// open var uom: UomConversion? = null

@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@ManyToOne
@JoinColumn(name = "purchaseOrderId", nullable = false)
open var purchaseOrder: PurchaseOrder? = null

@@ -50,7 +50,7 @@ open class PurchaseOrderLine : BaseEntity<Long>(){
open var status: PurchaseOrderLineStatus? = null

@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@ManyToOne
@JoinColumn(name = "m18DataLogId", nullable = false)
open var m18DataLog: M18DataLog? = null
}

+ 5
- 0
src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderLineRepository.kt 查看文件

@@ -1,10 +1,15 @@
package com.ffii.fpsms.modules.purchaseOrder.entity

import com.ffii.core.support.AbstractRepository
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderLineInfo
import org.springframework.stereotype.Repository
import java.io.Serializable

@Repository
interface PurchaseOrderLineRepository : AbstractRepository<PurchaseOrderLine, Long> {
fun findByM18DataLogIdAndDeletedIsFalse(m18datalogId: Serializable): PurchaseOrderLine?
fun findAllPurchaseOrderLineInfoByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLineInfo>
fun findAllByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLine>

// fun find
}

+ 4
- 0
src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt 查看文件

@@ -1,10 +1,14 @@
package com.ffii.fpsms.modules.purchaseOrder.entity

import com.ffii.core.support.AbstractRepository
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderInfo
import org.springframework.stereotype.Repository
import java.io.Serializable

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

fun findPurchaseOrderInfoByDeletedIsFalse(): List<PurchaseOrderInfo>
fun findPurchaseOrderInfoByIdAndDeletedIsFalse(id: Long): PurchaseOrderInfo
}

+ 18
- 0
src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderInfo.kt 查看文件

@@ -0,0 +1,18 @@
package com.ffii.fpsms.modules.purchaseOrder.entity.projections

import com.ffii.fpsms.modules.stock.entity.StockInLine
import org.springframework.beans.factory.annotation.Value
import java.time.LocalDate
import java.time.LocalDateTime

interface PurchaseOrderInfo {
val id: Long
val code: String
val orderDate: LocalDateTime
val estimatedArrivalDate: LocalDateTime
val completeDate: LocalDateTime
val status: String

// @get:Value("#{target.supplier?.name}")
// val supplier: String?
}

+ 29
- 0
src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderLineInfo.kt 查看文件

@@ -0,0 +1,29 @@
package com.ffii.fpsms.modules.purchaseOrder.entity.projections

import com.ffii.fpsms.modules.stock.entity.StockInLine
import org.springframework.beans.factory.annotation.Value
import java.math.BigDecimal

interface PurchaseOrderLineInfo {
val id: Long
@get:Value("#{target.purchaseOrder.id}")
val purchaseOrderId: Long
val itemNo: String
@get:Value("#{target.items?.name}")
val itemName: String?
val qty: BigDecimal
val price: BigDecimal
val status: String
}

data class PoLineWithStockInLine (
val id: Long,
val purchaseOrderId: Long,
val itemNo: String,
val itemName: String?,
val qty: BigDecimal,
val price: BigDecimal,
val status: String,

val stockInLine: List<StockInLine>?
)

+ 9
- 5
src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderLineService.kt 查看文件

@@ -7,6 +7,7 @@ import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLine
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLineRepository
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderRepository
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderLineInfo
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderLineStatus
import com.ffii.fpsms.modules.purchaseOrder.web.model.SavePurchaseOrderLineRequest
import com.ffii.fpsms.modules.purchaseOrder.web.model.SavePurchaseOrderLineResponse
@@ -17,11 +18,11 @@ import kotlin.jvm.optionals.getOrNull

@Service
open class PurchaseOrderLineService(
val purchaseOrderLineRepository: PurchaseOrderLineRepository,
val itemsService: ItemsService,
val itemsRepository: ItemsRepository,
val purchaseOrderRepository: PurchaseOrderRepository,
val m18DataLogRepository: M18DataLogRepository
private val purchaseOrderLineRepository: PurchaseOrderLineRepository,
private val itemsService: ItemsService,
private val itemsRepository: ItemsRepository,
private val purchaseOrderRepository: PurchaseOrderRepository,
private val m18DataLogRepository: M18DataLogRepository
) {
open fun allPurchaseOrderLine(): List<PurchaseOrderLine> {
return purchaseOrderLineRepository.findAll()
@@ -30,6 +31,9 @@ open class PurchaseOrderLineService(
open fun findPurchaseOrderLineByM18Id(m18DataLogId: Long): PurchaseOrderLine? {
return purchaseOrderLineRepository.findByM18DataLogIdAndDeletedIsFalse(m18DataLogId)
}
open fun findAllPoLineInfoByPoId(poId: Long): List<PurchaseOrderLineInfo> {
return purchaseOrderLineRepository.findAllPurchaseOrderLineInfoByPurchaseOrderIdAndDeletedIsFalse(poId)
}

open fun savePurchaseOrderLine(request: SavePurchaseOrderLineRequest): SavePurchaseOrderLineResponse {
val purchaseOrderLine =


+ 53
- 5
src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt 查看文件

@@ -1,26 +1,74 @@
package com.ffii.fpsms.modules.purchaseOrder.service

import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.m18.entity.M18DataLogRepository
import com.ffii.fpsms.modules.master.entity.ShopRepository
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLineRepository
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderRepository
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PoLineWithStockInLine
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderInfo
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderStatus
import com.ffii.fpsms.modules.purchaseOrder.web.model.SavePurchaseOrderRequest
import com.ffii.fpsms.modules.purchaseOrder.web.model.SavePurchaseOrderResponse
import com.ffii.fpsms.modules.stock.entity.StockInLine
import com.ffii.fpsms.modules.stock.entity.StockInLineRepository
import com.ffii.fpsms.modules.stock.entity.StockInRepository
import org.springframework.stereotype.Service
import java.util.HashMap
import java.util.Objects
import kotlin.jvm.optionals.getOrDefault
import kotlin.jvm.optionals.getOrNull

@Service
open class PurchaseOrderService(
val purchaseOrderRepository: PurchaseOrderRepository,
val shopRepository: ShopRepository,
val m18DataLogRepository: M18DataLogRepository,
) {
private val jdbcDao: JdbcDao,
private val purchaseOrderRepository: PurchaseOrderRepository,
private val polRepository: PurchaseOrderLineRepository,
private val shopRepository: ShopRepository,
private val m18DataLogRepository: M18DataLogRepository,
private val stockInRepository: StockInRepository,
private val stockInLineRepository: StockInLineRepository,
): AbstractBaseEntityService<PurchaseOrder, Long, PurchaseOrderRepository>(jdbcDao, purchaseOrderRepository) {
open fun getPoList(): List<PurchaseOrderInfo> {
return purchaseOrderRepository.findPurchaseOrderInfoByDeletedIsFalse()
}
open fun allPurchaseOrder(): List<PurchaseOrder> {
return purchaseOrderRepository.findAll()
}

open fun getDetailedPo(id: Long): Map<String, Any> {
val po = purchaseOrderRepository.findPurchaseOrderInfoByIdAndDeletedIsFalse(id)
val pol = polRepository.findAllByPurchaseOrderIdAndDeletedIsFalse(id)
// val pol = polRepository.findAllPurchaseOrderLineInfoByPurchaseOrderIdAndDeletedIsFalse(id)
val stockIn = stockInRepository.findByPurchaseOrderIdAndDeletedFalse(id)
val stockInLine = if (stockIn == null) listOf() else {
stockInLineRepository.findAllByStockInIdAndDeletedFalse(stockIn.id!!)
}
val mappedPoLine = pol.map { thisPol ->
val inLine = stockInLine.filter { it.itemNo.equals(thisPol.itemNo)}
PoLineWithStockInLine(
thisPol.id!!,
thisPol.purchaseOrder!!.id!!,
thisPol.itemNo!!,
thisPol.item!!.name,
thisPol.qty!!,
thisPol.price!!,
thisPol.status!!.toString(),
inLine
)
}
val result = mapOf(
"id" to po.id,
"code" to po.code,
"orderDate" to po.orderDate,
"estimatedArrivalDate" to po.estimatedArrivalDate,
"completeDate" to po.completeDate,
"status" to po.status,
"pol" to mappedPoLine
)
return result
}
open fun findPurchaseOrderByM18Id(m18DataLogId: Long): PurchaseOrder? {
return purchaseOrderRepository.findByM18DataLogIdAndDeletedIsFalse(m18DataLogId)
}


+ 27
- 0
src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt 查看文件

@@ -0,0 +1,27 @@
package com.ffii.fpsms.modules.purchaseOrder.web

import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.modules.master.entity.Items
import com.ffii.fpsms.modules.master.service.ItemsService
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderInfo
import com.ffii.fpsms.modules.purchaseOrder.service.PurchaseOrderService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("/po")
class PurchaseOrderController(
private val purchaseOrderService: PurchaseOrderService
) {
@GetMapping("/list")
fun getPoList(): List<PurchaseOrderInfo> {
return purchaseOrderService.getPoList()
}
@GetMapping("/detail/{id}")
fun getDetailedPo(@PathVariable id: Long): Map<String, Any> {
return purchaseOrderService.getDetailedPo(id)
}
}

+ 9
- 7
src/main/java/com/ffii/fpsms/modules/stock/entity/StockIn.kt 查看文件

@@ -2,6 +2,7 @@ package com.ffii.fpsms.modules.stock.entity

import com.ffii.core.entity.BaseEntity
import com.ffii.fpsms.modules.master.entity.Shop
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder
import com.ffii.fpsms.modules.stock.entity.enum.StockInStatus
import jakarta.persistence.*
import jakarta.validation.constraints.NotNull
@@ -18,20 +19,21 @@ open class StockIn : BaseEntity<Long>() {
@Column(name = "code", nullable = false, length = 30)
open var code: String? = null

@ManyToOne(fetch = FetchType.LAZY, optional = false)
@ManyToOne
@JoinColumn(name = "supplierId")
open var supplier: Shop? = null

@ManyToOne(fetch = FetchType.LAZY, optional = false)
@ManyToOne
@JoinColumn(name = "shopId")
open var shop: Shop? = null

@Column(name = "refId")
open var refId: Int? = null
@OneToOne
@JoinColumn(name = "purchaseOrderId")
open var purchaseOrder: PurchaseOrder? = null

@Size(max = 5)
@Column(name = "refType", length = 5)
open var refType: String? = null
@ManyToOne
@JoinColumn(name = "stockOutId")
open var stockOutId: StockOut? = null

@Column(name = "orderDate")
open var orderDate: LocalDateTime? = null


+ 1
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLineRepository.kt 查看文件

@@ -5,4 +5,5 @@ import org.springframework.stereotype.Repository

@Repository
interface StockInLineRepository : AbstractRepository<StockInLine, Long> {
fun findAllByStockInIdAndDeletedFalse(stockInId: Long): List<StockInLine>
}

+ 1
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/StockInRepository.kt 查看文件

@@ -5,4 +5,5 @@ import org.springframework.stereotype.Repository

@Repository
interface StockInRepository : AbstractRepository<StockIn, Long> {
fun findByPurchaseOrderIdAndDeletedFalse(purchaseOrderId: Long): StockIn?
}

+ 12
- 0
src/main/resources/db/changelog/changes/20250509_01_derek/01_update_stock_in_ref.sql 查看文件

@@ -0,0 +1,12 @@
--liquibase formatted sql

--changeset derek:update stock in ref cols
ALTER TABLE `stock_in`
DROP COLUMN `refId`,
DROP COLUMN `refType`,
ADD COLUMN `purchaseOrderId` INT NULL,
ADD COLUMN `stockOutId` INT NULL,
ADD CONSTRAINT `FK_STOCK_IN_JOB_ORDER_ON_PURCHASEORDERID`
FOREIGN KEY (`purchaseOrderId`) REFERENCES `purchase_order` (`id`),
ADD CONSTRAINT `FK_STOCK_IN_STOCK_OUT_ON_STOCKOUTID`
FOREIGN KEY (`stockOutId`) REFERENCES `stock_out` (`id`);

正在加载...
取消
保存