From 15eb82df2d6ec539e9d4245bfe08d531e8eb6379 Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期日, 27 四月 2025 14:33:26 +0800 Subject: [PATCH] 修改培训订单占多个座位 --- zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs | 919 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 867 insertions(+), 52 deletions(-) diff --git a/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs b/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs index 1fffe87..f02eaeb 100644 --- a/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs +++ b/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs @@ -21,14 +21,26 @@ 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 鑰冨嫟绛惧埌鎵撳崱 @@ -114,7 +126,6 @@ } - [DllImport("Iphlpapi.dll")] private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length); @@ -193,21 +204,185 @@ 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(); } @@ -219,49 +394,601 @@ 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(); } @@ -270,6 +997,8 @@ 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; @@ -277,34 +1006,75 @@ } 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(); + } + + @@ -318,6 +1088,12 @@ #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(""); @@ -330,11 +1106,29 @@ 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)) { @@ -355,8 +1149,8 @@ { 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; @@ -373,8 +1167,8 @@ { 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; @@ -386,6 +1180,27 @@ } + + 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(); } -- Gitblit v1.9.1