/// <summary> /// 获取任务最大版本 /// </summary> /// <param name="TaskName">任务名</param> /// <returns></returns> public int GetMaxVerMGTask(string TaskName, int ProcessType) { List <Task> _tasks = new List <Task>(); MGTypeName mgty = _context.MGTypeNames.Where(m => m.ID == ProcessType).FirstOrDefault(); string typename = mgty.Name ?? ""; _tasks = _context.Tasks.Where(t => t.TaskName == TaskName && t.ProcessName == typename).ToList(); int MaxVer = 0; if (_tasks.Count > 0) { MaxVer = _tasks.Max(v => v.Version); } return(MaxVer); }
/// <summary> /// 发布MG任务 启用事务 /// </summary> /// <param name="DrawIndex"></param> /// <param name="ReleaseBy"></param> /// <returns>return value 0 --成功 1--失败 2--已发布</returns> public int ReleaseMGDrawing(int DrawIndex, string ReleaseBy, string TaskName, string Memo) { #region 返回失败代码 MGSetting dbentity = _context.MGSettings.Where(m => m.ID == DrawIndex).Where(m => m.active == true).FirstOrDefault() ?? new MGSetting(); if (dbentity.ID == 0 || dbentity.ProcessType == 0) { return(1); } MGSetting dbentity2 = _context.MGSettings.Where(m => m.ID == DrawIndex).Where(m => m.active == true).Where(m => m.ReleaseFlag == true).FirstOrDefault() ?? new MGSetting(); if (dbentity2.ID > 0) { return(2); } #endregion var tran = _context.Database.BeginTransaction(); //开启事务 try { #region 更新 MGSetting dbentity.ReleaseFlag = true; dbentity.ReleaseDate = DateTime.Now; dbentity.ReleaseBy = ReleaseBy; dbentity.State = (int)MGSettingStatus.已发布但任务未发布; #endregion User _userRe = (_context.Users.Where(u => u.FullName == ReleaseBy).FirstOrDefault() ?? new User()); User _userCr = (_context.Users.Where(u => u.FullName == dbentity.CreateBy).FirstOrDefault() ?? new User()); MGTypeName typename = _context.MGTypeNames.Where(m => m.ID == dbentity.ProcessType).FirstOrDefault() ?? new MGTypeName(); WarehouseRecord whrecord = _context.WarehouseRecords.Where(w => w.Name == dbentity.ItemNO).Where(w => w.Quantity > 0).FirstOrDefault() ?? new WarehouseRecord(); #region 版本号>0 if (dbentity.Rev > 0) { if (IsMGTaskReleasedByName(TaskName)) { return(2); } List <MGSetting> mgsettings = _context.MGSettings.Where(m => m.DrawName == dbentity.DrawName).Where(m => m.Rev < dbentity.Rev).ToList(); if (mgsettings != null && mgsettings.Count > 0) { foreach (var ms in mgsettings) { ms.LastestFlag = false; } } //TaskType->6 铣磨 State->7 外发 var mgtasks = from t in _context.Tasks join m in _context.MGSettings on t.ProgramID equals m.ID where m.DrawName == dbentity.DrawName && m.Rev < dbentity.Rev && t.TaskType == 6 && t.Enabled == true && (t.State < (int)TaskStatus.完成 && t.State >= (int)TaskStatus.未发布) select t; if (mgtasks != null) { if (mgtasks.Count() > 0) { foreach (var mgt in mgtasks) { //任务状态设置为 完成 mgt.FinishBy = _userRe.UserID; mgt.FinishTime = DateTime.Now; mgt.State = (int)TaskStatus.完成; mgt.StateMemo = string.IsNullOrEmpty(mgt.StateMemo) ? "设定升版,低版本任务关闭。" : mgt.StateMemo + ";设定升版,低版本任务关闭。"; } } } } #endregion #region 计划时间 Project proj = _context.Projects.Where(p => p.MoldNumber == dbentity.MoldName && p.Enabled == true).FirstOrDefault() ?? new Project(); ProjectPhase ph4 = _context.ProjectPhases.Where(p => p.ProjectID == proj.ProjectID && p.PhaseID == 4).FirstOrDefault() ?? new ProjectPhase(); //M铣床 ProjectPhase ph7 = _context.ProjectPhases.Where(p => p.ProjectID == proj.ProjectID && p.PhaseID == 7).FirstOrDefault() ?? new ProjectPhase(); //G磨床 #endregion #region 生成加工任务 int lenNote = typename.Note.Length; //// var _noteArry = typename.Note.Split(','); double _time = Convert.ToDouble(Math.Round(dbentity.Time / _noteArry.Length, 1)); //// int? Process = null; string str = ""; int strStart = 1; DateTime PlanDate = new DateTime(1900, 1, 1); for (int i = 1; i <= lenNote; i++) { if (typename.Note.Substring(i - 1, 1) == "," || i == lenNote) { if (typename.Note.Substring(i - 1, 1) == ",") { str = typename.Note.Substring(strStart - 1, i - strStart); } else if (i == lenNote) { str = typename.Note.Substring(strStart - 1, i - strStart + 1); } strStart = i + 1; } try { Process = Convert.ToInt32(str); } catch { } if (Process != null && Process == 0) { PlanDate = ph4.PlanFinish; } else if (Process == 1) { PlanDate = ph7.PlanFinish; } //User user = _context.Users.Where(u => u.FullName == ReleaseBy).FirstOrDefault() ?? new User(); #region 检索图纸 string flag = _context.SystemConfigs.Where(s => s.SettingName == "2D_Drw_Type").FirstOrDefault().Value ?? ""; string DrawType = flag == "Outside" ? "2D" : ""; string sDrawName = TaskName + "_" + DrawType; string DrawName = ""; List <CAMDrawing> _draws = _context.CAMDrawings.Where(d => d.DrawingName.Contains(sDrawName)).ToList(); Dictionary <int, int> _dics = new Dictionary <int, int>(); if (_draws.Count > 0) { foreach (var d in _draws) { int _ver = Convert.ToInt32(d.DrawingName.Substring(d.DrawingName.LastIndexOf('_') + 2, 2)); _dics.Add(d.CAMDrawingID, _ver); } Dictionary <int, int> _dics_SortByKey = _dics.OrderByDescending(d => d.Value).ToDictionary(d => d.Key, v => v.Value); DrawName = _draws.Where(d => d.CAMDrawingID == _dics_SortByKey.FirstOrDefault().Key).FirstOrDefault().DrawingName; } #endregion //关键 TaskType->6 铣磨任务; OldID字段用于记录旧表(MG_Task)Process信息-> 0:铣床任务 1:磨床任务 MGTypeName _mgtype = _context.MGTypeNames.Where(t => t.Note == Process.ToString()).FirstOrDefault() ?? new MGTypeName(); Task mgtask = new Task { TaskName = TaskName, DrawingFile = DrawName, Version = dbentity.Rev, ProgramID = dbentity.ID, Creator = ReleaseBy, CreateTime = DateTime.Now, Enabled = true, Priority = 0, State = (int)TaskStatus.未发布, PrevState = (int)TaskStatus.未发布, Memo = Memo, Quantity = dbentity.Qty, OldID = Convert.ToInt32(Process), PlanTime = PlanDate, StartTime = new DateTime(1900, 1, 1), ProjectID = proj.ProjectID, TaskType = 6, MoldNumber = dbentity.MoldName, HRC = dbentity.HRC, ProcessName = _mgtype.Name, Time = _time, Material = dbentity.Material, Raw = dbentity.RawSize, CAMUser = _userCr.UserID }; if (Process != null) { _context.Tasks.Add(mgtask); } } #endregion _context.SaveChanges(); tran.Commit();//提交事务 return(0); } catch (Exception ex) { tran.Rollback(); //回滚 return(1); } }
public int Save(MGTypeName model) { return(0); }