You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
3.1 KiB
C#

9 months ago
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<OrderObject>(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");
9 months ago
UploadSCNewOrder.UploadNewOrder2SC4KDS(order.TradeNo);
}
}
}
catch (Exception ex)
9 months ago
{
logger.Error(ex, "销售订单上传服务中心异常");
}
finally
{
isRunning = false;
}
}
}
}