using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using yunneiWCS.EnumDefine; using yunneiWCS.ORM; namespace yunneiWCS { /// /// 业务帮助类 /// public class TaskNoHelper { private readonly static object lock_Srm = new object(); private readonly static object lock_Agv = new object(); ///// ///// 随机生成1-10000的PLC任务号 ///// ///// //public static string CreatePlcTaskId() //{ // int iSeed = 10000; // return new Random(Guid.NewGuid().GetHashCode()).Next(1, iSeed).ToString(); //} ///// ///// 创建输送线任务号,随机生成(1, 3000)的PLC任务号 ///// ///// //public static string CreatePlcTaskIdForConveyorTask() //{ // int iSeed = 3000; // return new Random(Guid.NewGuid().GetHashCode()).Next(1, iSeed).ToString(); //} /// /// 创建堆垛机任务号,随机生成 (1-999999)的PLC任务号 /// /// 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; } } /// /// 创建堆垛机任务号,随机生成 (1-999999)的PLC任务号 /// /// private static string CreatePlcTaskIdForSrmTask() { lock (lock_Srm) { int iSeed = 999999; return new Random(Guid.NewGuid().GetHashCode()).Next(1, iSeed).ToString(); } } /// /// 创建Agv任务号 /// /// public static string CreateTaskIdForAgvTask(string plcTaskNo) { lock (lock_Agv) { //年月日时分秒-plc任务号,如 20220325190023-1234 return DateTime.Now.ToString("yyyyMMddHHmmss") + "-" + plcTaskNo; } } /// /// 手动创建Agv任务号 /// /// public static string CreateTaskIdForAgvTaskByHand() { lock (lock_Agv) { //年月日时分秒-plc任务号,如 20220325190023-1234 return DateTime.Now.ToString("yyyyMMddHHmmss") + "-" + "000000"; } } } }