490 lines
18 KiB
C#
490 lines
18 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 人工时计划
|
|
/// </summary>
|
|
public class PlanService
|
|
{
|
|
/// <summary>
|
|
/// 根据主键获取人工时计划
|
|
/// </summary>
|
|
/// <param name="planId"></param>
|
|
/// <returns></returns>
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 视图
|
|
/// </summary>
|
|
/// <param name="planId"></param>
|
|
/// <returns></returns>
|
|
public static Model.View_ManHours_Plan GetManHoursPlan(string UserId)
|
|
{
|
|
return Funs.DB.View_ManHours_Plan.FirstOrDefault(e => e.EngineerId == UserId);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 视图
|
|
/// </summary>
|
|
/// <param name="planId"></param>
|
|
/// <returns></returns>
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 增加
|
|
/// </summary>
|
|
/// <param name="plan"></param>
|
|
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();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改
|
|
/// </summary>
|
|
/// <param name="plan"></param>
|
|
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();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改人工时计划的Account
|
|
/// </summary>
|
|
/// <param name="manHoursPlanId"></param>
|
|
/// <param name="account"></param>
|
|
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();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除
|
|
/// </summary>
|
|
/// <param name="manHoursPlanId"></param>
|
|
/// <param name="eProjectId"></param>
|
|
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();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据主键删除计划人工时
|
|
/// </summary>
|
|
/// <param name="manHoursPlanId"></param>
|
|
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();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 增加实际
|
|
/// </summary>
|
|
/// <param name="plan"></param>
|
|
public static bool AddActualList(List<Model.ManHours_Actual> list)
|
|
{
|
|
bool result = false;
|
|
try
|
|
{
|
|
Funs.DB.ManHours_Actual.InsertAllOnSubmit(list);
|
|
Funs.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(string UserId, List<Model.ManHours_Actual> 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;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="PlanManHoursList"></param>
|
|
/// <param name="PlanDetailList"></param>
|
|
/// <returns></returns>
|
|
public static bool AddTranManHours(List<Model.ManHours_PlanManHours> PlanManHoursList, List<Model.ManHours_PlanDetail> 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;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="CurrentMonth"></param>
|
|
/// <param name="PlanManHoursList"></param>
|
|
/// <param name="PlanDetailList"></param>
|
|
/// <returns></returns>
|
|
public static bool EditTranManHours(string CurrentMonth, string UserId, List<Model.ManHours_PlanManHours> PlanManHoursList, List<Model.ManHours_PlanDetail> 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;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取当前月的数据
|
|
/// </summary>
|
|
/// <param name="month"></param>
|
|
/// <returns></returns>
|
|
public static DataTable GetList(string month, string UserId)
|
|
{
|
|
try
|
|
{
|
|
string strSql = "SELECT * FROM ManHours_PlanManHours where 1=1";
|
|
List<SqlParameter> listStr = new List<SqlParameter>();
|
|
|
|
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 得到一个月的第一天和最后一天的日期
|
|
/// <summary>
|
|
/// 得到本月的第一天日期
|
|
/// </summary>
|
|
/// <returns>DateTime</returns>
|
|
public static DateTime GetFirstDayOfMonth()
|
|
{
|
|
return GetFirstDayOfMonth(DateTime.Now);
|
|
}
|
|
/// <summary>
|
|
/// 得到本月的最后一天的日期
|
|
/// </summary>
|
|
/// <returns>DateTime</returns>
|
|
public static DateTime GetLastDayOfMonth()
|
|
{
|
|
return GetLastDayOfMonth(DateTime.Now);
|
|
}
|
|
/// <summary>
|
|
/// 得到一个月的第一天
|
|
/// </summary>
|
|
/// <param name="someday">这个月的随便一天</param>
|
|
/// <returns>DateTime</returns>
|
|
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;
|
|
}
|
|
/// <summary>
|
|
/// 得到一个月的最后一天
|
|
/// </summary>
|
|
/// <param name="someday">这个月的随便一天</param>
|
|
/// <returns>DateTime</returns>
|
|
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
|
|
|
|
|
|
/// <summary>
|
|
/// 根据人员和日期获取当月人工时
|
|
/// </summary>
|
|
/// <param name="userid"></param>
|
|
/// <param name="month"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据人员获取总的人工时
|
|
/// </summary>
|
|
/// <param name="userid"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|