From 7e2710da3fced52c67843a9081c273830831efa4 Mon Sep 17 00:00:00 2001 From: Misaka_Company Date: Thu, 12 Mar 2026 14:48:54 +0800 Subject: [PATCH] feat(BIP): dynamic row number from platform config column L --- VBA/Modules/BIPUploadModule.bas | 45 +++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/VBA/Modules/BIPUploadModule.bas b/VBA/Modules/BIPUploadModule.bas index 593c42d..0523400 100644 --- a/VBA/Modules/BIPUploadModule.bas +++ b/VBA/Modules/BIPUploadModule.bas @@ -9,9 +9,7 @@ Option Explicit ' 常量定义 '===================================================================== ' 提取条件配置 -Private Const CONDITION_CONFIG = "azxs,安装形式|bkxs,表壳形式|gclj,过程连接|jycz,接液材质|lcfw,量程范围|fjgn,附加功能" -' 行号基数 -Private Const ROW_NUMBER_BASE = 7000 +Private Const CONDITION_CONFIG = "azxs,安装形式 |bkxs,表壳形式 |gclj,过程连接 |jycz,接液材质 |lcfw,量程范围 |fjgn,附加功能" '===================================================================== ' 过程: ProcessOrdersToBIP @@ -221,6 +219,10 @@ Private Sub ProcessSingleOrder(orderNumber As String, _ Dim item As BomItem Dim lineIndex As Long lineIndex = 1 + + ' 创建字典跟踪每个 BIP 行号基数的当前序号 + Dim bipRowBaseDict As Object + Set bipRowBaseDict = CreateObject("Scripting.Dictionary") For Each item In matchedItems Dim itemNote As String @@ -231,10 +233,25 @@ Private Sub ProcessSingleOrder(orderNumber As String, _ If itemNote <> "" Then itemNote = itemNote & "; " itemNote = itemNote & item.MatchError End If + + ' 计算实际行号:行号 = BIP 行号基数 + 组内序号 (从 1 开始) + Dim baseValue As Long + baseValue = item.BipRowNumberBase + + Dim currentIndex As Long + If bipRowBaseDict.Exists(baseValue) Then + currentIndex = bipRowBaseDict(baseValue) + 1 + Else + currentIndex = 1 + End If + bipRowBaseDict(baseValue) = currentIndex + + Dim actualRowNumber As Long + actualRowNumber = baseValue + currentIndex - ' 创建BIP行数据并添加到集合 + ' 创建 BIP 行数据并添加到集合 outputData.Add CreateBIPRowArray(orderNumber, productCode, Quantity, _ - lineIndex, item.Code66, itemNote) + actualRowNumber, item.Code66, itemNote) lineIndex = lineIndex + 1 Next item @@ -242,20 +259,20 @@ Private Sub ProcessSingleOrder(orderNumber As String, _ End Sub '===================================================================== -' 函数: CreateBIPRowArray -' 功能: 创建BIP上传模板一行数据的数组 -' 参数: orderNumber - 生产订单号 +' 函数:CreateBIPRowArray +' 功能:创建 BIP 上传模板一行数据的数组 +' 参数:orderNumber - 生产订单号 ' productCode - 产品编码 ' quantity - 生产数量 -' lineIndex - 行号索引(从1开始) -' materialCode - 材料编码(66编码) +' actualRowNumber - 实际行号(BIP 行号基数 + 组内序号) +' materialCode - 材料编码(66 编码) ' note - 备注 -' 返回: Variant() - 包含10个元素的数组 +' 返回:Variant() - 包含 10 个元素的数组 '===================================================================== Private Function CreateBIPRowArray(orderNumber As String, _ productCode As String, _ Quantity As String, _ - lineIndex As Long, _ + actualRowNumber As Long, _ materialCode As String, _ note As String) As Variant() Dim rowData(1 To 10) As Variant @@ -263,8 +280,8 @@ Private Function CreateBIPRowArray(orderNumber As String, _ rowData(1) = orderNumber ' 来源单据号(生产订单号) rowData(2) = productCode ' 产品编码 rowData(3) = Quantity ' 生产数量 - rowData(4) = ROW_NUMBER_BASE + lineIndex ' 行号 = 基数 + 索引 - rowData(5) = materialCode ' 材料编码(66编码) + rowData(4) = actualRowNumber ' 行号 + rowData(5) = materialCode ' 材料编码(66 编码) rowData(6) = "一般发料" ' 供应方式(固定值) rowData(7) = Date ' 需用日期(当天日期) rowData(8) = "重庆布莱迪仪器仪表有限公司" ' 发料组织(固定值)