|
- using Dapper;
- using Learun.DataBase.Repository;
- using Learun.Util;
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Linq;
- using System.Text;
-
- namespace Learun.Application.TwoDevelopment.EducationalAdministration
- {
- /// <summary>
- /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
- /// Copyright (c) 2013-2018 北京泉江科技有限公司
- /// 创 建:超级管理员
- /// 日 期:2019-06-14 10:24
- /// 描 述:教师考勤
- /// </summary>
- public class TeachAttendanceService : RepositoryFactory
- {
- #region 获取数据
-
- /// <summary>
- /// 获取页面显示列表数据
- /// <summary>
- /// <param name="queryJson">查询参数</param>
- /// <returns></returns>
- public IEnumerable<Teach_attendanceEntity> GetPageList(Pagination pagination, string queryJson)
- {
- try
- {
- var strSql = new StringBuilder();
- strSql.Append("SELECT t.* ");
- strSql.Append(" FROM Teach_attendance t ");
- strSql.Append(" WHERE 1=1 ");
- var queryParam = queryJson.ToJObject();
- // 虚拟参数
- var dp = new DynamicParameters(new { });
- if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
- {
- dp.Add("startTime", queryParam["StartTime"].ToDate(), DbType.DateTime);
- dp.Add("endTime", queryParam["EndTime"].ToDate(), DbType.DateTime);
- strSql.Append(" AND ( t.ClockTime >= @startTime AND t.ClockTime <= @endTime ) ");
- }
- return this.BaseRepository("CollegeMIS").FindList<Teach_attendanceEntity>(strSql.ToString(), dp, pagination);
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
- internal object GetAttendanceByEmpNo(string empNo)
- {
- try
- {
- var entityList = this.BaseRepository("CollegeMIS").FindList<Teach_attendanceEntity>(a => a.EmpNo == empNo).ToList();
-
- var dataK = entityList.GroupBy(a => a.ClockTime?.ToString("yyyyMMdd"))
- .Select(a => new
- {
- key = a.Key,
- y = a.Key.Substring(0, 4),
- m = a.Key.Substring(4, 2),
- d = a.Key.Substring(6),
- day = $"{entityList.FirstOrDefault(b => b.ClockTime?.ToString("yyyyMMdd") == a.Key)?.ClockTime?.ToString("yyyy年MM月dd日")} {System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetDayName(Convert.ToDateTime(entityList.FirstOrDefault(b => b.ClockTime?.ToString("yyyyMMdd") == a.Key)?.ClockTime).DayOfWeek)}",
- list = entityList.Where(b => b.ClockTime?.ToString("yyyyMMdd") == a.Key).OrderBy(b => b.ClockTime).Select(b => new { time = b.ClockTime?.ToString("HH:mm"), location = b.ClockPlace, status = "1" }),
- state = "1"
- });
-
- return dataK;
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
- /// <summary>
- /// 获取Teach_attendance表实体数据
- /// <param name="keyValue">主键</param>
- /// <summary>
- /// <returns></returns>
- public Teach_attendanceEntity GetTeach_attendanceEntity(string keyValue)
- {
- try
- {
- return this.BaseRepository("CollegeMIS").FindEntity<Teach_attendanceEntity>(keyValue);
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
- /// <summary>
- /// 授课考勤明细统计
- /// <summary>
- /// <param name="queryJson">查询参数</param>
- /// <returns></returns>
- public IEnumerable<Teach_attendanceEntity> GetStatisticDetailList(Pagination pagination, string queryJson)
- {
- try
- {
- var queryParam = queryJson.ToJObject();
- var datest = DateTime.Now.ToDateString();
- var dateet = datest;
- if (!queryParam["startTime"].IsEmpty())
- {
- datest = queryParam["startTime"].ToDate().ToDateString();
- }
- if (!queryParam["endTime"].IsEmpty())
- {
- dateet = queryParam["endTime"].ToDate().ToDateString();
- }
- var strSql1 = $@"select a.ALTId as ALTIdInArrange,a.LessonDate,a.AcademicYearNo,a.Semester, a.LessonNo, a.LessonName, a.EmpNo as EmpNoInArrange, a.EmpName as EmpNameInArrange,a.ClassroomNo,a.LessonTime,
- a.StartTime, a.EndTime,a.LessonSortNo as LessonSortNoInArrange,e.F_DepartmentId,t.ID,t.EmpNo,t.EmpName,t.ALTId,t.ALTOEId,t.LessonSortNo,t.ADType,t.ADTime,t.ClockTime,t.ClockStatus,t.ClockPlace,t.ADPhoto,t.ALon,t.ALat,t.AIsOut,t.ARemark,e.photo,t.IsFit,t.Img
- from ArrangeLessonTerm a
- left join Teach_Attendance t on a.ALTId=t.ALTId and t.LessonSortNo='1'
- left join EmpInfo e on a.EmpNo=e.EmpNo
- where a.LessonDate >='{datest}' and a.LessonDate <= '{dateet}'";
- var strSql2 = $@"select a.Id as ALTIdInArrange,a.LessonDate,a.AcademicYearNo, a.Semester, a.LessonNo, a.LessonName,a.EmpNo as EmpNoInArrange, a.EmpName as EmpNameInArrange,a.ClassRoomNo as ClassroomNo,a.LessonSection as LessonTime,
- case when LEN(a.LessonTime)>0 then SUBSTRING(a.LessonTime,1,CHARINDEX('-',a.LessonTime)-1) else '' end as StartTime,
- case when LEN(a.LessonTime)>0 then SUBSTRING(a.LessonTime,CHARINDEX('-',a.LessonTime)+1,LEN(a.LessonTime)-CHARINDEX('-',a.LessonTime)) else '' end as EndTime,
- a.LessonSortNo as LessonSortNoInArrange,e.F_DepartmentId,t.ID,t.EmpNo,t.EmpName,t.ALTId,t.ALTOEId,t.LessonSortNo,t.ADType,t.ADTime,t.ClockTime,t.ClockStatus,t.ClockPlace,t.ADPhoto,t.ALon,t.ALat,t.AIsOut,t.ARemark,e.photo,t.IsFit,t.Img from ArrangeLessonTermOfElective a
- left join Teach_Attendance t on a.Id=t.ALTId and t.LessonSortNo='2'
- left join EmpInfo e on a.EmpNo=e.EmpNo
- where a.LessonDate >='{datest}' and a.LessonDate <= '{dateet}'";
- // 虚拟参数
- var dp = new DynamicParameters(new { });
- if (!queryParam["EmpNo"].IsEmpty())
- {
- dp.Add("EmpNo", queryParam["EmpNo"].ToString(), DbType.String);
- strSql1 += " AND a.EmpNo = @EmpNo";
- strSql2 += " AND a.EmpNo = @EmpNo";
- }
- if (!queryParam["EmpName"].IsEmpty())
- {
- dp.Add("EmpName", "%" + queryParam["EmpName"].ToString() + "%", DbType.String);
- strSql1 += " AND a.EmpName Like @EmpName";
- strSql2 += " AND a.EmpName Like @EmpName";
- }
- if (!queryParam["F_DepartmentId"].IsEmpty())
- {
- dp.Add("F_DepartmentId", queryParam["F_DepartmentId"].ToString(), DbType.String);
- strSql1 += " AND e.F_DepartmentId = @F_DepartmentId";
- strSql2 += " AND e.F_DepartmentId = @F_DepartmentId";
- }
- var strSql = new StringBuilder();
- strSql.Append(strSql1);
- strSql.Append(" union ");
- strSql.Append(strSql2);
- //某天记录列表
- var data = this.BaseRepository("CollegeMIS").FindList<Teach_attendanceEntity>(strSql.ToString(), dp)
- .GroupBy(a => new
- {
- a.ALTIdInArrange,
- a.LessonDate,
- a.AcademicYearNo,
- a.Semester,
- a.LessonNo,
- a.LessonName,
- a.EmpNoInArrange,
- a.EmpNameInArrange,
- a.ClassroomNo,
- a.LessonTime,
- a.StartTime,
- a.EndTime,
- a.LessonSortNoInArrange,
- a.F_DepartmentId,a.Photo
-
- }).Select(x => new Teach_attendanceEntity
- {
- ALTIdInArrange = x.Key.ALTIdInArrange,
- LessonDate = x.Key.LessonDate.ToDate().ToDateString(),
- AcademicYearNo = x.Key.AcademicYearNo,
- Semester = x.Key.Semester,
- LessonNo = x.Key.LessonNo,
- LessonName = x.Key.LessonName,
- EmpNoInArrange = x.Key.EmpNoInArrange,
- EmpNameInArrange = x.Key.EmpNameInArrange,
- ClassroomNo = x.Key.ClassroomNo,
- LessonTime = x.Key.LessonTime,
- StartTime = x.Key.StartTime,
- EndTime = x.Key.EndTime,
- LessonSortNoInArrange = x.Key.LessonSortNoInArrange,
- F_DepartmentId = x.Key.F_DepartmentId,
- Photo=x.Key.Photo,
- Group = x.Select(y => new Teach_attendanceEntity()
- {
- Photo=y.Photo,
- ADType = y.ADType,
- ClockTime = y.ClockTime,
- ClockStatus = y.ClockStatus,
- IsFit = y.IsFit,
- Img=y.Img
- }).ToList()
- }).OrderBy(x => x.LessonDate).ThenBy(x => Convert.ToInt32(x.LessonTime.Substring(1)));
- //结果列表
- var result = new List<Teach_attendanceEntity>();
- foreach (var item in data)
- {
- string photo = item.Photo;
- //上课时间
- var WorkTimeTemp = string.Format("{0} {1}", item.LessonDate, item.StartTime).ToDate();
- //下课时间
- var CloseTimeTemp = string.Format("{0} {1}", item.LessonDate, item.EndTime).ToDate();
- //课程应工作分钟数
- var WholeMinutes = (CloseTimeTemp - WorkTimeTemp).TotalMinutes.ToInt();
- //上课
- var adtype1 = item.Group.FirstOrDefault(x => x.ADType == "1");
- //下课
- var adtype2 = item.Group.FirstOrDefault(x => x.ADType == "2");
- //补充结果集
- item.TimePeriod = string.Format("{0}-{1}", item.StartTime, item.EndTime);
- item.ADStatusWork = adtype1 != null ? adtype1.ClockStatus : "6";
- item.ADStatusClose = adtype2 != null ? adtype2.ClockStatus : "6";
- item.ClockTimeWork = adtype1 != null ? adtype1.ClockTime.ToTimeString() : "-";
- item.ClockTimeClose = adtype2 != null ? adtype2.ClockTime.ToTimeString() : "-";
- item.ChidaoMinutes = adtype1 != null ? adtype1.ClockStatus == "2" ? (adtype1.ClockTime.Value - WorkTimeTemp).TotalMinutes.ToInt() : 0 : 0;
- item.ZaoTuiMinutes = adtype2 != null ? adtype2.ClockStatus == "3" ? (CloseTimeTemp - adtype2.ClockTime.Value).TotalMinutes.ToInt() : 0 : 0;
- item.ChuQinMinutes = adtype1 != null && adtype2 != null ? (adtype2.ClockTime.Value - adtype1.ClockTime.Value).TotalMinutes.ToInt() : 0;
- item.QueQinMinutes = adtype1 != null && adtype2 != null ? 0 : WholeMinutes;
- item.RestMinutes = 0;
- item.WorkMinutes = WholeMinutes == item.QueQinMinutes ? 0 : WholeMinutes - item.ChidaoMinutes - item.ZaoTuiMinutes - item.QueQinMinutes;
- item.Photo = photo;
- item.IsFitstr = (adtype1 != null ? adtype1.IsFit.ToString() : "") + "," + (adtype2 != null ? adtype2.IsFit.ToString() : "");
- item.Img = (adtype1 != null ? adtype1.Img : "") + "," + (adtype2 != null ? adtype2.Img : "");
-
- result.Add(item);
- }
- if (!queryParam["ClockStatus"].IsEmpty())
- {
- if (queryParam["ClockStatus"].ToString() == "0")//旷工
- {
- result = result.Where(x => x.ADStatusWork == "6" || x.ADStatusClose == "6").ToList();
- }
- else
- {
- result = result.Where(x => x.ADStatusWork == queryParam["ClockStatus"].ToString() || x.ADStatusClose == queryParam["ClockStatus"].ToString()).ToList();
- }
- }
- return result;
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowBusinessException(ex);
- }
- }
- }
-
- public string GetStatisticDetailimg(string teachno)
- {
- var strSql = new StringBuilder();
- strSql.Append("SELECT t.img ");
- strSql.Append(" FROM Teach_attendance t ");
- strSql.Append(" WHERE 1=1 and empno='"+teachno+"' and isfit=1 and img is not null");
-
- return this.BaseRepository("CollegeMIS").FindObject(strSql.ToString())?.ToString();
- }
- #endregion
-
- #region 提交数据
-
- /// <summary>
- /// 删除实体数据
- /// <param name="keyValue">主键</param>
- /// <summary>
- /// <returns></returns>
- public void DeleteEntity(string keyValue)
- {
- try
- {
- this.BaseRepository("CollegeMIS").Delete<Teach_attendanceEntity>(t => t.ID == keyValue);
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
- /// <summary>
- /// 保存实体数据(新增、修改)
- /// <param name="keyValue">主键</param>
- /// <summary>
- /// <returns></returns>
- public void SaveEntity(string keyValue, Teach_attendanceEntity entity)
- {
- try
- {
- if (!string.IsNullOrEmpty(keyValue))
- {
- entity.Modify(keyValue);
- this.BaseRepository("CollegeMIS").Update(entity);
- }
- else
- {
- entity.Create();
- this.BaseRepository("CollegeMIS").Insert(entity);
- }
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
- #endregion
-
- }
- }
|