Преглед на файлове

update po flow & warehouse api

create_edit_user
MSI\derek преди 3 месеца
родител
ревизия
c9da600477
променени са 14 файла, в които са добавени 117 реда и са изтрити 22 реда
  1. +5
    -0
      build.gradle
  2. +1
    -0
      src/main/java/com/ffii/fpsms/modules/master/entity/QcCheck.kt
  3. +4
    -0
      src/main/java/com/ffii/fpsms/modules/master/entity/QcCheckRepository.kt
  4. +0
    -3
      src/main/java/com/ffii/fpsms/modules/master/entity/Warehouse.kt
  5. +18
    -0
      src/main/java/com/ffii/fpsms/modules/master/entity/projections/QcCheckInfo.kt
  6. +1
    -1
      src/main/java/com/ffii/fpsms/modules/master/service/ItemsService.kt
  7. +7
    -1
      src/main/java/com/ffii/fpsms/modules/master/service/QcCheckService.kt
  8. +26
    -0
      src/main/java/com/ffii/fpsms/modules/master/service/WarehouseService.kt
  9. +13
    -4
      src/main/java/com/ffii/fpsms/modules/master/web/QcCheckController.kt
  10. +18
    -0
      src/main/java/com/ffii/fpsms/modules/master/web/WarehouseController.kt
  11. +1
    -0
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderLineInfo.kt
  12. +2
    -0
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt
  13. +10
    -2
      src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt
  14. +11
    -11
      src/main/java/com/ffii/fpsms/modules/stock/web/model/SaveStockInRequest.kt

+ 5
- 0
build.gradle Целия файл

@@ -32,6 +32,11 @@ dependencies {

implementation group: 'org.springframework.cloud', name: 'spring-cloud-context', version: '4.2.1'

implementation("net.sf.jasperreports:jasperreports:7.0.0") {
exclude group: "com.fasterxml.jackson.dataformat", module: "jackson-dataformat-xml"
}
implementation group: 'net.sf.jasperreports', name: 'jasperreports-fonts', version: '7.0.0'

implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'
implementation group: 'org.apache.poi', name: 'poi', version: '5.2.3'
implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '5.2.3'


+ 1
- 0
src/main/java/com/ffii/fpsms/modules/master/entity/QcCheck.kt Целия файл

@@ -3,6 +3,7 @@ package com.ffii.fpsms.modules.master.entity
import com.ffii.core.entity.BaseEntity
import jakarta.persistence.*
import jakarta.validation.constraints.NotNull
import java.math.BigDecimal

@Entity
@Table(name = "qc_check")


+ 4
- 0
src/main/java/com/ffii/fpsms/modules/master/entity/QcCheckRepository.kt Целия файл

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

import com.ffii.core.support.AbstractRepository
import com.ffii.fpsms.modules.master.entity.projections.QcCheckInfo
import org.springframework.stereotype.Repository

@Repository
interface QcCheckRepository: AbstractRepository<QcCheck, Long> {
fun findAllByDeletedIsFalse(): List<QcCheck>
fun findAllByItemIdAndDeletedFalse(itemId: Long): List<QcCheck>

fun findAllQcCheckInfoByDeletedFalse(): List<QcCheckInfo>
fun findAllQcCheckInfoByItemIdAndDeletedFalse(itemId: Long): List<QcCheckInfo>
}

+ 0
- 3
src/main/java/com/ffii/fpsms/modules/master/entity/Warehouse.kt Целия файл

@@ -11,17 +11,14 @@ import java.math.BigDecimal
@Entity
@Table(name = "warehouse")
open class Warehouse : BaseEntity<Long>() {
@Size(max = 30)
@NotNull
@Column(name = "code", nullable = false, length = 30)
open var code: String? = null

@Size(max = 30)
@NotNull
@Column(name = "name", nullable = false, length = 30)
open var name: String? = null

@Size(max = 30)
@NotNull
@Column(name = "description", nullable = false, length = 30)
open var description: String? = null


+ 18
- 0
src/main/java/com/ffii/fpsms/modules/master/entity/projections/QcCheckInfo.kt Целия файл

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

import org.springframework.beans.factory.annotation.Value
import java.math.BigDecimal

interface QcCheckInfo {
val id: Long
@get:Value("#{target.qcItem?.code}")
val code: String
@get:Value("#{target.qcItem?.name}")
val name: String
@get:Value("#{target.item?.id}")
val itemId: Long
// val isRange: Boolean // bug jor
val systemInput: Boolean
val lowerLimit: Double?
val upperLimit: Double?
}

+ 1
- 1
src/main/java/com/ffii/fpsms/modules/master/service/ItemsService.kt Целия файл

@@ -69,7 +69,7 @@ open class ItemsService(
code = it.code!!,
description = it.description!!,
instruction = check?.description,
lowerLimit = check?.lowerLimit,
lowerLimit = check?.lowerLimit ,
upperLimit = check?.upperLimit,
isActive = check != null
) // Create combined item


+ 7
- 1
src/main/java/com/ffii/fpsms/modules/master/service/QcCheckService.kt Целия файл

@@ -4,8 +4,8 @@ import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.modules.master.entity.*
import com.ffii.fpsms.modules.master.web.models.MessageResponse
import com.ffii.fpsms.modules.master.web.models.NewItemRequest
import com.ffii.fpsms.modules.master.web.models.NewQcCheckRequest
import com.ffii.fpsms.modules.master.entity.projections.QcCheckInfo
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.io.IOException
@@ -17,6 +17,12 @@ open class QcCheckService(
private val qcCheckRepository: QcCheckRepository,
private val qcItemRepository: QcItemRepository,
): AbstractBaseEntityService<QcCheck, Long, QcCheckRepository>(jdbcDao, qcCheckRepository) {
open fun getAllQcCheckInfo(): List<QcCheckInfo> {
return qcCheckRepository.findAllQcCheckInfoByDeletedFalse()
}
open fun getAllQcCheckInfoById(itemId: Long): List<QcCheckInfo> {
return qcCheckRepository.findAllQcCheckInfoByItemIdAndDeletedFalse(itemId)
}

@Throws(IOException::class)
@Transactional


+ 26
- 0
src/main/java/com/ffii/fpsms/modules/master/service/WarehouseService.kt Целия файл

@@ -0,0 +1,26 @@
package com.ffii.fpsms.modules.master.service

import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.modules.master.entity.ItemsRepository
import com.ffii.fpsms.modules.master.entity.Warehouse
import com.ffii.fpsms.modules.master.entity.WarehouseRepository
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLineRepository
import com.ffii.fpsms.modules.stock.entity.InventoryLotRepository
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 com.ffii.fpsms.modules.stock.service.InventoryLotService
import com.ffii.fpsms.modules.stock.service.StockInService
import org.springframework.stereotype.Service

@Service
open class WarehouseService(
private val jdbcDao: JdbcDao,
private val warehouseRepository: WarehouseRepository,
): AbstractBaseEntityService<Warehouse, Long, WarehouseRepository>(jdbcDao, warehouseRepository) {

open fun getWarehouses(): List<Warehouse> {
return warehouseRepository.findAll().filter { it.deleted == false }
}
}

+ 13
- 4
src/main/java/com/ffii/fpsms/modules/master/web/QcCheckController.kt Целия файл

@@ -1,14 +1,14 @@
package com.ffii.fpsms.modules.master.web

import com.ffii.core.utils.CriteriaArgsBuilder
import com.ffii.fpsms.modules.master.entity.projections.QcCheckInfo
import com.ffii.fpsms.modules.master.service.QcCheckService
import com.ffii.fpsms.modules.master.web.models.MessageResponse
import com.ffii.fpsms.modules.master.web.models.NewItemRequest
import com.ffii.fpsms.modules.master.web.models.NewQcCheckRequest
import jakarta.servlet.http.HttpServletRequest
import jakarta.validation.Valid
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.bind.annotation.*

@RestController
@RequestMapping("/qcCheck")
@@ -19,4 +19,13 @@ class QcCheckController(
fun saveItem(@Valid @RequestBody newQcs: List<NewQcCheckRequest>): MessageResponse {
return qcCheckService.saveQcChecks(newQcs)
}

@GetMapping
fun allQcCheckInfo(): List<QcCheckInfo> {
return qcCheckService.getAllQcCheckInfo()
}
@GetMapping("/{itemId}")
fun allQcCheckInfoByItemId(@PathVariable itemId: Long): List<QcCheckInfo> {
return qcCheckService.getAllQcCheckInfoById(itemId)
}
}

+ 18
- 0
src/main/java/com/ffii/fpsms/modules/master/web/WarehouseController.kt Целия файл

@@ -0,0 +1,18 @@
package com.ffii.fpsms.modules.master.web

import com.ffii.fpsms.modules.master.entity.Warehouse
import com.ffii.fpsms.modules.master.service.WarehouseService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("/warehouse")
class WarehouseController(
private val warehouseService: WarehouseService
) {
@GetMapping
fun getWarehouses(): List<Warehouse> {
return warehouseService.getWarehouses()
}
}

+ 1
- 0
src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderLineInfo.kt Целия файл

@@ -24,6 +24,7 @@ data class PoLineWithStockInLine (
val itemNo: String,
val itemName: String?,
val qty: BigDecimal,
val processed: BigDecimal,
val uom: String? = null,
val price: BigDecimal,
val status: String,


+ 2
- 0
src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt Целия файл

@@ -16,6 +16,7 @@ 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 com.ffii.fpsms.modules.stock.web.model.StockInLineStatus
import org.springframework.stereotype.Service
import java.util.HashMap
import java.util.Objects
@@ -56,6 +57,7 @@ open class PurchaseOrderService(
thisPol.itemNo!!,
thisPol.item!!.name,
thisPol.qty!!,
inLine.filter{ it.status == StockInLineStatus.COMPLETE.status}.sumOf { it.acceptedQty },
thisPol.uom!!.code,
thisPol.price!!,
thisPol.status!!.toString(),


+ 10
- 2
src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt Целия файл

@@ -91,11 +91,17 @@ open class StockInLineService(
message = "stock in line id is null",
errorPosition = null,
)
if (stockInLine.expiryDate != null && request.expiryDate == null) {
request.apply {
expiryDate = stockInLine.expiryDate
}
}
// return list of stock in line, update data grid with the list
if (request.acceptedQty.compareTo(stockInLine.acceptedQty) == 0) {
var savedInventoryLot: InventoryLot? = null
if (request.status == StockInLineStatus.RECEIVED.status) {
if (request.expiryDate == null) {
println("trigger1?")
return MessageResponse(
id = null,
code = null,
@@ -107,13 +113,15 @@ open class StockInLineService(
}
savedInventoryLot = saveInventoryLotWhenStockIn(request = request, stockInLine = stockInLine)
}
// if (request.status == StockInLineStatus.RECEIVED.status) {
// }
stockInLine.apply {
// user = null
productionDate = request.productionDate?.atStartOfDay() // maybe need to change the request to LocalDateTime
productLotNo = request.productLotNo
receiptDate = request.receiptDate?.atStartOfDay()
status = request.status
expiryDate = request.expiryDate
expiryDate = stockInLine.expiryDate ?: request.expiryDate
lotNo = savedInventoryLot?.lotNo
}
val savedStockInLine = saveAndFlush(stockInLine)
@@ -173,7 +181,7 @@ open class StockInLineService(
acceptedQty = request.acceptedQty
status = request.status
lotNo = savedInventoryLot?.lotNo
expiryDate = request.expiryDate
expiryDate = stockInLine.expiryDate ?: request.expiryDate
productLotNo = request.productLotNo
}



+ 11
- 11
src/main/java/com/ffii/fpsms/modules/stock/web/model/SaveStockInRequest.kt Целия файл

@@ -34,15 +34,15 @@ data class SaveStockInRequest(
)

data class SaveStockInLineRequest(
val id: Long?,
val purchaseOrderId: Long,
val purchaseOrderLineId: Long,
val itemId: Long,
val acceptedQty: BigDecimal,
val acceptedWeight: BigDecimal?,
val status: String?,
val expiryDate: LocalDate?,
val productLotNo: String?,
val receiptDate: LocalDate?,
val productionDate: LocalDate?,
var id: Long?,
var purchaseOrderId: Long,
var purchaseOrderLineId: Long,
var itemId: Long,
var acceptedQty: BigDecimal,
var acceptedWeight: BigDecimal?,
var status: String?,
var expiryDate: LocalDate?,
var productLotNo: String?,
var receiptDate: LocalDate?,
var productionDate: LocalDate?,
)

Зареждане…
Отказ
Запис