浏览代码

update job order

master
cyril.tsui 2 个月前
父节点
当前提交
1633e9bace
共有 10 个文件被更改,包括 100 次插入12 次删除
  1. +5
    -2
      src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderBomMaterial.kt
  2. +2
    -0
      src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderBomMaterialRepository.kt
  3. +6
    -0
      src/main/java/com/ffii/fpsms/modules/jobOrder/enums/JobOrderBomMaterialEnum.kt
  4. +18
    -0
      src/main/java/com/ffii/fpsms/modules/jobOrder/enums/JobOrderBomMaterialEnumConverter.kt
  5. +28
    -1
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/JobOrderBomMaterialService.kt
  6. +22
    -2
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/JobOrderService.kt
  7. +13
    -2
      src/main/java/com/ffii/fpsms/modules/jobOrder/web/JobOrderController.kt
  8. +2
    -1
      src/main/java/com/ffii/fpsms/modules/jobOrder/web/model/CreateJobOrderRequest.kt
  9. +2
    -2
      src/main/java/com/ffii/fpsms/modules/jobOrder/web/model/JobOrderActionRequest.kt
  10. +2
    -2
      src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt

+ 5
- 2
src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderBomMaterial.kt 查看文件

@@ -2,6 +2,8 @@ package com.ffii.fpsms.modules.jobOrder.entity

import com.fasterxml.jackson.annotation.JsonBackReference
import com.ffii.core.entity.BaseEntity
import com.ffii.fpsms.modules.jobOrder.enums.JobOrderBomMaterialStatus
import com.ffii.fpsms.modules.jobOrder.enums.JobOrderBomMaterialStatusConverter
import com.ffii.fpsms.modules.master.entity.Items
import com.ffii.fpsms.modules.master.entity.UomConversion
import com.ffii.fpsms.modules.stock.entity.InventoryLotLine
@@ -35,10 +37,11 @@ open class JobOrderBomMaterial : BaseEntity<Long>() {
@JoinColumn(name = "uomId", nullable = false)
open var uom: UomConversion? = null

@Size(max = 255)
// @Size(max = 255)
@NotNull
@Column(name = "status", nullable = false)
open var status: String? = null
@Convert(converter = JobOrderBomMaterialStatusConverter::class)
open var status: JobOrderBomMaterialStatus? = null

@ManyToOne
@JoinColumn(name = "stockOutLineId")


+ 2
- 0
src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderBomMaterialRepository.kt 查看文件

@@ -6,4 +6,6 @@ import org.springframework.stereotype.Repository
@Repository
interface JobOrderBomMaterialRepository : AbstractRepository<JobOrderBomMaterial, Long> {
fun findByJobOrderIdAndItemId(jobOrderId: Long, itemId: Long): JobOrderBomMaterial?;

fun findAllByJobOrderId(jobOrderId: Long): List<JobOrderBomMaterial>;
}

+ 6
- 0
src/main/java/com/ffii/fpsms/modules/jobOrder/enums/JobOrderBomMaterialEnum.kt 查看文件

@@ -0,0 +1,6 @@
package com.ffii.fpsms.modules.jobOrder.enums

enum class JobOrderBomMaterialStatus(val value: String) {
PENDING("pending"),
COMPLETED("completed")
}

+ 18
- 0
src/main/java/com/ffii/fpsms/modules/jobOrder/enums/JobOrderBomMaterialEnumConverter.kt 查看文件

@@ -0,0 +1,18 @@
package com.ffii.fpsms.modules.jobOrder.enums

import jakarta.persistence.AttributeConverter
import jakarta.persistence.Converter

// Job Order Bom Material Status
@Converter(autoApply = true)
class JobOrderBomMaterialStatusConverter : AttributeConverter<JobOrderBomMaterialStatus, String> {
override fun convertToDatabaseColumn(status: JobOrderBomMaterialStatus?): String? {
return status?.value
}

override fun convertToEntityAttribute(value: String?): JobOrderBomMaterialStatus? {
return value?.let { v ->
JobOrderBomMaterialStatus.entries.find { it.value == v }
}
}
}

+ 28
- 1
src/main/java/com/ffii/fpsms/modules/jobOrder/service/JobOrderBomMaterialService.kt 查看文件

@@ -3,6 +3,7 @@ package com.ffii.fpsms.modules.jobOrder.service
import com.ffii.fpsms.modules.jobOrder.entity.JobOrderBomMaterial
import com.ffii.fpsms.modules.jobOrder.entity.JobOrderBomMaterialRepository
import com.ffii.fpsms.modules.jobOrder.entity.JobOrderRepository
import com.ffii.fpsms.modules.jobOrder.enums.JobOrderBomMaterialStatus
import com.ffii.fpsms.modules.jobOrder.web.model.CreateJobOrderBomMaterialRequest
import com.ffii.fpsms.modules.master.entity.ItemsRepository
import com.ffii.fpsms.modules.master.entity.UomConversionRepository
@@ -45,13 +46,14 @@ open class JobOrderBomMaterialService(
val jo = req.joId?.let { jobOrderRepository.findById(it).getOrNull() }
val item = req.itemId?.let { itemsRepository.findById(it).getOrNull() }
val uom = req.uomId?.let { uomConversionRepository.findById(it).getOrNull() }
val status = JobOrderBomMaterialStatus.entries.find { it.value === req.status }

JobOrderBomMaterial().apply {
jobOrder = jo
this.item = item
reqQty = req.reqQty
this.uom = uom
status = req.status
this.status = status
}
}

@@ -70,4 +72,29 @@ open class JobOrderBomMaterialService(
fun createJobOrderBomMaterialsByJoId(joId: Long): MessageResponse {
return createJobOrderBomMaterials(createJobOrderBomMaterialRequests(joId))
}

// After Picked Job Order Bom Material
fun completeJobOrderBomMaterials(joId: Long): MessageResponse {
val jobms = jobOrderBomMaterialRepository.findAllByJobOrderId(joId)
val updatedJobms = jobms.map {
it.apply {
status = JobOrderBomMaterialStatus.COMPLETED
}
}

jobOrderBomMaterialRepository.saveAll(updatedJobms)

return MessageResponse(
id = null,
name = null,
code = null,
type = null,
message = "Success",
errorPosition = null
)
}

fun completeJobOrderBomMaterialsByJoId(joId: Long): MessageResponse {
return completeJobOrderBomMaterials(joId)
}
}

+ 22
- 2
src/main/java/com/ffii/fpsms/modules/jobOrder/service/JobOrderService.kt 查看文件

@@ -10,7 +10,7 @@ import com.ffii.fpsms.modules.jobOrder.entity.projections.JobOrderDetailPickLine
import com.ffii.fpsms.modules.jobOrder.entity.projections.JobOrderInfo
import com.ffii.fpsms.modules.jobOrder.enums.JobOrderStatus
import com.ffii.fpsms.modules.jobOrder.web.model.CreateJobOrderRequest
import com.ffii.fpsms.modules.jobOrder.web.model.JobOrderReleaseRequest
import com.ffii.fpsms.modules.jobOrder.web.model.JobOrderCommonActionRequest
import com.ffii.fpsms.modules.jobOrder.web.model.SearchJobOrderInfoRequest
import com.ffii.fpsms.modules.master.entity.ProductionScheduleLineRepository
import com.ffii.fpsms.modules.master.service.BomService
@@ -158,7 +158,7 @@ open class JobOrderService(
}

@Transactional(rollbackFor = [Exception::class])
open fun releaseJobOrder(request: JobOrderReleaseRequest): MessageResponse {
open fun releaseJobOrder(request: JobOrderCommonActionRequest): MessageResponse {
val jo = request.id.let { jobOrderRepository.findById(it).getOrNull() } ?: throw NoSuchElementException()
jo.apply {
status = JobOrderStatus.PENDING
@@ -255,6 +255,26 @@ open class JobOrderService(
}


return MessageResponse(
id = jo.id,
code = jo.code,
name = jo.bom?.name,
type = null,
message = null,
errorPosition = null,
entity = mapOf("status" to jo.status?.value)
)
}


@Transactional(rollbackFor = [Exception::class])
open fun startJobOrder(request: JobOrderCommonActionRequest): MessageResponse {
val jo = request.id.let { jobOrderRepository.findById(it).getOrNull() } ?: throw NoSuchElementException()
jo.apply {
status = JobOrderStatus.PROCESSING
}
jobOrderRepository.save(jo)

return MessageResponse(
id = jo.id,
code = jo.code,


+ 13
- 2
src/main/java/com/ffii/fpsms/modules/jobOrder/web/JobOrderController.kt 查看文件

@@ -7,7 +7,7 @@ import com.ffii.fpsms.modules.jobOrder.service.JobOrderBomMaterialService
import com.ffii.fpsms.modules.jobOrder.service.JobOrderProcessService
import com.ffii.fpsms.modules.jobOrder.service.JobOrderService
import com.ffii.fpsms.modules.jobOrder.web.model.CreateJobOrderRequest
import com.ffii.fpsms.modules.jobOrder.web.model.JobOrderReleaseRequest
import com.ffii.fpsms.modules.jobOrder.web.model.JobOrderCommonActionRequest
import com.ffii.fpsms.modules.jobOrder.web.model.SearchJobOrderInfoRequest
import com.ffii.fpsms.modules.master.web.models.MessageResponse
import jakarta.validation.Valid
@@ -46,10 +46,21 @@ class JobOrderController(
}

@PostMapping("/release")
fun releaseJobOrder(@Valid @RequestBody request: JobOrderReleaseRequest): MessageResponse {
fun releaseJobOrder(@Valid @RequestBody request: JobOrderCommonActionRequest): MessageResponse {
return jobOrderService.releaseJobOrder(request)
}

@PostMapping("/start")
fun startJobOrder(@Valid @RequestBody request: JobOrderCommonActionRequest): MessageResponse {
val jo = jobOrderService.startJobOrder(request)
if (jo.id == null) {
throw NoSuchElementException()
}
jobOrderBomMaterialService.completeJobOrderBomMaterialsByJoId(jo.id)

return jo
}

@PostMapping("/manualCreate")
fun manualCreateJobOrder(@Valid @RequestBody request: CreateJobOrderRequest): MessageResponse {
val jo = jobOrderService.createJobOrder(request)


+ 2
- 1
src/main/java/com/ffii/fpsms/modules/jobOrder/web/model/CreateJobOrderRequest.kt 查看文件

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

import com.ffii.fpsms.modules.jobOrder.enums.JobOrderBomMaterialStatus
import java.math.BigDecimal
import java.time.LocalDateTime

@@ -19,7 +20,7 @@ data class CreateJobOrderBomMaterialRequest (
val itemId: Long?,
val reqQty: BigDecimal?,
val uomId: Long?,
val status: String = "pending",
val status: String = JobOrderBomMaterialStatus.PENDING.value,
)

data class CreateJobOrderProcessRequest (


+ 2
- 2
src/main/java/com/ffii/fpsms/modules/jobOrder/web/model/JobOrderActionRequest.kt 查看文件

@@ -1,5 +1,5 @@
package com.ffii.fpsms.modules.jobOrder.web.model

data class JobOrderReleaseRequest(
data class JobOrderCommonActionRequest(
val id: Long,
)
)

+ 2
- 2
src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt 查看文件

@@ -83,8 +83,8 @@ open class StockInLineService(
val pol = if (request.purchaseOrderLineId != null)
request.purchaseOrderLineId?.let { polRepository.findById(it).orElseThrow() }
else null
val stl = if (request.stockTakeId != null)
request.stockTakeId?.let { stockTakeLineRepository.findById(it).getOrNull() }
val stl = if (request.stockTakeLineId != null)
request.stockTakeLineId?.let { stockTakeLineRepository.findById(it).getOrNull() }
else null

var stockIn = if (request.stockInId != null) request.stockInId?.let { stockInRepository.findByIdAndDeletedFalse(it) }


正在加载...
取消
保存