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.

181 lines
6.6 KiB
C#

9 months ago
using FluentScheduler;
using POSV.Entity;
using POSV.HandOver;
using POSV.HttpApi;
using POSV.HttpResponse;
using POSV.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace POSV.Job
{
class StoreCostRevenueUpLoadJob : BaseApi, IJob
{
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
private bool isRunning = false;
public void Execute()
{
//上传数据
UploadStoreCostRevenueObject upload = null;
try
{
if (!Global.Instance.IsLogin)
{
logger.Debug("未登录忽略本次上传");
return;
}
if (!Global.Instance.Online)
{
logger.Debug("脱机状态,忽略本次上传");
return;
}
if (!Global.Instance.AllowUpload)
{
logger.Info("正在点单,暂不上传");
return;
}
if (isRunning)
{
logger.Info("上传中,请稍候...");
return;
}
//交班单信息
StoreCostRevenue ticket = null;
if (!Global.isHaveUpLoadFyy)
{
logger.Info("没有需要上传的非营业数据,isHaveUpLoadFyy=false");
//没有上传的数据之间返回
return;
}
using (var db = Global.Instance.OpenDataBase)
{
upload = db.Query<UploadStoreCostRevenueObject>().Where(x => x.SyncStatus == 0).OrderBy(x => x.UploadErrors).Limit(1).FirstOrDefault();
if (upload != null)
{
ticket = upload.StoreCostRevenue;
}
else
{
logger.Info("没有需要上传的非营业数据,isHaveUpLoadFyy=false");
//没有要上传的数据
Global.isHaveUpLoadFyy = false;
return;
}
}
if (ticket == null)
{
return;
}
var uploadObject = new Dictionary<string, object>();
//前台系统ID
uploadObject["id"] = ticket.Id;
uploadObject["storeId"] = ticket.StoreId;// 门店ID
uploadObject["storeNo"] = ticket.StoreNo;// 门店编号
uploadObject["storeName"] = ticket.StoreName;// 门店名称
uploadObject["workId"] = ticket.WorkId;// 员工ID
uploadObject["workNo"] = ticket.WorkNo;// 员工编号
uploadObject["workName"] = ticket.WorkName;// 员工名称
uploadObject["shiftNo"] = ticket.ShiftNo;// 班次
uploadObject["shiftName"] = ticket.ShiftName;// 班次名称
uploadObject["posNo"] = ticket.PosNo;// 交单POS
uploadObject["name"] = ticket.Name;// 收支项目
uploadObject["money"] = ticket.Money;//金额
uploadObject["type"] = ticket.Type;// 类型
uploadObject["description"] = ticket.Description;// 名称
uploadObject["memo"] = ticket.Memo;// 备注信息
uploadObject["inputDate"] = ticket.InputDate;// 登记时间
uploadObject["deviceName"] = ticket.DeviceName;// 设备名称
uploadObject["deviceMac"] = ticket.DeviceMac;// 设备MAC
uploadObject["deviceIp"] = ticket.DeviceIp;// 设备IP
string jsonString = JsonUtils.Serialize(uploadObject);
this.Uploading(upload ,jsonString);
}
catch (Exception ex)
{
logger.Error(ex, "非营业数据上传任务异常");
}
finally
{
isRunning = false;
}
}
private void Uploading(UploadStoreCostRevenueObject upload, string jsonString)
{
try
{
logger.Debug("开始上传数据......");
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "upload.business.revenue");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("jsonString", jsonString);
var ignore = new List<string>();
ignore.Add("jsonString");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<EntityResponse<UploadStoreCostRevenueResult>>(response);
if (result.Status == 1)
{
if (upload != null)
{
upload.SyncStatus = 1;
upload.ModifyDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
upload.ModifyUser = Constant.DEFAULT_SYNC_USER;
using (var db = Global.Instance.OpenDataBase)
{
using (var trans = db.GetTransaction())
{
db.Update(upload);
trans.Complete();
}
}
}
logger.Info(result.Message);
}
else
{
string message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Error(string.Format("上传出错:{0}", message));
}
}
else
{
string errorMessage = PaserErrors(response);
logger.Error(string.Format("报文解析出错:{0}", errorMessage));
}
}
catch (Exception ex)
{
logger.Error(ex, "非营业数据上传异常");
}
}
}
}