コード例 #1
0
ファイル: StockoutConfirmJob.cs プロジェクト: windygu/LkApps
        public void Execute(IJobExecutionContext context)
        {
            string url       = ConfigurationManager.AppSettings["URL"].ToString();
            string appkey    = ConfigurationManager.AppSettings["APPKEY"].ToString(); //"1023883919"; 23883919
            string secret    = ConfigurationManager.AppSettings["SECRET"].ToString(); //"sandboxff0b11ecc626508c171a5b2a2";
            string customeId = ConfigurationManager.AppSettings["CUSTOMEID"].ToString();
            string v         = ConfigurationManager.AppSettings["v"].ToString();

            string[] customerArr = customeId.Split(',');

            try
            {
                _logger.Info("StockoutConfirmJob 开始执行... " + DateTime.Now + "");
                foreach (var cId in customerArr)
                {
                    using (SCVDBContainer dbContext = new SCVDBContainer())
                        using (DBContainer dbContext1 = new DBContainer())
                        {
                            DbSet <SHIPMENT_HEADER> header = dbContext.Set <SHIPMENT_HEADER>();
                            DbSet <SHIPMENT_DETAIL> detail = dbContext.Set <SHIPMENT_DETAIL>();
                            //DbSet<QiMen_PushTimeStatus> dbSet0 = dbContext1.Set<QiMen_PushTimeStatus>();
                            DbSet <QiMen_PushLog> dbSet1 = dbContext1.Set <QiMen_PushLog>();
                            IQimenClient          client;
                            if (cId == "RB")
                            {
                                string rbUrl = "";
                                client = new DefaultQimenClient(rbUrl, appkey, secret, true);
                            }
                            else
                            {
                                client = new DefaultQimenClient(url, appkey, secret);
                            }


                            StockoutConfirmRequest req = new StockoutConfirmRequest();


                            //DateTime lastTime;
                            //QiMen_PushTimeStatus qmt = dbSet0.Where(q => q.CustomerId == cId && q.OrderType == SHIPMENT && q.Interface == INTERFACE).FirstOrDefault();
                            //if (qmt == null)
                            //{
                            //    qmt = new QiMen_PushTimeStatus() { CustomerId = cId, ActualShipTime = DateTime.Now, OrderType = SHIPMENT, Interface = INTERFACE };
                            //    dbSet0.Add(qmt);
                            //    lastTime = DateTime.Now.AddMinutes(-1);
                            //}
                            //else
                            //{
                            //    lastTime = ((DateTime)qmt.ActualShipTime).AddMinutes(-1);
                            //}
                            //&& (h.SHIPMENT_TYPE.Equals("LKCK", StringComparison.OrdinalIgnoreCase))
                            //var confirmlList = header.Where(h => h.COMPANY == cId && h.TRAILING_STS == 900 && h.ACTUAL_SHIP_DATE_TIME >= lastTime).OrderByDescending(h => h.ACTUAL_SHIP_DATE_TIME).Include(s => s.SHIPMENT_DETAIL).Include(s => s.SHIPPING_CONTAINER).AsNoTracking().ToList();
                            var confirmlList = new List <SHIPMENT_HEADER>();

                            if (cId == "XGQQG")
                            {
                                confirmlList = header.Where(h => h.COMPANY == cId &&
                                                            (h.SHIPMENT_CATEGORY6 == null || h.SHIPMENT_CATEGORY6 == QimenPushStatus.Failure.ToString() ||
                                                             h.SHIPMENT_CATEGORY6 == "1" || h.SHIPMENT_CATEGORY6 == "2" || h.SHIPMENT_CATEGORY6 == "3" || h.SHIPMENT_CATEGORY6 == "4" || h.SHIPMENT_CATEGORY6 == "5") &&
                                                            (h.TRAILING_STS == 800 || h.TRAILING_STS == 850 || h.TRAILING_STS == 900) &&
                                                            (h.PROCESS_TYPE == "NORMAL")
                                                            ).Include(s => s.SHIPMENT_DETAIL).Include(s => s.SHIPPING_CONTAINER).ToList();
                            }
                            else
                            {
                                confirmlList = header.Where(h => h.COMPANY == cId &&
                                                            h.CREATE_USER == "StockOutCreate" &&
                                                            (h.SHIPMENT_CATEGORY6 == null || h.SHIPMENT_CATEGORY6 == QimenPushStatus.Failure.ToString() ||
                                                             h.SHIPMENT_CATEGORY6 == "1" || h.SHIPMENT_CATEGORY6 == "2" || h.SHIPMENT_CATEGORY6 == "3" || h.SHIPMENT_CATEGORY6 == "4" || h.SHIPMENT_CATEGORY6 == "5") &&
                                                            (h.TRAILING_STS == 800 || h.TRAILING_STS == 850 || h.TRAILING_STS == 900) &&
                                                            (h.PROCESS_TYPE == "NORMAL")
                                                            ).Include(s => s.SHIPMENT_DETAIL).Include(s => s.SHIPPING_CONTAINER).ToList();
                            }


                            //if (cId == "CQHGE")
                            //{
                            //    confirmlList = confirmlList.Where(l => l.CREATE_USER == "StockOutCreate").ToList();
                            //}

                            if (cId == "XGQQG")
                            {
                                CustomHttpClient.Request.YSJsonDeliveryorderConfirmRequest ysReq = new CustomHttpClient.Request.YSJsonDeliveryorderConfirmRequest();
                                string ysUrl = ysReq.GetApiName();
                                CustomHttpClient.ICustomClient customClient = new CustomHttpClient.DefaultCustomClient(ysUrl, null, null);
                                ysReq.Db       = "shop01";
                                ysReq.Function = "sp_mobile";
                                ysReq.Intype   = "qrcode_out";
                                foreach (var itemHeader in confirmlList)
                                {
                                    var snList = dbContext.SERIAL_NUMBER.Where(s => s.INTERNAL_SHIPMENT_NUM == itemHeader.INTERNAL_SHIPMENT_NUM).ToList();

                                    if (!snList.Any())
                                    {
                                        itemHeader.SHIPMENT_CATEGORY6 = "Skip";
                                    }

                                    int successCount = 0;

                                    foreach (var sn in snList)
                                    {
                                        ysReq.Inpara = itemHeader.SHIPMENT_ID + "," + sn.SERIAL_NUMBER1;
                                        //ysReq.Inpara = "20170416591020," + "MAI2800000009001";
                                        CustomHttpClient.Response.YSJsonDeliveryorderConfirmResponse ysRsp = customClient.Execute(ysReq);
                                        QiMen_PushLog log = new QiMen_PushLog();
                                        log.InternalOrderID = itemHeader.INTERNAL_SHIPMENT_NUM;
                                        log.OrderType       = INTERFACE;
                                        log.CustomerId      = cId;
                                        log.Flag            = ysRsp.Success ? "success" : "failure";
                                        log.Message         = ysRsp.Err + ":" + ysRsp.OutContext;
                                        log.CreateTime      = DateTime.Now;
                                        dbSet1.Add(log);

                                        if (ysRsp.Success)
                                        {
                                            successCount++;
                                            if (successCount == snList.Count())
                                            {
                                                itemHeader.SHIPMENT_CATEGORY6 = QimenPushStatus.Success.ToString();
                                                _logger.Info("出库单:" + itemHeader.SHIPMENT_ID + "确认成功----" + DateTime.Now);
                                            }
                                        }
                                        else
                                        {
                                            if (string.IsNullOrEmpty(itemHeader.SHIPMENT_CATEGORY6))
                                            {
                                                itemHeader.SHIPMENT_CATEGORY6 = "1";
                                            }
                                            else
                                            {
                                                int parseResult;
                                                if (int.TryParse(itemHeader.SHIPMENT_CATEGORY6, out parseResult))
                                                {
                                                    itemHeader.SHIPMENT_CATEGORY6 = (parseResult + 1).ToString();
                                                }
                                            }
                                            _logger.Info("出库单:" + itemHeader.SHIPMENT_ID + "确认失败:-" + ysRsp.OutContext + DateTime.Now);
                                        }
                                    }
                                }
                                dbContext.SaveChanges();
                                dbContext1.SaveChanges();
                                continue;
                            }

                            if (cId == "CH")
                            {
                                req.CustomerId = "CH1";
                            }
                            else
                            {
                                req.CustomerId = cId;
                            }
                            req.Version   = v;
                            req.Timestamp = DateTime.Now;
                            //bool pushFlag = true;

                            foreach (var itemHeader in confirmlList)
                            {
                                StockoutConfirmRequest.DeliveryOrderDomain deliveryOrder = new StockoutConfirmRequest.DeliveryOrderDomain();

                                deliveryOrder.DeliveryOrderCode = itemHeader.SHIPMENT_ID;
                                deliveryOrder.WarehouseCode     = itemHeader.WAREHOUSE;
                                deliveryOrder.OrderType         = itemHeader.SHIPMENT_TYPE;
                                deliveryOrder.ConfirmType       = 0L;
                                deliveryOrder.DeliveryOrderId   = itemHeader.INTERNAL_SHIPMENT_NUM.ToString();
                                deliveryOrder.OutBizCode        = itemHeader.INTERNAL_SHIPMENT_NUM.ToString();
                                deliveryOrder.TotalOrderLines   = (long)itemHeader.TOTAL_LINES;
                                deliveryOrder.Status            = "DELIVERED";

                                req.DeliveryOrder = deliveryOrder;

                                List <StockoutConfirmRequest.PackageDomain>   packageList   = new List <StockoutConfirmRequest.PackageDomain>();
                                List <StockoutConfirmRequest.OrderLineDomain> orderLineList = new List <StockoutConfirmRequest.OrderLineDomain>();

                                foreach (var container in itemHeader.SHIPPING_CONTAINER.Where(t => t.PARENT == 0))
                                {
                                    var childContainer = itemHeader.SHIPPING_CONTAINER.Where(c => c.PARENT == container.INTERNAL_CONTAINER_NUM);
                                    List <StockoutConfirmRequest.ItemDomain> itemList = new List <StockoutConfirmRequest.ItemDomain>();
                                    StockoutConfirmRequest.PackageDomain     package  = new StockoutConfirmRequest.PackageDomain();

                                    foreach (var child in childContainer)
                                    {
                                        StockoutConfirmRequest.ItemDomain itemDomain = new StockoutConfirmRequest.ItemDomain();
                                        itemDomain.ItemCode = child.ITEM;
                                        itemDomain.Quantity = (int)child.QUANTITY;
                                        itemList.Add(itemDomain);
                                    }

                                    if (string.IsNullOrEmpty(deliveryOrder.ExpressCode) || string.IsNullOrEmpty(deliveryOrder.LogisticsCode))
                                    {
                                        deliveryOrder.ExpressCode   = container.TRACKING_NUMBER;
                                        deliveryOrder.LogisticsCode = itemHeader.CARRIER;
                                    }
                                    package.ExpressCode   = container.TRACKING_NUMBER;
                                    package.LogisticsCode = itemHeader.CARRIER;
                                    package.Items         = itemList;
                                    packageList.Add(package);
                                }

                                //---------------package add test data

                                //if (!packageList.Any())
                                //{

                                //    for (int i = 0; i < 1; i++)
                                //    {
                                //        List<StockoutConfirmRequest.ItemDomain> itemList = new List<StockoutConfirmRequest.ItemDomain>();
                                //        StockoutConfirmRequest.PackageDomain package = new StockoutConfirmRequest.PackageDomain();
                                //        StockoutConfirmRequest.ItemDomain itemDomain = new StockoutConfirmRequest.ItemDomain();
                                //        itemDomain.ItemCode = "1000000000203";
                                //        itemDomain.Quantity = 30;
                                //        itemList.Add(itemDomain);
                                //        package.ExpressCode = "012345678905" + i;
                                //        package.LogisticsCode = "SF";
                                //        package.Items = itemList;
                                //        packageList.Add(package);
                                //    }
                                //}
                                //---------------package add test data


                                foreach (var itemDetail in itemHeader.SHIPMENT_DETAIL)
                                {
                                    StockoutConfirmRequest.OrderLineDomain orderLine = new StockoutConfirmRequest.OrderLineDomain();

                                    orderLine.PlanQty       = (int)itemDetail.REQUEST_QTY;
                                    orderLine.ItemCode      = itemDetail.ITEM;
                                    orderLine.ActualQty     = (int)itemDetail.REQUEST_QTY;
                                    orderLine.OutBizCode    = itemDetail.INTERNAL_SHIPMENT_LINE_NUM.ToString();
                                    orderLine.InventoryType = itemDetail.INVENTORY_STS == "合格" ? "ZP" : "CC";
                                    orderLineList.Add(orderLine);
                                }

                                req.Packages   = packageList;
                                req.OrderLines = orderLineList;


                                var rsp = client.Execute(req);

                                QiMen_PushLog log = new QiMen_PushLog();
                                log.InternalOrderID = itemHeader.INTERNAL_SHIPMENT_NUM;
                                log.OrderType       = INTERFACE;
                                log.CustomerId      = cId;
                                log.Flag            = rsp.Flag;
                                log.Message         = rsp.Message;
                                log.CreateTime      = DateTime.Now;
                                dbSet1.Add(log);

                                if (rsp.Flag == "success")
                                {
                                    itemHeader.SHIPMENT_CATEGORY6 = QimenPushStatus.Success.ToString();
                                    _logger.Info("出库单:" + itemHeader.SHIPMENT_ID + "确认成功----" + DateTime.Now);
                                }
                                else
                                {
                                    if (string.IsNullOrEmpty(itemHeader.SHIPMENT_CATEGORY6))
                                    {
                                        itemHeader.SHIPMENT_CATEGORY6 = "1";
                                    }
                                    else
                                    {
                                        int parseResult;
                                        if (int.TryParse(itemHeader.SHIPMENT_CATEGORY6, out parseResult))
                                        {
                                            itemHeader.SHIPMENT_CATEGORY6 = (parseResult + 1).ToString();
                                        }
                                    }
                                    //if (rsp.Message.Length > 50)
                                    //{
                                    //    pushFlag = false;
                                    //}
                                    _logger.Info("出库单:" + itemHeader.SHIPMENT_ID + "确认失败:-" + rsp.Message + DateTime.Now);
                                }
                            }
                            //  if (confirmlList.Count > 0 && pushFlag) {
                            //if (confirmlList.Count > 0 && pushFlag)
                            //{
                            //    qmt.ActualShipTime = (DateTime)confirmlList.First().ACTUAL_SHIP_DATE_TIME;
                            //}
                            dbContext.SaveChanges();
                            dbContext1.SaveChanges();
                        }
                }
                _logger.Info("StockoutConfirmJob 执行完成... " + DateTime.Now + "");
            }
            catch (Exception ex)
            {
                _logger.Error("StockoutConfirmJob 异常..." + DateTime.Now + " " + ex.Message);
            }
        }
コード例 #2
0
        public void Execute(IJobExecutionContext context)
        {
            string url       = ConfigurationManager.AppSettings["URL"].ToString();
            string appkey    = ConfigurationManager.AppSettings["APPKEY"].ToString(); //"1023883919"; 23883919
            string secret    = ConfigurationManager.AppSettings["SECRET"].ToString(); //"sandboxff0b11ecc626508c171a5b2a2";
            string customeId = ConfigurationManager.AppSettings["CUSTOMEID"].ToString();
            string v         = ConfigurationManager.AppSettings["v"].ToString();

            string[] customerArr = customeId.Split(',');

            try
            {
                _logger.Info("ReturnorderConfirm 开始执行... " + DateTime.Now + "");
                foreach (var cId in customerArr)
                {
                    using (SCVDBContainer dbContext0 = new SCVDBContainer())
                        using (DBContainer dbContext1 = new DBContainer())
                        {
                            DbSet <RECEIPT_HEADER> header = dbContext0.Set <RECEIPT_HEADER>();
                            DbSet <RECEIPT_DETAIL> detail = dbContext0.Set <RECEIPT_DETAIL>();

                            //DbSet<QiMen_PushTimeStatus> dbSet0 = dbContext1.Set<QiMen_PushTimeStatus>();
                            DbSet <QiMen_PushLog> dbSet1 = dbContext1.Set <QiMen_PushLog>();

                            IQimenClient client           = new DefaultQimenClient(url, appkey, secret);
                            ReturnorderConfirmRequest req = new ReturnorderConfirmRequest();


                            //DateTime lastTime;
                            //QiMen_PushTimeStatus qmt = dbSet0.Where(q => q.CustomerId == cId && q.OrderType == RECEIPT && q.Interface == INTERFACE).FirstOrDefault();
                            //if (qmt == null)
                            //{
                            //    qmt = new QiMen_PushTimeStatus() { CustomerId = cId, ActualArriveTime = DateTime.Now, OrderType = RECEIPT, Interface = INTERFACE };
                            //    dbSet0.Add(qmt);
                            //    lastTime = DateTime.Now.AddMinutes(-1);
                            //}
                            //else
                            //{
                            //    lastTime = ((DateTime)qmt.ActualArriveTime).AddMinutes(-1);
                            //}

                            //var confirmlList = header.Where(h => h.COMPANY == cId && h.TRAILING_STS == 900 && (h.RECEIPT_TYPE).Equals("THRK",StringComparison.OrdinalIgnoreCase) && h.CLOSE_DATE >= lastTime).Include(r => r.RECEIPT_DETAIL).OrderByDescending(h => h.CLOSE_DATE).ToList();
                            var confirmlList = header.Where(h => h.COMPANY == cId &&
                                                            h.CREATE_USER == "ReturnorderCreate" &&
                                                            (h.USER_DEF8 == null || h.USER_DEF8 == QimenPushStatus.Failure.ToString() ||
                                                             h.USER_DEF8 == "1" || h.USER_DEF8 == "2" || h.USER_DEF8 == "3" || h.USER_DEF8 == "4" || h.USER_DEF8 == "5") &&
                                                            (h.TRAILING_STS == 800 || h.TRAILING_STS == 850 || h.TRAILING_STS == 900) &&
                                                            h.RECEIPT_TYPE.Equals("THRK", StringComparison.OrdinalIgnoreCase)
                                                            ).Include(s => s.RECEIPT_DETAIL).ToList();

                            if (cId == "XGQQG")
                            {
                                confirmlList.Clear();
                            }

                            //if (cId == "CQHGE")
                            //{
                            //    confirmlList = confirmlList.Where(l => l.CREATE_USER == "ReturnorderCreate").ToList();
                            //}

                            if (cId == "CH")
                            {
                                req.CustomerId = "CH1";
                            }
                            else
                            {
                                req.CustomerId = cId;
                            }
                            req.Version   = v;
                            req.Timestamp = DateTime.Now;
                            //bool pushFlag = true;

                            foreach (var itemHeader in confirmlList)
                            {
                                ReturnorderConfirmRequest.ReturnOrderDomain returnOrder = new ReturnorderConfirmRequest.ReturnOrderDomain();
                                returnOrder.ReturnOrderCode = itemHeader.RECEIPT_ID; //"R1234";//item.ERP_ORDER_ID;
                                returnOrder.WarehouseCode   = itemHeader.WAREHOUSE;
                                returnOrder.LogisticsCode   = "";                    //"SF";//item.CARRER;
                                returnOrder.OutBizCode      = itemHeader.INTERNAL_RECEIPT_NUM.ToString();
                                returnOrder.OrderType       = itemHeader.RECEIPT_TYPE;

                                ReturnorderConfirmRequest.SenderInfoDomain senderInfo = new ReturnorderConfirmRequest.SenderInfoDomain();
                                senderInfo.Name          = itemHeader.SHIP_FROM_NAME;                                                                             //"老王";//
                                senderInfo.Mobile        = itemHeader.SHIP_FROM_PHONE_NUM;                                                                        //"13214567869";//
                                senderInfo.Province      = itemHeader.SHIP_FROM_COUNTRY;                                                                          //"浙江省";//
                                senderInfo.City          = itemHeader.SHIP_FROM_CITY;                                                                             //"杭州"; //
                                senderInfo.DetailAddress = itemHeader.SHIP_FROM_ADDRESS1 != null ? itemHeader.SHIP_FROM_ADDRESS1 : itemHeader.SHIP_FROM_ADDRESS2; //"杭州市余杭区989号";//
                                returnOrder.SenderInfo   = senderInfo;
                                req.ReturnOrder          = returnOrder;

                                List <ReturnorderConfirmRequest.OrderLineDomain> orderLineList = new List <ReturnorderConfirmRequest.OrderLineDomain>();

                                foreach (var itemDetail in itemHeader.RECEIPT_DETAIL)
                                {
                                    ReturnorderConfirmRequest.OrderLineDomain orderLine = new ReturnorderConfirmRequest.OrderLineDomain();
                                    orderLine.ItemId     = itemDetail.INTERNAL_RECEIPT_LINE_NUM.ToString();
                                    orderLine.ItemName   = itemDetail.ITEM_DESC;
                                    orderLine.OwnerCode  = itemDetail.COMPANY;
                                    orderLine.ItemCode   = itemDetail.ITEM;
                                    orderLine.PlanQty    = (long)itemDetail.TOTAL_QTY;
                                    orderLine.ActualQty  = (itemDetail.TOTAL_QTY - itemDetail.OPEN_QTY).ToString();
                                    orderLine.OutBizCode = itemDetail.INTERNAL_RECEIPT_LINE_NUM.ToString();

                                    orderLineList.Add(orderLine);
                                }
                                req.OrderLines = orderLineList;

                                var rsp = client.Execute(req);

                                QiMen_PushLog log = new QiMen_PushLog();
                                log.InternalOrderID = itemHeader.INTERNAL_RECEIPT_NUM;
                                log.OrderType       = INTERFACE;
                                log.CustomerId      = cId;
                                log.Flag            = rsp.Flag;
                                log.Message         = rsp.Message;
                                log.CreateTime      = DateTime.Now;
                                dbSet1.Add(log);

                                if (rsp.Flag == "success")
                                {
                                    itemHeader.USER_DEF8 = QimenPushStatus.Success.ToString();
                                    _logger.Info("入库单:" + itemHeader.RECEIPT_ID + "确认成功----" + DateTime.Now);
                                }
                                else
                                {
                                    if (string.IsNullOrEmpty(itemHeader.USER_DEF8))
                                    {
                                        itemHeader.USER_DEF8 = "1";
                                    }
                                    else
                                    {
                                        int parseResult;
                                        if (int.TryParse(itemHeader.USER_DEF8, out parseResult))
                                        {
                                            itemHeader.USER_DEF8 = (parseResult + 1).ToString();
                                        }
                                    }
                                    //if (rsp.Message.Length > 50)
                                    //{
                                    //    pushFlag = false;
                                    //}
                                    _logger.Info("入库单:" + itemHeader.RECEIPT_ID + "确认失败:-" + rsp.Message + DateTime.Now);
                                }
                            }
                            //if (confirmlList.Count > 0 && pushFlag)
                            //{
                            //    qmt.ActualArriveTime = (DateTime)confirmlList.First().CLOSE_DATE;
                            //}
                            dbContext0.SaveChanges();
                            dbContext1.SaveChanges();
                        }
                }

                _logger.Info("ReturnorderConfirm 执行完成... " + DateTime.Now + "");
            }
            catch (Exception ex)
            {
                _logger.Error("ReturnorderConfirm 异常..." + DateTime.Now + " " + ex.Message);
            }
        }
コード例 #3
0
        public void Execute(IJobExecutionContext context)
        {
            string url       = ConfigurationManager.AppSettings["URL"].ToString();
            string appkey    = ConfigurationManager.AppSettings["APPKEY"].ToString(); //"1023883919"; 23883919
            string secret    = ConfigurationManager.AppSettings["SECRET"].ToString(); //"sandboxff0b11ecc626508c171a5b2a2";
            string customeId = ConfigurationManager.AppSettings["CUSTOMEID"].ToString();
            string v         = ConfigurationManager.AppSettings["v"].ToString();

            string[] customerArr = customeId.Split(',');


            try
            {
                _logger.Info("DeliveryorderConfirmJob 开始执行... " + DateTime.Now + "");
                //_logger.Info(1,"Reicept","123", "Success","开始执行");
                //for (int i = 0; i < 5; i++)
                //{
                //    _logger.Info("SimpleQuartzJob start... " + i + " " + DateTime.Now + "");
                //    Console.WriteLine("SimpleQuartzJob running..." + i);
                //}
                foreach (var cId in customerArr)
                {
                    using (SCVDBContainer dbContext = new SCVDBContainer())
                        using (DBContainer dbContext1 = new DBContainer())
                        {
                            DbSet <SHIPMENT_HEADER> header = dbContext.Set <SHIPMENT_HEADER>();
                            DbSet <SHIPMENT_DETAIL> detail = dbContext.Set <SHIPMENT_DETAIL>();
                            //DbSet<SHIPMENT_HEADER_TEMP> headerTemp = dbContext.Set<SHIPMENT_HEADER_TEMP>();
                            //DbSet<QiMen_PushTimeStatus> dbSet0 = dbContext1.Set<QiMen_PushTimeStatus>();
                            DbSet <QiMen_PushLog> dbSet1 = dbContext1.Set <QiMen_PushLog>();
                            //Spm_LastTime sl = dbSet0.Find("1");
                            //DateTime lastTime = ((DateTime)sl.ActualShipDateTime).AddMinutes(-1);

                            IQimenClient client             = new DefaultQimenClient(url, appkey, secret);
                            DeliveryorderConfirmRequest req = new DeliveryorderConfirmRequest();


                            //DateTime lastTime;
                            //QiMen_PushTimeStatus qmt = dbSet0.Where(q => q.CustomerId == cId && q.OrderType == SHIPMENT && q.Interface == INTERFACE).FirstOrDefault();
                            //if (qmt == null)
                            //{
                            //    qmt = new QiMen_PushTimeStatus() { CustomerId = cId, ActualShipTime = DateTime.Now, OrderType = SHIPMENT, Interface = INTERFACE };
                            //    dbSet0.Add(qmt);
                            //    lastTime = DateTime.Now.AddMinutes(-1);
                            //}
                            //else
                            //{
                            //    lastTime = ((DateTime)qmt.ActualShipTime).AddMinutes(-1);
                            //}
                            //DateTime lastTime = dbSet0.Where()   //&& !(h.SHIPMENT_TYPE.Equals("LKCK", StringComparison.OrdinalIgnoreCase))
                            //var confirmlList = header.Where(h => h.COMPANY == cId && h.TRAILING_STS == 900 && h.ACTUAL_SHIP_DATE_TIME >= lastTime).OrderByDescending(h => h.ACTUAL_SHIP_DATE_TIME).Include(s => s.SHIPMENT_DETAIL).Include(s => s.SHIPPING_CONTAINER).AsNoTracking().ToList();
                            var confirmlList = header.Where(h => h.COMPANY == cId &&
                                                            h.CREATE_USER == "DeliveryorderCreate" &&
                                                            (h.SHIPMENT_CATEGORY6 == null || h.SHIPMENT_CATEGORY6 == QimenPushStatus.Failure.ToString() ||
                                                             h.SHIPMENT_CATEGORY6 == "1" || h.SHIPMENT_CATEGORY6 == "2" || h.SHIPMENT_CATEGORY6 == "3" || h.SHIPMENT_CATEGORY6 == "4" || h.SHIPMENT_CATEGORY6 == "5") &&
                                                            (h.TRAILING_STS == 800 || h.TRAILING_STS == 850 || h.TRAILING_STS == 900) &&
                                                            (h.PROCESS_TYPE == "NORMAL")
                                                            ).Include(s => s.SHIPMENT_DETAIL).Include(s => s.SHIPPING_CONTAINER).ToList();

                            if (cId == "XGQQG")
                            {
                                confirmlList.Clear();
                            }


                            //if (cId == "CQHGE")
                            //{
                            //    confirmlList = confirmlList.Where(l => l.CREATE_USER == "DeliveryorderCreate").ToList();
                            //}

                            if (cId == "CH")
                            {
                                req.CustomerId = "CH1";
                            }
                            else
                            {
                                req.CustomerId = cId;
                            }
                            req.Version   = v;
                            req.Timestamp = DateTime.Now;
                            //bool pushFlag = true;

                            foreach (var itemHeader in confirmlList)
                            {
                                DeliveryorderConfirmRequest.DeliveryOrderDomain deliveryOrder = new DeliveryorderConfirmRequest.DeliveryOrderDomain();
                                deliveryOrder.DeliveryOrderCode = itemHeader.SHIPMENT_ID;
                                deliveryOrder.WarehouseCode     = itemHeader.WAREHOUSE;
                                deliveryOrder.OrderType         = itemHeader.SHIPMENT_TYPE; //"JYCK"
                                deliveryOrder.ConfirmType       = 0L;                       //仅仅确认最终状态的订单
                                deliveryOrder.OutBizCode        = itemHeader.INTERNAL_SHIPMENT_NUM.ToString();
                                deliveryOrder.DeliveryOrderId   = itemHeader.INTERNAL_SHIPMENT_NUM.ToString();
                                req.DeliveryOrder = deliveryOrder;


                                List <DeliveryorderConfirmRequest.PackageDomain>   packageList   = new List <DeliveryorderConfirmRequest.PackageDomain>();
                                List <DeliveryorderConfirmRequest.OrderLineDomain> orderLineList = new List <DeliveryorderConfirmRequest.OrderLineDomain>();

                                foreach (var container in itemHeader.SHIPPING_CONTAINER.Where(t => t.PARENT == 0))
                                {
                                    var childContainer = itemHeader.SHIPPING_CONTAINER.Where(c => c.PARENT == container.INTERNAL_CONTAINER_NUM);
                                    List <DeliveryorderConfirmRequest.ItemDomain> itemList = new List <DeliveryorderConfirmRequest.ItemDomain>();
                                    DeliveryorderConfirmRequest.PackageDomain     package  = new DeliveryorderConfirmRequest.PackageDomain();

                                    foreach (var child in childContainer)
                                    {
                                        DeliveryorderConfirmRequest.ItemDomain itemDomain = new DeliveryorderConfirmRequest.ItemDomain();
                                        itemDomain.ItemCode = child.ITEM;
                                        itemDomain.Quantity = (int)child.QUANTITY;
                                        itemList.Add(itemDomain);
                                    }

                                    package.ExpressCode   = container.TRACKING_NUMBER;
                                    package.LogisticsCode = itemHeader.CARRIER;
                                    package.Items         = itemList;
                                    packageList.Add(package);
                                }
                                //---------------package add test data
                                //if (!packageList.Any())
                                //{

                                //    for (int i = 0; i < 1; i++)
                                //    {
                                //        List<DeliveryorderConfirmRequest.ItemDomain> itemList = new List<DeliveryorderConfirmRequest.ItemDomain>();
                                //        DeliveryorderConfirmRequest.PackageDomain package = new DeliveryorderConfirmRequest.PackageDomain();
                                //        DeliveryorderConfirmRequest.ItemDomain itemDomain = new DeliveryorderConfirmRequest.ItemDomain();
                                //        itemDomain.ItemCode = "1000000000203";
                                //        itemDomain.Quantity = 30;
                                //        itemList.Add(itemDomain);
                                //        package.ExpressCode = "000123456780" + i;
                                //        package.LogisticsCode = "FAST";
                                //        package.Items = itemList;
                                //        packageList.Add(package);
                                //    }
                                //}
                                //---------------package add test data

                                foreach (var itemDetail in itemHeader.SHIPMENT_DETAIL)
                                {
                                    DeliveryorderConfirmRequest.OrderLineDomain orderLine = new DeliveryorderConfirmRequest.OrderLineDomain();

                                    orderLine.PlanQty    = itemDetail.REQUEST_QTY.ToString();
                                    orderLine.ItemCode   = itemDetail.ITEM;
                                    orderLine.ActualQty  = itemDetail.REQUEST_QTY.ToString();
                                    orderLine.OutBizCode = itemDetail.INTERNAL_SHIPMENT_LINE_NUM.ToString();
                                    orderLineList.Add(orderLine);
                                }
                                req.Packages   = packageList;
                                req.OrderLines = orderLineList;

                                var rsp = client.Execute(req);

                                QiMen_PushLog log = new QiMen_PushLog();
                                log.InternalOrderID = itemHeader.INTERNAL_SHIPMENT_NUM;
                                log.OrderType       = INTERFACE;
                                log.CustomerId      = cId;
                                log.Flag            = rsp.Flag;
                                log.Message         = rsp.Message;
                                log.CreateTime      = DateTime.Now;
                                dbSet1.Add(log);

                                if (rsp.Flag == "success")
                                {
                                    itemHeader.SHIPMENT_CATEGORY6 = QimenPushStatus.Success.ToString();
                                    _logger.Info("发货单:" + itemHeader.SHIPMENT_ID + "确认成功----" + DateTime.Now);
                                }
                                else
                                {
                                    if (string.IsNullOrEmpty(itemHeader.SHIPMENT_CATEGORY6))
                                    {
                                        itemHeader.SHIPMENT_CATEGORY6 = "1";
                                    }
                                    else
                                    {
                                        int parseResult;
                                        if (int.TryParse(itemHeader.SHIPMENT_CATEGORY6, out parseResult))
                                        {
                                            itemHeader.SHIPMENT_CATEGORY6 = (parseResult + 1).ToString();
                                        }
                                    }
                                    //if (rsp.Message.Length > 50)
                                    //{
                                    //    pushFlag = false;
                                    //}
                                    _logger.Info("发货单:" + itemHeader.SHIPMENT_ID + "确认失败:-" + rsp.Message + DateTime.Now);
                                }
                            }

                            //if (confirmlList.Count > 0 && pushFlag)
                            //{
                            //    qmt.ActualShipTime = (DateTime)confirmlList.First().ACTUAL_SHIP_DATE_TIME;
                            //}
                            dbContext.SaveChanges();
                            dbContext1.SaveChanges();
                        }
                }
                _logger.Info("DeliveryorderConfirmJob 执行完成... " + DateTime.Now + "");
            }
            catch (Exception ex)
            {
                _logger.Error("DeliveryorderConfirmJob 异常..." + DateTime.Now + " " + ex.Message);
            }
        }