public ActionResult StudentDetailEdit(Models.MoralData.StudentDetailEdit vm) { using (var db = new XkSystem.Models.DbContext()) { var moralItem = db.Set <Entity.tbMoralItem>().Find(vm.MoralItemId); var tbData = (from p in db.Table <Entity.tbMoralData>() where p.tbMoralItem.Id == vm.MoralItemId && p.MoralDate == vm.MoralDate select p); if (vm.ClassId > 0) { tbData = tbData.Where(p => p.tbClass.Id == vm.ClassId); } if (vm.StudentGroupId > 0) { tbData = tbData.Where(p => p.tbClassGroup.Id == vm.StudentGroupId); } if (vm.StudentId > 0) { tbData = tbData.Where(p => p.tbStudent.Id == vm.StudentId); } //累计已评分数值 var existsScore = tbData.Sum(p => p.DataText); //当前评分值 var currentScore = vm.Edit.MoralExpress == Code.EnumHelper.MoralExpress.Add ? vm.Edit.Score : 0 - vm.Edit.Score; var score = moralItem.DefaultValue + (existsScore.HasValue ? existsScore.Value : 0) + currentScore; if (score > moralItem.MaxScore) { return(Code.MvcHelper.Post(new List <string>() { $"累计分数【{score}】已超过该评分项的最高分【{moralItem.MaxScore}】!" })); } if (score < moralItem.MinScore) { return(Code.MvcHelper.Post(new List <string>() { $"累计分数【{score}】不能小于该评分项的最低分【{moralItem.MinScore}】!" })); } if (vm.MoralDataId > 0) { var tb = db.Set <Moral.Entity.tbMoralData>().Find(vm.MoralDataId); if (tb != null) { tb.DataText = vm.Edit.MoralExpress == Code.EnumHelper.MoralExpress.Add ? vm.Edit.Score : 0 - vm.Edit.Score; tb.Comment = vm.Edit.Comment ?? string.Empty; if (vm.Edit.tbMoralDataReasonId.HasValue && vm.Edit.tbMoralDataReasonId.Value > 0) { tb.tbMoralDataReason = db.Set <Entity.tbMoralDataReason>().Find(vm.Edit.tbMoralDataReasonId); } tb.MoralItemOperateType = moralItem.MoralItemOperateType; tb.CheckStatus = moralItem.AutoCheck ? Code.EnumHelper.CheckStatus.Success : Code.EnumHelper.CheckStatus.None; if (!string.IsNullOrWhiteSpace(vm.Edit.MoralPhotos)) { var tbMoralPhoto = (from p in db.Table <Entity.tbMoralPhoto>() where p.tbMoralData.Id == vm.MoralDataId select p); foreach (var photo in tbMoralPhoto) { photo.IsDeleted = true; } var photoList = vm.Edit.MoralPhotos.Split('|').ToList(); photoList.RemoveAll(p => string.IsNullOrWhiteSpace(p)); db.Set <Entity.tbMoralPhoto>().AddRange(photoList.Select(p => new Entity.tbMoralPhoto() { FileName = p, tbMoralData = tb }).ToList()); } if (db.SaveChanges() > 0) { Sys.Controllers.SysUserLogController.Insert("修改了德育评分!"); } } else { return(Code.MvcHelper.Post(new List <string>() { Resources.LocalizedText.MsgNotFound })); } } else { var tb = new Moral.Entity.tbMoralData() { DataText = vm.Edit.MoralExpress == Code.EnumHelper.MoralExpress.Add ? vm.Edit.Score : 0 - vm.Edit.Score, InputDate = DateTime.Now.Date, MoralDate = vm.MoralDate, tbMoralItem = moralItem, MoralItemOperateType = moralItem.MoralItemOperateType, CheckStatus = moralItem.AutoCheck ? Code.EnumHelper.CheckStatus.Success : Code.EnumHelper.CheckStatus.None, Comment = vm.Edit.Comment ?? string.Empty, tbSysUser = db.Set <Sys.Entity.tbSysUser>().Find(Code.Common.UserId), }; if (vm.Edit.tbMoralDataReasonId.HasValue && vm.Edit.tbMoralDataReasonId.Value > 0) { tb.tbMoralDataReason = db.Set <Entity.tbMoralDataReason>().Find(vm.Edit.tbMoralDataReasonId); } if (vm.StudentId > 0) { tb.tbStudent = db.Set <Student.Entity.tbStudent>().Find(vm.StudentId); } if (vm.StudentGroupId > 0) { tb.tbClassGroup = db.Set <Basis.Entity.tbClassGroup>().Find(vm.StudentGroupId); } if (vm.ClassId > 0) { tb.tbClass = db.Set <Basis.Entity.tbClass>().Find(vm.ClassId); } db.Set <Moral.Entity.tbMoralData>().Add(tb); if (!string.IsNullOrWhiteSpace(vm.Edit.MoralPhotos)) { var photoList = vm.Edit.MoralPhotos.Split('|').ToList(); photoList.RemoveAll(p => string.IsNullOrWhiteSpace(p)); db.Set <Entity.tbMoralPhoto>().AddRange(photoList.Select(p => new Entity.tbMoralPhoto() { FileName = p, tbMoralData = tb }).ToList()); } if (db.SaveChanges() > 0) { Sys.Controllers.SysUserLogController.Insert("添加了德育评分!"); } } } return(Code.MvcHelper.Post(message: "操作成功!", returnUrl: Url.Action("StudentDetailList", new { ItemId = vm.MoralItemId, StudentId = vm.StudentId, GroupId = vm.StudentGroupId, ClassId = vm.ClassId, Date = vm.MoralDate.Date, Op = vm.OperateType }))); }
public ActionResult SaveForDay(Models.MoralData.DayEdit vm) { var error = new List <string>(); using (var db = new XkSystem.Models.DbContext()) { var moralId = vm.MoralId; var moralItemIds = db.Table <Moral.Entity.tbMoralItem>().Where(p => p.tbMoralGroup.tbMoral.Id == vm.MoralId).Select(p => p.Id).ToList(); var itemCount = moralItemIds.Count; //列数 var arrLength = itemCount * 2 + 4; // 4=__RequestVerificationToken+MoralId+MoralDate+StudentIds var list = new List <string>(); for (var i = 3; i < arrLength; i++) { list.Add(Request.Form[i]); } var listData = new List <Moral.Entity.tbMoralData>(); var studentIds = list[0].Split(',').Select(int.Parse).ToList(); for (var i = 0; i < studentIds.Count; i++) { Moral.Entity.tbMoralData tb = null; for (var j = 1; j < list.Count; j += 2) { tb = new Moral.Entity.tbMoralData(); tb.tbStudent = db.Set <Student.Entity.tbStudent>().Find(studentIds[i]); //偶数,MoralItem var items = list[j].Split(',').Select(int.Parse).ToList(); tb.tbMoralItem = db.Set <Moral.Entity.tbMoralItem>().Find(items[i]); //奇数,MoralOption或者MoralDataText var options = list[j + 1].Split(','); var option = options[i]; //值包含option前缀的为MoralOption if (option.Contains("option_")) // option_i { var optionId = option.Split('_')[1].ConvertToInt(); tb.tbMoralOption = db.Set <Moral.Entity.tbMoralOption>().Find(optionId); } else { //判断dataText是否在MinScore和MaxScore之间 var optionValue = option.ConvertToDecimal(); if (optionValue < tb.tbMoralItem.MinScore || optionValue > tb.tbMoralItem.MaxScore) { error.Add($"第{i + 1}行{tb.tbMoralItem.MoralItemName}的分数必须在{tb.tbMoralItem.MinScore}-{tb.tbMoralItem.MaxScore}之间!"); } tb.DataText = option.ConvertToDecimal(); } listData.Add(tb); } } if (!error.Any()) { var tbSysUser = db.Set <Sys.Entity.tbSysUser>().Find(Code.Common.UserId); listData.ForEach(p => { p.InputDate = DateTime.Now; p.MoralDate = vm.MoralDate; p.tbSysUser = tbSysUser; }); var oldData = (from p in db.Table <Moral.Entity.tbMoralData>() where studentIds.Contains(p.tbStudent.Id) && moralItemIds.Contains(p.tbMoralItem.Id) && vm.MoralDate == p.MoralDate select p); foreach (var item in oldData) { item.IsDeleted = true; } db.Set <Moral.Entity.tbMoralData>().AddRange(listData); if (db.SaveChanges() > 0) { Sys.Controllers.SysUserLogController.Insert("录入了德育数据!"); } } } return(Code.MvcHelper.Post(error, message: "保存成功!")); }