2 Commits 5836076816 ... a0ab32afc0

Tác giả SHA1 Thông báo Ngày
  taosj a0ab32afc0 [26110501] 光伏上传率统计上传率上限100: calcRate比率超过100按100计(字典num小于实际上传数时防超100) 1 ngày trước cách đây
  taosj 763c9594f3 [26110501] 光伏上传率统计导出文件名时间戳改为起始_截止(如光伏上传率统计_20261101_20261104.xlsx, 起始=截止时只保留一个), 前端saveAs与后端Content-Disposition同步 1 ngày trước cách đây

+ 4 - 1
forecast-backend-server/src/main/java/com/ufo/project/forecast/fileupload/controller/DataReportLogController.java

@@ -113,7 +113,10 @@ public class DataReportLogController extends BaseController
         List<UploadRateStatVO> data = dataReportLogService.uploadRateExportList(query);
         response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
         response.setCharacterEncoding("utf-8");
-        String fileName = URLEncoder.encode("光伏上传率统计_" + query.getEndTime().replace("-", "") + ".xlsx",
+        String dateRange = StringUtils.equals(query.getStartTime(), query.getEndTime())
+                ? query.getStartTime()
+                : query.getStartTime() + "_" + query.getEndTime();
+        String fileName = URLEncoder.encode("光伏上传率统计_" + dateRange.replace("-", "") + ".xlsx",
                 "UTF-8").replaceAll("\\+", "%20");
         response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + fileName);
         EasyExcel.write(response.getOutputStream(), UploadRateStatVO.class)

+ 7 - 3
forecast-backend-server/src/main/java/com/ufo/project/forecast/fileupload/service/impl/DataReportLogServiceImpl.java

@@ -230,7 +230,7 @@ public class DataReportLogServiceImpl implements IDataReportLogService
     }
 
     /**
-     * 比率 = 成功条数/num×100, 保留2位小数(HALF_UP); 无记录为0.0
+     * 比率 = 成功条数/num×100, 保留2位小数(HALF_UP), 超过100按100计; 无记录为0.0
      */
     private Double calcRate(String type, Map<String, Long> typeCnt, Map<String, Integer> nums)
     {
@@ -239,8 +239,12 @@ public class DataReportLogServiceImpl implements IDataReportLogService
         {
             return 0.0;
         }
-        return new BigDecimal(cnt * 100).divide(new BigDecimal(nums.get(type)), 2, RoundingMode.HALF_UP)
-                .doubleValue();
+        BigDecimal rate = new BigDecimal(cnt * 100).divide(new BigDecimal(nums.get(type)), 2, RoundingMode.HALF_UP);
+        if (rate.compareTo(new BigDecimal("100")) > 0)
+        {
+            rate = new BigDecimal("100");
+        }
+        return rate.doubleValue();
     }
 
     /**

+ 2 - 1
forecast-backend-vue/src/views/ufo/electricity/statanalysis/uploadRateStat.vue

@@ -156,7 +156,8 @@ const handleExport = async () => {
     });
     const isFile = await blobValidate(res);
     if (isFile) {
-      saveAs(new Blob([res]), `光伏上传率统计_${query.endTime.replaceAll('-', '')}.xlsx`);
+      const dateRange = query.startTime === query.endTime ? query.startTime : `${query.startTime}_${query.endTime}`;
+      saveAs(new Blob([res]), `光伏上传率统计_${dateRange.replaceAll('-', '')}.xlsx`);
       message.success('导出成功');
     } else {
       const text = await res.text();