Files
wcs/WCS.BLL/Manager/MKYBackgroundThread.cs
2025-05-06 18:23:40 +08:00

234 lines
14 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}
}
}