This commit is contained in:
Van0313
2025-05-29 19:41:33 +08:00
parent 84d0dd328a
commit a54a9d1a5d
4 changed files with 111 additions and 38 deletions

View File

@@ -4,6 +4,8 @@ import cn.van.business.model.jd.JDOrder;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@@ -35,4 +37,5 @@ public interface JDOrderRepository extends JpaRepository<JDOrder, Long> {
*/ */
List<JDOrder> findByDistributionMark(String distributionMark); List<JDOrder> findByDistributionMark(String distributionMark);
List<JDOrder> findByOrderTimeBetween(Date startTime, Date endTime);
} }

View File

@@ -1917,43 +1917,113 @@ public class JDUtil {
} }
public void LD(String input, String fromWxid) { public void LD(String input, String fromWxid) {
// 生成当前日期 2025-02-05 if (input.equals("")) {
String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); // 查找今天所有订单出来按Remark升序并且拼接成长文本并且先根据distributionMark分组再根据 ModelNumber 分组,最后再进行统计 paymentAmount 和 rebateAmount
JDOrder jdOrder = parseOrderFromText(input.trim().replace("", "")); // 获取今天的日期
if (jdOrder.getOrderId() == null) { LocalDate today = LocalDate.now();
return; LocalDateTime startOfDay = today.atStartOfDay();
} LocalDateTime endOfDay = today.atTime(23, 59, 59);
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);
StringBuilder sb = new StringBuilder(); // 将 LocalDateTime 转换为 Date
//单号 下单日期 型号 内部订单号 地址 物流 外派给谁 后返金额 谁的单 下单价格 Date startDate = Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
// 从jdOrder中获取转化 Date endDate = Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
String distributionMark = jdOrder.getDistributionMark();
String distributionMark2 = ""; List<JDOrder> todayOrders = jdOrderRepository.findByOrderTimeBetween(startDate, endDate);
if (distributionMark != null) {
if (distributionMark.startsWith("H")) { if (todayOrders.isEmpty()) {
distributionMark2 = "鸿"; wxUtil.sendTextMessage(fromWxid, "今天没有订单。", 1, fromWxid, false);
} else if (distributionMark.startsWith("F")) { return;
distributionMark2 = "";
} }
// 按 remark 升序排序
todayOrders.sort(Comparator.comparing(JDOrder::getRemark));
// 先按 distributionMark 分组,再按 modelNumber 分组
Map<String, Map<String, List<JDOrder>>> 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);
} }

View File

@@ -50,8 +50,8 @@ public class WXUtil {
// 搬运群,对外带佣金,不带方案 // 搬运群,对外带佣金,不带方案
public static String chatRoom_BY = "50400969285@chatroom"; public static String chatRoom_BY = "50400969285@chatroom";
//群50006079425@chatroom //群50006079425@chatroomwxid_cfmrk2upjtf3221
public static String chatRoom_JD_Order = "49533691813@chatroom"; public static String chatRoom_JD_Order = "50006079425@chatroom";
/** /**
* url http://127.0.0.1:7777/DaenWxHook/httpapi/ * url http://127.0.0.1:7777/DaenWxHook/httpapi/
* 获取微信列表 (X0000) * 获取微信列表 (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">了解更多</_wc_custom_link_>。 // 舵手群48621589056@chatroom"曲莉亚@河南慧推电子商务有限公司、齐学法@河南慧推电子商务有限公司"为企业微信用户,<_wc_custom_link_ href="https://weixin.qq.com/cgi-bin/newreadtemplate?t=work_wechat/about_group">了解更多</_wc_custom_link_>。
chatRoom_xb.put("48621589056@chatroom", "舵手"); chatRoom_xb.put("48621589056@chatroom", "舵手");
String messageContent = "Jarvis 重启完成 [亲亲][亲亲][亲亲] "; String messageContent = "Jarvis 更新完成 [亲亲][亲亲][亲亲] ";
String fromWxid = default_bot_wxid; // 来源为机器人自身 String fromWxid = default_bot_wxid; // 来源为机器人自身
for (SuperAdmin admin : super_admins.values()) { for (SuperAdmin admin : super_admins.values()) {
try { try {

View File

@@ -113,7 +113,7 @@ public class WxMessageConsumer {
// 录单群 // 录单群
if (fromWxid.equals(chatRoom_JD_Order)){ if (fromWxid.equals(chatRoom_JD_Order)){
if (msg.startsWith("")) { if (msg.startsWith("")) {
logger.info("录单"); //logger.info("录单");
jdUtils.LD(msg, fromWxid); jdUtils.LD(msg, fromWxid);
return; return;
} }