/// <summary>
 /// ReceiveDetailInfo -> PlanPullOrderDetailInfo
 /// </summary>
 /// <param name="receiveDetailInfo"></param>
 /// <param name="planPullOrderDetailInfo"></param>
 public static void GetPlanPullOrderDetailInfo(ReceiveDetailInfo receiveDetailInfo, ref PlanPullOrderDetailInfo planPullOrderDetailInfo)
 {
     if (receiveDetailInfo == null)
     {
         return;
     }
     ///SUPPLIER_NUM,供应商代码
     planPullOrderDetailInfo.SupplierNum = receiveDetailInfo.SupplierNum;
     ///PART_NO,物料号
     planPullOrderDetailInfo.PartNo = receiveDetailInfo.PartNo;
     ///PART_CNAME,物料中文描述
     planPullOrderDetailInfo.PartCname = receiveDetailInfo.PartCname;
     ///PART_ENAME,物料英文描述
     planPullOrderDetailInfo.PartEname = receiveDetailInfo.PartEname;
     ///MEASURING_UNIT_NO,单位
     planPullOrderDetailInfo.MeasuringUnitNo = receiveDetailInfo.MeasuringUnitNo;
     ///INBOUND_PACKAGE_QTY,入库单包装数量
     planPullOrderDetailInfo.InboundPackageQty = receiveDetailInfo.Package;
     ///INBOUND_PACKAGE_MODEL,入库包装编号
     planPullOrderDetailInfo.InboundPackageModel = receiveDetailInfo.PackageModel;
     ///REQUIRED_PART_QTY,需求物料数量
     planPullOrderDetailInfo.RequiredPartQty = receiveDetailInfo.RequiredQty.GetValueOrDefault() - receiveDetailInfo.ActualQty.GetValueOrDefault();
     ///REQUIRED_PACKAGE_QTY,需求包装数
     if (receiveDetailInfo.Package.GetValueOrDefault() > 0)
     {
         planPullOrderDetailInfo.RequiredPackageQty = Convert.ToInt32(Math.Ceiling(planPullOrderDetailInfo.RequiredPartQty.GetValueOrDefault() / receiveDetailInfo.Package.GetValueOrDefault()));
     }
 }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="textWhere"></param>
        /// <param name="textOrder"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageRow"></param>
        /// <returns></returns>
        public List <ReceiveDetailInfo> GetReceiveDetailPageInfosByPage(string textWhere, string textOrder, int pageIndex, int pageRow)
        {
            if (pageIndex <= 0)
            {
                pageIndex = 1;
            }
            if (pageRow <= 0)
            {
                pageRow = 10;
            }
            string whereText = string.Empty;

            if (!string.IsNullOrEmpty(textWhere))
            {
                if (textWhere.Trim().StartsWith("and", StringComparison.OrdinalIgnoreCase))
                {
                    whereText += " where [LES].[TT_WMM_RECEIVE_DETAIL].[VALID_FLAG] = 1 " + textWhere;
                }
                else
                {
                    whereText += " where " + textWhere + " and [LES].[TT_WMM_RECEIVE_DETAIL].[VALID_FLAG] = 1";
                }
            }
            else
            {
                whereText += " where [LES].[TT_WMM_RECEIVE_DETAIL].[VALID_FLAG] = 1 ";
            }
            if (string.IsNullOrEmpty(textOrder))
            {
                textOrder += "[LES].[TT_WMM_RECEIVE_DETAIL].[ID] desc";
            }
            string sql = "select top " + pageRow + " * from "
                         + "(select row_number() over(order by " + textOrder + ") as rownumber"
                         + ",[LES].[TT_WMM_RECEIVE_DETAIL].*"
                         + ",[LES].[TT_WMM_RECEIVE].[TRAN_TIME]"
                         + ",[LES].[TT_WMM_RECEIVE].[RECEIVE_NO]"
                         + ",[LES].[TT_WMM_RECEIVE].[COST_CENTER]"
                         + ",[LES].[TT_WMM_RECEIVE].[BOOK_KEEPER] "
                         + "from [LES].[TT_WMM_RECEIVE_DETAIL] with(nolock) "
                         + "left join [LES].[TT_WMM_RECEIVE] with(nolock) on [LES].[TT_WMM_RECEIVE].[FID] = [LES].[TT_WMM_RECEIVE_DETAIL].[RECEIVE_FID] and [LES].[TT_WMM_RECEIVE].[VALID_FLAG] = 1 "
                         + "" + whereText + ") T "
                         + "where rownumber > " + (pageIndex - 1) * pageRow + " ";
            Database  db  = DatabaseFactory.CreateDatabase();
            DbCommand cmd = db.GetSqlStringCommand(sql);
            List <ReceiveDetailInfo> list = new List <ReceiveDetailInfo>();

            using (IDataReader dr = db.ExecuteReader(cmd))
            {
                while (dr.Read())
                {
                    ReceiveDetailInfo info = CreateReceiveDetailInfo(dr);
                    info.TranTime   = DBConvert.GetDateTime(dr, dr.GetOrdinal("TRAN_TIME"));
                    info.TranNo     = DBConvert.GetString(dr, dr.GetOrdinal("RECEIVE_NO"));
                    info.CostCenter = DBConvert.GetString(dr, dr.GetOrdinal("COST_CENTER"));
                    info.BookKeeper = DBConvert.GetString(dr, dr.GetOrdinal("BOOK_KEEPER"));
                    list.Add(info);
                }
            }
            return(list);
        }
 /// <summary>
 /// ReceiveDetailInfo -> BarcodeInfo
 /// </summary>
 /// <param name="receiveDetailInfo"></param>
 /// <param name="barcodeInfo"></param>
 public static void GetBarcodeInfo(ReceiveDetailInfo receiveDetailInfo, ref BarcodeInfo barcodeInfo)
 {
     if (receiveDetailInfo == null)
     {
         return;
     }
     barcodeInfo.PartNo                = receiveDetailInfo.PartNo;
     barcodeInfo.PartCname             = receiveDetailInfo.PartCname;
     barcodeInfo.PackageModel          = receiveDetailInfo.PackageModel;
     barcodeInfo.Package               = receiveDetailInfo.Package;
     barcodeInfo.IdentifyPartNo        = receiveDetailInfo.IdentifyPartNo;
     barcodeInfo.MeasuringUnitNo       = receiveDetailInfo.MeasuringUnitNo;
     barcodeInfo.SupplierNum           = receiveDetailInfo.SupplierNum;
     barcodeInfo.Plant                 = receiveDetailInfo.Plant;
     barcodeInfo.AssemblyLine          = receiveDetailInfo.AssemblyLine;
     barcodeInfo.Dock                  = receiveDetailInfo.Dock;
     barcodeInfo.WmNo                  = receiveDetailInfo.TargetWm;
     barcodeInfo.ZoneNo                = receiveDetailInfo.TargetZone;
     barcodeInfo.Dloc                  = receiveDetailInfo.TargetDloc;
     barcodeInfo.BoxParts              = receiveDetailInfo.BoxParts;
     barcodeInfo.RunsheetNo            = receiveDetailInfo.RunsheetNo;
     barcodeInfo.AsnRunsheetNo         = receiveDetailInfo.TranNo;
     barcodeInfo.PickupSeqNo           = receiveDetailInfo.PickupSeqNo;
     barcodeInfo.RdcDloc               = receiveDetailInfo.RdcDloc;
     barcodeInfo.Comments              = receiveDetailInfo.Comments;
     barcodeInfo.PackageLength         = receiveDetailInfo.PackageLength;
     barcodeInfo.PackageWidth          = receiveDetailInfo.PackageWidth;
     barcodeInfo.PackageHeight         = receiveDetailInfo.PackageHeight;
     barcodeInfo.PerpackageGrossWeight = receiveDetailInfo.PerpackageGrossWeight;
     barcodeInfo.CreateSourceFid       = receiveDetailInfo.Fid;
     barcodeInfo.PackageVolume         = receiveDetailInfo.PackageVolume;
 }
示例#4
0
        /// <summary>
        /// VmiReceiveDetailInfo  -> ReceiveDetailInfo
        /// </summary>
        /// <param name="vmiReceiveDetailInfos"></param>
        /// <returns></returns>
        public static List <ReceiveDetailInfo> GetReceiveDetailInfos(List <VmiReceiveDetailInfo> vmiReceiveDetailInfos)
        {
            List <ReceiveDetailInfo> receiveDetailInfos = new List <ReceiveDetailInfo>();

            foreach (var vmiReceiveDetailInfo in vmiReceiveDetailInfos)
            {
                ReceiveDetailInfo receiveDetailInfo = CreateReceiveDetailInfo(string.Empty);
                GetReceiveDetailInfo(vmiReceiveDetailInfo, ref receiveDetailInfo);
                receiveDetailInfos.Add(receiveDetailInfo);
            }
            return(receiveDetailInfos);
        }
示例#5
0
 /// <summary>
 /// ReceiveDetailInfo -> QmisAsnPullSheetInfo
 /// </summary>
 /// <param name="qmisAsnPullSheetInfo"></param>
 public static void GetQmisAsnPullSheetInfo(ReceiveDetailInfo receiveDetailInfo, ref QmisAsnPullSheetInfo info)
 {
     if (receiveDetailInfo == null)
     {
         return;
     }
     ///PLANT,工厂
     info.Plant = receiveDetailInfo.Plant;
     ///ASN_NO,ASN单号
     info.AsnNo = receiveDetailInfo.TranNo;
     ///ORDER_NO,拉动单号
     info.OrderNo = receiveDetailInfo.RunsheetNo;
     ///PART_NO,物料编号
     info.PartNo = receiveDetailInfo.PartNo;
     ///SUPPLIER_NO,供应商编码
     info.SupplierNo = receiveDetailInfo.SupplierNum;
     ///ARRIVAL_DATE,预计到达时间
     info.ArrivalDate = DateTime.Now;
 }
示例#6
0
        /// <summary>
        /// Create ReceiveDetailInfo
        /// </summary>
        /// <param name="loginUser"></param>
        /// <returns>ReceiveDetailInfo</returns>
        public static ReceiveDetailInfo CreateReceiveDetailInfo(string loginUser)
        {
            ReceiveDetailInfo info = new ReceiveDetailInfo();

            ///FID,FID
            info.Fid = Guid.NewGuid();
            ///VALID_FLAG,逻辑删除标记
            info.ValidFlag = true;
            ///CREATE_USER,COMMON_CREATE_USER
            info.CreateUser = loginUser;
            ///CREATE_DATE,COMMON_CREATE_DATE
            info.CreateDate = DateTime.Now;

            ///QUALIFIED_QTY,合格数量
            info.QualifiedQty = null;
            ///INSPECTION_STATUS,检验状态 10未检验 20 合格 30不合格
            info.InspectionStatus = null;
            ///FROZEN_STOCK_FLAG,已冻结库存标记
            info.FrozenStockFlag = null;
            return(info);
        }
 /// <summary>
 /// ReceiveDetailInfo->PackageTranDetailInfo
 /// </summary>
 /// <param name="receiveDetailInfo"></param>
 /// <param name="packageTranDetailInfo"></param>
 public static void GetPackageTranDetailInfo(ReceiveDetailInfo receiveDetailInfo, ref PackageTranDetailInfo packageTranDetailInfo)
 {
     packageTranDetailInfo.TranNo = receiveDetailInfo.TranNo;
     ///随货入库
     packageTranDetailInfo.TranType     = (int)PackageTranTypeConstants.FullInbound;
     packageTranDetailInfo.BarcodeData  = string.Empty;
     packageTranDetailInfo.PartNo       = receiveDetailInfo.PartNo;
     packageTranDetailInfo.Plant        = receiveDetailInfo.Plant;
     packageTranDetailInfo.AssemblyLine = receiveDetailInfo.AssemblyLine;
     packageTranDetailInfo.SupplierNum  = receiveDetailInfo.SupplierNum;
     packageTranDetailInfo.WmNo         = receiveDetailInfo.WmNo;
     packageTranDetailInfo.ZoneNo       = receiveDetailInfo.ZoneNo;
     packageTranDetailInfo.Dloc         = receiveDetailInfo.Dloc;
     packageTranDetailInfo.TargetWm     = receiveDetailInfo.TargetWm;
     packageTranDetailInfo.TargetZone   = receiveDetailInfo.TargetZone;
     packageTranDetailInfo.TargetDloc   = receiveDetailInfo.TargetDloc;
     packageTranDetailInfo.PackageNo    = receiveDetailInfo.PackageModel;
     packageTranDetailInfo.Package      = receiveDetailInfo.Package;
     packageTranDetailInfo.PackageQty   = receiveDetailInfo.ActualBoxNum;
     packageTranDetailInfo.Comments     = receiveDetailInfo.Comments;
 }
 /// <summary>
 /// ReceiveDetailInfo-->EmergencyPullingCartInfo
 /// </summary>
 /// <param name="receiveDetailInfo"></param>
 /// <param name="info"></param>
 public static void GetEmergencyPullingCartByReceiveDetail(ReceiveDetailInfo receiveDetailInfo, ref EmergencyPullingCartInfo info)
 {
     if (receiveDetailInfo == null)
     {
         return;
     }
     ///PART_NO,物料图号
     info.PartNo = receiveDetailInfo.PartNo;
     ///REQUIRED_PART_QTY,物料需求数量
     info.RequiredPartQty = receiveDetailInfo.RequiredQty.GetValueOrDefault();
     ///REQUIRED_BOX_QTY,包装需求数量
     info.RequiredBoxQty = receiveDetailInfo.RequiredBoxNum.GetValueOrDefault();
     ///PART_CNAME,物料中文描述
     info.PartCname = receiveDetailInfo.PartCname;
     ///PULL_PACKAGE_QTY,拉动包装数 ///TODO: Package和InhousePackage 那个有效?
     info.PullPackageQty = receiveDetailInfo.Package.GetValueOrDefault();
     ///PULL_PACKAGE_MODEL,拉动包装型号 ///TODO:PackageModel和InhousePackageModel 那个有效?
     info.PullPackageModel = receiveDetailInfo.PackageModel;
     ///SUPPLIER_NUM,供应商代码
     info.SupplierNum = receiveDetailInfo.SupplierNum;
     ///S_WM_NO,来源仓库
     info.SWmNo = receiveDetailInfo.WmNo;
     ///S_ZONE_NO,来源存储区
     info.SZoneNo = receiveDetailInfo.ZoneNo;
     ///T_WM_NO,目标仓库
     info.TWmNo = receiveDetailInfo.TargetWm;
     ///T_ZONE_NO,目标存储区
     info.TZoneNo = receiveDetailInfo.TargetZone;
     ///PLANT,工厂代码
     info.Plant = receiveDetailInfo.Plant;
     ///ASSEMBLY_LINE,产线代码
     info.AssemblyLine = receiveDetailInfo.AssemblyLine;
     ///EMERGENCY_PULL_MODE,紧急拉动模式
     info.EmergencyPullMode = (int)EmergencyPullModeConstants.ManualPull;
     ///STATUS,状态
     info.Status = 10;///已提交 TODO:没有枚举项
 }
示例#9
0
        /// <summary>
        /// InsertInfo
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public long InsertInfo(ReceiveDetailInfo info)
        {
            ReceiveInfo receiveInfo = new ReceiveDAL().GetInfo(info.ReceiveFid.GetValueOrDefault());

            if (receiveInfo == null)
            {
                throw new Exception("MC:0x00000084");///数据错误
            }
            if (dal.GetList("[RECEIVE_FID] = N'" + info.ReceiveFid + "' and [PART_NO] = N'" + info.PartNo + "' and [SUPPLIER_NUM] = N'" + info.SupplierNum + "'", string.Empty).Count > 0)
            {
                throw new Exception("MC:0x00000464");///同物料号供应商不能一致
            }
            //if (receiveInfo.Status.GetValueOrDefault() != (int)WmmOrderStatusConstants.Created)
            //    throw new Exception("MC:0x00000152");///入库单处理已创建状态时才能添加材料

            int cnt = 0;
            ///入库单是否按供应商类型校验
            string receiveOrderValidSupplierTypeFlag = new ConfigDAL().GetValueByCode("RECEIVE_ORDER_VALID_SUPPLIER_TYPE_FLAG");

            if (receiveOrderValidSupplierTypeFlag.ToLower() == "true")
            {
                ///需要校验入库单的供应商是否为储运供应商
                cnt = new SupplierDAL().GetCounts("[SUPPLIER_TYPE] = " + (int)SupplierTypeConstants.LogisticsSupplier + " and [SUPPLIER_NUM] = N'" + receiveInfo.SupplierNum + "'");

                ///储运供应商标记
                bool logisticsSupplierFlag = cnt == 0 ? false : true;
                if (logisticsSupplierFlag)
                {
                    cnt = dal.GetCounts("[PART_NO] = N'" + info.PartNo + "' and [SUPPLIER_NUM] = N'" + info.SupplierNum + "' and [RECEIVE_FID] = N'" + info.ReceiveFid.GetValueOrDefault() + "'");
                    if (cnt > 0)
                    {
                        throw new Exception("MC:0x00000175");///同一入库单下不能出现相同供应商的物料编码
                    }
                }
                else
                {
                    ///入库单明细与入库单不是同一家供应商
                    cnt = new ReceiveDAL().GetCounts("[SUPPLIER_NUM] = N'" + info.SupplierNum + "' and [FID] = N'" + info.ReceiveFid.GetValueOrDefault() + "'");
                    if (cnt == 0)
                    {
                        throw new Exception("MC:0x00000176");///入库单的物料供应商与入库明细的供应商不一致
                    }
                    cnt = dal.GetCounts("[PART_NO] = N'" + info.PartNo + "' and [RECEIVE_FID] = N'" + info.ReceiveFid.GetValueOrDefault() + "'");
                    if (cnt > 0)
                    {
                        throw new Exception("MC:0x00000177");///同一入库单下不能出现相同的物料编码
                    }
                }
            }

            ///明细中供应商缺失时,从单据上获取
            if (string.IsNullOrEmpty(info.SupplierNum))
            {
                info.SupplierNum = receiveInfo.SupplierNum;
            }
            ///单据号
            if (string.IsNullOrEmpty(info.TranNo))
            {
                info.TranNo = receiveInfo.ReceiveNo;
            }
            ///拉动单号
            if (string.IsNullOrEmpty(info.RunsheetNo))
            {
                info.RunsheetNo = receiveInfo.RunsheetNo;
            }
            ///工厂
            if (string.IsNullOrEmpty(info.Plant))
            {
                info.Plant = receiveInfo.Plant;
            }
            ///仓库
            if (string.IsNullOrEmpty(info.TargetWm))
            {
                info.TargetWm = receiveInfo.WmNo;
            }
            ///存储区
            if (string.IsNullOrEmpty(info.TargetZone))
            {
                info.TargetZone = receiveInfo.ZoneNo;
            }

            ///来源
            ///仓库
            //if (string.IsNullOrEmpty(info.WmNo)) info.WmNo = receiveInfo.SourceWmNo;
            /////存储区
            //if (string.IsNullOrEmpty(info.ZoneNo)) info.ZoneNo = receiveInfo.SourceZoneNo;

            ///创建入库单时实收数量等于需求数量
            string createReceiveActualQtyEqualsRequired = new ConfigDAL().GetValueByCode("CREATE_RECEIVE_ACTUAL_QTY_EQUALS_REQUIRED");

            if (createReceiveActualQtyEqualsRequired.ToLower() == "true")
            {
                info.ActualBoxNum = info.RequiredBoxNum;
                info.ActualQty    = info.RequiredQty;
            }
            ///如果需求箱数大于零
            if (info.RequiredBoxNum.GetValueOrDefault() > 0)
            {
                ///如果未填写单包装毛重,但是填写了总毛重,需要计算
                if (info.PerpackageGrossWeight.GetValueOrDefault() == 0 && info.SumWeight.GetValueOrDefault() > 0)
                {
                    info.PerpackageGrossWeight = info.SumWeight.GetValueOrDefault() / info.RequiredBoxNum.GetValueOrDefault();
                }
                ///体积也是如此处理
                if (info.PackageVolume.GetValueOrDefault() == 0 && info.SumVolume.GetValueOrDefault() > 0)
                {
                    info.PackageVolume = info.SumVolume.GetValueOrDefault() / info.RequiredBoxNum.GetValueOrDefault();
                }
                ///件数也是如此处理
                if (info.Package.GetValueOrDefault() == 0 && info.RequiredQty.GetValueOrDefault() > 0)
                {
                    info.Package = Math.Ceiling(info.RequiredQty.GetValueOrDefault() / info.RequiredBoxNum.GetValueOrDefault());
                }
            }
            ///
            return(dal.Add(info));
        }
示例#10
0
 public static void GetReceiveDetailInfo(ref ReceiveDetailInfo receiveDetailInfo)
 {
 }
示例#11
0
 /// <summary>
 /// VmiReceiveDetailInfo  -> ReceiveDetailInfo
 /// </summary>
 /// <param name="vmiReceiveDetailInfo"></param>
 /// <param name="info"></param>
 public static void GetReceiveDetailInfo(VmiReceiveDetailInfo vmiReceiveDetailInfo, ref ReceiveDetailInfo info)
 {
     ///ID,明细流水号
     info.Id = vmiReceiveDetailInfo.Id;
     ///FID,FID
     info.Fid = vmiReceiveDetailInfo.Fid;
     ///RECEIVE_FID,
     info.ReceiveFid = vmiReceiveDetailInfo.ReceiveFid;
     ///PLANT,工厂模型_工厂
     info.Plant = vmiReceiveDetailInfo.Plant;
     ///SUPPLIER_NUM,基础数据_供应商
     info.SupplierNum = vmiReceiveDetailInfo.SupplierNum;
     ///WM_NO,仓库编码
     info.WmNo = vmiReceiveDetailInfo.WmNo;
     ///ZONE_NO,存贮区编码
     info.ZoneNo = vmiReceiveDetailInfo.ZoneNo;
     ///DLOC,库位
     info.Dloc = vmiReceiveDetailInfo.Dloc;
     ///TARGET_WM,目的仓库
     info.TargetWm = vmiReceiveDetailInfo.TargetWm;
     ///TARGET_ZONE,目的存储区
     info.TargetZone = vmiReceiveDetailInfo.TargetZone;
     ///TARGET_DLOC,目的库位
     info.TargetDloc = vmiReceiveDetailInfo.TargetDloc;
     ///PART_NO,车辆模型_零件号
     info.PartNo = vmiReceiveDetailInfo.PartNo;
     ///PART_CNAME,车辆模型_零件中文名
     info.PartCname = vmiReceiveDetailInfo.PartCname;
     ///PART_ENAME,车辆模型_零件德文名
     info.PartEname = vmiReceiveDetailInfo.PartEname;
     ///MEASURING_UNIT_NO,单位
     info.MeasuringUnitNo = vmiReceiveDetailInfo.MeasuringUnitNo;
     ///IDENTIFY_PART_NO,车辆模型_标识零件号
     info.IdentifyPartNo = vmiReceiveDetailInfo.IdentifyPartNo;
     ///PACKAGE_MODEL,包装型号
     info.PackageModel = vmiReceiveDetailInfo.PackageModel;
     ///PACKAGE,单包装数
     info.Package = vmiReceiveDetailInfo.Package;
     ///PART_TYPE,零件类型
     info.PartType = vmiReceiveDetailInfo.PartType;
     ///REQUIRED_BOX_NUM,需求包装数
     info.RequiredBoxNum = vmiReceiveDetailInfo.RequiredBoxNum;
     ///REQUIRED_QTY,需求数量
     info.RequiredQty = vmiReceiveDetailInfo.RequiredQty;
     ///ACTUAL_BOX_NUM,实际包装数
     info.ActualBoxNum = vmiReceiveDetailInfo.ActualBoxNum;
     ///ACTUAL_QTY,实际数量
     info.ActualQty = vmiReceiveDetailInfo.ActualQty;
     ///BARCODE_DATA,条码
     info.BarcodeData = vmiReceiveDetailInfo.BarcodeData;
     ///TRAN_NO,交易编码
     info.TranNo = vmiReceiveDetailInfo.TranNo;
     ///DOCK,工厂模型_DOCK
     info.Dock = vmiReceiveDetailInfo.Dock;
     ///ASSEMBLY_LINE,工厂模型_流水线
     info.AssemblyLine = vmiReceiveDetailInfo.AssemblyLine;
     ///BOX_PARTS,基础数据_零件类
     info.BoxParts = vmiReceiveDetailInfo.BoxParts;
     ///SEQUENCE_NO,排序号
     info.SequenceNo = vmiReceiveDetailInfo.SequenceNo;
     ///PICKUP_SEQ_NO,捡料顺序号
     info.PickupSeqNo = vmiReceiveDetailInfo.PickupSeqNo;
     ///RDC_DLOC,供应商库位
     info.RdcDloc = vmiReceiveDetailInfo.RdcDloc;
     ///INHOUSE_PACKAGE,上线包装数量
     info.InhousePackage = vmiReceiveDetailInfo.InhousePackage;
     ///INHOUSE_PACKAGE_MODEL,上线包装型号
     info.InhousePackageModel = vmiReceiveDetailInfo.InhousePackageModel;
     ///RUNSHEET_NO,拉动单号
     info.RunsheetNo = vmiReceiveDetailInfo.RunsheetNo;
     ///SUPPLIER_NUM_SHEET,基础数据组单_供应商
     info.SupplierNumSheet = vmiReceiveDetailInfo.SupplierNumSheet;
     ///BOX_PARTS_SHEET,基础数据_零件类组单
     info.BoxPartsSheet = vmiReceiveDetailInfo.BoxPartsSheet;
     ///RETURN_REPORT_FLAG,return_report_flag
     info.ReturnReportFlag = vmiReceiveDetailInfo.ReturnReportFlag;
     ///ORDER_NO,订单号
     info.OrderNo = vmiReceiveDetailInfo.OrderNo;
     ///ITEM_NO,ITEM号
     info.ItemNo = vmiReceiveDetailInfo.ItemNo;
     ///CURRENT_BOX_NUM,
     info.CurrentBoxNum = vmiReceiveDetailInfo.CurrentBoxNum;
     ///CURRENT_QTY,
     info.CurrentQty = vmiReceiveDetailInfo.CurrentQty;
     ///FINAL_WM,最终仓库
     info.FinalWm = vmiReceiveDetailInfo.FinalWm;
     ///FINAL_ZONE,最终存储区
     info.FinalZone = vmiReceiveDetailInfo.FinalZone;
     ///FINAL_DLOC,最终库位
     info.FinalDloc = vmiReceiveDetailInfo.FinalDloc;
     ///IS_SCAN_BOX,是否扫箱
     info.IsScanBox = vmiReceiveDetailInfo.IsScanBox;
     ///ROW_NO,行号
     info.RowNo = vmiReceiveDetailInfo.RowNo;
     ///ORIGIN_PLACE,产地
     info.OriginPlace = vmiReceiveDetailInfo.OriginPlace;
     ///PURCHASE_UNIT_PRICE,采购单价
     info.PurchaseUnitPrice = vmiReceiveDetailInfo.PurchaseUnitPrice;
     ///PART_PRICE,金额
     info.PartPrice = vmiReceiveDetailInfo.PartPrice;
     ///PART_CLS,零件类别
     info.PartCls = vmiReceiveDetailInfo.PartCls;
     ///COMMENTS,COMMON_备注
     info.Comments = vmiReceiveDetailInfo.Comments;
     ///VALID_FLAG,逻辑删除标记
     info.ValidFlag = vmiReceiveDetailInfo.ValidFlag;
     ///CREATE_USER,COMMON_CREATE_USER
     info.CreateUser = vmiReceiveDetailInfo.CreateUser;
     ///CREATE_DATE,COMMON_CREATE_DATE
     info.CreateDate = vmiReceiveDetailInfo.CreateDate;
     ///MODIFY_USER,COMMON_MODIFY_USER
     info.ModifyUser = vmiReceiveDetailInfo.ModifyUser;
     ///MODIFY_DATE,COMMON_MODIFY_DATE
     info.ModifyDate = vmiReceiveDetailInfo.ModifyDate;
     ///PACKAGE_LENGTH,包装长
     info.PackageLength = vmiReceiveDetailInfo.PackageLength;
     ///PACKAGE_WIDTH,包装宽
     info.PackageWidth = vmiReceiveDetailInfo.PackageWidth;
     ///PACKAGE_HEIGHT,包装高
     info.PackageHeight = vmiReceiveDetailInfo.PackageHeight;
     ///PERPACKAGE_GROSS_WEIGHT,单箱随货毛重
     info.PerpackageGrossWeight = vmiReceiveDetailInfo.PerpackageGrossWeight;
     ///INSPECTION_MODE,检验模式
     info.InspectionMode = vmiReceiveDetailInfo.InspectionMode;
     ///PACKAGE_VOLUME,单包装体积
     info.PackageVolume = vmiReceiveDetailInfo.PackageVolume;
     ///SUM_WEIGHT,合计毛重
     info.SumWeight = vmiReceiveDetailInfo.SumWeight;
     ///SUM_VOLUME,合计体积
     info.SumVolume = vmiReceiveDetailInfo.SumVolume;
 }
示例#12
0
        /// <summary>
        /// UpdateInfo
        /// </summary>
        /// <param name="fields"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public bool UpdateInfo(string fields, long id)
        {
            string      receiveFid  = CommonBLL.GetFieldValue(fields, "RECEIVE_FID");
            ReceiveInfo receiveInfo = new ReceiveDAL().GetInfo(Guid.Parse(receiveFid));

            if (receiveInfo == null)
            {
                throw new Exception("MC:0x00000252");///入库单数据错误
            }
            //if (receiveInfo.Status == (int)WmmOrderStatusConstants.Completed
            //    || receiveInfo.Status == (int)WmmOrderStatusConstants.Closed)
            //    throw new Exception("MC:0x00000253");///入库单状态为已关闭或已完成时不能修改其内容

            //if (receiveInfo.Status == (int)WmmOrderStatusConstants.Created)
            //{
            //    ///入库单是否按供应商类型校验
            //    string receiveOrderValidSupplierTypeFlag = new ConfigDAL().GetValueByCode("RECEIVE_ORDER_VALID_SUPPLIER_TYPE_FLAG");
            //    if (receiveOrderValidSupplierTypeFlag.ToLower() == "true")
            //    {
            //        string supplierNum = CommonBLL.GetFieldValue(fields, "SUPPLIER_NUM");
            //        string partNo = CommonBLL.GetFieldValue(fields, "PART_NO");
            //        ///需要校验入库单的供应商是否为储运供应商
            //        int cnt = new SupplierDAL().GetCounts("[SUPPLIER_TYPE] = " + (int)SupplierTypeConstants.LogisticsSupplier + " and [SUPPLIER_NUM] in (select [SUPPLIER_NUM] from [LES].[TT_WMM_RECEIVE] with(nolock) where [FID] = N'" + receiveFid + "' and [VALID_FLAG] = 1)");

            //        ///储运供应商标记
            //        bool logisticsSupplierFlag = cnt == 0 ? false : true;
            //        if (logisticsSupplierFlag)
            //        {
            //            cnt = dal.GetCounts("[ID] <> " + id + " and [PART_NO] = N'" + partNo + "' and [SUPPLIER_NUM] = N'" + supplierNum + "' and [RECEIVE_FID] = N'" + receiveFid + "'");
            //            if (cnt > 0)
            //                throw new Exception("MC:0x00000175");///同一入库单下不能出现相同供应商的物料编码
            //        }
            //        else
            //        {
            //            ///入库单明细与入库单不是同一家供应商
            //            cnt = new ReceiveDAL().GetCounts("[SUPPLIER_NUM] = N'" + supplierNum + "' and [FID] = N'" + receiveFid + "'");
            //            if (cnt == 0)
            //                throw new Exception("MC:0x00000176");///入库单的物料供应商与入库明细的供应商不一致

            //            cnt = dal.GetCounts("[ID] <> " + id + " and [PART_NO] = N'" + partNo + "' and [RECEIVE_FID] = N'" + receiveFid + "'");
            //            if (cnt > 0)
            //                throw new Exception("MC:0x00000177");///同一入库单下不能出现相同的物料编码
            //        }
            //    }
            //}
            //else
            //{
            ReceiveDetailInfo receiveDetailInfo = dal.GetInfo(id);

            ///实收数量
            string actualQty = CommonBLL.GetFieldValue(fields, "ACTUAL_QTY");

            if (string.IsNullOrEmpty(actualQty))
            {
                actualQty = "NULL";
            }
            if (Convert.ToInt32(actualQty) > receiveDetailInfo.RequiredQty)
            {
                throw new Exception("MC:0x00000424");    ///实收数不能大于需求数
            }
            ///实收箱数
            string actualBoxNum = CommonBLL.GetFieldValue(fields, "ACTUAL_BOX_NUM");

            if (string.IsNullOrEmpty(actualBoxNum))
            {
                actualBoxNum = "NULL";
            }
            ///修改用户
            string loginUser = CommonBLL.GetFieldValue(fields, "MODIFY_USER");

            fields = "[ACTUAL_QTY] = " + actualQty + ",[ACTUAL_BOX_NUM] = " + actualBoxNum + ",[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'" + loginUser + "' ";
            // }

            string requiredBoxNum = CommonBLL.GetFieldValue(fields, "REQUIRED_BOX_NUM");

            int.TryParse(requiredBoxNum, out int intRequiredBoxNum);
            ///如果需求箱数大于零
            if (intRequiredBoxNum > 0)
            {
                string perpackageGrossWeight = CommonBLL.GetFieldValue(fields, "PERPACKAGE_GROSS_WEIGHT");
                decimal.TryParse(perpackageGrossWeight, out decimal decimalPerpackageGrossWeight);
                string sumWeight = CommonBLL.GetFieldValue(fields, "SUM_WEIGHT");
                decimal.TryParse(sumWeight, out decimal decimalSumWeight);
                ///如果未填写单包装毛重,但是填写了总毛重,需要计算
                if (decimalPerpackageGrossWeight == 0 && decimalSumWeight > 0)
                {
                    decimalPerpackageGrossWeight = decimalSumWeight / intRequiredBoxNum;
                    fields = CommonBLL.SetFieldValue(fields, "PERPACKAGE_GROSS_WEIGHT", decimalPerpackageGrossWeight.ToString(), false);
                }

                string packageVolume = CommonBLL.GetFieldValue(fields, "PACKAGE_VOLUME");
                decimal.TryParse(packageVolume, out decimal decimalPackageVolume);
                string sumVolume = CommonBLL.GetFieldValue(fields, "SUM_VOLUME");
                decimal.TryParse(sumVolume, out decimal decimalSumVolume);
                ///体积也是如此处理
                if (decimalPackageVolume == 0 && decimalSumVolume > 0)
                {
                    decimalPackageVolume = decimalSumVolume / intRequiredBoxNum;
                    fields = CommonBLL.SetFieldValue(fields, "PACKAGE_VOLUME", decimalPackageVolume.ToString(), false);
                }

                string package = CommonBLL.GetFieldValue(fields, "PACKAGE");
                decimal.TryParse(package, out decimal decimalPackage);
                string requiredQty = CommonBLL.GetFieldValue(fields, "REQUIRED_QTY");
                decimal.TryParse(requiredQty, out decimal decimalRequiredQty);
                ///件数也是如此处理
                if (decimalPackage == 0 && decimalRequiredQty > 0)
                {
                    decimalPackage = Math.Ceiling(decimalRequiredQty / intRequiredBoxNum);
                    fields         = CommonBLL.SetFieldValue(fields, "PACKAGE", decimalPackage.ToString(), false);
                }
            }

            return(dal.UpdateInfo(fields, id) > 0 ? true : false);
        }
        /// <summary>
        /// 根据库存维度将入库单明细合并
        /// </summary>
        /// <param name="ids"></param>
        /// <param name="stockDimension"></param>
        /// <returns></returns>
        public List <ReceiveDetailInfo> GetStockDimensionList(List <long> ids, List <string> stockDimension)
        {
            string sql = "select " +
                         (stockDimension.Count > 0 ? string.Join(",", stockDimension.ToArray()) + "," : string.Empty) +
                         "PART_NO, " +
                         "TARGET_WM, " +
                         "TARGET_ZONE, " +
                         "TARGET_DLOC, " +
                         "PART_CNAME, " +
                         "PART_ENAME, " +
                         "MEASURING_UNIT_NO, " +
                         "IDENTIFY_PART_NO, " +
                         "PART_TYPE, " +
                         "REQUIRED_BOX_NUM = sum(REQUIRED_BOX_NUM), " +
                         "REQUIRED_QTY = sum(REQUIRED_QTY), " +
                         "ACTUAL_BOX_NUM = sum(ACTUAL_BOX_NUM), " +
                         "ACTUAL_QTY = sum(ACTUAL_QTY), " +
                         "TRAN_NO, " +
                         "ORIGIN_PLACE, " +
                         "PART_CLS, " +
                         "PACKAGE_LENGTH, " +
                         "PACKAGE_WIDTH, " +
                         "PACKAGE_HEIGHT, " +
                         "PERPACKAGE_GROSS_WEIGHT, " +
                         "PACKAGE_VOLUME, " +
                         "SUM_WEIGHT = sum(SUM_WEIGHT), " +
                         "SUM_VOLUME = sum(SUM_VOLUME) " +
                         "from [LES].[TT_WMM_RECEIVE_DETAIL] with(nolock) " +
                         "where [VALID_FLAG] = 1 and [ID] in (" + string.Join(",", ids.ToArray()) + ") " +
                         "group by [PART_NO],[PART_CNAME],[PART_ENAME],[MEASURING_UNIT_NO],[IDENTIFY_PART_NO],[PART_TYPE],[TRAN_NO],[ORIGIN_PLACE],[PART_CLS]," +
                         "[PACKAGE_LENGTH],[PACKAGE_WIDTH],[PACKAGE_HEIGHT],[PERPACKAGE_GROSS_WEIGHT],[PACKAGE_VOLUME],[TARGET_DLOC],[TARGET_WM],[TARGET_ZONE]"
                         + (stockDimension.Count > 0 ? "," + string.Join(",", stockDimension.ToArray()) : string.Empty) + ";";
            Database  db  = DatabaseFactory.CreateDatabase();
            DbCommand cmd = db.GetSqlStringCommand(sql);
            List <ReceiveDetailInfo> list = new List <ReceiveDetailInfo>();

            using (IDataReader dr = db.ExecuteReader(cmd))
            {
                while (dr.Read())
                {
                    ReceiveDetailInfo info = new ReceiveDetailInfo();
                    foreach (var dimension in stockDimension)
                    {
                        if (dimension.ToUpper() == "PLANT")
                        {
                            info.Plant = DBConvert.GetString(dr, dr.GetOrdinal("PLANT"));
                        }
                        if (dimension.ToUpper() == "SUPPLIER_NUM")
                        {
                            info.SupplierNum = DBConvert.GetString(dr, dr.GetOrdinal("SUPPLIER_NUM"));
                        }
                        if (dimension.ToUpper() == "PACKAGE_MODEL")
                        {
                            info.PackageModel = DBConvert.GetString(dr, dr.GetOrdinal("PACKAGE_MODEL"));
                        }
                        if (dimension.ToUpper() == "PACKAGE")
                        {
                            info.Package = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("PACKAGE"));
                        }
                        if (dimension.ToUpper() == "ORIGIN_PLACE")
                        {
                            info.Package = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("ORIGIN_PLACE"));
                        }
                        if (dimension.ToUpper() == "PART_CLS")
                        {
                            info.PartCls = DBConvert.GetString(dr, dr.GetOrdinal("PART_CLS"));
                        }
                    }
                    info.PartNo                = DBConvert.GetString(dr, dr.GetOrdinal("PART_NO"));
                    info.TargetWm              = DBConvert.GetString(dr, dr.GetOrdinal("TARGET_WM"));
                    info.TargetZone            = DBConvert.GetString(dr, dr.GetOrdinal("TARGET_ZONE"));
                    info.TargetDloc            = DBConvert.GetString(dr, dr.GetOrdinal("TARGET_DLOC"));
                    info.PartCname             = DBConvert.GetString(dr, dr.GetOrdinal("PART_CNAME"));
                    info.PartEname             = DBConvert.GetString(dr, dr.GetOrdinal("PART_ENAME"));
                    info.MeasuringUnitNo       = DBConvert.GetString(dr, dr.GetOrdinal("MEASURING_UNIT_NO"));
                    info.IdentifyPartNo        = DBConvert.GetString(dr, dr.GetOrdinal("IDENTIFY_PART_NO"));
                    info.PartType              = DBConvert.GetInt32Nullable(dr, dr.GetOrdinal("PART_TYPE"));
                    info.RequiredBoxNum        = DBConvert.GetInt32Nullable(dr, dr.GetOrdinal("REQUIRED_BOX_NUM"));
                    info.RequiredQty           = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("REQUIRED_QTY"));
                    info.ActualBoxNum          = DBConvert.GetInt32Nullable(dr, dr.GetOrdinal("ACTUAL_BOX_NUM"));
                    info.ActualQty             = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("ACTUAL_QTY"));
                    info.TranNo                = DBConvert.GetString(dr, dr.GetOrdinal("TRAN_NO"));
                    info.PackageLength         = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("PACKAGE_LENGTH"));
                    info.PackageWidth          = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("PACKAGE_WIDTH"));
                    info.PackageHeight         = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("PACKAGE_HEIGHT"));
                    info.PerpackageGrossWeight = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("PERPACKAGE_GROSS_WEIGHT"));
                    info.PackageVolume         = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("PACKAGE_VOLUME"));
                    info.SumWeight             = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("SUM_WEIGHT"));
                    info.SumVolume             = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("SUM_VOLUME"));
                    list.Add(info);
                }
            }
            return(list);
        }
 /// <summary>
 /// ReceiveDetailInfo=>TranDetailsInfo
 /// </summary>
 /// <param name="receiveDetailInfo"></param>
 /// <param name="tranDetailsInfo"></param>
 /// <returns></returns>
 public static void GetTranDetailsInfo(ReceiveDetailInfo receiveDetailInfo, ref TranDetailsInfo tranDetailsInfo)
 {
     ///单据号
     tranDetailsInfo.TranNo = receiveDetailInfo.TranNo;
     ///零件号
     tranDetailsInfo.PartNo = receiveDetailInfo.PartNo;
     ///零件中文名
     tranDetailsInfo.PartCname = receiveDetailInfo.PartCname;
     ///零件类别
     tranDetailsInfo.PartCls = receiveDetailInfo.PartCls;
     ///条码
     tranDetailsInfo.BarcodeData = receiveDetailInfo.BarcodeData;
     ///供应商
     tranDetailsInfo.SupplierNum = receiveDetailInfo.SupplierNum;
     ///工厂
     tranDetailsInfo.Plant = receiveDetailInfo.Plant;
     ///源仓库编码
     tranDetailsInfo.WmNo = receiveDetailInfo.WmNo;
     ///源存贮区编码
     tranDetailsInfo.ZoneNo = receiveDetailInfo.ZoneNo;
     ///源库位
     tranDetailsInfo.Dloc = receiveDetailInfo.Dloc;
     ///目的仓库
     tranDetailsInfo.TargetWm = receiveDetailInfo.TargetWm;
     ///目的存贮区
     tranDetailsInfo.TargetZone = receiveDetailInfo.TargetZone;
     ///目的库位
     tranDetailsInfo.TargetDloc = receiveDetailInfo.TargetDloc;
     ///单位
     tranDetailsInfo.MeasuringUnitNo = receiveDetailInfo.MeasuringUnitNo;
     ///包装类型
     tranDetailsInfo.PackageModel = receiveDetailInfo.PackageModel;
     ///单包装数
     tranDetailsInfo.Package = receiveDetailInfo.Package;
     ///需求包装数量
     tranDetailsInfo.RequiredPackageQty = receiveDetailInfo.RequiredBoxNum;
     ///需求数量
     tranDetailsInfo.RequiredQty = receiveDetailInfo.RequiredQty;
     ///实收包装数
     tranDetailsInfo.ActualPackageQty = receiveDetailInfo.ActualBoxNum;
     ///实收数量
     tranDetailsInfo.ActualQty = receiveDetailInfo.ActualQty;
     ///物料金额
     tranDetailsInfo.PartPrice = receiveDetailInfo.PartPrice;
     ///零件类
     tranDetailsInfo.BoxParts = receiveDetailInfo.BoxParts;
     ///捡料顺序号
     tranDetailsInfo.PickupSeqNo = receiveDetailInfo.PickupSeqNo;
     ///供应商库位
     tranDetailsInfo.RdcDloc = receiveDetailInfo.RdcDloc;
     ///DOCK
     tranDetailsInfo.Dock = receiveDetailInfo.Dock;
     ///上线包装型号
     tranDetailsInfo.InhousePackageModel = receiveDetailInfo.InhousePackageModel;
     ///上线包装数
     tranDetailsInfo.InhousePackage = receiveDetailInfo.InhousePackage;
     ///产地
     tranDetailsInfo.OriginPlace = receiveDetailInfo.OriginPlace;
     ///拉动单号
     tranDetailsInfo.RunsheetNo = receiveDetailInfo.RunsheetNo;
     ///备注
     tranDetailsInfo.Comments = receiveDetailInfo.Comments;
 }
示例#15
0
        /// <summary>
        /// 同步
        /// </summary>
        /// <param name="loginUser"></param>
        public static void Sync(string loginUser)
        {
            ///获取没有处理的送货单数据
            List <SrmBarcodeInfo> srmBarcodeInfos = new SrmBarcodeBLL().GetList("[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Untreated + "", string.Empty);

            if (srmBarcodeInfos.Count == 0)
            {
                return;
            }
            ///获取对应的ASN单据,TODO:单据类型过滤?原始单据号是指?
            List <ReceiveInfo> receiveInfos = new ReceiveBLL().GetList("[ASN_NO] in ('" + string.Join("','", srmBarcodeInfos.Select(d => d.SourceOrderCode).ToArray()) + "')", string.Empty);

            if (receiveInfos.Count == 0)
            {
                return;
            }
            List <ReceiveDetailInfo> receiveDetailInfos = new ReceiveDetailBLL().GetList("[RECEIVE_FID] in ('" + string.Join("','", receiveInfos.Select(d => d.Fid.GetValueOrDefault()).ToArray()) + "')", string.Empty);

            if (receiveDetailInfos.Count == 0)
            {
                return;
            }
            ///供应商
            List <SupplierInfo> supplierInfos = new SupplierBLL().GetList("[SUPPLIER_NUM] in ('" + string.Join("','", receiveInfos.Select(d => d.SupplierNum).ToArray()) + "')", string.Empty);

            if (supplierInfos.Count == 0)
            {
                return;
            }
            ///获取相关物料仓储信息
            List <PartsStockInfo> partsStockInfos = new PartsStockBLL().GetList("" +
                                                                                "[PART_NO] in ('" + string.Join("','", srmBarcodeInfos.Select(d => d.PartNo).ToArray()) + "') and " +
                                                                                "[WM_NO] in ('" + string.Join("','", receiveInfos.Select(d => d.WmNo).ToArray()) + "')", string.Empty);
            ///获取相关包装器具基础信息
            List <PackageApplianceInfo> packageApplianceInfos = new List <PackageApplianceInfo>();

            if (partsStockInfos.Count > 0)
            {
                ///标准包装
                List <string> packageModels = partsStockInfos.
                                              Where(d => !string.IsNullOrEmpty(d.PackageModel)).
                                              Select(d => d.PackageModel).ToList();
                ///入库包装
                packageModels.AddRange(partsStockInfos.
                                       Where(d => !string.IsNullOrEmpty(d.InboundPackageModel) && !packageModels.Contains(d.InboundPackageModel)).
                                       Select(d => d.InboundPackageModel).ToList());
                ///上线包装
                packageModels.AddRange(partsStockInfos.
                                       Where(d => !string.IsNullOrEmpty(d.InhousePackageModel) && !packageModels.Contains(d.InhousePackageModel)).
                                       Select(d => d.InhousePackageModel).ToList());
                ///
                packageApplianceInfos = new PackageApplianceBLL().GetList("[PAKCAGE_NO] in ('" + string.Join("','", packageModels.ToArray()) + "')", string.Empty);
            }
            ///
            StringBuilder @string = new StringBuilder();
            ///
            List <long> dealedIds = new List <long>();

            ///
            foreach (SrmBarcodeInfo srmBarcodeInfo in srmBarcodeInfos)
            {
                ///获取入库单。TODO:需要两个编号才能定位到唯一明细数据
                ReceiveInfo receiveInfo = receiveInfos.FirstOrDefault(d => d.AsnNo == srmBarcodeInfo.SourceOrderCode);
                ///标签数据与ASN单据数据到达LES可能存在先后顺序
                if (receiveInfo == null)
                {
                    continue;
                }
                ReceiveDetailInfo receiveDetailInfo = receiveDetailInfos.FirstOrDefault(d =>
                                                                                        d.PartNo == srmBarcodeInfo.PartNo &&
                                                                                        d.ReceiveFid.GetValueOrDefault() == receiveInfo.Fid.GetValueOrDefault() &&
                                                                                        d.RunsheetNo == srmBarcodeInfo.SourceOrderCode);
                if (receiveDetailInfo == null)
                {
                    continue;
                }
                ///供应商
                SupplierInfo supplierInfo = supplierInfos.FirstOrDefault(d => d.SupplierNum == receiveInfo.SupplierNum);
                if (supplierInfo == null)
                {
                    @string.AppendLine("update [LES].[TI_IFM_SRM_BARCODE] set " +
                                       "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                       "[PROCESS_TIME] = GETDATE()," +
                                       "[COMMENTS] = N'0x00000229' where " +///供应商信息不存在
                                       "[ID] = " + srmBarcodeInfo.Id + ";");
                    continue;
                }
                ///物料仓储信息
                PartsStockInfo partsStockInfo = partsStockInfos.FirstOrDefault(d =>
                                                                               d.PartNo == srmBarcodeInfo.PartNo &&
                                                                               d.SupplierNum == supplierInfo.SupplierNum &&
                                                                               d.WmNo == receiveInfo.WmNo &&
                                                                               d.ZoneNo == receiveInfo.ZoneNo);
                if (partsStockInfo == null)
                {
                    partsStockInfo = partsStockInfos.FirstOrDefault(d =>
                                                                    d.PartNo == srmBarcodeInfo.PartNo &&
                                                                    d.WmNo == receiveInfo.WmNo &&
                                                                    d.ZoneNo == receiveInfo.ZoneNo);
                }
                if (partsStockInfo == null)
                {
                    @string.AppendLine("update [LES].[TI_IFM_SRM_BARCODE] set " +
                                       "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                       "[PROCESS_TIME] = GETDATE()," +
                                       "[COMMENTS] = N'0x00000370' where " +///没有相关的物料仓储信息
                                       "[ID] = " + srmBarcodeInfo.Id + ";");
                    continue;
                }
                ///创建标签对象
                BarcodeInfo barcodeInfo = BarcodeBLL.CreateBarcodeInfo(loginUser);
                ///SrmBarcodeInfo -> BarcodeInfo
                BarcodeBLL.GetBarcodeInfo(srmBarcodeInfo, ref barcodeInfo);
                ///SupplierInfo -> BarcodeInfo
                BarcodeBLL.GetBarcodeInfo(supplierInfo, ref barcodeInfo);
                ///PartsStockInfo -> BarcodeInfo
                BarcodeBLL.GetBarcodeInfo(partsStockInfo, ref barcodeInfo);
                ///PackageApplianceInfo -> BarcodeInfo
                PackageApplianceInfo packageApplianceInfo = packageApplianceInfos.FirstOrDefault(d => d.PackageNo == partsStockInfo.InboundPackageModel);
                BarcodeBLL.GetBarcodeInfo(packageApplianceInfo, ref barcodeInfo);
                ///
                barcodeInfo.CreateSourceFid = receiveDetailInfo.Fid;
                ///
                @string.AppendLine(BarcodeDAL.GetInsertSql(barcodeInfo));
                dealedIds.Add(srmBarcodeInfo.Id);
            }
            if (dealedIds.Count > 0)
            {
                ///已处理的中间表数据更新为已处理状态
                @string.AppendLine("update [LES].[TI_IFM_SRM_BARCODE] set " +
                                   "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Processed + "," +
                                   "[PROCESS_TIME] = GETDATE() where " +
                                   "[ID] in (" + string.Join(",", dealedIds.ToArray()) + ");");
            }
            ///执行
            using (TransactionScope trans = new TransactionScope())
            {
                if (@string.Length > 0)
                {
                    BLL.SYS.CommonBLL.ExecuteNonQueryBySql(@string.ToString());
                }
                trans.Complete();
            }
        }