using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Linq; using System.Text; namespace BLL { /// /// 人工时计划 /// public class PlanService { /// /// 根据主键获取人工时计划 /// /// /// public static Model.View_NewManHours_Plan GetPlanById(string planId) { return Funs.DB.View_NewManHours_Plan.FirstOrDefault(e => e.ManHoursPlanId == planId); } public static Model.ManHours_Plan GetPlanByIds(string planId) { return Funs.DB.ManHours_Plan.FirstOrDefault(e => e.ManHoursPlanId == planId); } public static Model.ManHours_Plan GetPlanByIds(string resourcePlanId, string DisciplineId) { return Funs.DB.ManHours_Plan.FirstOrDefault(e => e.ResourcePlanId == resourcePlanId && e.DisciplineId == DisciplineId); } /// /// 视图 /// /// /// public static Model.View_ManHours_Plan GetManHoursPlan(string UserId) { return Funs.DB.View_ManHours_Plan.FirstOrDefault(e => e.EngineerId == UserId); } /// /// 视图 /// /// /// public static Model.View_ManHours_Plan GetManHoursPlan1(string EProjectId, string EngineerId) { return Funs.DB.View_ManHours_Plan.FirstOrDefault(e => e.EProjectId == EProjectId && e.EngineerId == EngineerId); } /// /// 增加 /// /// public static void AddPlan(Model.ManHours_Plan plan) { Model.ManHours_Plan newPlan = new Model.ManHours_Plan(); newPlan.ManHoursPlanId = plan.ManHoursPlanId; newPlan.ResourcePlanId = plan.ResourcePlanId; newPlan.EProjectId = plan.EProjectId; newPlan.EngineerId = plan.EngineerId; newPlan.EngineerName = plan.EngineerName; newPlan.Account = plan.Account; newPlan.DisciplineId = plan.DisciplineId; newPlan.Discipline = plan.Discipline; newPlan.Roles = plan.Roles; newPlan.ManHours = plan.ManHours; newPlan.AccountDisabled = plan.AccountDisabled; newPlan.IsClose = plan.IsClose; Funs.DB.ManHours_Plan.InsertOnSubmit(newPlan); Funs.DB.SubmitChanges(); } /// /// 修改 /// /// public static void UpdatePlan(Model.ManHours_Plan plan) { Model.ManHours_Plan newPlan = Funs.DB.ManHours_Plan.FirstOrDefault(e => e.ManHoursPlanId == plan.ManHoursPlanId); if (newPlan != null) { newPlan.EngineerId = plan.EngineerId; newPlan.EngineerName = plan.EngineerName; newPlan.Account = plan.Account; newPlan.DisciplineId = plan.DisciplineId; newPlan.Discipline = plan.Discipline; newPlan.ManHours = plan.ManHours; newPlan.AccountDisabled = plan.AccountDisabled; Funs.DB.SubmitChanges(); } } /// /// 修改人工时计划的Account /// /// /// public static void UpdateManHourPlanAccount(string manHoursPlanId, string account) { Model.ManHours_Plan updatePlan = Funs.DB.ManHours_Plan.FirstOrDefault(e => e.ManHoursPlanId == manHoursPlanId); if (updatePlan != null) { updatePlan.Account = account; Funs.DB.SubmitChanges(); } } public static void UpdateManHourPlanAccountDisabled(string resourcePlanId, int? accountDisabled) { var updatePlan = Funs.DB.ManHours_Plan.Where(e => e.ResourcePlanId == resourcePlanId); if (updatePlan != null) { foreach (var p in updatePlan) { p.AccountDisabled = accountDisabled; } Funs.DB.SubmitChanges(); } } /// /// 删除 /// /// /// public static void DeletePlan(string manHoursPlanId, string eProjectId) { Model.ManHours_Plan plan = Funs.DB.ManHours_Plan.FirstOrDefault(e => e.ManHoursPlanId == manHoursPlanId && e.EProjectId == eProjectId); if (plan != null) { Funs.DB.ManHours_Plan.DeleteOnSubmit(plan); Funs.DB.SubmitChanges(); } } /// /// 根据主键删除计划人工时 /// /// public static void DeletePlanById(string manHoursPlanId) { Model.EProjectDB db = Funs.DB; var manHours = db.ManHours_Plan.FirstOrDefault(e => e.ManHoursPlanId == manHoursPlanId); if (manHours != null) { var planDetail = db.ManHours_PlanDetail.Where(e => e.PlanManHoursId == manHoursPlanId); if (planDetail != null && planDetail.Count() > 0) { db.ManHours_PlanDetail.DeleteAllOnSubmit(planDetail); } var act = db.ManHours_Actual.Where(e => e.ManHoursPlanId == manHoursPlanId); if (act != null && act.Count() > 0) { db.ManHours_Actual.DeleteAllOnSubmit(act); } db.ManHours_Plan.DeleteOnSubmit(manHours); db.SubmitChanges(); } } /// /// 增加实际 /// /// public static bool AddActualList(List list) { bool result = false; try { Funs.DB.ManHours_Actual.InsertAllOnSubmit(list); Funs.DB.SubmitChanges(); result = true; } catch { result = false; } return result; } /// /// 事物提交 /// /// /// /// /// public static bool AddTran(string UserId, List list, string month) { Model.EProjectDB db = Funs.DB; bool result = false; db.Connection.Close(); db.Connection.Open(); db.CommandTimeout = 30000; using (DbTransaction tran = db.Connection.BeginTransaction()) { db.Transaction = tran; try { if (UserId != "") { var actualList = (from x in db.ManHours_Actual where x.UserId == UserId && x.ManHoursDate == month select x).ToList(); if (actualList != null && actualList.Count > 0) { db.ManHours_Actual.DeleteAllOnSubmit(actualList); db.SubmitChanges(); } if (list != null && list.Count() > 0) { db.ManHours_Actual.InsertAllOnSubmit(list); db.SubmitChanges(); } tran.Commit(); result = true; } } catch { tran.Rollback();//回滚事务 result = false; } } db.Connection.Close(); return result; } /// /// /// /// /// /// public static bool AddTranManHours(List PlanManHoursList, List PlanDetailList) { bool result = false; Funs.DB.Connection.Close(); Funs.DB.Connection.Open(); Funs.DB.CommandTimeout = 30000; using (DbTransaction tran = Funs.DB.Connection.BeginTransaction()) { Funs.DB.Transaction = tran; try { if (PlanManHoursList != null && PlanManHoursList.Count > 0) Funs.DB.ManHours_PlanManHours.InsertAllOnSubmit(PlanManHoursList); for (int i = 0; i < PlanManHoursList.Count; i++) { if (PlanDetailList != null) { var query1 = (from x in Funs.DB.ManHours_PlanDetail where x.EProjectId == PlanManHoursList[i].EprojectId && x.UserId == PlanManHoursList[i].UserId orderby x.DateMonth select x).ToList(); if (query1 != null && query1.Count > 0) { for (int l = 0; l < query1.Count; l++) { var d = query1.Where(n => n.DateMonth == PlanDetailList[l].DateMonth).ToList(); if (d != null && d.Count > 0) { if (d[0].DateMonth == PlanDetailList[l].DateMonth) { //query1[l].DateMonth = PlanDetailList[l].DateMonth; query1[l].Hour = PlanDetailList[l].Hour; Funs.DB.SubmitChanges(); } } else { Model.ManHours_PlanDetail dd = new Model.ManHours_PlanDetail(); dd.ManHoursPlanDetailId = Guid.NewGuid().ToString(); dd.EProjectId = PlanManHoursList[i].EprojectId; dd.UserId = PlanManHoursList[i].UserId; dd.PlanManHoursId = PlanManHoursList[i].PlanManHoursId; dd.DateMonth = PlanDetailList[l].DateMonth; dd.Hour = PlanDetailList[l].Hour; Funs.DB.ManHours_PlanDetail.InsertOnSubmit(dd); } } } else { if (PlanDetailList != null && PlanDetailList.Count > 0) Funs.DB.ManHours_PlanDetail.InsertAllOnSubmit(PlanDetailList); } } } Funs.DB.SubmitChanges(); tran.Commit(); result = true; } catch { tran.Rollback();//回滚事务 // db.Connection.Close(); result = false; } } Funs.DB.Connection.Close(); return result; } /// /// /// /// /// /// /// public static bool EditTranManHours(string CurrentMonth, string UserId, List PlanManHoursList, List PlanDetailList) { bool result = false; Funs.DB.Connection.Close(); Funs.DB.Connection.Open(); Funs.DB.CommandTimeout = 30000; using (DbTransaction tran = Funs.DB.Connection.BeginTransaction()) { Funs.DB.Transaction = tran; try { if (PlanManHoursList != null && PlanManHoursList.Count > 0) { var query = (from x in Funs.DB.ManHours_PlanManHours where x.ManHoursMonth == CurrentMonth && x.UserId == UserId select x).ToList(); if (query != null) { if (query != null) { Funs.DB.ManHours_PlanManHours.DeleteAllOnSubmit(query); Funs.DB.ManHours_PlanManHours.InsertAllOnSubmit(PlanManHoursList); } } } if (PlanDetailList != null && PlanDetailList.Count > 0) { DateTime dt = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM") + "-01"); DateTime dt1 = dt.AddMonths(11); var query1 = (from x in Funs.DB.ManHours_PlanDetail where x.DateMonth >= dt && x.DateMonth <= dt1 && x.UserId == UserId orderby x.DateMonth select x).ToList(); if (query1 != null) { Funs.DB.ManHours_PlanDetail.DeleteAllOnSubmit(query1); Funs.DB.ManHours_PlanDetail.InsertAllOnSubmit(PlanDetailList); } } Funs.DB.SubmitChanges(); tran.Commit(); result = true; } catch (Exception ex) { tran.Rollback();//回滚事务 // db.Connection.Close(); result = false; } } Funs.DB.Connection.Close(); return result; } /// /// 获取当前月的数据 /// /// /// public static DataTable GetList(string month, string UserId) { try { string strSql = "SELECT * FROM ManHours_PlanManHours where 1=1"; List listStr = new List(); if (!string.IsNullOrEmpty(month)) { strSql += " AND ManHoursMonth=@ManHoursMonth "; listStr.Add(new SqlParameter("@ManHoursMonth", month)); } if (!string.IsNullOrEmpty(UserId)) { strSql += " AND UserId=@UserId "; listStr.Add(new SqlParameter("@UserId", UserId)); } strSql += "order by EprojectId"; SqlParameter[] parameter = listStr.ToArray(); DataTable table = SQLHelper.GetDataTableRunText(strSql, parameter); return table; } catch (Exception ex) { throw ex; } } #region 得到一个月的第一天和最后一天的日期 /// /// 得到本月的第一天日期 /// /// DateTime public static DateTime GetFirstDayOfMonth() { return GetFirstDayOfMonth(DateTime.Now); } /// /// 得到本月的最后一天的日期 /// /// DateTime public static DateTime GetLastDayOfMonth() { return GetLastDayOfMonth(DateTime.Now); } /// /// 得到一个月的第一天 /// /// 这个月的随便一天 /// DateTime public static DateTime GetFirstDayOfMonth(DateTime someday) { int totalDays = DateTime.DaysInMonth(someday.Year, someday.Month); DateTime result; int ts = 1 - someday.Day; result = someday.AddDays(ts); return result; } /// /// 得到一个月的最后一天 /// /// 这个月的随便一天 /// DateTime public static DateTime GetLastDayOfMonth(DateTime someday) { int totalDays = DateTime.DaysInMonth(someday.Year, someday.Month); DateTime result; int ts = totalDays - someday.Day; result = someday.AddDays(ts); return result; } #endregion /// /// 根据人员和日期获取当月人工时 /// /// /// /// public static double getSumManHoursByUserIdAndMonth(string userid, DateTime month) { var hours = (from x in Funs.DB.ManHours_Actual where x.UserId == userid && x.Month.Value.Year == month.Year && x.Month.Value.Month == month.Month select x.Hours).Sum(); if (hours != null) { return hours.Value; } else { return 0; } } /// /// 根据人员获取总的人工时 /// /// /// public static double getSumManHoursByUserId(string userid) { var hours = (from x in Funs.DB.ManHours_Actual where x.UserId == userid select x.Hours).Sum(); if(hours!=null) { return hours.Value; } else { return 0; } } } }