CNCEC_SUBQHSE_WUHUAN/SGGL/BLL/HSSE/SitePerson/SitePerson_MonthReportServi...

193 lines
8.5 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;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace BLL
{
public class SitePerson_MonthReportService
{
/// <summary>
/// 获取工作月报信息
/// </summary>
/// <param name="monthReportId">工作月报Id</param>
/// <returns></returns>
public static Model.SitePerson_MonthReport GetMonthReportByMonthReportId(string monthReportId)
{
return Funs.DB.SitePerson_MonthReport.FirstOrDefault(x => x.MonthReportId == monthReportId);
}
/// <summary>
/// 增加工作月报信息
/// </summary>
/// <param name="monthReport">工作月报实体</param>
public static void AddMonthReport(Model.SitePerson_MonthReport monthReport)
{
Model.SGGLDB db = Funs.DB;
Model.SitePerson_MonthReport newMonthReport = new Model.SitePerson_MonthReport
{
MonthReportId = monthReport.MonthReportId,
ProjectId = monthReport.ProjectId,
CompileMan = monthReport.CompileMan,
CompileDate = monthReport.CompileDate,
States = monthReport.States
};
db.SitePerson_MonthReport.InsertOnSubmit(newMonthReport);
db.SubmitChanges();
////增加一条编码记录
BLL.CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(BLL.Const.ProjectMonthReportMenuId, monthReport.ProjectId, null, monthReport.MonthReportId, monthReport.CompileDate);
}
/// <summary>
/// 修改工作月报信息
/// </summary>
/// <param name="monthReport">工作月报实体</param>
public static void UpdateMonthReport(Model.SitePerson_MonthReport monthReport)
{
Model.SGGLDB db = Funs.DB;
Model.SitePerson_MonthReport newMonthReport = db.SitePerson_MonthReport.FirstOrDefault(e => e.MonthReportId == monthReport.MonthReportId);
if (newMonthReport != null)
{
//newMonthReport.ProjectId = monthReport.ProjectId;
newMonthReport.CompileMan = monthReport.CompileMan;
newMonthReport.CompileDate = monthReport.CompileDate;
newMonthReport.States = monthReport.States;
db.SubmitChanges();
}
}
/// <summary>
/// 根据工作月报主键删除一个工作月报信息
/// </summary>
/// <param name="monthReportId">工作月报主键</param>
public static void DeleteMonthReportByMonthReportId(string monthReportId)
{
Model.SGGLDB db = Funs.DB;
Model.SitePerson_MonthReport monthReport = db.SitePerson_MonthReport.FirstOrDefault(e => e.MonthReportId == monthReportId);
if (monthReport != null)
{
///删除编码表记录
BLL.CodeRecordsService.DeleteCodeRecordsByDataId(monthReportId);
BLL.CommonService.DeleteFlowOperateByID(monthReportId);
db.SitePerson_MonthReport.DeleteOnSubmit(monthReport);
db.SubmitChanges();
}
}
/// <summary>
/// 判断人工月报是否存在
/// </summary>
/// <param name="monthDate"></param>
/// <param name="projectId"></param>
/// <returns>true 存在false不存在</returns>
public static bool IsExistMonthReport(DateTime compileDate, string projectId)
{
var q = from x in Funs.DB.SitePerson_MonthReport
where x.CompileDate == compileDate && x.ProjectId == projectId
select x;
if (q.Count() > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 根据时间获取工作月报信息
/// </summary>
/// <param name="startTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <returns>工作月报信息</returns>
public static Model.SitePerson_MonthReport GetMonthReportsByCompileDate(DateTime startTime, string projectId)
{
return Funs.DB.SitePerson_MonthReport.FirstOrDefault(x => x.CompileDate.Value.Year >= startTime.Year && x.CompileDate.Value.Month >= startTime.Month && x.ProjectId == projectId && x.States == BLL.Const.State_2);
}
/// <summary>
/// 获取出入记录人工时-月报
/// </summary>
/// <returns></returns>
public static List<Model.SitePerson_MonthReport> getMonthReports(string projectId, DateTime? sDate)
{
Model.SGGLDB db = Funs.DB;
List<Model.SitePerson_MonthReport> reports = new List<Model.SitePerson_MonthReport>();
var getAllPersonInOutList = from x in db.SitePerson_PersonInOutNumber
where x.ProjectId == projectId
select x;
if (getAllPersonInOutList.Count() > 0)
{
var getInMonths = (from x in getAllPersonInOutList select new { x.InOutDate.Year, x.InOutDate.Month }).Distinct();
if (sDate.HasValue)
{
getInMonths = getInMonths.Where(x => x.Year == sDate.Value.Year && x.Month == sDate.Value.Month);
}
foreach (var item in getInMonths)
{
DateTime compileDate = Funs.GetNewDateTimeOrNow(item.Year.ToString() + "-" + item.Month.ToString());
var getNow = getAllPersonInOutList.Where(x => x.InOutDate.Year == compileDate.Year && x.InOutDate.Month == compileDate.Month).Max(x=>x.WorkHours);
if (getNow.HasValue)
{
Model.SitePerson_MonthReport reportItem = new Model.SitePerson_MonthReport
{
MonthReportId = SQLHelper.GetNewID(),
ProjectId = projectId,
CompileDate = Funs.GetNewDateTime( item.Year.ToString()+"-"+item.Month.ToString()),
TotalPersonWorkTime = getNow,
};
DateTime upDate = compileDate.AddMonths(-1);
var getMax = getAllPersonInOutList.Where(x => x.InOutDate.Year == upDate.Year && x.InOutDate.Month == upDate.Month).Max(x => x.WorkHours) ?? 0;
reportItem.DayWorkTime = (getNow ?? 0) - getMax;
reports.Add(reportItem);
}
}
}
return reports;
}
/// <summary>
/// 获取出入记录人工时-月报累计
/// </summary>
/// <returns></returns>
public static List<Model.SitePerson_MonthReport> getTotalMonthReports(string projectId)
{
Model.SGGLDB db = Funs.DB;
List<Model.SitePerson_MonthReport> reports = new List<Model.SitePerson_MonthReport>();
var getAllPersonInOutList = from x in db.SitePerson_PersonInOutNumber
where x.ProjectId == projectId
select x;
if (getAllPersonInOutList.Count() > 0)
{
var getInMonths = (from x in getAllPersonInOutList select new { x.InOutDate.Year, x.InOutDate.Month }).Distinct();
foreach (var item in getInMonths)
{
DateTime compileDate = Funs.GetNewDateTimeOrNow(item.Year.ToString() + "-" + item.Month.ToString());
var getNow = getAllPersonInOutList.Where(x => x.InOutDate.Year == compileDate.Year && x.InOutDate.Month == compileDate.Month).Max(x => x.WorkHours);
if (getNow.HasValue)
{
Model.SitePerson_MonthReport reportItem = new Model.SitePerson_MonthReport
{
MonthReportId = SQLHelper.GetNewID(),
ProjectId = projectId,
CompileDate = Funs.GetNewDateTime(item.Year.ToString() + "-" + item.Month.ToString()),
TotalPersonWorkTime = getNow,
DayWorkTime= getNow,
};
reports.Add(reportItem);
}
}
}
return reports;
}
}
}