Files
wcs/WCS.BLL/Manager/MKYBackgroundThread.cs
2025-01-17 15:23:20 +08:00

267 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接口获取具体的库存列表并展示在液晶标签上
Task.Run(() =>
{
while (true)
{
//每5秒同步一次
Thread.Sleep(5000);
try
{
}
catch (Exception ex)
{
Logs.Write("【定时任务】刷新库存显示时发生异常!" + ex.Message);
}
}
});
#endregion
#region WMS系统
Task.Run(() =>
{
while (true)
{
//回传数据的时间间隔
Thread.Sleep(2000);
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.StoreCode,
qty = finishedTask.Qty,
};
var result = ApiHelp.GetDataFromHttp<SysOrderResponse>(@"http://10.41.235.10:18989/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();
}
#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
//#region 定时任务:监测警示灯关灯机制
////判断灯颜色和模式是否对应
//Task.Run(() =>
//{
// while (true)
// {
// //间隔5秒查询一次
// Thread.Sleep(5000);
// try
// {
// //待机模式未关灯
// var shelves = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.待机模式 && t.LightColor != WarningLight.LightColorEnum.关闭)
// .Where(t => t.SetCurrentModeTime < DateTime.Now.AddSeconds(-5))
// .ToList();
// foreach (var shelf in shelves)
// {
// try
// {
// if (shelf is SmartShelf)
// {
// var smartShelf = (SmartShelf)shelf;
// if (smartShelf.IsWarning == false)
// {
// smartShelf?.WarningLight.CloseLight(smartShelf.TcpCleint);
// Logs.Write($"【定时任务】:监测警示灯关灯机制,关【{shelf.ShelfCode}】灯发送指令成功!");
// }
// }
// }
// catch (Exception ex)
// {
// Logs.Write($"【定时任务】:监测警示灯关灯机制,关【{shelf.ShelfCode}】灯发生异常" + ex.Message);
// }
// }
// //出库模式未亮灯
// var outShelves = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.出库模式 && t.LightColor == WarningLight.LightColorEnum.关闭)
// .Where(t => t.SetCurrentModeTime < DateTime.Now.AddSeconds(-5))
// .ToList();
// foreach (var shelf in outShelves)
// {
// try
// {
// if (shelf is SmartShelf)
// {
// var smartShelf = (SmartShelf)shelf;
// smartShelf?.WarningLight.GreenLight(smartShelf.TcpCleint);
// Logs.Write($"【定时任务】:监测警示灯关灯机制,出库开灯【{shelf.ShelfCode}】发送指令成功!");
// }
// }
// catch (Exception ex)
// {
// Logs.Write($"【定时任务】:监测警示灯关灯机制,出库开灯【{shelf.ShelfCode}】发生异常" + ex.Message);
// }
// }
// }
// catch (Exception ex)
// {
// Logs.Write("【定时任务】:监测警示灯关灯机制发生异常" + ex.Message);
// }
// }
//});
//#endregion
}
}
}