Files
T-DAS/Epost.DAL/Cache/JobModelCacheDAL.cs
2024-12-09 13:16:59 +08:00

192 lines
5.9 KiB
C#

using Epost.Common;
using Epost.Model;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Epost.DAL.Cache
{
public class JobModelCacheDAL
{
private static object lockobj = new object();
public static List<JobModel> PlanJobList = new List<JobModel>();//计划点亮任务列表
public static List<JobModel> ExecuteJobList = new List<JobModel>();//作业中任务列表
#region
public List<JobModel> GetPlanJobList()
{
//LogHelper.WriteLogInfo("pppppppppppppppppppppp开始ppppppppppppppppppppppp" + PlanJobList.Count);
//if (PlanJobList != null && PlanJobList.Count > 0)
//{
// foreach (var item in PlanJobList)
// {
// LogHelper.WriteLogInfo("HHHHHHHHHH" + item.OrderID + "HHHHHHHH" + item.Address + "HHHHHHHHHHH" + item.TaskArea + "HHHHHHHHHHHH" + item.State + "HHHHHHHHHHHH" + item.Block + "HHHHHH"+item.BatchId);
// }
//}
//LogHelper.WriteLogInfo("pppppppppppppppppppppp结束ppppppppppppppppppppppp" + PlanJobList.Count);
//读取数据库 处理异常断电等情况------待开发
return PlanJobList;
}
#endregion
#region
public List<JobModel> GetExecuteJobList()
{
//List<JobListModel> jobModel = (List<JobListModel>)CacheHelper.Get("jobList");
//读取数据库 处理异常断电等情况------待开发
return ExecuteJobList;
}
#endregion
#region
public void ClearJobList()
{
foreach (var planitem in PlanJobList.ToArray())
{
PlanJobList.Remove(planitem);
}
foreach (var excItem in ExecuteJobList.ToArray())
{
ExecuteJobList.Remove(excItem);
}
}
#endregion
//#region 取消订单
//public void CancelJob(string orderid)
//{
// List<JobListModel> PlanJobDel = PlanJobList.FindAll(m => m.OrderID == orderid);
// foreach (var planitem in PlanJobDel)
// {
// PlanJobList.Remove(planitem);
// }
// List<JobListModel> ExecuteJobDel = ExecuteJobList.FindAll(m => m.OrderID == orderid);
// foreach (var excItem in ExecuteJobDel)
// {
// ExecuteJobList.Remove(excItem);
// }
//}
//#endregion
#region Job缓存处理方法
/// <summary>
/// Job缓存处理方法
/// </summary>
/// <param name="JobParam"></param>
/// <param name="CommendType"></param>
/// <returns></returns>
public bool UpdateJobModelList(List<JobModel> JobParam, EcommendType CommendType)
{
lock (lockobj)
{
if (CommendType.Equals(EcommendType.Create))
{
PlanJobList.AddRange(JobParam);
}
else if (CommendType.Equals(EcommendType.UpdateStartWork))
{
// PlanJobList.FirstOrDefault().State = 1;
}
else if (CommendType.Equals(EcommendType.UpdateOnWork))
{
// PlanJobList.FirstOrDefault().State = 2;
}
else if (CommendType.Equals(EcommendType.Execute))
{
JobParam.ForEach(m => PlanJobList.Remove(m));//删除计划任务
}
else if (CommendType.Equals(EcommendType.UpdateTaskBlock))
{
JobParam.ForEach(m => ExecuteJobList.Remove(m));
}
else if (CommendType.Equals(EcommendType.CompleteDetail))
{
// ExecuteJobList.ForEach(m => m.detail.Remove(JobParam.FirstOrDefault().detail[0]));//从点亮灯任务列表中删除
//todo 去修改orders 数据表的订单状态和明细状态
}
else if (CommendType.Equals(EcommendType.Complete))
{
//删除作业任务 已完成
//foreach (var planitem in PlanJobList.ToArray())
//{
// PlanJobList.Remove(planitem);
//}
//List<JobModel> list = PlanJobList.FindAll(p => p.Block == JobParam.FirstOrDefault().Block);
//foreach (JobModel item in list)
//{
// PlanJobList.Remove(item);
//}
JobParam.ForEach(m => PlanJobList.Remove(m));//删除计划任务
}
return true;
}
}
#endregion
}
public enum EcommendType
{
/// <summary>
/// API接受任务
/// </summary>
[Description("API接受任务")]
Create,
/// <summary>
/// 修改状态
/// </summary>
[Description("作业开始")]
UpdateStartWork,
/// <summary>
/// 修改状态
/// </summary>
[Description("作业进行中")]
UpdateOnWork,
/// <summary>
/// 点亮灯操作
/// </summary>
[Description("作业中")]
Execute,
/// <summary>
/// 作业完成
/// </summary>
[Description("作业明细完成")]
CompleteDetail,
/// <summary>
/// 作业完成
/// </summary>
[Description("作业区域修改")]
UpdateTaskBlock,
/// <summary>
/// 作业完成
/// </summary>
[Description("作业完成")]
Complete
}
}