Так, ну вроде отчет доделан.................
This commit is contained in:
parent
e1f83a204a
commit
c7ffbb6ca5
@ -21,6 +21,9 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.io.IOException
|
||||
import java.io.OutputStream
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
|
||||
class RestItemRepository(
|
||||
private val service: MyServerService,
|
||||
@ -71,8 +74,9 @@ class RestItemRepository(
|
||||
|
||||
suspend fun createPdfFile(context: Context, fileName: String, reportData: List<ReportRemote>) {
|
||||
withContext(Dispatchers.IO) {
|
||||
val currentDate = SimpleDateFormat("dd.MM.yyyy", Locale.getDefault()).format(Date())
|
||||
val contentValues = ContentValues().apply {
|
||||
put(MediaStore.MediaColumns.DISPLAY_NAME, fileName)
|
||||
put(MediaStore.MediaColumns.DISPLAY_NAME, "$fileName от $currentDate")
|
||||
put(MediaStore.MediaColumns.MIME_TYPE, "application/pdf")
|
||||
put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOCUMENTS)
|
||||
}
|
||||
@ -96,6 +100,7 @@ class RestItemRepository(
|
||||
}
|
||||
|
||||
private fun createPdfContent(outputStream: OutputStream, reportData: List<ReportRemote>) {
|
||||
val currentDate = SimpleDateFormat("dd.MM.yyyy", Locale.getDefault()).format(Date())
|
||||
val pdfDocument = PdfDocument()
|
||||
|
||||
val pageInfo = PdfDocument.PageInfo.Builder(595, 842, 1).create()
|
||||
@ -107,17 +112,18 @@ class RestItemRepository(
|
||||
paint.isAntiAlias = true
|
||||
|
||||
// Отображаем заголовок
|
||||
val title = "Отчет"
|
||||
val title = "Отчет от ${currentDate}"
|
||||
val xTitle = (pageInfo.pageWidth - paint.measureText(title)) / 2
|
||||
val yTitle = 40f
|
||||
canvas.drawText(title, xTitle, yTitle, paint)
|
||||
|
||||
|
||||
// Отображаем данные в виде таблицы
|
||||
val tableStartY = yTitle + 80f
|
||||
val tableStartY = yTitle + 60f
|
||||
val columnWidths = floatArrayOf(0.5f, 1f, 0.6f, 0.5f, 1f, 1f, 1f) // Увеличиваем ширину столбцов
|
||||
val rowHeight = 30f // Увеличиваем высоту строки
|
||||
|
||||
drawTableRow(canvas, arrayOf("ID", "Дата", "Вес", "R", "Цвет", "Кол-во", "ID велосипеда"), columnWidths, tableStartY, paint)
|
||||
drawTableRow(canvas, arrayOf("ID", "Дата", "Вес", "R", "Цвет", "Кол-во", "Имя"), columnWidths, tableStartY, paint)
|
||||
|
||||
for ((index, report) in reportData.withIndex()) {
|
||||
val row = arrayOf(
|
||||
@ -127,7 +133,7 @@ class RestItemRepository(
|
||||
report.radius.toString(),
|
||||
report.colorbike.toString(),
|
||||
report.maxCount.toString(),
|
||||
report.bikeId.toString()
|
||||
report.bikeName.toString()
|
||||
)
|
||||
drawTableRow(canvas, row, columnWidths, tableStartY + (index + 1) * rowHeight, paint)
|
||||
}
|
||||
|
@ -10,5 +10,5 @@ data class ReportRemote(
|
||||
val radius: Double = 0.0,
|
||||
val colorbike: String = "",
|
||||
val maxCount: Int = 0,
|
||||
val bikeId: Int = 0
|
||||
val bikeName: String = ""
|
||||
)
|
@ -236,7 +236,7 @@ fun ReportPage (navController: NavController?, viewModel: ReportViewModel = view
|
||||
coroutineScope.launch {
|
||||
viewModel.generatePdfFile(
|
||||
context = context,
|
||||
fileName = "Отчет по велосипедам.pdf",
|
||||
fileName = "Отчет по велосипедам",
|
||||
reportData = reportResultPageState.resReport
|
||||
)
|
||||
}
|
||||
@ -294,13 +294,13 @@ fun TableScreen(reportData: List<ReportRemote>) {
|
||||
Text("Вес", Modifier.weight(0.7f), color = MaterialTheme.colorScheme.background)
|
||||
Text("R", Modifier.weight(0.6f), color = MaterialTheme.colorScheme.background)
|
||||
Text("Цвет", Modifier.weight(1.0f), color = MaterialTheme.colorScheme.background)
|
||||
Text("Кол-во", Modifier.weight(1.0f), color = MaterialTheme.colorScheme.background)
|
||||
Text("ID вел", Modifier.weight(0.5f), color = MaterialTheme.colorScheme.background)
|
||||
Text("Кол-во", Modifier.weight(0.5f), color = MaterialTheme.colorScheme.background)
|
||||
Text("Имя", Modifier.weight(1.0f), color = MaterialTheme.colorScheme.background)
|
||||
}
|
||||
|
||||
// Here are all the lines of your table.
|
||||
reportData.forEach {
|
||||
val (id, dateTime, weight, radius,colorbike, maxCount, bikeId) = it
|
||||
val (id, dateTime, weight, radius,colorbike, maxCount, bikeName) = it
|
||||
Card(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
@ -314,8 +314,8 @@ fun TableScreen(reportData: List<ReportRemote>) {
|
||||
Text(weight.toString(), Modifier.weight(0.7f))
|
||||
Text(radius.toString(), Modifier.weight(0.6f))
|
||||
Text(colorbike.toString(), Modifier.weight(1.0f))
|
||||
Text(maxCount.toString(), Modifier.weight(1.0f))
|
||||
Text(bikeId.toString(), Modifier.weight(0.5f))
|
||||
Text(maxCount.toString(), Modifier.weight(0.5f))
|
||||
Text(bikeName.toString(), Modifier.weight(1.0f))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user