diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrder.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrder.kt index 185d268..e7767c9 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrder.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrder.kt @@ -2,7 +2,6 @@ package com.ffii.fpsms.modules.jobOrder.entity import jakarta.persistence.* import java.time.LocalDateTime -import java.time.LocalTime import com.ffii.fpsms.modules.jobOrder.enums.JoPickOrderStatus import org.hibernate.annotations.CreationTimestamp import org.hibernate.annotations.UpdateTimestamp @@ -16,20 +15,45 @@ class JoPickOrder { @Column(name = "pick_order_id") var pickOrderId: Long? = null - @Column(name = "item_id") var itemId: Long? = null + @Enumerated(EnumType.STRING) - @Column(name = "second_qr_scan_status") - var second_qr_scan_status: JoPickOrderStatus? = null - @Column(name = "second_qr_scan_by") - var second_qr_scan_by: Long? = null - @Column(name = "second_qr_scan_qty") - var second_qr_scan_qty: Int? = null + @Column(name = "match_status") + var matchStatus: JoPickOrderStatus? = null + + @Column(name = "match_by") + var matchBy: Long? = null + + @Column(name = "match_qty") + var matchQty: Int? = null + @Column(name = "handled_by") var handledBy: Long? = null + // New columns + @Column(name = "jobOrderId") + var jobOrderId: Long? = null + + @Column(name = "jobOrderCode") + var jobOrderCode: String? = null + + @Column(name = "targetDate") + var targetDate: LocalDateTime? = null + + @Column(name = "itemCode") + var itemCode: String? = null + + @Column(name = "ticketReleaseTime") + var ticketReleaseTime: LocalDateTime? = null + + @Column(name = "ticketCompleteTime") + var ticketCompleteTime: LocalDateTime? = null + + @Column(name = "pickOrderCode") + var pickOrderCode: String? = null + @CreationTimestamp @Column(name = "created") var created: LocalDateTime? = null @@ -49,31 +73,41 @@ class JoPickOrder { @Column(name = "deleted") var deleted: Boolean = false - - @Column(name = "hide", nullable = false) - var hide: Boolean = false // Default constructor for Hibernate constructor() // Constructor for creating new instances constructor( - pickOrderId: Long? = null, itemId: Long? = null, - second_qr_scan_status: JoPickOrderStatus? = null, - second_qr_scan_by: Long? = null, - second_qr_scan_qty: Int? = null, + matchStatus: JoPickOrderStatus? = null, + matchBy: Long? = null, + matchQty: Int? = null, handledBy: Long? = null, + jobOrderId: Long? = null, + jobOrderCode: String? = null, + targetDate: LocalDateTime? = null, + itemCode: String? = null, + ticketReleaseTime: LocalDateTime? = null, + ticketCompleteTime: LocalDateTime? = null, + pickOrderCode: String? = null, createdBy: String? = null, modifiedBy: String? = null ) { this.pickOrderId = pickOrderId this.itemId = itemId - this.second_qr_scan_status = second_qr_scan_status - this.second_qr_scan_by = second_qr_scan_by - this.second_qr_scan_qty = second_qr_scan_qty + this.matchStatus = matchStatus + this.matchBy = matchBy + this.matchQty = matchQty this.handledBy = handledBy + this.jobOrderId = jobOrderId + this.jobOrderCode = jobOrderCode + this.targetDate = targetDate + this.itemCode = itemCode + this.ticketReleaseTime = ticketReleaseTime + this.ticketCompleteTime = ticketCompleteTime + this.pickOrderCode = pickOrderCode this.createdBy = createdBy this.modifiedBy = modifiedBy } diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrderRecord.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrderRecord.kt index ce1cb87..bcd583a 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrderRecord.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JoPickOrderRecord.kt @@ -2,7 +2,6 @@ package com.ffii.fpsms.modules.jobOrder.entity import jakarta.persistence.* import java.time.LocalDateTime -import java.time.LocalTime import com.ffii.fpsms.modules.jobOrder.enums.JoPickOrderStatus import org.hibernate.annotations.CreationTimestamp import org.hibernate.annotations.UpdateTimestamp @@ -16,20 +15,45 @@ class JoPickOrderRecord { @Column(name = "pick_order_id") var pickOrderId: Long? = null - @Column(name = "item_id") var itemId: Long? = null + @Enumerated(EnumType.STRING) - @Column(name = "second_qr_scan_status") - var second_qr_scan_status: JoPickOrderStatus? = null - @Column(name = "second_qr_scan_by") - var second_qr_scan_by: Long? = null - @Column(name = "second_qr_scan_qty") - var second_qr_scan_qty: Int? = null + @Column(name = "match_status") + var matchStatus: JoPickOrderStatus? = null + + @Column(name = "match_by") + var matchBy: Long? = null + + @Column(name = "match_qty") + var matchQty: Int? = null + @Column(name = "handled_by") var handledBy: Long? = null + // New columns + @Column(name = "jobOrderId") + var jobOrderId: Long? = null + + @Column(name = "jobOrderCode") + var jobOrderCode: String? = null + + @Column(name = "targetDate") + var targetDate: LocalDateTime? = null + + @Column(name = "itemCode") + var itemCode: String? = null + + @Column(name = "ticketReleaseTime") + var ticketReleaseTime: LocalDateTime? = null + + @Column(name = "ticketCompleteTime") + var ticketCompleteTime: LocalDateTime? = null + + @Column(name = "pickOrderCode") + var pickOrderCode: String? = null + @CreationTimestamp @Column(name = "created") var created: LocalDateTime? = null @@ -49,31 +73,41 @@ class JoPickOrderRecord { @Column(name = "deleted") var deleted: Boolean = false - - @Column(name = "hide", nullable = false) - var hide: Boolean = false // Default constructor for Hibernate constructor() // Constructor for creating new instances constructor( - pickOrderId: Long? = null, itemId: Long? = null, - second_qr_scan_status: JoPickOrderStatus? = null, - second_qr_scan_by: Long? = null, - second_qr_scan_qty: Int? = null, + matchStatus: JoPickOrderStatus? = null, + matchBy: Long? = null, + matchQty: Int? = null, handledBy: Long? = null, + jobOrderId: Long? = null, + jobOrderCode: String? = null, + targetDate: LocalDateTime? = null, + itemCode: String? = null, + ticketReleaseTime: LocalDateTime? = null, + ticketCompleteTime: LocalDateTime? = null, + pickOrderCode: String? = null, createdBy: String? = null, modifiedBy: String? = null ) { this.pickOrderId = pickOrderId this.itemId = itemId - this.second_qr_scan_status = second_qr_scan_status - this.second_qr_scan_by = second_qr_scan_by - this.second_qr_scan_qty = second_qr_scan_qty + this.matchStatus = matchStatus + this.matchBy = matchBy + this.matchQty = matchQty this.handledBy = handledBy + this.jobOrderId = jobOrderId + this.jobOrderCode = jobOrderCode + this.targetDate = targetDate + this.itemCode = itemCode + this.ticketReleaseTime = ticketReleaseTime + this.ticketCompleteTime = ticketCompleteTime + this.pickOrderCode = pickOrderCode this.createdBy = createdBy this.modifiedBy = modifiedBy } diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt index 154fdb6..47bf62d 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt @@ -45,18 +45,33 @@ open class JoPickOrderService( // ✅ Update JoPickOrder status to released open fun updateHandledByForPickOrder(pickOrderId: Long, userId: Long): List { val joPickOrders = joPickOrderRepository.findByPickOrderId(pickOrderId) + + // Get pick order details to populate new fields + val pickOrder = pickOrderRepository.findById(pickOrderId).orElse(null) + joPickOrders.forEach { it.handledBy = userId - it.second_qr_scan_status = JoPickOrderStatus.pending // Set initial status + it.matchStatus = JoPickOrderStatus.pending // Set initial status + + // Set ticket release time (similar to pick order released date) + it.ticketReleaseTime = LocalDateTime.now() + + // Populate additional fields from pick order + pickOrder?.let { po -> + it.pickOrderCode = po.code + it.targetDate = po.targetDate + it.jobOrderId = po.jobOrder?.id + it.jobOrderCode = po.jobOrder?.code + } } return joPickOrderRepository.saveAll(joPickOrders) } - // ✅ Complete JoPickOrder open fun completeJoPickOrdersForPickOrder(pickOrderId: Long): List { val joPickOrders = joPickOrderRepository.findByPickOrderId(pickOrderId) joPickOrders.forEach { - it.second_qr_scan_status = JoPickOrderStatus.completed + it.matchStatus = JoPickOrderStatus.completed + it.ticketCompleteTime = LocalDateTime.now() // Set complete time } return joPickOrderRepository.saveAll(joPickOrders) } @@ -64,9 +79,24 @@ open class JoPickOrderService( // ✅ Update JoPickOrderRecord status to released open fun updateRecordHandledByForPickOrder(pickOrderId: Long, userId: Long): List { val joPickOrderRecords = joPickOrderRecordRepository.findByPickOrderId(pickOrderId) + + // Get pick order details to populate new fields + val pickOrder = pickOrderRepository.findById(pickOrderId).orElse(null) + joPickOrderRecords.forEach { it.handledBy = userId - it.second_qr_scan_status = JoPickOrderStatus.pending // Set initial status + it.matchStatus = JoPickOrderStatus.pending // Set initial status + + // Set ticket release time + it.ticketReleaseTime = LocalDateTime.now() + + // Populate additional fields from pick order + pickOrder?.let { po -> + it.pickOrderCode = po.code + it.targetDate = po.targetDate + it.jobOrderId = po.jobOrder?.id + it.jobOrderCode = po.jobOrder?.code + } } return joPickOrderRecordRepository.saveAll(joPickOrderRecords) } @@ -75,7 +105,8 @@ open class JoPickOrderService( open fun completeJoPickOrderRecordsForPickOrder(pickOrderId: Long): List { val joPickOrderRecords = joPickOrderRecordRepository.findByPickOrderId(pickOrderId) joPickOrderRecords.forEach { - it.second_qr_scan_status = JoPickOrderStatus.completed + it.matchStatus = JoPickOrderStatus.completed + it.ticketCompleteTime = LocalDateTime.now() // Set complete time } return joPickOrderRecordRepository.saveAll(joPickOrderRecords) } @@ -93,31 +124,68 @@ open class JoPickOrderService( // ✅ Create JoPickOrder records for a pick order @Transactional open fun createJoPickOrdersForPickOrder(pickOrderId: Long, itemIds: List): List { + // Get pick order and item details + val pickOrder = pickOrderRepository.findById(pickOrderId).orElse(null) + val joPickOrders = itemIds.map { itemId -> + // Get item code from database - 修复:使用 queryForList + val itemCodeResult = jdbcDao.queryForList( + "SELECT code FROM fpsmsdb.items WHERE id = :itemId", + mapOf("itemId" to itemId) + ) + val itemCode = if (itemCodeResult.isNotEmpty()) { + itemCodeResult.first()["code"] as String? + } else { + null + } + JoPickOrder( pickOrderId = pickOrderId, itemId = itemId, - second_qr_scan_status = JoPickOrderStatus.pending, - handledBy = null + matchStatus = JoPickOrderStatus.pending, + handledBy = null, + jobOrderId = pickOrder?.jobOrder?.id, + jobOrderCode = pickOrder?.jobOrder?.code, + targetDate = pickOrder?.targetDate, + itemCode = itemCode, + pickOrderCode = pickOrder?.code ) } return joPickOrderRepository.saveAll(joPickOrders) } - // ✅ Create JoPickOrderRecord records for a pick order @Transactional open fun createJoPickOrderRecordsForPickOrder(pickOrderId: Long, itemIds: List): List { + // Get pick order and item details + val pickOrder = pickOrderRepository.findById(pickOrderId).orElse(null) + val joPickOrderRecords = itemIds.map { itemId -> + // Get item code from database - 修复:使用 queryForList + val itemCodeResult = jdbcDao.queryForList( + "SELECT code FROM fpsmsdb.items WHERE id = :itemId", + mapOf("itemId" to itemId) + ) + val itemCode = if (itemCodeResult.isNotEmpty()) { + itemCodeResult.first()["code"] as String? + } else { + null + } + JoPickOrderRecord( pickOrderId = pickOrderId, itemId = itemId, - second_qr_scan_status = JoPickOrderStatus.pending, - handledBy = null + matchStatus = JoPickOrderStatus.pending, + handledBy = null, + jobOrderId = pickOrder?.jobOrder?.id, + jobOrderCode = pickOrder?.jobOrder?.code, + targetDate = pickOrder?.targetDate, + itemCode = itemCode, + pickOrderCode = pickOrder?.code, + ) } return joPickOrderRecordRepository.saveAll(joPickOrderRecords) } - open fun getAllJobOrderLotsWithDetailsHierarchical(userId: Long): Map { println("=== Debug: getAllJobOrderLotsWithDetailsHierarchical ===") println("today: ${LocalDate.now()}") @@ -139,10 +207,7 @@ open class JoPickOrderService( println("🔍 DEBUG: Found ${allAssignedPickOrders.size} job order pick orders assigned to user $userId") - val visiblePickOrders = allAssignedPickOrders.filter { pickOrder -> - val joPickOrders = findByPickOrderId(pickOrder.id!!) - joPickOrders.none { it.hide } // Only show hide = false orders - } + val visiblePickOrders = allAssignedPickOrders // Filter based on assignment and status val filteredPickOrders = if (visiblePickOrders.isNotEmpty()) { @@ -283,9 +348,11 @@ open class JoPickOrderService( END as processingStatus, -- JoPickOrder second scan status - jpo.second_qr_scan_status as secondQrScanStatus, - jpo.second_qr_scan_by as secondQrScanBy, - jpo.second_qr_scan_qty as secondQrScanQty + jpo.match_status as match_status, + jpo.match_by as match_by, + jpo.match_qty as match_qty, + jpo.ticketReleaseTime as ticketReleaseTime, + jpo.ticketCompleteTime as ticketCompleteTime FROM fpsmsdb.pick_order po JOIN fpsmsdb.job_order jo ON jo.id = po.joId @@ -385,9 +452,9 @@ open class JoPickOrderService( "routerArea" to row["routerArea"], "routerRoute" to row["routerRoute"], "uomShortDesc" to row["uomShortDesc"], - "secondQrScanStatus" to row["secondQrScanStatus"], - "secondQrScanBy" to row["secondQrScanBy"], - "secondQrScanQty" to row["secondQrScanQty"] + "match_status" to row["match_status"], + "match_by" to row["match_by"], + "match_qty" to row["match_qty"] ) } ) @@ -430,10 +497,7 @@ open fun getCompletedJobOrderLotsHierarchical(userId: Long): Map { println("🔍 DEBUG: Found ${completedPickOrders.size} completed job order pick orders assigned to user $userId") - val visiblePickOrders = completedPickOrders.filter { pickOrder -> - val joPickOrders = findByPickOrderId(pickOrder.id!!) - joPickOrders.none { it.hide } // Only show hide = false orders - } + val visiblePickOrders = completedPickOrders if (visiblePickOrders.isEmpty()) { println("🔍 DEBUG: No visible completed job orders found") @@ -560,9 +624,9 @@ open fun getCompletedJobOrderLotsHierarchical(userId: Long): Map { END as processingStatus, -- JoPickOrder second scan status - jpo.second_qr_scan_status as secondQrScanStatus, - jpo.second_qr_scan_by as secondQrScanBy, - jpo.second_qr_scan_qty as secondQrScanQty + jpo.match_status as match_status, + jpo.match_by as match_by, + jpo.match_qty as match_qty FROM fpsmsdb.pick_order po JOIN fpsmsdb.job_order jo ON jo.id = po.joId @@ -585,7 +649,7 @@ open fun getCompletedJobOrderLotsHierarchical(userId: Long): Map { AND ill.deleted = false AND il.deleted = false AND (spl.pickOrderLineId IS NOT NULL OR sol.pickOrderLineId IS NOT NULL) - AND jpo.second_qr_scan_status = 'pending' OR jpo.second_qr_scan_status = 'scanned' + AND (jpo.match_status = 'pending' OR jpo.match_status = 'scanned') ORDER BY CASE WHEN sol.status = 'rejected' THEN 0 ELSE 1 END, COALESCE(ro.`order`, 999999) ASC, @@ -663,7 +727,7 @@ open fun getCompletedJobOrderLotsHierarchical(userId: Long): Map { "routerArea" to row["routerArea"], "routerRoute" to row["routerRoute"], "uomShortDesc" to row["uomShortDesc"], - "secondQrScanStatus" to row["secondQrScanStatus"] + "match_status" to row["match_status"] ) } ) @@ -693,7 +757,7 @@ open fun getCompletedJobOrderLotsHierarchical(userId: Long): Map { // Get all completed JoPickOrderRecord records for the user val allRecords = joPickOrderRecordRepository.findAll() val completedRecords = allRecords.filter { - it.second_qr_scan_status == JoPickOrderStatus.completed && + it.matchStatus == JoPickOrderStatus.completed && it.handledBy == userId } @@ -712,9 +776,9 @@ open fun getCompletedJobOrderLotsHierarchical(userId: Long): Map { "jobOrderCode" to jobOrder?.code, "jobOrderName" to jobOrder?.bom?.name, "itemId" to record.itemId, - "secondQrScanStatus" to record.second_qr_scan_status, - "secondQrScanBy" to record.second_qr_scan_by, - "secondQrScanQty" to record.second_qr_scan_qty, + "match_status" to record.matchStatus, + "match_by" to record.matchBy, + "match_qty" to record.matchQty, "handledBy" to record.handledBy, "created" to record.created, "completeDate" to pickOrder.completeDate @@ -816,7 +880,7 @@ open fun assignJobOrderPickOrderToUser(pickOrderId: Long, userId: Long): Message // ✅ 修复:使用 this 而不是 joPickOrderService this.updateHandledByForPickOrder(pickOrderId, userId) - + this.updateRecordHandledByForPickOrder(pickOrderId, userId) MessageResponse( id = pickOrder.id, code = pickOrder.code, @@ -838,10 +902,10 @@ open fun assignJobOrderPickOrderToUser(pickOrderId: Long, userId: Long): Message ) } } - // ✅ Fix the updateSecondQrScanStatus method -open fun updateSecondQrScanStatus(pickOrderId: Long, itemId: Long): MessageResponse { + // ✅ Fix the updateMatchStatus method +open fun updateMatchStatus(pickOrderId: Long, itemId: Long): MessageResponse { try { - println("=== Debug: updateSecondQrScanStatus ===") + println("=== Debug: updateMatchStatus ===") println("pickOrderId: $pickOrderId, itemId: $itemId") val joPickOrder = joPickOrderRepository.findByPickOrderIdAndItemId(pickOrderId, itemId) @@ -858,7 +922,7 @@ open fun updateSecondQrScanStatus(pickOrderId: Long, itemId: Long): MessageRespo } val joPickOrderEntity = joPickOrder.get() - joPickOrderEntity.second_qr_scan_status = JoPickOrderStatus.scanned // ✅ Use enum instead of string + joPickOrderEntity.matchStatus = JoPickOrderStatus.scanned // ✅ Use enum instead of string joPickOrderRepository.save(joPickOrderEntity) return MessageResponse( @@ -902,14 +966,14 @@ open fun submitSecondScanQty(request: SecondScanSubmitRequest): MessageResponse } val joPickOrderEntity = joPickOrder.get() - joPickOrderEntity.second_qr_scan_qty = request.qty.toInt() + joPickOrderEntity.matchQty = request.qty.toInt() // ✅ Always set status to completed when submitting quantity - joPickOrderEntity.second_qr_scan_status = JoPickOrderStatus.completed + joPickOrderEntity.matchStatus = JoPickOrderStatus.completed joPickOrderRepository.save(joPickOrderEntity) - println("✅ Updated jo_pick_order: status=${joPickOrderEntity.second_qr_scan_status}, qty=${joPickOrderEntity.second_qr_scan_qty}") + println("✅ Updated jo_pick_order: status=${joPickOrderEntity.matchStatus}, qty=${joPickOrderEntity.matchQty}") return MessageResponse( id = null, @@ -992,8 +1056,8 @@ open fun recordSecondScanIssue(request: SecondScanIssueRequest): MessageResponse val joPickOrderEntity = joPickOrder.get() - joPickOrderEntity.second_qr_scan_status = JoPickOrderStatus.completed - joPickOrderEntity.second_qr_scan_qty = request.qty.toInt() + joPickOrderEntity.matchStatus = JoPickOrderStatus.completed + joPickOrderEntity.matchQty = request.qty.toInt() joPickOrderRepository.save(joPickOrderEntity) // ✅ Create pick execution issue with complete data @@ -1065,7 +1129,7 @@ open fun getCompletedJobOrderPickOrdersWithCompletedSecondScan(userId: Long): Li // Check if all items in this pick order have completed second scan val joPickOrders = findByPickOrderId(pickOrder.id!!) val allSecondScanCompleted = joPickOrders.isNotEmpty() && - joPickOrders.all { it.second_qr_scan_status == JoPickOrderStatus.completed } + joPickOrders.all { it.matchStatus == JoPickOrderStatus.completed } if (allSecondScanCompleted) { mapOf( @@ -1089,7 +1153,7 @@ open fun getCompletedJobOrderPickOrdersWithCompletedSecondScan(userId: Long): Li "planEnd" to jobOrder.planEnd, "secondScanCompleted" to true, "totalItems" to joPickOrders.size, - "completedItems" to joPickOrders.count { it.second_qr_scan_status == JoPickOrderStatus.completed } + "completedItems" to joPickOrders.count { it.matchStatus == JoPickOrderStatus.completed } ) } else { println("❌ Pick order ${pickOrder.id} has incomplete second scan, skipping.") @@ -1221,9 +1285,9 @@ open fun getCompletedJobOrderPickOrderLotDetails(pickOrderId: Long): List(jdbcDao, pickOrderRepository) { @@ -1215,12 +1219,34 @@ logger.info("Precreated $precreated stock out lines for suggested lots on releas pickOrder.completeDate = LocalDateTime.now() pickOrderRepository.save(pickOrder) println("✅ Updated pick order ${pickOrder.code} to COMPLETED status") + val removedCount = doPickOrderService.removeDoPickOrdersForPickOrder(pickOrderId) println("✅ Removed $removedCount do_pick_order records for completed pick order ${pickOrderId}") // ✅ Update do_pick_order_record status to completed (don't remove) doPickOrderService.completeDoPickOrderRecordsForPickOrder(pickOrderId) println("✅ Updated do_pick_order_record status to COMPLETED for pick order ${pickOrderId}") + + // ✅ 添加:直接使用 Repository 处理 JO pick order(避免循环依赖) + if (pickOrder.jobOrder != null) { + // Complete jo_pick_order + val joPickOrders = joPickOrderRepository.findByPickOrderId(pickOrderId) + joPickOrders.forEach { + it.matchStatus = JoPickOrderStatus.completed + it.ticketCompleteTime = LocalDateTime.now() + } + joPickOrderRepository.saveAll(joPickOrders) + + // Complete jo_pick_order_record + val joPickOrderRecords = joPickOrderRecordRepository.findByPickOrderId(pickOrderId) + joPickOrderRecords.forEach { + it.matchStatus = JoPickOrderStatus.completed + it.ticketCompleteTime = LocalDateTime.now() + } + joPickOrderRecordRepository.saveAll(joPickOrderRecords) + + println("✅ Updated jo_pick_order and jo_pick_order_record ticketCompleteTime for pick order ${pickOrderId}") + } } } } diff --git a/src/main/resources/db/changelog/changes/202510927_01_enson/02_altertable_enson.sql b/src/main/resources/db/changelog/changes/202510927_01_enson/02_altertable_enson.sql index db8c93f..bc5e957 100644 --- a/src/main/resources/db/changelog/changes/202510927_01_enson/02_altertable_enson.sql +++ b/src/main/resources/db/changelog/changes/202510927_01_enson/02_altertable_enson.sql @@ -1,6 +1,6 @@ --liquibase formatted sql ---changeset enson:update +--changeset enson:update_pick_execution_issue ALTER TABLE pick_execution_issue CHANGE COLUMN handle_status handle_status ENUM('pending', 'handled', 'resolved', "Jopending", "Johandled", "Joresloved") NULL DEFAULT 'pending' ; diff --git a/src/main/resources/db/changelog/changes/202511005_01_enson/01_altertable_enson.sql b/src/main/resources/db/changelog/changes/202511005_01_enson/01_altertable_enson.sql index e4e14a8..b960524 100644 --- a/src/main/resources/db/changelog/changes/202511005_01_enson/01_altertable_enson.sql +++ b/src/main/resources/db/changelog/changes/202511005_01_enson/01_altertable_enson.sql @@ -1,6 +1,6 @@ --liquibase formatted sql ---changeset enson:update +--changeset enson:update_pick_execution_issue CREATE TABLE router_order ( id int AUTO_INCREMENT PRIMARY KEY, diff --git a/src/main/resources/db/changelog/changes/202511005_01_enson/02_altertable_enson.sql b/src/main/resources/db/changelog/changes/202511005_01_enson/02_altertable_enson.sql index 43a5842..c8c685d 100644 --- a/src/main/resources/db/changelog/changes/202511005_01_enson/02_altertable_enson.sql +++ b/src/main/resources/db/changelog/changes/202511005_01_enson/02_altertable_enson.sql @@ -1,6 +1,6 @@ --liquibase formatted sql ---changeset enson:update +--changeset enson:update_router_table ALTER TABLE truck CHANGE COLUMN truckNo TruckLanceCode VARCHAR(50); diff --git a/src/main/resources/db/changelog/changes/202511005_08_enson/01_altertable_enson1.sql b/src/main/resources/db/changelog/changes/202511005_08_enson/01_altertable_enson1.sql new file mode 100644 index 0000000..75e7ca3 --- /dev/null +++ b/src/main/resources/db/changelog/changes/202511005_08_enson/01_altertable_enson1.sql @@ -0,0 +1,43 @@ +--liquibase formatted sql + +--changeset enson:update_truck_and_do_pick_order + +ALTER TABLE jo_pick_order +CHANGE COLUMN second_qr_scan_status match_status enum('pending','scanned','completed'), +CHANGE COLUMN second_qr_scan_by match_by int, +CHANGE COLUMN second_qr_scan_qty match_qty int; + +-- 2. Drop hide column +ALTER TABLE jo_pick_order +DROP COLUMN hide; + +-- 3. Add new columns +ALTER TABLE jo_pick_order +ADD COLUMN jobOrderId int, +ADD COLUMN jobOrderCode varchar(255), +ADD COLUMN targetDate datetime, +ADD COLUMN itemCode varchar(255), +ADD COLUMN ticketReleaseTime datetime, +ADD COLUMN ticketCompleteTime datetime, +ADD COLUMN pickOrderCode varchar(255); + +-- Modify jo_pick_order_record table +-- 1. Rename columns from second_qr_scan_ to match_ +ALTER TABLE jo_pick_order_record +CHANGE COLUMN second_qr_scan_status match_status enum('pending','scanned','completed'), +CHANGE COLUMN second_qr_scan_by match_by int, +CHANGE COLUMN second_qr_scan_qty match_qty int; + +-- 2. Drop hide column +ALTER TABLE jo_pick_order_record +DROP COLUMN hide; + +-- 3. Add new columns +ALTER TABLE jo_pick_order_record +ADD COLUMN jobOrderId int, +ADD COLUMN jobOrderCode varchar(255), +ADD COLUMN targetDate datetime, +ADD COLUMN itemCode varchar(255), +ADD COLUMN ticketReleaseTime datetime, +ADD COLUMN ticketCompleteTime datetime, +ADD COLUMN pickOrderCode varchar(255); \ No newline at end of file