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 '分销标记'; +