6.9 KiB
6.9 KiB
发货数据:工作平台 → 财务系统(caiwu) 100% 还原逻辑对照
目的:让 caiwu「发货数据」界面与工作平台一致(含"导出/导出明细"两种口径),并把逻辑梳理清楚,脱离将停用的工作平台/ jiansun 库,改由经营分析副本库(operations_replica)直取。
一、总体数据流
工作平台(现状,即将停用)
- 定时调聚水潭
erp.dlv.query(参数tradetype=1=正常出库、sendsgn=1=已发货),按发货时间取发货单;erp.dlv.getDlv取每单的商品明细。 - 逐件写入
fys_omsDataDayDetail(明细表,一件商品一行)。 - 按
Expressno, Packageno归并成fys_omsDataDay(合并表,一个快递单号/包裹一行)。 - 页面与导出:
导出明细=查明细表;导出=查合并表;两者都再左连 店铺/仓库/快递/成品/运费/换单 维表。
caiwu(目标)
- 副本库
rpt.jst_order_express_details(发货单 dlv 镜像)×rpt.jst_OrderItem(逐件)+rpt.jst_sku(尺寸/重量/供应商)+rpt.fys_jstFreightCostDetail(运费)。 - 逐件写入
jst_oms_shipping(明细,一件一行;唯一键=包裹id+商品id)。 - 查询时按包裹归并出"合并"视图(不再单独建表,用 GROUP BY 实时归并)。
- 页面加「合并/明细」切换+两个导出,默认合并。
二、明细口径(对应"导出明细")——每件商品一行
一个发货单(包裹) × 其每件商品 = 一行。字段来源:
| 列 | 工作平台字段 | caiwu 来源 |
|---|---|---|
| 快递单号 Expressno | dlv.postcode | express_details.logistic_id(空时回落 l_id/运费expressNo) |
| 交易单号 Sourceno | dlv.sourceno | express_details.so_id |
| 配货单号 Packageno | dlv.wmspackno | 待补(副本库对应字段确认中) |
| 商品ID shopproid | item.shopproid | OrderItem.shop_i_id |
| 条形码 Barcode | item.skuoid | OrderItem.sku_id |
| 货号 Productcode | item.procode | OrderItem.i_id |
| 商品名称 SkuName | item.skuname | OrderItem.name |
| 数量 Num | item.skucount | OrderItem.qty |
| 供应商 SupplierName | item.scmname / scsku | sku.supplier_name / dis_co_name |
| 长/宽/高 | 商品资料 | sku.l / w / h |
| 体积 Svolume | 见"体积规则" | 见"体积规则" |
| 实称重量 Weight | dlv 回传重量 | express_details.weight |
| 发货时间 Shiptime | dlv.sended | express_details.send_time(空回落 jst_Orders.send_date) |
| 付款时间 Paydate | dlv.paytime | express_details.pay_time |
| 省/市/区/地址/收货人/电话 | dlv.linker.* | express_details.receiver_* / 地址拆分 |
| 店铺/平台/仓库 | dlv.shopcode/pltmcode/whcode | express_details.shop_name/platform_name/warehouse_name |
| 件数 Count | '1/N' | 同 Packageno 商品件数 → '1/N' |
明细专有规则
- Count = '1/N':同一 Packageno 有 N 件商品,则每行显示
1/N。 - 体积 Svolume:
- 普通商品(货号不在配件表 ProCodeOfShipData、快递在 ExpressOfShipData、条码不含
P-):Svolume = 数量 × 长 × 宽 × 高。 - 配件"一单多货"(同快递单号多件配件):只保留体积最大的一件,其余置 0(避免重复计泡)。
- 普通商品(货号不在配件表 ProCodeOfShipData、快递在 ExpressOfShipData、条码不含
- 去重:同 OmsId 重复的明细只留最小 Id 的一条。
三、合并口径(对应"导出")——按 Expressno + Packageno 归并
工作平台 group by Expressno, Packageno,各列归并规则(照抄其 groupStr):
- 去重逗号拼接:
条形码 Barcode、商品ID shopproid(同包裹多件时拼成A,B,C)。 - 求和 sum:
数量 Num、实称重量 Weight、体积 Svolume、对账重量 ReturnMinWeight。 - 取最大 max:
长 Slength、宽 Swidth、高 Sheight、RuleWeight、RuleVolume。 - 取第一 min:其余全部(交易单号、发货时间、省市区、地址、收货人、电话、商品名称 SkuName、店铺、买家昵称、买家/卖家留言、仓库、供应商、货号、平台、付款时间、成品编码/名称、备注 等)。
- 分组键:
Expressno, Packageno。
直白说:一个快递单号发了多件不同货 → 合并视图里"条形码/商品ID"逗号拼接、数量/重量/体积加总、长宽高取最大、其它取任一件的值;明细视图里则拆成多行、每行
1/N。
四、派生显示字段(两口径查询时左连/计算)
- 快递名称 ExNameDto:
fys_express.ExpressName去掉"一区""其他"后,取"-"前一段(无"-"则原值)。 - 店铺名 SpName:快递为"发票邮政"时=买家留言(去逗号),否则=店铺名。
- 发货批次 ExpreBatch:仅拼多多/京东——发货时间 0–12 点 →
日期_第一批,12–24 点 →日期_第二批。 - 换单前单号 FrontNum:
fys_omsDataDay_ChangeOrder(按 Sourceno+Packageno, chgsgn=2)。 - 地区 Area、ABpackage、CommodityExpress 等由维表补充。
五、筛选条件(合并/明细一致)——已核对工作平台 searchStr
| 条件 | 匹配方式 | caiwu 现状 |
|---|---|---|
| 发货时间起/止 | Shiptime 区间 | ✅ 已实现 |
| 交易单号 Sourceno | 精确 = | ✅ |
| 快递单号 Expressno | 精确 = | ✅ |
| 条形码 BarCode | 精确 = | ✅(现为模糊,可改精确) |
| 货号 ProCode | 精确 = | 待补 |
| 配货单号 Packageno | 精确 = | 待补 |
| 买家昵称 Buyernick | 精确 = | 待补 |
| 收货人 Receivername | 精确 = | 待补 |
| 电话 Receiverphone | 精确 = | 待补 |
| 快递公司 Express | IN 多选 | ✅ 已做多选 |
| 店铺 Shop / 仓库 Warehouse / 供应商 Supplier | IN 多选 | ✅ 已做多选 |
| 异常/加急/换单/快递标记 errsgn/jjsgn/chgsgn/kdsgn | = | 待补(可选) |
工作平台快递/店铺/仓库/供应商本就是多选 IN —— 与刚做的勾选式多选一致。
六、暂缓项(依赖"计泡 + 报价规则",报价系统建好后再做)
NewWeight(计泡后重量)、NewVolue(计泡体积)、ReturnMinVolue、FreightNew(运费)、FreightRate(费率)、FreightFormula(公式)、JSFreight(结算运费)。
这些依赖各快递计泡规则(fys_DisExpressWeight 等)与报价,先留空,后续接。
七、落地计划(分阶段,均可脱离工作平台)
- 明细存储:同步改成"发货单 × 每件商品"一行;补 Count='1/N'、体积规则(数量×长×宽×高 / 配件只留最大件)。
- 双口径:仓储/页面支持 合并(默认) / 明细 切换;合并按 §三 规则 GROUP BY 实时归并;两个导出分别对应。
- 补齐筛选与派生:货号/配货单号/买家昵称/收货人/电话 单值筛选;ExNameDto/SpName/ExpreBatch/换单前单号 派生列。
- (后续)计泡 + 运费:报价系统就绪后接 §六。
本文据 JSCrm 源码 OmsDataDayService.cs(getPageList / searchStr / searchDetailStr / DownLoadShipmentData 归并段)整理,作为 caiwu 发货数据还原的对照基准。