Basf_EProject/EProject/BLL/ResourcePlan/ResourcePlanService.cs

526 lines
26 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
namespace BLL
{
public static class ResourcePlanService
{
/// <summary>
/// 批量增加
/// </summary>
/// <param name="model"></param>
//public static bool AddResourcePlan(Model.Resource_Plan model, List<Model.Resource_PlanDetail> PlanDetailList, List<Model.ManHours_Plan> 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<Model.Resource_PlanDetail> PlanDetailList, List<Model.ManHours_Plan> 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;
//}
/// <summary>
/// 事物提交
/// </summary>
/// <param name="model"></param>
/// <param name="PlanDetailList"></param>
/// <param name="ManHoursPlanList"></param>
/// <returns></returns>
public static bool AddTran(Model.Resource_Plan model, Model.Editor_EProject EEProject, List<Model.Resource_PlanDetail> PlanDetailList, List<Model.Editor_PM> PMList, List<Model.ManHours_Plan> 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<Model.Editor_PM> NewPMList = new List<Model.Editor_PM>();
List<Model.Editor_PM> DelEditor_PM = new List<Model.Editor_PM>();
// 更新资源时如原来选过的专业现在不选了并且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<Model.Resource_PlanDetail> PlanDetailList, List<Model.Editor_PM> PMList, List<Model.ManHours_Plan> 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<Model.Editor_PM> NewPMList = new List<Model.Editor_PM>();
List<Model.Editor_PM> DelEditor_PM = new List<Model.Editor_PM>();
List<Model.Editor_PM> UpdatPMList = new List<Model.Editor_PM>();
// 更新资源时如原来选过的专业现在不选了并且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;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
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;
}
///// <summary>
///// 根据eprojectId获取设计专业资源
///// </summary>
///// <param name="EProjectId"></param>
///// <returns></returns>
//public static List<Model.Resource_Plan> GetResourcePlanList(string EProjectId)
//{
// return (from x in db.Resource_Plan where x.EProjectId == EProjectId && x.Types == "1" select x).ToList();
//}
///// <summary>
///// 获取设计专业资源
///// </summary>
///// <returns></returns>
//public static List<Model.Resource_Plan> GetResource_PlansList()
//{
// return (from x in db.Resource_Plan where x.Types == "1" select x).ToList();
//}
/// <summary>
/// 增加资源计划
/// </summary>
/// <param name="plan"></param>
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();
}
/// <summary>
/// 修改资源计划
/// </summary>
/// <param name="plan"></param>
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();
}
}
/// <summary>
/// 修改RP工单号
/// </summary>
/// <param name="plan"></param>
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();
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="roleId"></param>
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();
}
}
/// <summary>
///
/// </summary>
/// <param name="resourcePlanId"></param>
/// <returns></returns>
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;
}
}
/// <summary>
///
/// </summary>
/// <param name="sId"></param>
/// <returns></returns>
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<Model.Resource_Plan> GetResourcePlanByEProjectId(string eProjectId)
{
return (from x in Funs.DB.Resource_Plan where x.EProjectId == eProjectId select x).ToList();
}
/// <summary>
/// 根据eprojectId获取设计专业资源
/// </summary>
/// <param name="EProjectId"></param>
/// <returns></returns>
public static List<Model.Resource_PlanDetail> GetResourcePlanList(string EProjectId)
{
return (from x in Funs.DB.Resource_PlanDetail where x.EProjectId == EProjectId && x.Types == "1" select x).ToList();
}
}
}