|
|
|
|
using FluentScheduler;
|
|
|
|
|
using POSV.ShoppingCart;
|
|
|
|
|
using POSV.Utils;
|
|
|
|
|
using POSV.WebService;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
namespace POSV.Job
|
|
|
|
|
{
|
|
|
|
|
public class ShopOrderERP : IJob
|
|
|
|
|
{
|
|
|
|
|
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
|
|
|
|
private static bool _lock = true;
|
|
|
|
|
public void Execute()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (_lock)
|
|
|
|
|
{
|
|
|
|
|
_lock = false;
|
|
|
|
|
|
|
|
|
|
var _is = Global.Instance.GlobalConfigStringValue(ConfigConstant.ERP_API_ENABLED, "false");
|
|
|
|
|
var _data = Global.Instance.GlobalConfigStringValue(ConfigConstant.ERP_API_CONFIG, "");
|
|
|
|
|
|
|
|
|
|
if (_is.Equals("false"))
|
|
|
|
|
{
|
|
|
|
|
_lock = true;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Newtonsoft.Json.Linq.JObject jObject = Newtonsoft.Json.Linq.JObject.Parse(_data);
|
|
|
|
|
|
|
|
|
|
string sql = string.Format("where createDate > '{0}' and IsUploadERP = '0' and orderStatus in ( 4,2)", DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
|
|
|
|
|
|
List<OrderObject> orderObject = new List<OrderObject>();
|
|
|
|
|
|
|
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
|
|
{
|
|
|
|
|
orderObject = db.Query<OrderObject>(sql).ToList();
|
|
|
|
|
|
|
|
|
|
logger.Info("ERP自动上传:" + "共有" + orderObject.Count + "数据");
|
|
|
|
|
if (orderObject.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
var ids = string.Join("','", orderObject.ConvertAll(x => x.Id).ToArray());
|
|
|
|
|
|
|
|
|
|
var condition = " where orderId in ('" + ids + "');";
|
|
|
|
|
logger.Debug(condition);
|
|
|
|
|
|
|
|
|
|
//单据明细
|
|
|
|
|
var _item = db.Query<OrderItem>(condition).ToList();
|
|
|
|
|
|
|
|
|
|
//支付明细
|
|
|
|
|
var _pays = db.Query<PayItem>(condition).ToList();
|
|
|
|
|
|
|
|
|
|
List<StationTradeChange> _stationTrades = new List<StationTradeChange>();
|
|
|
|
|
foreach (var item in orderObject)
|
|
|
|
|
{
|
|
|
|
|
item.Items = _item.Where(f => f.OrderId == item.Id).ToList();
|
|
|
|
|
StationTradeChange _stationTrade = new StationTradeChange();
|
|
|
|
|
_stationTrade.ShopNo = jObject["SHOPNO"].ToString();
|
|
|
|
|
_stationTrade.ShopName = jObject["SHOPNAME"].ToString();
|
|
|
|
|
_stationTrade.StationId = jObject["STATIONID"].ToString();
|
|
|
|
|
_stationTrade.StationName = jObject["STATIONNAME"].ToString();
|
|
|
|
|
_stationTrade.Branch = jObject["BRANCH"].ToString();
|
|
|
|
|
_stationTrade.BillNo = item.TradeNo;
|
|
|
|
|
_stationTrade.BillTime = item.CreateDate;
|
|
|
|
|
_stationTrade.BillAllPrices = item.PaidAmount.ToString();
|
|
|
|
|
_stationTrade.SourceType = "POS机";
|
|
|
|
|
_stationTrade.SourceNo = Global.Instance.Authc.PosNo;
|
|
|
|
|
_stationTrade.TransType = item.OrderStatus == OrderStatus.已退单 ? "退货" : "销售";
|
|
|
|
|
var _pay = db.Query<PayItem>("select * from pos_order_pay where orderId = '" + item.Id + "'").ToList();
|
|
|
|
|
if (_pay == null)
|
|
|
|
|
{
|
|
|
|
|
_stationTrade.Payment = "现金";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (_pay.Count > 1)
|
|
|
|
|
{
|
|
|
|
|
_stationTrade.Payment = "非现金";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (_pay[0].No.Equals("01"))
|
|
|
|
|
{
|
|
|
|
|
_stationTrade.Payment = "现金";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_stationTrade.Payment = "非现金";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_stationTrades.Add(_stationTrade);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _dataSS = JsonUtils.Serialize(_stationTrades);
|
|
|
|
|
var _Return = WebServiceUtils.UploadStationTradeChange(jObject["ADDRESS"].ToString(), _stationTrades, jObject["KEY"].ToString()).ToString();
|
|
|
|
|
|
|
|
|
|
if (_Return.Contains("成功"))
|
|
|
|
|
{
|
|
|
|
|
orderObject.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
f.IsUploadERP = 1;
|
|
|
|
|
|
|
|
|
|
SqliteUtils.Execute(string.Format("update pos_order set IsUploadERP = 1 where id = '{0}'", f.Id));
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
else if (_Return.Contains("违反唯一约束条件"))
|
|
|
|
|
{
|
|
|
|
|
orderObject.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
f.IsUploadERP = 1;
|
|
|
|
|
|
|
|
|
|
SqliteUtils.Execute(string.Format("update pos_order set IsUploadERP = 1 where id = '{0}'", f.Id));
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
logger.Info("世界餐饮自动上传:" + _Return);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
_lock = true;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_lock = true;
|
|
|
|
|
logger.Info(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|