Пример #1
0
        private void InsertToScan(string employee_no, string picking_department_no, DependencyObjectCollection scanColl)
        {
            DataTable          dtScan        = CreateDtForScanBulk();
            DataTable          dtScanDetail  = CreateDtForScan_DetailBulk();
            IPrimaryKeyService prikeyService = this.GetService <IPrimaryKeyService>("MO_RECEIPT_REQUISTION");

            foreach (DependencyObject scanObj in scanColl)
            {
                DataRow drNew = dtScan.NewRow();
                #region 单头新增
                drNew["ID"]                    = prikeyService.CreateId();
                drNew["employee_no"]           = employee_no;
                drNew["picking_department_no"] = picking_department_no;
                drNew["site_no"]               = scanObj["site_no"];
                drNew["info_lot_no"]           = scanObj["info_lot_no"];
                dtScan.Rows.Add(drNew);
                #endregion
                DependencyObjectCollection detailColl = scanObj["scan_detail"] as DependencyObjectCollection;
                int seqNum = 0;
                List <IGrouping <string, DependencyObject> > groupDColl = detailColl.GroupBy(c => string.Concat(c["doc_no"], c["seq"], c["item_no"], c["item_feature_no"], c["picking_unit_no"], c["warehouse_no"], c["storage_spaces_no"], c["lot_no"])).ToList();//源单+来源序号+品号+特征码+仓库+库位+批号
                foreach (IGrouping <string, DependencyObject> groupD in groupDColl)
                {
                    seqNum++;
                    object id = prikeyService.CreateId();
                    foreach (DependencyObject detailObj in groupD)
                    {
                        DataRow drNewDetail = dtScanDetail.NewRow();
                        #region 单身新增
                        drNewDetail["ID"]                = id;
                        drNewDetail["SequenceNumber"]    = seqNum;
                        drNewDetail["info_lot_no"]       = detailObj["info_lot_no"];
                        drNewDetail["item_no"]           = detailObj["item_no"];
                        drNewDetail["item_feature_no"]   = detailObj["item_feature_no"];
                        drNewDetail["picking_unit_no"]   = detailObj["picking_unit_no"];
                        drNewDetail["doc_no"]            = detailObj["doc_no"];
                        drNewDetail["seq"]               = detailObj["seq"];
                        drNewDetail["warehouse_no"]      = detailObj["warehouse_no"];
                        drNewDetail["storage_spaces_no"] = detailObj["storage_spaces_no"];
                        drNewDetail["lot_no"]            = detailObj["lot_no"];
                        drNewDetail["picking_qty"]       = detailObj["picking_qty"];
                        drNewDetail["barcode_no"]        = detailObj["barcode_no"];
                        dtScanDetail.Rows.Add(drNewDetail);
                        #endregion
                    }
                }
            }
            List <BulkCopyColumnMapping> dtScanMapping = GetBulkCopyColumnMapping(dtScan.Columns);
            _qurService.BulkCopy(dtScan, _Table_scan.Name, dtScanMapping.ToArray());
            dtScanMapping = GetBulkCopyColumnMapping(dtScanDetail.Columns);
            _qurService.BulkCopy(dtScanDetail, _Table_scan_detail.Name, dtScanMapping.ToArray());
        }
        /// <summary>
        /// 根据传入的信息建立送货单
        /// </summary>
        /// <param name="site_no">门店</param>
        /// <param name="delivery_no">送货单号</param>
        /// <param name="create_date">单据日期</param>
        /// <param name="supplier_no">供应商编号</param>
        /// <param name="purchase_type">采购性质</param>
        /// <param name="receipt_address">收货地址</param>
        /// <param name="receipt_no">收货单号</param>
        /// <param name="print_qty">列印次数</param>
        /// <param name="remark">备注</param>
        /// <param name="status">状态</param>
        /// <param name="delivery_detail">单身数据集</param>
        public void InsertFilArrival(string site_no, string delivery_no, string create_date, string supplier_no, string purchase_type, string receipt_address,
                                     string receipt_no, string print_qty, string remark, string status, DependencyObjectCollection delivery_detail)
        {
            try {
                //生成主键服务
                IPrimaryKeyService keyService   = this.GetServiceForThisTypeKey <IPrimaryKeyService>();
                object             filArrivalId = keyService.CreateId();//主键
                //送货单
                DataTable filArrival = FilArrivalNewDt(filArrivalId, site_no, delivery_no, create_date, supplier_no,
                                                       purchase_type, receipt_address, receipt_no, print_qty, remark, status);

                //送货单单身
                DataTable filArrivalD = FilArrivalDNewDt(delivery_detail, site_no, delivery_no, supplier_no, filArrivalId, keyService);

                //获取需要拆入数据表的ColumnMappings
                List <BulkCopyColumnMapping> mapping = GetBulkCopyColumnMapping(filArrival.Columns);
                //获取需要拆入数据表的ColumnMappings
                List <BulkCopyColumnMapping> mappingD = GetBulkCopyColumnMapping(filArrivalD.Columns);

                using (ITransactionService transActionService = GetService <ITransactionService>()) {
                    //插入送货单数据
                    GetService <IQueryService>().BulkCopy(filArrival, filArrival.TableName, mapping.ToArray());
                    //插入送货单单身数据
                    GetService <IQueryService>().BulkCopy(filArrivalD, filArrivalD.TableName, mappingD.ToArray());
                    transActionService.Complete();
                }
            } catch (Exception) {
                throw;
            }
        }
        /// <summary>
        /// 创建送货单单身临时表
        /// </summary>
        /// <returns></returns>
        private DataTable FilArrivalDNewDt(DependencyObjectCollection deliveryDetail, string siteNo, string deliveryNo, string supplierNo, object parentId, IPrimaryKeyService keyService)
        {
            //创建临时表
            DataTable     dataTable = CreateFilArrivalDInfo();
            ILogOnService loginSrv  = GetService <ILogOnService>();

            foreach (DependencyObject item in deliveryDetail)
            {
                //新增行
                DataRow dr = dataTable.NewRow();
                dr["FIL_ARRIVAL_D_ID"] = keyService.CreateId();            //主键
                dr["ParentId"]         = parentId;                         //父主键
                dr["BOOK_CODE"]        = "99";                             //企业编号
                dr["PLANT_CODE"]       = siteNo;                           //门店
                dr["DOC_NO"]           = deliveryNo;                       //发货单号
                dr["SequenceNumber"]   = item["seq"];                      //项次
                dr["COMPANY_CODE"]     = supplierNo;                       //公司代号
                dr["ORDER_NO"]         = item["purchase_no"];              //采购单号
                dr["ORDER_SE"]         = item["purchase_seq"].ToInt32();   //采购单序号
                dr["ORDER_SE_SE"]      = item["line_seq"].ToInt32();       //采购单子序号
                dr["ORDER_SE_SE_SE"]   = item["batch_seq"].ToInt32();      //采购订单子子单身
                dr["ITEM_CODE"]        = item["item_no"];                  //品号
                dr["ITEM_NAME"]        = item["item_name"];                //品名
                dr["ITEM_DESCRIPTION"] = item["item_spec"];                //规格
                dr["WAREHOUSE_CODE"]   = item["warehouse_no"];             //仓库
                dr["UNIT_CODE"]        = item["unit_no"];                  //单位
                dr["PU_QTY"]           = item["purchase_qty"].ToDecimal(); //采购量
                dr["UNARR_QTY"]        = item["unpaid_qty"].ToDecimal();   //未交量
                dr["ACTUAL_QTY"]       = item["qty"].ToDecimal();          //实发量
                dr["RECEIPT_QTY"]      = item["receipt_qty"].ToDecimal();  //收货量
                dr["TAX_INVOICE_NO"]   = string.Empty;                     //发票号
                dr["PACKING_QTY"]      = item["box_qty"].ToDecimal();      //箱装量
                dr["BC_TYPE"]          = item["barcode_type"];             //条码类型

                dr["CHECK_NO"]          = item["qc_type"];
                dr["PRICE_UNIT_CODE"]   = item["valuation_unit_no"];
                dr["PRICE_QTY"]         = item["valuation_qty"];
                dr["RECEIPT_OVER_RATE"] = item["over_deliver_rate"];
                dr["ITEM_FEATURE_CODE"] = item["item_feature_no"];
                dr["STATUS"]            = item["receipt_status"];
                //系统管理字段
                dr["CreateBy"]         = loginSrv.CurrentUserId;
                dr["CreateDate"]       = DateTime.Now;
                dr["ModifiedBy"]       = loginSrv.CurrentUserId;
                dr["ModifiedDate"]     = DateTime.Now;
                dr["LastModifiedBy"]   = loginSrv.CurrentUserId;
                dr["LastModifiedDate"] = DateTime.Now;

                //添加至dataTable中
                dataTable.Rows.Add(dr);
            }
            return(dataTable);
        }
Пример #4
0
        private List <DependencyObject> InsertCOUNTING(string countingType, string countingNo, DependencyObjectCollection sumColl, DependencyObjectType entityType)
        {
            List <DependencyObject> newList       = new List <DependencyObject>();
            IPrimaryKeyService      prikeyService = this.GetService <IPrimaryKeyService>("COUNTING");
            string countType = string.Empty;

            switch (countingType)
            {
            case "1":
                countingType = "1";
                break;

            case "3":
                countingType = "2";
                break;

            case "4":
                countingType = "3";
                break;

            default:
                break;
            }
            int seqNumberValue = GetMaxSeq(countingNo) + 1;

            foreach (DependencyObject sumObj in sumColl)
            {
                DependencyObject newRecord = new DependencyObject(entityType);
                newRecord["COUNTING_ID"]        = prikeyService.CreateId();
                newRecord["ITEM_ID"]            = sumObj["ITEM_ID"];
                newRecord["ITEM_DESCRIPTION"]   = sumObj["ITEM_DESCRIPTION"];
                newRecord["ITEM_FEATURE_ID"]    = sumObj["ITEM_FEATURE_ID"];
                newRecord["ITEM_SPECIFICATION"] = sumObj["ITEM_SPECIFICATION"];
                newRecord["WAREHOUSE_ID"]       = sumObj["WAREHOUSE_ID"];
                newRecord["BIN_ID"]             = sumObj["BIN_ID"];
                newRecord["ITEM_LOT_ID"]        = sumObj["ITEM_LOT_ID"];
                newRecord["COUNT_TYPE"]         = countingType;
                newRecord["COUNTING_QTY"]       = sumObj["QTY"];
                newRecord["SECOND_QTY"]         = sumObj["SECOND_QTY"];
                newRecord["PLAN_DATE"]          = sumObj["PLAN_DATE"];
                newRecord["COUNTING_DATE"]      = sumObj["complete_date"];
                //20170302 add by shenbao for P001-170302001 ===begin===
                string rtk = sumObj["BO_ID_RTK"].ToStringExtension();
                if (string.IsNullOrEmpty(rtk))
                {
                    rtk = "OTHER";
                }
                //20170302 add by shenbao for P001-170302001  ===end===
                ((DependencyObject)newRecord["BO_ID"])["RTK"]  = rtk; //20170302 modi by shenbao for P001-170302001  sumObj["BO_ID_RTK"]==>rtk
                ((DependencyObject)newRecord["BO_ID"])["ROid"] = sumObj["BO_ID_ROid"];
                newRecord["COMPANY_ID"]       = sumObj["COMPANY_ID"];
                newRecord["COUNTING_PLAN_ID"] = sumObj["COUNTING_PLAN_ID"];
                newRecord["DOC_NO"]           = countingNo;
                newRecord["BUSINESS_UNIT_ID"] = sumObj["STOCK_UNIT_ID"];
                newRecord["BUSINESS_QTY"]     = sumObj["QTY"];
                if (sumObj["SequenceNumber"] == null || sumObj["SequenceNumber"].ToInt32() <= 0)
                {
                    newRecord["SequenceNumber"] = seqNumberValue;
                    seqNumberValue++;
                }
                else
                {
                    newRecord["SequenceNumber"] = sumObj["SequenceNumber"];
                }
                ((DependencyObject)newRecord["Owner_Org"])["RTK"]  = "PLANT";
                ((DependencyObject)newRecord["Owner_Org"])["ROid"] = sumObj["PLANT_ID"];
                newList.Add(newRecord);
            }
            return(newList);
        }
        private string InsertPoArrivalInspection(string receiptNo, DependencyObjectCollection receiptList, List <int> paiSequenceNumber, Dictionary <int, object> docIdDt)
        {
            //获取生成到货检验单基础数据
            DataTable poArrivalInspection = GetInsertPoArrivalInspection(receiptNo, paiSequenceNumber);
            //把查询数据以序号为Key,存入字典中。方便后期直接根据序号拿数据
            Dictionary <int, DataRow> poArrivalDictionary = new Dictionary <int, DataRow>();

            foreach (DataRow item in poArrivalInspection.Rows)
            {
                if (!poArrivalDictionary.ContainsKey(item["SequenceNumber"].ToInt32()))
                {
                    poArrivalDictionary.Add(item["SequenceNumber"].ToInt32(), item);
                }
            }
            //创建生成采购到货检验单缓存临时表
            DataTable poArrivalInspectionInfo = poArrivalInspection.Clone(); //复制表结构

            poArrivalInspectionInfo.TableName = "PO_ARRIVAL_INSPECTION";
            //创建生成采购到货检验单计数单身缓存临时表
            DataTable poArrivalInspectionDInfo = CreatePoArrivalInspectionDInfo();
            //创建生成采购到货检验单计量单身缓存临时表
            DataTable poArrivalInspectionD1Info = CreatePoArrivalInspectionD1Info();
            //创建计数品质检验不良原因缓存临时表
            DataTable defectiveReasonsAiId = CreateDefectiveReasonsAiIdInfo();

            IPrimaryKeyService             keyService              = GetService <IPrimaryKeyService>(TypeKey);                                                     //生成主键服务
            IDocumentNumberGenerateService docNumService           = GetService <IDocumentNumberGenerateService>("PO_ARRIVAL_INSPECTION");                         //自动编号服务
            ICreateInspectionService       createInspectionService = GetService <ICreateInspectionService>("PO_ARRIVAL_INSPECTION");                               //顺序检查服务
            IGenerateOrDeletePurchaseArivalQCResultService generatePurchaseArivalQc = GetService <IGenerateOrDeletePurchaseArivalQCResultService>("PO_QC_RESULT"); //生成/删除采购质检业务信息服务

            IItemQtyConversionService   itemQtyConversionService = GetService <IItemQtyConversionService>(TypeKey);
            ILogOnService               loginService             = GetService <ILogOnService>();
            List <DocmentInfo>          listDocuments            = new List <DocmentInfo>();
            Dictionary <string, string> salesReturnDocNo         = new Dictionary <string, string>(); //记录产生的单号用于批量生成的时候防止重复单号
            const decimal               defaultDecimal           = 0m;
            string resutQcNo = string.Empty;                                                          //返回结果单号

            //循环入参数据,分别给到货检验单、货检验单计数单身、货检验单计量单身身临时表插入数据
            foreach (DependencyObject receiptListItem in receiptList)
            {
                object poArrivalInspectionId = keyService.CreateId(); //主键
                if (poArrivalDictionary.ContainsKey(receiptListItem["seq"].ToInt32()))
                {
                    #region 到货检验单临时表插入数据
                    //获取生单基础数据
                    DataRow dr = poArrivalDictionary[receiptListItem["seq"].ToInt32()];

                    //获取单据性质
                    object docId = Maths.GuidDefaultValue();
                    if (docIdDt.ContainsKey(dr["SequenceNumber"].ToInt32()))
                    {
                        docId = docIdDt[dr["SequenceNumber"].ToInt32()];
                    }
                    if (dr["PURCHASE_TYPE"].ToStringExtension() == "1" || dr["PURCHASE_TYPE"].ToStringExtension() == "5")
                    {
                        dr["CATEGORY"] = "Q1";
                    }
                    else if (dr["PURCHASE_TYPE"].ToStringExtension() == "2" || dr["PURCHASE_TYPE"].ToStringExtension() == "3")
                    {
                        dr["CATEGORY"] = "Q2";
                    }

                    //计算列赋值
                    dr["PO_ARRIVAL_INSPECTION_ID"] = poArrivalInspectionId;                         //主键
                    dr["DOC_ID"]   = docId;                                                         //单据类型
                    dr["DOC_DATE"] = DateTime.Now.Date;                                             //单据日期

                    dr["DOC_NO"] = docNumService.NextNumber(dr["DOC_ID"], dr["DOC_DATE"].ToDate()); //单号
                    if (!salesReturnDocNo.ContainsKey(dr["DOC_NO"].ToString()))
                    {
                        salesReturnDocNo.Add(dr["DOC_NO"].ToString(), dr["DOC_NO"].ToString());
                    }
                    else
                    {
                        string oldDocNo = salesReturnDocNo[dr["DOC_NO"].ToString()]; //取得字典中存储的最大单号
                        string docNo    = NewDocNo(oldDocNo);                        //产生新单号
                        salesReturnDocNo[dr["DOC_NO"].ToString()] = docNo;           //更新字段中单号
                        dr["DOC_NO"] = docNo;                                        //当前笔单号重新赋值
                    }

                    object[] createInspection = createInspectionService.GetInspectionId(dr["ITEM_ID"],
                                                                                        dr["Owner_Org_ROid"],
                                                                                        dr["ITEM_FEATURE_ID"], dr["OPERATION_ID"]);
                    if (!Maths.IsEmpty(createInspection))
                    {
                        dr["INSPECTION_PLAN_ID"] = createInspection[0]; //质检方案ID
                        dr["INSPECTION_TIMES"]   = createInspection[1]; //最大抽样次数
                    }

                    dr["INSPECTION_QTY"]      = receiptListItem["receipt_qty"];                                                                                      //送检数量
                    dr["INSPECTION_DUE_DATE"] = Maths.AddTimeValue(dr["ARRIVAL_DATE"].ToDate(), 1,
                                                                   dr["INSPECT_DAYS"].ToInt32());                                                                    //检验期限
                    dr["INVENTORY_QTY"] = itemQtyConversionService.GetConvertedQty(dr["ITEM_ID"],
                                                                                   dr["INSPECTION_UNIT_ID"], dr["INSPECTION_QTY"].ToDecimal(), dr["STOCK_UNIT_ID"]); //库存单位数量
                    dr["SECOND_QTY"] = itemQtyConversionService.GetConvertedQty(dr["ITEM_ID"], dr["INSPECTION_UNIT_ID"],
                                                                                dr["INSPECTION_QTY"].ToDecimal(), dr["SECOND_UNIT_ID"]);                             //库存单位数量
                    dr["ACCEPTABLE_QTY"]  = receiptListItem["ok_qty"];                                                                                               //送检数量
                    dr["UNQUALIFIED_QTY"] = receiptListItem["unqualified_qty"];                                                                                      //不合格数量
                    dr["DESTROYED_QTY"]   = receiptListItem["checkdestroy_qty"];                                                                                     //破坏数量
                    //判定结果
                    if (receiptListItem["result_type"].ToStringExtension() == "Y")
                    {
                        dr["DECISION"] = "1";
                    }
                    else
                    {
                        dr["DECISION"] = "2";
                    }

                    //后道工序
                    if (!Maths.IsEmpty(dr["MO_ROUTING_D_ID"]))
                    {
                        DependencyObject moRouting = GetMoRouting(dr["MO_ROUTING_D_ID"]);
                        dr["TO_MO_ROUTING_D_ID"] = moRouting["MO_ROUTING_D_ID"];
                        dr["TO_OPERATION_ID"]    = moRouting["OPERATION_ID"];
                    }

                    dr["Owner_Emp"]  = GetEmployeeInfo(loginService.CurrentUserId);
                    dr["Owner_Dept"] = GetAdminUnitInfo(dr["Owner_Emp"]);
                    //系统管理字段
                    AddManagementData(dr, loginService);
                    poArrivalInspectionInfo.Rows.Add(dr.ItemArray);

                    #endregion

                    #region 到货检验单计数单身临时表插入数据

                    DependencyObjectCollection qcList = receiptListItem["qc_list"] as DependencyObjectCollection;
                    if (qcList == null)
                    {
                        continue;                 //不存在qc_list集合数据跳出循环
                    }
                    foreach (var qcListItem in qcList)
                    {
                        if (qcListItem["qc_seq"].ToInt32() == 0)
                        {
                            continue;                                     //序号为0的数据是默认数据只是为了json结构完整插入的,虚无插入E10系统
                        }
                        DataRow qcListDr = poArrivalInspectionDInfo.NewRow();
                        qcListDr["PO_ARRIVAL_INSPECTION_D_ID"] = keyService.CreateId(); //主键
                        qcListDr["ParentId"]           = poArrivalInspectionId;         //父主键
                        qcListDr["SEQUENCE"]           = qcListItem["qc_seq"];
                        qcListDr["DEFECT_CLASS"]       = qcListItem["defect_level"];
                        qcListDr["INSPECTION_QTY"]     = qcListItem["test_qty"];
                        qcListDr["INSPECTION_QQ"]      = qcListItem["return_qty"];
                        qcListDr["INSPECTION_ITEM_ID"] = GetInspectionItem(qcListItem["test_no"], dr["Owner_Org_ROid"]);
                        qcListDr["INSPECTION_AC"]      = qcListItem["acceptable_qty"];
                        qcListDr["INSPECTION_RE"]      = qcListItem["rejected_qty"];
                        if (receiptListItem["result_type"].ToStringExtension() == "Y")
                        {
                            qcListDr["DECISION"] = true;
                        }
                        else
                        {
                            qcListDr["DECISION"] = false;
                        }
                        qcListDr["IMPACT_RESULT"] = true;
                        qcListDr["REMARK"]        = string.Empty;

                        qcListDr["DEFECTIVE_REASONS_ID"] = Maths.GuidDefaultValue();
                        //系统管理字段
                        AddManagementData(qcListDr, loginService);


                        DependencyObjectCollection reasonlist = qcListItem["reason_list"] as DependencyObjectCollection;
                        if (reasonlist == null)
                        {
                            continue;
                        }
                        //defect_qty为0且reason_no为空的数据是默认数据只是为了json结构完整插入的,不需要插入E10系统
                        if (reasonlist.Count == 1 && (!Maths.IsEmpty(reasonlist[0]["reason_no"]) || reasonlist[0]["defect_qty"].ToInt32() != 0))
                        {
                            qcListDr["DEFECTIVE_REASONS_ID"] = GetDefectiveReasonsId(reasonlist[0]["reason_no"].ToStringExtension());
                        }
                        else
                        {
                            //defect_qty为0且reason_no为空的数据是默认数据只是为了json结构完整插入的,不需要插入E10系统
                            if (!Maths.IsEmpty(reasonlist[0]["reason_no"]) || reasonlist[0]["defect_qty"].ToInt32() != 0)
                            {
                                foreach (DependencyObject reasonlistItem in reasonlist)
                                {
                                    DataRow reasonlistDr = defectiveReasonsAiId.NewRow();
                                    reasonlistDr["DEFECTIVE_REASONS_AI_ID"] = keyService.CreateId();               //主键
                                    reasonlistDr["ParentId"]             = qcListDr["PO_ARRIVAL_INSPECTION_D_ID"]; //父主键
                                    reasonlistDr["DEFECTS"]              = reasonlistItem["defect_qty"];
                                    reasonlistDr["REMARK"]               = string.Empty;
                                    reasonlistDr["DEFECTIVE_REASONS_ID"] =
                                        GetDefectiveReasonsId(reasonlistItem["reason_no"].ToStringExtension());
                                    //系统管理字段
                                    AddManagementData(reasonlistDr, loginService);
                                    defectiveReasonsAiId.Rows.Add(reasonlistDr.ItemArray);

                                    //子单身第一笔时把不良原因主键赋值给单身不良原因
                                    if (reasonlist.IndexOf(reasonlistItem) == 0)
                                    {
                                        qcListDr["DEFECTIVE_REASONS_ID"] = reasonlistDr["DEFECTIVE_REASONS_ID"];
                                    }
                                }
                            }
                        }
                        //把对应数据添加至预生单缓存中
                        poArrivalInspectionDInfo.Rows.Add(qcListDr.ItemArray);
                    }

                    #endregion

                    #region 到货检验单计量单身临时表插入数据

                    DependencyObjectCollection collection =
                        createInspectionService.CreateInspection(dr["INSPECTION_PLAN_ID"], dr["OPERATION_ID"]);
                    foreach (DependencyObject item in collection)
                    {
                        if (item["INSPECTION_TYPE"].Equals("VI")) //collection.检验类型=‘VI’
                        {
                            DataRow itemDr = poArrivalInspectionD1Info.NewRow();
                            itemDr["PO_ARRIVAL_INSPECTION_D1_ID"] = keyService.CreateId();
                            itemDr["ParentId"] = poArrivalInspectionId;
                            itemDr["SEQUENCE"] = item["SEQUENCE"]; //检验顺序
                            DependencyObject inspectionPlantD = GetInspectionPlantD(dr["INSPECTION_PLAN_ID"],
                                                                                    item["INSPECTION_ITEM_ID"]);
                            itemDr["DEFECT_CLASS"]         = inspectionPlantD["DEFECT_CLASS"];
                            itemDr["INSPECTION_QTY"]       = defaultDecimal;
                            itemDr["INSPECTION_QQ"]        = defaultDecimal;
                            itemDr["DECISION"]             = false;
                            itemDr["IMPACT_RESULT"]        = inspectionPlantD["IMPACT_RESULT"];
                            itemDr["REMARK"]               = string.Empty;
                            itemDr["INSPECTION_ITEM_ID"]   = item["INSPECTION_ITEM_ID"]; //检验项目
                            itemDr["DEFECTIVE_REASONS_ID"] = Maths.GuidDefaultValue();
                            itemDr["ACCEPTANCE_CONSTANT"]  = defaultDecimal;
                            itemDr["SS"] = defaultDecimal;
                            itemDr["XX"] = defaultDecimal;
                            //系统管理字段
                            AddManagementData(itemDr, loginService);
                            poArrivalInspectionD1Info.Rows.Add(itemDr.ItemArray);
                        }
                    }

                    #endregion

                    //记录单据信息
                    DocmentInfo docmentInfo = new DocmentInfo();
                    docmentInfo.Id         = dr["PO_ARRIVAL_INSPECTION_ID"];
                    docmentInfo.OwnerOrgId = dr["Owner_Org_ROid"];
                    docmentInfo.DocId      = dr["DOC_ID"];
                    docmentInfo.DocNo      = dr["DOC_NO"].ToStringExtension();
                    listDocuments.Add(docmentInfo);

                    if (Maths.IsEmpty(resutQcNo))
                    {
                        resutQcNo = dr["DOC_NO"].ToStringExtension();
                    }
                    else
                    {
                        resutQcNo += "," + dr["DOC_NO"].ToStringExtension();
                    }
                }
            }
            #region 将数据统一插入数据库中

            using (ITransactionService trans = GetService <ITransactionService>()) {
                IQueryService querySrv = GetService <IQueryService>();
                //生成采购到货检验单
                if (poArrivalInspectionInfo.Rows.Count > 0)
                {
                    poArrivalInspectionInfo.Columns.Remove("SequenceNumber");
                    poArrivalInspectionInfo.Columns.Remove("ARRIVAL_DATE");
                    poArrivalInspectionInfo.Columns.Remove("INSPECT_DAYS");
                    poArrivalInspectionInfo.Columns.Remove("STOCK_UNIT_ID");
                    poArrivalInspectionInfo.Columns.Remove("SECOND_UNIT_ID");
                    poArrivalInspectionInfo.Columns.Remove("PURCHASE_TYPE");
                    BulkCopyAll(poArrivalInspectionInfo, querySrv);
                }
                //生成采购到货检验单计数单身
                if (poArrivalInspectionDInfo.Rows.Count > 0)
                {
                    BulkCopyAll(poArrivalInspectionDInfo, querySrv);
                }
                //生成采购到货检验单计量单身
                if (poArrivalInspectionD1Info.Rows.Count > 0)
                {
                    BulkCopyAll(poArrivalInspectionD1Info, querySrv);
                }
                //生成计数品质检验不良原因
                if (defectiveReasonsAiId.Rows.Count > 0)
                {
                    BulkCopyAll(defectiveReasonsAiId, querySrv);
                }

                //EFNET签核
                var infos = listDocuments.GroupBy(c => new { DOC_ID = c.DocId, OwnerOrgID = c.OwnerOrgId });
                foreach (var item in infos)
                {
                    IEFNETStatusStatusService efnetSrv = GetService <IEFNETStatusStatusService>();
                    efnetSrv.GetFormFlow("PO_ARRIVAL_INSPECTION.I01", item.Key.DOC_ID, item.Key.OwnerOrgID,
                                         item.Select(c => c.Id).ToArray());
                }

                //保存单据
                IReadService readSrv  = GetService <IReadService>("PO_ARRIVAL_INSPECTION");
                object[]     entities = readSrv.Read(listDocuments.Select(c => c.Id).Distinct().ToArray());
                if (entities != null && entities.Length > 0)
                {
                    ISaveService saveSrv = GetService <ISaveService>("PO_ARRIVAL_INSPECTION");
                    saveSrv.Save(entities);
                }

                trans.Complete();
            }

            #endregion
            return(resutQcNo);
        }