using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using yunneiWCS.EnumDefine;
|
using yunneiWCS.ORM;
|
|
namespace yunneiWCS
|
{
|
/// <summary>
|
/// 业务帮助类
|
/// </summary>
|
public class TaskNoHelper
|
{
|
private readonly static object lock_Srm = new object();
|
|
private readonly static object lock_Agv = new object();
|
|
///// <summary>
|
///// 随机生成1-10000的PLC任务号
|
///// </summary>
|
///// <returns></returns>
|
//public static string CreatePlcTaskId()
|
//{
|
// int iSeed = 10000;
|
// return new Random(Guid.NewGuid().GetHashCode()).Next(1, iSeed).ToString();
|
//}
|
///// <summary>
|
///// 创建输送线任务号,随机生成(1, 3000)的PLC任务号
|
///// </summary>
|
///// <returns></returns>
|
//public static string CreatePlcTaskIdForConveyorTask()
|
//{
|
// int iSeed = 3000;
|
// return new Random(Guid.NewGuid().GetHashCode()).Next(1, iSeed).ToString();
|
//}
|
|
/// <summary>
|
/// 创建堆垛机任务号,随机生成 (1-999999)的PLC任务号
|
/// </summary>
|
/// <returns></returns>
|
public static string CreatePlcTaskIdForSrmTaskPublic(int index)
|
{
|
var plcTaskNo = CreatePlcTaskIdForSrmTask();
|
var queryTaskStatus = (int)taskStatus.作废;
|
var queryTaskStatus2 = (int)taskStatus.完成;
|
int count = 0;
|
using (dbmodel mod = new dbmodel())
|
{
|
count = mod.task.Where(x => x.PlcTaskNo == plcTaskNo && (x.taskStatus != queryTaskStatus && x.taskStatus != queryTaskStatus2)).Count();
|
}
|
|
//count = 5;//测试代码
|
//if (index == 3) count = 0;//测试代码
|
if (count > 0)
|
{
|
if (index >= 3)
|
{
|
throw new Exception("尝试三次生成的任务号" + plcTaskNo + ",与当前未结束的堆垛机任务号一致");
|
}
|
index++;
|
plcTaskNo = CreatePlcTaskIdForSrmTaskPublic(index);
|
return plcTaskNo;
|
}
|
else
|
{
|
return plcTaskNo;
|
}
|
}
|
|
|
/// <summary>
|
/// 创建堆垛机任务号,随机生成 (1-999999)的PLC任务号
|
/// </summary>
|
/// <returns></returns>
|
private static string CreatePlcTaskIdForSrmTask()
|
{
|
lock (lock_Srm)
|
{
|
int iSeed = 999999;
|
return new Random(Guid.NewGuid().GetHashCode()).Next(1, iSeed).ToString();
|
}
|
}
|
|
/// <summary>
|
/// 创建Agv任务号
|
/// </summary>
|
/// <returns></returns>
|
public static string CreateTaskIdForAgvTask(string plcTaskNo)
|
{
|
lock (lock_Agv)
|
{
|
//年月日时分秒-plc任务号,如 20220325190023-1234
|
return DateTime.Now.ToString("yyyyMMddHHmmss") + "-" + plcTaskNo;
|
}
|
}
|
/// <summary>
|
/// 手动创建Agv任务号
|
/// </summary>
|
/// <returns></returns>
|
public static string CreateTaskIdForAgvTaskByHand()
|
{
|
lock (lock_Agv)
|
{
|
//年月日时分秒-plc任务号,如 20220325190023-1234
|
return DateTime.Now.ToString("yyyyMMddHHmmss") + "-" + "000000";
|
}
|
}
|
}
|
}
|