public string AddMain(WeekReportMain main) { try { dbContext.WeekReportMains.Add(main); dbContext.SaveChanges(); return(Constants.AJAX_CREATE_SUCCESS_RETURN); } catch (Exception e1) { return("<p class='alert alert-danger'>出错了: " + e1.Message + "</p>"); } }
public string EditMain(WeekReportMain main) { try { dbContext.Entry(main).State = System.Data.Entity.EntityState.Modified; dbContext.SaveChanges(); return(Constants.AJAX_EDIT_SUCCESS_RETURN); } catch (Exception e1) { return("<p class='alert alert-danger'>出错了: " + e1.Message + "</p>"); } }
public string DeleteMain(int id) { try { WeekReportMain main = dbContext.WeekReportMains.ToList().Find(a => a.WRMainID == id); dbContext.Entry(main).State = System.Data.Entity.EntityState.Deleted; dbContext.SaveChanges(); // 同时删除重点工作对应的每周工作 dbContext.Database.ExecuteSqlCommand("delete from WeekReportDetails where WorkName = @p0 and IsWithMain = 1", id.ToString()); return("删除成功"); } catch (Exception e1) { return("出错了: " + e1.Message); } }
/* 每周工作 */ // 每周工作页面 public ActionResult DetailIndex(int pageNum = 1, int orderByType = 1) { var ls = from a in dbContext.WeekReportDetails select a; // 若非管理员只显示负责人中含有自己姓名的记录 if (!this.IsAdminNow()) { User user = this.GetSessionCurrentUser(); if (user == null) { return(RedirectToAction("Login", "User", new { ReturnUrl = "/WeekReport/DetailIndex" })); } ls = ls.Where(a => a.Person.Contains(user.Realname) || a.OutSource.Contains(user.Realname)); } // 对于IsWithMain的任务,WorkName转换成对应的重点任务名称 var mainLs = dbContext.WeekReportMains.ToList(); WeekReportMain main = null; foreach (var detail in ls) { if (detail.IsWithMain) { main = mainLs.Find(a => a.WRMainID.ToString() == detail.WorkName); detail.WorkName = main == null ? "未知" : main.WorkName; } } // 按照 orderByType 排序 (1-按照周报倒序;2-按照项目名称) if (orderByType == 2) { ls = ls.OrderBy(a => a.WorkName); } else { ls = ls.OrderByDescending(a => a.RptDate); } ViewBag.OrdeyByTypeParam = orderByType; return(View(ls.ToList().ToPagedList(pageNum, Constants.PAGE_SIZE))); }
// 修改:每周重点工作 public ActionResult EditMain(int id) { WeekReportMain main = dbContext.WeekReportMains.ToList().Find(a => a.WRMainID == id); if (main == null) { return(View()); } // 若workYear为空,自动填上今年的日期 if (string.IsNullOrEmpty(main.WorkYear)) { main.WorkYear = DateTime.Now.Year.ToString(); } // 工作类型下拉列表 SelectList sl = MyTools.GetSelectList(Constants.WorkTypeList, false, true, main.WorkType); ViewBag.WorkTypeList = sl; return(View(main)); }
// 填报:重点工作 public ActionResult AddMain() { // 工作类型下拉列表 SelectList sl = MyTools.GetSelectList(Constants.WorkTypeList); ViewBag.WorkTypeList = sl; // 默认加上当前的用户UID和姓名 User user = this.GetSessionCurrentUser(); if (user == null) { user = Constants.UserList.FirstOrDefault <User>(); // 若获取不到则去第一个 } WeekReportMain main = new WeekReportMain() { WorkTime = 0, RptPersonID = user.UID, Person = user.Realname, WorkYear = DateTime.Now.Year.ToString() }; return(View(main)); }
// 生成ExcelWorkBook private void procWorkbook(ExcelWorkbook wb, string thisWeek, string nextWeek, int sheetNum) { // 根据sheetNum处理 ExcelWorksheet sheet = wb.Worksheets[sheetNum]; sheet.Name = thisWeek; //sheet名称设为报表日期 // 填报周期 sheet.Cells[1, 4].Value = "填报周期:" + thisWeek + " - " + nextWeek; // 分别读取年度重点任务、每周工作、重点工作、项目风险 // 游标:标记目前需要操作的行号 int cursor = 4; //从第4行开始操作 // 【1】重点任务 var yearMissionList = dbContext.YearMissions.Where(p => p.DoNotTrack != true).ToList(); int size = yearMissionList.Count(); int num = 1; // 在cursor+1位置插入size-1行 sheet.InsertRow(cursor + 1, size - 1, cursor); // 插入数据 foreach (var s in yearMissionList) { // 第一列是序号 sheet.Cells[cursor, 1].Value = num; sheet.Cells[cursor, 2].Value = s.MissionDate; sheet.Cells[cursor, 3].Value = s.MissionSource; sheet.Cells[cursor, 4].Value = s.WorkMission; sheet.Cells[cursor, 5].Value = s.WorkStage; sheet.Cells[cursor, 6].Value = s.Person; sheet.Cells[cursor, 7].Value = s.OutSource; sheet.Cells[cursor, 8].Value = s.Progress; sheet.Cells[cursor, 9].Value = s.PlanDeadLine; sheet.Cells[cursor, 10].Value = s.Remark; // 下移一行 cursor++; num++; } // 游标下移3行,因为有1个空行2个标题行 cursor += 3; // 【2】重点工作(取所有不为100%的、以及WorkYear是本年的) var mainList = (from a in dbContext.WeekReportMains where a.DoNotTrack != true orderby a.Person, a.OutSource select a).ToList(); size = mainList.Count(); num = 1; // 在cursor+1位置插入size-1行 sheet.InsertRow(cursor + 1, size - 1, cursor); // 插入数据 foreach (var s in mainList) { // 第一列是序号 sheet.Cells[cursor, 1].Value = num; sheet.Cells[cursor, 2].Value = s.WorkType; sheet.Cells[cursor, 3].Value = s.WorkName; sheet.Cells[cursor, 4].Value = s.WorkMission; sheet.Cells[cursor, 5].Value = s.WorkStage; sheet.Cells[cursor, 6].Value = s.Person; sheet.Cells[cursor, 7].Value = s.OutSource; sheet.Cells[cursor, 8].Value = s.Progress + "%"; sheet.Cells[cursor, 9].Value = s.PlanDeadLine == null ? "" : s.PlanDeadLine.Value.ToString("yyyy/M/d"); sheet.Cells[cursor, 10].Value = s.Remark; // 下移一行 cursor++; num++; } // 游标下移3行 cursor += 3; // 【3】风险 // 风险提示取本周和下周的 var riskList = dbContext.WeekReportRisks.Where(a => a.RptDate == thisWeek || a.RptDate == nextWeek); size = riskList.Count(); if (size > 0) { // 在cursor+1位置插入size-1行 sheet.InsertRow(cursor + 1, size - 1, cursor); // 插入数据 num = 1; //序号 foreach (var s in riskList) { // 需要对第2-4单元格进行合并 //sheet.Cells[cursor, 2, cursor, 4].Merge = true; // 5-10单元格合并 //sheet.Cells[cursor, 5, cursor, 10].Merge = true; //似乎有问题,以后处理 // 第一列是序号 sheet.Cells[cursor, 1].Value = num; sheet.Cells[cursor, 2].Value = s.RiskDetail; sheet.Cells[cursor, 5].Value = s.Solution; // 下移一行 cursor++; // 序号+1 num++; } // 游标下移3行,因为有3个标题行 cursor += 3; } else { // 游标下移4行,因为有一个空行 cursor += 4; } // 【4】本周工作 var thisWeekDetailList = (from a in dbContext.WeekReportDetails where a.RptDate == thisWeek orderby a.Person, a.OutSource select a).ToList(); size = thisWeekDetailList.Count(); // 在cursor+1位置插入size-1行 sheet.InsertRow(cursor + 1, size - 1, cursor); // 插入数据 foreach (var s in thisWeekDetailList) { string workName = ""; if (s.IsWithMain) { WeekReportMain main = mainList.Find(a => a.WRMainID.ToString() == s.WorkName); if (main != null) { workName = main.WorkName; } } else { workName = s.WorkName; } sheet.Cells[cursor, 1].Value = s.Priority; sheet.Cells[cursor, 2].Value = s.WorkType; sheet.Cells[cursor, 3].Value = workName; sheet.Cells[cursor, 4].Value = s.WorkMission; sheet.Cells[cursor, 5].Value = s.WorkTarget; sheet.Cells[cursor, 6].Value = s.Person; sheet.Cells[cursor, 7].Value = s.OutSource; sheet.Cells[cursor, 8].Value = s.Progress + "%"; sheet.Cells[cursor, 9].Value = s.PlanDeadLine == null ? "" : s.PlanDeadLine.Value.ToString("yyyy/M/d"); sheet.Cells[cursor, 10].Value = s.Remark; // 下移一行 cursor++; } // 游标下移3行,因为有3个标题行 cursor += 3; // 【4】下周计划 var nextWeekDetailList = (from a in dbContext.WeekReportDetails where a.RptDate == nextWeek orderby a.Person, a.OutSource select a).ToList(); size = nextWeekDetailList.Count(); // 在cursor+1位置插入size-1行 sheet.InsertRow(cursor + 1, size - 1, cursor); // 插入数据 foreach (var s in nextWeekDetailList) { string workName = ""; if (s.IsWithMain) { WeekReportMain main = mainList.Find(a => a.WRMainID.ToString() == s.WorkName); if (main != null) { workName = main.WorkName; } } else { workName = s.WorkName; } sheet.Cells[cursor, 1].Value = s.Priority; sheet.Cells[cursor, 2].Value = s.WorkType; sheet.Cells[cursor, 3].Value = workName; sheet.Cells[cursor, 4].Value = s.WorkMission; sheet.Cells[cursor, 5].Value = s.WorkTarget; sheet.Cells[cursor, 6].Value = s.Person; sheet.Cells[cursor, 7].Value = s.OutSource; sheet.Cells[cursor, 8].Value = s.Progress + "%"; sheet.Cells[cursor, 9].Value = s.PlanDeadLine == null ? "" : s.PlanDeadLine.Value.ToString("yyyy/M/d"); sheet.Cells[cursor, 10].Value = s.Remark; // 下移一行 cursor++; } }