Exemplo n.º 1
0
        public IActionResult OnPost(string jsonStr)
        {
            if (string.IsNullOrEmpty(jsonStr))
            {
                return(Page());
            }
            var data = Newtonsoft.Json.JsonConvert.DeserializeObject <AttendanceServiceDTO>(jsonStr);

            if (data == null)
            {
                return(Page());
            }


            var Rcid    = _pinhuaContext.GetNewRcId();
            var rtId    = _pinhuaContext.GetRtId("AttendanceReport");
            var repCase = new EsRepCase
            {
                RcId          = Rcid,
                RtId          = rtId,
                LstFiller     = 2,
                LstFillerName = User.Identity.Name,
                LstFillDate   = DateTime.Now,
            };

            var reportMain = new AttendanceReport
            {
                ExcelServerRcid = Rcid,
                ExcelServerRtid = rtId,
                Y = data.Y.Value,
                M = data.M.Value
            };

            var reportDetails = new List <AttendanceReportResults>();

            foreach (var person in data.PersonList)
            {
                var detail = new AttendanceReportResults
                {
                    ExcelServerRcid = Rcid,
                    ExcelServerRtid = rtId,
                    Y    = data.Y.Value,
                    M    = data.M.Value,
                    编号   = person.Id,
                    姓名   = person.Name,
                    是否全勤 = person.IsFullAttendance ? "是" : "否",
                    正班   = person.DaytimeHours,
                    加班   = person.OvertimeHours,
                    总工时  = person.TotalHours,
                    缺勤   = person.TimesOfAbsent,
                    迟到   = person.TimesOfLate,
                    早退   = person.TimesOfLeaveEarly,
                    请假   = person.TimesOfAskForLeave,
                    用餐   = person.TimesOfDinner,
                };
                reportDetails.Add(detail);
            }
            // 保存明细
            var abc = new List <AttendanceReportDetails>();

            foreach (var person in data.PersonList)
            {
                foreach (var detail in person.Results)
                {
                    foreach (var range in detail.Details)
                    {
                        var o = new AttendanceReportDetails
                        {
                            编号              = person.Id,
                            姓名              = person.Name,
                            日期              = detail.Date,
                            班段              = range.RangeId,
                            班段描述            = range.Range,
                            班               = range.Time1Fix,
                            班               = range.Time2Fix,
                            工时              = range.Hours,
                            考勤结果            = range.State,
                            ExcelServerRcid = Rcid,
                            ExcelServerRtid = rtId,
                        };
                        abc.Add(o);
                    }
                }
            }

            _pinhuaContext.EsRepCase.Add(repCase);
            _pinhuaContext.AttendanceReport.Add(reportMain);
            _pinhuaContext.AttendanceReportResults.AddRange(reportDetails);
            _pinhuaContext.AttendanceReportDetails.AddRange(abc);
            _pinhuaContext.SaveChanges();

            return(RedirectToPage("Index"));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> OnPost(string jsonStr)
        {
            if (string.IsNullOrEmpty(jsonStr))
            {
                return(Page());
            }
            var data = Newtonsoft.Json.JsonConvert.DeserializeObject <AttendanceServiceDTO>(jsonStr);

            if (data == null)
            {
                return(Page());
            }

            var report = _pinhuaContext.AttendanceReport.AsNoTracking().FirstOrDefault(r => r.Y == data.Y && r.M == data.M);

            if (report == null)
            {
                return(Page());
            }

            var reportDetails = new List <AttendanceReportResults>();

            foreach (var person in data.PersonList)
            {
                var detail = new AttendanceReportResults
                {
                    ExcelServerRcid = report.ExcelServerRcid,
                    ExcelServerRtid = report.ExcelServerRtid,
                    Y    = data.Y.Value,
                    M    = data.M.Value,
                    编号   = person.Id,
                    姓名   = person.Name,
                    是否全勤 = person.IsFullAttendance ? "是" : "否",
                    正班   = person.DaytimeHours,
                    加班   = person.OvertimeHours,
                    总工时  = person.TotalHours,
                    缺勤   = person.TimesOfAbsent,
                    迟到   = person.TimesOfLate,
                    早退   = person.TimesOfLeaveEarly,
                    请假   = person.TimesOfAskForLeave,
                    用餐   = person.TimesOfDinner,
                };
                reportDetails.Add(detail);
            }
            reportDetails.ForEach(i =>
            {
                var result = _pinhuaContext.AttendanceReportResults.FirstOrDefault(p => p.Y == i.Y && p.M == i.M && p.编号 == i.编号);
                if (result == null)
                {
                    // 如果该条信息不存在,则添加
                    _pinhuaContext.AttendanceReportResults.Add(i);
                }
                else
                {
                    // 如果该条信息存在,则修改
                    Copy.ShadowCopy(i, result);
                }
            });
            await _pinhuaContext.AttendanceReportResults.Where(p => p.Y == data.Y && p.M == data.M).ForEachAsync(i =>
            {
                var result = reportDetails.FirstOrDefault(p => p.编号 == i.编号);
                if (result == null)
                {
                    // 如果该条信息多余,则删除
                    _pinhuaContext.AttendanceReportResults.Remove(i);
                }
            });

            // 保存明细
            var abc = new List <AttendanceReportDetails>();

            foreach (var person in data.PersonList)
            {
                foreach (var detail in person.Results)
                {
                    foreach (var range in detail.Details)
                    {
                        var o = new AttendanceReportDetails
                        {
                            编号              = person.Id,
                            姓名              = person.Name,
                            日期              = detail.Date,
                            班段              = range.RangeId,
                            班段描述            = range.Range,
                            班               = range.Time1Fix,
                            班               = range.Time2Fix,
                            工时              = range.Hours,
                            考勤结果            = range.State,
                            ExcelServerRcid = report.ExcelServerRcid,
                            ExcelServerRtid = report.ExcelServerRtid,
                        };
                        abc.Add(o);
                    }
                }
            }
            var details = _pinhuaContext.AttendanceReportDetails.Where(d => d.ExcelServerRcid == report.ExcelServerRcid);

            _pinhuaContext.AttendanceReportDetails.RemoveRange(details);
            _pinhuaContext.AttendanceReportDetails.AddRange(abc);

            _pinhuaContext.SaveChanges();

            return(RedirectToPage("Index"));
        }