Selaa lähdekoodia

fix(sql):修复统计查询中日期比较的SQL语法问题

- 使用CDATA标记包裹SQL中的大于等于和小于符号- 避免XML解析器将比较符号误解析为标签
- 确保按日、周、月统计的日期范围条件正确执行

refactor(java):优化公告列表返回结果去重处理

- 引入Collectors和TreeSet对公告列表按ID进行去重
- 替换原有import语句为通配符导入以简化代码- 移除未使用的Date、HashMap、List和Map导入声明
SheepHy 1 viikko sitten
vanhempi
commit
55f0e4e7bc

+ 3 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/StatisticsMapper.xml

@@ -35,9 +35,9 @@
         WHERE opi.type NOT IN (0,3,4,6)
         AND opi.order_status NOT IN (3,4,5,6)
         AND (
-        (#{type} = 1 AND DATE_ADD(opi.create_time, INTERVAL 8 HOUR) >= CURDATE() AND DATE_ADD(opi.create_time, INTERVAL 8 HOUR) < CURDATE() + INTERVAL 1 DAY) OR
-        (#{type} = 2 AND DATE_ADD(opi.create_time, INTERVAL 8 HOUR) >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) AND DATE_ADD(opi.create_time, INTERVAL 8 HOUR) < DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) + INTERVAL 7 DAY) OR
-        (#{type} = 3 AND DATE_ADD(opi.create_time, INTERVAL 8 HOUR) >= DATE_FORMAT(CURDATE(), '%Y-%m-01') AND DATE_ADD(opi.create_time, INTERVAL 8 HOUR) < DATE_FORMAT(CURDATE(), '%Y-%m-01') + INTERVAL 1 MONTH) OR
+        (#{type} = 1 AND DATE_ADD(opi.create_time, INTERVAL 8 HOUR) <![CDATA[ >= ]]> CURDATE() AND DATE_ADD(opi.create_time, INTERVAL 8 HOUR) <![CDATA[ < ]]> CURDATE() + INTERVAL 1 DAY) OR
+        (#{type} = 2 AND DATE_ADD(opi.create_time, INTERVAL 8 HOUR) <![CDATA[ >= ]]> DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) AND DATE_ADD(opi.create_time, INTERVAL 8 HOUR) <![CDATA[ < ]]> DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) + INTERVAL 7 DAY) OR
+        (#{type} = 3 AND DATE_ADD(opi.create_time, INTERVAL 8 HOUR) <![CDATA[ >= ]]> DATE_FORMAT(CURDATE(), '%Y-%m-01') AND DATE_ADD(opi.create_time, INTERVAL 8 HOUR) <![CDATA[ < ]]> DATE_FORMAT(CURDATE(), '%Y-%m-01') + INTERVAL 1 MONTH) OR
         (#{type} IS NULL OR #{type} NOT IN (3,4,6))
         )
         AND s.org_code LIKE CONCAT(#{orgCode}, '%')

+ 7 - 6
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java

@@ -48,10 +48,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.SynchronousQueue;
 import java.util.concurrent.ThreadPoolExecutor;
@@ -586,8 +583,12 @@ public class SysAnnouncementController {
 		long calEndTime = System.currentTimeMillis(); // 记录结束时间
 		long duration = calEndTime - calStartTime; // 计算耗时
 		System.out.println("耗时:" + duration + " 毫秒");
-		
-		return Result.ok(ls);
+        List<SysAnnouncement> distinctList = ls.stream()
+                .collect(Collectors.collectingAndThen(
+                        Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SysAnnouncement::getId))),
+                        ArrayList::new
+                ));
+		return Result.ok(distinctList);
 	}