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.StoreCode, //// qty = finishedTask.Qty, ////}; ////var result = ApiHelp.GetDataFromHttp(@"http://172.16.129.8: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(); ////} ////#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 } } }