From 5b740e7bdadaf3c9f9aed7e24eccb7f6dc0f29d8 Mon Sep 17 00:00:00 2001 From: 10191 <506754232@qq.com> Date: Fri, 28 Apr 2023 14:56:47 +0800 Subject: [PATCH] 2023-04-28 --- .../SGGLDB_CD_V2023-04-26-001.sql | Bin 0 -> 1052 bytes SGGL/BLL/API/APIPersonService.cs | 29 +- SGGL/BLL/API/HSSE/APITestRecordService.cs | 26 ++ SGGL/BLL/Common/PrinterDocService.cs | 12 +- .../CQMS/Foreign/ITPListProject.aspx.cs | 2 +- SGGL/FineUIPro.Web/ErrLog.txt | 99 ++++- ...年度工作通报事项一览表_(4).xlsx | Bin 0 -> 15588 bytes .../HSSE/Check/CheckSpecial.aspx | 31 +- .../HSSE/Check/CheckSpecial.aspx.cs | 208 ++++++++-- .../HSSE/Check/CheckSpecial.aspx.designer.cs | 80 ++-- .../HSSE/Check/CheckSpecialEdit.aspx | 322 ++++++++-------- .../HSSE/Check/CheckSpecialEdit.aspx.cs | 359 +++++++++++++----- .../Check/CheckSpecialEdit.aspx.designer.cs | 108 +++--- .../HSSE/Check/CheckSpecialRecord.aspx | 20 +- .../HSSE/Check/CheckSpecialRecord.aspx.cs | 64 +++- .../Check/CheckSpecialRecord.aspx.designer.cs | 89 +++-- .../HSSE/Check/CheckSpecialStatics.aspx.cs | 7 +- .../HSSE/Check/CheckSpecialView.aspx | 32 +- .../HSSE/Check/CheckSpecialView.aspx.cs | 4 + .../HSSE/EduTrain/PlanEdit.aspx.cs | 4 +- .../HSSE/EduTrain/TestRecord.aspx | 2 +- .../HSSE/EduTrain/TestRecord.aspx.cs | 18 + .../HSSE/EduTrain/TestRecord.aspx.designer.cs | 65 ++-- .../HiddenRectificationList.aspx | 11 + .../HiddenRectificationList.aspx.cs | 42 +- .../Person/EduTrain/PlanEdit.aspx.cs | 4 +- SGGL/FineUIPro.Web/index.aspx | 12 +- SGGL/FineUIPro.Web/indexProject.aspx | 12 +- SGGL/FineUIPro.Web/res/qiaming.png | Bin 0 -> 42506 bytes SGGL/Model/APIItem/HSSE/PersonItem.cs | 2 +- SGGL/Model/APIItem/HSSE/TestRecordItem.cs | 14 + SGGL/Model/Model.cs | 48 +++ .../DoorProject/DoorServiceController.cs | 5 +- .../Controllers/HSSE/TestRecordController.cs | 105 ++++- SGGL/WebAPI/Controllers/PersonController.cs | 4 +- 35 files changed, 1321 insertions(+), 519 deletions(-) create mode 100644 DataBase/版本日志/SGGLDB_CD_V2023-04-26-001.sql create mode 100644 SGGL/FineUIPro.Web/FileUpload/SafePersonQualityAttachUrl/2023-04/638180458829725872_附件3:2023年度工作通报事项一览表_(4).xlsx create mode 100644 SGGL/FineUIPro.Web/res/qiaming.png diff --git a/DataBase/版本日志/SGGLDB_CD_V2023-04-26-001.sql b/DataBase/版本日志/SGGLDB_CD_V2023-04-26-001.sql new file mode 100644 index 0000000000000000000000000000000000000000..13d1d751d56885667f400a39389096c1f6dfc508 GIT binary patch literal 1052 zcmb_aJx?1!5PhNwUnwc5PN@!rz&4SQET!0+?{;S1%)FVM?#~%aViZF#w8RiW471oT zzr-^?hB!K&=n2~6{EEMiHk)(R1mpIw5wec@SH;?@*rUYHVVW_$6Ahu>c=gTmvY;Gf zDLG`2LIr95`xP$AW^?%9Oyk5li5cycyD&G9Q14XiV|C}dTFHNPejI%(-0U5M{$ zEq(cLc{$R(UcV@J+6#qy_37}g*73J?#@|l)Bi;D!bN94huJyRwwy)Z?)#KKX8dmSU zMKxCXe3m=uVFw~X2YSo%u70h&Ds^B^0X*c_&sW#mBNhDx?Y+nmr;@>N2#Es z`N%6cA^TJ8q+dIPah~iUKrORUh9VQo{uQ}KWRa*IGMrU7FHvMF(#yZSL6%X1PO?9F z0hzT+Ek)hpeG65*=4QHRaDTT^*T-jPE z{yJLJ8;q#wzsdcNXqliln6$+IZ)U-^nd~gjZCGRv7CFi*=Xiq6H1LW{`ZJi&^9k5I Gp7Jjz`LBoo literal 0 HcmV?d00001 diff --git a/SGGL/BLL/API/APIPersonService.cs b/SGGL/BLL/API/APIPersonService.cs index 4df566b2..29138bf6 100644 --- a/SGGL/BLL/API/APIPersonService.cs +++ b/SGGL/BLL/API/APIPersonService.cs @@ -95,7 +95,7 @@ namespace BLL Telephone = x.Telephone, PhotoUrl = x.PhotoUrl, DepartName = x.DepartName, - IsUsed = x.IsUsed == 1 ? true : false, + IsUsed = x.IsUsed .HasValue?x.IsUsed.Value.ToString():"", IsUsedName = x.IsUsed == 0 ? "不启用" : "启用", AuditorId = x.AuditorId, AuditorName = db.Sys_User.First(z => z.UserId == x.AuditorId).UserName, @@ -202,7 +202,7 @@ namespace BLL Telephone = x.Telephone, PhotoUrl = x.PhotoUrl, DepartName = x.DepartName, - IsUsed = x.IsUsed==1?true:false, + IsUsed = x.IsUsed.HasValue?x.IsUsed.Value.ToString():"", IsUsedName = x.IsUsed == 0 ? "不启用" : "启用", AuditorId = x.AuditorId, AuditorName = db.Sys_User.First(z => z.UserId == x.AuditorId).UserName, @@ -400,7 +400,7 @@ namespace BLL OutResult = x.OutResult, Telephone = x.Telephone, PhotoUrl = x.PhotoUrl, - IsUsed = x.IsUsed==1?true:false, + IsUsed = x.IsUsed.HasValue?x.IsUsed.ToString():"", IsUsedName = (x.IsUsed == 1 ? "启用" : "未启用"), WorkAreaId = x.WorkAreaId, WorkAreaName = UnitWorkService.GetUnitWorkName(x.WorkAreaId), @@ -567,13 +567,19 @@ namespace BLL /// 培训岗位ID /// 培训类型ID /// - public static List getTrainingPersonListByTrainTypeId(string projectId, string unitIds, string workPostIds, string departIds, string trainTypeId) + public static List getTrainingPersonListByTrainTypeId(string projectId, string unitIds, string workPostIds, string departIds, string trainTypeId,string InTime,string strParam) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { + DateTime inDateTime=DateTime.Now; + if (!string.IsNullOrEmpty(InTime)) + { + inDateTime = DateTime.Parse(InTime); + } + List unitIdList = Funs.GetStrListByStr(unitIds, ','); var getPersons = from x in db.View_SitePerson_Person - where x.ProjectId == projectId && unitIdList.Contains(x.UnitId) && x.IsUsed == 1 + where x.ProjectId == projectId && unitIdList.Contains(x.UnitId) && x.IsUsed == 1 &&(string.IsNullOrEmpty(strParam)||x.PersonName.Contains(strParam)) && (string.IsNullOrEmpty(InTime) || x.InTime < inDateTime) && x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime >= DateTime.Now) select new Model.PersonItem { @@ -723,13 +729,9 @@ namespace BLL { newPerson.ViceCNProfessionalId = person.ViceCNProfessionalId; } - if (person.IsUsed == true) + if (!string.IsNullOrEmpty(person.IsUsed)) { - newPerson.IsUsed = 1; - } - else - { - newPerson.IsUsed = 0; + newPerson.IsUsed = int.Parse(person.IsUsed); } newPerson.Password = PersonService.GetPersonPassWord(person.IdentityCard); string rootUrl = ConfigurationManager.AppSettings["localRoot"]; @@ -808,7 +810,10 @@ namespace BLL } else { - getPerson.IsUsed = person.IsUsed?1:0; + if (!string.IsNullOrEmpty(person.IsUsed)) + { + getPerson.IsUsed = int.Parse(person.IsUsed); + } getPerson.AuditorDate = DateTime.Now; } getPerson.AuditorId = person.AuditorId; diff --git a/SGGL/BLL/API/HSSE/APITestRecordService.cs b/SGGL/BLL/API/HSSE/APITestRecordService.cs index 2a60876d..adddf092 100644 --- a/SGGL/BLL/API/HSSE/APITestRecordService.cs +++ b/SGGL/BLL/API/HSSE/APITestRecordService.cs @@ -35,6 +35,7 @@ namespace BLL TestScores = x.TestScores ?? 0, TestType = x.TestType, TemporaryUser = x.TemporaryUser, + Signature= x.Signature }).ToList(); foreach(var item in getDataLists) @@ -90,6 +91,7 @@ namespace BLL TestScores = x.TestScores ?? 0, TestType = x.TestType, TemporaryUser = x.TemporaryUser, + Signature= x.Signature }; var res = getDataLists.FirstOrDefault(); if (res != null) @@ -845,5 +847,29 @@ namespace BLL } } #endregion + + + + + /// + /// 修改考试记录信息 + /// + /// + public static void updateTestRecord(Model.Training_TestRecord testRecord) + { + using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) + { + Model.Training_TestRecord newTestRecord = db.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecord.TestRecordId); + if (newTestRecord != null) + { + newTestRecord.TestScores = testRecord.TestScores; + newTestRecord.TestEndTime = testRecord.TestEndTime; + newTestRecord.IsFiled = testRecord.IsFiled; + newTestRecord.Signature = testRecord.Signature; + newTestRecord.Fingerprint = testRecord.Fingerprint; + db.SubmitChanges(); + } + } + } } } \ No newline at end of file diff --git a/SGGL/BLL/Common/PrinterDocService.cs b/SGGL/BLL/Common/PrinterDocService.cs index f4ade49a..5a3ac2b1 100644 --- a/SGGL/BLL/Common/PrinterDocService.cs +++ b/SGGL/BLL/Common/PrinterDocService.cs @@ -1451,7 +1451,17 @@ sb.Append(""); sb.Append(""); - sb.AppendFormat(" ", "姓名:" + testName); + if (!string.IsNullOrEmpty(getTestRecord.Signature)) + { + sb.AppendFormat(" "); + } + else + { + sb.AppendFormat(" "); + + //sb.AppendFormat(" ", "姓名:" + testName); + + } sb.AppendFormat(" ", "身份证号:" + idCard); sb.AppendFormat(" ", "分数:" + (getTestRecord.TestScores ?? 0).ToString()); sb.Append(""); diff --git a/SGGL/FineUIPro.Web/CQMS/Foreign/ITPListProject.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Foreign/ITPListProject.aspx.cs index 51192bbe..cb366ddd 100644 --- a/SGGL/FineUIPro.Web/CQMS/Foreign/ITPListProject.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/Foreign/ITPListProject.aspx.cs @@ -58,7 +58,7 @@ namespace FineUIPro.Web.CQMS.Foreign ,[Memo] ,[CheckDate] ,[FileType] - FROM CQMS_Foreign_ITPListProject where 1=1 "; + FROM CQMS_Foreign_ITPListProject where ProjectId='"+this.CurrUser.LoginProjectId+"' "; List listStr = new List(); diff --git a/SGGL/FineUIPro.Web/ErrLog.txt b/SGGL/FineUIPro.Web/ErrLog.txt index 5f282702..00dc6d31 100644 --- a/SGGL/FineUIPro.Web/ErrLog.txt +++ b/SGGL/FineUIPro.Web/ErrLog.txt @@ -1 +1,98 @@ - \ No newline at end of file + +错误信息开始=====> +错误类型:HttpException +错误信息:文件“/HSSE/AttachFile/webuploader.aspx”不存在。 +错误堆栈: + 在 System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath) + 在 System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) + 在 System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) + 在 System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound) + 在 System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp) + 在 System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) + 在 System.Web.UI.PageHandlerFactory.GetHandler(HttpContext context, String requestType, String virtualPath, String path) + 在 System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() + 在 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) + 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +出错时间:04/25/2023 18:54:47 +出错文件:http://localhost:1295/HSSE/AttachFile/webuploader.aspx?toKeyId=&path=FileUpload/SafePersonQualityAttachUrl&menuId=750F5074-45B9-470E-AE1E-6204957421E6&type=-1 +IP地址:::1 + +出错时间:04/25/2023 18:54:47 + + +错误信息开始=====> +错误类型:SqlException +错误信息:参数化查询 '(@ProjectId nvarchar(4000))SELECT DISTINCT PersonQuality.SafePer' 需要参数 '@ProjectId',但未提供该参数。 +错误堆栈: + 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) + 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) + 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) + 在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) + 在 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() + 在 System.Data.SqlClient.SqlDataReader.get_MetaData() + 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted) + 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) + 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) + 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) + 在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) + 在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) + 在 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) + 在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) + 在 System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior) + 在 System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) + 在 BLL.SQLHelper.GetDataTableRunText(String strSql, SqlParameter[] parameters) 位置 D:\project\vs\sggl_cd\SGGL\BLL\SQLHelper.cs:行号 311 + 在 FineUIPro.Web.HSSE.QualityAudit.SafePersonQuality.BindGrid() 位置 D:\project\vs\sggl_cd\SGGL\FineUIPro.Web\HSSE\QualityAudit\SafePersonQuality.aspx.cs:行号 102 + 在 FineUIPro.Web.HSSE.QualityAudit.SafePersonQuality.Page_Load(Object sender, EventArgs e) 位置 D:\project\vs\sggl_cd\SGGL\FineUIPro.Web\HSSE\QualityAudit\SafePersonQuality.aspx.cs:行号 60 + 在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) + 在 System.EventHandler.Invoke(Object sender, EventArgs e) + 在 System.Web.UI.Control.OnLoad(EventArgs e) + 在 System.Web.UI.Control.LoadRecursive() + 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +出错时间:04/25/2023 19:01:25 +出错文件:http://localhost:1295/HSSE/QualityAudit/SafePersonQuality.aspx +IP地址:::1 +操作人员:JT + +出错时间:04/25/2023 19:01:25 + + +错误信息开始=====> +错误类型:NullReferenceException +错误信息:未将对象引用设置到对象的实例。 +错误堆栈: + 在 FineUIPro.Web.CQMS.Check.EditJointCheck.Page_Load(Object sender, EventArgs e) 位置 D:\project\vs\sggl_cd\SGGL\FineUIPro.Web\CQMS\Check\EditJointCheck.aspx.cs:行号 58 + 在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) + 在 System.EventHandler.Invoke(Object sender, EventArgs e) + 在 System.Web.UI.Control.OnLoad(EventArgs e) + 在 System.Web.UI.Control.LoadRecursive() + 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +出错时间:04/26/2023 15:31:55 +出错文件:http://localhost:1295/CQMS/Check/EditJointCheck.aspx +IP地址:::1 +操作人员:JT + +出错时间:04/26/2023 15:31:55 + + +错误信息开始=====> +错误类型:HttpCompileException +错误信息:d:\project\vs\sggl_cd\SGGL\FineUIPro.Web\HSSE\Check\CheckSpecial.aspx(56): error CS1061: “ASP.hsse_check_checkspecial_aspx”不包含“drpType_SelectedIndexChanged”的定义,并且找不到可接受类型为“ASP.hsse_check_checkspecial_aspx”的第一个参数的扩展方法“drpType_SelectedIndexChanged”(是否缺少 using 指令或程序集引用?) +错误堆栈: + 在 System.Web.Compilation.AssemblyBuilder.Compile() + 在 System.Web.Compilation.BuildProvidersCompiler.PerformBuild() + 在 System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) + 在 System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) + 在 System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) + 在 System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound) + 在 System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp) + 在 System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) + 在 System.Web.UI.PageHandlerFactory.GetHandler(HttpContext context, String requestType, String virtualPath, String path) + 在 System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() + 在 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) + 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +出错时间:04/27/2023 15:21:49 +出错文件:http://localhost:1295/HSSE/Check/CheckSpecial.aspx +IP地址:::1 + +出错时间:04/27/2023 15:21:49 + diff --git a/SGGL/FineUIPro.Web/FileUpload/SafePersonQualityAttachUrl/2023-04/638180458829725872_附件3:2023年度工作通报事项一览表_(4).xlsx b/SGGL/FineUIPro.Web/FileUpload/SafePersonQualityAttachUrl/2023-04/638180458829725872_附件3:2023年度工作通报事项一览表_(4).xlsx new file mode 100644 index 0000000000000000000000000000000000000000..35fe88e8e9288d5effa7304d09122276fbb1782f GIT binary patch literal 15588 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 literal 0 HcmV?d00001 diff --git a/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecial.aspx b/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecial.aspx index dd7012d3..40e2e5ec 100644 --- a/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecial.aspx +++ b/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecial.aspx @@ -38,7 +38,7 @@ ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch"> - - - - - + + - + - - + + + + + + + + @@ -127,13 +131,16 @@ + diff --git a/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecial.aspx.cs b/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecial.aspx.cs index a29b5998..7ba933a8 100644 --- a/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecial.aspx.cs +++ b/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecial.aspx.cs @@ -37,6 +37,16 @@ namespace FineUIPro.Web.HSSE.Check if (!IsPostBack) { Funs.DropDownPageSize(this.ddlPageSize); + ListItem[] item = new ListItem[5]; + item[0] = new ListItem("请选择", "-1"); + item[1] = new ListItem("专项检查", "0"); + item[2] = new ListItem("安全周检", "1"); + item[3] = new ListItem("安全月检", "2"); + item[4] = new ListItem("节前节后安全检查", "3"); + this.drpType.DataValueField = "Value"; + this.drpType.DataTextField = "Text"; + this.drpType.DataSource = item; + this.drpType.DataBind(); this.ProjectId = this.CurrUser.LoginProjectId; if (!string.IsNullOrEmpty(Request.Params["projectId"]) && Request.Params["projectId"] != this.ProjectId) { @@ -57,38 +67,40 @@ namespace FineUIPro.Web.HSSE.Check /// private void BindGrid() { - string strSql = @"SELECT CheckSpecial.CheckSpecialId,CodeRecords.Code AS CheckSpecialCode," - + @" CheckItemSet.CheckItemName,CheckSpecial.CheckTime,(CASE WHEN CheckSpecial.CheckType ='1' THEN '联合检查' ELSE '专项检查' END) AS CheckTypeName" + string strSql = @"SELECT 0 [index], CheckSpecial.CheckSpecialId,CodeRecords.Code AS CheckSpecialCode," + + @" CASE WHEN CheckSpecial.CheckType ='0' THEN CheckItemSet.CheckItemName else '综合大检查' end CheckItemName ,CheckSpecial.CheckTime, + (CASE WHEN CheckSpecial.CheckType ='1' THEN '安全周检' + WHEN CheckSpecial.CheckType ='2' THEN '安全月检' + WHEN CheckSpecial.CheckType ='3' THEN '节前节后安全检查' + WHEN CheckSpecial.CheckType ='0' THEN '专项检查' + ELSE '专项检查' END) AS CheckTypeName" + @" ,(CASE WHEN CheckSpecial.States='2' THEN '已完成' WHEN CheckSpecial.States='1' THEN '待整改' ELSE '待提交' END) AS StatesName" + @" FROM Check_CheckSpecial AS CheckSpecial " + @" LEFT JOIN Sys_CodeRecords AS CodeRecords ON CheckSpecial.CheckSpecialId=CodeRecords.DataId " + @" LEFT JOIN Technique_CheckItemSet AS CheckItemSet ON CheckItemSet.CheckItemSetId = CheckSpecial.CheckItemSetId where 1=1"; List listStr = new List(); strSql += " AND CheckSpecial.ProjectId = @ProjectId"; - listStr.Add(new SqlParameter("@ProjectId", this.ProjectId)); + listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); if (this.rbStates.SelectedValue!="-1") { strSql += " AND CheckSpecial.States = @States"; listStr.Add(new SqlParameter("@States", this.rbStates.SelectedValue)); } - if (this.rbType.SelectedValue != "-1") + if (this.drpType.SelectedValue != "-1") { - if (this.rbType.SelectedValue == "1") - { + strSql += " AND CheckSpecial.CheckType = @CheckType"; - listStr.Add(new SqlParameter("@CheckType", this.rbType.SelectedValue)); - } - else - { - strSql += " AND (CheckSpecial.CheckType = @CheckType OR CheckSpecial.CheckType IS NULL) "; - listStr.Add(new SqlParameter("@CheckType", this.rbType.SelectedValue)); - } + listStr.Add(new SqlParameter("@CheckType", this.drpType.SelectedValue)); + } - if (this.drpSupCheckItemSet.SelectedValue!=BLL.Const._Null) + if (this.drpSupCheckItemSet.SelectedValue != BLL.Const._Null) { - strSql += " AND CheckSpecial.CheckItemSetId = @CheckItemSetId"; - listStr.Add(new SqlParameter("@CheckItemSetId", this.drpSupCheckItemSet.SelectedValue )); + if (drpSupCheckItemSet.SelectedValue != "0"&& drpSupCheckItemSet.SelectedValue != "-1") + { + strSql += " AND CheckSpecial.CheckItemSetId = @CheckItemSetId"; + listStr.Add(new SqlParameter("@CheckItemSetId", this.drpSupCheckItemSet.SelectedValue)); + } } if (!string.IsNullOrEmpty(this.txtStartTime.Text.Trim())) { @@ -103,7 +115,13 @@ namespace FineUIPro.Web.HSSE.Check SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); - + if (tb != null) + { + foreach (DataRow row in tb.Rows) + { + row["index"] = int.Parse(System.Text.RegularExpressions.Regex.Replace(row["CheckSpecialCode"].ToString(), @"[^0-9]+", "")); + } + } Grid1.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(Grid1, tb); @@ -245,25 +263,33 @@ namespace FineUIPro.Web.HSSE.Check /// private void GetButtonPower() { - if (Request.Params["value"] == "0") + try { - return; + if (Request.Params["value"] == "0") + { + return; + } + var buttonList = BLL.CommonService.GetAllButtonList(this.ProjectId, this.CurrUser.UserId, BLL.Const.ProjectCheckSpecialMenuId); + if (buttonList.Count() > 0) + { + if (buttonList.Contains(BLL.Const.BtnAdd)) + { + this.btnNew.Hidden = false; + } + if (buttonList.Contains(BLL.Const.BtnModify)) + { + this.btnMenuModify.Hidden = false; + this.btnMenuClose.Hidden = false; + } + if (buttonList.Contains(BLL.Const.BtnDelete)) + { + this.btnMenuDel.Hidden = false; + } + } } - var buttonList = BLL.CommonService.GetAllButtonList(this.ProjectId, this.CurrUser.UserId, BLL.Const.ProjectCheckSpecialMenuId); - if (buttonList.Count() > 0) + catch (Exception e) { - if (buttonList.Contains(BLL.Const.BtnAdd)) - { - this.btnNew.Hidden = false; - } - if (buttonList.Contains(BLL.Const.BtnModify)) - { - this.btnMenuModify.Hidden = false; - } - if (buttonList.Contains(BLL.Const.BtnDelete)) - { - this.btnMenuDel.Hidden = false; - } + } } #endregion @@ -297,8 +323,32 @@ namespace FineUIPro.Web.HSSE.Check this.BindGrid(); } - protected void drpSupCheckItemSet_SelectedIndexChanged(object sender, EventArgs e) + protected void drpType_SelectedIndexChanged(object sender, EventArgs e) { + drpSupCheckItemSet.Items.Clear(); + if (drpType.SelectedValue == "0") + { + Technique_CheckItemSetService.InitCheckItemSetDropDownList(this.drpSupCheckItemSet, "2", "0", true); + + } + else + { + ListItem[] item = new ListItem[2]; + item[0] = new ListItem("请选择", "-1"); + item[1] = new ListItem("联合", "0"); + this.drpSupCheckItemSet.DataValueField = "Value"; + this.drpSupCheckItemSet.DataTextField = "Text"; + this.drpSupCheckItemSet.DataSource = item; + this.drpSupCheckItemSet.DataBind(); + + } + this.drpSupCheckItemSet.SelectedIndex = 0; + this.BindGrid(); + } + + protected void drpSupCheckItemSet_SelectedIndexChanged(object sender, EventArgs e) + { + this.BindGrid(); } @@ -356,8 +406,9 @@ namespace FineUIPro.Web.HSSE.Check string filePath = string.Empty; initTemplatePath = "File\\Word\\HSSE\\专项检查.doc"; uploadfilepath = rootPath + initTemplatePath; - newUrl = uploadfilepath.Replace(".doc", string.Format("{0:yyyy-MM}", DateTime.Now) + ".doc"); - filePath = initTemplatePath.Replace(".doc", string.Format("{0:yyyy-MM}", DateTime.Now) + ".pdf"); + string docfilename = Funs.GetNewFileName(); + newUrl = uploadfilepath.Replace(".doc", docfilename + ".doc"); + filePath = initTemplatePath.Replace(".doc", docfilename + ".pdf"); if (File.Exists(newUrl)) { File.Delete(newUrl); } @@ -467,7 +518,7 @@ namespace FineUIPro.Web.HSSE.Check builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.First; builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;//垂直居中对齐 builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;//水平居中对齐 - builder.CellFormat.Width = 60; + builder.CellFormat.Width = 120; builder.Write(string.IsNullOrEmpty(detail.UnitName) ? "" : detail.UnitName); //问题描述 builder.InsertCell(); @@ -475,7 +526,7 @@ namespace FineUIPro.Web.HSSE.Check builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.First; builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;//垂直居中对齐 builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;//水平居中对齐 - builder.CellFormat.Width = 140; + builder.CellFormat.Width = 40; builder.Write(string.IsNullOrEmpty(detail.Unqualified) ? "" : detail.Unqualified); //问题类型 builder.InsertCell(); @@ -483,7 +534,7 @@ namespace FineUIPro.Web.HSSE.Check builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.First; builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;//垂直居中对齐 builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;//水平居中对齐 - builder.CellFormat.Width = 60; + builder.CellFormat.Width = 100; builder.Write(string.IsNullOrEmpty(detail.CheckItemName)?"": detail.CheckItemName); //处理结果 @@ -501,7 +552,7 @@ namespace FineUIPro.Web.HSSE.Check builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;//垂直居中对齐 builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;//水平居中对齐 builder.CellFormat.Width = 50; - builder.Write(string.IsNullOrEmpty(detail.HiddenHazardTypeName) ? "" : detail.HiddenHazardTypeName); + builder.Write(string.IsNullOrEmpty(detail.RiskLevel) ? "" : detail.RiskLevel); builder.EndRow(); num++; } @@ -527,5 +578,82 @@ namespace FineUIPro.Web.HSSE.Check File.Delete(pdfUrl); } #endregion + + #region 闭环 + /// + /// 闭环按钮 + /// + /// + /// + protected void btnMenuClose_Click(object sender, EventArgs e) + { + if (Grid1.SelectedRowIndexArray.Length == 0) + { + Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning); + return; + } + string CheckSpecialId = Grid1.SelectedRowID.Split(',')[0]; + var checkSpecial = BLL.Check_CheckSpecialService.GetCheckSpecialByCheckSpecialId(CheckSpecialId); + if (checkSpecial != null) + { + var details = BLL.Check_CheckSpecialDetailService.GetCheckSpecialDetailByCheckSpecialId(CheckSpecialId); + foreach (var item in details) + { + item.CompleteStatus = true; + BLL.Check_CheckSpecialDetailService.UpdateCheckSpecialDetail(item); + } + checkSpecial.States = Const.State_2; + Check_CheckSpecialService.UpdateCheckSpecial(checkSpecial); + var hazardRegisters = from x in Funs.DB.HSSE_Hazard_HazardRegister where x.CheckSpecialId == CheckSpecialId select x; + foreach (var item in hazardRegisters) + { + item.States = "3"; + BLL.HSSE_Hazard_HazardRegisterService.UpdateHazardRegister(item); + } + BindGrid(); + ShowNotify("闭环成功!", MessageBoxIcon.Success); + } + } + #endregion + + + protected string ConvertState(object state) + { + if (state != null) + { + var checkSpecial = Funs.DB.Check_CheckSpecial.Where(y => y.CheckSpecialId == state.ToString()).FirstOrDefault(); + if (checkSpecial != null) + { + if (checkSpecial.States == "2") + { + return "已完成"; + } + else if (checkSpecial.States == "1") + { + var details = Funs.DB.Check_CheckSpecialDetail.Where(x => x.CheckSpecialId == state.ToString()).ToList(); + if (details != null && details.Count > 0) + { + string res = "待整改"; + foreach (var d in details) + { + if (d.CompleteStatus.HasValue && d.CompleteStatus.Value) + { + res = "部分待整改"; + } + } + return res; + } + } + else + { + return "待提交"; + } + + + + } + } + return ""; + } } } \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecial.aspx.designer.cs b/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecial.aspx.designer.cs index c8899bfd..7b198a2c 100644 --- a/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecial.aspx.designer.cs +++ b/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecial.aspx.designer.cs @@ -7,11 +7,13 @@ // //------------------------------------------------------------------------------ -namespace FineUIPro.Web.HSSE.Check { - - - public partial class CheckSpecial { - +namespace FineUIPro.Web.HSSE.Check +{ + + + public partial class CheckSpecial + { + /// /// form1 控件。 /// @@ -20,7 +22,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::System.Web.UI.HtmlControls.HtmlForm form1; - + /// /// PageManager1 控件。 /// @@ -29,7 +31,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.PageManager PageManager1; - + /// /// Panel1 控件。 /// @@ -38,7 +40,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.Panel Panel1; - + /// /// Grid1 控件。 /// @@ -47,7 +49,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.Grid Grid1; - + /// /// Toolbar2 控件。 /// @@ -56,7 +58,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.Toolbar Toolbar2; - + /// /// rbStates 控件。 /// @@ -65,16 +67,16 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.RadioButtonList rbStates; - + /// - /// rbType 控件。 + /// drpType 控件。 /// /// /// 自动生成的字段。 /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// - protected global::FineUIPro.RadioButtonList rbType; - + protected global::FineUIPro.DropDownList drpType; + /// /// drpSupCheckItemSet 控件。 /// @@ -83,7 +85,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.DropDownList drpSupCheckItemSet; - + /// /// txtStartTime 控件。 /// @@ -92,7 +94,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.DatePicker txtStartTime; - + /// /// txtEndTime 控件。 /// @@ -101,7 +103,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.DatePicker txtEndTime; - + /// /// ToolbarFill1 控件。 /// @@ -110,7 +112,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.ToolbarFill ToolbarFill1; - + /// /// btnNew 控件。 /// @@ -119,7 +121,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.Button btnNew; - + /// /// btnOut 控件。 /// @@ -128,16 +130,25 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.Button btnOut; - + /// - /// lblNumber 控件。 + /// labNumber 控件。 /// /// /// 自动生成的字段。 /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// - protected global::System.Web.UI.WebControls.Label lblNumber; - + protected global::System.Web.UI.WebControls.Label labNumber; + + /// + /// labStatesName 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label labStatesName; + /// /// ToolbarSeparator1 控件。 /// @@ -146,7 +157,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1; - + /// /// ToolbarText1 控件。 /// @@ -155,7 +166,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.ToolbarText ToolbarText1; - + /// /// ddlPageSize 控件。 /// @@ -164,7 +175,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.DropDownList ddlPageSize; - + /// /// Window1 控件。 /// @@ -173,7 +184,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.Window Window1; - + /// /// Menu1 控件。 /// @@ -182,7 +193,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.Menu Menu1; - + /// /// btnMenuModify 控件。 /// @@ -191,7 +202,16 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.MenuButton btnMenuModify; - + + /// + /// btnMenuClose 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.MenuButton btnMenuClose; + /// /// btnPrinter 控件。 /// @@ -200,7 +220,7 @@ namespace FineUIPro.Web.HSSE.Check { /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::FineUIPro.MenuButton btnPrinter; - + /// /// btnMenuDel 控件。 /// diff --git a/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecialEdit.aspx b/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecialEdit.aspx index b3bdbebb..3a03abc2 100644 --- a/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecialEdit.aspx +++ b/SGGL/FineUIPro.Web/HSSE/Check/CheckSpecialEdit.aspx @@ -1,23 +1,25 @@ <%@ Page Language="C#" AutoEventWireup="true" ValidateRequest="false" CodeBehind="CheckSpecialEdit.aspx.cs" Inherits="FineUIPro.Web.HSSE.Check.CheckSpecialEdit" %> - <%@ Register Src="~/Controls/FlowOperateControl.ascx" TagName="FlowOperateControl" TagPrefix="uc1" %> 编辑专项检查 - -
diff --git a/SGGL/FineUIPro.Web/HSSE/HiddenInspection/HiddenRectificationList.aspx.cs b/SGGL/FineUIPro.Web/HSSE/HiddenInspection/HiddenRectificationList.aspx.cs index ecd65cbb..a371b3c5 100644 --- a/SGGL/FineUIPro.Web/HSSE/HiddenInspection/HiddenRectificationList.aspx.cs +++ b/SGGL/FineUIPro.Web/HSSE/HiddenInspection/HiddenRectificationList.aspx.cs @@ -107,8 +107,20 @@ namespace FineUIPro.Web.HSSE.HiddenInspection } if (!string.IsNullOrEmpty(this.dpRiskLevel.SelectedValue.Trim())) { - strSql += " AND Risk_Level = @Risk_Level"; - listStr.Add(new SqlParameter("@Risk_Level", this.dpRiskLevel.SelectedText) ); + if (this.dpRiskLevel.SelectedText == "重大") + { + strSql += " AND Risk_Level in('重大','3','高') "; + } + else if (this.dpRiskLevel.SelectedText == "较大") + { + strSql += " AND Risk_Level in('较大','2','较高') "; + } + else if (this.dpRiskLevel.SelectedText == "一般") + { + strSql += " AND Risk_Level in('一般','1','低') "; + } + + } if (!string.IsNullOrEmpty(this.drpType.SelectedValue.Trim())) { @@ -163,6 +175,32 @@ namespace FineUIPro.Web.HSSE.HiddenInspection Grid1.DataSource = table; Grid1.DataBind(); + + + for (int i = 0; i < Grid1.Rows.Count; i++) + { + string HazardRegisterId = Grid1.Rows[i].DataKeys[0].ToString(); + Model.View_Hazard_HazardRegister registration = (from x in Funs.DB.View_Hazard_HazardRegister where x.HazardRegisterId == HazardRegisterId select x).FirstOrDefault(); + + if (registration != null) + { + if (registration.Risk_Level == "一般" || registration.Risk_Level == "1" || registration.Risk_Level == "低") + { + Grid1.Rows[i].RowCssClass = "Blue"; + }else if (registration.Risk_Level == "较大" || registration.Risk_Level == "2" || registration.Risk_Level == "较高") + { + Grid1.Rows[i].RowCssClass = "Yellow"; + } + else if (registration.Risk_Level == "重大" || registration.Risk_Level == "3") + { + Grid1.Rows[i].RowCssClass = "Red"; + } + } + } + + + + } #endregion diff --git a/SGGL/FineUIPro.Web/Person/EduTrain/PlanEdit.aspx.cs b/SGGL/FineUIPro.Web/Person/EduTrain/PlanEdit.aspx.cs index 940f91bb..3af5fbaf 100644 --- a/SGGL/FineUIPro.Web/Person/EduTrain/PlanEdit.aspx.cs +++ b/SGGL/FineUIPro.Web/Person/EduTrain/PlanEdit.aspx.cs @@ -90,7 +90,7 @@ namespace FineUIPro.Web.Person.EduTrain { dpCompanyTraining.SelectedValueArray = planItem; } - var getDataList = APIPersonService.getTrainingPersonListByTrainTypeId(this.CurrUser.LoginProjectId, trainingPlan.UnitIds, trainingPlan.WorkPostId,"", trainingPlan.TrainTypeId).OrderBy(x => x.UnitName).ThenBy(x => x.ProjectName).ToList(); + var getDataList = APIPersonService.getTrainingPersonListByTrainTypeId(this.CurrUser.LoginProjectId, trainingPlan.UnitIds, trainingPlan.WorkPostId,"", trainingPlan.TrainTypeId,"","").OrderBy(x => x.UnitName).ThenBy(x => x.ProjectName).ToList(); dpSysUser.DataTextField = "PersonName"; dpSysUser.DataValueField = "PersonId"; dpSysUser.DataSource = getDataList; @@ -431,7 +431,7 @@ namespace FineUIPro.Web.Person.EduTrain dpSysUser.Items.Clear(); string unitIds=string.Join(",",dpUnit.SelectedValue); string workPostIds = string.Join(",", dpDepart.SelectedValue); - var getDataList = APIPersonService.getTrainingPersonListByTrainTypeId(this.CurrUser.LoginProjectId, unitIds, workPostIds,"", drpTrainType.SelectedValue).OrderBy(x => x.UnitName).ThenBy(x => x.ProjectName).ToList(); + var getDataList = APIPersonService.getTrainingPersonListByTrainTypeId(this.CurrUser.LoginProjectId, unitIds, workPostIds,"", drpTrainType.SelectedValue,"","").OrderBy(x => x.UnitName).ThenBy(x => x.ProjectName).ToList(); dpSysUser.DataTextField = "PersonName"; dpSysUser.DataValueField = "PersonId"; dpSysUser.DataSource = getDataList; diff --git a/SGGL/FineUIPro.Web/index.aspx b/SGGL/FineUIPro.Web/index.aspx index 9773e4f5..96ba1898 100644 --- a/SGGL/FineUIPro.Web/index.aspx +++ b/SGGL/FineUIPro.Web/index.aspx @@ -670,12 +670,12 @@ // refreshWhenExist: 添加选项卡时,如果选项卡已经存在,是否刷新内部IFrame // refreshWhenTabChange: 切换选项卡时,是否刷新内部IFrame F.initTreeTabStrip(mainMenu, mainTabStrip, true, false, false); - var themeTitle = F.cookie('Theme_Pro_Title'); - var themeName = F.cookie('Theme_Pro'); - if (themeTitle) { - F.removeCookie('Theme_Pro_Title'); - //notify('主题更改为:' + themeTitle + '(' + themeName + ')'); - } + //var themeTitle = F.cookie('Theme_Pro_Title'); + //var themeName = F.cookie('Theme_Pro'); + //if (themeTitle) { + // F.removeCookie('Theme_Pro_Title'); + // //notify('主题更改为:' + themeTitle + '(' + themeName + ')'); + //} }); diff --git a/SGGL/FineUIPro.Web/indexProject.aspx b/SGGL/FineUIPro.Web/indexProject.aspx index 8658c983..a34bdd36 100644 --- a/SGGL/FineUIPro.Web/indexProject.aspx +++ b/SGGL/FineUIPro.Web/indexProject.aspx @@ -762,12 +762,12 @@ // refreshWhenExist: 添加选项卡时,如果选项卡已经存在,是否刷新内部IFrame // refreshWhenTabChange: 切换选项卡时,是否刷新内部IFrame F.initTreeTabStrip(mainMenu, mainTabStrip, true, false, false); - var themeTitle = F.cookie('Theme_Pro_Title'); - var themeName = F.cookie('Theme_Pro'); - if (themeTitle) { - F.removeCookie('Theme_Pro_Title'); - //notify('主题更改为:' + themeTitle + '(' + themeName + ')'); - } + //var themeTitle = F.cookie('Theme_Pro_Title'); + //var themeName = F.cookie('Theme_Pro'); + //if (themeTitle) { + // F.removeCookie('Theme_Pro_Title'); + // //notify('主题更改为:' + themeTitle + '(' + themeName + ')'); + //} }); diff --git a/SGGL/FineUIPro.Web/res/qiaming.png b/SGGL/FineUIPro.Web/res/qiaming.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcc1a33255febc7abdc0fef4fc5bd5158260590 GIT binary patch literal 42506 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 /// 是否启用 /// - public bool IsUsed { get; set; } + public string IsUsed { get; set; } /// /// 是否启用 /// diff --git a/SGGL/Model/APIItem/HSSE/TestRecordItem.cs b/SGGL/Model/APIItem/HSSE/TestRecordItem.cs index 2b4e16bd..16a4a1b8 100644 --- a/SGGL/Model/APIItem/HSSE/TestRecordItem.cs +++ b/SGGL/Model/APIItem/HSSE/TestRecordItem.cs @@ -247,5 +247,19 @@ namespace Model get; set; } + /// + /// 签名 + /// + public string Signature + { + get; + set; + } + public string Fingerprint + { + get; + set; + } + } } diff --git a/SGGL/Model/Model.cs b/SGGL/Model/Model.cs index e63a3170..22801700 100644 --- a/SGGL/Model/Model.cs +++ b/SGGL/Model/Model.cs @@ -360605,6 +360605,10 @@ namespace Model private int _Duration; + private string _Signature; + + private string _Fingerprint; + private EntityRef _Training_TestPlan; private EntitySet _Training_TestRecordItem; @@ -360635,6 +360639,10 @@ namespace Model partial void OnIsFiledChanged(); partial void OnDurationChanging(int value); partial void OnDurationChanged(); + partial void OnSignatureChanging(string value); + partial void OnSignatureChanged(); + partial void OnFingerprintChanging(string value); + partial void OnFingerprintChanged(); #endregion public Training_TestRecord() @@ -360868,6 +360876,46 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Signature", DbType="NVarChar(1000)")] + public string Signature + { + get + { + return this._Signature; + } + set + { + if ((this._Signature != value)) + { + this.OnSignatureChanging(value); + this.SendPropertyChanging(); + this._Signature = value; + this.SendPropertyChanged("Signature"); + this.OnSignatureChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Fingerprint", DbType="NVarChar(1000)")] + public string Fingerprint + { + get + { + return this._Fingerprint; + } + set + { + if ((this._Fingerprint != value)) + { + this.OnFingerprintChanging(value); + this.SendPropertyChanging(); + this._Fingerprint = value; + this.SendPropertyChanged("Fingerprint"); + this.OnFingerprintChanged(); + } + } + } + [global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_Training_TestRecord_Training_TestPlan", Storage="_Training_TestPlan", ThisKey="TestPlanId", OtherKey="TestPlanId", IsForeignKey=true)] public Training_TestPlan Training_TestPlan { diff --git a/SGGL/WebAPI/Controllers/DoorProject/DoorServiceController.cs b/SGGL/WebAPI/Controllers/DoorProject/DoorServiceController.cs index d8e27223..b0cdf281 100644 --- a/SGGL/WebAPI/Controllers/DoorProject/DoorServiceController.cs +++ b/SGGL/WebAPI/Controllers/DoorProject/DoorServiceController.cs @@ -174,11 +174,14 @@ namespace WebAPI.Controllers OutResult = person.OutResult, Birthday = person.Birthday, Telephone = person.Telephone, - IsUsed = (person.IsUsed == false ? 0 : 1), InTime = Funs.GetNewDateTimeOrNow(person.InTime), Password = BLL.PersonService.GetPersonPassWord(person.IdentityCard), Isprint = "0", }; + if (!string.IsNullOrEmpty(person.IsUsed)) + { + newPerson.IsUsed = int.Parse(person.IsUsed); + } if (!string.IsNullOrEmpty(person.TeamGroupName) && !string.IsNullOrEmpty(newPerson.UnitId)) { var getTeamGroup = TeamGroupService.getTeamGroupByTeamGroupName(getProject.ProjectId, newPerson.UnitId, person.TeamGroupName); diff --git a/SGGL/WebAPI/Controllers/HSSE/TestRecordController.cs b/SGGL/WebAPI/Controllers/HSSE/TestRecordController.cs index a07fbb43..d97c3654 100644 --- a/SGGL/WebAPI/Controllers/HSSE/TestRecordController.cs +++ b/SGGL/WebAPI/Controllers/HSSE/TestRecordController.cs @@ -1,5 +1,8 @@ using System; using System.Collections.Generic; +using System.Configuration; +using System.Drawing; +using System.IO; using System.Linq; using System.Net; using System.Net.Http; @@ -350,7 +353,7 @@ namespace WebAPI.Controllers /// 交卷 /// /// 试卷ID - public Model.ResponeData getSubmitTestRecordByTestRecordId(string testRecordId) + public Model.ResponeData getSubmitTestRecordByTestRecordId(string testRecordId,string Signature) { var responeData = new Model.ResponeData(); try @@ -364,6 +367,7 @@ namespace WebAPI.Controllers { if (getTestRecord.TestStartTime.HasValue) { + getTestRecord.Signature = Signature; getTestRecord.TestEndTime = DateTime.Now; var getRItem = db.Training_TestRecordItem.Where(x => x.TestRecordId == testRecordId); if (getRItem.Count() > 0) @@ -410,5 +414,104 @@ namespace WebAPI.Controllers return responeData; } #endregion + + #region 交卷 + /// + /// 交卷 + /// + public Model.ResponeData SaveSubmitTestRecordByTestRecordId(Model.TestRecordItem testRecordItem) + { + string testRecordId = testRecordItem.TestRecordId; + string Signature = testRecordItem.Signature; + string Fingerprint = testRecordItem.Fingerprint; + var responeData = new Model.ResponeData(); + try + { + using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) + { + var getTestRecord = db.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecordId); + if (getTestRecord != null) + { + string rootUrl = ConfigurationManager.AppSettings["localRoot"]; + string SignatureUrl = @"FileUpload\TestRecord\" + getTestRecord.TestRecordId + "~签名" + ".png"; + string FingerprintUrl = @"FileUpload\TestRecord\" + getTestRecord.TestRecordId + "~指纹" + ".png"; + string Signaturefilename = rootUrl + SignatureUrl; + string Fingerprintfilename = rootUrl + FingerprintUrl; + + if (!string.IsNullOrEmpty(Signature)) + { + Signature = Signature.Replace("data:image/svg+xml;base64,", "").Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/jpeg;base64,", "");//将base64头部信息替换 + byte[] bytes = Convert.FromBase64String(Signature); + + MemoryStream memStream = new MemoryStream(bytes); + Image mImage = Image.FromStream(memStream); + Bitmap bp = new Bitmap(mImage); + MemoryStream ms = new MemoryStream(); + bp.Save(Signaturefilename, System.Drawing.Imaging.ImageFormat.Png); + // System.IO.File.WriteAllBytes(Signaturefilename, Convert.FromBase64String(Signature)); + + getTestRecord.Signature = Signaturefilename.Replace(rootUrl, ""); + + } + if (!string.IsNullOrEmpty(Fingerprint)) + { + Fingerprint = Fingerprint.Replace("data:image/svg+xml;base64,", "").Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/jpeg;base64,", "");//将base64头部信息替换 + + byte[] bytes = Convert.FromBase64String(Fingerprint); + + MemoryStream memStream = new MemoryStream(bytes); + Image mImage = Image.FromStream(memStream); + Bitmap bp = new Bitmap(mImage); + MemoryStream ms = new MemoryStream(); + bp.Save(Fingerprintfilename, System.Drawing.Imaging.ImageFormat.Png); + + getTestRecord.Fingerprint = Fingerprintfilename.Replace(rootUrl, ""); + + } + + APITestRecordService.updateTestRecord(getTestRecord); + string returnTestRecordId = string.Empty; + ////考试分数 + decimal getTestScores = APITestRecordService.getSubmitTestRecord(getTestRecord); + ////及格分数 + int getPassScores = 80; + var testRule = db.Sys_TestRule.FirstOrDefault(); + if (testRule != null) + { + getPassScores = testRule.PassingScore; + } + 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() + "】。"; + } + + responeData.data = new { getTestScores, getPassScores, returnTestRecordId }; + } + } + } + catch (Exception ex) + { + responeData.code = 0; + responeData.message = ex.Message; + } + return responeData; + } + #endregion } } diff --git a/SGGL/WebAPI/Controllers/PersonController.cs b/SGGL/WebAPI/Controllers/PersonController.cs index 1ea7b715..e93df0bb 100644 --- a/SGGL/WebAPI/Controllers/PersonController.cs +++ b/SGGL/WebAPI/Controllers/PersonController.cs @@ -349,7 +349,7 @@ namespace WebAPI.Controllers /// 培训类型ID(可为空) /// 分页 /// - public Model.ResponeData getTrainingPersonListByTrainTypeId(string projectId, string unitIds, string workPostIds, string departIds, string trainTypeId, int pageIndex) + public Model.ResponeData getTrainingPersonListByTrainTypeId(string projectId, string unitIds, string workPostIds, string departIds, string trainTypeId, int pageIndex,string strParam,string InTime) { var responeData = new Model.ResponeData(); try @@ -366,7 +366,7 @@ namespace WebAPI.Controllers } else { - var getDataList = APIPersonService.getTrainingPersonListByTrainTypeId(projectId, unitIds, workPostIds, departIds, trainTypeId).OrderBy(x => x.UnitName).ThenBy(x => x.ProjectName).ToList(); + var getDataList = APIPersonService.getTrainingPersonListByTrainTypeId(projectId, unitIds, workPostIds, departIds, trainTypeId, InTime, strParam).OrderBy(x => x.UnitName).ThenBy(x => x.ProjectName).ToList(); int pageCount = getDataList.Count; if (pageCount > 0 && pageIndex > 0)
{0}{0}{0}{0}