From ed3015095f1b0e88bc579877c678a3fac191381f Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期一, 28 六月 2021 14:32:26 +0800 Subject: [PATCH] Merge branch 'master' of http://47.108.235.38:8080/r/zhengcaioa --- zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs | 187 +++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 166 insertions(+), 21 deletions(-) diff --git a/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs b/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs index bedb534..bab1b0c 100644 --- a/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs +++ b/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs @@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Http; using Newtonsoft.Json.Linq; using System.Transactions; +using System.Runtime.InteropServices; namespace zhengcaioa.Controllers.AdmManagement { @@ -85,12 +86,88 @@ /// <param name="signinType">10鏃╀笂涓婄彮 11鏃╀笂涓嬬彮 20涓嬪崍涓婄彮 21涓嬪崍涓嬬彮 30鍔犵彮涓婄彮 31鍔犵彮涓嬬彮</param> /// <returns></returns> [CheckLogin] - public string Save(string id,int signinType) - { - ResultEntity resultEntity = _signinService.save(id, signinType); + public string Save(string id,int signinType,string mac) + { + ResultEntity resultEntity = new ResultEntity(); + resultEntity.Result = false; + try + { + if (string.IsNullOrEmpty(mac)) + { + resultEntity = _signinService.save(id, signinType); + } + else + { + var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); + if(curentuser.IpMac == mac) + { + //var mac = GetClientMAC(GetClientIP()); + + } + else + { + resultEntity.Message = "鎵撳崱鐢佃剳妫�鏌ヤ笉鍖归厤銆�"; + } + } + } + catch(Exception er) + { } return JsonConvert.SerializeObject(resultEntity); } + + [DllImport("Iphlpapi.dll")] + private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length); + + [DllImport("Ws2_32.dll")] + private static extern Int32 inet_addr(string ip); + + private string GetClientIP() + { + HttpContextAccessor context = new HttpContextAccessor(); + var ip = context.HttpContext?.Connection.RemoteIpAddress.ToString(); + var mac = GetClientMAC(ip); + var str = "IP:" + ip + " 锛孧AC:" + mac; + return str; + } + + private string GetClientMAC(string ip) + { + string mac_dest = string.Empty; + try + { + Int32 ldest = inet_addr(ip); //鐩殑鍦扮殑ip + Int32 lhost = inet_addr(""); //鏈嶅姟鍣ㄧ殑ip + Int64 macinfo = new Int64(); + Int32 len = 6; + int res = SendARP(ldest, 0, ref macinfo, ref len); + string mac_src = macinfo.ToString("X"); + while (mac_src.Length < 12) + { + mac_src = mac_src.Insert(0, "0"); + } + for (int i = 0; i < 11; i++) + { + if (0 == (i % 2)) + { + if (i == 10) + { + mac_dest = mac_dest.Insert(0, mac_src.Substring(i, 2)); + } + else + { + mac_dest = "-" + mac_dest.Insert(0, mac_src.Substring(i, 2)); + } + + } + } + } + catch (Exception ex) + { + throw ex; + } + return mac_dest; + } /// <summary> /// 鍙栧緱浠婂ぉ绛惧埌淇℃伅 @@ -119,7 +196,7 @@ } #endregion #region 璇峰亣涓庨攢鍋� - public IActionResult AskLeave(string id="", DateTime? StratTimeName = null, DateTime? EndTimeName = null) + public IActionResult AskLeave(string id="", string StratTimeName = "", string EndTimeName = "") { var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); @@ -143,14 +220,35 @@ - if (StratTimeName.HasValue) + if (!string.IsNullOrWhiteSpace(StratTimeName)) { - admAskLeaveDTO.StratTimeName = StratTimeName.Value.AddHours(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[1])).ToString("yyyy-MM-dd HH:mm"); + 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 (EndTimeName.HasValue) + if (!string.IsNullOrWhiteSpace(EndTimeName)) { - admAskLeaveDTO.EndTimeName = EndTimeName.Value.AddHours(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[1])).ToString("yyyy-MM-dd HH:mm"); + 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)); @@ -340,7 +438,7 @@ if ((int)StratTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)StratTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) { //鏄惁鑺傚亣鏃� - if (jiejiari.Exists(x => x.ValueStart <= StratTime.Date && x.ValueStart >= StratTime.Date)) + if (jiejiari.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) { LavehTime += 0; @@ -389,7 +487,7 @@ { //鏄惁璋冧紤鏃� 璋冧紤鏃ラ渶瑕佷笂鐝� - if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueStart >= StratTime.Date)) + if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) { if (StratTime <= StratTimeWorkingStart) { @@ -435,7 +533,7 @@ if ((int)EndTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)EndTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) { //鏄惁鑺傚亣鏃� - if (jiejiari.Exists(x => x.ValueStart <= EndTime.Date && x.ValueStart >= EndTime.Date)) + if (jiejiari.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date)) { LavehTime += 0; @@ -485,7 +583,7 @@ { //鏄惁璋冧紤鏃� 璋冧紤鏃ラ渶瑕佷笂鐝� - if (tiaoxiuri.Exists(x => x.ValueStart <= EndTime.Date && x.ValueStart >= EndTime.Date)) + if (tiaoxiuri.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date)) { if (EndTime >= EndTimeOffworkEnd) { @@ -534,7 +632,7 @@ if ((int)dateTimenow.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)dateTimenow.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) { //鏄惁鍋囨湡 鍋囨湡涓嶄笂鐝� - if (jiejiari.Exists(x => x.ValueStart <= dateTimenow.Date && x.ValueStart >= dateTimenow.Date)) + if (jiejiari.Exists(x => x.ValueStart <= dateTimenow.Date && x.ValueEnd >= dateTimenow.Date)) { LavehTime += 0; } @@ -547,7 +645,7 @@ { //鏄惁璋冧紤鏃� 璋冧紤鏃ラ渶瑕佷笂鐝� - if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueStart >= StratTime.Date)) + if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) { LavehTime += shangbanshijian; } @@ -560,8 +658,32 @@ if(ts.Days == 0) - { - LavehTime -= shangbanshijian; + { //鏄惁涓婄彮鏃ユ湡 + 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)) + { + LavehTime -= shangbanshijian; + } + else + { + LavehTime -= 0; + } + } + } } @@ -592,7 +714,7 @@ return admAsk; } - public IActionResult AskLeaveOff(string id = "", DateTime? StratTimeName = null, DateTime? EndTimeName = null) + public IActionResult AskLeaveOff(string id = "", string StratTimeName = "", string EndTimeName = "") { var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; @@ -617,14 +739,35 @@ - if (StratTimeName.HasValue) + if (!string.IsNullOrWhiteSpace(StratTimeName)) { - askLeaveOffDTO.StratTimeName = StratTimeName.Value.AddHours(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[1])).ToString("yyyy-MM-dd HH:mm"); + 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 (EndTimeName.HasValue) + if (!string.IsNullOrWhiteSpace(EndTimeName)) { - askLeaveOffDTO.EndTimeName = EndTimeName.Value.AddHours(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[1])).ToString("yyyy-MM-dd HH:mm"); + 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>(); @@ -749,6 +892,8 @@ ViewData["curentuser"] = curentuser; using (TransactionScope scope = new TransactionScope()) { + dto.FullAttendance = 0; + dto.AbsenteeismPayment2 = 0; dto.RecStatus = "A"; if (String.IsNullOrEmpty(dto.Id)) { -- Gitblit v1.9.1