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();
}
}
}