using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BLL { public static class MonthReportBService { /// /// 根据时间获取最近时间的月报 /// /// 日期 /// public static bool GetMonthReportByDate(DateTime date, string projectId) { var a = from x in Funs.DB.Manager_MonthReportB where x.ProjectId == projectId && (x.Months.Value.Year.ToString() + x.Months.Value.Month.ToString()).Contains(date.Year.ToString() + date.Month.ToString()) select x; return a.Count() > 0; } /// /// 获取项目时间段内的月报 /// /// 开始时间 /// 结束时间 /// 项目号 /// public static List GetMonthReportsByStartAndEndTimeAndProjectId(DateTime startTime, DateTime endTime, string projectId) { return (from x in Funs.DB.Manager_MonthReportB where x.Months >= startTime && x.Months < endTime && x.ProjectId == projectId select x).ToList(); } /// /// 获取所有项目时间段内的月报 /// /// 开始时间 /// 结束时间 /// public static List GetMonthReportsByStartAndEndTime(DateTime startTime, DateTime endTime) { return (from x in Funs.DB.Manager_MonthReportB where x.Months >= startTime && x.Months < endTime select x).ToList(); } /// /// 获取所有项目当月的月报 /// /// /// public static List GetMonthReportsByMonths(DateTime months) { return (from x in Funs.DB.Manager_MonthReportB where x.Months == months select x).ToList(); } /// /// 根据时间获取最近时间的月报 /// /// 日期 /// public static bool GetFreezeMonthReportByDate(DateTime date, string projectId, int day) { var a = from x in Funs.DB.Manager_MonthReportB where x.ProjectId == projectId && (x.Months.Value.Year.ToString() + x.Months.Value.AddMonths(1).Month.ToString()).Contains(date.Year.ToString() + date.Month.ToString()) && date.Day < (day + 1) select x; return a.Count() > 0; } /// /// 根据日期获得月报告信息 /// /// 日期 /// public static Model.Manager_MonthReportB GetMonthReportByMonth(DateTime month, string projectId) { return (from x in Funs.DB.Manager_MonthReportB where x.Months == month && x.ProjectId == projectId select x).FirstOrDefault(); } ///// ///// 根据日期获得最近的一条月报告信息 ///// ///// 日期 ///// //public static Model.Manager_MonthReportB GetLastMonthReportByDate(DateTime date, int freezeDay, string projectId) //{ // Model.Manager_MonthReportB LastMonth = null; // if (date.Day < freezeDay) // { // LastMonth = (from x in Funs.DB.Manager_MonthReportB where x.Months <= date.AddMonths(-2) && x.ProjectId == projectId orderby x.MonthReportDate descending select x).FirstOrDefault(); // } // else // { // LastMonth = (from x in Funs.DB.Manager_MonthReportB where x.Months < date.AddMonths(-1) && x.ProjectId == projectId orderby x.MonthReportDate descending select x).FirstOrDefault(); // } // return LastMonth; //} /// /// 根据日期获得最近的一条月报告信息 /// /// 日期 /// public static Model.Manager_MonthReportB GetLastMonthReportByDate(DateTime date, int freezeDay, string projectId) { Model.Manager_MonthReportB LastMonth = null; DateTime? monthDate = null; var q = from x in Funs.DB.Manager_MonthReportB where x.ProjectId == projectId && x.Months < date orderby x.Months descending select x; if (q.Count() > 0) { if (date.Day <= freezeDay) { DateTime c = date.AddMonths(-1).Date; monthDate = Convert.ToDateTime(c.Year + "-" + c.Month + "-01"); //当月 } else { monthDate = Convert.ToDateTime(date.Year + "-" + date.Month + "-01"); //当月 } var month = from x in q where x.Months == monthDate select x; if (month.Count() > 0) // 表示存在当月记录 { if (q.Count() > 1) { LastMonth = q.ToList()[1]; } } else // 表示不存在当月记录 { LastMonth = q.ToList()[0]; } } return LastMonth; } /// /// 根据月报告主键获取月报告信息 /// /// 月报告主键 /// 月报告信息 public static Model.Manager_MonthReportB GetMonthReportByMonthReportId(string monthReportId) { return Funs.DB.Manager_MonthReportB.FirstOrDefault(x => x.MonthReportId == monthReportId); } /// /// 根据月报告编号获取月报告信息 /// /// 月报告编号 /// 月报告信息 public static Model.Manager_MonthReportB GetMonthReportByMonthReportCode(string monthReportCode) { return Funs.DB.Manager_MonthReportB.FirstOrDefault(x => x.MonthReportCode == monthReportCode); } /// /// 增加月报告信息 /// /// 月报告实体 public static void AddMonthReport(Model.Manager_MonthReportB monthReport) { string newKeyID = SQLHelper.GetNewID(typeof(Model.Manager_MonthReportB)); Model.Manager_MonthReportB newMonthReport = new Model.Manager_MonthReportB { MonthReportId = monthReport.MonthReportId, MonthReportCode = monthReport.MonthReportCode, ProjectId = monthReport.ProjectId, Months = monthReport.Months, MonthReportDate = monthReport.MonthReportDate, ReportMan = monthReport.ReportMan, Manhours = monthReport.Manhours, TotalManhours = monthReport.TotalManhours, HseManhours = monthReport.HseManhours, TotalHseManhours = monthReport.TotalHseManhours, NoStartDate = monthReport.NoStartDate, NoEndDate = monthReport.NoEndDate, SafetyManhours = monthReport.SafetyManhours, AccidentReview = monthReport.AccidentReview, AccidentNum = monthReport.AccidentNum, AccidentRateA = monthReport.AccidentRateA, AccidentRateB = monthReport.AccidentRateB, AccidentRateC = monthReport.AccidentRateC, AccidentRateD = monthReport.AccidentRateD, AccidentRateE = monthReport.AccidentRateE, LargerHazardNun = monthReport.LargerHazardNun, TotalLargerHazardNun = monthReport.TotalLargerHazardNun, IsArgumentLargerHazardNun = monthReport.IsArgumentLargerHazardNun, TotalIsArgumentLargerHazardNun = monthReport.TotalIsArgumentLargerHazardNun, HseActiveReview = monthReport.HseActiveReview, HseActiveKey = monthReport.HseActiveKey, TotalManNum = monthReport.TotalManNum }; Funs.DB.Manager_MonthReportB.InsertOnSubmit(newMonthReport); Funs.DB.SubmitChanges(); ////增加一条编码记录 BLL.CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(BLL.Const.ProjectManagerMonthBMenuId, monthReport.ProjectId, null, monthReport.MonthReportId, monthReport.MonthReportDate); } /// /// 修改月报告信息 /// /// 月报告实体 public static void UpdateMonthReport(Model.Manager_MonthReportB monthReport) { Model.Manager_MonthReportB newMonthReport = Funs.DB.Manager_MonthReportB.FirstOrDefault(e => e.MonthReportId == monthReport.MonthReportId); newMonthReport.MonthReportCode = monthReport.MonthReportCode; newMonthReport.ProjectId = monthReport.ProjectId; newMonthReport.Months = monthReport.Months; newMonthReport.MonthReportDate = monthReport.MonthReportDate; newMonthReport.ReportMan = monthReport.ReportMan; newMonthReport.Manhours = monthReport.Manhours; newMonthReport.TotalManhours = monthReport.TotalManhours; newMonthReport.HseManhours = monthReport.HseManhours; newMonthReport.TotalHseManhours = monthReport.TotalHseManhours; newMonthReport.NoStartDate = monthReport.NoStartDate; newMonthReport.NoEndDate = monthReport.NoEndDate; newMonthReport.SafetyManhours = monthReport.SafetyManhours; newMonthReport.AccidentReview = monthReport.AccidentReview; newMonthReport.AccidentNum = monthReport.AccidentNum; newMonthReport.AccidentRateA = monthReport.AccidentRateA; newMonthReport.AccidentRateB = monthReport.AccidentRateB; newMonthReport.AccidentRateC = monthReport.AccidentRateC; newMonthReport.AccidentRateD = monthReport.AccidentRateD; newMonthReport.AccidentRateE = monthReport.AccidentRateE; newMonthReport.LargerHazardNun = monthReport.LargerHazardNun; newMonthReport.TotalLargerHazardNun = monthReport.TotalLargerHazardNun; newMonthReport.IsArgumentLargerHazardNun = monthReport.IsArgumentLargerHazardNun; newMonthReport.TotalIsArgumentLargerHazardNun = monthReport.TotalIsArgumentLargerHazardNun; newMonthReport.HseActiveReview = monthReport.HseActiveReview; newMonthReport.HseActiveKey = monthReport.HseActiveKey; newMonthReport.TotalManNum = monthReport.TotalManNum; newMonthReport.PlanCost = monthReport.PlanCost; newMonthReport.RealCost = monthReport.RealCost; newMonthReport.TotalRealCost = monthReport.TotalRealCost; Funs.DB.SubmitChanges(); } /// /// 根据月报告主键删除一个月报告信息 /// /// 月报告主键 public static void DeleteMonthReportByMonthReportId(string monthReportId) { Model.Manager_MonthReportB monthReport = Funs.DB.Manager_MonthReportB.FirstOrDefault(e => e.MonthReportId == monthReportId); ///删除编码表记录 BLL.CodeRecordsService.DeleteCodeRecordsByDataId(monthReportId); BLL.CommonService.DeleteAttachFileById(monthReportId);//删除附件 Funs.DB.Manager_MonthReportB.DeleteOnSubmit(monthReport); Funs.DB.SubmitChanges(); } /// /// 获取项目当月的月报 /// /// /// /// public static Model.Manager_MonthReportB GetMonthReportsByMonthsAndProjectId(DateTime months, string projectId) { return (from x in Funs.DB.Manager_MonthReportB where x.Months == months && x.ProjectId == projectId select x).FirstOrDefault(); } /// /// 获取项目最近的的月报 /// /// /// /// public static Model.Manager_MonthReportB GetLateMonthReportByMonths(DateTime months, string projectId) { var q = from x in Funs.DB.Manager_MonthReportB where x.Months < months && x.ProjectId == projectId orderby x.Months descending select x; if (q.Count() > 0) { return q.First(); } else { return null; } } } }