@@ -2043,8 +2043,7 @@ public class JDUtil {
}
// 按 distributionMark 分组
Map < String , List < JDOrder > > groupedByDistributionMark = todayOrders . stream ( )
. collect ( Collectors . groupingBy ( JDOrder : : getDistributionMark , Collectors . toList ( ) ) ) ;
Map < String , List < JDOrder > > groupedByDistributionMark = todayOrders . stream ( ) . collect ( Collectors . groupingBy ( JDOrder : : getDistributionMark , Collectors . toList ( ) ) ) ;
for ( Map . Entry < String , List < JDOrder > > entry : groupedByDistributionMark . entrySet ( ) ) {
String distributionMark = entry . getKey ( ) ! = null ? entry . getKey ( ) : " 未提供 " ;
@@ -2055,8 +2054,7 @@ public class JDUtil {
int totalCount = 0 ;
// 按 modelNumber 再次分组
Map < String , List < JDOrder > > groupedByModel = orders . stream ( )
. collect ( Collectors . groupingBy ( JDOrder : : getModelNumber ) ) ;
Map < String , List < JDOrder > > groupedByModel = orders . stream ( ) . collect ( Collectors . groupingBy ( JDOrder : : getModelNumber ) ) ;
for ( Map . Entry < String , List < JDOrder > > modelEntry : groupedByModel . entrySet ( ) ) {
String modelNumber = modelEntry . getKey ( ) ;
@@ -2066,21 +2064,20 @@ public class JDUtil {
totalCount + = count ;
summaryBuilder . append ( " 型号: " ) . append ( modelNumber ! = null ? modelNumber : " 未知 " )
. append ( " 数量: " ) . append ( count ) . append ( " \ n " ) ;
summaryBuilder . append ( " 型号: " ) . append ( modelNumber ! = null ? modelNumber : " 未知 " ) . append ( " 数量: " ) . append ( count ) . append ( " \ n " ) ;
}
// 添加合计
summaryBuilder . append ( " 总计: " ) . append ( totalCount ) . append ( " \ n详情: " ) ;
summaryBuilder . append ( " 总计: " ) . append ( " \ n总数量: " ) . append ( totalCount ) ;
// 发送总统计消息
//wxUtil.sendTextMessage(fromWxid, "分销标记:" + distributionMark + "\n" + summaryBuilder, 1, fromWxid, true);
List < JDOrder > sortedOrders = orders . stream ( )
. sorted ( Comparator . comparing ( JDOrder : : getRemark , Comparator . nullsFirst ( String : : compareTo ) ) )
. toList ( ) ;
List < JDOrder > sortedOrders = orders . stream ( ) . sorted ( Comparator . comparing ( JDOrder : : getRemark , Comparator . nullsFirst ( String : : compareTo ) ) ) . toList ( ) ;
// 发送详细订单列表
StringBuilder detailBuilder = new StringBuilder ( ) ;
for ( JDOrder order : sortedOrders ) {
detailBuilder . 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 " ) ;
detailBuilder . 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 ( " 元 " )
@@ -2093,6 +2090,55 @@ public class JDUtil {
// 发送详细订单消息
wxUtil . sendTextMessage ( fromWxid , " 分销标记: " + distributionMark + " \ n " + summaryBuilder + " \ n──────────── \ n " + detailBuilder , 1 , fromWxid , true ) ;
}
} else if ( input . equals ( " 录单 " ) ) {
// 获取今天的日期
LocalDateTime today = LocalDateTime . now ( ) ;
if ( today . getHour ( ) < 8 ) {
// 如果当前时间在早上8点之前, 则获取昨天的日期
today = today . minusDays ( 1 ) ;
}
LocalDateTime startOfDay = today . withHour ( 0 ) . withMinute ( 0 ) . withSecond ( 0 ) . withNano ( 0 ) ;
LocalDateTime endOfDay = today . withHour ( 23 ) . withMinute ( 59 ) . withSecond ( 59 ) . withNano ( 999999999 ) ;
// 将 LocalDateTime 转换为 Date
Date startDate = Date . from ( startOfDay . atZone ( ZoneId . systemDefault ( ) ) . toInstant ( ) ) ;
Date endDate = Date . from ( endOfDay . atZone ( ZoneId . systemDefault ( ) ) . toInstant ( ) ) ;
List < JDOrder > todayOrders = jdOrderRepository . findByOrderTimeBetween ( startDate , endDate ) ;
if ( todayOrders . isEmpty ( ) ) {
wxUtil . sendTextMessage ( fromWxid , " 今天没有订单。 " , 1 , fromWxid , false ) ;
return ;
}
// 按每份20单切割并发送
int batchSize = 20 ;
int totalOrderCount = todayOrders . size ( ) ;
for ( int i = 0 ; i < totalOrderCount ; i + = batchSize ) {
int endIndex = Math . min ( i + batchSize , totalOrderCount ) ;
List < JDOrder > batchOrders = todayOrders . subList ( i , endIndex ) ;
StringBuilder batchSb = new StringBuilder ( ) ;
for ( JDOrder jdOrder : batchOrders ) {
String distributionMark = jdOrder . getDistributionMark ( ) ;
String distributionMark2 = " " ;
if ( distributionMark ! = null ) {
if ( distributionMark . startsWith ( " H " ) ) {
distributionMark2 = " 鸿 " ;
} else if ( distributionMark . startsWith ( " F " ) ) {
distributionMark2 = " 凡 " ;
}
}
batchSb . append ( jdOrder . getRemark ( ) ) . append ( " \ t " ) . append ( jdOrder . getOrderId ( ) ) . append ( " \ t " ) . append ( DateUtil . dateToStr ( jdOrder . getOrderTime ( ) , " yyyy-MM-dd " ) ) . append ( " \ t " ) . append ( jdOrder . getModelNumber ( ) ) . append ( " \ t " ) . append ( jdOrder . getAddress ( ) ) . append ( " \ t " ) . append ( jdOrder . getLogisticsLink ( ) ) . append ( " \ t \ t " ) . append ( jdOrder . getBuyer ( ) ) . append ( " \ t " ) . append ( jdOrder . getPaymentAmount ( ) ) . append ( " \ t " ) . append ( jdOrder . getRebateAmount ( ) ) . append ( " \ t " ) . append ( distributionMark2 ) . append ( " \ n " ) ;
}
// 发送每批次的订单信息
wxUtil . sendTextMessage ( fromWxid , batchSb . toString ( ) , 1 , null , true ) ;
}
} else {
// 生成当前日期
JDOrder jdOrder = parseOrderFromText ( input . trim ( ) . replace ( " 元 " , " " ) ) ;
@@ -2125,16 +2171,7 @@ public class JDUtil {
distributionMark2 = " 凡 " ;
}
}
sb . append ( jdOrder . getRemark ( ) ) . append ( " \ t " )
. append ( jdOrder . getOrderId ( ) ) . append ( " \ t " )
. append ( DateUtil . dateToStr ( jdOrder . getOrderTime ( ) , " yyyy-MM-dd " ) ) . append ( " \ t " )
. append ( jdOrder . getModelNumber ( ) ) . append ( " \ t " )
. append ( jdOrder . getAddress ( ) ) . append ( " \ t " )
. append ( jdOrder . getLogisticsLink ( ) ) . append ( " \ t \ t " )
. append ( jdOrder . getBuyer ( ) ) . append ( " \ t " )
. append ( jdOrder . getPaymentAmount ( ) ) . append ( " \ t " )
. append ( jdOrder . getRebateAmount ( ) ) . append ( " \ t " )
. append ( distributionMark2 ) ;
sb . append ( jdOrder . getRemark ( ) ) . append ( " \ t " ) . append ( jdOrder . getOrderId ( ) ) . append ( " \ t " ) . append ( DateUtil . dateToStr ( jdOrder . getOrderTime ( ) , " yyyy-MM-dd " ) ) . append ( " \ t " ) . append ( jdOrder . getModelNumber ( ) ) . append ( " \ t " ) . append ( jdOrder . getAddress ( ) ) . append ( " \ t " ) . append ( jdOrder . getLogisticsLink ( ) ) . append ( " \ t \ t " ) . append ( jdOrder . getBuyer ( ) ) . append ( " \ t " ) . append ( jdOrder . getPaymentAmount ( ) ) . append ( " \ t " ) . append ( jdOrder . getRebateAmount ( ) ) . append ( " \ t " ) . append ( distributionMark2 ) ;
logger . info ( " 订单信息:{} " , sb ) ;
if ( fromWxid . isEmpty ( ) ) {