using FluentScheduler; using POSV.HttpApi; using POSV.ServiceCenter; using POSV.ShoppingCart; using System; using System.Linq; namespace POSV.Job { public class ServiceCenterUploadJob : BaseApi, IJob { private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); private bool isRunning = false; public void Execute() { try { var centerStatus = Global.Instance.EnableServiceCenter; if (!centerStatus.Item1) { //服务中心未启用、配置不正确 logger.Debug(centerStatus.Item2); return; } if (!Global.Instance.IsLogin) { logger.Debug("未登录忽略本次上传"); return; } if (isRunning) { logger.Debug("执行中,请稍候..."); return; } isRunning = true; if (!Global.isHaveCenterTicket) { logger.Info("没有需要同步到服务中心的订单*,isHaveCenterTicket=false"); //没有要上传的数据 Global.isHaveCenterTicket = true; //没有上传的数据之间返回 return; } using (var db = Global.Instance.OpenDataBase) { string sql = @"select distinct p.* from pos_order p inner join pos_order_item i on p.tradeNo = i.tradeNo where p.orderStatus = 4 and i.chuxianFlag = 1 and i.chuxianQty < i.quantity and p.finishDate <= '{0}' and p.finishDate >= '{1}' order by p.finishDate limit 1;"; //只上传20分钟前的数据,避免定时任务及时上传最新订单造成重复上传 var waitUpload = db.Query(string.Format(sql, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:ss"))); if (waitUpload == null || waitUpload.ToList().Count == 0) { logger.Debug("没有需要同步到服务中心的订单**,isHaveCenterTicket=false"); //没有要上传的数据 Global.isHaveCenterTicket = false; return; } foreach (var order in waitUpload) { logger.Info($"订单[{order.TradeNo}]同步到服务中心成功,isHaveCenterTicket=true"); UploadSCNewOrder.UploadNewOrder2SC4KDS(order.TradeNo); } } } catch (Exception ex) { logger.Error(ex, "销售订单上传服务中心异常"); } finally { isRunning = false; } } } }