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 { /// /// 版 本 Learun-ADMS-Ultimate V7.0.0 力软敏捷开发框架 /// Copyright (c) 2013-2018 上海力软信息技术有限公司 /// 创 建:超级管理员 /// 日 期:2019-08-19 17:50 /// 描 述:教师注册 /// 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(); /// /// 注册接口 /// 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(); 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 nameList = data.Select(a => a.LessonName).ToList(); //各个课程的报名人数上限 List maxNumList = data.Select(a => a.StuNumMax).ToList(); //各个课程的报名人数 List 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 result = new List(); 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 list = new List(); 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 yearAndSemesterList = new List(); List rateList = new List(); 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(); 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 lessonInfoSortNum = new List(); 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 processNum1 = new List(); 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(); var gradeNum = new List(); 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(); var gradeNum = new List(); 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(); 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(); var currentYesValue = new List(); var currentNoValue = new List(); 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(); var majorValue = new List(); 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 获取数据 /// /// 获取页面显示列表分页数据 /// /// /// public Response GetPageList(dynamic _) { ReqPageParam parameter = this.GetReqData(); 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); } /// /// 获取页面显示列表数据 /// /// /// 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); } /// /// 获取表单数据 /// /// /// public Response GetForm(dynamic _) { string keyValue = this.GetReqData(); var EmpInfoData = empInfoIBLL.GetEmpInfoEntity(keyValue); var jsonData = new { EmpInfo = EmpInfoData, }; return Success(jsonData); } #endregion #region 提交数据 /// /// 头像 /// /// /// private Response GetSavePhoto(dynamic _) { var model = this.GetReqData(); 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); } /// /// 删除实体数据 /// /// /// public Response DeleteForm(dynamic _) { string keyValue = this.GetReqData(); empInfoIBLL.DeleteEntity(keyValue); return Success("删除成功!"); } /// /// 保存实体数据(新增、修改) /// /// /// public Response SaveForm(dynamic _) { ReqFormEntity parameter = this.GetReqData(); EmpInfoEntity entity = parameter.strEntity.ToObject(); empInfoIBLL.SaveEntity(this.userInfo, parameter.keyValue, entity); return Success("保存成功!"); } #endregion #region 私有类 /// /// 表单实体类 /// private class ReqFormEntity { public string keyValue { get; set; } public string strEntity { get; set; } } #endregion } }