@@ -7,6 +7,7 @@ import com.ruoyi.jarvis.domain.WeComShareLinkLogisticsJob;
import com.ruoyi.jarvis.service.IInstructionService ;
import com.ruoyi.jarvis.service.IOrderRowsService ;
import com.ruoyi.jarvis.service.IJDOrderService ;
import com.ruoyi.jarvis.service.IJDOrderModelShopService ;
import com.ruoyi.jarvis.service.IProductJdConfigService ;
import com.ruoyi.jarvis.service.IPhoneReplaceConfigService ;
import com.ruoyi.jarvis.service.SuperAdminService ;
@@ -42,6 +43,8 @@ public class InstructionServiceImpl implements IInstructionService {
@Resource
private IJDOrderService jdOrderService ;
@Resource
private IJDOrderModelShopService jdOrderModelShopService ;
@Resource
private SuperAdminService superAdminService ;
@Resource
private StringRedisTemplate stringRedisTemplate ;
@@ -358,13 +361,13 @@ public class InstructionServiceImpl implements IInstructionService {
// 统一截取分销标记
list . forEach ( order - > order . setDistributionMark ( truncateDistributionMark ( order . getDistributionMark ( ) ) ) ) ;
String low = kw . toLowerCase ( Locale . ROOT ) ;
List < JDOrder > matched = list . stream ( ) . filter ( o - > contains ( o . getRemark ( ) , low ) | | contains ( o . getOrderId ( ) , low ) | | contains ( o . getModelNumber ( ) , low ) | | contains ( o . getAddress ( ) , low ) | | contains ( o . getBuyer ( ) , low ) ) . limit ( 50 ) . collect ( Collectors . toList ( ) ) ;
List < JDOrder > matched = list . stream ( ) . filter ( o - > contains ( o . getRemark ( ) , low ) | | contains ( o . getOrderId ( ) , low ) | | contains ( o . getModelNumber ( ) , low ) | | contains ( o . getModelShop ( ) , low ) | | contains ( orderFullModel ( o ) , low ) | | contains ( o . getAddress( ) , low ) | | contains ( o . getBuyer ( ) , low ) ) . limit ( 50 ) . collect ( Collectors . toList ( ) ) ;
if ( matched . isEmpty ( ) ) return Collections . singletonList ( " 未找到匹配的订单 " ) ;
StringBuilder sb = new StringBuilder ( ) ;
int i = 0 ;
for ( JDOrder o : matched ) {
i + + ;
sb . append ( i ) . append ( " , 单: " ) . append ( nvl ( o . getRemark ( ) ) ) . append ( " \ n分销标记: " ) . append ( nvl ( o . getDistributionMark ( ) ) ) . append ( " \ n型号: " ) . append ( nvl ( o. getModelNumber ( ) ) ) . append ( " \ n链接: " ) . append ( nvl ( o . getLink ( ) ) ) . append ( " \ n下单付款: " ) . append ( nvl ( o . getPaymentAmount ( ) ) ) . append ( " \ n后返金额: " ) . append ( nvl ( o . getRebateAmount ( ) ) ) . append ( " \ n地址: " ) . append ( nvl ( o . getAddress ( ) ) ) . append ( " \ n物流链接: " ) . append ( nvl ( o . getLogisticsLink ( ) ) ) . append ( " \ n订单号: " ) . append ( nvl ( o . getOrderId ( ) ) ) . append ( " \ n下单人: " ) . append ( nvl ( o . getBuyer ( ) ) ) . append ( " \ n下单时间: " ) . append ( nvl ( o . getOrderTime ( ) ) ) . append ( " \ n备注: " ) . append ( nvl ( o . getStatus ( ) ) ) . append ( " \ n━━━━━━━━━━━━ \ n " ) ;
sb . append ( i ) . append ( " , 单: " ) . append ( nvl ( o . getRemark ( ) ) ) . append ( " \ n分销标记: " ) . append ( nvl ( o . getDistributionMark ( ) ) ) . append ( " \ n型号: " ) . append ( nvl ( orderFullModel ( o ) ) ) . append ( " \ n链接: " ) . append ( nvl ( o . getLink ( ) ) ) . append ( " \ n下单付款: " ) . append ( nvl ( o . getPaymentAmount ( ) ) ) . append ( " \ n后返金额: " ) . append ( nvl ( o . getRebateAmount ( ) ) ) . append ( " \ n地址: " ) . append ( nvl ( o . getAddress ( ) ) ) . append ( " \ n物流链接: " ) . append ( nvl ( o . getLogisticsLink ( ) ) ) . append ( " \ n订单号: " ) . append ( nvl ( o . getOrderId ( ) ) ) . append ( " \ n下单人: " ) . append ( nvl ( o . getBuyer ( ) ) ) . append ( " \ n下单时间: " ) . append ( nvl ( o . getOrderTime ( ) ) ) . append ( " \ n备注: " ) . append ( nvl ( o . getStatus ( ) ) ) . append ( " \ n━━━━━━━━━━━━ \ n " ) ;
}
return Collections . singletonList ( sb . toString ( ) ) ;
}
@@ -388,7 +391,7 @@ public class InstructionServiceImpl implements IInstructionService {
List < JDOrder > sorted = filtered . stream ( ) . sorted ( Comparator . comparing ( JDOrder : : getRemark , Comparator . nullsFirst ( String : : compareTo ) ) ) . collect ( Collectors . toList ( ) ) ;
StringBuilder sb = new StringBuilder ( ) ;
for ( JDOrder o : sorted ) {
sb . append ( nvl ( o . getRemark ( ) ) ) . append ( '\t' ) . append ( nvl ( o . getOrderId ( ) ) ) . append ( '\t' ) . append ( fmt ( o . getOrderTime ( ) ) . split ( " " ) [ 0 ] ) . append ( '\t' ) . append ( nvl ( o. getModelNumber ( ) ) ) . append ( '\t' ) . append ( nvl ( o . getAddress ( ) ) ) . append ( '\t' ) . append ( nvl ( o . getLogisticsLink ( ) ) ) . append ( '\t' ) . append ( '\t' ) . append ( nvl ( o . getBuyer ( ) ) ) . append ( '\t' ) . append ( nvl ( o . getPaymentAmount ( ) ) ) . append ( '\t' ) . append ( nvl ( o . getRebateAmount ( ) ) ) . append ( '\t' ) . append ( mapDistribution ( o . getDistributionMark ( ) ) ) . append ( '\t' ) . append ( nvl ( o . getStatus ( ) ) ) . append ( " \ n " ) ;
sb . append ( nvl ( o . getRemark ( ) ) ) . append ( '\t' ) . append ( nvl ( o . getOrderId ( ) ) ) . append ( '\t' ) . append ( fmt ( o . getOrderTime ( ) ) . split ( " " ) [ 0 ] ) . append ( '\t' ) . append ( nvl ( orderFullModel ( o ) ) ) . append ( '\t' ) . append ( nvl ( o . getAddress ( ) ) ) . append ( '\t' ) . append ( nvl ( o . getLogisticsLink ( ) ) ) . append ( '\t' ) . append ( '\t' ) . append ( nvl ( o . getBuyer ( ) ) ) . append ( '\t' ) . append ( nvl ( o . getPaymentAmount ( ) ) ) . append ( '\t' ) . append ( nvl ( o . getRebateAmount ( ) ) ) . append ( '\t' ) . append ( mapDistribution ( o . getDistributionMark ( ) ) ) . append ( '\t' ) . append ( nvl ( o . getStatus ( ) ) ) . append ( " \ n " ) ;
}
return Collections . singletonList ( sb . toString ( ) ) ;
}
@@ -422,7 +425,7 @@ public class InstructionServiceImpl implements IInstructionService {
String dm = e . getKey ( ) ! = null ? e . getKey ( ) : " 未提供 " ;
List < JDOrder > orders = e . getValue ( ) ;
Map < String , Long > byModel = orders . stream ( ) . collect ( Collectors . groupingBy ( JDOrder : : getModelNumber , Collectors . counting ( ) ) ) ;
Map < String , Long > byModel = orders . stream ( ) . collect ( Collectors . groupingBy ( this : : orderFullModel , Collectors . counting ( ) ) ) ;
int totalCount = 0 ;
StringBuilder summary = new StringBuilder ( ) ;
@@ -445,7 +448,7 @@ public class InstructionServiceImpl implements IInstructionService {
// 找到该型号价格最高的订单
for ( JDOrder order : orders ) {
if ( model . equals ( order. getModelNumber ( ) ) ) {
if ( model . equals ( orderFullModel ( order ) ) ) {
JDOrder currentMax = groupMaxPriceOrders . get ( model ) ;
if ( currentMax = = null | |
( order . getPaymentAmount ( ) ! = null & &
@@ -467,7 +470,7 @@ public class InstructionServiceImpl implements IInstructionService {
. append ( " 单: " ) . append ( o . getRemark ( ) ! = null ? o . getRemark ( ) : " 未提供 " ) . append ( " \ n " )
. append ( " 备注: " ) . append ( o . getStatus ( ) ! = null ? o . getStatus ( ) : " " ) . append ( " \ n " )
. append ( " 第三方单号: " ) . append ( o . getThirdPartyOrderNo ( ) ! = null & & ! o . getThirdPartyOrderNo ( ) . isEmpty ( ) ? o . getThirdPartyOrderNo ( ) : " 无 " ) . append ( " \ n " )
. append ( " 型号: " ) . append ( o . getModelNumber ( ) ! = null ? o . getModelNumber ( ) : " 未提供 " ) . append ( " \ n " )
. append ( " 型号: " ) . append ( o . getModelNumber ( ) ! = null | | o . getModelShop ( ) ! = null ? orderFullModel ( o ) : " 未提供 " ) . append ( " \ n " )
. append ( " 地址: " ) . append ( o . getAddress ( ) ! = null ? o . getAddress ( ) : " 未提供 " ) . append ( " \ n " )
. append ( " 物流链接: \ n " ) . append ( o . getLogisticsLink ( ) ! = null ? o . getLogisticsLink ( ) : " 无 " ) ;
}
@@ -594,7 +597,7 @@ public class InstructionServiceImpl implements IInstructionService {
List < JDOrder > orders = e . getValue ( ) ;
Map < String , Long > byModel = orders . stream ( )
. collect ( Collectors . groupingBy ( JDOrder : : getModelNumber , Collectors . counting ( ) ) ) ;
. collect ( Collectors . groupingBy ( this : : orderFullModel , Collectors . counting ( ) ) ) ;
int totalCount = 0 ;
StringBuilder summary = new StringBuilder ( ) ;
@@ -616,7 +619,7 @@ public class InstructionServiceImpl implements IInstructionService {
// 找到该型号价格最高的订单
for ( JDOrder order : orders ) {
if ( model . equals ( order. getModelNumber ( ) ) ) {
if ( model . equals ( orderFullModel ( order ) ) ) {
JDOrder currentMax = buyerMaxPriceOrders . get ( model ) ;
if ( currentMax = = null | |
( order . getPaymentAmount ( ) ! = null & &
@@ -641,7 +644,7 @@ public class InstructionServiceImpl implements IInstructionService {
. append ( " 单: " ) . append ( o . getRemark ( ) ! = null ? o . getRemark ( ) : " 未提供 " ) . append ( " \ n " )
. append ( " 备注: " ) . append ( o . getStatus ( ) ! = null ? o . getStatus ( ) : " " ) . append ( " \ n " )
. append ( " 第三方单号: " ) . append ( o . getThirdPartyOrderNo ( ) ! = null & & ! o . getThirdPartyOrderNo ( ) . isEmpty ( ) ? o . getThirdPartyOrderNo ( ) : " 无 " ) . append ( " \ n " )
. append ( " 型号: " ) . append ( o . getModelNumber ( ) ! = null ? o . getModelNumber ( ) : " 未提供 " ) . append ( " \ n " )
. append ( " 型号: " ) . append ( o . getModelNumber ( ) ! = null | | o . getModelShop ( ) ! = null ? orderFullModel ( o ) : " 未提供 " ) . append ( " \ n " )
. append ( " 地址: " ) . append ( o . getAddress ( ) ! = null ? o . getAddress ( ) : " 未提供 " ) . append ( " \ n " )
. append ( " 物流链接: \ n " ) . append ( o . getLogisticsLink ( ) ! = null ? o . getLogisticsLink ( ) : " 无 " ) ;
}
@@ -874,7 +877,7 @@ public class InstructionServiceImpl implements IInstructionService {
}
}
String jf = productJdConfigService . getJdUrlByProductModel ( modelNumber ) ;
String jf = productJdConfigService . getJdUrlByProductModel ( jdOrderModelShopService . lookupModelBase ( modelNumber) ) ;
StringBuilder order = new StringBuilder ( ) ;
order . append ( " 生 " + phone ) . append ( " \ n " ) . append ( fenxiaoInfo ) . append ( " \ n " ) . append ( modelNumber ) . append ( " \ n " ) . append ( jf ) . append ( " \ n " ) . append ( quantityStr ) . append ( " \ n " ) . append ( address ) ;
@@ -928,10 +931,11 @@ public class InstructionServiceImpl implements IInstructionService {
String rawModelToken = extractLastNonChineseToken ( addressLine ) ;
String modelNumber = sanitizeModel ( rawModelToken ) ;
String lookupModel = jdOrderModelShopService . lookupModelBase ( modelNumber ) ;
String cleanedAddress = addressLine . replaceAll ( " \\ [.*?] " , " " ) . replace ( rawModelToken , " " ) . replaceAll ( " \\ s+ " , " " ) . trim ( ) ;
String fullAddress = cleanedAddress + " 安装派送联系 " + phone + ( suffix . isEmpty ( ) ? " " : " 转 " + suffix ) ;
String jfLink = productJdConfigService . getJdUrlByProductModel ( modelNumber ) ;
String jfLink = productJdConfigService . getJdUrlByProductModel ( lookupModel ) ;
StringBuilder sheng = new StringBuilder ( ) ;
sheng . append ( " 生 \ n " ) . append ( distributionMark ) . append ( " \ n " ) . append ( modelNumber ) . append ( " \ n " ) . append ( jfLink ! = null ? jfLink : " " ) . append ( " \ n " )
@@ -956,7 +960,7 @@ public class InstructionServiceImpl implements IInstructionService {
String distributionMark = split [ 1 ] ;
String link = sanitizeLink ( split [ 3 ] ) ;
if ( ( link = = null | | link . isEmpty ( ) ) & & shouldAutoFillLink ( distributionMark ) ) {
String fetched = productJdConfigService . getJdUrlByProductModel ( split [ 2 ] ) ;
String fetched = productJdConfigService . getJdUrlByProductModel ( jdOrderModelShopService . lookupModelBase ( split[ 2 ] ) ) ;
if ( fetched ! = null & & ! fetched . isEmpty ( ) ) {
link = fetched ;
}
@@ -1148,7 +1152,7 @@ public class InstructionServiceImpl implements IInstructionService {
}
// 获取转链链接
String jf = productJdConfigService . getJdUrlByProductModel ( modelNumber ) ;
String jf = productJdConfigService . getJdUrlByProductModel ( jdOrderModelShopService . lookupModelBase ( modelNumber) ) ;
// 构建"生"指令格式
StringBuilder sheng = new StringBuilder ( ) ;
@@ -1453,7 +1457,7 @@ public class InstructionServiceImpl implements IInstructionService {
if ( order = = null ) {
return null ;
}
String model = o rder. get ModelNumber ( ) ;
String model = jdO rderModelShopService . full Model(order ) ;
String address = order . getAddress ( ) ;
String logistics = extractOriginalLogisticsLinkNew ( originalInput ) ;
if ( logistics = = null & & order . getLogisticsLink ( ) ! = null ) {
@@ -1515,6 +1519,7 @@ public class InstructionServiceImpl implements IInstructionService {
String originalInput = input . trim ( ) . replace ( " 元 " , " " ) ;
// 与 JDUtil.parseOrderFromText 一致的模板字段
JDOrder order = parseOrderFromText ( originalInput ) ;
jdOrderModelShopService . normalizeOrder ( order ) ;
// 字段校验并返回缺失项( 根据新模板格式, 单号存储在remark字段中)
StringBuilder missing = new StringBuilder ( ) ;
@@ -1658,7 +1663,7 @@ public class InstructionServiceImpl implements IInstructionService {
sb . append ( " 第三方单号: " ) . append ( order . getThirdPartyOrderNo ( ) . trim ( ) ) . append ( " \ n " ) ;
}
sb . append ( " 分销标记: " ) . append ( nvl ( order . getDistributionMark ( ) ) ) . append ( " \ n " ) ;
sb . append ( " 型号: " ) . append ( nvl ( o rder. get ModelNumber ( ) ) ) . append ( " \ n " ) ;
sb . append ( " 型号: " ) . append ( nvl ( jdO rderModelShopService . full Model(order ) ) ) . append ( " \ n " ) ;
sb . append ( " 下单人: " ) . append ( nvl ( order . getBuyer ( ) ) ) . append ( " \ n " ) ;
sb . append ( " 付款: " ) . append ( order . getPaymentAmount ( ) ! = null ? order . getPaymentAmount ( ) . toString ( ) : " " ) . append ( " \ n " ) ;
sb . append ( " 后返: " ) . append ( order . getRebateAmount ( ) ! = null ? order . getRebateAmount ( ) . toString ( ) : " " ) . append ( " \ n " ) ;
@@ -1692,6 +1697,11 @@ public class InstructionServiceImpl implements IInstructionService {
return first ;
}
/** 对外展示 / 录单文案用的完整型号(本体 + 店铺前缀) */
private String orderFullModel ( JDOrder order ) {
return order = = null ? " " : jdOrderModelShopService . fullModel ( order ) ;
}
private boolean isEmpty ( String s ) {
return s = = null | | s . isEmpty ( ) ;
}
@@ -1730,7 +1740,7 @@ public class InstructionServiceImpl implements IInstructionService {
sb . append ( " 下单地址(注意带分机): \ n " ) ;
sb . append ( order . getAddress ( ) ! = null ? order . getAddress ( ) : " " ) . append ( " \ n " ) ;
sb . append ( " ————————— \ n " ) ;
sb . append ( " 型号: " ) . append ( order. getModelNumber ( ) ! = null ? order . getModelNumber ( ) : " " ) . append ( " \ n " ) ;
sb . append ( " 型号: " ) . append ( orderFullModel ( order ) ) . append ( " \ n " ) ;
sb . append ( " \ n " ) ;
sb . append ( " 下单人(需填): \ n " ) ;
sb . append ( order . getBuyer ( ) ! = null ? order . getBuyer ( ) : " " ) . append ( " \ n " ) ;
@@ -1772,7 +1782,7 @@ public class InstructionServiceImpl implements IInstructionService {
sb . append ( " 分销标记: " ) . append ( order . getDistributionMark ( ) ! = null ? order . getDistributionMark ( ) : " " ) . append ( " \ n " ) ;
sb . append ( " 第三方单号: " ) . append ( order . getThirdPartyOrderNo ( ) ! = null ? order . getThirdPartyOrderNo ( ) : " " ) . append ( " \ n " ) ;
sb . append ( " 型号: \ n " ) ;
sb . append ( order. getModelNumber ( ) ! = null ? order . getModelNumber ( ) : " " ) . append ( " \ n " ) ;
sb . append ( orderFullModel ( order ) ) . append ( " \ n " ) ;
sb . append ( " 链接: \ n " ) ;
sb . append ( order . getLink ( ) ! = null ? order . getLink ( ) : " " ) . append ( " \ n " ) ;
sb . append ( " 下单付款: \ n " ) ;