234 lines
14 KiB
C#
234 lines
14 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using WCS.BLL.DbModels.Task;
|
||
using WCS.BLL.DbModels;
|
||
using WCS.BLL.HardWare;
|
||
using WCS.DAL.Db.AuthDb;
|
||
using WCS.DAL.Db;
|
||
using WCS.DAL;
|
||
using WCS.Model.ApiModel.InOutRecord;
|
||
using WCS.Model.ApiModel.MXBackgroundThread;
|
||
using WCS.Model;
|
||
using WCS.BLL.Tool;
|
||
using SqlSugar;
|
||
using WCS.BLL.Config;
|
||
using WCS.Model.ApiModel.MKYBackgroundThread;
|
||
using System.Text.RegularExpressions;
|
||
using System.Reflection;
|
||
|
||
namespace WCS.BLL.Manager
|
||
{
|
||
public static class MKYBackgroundThread
|
||
{
|
||
public static void InitBackgroundThread()
|
||
{
|
||
#region 调用WMS接口获取具体的库存列表并展示在液晶标签上
|
||
#endregion
|
||
|
||
#region 定时任务:回传数据至WMS系统
|
||
Task.Run(() =>
|
||
{
|
||
while (true)
|
||
{
|
||
//回传数据的时间间隔
|
||
Thread.Sleep(2000);
|
||
//先判断是否需要获取token
|
||
if (string.IsNullOrEmpty(LocalStatic.WMSToken))
|
||
{
|
||
try
|
||
{
|
||
Logs.Write($"【定时任务:回传数据至WMS系统】token为空 开始获取token", LogsType.Info);
|
||
#region 登录获取token
|
||
var request = new LoginRequest()
|
||
{
|
||
userName = "cmeimZtwcs",
|
||
password = "Cmeim@ztwcs2024!@#"
|
||
};
|
||
var result = ApiHelp.GetDataFromHttpShortTime<LoginResponse>(@"http://10.41.235.10:8989/login", request, "POST", true);
|
||
if (result != null && (result.code == 200))
|
||
{
|
||
//获取到最新的token
|
||
LocalStatic.WMSToken = result.data;
|
||
Logs.Write($"【定时任务:回传数据至WMS系统】调用接口获取token成功!token为{result.data}", LogsType.Info);
|
||
}
|
||
else if (result != null && (result.code == 500) && result.message.Contains("未查询到条码信息【"))
|
||
{
|
||
Logs.Write($"【定时任务:回传数据至WMS系统】调用接口获取token失败", LogsType.Info);
|
||
}
|
||
#endregion
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Logs.Write($"【定时任务:回传数据至WMS系统】获取token异常" + ex.Message, LogsType.Info);
|
||
Logs.Write($"【定时任务:回传数据至WMS系统】获取token异常" + ex.StackTrace, LogsType.Info);
|
||
}
|
||
}
|
||
|
||
try
|
||
{
|
||
//获取已完成未提交的任务
|
||
var finsishedTaks = DbHelp.db.Queryable<FinishedTask>()
|
||
.Where(t => t.FinishTime > DateTime.Now.AddDays(-1))//只上传1天内的 后续调整
|
||
.OrderBy(t => t.FinishTime)
|
||
.ToList();
|
||
//循环进行上传
|
||
for (int i = 0; i < finsishedTaks.Count; i++)
|
||
{
|
||
var finishedTask = finsishedTaks[i];
|
||
try
|
||
{
|
||
//上传单据
|
||
#region 上传单据
|
||
var request = new SysOrderRequest()
|
||
{
|
||
guid = finishedTask.Guid.ToString(),
|
||
itemNo = finishedTask.ItemNo,
|
||
matCode = finishedTask.MatCode,
|
||
matBatch = finishedTask.MatBatch,
|
||
matSN = finishedTask.MatSN,
|
||
orderNumber = finishedTask.OrderNumber,
|
||
orderType = (int)finishedTask.TaskMode,
|
||
storeCode = finishedTask.ModuleCode,
|
||
qty = finishedTask.FinishQty
|
||
};
|
||
var result = ApiHelp.GetDataFromHttp<SysOrderResponse>(@"http://10.41.235.10:8989/ztwcs/stockBillBack", request, "POST", true);
|
||
if (result != null && (result.code == 200))
|
||
{
|
||
//上传成功
|
||
var uploadedTask = new UploadededTask()
|
||
{
|
||
ShelfId = finishedTask.ShelfId,
|
||
ShelfCode = finishedTask.ShelfCode,
|
||
ModuleId = finishedTask.ModuleId,
|
||
ModuleCode = finishedTask.ModuleCode,
|
||
StoreId = finishedTask.StoreId,
|
||
StoreCode = finishedTask.StoreCode,
|
||
TaskID = finishedTask.TaskID,
|
||
ItemNo = finishedTask.ItemNo,
|
||
Guid = finishedTask.Guid,
|
||
TaskMode = finishedTask.TaskMode,
|
||
OrderNumber = finishedTask.OrderNumber,
|
||
ButtonColor = finishedTask.ButtonColor,
|
||
MatCode = finishedTask.MatCode,
|
||
MatName = finishedTask.MatName,
|
||
MatSpec = finishedTask.MatSpec,
|
||
MatBatch = finishedTask.MatBatch,
|
||
MatSN = finishedTask.MatSN,
|
||
Qty = finishedTask.Qty,
|
||
CreateTime = finishedTask.CreateTime,
|
||
FinishQty = finishedTask.FinishQty,
|
||
FinishTime = finishedTask.FinishTime,
|
||
UploadTime = DateTime.Now,
|
||
};
|
||
DbHelp.db.Insertable(uploadedTask).ExecuteCommand();
|
||
DbHelp.db.Deleteable(finishedTask).ExecuteCommand();
|
||
}
|
||
//上传成功 但是此物料已经被删除!!!
|
||
else if (result != null && (result.code == 500) && result.message.Contains("未查询到条码信息【"))
|
||
{
|
||
//上传成功
|
||
var uploadedTask = new UploadededTask()
|
||
{
|
||
ShelfId = finishedTask.ShelfId,
|
||
ShelfCode = finishedTask.ShelfCode,
|
||
ModuleId = finishedTask.ModuleId,
|
||
ModuleCode = finishedTask.ModuleCode,
|
||
StoreId = finishedTask.StoreId,
|
||
StoreCode = finishedTask.StoreCode,
|
||
TaskID = finishedTask.TaskID,
|
||
ItemNo = finishedTask.ItemNo,
|
||
Guid = finishedTask.Guid,
|
||
TaskMode = finishedTask.TaskMode,
|
||
OrderNumber = finishedTask.OrderNumber,
|
||
ButtonColor = finishedTask.ButtonColor,
|
||
MatCode = finishedTask.MatCode,
|
||
MatName = finishedTask.MatName,
|
||
MatSpec = finishedTask.MatSpec,
|
||
MatBatch = finishedTask.MatBatch,
|
||
MatSN = finishedTask.MatSN + "(已删除)",
|
||
Qty = finishedTask.Qty,
|
||
CreateTime = finishedTask.CreateTime,
|
||
FinishQty = finishedTask.FinishQty,
|
||
FinishTime = finishedTask.FinishTime,
|
||
UploadTime = DateTime.Now,
|
||
};
|
||
DbHelp.db.Insertable(uploadedTask).ExecuteCommand();
|
||
DbHelp.db.Deleteable(finishedTask).ExecuteCommand();
|
||
}
|
||
else if (result != null && (result.code == 10000) &&
|
||
(result.message.Contains("token") || result.message.Contains("请重新登录") || result.message.Contains("无token") || result.message.Contains("无效token") || result.message.Contains("token校验失败"))
|
||
)
|
||
{
|
||
Logs.Write($"【定时任务:回传数据至WMS系统】根据wms接口返回 token已过期或者错误,清空token。", LogsType.Info);
|
||
LocalStatic.WMSToken = string.Empty;
|
||
break;
|
||
}
|
||
else if (result != null && (result.code == 500) &&
|
||
(result.message.Contains("token") || result.message.Contains("请重新登录") || result.message.Contains("无token") || result.message.Contains("无效token") || result.message.Contains("token校验失败"))
|
||
)
|
||
{
|
||
Logs.Write($"【定时任务:回传数据至WMS系统】根据wms接口返回 token已过期或者错误,清空token。", LogsType.Info);
|
||
LocalStatic.WMSToken = string.Empty;
|
||
break;
|
||
}
|
||
#endregion
|
||
|
||
//为了调试
|
||
//Random random = new Random();
|
||
//int number = random.Next(1 , 100);
|
||
//if (number <= 30)
|
||
//{
|
||
// //上传成功
|
||
// var uploadedTask = new UploadededTask()
|
||
// {
|
||
// ShelfId = finishedTask.ShelfId,
|
||
// ShelfCode = finishedTask.ShelfCode,
|
||
// ModuleId = finishedTask.ModuleId,
|
||
// ModuleCode = finishedTask.ModuleCode,
|
||
// StoreId = finishedTask.StoreId,
|
||
// StoreCode = finishedTask.StoreCode,
|
||
// TaskID = finishedTask.TaskID,
|
||
// ItemNo = finishedTask.ItemNo,
|
||
// Guid = finishedTask.Guid,
|
||
// TaskMode = finishedTask.TaskMode,
|
||
// OrderNumber = finishedTask.OrderNumber,
|
||
// ButtonColor = finishedTask.ButtonColor,
|
||
// MatCode = finishedTask.MatCode,
|
||
// MatName = finishedTask.MatName,
|
||
// MatSpec = finishedTask.MatSpec,
|
||
// MatBatch = finishedTask.MatBatch,
|
||
// MatSN = finishedTask.MatSN,
|
||
// Qty = finishedTask.Qty,
|
||
// CreateTime = finishedTask.CreateTime,
|
||
// FinishQty = finishedTask.FinishQty,
|
||
// FinishTime = finishedTask.FinishTime,
|
||
// UploadTime = DateTime.Now,
|
||
// };
|
||
// DbHelp.db.Insertable(uploadedTask).ExecuteCommand();
|
||
// DbHelp.db.Deleteable(finishedTask).ExecuteCommand();
|
||
//}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Logs.Write($"【定时任务:回传数据至WMS系统】{finishedTask.ItemNo}发生异常," + ex.Message, LogsType.Info);
|
||
Logs.Write($"【定时任务:回传数据至WMS系统】{finishedTask.ItemNo}发生异常" + ex.StackTrace, LogsType.Info);
|
||
}
|
||
Thread.Sleep(500);
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
Logs.Write("【定时任务:回传数据至WMS系统】发生异常" + e.Message, LogsType.Info);
|
||
Logs.Write("【定时任务:回传数据至WMS系统】发生异常" + e.StackTrace, LogsType.Info);
|
||
}
|
||
}
|
||
});
|
||
#endregion
|
||
}
|
||
}
|
||
}
|