Pārlūkot izejas kodu

update po filter

production_process
MSI\derek pirms 2 mēnešiem
vecāks
revīzija
c844b5a215
16 mainītis faili ar 94 papildinājumiem un 26 dzēšanām
  1. +1
    -0
      src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt
  2. +37
    -21
      src/main/java/com/ffii/fpsms/modules/master/service/BomService.kt
  3. +5
    -0
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt
  4. +16
    -3
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt
  5. +11
    -2
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt
  6. +6
    -0
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/PagingRequest.kt
  7. +6
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/InventoryLotLine.kt
  8. +8
    -0
      src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt
  9. Binārs
      src/main/resources/bomImport/006 PP1080 咖喱汁 Pings BOM Template v3.xlsx
  10. Binārs
      src/main/resources/bomImport/016 PP1133 豬骨粥(1位份量)(1磅包) Pings BOM Template v3.xlsx
  11. Binārs
      src/main/resources/bomImport/017 PP1136 白粥 Pings BOM Template v3.xlsx
  12. Binārs
      src/main/resources/bomImport/024 PP - PP1175_鮮檸檬汁 Pings BOM Template v3.xlsx
  13. Binārs
      src/main/resources/bomImport/206 PP2258 豬骨粥箱料粉 Pings BOM Template v3.xlsx
  14. Binārs
      src/main/resources/bomImport/208 PP2256 瑤柱碎 Pings BOM Template v3.xlsx
  15. Binārs
      src/main/resources/bomImport/40 PP1224 柚子蒜蓉汁 Pings BOM Template.xlsx
  16. +4
    -0
      src/main/resources/db/changelog/changes/20250613_01_derek/01_update_inventory_lot_line_uom_id.sql

+ 1
- 0
src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt Parādīt failu

@@ -18,4 +18,5 @@ interface ItemUomRespository : AbstractRepository<ItemUom, Long> {
fun findByItemIdAndPurchaseUnitIsTrueAndDeletedIsFalse(itemId: Serializable): ItemUom?

fun findByItemM18IdAndPurchaseUnitIsTrueAndDeletedIsFalse(itemM18Id: Long): ItemUom?
fun findBaseUnitByItemIdAndBaseUnitIsTrueAndDeletedIsFalse(itemId: Long): ItemUom?
}

+ 37
- 21
src/main/java/com/ffii/fpsms/modules/master/service/BomService.kt Parādīt failu

@@ -100,7 +100,7 @@ open class BomService(
return savedBom
}

fun saveBomMaterial(req: ImportBomMatRequest): BomMaterial {
private fun saveBomMaterial(req: ImportBomMatRequest): BomMaterial {
// val uom = uomConversionRepository.findByCodeAndDeletedFalse()
val bomMaterial = BomMaterial().apply {
this.item = req.item
@@ -116,7 +116,7 @@ open class BomService(
}
return bomMaterialRepository.saveAndFlush(bomMaterial)
}
fun saveBomProcess(req: ImportBomProcessRequest): BomProcess {
private fun saveBomProcess(req: ImportBomProcessRequest): BomProcess {
val bomProcess = BomProcess().apply {
this.process = req.process
this.equipment = req.equipment
@@ -155,10 +155,11 @@ open class BomService(
var bomMatRequest = ImportBomMatRequest(
bom = bom
)
println("starting new loop")
while (startRowIndex != endRowIndex || startColumnIndex != endColumnIndex) {
val tempRow = sheet.getRow(startRowIndex)
val tempCell = tempRow.getCell(startColumnIndex)
if (tempCell == null || tempCell.cellType == CellType.BLANK) {
if (startColumnIndex == 0 && (tempCell == null || tempCell.cellType == CellType.BLANK)) {
break
} else {
try {
@@ -185,6 +186,8 @@ open class BomService(
bomMatRequest.salesUnit = salesUnit
}
10 -> {
println("seqNo: ${tempCell.numericCellValue.toInt()}")
println("bomId: ${bom.id!!}")
val bomProcess = bomProcessRepository.findBySeqNoAndBomIdAndDeletedIsFalse(
seqNo = tempCell.numericCellValue.toInt(),
bomId = bom.id!!
@@ -192,11 +195,19 @@ open class BomService(
bomProcessMatRequest.bomProcess = bomProcess
}
}

println("startRowIndex: $startRowIndex")
println("endRowIndex: $endRowIndex")

println("first condition: ${startColumnIndex < endColumnIndex}")
println("second condition: ${startRowIndex < endRowIndex}")
if (startColumnIndex < endColumnIndex) {
startColumnIndex++
} else if (startRowIndex < endRowIndex) {
startRowIndex++
// do save
println("req:")
println(bomMatRequest)
val bomMaterial = saveBomMaterial(bomMatRequest)
bomProcessMatRequest.bomMaterial = bomMaterial
val bomProcessMaterial = saveBomProcessMaterial(bomProcessMatRequest)
@@ -205,6 +216,7 @@ open class BomService(
bomMatRequest = ImportBomMatRequest(
bom = bom
)
println("saved: $bomMatRequest")
}
} catch(e: Error) {
println("DEBUG ERROR:")
@@ -307,13 +319,17 @@ open class BomService(
}

private fun extractDurationStringToMinutes(str: String): Int {
val regex = """(\d+)(\D+)""".toRegex()
val regex = """(\d+)(\D+)(\d+)(\D+)""".toRegex()
val matchResult = regex.find(str)

// fun returnMultiplier(unit: String): {
//
// }
val (number, unit) = matchResult?.let {
val number = it.groupValues[1].toInt()
val unit = it.groupValues[2]
Pair(number, unit)
val num1 = it.groupValues[1].toInt()
val unit1 = it.groupValues[2]
// val num2 = it.groupValues[3].toInt()
// val unit2 = it.groupValues[4]
Pair(num1, unit1)
}!!
var multiplier = 1
when {
@@ -336,7 +352,7 @@ open class BomService(
val tempCell = tempRow.getCell(startColumnIndex)
if (tempCell != null && tempCell.cellType == CellType.STRING && tempCell.stringCellValue.trim() == "工序") {
startRowIndex += 2 // skip column header
println("last: $startRowIndex")
// println("last: $startRowIndex")
break
}
startRowIndex++
@@ -349,7 +365,7 @@ open class BomService(
val tempCell = tempRow.getCell(startColumnIndex)
val checkCell = tempRow.getCell(0)
if (startColumnIndex == 0 && (tempCell == null || tempCell.cellType == CellType.BLANK)) {
println("hi")
// println("hi")
break
} else {
println(tempCell.cellType)
@@ -357,16 +373,16 @@ open class BomService(
try {
when (startColumnIndex) {
0 -> {
println("startRowIndex: $startRowIndex")
// println("startRowIndex: $startRowIndex")
bomProcessRequest.seqNo = tempCell.numericCellValue.toLong()
println("seqNo: ${tempCell.numericCellValue.toLong()}")
println("bomProcessRequest: $bomProcessRequest")
// println("seqNo: ${tempCell.numericCellValue.toLong()}")
// println("bomProcessRequest: $bomProcessRequest")
}
1 -> {
val equipmentName = tempCell.stringCellValue.trim()
if (equipmentName != "不適用") {
val equipment = bomGetOrCreateEquipment(equipmentName)
println("equipment created")
// println("equipment created")
bomProcessRequest.equipment = equipment
}
}
@@ -374,7 +390,7 @@ open class BomService(
val processName = tempCell.stringCellValue.trim()
val process = bomGetOrCreateProcess(processName)
bomProcessRequest.process = process
println("process created")
// println("process created")
}
3 -> {
val description = tempCell.stringCellValue.trim()
@@ -420,18 +436,18 @@ open class BomService(
}
}
}
println("req:")
println(bomProcessRequest)
// println("req:")
// println(bomProcessRequest)
// moving the loop
if (startColumnIndex < endColumnIndex) {
println("case1")
// println("case1")
startColumnIndex++
println("next col startColumnIndex: $startColumnIndex")
// println("next col startColumnIndex: $startColumnIndex")
} else if (startRowIndex < endRowIndex) {
println("case2")
// println("case2")
// when doesn't meet first condition, falls to this and go new row
startRowIndex++
println("next row startRowIndex: $startRowIndex")
// println("next row startRowIndex: $startRowIndex")
// do save
saveBomProcess(bomProcessRequest)
// clean up


+ 5
- 0
src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt Parādīt failu

@@ -2,16 +2,21 @@ 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.data.domain.Page
import org.springframework.stereotype.Repository
import java.io.Serializable
import java.util.Optional
import org.springframework.data.domain.Pageable

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

override fun findAll(pageable: Pageable): Page<PurchaseOrder>
}

+ 16
- 3
src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt Parādīt failu

@@ -1,5 +1,6 @@
package com.ffii.fpsms.modules.purchaseOrder.service

import com.ffii.core.response.RecordsRes
import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.m18.entity.M18DataLogRepository
@@ -16,12 +17,16 @@ import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderInfo
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderLineStatus
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderStatus
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderType
import com.ffii.fpsms.modules.purchaseOrder.web.model.PagingRequest
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 com.ffii.fpsms.modules.stock.web.model.StockInLineStatus
import org.springframework.data.domain.Page
import org.springframework.data.domain.PageRequest
import org.springframework.data.domain.Pageable
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.io.IOException
@@ -42,8 +47,16 @@ open class PurchaseOrderService(
private val currencyService: CurrencyService,
private val shopService: ShopService,
) : AbstractBaseEntityService<PurchaseOrder, Long, PurchaseOrderRepository>(jdbcDao, purchaseOrderRepository) {
open fun getPoList(): List<PurchaseOrderDataClass> {
val list = purchaseOrderRepository.findPurchaseOrderInfoByDeletedIsFalse()

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()
}
val mappedList = list.map {
val escalated = stockInLineRepository.findAllStockInLineInfoByPurchaseOrderIdAndStatusStartsWithAndDeletedFalse(
purchaseOrderId = it.id,
@@ -60,7 +73,7 @@ open class PurchaseOrderService(
escalated = escalated.isNotEmpty(),
)
}
return mappedList
return RecordsRes(mappedList, totalCount)
}

open fun allPurchaseOrder(): List<PurchaseOrder> {


+ 11
- 2
src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt Parādīt failu

@@ -1,5 +1,6 @@
package com.ffii.fpsms.modules.purchaseOrder.web

import com.ffii.core.response.RecordsRes
import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.modules.master.entity.Items
import com.ffii.fpsms.modules.master.service.ItemsService
@@ -8,6 +9,11 @@ import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderDataClass
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderInfo
import com.ffii.fpsms.modules.purchaseOrder.service.PurchaseOrderService
import com.ffii.fpsms.modules.purchaseOrder.web.model.PagingRequest
import com.ffii.fpsms.modules.stock.web.model.SaveStockInLineRequest
import jakarta.servlet.http.HttpServletRequest
import org.springframework.data.domain.Page
import org.springframework.data.domain.PageRequest
import org.springframework.web.bind.annotation.*

@RestController
@@ -16,9 +22,12 @@ class PurchaseOrderController(
private val purchaseOrderService: PurchaseOrderService
) {
@GetMapping("/list")
fun getPoList(): List<PurchaseOrderDataClass> {
return purchaseOrderService.getPoList()
fun getPoList(@RequestParam(required = false) pageNum: Int, @RequestParam(required = false) pageSize: Int ): RecordsRes<PurchaseOrderDataClass> {
println("request")
val pageRequest = PagingRequest(pageSize = pageSize, pageNum = pageNum,)
return purchaseOrderService.getPoList(pageRequest)
}

@GetMapping("/detail/{id}") // purchaseOrderId
fun getDetailedPo(@PathVariable id: Long): Map<String, Any> {
return purchaseOrderService.getDetailedPo(id)


+ 6
- 0
src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/PagingRequest.kt Parādīt failu

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

data class PagingRequest(
var pageNum: Int?,
var pageSize: Int?
)

+ 6
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/InventoryLotLine.kt Parādīt failu

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

import com.ffii.core.entity.BaseEntity
import com.ffii.fpsms.modules.master.entity.ItemUom
import com.ffii.fpsms.modules.master.entity.Warehouse
import jakarta.persistence.Column
import jakarta.persistence.Entity
@@ -31,6 +32,11 @@ open class InventoryLotLine : BaseEntity<Long>() {
@Column(name = "outQty")
open var outQty: BigDecimal? = null

@NotNull
@ManyToOne
@JoinColumn(name = "baseItemUomId")
open var baseUom: ItemUom? = null

@Column(name = "holdQty")
open var holdQty: BigDecimal? = null



+ 8
- 0
src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt Parādīt failu

@@ -25,6 +25,7 @@ import java.math.BigDecimal
import java.time.LocalDate
import java.time.LocalDateTime
import com.ffii.core.utils.PdfUtils;
import com.ffii.fpsms.modules.master.entity.ItemUomRespository
import com.ffii.fpsms.modules.master.entity.WarehouseRepository
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderRepository
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderLineStatus
@@ -53,6 +54,7 @@ open class StockInLineService(
private val inventoryLotLineRepository: InventoryLotLineRepository,
private val itemRepository: ItemsRepository,
private val warehouseRepository: WarehouseRepository,
private val itemUomRespository: ItemUomRespository,
): AbstractBaseEntityService<StockInLine, Long, StockInLineRepository>(jdbcDao, stockInLineRepository) {

open fun getStockInLineInfo(stockInLineId: Long): StockInLineInfo {
@@ -130,11 +132,17 @@ open class StockInLineService(
val inventoryLotLine = InventoryLotLine()
println(request.warehouseId!!)
val warehouse = warehouseRepository.findById(request.warehouseId!!).orElseThrow()
val baseItemUom = itemUomRespository.findBaseUnitByItemIdAndBaseUnitIsTrueAndDeletedIsFalse(
itemId = request.itemId
)
println(stockInLine.purchaseOrderLine!!.uom!!.id!!)
println(request.itemId)
inventoryLotLine.apply {
this.inventoryLot = stockInLine.inventoryLot
this.warehouse = warehouse
this.inQty = request.acceptedQty
this.status = "available"
this.baseUom = baseItemUom
}
val savedInventoryLotLine = inventoryLotLineRepository.saveAndFlush(inventoryLotLine)
return savedInventoryLotLine


Binārs
src/main/resources/bomImport/006 PP1080 咖喱汁 Pings BOM Template v3.xlsx Parādīt failu


Binārs
src/main/resources/bomImport/016 PP1133 豬骨粥(1位份量)(1磅包) Pings BOM Template v3.xlsx Parādīt failu


Binārs
src/main/resources/bomImport/017 PP1136 白粥 Pings BOM Template v3.xlsx Parādīt failu


Binārs
src/main/resources/bomImport/024 PP - PP1175_鮮檸檬汁 Pings BOM Template v3.xlsx Parādīt failu


Binārs
src/main/resources/bomImport/206 PP2258 豬骨粥箱料粉 Pings BOM Template v3.xlsx Parādīt failu


Binārs
src/main/resources/bomImport/208 PP2256 瑤柱碎 Pings BOM Template v3.xlsx Parādīt failu


Binārs
src/main/resources/bomImport/40 PP1224 柚子蒜蓉汁 Pings BOM Template.xlsx Parādīt failu


+ 4
- 0
src/main/resources/db/changelog/changes/20250613_01_derek/01_update_inventory_lot_line_uom_id.sql Parādīt failu

@@ -0,0 +1,4 @@
-- liquibase formatted sql
-- changeset derek:update_inventory_lot_line_uom_id
ALTER TABLE `inventory_lot_line`
ADD COLUMN `baseItemUomId` INT(11) NOT NULL

Notiek ielāde…
Atcelt
Saglabāt