Exemple #1
0
        /// <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("確認失敗");
            }
        }
Exemple #2
0
        /// <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);
            }
        }
Exemple #3
0
        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"));
            }
        }
Exemple #4
0
        /// <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);
            }
        }
Exemple #5
0
        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"));
            }
        }