From 4d8547ebc0ad3cefa6d31404fa51d4fd506f4aac Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期五, 11 八月 2023 15:54:49 +0800
Subject: [PATCH] 1

---
 src/main/java/com/yssh/service/XlsReportService.java |   67 +++++++++++++++++++++++++++------
 1 files changed, 54 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/yssh/service/XlsReportService.java b/src/main/java/com/yssh/service/XlsReportService.java
index f18a1b2..a194aea 100644
--- a/src/main/java/com/yssh/service/XlsReportService.java
+++ b/src/main/java/com/yssh/service/XlsReportService.java
@@ -88,15 +88,40 @@
     }
 
     /**
+     * 鑾峰彇瀛楃涓叉棩鏈�
+     */
+    private String getStrDate(String type, Date date) {
+        return DateUtils.parseDateToStr("month".equals(type) ? DateUtils.YYYYMM : DateUtils.YYYYMMDD, date);
+    }
+
+    /**
+     * 鑾峰彇鐩爣鏂囦欢
+     */
+    private String getTarget(String type, Date date) {
+        String strData = getStrDate(type, date);
+
+        return String.format("%s\\%s.xlsx", getExpPath(type), strData);
+    }
+
+    /**
+     * Excel鏄�/鍚﹀瓨鍦�
+     */
+    private boolean xlsExists(String type, Date date) {
+        String target = getTarget(type, date);
+        File f = new File(target);
+
+        return f.exists() && !f.isDirectory();
+    }
+
+    /**
      * 鍒涘缓Excel
      */
     private <T> String createExcel(String type, Date date, List<T> list) throws Exception {
         String source = getXslTemplate(type);
-        String strData = DateUtils.parseDateToStr("month".equals(type) ? DateUtils.YYYYMM : DateUtils.YYYYMMDD, date);
-        String target = String.format("%s\\%s.xlsx", getExpPath(type), strData);
+        String strData = getStrDate(type, date);
+        String target = getTarget(type, date);
 
-        File f = new File(target);
-        if (!f.exists() || f.isDirectory()) {
+        if (!xlsExists(type, date)) {
             createExcel(source, target, list);
         }
 
@@ -104,15 +129,24 @@
     }
 
     /**
+     * 璁板綍鏄�/鍚﹀瓨鍦�
+     */
+    private boolean recordExists(String type, Date date) {
+        String name = String.format("%s.xlsx", getStrDate(type, date));
+        int rows = mapper.reportExists(type, name);
+
+        return rows > 0;
+    }
+
+    /**
      * 淇濆瓨缁撴灉
      */
     private <T> void saveResult(String type, Date date, List<T> list) throws Exception {
-        date = DateUtils.trimTime(date);
         String filePath = createExcel(type, date, list);
-        String name = filePath.replace(type + "\\", "");
+        if (recordExists(type, date)) return;
 
-        int rows = mapper.reportExists(type, name);
-        if (rows > 0) return;
+        String name = filePath.replace(type + "\\", "");
+        date = DateUtils.trimTime(date);
 
         XlsReport xls = new XlsReport();
         xls.setName(name);
@@ -151,10 +185,12 @@
      */
     public void createDayReport(Date date) {
         try {
+            String type = "day";
             Date yesterday = DateUtils.getAPeriodOfTime(date, -1, Calendar.DATE); // 2023-07-24
+            if (xlsExists(type, yesterday) && recordExists(type, yesterday)) return;
+
             String yyyy = DateUtils.parseDateToStr(DateUtils.YYYY, yesterday); // 2023
             String yyyymmdd = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, yesterday); // 20230724
-            // String yyyy_mm_dd = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, yesterday); // 2023-07-24
             Integer yearStart = Integer.parseInt(yyyy + "010100"); // 2023010100
             Integer dayStart = Integer.parseInt(yyyymmdd + "00"); // 2023072400
             Integer end = Integer.parseInt(yyyymmdd + "23"); // 2023072423
@@ -179,7 +215,7 @@
 
                 list.add(new DayExcel("" + rjz, "" + lj, ljtb, ys, "", "", ""));
             }
-            saveResult("day", yesterday, list);
+            saveResult(type, yesterday, list);
         } catch (Exception ex) {
             logger.error(ex.getMessage(), ex);
         }
@@ -190,8 +226,11 @@
      */
     public void createWeekReport(Date date) {
         try {
+            String type = "week";
             Date mon = DateUtils.getAPeriodOfTime(date, -7, Calendar.DATE); // 2023-07-24
             Date sun = DateUtils.getAPeriodOfTime(date, -1, Calendar.DATE); // 2023-07-30
+            if (xlsExists(type, sun) && recordExists(type, sun)) return;
+
             Date lastMon = DateUtils.getAPeriodOfTime(date, -14, Calendar.DATE); // 2023-07-17
             Date lastSun = DateUtils.getAPeriodOfTime(date, -8, Calendar.DATE); // 2023-07-23
             Date lastYear1 = DateUtils.getAPeriodOfTime(mon, -1, Calendar.YEAR); // 2022-07-24
@@ -240,7 +279,7 @@
 
                 list.add(new WeekExcel("" + sz, zhb, ztq, ztb, "" + lj, ljtb, syn, ys, "", "", ""));
             }
-            saveResult("week", sun, list);
+            saveResult(type, sun, list);
         } catch (Exception ex) {
             logger.error(ex.getMessage(), ex);
         }
@@ -251,9 +290,12 @@
      */
     public void createMonthReport(Date date) {
         try {
+            String type = "month";
             Date yesterday = DateUtils.getAPeriodOfTime(date, -1, Calendar.DATE); // 2023-07-31
             Date monthStart = DateUtils.getMonthStart(yesterday); // 2023-07-01
             Date monthEnd = DateUtils.getMonthEnd(yesterday); // 2023-07-31
+            if (xlsExists(type, monthEnd) && recordExists(type, monthEnd)) return;
+
             int intMonthStart = Integer.parseInt(DateUtils.parseDateToStr(DateUtils.YYYYMMDD, monthStart) + "00"); // 2023070100
             int intMonthEnd = Integer.parseInt(DateUtils.parseDateToStr(DateUtils.YYYYMMDD, monthEnd) + "23"); // 2023073123
             Date lastMonth = DateUtils.getAPeriodOfTime(yesterday, -1, Calendar.MONTH); // 2023-06-30
@@ -296,8 +338,7 @@
 
                 list.add(new MonthExcel("" + sy, yhb, ytq, ytb, "" + lj, ljtb, qyn, ys, "", "", ""));
             }
-            saveResult("month", monthEnd, list);
-
+            saveResult(type, monthEnd, list);
         } catch (Exception ex) {
             logger.error(ex.getMessage(), ex);
         }

--
Gitblit v1.9.3