| | |
| | | private readonly IAdmSigninService _signinService; |
| | | private readonly ISysAttachmentService _sysAttachmentService; |
| | | private readonly IAdmAttendanceRuleService _attendanceRuleService; |
| | | private readonly ILiaotianService _liaotianService; |
| | | private readonly IWfRunProcessService _wfRunProcessService; |
| | | private readonly IWfHistoryService _wfHistoryService; |
| | | private readonly IWfNeeddeelService _wfNeeddeelService; |
| | | private readonly IPltPageService _pltPageService; |
| | | [CheckLogin] |
| | | public SigninController(ILogger<SigninController> logger, IAdmSigninService signinService, ISysAttachmentService sysAttachmentService |
| | | , IAdmAttendanceRuleService attendanceRuleService) |
| | | , IAdmAttendanceRuleService attendanceRuleService, ILiaotianService liaotianService, IWfRunProcessService wfRunProcessService |
| | | , IWfHistoryService wfHistoryService, IWfNeeddeelService wfNeeddeelService |
| | | , IPltPageService pltPageService) |
| | | { |
| | | _logger = logger; |
| | | _signinService = signinService; |
| | | _sysAttachmentService = sysAttachmentService; |
| | | _attendanceRuleService = attendanceRuleService; |
| | | _liaotianService = liaotianService; |
| | | _wfRunProcessService = wfRunProcessService; |
| | | _wfHistoryService = wfHistoryService; |
| | | _wfNeeddeelService = wfNeeddeelService; |
| | | _pltPageService = pltPageService; |
| | | } |
| | | |
| | | #region 考勤签到打卡 |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | [DllImport("Iphlpapi.dll")] |
| | | private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length); |
| | | |
| | |
| | | search.userId = curentuser.Id; |
| | | return JsonConvert.SerializeObject(_signinService.SearchByPaging(search)); |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 我的考勤记录 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [CheckLogin] |
| | | public IActionResult SigninAll(string id) |
| | | { |
| | | JArray jar = new JArray(); |
| | | for (var i = 1; i <= 12; i++) |
| | | { |
| | | var jo = string.Format("\"code\":{0}, \"label\":\"{1}月\" ", i, i); |
| | | jar.Add(JObject.Parse("{" + jo + "}")); |
| | | |
| | | } |
| | | ViewBag.month = jar; |
| | | JArray Year = new JArray(); |
| | | for (var i = -1; i < 2; i++) |
| | | { |
| | | var jo = string.Format("\"code\":{0}, \"label\":\"{0}年\" ", DateTime.Now.Year + i); |
| | | Year.Add(JObject.Parse("{" + jo + "}")); |
| | | } |
| | | ViewBag.year = Year; |
| | | ViewBag.userid = id; |
| | | List<ActionEntity> actionlist = new List<ActionEntity>(); |
| | | ActionEntity actionEntity = new ActionEntity(); |
| | | actionEntity.OpenType = 0; |
| | | actionEntity.ActionUrl = ""; |
| | | actionEntity.ActionFun = "Search"; |
| | | actionEntity.PageIco = "fa fa-search"; |
| | | actionEntity.ActionName = "查询"; |
| | | actionlist.Add(actionEntity); |
| | | ViewData["ActionInfo"] = actionlist; |
| | | |
| | | return View(); |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 取得考勤记录 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | |
| | | [CheckLogin] |
| | | public string GetSigninListAll(AdmSignInDTOSearch search) |
| | | { |
| | | //var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); |
| | | //search.userId = curentuser.Id; |
| | | return JsonConvert.SerializeObject(_signinService.SearchByPaging(search)); |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | #region 请假与销假 |
| | | public IActionResult AskLeave(string signinId) |
| | | public IActionResult AskLeave(string id="", string StratTimeName = "", string EndTimeName = "") |
| | | { |
| | | ViewBag.SigninId = signinId; |
| | | AdmAskLeaveDTO admAskLeaveDTO = _signinService.GetAskLeave(signinId); |
| | | if (admAskLeaveDTO.StratTime.Equals(DateTime.MinValue)) |
| | | |
| | | var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); |
| | | ViewData["curentuser"] = curentuser; |
| | | |
| | | AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get(""); |
| | | |
| | | AdmAskLeaveDTO admAskLeaveDTO = new AdmAskLeaveDTO(); |
| | | if (!string.IsNullOrEmpty(id)) |
| | | { |
| | | admAskLeaveDTO.StratTime = DateTime.Now; |
| | | admAskLeaveDTO = _signinService.GetAskLeave(id); |
| | | |
| | | admAskLeaveDTO.StratTimeName = admAskLeaveDTO.StratTime.Value.ToString("yyyy-MM-dd HH:mm"); |
| | | admAskLeaveDTO.EndTimeName = admAskLeaveDTO.EndTime.Value.ToString("yyyy-MM-dd HH:mm"); |
| | | } |
| | | if (admAskLeaveDTO.EndTime.Equals(DateTime.MinValue)) |
| | | else |
| | | { |
| | | admAskLeaveDTO.EndTime = DateTime.Now; |
| | | admAskLeaveDTO.CreaterName = curentuser.UserName; |
| | | admAskLeaveDTO.Tittle = "请假申请(" + curentuser.UserName + ")"; |
| | | |
| | | |
| | | |
| | | |
| | | if (!string.IsNullOrWhiteSpace(StratTimeName)) |
| | | { |
| | | DateTime StratTimeName1; |
| | | if (DateTime.TryParse(StratTimeName, out StratTimeName1)) |
| | | { |
| | | admAskLeaveDTO.StratTimeName = StratTimeName1.AddHours(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[1])).ToString("yyyy-MM-dd HH:mm"); |
| | | |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | admAskLeaveDTO.StratTimeName = DateTime.Now.Date.AddHours(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[1])).ToString("yyyy-MM-dd HH:mm"); |
| | | |
| | | } |
| | | |
| | | if (!string.IsNullOrWhiteSpace(EndTimeName)) |
| | | { |
| | | DateTime EndTimeName1; |
| | | if (DateTime.TryParse(EndTimeName, out EndTimeName1)) |
| | | { |
| | | admAskLeaveDTO.EndTimeName = EndTimeName1.AddHours(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[1])).ToString("yyyy-MM-dd HH:mm"); |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | admAskLeaveDTO.EndTimeName = DateTime.Now.Date.AddHours(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[1])).ToString("yyyy-MM-dd HH:mm"); |
| | | |
| | | } |
| | | AdmAskLeaveDTO admAsk = jisianChecktime(DateTime.Parse(admAskLeaveDTO.StratTimeName), DateTime.Parse(admAskLeaveDTO.EndTimeName)); |
| | | |
| | | admAskLeaveDTO.LaveDay = admAsk.LaveDay; |
| | | admAskLeaveDTO.LavehHour = admAsk.LavehHour; |
| | | } |
| | | |
| | | |
| | | ViewData.Model = admAskLeaveDTO; |
| | | |
| | | ResultDataEntity<SysAttachmentDTO> results = new ResultDataEntity<SysAttachmentDTO>(); |
| | | if (!string.IsNullOrEmpty(id)) |
| | | { |
| | | SysAttachmentDTOSearch searchEntity = new SysAttachmentDTOSearch(); |
| | | searchEntity.page = 1; |
| | | searchEntity.rows = 1000; |
| | | searchEntity.AttObj = "AskLeave"; |
| | | searchEntity.AttObjid = id; |
| | | results = _sysAttachmentService.SearchByPaging(searchEntity); |
| | | } |
| | | ViewBag.attachment = results; |
| | | |
| | | ViewData["Lavetype"] = _liaotianService.GetSYScode("ADM_AskLeave", "Lavetype"); |
| | | |
| | | string shifoubiaoji = "A"; |
| | | string sifoudangqian = "A"; |
| | | string dangqianbuzhou = "提交"; |
| | | var lishiyijian = new List<WfHistoryDTO>(); |
| | | //流程相关 |
| | | if (!string.IsNullOrEmpty(id)) |
| | | { |
| | | var wfRunProcessDTO = _wfRunProcessService.GetList(id,"01").FirstOrDefault(); |
| | | if (wfRunProcessDTO == null) |
| | | { |
| | | shifoubiaoji = "D"; |
| | | sifoudangqian = "D"; |
| | | } |
| | | else |
| | | { |
| | | dangqianbuzhou = wfRunProcessDTO.Step; |
| | | //查询审批进度 |
| | | lishiyijian = _wfHistoryService.GetListshenpi(wfRunProcessDTO.Id); |
| | | if(wfRunProcessDTO.Step != "提交") |
| | | { |
| | | shifoubiaoji = "D"; |
| | | } |
| | | |
| | | //查询待办 |
| | | var chaxundaiban = _wfNeeddeelService.GetListTracking(wfRunProcessDTO.Id, wfRunProcessDTO.Step).Where(x=>x.DeelUserId == curentuser.Id).ToList(); |
| | | if(chaxundaiban!=null && chaxundaiban.Count > 0) |
| | | { |
| | | sifoudangqian = "A"; |
| | | } |
| | | else |
| | | { |
| | | sifoudangqian = "D"; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | ViewBag.shifoubiaoji = shifoubiaoji; |
| | | ViewBag.sifoudangqian = sifoudangqian; |
| | | ViewBag.lishiyijian = lishiyijian; |
| | | ViewBag.dangqianbuzhou = dangqianbuzhou; |
| | | return View(); |
| | | } |
| | | |
| | |
| | | var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); |
| | | ViewData["curentuser"] = curentuser; |
| | | admAsk.RecStatus = "A"; |
| | | if (String.IsNullOrEmpty(admAsk.Id)) |
| | | ResultEntity resultEntity = new ResultEntity(); |
| | | resultEntity.Result = false; |
| | | |
| | | if(admAsk.Step == "提交") |
| | | { |
| | | admAsk.Creater = curentuser.Id; |
| | | admAsk.Createtime = DateTime.Now; |
| | | //请假时间不能重叠 |
| | | //var qingjia = _signinService.GetAskLeaveChongdie(curentuser.Id, admAsk.StratTime.Value, admAsk.EndTime.Value); |
| | | // if (qingjia.Count > 0) |
| | | // { |
| | | // resultEntity.Result = false; |
| | | // resultEntity.Message = "该时间段已经有请假!"; |
| | | // return JsonConvert.SerializeObject(resultEntity); |
| | | // } |
| | | |
| | | ////请假超过三天,必须提前三天以上请假! |
| | | // if (admAsk.LaveDay.Value >= 3 && admAsk.StratTime.Value.Date < DateTime.Now.Date.AddDays(3)) |
| | | // { |
| | | // resultEntity.Result = false; |
| | | // resultEntity.Message = "请假超过三天,必须提前三天以上请假!"; |
| | | // return JsonConvert.SerializeObject(resultEntity); |
| | | // } |
| | | |
| | | //请假超过七天,必须提前七天以上请假! |
| | | if (admAsk.LaveDay.Value >= 7 && admAsk.StratTime.Value.Date < DateTime.Now.Date.AddDays(7)) |
| | | { |
| | | resultEntity.Result = false; |
| | | resultEntity.Message = "请假超过七天,必须提前七天以上请假!"; |
| | | return JsonConvert.SerializeObject(resultEntity); |
| | | } |
| | | } |
| | | else |
| | | |
| | | |
| | | if (String.IsNullOrEmpty(admAsk.Id)) |
| | | { |
| | | admAsk.Creater = curentuser.Id; |
| | | admAsk.Createtime = DateTime.Now; |
| | | } |
| | | else |
| | | { |
| | | admAsk.Modifier = curentuser.Id; |
| | | admAsk.Modifytime = DateTime.Now; |
| | | } |
| | | |
| | | |
| | | using (TransactionScope scope = new TransactionScope()) |
| | | { |
| | | admAsk.Modifier = curentuser.Id; |
| | | admAsk.Modifytime = DateTime.Now; |
| | | if (admAsk.Step == "提交") |
| | | { |
| | | resultEntity = _signinService.SaveAskLeave(admAsk); |
| | | if (resultEntity.Result == false) |
| | | { |
| | | return JsonConvert.SerializeObject(resultEntity); |
| | | } |
| | | |
| | | string[] Filepaths = admAsk.Filepath; |
| | | |
| | | if (Filepaths != null && Filepaths.Length > 0) |
| | | { |
| | | for (int i = 0; i < Filepaths.Length; i++) |
| | | { |
| | | if (string.IsNullOrEmpty(admAsk.attachmentid[i])) |
| | | { |
| | | SysAttachmentDTO sysAttachmentDTO = new SysAttachmentDTO(); |
| | | //sysAttachmentDTO.Id = |
| | | sysAttachmentDTO.AttObj = "AskLeave"; |
| | | sysAttachmentDTO.AttObjid = admAsk.Id; |
| | | sysAttachmentDTO.Filefullname = admAsk.Filefullname[i]; |
| | | sysAttachmentDTO.Filepath = admAsk.Filepath[i]; |
| | | sysAttachmentDTO.Creater = curentuser.Id; |
| | | sysAttachmentDTO.Modifier = curentuser.Id; |
| | | sysAttachmentDTO.Createtime = DateTime.Now; |
| | | sysAttachmentDTO.Modifytime = sysAttachmentDTO.Createtime; |
| | | |
| | | resultEntity = _sysAttachmentService.save(sysAttachmentDTO); |
| | | if (resultEntity.Result == false) |
| | | { |
| | | return JsonConvert.SerializeObject(resultEntity); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | //发起流程相关 |
| | | |
| | | resultEntity = _wfRunProcessService.WfAskLeave(admAsk.Id, admAsk.Step, admAsk.Tongguojujue, curentuser.Id, admAsk.Content, admAsk.Tittle, "v1"); |
| | | |
| | | scope.Complete(); |
| | | |
| | | } |
| | | |
| | | ResultEntity resultEntity = _signinService.SaveAskLeave(admAsk); |
| | | |
| | | return JsonConvert.SerializeObject(resultEntity); |
| | | |
| | | } |
| | | public IActionResult AskLeaveOff(string signinId) |
| | | |
| | | |
| | | [CheckLogin] |
| | | [HttpPost] |
| | | public string Checktime(DateTime StratTime, DateTime EndTime) |
| | | { |
| | | ViewBag.SigninId = signinId; |
| | | AdmAskLeaveOffDTO admAskLeaveOffDTO = _signinService.GetAskLeaveOff(signinId); |
| | | if (admAskLeaveOffDTO.StratTime.Equals(DateTime.MinValue)) |
| | | ResultEntity<AdmAskLeaveDTO> resultEntity = new ResultEntity<AdmAskLeaveDTO>(); |
| | | |
| | | if (EndTime<= StratTime) |
| | | { |
| | | admAskLeaveOffDTO.StratTime = DateTime.Now; |
| | | resultEntity.Result = false; |
| | | resultEntity.Message = "开始时间不能大于结束时间"; |
| | | return JsonConvert.SerializeObject(resultEntity); |
| | | } |
| | | if (admAskLeaveOffDTO.EndTime.Equals(DateTime.MinValue)) |
| | | |
| | | AdmAskLeaveDTO admAsk = jisianChecktime( StratTime, EndTime); |
| | | resultEntity.Result = true; |
| | | resultEntity.DataInfo = admAsk; |
| | | |
| | | |
| | | return JsonConvert.SerializeObject(resultEntity); |
| | | |
| | | } |
| | | |
| | | public AdmAskLeaveDTO jisianChecktime(DateTime StratTime, DateTime EndTime) |
| | | { |
| | | //string dateDiff = null; |
| | | AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get(""); |
| | | |
| | | var admAttendanceRulesDtlDTOs = _attendanceRuleService.GetDtlList(""); |
| | | |
| | | var jiejiari = admAttendanceRulesDtlDTOs.Where(x=>x.Name== "jiejiari").ToList(); |
| | | |
| | | var tiaoxiuri = admAttendanceRulesDtlDTOs.Where(x => x.Name == "tiaoxiuri").ToList(); |
| | | |
| | | var jiabanri = admAttendanceRulesDtlDTOs.Where(x => x.Name == "jiabanri").ToList(); |
| | | |
| | | //每天的考勤时间点 |
| | | string[] WorkingStart = admAttendanceRuleDTO.WorkingStart.Split('.'); |
| | | int WorkingStarthour = int.Parse(WorkingStart[0]); |
| | | int WorkingStartmin = int.Parse(WorkingStart[1]); |
| | | |
| | | string[] WorkingEnd = admAttendanceRuleDTO.WorkingEnd.Split('.'); |
| | | int WorkingEndhour = int.Parse(WorkingEnd[0]); |
| | | int WorkingEndmin = int.Parse(WorkingEnd[1]); |
| | | |
| | | |
| | | |
| | | string[] OffworkStart = admAttendanceRuleDTO.OffworkStart.Split('.'); |
| | | int OffworkStarthour = int.Parse(OffworkStart[0]); |
| | | int OffworkStartmin = int.Parse(OffworkStart[1]); |
| | | |
| | | string[] OffworkEnd = admAttendanceRuleDTO.OffworkEnd.Split('.'); |
| | | int OffworkEndhour = int.Parse(OffworkEnd[0]); |
| | | int OffworkEndmin = int.Parse(OffworkEnd[1]); |
| | | |
| | | //请假开始时间上班时间 |
| | | DateTime StratTimeWorkingStart = StratTime.Date.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin); |
| | | |
| | | DateTime StratTimeWorkingEnd = StratTime.Date.AddHours(WorkingEndhour).AddMinutes(WorkingEndmin); |
| | | |
| | | DateTime StratTimeOffworkStart = StratTime.Date.AddHours(OffworkStarthour).AddMinutes(OffworkStartmin); |
| | | |
| | | DateTime StratTimeOffworkEnd = StratTime.Date.AddHours(OffworkEndhour).AddMinutes(OffworkEndmin); |
| | | |
| | | |
| | | //请假结束时间上班时间 |
| | | |
| | | DateTime EndTimeWorkingStart = EndTime.Date.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin); |
| | | |
| | | DateTime EndTimeWorkingEnd = EndTime.Date.AddHours(WorkingEndhour).AddMinutes(WorkingEndmin); |
| | | |
| | | DateTime EndTimeOffworkStart = EndTime.Date.AddHours(OffworkStarthour).AddMinutes(OffworkStartmin); |
| | | |
| | | DateTime EndTimeOffworkEnd = EndTime.Date.AddHours(OffworkEndhour).AddMinutes(OffworkEndmin); |
| | | |
| | | //上班时间 |
| | | |
| | | TimeSpan shangwu = StratTimeWorkingEnd.Subtract(StratTimeWorkingStart); |
| | | |
| | | TimeSpan xiawu = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart); |
| | | |
| | | |
| | | |
| | | |
| | | int shangbanshijian = shangwu.Hours * 60 + shangwu.Minutes + xiawu.Hours * 60 + xiawu.Minutes; |
| | | |
| | | |
| | | int LavehTime = 0; |
| | | TimeSpan ts = EndTime.Subtract(StratTime); |
| | | for(int i=0;i<= ts.Days;i++) |
| | | { |
| | | admAskLeaveOffDTO.EndTime = DateTime.Now; |
| | | if (i == 0) |
| | | { |
| | | //是否上班日期 |
| | | if ((int)StratTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)StratTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) |
| | | { |
| | | //是否节假日 |
| | | if (jiejiari.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) |
| | | { |
| | | |
| | | LavehTime += 0; |
| | | } |
| | | else |
| | | { |
| | | |
| | | |
| | | |
| | | if (StratTime <= StratTimeWorkingStart) |
| | | { |
| | | LavehTime += shangbanshijian; |
| | | } |
| | | else if (StratTime <= StratTimeWorkingEnd) |
| | | { |
| | | TimeSpan shangwu1 = StratTimeWorkingEnd.Subtract(StratTime); |
| | | |
| | | TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart); |
| | | |
| | | |
| | | LavehTime += shangwu1.Hours * 60 + shangwu1.Minutes + xiawu1.Hours * 60 + xiawu1.Minutes; |
| | | } |
| | | else if (StratTime <= StratTimeOffworkStart) |
| | | { |
| | | |
| | | |
| | | TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart); |
| | | |
| | | |
| | | LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; |
| | | } |
| | | else if (StratTime <= StratTimeOffworkEnd) |
| | | { |
| | | TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTime); |
| | | |
| | | |
| | | LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | |
| | | //是否调休日 调休日需要上班 |
| | | if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date) |
| | | || jiabanri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) |
| | | { |
| | | if (StratTime <= StratTimeWorkingStart) |
| | | { |
| | | LavehTime += shangbanshijian; |
| | | } |
| | | else if (StratTime <= StratTimeWorkingEnd) |
| | | { |
| | | TimeSpan shangwu1 = StratTimeWorkingEnd.Subtract(StratTime); |
| | | |
| | | TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart); |
| | | |
| | | |
| | | LavehTime += shangwu1.Hours * 60 + shangwu1.Minutes + xiawu1.Hours * 60 + xiawu1.Minutes; |
| | | } |
| | | else if (StratTime <= StratTimeOffworkStart) |
| | | { |
| | | |
| | | |
| | | TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart); |
| | | |
| | | |
| | | LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; |
| | | } |
| | | else if (StratTime <= StratTimeOffworkEnd) |
| | | { |
| | | TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTime); |
| | | |
| | | |
| | | LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LavehTime += 0; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if(i == ts.Days) |
| | | { |
| | | //是否上班日期 |
| | | if ((int)EndTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)EndTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) |
| | | { |
| | | //是否节假日 |
| | | if (jiejiari.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date)) |
| | | { |
| | | |
| | | LavehTime += 0; |
| | | } |
| | | else |
| | | { |
| | | |
| | | |
| | | |
| | | if ( EndTime >= EndTimeOffworkEnd) |
| | | { |
| | | LavehTime += shangbanshijian; |
| | | } |
| | | else if (EndTime >= EndTimeOffworkStart) |
| | | { |
| | | TimeSpan shangwu1 = EndTimeWorkingEnd.Subtract(EndTimeWorkingStart); |
| | | |
| | | TimeSpan xiawu1 = EndTime.Subtract(EndTimeOffworkStart); |
| | | |
| | | |
| | | LavehTime += shangwu1.Hours * 60 + shangwu1.Minutes + xiawu1.Hours * 60 + xiawu1.Minutes; |
| | | } |
| | | else if (EndTime >= EndTimeWorkingEnd) |
| | | { |
| | | |
| | | |
| | | |
| | | TimeSpan xiawu1 = EndTimeWorkingEnd.Subtract(EndTimeWorkingStart); |
| | | |
| | | |
| | | LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; |
| | | } |
| | | else if (EndTime >= EndTimeWorkingStart) |
| | | { |
| | | TimeSpan xiawu1 = EndTime.Subtract(EndTimeWorkingStart); |
| | | |
| | | |
| | | LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | |
| | | //是否调休日 调休日需要上班 |
| | | if (tiaoxiuri.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date) |
| | | || jiabanri.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date)) |
| | | { |
| | | if (EndTime >= EndTimeOffworkEnd) |
| | | { |
| | | LavehTime += shangbanshijian; |
| | | } |
| | | else if (EndTime >= EndTimeOffworkStart) |
| | | { |
| | | TimeSpan shangwu1 = EndTimeWorkingEnd.Subtract(EndTimeWorkingStart); |
| | | |
| | | TimeSpan xiawu1 = EndTime.Subtract(EndTimeOffworkStart); |
| | | |
| | | |
| | | LavehTime += shangwu1.Hours * 60 + shangwu1.Minutes + xiawu1.Hours * 60 + xiawu1.Minutes; |
| | | } |
| | | else if (EndTime >= EndTimeWorkingEnd) |
| | | { |
| | | |
| | | |
| | | |
| | | TimeSpan xiawu1 = EndTimeWorkingEnd.Subtract(EndTimeWorkingStart); |
| | | |
| | | |
| | | LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; |
| | | } |
| | | else if (EndTime >= EndTimeWorkingStart) |
| | | { |
| | | TimeSpan xiawu1 = EndTime.Subtract(EndTimeWorkingStart); |
| | | |
| | | |
| | | LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LavehTime += 0; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | if(i != 0 && i != ts.Days) |
| | | { |
| | | DateTime dateTimenow = StratTime.AddDays(i).Date; |
| | | //是否上班日期 |
| | | if ((int)dateTimenow.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)dateTimenow.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) |
| | | { |
| | | //是否假期 假期不上班 |
| | | if (jiejiari.Exists(x => x.ValueStart <= dateTimenow.Date && x.ValueEnd >= dateTimenow.Date)) |
| | | { |
| | | LavehTime += 0; |
| | | } |
| | | else |
| | | { |
| | | LavehTime += shangbanshijian; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | |
| | | //是否调休日 调休日需要上班 |
| | | if (tiaoxiuri.Exists(x => x.ValueStart <= dateTimenow.Date && x.ValueEnd >= dateTimenow.Date) |
| | | || jiabanri.Exists(x => x.ValueStart <= dateTimenow.Date && x.ValueEnd >= dateTimenow.Date)) |
| | | { |
| | | LavehTime += shangbanshijian; |
| | | } |
| | | else |
| | | { |
| | | LavehTime += 0; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | if(ts.Days == 0) |
| | | { //是否上班日期 |
| | | if ((int)StratTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)StratTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) |
| | | { |
| | | //是否节假日 |
| | | if (jiejiari.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) |
| | | { |
| | | LavehTime -= 0; |
| | | } |
| | | else |
| | | { |
| | | LavehTime -= shangbanshijian; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //是否调休日 调休日需要上班 |
| | | if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date) |
| | | || jiabanri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) |
| | | { |
| | | LavehTime -= shangbanshijian; |
| | | } |
| | | else |
| | | { |
| | | LavehTime -= 0; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | //dateDiff = ts.Days.ToString() + "天" |
| | | // + ts.Hours.ToString() + "小时" |
| | | // + ts.Minutes.ToString() + "分钟" |
| | | // + ts.Seconds.ToString() + "秒"; |
| | | |
| | | //string ssss = (EndTime - StratTime).ToString(); |
| | | |
| | | AdmAskLeaveDTO admAsk = new AdmAskLeaveDTO(); |
| | | admAsk.LaveDay = (int)(LavehTime/shangbanshijian); |
| | | int lefthour = (int)(LavehTime % shangbanshijian); |
| | | |
| | | admAsk.LavehHour = lefthour / 60; |
| | | if (lefthour % 60>0) |
| | | { |
| | | admAsk.LavehHour += 1; |
| | | } |
| | | |
| | | return admAsk; |
| | | } |
| | | |
| | | public IActionResult AskLeaveOff(string id = "", string StratTimeName = "", string EndTimeName = "") |
| | | { |
| | | var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); |
| | | ViewData["curentuser"] = curentuser; |
| | | |
| | | AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get(""); |
| | | |
| | | |
| | | AdmAskLeaveOffDTO askLeaveOffDTO = new AdmAskLeaveOffDTO(); |
| | | if (!string.IsNullOrEmpty(id)) |
| | | { |
| | | askLeaveOffDTO = _signinService.GetAskLeaveOff(id); |
| | | askLeaveOffDTO.StratTimeName =askLeaveOffDTO.StratTime.Value.ToString("yyyy-MM-dd HH:mm") ; |
| | | askLeaveOffDTO.EndTimeName = askLeaveOffDTO.EndTime.Value.ToString("yyyy-MM-dd HH:mm"); |
| | | } |
| | | else |
| | | { |
| | | askLeaveOffDTO.CreaterName = curentuser.UserName; |
| | | askLeaveOffDTO.Tittle = "销假申请(" + curentuser.UserName +")"; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | if (!string.IsNullOrWhiteSpace(StratTimeName)) |
| | | { |
| | | DateTime StratTimeName1; |
| | | if (DateTime.TryParse(StratTimeName, out StratTimeName1)) |
| | | { |
| | | askLeaveOffDTO.StratTimeName = StratTimeName1.AddHours(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[1])).ToString("yyyy-MM-dd HH:mm"); |
| | | |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | askLeaveOffDTO.StratTimeName = DateTime.Now.Date.AddHours(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[1])).ToString("yyyy-MM-dd HH:mm"); |
| | | |
| | | } |
| | | |
| | | if (!string.IsNullOrWhiteSpace(EndTimeName)) |
| | | { |
| | | DateTime EndTimeName1; |
| | | if (DateTime.TryParse(EndTimeName, out EndTimeName1)) |
| | | { |
| | | askLeaveOffDTO.EndTimeName = EndTimeName1.AddHours(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[1])).ToString("yyyy-MM-dd HH:mm"); |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | askLeaveOffDTO.EndTimeName = DateTime.Now.Date.AddHours(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[1])).ToString("yyyy-MM-dd HH:mm"); |
| | | |
| | | } |
| | | } |
| | | ResultDataEntity<SysAttachmentDTO> results = new ResultDataEntity<SysAttachmentDTO>(); |
| | | if (!string.IsNullOrEmpty(signinId)) |
| | | if (!string.IsNullOrEmpty(id)) |
| | | { |
| | | SysAttachmentDTOSearch searchEntity = new SysAttachmentDTOSearch(); |
| | | searchEntity.page = 1; |
| | | searchEntity.rows = 1000; |
| | | searchEntity.AttObj = "AskLeaveOff"; |
| | | searchEntity.AttObjid = signinId; |
| | | searchEntity.AttObjid = id; |
| | | results = _sysAttachmentService.SearchByPaging(searchEntity); |
| | | } |
| | | ViewBag.attachment = results; |
| | | |
| | | ViewData["Lavetype"] = _liaotianService.GetSYScode("ADM_AskLeaveOff", "Lavetype"); |
| | | |
| | | ViewData.Model = askLeaveOffDTO; |
| | | |
| | | string shifoubiaoji = "A"; |
| | | string sifoudangqian = "A"; |
| | | string dangqianbuzhou = "提交"; |
| | | var lishiyijian = new List<WfHistoryDTO>(); |
| | | //流程相关 |
| | | if (!string.IsNullOrEmpty(id)) |
| | | { |
| | | var wfRunProcessDTO = _wfRunProcessService.GetList(id, "02").FirstOrDefault(); |
| | | if (wfRunProcessDTO == null) |
| | | { |
| | | shifoubiaoji = "D"; |
| | | sifoudangqian = "D"; |
| | | } |
| | | else |
| | | { |
| | | dangqianbuzhou = wfRunProcessDTO.Step; |
| | | //查询审批进度 |
| | | lishiyijian = _wfHistoryService.GetListshenpi(wfRunProcessDTO.Id); |
| | | if (wfRunProcessDTO.Step != "提交") |
| | | { |
| | | shifoubiaoji = "D"; |
| | | } |
| | | |
| | | //查询待办 |
| | | var chaxundaiban = _wfNeeddeelService.GetListTracking(wfRunProcessDTO.Id, wfRunProcessDTO.Step).Where(x => x.DeelUserId == curentuser.Id).ToList(); |
| | | if (chaxundaiban != null && chaxundaiban.Count > 0) |
| | | { |
| | | sifoudangqian = "A"; |
| | | } |
| | | else |
| | | { |
| | | sifoudangqian = "D"; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | ViewData.Model = admAskLeaveOffDTO; |
| | | |
| | | |
| | | } |
| | | |
| | | ViewBag.shifoubiaoji = shifoubiaoji; |
| | | ViewBag.sifoudangqian = sifoudangqian; |
| | | ViewBag.lishiyijian = lishiyijian; |
| | | ViewBag.dangqianbuzhou = dangqianbuzhou; |
| | | |
| | | return View(); |
| | | } |
| | | |
| | |
| | | var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); |
| | | ViewData["curentuser"] = curentuser; |
| | | leaveOff.RecStatus = "A"; |
| | | ////未挂审批流,提交直接通过 |
| | | //leaveOff.ShenpiStatus = "A"; |
| | | if (String.IsNullOrEmpty(leaveOff.Id)) |
| | | { |
| | | leaveOff.Creater = curentuser.Id; |
| | |
| | | } |
| | | leaveOff.Modifier = curentuser.Id; |
| | | leaveOff.Modifytime = DateTime.Now; |
| | | ResultEntity resultEntity = new ResultEntity(); |
| | | resultEntity.Result = false; |
| | | |
| | | ResultEntity resultEntity = _signinService.SaveAskLeaveOff(leaveOff); |
| | | string[] Filepaths = leaveOff.Filepath; |
| | | |
| | | if(Filepaths!=null&& Filepaths.Length > 0) |
| | | if (leaveOff.Step == "提交") |
| | | { |
| | | for(int i=0;i< Filepaths.Length; i++) |
| | | //请假时间不能重叠 |
| | | var qingjia = _signinService.GetAskLeaveOffChongdie(curentuser.Id, leaveOff.StratTime.Value, leaveOff.EndTime.Value); |
| | | if (qingjia.Count > 0) |
| | | { |
| | | if (string.IsNullOrEmpty(leaveOff.attachmentid[i])) |
| | | { |
| | | SysAttachmentDTO sysAttachmentDTO = new SysAttachmentDTO(); |
| | | //sysAttachmentDTO.Id = |
| | | sysAttachmentDTO.AttObj = "AskLeaveOff"; |
| | | sysAttachmentDTO.AttObjid = leaveOff.SigninId; |
| | | sysAttachmentDTO.Filefullname = leaveOff.Filefullname[i]; |
| | | sysAttachmentDTO.Filepath = leaveOff.Filepath[i]; |
| | | sysAttachmentDTO.Creater = curentuser.Id; |
| | | sysAttachmentDTO.Modifier = curentuser.Id; |
| | | sysAttachmentDTO.Createtime = DateTime.Now; |
| | | sysAttachmentDTO.Modifytime = sysAttachmentDTO.Createtime; |
| | | |
| | | resultEntity = _sysAttachmentService.save(sysAttachmentDTO); |
| | | } |
| | | |
| | | resultEntity.Result = false; |
| | | resultEntity.Message = "该时间段已经有销假!"; |
| | | return JsonConvert.SerializeObject(resultEntity); |
| | | } |
| | | |
| | | |
| | | //销假必须三天以内 |
| | | if (leaveOff.EndTime.Value.Date < DateTime.Now.Date.AddDays(-4)) |
| | | { |
| | | resultEntity.Result = false; |
| | | resultEntity.Message = "请在72小时内进行销假处理,超过72小时无法提交"; |
| | | return JsonConvert.SerializeObject(resultEntity); |
| | | } |
| | | } |
| | | |
| | | using (TransactionScope scope = new TransactionScope()) |
| | | { |
| | | if (leaveOff.Step == "提交") |
| | | { |
| | | resultEntity = _signinService.SaveAskLeaveOff(leaveOff); |
| | | if (resultEntity.Result == false) |
| | | { |
| | | return JsonConvert.SerializeObject(resultEntity); |
| | | } |
| | | string[] Filepaths = leaveOff.Filepath; |
| | | |
| | | if (Filepaths != null && Filepaths.Length > 0) |
| | | { |
| | | for (int i = 0; i < Filepaths.Length; i++) |
| | | { |
| | | if (string.IsNullOrEmpty(leaveOff.attachmentid[i])) |
| | | { |
| | | SysAttachmentDTO sysAttachmentDTO = new SysAttachmentDTO(); |
| | | //sysAttachmentDTO.Id = |
| | | sysAttachmentDTO.AttObj = "AskLeaveOff"; |
| | | sysAttachmentDTO.AttObjid = leaveOff.Id; |
| | | sysAttachmentDTO.Filefullname = leaveOff.Filefullname[i]; |
| | | sysAttachmentDTO.Filepath = leaveOff.Filepath[i]; |
| | | sysAttachmentDTO.Creater = curentuser.Id; |
| | | sysAttachmentDTO.Modifier = curentuser.Id; |
| | | sysAttachmentDTO.Createtime = DateTime.Now; |
| | | sysAttachmentDTO.Modifytime = sysAttachmentDTO.Createtime; |
| | | |
| | | resultEntity = _sysAttachmentService.save(sysAttachmentDTO); |
| | | if (resultEntity.Result == false) |
| | | { |
| | | return JsonConvert.SerializeObject(resultEntity); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | resultEntity = _wfRunProcessService.WfAskLeaveOff(leaveOff.Id, leaveOff.Step, leaveOff.Tongguojujue, curentuser.Id, leaveOff.Content, leaveOff.Tittle, "v1"); |
| | | |
| | | scope.Complete(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | #region 考勤规则 |
| | | public IActionResult AttendanceRule() |
| | | { |
| | | var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); |
| | | ViewData["curentuser"] = curentuser; |
| | | var pageEntities = _pltPageService.GetUserPage(curentuser.Id, "/Signin/AttendanceRule/"); |
| | | var pageEntities2 = pageEntities.Where(x => x.PageMethod == "02").ToList(); |
| | | ViewData["ActionInfo2"] = pageEntities2; |
| | | |
| | | AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get(""); |
| | | admAttendanceRuleDTO.admAttendanceRulesDtlDTOs = _attendanceRuleService.GetDtlList(""); |
| | | |
| | |
| | | ResultEntity resultEntity = new ResultEntity(); |
| | | dto.Holiday = "1"; |
| | | dto.Rest = "1"; |
| | | if (dto.WorkingStart.IndexOf(".") < 0) |
| | | { |
| | | dto.WorkingStart += ".00"; |
| | | } |
| | | if (dto.WorkingEnd.IndexOf(".") < 0) |
| | | { |
| | | dto.WorkingEnd += ".00"; |
| | | } |
| | | if (dto.OffworkStart.IndexOf(".") < 0) |
| | | { |
| | | dto.OffworkStart += ".00"; |
| | | } |
| | | if (dto.OffworkEnd.IndexOf(".") < 0) |
| | | { |
| | | dto.OffworkEnd += ".00"; |
| | | } |
| | | resultEntity.Result = false; |
| | | var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); |
| | | ViewData["curentuser"] = curentuser; |
| | | using (TransactionScope scope = new TransactionScope()) |
| | | { |
| | | dto.FullAttendance = 0; |
| | | dto.AbsenteeismPayment2 = 0; |
| | | dto.RecStatus = "A"; |
| | | if (String.IsNullOrEmpty(dto.Id)) |
| | | { |
| | |
| | | { |
| | | AdmAttendanceRulesDtlDTO admAttendanceRulesDtlDTO = new AdmAttendanceRulesDtlDTO(); |
| | | admAttendanceRulesDtlDTO.Pid = dto.Id; |
| | | admAttendanceRulesDtlDTO.ValueStart = dto.holiday_s[i]; |
| | | admAttendanceRulesDtlDTO.ValueEnd = dto.holiday_e[i]; |
| | | admAttendanceRulesDtlDTO.ValueStart = DateTime.Parse(dto.holiday_s[i]); |
| | | admAttendanceRulesDtlDTO.ValueEnd = DateTime.Parse(dto.holiday_e[i]); |
| | | admAttendanceRulesDtlDTO.Name = "jiejiari"; |
| | | admAttendanceRulesDtlDTO.RecStatus = "A"; |
| | | admAttendanceRulesDtlDTO.Creater = curentuser.Id; |
| | |
| | | { |
| | | AdmAttendanceRulesDtlDTO admAttendanceRulesDtlDTO = new AdmAttendanceRulesDtlDTO(); |
| | | admAttendanceRulesDtlDTO.Pid = dto.Id; |
| | | admAttendanceRulesDtlDTO.ValueStart = dto.rest_s[i]; |
| | | admAttendanceRulesDtlDTO.ValueEnd = dto.rest_e[i]; |
| | | admAttendanceRulesDtlDTO.ValueStart = DateTime.Parse( dto.rest_s[i]); |
| | | admAttendanceRulesDtlDTO.ValueEnd = DateTime.Parse(dto.rest_e[i]); |
| | | admAttendanceRulesDtlDTO.Name = "tiaoxiuri"; |
| | | admAttendanceRulesDtlDTO.RecStatus = "A"; |
| | | admAttendanceRulesDtlDTO.Creater = curentuser.Id; |
| | |
| | | |
| | | |
| | | } |
| | | |
| | | for (int i = 0; i < dto.jiaban_s.Length; i++) |
| | | { |
| | | if (!String.IsNullOrEmpty(dto.jiaban_s[i]) && !String.IsNullOrEmpty(dto.jiaban_e[i])) |
| | | { |
| | | AdmAttendanceRulesDtlDTO admAttendanceRulesDtlDTO = new AdmAttendanceRulesDtlDTO(); |
| | | admAttendanceRulesDtlDTO.Pid = dto.Id; |
| | | admAttendanceRulesDtlDTO.ValueStart = DateTime.Parse(dto.jiaban_s[i]); |
| | | admAttendanceRulesDtlDTO.ValueEnd = DateTime.Parse(dto.jiaban_e[i]); |
| | | admAttendanceRulesDtlDTO.Name = "jiabanri"; |
| | | admAttendanceRulesDtlDTO.RecStatus = "A"; |
| | | admAttendanceRulesDtlDTO.Creater = curentuser.Id; |
| | | admAttendanceRulesDtlDTO.Createtime = DateTime.Now; |
| | | admAttendanceRulesDtlDTO.Modifier = admAttendanceRulesDtlDTO.Creater; |
| | | admAttendanceRulesDtlDTO.Modifytime = admAttendanceRulesDtlDTO.Createtime; |
| | | resultEntity = _attendanceRuleService.saveDtl(admAttendanceRulesDtlDTO); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | scope.Complete(); |
| | | } |
| | | |