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() .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(@"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 } } }