任务描述

1. 问题分析

  pc打单卡顿,分析调用的webapi 执行方法,

根据批次号获取单品多件:GetOneMultiBatchPack()  ,sql 缺少索引,已添加 索引:

IX_RB_EUAgencyLabel_Setting_CustomerID_OrderSourceID,


开会讨论后优化的方案如下面2.2:



PC打单 客户端执行步骤:

1.获取单个包裹信息GetPackageInfo(productNoInputValue)    

2.生成包裹实例AddNewPackage()

3.设置包裹已拣货PackageSetPick(,1.统计快捷打单 2.批量统计打单)

4.DeleteLableFolder(LabelFolderName) 预下载PDF文件夹名字

5.打印结束UI操作:PrintFinishUiAction()

6.扫描到批次内的产品,成功出面单,播放提示音1 _voiceService.PlayAudio()



服务端webapi执行步骤:

单品单件:
打单扫描批次:ScanPrintBatchNo()
    1 根据打单批次查询数据:ScanBatchNumberNew()
         根据商户号获取参数配置:GetCustomerSetting()
         根据批次号获取单品单件:GetOneOneBatchPack()
         根据批次号获取单品多件:GetOneMultiBatchPack() 根据批次号获取单品多件
         根据批次号获取多品多件  二次分拣不打印面单
         判断用户是否开启一品多位IsOpenOneProductMorePosition():SELECT * FROM dbo.RB_Customer_Setting(NOLOCK) WHERE CustomerID = {0}
         根据包裹ID批量获取库存操作明细:GetStockOperateDetailByPackageID()
         返回查询结果

产品条码:PrintProductNo()
     
    1. 获取单个包裹信息GetPackageInfo()
         1生成过滤包裹列表GetFilterPackageIds()
         2扫描产品:ScanProductNo()=ScanProductBarCode()
  获取 产品包裹
      3获取产品模型 包裹GetProductModel():单品多件、二次分拣、单品单件、多品多件、包裹复核、二次分拣异常包裹,分别使用采购唯一码、系统sku、自定义sku、下单唯一码获取产品模型
                    根据采购单条码查询SKU:GetSKUByID():select SKU from  RB_Procurement_Detail (nolock) where ID=7428642 and  CustomerID=1  ,查询一个sku 很快
                    根据自定义SKU查询SKU:GetSKUByClientSKU():select SKU from  rb_product (nolock) where ClientSKU='GX12442260396' and  CustomerID=1,查询一个sku 很快
                     得到一个对象实体RB_Product


2.解决方案

 2.1 添加索引的sql:


 SELECT  pop.ID ,

                    pop.CustomerID ,

                    pop.MergerPackageNo ,

                    pop.TrackNumber ,

                    pop.TurnNumber,

                    pop.LogisticsOrderNo ,

                    pop.PackageState ,

                    pop.SystemWeight ,

                    pop.PrintBatchNo ,

                    pop.TransportID ,

                    pop.GetPackageTraceTime,

                    pop.PrintType,

                    popd.SKU ,

                    pop.PickingPersonName,

                    popd.DeclarationName ,

                    popd.DeclarationNameCN ,

                    p.ClientSKU ,

                    p.ProductName ,

                    p.ProductNameCN ,

                    popd.ProductNum ,

                    p.ImageUrl,

                    p.WithBattery,

                    oi.OrderSourceID,

                    oi.ClientOrderCode,

                    oi.ShipMemo,

                    ISNULL(pop.GetTrackNumberTime, oi.SaveTrackNumbersTime) TrackNumberTime,

                    oi.OrderSourceID,

                    t.PrintType TransportPrintType,

                    t.TransportState,

                    t.TrackingNumberValidDays,

                    oi.OrderStatus,

                    oi.OrderState,

                    os.OrderSourceType,

                    pop.Country Shorthand,

                    ISNULL(api.Transport_API_Class, -1) Transport_API_Class,

                    t.AllowPrint,

                    t.AllowLogistPrint,

                    pop.PrintAddressState,

                    pa.ToDeliveryPackNoteMemo,

                    oi.AmazonShipmentId,

                    coun.IsEuropeanUnion,

p.IsNeedCeCertification ,

                    es.ID AS OuerOrderSourceID,

                    pop.IsStockOrderWithPackage,

                    es.IsPrintSelfShipLable,

                    es.IsPrintStockOrderShipLable

            FROM    RB_Procurement_Order_Package pop ( NOLOCK )

                    INNER JOIN RB_Procurement_Order_Package_Detail popd ( NOLOCK ) ON pop.CustomerID = popd.CustomerID

                                                                          AND pop.ID = popd.PackageID

                    INNER JOIN dbo.RB_Product p ( NOLOCK ) ON p.CustomerID = pop.CustomerID

                                                              AND p.SKU = popd.SKU

                    INNER JOIN dbo.RB_OrderInfo oi ( NOLOCK ) ON pop.MergerPackageNo = oi.OrderCode

                                                     AND oi.CustomerID = pop.CustomerID

                    INNER JOIN  RB_Transport t(NOLOCK) ON t.CustomerID=pop.CustomerID AND t.ID=pop.TransportID

                    INNER JOIN RB_Transport_API api ( NOLOCK ) ON t.Transport_API_ID = api.ID

                                                                       AND t.CustomerID = api.CustomerID

                    LEFT JOIN RB_OrderSource os ( NOLOCK ) ON os.CustomerID = pop.CustomerID

                                                              AND os.ID = oi.OrderSourceID

                    LEFT JOIN RB_Product_Admin pa ( NOLOCK ) ON pa.SKU = p.SKU

                                                            AND pa.CustomerID = pop.CustomerID

 

                    Left JOIN E_Country coun  ( NOLOCK ) on pop.Country =coun.Shorthand

 

                    LEFT JOIN RB_EUAgencyLabel_Setting es (nolock) on

oi.CustomerID=es.CustomerID and oi.OrderSourceID=es.OrderSourceID

            WHERE   pop.CustomerID = @CustomerID

            AND popd.ProductNum > 1

            AND pop.PrintTime >= @PrintTime

                    AND pop.PrintType = @PrintType

                    AND pop.WareHouseID = @WareHouseID

                    AND pop.PrintBatchNo =  @PrintBatchNo

                    AND pop.PackageState =@PackageState

                    AND pop.PrintAddressState=0

                    AND oi.OrderStatus = 0

                    {0}

                    AND pop.SKUNumberWithPackage = 1

                    AND pop.ProductNumberWithPackage > 1

                    AND popd.SKU = @SKU



2.2 PC 打单优化点:

1.添加日志记录api执行时间;7.20
2.添加日志记录面单下载执行时间;下载面单服务;7.26
3. 异步处理更新包裹状态(redis,实时落盘);7.30


历史记录  
  1. 2022-07-18 15:40:39, 由 陈少军 创建。
  2. 2022-07-18 15:41:18, 由 陈少军 编辑。
    修改了 任务描述,区别为:
    002- pc打单卡顿,分析调用的webapi 执行方法,
    002+ pc打单卡顿,分析调用的webapi 执行方法,
    003- 根据批次号获取单品多件:GetOneMultiBatchPack() ,sql 缺少索引,已添加 索引:
    003+ 根据批次号获取单品多件:GetOneMultiBatchPack() ,sql 缺少索引,已添加 索引:
    004- IX_RB_EUAgencyLabel_Setting_CustomerID_OrderSourceID,
    004+ IX_RB_EUAgencyLabel_Setting_CustomerID_OrderSourceID,
    005-
    005+
    006- 开发讨论后优化的方案如下面:
    006+ 开会讨论后优化的方案如下面2.2:
    007-
    007+
    008-
    008+
    009-
    009+ PC打单 客户端执行步骤:
    010-
    010+ 1.获取单个包裹信息GetPackageInfo(productNoInputValue)
    011- PC打单 客户端执行步骤:
    011+ 2.生成包裹实例AddNewPackage()
    012- 1.获取单个包裹信息GetPackageInfo(productNoInputValue)
    012+ 3.设置包裹已拣货PackageSetPick(,1.统计快捷打单 2.批量统计打单)
    013- 2.生成包裹实例AddNewPackage()
    013+ 4.DeleteLableFolder(LabelFolderName) 预下载PDF文件夹名字
    014- 3.设置包裹已拣货PackageSetPick(,1.统计快捷打单 2.批量统计打单)
    014+ 5.打印结束UI操作:PrintFinishUiAction()
    015- 4.DeleteLableFolder(LabelFolderName) 预下载PDF文件夹名字
    015+ 6.扫描到批次内的产品,成功出面单,播放提示音1 _voiceService.PlayAudio()
    016- 5.打印结束UI操作:PrintFinishUiAction()
    016+
    017- 6.扫描到批次内的产品,成功出面单,播放提示音1 _voiceService.PlayAudio()
    017+
    018-
    018+ 服务端webapi执行步骤:
    019-
    019+ 单品单件:打单扫描批次:ScanPrintBatchNo() 1 根据打单批次查询数据:ScanBatchNumberNew() 根据商户号获取参数配置:GetCustomerSetting() 根据批次号获取单品单件:GetOneOneBatchPack() 根据批次号获取单品多件:GetOneMultiBatchPack() 根据批次号获取单品多件 根据批次号获取多品多件 二次分拣不打印面单 判断用户是否开启一品多位IsOpenOneProductMorePosition():SELECT * FROM dbo.RB_Customer_Setting(NOLOCK) WHERE CustomerID = {0} 根据包裹ID批量获取库存操作明细:GetStockOperateDetailByPackageID() 返回查询结果产品条码:PrintProductNo() 1. 获取单个包裹信息GetPackageInfo() 1生成过滤包裹列表GetFilterPackageIds() 2扫描产品:ScanProductNo()=ScanProductBarCode() 获取 产品包裹 3获取产品模型 包裹GetProductModel():单品多件、二次分拣、单品单件、多品多件、包裹复核、二次分拣异常包裹,分别使用采购唯一码、系统sku、自定义sku、下单唯一码获取产品模型 根据采购单条码查询SKU:GetSKUByID():select SKU from RB_Procurement_Detail (nolock) where ID=7428642 and CustomerID=1 ,查询一个sku 很快 根据自定义SKU查询SKU:GetSKUByClientSKU():select SKU from rb_product (nolock) where ClientSKU='GX12442260396' and CustomerID=1,查询一个sku 很快 得到一个对象实体RB_Product
    020- 服务端webapi执行步骤:
    020+
    021- 单品单件:打单扫描批次:ScanPrintBatchNo() 1 根据打单批次查询数据:ScanBatchNumberNew() 根据商户号获取参数配置:GetCustomerSetting() 根据批次号获取单品单件:GetOneOneBatchPack() 根据批次号获取单品多件:GetOneMultiBatchPack() 根据批次号获取单品多件 根据批次号获取多品多件 二次分拣不打印面单 判断用户是否开启一品多位IsOpenOneProductMorePosition():SELECT * FROM dbo.RB_Customer_Setting(NOLOCK) WHERE CustomerID = {0} 根据包裹ID批量获取库存操作明细:GetStockOperateDetailByPackageID() 返回查询结果产品条码:PrintProductNo() 1. 获取单个包裹信息GetPackageInfo() 1生成过滤包裹列表GetFilterPackageIds() 2扫描产品:ScanProductNo()=ScanProductBarCode() 获取 产品包裹 3获取产品模型 包裹GetProductModel():单品多件、二次分拣、单品单件、多品多件、包裹复核、二次分拣异常包裹,分别使用采购唯一码、系统sku、自定义sku、下单唯一码获取产品模型 根据采购单条码查询SKU:GetSKUByID():select SKU from RB_Procurement_Detail (nolock) where ID=7428642 and CustomerID=1 ,查询一个sku 很快 根据自定义SKU查询SKU:GetSKUByClientSKU():select SKU from rb_product (nolock) where ClientSKU='GX12442260396' and CustomerID=1,查询一个sku 很快 得到一个对象实体RB_Product
    021+ 2.解决方案
    022-
    022+ 2.1 添加索引的sql:
    023- 2.解决方案
    023+
    024- 2.1 添加索引的sql:
    024+ SELECT pop.ID ,
    025-
    025+ pop.CustomerID ,
    026- SELECT pop.ID ,
    026+ pop.MergerPackageNo ,
    027- pop.CustomerID ,
    027+ pop.TrackNumber ,
    028- pop.MergerPackageNo ,
    028+ pop.TurnNumber,
    029- pop.TrackNumber ,
    029+ pop.LogisticsOrderNo ,
    030- pop.TurnNumber,
    030+ pop.PackageState ,
    031- pop.LogisticsOrderNo ,
    031+ pop.SystemWeight ,
    032- pop.PackageState ,
    032+ pop.PrintBatchNo ,
    033- pop.SystemWeight ,
    033+ pop.TransportID ,
    034- pop.PrintBatchNo ,
    034+ pop.GetPackageTraceTime,
    035- pop.TransportID ,
    035+ pop.PrintType,
    036- pop.GetPackageTraceTime,
    036+ popd.SKU ,
    037- pop.PrintType,
    037+ pop.PickingPersonName,
    038- popd.SKU ,
    038+ popd.DeclarationName ,
    039- pop.PickingPersonName,
    039+ popd.DeclarationNameCN ,
    040- popd.DeclarationName ,
    040+ p.ClientSKU ,
    041- popd.DeclarationNameCN ,
    041+ p.ProductName ,
    042- p.ClientSKU ,
    042+ p.ProductNameCN ,
    043- p.ProductName ,
    043+ popd.ProductNum ,
    044- p.ProductNameCN ,
    044+ p.ImageUrl,
    045- popd.ProductNum ,
    045+ p.WithBattery,
    046- p.ImageUrl,
    046+ oi.OrderSourceID,
    047- p.WithBattery,
    047+ oi.ClientOrderCode,
    048- oi.OrderSourceID,
    048+ oi.ShipMemo,
    049- oi.ClientOrderCode,
    049+ ISNULL(pop.GetTrackNumberTime, oi.SaveTrackNumbersTime) TrackNumberTime,
    050- oi.ShipMemo,
    050+ oi.OrderSourceID,
    051- ISNULL(pop.GetTrackNumberTime, oi.SaveTrackNumbersTime) TrackNumberTime,
    051+ t.PrintType TransportPrintType,
    052- oi.OrderSourceID,
    052+ t.TransportState,
    053- t.PrintType TransportPrintType,
    053+ t.TrackingNumberValidDays,
    054- t.TransportState,
    054+ oi.OrderStatus,
    055- t.TrackingNumberValidDays,
    055+ oi.OrderState,
    056- oi.OrderStatus,
    056+ os.OrderSourceType,
    057- oi.OrderState,
    057+ pop.Country Shorthand,
    058- os.OrderSourceType,
    058+ ISNULL(api.Transport_API_Class, -1) Transport_API_Class,
    059- pop.Country Shorthand,
    059+ t.AllowPrint,
    060- ISNULL(api.Transport_API_Class, -1) Transport_API_Class,
    060+ t.AllowLogistPrint,
    061- t.AllowPrint,
    061+ pop.PrintAddressState,
    062- t.AllowLogistPrint,
    062+ pa.ToDeliveryPackNoteMemo,
    063- pop.PrintAddressState,
    063+ oi.AmazonShipmentId,
    064- pa.ToDeliveryPackNoteMemo,
    064+ coun.IsEuropeanUnion,
    065- oi.AmazonShipmentId,
    065+ p.IsNeedCeCertification ,
    066- coun.IsEuropeanUnion,
    066+ es.ID AS OuerOrderSourceID,
    067- p.IsNeedCeCertification ,
    067+ pop.IsStockOrderWithPackage,
    068- es.ID AS OuerOrderSourceID,
    068+ es.IsPrintSelfShipLable,
    069- pop.IsStockOrderWithPackage,
    069+ es.IsPrintStockOrderShipLable
    070- es.IsPrintSelfShipLable,
    070+ FROM RB_Procurement_Order_Package pop ( NOLOCK )
    071- es.IsPrintStockOrderShipLable
    071+ INNER JOIN RB_Procurement_Order_Package_Detail popd ( NOLOCK ) ON pop.CustomerID = popd.CustomerID
    072- FROM RB_Procurement_Order_Package pop ( NOLOCK )
    072+ AND pop.ID = popd.PackageID
    073- INNER JOIN RB_Procurement_Order_Package_Detail popd ( NOLOCK ) ON pop.CustomerID = popd.CustomerID
    073+ INNER JOIN dbo.RB_Product p ( NOLOCK ) ON p.CustomerID = pop.CustomerID
    074- AND pop.ID = popd.PackageID
    074+ AND p.SKU = popd.SKU
    075- INNER JOIN dbo.RB_Product p ( NOLOCK ) ON p.CustomerID = pop.CustomerID
    075+ INNER JOIN dbo.RB_OrderInfo oi ( NOLOCK ) ON pop.MergerPackageNo = oi.OrderCode
    076- AND p.SKU = popd.SKU
    076+ AND oi.CustomerID = pop.CustomerID
    077- INNER JOIN dbo.RB_OrderInfo oi ( NOLOCK ) ON pop.MergerPackageNo = oi.OrderCode
    077+ INNER JOIN RB_Transport t(NOLOCK) ON t.CustomerID=pop.CustomerID AND t.ID=pop.TransportID
    078- AND oi.CustomerID = pop.CustomerID
    078+ INNER JOIN RB_Transport_API api ( NOLOCK ) ON t.Transport_API_ID = api.ID
    079- INNER JOIN RB_Transport t(NOLOCK) ON t.CustomerID=pop.CustomerID AND t.ID=pop.TransportID
    079+ AND t.CustomerID = api.CustomerID
    080- INNER JOIN RB_Transport_API api ( NOLOCK ) ON t.Transport_API_ID = api.ID
    080+ LEFT JOIN RB_OrderSource os ( NOLOCK ) ON os.CustomerID = pop.CustomerID
    081- AND t.CustomerID = api.CustomerID
    081+ AND os.ID = oi.OrderSourceID
    082- LEFT JOIN RB_OrderSource os ( NOLOCK ) ON os.CustomerID = pop.CustomerID
    082+ LEFT JOIN RB_Product_Admin pa ( NOLOCK ) ON pa.SKU = p.SKU
    083- AND os.ID = oi.OrderSourceID
    083+ AND pa.CustomerID = pop.CustomerID
    084- LEFT JOIN RB_Product_Admin pa ( NOLOCK ) ON pa.SKU = p.SKU
    084+
    085- AND pa.CustomerID = pop.CustomerID
    085+ Left JOIN E_Country coun ( NOLOCK ) on pop.Country =coun.Shorthand
    087- Left JOIN E_Country coun ( NOLOCK ) on pop.Country =coun.Shorthand
    087+ LEFT JOIN RB_EUAgencyLabel_Setting es (nolock) on
    088-
    088+ oi.CustomerID=es.CustomerID and oi.OrderSourceID=es.OrderSourceID
    089- LEFT JOIN RB_EUAgencyLabel_Setting es (nolock) on
    089+ WHERE pop.CustomerID = @CustomerID
    090- oi.CustomerID=es.CustomerID and oi.OrderSourceID=es.OrderSourceID
    090+ AND popd.ProductNum > 1
    091- WHERE pop.CustomerID = @CustomerID
    091+ AND pop.PrintTime >= @PrintTime
    092- AND popd.ProductNum > 1
    092+ AND pop.PrintType = @PrintType
    093- AND pop.PrintTime >= @PrintTime
    093+ AND pop.WareHouseID = @WareHouseID
    094- AND pop.PrintType = @PrintType
    094+ AND pop.PrintBatchNo = @PrintBatchNo
    095- AND pop.WareHouseID = @WareHouseID
    095+ AND pop.PackageState =@PackageState
    096- AND pop.PrintBatchNo = @PrintBatchNo
    096+ AND pop.PrintAddressState=0
    097- AND pop.PackageState =@PackageState
    097+ AND oi.OrderStatus = 0
    098- AND pop.PrintAddressState=0
    098+ {0}
    099- AND oi.OrderStatus = 0
    099+ AND pop.SKUNumberWithPackage = 1
    100- {0}
    100+ AND pop.ProductNumberWithPackage > 1
    101- AND pop.SKUNumberWithPackage = 1
    101+ AND popd.SKU = @SKU
    102- AND pop.ProductNumberWithPackage > 1
    102+
    103- AND popd.SKU = @SKU
    103+
    104-
    104+ 2.2 PC 打单优化点:
    105-
    105+ 1.添加日志记录api执行时间;7.202.添加日志记录面单下载执行时间;下载面单服务;7.263. 异步处理更新包裹状态(redis,实时落盘);7.30
    106- 2.2 PC 打单优化点:
    106+
    107- 1.添加日志记录api执行时间;7.202.添加日志记录面单下载执行时间;下载面单服务;7.263. 异步处理更新包裹状态(redis,实时落盘);7.30
    108-
    002- <p> pc打单卡顿,分析调用的webapi 执行方法,
    002+ <p> pc打单卡顿,分析调用的webapi 执行方法,</p>
    003- </p><p class="MsoNormal"><span>根据批次号获取单品多件</span><span>:GetOneMultiBatchPack() ,</span>sql 缺少索引,已添加 索引:
    003+ <p class="MsoNormal"><span>根据批次号获取单品多件</span><span>:GetOneMultiBatchPack() ,</span>sql 缺少索引,已添加 索引:</p>
    004- </p><p class="MsoNormal">IX_RB_EUAgencyLabel_Setting_CustomerID_OrderSourceID,</p>
    004+ <p class="MsoNormal">IX_RB_EUAgencyLabel_Setting_CustomerID_OrderSourceID,</p>
    005- <p class="MsoNormal"><br /></p>
    005+ <p class="MsoNormal"><br /></p>
    006- <p class="MsoNormal">开发讨论后优化的方案如下面:</p>
    006+ <p class="MsoNormal">开会讨论后优化的方案如下面2.2:</p>
    007-
    007+ <p><br /></p>
    008-
    008+ <p><br /></p>
    009- <p><br /></p>
    009+ <h3><b>PC</b><b>打单 客户端执行步骤:</b><b></b></h3>
    010- <p><br /></p>
    010+ <p class="MsoNormal"><span>1.</span><span>获取单个包裹信息</span><span>GetPackageInfo</span><span>(</span><span>productNoInputValue</span><span>) </span></p>
    011- <h3><b>PC</b><b>打单 客户端执行步骤:</b><b></b></h3>
    011+ <p class="MsoNormal"><span>2.</span><span>生成包裹实例</span><span>AddNewPackage()</span></p>
    012- <p class="MsoNormal"><span>1.</span><span>获取单个包裹信息</span><span>GetPackageInfo</span><span>(</span><span>productNoInputValue</span><span>) </span></p>
    012+ <p class="MsoNormal"><span>3.</span><span>设置包裹已拣货</span><span>PackageSetPick(,1.</span><span>统计快捷打单 </span><span>2.</span><span>批量统计打单</span><span>)</span></p>
    013- <p class="MsoNormal"><span>2.</span><span>生成包裹实例</span><span>AddNewPackage()</span></p>
    013+ <p class="MsoNormal"><span>4.DeleteLableFolder(LabelFolderName) </span><span>预下载</span><span>PDF</span><span>文件夹名字</span></p>
    014- <p class="MsoNormal"><span>3.</span><span>设置包裹已拣货</span><span>PackageSetPick(,1.</span><span>统计快捷打单 </span><span>2.</span><span>批量统计打单</span><span>)</span></p>
    014+ <p class="MsoNormal"><span>5.</span><span>打印结束</span><span>UI</span><span>操作</span><span>:PrintFinishUiAction()</span></p>
    015- <p class="MsoNormal"><span>4.DeleteLableFolder(LabelFolderName) </span><span>预下载</span><span>PDF</span><span>文件夹名字</span></p>
    015+ <p class="MsoNormal"><span>6.</span><span>扫描到批次内的产品,成功出面单,播放提示音</span><span>1 _voiceService.PlayAudio()</span></p>
    016- <p class="MsoNormal"><span>5.</span><span>打印结束</span><span>UI</span><span>操作</span><span>:PrintFinishUiAction()</span></p>
    016+ <p><br /></p>
    017- <p class="MsoNormal"><span>6.</span><span>扫描到批次内的产品,成功出面单,播放提示音</span><span>1 _voiceService.PlayAudio()</span></p>
    017+ <p><br /></p>
    018- <p><br /></p>
    018+ <p>服务端webapi执行步骤:</p>
    019- <p><br /></p>
    019+ <p>单品单件:<br />打单扫描批次:ScanPrintBatchNo()<br /> 1 根据打单批次查询数据:ScanBatchNumberNew()<br /> 根据商户号获取参数配置:GetCustomerSetting()<br /> 根据批次号获取单品单件:GetOneOneBatchPack()<br /> 根据批次号获取单品多件:GetOneMultiBatchPack() 根据批次号获取单品多件<br /> 根据批次号获取多品多件 二次分拣不打印面单<br /> 判断用户是否开启一品多位IsOpenOneProductMorePosition():SELECT * FROM dbo.RB_Customer_Setting(NOLOCK) WHERE CustomerID = {0}<br /> 根据包裹ID批量获取库存操作明细:GetStockOperateDetailByPackageID()<br /> 返回查询结果<br /><br />产品条码:PrintProductNo()<br /> <br /> 1. 获取单个包裹信息GetPackageInfo()<br /> 1生成过滤包裹列表GetFilterPackageIds()<br /> 2扫描产品:ScanProductNo()=ScanProductBarCode()<br /> 获取 产品包裹<br /> 3获取产品模型 包裹GetProductModel():单品多件、二次分拣、单品单件、多品多件、包裹复核、二次分拣异常包裹,分别使用采购唯一码、系统sku、自定义sku、下单唯一码获取产品模型<br /> 根据采购单条码查询SKU:GetSKUByID():select SKU from RB_Procurement_Detail (nolock) where ID=7428642 and CustomerID=1 ,查询一个sku 很快<br /> 根据自定义SKU查询SKU:GetSKUByClientSKU():select SKU from rb_product (nolock) where ClientSKU='GX12442260396' and CustomerID=1,查询一个sku 很快<br /> 得到一个对象实体RB_Product</p>
    020- <p>服务端webapi执行步骤:</p>
    020+ <p><br /></p>
    021- <p>单品单件:<br />打单扫描批次:ScanPrintBatchNo()<br /> 1 根据打单批次查询数据:ScanBatchNumberNew()<br /> 根据商户号获取参数配置:GetCustomerSetting()<br /> 根据批次号获取单品单件:GetOneOneBatchPack()<br /> 根据批次号获取单品多件:GetOneMultiBatchPack() 根据批次号获取单品多件<br /> 根据批次号获取多品多件 二次分拣不打印面单<br /> 判断用户是否开启一品多位IsOpenOneProductMorePosition():SELECT * FROM dbo.RB_Customer_Setting(NOLOCK) WHERE CustomerID = {0}<br /> 根据包裹ID批量获取库存操作明细:GetStockOperateDetailByPackageID()<br /> 返回查询结果<br /><br />产品条码:PrintProductNo()<br /> <br /> 1. 获取单个包裹信息GetPackageInfo()<br /> 1生成过滤包裹列表GetFilterPackageIds()<br /> 2扫描产品:ScanProductNo()=ScanProductBarCode()<br /> 获取 产品包裹<br /> 3获取产品模型 包裹GetProductModel():单品多件、二次分拣、单品单件、多品多件、包裹复核、二次分拣异常包裹,分别使用采购唯一码、系统sku、自定义sku、下单唯一码获取产品模型<br /> 根据采购单条码查询SKU:GetSKUByID():select SKU from RB_Procurement_Detail (nolock) where ID=7428642 and CustomerID=1 ,查询一个sku 很快<br /> 根据自定义SKU查询SKU:GetSKUByClientSKU():select SKU from rb_product (nolock) where ClientSKU='GX12442260396' and CustomerID=1,查询一个sku 很快<br /> 得到一个对象实体RB_Product</p>
    021+ <p>2.解决方案</p>
    022- <p><br /></p>
    022+ <p>2.1 添加索引的sql:</p>
    023- <p>2.解决方案</p>
    023+ <p><br /></p>
    024- <p>2.1 添加索引的sql:</p>
    024+ <p class="MsoNormal"><span>SELECT pop.ID ,</span></p>
    025- <p><br /></p>
    025+ <p class="MsoNormal"><span>pop.CustomerID ,</span></p>
    026- <p class="MsoNormal"><span>SELECT pop.ID ,</span></p>
    026+ <p class="MsoNormal"><span>pop.MergerPackageNo ,</span></p>
    027- <p class="MsoNormal"><span>pop.CustomerID ,</span></p>
    027+ <p class="MsoNormal"><span>pop.TrackNumber ,</span></p>
    028- <p class="MsoNormal"><span>pop.MergerPackageNo ,</span></p>
    028+ <p class="MsoNormal"><span>pop.TurnNumber,</span></p>
    029- <p class="MsoNormal"><span>pop.TrackNumber ,</span></p>
    029+ <p class="MsoNormal"><span>pop.LogisticsOrderNo ,</span></p>
    030- <p class="MsoNormal"><span>pop.TurnNumber,</span></p>
    030+ <p class="MsoNormal"><span>pop.PackageState ,</span></p>
    031- <p class="MsoNormal"><span>pop.LogisticsOrderNo ,</span></p>
    031+ <p class="MsoNormal"><span>pop.SystemWeight ,</span></p>
    032- <p class="MsoNormal"><span>pop.PackageState ,</span></p>
    032+ <p class="MsoNormal"><span>pop.PrintBatchNo ,</span></p>
    033- <p class="MsoNormal"><span>pop.SystemWeight ,</span></p>
    033+ <p class="MsoNormal"><span>pop.TransportID ,</span></p>
    034- <p class="MsoNormal"><span>pop.PrintBatchNo ,</span></p>
    034+ <p class="MsoNormal"><span>pop.GetPackageTraceTime,</span></p>
    035- <p class="MsoNormal"><span>pop.TransportID ,</span></p>
    035+ <p class="MsoNormal"><span>pop.PrintType,</span></p>
    036- <p class="MsoNormal"><span>pop.GetPackageTraceTime,</span></p>
    036+ <p class="MsoNormal"><span>popd.SKU ,</span></p>
    037- <p class="MsoNormal"><span>pop.PrintType,</span></p>
    037+ <p class="MsoNormal"><span>pop.PickingPersonName,</span></p>
    038- <p class="MsoNormal"><span>popd.SKU ,</span></p>
    038+ <p class="MsoNormal"><span>popd.DeclarationName ,</span></p>
    039- <p class="MsoNormal"><span>pop.PickingPersonName,</span></p>
    039+ <p class="MsoNormal"><span>popd.DeclarationNameCN ,</span></p>
    040- <p class="MsoNormal"><span>popd.DeclarationName ,</span></p>
    040+ <p class="MsoNormal"><span>p.ClientSKU ,</span></p>
    041- <p class="MsoNormal"><span>popd.DeclarationNameCN ,</span></p>
    041+ <p class="MsoNormal"><span>p.ProductName ,</span></p>
    042- <p class="MsoNormal"><span>p.ClientSKU ,</span></p>
    042+ <p class="MsoNormal"><span>p.ProductNameCN ,</span></p>
    043- <p class="MsoNormal"><span>p.ProductName ,</span></p>
    043+ <p class="MsoNormal"><span>popd.ProductNum ,</span></p>
    044- <p class="MsoNormal"><span>p.ProductNameCN ,</span></p>
    044+ <p class="MsoNormal"><span>p.ImageUrl,</span></p>
    045- <p class="MsoNormal"><span>popd.ProductNum ,</span></p>
    045+ <p class="MsoNormal"><span>p.WithBattery,</span></p>
    046- <p class="MsoNormal"><span>p.ImageUrl,</span></p>
    046+ <p class="MsoNormal"><span>oi.OrderSourceID,</span></p>
    047- <p class="MsoNormal"><span>p.WithBattery,</span></p>
    047+ <p class="MsoNormal"><span>oi.ClientOrderCode,</span></p>
    048- <p class="MsoNormal"><span>oi.OrderSourceID,</span></p>
    048+ <p class="MsoNormal"><span>oi.ShipMemo,</span></p>
    049- <p class="MsoNormal"><span>oi.ClientOrderCode,</span></p>
    049+ <p class="MsoNormal"><span>ISNULL(pop.GetTrackNumberTime, oi.SaveTrackNumbersTime) TrackNumberTime,</span></p>
    050- <p class="MsoNormal"><span>oi.ShipMemo,</span></p>
    050+ <p class="MsoNormal"><span>oi.OrderSourceID,</span></p>
    051- <p class="MsoNormal"><span>ISNULL(pop.GetTrackNumberTime, oi.SaveTrackNumbersTime) TrackNumberTime,</span></p>
    051+ <p class="MsoNormal"><span>t.PrintType TransportPrintType,</span></p>
    052- <p class="MsoNormal"><span>oi.OrderSourceID,</span></p>
    052+ <p class="MsoNormal"><span>t.TransportState,</span></p>
    053- <p class="MsoNormal"><span>t.PrintType TransportPrintType,</span></p>
    053+ <p class="MsoNormal"><span>t.TrackingNumberValidDays,</span></p>
    054- <p class="MsoNormal"><span>t.TransportState,</span></p>
    054+ <p class="MsoNormal"><span>oi.OrderStatus,</span></p>
    055- <p class="MsoNormal"><span>t.TrackingNumberValidDays,</span></p>
    055+ <p class="MsoNormal"><span>oi.OrderState,</span></p>
    056- <p class="MsoNormal"><span>oi.OrderStatus,</span></p>
    056+ <p class="MsoNormal"><span>os.OrderSourceType,</span></p>
    057- <p class="MsoNormal"><span>oi.OrderState,</span></p>
    057+ <p class="MsoNormal"><span>pop.Country Shorthand,</span></p>
    058- <p class="MsoNormal"><span>os.OrderSourceType,</span></p>
    058+ <p class="MsoNormal"><span>ISNULL(api.Transport_API_Class, -1) Transport_API_Class,</span></p>
    059- <p class="MsoNormal"><span>pop.Country Shorthand,</span></p>
    059+ <p class="MsoNormal"><span>t.AllowPrint,</span></p>
    060- <p class="MsoNormal"><span>ISNULL(api.Transport_API_Class, -1) Transport_API_Class,</span></p>
    060+ <p class="MsoNormal"><span>t.AllowLogistPrint,</span></p>
    061- <p class="MsoNormal"><span>t.AllowPrint,</span></p>
    061+ <p class="MsoNormal"><span>pop.PrintAddressState,</span></p>
    062- <p class="MsoNormal"><span>t.AllowLogistPrint,</span></p>
    062+ <p class="MsoNormal"><span>pa.ToDeliveryPackNoteMemo,</span></p>
    063- <p class="MsoNormal"><span>pop.PrintAddressState,</span></p>
    063+ <p class="MsoNormal"><span>oi.AmazonShipmentId,</span></p>
    064- <p class="MsoNormal"><span>pa.ToDeliveryPackNoteMemo,</span></p>
    064+ <p class="MsoNormal"><span>coun.IsEuropeanUnion,</span></p>
    065- <p class="MsoNormal"><span>oi.AmazonShipmentId,</span></p>
    065+ <p class="MsoNormal">p.IsNeedCeCertification ,</p>
    066- <p class="MsoNormal"><span>coun.IsEuropeanUnion,</span></p>
    066+ <p class="MsoNormal"><span>es.ID AS OuerOrderSourceID,</span></p>
    067- <p class="MsoNormal">p.IsNeedCeCertification ,</p>
    067+ <p class="MsoNormal"><span>pop.IsStockOrderWithPackage,</span></p>
    068- <p class="MsoNormal"><span>es.ID AS OuerOrderSourceID,</span></p>
    068+ <p class="MsoNormal"><span>es.IsPrintSelfShipLable,</span></p>
    069- <p class="MsoNormal"><span>pop.IsStockOrderWithPackage,</span></p>
    069+ <p class="MsoNormal"><span>es.IsPrintStockOrderShipLable</span></p>
    070- <p class="MsoNormal"><span>es.IsPrintSelfShipLable,</span></p>
    070+ <p class="MsoNormal"><span>FROM RB_Procurement_Order_Package pop ( NOLOCK )</span></p>
    071- <p class="MsoNormal"><span>es.IsPrintStockOrderShipLable</span></p>
    071+ <p class="MsoNormal"><span>INNER JOIN RB_Procurement_Order_Package_Detail popd ( NOLOCK ) ON pop.CustomerID = popd.CustomerID</span></p>
    072- <p class="MsoNormal"><span>FROM RB_Procurement_Order_Package pop ( NOLOCK )</span></p>
    072+ <p class="MsoNormal"><span>AND pop.ID = popd.PackageID</span></p>
    073- <p class="MsoNormal"><span>INNER JOIN RB_Procurement_Order_Package_Detail popd ( NOLOCK ) ON pop.CustomerID = popd.CustomerID</span></p>
    073+ <p class="MsoNormal"><span>INNER JOIN dbo.RB_Product p ( NOLOCK ) ON p.CustomerID = pop.CustomerID</span></p>
    074- <p class="MsoNormal"><span>AND pop.ID = popd.PackageID</span></p>
    074+ <p class="MsoNormal"><span>AND p.SKU = popd.SKU</span></p>
    075- <p class="MsoNormal"><span>INNER JOIN dbo.RB_Product p ( NOLOCK ) ON p.CustomerID = pop.CustomerID</span></p>
    075+ <p class="MsoNormal"><span>INNER JOIN dbo.RB_OrderInfo oi ( NOLOCK ) ON pop.MergerPackageNo = oi.OrderCode</span></p>
    076- <p class="MsoNormal"><span>AND p.SKU = popd.SKU</span></p>
    076+ <p class="MsoNormal"><span>AND oi.CustomerID = pop.CustomerID</span></p>
    077- <p class="MsoNormal"><span>INNER JOIN dbo.RB_OrderInfo oi ( NOLOCK ) ON pop.MergerPackageNo = oi.OrderCode</span></p>
    077+ <p class="MsoNormal"><span>INNER JOIN RB_Transport t(NOLOCK) ON t.CustomerID=pop.CustomerID AND t.ID=pop.TransportID</span></p>
    078- <p class="MsoNormal"><span>AND oi.CustomerID = pop.CustomerID</span></p>
    078+ <p class="MsoNormal"><span>INNER JOIN RB_Transport_API api ( NOLOCK ) ON t.Transport_API_ID = api.ID</span></p>
    079- <p class="MsoNormal"><span>INNER JOIN RB_Transport t(NOLOCK) ON t.CustomerID=pop.CustomerID AND t.ID=pop.TransportID</span></p>
    079+ <p class="MsoNormal"><span>AND t.CustomerID = api.CustomerID</span></p>
    080- <p class="MsoNormal"><span>INNER JOIN RB_Transport_API api ( NOLOCK ) ON t.Transport_API_ID = api.ID</span></p>
    080+ <p class="MsoNormal"><span>LEFT JOIN RB_OrderSource os ( NOLOCK ) ON os.CustomerID = pop.CustomerID</span></p>
    081- <p class="MsoNormal"><span>AND t.CustomerID = api.CustomerID</span></p>
    081+ <p class="MsoNormal"><span>AND os.ID = oi.OrderSourceID</span></p>
    082- <p class="MsoNormal"><span>LEFT JOIN RB_OrderSource os ( NOLOCK ) ON os.CustomerID = pop.CustomerID</span></p>
    082+ <p class="MsoNormal"><span>LEFT JOIN RB_Product_Admin pa ( NOLOCK ) ON pa.SKU = p.SKU</span></p>
    083- <p class="MsoNormal"><span>AND os.ID = oi.OrderSourceID</span></p>
    083+ <p class="MsoNormal"><span>AND pa.CustomerID = pop.CustomerID</span></p>
    084- <p class="MsoNormal"><span>LEFT JOIN RB_Product_Admin pa ( NOLOCK ) ON pa.SKU = p.SKU</span></p>
    084+ <p class="MsoNormal"></p>
    085- <p class="MsoNormal"><span>AND pa.CustomerID = pop.CustomerID</span></p>
    085+ <p class="MsoNormal"><span>Left JOIN E_Country coun ( NOLOCK ) on pop.Country =coun.Shorthand</span></p>
    087- <p class="MsoNormal"><span>Left JOIN E_Country coun ( NOLOCK ) on pop.Country =coun.Shorthand</span></p>
    087+ <p class="MsoNormal"><span>LEFT JOIN RB_EUAgencyLabel_Setting es (nolock) on </span></p>
    088- <p class="MsoNormal"></p>
    088+ <p class="MsoNormal">oi.CustomerID=es.CustomerID and oi.OrderSourceID=es.OrderSourceID</p>
    089- <p class="MsoNormal"><span>LEFT JOIN RB_EUAgencyLabel_Setting es (nolock) on </span></p>
    089+ <p class="MsoNormal"><span>WHERE pop.CustomerID = @CustomerID</span></p>
    090- <p class="MsoNormal">oi.CustomerID=es.CustomerID and oi.OrderSourceID=es.OrderSourceID</p>
    090+ <p class="MsoNormal"><span>AND popd.ProductNum &gt; 1</span></p>
    091- <p class="MsoNormal"><span>WHERE pop.CustomerID = @CustomerID</span></p>
    091+ <p class="MsoNormal"><span>AND pop.PrintTime &gt;= @PrintTime</span></p>
    092- <p class="MsoNormal"><span>AND popd.ProductNum &gt; 1</span></p>
    092+ <p class="MsoNormal"><span>AND pop.PrintType = @PrintType</span></p>
    093- <p class="MsoNormal"><span>AND pop.PrintTime &gt;= @PrintTime</span></p>
    093+ <p class="MsoNormal"><span>AND pop.WareHouseID = @WareHouseID</span></p>
    094- <p class="MsoNormal"><span>AND pop.PrintType = @PrintType</span></p>
    094+ <p class="MsoNormal"><span>AND pop.PrintBatchNo = @PrintBatchNo</span></p>
    095- <p class="MsoNormal"><span>AND pop.WareHouseID = @WareHouseID</span></p>
    095+ <p class="MsoNormal"><span>AND pop.PackageState =@PackageState</span></p>
    096- <p class="MsoNormal"><span>AND pop.PrintBatchNo = @PrintBatchNo</span></p>
    096+ <p class="MsoNormal"><span>AND pop.PrintAddressState=0</span></p>
    097- <p class="MsoNormal"><span>AND pop.PackageState =@PackageState</span></p>
    097+ <p class="MsoNormal"><span>AND oi.OrderStatus = 0</span></p>
    098- <p class="MsoNormal"><span>AND pop.PrintAddressState=0</span></p>
    098+ <p class="MsoNormal"><span>{0}</span></p>
    099- <p class="MsoNormal"><span>AND oi.OrderStatus = 0</span></p>
    099+ <p class="MsoNormal"><span>AND pop.SKUNumberWithPackage = 1</span></p>
    100- <p class="MsoNormal"><span>{0}</span></p>
    100+ <p class="MsoNormal"><span>AND pop.ProductNumberWithPackage &gt; 1</span></p>
    101- <p class="MsoNormal"><span>AND pop.SKUNumberWithPackage = 1</span></p>
    101+ <p class="MsoNormal">AND popd.SKU = @SKU</p>
    102- <p class="MsoNormal"><span>AND pop.ProductNumberWithPackage &gt; 1</span></p>
    102+ <p class="MsoNormal"><br /></p>
    103- <p class="MsoNormal">AND popd.SKU = @SKU</p>
    103+ <p class="MsoNormal"><br /></p>
    104- <p class="MsoNormal"><br /></p>
    104+ <p class="MsoNormal"><span style="color:#171A1D;">2.2 PC 打单优化点:</span></p>
    105- <p class="MsoNormal"><br /></p>
    105+ <p class="MsoNormal"><span style="color:#171A1D;">1.添加日志记录api执行时间;7.20</span><br /><span style="color:#171A1D;">2.添加日志记录面单下载执行时间;下载面单服务;7.26</span><br /><span style="color:#171A1D;">3. 异步处理更新包裹状态(redis,实时落盘);7.30</span></p>
    106- <p class="MsoNormal"><span style="color:#171A1D;">2.2 PC 打单优化点:</span></p>
    106+ <p><br /></p>
    107- <p class="MsoNormal"><span style="color:#171A1D;">1.添加日志记录api执行时间;7.20</span><br /><span style="color:#171A1D;">2.添加日志记录面单下载执行时间;下载面单服务;7.26</span><br /><span style="color:#171A1D;">3. 异步处理更新包裹状态(redis,实时落盘);7.30</span></p>
    108- <p><br /></p>


    参考 2.2 PC 打单优化点 优化改造

  3. 2022-07-18 15:41:35, 由 陈少军 指派给 程伟。
    修改了 预计剩余,旧值为 "0",新值为 "80"。
  4. 2022-09-07 09:30:32, 由 陈少军 完成。
    修改了 总计消耗,旧值为 "0",新值为 "8"。
    修改了 指派给 ,旧值为 "chengwei",新值为 "chenshaojun"。
    修改了 实际完成,旧值为 "",新值为 "2022-09-07 09:30:22"。
    修改了 任务状态,旧值为 "wait",新值为 "done"。
    修改了 实际开始,旧值为 "0000-00-00 00:00:00",新值为 "2022-09-07 09:30:32"。
    修改了 预计剩余,旧值为 "80",新值为 "0"。
    修改了 由谁完成,旧值为 "",新值为 "chenshaojun"。
  5. 2023-10-31 14:53:13, 由 周杰 关闭。
    修改了 任务状态,旧值为 "done",新值为 "closed"。
    修改了 指派给 ,旧值为 "chenshaojun",新值为 "closed"。
    修改了 由谁关闭,旧值为 "",新值为 "zhoujie"。
    修改了 关闭时间,旧值为 "0000-00-00 00:00:00",新值为 "2023-10-31 14:53:13"。
    修改了 关闭原因,旧值为 "",新值为 "done"。
所属迭代 系统管理部 - 系统服务优化
所属模块 /
相关需求 暂无
指派给 Closed 于 2023-10-31 14:53:13
任务类型 后端
任务标签 初始
开发组
任务状态 已关闭
进度 100%
优先级 P2
关键词
抄送给 程伟
由谁创建 陈少军 于 2022-07-18 15:40:38
由谁完成 陈少军 于 2022-09-07 09:30:22
由谁取消 暂无
由谁关闭 周杰 于 2023-10-31 14:53:13
关闭原因 已完成
最后编辑 周杰 于 2023-10-31 14:53:13
团队 最初预计 总计消耗 预计剩余
工时信息
最初预计 0工时
总计消耗 8工时
预计剩余 0工时
预计开始 2022-07-18
实际开始 2022-09-07
截止日期 2022-07-31