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