Quellcode durchsuchen

1.修改getStoreList返回打烊状态

qmj vor 1 Woche
Ursprung
Commit
8753d4546d

+ 44 - 27
ruoyi-admin/src/main/java/com/ruoyi/app/mendian/PosStoreController.java

@@ -35,6 +35,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.Collections;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
@@ -243,13 +244,16 @@ public class PosStoreController extends BaseController {
                     .filter(idVal -> idVal != null)
                     .collect(Collectors.toList());
 
+            Map<Long, List<PosReview>> reviewMap = Collections.emptyMap();
+            Map<Long, Long> orderCountMap = Collections.emptyMap();
+            List<OperatingHours> hourslist=new ArrayList<>();
             if (!mdIds.isEmpty()) {
                 // 1. 计算各门店评分
                 QueryWrapper<PosReview> reviewWrapper = new QueryWrapper<>();
                 reviewWrapper.in("md_id", mdIds);
                 List<PosReview> reviews = posReviewService.list(reviewWrapper);
 
-                Map<Long, List<PosReview>> reviewMap = reviews.stream()
+                reviewMap = reviews.stream()
                         .collect(Collectors.groupingBy(PosReview::getMdId));
 
                 // 2. 统计各门店本月订单数(按 cretim 当前月份)
@@ -257,36 +261,49 @@ public class PosStoreController extends BaseController {
                 orderWrapper.in("md_id", mdIds);
                 orderWrapper.apply("DATE_FORMAT(cretim,'%Y-%m') = DATE_FORMAT(NOW(),'%Y-%m')");
                 List<PosOrder> orders = posOrderService.list(orderWrapper);
-                Map<Long, Long> orderCountMap = orders.stream()
+                orderCountMap = orders.stream()
                         .collect(Collectors.groupingBy(PosOrder::getMdId, Collectors.counting()));
+                QueryWrapper<OperatingHours> wrapper = new QueryWrapper<>();
+                wrapper.in("md_id", mdIds);
+                hourslist = operatingHoursService.list(wrapper);
 
-                for (PosStore store : list) {
-                    Long mdId = store.getId() == null ? null : store.getId().longValue();
-                    List<PosReview> storeReviews = mdId == null ? null : reviewMap.get(mdId);
-
-                    double score;
-                    if (storeReviews == null || storeReviews.isEmpty()) {
-                        score = 4.5d;
-                    } else {
-                        double avg = storeReviews.stream()
-                                .mapToLong(PosReview::getScore)
-                                .average()
-                                .orElse(4.5d);
-                        // 平均分按 0.5 分粒度四舍五入,例如 3, 3.5, 4, 4.5
-                        score = Math.round(avg * 2.0d) / 2.0d;
+            }
+            DateUtil dateUtil = new DateUtil();
+            // 统一循环设置评分与月售(mdIds 为空时使用默认值)
+            for (PosStore store : list) {
+                Long mdId = store.getId() == null ? null : store.getId().longValue();
+                List<PosReview> storeReviews = (mdId == null || reviewMap.isEmpty()) ? null : reviewMap.get(mdId);
+
+                double score;
+                if (storeReviews == null || storeReviews.isEmpty()) {
+                    score = 4.5d;
+                } else {
+                    double avg = storeReviews.stream()
+                            .mapToLong(PosReview::getScore)
+                            .average()
+                            .orElse(4.5d);
+                    // 平均分按 0.5 分粒度四舍五入,例如 3, 3.5, 4, 4.5
+                    score = Math.round(avg * 2.0d) / 2.0d;
+                }
+                store.setPingf(score);
+
+                // 设置本月售出订单数量(ddsl)
+                long monthCount = (mdId == null || orderCountMap.isEmpty()) ? 0L : orderCountMap.getOrDefault(mdId, 0L);
+                store.setDdsl(monthCount);
+
+                Boolean dayang = false;
+                List<OperatingHours> mdHours=hourslist.stream().filter(x-> store.getId().equals(x.getMdId().intValue())).collect(Collectors.toList());
+                //在营业时间范围内返回true
+                for (int i = 0; i < mdHours.size(); i++) {
+                    Boolean sbsj = dateUtil.isLegalTime(mdHours.get(i).getStartTime(), mdHours.get(i).getEndTime());
+                    if (sbsj == true) {
+                        dayang = true;
                     }
-                    store.setPingf(score);
-
-                    // 设置本月售出订单数量(ddsl)
-                    long monthCount = (mdId == null) ? 0L : orderCountMap.getOrDefault(mdId, 0L);
-                    store.setDdsl(monthCount);
                 }
-            } else {
-                // 没有有效门店 ID,全部按默认评分与 0 月售
-                list.forEach(store -> {
-                    store.setPingf(4.5d);
-                    store.setDdsl(0L);
-                });
+                //不在时间范围内标识为打烊
+                if (dayang == false) {
+                    store.setState(1L);
+                }
             }
         }