private void Process() { try { //获取待处理订单 var orders = GetJDNotDeliveredOrders(); //以发薪公司为维度获取京东物流状态 orders.GroupBy(o => o.PaymentCompanyId).ToList().ForEach(payComId => { //某发薪公司下所有京东推送物流消息 var jdStates = _jdService.FetchLogisticsState(payComId.Key.Value); payComId.ToList().ForEach(order => { //NOP订单中所包含的所有京东订单ID var oItemJDOrderIds = order.OrderItems.Select(oItem => oItem.JdOrderId); //京东已妥投的订单 var jdDelivered = jdStates.States.Where(s => s.State == LogisticsStateEnum.妥投 && oItemJDOrderIds.Contains(s.JDOrderId)); //NOP订单中全部子项都已妥投 if (oItemJDOrderIds.Count() == jdDelivered.Count()) { MarkAsDeliveredAndDelJDMsg(order.Id, jdDelivered.Select(p => p.MessageId).ToArray()); } }); }); } catch (Exception e) { _log.Error("自动设置京东已交货状态异常", e); } }
public ActionResult FetchLogisticsState(int paymentCompanyId) { var changes = _jdService.FetchLogisticsState(paymentCompanyId); return(Content(JsonConvert.SerializeObject(changes))); }