Merge branch 'master' of https://gitee.com/frane-yang/SGGL_CWCEC
This commit is contained in:
commit
5517df35e6
|
@ -0,0 +1,10 @@
|
|||
|
||||
/****** Object: Index [NonClusteredIndex-20220401-212216] Script Date: 2022/4/1 21:26:54 ******/
|
||||
CREATE NONCLUSTERED INDEX [NonClusteredIndex-20220401-212216] ON [dbo].[SitePerson_PersonInOut]
|
||||
(
|
||||
[ProjectId] ASC,
|
||||
[ChangeTime] ASC
|
||||
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
|
|
@ -155,27 +155,39 @@ namespace BLL
|
|||
if (getInOutRecord.WorkIn1.HasValue || getInOutRecord.OffDuty1.HasValue)
|
||||
{
|
||||
m1 = 240;
|
||||
if (getInOutRecord.WorkIn1.HasValue && getInOutRecord.OffDuty1.HasValue)
|
||||
if (getInOutRecord.WorkIn1.HasValue && getInOutRecord.OffDuty1.HasValue && getInOutRecord.OffDuty1> getInOutRecord.WorkIn1)
|
||||
{
|
||||
m1 = Convert.ToInt32((getInOutRecord.OffDuty1 - getInOutRecord.WorkIn1).Value.TotalMinutes);
|
||||
if (m1 < 0)
|
||||
{
|
||||
m1 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
int m2 = 0;
|
||||
if (getInOutRecord.WorkIn2.HasValue || getInOutRecord.OffDuty2.HasValue)
|
||||
{
|
||||
m2 = 240;
|
||||
if (getInOutRecord.WorkIn2.HasValue && getInOutRecord.OffDuty2.HasValue)
|
||||
if (getInOutRecord.WorkIn2.HasValue && getInOutRecord.OffDuty2.HasValue && getInOutRecord.OffDuty2 > getInOutRecord.WorkIn2)
|
||||
{
|
||||
m2 = Convert.ToInt32((getInOutRecord.OffDuty2 - getInOutRecord.WorkIn2).Value.TotalMinutes);
|
||||
if (m2 < 0)
|
||||
{
|
||||
m2 =0;
|
||||
}
|
||||
}
|
||||
}
|
||||
int m3 = 0;
|
||||
if (getInOutRecord.WorkIn3.HasValue || getInOutRecord.OffDuty3.HasValue)
|
||||
{
|
||||
m3 = 240;
|
||||
if (getInOutRecord.WorkIn3.HasValue && getInOutRecord.OffDuty3.HasValue)
|
||||
if (getInOutRecord.WorkIn3.HasValue && getInOutRecord.OffDuty3.HasValue && getInOutRecord.OffDuty3 > getInOutRecord.WorkIn3)
|
||||
{
|
||||
m3 = Convert.ToInt32((getInOutRecord.OffDuty3 - getInOutRecord.WorkIn3).Value.TotalMinutes);
|
||||
if (m3 < 0)
|
||||
{
|
||||
m3 =0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
|
|
@ -17,46 +17,52 @@ namespace BLL
|
|||
{
|
||||
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||
{
|
||||
/////查找未生成教材明细的 培训任务
|
||||
var getTasks = from x in db.Training_Task
|
||||
where x.States == Const.State_0 && (x.TaskId == taskId || taskId == null)
|
||||
select x;
|
||||
if (getTasks.Count() > 0)
|
||||
try
|
||||
{
|
||||
foreach (var item in getTasks)
|
||||
/////查找未生成教材明细的 培训任务
|
||||
var getTasks = from x in db.Training_Task
|
||||
where x.States == Const.State_0 && (x.TaskId == taskId || taskId == null)
|
||||
select x;
|
||||
if (getTasks.Count() > 0)
|
||||
{
|
||||
var getPerson = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == item.UserId);
|
||||
if (getPerson != null)
|
||||
foreach (var item in getTasks)
|
||||
{
|
||||
////获取计划下 人员培训教材明细
|
||||
var getDataList = db.Sp_GetTraining_TaskItemTraining(item.PlanId, getPerson.WorkPostId);
|
||||
foreach (var dataItem in getDataList)
|
||||
var getPerson = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == item.UserId);
|
||||
if (getPerson != null)
|
||||
{
|
||||
Model.Training_TaskItem newTaskItem = new Model.Training_TaskItem
|
||||
////获取计划下 人员培训教材明细
|
||||
var getDataList = db.Sp_GetTraining_TaskItemTraining(item.PlanId, getPerson.WorkPostId);
|
||||
foreach (var dataItem in getDataList)
|
||||
{
|
||||
TaskId = item.TaskId,
|
||||
PlanId = item.PlanId,
|
||||
PersonId = item.UserId,
|
||||
TrainingItemCode = dataItem.TrainingItemCode,
|
||||
TrainingItemName = dataItem.TrainingItemName,
|
||||
AttachUrl = dataItem.AttachUrl,
|
||||
};
|
||||
Model.Training_TaskItem newTaskItem = new Model.Training_TaskItem
|
||||
{
|
||||
TaskId = item.TaskId,
|
||||
PlanId = item.PlanId,
|
||||
PersonId = item.UserId,
|
||||
TrainingItemCode = dataItem.TrainingItemCode,
|
||||
TrainingItemName = dataItem.TrainingItemName,
|
||||
AttachUrl = dataItem.AttachUrl,
|
||||
};
|
||||
|
||||
var getTaskItem = db.Training_TaskItem.FirstOrDefault(x => x.TaskId == item.TaskId && x.TrainingItemName == newTaskItem.TrainingItemName && x.AttachUrl == newTaskItem.AttachUrl);
|
||||
if (getTaskItem == null)
|
||||
{
|
||||
newTaskItem.TaskItemId = SQLHelper.GetNewID();
|
||||
db.Training_TaskItem.InsertOnSubmit(newTaskItem);
|
||||
db.SubmitChanges();
|
||||
var getTaskItem = db.Training_TaskItem.FirstOrDefault(x => x.TaskId == item.TaskId && x.TrainingItemName == newTaskItem.TrainingItemName && x.AttachUrl == newTaskItem.AttachUrl);
|
||||
if (getTaskItem == null)
|
||||
{
|
||||
newTaskItem.TaskItemId = SQLHelper.GetNewID();
|
||||
db.Training_TaskItem.InsertOnSubmit(newTaskItem);
|
||||
db.SubmitChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////更新培训任务
|
||||
item.States = Const.State_1;
|
||||
db.SubmitChanges();
|
||||
////更新培训任务
|
||||
item.States = Const.State_1;
|
||||
db.SubmitChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
@ -67,29 +73,37 @@ namespace BLL
|
|||
/// </summary>
|
||||
public static void UpdateTestPlanStates()
|
||||
{
|
||||
Model.SGGLDB db = Funs.DB;
|
||||
var getTestPlans = from x in db.Training_TestPlan
|
||||
where x.States == Const.State_2 && x.TestEndTime.AddMinutes(x.Duration) < DateTime.Now
|
||||
select x;
|
||||
if (getTestPlans.Count() > 0)
|
||||
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||
{
|
||||
foreach (var item in getTestPlans)
|
||||
try
|
||||
{
|
||||
APITestPlanService.SubmitTest(item);
|
||||
item.States = "3";
|
||||
db.SubmitChanges();
|
||||
}
|
||||
}
|
||||
var getTestPlans = from x in db.Training_TestPlan
|
||||
where x.States == Const.State_2 && x.TestEndTime.AddMinutes(x.Duration) < DateTime.Now
|
||||
select x;
|
||||
if (getTestPlans.Count() > 0)
|
||||
{
|
||||
foreach (var item in getTestPlans)
|
||||
{
|
||||
APITestPlanService.SubmitTest(item);
|
||||
item.States = "3";
|
||||
db.SubmitChanges();
|
||||
}
|
||||
}
|
||||
|
||||
var getTrainingTestRecords = from x in db.Training_TestRecord
|
||||
where x.TestStartTime.Value.AddMinutes(x.Duration) < DateTime.Now
|
||||
&& (!x.TestEndTime.HasValue || !x.TestScores.HasValue)
|
||||
select x;
|
||||
foreach (var itemRecord in getTrainingTestRecords)
|
||||
{
|
||||
itemRecord.TestEndTime = itemRecord.TestStartTime.Value.AddMinutes(itemRecord.Duration);
|
||||
itemRecord.TestScores = db.Training_TestRecordItem.Where(x => x.TestRecordId == itemRecord.TestRecordId).Sum(x => x.SubjectScore) ?? 0;
|
||||
TestRecordService.UpdateTestRecord(itemRecord);
|
||||
var getTrainingTestRecords = from x in db.Training_TestRecord
|
||||
where x.TestStartTime.Value.AddMinutes(x.Duration) < DateTime.Now
|
||||
&& (!x.TestEndTime.HasValue || !x.TestScores.HasValue)
|
||||
select x;
|
||||
foreach (var itemRecord in getTrainingTestRecords)
|
||||
{
|
||||
itemRecord.TestEndTime = itemRecord.TestStartTime.Value.AddMinutes(itemRecord.Duration);
|
||||
itemRecord.TestScores = db.Training_TestRecordItem.Where(x => x.TestRecordId == itemRecord.TestRecordId).Sum(x => x.SubjectScore) ?? 0;
|
||||
TestRecordService.UpdateTestRecord(itemRecord);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
@ -100,17 +114,23 @@ namespace BLL
|
|||
/// </summary>
|
||||
public static void UpdateServerTestPlanStates()
|
||||
{
|
||||
Model.SGGLDB db = Funs.DB;
|
||||
|
||||
var getTrainingTestRecords = from x in db.Test_TestRecord
|
||||
where x.TestStartTime.Value.AddMinutes(x.Duration.Value) < DateTime.Now
|
||||
&& (!x.TestEndTime.HasValue || !x.TestScores.HasValue)
|
||||
select x;
|
||||
foreach (var itemRecord in getTrainingTestRecords)
|
||||
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||
{
|
||||
itemRecord.TestEndTime = itemRecord.TestStartTime.Value.AddMinutes(itemRecord.Duration.Value);
|
||||
itemRecord.TestScores = db.Test_TestRecordItem.Where(x => x.TestRecordId == itemRecord.TestRecordId).Sum(x => x.SubjectScore) ?? 0;
|
||||
db.SubmitChanges();
|
||||
try
|
||||
{
|
||||
var getTrainingTestRecords = from x in db.Test_TestRecord
|
||||
where x.TestStartTime.Value.AddMinutes(x.Duration.Value) < DateTime.Now
|
||||
&& (!x.TestEndTime.HasValue || !x.TestScores.HasValue)
|
||||
select x;
|
||||
foreach (var itemRecord in getTrainingTestRecords)
|
||||
{
|
||||
itemRecord.TestEndTime = itemRecord.TestStartTime.Value.AddMinutes(itemRecord.Duration.Value);
|
||||
itemRecord.TestScores = db.Test_TestRecordItem.Where(x => x.TestRecordId == itemRecord.TestRecordId).Sum(x => x.SubjectScore) ?? 0;
|
||||
db.SubmitChanges();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{ }
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
@ -123,115 +143,183 @@ namespace BLL
|
|||
{
|
||||
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||
{
|
||||
var getProjects = (from x in db.Base_Project
|
||||
where x.ProjectState == null || x.ProjectState == Const.ProjectState_1
|
||||
orderby x.ProjectCode descending
|
||||
select x).ToList();
|
||||
if (!string.IsNullOrEmpty(projectId))
|
||||
try
|
||||
{
|
||||
getProjects = getProjects.Where(x => x.ProjectId == projectId).ToList();
|
||||
}
|
||||
foreach (var projectItem in getProjects)
|
||||
{
|
||||
var getAllPersonInOutList = from x in db.SitePerson_PersonInOut
|
||||
where x.ProjectId == projectItem.ProjectId && x.ChangeTime <= DateTime.Now
|
||||
select x;
|
||||
if (getAllPersonInOutList.Count() > 0)
|
||||
var getProjects = (from x in db.Base_Project
|
||||
where x.ProjectState == null || x.ProjectState == Const.ProjectState_1
|
||||
orderby x.ProjectCode descending
|
||||
select x).ToList();
|
||||
if (!string.IsNullOrEmpty(projectId))
|
||||
{
|
||||
#region 现场当前人员数
|
||||
int SitePersonNum = 0;
|
||||
var getDayAll = from x in db.SitePerson_PersonInOutNow
|
||||
where x.ChangeTime.Value.Year == DateTime.Now.Year && x.ChangeTime.Value.Month == DateTime.Now.Month
|
||||
&& x.ChangeTime.Value.Day == DateTime.Now.Day
|
||||
select x;
|
||||
if (getDayAll.Count() > 0)
|
||||
getProjects = getProjects.Where(x => x.ProjectId == projectId).ToList();
|
||||
}
|
||||
foreach (var projectItem in getProjects)
|
||||
{
|
||||
var getAllPersonInOutList = from x in db.SitePerson_PersonInOut
|
||||
where x.ProjectId == projectItem.ProjectId && x.ChangeTime <= DateTime.Now
|
||||
select x;
|
||||
if (getAllPersonInOutList.Count() > 0)
|
||||
{
|
||||
var getInMaxs = from x in getDayAll
|
||||
group x by x.PersonId into g
|
||||
select new { g.First().PersonId, ChangeTime = g.Max(x => x.ChangeTime) };
|
||||
if (getInMaxs.Count() > 0)
|
||||
#region 现场当前人员数
|
||||
int SitePersonNum = 0;
|
||||
var getDayAll = from x in db.SitePerson_PersonInOutNow
|
||||
where x.ChangeTime.Value.Year == DateTime.Now.Year && x.ChangeTime.Value.Month == DateTime.Now.Month
|
||||
&& x.ChangeTime.Value.Day == DateTime.Now.Day
|
||||
select x;
|
||||
if (getDayAll.Count() > 0)
|
||||
{
|
||||
SitePersonNum = (from x in getInMaxs
|
||||
join y in getDayAll on new { x.PersonId, x.ChangeTime } equals new { y.PersonId, y.ChangeTime }
|
||||
where y.IsIn == true
|
||||
select y).Count();
|
||||
var getInMaxs = from x in getDayAll
|
||||
group x by x.PersonId into g
|
||||
select new { g.First().PersonId, ChangeTime = g.Max(x => x.ChangeTime) };
|
||||
if (getInMaxs.Count() > 0)
|
||||
{
|
||||
SitePersonNum = (from x in getInMaxs
|
||||
join y in getDayAll on new { x.PersonId, x.ChangeTime } equals new { y.PersonId, y.ChangeTime }
|
||||
where y.IsIn == true
|
||||
select y).Count();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 获取工时
|
||||
int SafeHours = 0;
|
||||
var getPersonOutTimes = from x in getAllPersonInOutList
|
||||
where x.IsIn == false
|
||||
select x;
|
||||
var getInLists = getAllPersonInOutList.Where(x => x.IsIn == true);
|
||||
//// 查找当前项目 最新的人工时数量记录
|
||||
var getMaxInOutDate = db.SitePerson_PersonInOutNumber.Where(x => x.ProjectId == projectItem.ProjectId).OrderByDescending(x => x.InOutDate).FirstOrDefault();
|
||||
if (getMaxInOutDate != null)
|
||||
{
|
||||
SafeHours = (getMaxInOutDate.WorkHours ?? 0) * 60;
|
||||
getPersonOutTimes = from x in getPersonOutTimes
|
||||
where x.ChangeTime > getMaxInOutDate.InOutDate
|
||||
select x;
|
||||
if (getPersonOutTimes.Count() > 0)
|
||||
{
|
||||
getInLists = from x in getInLists
|
||||
where x.ChangeTime > getMaxInOutDate.InOutDate
|
||||
select x;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 获取工时
|
||||
int SafeHours = 0;
|
||||
var getPersonOutTimes = from x in getAllPersonInOutList
|
||||
where x.IsIn == false
|
||||
select x;
|
||||
var getInLists = getAllPersonInOutList.Where(x => x.IsIn == true);
|
||||
//// 查找当前项目 最新的人工时数量记录
|
||||
var getMaxInOutDate = db.SitePerson_PersonInOutNumber.Where(x => x.ProjectId == projectItem.ProjectId).OrderByDescending(x => x.InOutDate).FirstOrDefault();
|
||||
if (getMaxInOutDate != null)
|
||||
{
|
||||
SafeHours = (getMaxInOutDate.WorkHours ?? 0) * 60;
|
||||
getPersonOutTimes = from x in getPersonOutTimes
|
||||
where x.ChangeTime > getMaxInOutDate.InOutDate
|
||||
select x;
|
||||
if (getPersonOutTimes.Count() > 0)
|
||||
{
|
||||
getInLists = from x in getInLists
|
||||
where x.ChangeTime > getMaxInOutDate.InOutDate
|
||||
select x;
|
||||
}
|
||||
}
|
||||
|
||||
if (getPersonOutTimes.Count() > 0)
|
||||
{
|
||||
List<string> personIdList = new List<string>();
|
||||
foreach (var item in getPersonOutTimes)
|
||||
{
|
||||
var getMaxInTime = getInLists.Where(x => x.ChangeTime < item.ChangeTime
|
||||
&& x.PersonId == item.PersonId && x.ChangeTime.Value.AddDays(1) >= item.ChangeTime).Max(x => x.ChangeTime);
|
||||
if (getMaxInTime.HasValue)
|
||||
List<string> personIdList = new List<string>();
|
||||
foreach (var item in getPersonOutTimes)
|
||||
{
|
||||
SafeHours += Convert.ToInt32((item.ChangeTime - getMaxInTime).Value.TotalMinutes);
|
||||
var getMaxInTime = getInLists.Where(x => x.ChangeTime < item.ChangeTime
|
||||
&& x.PersonId == item.PersonId && x.ChangeTime.Value.AddDays(1) >= item.ChangeTime).Max(x => x.ChangeTime);
|
||||
if (getMaxInTime.HasValue)
|
||||
{
|
||||
SafeHours += Convert.ToInt32((item.ChangeTime - getMaxInTime).Value.TotalMinutes);
|
||||
}
|
||||
else
|
||||
{
|
||||
personIdList.Add(item.PersonId);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (personIdList.Count() > 0)
|
||||
{
|
||||
personIdList.Add(item.PersonId);
|
||||
SafeHours += (personIdList.Distinct().Count() * 8 * 60);
|
||||
}
|
||||
}
|
||||
if (personIdList.Count() > 0)
|
||||
#endregion
|
||||
|
||||
SafeHours = Convert.ToInt32(SafeHours * 1.0 / 60);
|
||||
var getPersonInOutNumber = db.SitePerson_PersonInOutNumber.FirstOrDefault(x => x.ProjectId == projectItem.ProjectId
|
||||
&& x.InOutDate.Year == DateTime.Now.Year
|
||||
&& x.InOutDate.Month == DateTime.Now.Month
|
||||
&& x.InOutDate.Day == DateTime.Now.Day);
|
||||
if (getPersonInOutNumber == null)
|
||||
{
|
||||
SafeHours += (personIdList.Distinct().Count() * 8 * 60);
|
||||
Model.SitePerson_PersonInOutNumber newNum = new Model.SitePerson_PersonInOutNumber
|
||||
{
|
||||
PersonInOutNumberId = SQLHelper.GetNewID(),
|
||||
ProjectId = projectItem.ProjectId,
|
||||
InOutDate = DateTime.Now,
|
||||
PersonNum = SitePersonNum,
|
||||
WorkHours = SafeHours,
|
||||
};
|
||||
|
||||
db.SitePerson_PersonInOutNumber.InsertOnSubmit(newNum);
|
||||
db.SubmitChanges();
|
||||
}
|
||||
else
|
||||
{
|
||||
getPersonInOutNumber.InOutDate = DateTime.Now;
|
||||
getPersonInOutNumber.PersonNum = SitePersonNum;
|
||||
getPersonInOutNumber.WorkHours = SafeHours;
|
||||
db.SubmitChanges();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
SafeHours = Convert.ToInt32(SafeHours * 1.0 / 60);
|
||||
var getPersonInOutNumber = db.SitePerson_PersonInOutNumber.FirstOrDefault(x => x.ProjectId == projectItem.ProjectId
|
||||
&& x.InOutDate.Year == DateTime.Now.Year
|
||||
&& x.InOutDate.Month == DateTime.Now.Month
|
||||
&& x.InOutDate.Day == DateTime.Now.Day);
|
||||
if (getPersonInOutNumber == null)
|
||||
#region 自动校正出入场人数及工时
|
||||
/// <summary>
|
||||
/// 自动校正出入场人数及工时
|
||||
/// </summary>
|
||||
public static void CorrectingPersonInOutNumberD(string projectId)
|
||||
{
|
||||
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||
{
|
||||
try
|
||||
{
|
||||
var getNums = from x in db.SitePerson_PersonInOutNumber
|
||||
where x.ProjectId == projectId && x.InOutDate.AddMonths(3) >= DateTime.Now
|
||||
orderby x.InOutDate
|
||||
select x;
|
||||
var getInouts = from x in db.SitePerson_PersonInOut
|
||||
where x.ProjectId == projectId && x.ChangeTime.Value.AddMonths(3) >= DateTime.Now
|
||||
select x;
|
||||
int SafeHours = 0;
|
||||
foreach (var itemNum in getNums)
|
||||
{
|
||||
DateTime date = Funs.GetNewDateTimeOrNow(itemNum.InOutDate.ToShortDateString());
|
||||
///获取当日出入记录
|
||||
var getAllPersonInOutList = from x in getInouts
|
||||
where x.ChangeTime > date.AddDays(-1) && x.ChangeTime < date.AddDays(1)
|
||||
select x;
|
||||
|
||||
if (getAllPersonInOutList.Count() > 0)
|
||||
{
|
||||
Model.SitePerson_PersonInOutNumber newNum = new Model.SitePerson_PersonInOutNumber
|
||||
/// 出场记录
|
||||
var getPersonOutTimes = getAllPersonInOutList.Where(x => x.IsIn == false);
|
||||
var getInLists = getAllPersonInOutList.Where(x => x.IsIn == true);
|
||||
//// 查找当前项目 最新的人工时数量记录
|
||||
if (SafeHours == 0)
|
||||
{
|
||||
PersonInOutNumberId = SQLHelper.GetNewID(),
|
||||
ProjectId = projectItem.ProjectId,
|
||||
InOutDate = DateTime.Now,
|
||||
PersonNum = SitePersonNum,
|
||||
WorkHours = SafeHours,
|
||||
};
|
||||
var getMaxInOutDate = getNums.Where(x => x.InOutDate < date).OrderByDescending(x => x.InOutDate).FirstOrDefault();
|
||||
if (getMaxInOutDate != null)
|
||||
{
|
||||
SafeHours = getMaxInOutDate.WorkHours ?? 0;
|
||||
}
|
||||
}
|
||||
|
||||
db.SitePerson_PersonInOutNumber.InsertOnSubmit(newNum);
|
||||
db.SubmitChanges();
|
||||
int getOutPersonCount = getPersonOutTimes.Select(x => x.PersonId).Distinct().Count();
|
||||
SafeHours += getOutPersonCount * 8;
|
||||
}
|
||||
else
|
||||
|
||||
|
||||
//SafeHours = Convert.ToInt32(SafeHours * 1.0 / 60);
|
||||
if (itemNum != null)
|
||||
{
|
||||
getPersonInOutNumber.InOutDate = DateTime.Now;
|
||||
getPersonInOutNumber.PersonNum = SitePersonNum;
|
||||
getPersonInOutNumber.WorkHours = SafeHours;
|
||||
itemNum.InOutDate = date;
|
||||
itemNum.WorkHours = SafeHours;
|
||||
db.SubmitChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
@ -244,21 +332,27 @@ namespace BLL
|
|||
{
|
||||
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||
{
|
||||
var getPersons = from x in db.SitePerson_Person
|
||||
where x.IdentityCard != null && x.QRCodeAttachUrl == null
|
||||
select x;
|
||||
if (getPersons.Count() > 0)
|
||||
try
|
||||
{
|
||||
foreach (var item in getPersons)
|
||||
var getPersons = from x in db.SitePerson_Person
|
||||
where x.IdentityCard != null && x.QRCodeAttachUrl == null
|
||||
select x;
|
||||
if (getPersons.Count() > 0)
|
||||
{
|
||||
string url = CreateQRCodeService.CreateCode_Simple("person$" + item.IdentityCard);
|
||||
if (!string.IsNullOrEmpty(url))
|
||||
foreach (var item in getPersons)
|
||||
{
|
||||
item.QRCodeAttachUrl = url;
|
||||
db.SubmitChanges();
|
||||
string url = CreateQRCodeService.CreateCode_Simple("person$" + item.IdentityCard);
|
||||
if (!string.IsNullOrEmpty(url))
|
||||
{
|
||||
item.QRCodeAttachUrl = url;
|
||||
db.SubmitChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
@ -293,35 +387,38 @@ namespace BLL
|
|||
/// </summary>
|
||||
public static void SendSubscribeMessage()
|
||||
{
|
||||
try
|
||||
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||
{
|
||||
string miniprogram_state = ConfigurationManager.AppSettings["miniprogram_state"];
|
||||
if (!string.IsNullOrEmpty(miniprogram_state) && miniprogram_state == "formal")
|
||||
try
|
||||
{
|
||||
//// 获取所有待办事项
|
||||
var getToItems = from x in Funs.DB.View_APP_GetToDoItems select x;
|
||||
if (getToItems.Count() > 0)
|
||||
string miniprogram_state = ConfigurationManager.AppSettings["miniprogram_state"];
|
||||
if (!string.IsNullOrEmpty(miniprogram_state) && miniprogram_state == "formal")
|
||||
{
|
||||
//// 获取施工中的项目
|
||||
var getProjects = ProjectService.GetProjectWorkList();
|
||||
foreach (var item in getProjects)
|
||||
//// 获取所有待办事项
|
||||
var getToItems = from x in db.View_APP_GetToDoItems select x;
|
||||
if (getToItems.Count() > 0)
|
||||
{
|
||||
////获取当前项目下的待办
|
||||
var getPItems = getToItems.Where(x => x.ProjectId == item.ProjectId);
|
||||
if (getPItems.Count() > 0)
|
||||
//// 获取施工中的项目
|
||||
var getProjects = ProjectService.GetProjectWorkList();
|
||||
foreach (var item in getProjects)
|
||||
{
|
||||
foreach (var itemP in getPItems)
|
||||
////获取当前项目下的待办
|
||||
var getPItems = getToItems.Where(x => x.ProjectId == item.ProjectId);
|
||||
if (getPItems.Count() > 0)
|
||||
{
|
||||
//"项目【" + item.ProjectCode + "】上有" + itemP.Counts.ToString() + "条待办事件,需要您处理!"
|
||||
APICommonService.SendSubscribeMessage(itemP.UserId, "项目" + item.ProjectCode + "有待办", "施工信息管理", string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
|
||||
foreach (var itemP in getPItems)
|
||||
{
|
||||
//"项目【" + item.ProjectCode + "】上有" + itemP.Counts.ToString() + "条待办事件,需要您处理!"
|
||||
APICommonService.SendSubscribeMessage(itemP.UserId, "项目" + item.ProjectCode + "有待办", "施工信息管理", string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{ }
|
||||
}
|
||||
catch (Exception ex)
|
||||
{ }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -334,175 +431,181 @@ namespace BLL
|
|||
{
|
||||
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||
{
|
||||
////动火作业
|
||||
var getFireWorks = from x in db.License_FireWork
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.FireWorkId,
|
||||
MenuId = Const.ProjectFireWorkMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemFire in getFireWorks)
|
||||
try
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemFire);
|
||||
}
|
||||
|
||||
////高处作业票
|
||||
var getHeightWorks = from x in db.License_HeightWork
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.HeightWorkId,
|
||||
MenuId = Const.ProjectHeightWorkMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemHeightWork in getHeightWorks)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemHeightWork);
|
||||
}
|
||||
|
||||
////受限空间作业票
|
||||
var getLimitedSpaces = from x in db.License_LimitedSpace
|
||||
////动火作业
|
||||
var getFireWorks = from x in db.License_FireWork
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.LimitedSpaceId,
|
||||
MenuId = Const.ProjectLimitedSpaceMenuId,
|
||||
LicenseId = x.FireWorkId,
|
||||
MenuId = Const.ProjectFireWorkMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemLimitedSpace in getLimitedSpaces)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemLimitedSpace);
|
||||
}
|
||||
foreach (var itemFire in getFireWorks)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemFire);
|
||||
}
|
||||
|
||||
////射线作业票
|
||||
var getRadialWorks = from x in db.License_RadialWork
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.RadialWorkId,
|
||||
MenuId = Const.ProjectRadialWorkMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemRadialWork in getRadialWorks)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemRadialWork);
|
||||
}
|
||||
|
||||
////断路(占道)作业票
|
||||
var getOpenCircuits = from x in db.License_OpenCircuit
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.OpenCircuitId,
|
||||
MenuId = Const.ProjectOpenCircuitMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemOpenCircuit in getOpenCircuits)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemOpenCircuit);
|
||||
}
|
||||
|
||||
////动土作业票
|
||||
var getBreakGrounds = from x in db.License_BreakGround
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.BreakGroundId,
|
||||
MenuId = Const.ProjectBreakGroundMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemBreakGround in getBreakGrounds)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemBreakGround);
|
||||
}
|
||||
|
||||
////夜间施工作业票
|
||||
var getNightWorks = from x in db.License_NightWork
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.NightWorkId,
|
||||
MenuId = Const.ProjectNightWorkMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemNightWork in getNightWorks)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemNightWork);
|
||||
}
|
||||
|
||||
////吊装作业票
|
||||
var getLiftingWorks = from x in db.License_LiftingWork
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.LiftingWorkId,
|
||||
MenuId = Const.ProjectLiftingWorkMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemLiftingWork in getLiftingWorks)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemLiftingWork);
|
||||
}
|
||||
|
||||
////作业票【定稿】
|
||||
var getLicenseManagers = from x in db.License_LicenseManager
|
||||
where x.WorkStates == Const.State_2 && x.EndDate <= DateTime.Now
|
||||
////高处作业票
|
||||
var getHeightWorks = from x in db.License_HeightWork
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.LicenseManagerId,
|
||||
MenuId = Const.ProjectLicenseManagerMenuId,
|
||||
LicenseId = x.HeightWorkId,
|
||||
MenuId = Const.ProjectHeightWorkMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
LicenseCode = x.LicenseManagerCode,
|
||||
ApplyUnitId = x.UnitId,
|
||||
ApplyManName = x.ApplicantMan,
|
||||
WorkAreaIds = x.WorkAreaId,
|
||||
ApplyManId = x.CompileMan,
|
||||
ApplyDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.CompileDate),
|
||||
ValidityEndTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.EndDate),
|
||||
ValidityStartTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.StartDate),
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemLicenseManager in getLicenseManagers)
|
||||
foreach (var itemHeightWork in getHeightWorks)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemHeightWork);
|
||||
}
|
||||
|
||||
////受限空间作业票
|
||||
var getLimitedSpaces = from x in db.License_LimitedSpace
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.LimitedSpaceId,
|
||||
MenuId = Const.ProjectLimitedSpaceMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemLimitedSpace in getLimitedSpaces)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemLimitedSpace);
|
||||
}
|
||||
|
||||
////射线作业票
|
||||
var getRadialWorks = from x in db.License_RadialWork
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.RadialWorkId,
|
||||
MenuId = Const.ProjectRadialWorkMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemRadialWork in getRadialWorks)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemRadialWork);
|
||||
}
|
||||
|
||||
////断路(占道)作业票
|
||||
var getOpenCircuits = from x in db.License_OpenCircuit
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.OpenCircuitId,
|
||||
MenuId = Const.ProjectOpenCircuitMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemOpenCircuit in getOpenCircuits)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemOpenCircuit);
|
||||
}
|
||||
|
||||
////动土作业票
|
||||
var getBreakGrounds = from x in db.License_BreakGround
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.BreakGroundId,
|
||||
MenuId = Const.ProjectBreakGroundMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemBreakGround in getBreakGrounds)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemBreakGround);
|
||||
}
|
||||
|
||||
////夜间施工作业票
|
||||
var getNightWorks = from x in db.License_NightWork
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.NightWorkId,
|
||||
MenuId = Const.ProjectNightWorkMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemNightWork in getNightWorks)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemNightWork);
|
||||
}
|
||||
|
||||
////吊装作业票
|
||||
var getLiftingWorks = from x in db.License_LiftingWork
|
||||
where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.LiftingWorkId,
|
||||
MenuId = Const.ProjectLiftingWorkMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
CloseManId = x.ApplyManId,
|
||||
CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
|
||||
CloseReasons = "到期自动关闭。",
|
||||
CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemLiftingWork in getLiftingWorks)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemLiftingWork);
|
||||
}
|
||||
|
||||
////作业票【定稿】
|
||||
var getLicenseManagers = from x in db.License_LicenseManager
|
||||
where x.WorkStates == Const.State_2 && x.EndDate <= DateTime.Now
|
||||
select new Model.LicenseDataItem
|
||||
{
|
||||
LicenseId = x.LicenseManagerId,
|
||||
MenuId = Const.ProjectLicenseManagerMenuId,
|
||||
ProjectId = x.ProjectId,
|
||||
LicenseCode = x.LicenseManagerCode,
|
||||
ApplyUnitId = x.UnitId,
|
||||
ApplyManName = x.ApplicantMan,
|
||||
WorkAreaIds = x.WorkAreaId,
|
||||
ApplyManId = x.CompileMan,
|
||||
ApplyDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.CompileDate),
|
||||
ValidityEndTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.EndDate),
|
||||
ValidityStartTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.StartDate),
|
||||
States = Const.State_3,
|
||||
};
|
||||
foreach (var itemLicenseManager in getLicenseManagers)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemLicenseManager);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
APILicenseDataService.SaveLicenseData(itemLicenseManager);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@ namespace BLL
|
|||
{
|
||||
public class MonitorService
|
||||
{
|
||||
|
||||
#region 启动监视器 系统启动5分钟
|
||||
/// <summary>
|
||||
/// 监视组件
|
||||
|
@ -2166,7 +2165,7 @@ namespace BLL
|
|||
#endregion
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// 定时执行
|
||||
/// </summary>
|
||||
public static void DoSynchData()
|
||||
{
|
||||
|
|
|
@ -107,51 +107,60 @@ namespace BLL
|
|||
/// <returns></returns>
|
||||
public static string EndTestPlan(string testPlanId)
|
||||
{
|
||||
Model.SGGLDB db = Funs.DB;
|
||||
string info = string.Empty;
|
||||
var getTestPlans = from x in db.Test_TestPlan
|
||||
where x.States == Const.State_2 && x.TestEndTime.Value.AddMinutes(x.Duration.Value) < DateTime.Now
|
||||
&& (testPlanId == null || x.TestPlanId == testPlanId)
|
||||
select x;
|
||||
foreach (var getTestPlan in getTestPlans)
|
||||
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||
{
|
||||
string itemInfo = string.Empty;
|
||||
var getTestRecords = from x in db.Test_TestRecord
|
||||
where x.TestPlanId == testPlanId && (!x.TotalScore.HasValue || !x.TestEndTime.HasValue)
|
||||
select x;
|
||||
//// 考试下所有考试都交卷
|
||||
if (getTestRecords.Count() > 0)
|
||||
try
|
||||
{
|
||||
//// 扫码结束时间 + 考试时长 小于当前时间 考试结束 所有人自动交卷
|
||||
if (getTestPlan.TestStartTime.Value.AddMinutes(getTestPlan.Duration.Value) < DateTime.Now)
|
||||
string info = string.Empty;
|
||||
var getTestPlans = from x in db.Test_TestPlan
|
||||
where x.States == Const.State_2 && x.TestEndTime.Value.AddMinutes(x.Duration.Value) < DateTime.Now
|
||||
&& (testPlanId == null || x.TestPlanId == testPlanId)
|
||||
select x;
|
||||
foreach (var getTestPlan in getTestPlans)
|
||||
{
|
||||
foreach (var itemRecord in getTestRecords)
|
||||
string itemInfo = string.Empty;
|
||||
var getTestRecords = from x in db.Test_TestRecord
|
||||
where x.TestPlanId == testPlanId && (!x.TotalScore.HasValue || !x.TestEndTime.HasValue)
|
||||
select x;
|
||||
//// 考试下所有考试都交卷
|
||||
if (getTestRecords.Count() > 0)
|
||||
{
|
||||
DateTime rdateTime = itemRecord.TestStartTime.HasValue ? itemRecord.TestStartTime.Value : getTestPlan.TestStartTime.Value;
|
||||
itemRecord.TestEndTime = rdateTime.AddMinutes(itemRecord.Duration.Value);
|
||||
itemRecord.TestScores = db.Test_TestRecordItem.Where(x => x.TestRecordId == itemRecord.TestRecordId).Sum(x => x.SubjectScore) ?? 0;
|
||||
//// 扫码结束时间 + 考试时长 小于当前时间 考试结束 所有人自动交卷
|
||||
if (getTestPlan.TestStartTime.Value.AddMinutes(getTestPlan.Duration.Value) < DateTime.Now)
|
||||
{
|
||||
foreach (var itemRecord in getTestRecords)
|
||||
{
|
||||
DateTime rdateTime = itemRecord.TestStartTime.HasValue ? itemRecord.TestStartTime.Value : getTestPlan.TestStartTime.Value;
|
||||
itemRecord.TestEndTime = rdateTime.AddMinutes(itemRecord.Duration.Value);
|
||||
itemRecord.TestScores = db.Test_TestRecordItem.Where(x => x.TestRecordId == itemRecord.TestRecordId).Sum(x => x.SubjectScore) ?? 0;
|
||||
db.SubmitChanges();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
itemInfo = getTestPlan.PlanCode + "竞赛中还有未交卷人员,且未达到考试结束时间!";
|
||||
info += itemInfo;
|
||||
}
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(itemInfo))
|
||||
{
|
||||
getTestPlan.States = Const.State_3;
|
||||
getTestPlan.ActualTime = DateTime.Now;
|
||||
db.SubmitChanges();
|
||||
}
|
||||
}
|
||||
else
|
||||
if (getTestPlans.Count() == 0 && !string.IsNullOrEmpty(testPlanId))
|
||||
{
|
||||
itemInfo = getTestPlan.PlanCode + "竞赛中还有未交卷人员,且未达到考试结束时间!";
|
||||
info += itemInfo;
|
||||
info = "当前竞赛还不到结束时间!";
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(itemInfo))
|
||||
catch (Exception ex)
|
||||
{
|
||||
getTestPlan.States = Const.State_3;
|
||||
getTestPlan.ActualTime = DateTime.Now;
|
||||
db.SubmitChanges();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (getTestPlans.Count() == 0 && !string.IsNullOrEmpty(testPlanId))
|
||||
{
|
||||
info = "当前竞赛还不到结束时间!";
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -41,6 +41,10 @@
|
|||
<f:TextBox ID="txtName" runat="server" Label="姓名" LabelWidth="60px" Width="200px"></f:TextBox>
|
||||
<f:ToolbarFill runat="server"></f:ToolbarFill>
|
||||
<f:Button ID="btnSearch" runat="server" Icon="SystemSearch" ToolTip="查询" OnClick="btnSearch_Click">
|
||||
</f:Button>
|
||||
<f:Button ID="btnRefresh" runat="server" Icon="ArrowRefresh" ToolTip="校正人工时"
|
||||
AjaxLoadingType="Mask" ShowAjaxLoadingMaskText="true" AjaxLoadingMaskText="正在校正当前项目人工时,请稍候"
|
||||
EnableAjax="true" DisableControlBeforePostBack="false" OnClick="btnRefresh_Click">
|
||||
</f:Button>
|
||||
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" ToolTip="导出" Icon="FolderUp"
|
||||
EnableAjax="false" DisableControlBeforePostBack="false">
|
||||
|
|
|
@ -118,5 +118,11 @@ namespace FineUIPro.Web.Door
|
|||
}
|
||||
|
||||
#endregion
|
||||
|
||||
protected void btnRefresh_Click(object sender, EventArgs e)
|
||||
{
|
||||
BLL.GetDataService.CorrectingPersonInOutNumberD(this.CurrUser.LoginProjectId);
|
||||
Alert.ShowInParent("操作完成", MessageBoxIcon.Success);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -102,6 +102,15 @@ namespace FineUIPro.Web.Door {
|
|||
/// </remarks>
|
||||
protected global::FineUIPro.Button btnSearch;
|
||||
|
||||
/// <summary>
|
||||
/// btnRefresh 控件。
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// 自动生成的字段。
|
||||
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||
/// </remarks>
|
||||
protected global::FineUIPro.Button btnRefresh;
|
||||
|
||||
/// <summary>
|
||||
/// btnOut 控件。
|
||||
/// </summary>
|
||||
|
|
|
@ -47,26 +47,26 @@
|
|||
</f:Toolbar>
|
||||
</Toolbars>
|
||||
<Columns>
|
||||
<f:TemplateField ColumnID="tfNumber" HeaderText="序号" Width="90px" HeaderTextAlign="Center" TextAlign="Center">
|
||||
<f:TemplateField ColumnID="tfNumber" HeaderText="序号" Width="55px" HeaderTextAlign="Center" TextAlign="Center">
|
||||
<ItemTemplate>
|
||||
<asp:Label ID="labNumber" runat="server" Text=' <%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1%>'></asp:Label>
|
||||
</ItemTemplate>
|
||||
</f:TemplateField>
|
||||
<f:RenderField Width="250px" ColumnID="UnitName" DataField="UnitName" SortField="UnitName"
|
||||
<f:RenderField Width="230px" ColumnID="UnitName" DataField="UnitName" SortField="UnitName"
|
||||
FieldType="String" HeaderText="单位名称" HeaderTextAlign="Center"
|
||||
TextAlign="Left">
|
||||
</f:RenderField>
|
||||
<f:RenderField Width="100px" ColumnID="PersonName" DataField="PersonName" SortField="PersonName"
|
||||
<f:RenderField Width="90px" ColumnID="PersonName" DataField="PersonName" SortField="PersonName"
|
||||
FieldType="String" HeaderText="人员姓名" HeaderTextAlign="Center"
|
||||
TextAlign="Left">
|
||||
</f:RenderField>
|
||||
<f:TemplateField ColumnID="tfIntoOut" Width="80px" HeaderText="进出" HeaderTextAlign="Center" TextAlign="Center">
|
||||
<f:TemplateField ColumnID="tfIntoOut" Width="70px" HeaderText="进出" HeaderTextAlign="Center" TextAlign="Center">
|
||||
<ItemTemplate>
|
||||
<asp:Label ID="lblIntoOut" runat="server" Text='<%# ConvertIntoOut(Eval("IntoOut")) %>'
|
||||
ToolTip='<%#ConvertIntoOut(Eval("IntoOut")) %>'></asp:Label>
|
||||
</ItemTemplate>
|
||||
</f:TemplateField>
|
||||
<f:RenderField Width="160px" ColumnID="IntoOutTime" DataField="IntoOutTime" SortField="IntoOutTime"
|
||||
<f:RenderField Width="150px" ColumnID="IntoOutTime" DataField="IntoOutTime" SortField="IntoOutTime"
|
||||
HeaderText="出入现场时间" HeaderTextAlign="Center" TextAlign="Center">
|
||||
</f:RenderField>
|
||||
<%-- <f:TemplateField ColumnID="tfAddress" Width="130px" HeaderText="进出地点" HeaderTextAlign="Center" TextAlign="Left">
|
||||
|
@ -74,16 +74,16 @@
|
|||
<asp:Label ID="lblAddress" runat="server" Text='<%# Bind("Address") %>' ToolTip='<%#Bind("Address") %>'></asp:Label>
|
||||
</ItemTemplate>
|
||||
</f:TemplateField>--%>
|
||||
<f:TemplateField ColumnID="tfWorkAreaName" Width="120px" HeaderText="单位工程" HeaderTextAlign="Center" TextAlign="Left">
|
||||
<f:TemplateField ColumnID="tfWorkAreaName" Width="170px" HeaderText="单位工程" HeaderTextAlign="Center" TextAlign="Left">
|
||||
<ItemTemplate>
|
||||
<asp:Label ID="lblWorkAreaName" runat="server" Text='<%# Bind("WorkAreaName") %>' ToolTip='<%#Bind("WorkAreaName") %>'></asp:Label>
|
||||
</ItemTemplate>
|
||||
</f:TemplateField>
|
||||
<f:RenderField Width="100px" ColumnID="CardNo" DataField="CardNo" SortField="CardNo"
|
||||
<f:RenderField Width="90px" ColumnID="CardNo" DataField="CardNo" SortField="CardNo"
|
||||
FieldType="String" HeaderText="卡号" HeaderTextAlign="Center"
|
||||
TextAlign="Center">
|
||||
</f:RenderField>
|
||||
<f:TemplateField ColumnID="tfIdentityCard" Width="180px" HeaderText="身份证号" HeaderTextAlign="Center" TextAlign="Right">
|
||||
<f:TemplateField ColumnID="tfIdentityCard" Width="170px" HeaderText="身份证号" HeaderTextAlign="Center" TextAlign="Right">
|
||||
<ItemTemplate>
|
||||
<asp:Label ID="lblIdentityCard" runat="server" Text='<%# Bind("IdentityCard") %>' ToolTip='<%#Bind("IdentityCard") %>'></asp:Label>
|
||||
</ItemTemplate>
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Tree>
|
||||
<TreeNode id="92CBD072-20F8-45B1-9D17-6F7494DD2020" Text="数据导入" NavigateUrl="">
|
||||
<TreeNode id="F3AA42B3-5776-4992-A625-1216C579FEDE" Text="项目进度情况" NavigateUrl="JDGL/Check/ProgressCompletion.aspx">
|
||||
</TreeNode>
|
||||
<TreeNode id="858E83E9-ADE5-452E-BD65-82D8DFF872C0" Text="分部、工作项及费用清单裁剪" NavigateUrl="JDGL/WBS/WBSSetAudit.aspx">
|
||||
</TreeNode>
|
||||
<TreeNode id="E3905BF1-289B-4500-BD34-36F97D649AFC" Text="工作量录入" NavigateUrl="JDGL/WBS/WorkloadInput.aspx"></TreeNode>
|
||||
<TreeNode id="2A3F8526-95C7-4D30-B2DD-DD26696BE150" Text="工作量统计" NavigateUrl="JDGL/WBS/WorkloadStatistics.aspx"></TreeNode>
|
||||
<TreeNode id="59AAE0F0-2DB6-4065-B304-7E2C56EC3E5D" Text="赢得值曲线" NavigateUrl="JDGL/CostAnalysis/EarnedValueCurve.aspx"></TreeNode>
|
||||
<TreeNode id="9CAF311E-C234-4DA4-B235-D4E478FBD80E" Text="里程碑" NavigateUrl="JDGL/WBS/MilePost.aspx"></TreeNode>
|
||||
<TreeNode id="92CBD072-20F8-45B1-9D17-6F7494DD2020" Text="数据导入" NavigateUrl=""><TreeNode id="F3AA42B3-5776-4992-A625-1216C579FEDE" Text="项目进度情况" NavigateUrl="JDGL/Check/ProgressCompletion.aspx"></TreeNode>
|
||||
<TreeNode id="2AE9D982-A499-497F-8F54-ADDA5856887E" Text="工程量完成情况" NavigateUrl="JDGL/Check/QuantityCompletion.aspx"></TreeNode>
|
||||
<TreeNode id="82E513B9-1A6F-495A-A633-EBC89CE5273A" Text="低温储罐完成情况" NavigateUrl="JDGL/Check/LowTankCompletion.aspx"></TreeNode>
|
||||
<TreeNode id="4ACA0647-4D44-462E-8277-1EF9F100566A" Text="钢结构完成情况" NavigateUrl="JDGL/Check/SteelStructureCompletion.aspx"></TreeNode>
|
||||
|
|
|
@ -290,6 +290,9 @@ namespace FineUIPro.Web
|
|||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
Response.Expires = 0; //设置过期时间
|
||||
Response.Cache.SetNoStore(); //在服务器端不缓存该页面
|
||||
Response.AppendHeader("Pragma", "no-cache"); //在客户端不缓存
|
||||
ProjectService.InitAllProjectShortNameDropDownList(this.drpProject, this.CurrUser.UserId, false);
|
||||
if (!string.IsNullOrEmpty(Request.Params["projectId"]))
|
||||
{
|
||||
|
@ -580,8 +583,8 @@ namespace FineUIPro.Web
|
|||
|
||||
protected void drpProject_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
this.CurrUser.LoginProjectId = this.drpProject.SelectedValue;
|
||||
this.Tab1.RefreshIFrame();
|
||||
//this.CurrUser.LoginProjectId = this.drpProject.SelectedValue;
|
||||
PageContext.RegisterStartupScript("parent.removeActiveTab();");
|
||||
MenuSwitchMethod(this.CurrUser.LastMenuType);
|
||||
GetWeather();
|
||||
|
@ -593,7 +596,7 @@ namespace FineUIPro.Web
|
|||
/// <param name="type"></param>
|
||||
protected void MenuSwitchMethod(string type)
|
||||
{
|
||||
this.CurrUser.LoginProjectId = this.drpProject.SelectedValue;
|
||||
// this.CurrUser.LoginProjectId = this.drpProject.SelectedValue;
|
||||
this.XmlDataSource1.DataFile = "common/Menu_Personal.xml";
|
||||
this.leftPanel.Hidden = true;
|
||||
var projectUser = BLL.ProjectUserService.GetProjectUserByUserIdProjectId(this.CurrUser.LoginProjectId, this.CurrUser.UserId);
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<SiteUrlToLaunchAfterPublish />
|
||||
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
|
||||
<ExcludeApp_Data>False</ExcludeApp_Data>
|
||||
<publishUrl>E:\Package\WuHuan\SGGLAPI</publishUrl>
|
||||
<publishUrl>E:\Package\中化五环\SGGLAPI</publishUrl>
|
||||
<DeleteExistingFiles>True</DeleteExistingFiles>
|
||||
<PrecompileBeforePublish>True</PrecompileBeforePublish>
|
||||
<EnableUpdateable>True</EnableUpdateable>
|
||||
|
|
Loading…
Reference in New Issue