username@email.com
2023-03-14 bf14008acffe7a9a7ac6e2eeb38ce3552b71b33a
zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs
@@ -25,10 +25,12 @@
        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, ILiaotianService liaotianService, IWfRunProcessService wfRunProcessService
            , IWfHistoryService wfHistoryService, IWfNeeddeelService wfNeeddeelService)
            , IWfHistoryService wfHistoryService, IWfNeeddeelService wfNeeddeelService
             , IPltPageService pltPageService)
        {
            _logger = logger;
            _signinService = signinService;
@@ -38,6 +40,7 @@
            _wfRunProcessService = wfRunProcessService;
            _wfHistoryService = wfHistoryService;
            _wfNeeddeelService = wfNeeddeelService;
            _pltPageService = pltPageService;
        }
        #region 考勤签到打卡
@@ -201,9 +204,64 @@
            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 id="", string StratTimeName = "", string EndTimeName = "")
        public IActionResult AskLeave(string id="", string StratTimeName = "", string EndTimeName = "")
        {
            var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
@@ -222,46 +280,47 @@
            else
            {
                admAskLeaveDTO.CreaterName = curentuser.UserName;
                admAskLeaveDTO.Tittle = "请假申请(" + curentuser.UserName +")";
            }
                admAskLeaveDTO.Tittle = "请假申请(" + curentuser.UserName + ")";
            if (!string.IsNullOrWhiteSpace(StratTimeName))
            {
                DateTime StratTimeName1;
                if(DateTime.TryParse(StratTimeName, out StratTimeName1))
                if (!string.IsNullOrWhiteSpace(StratTimeName))
                {
                    admAskLeaveDTO.StratTimeName = StratTimeName1.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");
                }
            }
            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))
                if (!string.IsNullOrWhiteSpace(EndTimeName))
                {
                    admAskLeaveDTO.EndTimeName = EndTimeName1.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));
                admAskLeaveDTO.LaveDay = admAsk.LaveDay;
                admAskLeaveDTO.LavehHour = admAsk.LavehHour;
            }
            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;
@@ -295,8 +354,8 @@
                else
                {
                    dangqianbuzhou = wfRunProcessDTO.Step;
                    //查询历史意见
                     lishiyijian = _wfHistoryService.GetListshenpi(wfRunProcessDTO.Id);
                    //查询审批进度
                    lishiyijian = _wfHistoryService.GetListshenpi(wfRunProcessDTO.Id);
                    if(wfRunProcessDTO.Step != "提交")
                    {
                        shifoubiaoji = "D";
@@ -337,8 +396,37 @@
            admAsk.RecStatus = "A";
            ResultEntity resultEntity = new ResultEntity();
            resultEntity.Result = false;
                if (String.IsNullOrEmpty(admAsk.Id))
            if(admAsk.Step == "提交")
            {
                //请假时间不能重叠
              //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);
                }
            }
            if (String.IsNullOrEmpty(admAsk.Id))
                {
                    admAsk.Creater = curentuser.Id;
                    admAsk.Createtime = DateTime.Now;
@@ -439,6 +527,8 @@
            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('.');
@@ -550,7 +640,8 @@
                    {
                        //是否调休日  调休日需要上班
                        if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date))
                        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)
                            {
@@ -646,7 +737,8 @@
                    {
                        //是否调休日  调休日需要上班
                        if (tiaoxiuri.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date))
                        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)
                            {
@@ -708,7 +800,8 @@
                    {
                        //是否调休日  调休日需要上班
                        if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date))
                        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;
                        }
@@ -737,7 +830,8 @@
                    else
                    {
                        //是否调休日  调休日需要上班
                        if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date))
                        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;
                        }
@@ -796,7 +890,7 @@
            {
                askLeaveOffDTO.CreaterName = curentuser.UserName;
                askLeaveOffDTO.Tittle = "销假申请(" + curentuser.UserName +")";
            }
@@ -832,7 +926,7 @@
                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(id))
            {
@@ -865,7 +959,7 @@
                else
                {
                    dangqianbuzhou = wfRunProcessDTO.Step;
                    //查询历史意见
                    //查询审批进度
                    lishiyijian = _wfHistoryService.GetListshenpi(wfRunProcessDTO.Id);
                    if (wfRunProcessDTO.Step != "提交")
                    {
@@ -903,8 +997,8 @@
            var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
            ViewData["curentuser"] = curentuser;
            leaveOff.RecStatus = "A";
            //未挂审批流,提交直接通过
            leaveOff.ShenpiStatus = "A";
            ////未挂审批流,提交直接通过
            //leaveOff.ShenpiStatus = "A";
            if (String.IsNullOrEmpty(leaveOff.Id))
            {
                leaveOff.Creater = curentuser.Id;
@@ -914,6 +1008,27 @@
            leaveOff.Modifytime = DateTime.Now;
            ResultEntity resultEntity = new ResultEntity();
            resultEntity.Result = false;
            if (leaveOff.Step == "提交")
            {
                //请假时间不能重叠
                var qingjia = _signinService.GetAskLeaveOffChongdie(curentuser.Id, leaveOff.StratTime.Value, leaveOff.EndTime.Value);
                if (qingjia.Count > 0)
                {
                    resultEntity.Result = false;
                    resultEntity.Message = "该时间段已经有销假!";
                    return JsonConvert.SerializeObject(resultEntity);
                }
                //销假必须三天以内
                if (leaveOff.StratTime.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 == "提交")
@@ -973,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("");
@@ -1059,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();
            }