/// <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); } }
/// <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); } }