From 17ffdfd433b2be5a8d4e1d8e0e28a461fe4db9ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Wed, 18 Jun 2025 14:08:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E5=AF=BC=E5=87=BAban?= =?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=8C=E5=B9=B6=E4=B8=94=E5=8F=AF=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iflytop/profilometer/api/record/RecordApi.java | 25 ++++++++++++++-------- .../iflytop/profilometer/api/system/SystemApi.java | 17 +++++++++++++-- .../profilometer/api/system/SystemRoutes.kt | 3 ++- .../common/constant/SystemConfigType.java | 1 + .../common/enums/DownloadFileType.java | 9 ++++++++ .../profilometer/model/vo/SystemConfigVO.java | 11 ++++++++++ 6 files changed, 54 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/com/iflytop/profilometer/common/enums/DownloadFileType.java diff --git a/app/src/main/java/com/iflytop/profilometer/api/record/RecordApi.java b/app/src/main/java/com/iflytop/profilometer/api/record/RecordApi.java index 7c1eaa7..ee6997f 100644 --- a/app/src/main/java/com/iflytop/profilometer/api/record/RecordApi.java +++ b/app/src/main/java/com/iflytop/profilometer/api/record/RecordApi.java @@ -6,14 +6,18 @@ import android.os.Handler; import android.os.Looper; import android.widget.Toast; +import com.iflytop.profilometer.common.constant.SystemConfigType; +import com.iflytop.profilometer.common.enums.DownloadFileType; import com.iflytop.profilometer.common.result.Result; import com.iflytop.profilometer.common.utils.FileUtil; import com.iflytop.profilometer.core.migration.algo.type.XYPoint; import com.iflytop.profilometer.dao.ProfileRecordDao; import com.iflytop.profilometer.dao.ProfileRecordPointSetDao; import com.iflytop.profilometer.dao.SyncTaskDao; +import com.iflytop.profilometer.dao.SystemConfigDao; import com.iflytop.profilometer.model.entity.ProfileRecordDescription; import com.iflytop.profilometer.model.entity.ProfileRecordPointSet; +import com.iflytop.profilometer.model.entity.SystemConfig; import java.io.BufferedOutputStream; import java.io.File; @@ -127,21 +131,26 @@ public class RecordApi { throw new RuntimeException(e); } } + SystemConfigDao systemConfigDao = new SystemConfigDao(context); + ProfileRecordDao recordDao = new ProfileRecordDao(context); + ProfileRecordPointSetDao pointSetDao = new ProfileRecordPointSetDao(context); + SystemConfig downloadFileTypeConfig = systemConfigDao.getSystemConfigByKey(SystemConfigType.DOWNLOAD_FILE_TYPE); + String downloadFileType = DownloadFileType.ban.toString(); + if (downloadFileTypeConfig != null) { + downloadFileType = downloadFileTypeConfig.getConfigValue(); + } if (ids.size() > 1) { String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); String zipName = "export-" + timestamp + ".zip"; - File zipFile = new File(exportDir, zipName); try (ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile)))) { - ProfileRecordDao recordDao = new ProfileRecordDao(context); - ProfileRecordPointSetDao pointSetDao = new ProfileRecordPointSetDao(context); for (int i = 0; i < ids.size(); i++) { Long id = ids.getLong(i); ProfileRecordDescription desc = recordDao.getProfileRecordById(id); ProfileRecordPointSet ps = pointSetDao.getProfileRecordPointSetByUuid(desc.getUuid()); List pts = JSONUtil.toList(ps.getAlignPoints(), XYPoint.class); - String entryName = "export-" + desc.getName() + ".txt"; + String entryName = "export-" + desc.getName() + "." + downloadFileType; zos.putNextEntry(new ZipEntry(entryName)); for (XYPoint pt : pts) { @@ -158,10 +167,8 @@ public class RecordApi { } catch (Exception e) { throw new RuntimeException(e); } - }else{ + } else { Long id = ids.getLong(0); - ProfileRecordDao recordDao = new ProfileRecordDao(context); - ProfileRecordPointSetDao pointSetDao = new ProfileRecordPointSetDao(context); ProfileRecordDescription desc = recordDao.getProfileRecordById(id); ProfileRecordPointSet ps = pointSetDao.getProfileRecordPointSetByUuid(desc.getUuid()); List pts = JSONUtil.toList(ps.getAlignPoints(), XYPoint.class); @@ -169,9 +176,9 @@ public class RecordApi { for (XYPoint pt : pts) { sb.append(String.format(Locale.US, "%1$.6f %2$.6f%n", pt.getX(), -pt.getY())); } - String fileName = "export-" + desc.getName() + ".txt"; + String fileName = "export-" + desc.getName() + "." + downloadFileType; try { - FileUtil.writeTextToDownloadSubDir("廓形导出",fileName,sb.toString()); + FileUtil.writeTextToDownloadSubDir("廓形导出", fileName, sb.toString()); new Handler(Looper.getMainLooper()).post(() -> { Toast.makeText(context, "导出成功\n" + "/Download/廓形导出/\n" + fileName, Toast.LENGTH_LONG).show(); }); diff --git a/app/src/main/java/com/iflytop/profilometer/api/system/SystemApi.java b/app/src/main/java/com/iflytop/profilometer/api/system/SystemApi.java index 0611b29..4f5a219 100644 --- a/app/src/main/java/com/iflytop/profilometer/api/system/SystemApi.java +++ b/app/src/main/java/com/iflytop/profilometer/api/system/SystemApi.java @@ -5,6 +5,7 @@ import android.util.Log; import com.iflytop.profilometer.common.constant.LogTag; import com.iflytop.profilometer.common.constant.SystemConfigType; +import com.iflytop.profilometer.common.enums.DownloadFileType; import com.iflytop.profilometer.common.result.Result; import com.iflytop.profilometer.core.bluetooth.BleDeviceDriver; import com.iflytop.profilometer.core.bluetooth.BleManager; @@ -27,13 +28,17 @@ public class SystemApi { SystemConfigDao systemConfigDao = new SystemConfigDao(context); SystemConfig serverConfig = systemConfigDao.getSystemConfigByKey(SystemConfigType.SERVER); SystemConfig todayNumberFlag = systemConfigDao.getSystemConfigByKey(SystemConfigType.TODAY_NUMBER_FLAG); + SystemConfig downloadFileType = systemConfigDao.getSystemConfigByKey(SystemConfigType.DOWNLOAD_FILE_TYPE); SystemConfigVO systemConfigVO = new SystemConfigVO(); if (serverConfig != null) { systemConfigVO.setServer(serverConfig.getConfigValue()); } - if(todayNumberFlag != null){ + if (todayNumberFlag != null) { systemConfigVO.setTodayNumberFlag(Boolean.parseBoolean(todayNumberFlag.getConfigValue())); } + if (downloadFileType != null) { + systemConfigVO.setDownloadFileType(DownloadFileType.valueOf(downloadFileType.getConfigValue())); + } try { if (BleManager.getInstance().isConnected()) { BleDeviceDriver bleDeviceDriver = SystemService.getInstance().getBleDeviceDriver(); @@ -47,7 +52,7 @@ public class SystemApi { return Result.success(systemConfigVO); } - public String save(String server, Integer standbyMinutes, Boolean todayNumberFlag) { + public String save(String server, Integer standbyMinutes, Boolean todayNumberFlag, String downloadFileType) { SystemConfigDao systemConfigDao = new SystemConfigDao(context); SystemConfig serverConfig = new SystemConfig(); serverConfig.setConfigKey(SystemConfigType.SERVER); @@ -65,6 +70,14 @@ public class SystemApi { systemConfigDao.insertSystemConfig(serverConfig); } + serverConfig = new SystemConfig(); + serverConfig.setConfigKey(SystemConfigType.DOWNLOAD_FILE_TYPE); + serverConfig.setConfigValue(downloadFileType); + rows = systemConfigDao.updateSystemConfig(serverConfig); + if (rows < 1) { + systemConfigDao.insertSystemConfig(serverConfig); + } + try { if (BleManager.getInstance().isConnected()) { BleDeviceDriver bleDeviceDriver = SystemService.getInstance().getBleDeviceDriver(); diff --git a/app/src/main/java/com/iflytop/profilometer/api/system/SystemRoutes.kt b/app/src/main/java/com/iflytop/profilometer/api/system/SystemRoutes.kt index e831b9e..93d3047 100644 --- a/app/src/main/java/com/iflytop/profilometer/api/system/SystemRoutes.kt +++ b/app/src/main/java/com/iflytop/profilometer/api/system/SystemRoutes.kt @@ -29,7 +29,8 @@ fun Routing.systemRoutes(context: Context) { val server = jsonObj.getStr("server") val standbyMinutes = jsonObj.getInt("standbyMinutes") val todayNumberFlag = jsonObj.getBool("todayNumberFlag") - val jsonResponse = api.save(server, standbyMinutes, todayNumberFlag) + val downloadFileType = jsonObj.getStr("downloadFileType") + val jsonResponse = api.save(server, standbyMinutes, todayNumberFlag, downloadFileType) call.respondText(jsonResponse, ContentType.Application.Json) } } diff --git a/app/src/main/java/com/iflytop/profilometer/common/constant/SystemConfigType.java b/app/src/main/java/com/iflytop/profilometer/common/constant/SystemConfigType.java index 536a43b..dc66553 100644 --- a/app/src/main/java/com/iflytop/profilometer/common/constant/SystemConfigType.java +++ b/app/src/main/java/com/iflytop/profilometer/common/constant/SystemConfigType.java @@ -4,4 +4,5 @@ public class SystemConfigType { public static final String SERVER = "sync_server"; public static final String STANDBY_MINUTES = "standby_minutes"; public static final String TODAY_NUMBER_FLAG = "today_number_flag"; + public static final String DOWNLOAD_FILE_TYPE = "download_file_type"; } diff --git a/app/src/main/java/com/iflytop/profilometer/common/enums/DownloadFileType.java b/app/src/main/java/com/iflytop/profilometer/common/enums/DownloadFileType.java new file mode 100644 index 0000000..e9d3858 --- /dev/null +++ b/app/src/main/java/com/iflytop/profilometer/common/enums/DownloadFileType.java @@ -0,0 +1,9 @@ +package com.iflytop.profilometer.common.enums; + +/** + * 导出文件类型 + */ +public enum DownloadFileType { + txt, + ban +} \ No newline at end of file diff --git a/app/src/main/java/com/iflytop/profilometer/model/vo/SystemConfigVO.java b/app/src/main/java/com/iflytop/profilometer/model/vo/SystemConfigVO.java index cc6e146..98487f8 100644 --- a/app/src/main/java/com/iflytop/profilometer/model/vo/SystemConfigVO.java +++ b/app/src/main/java/com/iflytop/profilometer/model/vo/SystemConfigVO.java @@ -1,9 +1,12 @@ package com.iflytop.profilometer.model.vo; +import com.iflytop.profilometer.common.enums.DownloadFileType; + public class SystemConfigVO { private String server; private Integer standbyMinutes; private Boolean todayNumberFlag; + private DownloadFileType downloadFileType; public String getServer() { return server; @@ -28,4 +31,12 @@ public class SystemConfigVO { public void setTodayNumberFlag(Boolean todayNumberFlag) { this.todayNumberFlag = todayNumberFlag; } + + public DownloadFileType getDownloadFileType() { + return downloadFileType; + } + + public void setDownloadFileType(DownloadFileType downloadFileType) { + this.downloadFileType = downloadFileType; + } }