コード例 #1
0
ファイル: QimenApiConfirm.cs プロジェクト: windygu/LkApps
        /// <summary>
        /// 退货入库单确认
        /// </summary>
        public bool ReturnorderConfirm()
        {
            log.Info("----------------启用定时任务:退货入库单确认" + DateTime.Now.Hour + "--------------");
            try
            {
                dbContext = new SCVDBContainer();
                DbSet <RECEIPT_HEADER>      dbset0     = dbContext.Set <RECEIPT_HEADER>();
                DbSet <RECEIPT_DETAIL>      dbset1     = dbContext.Set <RECEIPT_DETAIL>();
                DbSet <RECEIPT_HEADER_TEMP> dbset_Temp = dbContext.Set <RECEIPT_HEADER_TEMP>();
                IQimenClient client            = new DefaultQimenClient(url, appkey, secret);
                ReturnorderConfirmRequest  req = new ReturnorderConfirmRequest();
                ReturnorderConfirmResponse rsp = new ReturnorderConfirmResponse();
                //退货单信息
                ReturnorderConfirmRequest.ReturnOrderDomain obj1 = new ReturnorderConfirmRequest.ReturnOrderDomain();
                //发件人信息
                ReturnorderConfirmRequest.SenderInfoDomain send = new ReturnorderConfirmRequest.SenderInfoDomain();
                //订单信息
                ReturnorderConfirmRequest.OrderLineDomain        orderLine     = new ReturnorderConfirmRequest.OrderLineDomain();
                List <ReturnorderConfirmRequest.OrderLineDomain> orderLineList = new List <ReturnorderConfirmRequest.OrderLineDomain>();
                for (int i = 0; i < customerArr.Length; i++)
                {
                    var confirmlList = dbset0
                                       .Where(t =>
                                              t.TRAILING_STS.ToString() == "900" &&
                                              (
                                                  t.RECEIPT_TYPE.Contains("THRK") ||
                                                  t.RECEIPT_TYPE.Contains("HHRK")
                                              ) && t.COMPANY == customeId)
                                       .OrderByDescending(t => t.INTERNAL_RECEIPT_NUM)
                                       .Take(100).AsNoTracking().ToList();
                    var confirmTempList = dbset_Temp
                                          .Where(t =>
                                                 t.TRAILING_STS.ToString() == "900" &&
                                                 (
                                                     t.RECEIPT_TYPE.Contains("THRK") ||
                                                     t.RECEIPT_TYPE.Contains("HHRK")
                                                 ) && t.COMPANY == customeId)
                                          .OrderByDescending(t => t.INTERNAL_RECEIPT_NUM)
                                          .Take(100).AsNoTracking().ToList();

                    List <RECEIPT_HEADER_TEMP> tempList   = new List <RECEIPT_HEADER_TEMP>();
                    List <RECEIPT_DETAIL>      detailList = new List <RECEIPT_DETAIL>();
                    //排除已确认的数据,并且一次性只处理100个订单
                    confirmlList = confirmlList
                                   .Where(a => !confirmTempList.Exists(t => a.INTERNAL_RECEIPT_NUM == t.INTERNAL_RECEIPT_NUM))
                                   .OrderByDescending(t => t.INTERNAL_RECEIPT_NUM).ToList();

                    req.CustomerId = customerArr[i].Trim();
                    req.Version    = v;
                    req.Timestamp  = DateTime.Now;
                    if (confirmlList.Count == 0)
                    {
                        log.Info("客户:" + req.CustomerId + " " + "需确认的退货入库单为空,不需要确认!!!");
                        continue;
                    }

                    foreach (var item in confirmlList)
                    {
                        detailList = dbset1.Where(t => t.INTERNAL_RECEIPT_NUM == item.INTERNAL_RECEIPT_NUM).ToList();

                        obj1.ReturnOrderCode = item.RECEIPT_ID;                                                                     //"R1234";//item.ERP_ORDER_ID;
                        obj1.WarehouseCode   = item.WAREHOUSE;
                        obj1.LogisticsCode   = "SF";                                                                                //"SF";//item.CARRER;
                        obj1.OutBizCode      = Guid.NewGuid().ToString();
                        send.Name            = item.SHIP_FROM_NAME;                                                                 //"老王";//
                        send.Mobile          = item.SHIP_FROM_PHONE_NUM;                                                            //"13214567869";//
                        send.Province        = item.SHIP_FROM_COUNTRY;                                                              //"浙江省";//
                        send.City            = item.SHIP_FROM_CITY;                                                                 //"杭州"; //
                        send.DetailAddress   = item.SHIP_FROM_ADDRESS1 != null ? item.SHIP_FROM_ADDRESS1 : item.SHIP_FROM_ADDRESS2; //"杭州市余杭区989号";//
                        obj1.SenderInfo      = send;

                        foreach (var itemChildren in detailList)
                        {
                            orderLine.OwnerCode = itemChildren.COMPANY;
                            orderLine.ItemCode  = itemChildren.ITEM;
                            orderLine.PlanQty   = (long)itemChildren.OPEN_QTY;//12L;//
                            orderLine.ActualQty = itemChildren.TOTAL_QTY.ToString();
                            orderLineList.Add(orderLine);
                        }
                        req.ReturnOrder = obj1;
                        req.OrderLines  = orderLineList;
                        try
                        {
                            rsp = client.Execute(req);
                            log.Info(" " + "退货入库确认--订单号:" + item.INTERNAL_RECEIPT_NUM + " " + "确认结果:" + rsp.Flag + " " + "消息:" + rsp.Message);
                        }
                        catch (Exception ex)
                        {
                            log.Error("Error", ex);
                            continue;
                        }
                        if (rsp.Flag == "success")
                        {
                            DbSet <RECEIPT_HEADER_TEMP> header = dbContext.Set <RECEIPT_HEADER_TEMP>();

                            RECEIPT_HEADER_TEMP headerTemp = new RECEIPT_HEADER_TEMP()
                            {
                                INTERNAL_RECEIPT_NUM = item.INTERNAL_RECEIPT_NUM,
                                DATE_TIME_STAMP      = DateTime.Now,
                                RECEIPT_ID           = item.RECEIPT_ID,
                                WAREHOUSE            = item.WAREHOUSE,
                                RECEIPT_TYPE         = item.RECEIPT_TYPE,
                                TRAILING_STS         = item.TRAILING_STS,
                                LEADING_STS          = item.LEADING_STS,
                                FLAG    = rsp.Flag,
                                CODE    = rsp.Code,
                                MESSAGE = rsp.Message
                            };
                            header.Add(headerTemp);
                        }
                    }
                    dbContext.SaveChanges();
                }
                return(true);
            }
            catch (Exception ex)
            {
                log.Error("Error", ex);
                return(false);
            }
        }
コード例 #2
0
ファイル: QimenApiConfirm.cs プロジェクト: windygu/LkApps
        /// <summary>
        /// 入库单确认
        /// </summary>
        public bool EntryorderConfirm()
        {
            log.Info("----------------启用定时任务:入库单确认" + DateTime.Now.Hour + "--------------");
            try
            {
                dbContext = new SCVDBContainer();
                DbSet <RECEIPT_HEADER>      dbset0     = dbContext.Set <RECEIPT_HEADER>();
                DbSet <RECEIPT_DETAIL>      dbset1     = dbContext.Set <RECEIPT_DETAIL>();
                DbSet <RECEIPT_HEADER_TEMP> dbset_Temp = dbContext.Set <RECEIPT_HEADER_TEMP>();

                IQimenClient              client = new DefaultQimenClient(url, appkey, secret);
                EntryorderConfirmRequest  req    = new EntryorderConfirmRequest();
                EntryorderConfirmResponse rsp    = new EntryorderConfirmResponse();

                EntryorderConfirmRequest.EntryOrderDomain obj1 = new EntryorderConfirmRequest.EntryOrderDomain();

                EntryorderConfirmRequest.OrderLineDomain        orderLine     = new EntryorderConfirmRequest.OrderLineDomain();
                List <EntryorderConfirmRequest.OrderLineDomain> orderLineList = new List <EntryorderConfirmRequest.OrderLineDomain>();
                for (int i = 0; i < customerArr.Length; i++)
                {
                    var confirmlList = dbset0
                                       .Where(t =>
                                              t.TRAILING_STS.ToString() == "900" &&
                                              (t.RECEIPT_TYPE.Contains("SCRK") ||
                                               t.RECEIPT_TYPE.Contains("LYRK") ||
                                               t.RECEIPT_TYPE.Contains("CCRK") ||
                                               t.RECEIPT_TYPE.Contains("CGRK") ||
                                               t.RECEIPT_TYPE.Contains("DBRK") ||
                                               t.RECEIPT_TYPE.Contains("QTRK") ||
                                               t.RECEIPT_TYPE.Contains("B2BRK") &&
                                               t.COMPANY == customeId)
                                              ).OrderByDescending(t => t.INTERNAL_RECEIPT_NUM)
                                       .Take(100).AsNoTracking().ToList();
                    var confirmTempList = dbset_Temp.Where(t =>
                                                           t.TRAILING_STS.ToString() == "900" &&
                                                           (t.RECEIPT_TYPE.Contains("SCRK") ||
                                                            t.RECEIPT_TYPE.Contains("LYRK") ||
                                                            t.RECEIPT_TYPE.Contains("CCRK") ||
                                                            t.RECEIPT_TYPE.Contains("CGRK") ||
                                                            t.RECEIPT_TYPE.Contains("DBRK") ||
                                                            t.RECEIPT_TYPE.Contains("QTRK") ||
                                                            t.RECEIPT_TYPE.Contains("B2BRK") &&
                                                            t.COMPANY == customeId)
                                                           ).OrderByDescending(t => t.INTERNAL_RECEIPT_NUM)
                                          .Take(100).AsNoTracking().ToList();

                    List <RECEIPT_DETAIL> tempList = new List <RECEIPT_DETAIL>();
                    //过滤已确认的数据
                    confirmlList = confirmlList
                                   .Where(a => !confirmTempList.Exists(t => a.INTERNAL_RECEIPT_NUM == t.INTERNAL_RECEIPT_NUM))
                                   .ToList();

                    req.CustomerId = customerArr[i].Trim();
                    req.Version    = v;
                    req.Timestamp  = DateTime.Now;
                    if (confirmlList.Count == 0)
                    {
                        log.Info("客户:" + req.CustomerId + " " + "需确认的入库单为空,不需要确认!!!");
                        continue;
                    }
                    foreach (var item in confirmlList)
                    {
                        tempList             = dbset1.Where(t => t.INTERNAL_RECEIPT_NUM == item.INTERNAL_RECEIPT_NUM).ToList();
                        obj1.EntryOrderCode  = item.RECEIPT_ID;
                        obj1.OwnerCode       = item.COMPANY;
                        obj1.WarehouseCode   = item.WAREHOUSE;
                        obj1.OutBizCode      = Guid.NewGuid().ToString();
                        obj1.Status          = "FULFILLED";//item.TRAILING_STS.ToString();
                        obj1.ConfirmType     = 0L;
                        obj1.TotalOrderLines = (long)item.TOTAL_LINES;
                        obj1.EntryOrderId    = item.RECEIPT_ID;
                        req.EntryOrder       = obj1;
                        foreach (var itemChildren in tempList)
                        {
                            orderLine.ItemId    = itemChildren.ITEM;
                            orderLine.OwnerCode = itemChildren.COMPANY;
                            orderLine.ItemCode  = itemChildren.ITEM;
                            orderLine.PlanQty   = (long)itemChildren.OPEN_QTY;
                            orderLine.ActualQty = (long)itemChildren.TOTAL_QTY;
                            orderLineList.Add(orderLine);
                        }
                        req.OrderLines = orderLineList;
                        try
                        {
                            rsp = client.Execute(req);
                            log.Info(" " + "入库确认--订单号:" + item.INTERNAL_RECEIPT_NUM + " " + "确认结果:" + rsp.Flag + " " + "消息:" + rsp.Message);
                        }
                        catch (Exception ex)
                        {
                            log.Error("Error", ex);
                            continue;
                        }

                        if (rsp.Flag == "success")
                        {
                            DbSet <RECEIPT_HEADER_TEMP> header = dbContext.Set <RECEIPT_HEADER_TEMP>();

                            RECEIPT_HEADER_TEMP headerTemp = new RECEIPT_HEADER_TEMP()
                            {
                                COMPANY              = item.COMPANY,
                                ACTUAL_ARRIVE_DATE   = DateTime.Now,
                                TRAILING_STS         = item.TRAILING_STS,
                                INTERNAL_RECEIPT_NUM = item.INTERNAL_RECEIPT_NUM,
                                DATE_TIME_STAMP      = DateTime.Now,
                                RECEIPT_ID           = item.RECEIPT_ID,
                                WAREHOUSE            = item.WAREHOUSE,
                                RECEIPT_TYPE         = item.RECEIPT_TYPE,
                                FLAG    = rsp.Flag,
                                CODE    = rsp.Code,
                                MESSAGE = rsp.Message
                            };
                            header.Add(headerTemp);
                        }
                    }
                    dbContext.SaveChanges();
                }
                return(true);
            }
            catch (Exception ex)
            {
                log.Error("Error", ex);
                return(false);
            }
        }