This commit is contained in:
2025-11-05 19:55:09 +08:00
parent c3bcb3cad1
commit 35efec4acb
5 changed files with 35 additions and 18 deletions

View File

@@ -82,6 +82,10 @@ public class JDOrder extends BaseEntity {
@Excel(name = "第三方单号") @Excel(name = "第三方单号")
private String thirdPartyOrderNo; private String thirdPartyOrderNo;
/** 京粉实际价格 */
@Excel(name = "京粉实际价格")
private Double jingfenActualPrice;
} }

View File

@@ -625,21 +625,14 @@ private String handleTF(String input) {
* 型号地址电话的处理逻辑不变将10.10 腾锋 JY202510093195 设置成分销标识这个字段比如之前是H-TF现在改成H-TF(10.10 腾锋 JY202510093195) * 型号地址电话的处理逻辑不变将10.10 腾锋 JY202510093195 设置成分销标识这个字段比如之前是H-TF现在改成H-TF(10.10 腾锋 JY202510093195)
* */ * */
if (parts.length >= 7) { // 至少需要分销信息(3) + 型号(1) + 数量(1) + 姓名(1) + 电话(1) = 7个字段 if (parts.length >= 7) { // 至少需要分销信息(3) + 型号(1) + 数量(1) + 姓名(1) + 电话(1) = 7个字段
// 处理分销标记: 取前3个字段作为分销信息 // 处理分销标记: 简化格式只保留H-TF和第三方单号第三方单号已单独存储
StringBuilder fenxiaoBuilder = new StringBuilder("H-TF"); // 提取第三方单号第3个字段格式如JY202511051374
StringBuilder extraInfo = new StringBuilder(); String thirdPartyOrderNo = parts.length > 2 ? parts[2].trim() : "";
for (int i = 0; i < Math.min(3, parts.length); i++) { String fenxiaoInfo = "H-TF";
if (!parts[i].isEmpty()) { // 如果第三方单号存在,添加到分销标记中(但保持简短)
if (extraInfo.length() > 0) { if (!thirdPartyOrderNo.isEmpty()) {
extraInfo.append("\t"); fenxiaoInfo = "H-TF(" + thirdPartyOrderNo + ")";
}
extraInfo.append(parts[i]);
}
} }
if (extraInfo.length() > 0) {
fenxiaoBuilder.append("(").append(extraInfo).append(")");
}
String fenxiaoInfo = fenxiaoBuilder.toString();
// 提取型号第4个字段 // 提取型号第4个字段
String modelNumber = parts[3].replace("\\n", ""); String modelNumber = parts[3].replace("\\n", "");
@@ -1206,7 +1199,9 @@ private String handleTF(String input) {
extractField(input, fields, "地址:", "物流链接:"); extractField(input, fields, "地址:", "物流链接:");
extractField(input, fields, "物流链接:", "订单号:"); 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); java.util.regex.Matcher buyerMatcher = buyerPattern.matcher(input);
if (buyerMatcher.find()) { if (buyerMatcher.find()) {
fields.put("下单人", buyerMatcher.group(1).trim()); fields.put("下单人", buyerMatcher.group(1).trim());
@@ -1239,6 +1234,14 @@ private String handleTF(String input) {
order.setLogisticsLink(extractFirstUrl(fields.getOrDefault("物流链接", ""))); order.setLogisticsLink(extractFirstUrl(fields.getOrDefault("物流链接", "")));
order.setOrderId(fields.getOrDefault("订单号", null)); order.setOrderId(fields.getOrDefault("订单号", null));
order.setBuyer(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); order.setIsCountEnabled(1);
try { try {

View File

@@ -20,11 +20,12 @@
<result property="status" column="status"/> <result property="status" column="status"/>
<result property="isCountEnabled" column="is_count_enabled"/> <result property="isCountEnabled" column="is_count_enabled"/>
<result property="thirdPartyOrderNo" column="third_party_order_no"/> <result property="thirdPartyOrderNo" column="third_party_order_no"/>
<result property="jingfenActualPrice" column="jingfen_actual_price"/>
</resultMap> </resultMap>
<sql id="selectJDOrderBase"> <sql id="selectJDOrderBase">
select id, remark, distribution_mark, model_number, link, payment_amount, rebate_amount, 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 from jd_order
</sql> </sql>
@@ -96,11 +97,11 @@
insert into jd_order ( insert into jd_order (
remark, distribution_mark, model_number, link, remark, distribution_mark, model_number, link,
payment_amount, rebate_amount, address, logistics_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 ( ) values (
#{remark}, #{distributionMark}, #{modelNumber}, #{link}, #{remark}, #{distributionMark}, #{modelNumber}, #{link},
#{paymentAmount}, #{rebateAmount}, #{address}, #{logisticsLink}, #{paymentAmount}, #{rebateAmount}, #{address}, #{logisticsLink},
#{orderId}, #{buyer}, #{orderTime}, now(), now(), #{status}, #{isCountEnabled}, #{thirdPartyOrderNo} #{orderId}, #{buyer}, #{orderTime}, now(), now(), #{status}, #{isCountEnabled}, #{thirdPartyOrderNo}, #{jingfenActualPrice}
) )
</insert> </insert>
@@ -121,6 +122,7 @@
<if test="status != null"> status = #{status},</if> <if test="status != null"> status = #{status},</if>
<if test="isCountEnabled != null"> is_count_enabled = #{isCountEnabled},</if> <if test="isCountEnabled != null"> is_count_enabled = #{isCountEnabled},</if>
<if test="thirdPartyOrderNo != null"> third_party_order_no = #{thirdPartyOrderNo},</if> <if test="thirdPartyOrderNo != null"> third_party_order_no = #{thirdPartyOrderNo},</if>
<if test="jingfenActualPrice != null"> jingfen_actual_price = #{jingfenActualPrice},</if>
update_time = now() update_time = now()
</set> </set>
where id = #{id} where id = #{id}

View File

@@ -0,0 +1,4 @@
-- 为京东订单表添加京粉实际价格字段
-- 字段说明jingfen_actual_price 存储京粉实际价格
ALTER TABLE jd_order ADD COLUMN jingfen_actual_price DECIMAL(10,2) DEFAULT NULL COMMENT '京粉实际价格';

View File

@@ -0,0 +1,4 @@
-- 扩大分销标记字段长度,避免数据截断错误
-- 将 distribution_mark 字段从当前长度扩展到 VARCHAR(500)
ALTER TABLE jd_order MODIFY COLUMN distribution_mark VARCHAR(500) DEFAULT NULL COMMENT '分销标记';