From a54a9d1a5d270134b13121a82f896e49a825c3fa Mon Sep 17 00:00:00 2001 From: Van0313 <60689272+Van0313@users.noreply.github.com> Date: Thu, 29 May 2025 19:41:33 +0800 Subject: [PATCH] 1 --- .../repository/JDOrderRepository.java | 3 + .../java/cn/van/business/util/JDUtil.java | 138 +++++++++++++----- .../java/cn/van/business/util/WXUtil.java | 6 +- .../van/business/util/WxMessageConsumer.java | 2 +- 4 files changed, 111 insertions(+), 38 deletions(-) diff --git a/src/main/java/cn/van/business/repository/JDOrderRepository.java b/src/main/java/cn/van/business/repository/JDOrderRepository.java index 212443f..4a99725 100644 --- a/src/main/java/cn/van/business/repository/JDOrderRepository.java +++ b/src/main/java/cn/van/business/repository/JDOrderRepository.java @@ -4,6 +4,8 @@ import cn.van.business.model.jd.JDOrder; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; +import java.util.Date; import java.util.List; /** @@ -35,4 +37,5 @@ public interface JDOrderRepository extends JpaRepository { */ List findByDistributionMark(String distributionMark); + List findByOrderTimeBetween(Date startTime, Date endTime); } diff --git a/src/main/java/cn/van/business/util/JDUtil.java b/src/main/java/cn/van/business/util/JDUtil.java index 901a08a..e3c4871 100644 --- a/src/main/java/cn/van/business/util/JDUtil.java +++ b/src/main/java/cn/van/business/util/JDUtil.java @@ -1917,43 +1917,113 @@ public class JDUtil { } public void LD(String input, String fromWxid) { - // 生成当前日期 2025-02-05 - String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - JDOrder jdOrder = parseOrderFromText(input.trim().replace("元", "")); - if (jdOrder.getOrderId() == null) { - return; - } - if (Util.isAnyEmpty(jdOrder.getOrderId(), jdOrder.getBuyer(), jdOrder.getOrderTime(), jdOrder.getPaymentAmount(), jdOrder.getRebateAmount(), jdOrder.getAddress(), jdOrder.getLogisticsLink(), jdOrder.getModelNumber(), jdOrder.getLink(), jdOrder.getOrderId(), jdOrder.getBuyer())) { - return; - } - JDOrder byOrderId = jdOrderRepository.findByOrderId(jdOrder.getOrderId()); - if (byOrderId != null) { - logger.info("订单已存在:{}", byOrderId); - jdOrder.setId(byOrderId.getId()); - } else { - logger.info("订单不存在,新增:{}", jdOrder); - } - jdOrderRepository.save(jdOrder); + if (input.equals("单")) { + // 查找今天所有订单出来,按Remark升序,并且拼接成长文本,并且先根据distributionMark分组,再根据 ModelNumber 分组,最后再进行统计 paymentAmount 和 rebateAmount + // 获取今天的日期 + LocalDate today = LocalDate.now(); + LocalDateTime startOfDay = today.atStartOfDay(); + LocalDateTime endOfDay = today.atTime(23, 59, 59); - StringBuilder sb = new StringBuilder(); - //单号 下单日期 型号 内部订单号 地址 物流 外派给谁 后返金额 谁的单 下单价格 - // 从jdOrder中获取转化 - String distributionMark = jdOrder.getDistributionMark(); - String distributionMark2 = ""; - if (distributionMark != null) { - if (distributionMark.startsWith("H")) { - distributionMark2 = "鸿"; - } else if (distributionMark.startsWith("F")) { - distributionMark2 = "凡"; + // 将 LocalDateTime 转换为 Date + Date startDate = Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant()); + Date endDate = Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant()); + + List todayOrders = jdOrderRepository.findByOrderTimeBetween(startDate, endDate); + + if (todayOrders.isEmpty()) { + wxUtil.sendTextMessage(fromWxid, "今天没有订单。", 1, fromWxid, false); + return; } + + // 按 remark 升序排序 + todayOrders.sort(Comparator.comparing(JDOrder::getRemark)); + + // 先按 distributionMark 分组,再按 modelNumber 分组 + Map>> groupedOrders = todayOrders.stream() + .collect(Collectors.groupingBy(JDOrder::getDistributionMark, + Collectors.groupingBy(JDOrder::getModelNumber))); + + // 对每个 distributionMark 分组分别构建并发送消息 + groupedOrders.forEach((distributionMark, modelGroups) -> { + StringBuilder resultBuilder = new StringBuilder(); + + resultBuilder.append("【").append(distributionMark).append("】").append("\n"); + + modelGroups.forEach((modelNumber, orders) -> { + int count = orders.size(); + double totalPaymentAmount = orders.stream() + .mapToDouble(JDOrder::getPaymentAmount) + .sum(); + double totalRebateAmount = orders.stream() + .mapToDouble(JDOrder::getRebateAmount) + .sum(); + + resultBuilder.append("型号:").append(modelNumber) + .append("\n数量:").append(count) + .append("\n总支付金额:").append(String.format("%.2f", totalPaymentAmount)) + .append(" 元") + .append("\n总后返金额:").append(String.format("%.2f", totalRebateAmount)) + .append(" 元") + .append("\n────────────\n"); + + for (JDOrder order : orders) { + resultBuilder.append("单:").append(order.getRemark()) + .append("\n型号:").append(order.getModelNumber()) + .append("\n下单付款:").append(order.getPaymentAmount()) + .append(" 元") + .append("\n后返金额:").append(order.getRebateAmount()) + .append(" 元") + .append("\n地址:").append(order.getAddress()) + .append("\n物流链接:").append(order.getLogisticsLink()) + .append("\n────────────\n"); + } + }); + + // 发送每条分组的消息到微信 + wxUtil.sendTextMessage(fromWxid, resultBuilder.toString(), 1, fromWxid, true); + }); + } else { + // 生成当前日期 2025-02-05 + String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + JDOrder jdOrder = parseOrderFromText(input.trim().replace("元", "")); + if (jdOrder.getOrderId() == null) { + return; + } + if (Util.isAnyEmpty(jdOrder.getOrderId(), jdOrder.getBuyer(), jdOrder.getOrderTime(), jdOrder.getPaymentAmount(), jdOrder.getRebateAmount(), jdOrder.getAddress(), jdOrder.getLogisticsLink(), jdOrder.getModelNumber(), jdOrder.getLink(), jdOrder.getOrderId(), jdOrder.getBuyer())) { + return; + } + JDOrder byOrderId = jdOrderRepository.findByOrderId(jdOrder.getOrderId()); + String info = ""; + if (byOrderId != null) { + logger.info("订单已存在:{}", byOrderId); + info = "更新成功"; + jdOrder.setId(byOrderId.getId()); + } else { + info = "新增成功"; + logger.info("订单不存在,新增:{}", jdOrder); + } + jdOrderRepository.save(jdOrder); + + StringBuilder sb = new StringBuilder(); + //单号 下单日期 型号 内部订单号 地址 物流 外派给谁 后返金额 谁的单 下单价格 + // 从jdOrder中获取转化 + String distributionMark = jdOrder.getDistributionMark(); + String distributionMark2 = ""; + if (distributionMark != null) { + if (distributionMark.startsWith("H")) { + distributionMark2 = "鸿"; + } else if (distributionMark.startsWith("F")) { + distributionMark2 = "凡"; + } + } + sb.append(jdOrder.getRemark()).append("\t").append(jdOrder.getOrderId()).append("\t").append(date).append("\t").append(jdOrder.getModelNumber()).append("\t").append(jdOrder.getAddress()).append("\t").append(jdOrder.getLogisticsLink()).append("\t").append("\t").append(jdOrder.getBuyer()).append("\t").append(jdOrder.getPaymentAmount()).append("\t").append(distributionMark2); + logger.info("订单信息:{}", sb); + if (fromWxid.isEmpty()) { + return; + } + wxUtil.sendTextMessage(fromWxid, info, 1, null, true); + wxUtil.sendTextMessage(fromWxid, sb.toString(), 1, null, true); } - sb.append(jdOrder.getRemark()).append("\t").append(jdOrder.getOrderId()).append("\t").append(date).append("\t").append(jdOrder.getModelNumber()).append("\t").append(jdOrder.getAddress()).append("\t").append(jdOrder.getLogisticsLink()).append("\t").append("\t").append(jdOrder.getBuyer()).append("\t").append(jdOrder.getPaymentAmount()).append("\t").append(distributionMark2); - logger.info("订单信息:{}", sb); - if (fromWxid.isEmpty()) { - return; - } - wxUtil.sendTextMessage(fromWxid, "解析成功", 1, null, true); - wxUtil.sendTextMessage(fromWxid, sb.toString(), 1, null, true); } diff --git a/src/main/java/cn/van/business/util/WXUtil.java b/src/main/java/cn/van/business/util/WXUtil.java index da68875..806fcf3 100644 --- a/src/main/java/cn/van/business/util/WXUtil.java +++ b/src/main/java/cn/van/business/util/WXUtil.java @@ -50,8 +50,8 @@ public class WXUtil { // 搬运群,对外带佣金,不带方案 public static String chatRoom_BY = "50400969285@chatroom"; - //群(50006079425@chatroom) - public static String chatRoom_JD_Order = "49533691813@chatroom"; + //群(50006079425@chatroom)wxid_cfmrk2upjtf322:1 + public static String chatRoom_JD_Order = "50006079425@chatroom"; /** * url http://127.0.0.1:7777/DaenWxHook/httpapi/ * 获取微信列表 (X0000) @@ -223,7 +223,7 @@ public class WXUtil { // 舵手群(48621589056@chatroom):"曲莉亚@河南慧推电子商务有限公司、齐学法@河南慧推电子商务有限公司"为企业微信用户,<_wc_custom_link_ href="https://weixin.qq.com/cgi-bin/newreadtemplate?t=work_wechat/about_group">了解更多。 chatRoom_xb.put("48621589056@chatroom", "舵手"); - String messageContent = "Jarvis 重启完成 [亲亲][亲亲][亲亲] "; + String messageContent = "Jarvis 更新完成 [亲亲][亲亲][亲亲] "; String fromWxid = default_bot_wxid; // 来源为机器人自身 for (SuperAdmin admin : super_admins.values()) { try { diff --git a/src/main/java/cn/van/business/util/WxMessageConsumer.java b/src/main/java/cn/van/business/util/WxMessageConsumer.java index fc5b79a..96eece7 100644 --- a/src/main/java/cn/van/business/util/WxMessageConsumer.java +++ b/src/main/java/cn/van/business/util/WxMessageConsumer.java @@ -113,7 +113,7 @@ public class WxMessageConsumer { // 录单群 if (fromWxid.equals(chatRoom_JD_Order)){ if (msg.startsWith("单")) { - logger.info("录单"); + //logger.info("录单"); jdUtils.LD(msg, fromWxid); return; }