using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Linq; namespace BLL { public static class ResourcePlanService { /// /// 批量增加 /// /// //public static bool AddResourcePlan(Model.Resource_Plan model, List PlanDetailList, List ManHoursPlanList) //{ // bool result = false; // try // { // Model.Resource_Plan newPlan = db.Resource_Plan.FirstOrDefault(e => e.EProjectId == model.EProjectId && e.IsClose==0); // if (newPlan != null) // { // newPlan.IsClose =1; // string sql = " update ManHours_Plan set IsClose=1 where ResourcePlanId=@ResourcePlanId and EProjectId=@EProjectId"; // SqlParameter[] parameter = new SqlParameter[] // { // new SqlParameter("@ResourcePlanId",newPlan.ResourcePlanId), // new SqlParameter("@EProjectId",newPlan.EProjectId) // }; // SQLHelper.ExecutSql(sql, parameter); // } // if (model != null) // db.Resource_Plan.InsertOnSubmit(model); // if (PlanDetailList != null && PlanDetailList.Count > 0) // db.Resource_PlanDetail.InsertAllOnSubmit(PlanDetailList); // if (ManHoursPlanList != null && ManHoursPlanList.Count > 0) // db.ManHours_Plan.InsertAllOnSubmit(ManHoursPlanList); // db.SubmitChanges(); // result = true; // } // catch // { // result = false; // } // return result; //} //public static bool EditResourcePlan(Model.Resource_Plan model, List PlanDetailList, List ManHoursPlanList) //{ // bool result = false; // try // { // Model.Resource_Plan newPlan = db.Resource_Plan.FirstOrDefault(e => e.EProjectId == model.EProjectId && e.IsClose == 0); // if (newPlan != null) // { // newPlan.WO = model.WO; // string sql1 = "delete FROM Resource_PlanDetail WHERE ResourcePlanId=@ResourcePlanId delete FROM ManHours_Plan WHERE ResourcePlanId=@ResourcePlanId"; // SqlParameter[] parameter = new SqlParameter[] // { // new SqlParameter("@ResourcePlanId",model.ResourcePlanId) // }; // SQLHelper.ExecutSql(sql1, parameter); // } // //if (model != null) // // db.Resource_Plan.InsertOnSubmit(model); // if (PlanDetailList != null && PlanDetailList.Count > 0) // db.Resource_PlanDetail.InsertAllOnSubmit(PlanDetailList); // if (ManHoursPlanList != null && ManHoursPlanList.Count > 0) // db.ManHours_Plan.InsertAllOnSubmit(ManHoursPlanList); // db.SubmitChanges(); // result = true; // } // catch // { // result = false; // } // return result; //} /// /// 事物提交 /// /// /// /// /// public static bool AddTran(Model.Resource_Plan model, Model.Editor_EProject EEProject, List PlanDetailList, List PMList, List ManHoursPlanList) { bool result = true; if (model == null) return 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 { Model.Editor_EProject EProject = Funs.DB.Editor_EProject.FirstOrDefault(e => e.EProjectId == model.EProjectId); if (EProject != null) { EProject.ProjectControl_Account = model.WO; EProject.ProjectControl_MS_Approval = EEProject.ProjectControl_MS_Approval; EProject.ProjectControl_JobStatus = EEProject.ProjectControl_JobStatus; //EProject.PM_General_Priority = EEProject.PM_General_Priority; EProject.PM_General_CDI = EEProject.PM_General_CDI; EProject.ProjectControl_LP_SchStart = EEProject.ProjectControl_LP_SchStart; EProject.ProjectControl_LP_SchEnd = EEProject.ProjectControl_LP_SchEnd; EProject.ProjectControl_LP_Progress = EEProject.ProjectControl_LP_Progress; EProject.ProjectControl_CC_SchStart = EEProject.ProjectControl_CC_SchStart; EProject.ProjectControl_CC_SchEnd = EEProject.ProjectControl_CC_SchEnd; EProject.ProjectControl_CC_Progress = EEProject.ProjectControl_CC_Progress; EProject.ProjectControl_CM_SchStart = EEProject.ProjectControl_CM_SchStart; EProject.ProjectControl_CM_SchEnd = EEProject.ProjectControl_CM_SchEnd; EProject.ProjectControl_CM_Progress = EEProject.ProjectControl_CM_Progress; EProject.ProjectControl_MS_MC = EEProject.ProjectControl_MS_MC; EProject.ProjectControl_MS_Close = EEProject.ProjectControl_MS_Close; EProject.ProjectControl_Revised_MC_Date = EEProject.ProjectControl_Revised_MC_Date; EProject.ProjectControl_ProjectManagerId = EEProject.ProjectControl_ProjectManagerId; //EProject.ProjectControl_Account = EEProject.ProjectControl_Account; EProject.ProjectControl_CI_Civil = EEProject.ProjectControl_CI_Civil; EProject.ProjectControl_CI_Process = EEProject.ProjectControl_CI_Process; EProject.ProjectControl_CI_Equipment = EEProject.ProjectControl_CI_Equipment; EProject.ProjectControl_CI_Instrument = EEProject.ProjectControl_CI_Instrument; EProject.ProjectControl_CI_Electrical = EEProject.ProjectControl_CI_Electrical; //EProject.ProjectControl_Remarks = EEProject.ProjectControl_Remarks; EProject.PM_LLEP_RevisedStart = EEProject.PM_LLEP_RevisedStart; EProject.PM_LLEP_RevisedEnd = EEProject.PM_LLEP_RevisedEnd; EProject.PM_LLEP_ActualProgress = EEProject.PM_LLEP_ActualProgress; EProject.CM_CC_RevisedStart = EEProject.CM_CC_RevisedStart; EProject.CM_CC_RevisedEnd = EEProject.CM_CC_RevisedEnd; EProject.CM_CC_AcutalProgress = EEProject.CM_CC_AcutalProgress; EProject.CM_CM_RevisedStart = EEProject.CM_CM_RevisedStart; EProject.CM_CM_RevisedEnd = EEProject.CM_CM_RevisedEnd; EProject.CM_CM_AcutalProgress = EEProject.CM_CM_AcutalProgress; EProject.StudyWo = EEProject.StudyWo; EProject.ProjectControl_ConstManagerId = EEProject.ProjectControl_ConstManagerId; EProject.ProjectControl_ConstManager = EEProject.ProjectControl_ConstManager; EProject.ModifyDate = EEProject.ModifyDate; EProject.ModifyPerson = EEProject.ModifyPerson; } // PMList 对Editor_PM操作 var list = (from x in Funs.DB.Editor_PM where x.EProjectId == model.EProjectId select x).ToList(); List NewPMList = new List(); List DelEditor_PM = new List(); // 更新资源时,如原来选过的专业,现在不选了,并且Revised还没填写,则删除 foreach (var p in list) { var pm = PMList.Find(x => x.DisciplinesWBSCode == p.DisciplinesWBSCode && x.DisciplinesWBSName == p.DisciplinesWBSName && x.WBS == p.WBS); if (pm == null && !p.RevisedStart.HasValue && !p.RevisedEnd.HasValue) { DelEditor_PM.Add(p); } } // 更新资源时,增加新增的专业 foreach (var p in PMList) { var pm = list.Find(x => x.DisciplinesWBSCode == p.DisciplinesWBSCode && x.DisciplinesWBSName == p.DisciplinesWBSName && x.WBS == p.WBS); if (pm == null) { NewPMList.Add(p); } } // 已在资源和计划编辑器中分情况处理 //Model.Resource_Plan newPlan = Funs.DB.Resource_Plan.FirstOrDefault(e => e.EProjectId == model.EProjectId && e.IsClose == 0); //if (newPlan != null) //{ // newPlan.IsClose = 1; // var query = (from x in Funs.DB.ManHours_Plan where x.EProjectId == newPlan.EProjectId && x.ResourcePlanId == newPlan.ResourcePlanId select x).ToList(); // foreach (var v in query) // { // v.IsClose = 1; // v.AccountDisabled = 1; // } //} Funs.DB.Resource_Plan.InsertOnSubmit(model); if (PlanDetailList != null && PlanDetailList.Count > 0) { Funs.DB.Resource_PlanDetail.InsertAllOnSubmit(PlanDetailList); } if (NewPMList != null && NewPMList.Count > 0) { Funs.DB.Editor_PM.InsertAllOnSubmit(NewPMList); } if (DelEditor_PM != null && DelEditor_PM.Count() > 0) { Funs.DB.Editor_PM.DeleteAllOnSubmit(DelEditor_PM); } if (ManHoursPlanList != null && ManHoursPlanList.Count > 0) { Funs.DB.ManHours_Plan.InsertAllOnSubmit(ManHoursPlanList); } Funs.DB.SubmitChanges(); tran.Commit(); result = true; } catch { tran.Rollback();//回滚事务 result = false; } } Funs.DB.Connection.Close(); return result; } public static bool EditTran(Model.Resource_Plan model, Model.Editor_EProject EEProject, List PlanDetailList, List PMList, List ManHoursPlanList) { 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 { Model.Editor_EProject EProject = Funs.DB.Editor_EProject.FirstOrDefault(e => e.EProjectId == model.EProjectId); if (EProject != null) { //EProject.ProjectControl_Account = model.WO; EProject.ProjectControl_MS_Approval = EEProject.ProjectControl_MS_Approval; EProject.ProjectControl_JobStatus = EEProject.ProjectControl_JobStatus; //EProject.PM_General_Priority = EEProject.PM_General_Priority; EProject.PM_General_CDI = EEProject.PM_General_CDI; EProject.ProjectControl_LP_SchStart = EEProject.ProjectControl_LP_SchStart; EProject.ProjectControl_LP_SchEnd = EEProject.ProjectControl_LP_SchEnd; EProject.ProjectControl_LP_Progress = EEProject.ProjectControl_LP_Progress; EProject.ProjectControl_CC_SchStart = EEProject.ProjectControl_CC_SchStart; EProject.ProjectControl_CC_SchEnd = EEProject.ProjectControl_CC_SchEnd; EProject.ProjectControl_CC_Progress = EEProject.ProjectControl_CC_Progress; EProject.ProjectControl_CM_SchStart = EEProject.ProjectControl_CM_SchStart; EProject.ProjectControl_CM_SchEnd = EEProject.ProjectControl_CM_SchEnd; EProject.ProjectControl_CM_Progress = EEProject.ProjectControl_CM_Progress; EProject.ProjectControl_MS_MC = EEProject.ProjectControl_MS_MC; EProject.ProjectControl_MS_Close = EEProject.ProjectControl_MS_Close; EProject.ProjectControl_Revised_MC_Date = EEProject.ProjectControl_Revised_MC_Date; EProject.ProjectControl_ProjectManagerId = EEProject.ProjectControl_ProjectManagerId; //EProject.ProjectControl_Account = EEProject.ProjectControl_Account; EProject.ProjectControl_CI_Civil = EEProject.ProjectControl_CI_Civil; EProject.ProjectControl_CI_Process = EEProject.ProjectControl_CI_Process; EProject.ProjectControl_CI_Equipment = EEProject.ProjectControl_CI_Equipment; EProject.ProjectControl_CI_Instrument = EEProject.ProjectControl_CI_Instrument; EProject.ProjectControl_CI_Electrical = EEProject.ProjectControl_CI_Electrical; EProject.PM_LLEP_RevisedStart = EEProject.PM_LLEP_RevisedStart; EProject.PM_LLEP_RevisedEnd = EEProject.PM_LLEP_RevisedEnd; EProject.PM_LLEP_ActualProgress = EEProject.PM_LLEP_ActualProgress; EProject.CM_CC_RevisedStart = EEProject.CM_CC_RevisedStart; EProject.CM_CC_RevisedEnd = EEProject.CM_CC_RevisedEnd; EProject.CM_CC_AcutalProgress = EEProject.CM_CC_AcutalProgress; EProject.CM_CM_RevisedStart = EEProject.CM_CM_RevisedStart; EProject.CM_CM_RevisedEnd = EEProject.CM_CM_RevisedEnd; EProject.CM_CM_AcutalProgress = EEProject.CM_CM_AcutalProgress; EProject.ProjectControl_ConstManagerId = EEProject.ProjectControl_ConstManagerId; EProject.ProjectControl_ConstManager = EEProject.ProjectControl_ConstManager; EProject.ModifyDate = EEProject.ModifyDate; EProject.ModifyPerson = EEProject.ModifyPerson; } // PMList 对Editor_PM操作 var list = (from x in Funs.DB.Editor_PM where x.EProjectId == model.EProjectId select x).ToList(); List NewPMList = new List(); List DelEditor_PM = new List(); List UpdatPMList = new List(); // 更新资源时,如原来选过的专业,现在不选了,并且Revised还没填写,则删除 foreach (var p in list) { var pm = PMList.Find(x => x.DisciplinesWBSCode == p.DisciplinesWBSCode && x.DisciplinesWBSName == p.DisciplinesWBSName && x.WBS == p.WBS); if (pm == null && !p.RevisedStart.HasValue && !p.RevisedEnd.HasValue) { DelEditor_PM.Add(p); } } // 更新资源时,增加新增的专业 foreach (var p in PMList) { var pm = list.Find(x => x.DisciplinesWBSCode == p.DisciplinesWBSCode && x.DisciplinesWBSName == p.DisciplinesWBSName && x.WBS == p.WBS); if (pm == null) { NewPMList.Add(p); } else { Model.Editor_PM ep = new Model.Editor_PM(); ep.PMId = pm.PMId; ep.EProjectId = p.EProjectId; ep.DisciplinesWBSCode = p.DisciplinesWBSCode; ep.DisciplinesWBSName = p.DisciplinesWBSName; ep.WBS = p.WBS; ep.SchStart = p.SchStart; ep.SchEnd = p.SchEnd; ep.RevisedStart = p.RevisedStart; ep.RevisedEnd = p.RevisedEnd; UpdatPMList.Add(ep); } } Model.Resource_Plan newPlan = Funs.DB.Resource_Plan.FirstOrDefault(e => e.ResourcePlanId == model.ResourcePlanId && e.IsClose == 0); if (newPlan != null) { newPlan.WO = model.WO; var PlanDetail = (from x in Funs.DB.Resource_PlanDetail where x.EProjectId == newPlan.EProjectId && x.ResourcePlanId == newPlan.ResourcePlanId select x).ToList(); if (PlanDetail != null) { Funs.DB.Resource_PlanDetail.DeleteAllOnSubmit(PlanDetail); } var query = (from x in Funs.DB.ManHours_Plan where x.EProjectId == newPlan.EProjectId && x.ResourcePlanId == newPlan.ResourcePlanId select x).ToList(); if (query != null) { Funs.DB.ManHours_Plan.DeleteAllOnSubmit(query); } } // db.Resource_Plan.InsertOnSubmit(model); if (PlanDetailList != null && PlanDetailList.Count > 0) { Funs.DB.Resource_PlanDetail.InsertAllOnSubmit(PlanDetailList); } if (NewPMList != null && NewPMList.Count > 0) { Funs.DB.Editor_PM.InsertAllOnSubmit(NewPMList); } if (DelEditor_PM != null && DelEditor_PM.Count() > 0) { Funs.DB.Editor_PM.DeleteAllOnSubmit(DelEditor_PM); } if (UpdatPMList != null && UpdatPMList.Count() > 0) { foreach (Model.Editor_PM p in UpdatPMList) { Model.Editor_PM ep = Funs.DB.Editor_PM.FirstOrDefault(x => x.PMId == p.PMId); ep.EProjectId = p.EProjectId; ep.DisciplinesWBSCode = p.DisciplinesWBSCode; ep.DisciplinesWBSName = p.DisciplinesWBSName; ep.WBS = p.WBS; ep.SchStart = p.SchStart; ep.SchEnd = p.SchEnd; ep.RevisedStart = p.RevisedStart; ep.RevisedEnd = p.RevisedEnd; Funs.DB.SubmitChanges(); } } if (ManHoursPlanList != null && ManHoursPlanList.Count > 0) { Funs.DB.ManHours_Plan.InsertAllOnSubmit(ManHoursPlanList); } Funs.DB.SubmitChanges(); tran.Commit(); result = true; } catch { tran.Rollback();//回滚事务 result = false; } } Funs.DB.Connection.Close(); return result; } /// /// /// /// public static DataTable GetDataTable(string ResourcePlanId, string EProjectId) { string strSql = "Select * From View_Resource_PlanDetai WHERE ResourcePlanId=@ResourcePlanId and EProjectId=@EProjectId"; SqlParameter[] parameter = new SqlParameter[] { new SqlParameter("@ResourcePlanId",ResourcePlanId), new SqlParameter("@EProjectId",EProjectId) }; DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter); return dt; } ///// ///// 根据eprojectId获取设计专业资源 ///// ///// ///// //public static List GetResourcePlanList(string EProjectId) //{ // return (from x in db.Resource_Plan where x.EProjectId == EProjectId && x.Types == "1" select x).ToList(); //} ///// ///// 获取设计专业资源 ///// ///// //public static List GetResource_PlansList() //{ // return (from x in db.Resource_Plan where x.Types == "1" select x).ToList(); //} /// /// 增加资源计划 /// /// public static void AddPlan(Model.Resource_Plan plan) { Model.Resource_Plan newPlan = new Model.Resource_Plan(); newPlan.ResourcePlanId = plan.ResourcePlanId; newPlan.EProjectId = plan.EProjectId; newPlan.WO = plan.WO; newPlan.CountNum = plan.CountNum; newPlan.IsClose = plan.IsClose; Funs.DB.Resource_Plan.InsertOnSubmit(newPlan); Funs.DB.SubmitChanges(); } /// /// 修改资源计划 /// /// public static void UpdatePlan(Model.Resource_Plan plan) { Model.Resource_Plan newPlan = Funs.DB.Resource_Plan.FirstOrDefault(e => e.ResourcePlanId == plan.ResourcePlanId); if (newPlan != null) { newPlan.WO = plan.WO; newPlan.CountNum = plan.CountNum; newPlan.IsClose = plan.IsClose; Funs.DB.SubmitChanges(); } } /// /// 修改RP工单号 /// /// public static void UpdateRPWO(string resourcePlanId,string wo) { Model.Resource_Plan newPlan = Funs.DB.Resource_Plan.FirstOrDefault(e => e.ResourcePlanId == resourcePlanId); if (newPlan != null) { newPlan.WO = wo; Funs.DB.SubmitChanges(); } } /// /// 删除 /// /// public static void DeleteResourcePlan(string EProjectId) { var q = (from x in Funs.DB.Resource_Plan where x.EProjectId == EProjectId select x).ToList(); if (q != null) { Funs.DB.Resource_Plan.DeleteAllOnSubmit(q); Funs.DB.SubmitChanges(); } } /// /// /// /// /// public static Model.Resource_Plan GetModelsResourcePlan(string resourcePlanId) { try { Model.Resource_Plan newPlan = Funs.DB.Resource_Plan.FirstOrDefault(e => e.ResourcePlanId == resourcePlanId); return newPlan; } catch (System.Exception) { throw; } } /// /// /// /// /// public static Model.Resource_Plan GetModelsResourcePlans(string sId) { try { Model.Resource_Plan newPlan = Funs.DB.Resource_Plan.FirstOrDefault(e => e.ResourcePlanId == sId); return newPlan; } catch (System.Exception) { throw; } } public static List GetResourcePlanByEProjectId(string eProjectId) { return (from x in Funs.DB.Resource_Plan where x.EProjectId == eProjectId select x).ToList(); } /// /// 根据eprojectId获取设计专业资源 /// /// /// public static List GetResourcePlanList(string EProjectId) { return (from x in Funs.DB.Resource_PlanDetail where x.EProjectId == EProjectId && x.Types == "1" select x).ToList(); } } }