2021-04-30 10:28:37 +08:00
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
namespace BLL
{
/// <summary>
/// 事故调查报告
/// </summary>
public static class AccidentReportService
{
public static Model . SGGLDB db = Funs . DB ;
/// <summary>
/// 根据主键获取事故调查报告
/// </summary>
/// <param name="accidentReportId"></param>
/// <returns></returns>
public static Model . Accident_AccidentReport GetAccidentReportById ( string accidentReportId )
{
return Funs . DB . Accident_AccidentReport . FirstOrDefault ( e = > e . AccidentReportId = = accidentReportId ) ;
}
/// <summary>
/// 根据时间段获取事故集合
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="projectId"></param>
/// <returns></returns>
public static List < Model . Accident_AccidentReport > GetAccidentReportsByAccidentTime ( DateTime startTime , DateTime endTime , string projectId )
{
return ( from x in Funs . DB . Accident_AccidentReport where x . AccidentDate > = startTime & & x . AccidentDate < endTime & & x . ProjectId = = projectId & & x . States = = BLL . Const . State_2 select x ) . ToList ( ) ;
}
/// <summary>
/// 获取最近时间的轻重死事故时间
/// </summary>
/// <param name="projectId"></param>
/// <returns></returns>
public static Model . Accident_AccidentReport GetMaxAccidentTimeReport ( DateTime time , string projectId )
{
var a = ( from x in Funs . DB . Accident_AccidentReport
where ( x . AccidentTypeId = = "1" | | x . AccidentTypeId = = "2" | | x . AccidentTypeId = = "3" )
& & x . ProjectId = = projectId
& & x . AccidentDate < time
orderby x . AccidentDate descending
select x ) . FirstOrDefault ( ) ;
return a ;
}
/// <summary>
/// 获取时间段内的轻重死事故时间
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public static Model . Accident_AccidentReport GetMaxAccidentTimeReportByTime ( DateTime startTime , DateTime endTime )
{
var a = ( from x in Funs . DB . Accident_AccidentReport
where ( x . AccidentTypeId = = "1" | | x . AccidentTypeId = = "2" | | x . AccidentTypeId = = "3" )
& & x . AccidentDate > = startTime & & x . AccidentDate < endTime
orderby x . AccidentDate descending
select x ) . FirstOrDefault ( ) ;
return a ;
}
/// <summary>
/// 根据时间段获取可记录事故集合
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="accidentType"></param>
/// <param name="projectId"></param>
/// <returns></returns>
public static List < Model . Accident_AccidentReport > GetRecordAccidentReportsByAccidentTime ( DateTime startTime , DateTime endTime , string projectId )
{
return ( from x in Funs . DB . Accident_AccidentReport where x . AccidentDate > = startTime & & x . AccidentDate < endTime & & x . ProjectId = = projectId & & ( x . AccidentTypeId = = "1" | | x . AccidentTypeId = = "2" | | x . AccidentTypeId = = "3" ) & & x . States = = BLL . Const . State_2 select x ) . ToList ( ) ;
}
/// <summary>
/// 根据时间段获取事故集合
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="accidentType"></param>
/// <param name="projectId"></param>
/// <returns></returns>
public static List < Model . Accident_AccidentReport > GetAccidentReportsByAccidentTypeAndTime ( DateTime startTime , DateTime endTime , string projectId , string accidentType )
{
return ( from x in Funs . DB . Accident_AccidentReport
join y in Funs . DB . Sys_FlowOperate
on x . AccidentReportId equals y . DataId
where x . AccidentTypeId = = accidentType & & x . ProjectId = = projectId & & x . States = = BLL . Const . State_2
& & y . State = = BLL . Const . State_2 & & y . OperaterTime > = startTime & & y . OperaterTime < endTime
select x ) . Distinct ( ) . ToList ( ) ;
}
/// <summary>
/// 根据时间段和类型获取事故数量
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="accidentType"></param>
/// <param name="projectId"></param>
/// <returns></returns>
public static int GetCountByAccidentTimeAndAccidentType ( DateTime startTime , DateTime endTime , string accidentType , string projectId )
{
return ( from x in Funs . DB . Accident_AccidentReport where x . AccidentDate > = startTime & & x . AccidentDate < endTime & & x . AccidentTypeId = = accidentType & & x . ProjectId = = projectId & & x . States = = BLL . Const . State_2 select x ) . Count ( ) ;
//if (accidentType == "1" || accidentType == "2" || accidentType == "3") //轻重死事故按审批完成时间
//{
// return (from x in Funs.DB.Accident_AccidentReport
// join y in Funs.DB.Sys_FlowOperate
// on x.AccidentReportId equals y.DataId
// where x.AccidentTypeId == accidentType && x.ProjectId == projectId && x.States == BLL.Const.State_2
// && y.State == BLL.Const.State_2 && y.OperaterTime >= startTime && y.OperaterTime < endTime
// select x).Count();
//}
//else
//{
// return (from x in Funs.DB.Accident_AccidentReport where x.AccidentDate >= startTime && x.AccidentDate < endTime && x.AccidentTypeId == accidentType && x.ProjectId == projectId && x.States == BLL.Const.State_2 select x).Count();
//}
}
/// <summary>
/// 根据时间段和类型获取事故数量
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="accidentType"></param>
/// <param name="projectId"></param>
/// <returns></returns>
public static int GetCountByAccidentType ( string accidentType , string projectId )
{
return ( from x in Funs . DB . Accident_AccidentReport where x . AccidentTypeId = = accidentType & & x . ProjectId = = projectId & & x . States = = BLL . Const . State_2 select x ) . Count ( ) ;
//if (accidentType == "1" || accidentType == "2" || accidentType == "3") //轻重死事故按审批完成时间
//{
// return (from x in Funs.DB.Accident_AccidentReport
// join y in Funs.DB.Sys_FlowOperate
// on x.AccidentReportId equals y.DataId
// where x.AccidentTypeId == accidentType && x.ProjectId == projectId && x.States == BLL.Const.State_2
// && y.State == BLL.Const.State_2 && y.OperaterTime >= startTime && y.OperaterTime < endTime
// select x).Count();
//}
//else
//{
// return (from x in Funs.DB.Accident_AccidentReport where x.AccidentDate >= startTime && x.AccidentDate < endTime && x.AccidentTypeId == accidentType && x.ProjectId == projectId && x.States == BLL.Const.State_2 select x).Count();
//}
}
/// <summary>
/// 根据时间段和类型获取事故人数
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="accidentType"></param>
/// <param name="projectId"></param>
/// <returns></returns>
public static int GetPersonNumByAccidentTimeAndAccidentType ( DateTime startTime , DateTime endTime , string accidentType , string projectId )
{
int num = 0 ;
var q = from x in Funs . DB . Accident_AccidentReport where x . AccidentDate > = startTime & & x . AccidentDate < endTime & & x . AccidentTypeId = = accidentType & & x . ProjectId = = projectId & & x . States = = BLL . Const . State_2 select x . PeopleNum ;
foreach ( var item in q )
{
if ( item ! = null )
{
num + = Funs . GetNewIntOrZero ( item . ToString ( ) ) ;
}
}
//if (accidentType == "1" || accidentType == "2" || accidentType == "3") //轻重死事故按审批完成时间
//{
// var a = from x in Funs.DB.Accident_AccidentReport
// join y in Funs.DB.Sys_FlowOperate
// on x.AccidentReportId equals y.DataId
// where x.AccidentTypeId == accidentType && x.ProjectId == projectId && x.States == BLL.Const.State_2
// && y.State == BLL.Const.State_2 && y.OperaterTime >= startTime && y.OperaterTime < endTime
// select x.PeopleNum;
// foreach (var item in a)
// {
// if (item != null)
// {
// num += Funs.GetNewIntOrZero(item.ToString());
// }
// }
//}
//else
//{
// var q = from x in Funs.DB.Accident_AccidentReport where x.AccidentDate >= startTime && x.AccidentDate < endTime && x.AccidentTypeId == accidentType && x.ProjectId == projectId && x.States == BLL.Const.State_2 select x.PeopleNum;
// foreach (var item in q)
// {
// if (item != null)
// {
// num += Funs.GetNewIntOrZero(item.ToString());
// }
// }
//}
return num ;
}
/// <summary>
/// 根据时间段和类型获取事故损失工时
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="accidentType"></param>
/// <param name="projectId"></param>
/// <returns></returns>
public static decimal GetSumLoseWorkTimeByAccidentTimeAndAccidentType ( DateTime startTime , DateTime endTime , string accidentType , string projectId )
{
decimal loseTime = 0 ;
var q = from x in Funs . DB . Accident_AccidentReport where x . AccidentDate > = startTime & & x . AccidentDate < endTime & & x . AccidentTypeId = = accidentType & & x . ProjectId = = projectId & & x . States = = BLL . Const . State_2 select x . WorkingHoursLoss ;
foreach ( var item in q )
{
if ( item ! = null )
{
loseTime + = Funs . GetNewDecimalOrZero ( item . ToString ( ) ) ;
}
}
//if (accidentType == "1" || accidentType == "2" || accidentType == "3") //轻重死事故按审批完成时间
//{
// var a = from x in Funs.DB.Accident_AccidentReport
// join y in Funs.DB.Sys_FlowOperate
// on x.AccidentReportId equals y.DataId
// where x.AccidentTypeId == accidentType && x.ProjectId == projectId && x.States == BLL.Const.State_2
// && y.State == BLL.Const.State_2 && y.OperaterTime >= startTime && y.OperaterTime < endTime
// select x.WorkingHoursLoss;
// foreach (var item in a)
// {
// if (item != null)
// {
// loseTime += Funs.GetNewDecimal(item.ToString());
// }
// }
//}
//else
//{
// var q = from x in Funs.DB.Accident_AccidentReport where x.AccidentDate >= startTime && x.AccidentDate < endTime && x.AccidentTypeId == accidentType && x.ProjectId == projectId && x.States == BLL.Const.State_2 select x.WorkingHoursLoss;
// foreach (var item in q)
// {
// if (item != null)
// {
// loseTime += Funs.GetNewDecimal(item.ToString());
// }
// }
//}
return loseTime ;
}
/// <summary>
/// 根据时间段和类型获取事故损失金额
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="accidentType"></param>
/// <param name="projectId"></param>
/// <returns></returns>
public static decimal GetSumLosMoneyByAccidentTimeAndAccidentType ( DateTime startTime , DateTime endTime , string accidentType , string projectId )
{
decimal loseMoney = 0 ;
var q = from x in Funs . DB . Accident_AccidentReport where x . AccidentDate > = startTime & & x . AccidentDate < endTime & & x . AccidentTypeId = = accidentType & & x . ProjectId = = projectId & & x . States = = BLL . Const . State_2 select x . EconomicLoss ;
foreach ( var item in q )
{
if ( item ! = null )
{
loseMoney + = Funs . GetNewDecimalOrZero ( item . ToString ( ) ) ;
}
}
var c = from x in Funs . DB . Accident_AccidentReport where x . AccidentDate > = startTime & & x . AccidentDate < endTime & & x . AccidentTypeId = = accidentType & & x . ProjectId = = projectId & & x . States = = BLL . Const . State_2 select x . EconomicOtherLoss ;
foreach ( var item in c )
{
if ( item ! = null )
{
loseMoney + = Funs . GetNewDecimalOrZero ( item . ToString ( ) ) ;
}
}
//if (accidentType == "1" || accidentType == "2" || accidentType == "3") //轻重死事故按审批完成时间
//{
// var a = from x in Funs.DB.Accident_AccidentReport
// join y in Funs.DB.Sys_FlowOperate
// on x.AccidentReportId equals y.DataId
// where x.AccidentTypeId == accidentType && x.ProjectId == projectId && x.States == BLL.Const.State_2
// && y.State == BLL.Const.State_2 && y.OperaterTime >= startTime && y.OperaterTime < endTime
// select x.EconomicLoss;
// foreach (var item in a)
// {
// if (item != null)
// {
// loseMoney += Funs.GetNewDecimal(item.ToString());
// }
// }
// var b = from x in Funs.DB.Accident_AccidentReport
// join y in Funs.DB.Sys_FlowOperate
// on x.AccidentReportId equals y.DataId
// where x.AccidentTypeId == accidentType && x.ProjectId == projectId && x.States == BLL.Const.State_2
// && y.State == BLL.Const.State_2 && y.OperaterTime >= startTime && y.OperaterTime < endTime
// select x.EconomicOtherLoss;
// foreach (var item in b)
// {
// if (item != null)
// {
// loseMoney += Funs.GetNewDecimal(item.ToString());
// }
// }
//}
//else
//{
// var q = from x in Funs.DB.Accident_AccidentReport where x.AccidentDate >= startTime && x.AccidentDate < endTime && x.AccidentTypeId == accidentType && x.ProjectId == projectId && x.States == BLL.Const.State_2 select x.EconomicLoss;
// foreach (var item in q)
// {
// if (item != null)
// {
// loseMoney += Funs.GetNewDecimal(item.ToString());
// }
// }
// var c = from x in Funs.DB.Accident_AccidentReport where x.AccidentDate >= startTime && x.AccidentDate < endTime && x.AccidentTypeId == accidentType && x.ProjectId == projectId && x.States == BLL.Const.State_2 select x.EconomicOtherLoss;
// foreach (var item in c)
// {
// if (item != null)
// {
// loseMoney += Funs.GetNewDecimal(item.ToString());
// }
// }
//}
return loseMoney ;
}
/// <summary>
/// 根据时间和事故类型名称获取事故调查报告集合
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="accidentTypeName"></param>
/// <returns></returns>
public static List < Model . Accident_AccidentReport > GetAccidentReportsByTimeAndAccidentTypeId ( DateTime startTime , DateTime endTime , string projectId , string accidentTypeId )
{
Model . SGGLDB db = Funs . DB ;
if ( accidentTypeId = = "1" | | accidentTypeId = = "2" | | accidentTypeId = = "3" ) //轻重死事故按审批完成时间
{
return ( from x in db . Accident_AccidentReport
join y in db . Sys_FlowOperate
on x . AccidentReportId equals y . DataId
where x . AccidentTypeId = = accidentTypeId & & x . ProjectId = = projectId & & x . States = = BLL . Const . State_2
& & y . State = = BLL . Const . State_2 & & y . OperaterTime > = startTime & & y . OperaterTime < endTime
select x ) . Distinct ( ) . ToList ( ) ;
}
else
{
return ( from x in db . Accident_AccidentReport where x . AccidentDate > = startTime & & x . AccidentDate < endTime & & x . AccidentTypeId = = accidentTypeId & & x . ProjectId = = projectId & & x . States = = BLL . Const . State_2 select x ) . ToList ( ) ;
}
}
/// <summary>
/// 添加事故调查报告
/// </summary>
/// <param name="accidentReport"></param>
public static void AddAccidentReport ( Model . Accident_AccidentReport accidentReport )
{
Model . SGGLDB db = Funs . DB ;
Model . Accident_AccidentReport newAccidentReport = new Model . Accident_AccidentReport
{
AccidentReportId = accidentReport . AccidentReportId ,
ProjectId = accidentReport . ProjectId ,
AccidentReportCode = accidentReport . AccidentReportCode ,
UnitId = accidentReport . UnitId ,
AccidentReportType = accidentReport . AccidentReportType ,
FileContent = accidentReport . FileContent ,
CompileMan = accidentReport . CompileMan ,
CompileDate = accidentReport . CompileDate ,
States = accidentReport . States ,
AccidentReportName = accidentReport . AccidentReportName ,
AccidentTypeId = accidentReport . AccidentTypeId ,
Abstract = accidentReport . Abstract ,
AccidentDate = accidentReport . AccidentDate ,
WorkAreaId = accidentReport . WorkAreaId ,
PeopleNum = accidentReport . PeopleNum ,
WorkingHoursLoss = accidentReport . WorkingHoursLoss ,
EconomicLoss = accidentReport . EconomicLoss ,
EconomicOtherLoss = accidentReport . EconomicOtherLoss ,
ReportMan = accidentReport . ReportMan ,
ReporterUnit = accidentReport . ReporterUnit ,
ReportDate = accidentReport . ReportDate ,
ProcessDescription = accidentReport . ProcessDescription ,
EmergencyMeasures = accidentReport . EmergencyMeasures ,
WorkArea = accidentReport . WorkArea ,
IsNotConfirm = accidentReport . IsNotConfirm ,
NotConfirmWorkingHoursLoss = accidentReport . NotConfirmWorkingHoursLoss ,
NotConfirmEconomicLoss = accidentReport . NotConfirmEconomicLoss ,
NotConfirmEconomicOtherLoss = accidentReport . NotConfirmEconomicOtherLoss ,
2023-06-07 18:55:33 +08:00
AccidentDegree = accidentReport . AccidentDegree ,
2021-04-30 10:28:37 +08:00
NotConfirmed = accidentReport . NotConfirmed
} ;
db . Accident_AccidentReport . InsertOnSubmit ( newAccidentReport ) ;
db . SubmitChanges ( ) ;
CodeRecordsService . InsertCodeRecordsByMenuIdProjectIdUnitId ( Const . ProjectAccidentReportMenuId , accidentReport . ProjectId , null , accidentReport . AccidentReportId , accidentReport . CompileDate ) ;
}
/// <summary>
/// 修改事故调查报告
/// </summary>
/// <param name="accidentReport"></param>
public static void UpdateAccidentReport ( Model . Accident_AccidentReport accidentReport )
{
Model . SGGLDB db = Funs . DB ;
Model . Accident_AccidentReport newAccidentReport = db . Accident_AccidentReport . FirstOrDefault ( e = > e . AccidentReportId = = accidentReport . AccidentReportId ) ;
if ( newAccidentReport ! = null )
{
//newAccidentReport.ProjectId = accidentReport.ProjectId;
newAccidentReport . AccidentReportCode = accidentReport . AccidentReportCode ;
newAccidentReport . UnitId = accidentReport . UnitId ;
newAccidentReport . AccidentReportType = accidentReport . AccidentReportType ;
newAccidentReport . FileContent = accidentReport . FileContent ;
newAccidentReport . CompileMan = accidentReport . CompileMan ;
newAccidentReport . CompileDate = accidentReport . CompileDate ;
newAccidentReport . States = accidentReport . States ;
newAccidentReport . AccidentReportName = accidentReport . AccidentReportName ;
newAccidentReport . AccidentTypeId = accidentReport . AccidentTypeId ;
newAccidentReport . Abstract = accidentReport . Abstract ;
newAccidentReport . AccidentDate = accidentReport . AccidentDate ;
newAccidentReport . WorkAreaId = accidentReport . WorkAreaId ;
newAccidentReport . PeopleNum = accidentReport . PeopleNum ;
newAccidentReport . WorkingHoursLoss = accidentReport . WorkingHoursLoss ;
newAccidentReport . EconomicLoss = accidentReport . EconomicLoss ;
newAccidentReport . EconomicOtherLoss = accidentReport . EconomicOtherLoss ;
newAccidentReport . ReportMan = accidentReport . ReportMan ;
newAccidentReport . ReporterUnit = accidentReport . ReporterUnit ;
newAccidentReport . ReportDate = accidentReport . ReportDate ;
newAccidentReport . ProcessDescription = accidentReport . ProcessDescription ;
newAccidentReport . EmergencyMeasures = accidentReport . EmergencyMeasures ;
newAccidentReport . WorkArea = accidentReport . WorkArea ;
newAccidentReport . IsNotConfirm = accidentReport . IsNotConfirm ;
newAccidentReport . NotConfirmWorkingHoursLoss = accidentReport . NotConfirmWorkingHoursLoss ;
newAccidentReport . NotConfirmEconomicLoss = accidentReport . NotConfirmEconomicLoss ;
2023-06-07 18:55:33 +08:00
newAccidentReport . AccidentDegree = accidentReport . AccidentDegree ;
2021-04-30 10:28:37 +08:00
newAccidentReport . NotConfirmEconomicOtherLoss = accidentReport . NotConfirmEconomicOtherLoss ;
db . SubmitChanges ( ) ;
}
}
/// <summary>
/// 根据主键删除事故调查报告
/// </summary>
/// <param name="accidentReportId"></param>
public static void DeleteAccidentReportById ( string accidentReportId )
{
Model . SGGLDB db = Funs . DB ;
Model . Accident_AccidentReport accidentReport = db . Accident_AccidentReport . FirstOrDefault ( e = > e . AccidentReportId = = accidentReportId ) ;
if ( accidentReport ! = null )
{
CodeRecordsService . DeleteCodeRecordsByDataId ( accidentReportId ) ;
CommonService . DeleteFlowOperateByID ( accidentReportId ) ;
db . Accident_AccidentReport . DeleteOnSubmit ( accidentReport ) ;
db . SubmitChanges ( ) ;
}
}
2023-09-20 13:55:00 +08:00
public static List < Model . Accident_AccidentReport > GetAccidentReportsByAccidentType ( string accidentType , DateTime startTime , DateTime endTime , string projectId )
{
return ( from x in Funs . DB . Accident_AccidentReport where x . AccidentTypeId = = accidentType & & x . AccidentDate > = startTime & & x . AccidentDate < endTime & & x . ProjectId = = projectId & & x . States = = BLL . Const . State_2 select x ) . ToList ( ) ;
}
2021-04-30 10:28:37 +08:00
}
}