using Furion.JsonSerialization;
|
using Newtonsoft.Json;
|
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
|
using Quartz;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Runtime.Serialization.Json;
|
using System.Security.Policy;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
using WIDESEA_Entity.DomainModels.Equipment;
|
using WIDESEA_Services.Services;
|
using WIDESEA_WCS.Jobs;
|
using WIDESEA_WCS.JobsPart.AGV;
|
using WIDESEA_WCS.SchedulerExecute.AGV;
|
using WIDESEA_WCS.WCSClient;
|
using static FreeSql.Internal.GlobalFilter;
|
|
namespace WIDESEA_WCS
|
{
|
/// <summary>
|
/// AGV调度
|
/// </summary>
|
[DisallowConcurrentExecution]
|
public class AGVJob : JobBase, IJob
|
{
|
private static object lockObj1 = 0;
|
public Task Execute(IJobExecutionContext context)
|
{
|
try
|
{
|
ExecuteJob(context, DoAction);
|
}
|
catch { }
|
return Task.FromResult(string.Empty);
|
}
|
|
|
private void DoAction(IJobExecutionContext context)
|
{
|
lock (lockObj1)
|
{
|
if (lockObj1.ToString() == "0")
|
{
|
try
|
{
|
lockObj1 = 1;
|
Task task = Task.Run(() =>
|
{
|
List<string> AGVS = new List<string> { "组装AGV调度", "正极AGV调度", "负极AGV调度" };
|
while (true)
|
{
|
foreach (var item in AGVS)
|
{
|
PLCClient pLCClient = WCSService.Clients.Find(v => v.PLCName == item);
|
if (pLCClient == null)
|
{
|
continue;
|
}
|
AGVSchedulerExecute.SendAGVTask1(pLCClient);
|
}
|
Thread.Sleep(200);
|
}
|
});
|
|
Task.Run(() =>
|
{
|
while (true)
|
{
|
try
|
{
|
string date = DateTime.Now.ToString("yyyy-MM-dd");
|
string json = File.ReadAllText(AppContext.BaseDirectory + "modified_data.json", Encoding.UTF8);
|
var logstime = JsonConvert.DeserializeObject<timelist>(json);
|
if (date != logstime.logtime)
|
{
|
logstime.logtime = date;
|
string modifiedJson = JsonConvert.SerializeObject(logstime);
|
File.WriteAllText("modified_data.json", modifiedJson);
|
string folderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs");
|
DateTime tenDaysAgo = DateTime.Now.AddDays(-7); // 获取当前时间的七天之前的日期
|
|
DeleteFilesAndFolders(folderPath, tenDaysAgo);
|
}
|
|
Thread.Sleep(1000 * 60 * 60 * 24);
|
}
|
catch
|
{
|
Thread.Sleep(1000 * 60 * 60);
|
}
|
}
|
});
|
}
|
catch (Exception ex)
|
{
|
lockObj1 = 0;
|
throw new Exception(ex.Message);
|
}
|
}
|
}
|
|
// 清楚7日以上的Logs日志记录
|
//try
|
//{
|
// List<string> AGVS = new List<string> { "组装AGV调度", "正极AGV调度", "负极AGV调度", "组装AGV调度" };
|
// //foreach (var item in AGVS)
|
// {
|
// //PLCClient pLCClient = WCSService.Clients.Find(v => v.PLCName == item);
|
// //if (pLCClient == null)
|
// //{
|
// // continue;
|
// //}
|
// PLCClient pLCClient = context.JobDetail.JobDataMap["JobParams"] as PLCClient;
|
// AGVSchedulerExecute.SendAGVTask1(pLCClient);
|
// }
|
// //string date = DateTime.Now.ToString("yyyy-MM-dd");
|
// //string json = File.ReadAllText(AppContext.BaseDirectory + "modified_data.json", Encoding.UTF8);
|
// //var logstime = JsonConvert.DeserializeObject<timelist>(json);
|
// //if (date != logstime.logtime)
|
// //{
|
// // logstime.logtime = date;
|
// // string modifiedJson = JsonConvert.SerializeObject(logstime);
|
// // File.WriteAllText("modified_data.json", modifiedJson);
|
// // string folderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs");
|
// // DateTime tenDaysAgo = DateTime.Now.AddDays(-7); // 获取当前时间的七天之前的日期
|
|
// // DeleteFilesAndFolders(folderPath, tenDaysAgo);
|
// //}
|
//}
|
//catch (Exception ex)
|
//{
|
// throw new Exception(ex.Message);
|
//}
|
}
|
|
static void DeleteFilesAndFolders(string path, DateTime dateTime)
|
{
|
DirectoryInfo directory = new DirectoryInfo(path);
|
|
foreach (FileSystemInfo fileOrFolder in directory.GetFileSystemInfos())
|
{
|
if ((fileOrFolder is FileInfo && ((DateTime)((FileInfo)fileOrFolder).LastWriteTime < dateTime)) ||
|
(fileOrFolder is DirectoryInfo && ((DirectoryInfo)fileOrFolder).CreationTime < dateTime))
|
{
|
try
|
{
|
if (fileOrFolder is FileInfo)
|
{
|
((FileInfo)fileOrFolder).Delete();
|
}
|
else if (fileOrFolder is DirectoryInfo)
|
{
|
DeleteFilesAndFolders(fileOrFolder.FullName, dateTime);
|
((DirectoryInfo)fileOrFolder).Delete(true);
|
}
|
}
|
catch (Exception ex)
|
{
|
Console.WriteLine("无法删除文件或文件夹: " + fileOrFolder.FullName + "\n错误信息: " + ex.Message);
|
}
|
}
|
}
|
}
|
}
|
|
public class timelist {
|
public string MM { get; set; }
|
//日志删除过滤时间
|
public string logtime { get; set; }
|
|
}
|
}
|