public int Save(WarehouseRecord WarehouseRecord)
 {
     if (WarehouseRecord.WarehouseRecordID == 0)
     {
         _context.WarehouseRecords.Add(WarehouseRecord);
     }
     else
     {
         WarehouseRecord _dbEntry = _context.WarehouseRecords.Find(WarehouseRecord.WarehouseRecordID);
         if (_dbEntry != null)
         {
             _dbEntry.UserID          = WarehouseRecord.UserID;
             _dbEntry.RecordType      = WarehouseRecord.RecordType;
             _dbEntry.Quantity        = WarehouseRecord.Quantity;
             _dbEntry.PurchaseOrderID = WarehouseRecord.PurchaseOrderID;
             _dbEntry.POContentID     = WarehouseRecord.POContentID;
             _dbEntry.Date            = DateTime.Now;
             _dbEntry.Memo            = WarehouseRecord.Memo;
             _dbEntry.Name            = WarehouseRecord.Name;
             _dbEntry.Specification   = WarehouseRecord.Specification;
         }
     }
     _context.SaveChanges();
     return(WarehouseRecord.WarehouseRecordID);
 }
Ejemplo n.º 2
0
 /// <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);
     }
 }