This commit is contained in:
高飞 2022-09-02 17:29:15 +08:00
commit 42531a1b7f
56 changed files with 842 additions and 304 deletions

View File

@ -538,36 +538,40 @@ GO
--GO
/*ÏîÄ¿*/
INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
VALUES('D097252D-B42A-4CAE-9030-A5C351057ABD','Menu_ProjectSet','ÏîÄ¿ÉèÖÃ',1,'MenuType_P')
GO
INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
VALUES('E116D85E-6215-4299-9EEA-FBC46B0E6163','Menu_CQMS','质量管理',2,'MenuType_P')
INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
VALUES('CF2CA03F-84B3-432E-AEAC-4ECF7890D6D7','Menu_PZHGL','施工管理',2,'MenuType_P')
GO
INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
VALUES('35282E20-81AB-4DA2-80F2-8F136776642D','Menu_HSSE','安全管理',3,'MenuType_P')
VALUES('E116D85E-6215-4299-9EEA-FBC46B0E6163','Menu_CQMS','质量管理',3,'MenuType_P')
GO
INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
VALUES('B4F6F0B8-C7AD-421A-9BE3-DCC70EB39A8C','Menu_JDGL','进度管理',4,'MenuType_P')
VALUES('B4F6F0B8-C7AD-421A-9BE3-DCC70EB39A8C','Menu_JDGL','进度/计划',4,'MenuType_P')
GO
INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
VALUES('CE689095-841F-4714-A2B4-BF72D13E2B94','Menu_HJGL','焊接管理',5,'MenuType_P')
VALUES('35282E20-81AB-4DA2-80F2-8F136776642D','Menu_HSSE','HSE管理',5,'MenuType_P')
GO
INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
VALUES('CE689095-841F-4714-A2B4-BF72D13E2B94','Menu_HJGL','焊接管理',6,'MenuType_P')
GO
INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
VALUES('7AD04F82-91B3-4579-993C-8C8FAC503864','Menu_TestRun','试车管理',6,'MenuType_P')
GO
INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
VALUES('CF2CA03F-84B3-432E-AEAC-4ECF7890D6D7','Menu_PZHGL','施工综合',7,'MenuType_P')
VALUES('7AD04F82-91B3-4579-993C-8C8FAC503864','Menu_TestRun','试车管理',7,'MenuType_P')
GO
INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
VALUES('85CF0BBF-A3F3-42DF-89DC-CE9A4886BCA1','Menu_DigitalSite','视频监控',8,'MenuType_P')
VALUES('126FB0AC-521C-4145-86FC-B507D83B7646','Menu_Change','变更管理',8,'MenuType_P')
GO
INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
VALUES('C0457DFF-AAA3-4019-AC9B-34BF22BF3A0E','Menu_DocControl','文控管理',9,'MenuType_P')
GO
INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
VALUES('0B13D4A9-E047-4C18-AD68-8D3724D4F0A8','Menu_Attendance','现场考勤',10,'MenuType_P')
GO
INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
VALUES('85CF0BBF-A3F3-42DF-89DC-CE9A4886BCA1','Menu_Video','视频监控',11,'MenuType_P')
GO
--INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
--VALUES('0B13D4A9-E047-4C18-AD68-8D3724D4F0A8','Menu_Video','现场考勤',9,'MenuType_P')
--GO
--INSERT INTO Sys_Const (ID,ConstValue,ConstText,SortIndex,GroupId)
--VALUES('69B856E6-E385-4771-9341-23E7416C46F1','Menu_PDigData','项目考勤',9,'MenuType_P')
--GO
--ÏîÄ¿ÀàÐÍ
INSERT INTO dbo.Sys_Const(ID, ConstValue, ConstText, SortIndex, GroupId)

View File

@ -0,0 +1,4 @@
ALTER TABLE SitePerson_Person ADD RawPassword NVARCHAR(100) NULL
GO
ALTER TABLE Sys_user ADD RawPassword NVARCHAR(100) NULL
GO

View File

@ -0,0 +1,9 @@
-- 重置双氧水项目人员下发状态 为空
disable trigger [dbo].[SitePerson_Person_Bak_TRIGGER] on [dbo].[SitePerson_Person]
go
update SitePerson_Person set ExchangeTime=null,ExchangeTime2=null where ProjectId='0d511d27-c4ea-49ba-bd75-7b1c49a04382'
go
update SitePerson_Person_Bak set ExchangeTime=null,ExchangeTime2=null where ProjectId='0d511d27-c4ea-49ba-bd75-7b1c49a04382'
go
enable trigger [dbo].[SitePerson_Person_Bak_TRIGGER] on [dbo].[SitePerson_Person]
go

View File

@ -0,0 +1,4 @@
--ADD BY YangHongwei 2022-08-04
1、宏宜项目许洪涛考勤月记录校正数据方法优化。
2、现场人员同步门禁状态重置按钮功能实现。
--END

View File

@ -0,0 +1,4 @@
ALTER TABLE [dbo].[EduTrain_TrainRecord] DROP CONSTRAINT [FK_EduTrain_TrainRecord_Training_Plan]
GO

View File

@ -0,0 +1,3 @@
--ADD BY YangHongwei 2022-08-29
1、旭科项目张英魁处理未做培训计划直接按照考试计划考试的情况新增按钮手动将这部分考试记录归到到培训记录中。
--END

View File

@ -22,8 +22,7 @@ namespace BLL
{
var getUser = from x in db.SitePerson_Person
where (x.Telephone == userInfo.Account || x.PersonName == userInfo.Account)
&& (x.Password == Funs.EncryptionPassword(userInfo.Password)
|| (x.IdentityCard != null && x.IdentityCard.Substring(x.IdentityCard.Length - 4) == userInfo.Password))
&& x.Password == Funs.EncryptionPassword(userInfo.Password)
&& x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime >= DateTime.Now) && x.IsUsed == true
select new Model.UserItem
{
@ -812,7 +811,8 @@ namespace BLL
{
newPerson.IsUsed = false;
}
newPerson.Password = PersonService.GetPersonPassWord(person.IdentityCard);
newPerson.RawPassword = Funs.getInitialPassword(person.UnitId, person.IdentityCard);
newPerson.Password = Funs.EncryptionPassword(newPerson.RawPassword);
string rootUrl = ConfigurationManager.AppSettings["localRoot"];
if (!string.IsNullOrEmpty(rootUrl) && !string.IsNullOrEmpty(person.PhotoUrl))
{

View File

@ -202,6 +202,7 @@ namespace BLL
}
}
}
//// 获取得到的单选题、多选题、判断题 数量
int getDiffTestType1Count = sumTestType1Count - getTestTrainingItemList.Where(x => x.TestType == "1").Count();
int getDiffTestType2Count = sumTestType2Count - getTestTrainingItemList.Where(x => x.TestType == "2").Count();
@ -502,11 +503,11 @@ namespace BLL
/// </summary>
/// <param name="testRecordItemId"></param>
/// <param name="answerItems"></param>
public static void getTestRecordItemAnswerBySelectedItem(Model.Training_TestRecordItem getTItemT, string selectedItem)
public static void getTestRecordItemAnswerBySelectedItem(string testRecordItemId, string selectedItem)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getTItem = db.Training_TestRecordItem.FirstOrDefault(x => x.TestRecordItemId == getTItemT.TestRecordItemId);
var getTItem = db.Training_TestRecordItem.FirstOrDefault(x => x.TestRecordItemId == testRecordItemId);
if (getTItem != null)
{
getTItem.SubjectScore = 0;
@ -588,28 +589,31 @@ namespace BLL
/// <param name="testRecord"></param>
public static string getResitTestRecord(Model.Training_TestRecord getTestRecord)
{
Model.Training_TestRecord newTestRecord = new Model.Training_TestRecord
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
TestRecordId = SQLHelper.GetNewID(),
ProjectId = getTestRecord.ProjectId,
TestPlanId = getTestRecord.TestPlanId,
TestManId = getTestRecord.TestManId,
TestType = getTestRecord.TestType,
TemporaryUser = getTestRecord.TemporaryUser,
Duration = getTestRecord.Duration,
// TestStartTime = DateTime.Now,
};
Model.Training_TestRecord newTestRecord = new Model.Training_TestRecord
{
TestRecordId = SQLHelper.GetNewID(),
ProjectId = getTestRecord.ProjectId,
TestPlanId = getTestRecord.TestPlanId,
TestManId = getTestRecord.TestManId,
TestType = getTestRecord.TestType,
TemporaryUser = getTestRecord.TemporaryUser,
Duration = getTestRecord.Duration,
// TestStartTime = DateTime.Now,
};
Funs.DB.Training_TestRecord.InsertOnSubmit(newTestRecord);
Funs.DB.SubmitChanges();
db.Training_TestRecord.InsertOnSubmit(newTestRecord);
db.SubmitChanges();
var getTestPlan = Funs.DB.Training_TestPlan.FirstOrDefault(x => x.TestPlanId == newTestRecord.TestPlanId);
var person = PersonService.GetPersonByUserId(newTestRecord.TestManId, getTestPlan.ProjectId);
if (getTestPlan != null && person != null)
{
CreateTestRecordItem(getTestPlan, newTestRecord.TestRecordId, person);
var getTestPlan = db.Training_TestPlan.FirstOrDefault(x => x.TestPlanId == newTestRecord.TestPlanId);
var person =db.SitePerson_Person.FirstOrDefault(x=>x.PersonId == getTestRecord.TestManId);
if (getTestPlan != null && person != null)
{
CreateTestRecordItem(getTestPlan, newTestRecord.TestRecordId, person);
}
return newTestRecord.TestRecordId;
}
return newTestRecord.TestRecordId;
}
#endregion
}

View File

@ -184,5 +184,96 @@ namespace BLL
}
}
#endregion
#region
/// <summary>
/// 将相关未做培训 但考试考生内容 写培训记录归档
/// </summary>
/// <param name="getTestPlan"></param>
public static void InsertTrainRecordNoTrainingPlan(Model.Training_TestPlan getTestPlan)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
Model.EduTrain_TrainRecord newTrainRecord = new Model.EduTrain_TrainRecord
{
TrainingId = SQLHelper.GetNewID(),
TrainingCode = CodeRecordsService.ReturnCodeByMenuIdProjectId(Const.ProjectTrainRecordMenuId, getTestPlan.ProjectId, Const.UnitId_CWCEC),
ProjectId = getTestPlan.ProjectId,
TrainTitle = getTestPlan.PlanName,
TrainContent = getTestPlan.PlanName,
TrainStartDate = getTestPlan.TestStartTime,
TeachHour = getTestPlan.Duration,
TrainEndDate = getTestPlan.TestEndTime,
TeachMan = UserService.GetUserNameByUserId(getTestPlan.PlanManId),
TeachAddress = getTestPlan.TestPalce,
Remark = "来源:考试计划",
TrainTypeId = Const.EntryTrainTypeId,
UnitIds = getTestPlan.UnitIds,
States = Const.State_2,
WorkPostIds = getTestPlan.WorkPostIds,
PlanId = getTestPlan.TestPlanId,
};
newTrainRecord.CompileMan = newTrainRecord.TeachMan;
///获取培训人员
var getTestRecords = from x in db.Training_TestRecord
where x.TestPlanId == getTestPlan.TestPlanId
select x;
newTrainRecord.TrainPersonNum = getTestRecords.Count();
///新增培训记录
db.EduTrain_TrainRecord.InsertOnSubmit(newTrainRecord);
db.SubmitChanges();
////及格分数
int passScore = 80;
var testRule = db.Sys_TestRule.FirstOrDefault();
if (testRule != null)
{
passScore = testRule.PassingScore;
}
foreach (var item in getTestRecords)
{
var getItem = db.EduTrain_TrainRecordDetail.FirstOrDefault(x => x.PersonId == item.TestManId && x.CheckResult);
if (getItem == null)
{
decimal gScores = item.TestScores ?? 0;
bool result = false;
if (gScores >= passScore)
{
result = true;
}
Model.EduTrain_TrainRecordDetail newDetail = new Model.EduTrain_TrainRecordDetail
{
TrainDetailId = SQLHelper.GetNewID(),
TrainingId = newTrainRecord.TrainingId,
PersonId = item.TestManId,
CheckScore = gScores,
CheckResult = result,
};
db.EduTrain_TrainRecordDetail.InsertOnSubmit(newDetail);
db.SubmitChanges();
///// 培训考试 通过 更新卡号
if (result)
{
var getPerson = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == newDetail.PersonId);
if (getPerson != null && string.IsNullOrEmpty(getPerson.CardNo))
{
getPerson.CardNo = SQLHelper.RunProcNewId("SpGetNewNumber", "SitePerson_Person", "CardNo", getPerson.ProjectId, UnitService.GetUnitCodeByUnitId(getPerson.UnitId));
db.SubmitChanges();
}
}
}
////增加一条编码记录
CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(Const.ProjectTrainRecordMenuId, newTrainRecord.ProjectId, null, newTrainRecord.TrainingId, newTrainRecord.TrainStartDate);
CommonService.btnSaveData(newTrainRecord.ProjectId, Const.ProjectTrainRecordMenuId, newTrainRecord.TrainingId, getTestPlan.PlanManId, true, newTrainRecord.TrainTitle, "../EduTrain/TrainRecordView.aspx?TrainingId={0}");
}
}
}
#endregion
}
}

View File

@ -4,8 +4,8 @@ namespace BLL
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Linq;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Text;
@ -146,6 +146,7 @@ namespace BLL
//}
private static object locker = new object();
/// <summary>
/// 数据库上下文。
/// </summary>
@ -195,6 +196,76 @@ namespace BLL
//return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5");
}
#region
/// <summary>
/// 获取用户初始密码
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static string getInitialPassword(string unitId, string idCard)
{
string prefixValue = "CWCEC";
string suffixValue = "1234";
//var getUnit = UnitService.GetUnitByUnitId(unitId);
//if (getUnit != null)
//{
// if (!string.IsNullOrEmpty(getUnit.UnitCode))
// {
// if (getUnit.UnitCode.Length > 10)
// {
// prefixValue = getUnit.UnitCode.Substring(getUnit.UnitCode.Length - 10);
// }
// else
// {
// prefixValue = getUnit.UnitCode;
// }
// }
//}
if (!string.IsNullOrEmpty(idCard))
{
if (idCard.Length > 4)
{
suffixValue = idCard.Substring(idCard.Length - 4);
}
else
{
suffixValue = idCard;
}
}
return prefixValue + "." + suffixValue;
}
#endregion
#region
/// <summary>
///
/// </summary>
/// <param name="c"></param>
/// <returns></returns>
public static bool IsLetter(char c)
{
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}
public static bool IsDigit(char c)
{
return c >= '0' && c <= '9';
}
static bool IsSymbol(char c)
{
return c > 32 && c < 127 && !IsDigit(c) && !IsLetter(c);
}
public static bool IsValIDPassword(string password)
{
return
password.Any(c => IsLetter(c)) &&
password.Any(c => IsDigit(c)) &&
password.Any(c => IsSymbol(c));
}
#endregion
/// <summary>
/// 为目标下拉框加上 "请选择" 项
/// </summary>

View File

@ -147,7 +147,7 @@ namespace BLL
/// <returns></returns>
public static Model.Training_TestPlan GetTestPlanByPlanId(string planId)
{
return Funs.DB.Training_TestPlan.FirstOrDefault(x => x.PlanId == planId);
return Funs.DB.Training_TestPlan.FirstOrDefault(x => x.PlanId == planId || x.TestPlanId ==planId);
}
}
}

View File

@ -222,6 +222,7 @@ namespace BLL
return personName;
}
#endregion
/// <summary>
/// 根据UserId主键获取人员信息
/// </summary>
@ -437,7 +438,8 @@ namespace BLL
ProvinceCode = person.ProvinceCode,
IsCardNoOK=IDCardValid.CheckIDCard(person.IdentityCard),
};
newPerson.RawPassword = Funs.getInitialPassword(person.UnitId, person.IdentityCard);
newPerson.Password = Funs.EncryptionPassword(newPerson.RawPassword);
if (person.InTime.HasValue)
{
newPerson.InTime = person.InTime;
@ -532,11 +534,30 @@ namespace BLL
newPerson.CountryCode = person.CountryCode;
newPerson.ProvinceCode = person.ProvinceCode;
newPerson.IsCardNoOK = IDCardValid.CheckIDCard(person.IdentityCard);
newPerson.RawPassword = Funs.getInitialPassword(person.UnitId, person.IdentityCard);
newPerson.Password = Funs.EncryptionPassword(newPerson.RawPassword);
db.SubmitChanges();
}
}
}
/// <summary>
/// 修改密码
/// </summary>
/// <param name="personId"></param>
/// <param name="password"></param>
public static void UpdateSitePersonPassword(string personId, string password)
{
var m = Funs.DB.SitePerson_Person.FirstOrDefault(x => x.PersonId == personId);
if (m != null)
{
m.RawPassword = password;
m.Password = Funs.EncryptionPassword(password);
Funs.DB.SubmitChanges();
}
}
/// <summary>
/// 人员离岗
/// </summary>

View File

@ -272,12 +272,14 @@ namespace BLL
{
try
{
DateTime dateS = DateTime.Now.AddMonths(-3);
dateS = Funs.GetNewDateTimeOrNow(DateTime.Now.AddMonths(-3).Year + "-" + DateTime.Now.AddMonths(-3).Month + "-01");
var getNums = from x in db.SitePerson_PersonInOutNumber
where x.ProjectId == projectId && x.InOutDate.AddMonths(3) >= DateTime.Now
where x.ProjectId == projectId && x.InOutDate >= dateS
orderby x.InOutDate
select x;
select x;
var getInouts = from x in db.SitePerson_PersonInOut
where x.ProjectId == projectId && x.ChangeTime.Value.AddMonths(3) >= DateTime.Now
where x.ProjectId == projectId && x.ChangeTime.Value >= dateS
select x;
int SafeHours = 0;
foreach (var itemNum in getNums)
@ -287,7 +289,7 @@ namespace BLL
var getAllPersonInOutList = from x in getInouts
where x.ChangeTime > date.AddDays(-1) && x.ChangeTime < date.AddDays(1)
select x;
if (getAllPersonInOutList.Count() > 0)
{
/// 出场记录
@ -301,13 +303,16 @@ namespace BLL
{
SafeHours = getMaxInOutDate.WorkHours ?? 0;
}
else
{
SafeHours = db.SitePerson_PersonInOutNumber.Where(x => x.ProjectId == projectId && x.InOutDate < dateS).Max(x => x.WorkHours) ?? 0;
}
}
int getOutPersonCount = getPersonOutTimes.Select(x => x.PersonId).Distinct().Count();
SafeHours += getOutPersonCount * 8;
}
//SafeHours = Convert.ToInt32(SafeHours * 1.0 / 60);
if (itemNum != null)
{

View File

@ -13,13 +13,17 @@
/// <returns></returns>
public static int getPassScore()
{
int passScore = 80;
var testRule = Funs.DB.Sys_TestRule.FirstOrDefault();
if (testRule != null)
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
passScore = testRule.PassingScore;
int passScore = 80;
var testRule =db.Sys_TestRule.FirstOrDefault();
if (testRule != null)
{
passScore = testRule.PassingScore;
}
return passScore;
}
return passScore;
}
#region

View File

@ -176,12 +176,12 @@ namespace BLL
/// <param name="password"></param>
public static void UpdatePassword(string userId, string password)
{
Model.SGGLDB db = Funs.DB;
Model.Sys_User m = db.Sys_User.FirstOrDefault(e => e.UserId == userId);
Model.Sys_User m = Funs.DB.Sys_User.FirstOrDefault(e => e.UserId == userId);
if (m != null)
{
m.RawPassword = password;
m.Password = Funs.EncryptionPassword(password);
db.SubmitChanges();
Funs.DB.SubmitChanges();
}
}
@ -199,6 +199,7 @@ namespace BLL
Account = user.Account,
UserName = user.UserName,
UserCode = user.UserCode,
RawPassword = user.RawPassword,
Password = user.Password,
UnitId = user.UnitId,
RoleId = user.RoleId,

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,100 +0,0 @@
危险源评价方法说明
一、HSE因素辨识及评价
11
HSE因素指项目执行过程中可能会造成人员伤害、财产损失的危险因素或潜在危险因素
包含职业健康安全危险因素和环境危险因素两个方面。
1.2
项目HSE因素辨识活动由HSE经理组织相关专业人员参加在涉及专业技术性高的施工
、试运行活动时HSE经理可要求相关专业经理负责组织辨识活动。
1.3
HSE因素辨识活动应根据项目实施进度动态开展频次不少于每月一次在项目施工、试
运行高峰阶段,应做到分区域每周识别。
1.4
项目现场HSE因素清单包括职业健康安全危险源清单和环境因素清单由HSE经理根据辨
识活动结果整理发布。
1.5
职业健康安全危险因素识别评价采用LEC风险评价方法又称作业条件危险性评价法
雷厄姆风险评价方法);环境因素识别评价采用多因子评分法。
二、危险因素评价方法
2.1 LEC风险评价方法
2.1.1
LEC风险评价方法是一种简单易行的评价操作人员在具有潜在危险性环境中作业时的危险
性、危害性的半定量评价方法,是用与系统风险有关的三种因素指标值的乘积来评价操
作人员伤亡风险大小这三种因素分别是L事故发生的可能性、E人员暴露于危
险环境中的频繁程度和C一旦发生事故可能造成的后果风险评价时根据对被评
价对象的分析结果给三种因素的不同等级分别确定不同的分值再以三个分值的乘积D来
评价作业条件危险性的大小D=L×E×C。
2.1.2 三种因素的赋分标准如下:
L发生事故的可能性大小
|分数值 |事故发生的可能性L |
|10 |完全可以预料 |
|6 |相当可能 |
|3 |可能,但不经常 |
|1 |可能性小,完全意外 |
|0.5 |很不可能,可以设想 |
|0.2 |极不可能 |
|0.1 |实际不可能 |
E暴露于危险环境的频繁程度
|分数值 |暴露于危险环境的频繁程度E |
|10 |连续暴露 |
|6 |每天工作时间内暴露 |
|3 |每周一次或偶然暴露 |
|2 |每月一次暴露 |
|3 |每年几次暴露 |
|0.5 |非常罕见地暴露 |
C发生事故产生的后果
|分数值 |事故发生的严重程度C |
|100 |大灾难,许多人死亡 |
|40 |灾难,数人死亡 |
|15 |非常严重,一人死亡 |
|7 |严重,重伤 |
|3 |重大,致残 |
|1 |引人注目,不利于基本的安全卫生要求 |
D风险值D=L×E×C
|分数值 |危险等级划分D |
|≧320 |极其危险不能继续作业标注为V |
|160~319 |高度危险要立即整改,标注为Ⅳ |
|70~159 |显著危险,需要整改,标注为Ⅲ |
|20~69 |一般危险,需要注意,标注为Ⅱ |
|〈20 |稍有危险可以接受,标注为Ⅰ |
D值大于160的需自动判定为重大危险源并提示。
2.2 多因子评分法
2.2.1
环境因素分为污染类环境因素和能源资源类环境因素,采用多因子评分法进行评价。
2.2.2 污染类环境因素评价内容和方法,按下表所示内容进行。
|评价因子 |分值 |评价因子 |分值|
|A.环境影响的规模和范围 | |D.法律法规遵循情况 | |
|超出社区性破坏 |5 |超标 |5 |
|周围社区性破坏 |3 |接近超标 |3 |
|施工场界内破坏 |1 |达标 |1 |
|B.环境影响的严重程度 | |E.公众和媒体的关注程度 | |
|严重 |5 |关注强烈 |5 |
|一般 |3 |一般关注 |4 |
|轻微 |1 |基本不关注 |3 |
|C.环境影响发生的频率 | | |2 |
|持续发生 |5 | |1 |
|间歇发生 |3 | | |
|偶然发生 |1 | | |
当 A 或 B 或 D=5 时,或∑(A+ B+ C +D +E)≥15时一般定为重要环境因素
2.2.3 能源资源类环境因素评价内容和方法,按下表所示内容进行。
|评价因子 |分值 |评价因子 |分值|
|F.能源资源消耗(单位年消耗量| |G.可节约程度 | |
| | | | |
|消耗大 |5 |加强管理可明显见效 |5 |
|消耗中等 |3 |改造工艺可明显见效 |3 |
|消耗小 |1 |较为节约 |1 |
对能源资源类环境影响因素的评价当F=5或G=5或∑(F+G7时该环境因素确定为重
要环境因素,其余为一般环境因素。

View File

@ -1,34 +0,0 @@
危险源清单导入使用说明
第一步 下载导入模板
[pic]
1点击下载模板按钮下载导入模板模板放到指定位置。
[pic]
第二步 编辑模板数据
打开下载的Excel模板按要求编辑模板灰色项为必填项。
[pic]
第三步 审核导入信息
1浏览打开编辑好的模板数据所在位置然后点击审核按钮如果数据没有问题
示审核完成;否则提示错误,对照错误信息,检查模板数据。
[pic]
第四步 导入数据
1审核完成后点击导入按钮导入信息会显示在列表中。
[pic]
第五步 保存数据
1点击保存按钮提示导入成功。
[pic]
2如果模板数据中的危险源类别存在则导入到相应的类别下如果类别不存在
自动新增模板中的类别。
[pic]

View File

@ -1,145 +0,0 @@
危险源选择及危险因素辨识评价方法
危险源怎么选择?
第一步 设置危险源对应工作阶段
1在公共资源功能菜单下安全技术模块进入危险源清单页面设置。公共资源中的危
险源清单只需初始设置一次,每个项目都可以使用。
[pic]
2在页面左边树结构中选中根节点下的各一级节点设置对应工作阶段,以”安全管理”
为例,右键点击”安全管理”,选中编辑。[pic]
在弹出的编辑页面中选择设置项对应的工作阶段:
[pic]
选择完成后保存即可。
第二步 项目选择危险源项
1项目现场功能模块下危险源辨识与评价模块职业健康安全危险源辨识与评价页面
,点击[pic]
[pic]
2在编辑页面先录入上方的内容项然后点击[pic]
[pic]
[pic]
[pic]
在弹出页面中先选择工作阶段,会加载对应工作阶段的危险源类别,展开危险源类别树
,选择需要进行辨识的危险源类别,选中后,右边会加载该类别下的危险源项:
[pic]
勾选需要辨识的危险源项,点击[pic]
[pic]
[pic]
可以根据现场实际需要调整L、E、C的值然后软件会自动计算出D值并根据变化后的D值
调整为对应的危险级别。
[pic]
[pic]
3保存/提交数据
危险源项选择或操作完成后,根据需要进行保存或提交操作即可。
[pic]
危险源评价方法说明
一、HSE因素辨识及评价
11
HSE因素指项目执行过程中可能会造成人员伤害、财产损失的危险因素或潜在危险因素
包含职业健康安全危险因素和环境危险因素两个方面。
1.2
项目HSE因素辨识活动由HSE经理组织相关专业人员参加在涉及专业技术性高的施工
、试运行活动时HSE经理可要求相关专业经理负责组织辨识活动。
1.3
HSE因素辨识活动应根据项目实施进度动态开展频次不少于每月一次在项目施工、试
运行高峰阶段,应做到分区域每周识别。
1.4
项目现场HSE因素清单包括职业健康安全危险源清单和环境因素清单由HSE经理根据辨
识活动结果整理发布。
1.5
职业健康安全危险因素识别评价采用LEC风险评价方法又称作业条件危险性评价法
雷厄姆风险评价方法);环境因素识别评价采用多因子评分法。
二、危险因素评价方法
2.1 LEC风险评价方法
2.1.1
LEC风险评价方法是一种简单易行的评价操作人员在具有潜在危险性环境中作业时的危险
性、危害性的半定量评价方法,是用与系统风险有关的三种因素指标值的乘积来评价操
作人员伤亡风险大小这三种因素分别是L事故发生的可能性、E人员暴露于危
险环境中的频繁程度和C一旦发生事故可能造成的后果风险评价时根据对被评
价对象的分析结果给三种因素的不同等级分别确定不同的分值再以三个分值的乘积D来
评价作业条件危险性的大小D=L×E×C。
2.1.2 三种因素的赋分标准如下:
L发生事故的可能性大小
|分数值 |事故发生的可能性L |
|10 |完全可以预料 |
|6 |相当可能 |
|3 |可能,但不经常 |
|1 |可能性小,完全意外 |
|0.5 |很不可能,可以设想 |
|0.2 |极不可能 |
|0.1 |实际不可能 |
E暴露于危险环境的频繁程度
|分数值 |暴露于危险环境的频繁程度E |
|10 |连续暴露 |
|6 |每天工作时间内暴露 |
|3 |每周一次或偶然暴露 |
|2 |每月一次暴露 |
|3 |每年几次暴露 |
|0.5 |非常罕见地暴露 |
C发生事故产生的后果
|分数值 |事故发生的严重程度C |
|100 |大灾难,许多人死亡 |
|40 |灾难,数人死亡 |
|15 |非常严重,一人死亡 |
|7 |严重,重伤 |
|3 |重大,致残 |
|1 |引人注目,不利于基本的安全卫生要求 |
D风险值D=L×E×C
|分数值 |危险等级划分D |
|≧320 |极其危险不能继续作业标注为V |
|160~319 |高度危险要立即整改,标注为Ⅳ |
|70~159 |显著危险,需要整改,标注为Ⅲ |
|20~69 |一般危险,需要注意,标注为Ⅱ |
|〈20 |稍有危险可以接受,标注为Ⅰ |
D值大于160的需自动判定为重大危险源并提示。
2.2 多因子评分法
2.2.1
环境因素分为污染类环境因素和能源资源类环境因素,采用多因子评分法进行评价。
2.2.2 污染类环境因素评价内容和方法,按下表所示内容进行。
|评价因子 |分值 |评价因子 |分值|
|A.环境影响的规模和范围 | |D.法律法规遵循情况 | |
|超出社区性破坏 |5 |超标 |5 |
|周围社区性破坏 |3 |接近超标 |3 |
|施工场界内破坏 |1 |达标 |1 |
|B.环境影响的严重程度 | |E.公众和媒体的关注程度 | |
|严重 |5 |关注强烈 |5 |
|一般 |3 |一般关注 |4 |
|轻微 |1 |基本不关注 |3 |
|C.环境影响发生的频率 | | |2 |
|持续发生 |5 | |1 |
|间歇发生 |3 | | |
|偶然发生 |1 | | |
当 A 或 B 或 D=5 时,或∑(A+ B+ C +D +E)≥15时一般定为重要环境因素
2.2.3 能源资源类环境因素评价内容和方法,按下表所示内容进行。
|评价因子 |分值 |评价因子 |分值|
|F.能源资源消耗(单位年消耗量| |G.可节约程度 | |
| | | | |
|消耗大 |5 |加强管理可明显见效 |5 |
|消耗中等 |3 |改造工艺可明显见效 |3 |
|消耗小 |1 |较为节约 |1 |
对能源资源类环境影响因素的评价当F=5或G=5或∑(F+G7时该环境因素确定为重
要环境因素,其余为一般环境因素。

View File

@ -1,35 +0,0 @@
安全生产月报数据来源?
1在项目现场功能菜单下管理工作报告模块进入安全生产月报页面。
[pic]
2选择月份, 点击[pic],进行编制。
在弹出的编辑页面中会显示安全生产月报的内容:
[pic]
选择月份后月报的统计开始日期及结束日期为上月26日至下月25日比如选择2017年
5月份则月报的统计开始日期为2017年4月26日结束日期为2017年5月25日。
安全生产月报会根据开始和结束日期从项目现场各模块进行数据抽取,直接显示在统计
内容栏中,并且抽取后还可以修改数据,具体抽取数据的情况如下:
1.本公司现场人数(人月):项目人员信息模块本公司数据
2.本公司现场HSE管理人数(人月): 项目人员信息模块本公司HSSE管理岗位数据
3. 分包商现场人数(人月): 项目人员信息模块所有分包商数据
4. 分包商HSE管理人数(人月): 项目人员信息模块所有分包商HSSE管理岗位数据
5. 人工时数(人工时): 人工时月报数据
6. 安全生产人工时数: 人工时数-损失工时数
7. 损失工时数: 事故调查报告模块数据
8. 损失工作日: 损失工时数/8
9. 人身伤害事故和财产损失事故: 事故调查报告及事故调查处理报告模块数据
10. 人员培训(人次): 项目培训记录数据
11. 发布HSE整改通知书(份): 项目检查隐患整改模块的数据
12. 关闭HSE整改通知书(份): 项目检查隐患整改模块闭环的数据
13. 发布HSE处罚书(份): 项目奖惩管理处罚通知单模块的数据
14. 罚款金额(元): 项目奖惩管理处罚通知单模块的数据
15. 奖励金额(元): 项目奖惩管理奖励通知单模块的数据
16. 应急演练次数(次): 项目应急管理应急演练模块的数据
17. 参演人次数(人次): 项目应急管理应急演练模块的数据
18. 演练直接投入(万元): 演练直接投入(万元)
3保存/提交数据
确认月报统计数据无误后,点击保存/提交即可。
注:点击保存时,月报状态为“未提交”,还可以进行修改;点击提交后,月报状态变为
“已提交”,无法再进行修改。

View File

@ -1,71 +0,0 @@
安全检查项目在项目现场中怎么设置?项目安全检查怎么做?
第一步 完善资源库中项目安全检查项
1在公共资源功能菜单下安全技术模块进入项目安全检查项页面设置。公共资源中
的安全检查项只需初始设置一次,每个项目都可以使用。
[pic]
2在安全检查项页面左侧可以看到检查项类别分为日常检查、专项检查、综合检查、
开工前检查、季节性/节假日检查。这五类分别对应项目中的五类安全检查。系统中已经
预制了一部分检查项,但是这些检查项不一定符合各企业安全检查的实际情况。
根据实际检查情况和规律重新维护安全检查项。选择检查类型如日常检查([pic]),对
于下面的检查项点击右键可增加([pic])修改([pic])删除([pic])。
[pic]
3如果该类别下所有的检查项都删除自己重新编制可以在左侧下方点击删除[pic]
)按钮删除。
[pic]
第二步 项目中抽取安全检查项
1项目现场功能模块下安全检查管理模块检查项目设置页面对于新建的项目或者
检查项目设置从未提取过的,在项目现场安全检查项目页面是没有数据的。如图:
[pic]
2抽取说明
抽取检查项是按检查类别抽取,如选择日常检查抽取数据则只抽取日常检查类别下的检
查项。
对于没有数据的检查项目可以点击下方抽取([pic])按钮,提取公共资源中已经预
制好的检查项。
如果该检查类别下已存在数据的检查项,点击抽取([pic])按钮,将不会再次提取
数据,这样做是为了防止覆盖掉项目在当前页面当前检查类别下对检查项做的维护信息
[pic]
3抽取检查项操作
选择准备抽取的检查类别(如:[pic]),点击下方抽取([pic])按钮。
[pic]
4对于存在数据的想再次抽取需要先右键删除该检查类别下所有检查项后再点击
抽取按钮,完成重新抽取检查项。
第三步 项目安全检查项的维护
1对于抽取成功的检查项或者当前项目不抽取自主编制检查项可以在选择要编辑
的检查类别后,选中相应的树节点,点击右键进行增加([pic])修改([pic])删除(
[pic]
[pic]
[pic]
第三步 安全检查的增删改(以日常巡检为例)
1日常巡检页面列表点击右上新增[pic])按钮。弹出新增日常巡检页面。
[pic]
2在新增页面维护表头天气、检查人、检查日期信息然后在列表右上点击选择[pic]
)按钮,选择本次检查的检查项。
[pic]
3选择检查项时根据实际情况如果能匹配到检查项明细项则勾选到列表中对于明
细项(如:安全距离是否符合要求)。
如果检查的项与已划分的检查项不匹配,则可选择一级检查项(如:临时用电),也可
以选择到二级检查项(如:外电防护)。
[pic]
选择完成后,点击右上确认按钮([pic])。
[pic]
[pic]
4对于选择检查项完成后修正双击当前检查项。完善检查区域、责任单位、处
理措施等。如图:
[pic]
注:修改检查项时,检查项可再次修改维护。
[pic]
5点击保存/提交完成日常巡检信息录入。

View File

@ -1,47 +0,0 @@
环境因素危险源导入使用说明
第一步 下载导入模板
[pic]
1点击下载模板按钮下载导入模板模板放到指定位置。
[pic]
第二步 编辑模板数据
1、打开下载的Excel模板按要求编辑模板灰色项为必填项
2、危险源类型、环境类型、A值、B值、C值、D值、E值、F值、G值有输入限制
在右边箭头下拉查看或选择。
[pic]
3、输入值规则
危险源类型:能源资源类、污染类。
环境类型:噪声类、扬尘类、污水排放类、资源能源类、固废物类、遗洒类、泄露类、
光污染类、有毒有害气体、废气类、异味类、突发事件。
A值1、2、3、4、5。
B值1、3、5。
C值1、2、3、4、5。
D值1、3、5。
E值1、2、3、4、5。
F值1、3、5。
G值1、3、5。
[pic]
第三步 审核导入信息
1浏览打开编辑好的模板数据所在位置然后点击审核按钮如果数据没有问题
示审核完成;否则提示错误,对照错误信息,检查模板数据。
[pic]
第四步 导入数据
1审核完成后点击导入按钮导入信息会显示在列表中。
[pic]
第五步 保存数据
1点击保存按钮提示导入成功。
[pic]

View File

@ -1,64 +0,0 @@
中国化学工程集团公司安全生产信息化管理系统
目录
用户权限怎么设置? 1
第一步 完善角色设置 1
项目用户怎么设置,怎么授权? 4
第一步 项目中添加项目用户 4
用户权限怎么设置?
第一步 完善角色设置
1在系统设置功能菜单下角色管理页面维护完善角色设置。
[pic]
2对角色授权在角色授权页面对角色进行授权。
[pic]
对角色授权页面,先选择将要角色。
[pic]
再选择这个角色对于的菜单类型,如项目现场模块。
[pic]
选择这个模块下可操作的页面和按钮。
[pic]
点击右上保存([pic])按钮,完成角色授权。
3用户信息中权限是通过角色权限关联到菜单页面以及按钮实现。
在用户信息中维护页面选择权限。
[pic]
注:在用户中角色设置权限是针对本部管理、公共资源、基础信息、系统设置菜单功能
下的角色权限。不包含项目现场的角色,项目中角色权限是通过本部管理或项目现场下
项目管理模块下项目用户设置对应项目的角色实现权限控制。
[pic]
项目用户怎么设置,怎么授权?
第一步 项目中添加项目用户
1本部管理/项目现场功能菜单下,项目管理模块下项目用户页面。
[pic]
2点击列表增加[pic])按钮,弹出添加项目用户选择框,双击选择或批量选择用
户点确认([pic])按钮,将用户添加到项目用户列表中。
[pic]
3完善项目用户信息在列表选中用户双击弹出信息维护框选择此用户在当前项
目中的角色。
保存后具有在这个项目上这个角色的权限。在不同的项目具有不同角色的用户则在不
同的项目有不同的权限。
[pic]

View File

@ -1,19 +0,0 @@
隐患整改单如何填报?
1在项目现场功能菜单下安全检查管理模块进入隐患整改通知单页面。
[pic]
2本单位用户 点击[pic],进行编制。
在弹出的编辑页面中录入责任单位、检查区域、受检时间、安全隐患内容及整改意见、
签发人(默认为当前人)、签发日期等,进行保存。
[pic]
3责任单位进入填写整改措施和完成情况、责任人、整改日期等进行保存。
[pic]
4本单位用户进入针对整改完成情况进行确认若整改完成则“是否完成整改”选
择“是”,该条隐患整改单闭环;若未完成,则选择“否”。
5本页面审核和修改的区别在于,若当前用户有审核按钮的权限,则双击选中记录或右
键点击审核或修改后,进入编辑页面,都可以进行整改确认是否完成操作;若当前用户没有
审核按钮权限,则进入编辑页面后,不能进行整改确认是否完成操作,也就是不显示下图红
色框内的内容。
[pic]

View File

@ -57,6 +57,8 @@
</f:CheckBox>
<f:Label runat="server" Text="红色表示分数低于80分。" CssClass="LabelColor"></f:Label>
<f:ToolbarFill ID="ToolbarFill1" runat="server"></f:ToolbarFill>
<f:Button ID="btnRefresh" Text="校正重复试题" Icon="ArrowRefresh" runat="server" Hidden="true" OnClick="btnRefresh_Click">
</f:Button>
<f:Button ID="btnOut" OnClick="btnMenuOut_Click" runat="server" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>

View File

@ -1,12 +1,10 @@
using Aspose.Words;
using BLL;
using BLL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Text;
namespace FineUIPro.Web.HSSE.EduTrain
{
public partial class TestRecord : PageBase
@ -316,6 +314,7 @@ namespace FineUIPro.Web.HSSE.EduTrain
if (buttonList.Contains(BLL.Const.BtnDelete))
{
this.btnMenuDelete.Hidden = false;
this.btnRefresh.Hidden= false;
}
}
}
@ -331,5 +330,49 @@ namespace FineUIPro.Web.HSSE.EduTrain
PrinterDocService.PrinterDocMethod(Const.ProjectTestRecordMenuId, Grid1.SelectedRowID, "试卷");
}
protected void btnRefresh_Click(object sender, EventArgs e)
{
int countRecod = 0;
var getData = from x in Funs.DB.Training_TestRecordItem
join y in Funs.DB.Training_TestRecord on x.TestRecordId equals y.TestRecordId
where y.ProjectId == this.CurrUser.LoginProjectId
group x by new { x.TestRecordId, x.TrainingItemCode } into g
where g.Count() > 1
select new { g.FirstOrDefault().TestRecordId, g.FirstOrDefault().TrainingItemCode, gCount= g.Count() };
if (getData.Count() > 0)
{
List<string> TestRecordIdList = getData.Select(x => x.TestRecordId).Distinct().ToList();
foreach (var item in getData)
{
var getTestRecordItem = Funs.DB.Training_TestRecordItem.FirstOrDefault(x => x.TestRecordId == item.TestRecordId
&& x.TrainingItemCode == item.TrainingItemCode && (!x.SubjectScore.HasValue || x.SubjectScore < x.Score ));
if (getTestRecordItem == null)
{
getTestRecordItem = Funs.DB.Training_TestRecordItem.FirstOrDefault(x => x.TestRecordId == item.TestRecordId
&& x.TrainingItemCode == item.TrainingItemCode);
}
if (getTestRecordItem != null)
{
Funs.DB.Training_TestRecordItem.DeleteOnSubmit(getTestRecordItem);
Funs.DB.SubmitChanges();
}
}
foreach (var item in TestRecordIdList)
{
var getTestRecord = Funs.DB.Training_TestRecord.FirstOrDefault(x => x.TestRecordId == item);
if (getTestRecord != null)
{
getTestRecord.TestScores = Funs.DB.Training_TestRecordItem.Where(x => x.TestRecordId == item).Sum(x => x.SubjectScore ?? 0);
Funs.DB.SubmitChanges();
countRecod++;
}
}
}
Alert.ShowInTop("操作完成,共处理"+countRecod.ToString()+"条考试记录", MessageBoxIcon.Success);
}
}
}

View File

@ -7,11 +7,13 @@
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.HSSE.EduTrain {
public partial class TestRecord {
namespace FineUIPro.Web.HSSE.EduTrain
{
public partial class TestRecord
{
/// <summary>
/// form1 控件。
/// </summary>
@ -20,7 +22,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
@ -29,7 +31,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
@ -38,7 +40,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
@ -47,7 +49,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar1 控件。
/// </summary>
@ -56,7 +58,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// txtName 控件。
/// </summary>
@ -65,7 +67,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtName;
/// <summary>
/// txtMinScores 控件。
/// </summary>
@ -74,7 +76,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtMinScores;
/// <summary>
/// txtMaxScores 控件。
/// </summary>
@ -83,7 +85,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtMaxScores;
/// <summary>
/// IsTemp 控件。
/// </summary>
@ -92,7 +94,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBox IsTemp;
/// <summary>
/// txtStartDate 控件。
/// </summary>
@ -101,7 +103,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtStartDate;
/// <summary>
/// txtEndDate 控件。
/// </summary>
@ -110,7 +112,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtEndDate;
/// <summary>
/// ckIsNULL 控件。
/// </summary>
@ -119,7 +121,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBox ckIsNULL;
/// <summary>
/// ToolbarFill1 控件。
/// </summary>
@ -128,7 +130,16 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
/// <summary>
/// btnRefresh 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnRefresh;
/// <summary>
/// btnOut 控件。
/// </summary>
@ -137,7 +148,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// labNumber 控件。
/// </summary>
@ -146,7 +157,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label labNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
@ -155,7 +166,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
@ -164,7 +175,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
@ -173,7 +184,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
@ -182,7 +193,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
/// <summary>
/// Menu1 控件。
/// </summary>
@ -191,7 +202,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Menu Menu1;
/// <summary>
/// btnMenuView 控件。
/// </summary>
@ -200,7 +211,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuView;
/// <summary>
/// btnPrinter 控件。
/// </summary>
@ -209,7 +220,7 @@ namespace FineUIPro.Web.HSSE.EduTrain {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnPrinter;
/// <summary>
/// btnMenuDelete 控件。
/// </summary>

View File

@ -1,4 +1,5 @@
using BLL;
using FineUIPro.Web.BoSheng;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
@ -548,7 +549,7 @@ namespace FineUIPro.Web.HSSE.EduTrain
{
var getTrainRecordDetail = Funs.DB.EduTrain_TrainRecordDetail.Where(x => x.TrainingId == itemRecord.TrainingId);
if (itemRecord.TrainPersonNum > getTrainRecordDetail.Count())
{
{
var getTrainingTasks = from x in Funs.DB.Training_Task
where x.PlanId == itemRecord.PlanId
select x;
@ -628,14 +629,36 @@ namespace FineUIPro.Web.HSSE.EduTrain
Alert.ShowInTop("刷新完成!", MessageBoxIcon.Success);
}
var getTestPlanStates = from x in Funs.DB.Training_TestPlan
join y in Funs.DB.Training_Plan on x.PlanId equals y.PlanId
where x.States == Const.State_3 && y.States == Const.State_2
select x;
foreach (var item in getTestPlanStates)
var getTestPlans = from x in Funs.DB.Training_TestPlan
where x.ProjectId == this.CurrUser.LoginProjectId && x.States == Const.State_3
select x;
var getTestPlanStates = from x in getTestPlans
join y in Funs.DB.Training_Plan on x.PlanId equals y.PlanId
where x.PlanId != null && y.States == Const.State_2
select x;
if (getTestPlanStates.Count() > 0)
{
////TODO 讲培训计划 考试记录 写入到培训记录
BLL. APITrainRecordService.InsertTrainRecord(item);
foreach (var item in getTestPlanStates)
{
////TODO 讲培训计划 考试记录 写入到培训记录
BLL.APITrainRecordService.InsertTrainRecord(item);
}
}
var getTestPlanS = from x in getTestPlans
join y in Funs.DB.EduTrain_TrainRecord on x.TestPlanId equals y.PlanId into jonPerson
from y in jonPerson.DefaultIfEmpty()
where x.PlanId == null && y.TrainingId == null
orderby y.TrainStartDate
select x;
if (getTestPlanS.Count() > 0)
{
foreach (var item in getTestPlanS)
{
//// 将相关未做培训 但考试考生内容 写培训记录归档
BLL.APITrainRecordService.InsertTrainRecordNoTrainingPlan(item);
}
}
}
}

View File

@ -1,4 +1,5 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PersonIn.aspx.cs" Inherits="FineUIPro.Web.HSSE.SitePerson.PersonIn" %>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PersonIn.aspx.cs"
Inherits="FineUIPro.Web.HSSE.SitePerson.PersonIn" ValidateRequest="false" %>
<!DOCTYPE html>

View File

@ -1097,7 +1097,7 @@ namespace FineUIPro.Web.HSSE.SitePerson
{
Model.QualityAudit_PersonQuality newPersonQuality = new Model.QualityAudit_PersonQuality
{
PersonQualityId = SQLHelper.GetNewID(typeof(Model.QualityAudit_PersonQuality)),
PersonQualityId = SQLHelper.GetNewID(),
PersonId = newPerson.PersonId,
CompileMan = this.CurrUser.UserId,
CompileDate = DateTime.Now

View File

@ -1,4 +1,5 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PersonList.aspx.cs" Inherits="FineUIPro.Web.HSSE.SitePerson.PersonList" %>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PersonList.aspx.cs"
Inherits="FineUIPro.Web.HSSE.SitePerson.PersonList" ValidateRequest="false" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
@ -66,8 +67,8 @@
</f:TextBox>
<f:ToolbarFill runat="server">
</f:ToolbarFill>
<f:Button ID="btSearch" ToolTip="查询" Icon="SystemSearch" runat="server" OnClick="TextBox_TextChanged"></f:Button>
<f:Button ID="btnNew" ToolTip="增加" Icon="Add" runat="server" Hidden="true" OnClick="btnNew_Click">
<f:Button ID="btSearch" Text="查询" Icon="SystemSearch" runat="server" OnClick="TextBox_TextChanged"></f:Button>
<f:Button ID="btnNew" Text="增加" Icon="Add" runat="server" Hidden="true" OnClick="btnNew_Click">
</f:Button>
</Items>
</f:Toolbar>
@ -76,7 +77,7 @@
<f:Toolbar ID="Toolbar1" Position="Top" ToolbarAlign="Right" runat="server">
<Items>
<f:RadioButtonList ID="rblPost" runat="server" AutoPostBack="true" Width="220px"
OnSelectedIndexChanged="TextBox_TextChanged">
OnSelectedIndexChanged="TextBox_TextChanged" AutoColumnWidth="true">
<f:RadioItem Value="-1" Text="全部" Selected="true" />
<f:RadioItem Value="1" Text="在岗" />
<f:RadioItem Value="0" Text="不在岗" />
@ -91,17 +92,20 @@
AutoPostBack="true" OnCheckedChanged="TextBox_TextChanged">
</f:CheckBox>
<f:ToolbarFill ID="ToolbarFill1" runat="server"></f:ToolbarFill>
<f:Button ID="btnPersonOut" ToolTip="批量出场" Icon="UserGo" runat="server" Hidden="true" OnClick="btnPersonOut_Click">
<f:Button ID="btnPersonOut" Text="批量出场" ToolTip="批量出场" Icon="UserGo" runat="server"
Hidden="true" OnClick="btnPersonOut_Click">
</f:Button>
<f:Button ID="btnImport" ToolTip="导入" Icon="ApplicationGet" Hidden="true" runat="server"
<f:Button ID="btnImport" Text="导入" ToolTip="导入" Icon="ApplicationGet" Hidden="true" runat="server"
OnClick="btnImport_Click">
</f:Button>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" ToolTip="导出" Icon="FolderUp"
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" Text="导出" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
<f:Button ID="btnQR" ToolTip="批量生成二维码" Icon="TableRefresh" runat="server" OnClick="btnQR_Click">
<f:Button ID="btnQR" Text="二维码" ToolTip="批量生成二维码" Icon="TableRefresh" runat="server" OnClick="btnQR_Click">
</f:Button>
<f:Button ID="btnPhoto" ToolTip="刷新照片转二进制" Icon="ArrowRefresh" runat="server" OnClick="btnPhoto_Click">
<f:Button ID="btnPersonStates" Text="重置下发状态" ToolTip="重置下发状态" Icon="DatabaseRefresh" runat="server" OnClick="btnPersonStates_Click">
</f:Button>
<f:Button ID="btnPhoto" Text="照片二进制" ToolTip="刷新照片转二进制" Icon="ArrowRefresh" runat="server" OnClick="btnPhoto_Click">
</f:Button>
</Items>
</f:Toolbar>
@ -159,11 +163,11 @@
</f:Panel>
<f:Window ID="Window1" Title="编辑人员信息" Hidden="true" EnableIFrame="true" EnableMaximize="true"
Target="Parent" EnableResize="false" runat="server" OnClose="Window1_Close" IsModal="true"
Width="1000px" Height="660px">
Width="1200px" Height="660px">
</f:Window>
<f:Window ID="Window2" Title="导入人员信息" Hidden="true" EnableIFrame="true" EnableMaximize="true"
Target="Parent" EnableResize="false" runat="server" OnClose="Window2_Close" IsModal="false"
CloseAction="HidePostBack" Width="1200px" Height="600px">
CloseAction="HidePostBack" Width="1200px" Height="650px">
</f:Window>
<f:Window ID="Window3" Title="编辑人员信息" Hidden="true" EnableIFrame="true" EnableMaximize="true"
Target="Parent" EnableResize="false" runat="server" OnClose="Window3_Close" IsModal="true"

View File

@ -684,5 +684,23 @@ namespace FineUIPro.Web.HSSE.SitePerson
{
this.drpPost.SelectedValueArray = Funs.RemoveDropDownListNull(this.drpPost.SelectedValueArray);
}
protected void btnPersonStates_Click(object sender, EventArgs e)
{
var getPersons = from x in Funs.DB.SitePerson_Person
where x.ProjectId == this.CurrUser.LoginProjectId && x.ExchangeTime.HasValue
select x;
int pcount = getPersons.Count();
if (pcount > 0)
{
foreach (var item in getPersons)
{
item.ExchangeTime = null;
item.ExchangeTime2 = null;
Funs.DB.SubmitChanges();
}
}
Alert.ShowInTop("操作完成,重置人员" + pcount.ToString() + "条", MessageBoxIcon.Success);
}
}
}

View File

@ -7,11 +7,13 @@
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.HSSE.SitePerson {
public partial class PersonList {
namespace FineUIPro.Web.HSSE.SitePerson
{
public partial class PersonList
{
/// <summary>
/// form1 控件。
/// </summary>
@ -20,7 +22,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
@ -29,7 +31,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
@ -38,7 +40,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// panelLeftRegion 控件。
/// </summary>
@ -47,7 +49,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel panelLeftRegion;
/// <summary>
/// tvProjectAndUnit 控件。
/// </summary>
@ -56,7 +58,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Tree tvProjectAndUnit;
/// <summary>
/// Toolbar2 控件。
/// </summary>
@ -65,7 +67,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// btnPersonUnit 控件。
/// </summary>
@ -74,7 +76,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnPersonUnit;
/// <summary>
/// panelCenterRegion 控件。
/// </summary>
@ -83,7 +85,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel panelCenterRegion;
/// <summary>
/// Grid1 控件。
/// </summary>
@ -92,7 +94,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar3 控件。
/// </summary>
@ -101,7 +103,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar3;
/// <summary>
/// txtPersonName 控件。
/// </summary>
@ -110,7 +112,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtPersonName;
/// <summary>
/// drpPost 控件。
/// </summary>
@ -119,7 +121,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpPost;
/// <summary>
/// drpTreamGroup 控件。
/// </summary>
@ -128,7 +130,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpTreamGroup;
/// <summary>
/// txtIdentityCard 控件。
/// </summary>
@ -137,7 +139,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtIdentityCard;
/// <summary>
/// btSearch 控件。
/// </summary>
@ -146,7 +148,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btSearch;
/// <summary>
/// btnNew 控件。
/// </summary>
@ -155,7 +157,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnNew;
/// <summary>
/// Toolbar1 控件。
/// </summary>
@ -164,7 +166,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// rblPost 控件。
/// </summary>
@ -173,7 +175,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.RadioButtonList rblPost;
/// <summary>
/// ckJT 控件。
/// </summary>
@ -182,7 +184,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBox ckJT;
/// <summary>
/// ckTrain 控件。
/// </summary>
@ -191,7 +193,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBox ckTrain;
/// <summary>
/// ckIdCardInfoNotOK 控件。
/// </summary>
@ -200,7 +202,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBox ckIdCardInfoNotOK;
/// <summary>
/// ToolbarFill1 控件。
/// </summary>
@ -209,7 +211,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
/// <summary>
/// btnPersonOut 控件。
/// </summary>
@ -218,7 +220,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnPersonOut;
/// <summary>
/// btnImport 控件。
/// </summary>
@ -227,7 +229,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnImport;
/// <summary>
/// btnOut 控件。
/// </summary>
@ -236,7 +238,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// btnQR 控件。
/// </summary>
@ -245,7 +247,16 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnQR;
/// <summary>
/// btnPersonStates 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnPersonStates;
/// <summary>
/// btnPhoto 控件。
/// </summary>
@ -254,7 +265,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnPhoto;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
@ -263,7 +274,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
@ -272,7 +283,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
@ -281,7 +292,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
@ -290,7 +301,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
/// <summary>
/// Window2 控件。
/// </summary>
@ -299,7 +310,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window2;
/// <summary>
/// Window3 控件。
/// </summary>
@ -308,7 +319,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window3;
/// <summary>
/// WindowPunishRecord 控件。
/// </summary>
@ -317,7 +328,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window WindowPunishRecord;
/// <summary>
/// Menu1 控件。
/// </summary>
@ -326,7 +337,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Menu Menu1;
/// <summary>
/// btnMenuEdit 控件。
/// </summary>
@ -335,7 +346,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuEdit;
/// <summary>
/// btnMenuDelete 控件。
/// </summary>

View File

@ -1,4 +1,5 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PersonListEdit.aspx.cs" Inherits="FineUIPro.Web.HSSE.SitePerson.PersonListEdit" %>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PersonListEdit.aspx.cs"
Inherits="FineUIPro.Web.HSSE.SitePerson.PersonListEdit" ValidateRequest="false" %>
<!DOCTYPE html>
@ -98,7 +99,8 @@
</f:DropDownBox>
<f:DropDownList ID="drpMainCNProfessional" runat="server" Label="主专业" EnableEdit="true" LabelAlign="Right" LabelWidth="110px">
</f:DropDownList>
<f:DropDownList ID="drpAuditor" runat="server" Label="审核人" LabelAlign="Right" EnableEdit="true" LabelWidth="110px">
<f:DropDownList ID="drpAuditor" runat="server" Label="审核人" LabelAlign="Right" EnableEdit="true" LabelWidth="110px"
AutoPostBack="true" OnSelectedIndexChanged="drpAuditor_SelectedIndexChanged">
</f:DropDownList>
<f:CheckBox runat="server" ID="ckIsForeign" Label="外籍" LabelAlign="Right" LabelWidth="110px"></f:CheckBox>
<f:DatePicker ID="txtBirthday" runat="server" Label="出生日期" LabelAlign="Right" LabelWidth="110px">

View File

@ -251,6 +251,11 @@ namespace FineUIPro.Web.HSSE.SitePerson
this.rblIsUsed.SelectedValue = "True";
this.rblIsCardUsed.SelectedValue = "True";
}
if (this.drpAuditor.SelectedValue != this.CurrUser.UserId)
{
this.txtAuditorDate.Readonly = true;
}
}
}
#endregion
@ -898,5 +903,20 @@ namespace FineUIPro.Web.HSSE.SitePerson
}
}
}
/// <summary>
/// 审核人下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void drpAuditor_SelectedIndexChanged(object sender, EventArgs e)
{
this.txtAuditorDate.Readonly = false;
/// 当审核人为当前人是 审核时间可读
if (this.drpAuditor.SelectedValue != this.CurrUser.UserId)
{
this.txtAuditorDate.Readonly = true;
}
}
}
}

View File

@ -140,11 +140,11 @@
</div>
<div class="bi-flex-vertical-center-adapt-layout bi-flex-horizontal-layout v-middle h-left"
style="height: 100%; position: relative; float: right;">
<div
<%-- <div
class="bi-single bi-basic-button cursor-pointer bi-button button-common bi-label bi-flex-center-adapt-layout clear"
style="height: 16px; line-height: 16px; position: relative; flex-shrink: 0; color:#fff">
忘记密码?
</div>
</div>--%>
</div>
</div>
<div class="bi-horizon-auto-layout" style="position: relative;">

View File

@ -40,6 +40,9 @@
<f:Button ID="btnCustomQuery" Text="自定义查询" Icon="SystemSearch" runat="server"
OnClick="btnCustomQuery_Click" Hidden="true">
</f:Button>
<f:Button ID="btnPassRefresh" Icon="TableRefresh" runat="server" Text="重置所有人密码" ToolTip="重置所有人密码"
OnClick="btnPassRefresh_Click" Hidden="true">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>

View File

@ -43,7 +43,15 @@ namespace FineUIPro.Web.Personal
this.btnCustomQuery.Hidden = false;
this.lbSystemVersion.Hidden = false;
this.lbSystemVersion.Text = Funs.SystemVersion;
this.btnPassRefresh.Hidden = false;
}
if (this.CurrUser.UserId == Const.sysglyId)
{
this.lbSystemVersion.Hidden = false;
this.lbSystemVersion.Text = Funs.SystemVersion;
this.btnPassRefresh.Hidden = false;
}
}
}
@ -154,5 +162,34 @@ namespace FineUIPro.Web.Personal
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("../SysManage/CustomQuery.aspx"), "查询"));
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnPassRefresh_Click(object sender, EventArgs e)
{
var getUsers = from x in Funs.DB.Sys_User
where x.RawPassword == null
select x;
foreach (var item in getUsers)
{
string password = Funs.getInitialPassword(item.UnitId, item.IdentityCard);
UserService.UpdatePassword(item.UserId, password);
}
var getPersons = from x in Funs.DB.SitePerson_Person
where x.RawPassword == null
select x;
foreach (var item in getPersons)
{
string password = Funs.getInitialPassword(item.UnitId, item.IdentityCard);
PersonService.UpdateSitePersonPassword(item.PersonId, password);
}
ShowNotify("重置成功!", MessageBoxIcon.Success);
}
}
}

View File

@ -7,11 +7,13 @@
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.Personal {
public partial class PersonalInfo {
namespace FineUIPro.Web.Personal
{
public partial class PersonalInfo
{
/// <summary>
/// form1 控件。
/// </summary>
@ -20,7 +22,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
@ -29,7 +31,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel2 控件。
/// </summary>
@ -38,7 +40,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel2;
/// <summary>
/// TabStrip1 控件。
/// </summary>
@ -47,7 +49,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TabStrip TabStrip1;
/// <summary>
/// Tab1 控件。
/// </summary>
@ -56,7 +58,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Tab Tab1;
/// <summary>
/// Toolbar1 控件。
/// </summary>
@ -65,7 +67,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// lbSystemVersion 控件。
/// </summary>
@ -74,7 +76,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label lbSystemVersion;
/// <summary>
/// btnSave 控件。
/// </summary>
@ -83,7 +85,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnSave;
/// <summary>
/// btnCustomQuery 控件。
/// </summary>
@ -92,7 +94,16 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnCustomQuery;
/// <summary>
/// btnPassRefresh 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnPassRefresh;
/// <summary>
/// SimpleForm1 控件。
/// </summary>
@ -101,7 +112,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form SimpleForm1;
/// <summary>
/// Panel3 控件。
/// </summary>
@ -110,7 +121,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel3;
/// <summary>
/// Panel1 控件。
/// </summary>
@ -119,7 +130,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// txtUserName 控件。
/// </summary>
@ -128,7 +139,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtUserName;
/// <summary>
/// txtUserCode 控件。
/// </summary>
@ -137,7 +148,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtUserCode;
/// <summary>
/// drpSex 控件。
/// </summary>
@ -146,7 +157,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox drpSex;
/// <summary>
/// dpBirthDay 控件。
/// </summary>
@ -155,7 +166,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox dpBirthDay;
/// <summary>
/// drpMarriage 控件。
/// </summary>
@ -164,7 +175,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox drpMarriage;
/// <summary>
/// drpNation 控件。
/// </summary>
@ -173,7 +184,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox drpNation;
/// <summary>
/// drpUnit 控件。
/// </summary>
@ -182,7 +193,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox drpUnit;
/// <summary>
/// Panel4 控件。
/// </summary>
@ -191,7 +202,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel4;
/// <summary>
/// txtAccount 控件。
/// </summary>
@ -200,7 +211,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtAccount;
/// <summary>
/// txtIdentityCard 控件。
/// </summary>
@ -209,7 +220,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtIdentityCard;
/// <summary>
/// txtEmail 控件。
/// </summary>
@ -218,7 +229,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtEmail;
/// <summary>
/// txtTelephone 控件。
/// </summary>
@ -227,7 +238,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtTelephone;
/// <summary>
/// drpEducation 控件。
/// </summary>
@ -236,7 +247,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox drpEducation;
/// <summary>
/// txtHometown 控件。
/// </summary>
@ -245,7 +256,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtHometown;
/// <summary>
/// drpPosition 控件。
/// </summary>
@ -254,7 +265,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox drpPosition;
/// <summary>
/// Panel5 控件。
/// </summary>
@ -263,7 +274,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel5;
/// <summary>
/// Image1 控件。
/// </summary>
@ -272,7 +283,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Image Image1;
/// <summary>
/// Form7 控件。
/// </summary>
@ -281,7 +292,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form Form7;
/// <summary>
/// txtPerformance 控件。
/// </summary>
@ -290,7 +301,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextArea txtPerformance;
/// <summary>
/// Tab2 控件。
/// </summary>
@ -299,7 +310,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Tab Tab2;
/// <summary>
/// SimpleForm2 控件。
/// </summary>
@ -308,7 +319,7 @@ namespace FineUIPro.Web.Personal {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form SimpleForm2;
/// <summary>
/// Window1 控件。
/// </summary>

View File

@ -105,7 +105,12 @@
foreach (int rowIndex in Grid1.SelectedRowIndexArray)
{
string rowID = Grid1.DataKeys[rowIndex][0].ToString();
BLL.UserService.UpdatePassword(rowID, BLL.Const.Password);
var getUser = UserService.GetUserByUserId(rowID);
if (getUser != null)
{
string password = Funs.getInitialPassword(getUser.UnitId, getUser.IdentityCard);
BLL.UserService.UpdatePassword(rowID, password);
}
}
BindGrid();
ShowNotify("密码已重置为原始密码!", MessageBoxIcon.Success);

View File

@ -89,6 +89,22 @@ namespace FineUIPro.Web.SysManage
return;
}
if (this.txtNewPassword.Text.Length < 8)
{
Alert.ShowInParent("密码长度至少8位");
return;
}
if (this.txtNewPassword.Text != this.txtConfirmPassword.Text)
{
Alert.ShowInParent("确认密码输入不一致!");
return;
}
if (!Funs.IsValIDPassword(this.txtNewPassword.Text))
{
Alert.ShowInParent("密码必须包含字母、数字、特殊符号!");
return;
}
BLL.UserService.UpdatePassword(user.UserId, this.txtNewPassword.Text);
BLL.LogService.AddSys_Log(this.CurrUser, "修改密码", string.Empty, BLL.Const.UserMenuId, Const.BtnModify);

View File

@ -366,7 +366,8 @@ namespace FineUIPro.Web.SysManage
var getUser = Funs.DB.Sys_User.FirstOrDefault(x => x.Account == userViews[i].Account);
if (getUser == null)
{
newUser.Password = Funs.EncryptionPassword(Const.Password);
newUser.RawPassword = Funs.getInitialPassword(newUser.UnitId, newUser.IdentityCard);
newUser.Password = Funs.EncryptionPassword(newUser.RawPassword);
BLL.UserService.AddUser(newUser);
insertCount++;
}

View File

@ -235,8 +235,9 @@ namespace FineUIPro.Web.SysManage
}
if (string.IsNullOrEmpty(this.UserId))
{
newUser.Password = Funs.EncryptionPassword(Const.Password);
newUser.UserId = SQLHelper.GetNewID(typeof(Model.Sys_User));
newUser.RawPassword = Funs.getInitialPassword(newUser.UnitId, newUser.IdentityCard);
newUser.Password = Funs.EncryptionPassword(newUser.RawPassword);
newUser.UserId = SQLHelper.GetNewID();
newUser.DataSources = this.CurrUser.LoginProjectId;
UserService.AddUser(newUser);
LogService.AddSys_Log(this.CurrUser, newUser.UserCode, newUser.UserId, BLL.Const.UserMenuId, BLL.Const.BtnAdd);
@ -324,10 +325,12 @@ namespace FineUIPro.Web.SysManage
/// <param name="e"></param>
protected void btnArrowRefresh_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(this.UserId))
var getUser = UserService.GetUserByUserId(this.UserId);
if (getUser != null)
{
BLL.UserService.UpdatePassword(this.UserId, BLL.Const.Password);
ShowNotify("密码已重置为原始密码!", MessageBoxIcon.Success);
string passWord = Funs.getInitialPassword(getUser.UnitId, getUser.IdentityCard);
BLL.UserService.UpdatePassword(this.UserId, passWord);
ShowNotify("密码已重置为原始密码!密码为" + passWord, MessageBoxIcon.Success);
}
else
{

View File

@ -255428,7 +255428,7 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address", DbType="NVarChar(200)")]
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address", DbType="NVarChar(2000)")]
public string Address
{
get
@ -255492,7 +255492,7 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkAreaName", DbType="NVarChar(200)")]
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkAreaName", DbType="NVarChar(MAX)", UpdateCheck=UpdateCheck.Never)]
public string WorkAreaName
{
get
@ -257937,6 +257937,8 @@ namespace Model
private System.Nullable<bool> _IsCardNoOK;
private string _RawPassword;
private EntitySet<Accident_AccidentPersonRecord> _Accident_AccidentPersonRecord;
private EntitySet<Accident_AccidentReportOtherItem> _Accident_AccidentReportOtherItem;
@ -258117,6 +258119,8 @@ namespace Model
partial void OnRealNameUpdateTimeChanged();
partial void OnIsCardNoOKChanging(System.Nullable<bool> value);
partial void OnIsCardNoOKChanged();
partial void OnRawPasswordChanging(string value);
partial void OnRawPasswordChanged();
#endregion
public SitePerson_Person()
@ -259365,6 +259369,26 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RawPassword", DbType="NVarChar(100)")]
public string RawPassword
{
get
{
return this._RawPassword;
}
set
{
if ((this._RawPassword != value))
{
this.OnRawPasswordChanging(value);
this.SendPropertyChanging();
this._RawPassword = value;
this.SendPropertyChanged("RawPassword");
this.OnRawPasswordChanged();
}
}
}
[global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_Accident_AccidentPersonRecord_SitePerson_Person", Storage="_Accident_AccidentPersonRecord", ThisKey="PersonId", OtherKey="PersonId", DeleteRule="NO ACTION")]
public EntitySet<Accident_AccidentPersonRecord> Accident_AccidentPersonRecord
{
@ -274254,6 +274278,8 @@ namespace Model
private string _WorkNo;
private string _RawPassword;
private EntitySet<Comprehensive_NCRManagement> _Comprehensive_NCRManagement;
private EntitySet<Comprehensive_PressurePipe> _Comprehensive_PressurePipe;
@ -274998,6 +275024,8 @@ namespace Model
partial void OnViceCNProfessionalIdChanged();
partial void OnWorkNoChanging(string value);
partial void OnWorkNoChanged();
partial void OnRawPasswordChanging(string value);
partial void OnRawPasswordChanged();
#endregion
public Sys_User()
@ -276322,6 +276350,26 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RawPassword", DbType="NVarChar(100)")]
public string RawPassword
{
get
{
return this._RawPassword;
}
set
{
if ((this._RawPassword != value))
{
this.OnRawPasswordChanging(value);
this.SendPropertyChanging();
this._RawPassword = value;
this.SendPropertyChanged("RawPassword");
this.OnRawPasswordChanged();
}
}
}
[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Comprehensive_NCRManagement_Sys_User", Storage="_Comprehensive_NCRManagement", ThisKey="UserId", OtherKey="CompileMan", DeleteRule="NO ACTION")]
public EntitySet<Comprehensive_NCRManagement> Comprehensive_NCRManagement
{
@ -337439,7 +337487,7 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address", DbType="NVarChar(200)")]
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address", DbType="NVarChar(2000)")]
public string Address
{
get
@ -337455,7 +337503,7 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkAreaName", DbType="NVarChar(200)")]
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkAreaName", DbType="NVarChar(MAX)", UpdateCheck=UpdateCheck.Never)]
public string WorkAreaName
{
get

View File

@ -38,8 +38,8 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>bin\Debug\AOP.Common.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.configuration" />
@ -76,6 +76,7 @@
<WCFMetadata Include="Connected Services\" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

View File

@ -192,59 +192,62 @@ namespace WebAPI.Controllers
var responeData = new Model.ResponeData();
try
{
var getTestPlan = Funs.DB.Training_TestPlan.FirstOrDefault(e => e.TestPlanId == testPlanId && e.States != "3" && e.TestStartTime <= DateTime.Now && e.TestEndTime >= DateTime.Now);
if (getTestPlan != null)
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var person = PersonService.GetPersonByUserId(personId, getTestPlan.ProjectId);
if (person != null )
var getTestPlan = db.Training_TestPlan.FirstOrDefault(e => e.TestPlanId == testPlanId && e.States != "3" && e.TestStartTime <= DateTime.Now && e.TestEndTime >= DateTime.Now);
if (getTestPlan != null)
{
//2-考试中;生成考试试卷
if (getTestPlan.States == "2" )
var person = PersonService.GetPersonByUserId(personId, getTestPlan.ProjectId);
if (person != null)
{
var testRecord = Funs.DB.Training_TestRecord.FirstOrDefault(x => x.TestPlanId == getTestPlan.TestPlanId && x.TestManId == person.PersonId && !x.TestEndTime.HasValue);
if (testRecord != null)
//2-考试中;生成考试试卷
if (getTestPlan.States == "2")
{
string testRecordId = APITestRecordService.CreateTestRecordItem(getTestPlan, testRecord.TestRecordId, person);
responeData.code = 2;
responeData.data = new { testRecordId };
}
}
else
{
if (string.IsNullOrEmpty(getTestPlan.PlanId) && getTestPlan.UnitIds.Contains(person.UnitId) && (getTestPlan.WorkPostIds == null || getTestPlan.WorkPostIds.Contains(person.WorkPostId)))
{
//0-待提交1-已发布未考试 将人员添加进考试记录
var testTRecord = Funs.DB.Training_TestRecord.FirstOrDefault(x => x.TestPlanId == testPlanId && x.TestManId == personId);
if ((getTestPlan.States == "0" || getTestPlan.States == "1") && testTRecord == null && !string.IsNullOrEmpty(personId))
var testRecord = db.Training_TestRecord.FirstOrDefault(x => x.TestPlanId == getTestPlan.TestPlanId && x.TestManId == person.PersonId && !x.TestEndTime.HasValue);
if (testRecord != null)
{
Model.Training_TestRecord newTestRecord = new Model.Training_TestRecord
string testRecordId = APITestRecordService.CreateTestRecordItem(getTestPlan, testRecord.TestRecordId, person);
responeData.code = 2;
responeData.data = new { testRecordId };
}
}
else
{
if (string.IsNullOrEmpty(getTestPlan.PlanId) && getTestPlan.UnitIds.Contains(person.UnitId) && (getTestPlan.WorkPostIds == null || getTestPlan.WorkPostIds.Contains(person.WorkPostId)))
{
//0-待提交1-已发布未考试 将人员添加进考试记录
var testTRecord = db.Training_TestRecord.FirstOrDefault(x => x.TestPlanId == testPlanId && x.TestManId == personId);
if ((getTestPlan.States == "0" || getTestPlan.States == "1") && testTRecord == null && !string.IsNullOrEmpty(personId))
{
TestRecordId = SQLHelper.GetNewID(),
ProjectId = getTestPlan.ProjectId,
TestPlanId = getTestPlan.TestPlanId,
TestManId = personId,
};
if (string.IsNullOrEmpty(newTestRecord.TestType))
{
var getTrainTypeName = Funs.DB.Training_TestPlan.FirstOrDefault(x => x.TestPlanId == newTestRecord.TestPlanId);
if (getTrainTypeName != null)
Model.Training_TestRecord newTestRecord = new Model.Training_TestRecord
{
newTestRecord.TestType = getTrainTypeName.PlanName;
TestRecordId = SQLHelper.GetNewID(),
ProjectId = getTestPlan.ProjectId,
TestPlanId = getTestPlan.TestPlanId,
TestManId = personId,
};
if (string.IsNullOrEmpty(newTestRecord.TestType))
{
var getTrainTypeName = db.Training_TestPlan.FirstOrDefault(x => x.TestPlanId == newTestRecord.TestPlanId);
if (getTrainTypeName != null)
{
newTestRecord.TestType = getTrainTypeName.PlanName;
}
}
TestRecordService.AddTestRecord(newTestRecord);
responeData.code = 3;
responeData.message = "您已加入考试计划!";
}
TestRecordService.AddTestRecord(newTestRecord);
responeData.code = 3;
responeData.message = "您已加入考试计划!";
}
}
}
}
}
}
if (responeData.code == 1)
{
//其他状态时 查看考试计划详细页
responeData.data = APITestPlanService.getTestPlanByTestPlanId(testPlanId);
if (responeData.code == 1)
{
//其他状态时 查看考试计划详细页
responeData.data = APITestPlanService.getTestPlanByTestPlanId(testPlanId);
}
}
}
catch (Exception ex)

View File

@ -321,7 +321,7 @@ namespace WebAPI.Controllers
var getItem = TestRecordItemService.GetTestRecordItemTestRecordItemId(testRecordItemId);
if (getItem != null)
{
APITestRecordService.getTestRecordItemAnswerBySelectedItem(getItem, selectedItem);
APITestRecordService.getTestRecordItemAnswerBySelectedItem(testRecordItemId, selectedItem);
var testRecord = Funs.DB.Training_TestRecord.FirstOrDefault(x => x.TestRecordId == getItem.TestRecordId && x.TestStartTime.Value.AddMinutes(x.Duration) < DateTime.Now);
if (testRecord != null)
{

View File

@ -298,27 +298,16 @@ namespace WebAPI.Controllers
var responeData = new Model.ResponeData();
try
{
var getItem = TestRecordItemService.GetTestRecordItemTestRecordItemId(testRecordItemId);
if (getItem != null)
if (!string.IsNullOrEmpty(testRecordItemId) && !string.IsNullOrEmpty(selectedItem))
{
APITestRecordService.getTestRecordItemAnswerBySelectedItem(getItem, selectedItem);
var testRecord = Funs.DB.Training_TestRecord.FirstOrDefault(x => x.TestRecordId == getItem.TestRecordId && x.TestStartTime.Value.AddMinutes(x.Duration) < DateTime.Now);
if (testRecord != null)
{
//更新没有结束时间且超时的考试记录
int closeCount = TestRecordService.UpdateTestEndTimeNull(getItem.TestRecordId);
if (closeCount > 0)
{
responeData.code = 2;
responeData.message = "本次考试已结束,系统自动交卷!";
}
}
APITestRecordService.getTestRecordItemAnswerBySelectedItem(testRecordItemId, selectedItem);
}
else
{
responeData.code = 0;
responeData.message = "试题有问题";
responeData.message = "答题为空选项!";
}
}
catch (Exception ex)
{
@ -340,36 +329,82 @@ namespace WebAPI.Controllers
var responeData = new Model.ResponeData();
try
{
var getTestRecord = Funs.DB.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecordId);
if (getTestRecord != null)
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
string returnTestRecordId = string.Empty;
////考试分数
decimal getTestScores = APITestRecordService.getSubmitTestRecord(getTestRecord);
////及格分数
int getPassScores = SysConstSetService.getPassScore();
if (getTestScores <= getPassScores)
{
int testCount = Funs.DB.Training_TestRecord.Where(x => x.TestPlanId == getTestRecord.TestPlanId && x.TestManId == getTestRecord.TestManId).Count();
if (testCount < 2)
decimal getTestScores = 0;
var getTestRecord =db.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecordId);
if (getTestRecord != null)
{
if (getTestRecord.TestStartTime.HasValue)
{
////重新生成一条考试记录 以及考试试卷
returnTestRecordId = APITestRecordService.getResitTestRecord(getTestRecord);
responeData.message = "考试不合格!您的成绩为:【" + getTestScores.ToString() + "】,您将进入补考。";
getTestRecord.TestEndTime = DateTime.Now;
var getRItem = db.Training_TestRecordItem.Where(x => x.TestRecordId == testRecordId);
if (getRItem.Count() > 0)
{
getTestRecord.TestScores = getRItem.Sum(x => x.SubjectScore ?? 0);
}
db.SubmitChanges();
getTestScores = getTestRecord.TestScores ?? 0;
}
////考试分数
int getPassScores = SysConstSetService.getPassScore();
if (getTestScores <= getPassScores)
{
int testCount = db.Training_TestRecord.Where(x => x.TestPlanId == getTestRecord.TestPlanId && x.TestManId == getTestRecord.TestManId).Count();
if (testCount < 2)
{
////重新生成一条考试记录 以及考试试卷
returnTestRecordId = APITestRecordService.getResitTestRecord(getTestRecord);
responeData.message = "考试不合格!您的成绩为:【" + getTestScores.ToString() + "】,您将进入补考。";
}
else
{
// APITestRecordService.updateAll(getTestRecord.TestPlanId);
responeData.message = "考试不合格!您的成绩为:【" + getTestScores.ToString() + "】,请再次参加培训后补考。";
}
}
else
{
// APITestRecordService.updateAll(getTestRecord.TestPlanId);
responeData.message = "考试不合格!您的成绩为:【" + getTestScores.ToString() + "】,请再次参加培训后补考。";
// APITestRecordService.updateAll(getTestRecord.TestPlanId);
responeData.message = "恭喜考试通过!您的成绩为:【" + getTestScores.ToString() + "】。";
}
}
else
{
// APITestRecordService.updateAll(getTestRecord.TestPlanId);
responeData.message = "恭喜考试通过!您的成绩为:【" + getTestScores.ToString() + "】。";
}
responeData.data = new { getTestScores, getPassScores, returnTestRecordId };
responeData.data = new { getTestScores, getPassScores, returnTestRecordId };
}
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
/// <summary>
/// 重考
/// </summary>
/// <param name="testRecordId">试卷ID</param>
public Model.ResponeData getRetakeTestRecordByTestRecordId(string testRecordId)
{
var responeData = new Model.ResponeData();
try
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
string returnTestRecordId = string.Empty;
var getTestRecord = db.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecordId);
if (getTestRecord != null)
{
////重新生成一条考试记录 以及考试试卷
returnTestRecordId = APITestRecordService.getResitTestRecord(getTestRecord);
responeData.data = new { returnTestRecordId };
}
}
}
catch (Exception ex)
@ -380,6 +415,5 @@ namespace WebAPI.Controllers
return responeData;
}
#endregion
}
}

View File

@ -885,21 +885,45 @@ namespace WebAPI.Controllers
}
db.SubmitChanges();
}
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
ErrLogInfo.WriteLog(ex, "WX接口-更新人员数据交换时间", "PersonController.getUpdatePersonExchangeTime");
}
return responeData;
}
var getPersonb = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == personId);
if (getPersonb != null && !string.IsNullOrEmpty(type))
/// <summary>
/// 更新人员数据交换时间
/// </summary>
/// <param name="projectId"></param>
/// <param name="idCard"></param>
/// <param name="type"></param>
/// <returns></returns>
public Model.ResponeData getUpdatePersonExchangeTime(string projectId, string idCard, string type)
{
var responeData = new Model.ResponeData();
try
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getPerson = db.SitePerson_Person.FirstOrDefault(e => e.ProjectId == projectId && e.IdentityCard ==idCard);
if (getPerson != null && !string.IsNullOrEmpty(type))
{
if (type == "1")
{
getPersonb.ExchangeTime2 = DateTime.Now;
if (!getPersonb.ExchangeTime.HasValue)
getPerson.ExchangeTime2 = DateTime.Now;
if (!getPerson.ExchangeTime.HasValue)
{
getPersonb.ExchangeTime = DateTime.Now;
getPerson.ExchangeTime = DateTime.Now;
}
}
else
{
getPersonb.ExchangeTime = DateTime.Now;
getPerson.ExchangeTime = DateTime.Now;
}
db.SubmitChanges();
}
@ -909,7 +933,7 @@ namespace WebAPI.Controllers
{
responeData.code = 0;
responeData.message = ex.Message;
ErrLogInfo.WriteLog(ex, "WX接口-更新人员数据交换时间", "PersonController.getUpdatePersonExchangeTime");
ErrLogInfo.WriteLog(ex, "WX接口-更新人员数据交换时间", "PersonController.getUpdatePersonExchangeTime");
}
return responeData;
}

View File

@ -10,13 +10,13 @@
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>F:\Package\中化五环\SGGLAPI</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
<PrecompileBeforePublish>True</PrecompileBeforePublish>
<EnableUpdateable>True</EnableUpdateable>
<DebugSymbols>False</DebugSymbols>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<ExcludeApp_Data>false</ExcludeApp_Data>
<publishUrl>E:\Package\中国五环工程有限公司\SGGLAPI</publishUrl>
<DeleteExistingFiles>true</DeleteExistingFiles>
<PrecompileBeforePublish>true</PrecompileBeforePublish>
<EnableUpdateable>true</EnableUpdateable>
<DebugSymbols>false</DebugSymbols>
<WDPMergeOption>DonotMerge</WDPMergeOption>
</PropertyGroup>
</Project>

View File

@ -1,8 +0,0 @@
publickey
<RSAKeyValue><Modulus>rnq6pYDFkcrpzVtMrLbf2dvDPs2FDo5yeDub6YCnl0hXov3MVEVMbVe3NCnC5Thl3dwm14yI9/vNIGdH5M4getAkMnkG8tNA60NPjtHUzyoZSpVYCUOmB30s5vx+4IBkPh8R4ynkJYyUxkl61/0h6y7A86qz4jNivxAKt2a0vQxk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>
privatekey
<RSAKeyValue><Modulus>1oowM965L1r9NM10IruHI+4v4cF8cMrZ1PMaG/D1oNOww8YGEYjKiQ2iAjAtJi4OQX6sxI7BHJad/CGNKeE12ywplO18J8vL/YvEq38DMen22ungNAjSmC6zmIngvBrIiyW2Cyws/9JQKxT02I1tZlEQ9q4ZxCc3PLFazTD0sIk=</Modulus><Exponent>AQAB</Exponent><P>2K+KCTgEGJAvPzB6pYcDmE2n/gIIy6dOiaNQtTWRUrttC+DaU8ZlORlYH6+lWcekYhGnf+dVjfuGE3w45JVKxw==</P><Q>/Xb6T/4tizVbVpjLd47SN+c1yEcCubLhv7HHd/9E2K5olboWvOGxUbr53F4FOmTu9CWpybbCKLReJWPQxq5aLw==</Q><DP>eA1Ztx3X9xv7cVEUwpz5OurbhnnuEZdShiN71comB+Zb1lbv37Zt4qLOFlAklodr5gHOAalT12Rhtm3+v3aPhQ==</DP><DQ>5VjUNK+1PEKijGAjs+I627TN2JRQpgFz/gX6jN0hycM/BURmMLEzxtWeI0W8C1OrWKX/1XMWishya/i+wBihpw==</DQ><InverseQ>wE16uAx/ztTMObpArwC2eGhh+oCwXsnUPoFSQtLHeEbxx/Cf424wKr2ceV/Fe9YKQp5XLdOpJkCDDAF+2k4X1A==</InverseQ><D>0rF/yVEQeQtY5ERpq7qTa5v99i448eSlrVbZ61rnP3zmej29s/atQY/b7V422OoeIgAv2BGCYXshyH2CzwBYDAtGkz+qvaZtPvWIYPadTvgU5W/QgX8r/ozqFBHu17APSSBmJWulShxj6r9kOmgxW4HzwVQ/iQgyQ5Z+qgpf50k=</D></RSAKeyValue>

View File

@ -1,13 +0,0 @@
1、
2、另外在手动考勤的下拉菜单中已出场人员应该不自动显示
3、
4、
5、

View File

@ -1,38 +0,0 @@
单点登录的方式
五环系统点击链接https://zhgd.cwcec.com/Login.html?data=****&basedata=****
免登录进入智慧工地的系统
data参数说明
data字符串是用户名和时间戳用RSA公钥加密后的字符串。例如
userName=zhangsan&timespan=1256015312用公钥加密后生成****
basedata参数说明
basedata字符串是用户名和时间戳用RSA公钥加密后再用Base64加密一次
生成的加密字符串。例如:
userName=zhangsan&timespan=1256015312用公钥加密后再用Base64加密
为了解决有的解密过程中出现"+"或者"="这样的特殊字符。推荐截取basedata的
字符串解密。
解密方式
data或者basedata都是用公钥进行RSA加密需要用我们提供的私钥对加密文件进行解密判断用户名是否在系统中并且当前时间-时间戳<30秒钟才能登录到系统中否则需要输入账号密码
三、.net解密的函数参考
string userdata = context.Request["database"].ToString();
string privatekey = ****(我们会提供)
string result = RSADecrypt(privatekey, userdata); //经过RSA解密后获得的域登录名+时间戳
/// <summary>
/// <summary>
/// 用私钥对数据进行RSA解密
/// </summary>
/// <param name="privatekey"></param>
/// <param name="content"></param>
/// <returns></returns>
public static string RSADecrypt(string privatekey, string content)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] cipherbytes;
rsa.FromXmlString(privatekey);
//对参数content进行两次base64解密
cipherbytes = rsa.Decrypt(Convert.FromBase64String(Encoding.UTF8.GetString(Convert.FromBase64String(content))), false);
return Encoding.UTF8.GetString(cipherbytes);
}