| @@ -71,20 +71,11 @@ open class TruckLaneRenameService( | |||||
| val oldTimeLabel = describeTimes(sourceRows.map { it.departureTime }) | val oldTimeLabel = describeTimes(sourceRows.map { it.departureTime }) | ||||
| val casings = sourceRows.map { it.truckLanceCode?.trim().orEmpty() }.filter { it.isNotEmpty() }.distinct() | val casings = sourceRows.map { it.truckLanceCode?.trim().orEmpty() }.filter { it.isNotEmpty() }.distinct() | ||||
| // Existing delivery tickets (pending / released / assigned / completed) keep the old name. | |||||
| // Later releases copy the new master name at insert time. | |||||
| var scheduleCount = 0 | var scheduleCount = 0 | ||||
| var ticketCount = 0 | |||||
| for (casing in casings) { | for (casing in casings) { | ||||
| scheduleCount += applyOpenScheduleRename(casing, newCode, floor, remarkKey) | scheduleCount += applyOpenScheduleRename(casing, newCode, floor, remarkKey) | ||||
| val params = ticketParams(casing, floor, remarkKey).toMutableMap() | |||||
| params["newCode"] = newCode | |||||
| ticketCount += jdbcDao.executeUpdate( | |||||
| updateTicketSql(DOPO_UPDATE_SQL, req.departureTimeChanged), | |||||
| withTime(params, newTime), | |||||
| ) | |||||
| jdbcDao.executeUpdate( | |||||
| updateTicketSql(PICK_UPDATE_SQL, req.departureTimeChanged), | |||||
| withTime(params, newTime), | |||||
| ) | |||||
| } | } | ||||
| for (row in sourceRows) { | for (row in sourceRows) { | ||||
| row.truckLanceCode = newCode | row.truckLanceCode = newCode | ||||
| @@ -99,12 +90,12 @@ open class TruckLaneRenameService( | |||||
| log.remark = remarkKey.ifEmpty { null } | log.remark = remarkKey.ifEmpty { null } | ||||
| log.oldDepartureTime = oldTimeLabel | log.oldDepartureTime = oldTimeLabel | ||||
| log.newDepartureTime = if (req.departureTimeChanged) newTime.toString() else oldTimeLabel | log.newDepartureTime = if (req.departureTimeChanged) newTime.toString() else oldTimeLabel | ||||
| log.ticketCount = ticketCount | |||||
| log.ticketCount = 0 | |||||
| renameLogRepository.save(log) | renameLogRepository.save(log) | ||||
| return RenameTruckLaneResponse( | return RenameTruckLaneResponse( | ||||
| truckLanceCode = newCode, | truckLanceCode = newCode, | ||||
| ticketCount = ticketCount, | |||||
| ticketCount = 0, | |||||
| scheduleLineCount = scheduleCount, | scheduleLineCount = scheduleCount, | ||||
| ) | ) | ||||
| } | } | ||||
| @@ -196,18 +187,6 @@ open class TruckLaneRenameService( | |||||
| } | } | ||||
| } | } | ||||
| private fun withTime(params: MutableMap<String, Any?>, time: LocalTime?): Map<String, Any?> { | |||||
| if (time != null) params["newTime"] = time.toString() | |||||
| return params | |||||
| } | |||||
| private fun updateTicketSql(base: String, withTime: Boolean): String { | |||||
| if (!withTime) return base | |||||
| return base.replace("SET colCode = :newCode", "SET colCode = :newCode, colTime = :newTime") | |||||
| .replace("SET TruckLanceCode = :newCode", "SET TruckLanceCode = :newCode, truck_departure_time = :newTime") | |||||
| .replace("SET truckLanceCode = :newCode", "SET truckLanceCode = :newCode, truckDepartureTime = :newTime") | |||||
| } | |||||
| private fun ticketParams(code: String, floor: String, remarkKey: String): Map<String, Any?> = mapOf( | private fun ticketParams(code: String, floor: String, remarkKey: String): Map<String, Any?> = mapOf( | ||||
| "oldCode" to code, | "oldCode" to code, | ||||
| "floor" to floor, | "floor" to floor, | ||||
| @@ -273,24 +252,6 @@ open class TruckLaneRenameService( | |||||
| AND ${FLOOR_MATCH.replace("storeCol", "storeId")} | AND ${FLOOR_MATCH.replace("storeCol", "storeId")} | ||||
| """.trimIndent() | """.trimIndent() | ||||
| private val DOPO_UPDATE_SQL = """ | |||||
| UPDATE delivery_order_pick_order | |||||
| SET truckLanceCode = :newCode, version = version + 1 | |||||
| WHERE deleted = 0 | |||||
| AND ticketStatus IN ('pending', 'released') | |||||
| AND TRIM(truckLanceCode) = :oldCode | |||||
| AND ${FLOOR_MATCH.replace("storeCol", "storeId")} | |||||
| """.trimIndent() | |||||
| private val PICK_UPDATE_SQL = """ | |||||
| UPDATE do_pick_order | |||||
| SET TruckLanceCode = :newCode, version = version + 1 | |||||
| WHERE deleted = 0 | |||||
| AND ticket_status IN ('pending', 'released') | |||||
| AND TRIM(TruckLanceCode) = :oldCode | |||||
| AND ${FLOOR_MATCH.replace("storeCol", "store_id")} | |||||
| """.trimIndent() | |||||
| private val OPEN_SCHEDULE_COUNT_SQL = """ | private val OPEN_SCHEDULE_COUNT_SQL = """ | ||||
| SELECT COUNT(*) AS cnt | SELECT COUNT(*) AS cnt | ||||
| FROM truck_lane_schedule_line l | FROM truck_lane_schedule_line l | ||||