@@ -1,6 +1,9 @@ | |||||
package com.ffii.fpsms.modules.jobOrder.entity | package com.ffii.fpsms.modules.jobOrder.entity | ||||
import com.ffii.core.support.AbstractRepository | import com.ffii.core.support.AbstractRepository | ||||
import com.ffii.fpsms.modules.jobOrder.entity.projections.JobOrderInfo | |||||
import org.springframework.data.domain.Page | |||||
import org.springframework.data.domain.Pageable | |||||
import org.springframework.data.jpa.repository.Query | import org.springframework.data.jpa.repository.Query | ||||
import org.springframework.stereotype.Repository | import org.springframework.stereotype.Repository | ||||
@@ -10,4 +13,6 @@ interface JobOrderRepository : AbstractRepository<JobOrder, Long> { | |||||
select jo.code from JobOrder jo where jo.code like :prefix% order by jo.code desc limit 1 | select jo.code from JobOrder jo where jo.code like :prefix% order by jo.code desc limit 1 | ||||
""") | """) | ||||
fun findLatestCodeByPrefix(prefix: String): String? | fun findLatestCodeByPrefix(prefix: String): String? | ||||
fun findJobOrderInfoByCodeContainsAndBomNameContainsAndDeletedIsFalseOrderByIdDesc(code: String, bomName: String, pageable: Pageable): Page<JobOrderInfo> | |||||
} | } |
@@ -0,0 +1,15 @@ | |||||
package com.ffii.fpsms.modules.jobOrder.entity.projections | |||||
import org.springframework.beans.factory.annotation.Value | |||||
import java.math.BigDecimal | |||||
interface JobOrderInfo { | |||||
val id: Long; | |||||
val code: String; | |||||
@get:Value("#{target.bom.name}") | |||||
val name: String; | |||||
val reqQty: BigDecimal; | |||||
@get:Value("#{target.bom.outputQtyUom}") | |||||
val uom: String; | |||||
val status: String; | |||||
} |
@@ -1,12 +1,16 @@ | |||||
package com.ffii.fpsms.modules.jobOrder.service | package com.ffii.fpsms.modules.jobOrder.service | ||||
import com.ffii.core.response.RecordsRes | |||||
import com.ffii.fpsms.modules.jobOrder.entity.JobOrder | import com.ffii.fpsms.modules.jobOrder.entity.JobOrder | ||||
import com.ffii.fpsms.modules.jobOrder.entity.JobOrderRepository | import com.ffii.fpsms.modules.jobOrder.entity.JobOrderRepository | ||||
import com.ffii.fpsms.modules.jobOrder.entity.projections.JobOrderInfo | |||||
import com.ffii.fpsms.modules.jobOrder.web.model.CreateJobOrderRequest | import com.ffii.fpsms.modules.jobOrder.web.model.CreateJobOrderRequest | ||||
import com.ffii.fpsms.modules.jobOrder.web.model.SearchJobOrderInfoRequest | |||||
import com.ffii.fpsms.modules.master.entity.ProductionScheduleLineRepository | import com.ffii.fpsms.modules.master.entity.ProductionScheduleLineRepository | ||||
import com.ffii.fpsms.modules.master.service.BomService | import com.ffii.fpsms.modules.master.service.BomService | ||||
import com.ffii.fpsms.modules.master.web.models.MessageResponse | import com.ffii.fpsms.modules.master.web.models.MessageResponse | ||||
import com.ffii.fpsms.modules.user.service.UserService | import com.ffii.fpsms.modules.user.service.UserService | ||||
import org.springframework.data.domain.PageRequest | |||||
import org.springframework.stereotype.Service | import org.springframework.stereotype.Service | ||||
import java.time.LocalDate | import java.time.LocalDate | ||||
import java.time.LocalDateTime | import java.time.LocalDateTime | ||||
@@ -20,6 +24,19 @@ open class JobOrderService( | |||||
val userService: UserService, | val userService: UserService, | ||||
val productionScheduleLineRepository: ProductionScheduleLineRepository, | val productionScheduleLineRepository: ProductionScheduleLineRepository, | ||||
) { | ) { | ||||
open fun allJobOrdersByPage(request: SearchJobOrderInfoRequest): RecordsRes<JobOrderInfo> { | |||||
val pageable = PageRequest.of(request.pageNum ?: 0, request.pageSize ?: 10); | |||||
val response = jobOrderRepository.findJobOrderInfoByCodeContainsAndBomNameContainsAndDeletedIsFalseOrderByIdDesc( | |||||
code = request.code ?: "", | |||||
bomName = request.name ?: "", | |||||
pageable = pageable | |||||
) | |||||
val records = response.content | |||||
val total = response.totalElements | |||||
return RecordsRes<JobOrderInfo>(records, total.toInt()); | |||||
} | |||||
open fun assignJobNo(): String { | open fun assignJobNo(): String { | ||||
val suffixFormat = "%03d" | val suffixFormat = "%03d" | ||||
val pattern = "yyyyMMdd" | val pattern = "yyyyMMdd" | ||||
@@ -0,0 +1,22 @@ | |||||
package com.ffii.fpsms.modules.jobOrder.web | |||||
import com.ffii.core.response.RecordsRes | |||||
import com.ffii.fpsms.modules.jobOrder.entity.projections.JobOrderInfo | |||||
import com.ffii.fpsms.modules.jobOrder.service.JobOrderService | |||||
import com.ffii.fpsms.modules.jobOrder.web.model.SearchJobOrderInfoRequest | |||||
import org.springframework.web.bind.annotation.GetMapping | |||||
import org.springframework.web.bind.annotation.ModelAttribute | |||||
import org.springframework.web.bind.annotation.RequestMapping | |||||
import org.springframework.web.bind.annotation.RestController | |||||
@RestController | |||||
@RequestMapping("/jo") | |||||
class JobOrderController( | |||||
private val jobOrderService: JobOrderService, | |||||
) { | |||||
@GetMapping("/getRecordByPage") | |||||
fun allJobOrdersByPage(@ModelAttribute request: SearchJobOrderInfoRequest): RecordsRes<JobOrderInfo> { | |||||
return jobOrderService.allJobOrdersByPage(request); | |||||
} | |||||
} |
@@ -0,0 +1,8 @@ | |||||
package com.ffii.fpsms.modules.jobOrder.web.model | |||||
data class SearchJobOrderInfoRequest( | |||||
val code: String?, | |||||
val name: String?, | |||||
val pageSize: Int?, | |||||
val pageNum: Int?, | |||||
) |
@@ -0,0 +1,14 @@ | |||||
-- liquibase formatted sql | |||||
-- changeset cyril:update_job_order_bom_material | |||||
ALTER TABLE `job_order_bom_material` | |||||
DROP FOREIGN KEY `FK_JOBM_TO_SUGGESTED_PICK_LOT_ON_SUGGESTED_PICK_LOT_ID`; | |||||
ALTER TABLE `job_order_bom_material` | |||||
CHANGE COLUMN `suggestedPickLotId` `stockOutLineId` INT NULL DEFAULT NULL , | |||||
DROP INDEX `FK_JOBM_TO_SUGGESTED_PICK_LOT_ON_SUGGESTED_PICK_LOT_ID` , | |||||
ADD INDEX `FK_JOBM_TO_STOCK_OUT_LINE_ID` (`stockOutLineId` ASC) VISIBLE; | |||||
; | |||||
ALTER TABLE `job_order_bom_material` | |||||
ADD CONSTRAINT `FK_JOBM_TO_STOCK_OUT_LINE_ON_STOCK_OUT_LINE_ID` | |||||
FOREIGN KEY (`stockOutLineId`) | |||||
REFERENCES `stock_out_line` (`id`); |