|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689 |
- using Nancy;
- using Learun.Util;
- using System.Collections.Generic;
- using Learun.Application.TwoDevelopment.EducationalAdministration;
- using static Learun.Application.WebApi.Modules.StuInfoFreshApi;
- using System;
- using System.IO;
- using System.Linq;
- using Learun.Application.Base.SystemModule;
- using Learun.Application.OA;
- using Learun.Application.OA.File.FileInfo;
- using Learun.Application.TwoDevelopment.LogisticsManagement;
- using Learun.Application.TwoDevelopment.LR_Desktop;
- using Learun.Application.WorkFlow;
- using Microsoft.Ajax.Utilities;
-
- namespace Learun.Application.WebApi
- {
- /// <summary>
- /// 版 本 Learun-ADMS-Ultimate V7.0.0 力软敏捷开发框架
- /// Copyright (c) 2013-2018 上海力软信息技术有限公司
- /// 创 建:超级管理员
- /// 日 期:2019-08-19 17:50
- /// 描 述:教师注册
- /// </summary>
-
- public class StatisticsApi : BaseNoLoginApi
- {
- private EmpInfoIBLL empInfoIBLL = new EmpInfoBLL();
- private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL();
- private ClassInfoIBLL classInfoIBLL = new ClassInfoBLL();
- private ClassroomInfoIBLL classroomInfoIBLL = new ClassroomInfoBLL();
- private AnnexesFileIBLL annexesFileIBLL = new AnnexesFileBLL();
- private TeachSwitchIBLL teachSwitchIBLL = new TeachSwitchBLL();
- private OpenLessonPlanOfElectiveIBLL openLessonPlanOfElectiveIBLL = new OpenLessonPlanOfElectiveBLL();
- private StuScoreIBLL stuScoreIBLL = new StuScoreBLL();
- private ArrangeLessonTermIBLL arrangeLessonTermIBLL = new ArrangeLessonTermBLL();
- private StuScoreNotPassIBLL stuScoreNotPassIBLL = new StuScoreNotPassBLL();
- private StuScoreNotPassTwoIBLL stuScoreNotPassTwoIBLL = new StuScoreNotPassTwoBLL();
- private EADateArrangeIBLL eADateArrangeIBLL = new EADateArrangeBLL();
- private NewsIBLL newsIbll = new NewsBLL();
- private NoticeIBLL noticeIBLL = new NoticeBLL();
- private SYS_SendMessageIBLL sendMessageIBLL = new SYS_SendMessageBLL();
- private Sys_SendFileIBLL sys_SendFileIBLL = new Sys_SendFileBLL();
- private FileInfoIBLL fileInfoIBLL = new FileInfoBLL();
- private Sys_UpdateRecordIBLL sys_UpdateRecordIBLL = new Sys_UpdateRecordBLL();
- private LessonInfoIBLL lessonInfoIBLL = new LessonInfoBLL();
- private CdLessonSortDetailIBLL cdLessonSortDetailIBLL = new CdLessonSortDetailBLL();
- private NWFSchemeIBLL nWFSchemeIBLL = new NWFSchemeBLL();
- private NWFProcessIBLL processIbll = new NWFProcessBLL();
- private DataItemIBLL dataItemIbll = new DataItemBLL();
- private StuPunishmentIBLL stuPunishmentIBLL = new StuPunishmentBLL();
- private StuEncourgementIBLL stuEncourgementIBLL = new StuEncourgementBLL();
- private AccommodationIBLL accommodationIBLL = new AccommodationBLL();
- private StuAttendanceIBLL stuAttendanceIBLL = new StuAttendanceBLL();
- StuInfoBasicTwoIBLL stuInfoBasicTwoIbll=new StuInfoBasicTwoBLL();
-
-
- /// <summary>
- /// 注册接口
- /// <summary>
- public StatisticsApi()
- : base("/Statistics")
- {
- Get["/electiveCcourse"] = ElectiveCourse;//选修课
- Get["/semesterAndYear"] = SemesterAndYear;//当前学年学期
- Get["/scoreEntry"] = ScoreEntry;//成绩录入
- Post["/classHour"] = ClassHour;//课时
- Post["/teacherWorkload"] = TeacherWorkload;//教师工作量
- Get["/makeUpExam"] = MakeUpExam;//补考
- Post["/eaDateArrange"] = EADateArrange;//教学工作安排
- Get["/oaNews"] = OaNews;//新闻公告
- Get["/oaEmails"] = OaEmails;//邮件
- Get["/sendFiles"] = SendFiles;//公文
- Get["/cloudFiles"] = CloudFiles;//云盘
- Get["/operationLog"] = OperationLog;//操作日志
- Get["/schoolInfo"] = SchoolInfo;//学校信息
- Get["/nwfInfo"] = NwfInfo;//流程信息
- Get["/stuPunishment"] = StuPunishmentInfo;//学生班级处分
- Get["/stuEncourgement"] = StuEncourgementInfo;//学生班级奖励
- Get["/dormitoryInfo"] = DormitoryInfo;//宿舍信息
- Get["/stuAttendance"] = StuAttendance;//全校考勤
- Post["/getStuInfo"] = GetStuNoByAccount;
- Post["/getEmpInfo"] = GetEmpNoByAccount;
-
-
-
- }
-
- private Response SemesterAndYear(dynamic _)
- {
- var b = Common.GetSemesterAndYear();
- object result = new { b.Semester, b.AcademicYearLong, b.AcademicYearShort };
- return Success(result);
- }
- private Response ElectiveCourse(dynamic _)
- {
- string pagination =
- "{\"rows\":1000,\"page\":1,\"sidx\":\"AcademicYearNo,Semester\",\"sord\":\"desc\",\"records\":0,\"total\":0}";
- string queryJson = "{}";
-
- Pagination paginationobj = pagination.ToObject<Pagination>();
- var data = openLessonPlanOfElectiveIBLL.GetPageListOfMerge(paginationobj, queryJson).OrderByDescending(x => x.AcademicYearNo).ThenByDescending(x => x.Semester).ThenBy(x => x.LessonNo);
-
- //选修课数量
- var lessonNum = data.Count();
- //选修课报名人数
- var peopleNum = data.Sum(a => a.StuNumOfApply);
- //课程名称
- List<string> nameList = data.Select(a => a.LessonName).ToList();
- //各个课程的报名人数上限
- List<int?> maxNumList = data.Select(a => a.StuNumMax).ToList();
- //各个课程的报名人数
- List<int?> numList = data.Select(a => a.StuNumOfApply).ToList();
- object result = new { lessonNum, peopleNum, nameList, maxNumList, numList };
-
- return Success(result);
- }
- public Response GetEmpNoByAccount(dynamic _)
- {
- string account = this.Request.Form.account.ToString();
- var stuEntity = empInfoIBLL.GetEmpInfoEntityByEmpNo(account);
- return Success(stuEntity);
- }
- public Response GetStuNoByAccount(dynamic _)
- {
- string account = this.Request.Form.account.ToString();
- var stuEntity = stuInfoBasicIBLL.GetStuNoByAccount(account);
- return Success(stuEntity);
- }
- private Response ScoreEntry(dynamic _)
- {
- var data = stuScoreIBLL.GetList("{}");
- //已完成录入
- var finishNum = data.Count(a => a.CheckMark == "1");
- //未完成录入
- var unFinishNum = data.Count(a => a.CheckMark == "0");
- //录入率
- var finishRate = (Convert.ToDouble(finishNum) / Convert.ToDouble(data.Count())).ToString("0.00%");
- var unFinishRate = (Convert.ToDouble(unFinishNum) / Convert.ToDouble(data.Count())).ToString("0.00%");
-
- object result = new { finishNum, unFinishNum, finishRate, unFinishRate };
-
- return Success(result);
- }
-
- private Response ClassHour(dynamic _)
- {
- string semester = this.Request.Form.semester.ToString();
- string year = this.Request.Form.year.ToString();
- var data = arrangeLessonTermIBLL.GetList("{}").ToList()
- .Where(a => a.AcademicYearNo == year && a.Semester == semester);
-
- var data1 = data.GroupBy(a => a.LessonDate.ToDate().Month)
- .Select(a => new { a.Key, num = a.Count() })
- .OrderBy(a => a.Key);
- //总课时数
- var allNum = data.Count();
- var month = data1.Select(a => a.Key).ToList();
- var num = data1.Select(a => a.num);
-
- object result = new { allNum, month, num };
-
-
- return Success(result);
- }
-
- private Response TeacherWorkload(dynamic _)
- {
- string semester = this.Request.Form.semester.ToString();
- string year = this.Request.Form.year.ToString();
- var data = arrangeLessonTermIBLL.GetList("{}").ToList()
- .Where(a => a.AcademicYearNo == year && a.Semester == semester)
- .GroupBy(a => a.EmpNo).Select(a => new { a.Key, num = a.Count() }).OrderByDescending(a => a.num).Take(10);
- List<object> result = new List<object>();
- foreach (var item in data)
- {
- var empEntity = empInfoIBLL.GetEmpInfoEntityByEmpNo(item.Key);
- var photoPath = string.Empty;
- if (empEntity != null)
- {
- var annexEntity = annexesFileIBLL.GetEntityByFolderId(empEntity.Photo);
- photoPath = annexEntity?.F_FilePath;
- if (!string.IsNullOrEmpty(photoPath))
- {
- photoPath = "/" + photoPath.Substring(photoPath.IndexOf("Resource"));
- }
- }
- result.Add(new { empName = empEntity?.EmpName, photoUrl = photoPath, item.num });
- }
-
- return Success(result);
- }
-
- private Response MakeUpExam(dynamic _)
- {
- var currentYearAndSe = Common.GetSemesterAndYear();
- var currentYear = currentYearAndSe.AcademicYearShort.Substring(0, 2).ToInt() - 2;
- var currentSemester = currentYearAndSe.Semester;
- List<object> list = new List<object>();
-
- for (int i = 1; i < 4; i++)
- {
- if (currentSemester == "2")
- {
- currentYear = currentYear + 1;
- currentSemester = "1";
- }
- else
- {
- currentSemester = "2";
- }
- var yearTwo = $"{currentYear.ToString()}-{(currentYear + 1).ToString()}";
- list.Add(new { year = yearTwo, semester = currentSemester });
-
- }
- list.Add(new { year = currentYearAndSe.AcademicYearShort, semester = currentYearAndSe.Semester });
-
- List<string> yearAndSemesterList = new List<string>();
- List<string> rateList = new List<string>();
- var currentPassNum = 0;
- var currentRate = string.Empty;
- foreach (dynamic item in list)
- {
- var paramYear = item.year.ToString();
- var paramSemester = item.semester.ToString();
-
- var all = stuScoreIBLL.GetList("{}").Where(a => a.AcademicYearNo == paramYear && a.Semester == paramSemester).ToList()
- .GroupBy(a => a.StuNo).Count();
- var pass1 = stuScoreNotPassIBLL.GetList("{}")
- .Where(a => a.AcademicYearNo == paramYear && a.Semester == paramSemester)
- .Select(a => a.StuNo)
- .ToList();
- var pass2 = stuScoreNotPassTwoIBLL.GetList("{}")
- .Where(a => a.AcademicYearNo == paramYear && a.Semester == paramSemester)
- .Select(a => a.StuNo).ToList();
- pass1.AddRange(pass2);
- pass1 = pass1.Distinct().ToList();
- var rate = (Convert.ToDouble(pass1.Count()) / Convert.ToDouble(all) * 100).ToString("0.00");
- yearAndSemesterList.Add($"{paramYear}学年 第{paramSemester}学期");
- double doubleRate;
- if (!double.TryParse(rate, out doubleRate))
- {
- rate = "0";
- }
- rateList.Add(rate);
-
- //记录本学期
- if (paramYear == currentYearAndSe.AcademicYearShort && paramSemester == currentYearAndSe.Semester)
- {
- currentPassNum = pass1.Count();
- currentRate = rate;
-
- }
-
- }
- return Success(new { currentPassNum, currentRate, yearAndSemesterList, rateList });
- }
-
-
- private Response EADateArrange(dynamic _)
- {
- string year = this.Request.Form.year.Value;
- string semester = this.Request.Form.semester.Value;
- string queryJson = "{}";
- if (!string.IsNullOrEmpty(year))
- {
- queryJson = $"{{\"AcademicYearNo\":\"{year}\",\"Semester\":\"{semester}\"}}";
- if (string.IsNullOrEmpty(semester))
- {
- queryJson = $"{{\"AcademicYearNo\":\"{year}\"}}";
- }
-
- }
-
- string pagination =
- "{\"rows\":30,\"page\":1,\"sidx\":\"AcademicYearNo,Semester\",\"sord\":\"desc\",\"records\":0,\"total\":0}";
- Pagination paginationobj = pagination.ToObject<Pagination>();
- var data = eADateArrangeIBLL.GetPageList(paginationobj, queryJson);
- return Success(data);
- }
-
- private Response OaNews(dynamic _)
- {
- var beginTime = DateTime.Now.AddMonths(-12);
- var data = noticeIBLL.GetList("", "");
- var news = data.Where(a => a.F_ReleaseTime >= beginTime && a.F_ReleaseTime <= DateTime.Now);
- var monthNews = news.GroupBy(a => a.F_ReleaseTime.ToDate().Month).Select(a => new { a.Key, num = a.Count() }).OrderBy(a => a.Key);
- var monthList = monthNews.Select(a => a.Key).ToList();
- var numList = monthNews.Select(a => a.num).ToList();
- return Success(new { allNum = data.Count(), monthList, numList });
-
-
- }
-
-
- private Response OaEmails(dynamic _)
- {
- var beginTime = DateTime.Now.AddMonths(-12);
- var data = sendMessageIBLL.GetList();
- var emails = data.Where(a => a.SENDTIME >= beginTime && a.SENDTIME <= DateTime.Now);
- var monthEmails = emails.GroupBy(a => a.SENDTIME.ToDate().Month).Select(a => new { a.Key, num = a.Count() })
- .OrderBy(a => a.Key);
- var monthList = monthEmails.Select(a => a.Key).ToList();
- var numList = monthEmails.Select(a => a.num).ToList();
-
- return Success(new { allNum = data.Count(), monthList, numList });
- }
- private Response SendFiles(dynamic _)
- {
- var beginTime = DateTime.Now.AddMonths(-12);
- var data = sys_SendFileIBLL.GetList().Where(a => a.STypeId == 1);
- var emails = data.Where(a => a.SendTime >= beginTime && a.SendTime <= DateTime.Now);
- var monthEmails = emails.GroupBy(a => a.SendTime.ToDate().Month).Select(a => new { a.Key, num = a.Count() })
- .OrderBy(a => a.Key);
- var monthList = monthEmails.Select(a => a.Key).ToList();
- var numList = monthEmails.Select(a => a.num).ToList();
-
- return Success(new { allNum = data.Count(), monthList, numList });
- }
- private Response CloudFiles(dynamic _)
- {
- var beginTime = DateTime.Now.AddMonths(-12);
- var data = fileInfoIBLL.GetList();
- var emails = data.Where(a => a.F_CreateDate >= beginTime && a.F_CreateDate <= DateTime.Now);
- var monthEmails = emails.GroupBy(a => a.F_CreateDate.ToDate().Month).Select(a => new { a.Key, num = a.Count() })
- .OrderBy(a => a.Key);
- var monthList = monthEmails.Select(a => a.Key).ToList();
- var numList = monthEmails.Select(a => a.num).ToList();
-
- return Success(new { allNum = data.Count(), monthList, numList });
- }
-
-
- private Response OperationLog(dynamic _)
- {
- var onLineNum = sys_UpdateRecordIBLL.GetOnlineUserNum().OnlineUserNum;
- var data = sys_UpdateRecordIBLL.GetLogList();
- var loginNum = data.Count(a => a.F_OperateType == "登录");
- var operationNum = data.Count();
-
- string[] aaa = { "null", "敏捷开发框架", "数字化智慧校园", "Learun.敏捷开发框架", "登录" };
- var ranking = data.GroupBy(a => a.F_Module)
- .Where(a => !aaa.Contains(a.Key))
- .Where(a => a.Key != null)
- .Select(a => new { a.Key, num = a.Count() }).OrderByDescending(a => a.num).Take(10);
-
- var name = ranking.Select(a => a.Key);
- var num = ranking.Select(a => a.num);
-
- return Success(new { onLineNum, loginNum, operationNum, name, num });
- }
-
- private Response SchoolInfo(dynamic _)
- {
- var empInfo = empInfoIBLL.GetAllList();
- var empNum = empInfo.Count();
- var wEmpNum = empInfo.Count(a => a.GenderNo == true);
- var mEmpNum = empInfo.Count(a => a.GenderNo == false);
- var stuInfo = stuInfoBasicIBLL.GetAllList();
- var stuNum = stuInfo.Count();
- var wStuNum = stuInfo.Count(a => a.GenderNo == true);
- var mStuNum = stuInfo.Count(a => a.GenderNo == false);
- //教育云平台
- //var stuInfo = stuInfoBasicTwoIbll.GetList("");
- //var stuNum = stuInfo.Count();
- //var wStuNum = stuInfo.Count(a => a.Sex == "1");
- //var mStuNum = stuInfo.Count(a => a.Sex == "0");
- var lessonData = lessonInfoIBLL.GetAllLesson();
- var lessonSortDetailData = cdLessonSortDetailIBLL.GetAllList();
- var lessonInfoData = lessonData.GroupJoin(lessonSortDetailData, a => a.LessonSortDetailNo,
- b => b.LessonSortDetailNo, (a, b) => new { a, b });
- var lessonInfoNum = lessonInfoData.Count();
- var lessonInfoSort = lessonInfoData.GroupBy(m => m.a.LessonSortDetailNo)
- .Select(m => new { name = string.IsNullOrEmpty(m.Key) ? "其他" : m.Key, num = m.Count() });
- List<object> lessonInfoSortNum = new List<object>();
- foreach (var item in lessonInfoSort)
- {
-
- var sortName = lessonSortDetailData.FirstOrDefault(a => a.LessonSortDetailNo == item.name)?.LessonSortDetailName;
- if (string.IsNullOrEmpty(sortName))
- {
- sortName = "其他";
- }
- lessonInfoSortNum.Add(new { sortName, item.num });
-
- }
- var classinfoNum = classInfoIBLL.GetAllClass().Count();
- var classRoomNum = classroomInfoIBLL.GetAllList().Count();
- return Success(new { empNum, wEmpNum, mEmpNum, stuNum, wStuNum, mStuNum, lessonInfoNum, lessonInfoSortNum, classinfoNum, classRoomNum });
-
- }
-
- private Response NwfInfo(dynamic _)
- {
- var data = nWFSchemeIBLL.GetInfoList();
- var processData = processIbll.GetAllList();
-
- var dataItemDetails = dataItemIbll.GetDetailList("FlowSort");
- var joinData = data.Join(processData, a => a.F_SchemeId, b => b.F_SchemeId, (a, b) => new { a.F_Category, b.F_IsFinished });
- List<(string name, int num)> processList = new List<(string, int)>();
- List<string> processNum1 = new List<string>();
- foreach (var item in dataItemDetails)
- {
- processList.Add((item.F_ItemName, joinData.Count(a => a.F_Category == item.F_ItemName)));
- processNum1.Add(data.Count(a => a.F_Category == item.F_ItemName).ToString());
- }
- var processNum = data.Count();
- var runNum = joinData.Count(a => a.F_IsFinished == 0);
- var allNum = joinData.Count();
-
- processList = processList.OrderByDescending(a => Convert.ToInt32(a.num)).ToList();
- var processName = processList.Select(a => a.name).ToList();
- var processValue = processList.Select(a => a.num).ToList();
-
-
- return Success(new { processNum, runNum, allNum, processName, processValue, processNum1 });
-
- }
-
- private Response StuPunishmentInfo(dynamic _)
- {
- var data = stuPunishmentIBLL.GetAllList();
- var stuData = stuInfoBasicIBLL.GetAllList();
- var classData = classInfoIBLL.GetAllClass();
- var punishData = data.Join(stuData, a => a.StuNo, b => b.StuNo, (a, b) => new { a, b });
- var puClassData = classData.Join(punishData, a => a.ClassNo, b => b.b.ClassNo, (a, b) => new { a, b });
- var AllNum = punishData.Count();
- var TNum = punishData.Count(a => a.b.GenderNo == true);
- var MNum = punishData.Count(a => a.b.GenderNo == false);
-
- var classGroup = puClassData.GroupBy(a => a.a.Grade).Select(a => new { a.Key }).OrderBy(a => a.Key);
- var gradeName = new List<string>();
- var gradeNum = new List<string>();
- foreach (var gradeItem in classGroup)
- {
- gradeName.Add(gradeItem.Key);
- gradeNum.Add(puClassData.Where(a => a.a.Grade == gradeItem.Key).GroupBy(a => a.a.ClassNo).Count().ToString());
-
- }
- var gradeAllCount = puClassData.GroupBy(a => a.a.ClassNo).Count().ToString();
-
- return Success(new { AllNum, TNum, MNum, gradeAllCount, gradeName, gradeNum });
-
- }
- private Response StuEncourgementInfo(dynamic _)
- {
- var data = stuEncourgementIBLL.GetAllList();
- var stuData = stuInfoBasicIBLL.GetAllList();
- var classData = classInfoIBLL.GetAllClass();
- var punishData = data.Join(stuData, a => a.StuNo, b => b.StuNo, (a, b) => new { a, b });
- var puClassData = classData.Join(punishData, a => a.ClassNo, b => b.b.ClassNo, (a, b) => new { a, b });
- var AllNum = punishData.Count();
- var TNum = punishData.Count(a => a.b.GenderNo == true);
- var MNum = punishData.Count(a => a.b.GenderNo == false);
-
- var classGroup = puClassData.GroupBy(a => a.a.Grade).Select(a => new { a.Key, num = a.Count() }).OrderBy(a => a.Key);
- var gradeName = new List<string>();
- var gradeNum = new List<string>();
- foreach (var gradeItem in classGroup)
- {
- gradeName.Add(gradeItem.Key);
- gradeNum.Add(puClassData.Where(a => a.a.Grade == gradeItem.Key).GroupBy(a => a.a.ClassNo).Count().ToString());
-
- }
- var gradeAllCount = puClassData.GroupBy(a => a.a.ClassNo).Count();
- return Success(new { AllNum, TNum, MNum, gradeAllCount, gradeName, gradeNum });
-
- }
-
- private Response DormitoryInfo(dynamic _)
- {
- var dormitryInfoList = accommodationIBLL.GetDormitoryList();
- var data = accommodationIBLL.GetAllList();
- var dormitoryNum = data.Count(a => a.BuildType == "1");
- var roomNum = data.Count(a => a.BuildType == "4");
- var mRoomNum = data.Count(a => a.BuildType == "4" && a.Sex == "1");
- var wRoomNum = roomNum - mRoomNum;
-
- return Success(new { dormitryInfoList, dormitoryNum, roomNum, mRoomNum, wRoomNum });
- }
-
- private Response StuAttendance(dynamic _)
- {
- var beginTime = DateTime.Now.AddMonths(-12);
- var monthList = new List<DateTime>();
- for (int i = 0; i <= 12; i++)
- {
- monthList.Add(beginTime.AddMonths(i));
- }
-
- var data = stuAttendanceIBLL.GetAllList().Where(a => a.LessonDate >= beginTime && a.LessonDate <= DateTime.Now);
- var monthData = data.GroupBy(a => Convert.ToDateTime(a.LessonDate).Month).OrderBy(a => a.Key);
- var allattendanceNum = data.Count();
- var allAttendanceYesNum = data.Count(a => a.AttendOrNo == "是");
- var allAttendanceNoNum = allattendanceNum - allAttendanceYesNum;
-
- var allAttendanceYesRate =
- (Convert.ToDouble(allAttendanceYesNum) / Convert.ToDouble(allattendanceNum)).ToString("0.00");
- var allAttendanceNoRate =
- (Convert.ToDouble(allAttendanceNoNum) / Convert.ToDouble(allattendanceNum)).ToString("0.00");
-
- var attendanceNumList = monthData.Select(a => new { a.Key, allNum = a.Count(), yesNum = a.Count(b => b.AcademicYearNo == "是") }).ToList();
-
- var monthInfo = new List<string>();
- var currentYesValue = new List<string>();
- var currentNoValue = new List<string>();
- foreach (var monthItem in monthList)
- {
- var currentInfo = attendanceNumList.FirstOrDefault(a => a.Key == monthItem.Month);
- if (currentInfo != null)
- {
- currentYesValue.Add((Convert.ToDouble(currentInfo.yesNum) / Convert.ToDouble(currentInfo.allNum)).ToString("0.00"));
- currentNoValue.Add((Convert.ToDouble(currentInfo.allNum - currentInfo.yesNum) / Convert.ToDouble(currentInfo.allNum)).ToString("0.00"));
-
- }
- else
- {
- currentYesValue.Add("0.00");
- currentNoValue.Add("0.00");
- }
- monthInfo.Add(monthItem.ToString("yy-MM"));
- }
-
-
-
- var majorAttendanceInfo = data.GroupBy(a => a.MajorName).Select(a =>
- new { a.Key, allNum = a.Count(), yesNum = a.Count(b => b.AttendOrNo == "是") });
- var majorNameList = new List<string>();
- var majorValue = new List<string>();
- foreach (var majorItem in majorAttendanceInfo)
- {
- majorNameList.Add(majorItem.Key);
- majorValue.Add((Convert.ToDouble(majorItem.yesNum) / Convert.ToDouble(majorItem.allNum)).ToString("0.00"));
- }
-
- return Success(new { allAttendanceYesRate, allAttendanceNoRate, monthInfo, currentYesValue, currentNoValue, majorNameList, majorValue });
-
- }
-
-
-
-
-
- #region 获取数据
-
- /// <summary>
- /// 获取页面显示列表分页数据
- /// <summary>
- /// <param name="_"></param>
- /// <returns></returns>
- public Response GetPageList(dynamic _)
- {
- ReqPageParam parameter = this.GetReqData<ReqPageParam>();
- var data = empInfoIBLL.GetPageList(parameter.pagination, parameter.queryJson);
- var jsonData = new
- {
- rows = data,
- total = parameter.pagination.total,
- page = parameter.pagination.page,
- records = parameter.pagination.records
- };
- return Success(jsonData);
- }
- /// <summary>
- /// 获取页面显示列表数据
- /// <summary>
- /// <param name="_"></param>
- /// <returns></returns>
- public Response GetList(dynamic _)
- {
- string queryJson = this.GetReqData();
- var data = empInfoIBLL.GetList(queryJson);
- return Success(data);
- }
-
-
- public Response RegisterButton(dynamic _)
- {
- var result = teachSwitchIBLL.FindFirst("js").ToString();
- return Success(result);
- }
- /// <summary>
- /// 获取表单数据
- /// <summary>
- /// <param name="_"></param>
- /// <returns></returns>
- public Response GetForm(dynamic _)
- {
- string keyValue = this.GetReqData();
- var EmpInfoData = empInfoIBLL.GetEmpInfoEntity(keyValue);
- var jsonData = new
- {
- EmpInfo = EmpInfoData,
- };
- return Success(jsonData);
- }
- #endregion
-
- #region 提交数据
-
-
- /// <summary>
- /// 头像
- /// </summary>
- /// <param name="_"></param>
- /// <returns></returns>
- private Response GetSavePhoto(dynamic _)
- {
- var model = this.GetReqData<PhotoModel>();
-
- var folderId = Guid.NewGuid().ToString();
- string filePath = Config.GetValue("AnnexesFile");
- string uploadDate = DateTime.Now.ToString("yyyyMMdd");
- string FileEextension = ".png";
- string fileGuid = Guid.NewGuid().ToString();
- string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, model.account, uploadDate, fileGuid, FileEextension);
-
- //创建文件夹
- string path = Path.GetDirectoryName(virtualPath);
- Directory.CreateDirectory(path);
- AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
- if (!System.IO.File.Exists(virtualPath))
- {
- //byte[] bytes = Convert.FromBase64String(model.Base64Url.Replace("data:image/jpeg;base64,", ""));
- byte[] bytes = Convert.FromBase64String(model.Base64Url.Substring(model.Base64Url.IndexOf("base64,") + 7));
- FileInfo file = new FileInfo(virtualPath);
- FileStream fs = file.Create();
- fs.Write(bytes, 0, bytes.Length);
- fs.Close();
-
- //文件信息写入数据库
- fileAnnexesEntity.F_Id = fileGuid;
- fileAnnexesEntity.F_FileName = "userphoto.png";
- fileAnnexesEntity.F_FilePath = virtualPath;
- fileAnnexesEntity.F_FileSize = bytes.Length.ToString();
- fileAnnexesEntity.F_FileExtensions = FileEextension;
- fileAnnexesEntity.F_FileType = FileEextension.Replace(".", "");
- annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity);
- }
-
- var data = new
- {
- Url = virtualPath.Substring(virtualPath.IndexOf("Resource")),
- AnnexesFileId = fileGuid
- };
-
- return Success(data);
- }
-
- /// <summary>
- /// 删除实体数据
- /// <param name="_"></param>
- /// <summary>
- /// <returns></returns>
- public Response DeleteForm(dynamic _)
- {
- string keyValue = this.GetReqData();
- empInfoIBLL.DeleteEntity(keyValue);
- return Success("删除成功!");
- }
- /// <summary>
- /// 保存实体数据(新增、修改)
- /// <param name="_"></param>
- /// <summary>
- /// <returns></returns>
- public Response SaveForm(dynamic _)
- {
- ReqFormEntity parameter = this.GetReqData<ReqFormEntity>();
- EmpInfoEntity entity = parameter.strEntity.ToObject<EmpInfoEntity>();
- empInfoIBLL.SaveEntity(this.userInfo, parameter.keyValue, entity);
- return Success("保存成功!");
- }
- #endregion
-
- #region 私有类
-
- /// <summary>
- /// 表单实体类
- /// <summary>
- private class ReqFormEntity
- {
- public string keyValue { get; set; }
- public string strEntity { get; set; }
- }
- #endregion
-
- }
- }
|