Merge remote-tracking branch '群晖/master'
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1917,43 +1917,122 @@ 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 升序排序(null 值排最后)
|
||||||
|
todayOrders.sort(Comparator.comparing(
|
||||||
|
JDOrder::getRemark,
|
||||||
|
Comparator.nullsLast(String::compareTo)
|
||||||
|
));
|
||||||
|
|
||||||
|
// 先按 distributionMark 分组,再按 modelNumber 分组
|
||||||
|
Map<String, Map<String, List<JDOrder>>> groupedOrders = todayOrders.stream()
|
||||||
|
.collect(Collectors.groupingBy(JDOrder::getDistributionMark,
|
||||||
|
Collectors.groupingBy(JDOrder::getModelNumber)));
|
||||||
|
|
||||||
|
// 遍历每个 distributionMark 分组,生成独立的消息内容并发送
|
||||||
|
for (Map.Entry<String, Map<String, List<JDOrder>>> entry : groupedOrders.entrySet()) {
|
||||||
|
String distributionMark = entry.getKey();
|
||||||
|
Map<String, List<JDOrder>> modelGroups = entry.getValue();
|
||||||
|
|
||||||
|
StringBuilder resultBuilder = new StringBuilder();
|
||||||
|
|
||||||
|
resultBuilder.append("【").append(distributionMark).append("】").append("\n");
|
||||||
|
|
||||||
|
for (Map.Entry<String, List<JDOrder>> modelEntry : modelGroups.entrySet()) {
|
||||||
|
String modelNumber = modelEntry.getKey();
|
||||||
|
List<JDOrder> orders = modelEntry.getValue();
|
||||||
|
|
||||||
|
int count = orders.size();
|
||||||
|
double totalPaymentAmount = orders.stream()
|
||||||
|
.mapToDouble(order -> order.getPaymentAmount() != null ? order.getPaymentAmount() : 0.0)
|
||||||
|
.sum();
|
||||||
|
double totalRebateAmount = orders.stream()
|
||||||
|
.mapToDouble(order -> order.getRebateAmount() != null ? order.getRebateAmount() : 0.0)
|
||||||
|
.sum();
|
||||||
|
|
||||||
|
resultBuilder.append("型号:").append(modelNumber != null ? 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() != null ? order.getRemark() : "未提供")
|
||||||
|
.append("\n型号:").append(order.getModelNumber() != null ? order.getModelNumber() : "未提供")
|
||||||
|
.append("\n下单付款:").append(order.getPaymentAmount() != null ? String.format("%.2f", order.getPaymentAmount()) : "0.00")
|
||||||
|
.append(" 元")
|
||||||
|
.append("\n后返金额:").append(order.getRebateAmount() != null ? String.format("%.2f", order.getRebateAmount()) : "0.00")
|
||||||
|
.append(" 元")
|
||||||
|
.append("\n地址:").append(order.getAddress() != null ? order.getAddress() : "未提供")
|
||||||
|
.append("\n物流链接:").append(order.getLogisticsLink() != null ? 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);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,8 +50,8 @@ public class WXUtil {
|
|||||||
// 搬运群,对外带佣金,不带方案
|
// 搬运群,对外带佣金,不带方案
|
||||||
public static String chatRoom_BY = "50400969285@chatroom";
|
public static String chatRoom_BY = "50400969285@chatroom";
|
||||||
|
|
||||||
//群(50006079425@chatroom)
|
//群(50006079425@chatroom)wxid_cfmrk2upjtf322:1
|
||||||
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 {
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user