diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/domain/JDOrder.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/domain/JDOrder.java
index 2e13cf5..877863e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/domain/JDOrder.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/domain/JDOrder.java
@@ -82,6 +82,10 @@ public class JDOrder extends BaseEntity {
@Excel(name = "第三方单号")
private String thirdPartyOrderNo;
+ /** 京粉实际价格 */
+ @Excel(name = "京粉实际价格")
+ private Double jingfenActualPrice;
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/InstructionServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/InstructionServiceImpl.java
index d1f4c4c..ebae30a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/InstructionServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/InstructionServiceImpl.java
@@ -625,21 +625,14 @@ private String handleTF(String input) {
* 型号,地址,电话的处理逻辑不变,将10.10 腾锋 JY202510093195 设置成分销标识这个字段,比如之前是H-TF,现在改成H-TF(10.10 腾锋 JY202510093195)
* */
if (parts.length >= 7) { // 至少需要分销信息(3) + 型号(1) + 数量(1) + 姓名(1) + 电话(1) = 7个字段
- // 处理分销标记: 取前3个字段作为分销信息
- StringBuilder fenxiaoBuilder = new StringBuilder("H-TF");
- StringBuilder extraInfo = new StringBuilder();
- for (int i = 0; i < Math.min(3, parts.length); i++) {
- if (!parts[i].isEmpty()) {
- if (extraInfo.length() > 0) {
- extraInfo.append("\t");
- }
- extraInfo.append(parts[i]);
- }
+ // 处理分销标记: 简化格式,只保留H-TF和第三方单号(第三方单号已单独存储)
+ // 提取第三方单号(第3个字段,格式如:JY202511051374)
+ String thirdPartyOrderNo = parts.length > 2 ? parts[2].trim() : "";
+ String fenxiaoInfo = "H-TF";
+ // 如果第三方单号存在,添加到分销标记中(但保持简短)
+ if (!thirdPartyOrderNo.isEmpty()) {
+ fenxiaoInfo = "H-TF(" + thirdPartyOrderNo + ")";
}
- if (extraInfo.length() > 0) {
- fenxiaoBuilder.append("(").append(extraInfo).append(")");
- }
- String fenxiaoInfo = fenxiaoBuilder.toString();
// 提取型号(第4个字段)
String modelNumber = parts[3].replace("\\n", "");
@@ -1206,7 +1199,9 @@ private String handleTF(String input) {
extractField(input, fields, "地址:", "物流链接:");
extractField(input, fields, "物流链接:", "订单号:");
extractField(input, fields, "订单号:", "下单人:");
- java.util.regex.Pattern buyerPattern = java.util.regex.Pattern.compile("下单人:\\s*(.*?)\\s*(?=单:|\\Z)", java.util.regex.Pattern.DOTALL);
+ extractField(input, fields, "下单人:", "京粉实际价格:");
+ extractField(input, fields, "京粉实际价格:", "");
+ java.util.regex.Pattern buyerPattern = java.util.regex.Pattern.compile("下单人:\\s*(.*?)\\s*(?=京粉实际价格:|单:|\\Z)", java.util.regex.Pattern.DOTALL);
java.util.regex.Matcher buyerMatcher = buyerPattern.matcher(input);
if (buyerMatcher.find()) {
fields.put("下单人", buyerMatcher.group(1).trim());
@@ -1239,6 +1234,14 @@ private String handleTF(String input) {
order.setLogisticsLink(extractFirstUrl(fields.getOrDefault("物流链接", "")));
order.setOrderId(fields.getOrDefault("订单号", null));
order.setBuyer(fields.getOrDefault("下单人", null));
+ // 解析京粉实际价格
+ try {
+ String jingfenPriceStr = fields.getOrDefault("京粉实际价格", null);
+ if (jingfenPriceStr != null && !jingfenPriceStr.trim().isEmpty()) {
+ order.setJingfenActualPrice(Double.parseDouble(jingfenPriceStr.trim()));
+ }
+ } catch (Exception ignore) {
+ }
// 默认参与统计
order.setIsCountEnabled(1);
try {
diff --git a/ruoyi-system/src/main/resources/mapper/jarvis/JDOrderMapper.xml b/ruoyi-system/src/main/resources/mapper/jarvis/JDOrderMapper.xml
index 3a49896..eed3751 100644
--- a/ruoyi-system/src/main/resources/mapper/jarvis/JDOrderMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/jarvis/JDOrderMapper.xml
@@ -20,11 +20,12 @@
+
select id, remark, distribution_mark, model_number, link, payment_amount, rebate_amount,
- address, logistics_link, order_id, buyer, order_time, create_time, update_time, status, is_count_enabled, third_party_order_no
+ address, logistics_link, order_id, buyer, order_time, create_time, update_time, status, is_count_enabled, third_party_order_no, jingfen_actual_price
from jd_order
@@ -96,11 +97,11 @@
insert into jd_order (
remark, distribution_mark, model_number, link,
payment_amount, rebate_amount, address, logistics_link,
- order_id, buyer, order_time, create_time, update_time, status, is_count_enabled, third_party_order_no
+ order_id, buyer, order_time, create_time, update_time, status, is_count_enabled, third_party_order_no, jingfen_actual_price
) values (
#{remark}, #{distributionMark}, #{modelNumber}, #{link},
#{paymentAmount}, #{rebateAmount}, #{address}, #{logisticsLink},
- #{orderId}, #{buyer}, #{orderTime}, now(), now(), #{status}, #{isCountEnabled}, #{thirdPartyOrderNo}
+ #{orderId}, #{buyer}, #{orderTime}, now(), now(), #{status}, #{isCountEnabled}, #{thirdPartyOrderNo}, #{jingfenActualPrice}
)
@@ -121,6 +122,7 @@
status = #{status},
is_count_enabled = #{isCountEnabled},
third_party_order_no = #{thirdPartyOrderNo},
+ jingfen_actual_price = #{jingfenActualPrice},
update_time = now()
where id = #{id}
diff --git a/sql/add_jingfen_actual_price_field.sql b/sql/add_jingfen_actual_price_field.sql
new file mode 100644
index 0000000..ca1f660
--- /dev/null
+++ b/sql/add_jingfen_actual_price_field.sql
@@ -0,0 +1,4 @@
+-- 为京东订单表添加京粉实际价格字段
+-- 字段说明:jingfen_actual_price 存储京粉实际价格
+ALTER TABLE jd_order ADD COLUMN jingfen_actual_price DECIMAL(10,2) DEFAULT NULL COMMENT '京粉实际价格';
+
diff --git a/sql/alter_distribution_mark_length.sql b/sql/alter_distribution_mark_length.sql
new file mode 100644
index 0000000..cc3109b
--- /dev/null
+++ b/sql/alter_distribution_mark_length.sql
@@ -0,0 +1,4 @@
+-- 扩大分销标记字段长度,避免数据截断错误
+-- 将 distribution_mark 字段从当前长度扩展到 VARCHAR(500)
+ALTER TABLE jd_order MODIFY COLUMN distribution_mark VARCHAR(500) DEFAULT NULL COMMENT '分销标记';
+