/// <summary> /// 通过Id删除实体 /// </summary> public int DelStuById(long id) { var res = 0; List <SYS_Student> allStus = (List <SYS_Student>)GetSchoolEntities("stu"); SYS_Student obj = allStus.Where(x => x.ID == id).FirstOrDefault(); if (null != obj) { UnitOfWork.Repository <SYS_Student>().DeleteEntity(obj); res = UnitOfWork.CommitAsync().Result; } return(res); }
/// <summary> /// 手动添加考勤记录 /// </summary> public int AddStuAttManually(long stuId, byte attType, string attTime, string attTemp, string attRemark, byte isSendWxMsg = 1) { var res = 0; List <SYS_Student> allStus = (List <SYS_Student>)GetSchoolEntities("stu"); SYS_Student sObj = allStus.Where(x => x.ID == stuId).FirstOrDefault(); if (sObj != null) { DateTime aTime = DateTime.Parse(attTime); SYS_StudentAttRecord sar = new SYS_StudentAttRecord() { SchoolId = mlUser.School.ID, MasterId = stuId, AttType = attType, AttTime = aTime, AttTimeStr = aTime.ToString("yyyyMMddHHmmssfff"), AttWay = (byte)AttWay.手动添加, Temperature = attTemp, Remark = attRemark }; UnitOfWork.Repository <SYS_StudentAttRecord>().AddEntity(sar); var addOk = UnitOfWork.CommitAsync().Result; if (addOk > 0) { //修改考勤状态 if (attType == (byte)AttType.签出) { sObj.AttStatus = (byte)CurrentAttStatus.离校; } else { sObj.AttStatus = (byte)CurrentAttStatus.在校; } UnitOfWork.Repository <SYS_Student>().UpdateEntity(sObj); //推送 if (isSendWxMsg == 1) { //查找学生家长 List <FK_Stu_Parent> fks = UnitOfWork.Repository <FK_Stu_Parent>().GetEntitiesAsync(x => x.SchoolId == sObj.SchoolId && x.StuId == sObj.ID).Result; if (null != fks && fks.Count > 0) { var pWxPInfo = UnitOfWork.Repository <Wx_PublicInfo>().GetEntitiesAsync(x => x.Type == 1).Result.FirstOrDefault(); var wxpInfoId = pWxPInfo == null ? 0 : pWxPInfo.ID; if (mlUser.School.WxPublicInfoId != null && mlUser.School.WxPublicInfoId > 0) { wxpInfoId = (int)mlUser.School.WxPublicInfoId; } var wxPubInfo = UnitOfWork.Repository <Wx_PublicInfo>().GetEntitiesAsync(x => x.ID == wxpInfoId).Result.FirstOrDefault(); foreach (var fk in fks) { //推送消息 if (null != wxPubInfo) { // 需要从Cookie中获取 ModelWxMsg <ModelWmAttendance> wxMsg = new ModelWxMsg <ModelWmAttendance>(); wxMsg = JsonFileProvider.Instance.GetSettings <ModelWxMsg <ModelWmAttendance> >(); wxMsg.data.first.value = string.Format(wxMsg.data.first.value, (AttType)attType); wxMsg.touser = fk.OpenId; wxMsg.url = mWxSetting.PubUrl_Host + "/WxRelated/Center/AttDetail?attId=" + sar.ID; wxMsg.data.keyword1.value = sObj.StuName; wxMsg.data.keyword2.value = DateTime.Now.ToString(); wxMsg.data.keyword3.value = mlUser.School.SchoolName; ModelWmResult wmResult = WXOAuthApiHelper.SendTmplMessage(wxPubInfo.AccessToken, wxMsg); if (null == wmResult || wmResult.msgid <= 0) { LogHelper.Error("推送错误:" + wmResult.errmsg); } } } } } } res = addOk + UnitOfWork.CommitAsync().Result; } return(res); }
/// <summary> /// 批量导入学生 /// </summary> public string ImportStus(int classId, string fileName) { var res = "数据格式有误"; var totalRowCount = 0; var stuCount = 0; var repeatStuStr = ""; var repeatCardStr = ""; try { DataTable dt = ExcelHelper.ImportExcel(fileName); var nameCol = 0; var isNameColOk = false; var cls = UnitOfWork.Repository <SYS_Class>().GetEntitiesAsync(x => x.ID == classId && x.SchoolId == mlUser.School.ID).Result.FirstOrDefault(); if (null != cls && dt.Rows.Count > 1) { var allStus = (List <SYS_Student>)GetSchoolEntities("stu"); totalRowCount = dt.Rows.Count - 1; for (int i = 0; i < dt.Rows.Count; i++) { DataRow dr = dt.Rows[i]; if (!isNameColOk) { for (int j = 0; j < 10; j++) { //定位姓名所在列号 if (dr[j].ToString().Contains("姓名")) { nameCol = j; isNameColOk = true; break; } } } else { //新建学生 byte sex = 1; var name = dr[nameCol].ToString(); var phone = dr[nameCol + 1].ToString(); var oldStu = allStus.Where(x => x.StuName == name && x.Phone == phone && x.SchoolId == mlUser.School.ID && x.Status == (byte)StuStatus.正常).FirstOrDefault(); if (oldStu == null) { if (dr[nameCol + 2].ToString().Contains("女")) { sex = 2; } var stu = new SYS_Student { StuName = name, SchoolId = mlUser.School.ID, ClassId = classId, Grade = cls.Grade, Phone = phone, Sex = sex, StuNo = dr[nameCol + 3].ToString(), Address = dr[nameCol + 4].ToString(), Birthday = DateTime.Parse(dr[nameCol + 5].ToString()), Status = (byte)StuStatus.正常, AttStatus = (byte)CurrentAttStatus.未签到, CreateTime = DateTime.Now }; UnitOfWork.Repository <SYS_Student>().AddEntity(stu); stuCount++; //新建卡 var totalCol = dr.ItemArray.Count(); if (totalCol > 5) { var cardNoList = new List <string>(); for (var k = 1; k < totalCol - 5; k++) { int cardNo = 0; var cardNoStr = dr[nameCol + 5 + k].ToString(); if (cardNoStr.Length > 3 && int.TryParse(cardNoStr, out cardNo)) { cardNoList.Add(cardNoStr); } else { break; } } if (cardNoList.Count > 0) { //先提交学生到数据库-->得到学生ID var isOk = UnitOfWork.CommitAsync().Result; if (isOk > 0) { //开始建卡 foreach (var cNo in cardNoList) { var oldCard = UnitOfWork.Repository <SYS_Card>().GetEntitiesAsync(x => x.CardNo == cNo && x.SchoolId == mlUser.School.ID).Result .FirstOrDefault(); if (oldCard == null) { var card = new SYS_Card { SchoolId = mlUser.School.ID, CardMasterId = stu.ID, CardNo = cNo, CardType = (byte)CardType.学生卡, Status = (byte)CardStatus.正常, CreateTime = DateTime.Now }; UnitOfWork.Repository <SYS_Card>().AddEntity(card); } else { repeatCardStr += stu.StuName + ":" + cNo + " "; } } UnitOfWork.Commit(); } } } } else//同一个学校学生信息重复 { repeatStuStr += oldStu.StuName + " "; } } } UnitOfWork.Commit(); if (repeatStuStr.Length > 0) { repeatStuStr = "<b class='text-danger'>" + repeatStuStr + "</b>"; } else { repeatStuStr = "无"; } if (repeatCardStr.Length > 0) { repeatCardStr = "<b class='text-danger'>" + repeatCardStr + "</b>"; } else { repeatCardStr = "无"; } res = "<div>操作OK,完成导入学生数:<b class='text-success'>" + stuCount + "</b></div><div>重复学生导入失败:" + repeatStuStr + "</div><div>重复卡号建卡失败:" + repeatCardStr + "</div>"; } dt.Dispose(); } catch (Exception ex) { res = "错误:" + ex.Message; } GC.Collect(); System.IO.File.Delete(fileName); return(res); }
/// <summary> /// 新增或修改学生(type->1:新增,2:修改) /// </summary> public string AddOrModifyStu(byte type, string entity) { var res = "操作失败"; if (entity.Length > 6) { List <SYS_Class> classes = (List <SYS_Class>)GetSchoolEntities("class"); SYS_Student obj = JsonHelper.JsonToTByKey <SYS_Student>(entity, "Student"); List <string> cardNos = JsonHelper.JsonToTByKey <List <string> >(entity, "Cards"); if (null != obj) { SYS_Class clas = classes.Where(x => x.ID == obj.ClassId).FirstOrDefault(); if (type == 1)//新增 { obj.SchoolId = mlUser.School.ID; obj.Status = (byte)StuStatus.正常; obj.Grade = clas.Grade; obj.AttStatus = (byte)CurrentAttStatus.未签到; obj.CreateTime = DateTime.Now; var oldStu = UnitOfWork.Repository <SYS_Student>().GetEntitiesAsync(x => x.StuName == obj.StuName && x.Phone == obj.Phone && x.SchoolId == obj.SchoolId && x.Status == (byte)StuStatus.正常).Result.FirstOrDefault(); var isOk = 0; if (oldStu == null) { UnitOfWork.Repository <SYS_Student>().AddEntity(obj); isOk = UnitOfWork.CommitAsync().Result; if (isOk > 0) { res = "OK,学生添加成功"; } } else { res = "学生信息重复,无法添加\r\n"; } //建卡 var stuOldCards = UnitOfWork.Repository <SYS_Card>().GetEntitiesAsync(x => x.CardMasterId == obj.ID && x.CardType == (byte)CardType.学生卡).Result;//该学生已有卡 if (isOk > 0 && null != cardNos && cardNos.Count > 0) { var repeatCardStr = ""; foreach (var cNo in cardNos) { if (stuOldCards.FindIndex(delegate(SYS_Card card) { return(card.CardNo == cNo); }) < 0) { var oldCard = UnitOfWork.Repository <SYS_Card>().GetEntitiesAsync(x => x.CardNo == cNo && x.SchoolId == mlUser.School.ID) .Result.FirstOrDefault(); if (oldCard == null) { SYS_Card newCard = new SYS_Card { CardNo = cNo, CardMasterId = obj.ID, SchoolId = mlUser.School.ID, CardType = (byte)CardType.学生卡, Status = (byte)CardStatus.正常, CreateTime = DateTime.Now }; UnitOfWork.Repository <SYS_Card>().AddEntity(newCard); isOk = UnitOfWork.CommitAsync().Result; } else { repeatCardStr += cNo + " "; } } } if (repeatCardStr.Length > 0) { res = "警告:学生添加成功,但是卡" + repeatCardStr + "已存在,无法添加"; } } } else//修改 { UnitOfWork.Repository <SYS_Student>().UpdateEntity(obj); var isOk = UnitOfWork.CommitAsync().Result; if (isOk > 0) { res = "OK,学生修改成功"; } else { res = "学生信息修改失败\r\n"; } ///建卡 //检索该学生已有卡 var stuOldCards = UnitOfWork.Repository <SYS_Card>().GetEntitiesAsync(x => x.CardMasterId == obj.ID && x.CardType == (byte)CardType.学生卡).Result; if (isOk > 0 && null != cardNos && cardNos.Count > 0) { var repeatCardStr = ""; foreach (var cNo in cardNos) { if (stuOldCards.FindIndex(delegate(SYS_Card card) { return(card.CardNo == cNo); }) < 0) { var oldCard = UnitOfWork.Repository <SYS_Card>().GetEntitiesAsync(x => x.CardNo == cNo && x.SchoolId == mlUser.School.ID && x.Status == (byte)CardStatus.正常) .Result.FirstOrDefault(); if (oldCard == null) { SYS_Card newCard = new SYS_Card { CardNo = cNo, CardMasterId = obj.ID, SchoolId = mlUser.School.ID, CardType = (byte)CardType.学生卡, Status = (byte)CardStatus.正常, CreateTime = DateTime.Now }; UnitOfWork.Repository <SYS_Card>().AddEntity(newCard); isOk = UnitOfWork.CommitAsync().Result; } else { repeatCardStr += cNo + " "; } } } if (repeatCardStr.Length > 0) { res = "警告:卡" + repeatCardStr + "已存在,无法添加"; } } } } } return(res); }