/// <summary> /// 值班人員簽核 /// </summary> /// <param name="CheckSNs">日常檢核件編號集合</param> /// <param name="CheckIDs">機房檢核項目ID集合</param> /// <param name="CheckDate">檢核日期</param> /// <param name="Shift">班別</param> /// <param name="SignedDatas">簽章值集合</param> /// <returns></returns> public string Confirm(string[] CheckSNs, int[] CheckIDs, string CheckDate, string Shift, string[] SignedDatas) { //初始化系統參數 Configer.Init(); //Log記錄用 SYSTEMLOG SL = new SYSTEMLOG(); SL.UId = Session["UserID"].ToString(); SL.Controller = "Process"; SL.Action = "Confirm"; SL.StartDateTime = DateTime.Now; string MailServer = Configer.MailServer; int MailServerPort = Configer.MailServerPort; string MailSender = Configer.MailSender; List <string> MailReceiver = Configer.MailReceiver; try { int i = 0; foreach (var item in CheckSNs) { //取得CHECKPROCESS物件 CHECKPROCESS CP = context.CHECKPROCESSES.Find(item); if (CP != null) { //update CHECKPROCESSES EPSUSER U = context.EPSUSERS.Find(Session["UserID"].ToString().Trim()); switch (Shift) { //早班 case "01": CP.ShiftOne = U.UserName; CP.ShiftOneSign = SignedDatas[i]; CP.CloseStutus = "早班檢核完畢"; break; //晚班 case "03": CP.ShiftThree = U.UserName; CP.ShiftThreeSign = SignedDatas[i]; CP.CloseStutus = "晚班檢核完畢"; break; //假日班 case "04": CP.ShiftFour = U.UserName; CP.ShiftFourSign = SignedDatas[i]; CP.CloseStutus = "假日班檢核完畢"; break; } CP.UpadteAccount = Session["UserID"].ToString().Trim(); CP.UpdateTime = DateTime.Now; context.Entry(CP).State = EntityState.Modified; context.SaveChanges(); string CheckTitle = ""; CHECKTITLE CT = context.CHECKTITLES.Find(CheckIDs[i]); if (CT != null) { CheckTitle = CT.Title; } //更新覆核表單 var query = context.REVIEWDATAS.Where(b => b.CheckDate == CheckDate); if (query.Count() > 0) { foreach (var q in query.ToList()) { if (q.ListName == "事件描述及行動" || q.ListName == "交接事項") { if (Shift == "01") { q.ShiftOneChecked = ""; } else if (Shift == "03") { q.ShiftTrheeChecked = ""; } else if (Shift == "04") { q.ShiftFourChecked = ""; } } else { var query01 = context.CHECKLISTS.Where(b => b.ShiftID == Shift) .Where(b => b.ListName == q.ListName); if (query01.Count() > 0) { if (Shift == "01") { if (getCheckReuslt(CheckDate, Shift, q.ListName)) { q.ShiftOneChecked = "正常"; } else { q.ShiftOneChecked = "異常"; } } else if (Shift == "03") { if (getCheckReuslt(CheckDate, Shift, q.ListName)) { q.ShiftTrheeChecked = "正常"; } else { q.ShiftTrheeChecked = "異常"; } } else if (Shift == "04") { if (getCheckReuslt(CheckDate, Shift, q.ListName)) { q.ShiftFourChecked = "正常"; } else { q.ShiftFourChecked = "異常"; } } } } q.UpadteAccount = Session["UserID"].ToString().Trim(); q.UpdateTime = DateTime.Now; context.Entry(q).State = EntityState.Modified; context.SaveChanges(); } } else { //沒有覆核表單 } } SL.EndDateTime = DateTime.Now; SL.TotalCount = 1; SL.SuccessCount = 1; SL.FailCount = 0; SL.Result = false; SL.Msg = "確認[" + item + "]作業成功"; SF.log2DB(SL, MailServer, MailServerPort, MailSender, MailReceiver); } i++; if (Shift == "03" || Shift == "04") { bool CanNotify = true; string CloseStutus = ""; var queryCP = context.CHECKPROCESSES.Where(b => b.CheckDate == CheckDate); foreach (var item1 in queryCP.ToList()) { if (Shift == "03") { CloseStutus = "晚班檢核完畢"; if (item1.ShiftOne == "" || item1.ShiftThree == "") { CanNotify = false; break; } } else if (Shift == "04") { CloseStutus = "假日班檢核完畢"; if (item1.ShiftFour == "") { CanNotify = false; break; } } } if (CanNotify) { //通知下一位負責人 SF.emailNotify2ReviewbyDate(CloseStutus, Session["UserID"].ToString(), CheckDate, "覆核"); } } return("確認成功"); } catch (Exception ex) { SL.EndDateTime = DateTime.Now; SL.TotalCount = 0; SL.SuccessCount = 0; SL.FailCount = 0; SL.Result = false; SL.Msg = "確認作業失敗," + "錯誤訊息[" + ex.ToString() + "]"; SF.log2DB(SL, MailServer, MailServerPort, MailSender, MailReceiver); return("確認失敗"); } }
/// <summary> /// 取得vCHECKPROCESS模型 /// </summary> /// <param name="CheckSN">檢核編號</param> /// <param name="CheckDate">檢核日期</param> /// <param name="CheckID">檢核項目代號</param> /// <param name="Shift">班別代號</param> /// <returns></returns> private vCHECKPROCESS GetProcess(string CheckSN, string CheckDate, int CheckID, string Shift) { //初始化系統參數 Configer.Init(); //Log記錄用 SYSTEMLOG SL = new SYSTEMLOG(); SL.UId = Session["UserID"].ToString(); SL.Controller = "Process"; SL.Action = "GetProcess"; SL.StartDateTime = DateTime.Now; string MailServer = Configer.MailServer; int MailServerPort = Configer.MailServerPort; string MailSender = Configer.MailSender; List <string> MailReceiver = Configer.MailReceiver; try { vCHECKPROCESS vCP = new vCHECKPROCESS(); vCP.CheckSN = CheckSN; vCP.CheckDate = CheckDate; CHECKTITLE CT = context.CHECKTITLES.Find(CheckID); vCP.Title = CT.Title; vCP.CheckID = CT.CheckID; var query = from cp in context.CHECKPROCESSES where cp.CheckSN == CheckSN where cp.CheckDate == CheckDate join cl in context.CHECKLISTS on cp.CheckID equals cl.CheckID join cd in context.CHECKPROCESSDETAILS.Where(b => b.CheckDate == CheckDate) on cl.ListID equals cd.ListID into x from y in x.DefaultIfEmpty() select new vCHECKDETAIL { ListID = cl.ListID, CheckID = cl.CheckID, ListName = cl.ListName, CheckType = cl.CheckType, Shift = cl.ShiftID, Charger = cl.ChargerID, StartTime = cl.StartTime, EndTime = cl.EndTime, CheckResult = y.CheckResult, CloseStatus = cp.CloseStutus }; if (query.Count() > 0) { //根據班別挑出檢核項目 var Shifts = new string[] { "00", Shift }; query = query.Where(b => Shifts.Contains(b.Shift)); //取得特定角色下的使用者清單 int RId = Convert.ToInt32(Session["UserRole"].ToString()); //只有OPManager角色需要處理 if (RId == 3) { //依據負責人挑出檢核項目 var Users = context.EPSUSERS.Where(b => b.RId == RId).Select(b => b.UId).ToList(); SF.logandshowInfo("Users:" + Users.ToString(), log_Info); int C = query.Where(b => Users.Contains(b.Charger)).Count(); SF.logandshowInfo("C:" + C.ToString(), log_Info); if (C > 0) { query = query.Where(b => Users.Contains(b.Charger)); } } vCP.vCHECKDETAILs = query.OrderBy(b => b.StartTime).ToList(); SL.EndDateTime = DateTime.Now; SL.TotalCount = query.Count(); SL.SuccessCount = query.Count(); SL.FailCount = 0; SL.Result = true; SL.Msg = "取得[" + CheckSN + "]檢核流程作業成功"; SF.log2DB(SL, MailServer, MailServerPort, MailSender, MailReceiver); return(vCP); } else { //沒有檢核項目錯誤 SL.EndDateTime = DateTime.Now; SL.TotalCount = 0; SL.SuccessCount = 0; SL.FailCount = 0; SL.Result = true; SL.Msg = "取得[" + CheckSN + "]檢核流程作業失敗,沒有對應檢核項目"; SF.log2DB(SL, MailServer, MailServerPort, MailSender, MailReceiver); return(null); } } catch (Exception ex) { SL.EndDateTime = DateTime.Now; SL.TotalCount = 0; SL.SuccessCount = 0; SL.FailCount = 0; SL.Result = false; SL.Msg = "取得[" + CheckSN + "]檢核流程作業失敗," + "錯誤訊息[" + ex.ToString() + "]"; SF.log2DB(SL, MailServer, MailServerPort, MailSender, MailReceiver); return(null); } }
public ActionResult EditItem(int ListID) { //初始化系統參數 Configer.Init(); //Log記錄用 SYSTEMLOG SL = new SYSTEMLOG(); SL.UId = Session["UserID"].ToString(); SL.Controller = "Document"; SL.Action = "EditItem"; SL.TotalCount = 1; SL.StartDateTime = DateTime.Now; string MailServer = Configer.MailServer; int MailServerPort = Configer.MailServerPort; string MailSender = Configer.MailSender; List <string> MailReceiver = Configer.MailReceiver; try { CHECKLIST CL = context.CHECKLISTS.Find(ListID); CHECKTITLE CT = context.CHECKTITLES.Find(CL.CheckID); vCHECKLIST_Manage VCTM = new vCHECKLIST_Manage(); VCTM.CheckTitle = CT.Title; VCTM.CheckID = CL.CheckID; VCTM.ListName = CL.ListName; VCTM.Definition = CL.Definition; VCTM.CheckTitle = CT.Title; TempData["CheckID"] = CL.CheckID; TempData["Title"] = CT.Title; //取得班別清單 var query1 = from s in context.CHECKSHIFTS select new { s.ShiftID, s.ShiftValue }; VCTM.ShiftID = CL.ShiftID; VCTM.ShiftIDList = new SelectList(query1, "ShiftID", "ShiftValue"); //取得分類清單 var query2 = from c in context.CHECKCLASSES select new { c.ClassID, c.ClassValue }; VCTM.ClassID = CL.ClassID; VCTM.ClassIDList = new SelectList(query2, "ClassID", "ClassValue"); //取得負責人清單 var query = from u in context.EPSUSERS select new { u.UId, u.UserName }; VCTM.ChargerID = CL.ChargerID; VCTM.ChargerList = new SelectList(query, "UId", "UserName"); VCTM.CheckType = CL.CheckType; VCTM.AlwaysShow = CL.AlwaysShow; VCTM.StartTime = CL.StartTime; VCTM.EndTime = CL.EndTime; VCTM.ShowOrder = CL.ShowOrder; SL.EndDateTime = DateTime.Now; SL.TotalCount = 1; SL.SuccessCount = 1; SL.FailCount = 0; SL.Result = true; SL.Msg = "取得檢核項目資料作業成功,ListID:[" + ListID.ToString() + "]"; SF.log2DB(SL, MailServer, MailServerPort, MailSender, MailReceiver); return(View(VCTM)); } catch (Exception ex) { SL.EndDateTime = DateTime.Now; SL.TotalCount = 1; SL.SuccessCount = 0; SL.FailCount = 1; SL.Result = false; SL.Msg = "取得檢核項目資料作業失敗," + "錯誤訊息[" + ex.ToString() + "]"; SF.log2DB(SL, MailServer, MailServerPort, MailSender, MailReceiver); return(RedirectToAction("ListItem", "Document")); } }
/// <summary> /// 取得vCHECKPROCESS模型 /// </summary> /// <param name="CheckSN">檢核編號</param> /// <param name="CheckDate">檢核日期</param> /// <returns></returns> private vCHECKPROCESS GetProcess(string CheckSN, string CheckDate) { //初始化系統參數 Configer.Init(); //Log記錄用 SYSTEMLOG SL = new SYSTEMLOG(); SL.UId = Session["UserID"].ToString(); SL.Controller = "Review"; SL.Action = "GetProcess"; SL.StartDateTime = DateTime.Now; string MailServer = Configer.MailServer; int MailServerPort = Configer.MailServerPort; string MailSender = Configer.MailSender; List <string> MailReceiver = Configer.MailReceiver; try { vCHECKPROCESS vCP = new vCHECKPROCESS(); vCP.CheckSN = CheckSN; vCP.CheckDate = CheckDate; int CheckID = context.CHECKPROCESSES.Find(CheckSN).CheckID; CHECKTITLE CT = context.CHECKTITLES.Find(CheckID); vCP.Title = CT.Title; var query = from cp in context.CHECKPROCESSES where cp.CheckSN == CheckSN where cp.CheckDate == CheckDate join cd in context.CHECKPROCESSDETAILS.Where(b => b.CheckDate == CheckDate) on cp.CheckID equals cd.CheckID join cl in context.CHECKLISTS on cd.ListID equals cl.ListID into x from y in x.DefaultIfEmpty() select new vCHECKDETAIL { ListID = y.ListID, CheckID = y.CheckID, ListName = y.ListName, CheckType = y.CheckType, Shift = y.ShiftID, StartTime = y.StartTime, EndTime = y.EndTime, CheckResult = cd.CheckResult, CloseStatus = cp.CloseStutus }; if (query.Count() > 0) { //根據班別挑出檢核項目 //var Shifts = new string[] { "00", Shift }; //query = query.Where(b => Shifts.Contains(b.Shift)); vCP.vCHECKDETAILs = query.OrderBy(b => b.StartTime).ToList(); SL.EndDateTime = DateTime.Now; SL.TotalCount = query.Count(); SL.SuccessCount = query.Count(); SL.FailCount = 0; SL.Result = true; SL.Msg = "取得[" + CheckSN + "]檢核流程作業成功"; SF.log2DB(SL, MailServer, MailServerPort, MailSender, MailReceiver); return(vCP); } else { //沒有檢核項目錯誤 SL.EndDateTime = DateTime.Now; SL.TotalCount = 0; SL.SuccessCount = 0; SL.FailCount = 0; SL.Result = true; SL.Msg = "取得[" + CheckSN + "]檢核流程作業失敗,沒有對應檢核項目"; SF.log2DB(SL, MailServer, MailServerPort, MailSender, MailReceiver); return(null); } } catch (Exception ex) { SL.EndDateTime = DateTime.Now; SL.TotalCount = 0; SL.SuccessCount = 0; SL.FailCount = 0; SL.Result = false; SL.Msg = "取得[" + CheckSN + "]檢核流程作業失敗," + "錯誤訊息[" + ex.ToString() + "]"; SF.log2DB(SL, MailServer, MailServerPort, MailSender, MailReceiver); return(null); } }
public ActionResult Create(vDOCUMENT_Manage VDM) { //初始化系統參數 Configer.Init(); //Log記錄用 SYSTEMLOG SL = new SYSTEMLOG(); SL.UId = Session["UserID"].ToString(); SL.Controller = "Document"; SL.Action = "Create"; SL.TotalCount = 1; SL.StartDateTime = DateTime.Now; string MailServer = Configer.MailServer; int MailServerPort = Configer.MailServerPort; string MailSender = Configer.MailSender; List <string> MailReceiver = Configer.MailReceiver; try { if (ModelState.IsValid) { CHECKTITLE CT = new CHECKTITLE(); CT.Title = VDM.Title; CT.Definition = VDM.Definition; CT.Attachment = VDM.Attachment; CT.CreateAccount = Session["UserID"].ToString().Trim(); CT.CreateTime = DateTime.Now; CT.UpadteAccount = Session["UserID"].ToString().Trim(); CT.UpdateTime = DateTime.Now; context.CHECKTITLES.Add(CT); context.SaveChanges(); SL.EndDateTime = DateTime.Now; SL.SuccessCount = 1; SL.FailCount = 0; SL.Result = true; SL.Msg = "建立文件作業成功"; SF.log2DB(SL, MailServer, MailServerPort, MailSender, MailReceiver); //TempData["CreateMsg"] = "<script>alert('新增成功');</script>"; return(RedirectToAction("AddItem", "Document", new { CheckID = CT.CheckID, CheckTitle = CT.Title })); } else { TempData["CreateMsg"] = "<script>alert('新增失敗');</script>"; return(RedirectToAction("Create", "Document")); } } catch (Exception ex) { SL.EndDateTime = DateTime.Now; SL.TotalCount = 1; SL.SuccessCount = 0; SL.FailCount = 1; SL.Result = false; SL.Msg = "建立文件作業失敗," + "錯誤訊息[" + ex.ToString() + "]"; SF.log2DB(SL, MailServer, MailServerPort, MailSender, MailReceiver); TempData["CreateMsg"] = "<script>alert('發生異常');</script>"; return(RedirectToAction("Create", "Document")); } }