diff --git a/DataBase/版本日志/SUBQHSE_V2026-03-26-geh.sql b/DataBase/版本日志/SUBQHSE_V2026-03-26-geh.sql new file mode 100644 index 0000000..4400b36 --- /dev/null +++ b/DataBase/版本日志/SUBQHSE_V2026-03-26-geh.sql @@ -0,0 +1,35 @@ +-- 自动获取总包检查数据 +alter table Base_Project add IsAutoFetch bit NULL; + + + +--定制版放到公司级的【报表管理/数据管理】下的【项目数据分析】,父级菜单id和菜单类型根据实际情况进行替换 +UPDATE [dbo].[Sys_Menu] SET [MenuName] = N'项目数据分析', [Icon] = NULL, [Url] = '', [SortIndex] = 125, [SuperMenu] = N'0', [MenuType] = N'Menu_SJTB', [IsOffice] = '1', [IsEnd] = '0', [IsUsed] = '1' WHERE CONVERT(NVARCHAR(MAX), [MenuId]) = N'96763EC0-6AFF-4FA2-BFA1-63CCF1FF65A9'; + + +INSERT INTO [dbo].[Sys_Menu] ( [MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed] ) +VALUES + ( N'A9E94BE9-6F53-4A41-9A65-250F09D9E449', N'安全巡检统计分析', NULL, N'HSSE/HiddenInspection/CheckStatisticsAnalysis.aspx?Types=1', 50, N'96763EC0-6AFF-4FA2-BFA1-63CCF1FF65A9', N'Menu_SJTB', '0', '1', '1' ); + + GO + + +INSERT INTO [dbo].[Sys_Menu] ( [MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed] ) +VALUES + ( N'28848506-234F-4D21-8E79-A0F24F2B2DDA', N'质量巡检统计分析', NULL, N'HSSE/HiddenInspection/CheckStatisticsAnalysis.aspx?Types=2', 60, N'96763EC0-6AFF-4FA2-BFA1-63CCF1FF65A9', N'Menu_SJTB', '0', '1', '1' ); + GO + + + + + +--加颁奖年份字段 +alter table QCManage_QCGroupRegistration add AwardYear datetime +go + +【注意】 +-----根据实际情况吧原本填写在过程字段(Process)上的年份数据移到新的新的字段(AwardYear)上 +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'颁奖年份' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'QCManage_QCGroupRegistration', @level2type=N'COLUMN',@level2name=N'AwardYear' +GO +--把原来的数据替换到新的字段上 +update QCManage_QCGroupRegistration set AwardYear = Process where AwardYear is null and LEN(Process) = 4 \ No newline at end of file diff --git a/SUBQHSE/BLL/BaseInfo/WorkPostService.cs b/SUBQHSE/BLL/BaseInfo/WorkPostService.cs index 6554bdc..b39afa3 100644 --- a/SUBQHSE/BLL/BaseInfo/WorkPostService.cs +++ b/SUBQHSE/BLL/BaseInfo/WorkPostService.cs @@ -40,6 +40,7 @@ namespace BLL PostType = workPost.PostType, IsHsse = workPost.IsHsse, IsCQMS = workPost.IsCQMS, + IsCQMSCheck = workPost.IsCQMSCheck, CNCodes = workPost.CNCodes, Remark = workPost.Remark }; @@ -94,6 +95,7 @@ namespace BLL newWorkPost.PostType = workPost.PostType; newWorkPost.IsHsse = workPost.IsHsse; newWorkPost.IsCQMS = workPost.IsCQMS; + newWorkPost.IsCQMSCheck = workPost.IsCQMSCheck; newWorkPost.CNCodes = workPost.CNCodes; newWorkPost.Remark = workPost.Remark; db.SubmitChanges(); diff --git a/SUBQHSE/BLL/CQMS/QualityActivity/QCManage/QCManage_QCGroupRegistrationService.cs b/SUBQHSE/BLL/CQMS/QualityActivity/QCManage/QCManage_QCGroupRegistrationService.cs index 84ac4cc..0d7d6e7 100644 --- a/SUBQHSE/BLL/CQMS/QualityActivity/QCManage/QCManage_QCGroupRegistrationService.cs +++ b/SUBQHSE/BLL/CQMS/QualityActivity/QCManage/QCManage_QCGroupRegistrationService.cs @@ -37,6 +37,7 @@ namespace BLL newQCGroupRegistration.AwardType = QCGroupRegistration.AwardType; newQCGroupRegistration.AwardLevel = QCGroupRegistration.AwardLevel; newQCGroupRegistration.AwardingUnit = QCGroupRegistration.AwardingUnit; + newQCGroupRegistration.AwardYear = QCGroupRegistration.AwardYear; db.QCManage_QCGroupRegistration.InsertOnSubmit(newQCGroupRegistration); db.SubmitChanges(); } @@ -64,6 +65,7 @@ namespace BLL newQCGroupRegistration.AwardingUnit = QCGroupRegistration.AwardingUnit; newQCGroupRegistration.IsUpdate = null; newQCGroupRegistration.AwardType = QCGroupRegistration.AwardType; + newQCGroupRegistration.AwardYear = QCGroupRegistration.AwardYear; db.SubmitChanges(); } } diff --git a/SUBQHSE/BLL/DataShare/APIDataShareSyncService.cs b/SUBQHSE/BLL/DataShare/APIDataShareSyncService.cs index bbd5be4..def8716 100644 --- a/SUBQHSE/BLL/DataShare/APIDataShareSyncService.cs +++ b/SUBQHSE/BLL/DataShare/APIDataShareSyncService.cs @@ -348,7 +348,7 @@ namespace BLL /// /// /// - public static string getWorkPostId(string WorkPostName, string PostType, string IsHsse, string IsCQMS) + public static string getWorkPostId(string WorkPostName, string PostType, string IsHsse, string IsCQMS, string IsCQMSCheck) { string WorkPostId = null; if (!string.IsNullOrEmpty(WorkPostName)) @@ -363,6 +363,7 @@ namespace BLL PostType = PostType, IsHsse = Convert.ToBoolean(IsHsse), IsCQMS = Convert.ToBoolean(IsCQMS), + IsCQMSCheck = Convert.ToBoolean(IsCQMSCheck), Remark = "导入" }; WorkPostService.AddWorkPost(newWorkPost); diff --git a/SUBQHSE/BLL/DataShare/HSSE/APIPersonSyncService.cs b/SUBQHSE/BLL/DataShare/HSSE/APIPersonSyncService.cs index 4af4b8e..74533be 100644 --- a/SUBQHSE/BLL/DataShare/HSSE/APIPersonSyncService.cs +++ b/SUBQHSE/BLL/DataShare/HSSE/APIPersonSyncService.cs @@ -134,6 +134,7 @@ namespace BLL PostType = wp.PostType, //岗位诶类型 IsHsse = wp.IsHsse, //岗位是否是安管人员 IsCQMS = wp.IsCQMS, //岗位是否是质量管理 + IsCQMSCheck = wp.IsCQMSCheck, TeamGroupName = tg.TeamGroupName, WorkAreaName = APIDataShareSyncService.GetWorkAreaNames(x.WorkAreaId, projectId) }).ToList(); @@ -373,7 +374,7 @@ namespace BLL TeamGroupId = APIDataShareSyncService.GetTeamGroupId(item.TeamGroupName, projectId, unitId), WorkAreaId = APIDataShareSyncService.getWorkAreaId(item.WorkAreaName, projectId), WorkPostId = APIDataShareSyncService.getWorkPostId(item.WorkPostName, item.PostType, - item.IsHsse.ToString(), item.IsCQMS.ToString()), + item.IsHsse.ToString(), item.IsCQMS.ToString(),item.IsCQMSCheck.ToString()), InTime = item.InTime, OutTime = item.OutTime, OutResult = item.OutResult, @@ -432,7 +433,7 @@ namespace BLL model.UnitId = unitId; model.TeamGroupId = APIDataShareSyncService.GetTeamGroupId(item.TeamGroupName, projectId, unitId); model.WorkAreaId = APIDataShareSyncService.getWorkAreaId(item.WorkAreaName, projectId); - model.WorkPostId = APIDataShareSyncService.getWorkPostId(item.WorkPostName, item.PostType, item.IsHsse.ToString(), item.IsCQMS.ToString()); + model.WorkPostId = APIDataShareSyncService.getWorkPostId(item.WorkPostName, item.PostType, item.IsHsse.ToString(), item.IsCQMS.ToString(),item.IsCQMSCheck.ToString()); model.InTime = item.InTime; model.OutTime = item.OutTime; model.OutResult = item.OutResult; diff --git a/SUBQHSE/BLL/ZHGL/DataSync/CQMSDataService.cs b/SUBQHSE/BLL/ZHGL/DataSync/CQMSDataService.cs index 2e03aaf..b5abd22 100644 --- a/SUBQHSE/BLL/ZHGL/DataSync/CQMSDataService.cs +++ b/SUBQHSE/BLL/ZHGL/DataSync/CQMSDataService.cs @@ -644,8 +644,8 @@ namespace BLL MaterialInspectionNum = inspectionEquipmentList.Count(), MaterialInspectionQualifiedNum = inspectionEquipmentList.Where(x => x.SamplingResult == "1").Count(), - UseNum = useNum.Count(), - OKNum = okNum.Count(), + UseNum = useNum.Sum(x => x.UnitsCount ?? 1), + OKNum = okNum.Sum(x => x.UnitsCount ?? 1), SingleProjectNum = singleProjectNum.Count(), UnitProjectNum = unitProjectNum.Count(), SubProjectNum = subProjectNum.Count(), @@ -724,8 +724,8 @@ namespace BLL MaterialInspectionNum = inspectionEquipmentList.Count(x => x.ProjectId == projectid), MaterialInspectionQualifiedNum = inspectionEquipmentList .Where(x => x.SamplingResult == "1" && x.ProjectId == projectid).Count(), - UseNum = useNum.Count(x => x.ProjectId == projectid), - OKNum = okNum.Count(x => x.ProjectId == projectid), + UseNum = useNum.Where(x => x.ProjectId == projectid).Sum(x => x.UnitsCount ?? 1), + OKNum = okNum.Where(x => x.ProjectId == projectid).Sum(x => x.UnitsCount ?? 1), SingleProjectNum = singleProjectNum.Count(x => x.ProjectId == projectid), UnitProjectNum = unitProjectNum.Count(x => x.ProjectId == projectid), SubProjectNum = subProjectNum.Count(x => x.ProjectId == projectid), diff --git a/SUBQHSE/BLL/ZHGL/DataSync/ProjectDataSync/Project_CQMSDataService.cs b/SUBQHSE/BLL/ZHGL/DataSync/ProjectDataSync/Project_CQMSDataService.cs index 5446044..42f8cac 100644 --- a/SUBQHSE/BLL/ZHGL/DataSync/ProjectDataSync/Project_CQMSDataService.cs +++ b/SUBQHSE/BLL/ZHGL/DataSync/ProjectDataSync/Project_CQMSDataService.cs @@ -1415,6 +1415,7 @@ namespace BLL AwardType = x.AwardType, AwardLevel = x.AwardLevel, AwardingUnit = x.AwardingUnit, + AwardYear = x.AwardYear, }).Take(pushNum).ToList(); Model.ReturnData responeData = new Model.ReturnData(); if (items.Count() > 0) @@ -1484,6 +1485,7 @@ namespace BLL AwardName = x.AwardName, AwardLevel = x.AwardLevel, AwardingUnit = x.AwardingUnit, + AwardYear = x.AwardYear, }).ToList(); if (items.Count() > 0) diff --git a/SUBQHSE/FineUIPro.Web/BaseInfo/WorkPost.aspx b/SUBQHSE/FineUIPro.Web/BaseInfo/WorkPost.aspx index 343bd6e..4b2a223 100644 --- a/SUBQHSE/FineUIPro.Web/BaseInfo/WorkPost.aspx +++ b/SUBQHSE/FineUIPro.Web/BaseInfo/WorkPost.aspx @@ -4,31 +4,29 @@ 岗位信息 - + -
- - - + + + + - + EnableColumnLines="true" ShowBorder="true" AllowPaging="true" IsDatabasePaging="true" + runat="server" Width="960px" DataKeyNames="WorkPostId" DataIDField="WorkPostId" AllowSorting="true" + SortField="PostType,WorkPostCode" SortDirection="ASC" + OnPageIndexChange="Grid1_PageIndexChange" AllowFilters="true" OnFilterChange="Grid1_FilterChange" + EnableTextSelection="True"> + - - - - + + + + - + @@ -37,12 +35,12 @@ + TextAlign="Center"/> + HeaderText="编号" HeaderTextAlign="Center" TextAlign="Left" ExpandUnusedSpace="true"> - + @@ -50,31 +48,35 @@ + RendererFunction="renderIsHsse" HeaderText="安管人员" HeaderTextAlign="Center" + TextAlign="Center"> + RendererFunction="renderIsHsse" HeaderText="质量管理" HeaderTextAlign="Center" + TextAlign="Center"> - - - - - + + + + + + + + HeaderText="职责" HeaderTextAlign="Center" TextAlign="Center"> - - + + @@ -82,46 +84,48 @@ + OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged"> + LabelWidth="80px" BodyPadding="5px" Width="350px"> + ShowRedStar="true" LabelWidth="80px"> + MaxLength="100" LabelAlign="right" AutoPostBack="true" OnTextChanged="TextBox_TextChanged" + LabelWidth="80px"> + ShowRedStar="true" LabelWidth="80px"> + + - - + - - + + + + + + LabelWidth="80px"> @@ -136,39 +140,39 @@ - - - - - - - - - - - + \ No newline at end of file diff --git a/SUBQHSE/FineUIPro.Web/BaseInfo/WorkPost.aspx.cs b/SUBQHSE/FineUIPro.Web/BaseInfo/WorkPost.aspx.cs index 40b9dea..e15b32e 100644 --- a/SUBQHSE/FineUIPro.Web/BaseInfo/WorkPost.aspx.cs +++ b/SUBQHSE/FineUIPro.Web/BaseInfo/WorkPost.aspx.cs @@ -5,6 +5,7 @@ using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web.UI.WebControls; +using static System.Windows.Forms.VisualStyles.VisualStyleElement; namespace FineUIPro.Web.BaseInfo @@ -38,14 +39,14 @@ namespace FineUIPro.Web.BaseInfo /// private void BindGrid() { - string strSql = @"SELECT wp.WorkPostId,wp.WorkPostName, wp.WorkPostCode, wp.Remark,wp.PostType,wp.IsHsse,wp.IsCQMS,wp.CNCodes, + string strSql = @"SELECT wp.WorkPostId,wp.WorkPostName, wp.WorkPostCode, wp.Remark,wp.PostType,wp.IsHsse,wp.IsCQMS,wp.IsCQMSCheck,wp.CNCodes, case wp.IsHsse when 1 then '是' else '否' end as IsHsseStr,const.ConstText as PostTypeName FROM dbo.Base_WorkPost AS wp LEFT JOIN Sys_Const AS const ON const.ConstValue = wp.PostType and const.GroupId = '" + ConstValue.Group_PostType + "' "; if (!string.IsNullOrEmpty(this.txtKey.Text.Trim())) { - strSql += "where wp.WorkPostName like '%"+this.txtKey.Text.Trim()+"%' "; + strSql += "where wp.WorkPostName like '%" + this.txtKey.Text.Trim() + "%' "; } List listStr = new List(); //strSql += " AND HazardList.ProjectId = @ProjectId"; @@ -134,8 +135,8 @@ namespace FineUIPro.Web.BaseInfo Response.Write(GetGridTableHtml(Grid1)); Response.End(); } - - + + /// /// 右键删除事件 /// @@ -191,6 +192,10 @@ namespace FineUIPro.Web.BaseInfo { this.ckbIsCQMS.Checked = true; } + if (workPost.IsCQMSCheck == true) + { + this.ckbIsCQMSCheck.Checked = true; + } if (!string.IsNullOrEmpty(workPost.CNCodes)) { txtCNCodes.Values = workPost.CNCodes.Split(','); @@ -205,10 +210,21 @@ namespace FineUIPro.Web.BaseInfo { BindGrid(); } - protected void btnQuery_Click(object sender, EventArgs e) + protected void btnQuery_Click(object sender, EventArgs e) { BindGrid(); } + + /// + /// 关闭导入弹出窗口 + /// + /// + /// + protected void Window1_Close(object sender, WindowCloseEventArgs e) + { + BindGrid(); + } + /// /// 保存按钮 /// @@ -228,7 +244,7 @@ namespace FineUIPro.Web.BaseInfo } var q2 = Funs.DB.Base_WorkPost.FirstOrDefault(x => x.WorkPostName == this.txtWorkPostName.Text.Trim() && (x.WorkPostId != hfFormID.Text || (hfFormID.Text == null && x.WorkPostId != null)) - &&x.WorkPostCode==drpWorkPostCode.SelectedValue); + && x.WorkPostCode == drpWorkPostCode.SelectedValue); if (q2 != null) { ShowNotify("输入的岗位名称已存在!", MessageBoxIcon.Warning); @@ -242,6 +258,7 @@ namespace FineUIPro.Web.BaseInfo PostType = this.drpPostType.SelectedValue, IsHsse = Convert.ToBoolean(this.ckbIsHsse.Checked), IsCQMS = Convert.ToBoolean(this.ckbIsCQMS.Checked), + IsCQMSCheck = Convert.ToBoolean(this.ckbIsCQMSCheck.Checked), CNCodes = string.Join(",", txtCNCodes.Values), Remark = txtRemark.Text.Trim() }; @@ -314,7 +331,7 @@ namespace FineUIPro.Web.BaseInfo // ShowNotify("输入的岗位编号已存在!", MessageBoxIcon.Warning); //} - var q2 = Funs.DB.Base_WorkPost.FirstOrDefault(x => x.WorkPostName == this.txtWorkPostName.Text.Trim() + var q2 = Funs.DB.Base_WorkPost.FirstOrDefault(x => x.WorkPostName == this.txtWorkPostName.Text.Trim() && (x.WorkPostId != hfFormID.Text || (hfFormID.Text == null && x.WorkPostId != null)) && x.WorkPostCode == drpWorkPostCode.SelectedValue); if (q2 != null) { @@ -374,18 +391,9 @@ namespace FineUIPro.Web.BaseInfo } } #endregion - - /// - /// 关闭导入弹出窗口 - /// - /// - /// - protected void Window1_Close(object sender, WindowCloseEventArgs e) - { - BindGrid(); - } - + + #region 数据清理 /// diff --git a/SUBQHSE/FineUIPro.Web/BaseInfo/WorkPost.aspx.designer.cs b/SUBQHSE/FineUIPro.Web/BaseInfo/WorkPost.aspx.designer.cs index ebf81db..5d5ac51 100644 --- a/SUBQHSE/FineUIPro.Web/BaseInfo/WorkPost.aspx.designer.cs +++ b/SUBQHSE/FineUIPro.Web/BaseInfo/WorkPost.aspx.designer.cs @@ -203,6 +203,15 @@ namespace FineUIPro.Web.BaseInfo /// protected global::FineUIPro.CheckBox ckbIsCQMS; + /// + /// ckbIsCQMSCheck 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.CheckBox ckbIsCQMSCheck; + /// /// txtCNCodes 控件。 /// diff --git a/SUBQHSE/FineUIPro.Web/CQMS/Check/CheckList.aspx.cs b/SUBQHSE/FineUIPro.Web/CQMS/Check/CheckList.aspx.cs index 8b2c666..c8f0e9b 100644 --- a/SUBQHSE/FineUIPro.Web/CQMS/Check/CheckList.aspx.cs +++ b/SUBQHSE/FineUIPro.Web/CQMS/Check/CheckList.aspx.cs @@ -83,6 +83,11 @@ namespace FineUIPro.Web.CQMS.Check } btnNew.OnClientClick = Window1.GetShowReference("ChecklistEdit.aspx") + "return false;"; ddlPageSize.SelectedValue = Grid1.PageSize.ToString(); + var getProject = ProjectService.GetProjectByProjectId(ProjectId); + if (getProject != null && getProject.IsAutoFetch == true) + { + APICheckControlSyncService.getCheckControlLists(this.ProjectId); + } // 绑定表格 BindGrid(); } diff --git a/SUBQHSE/FineUIPro.Web/CQMS/Comprehensive/CqmsPersonEdit.aspx.cs b/SUBQHSE/FineUIPro.Web/CQMS/Comprehensive/CqmsPersonEdit.aspx.cs index 76530b8..e9dead0 100644 --- a/SUBQHSE/FineUIPro.Web/CQMS/Comprehensive/CqmsPersonEdit.aspx.cs +++ b/SUBQHSE/FineUIPro.Web/CQMS/Comprehensive/CqmsPersonEdit.aspx.cs @@ -127,6 +127,12 @@ namespace FineUIPro.Web.CQMS.Comprehensive } this.rblIsTrain.SelectedValue = person.IsTrain.HasValue && person.IsTrain == true ? "true" : "false"; } + var personQuality = PersonQualityService.GetPersonQualityByPersonId(this.PersonId); + if (personQuality != null) + { + this.txtCertificateCode.Text = personQuality.CertificateNo; + this.txtCertificateLimitTime.Text = string.Format("{0:yyyy-MM-dd}", personQuality.LimitDate); + } } else @@ -376,6 +382,34 @@ namespace FineUIPro.Web.CQMS.Comprehensive BLL.LogService.AddSys_Log(this.CurrUser, person.PersonName, person.PersonId, BLL.Const.PersonListMenuId, BLL.Const.BtnModify); } + + if (!string.IsNullOrEmpty(person.PersonId)) + { + ////更新特岗人员资质 + var personQuality = BLL.PersonQualityService.GetPersonQualityByPersonId(person.PersonId); + if (personQuality != null) + { + personQuality.CertificateNo = this.txtCertificateCode.Text.Trim(); + personQuality.LimitDate = Funs.GetNewDateTime(this.txtCertificateLimitTime.Text); + personQuality.CompileMan = this.CurrUser.UserId; + personQuality.CompileDate = DateTime.Now; + BLL.PersonQualityService.UpdatePersonQuality(personQuality); + } + else + { + Model.QualityAudit_PersonQuality newPersonQuality = new Model.QualityAudit_PersonQuality + { + PersonQualityId = SQLHelper.GetNewID(typeof(Model.QualityAudit_PersonQuality)), + PersonId = person.PersonId, + CompileMan = this.CurrUser.UserId, + CompileDate = DateTime.Now + }; + newPersonQuality.CertificateNo = this.txtCertificateCode.Text.Trim(); + newPersonQuality.LimitDate = Funs.GetNewDateTime(this.txtCertificateLimitTime.Text); + BLL.PersonQualityService.AddPersonQuality(newPersonQuality); + } + } + ///上传人脸库 var getProject = ProjectService.GetProjectByProjectId(person.ProjectId); if (!string.IsNullOrEmpty(person.PhotoUrl) && getProject != null && getProject.IsFace == true) diff --git a/SUBQHSE/FineUIPro.Web/CQMS/QualityActivity/QCManage/QCGroupRegistration.aspx b/SUBQHSE/FineUIPro.Web/CQMS/QualityActivity/QCManage/QCGroupRegistration.aspx index 9a4c958..a60be62 100644 --- a/SUBQHSE/FineUIPro.Web/CQMS/QualityActivity/QCManage/QCGroupRegistration.aspx +++ b/SUBQHSE/FineUIPro.Web/CQMS/QualityActivity/QCManage/QCGroupRegistration.aspx @@ -73,9 +73,12 @@ FieldType="String" HeaderText="课题" TextAlign="Center" HeaderTextAlign="Center"> - + <%-- + <%-- FieldType="String" HeaderText="颁奖年份" TextAlign="Center" --%> + <%-- HeaderTextAlign="Center"> --%> + <%-- --%> + <%-- --%> <%-- --%> - - + <%-- + <%-- LabelAlign="Right" LabelWidth="100px"> --%> + <%-- --%> + + diff --git a/SUBQHSE/FineUIPro.Web/CQMS/QualityActivity/QCManage/QCGroupRegistrationEdit.aspx.cs b/SUBQHSE/FineUIPro.Web/CQMS/QualityActivity/QCManage/QCGroupRegistrationEdit.aspx.cs index f0d34e5..67dcbb7 100644 --- a/SUBQHSE/FineUIPro.Web/CQMS/QualityActivity/QCManage/QCGroupRegistrationEdit.aspx.cs +++ b/SUBQHSE/FineUIPro.Web/CQMS/QualityActivity/QCManage/QCGroupRegistrationEdit.aspx.cs @@ -53,7 +53,8 @@ namespace FineUIPro.Web.CQMS.QualityActivity.QCManage this.drpUnitId.SelectedValue = QCGroupRegistration.UnitId; } txtSubjects.Text = QCGroupRegistration.Subjects; - txtProcess.Text = QCGroupRegistration.Process; + // txtProcess.Text = QCGroupRegistration.Process; + txtAwardYear.Text = string.Format("{0:yyyy}", QCGroupRegistration.AwardYear); txtAchievement.Text = QCGroupRegistration.Achievement; txtAwardName.Text = QCGroupRegistration.AwardName; if (!string.IsNullOrEmpty(QCGroupRegistration.AwardType)) @@ -125,7 +126,12 @@ namespace FineUIPro.Web.CQMS.QualityActivity.QCManage QCGroupRegistration.UnitId = this.drpUnitId.SelectedValue; } QCGroupRegistration.Subjects = txtSubjects.Text.Trim(); - QCGroupRegistration.Process = txtProcess.Text.Trim(); + // QCGroupRegistration.Process = txtProcess.Text.Trim(); + var awardYearText = this.txtAwardYear.Text.Trim(); + if (!string.IsNullOrEmpty(awardYearText)) + { + QCGroupRegistration.AwardYear = DateTime.ParseExact(awardYearText, "yyyy", null); + } QCGroupRegistration.Achievement = txtAchievement.Text.Trim(); QCGroupRegistration.AwardName = txtAwardName.Text.Trim(); if (!string.IsNullOrEmpty(this.drpAwardType.SelectedValue)) diff --git a/SUBQHSE/FineUIPro.Web/CQMS/QualityActivity/QCManage/QCGroupRegistrationEdit.aspx.designer.cs b/SUBQHSE/FineUIPro.Web/CQMS/QualityActivity/QCManage/QCGroupRegistrationEdit.aspx.designer.cs index 65bf323..42755c2 100644 --- a/SUBQHSE/FineUIPro.Web/CQMS/QualityActivity/QCManage/QCGroupRegistrationEdit.aspx.designer.cs +++ b/SUBQHSE/FineUIPro.Web/CQMS/QualityActivity/QCManage/QCGroupRegistrationEdit.aspx.designer.cs @@ -96,13 +96,13 @@ namespace FineUIPro.Web.CQMS.QualityActivity.QCManage protected global::FineUIPro.TextBox txtSubjects; /// - /// txtProcess 控件。 + /// txtAwardYear 控件。 /// /// /// 自动生成的字段。 /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// - protected global::FineUIPro.NumberBox txtProcess; + protected global::FineUIPro.DatePicker txtAwardYear; /// /// txtAchievement 控件。 diff --git a/SUBQHSE/FineUIPro.Web/Controls/ChartControl.ascx.cs b/SUBQHSE/FineUIPro.Web/Controls/ChartControl.ascx.cs index 08b0085..57404a6 100644 --- a/SUBQHSE/FineUIPro.Web/Controls/ChartControl.ascx.cs +++ b/SUBQHSE/FineUIPro.Web/Controls/ChartControl.ascx.cs @@ -1,8 +1,9 @@ using System; using System.Data; using System.Drawing; +using System.Linq; using System.Web.UI.DataVisualization.Charting; - +using System.Web.UI.WebControls; namespace Web.Controls { public partial class ChartControl : System.Web.UI.UserControl @@ -258,5 +259,167 @@ namespace Web.Controls Controls.Add(chart1); } + + public void CreateChart1(Model.DataSourceChart dataSourceChart) + { + int totalDataCount = 0; + if (dataSourceChart.DataSourceTeams != null && dataSourceChart.DataSourceTeams.Count > 0) + { + var firstTeam = dataSourceChart.DataSourceTeams.FirstOrDefault(t => t.DataPointName != "累计"); + if (firstTeam != null) + totalDataCount = firstTeam.DataSourcePoints.Count; + } + + // 每个标签分配 70px 宽度(可微调:60-80 之间) + int autoChartWidth = totalDataCount * 45; + + Chart chart1 = new Chart + { + ID = "chart1", + BackColor = Color.WhiteSmoke, + ImageLocation = "~/Images/ChartPic_#SEQ(300,3)", + BorderlineDashStyle = ChartDashStyle.Solid, + Palette = ChartColorPalette.BrightPastel, + BackSecondaryColor = Color.White, + BackGradientStyle = GradientStyle.TopBottom, + BorderWidth = 2, + BorderColor = Color.FromArgb(26, 59, 105), + ImageType = ChartImageType.Png, + + Width = dataSourceChart.Width > autoChartWidth ? dataSourceChart.Width : autoChartWidth, + Height = dataSourceChart.Height + }; + + Title title = new Title + { + Text = dataSourceChart.Title, + ShadowColor = Color.FromArgb(32, 0, 0, 0), + Font = new Font("Trebuchet MS", 10F, FontStyle.Bold), + ShadowOffset = 3, + ForeColor = Color.FromArgb(26, 59, 105) + }; + chart1.Titles.Add(title); + + Legend legend = new Legend + { + Name = dataSourceChart.Title, + TextWrapThreshold = 1, + Docking = Docking.Top, + Alignment = StringAlignment.Center, + BackColor = Color.Transparent, + Font = new Font(new FontFamily("Trebuchet MS"), 8), + LegendStyle = LegendStyle.Row, + IsEquallySpacedItems = true, + IsTextAutoFit = false + }; + chart1.Legends.Add(legend); + + ChartArea chartArea = new ChartArea + { + Name = dataSourceChart.Title, + BackColor = Color.Transparent + }; + + chartArea.AxisX.IsLabelAutoFit = false; + chartArea.AxisY.IsLabelAutoFit = false; + chartArea.AxisX.Interval = 1; // 每个点都显示标签 + chartArea.AxisX.LabelStyle.Angle = 45; // 倾斜45° + chartArea.AxisX.LabelStyle.Font = new Font("Verdana,Arial,Helvetica,sans-serif", 8F); + chartArea.AxisY.LabelStyle.Font = new Font("Verdana,Arial,Helvetica,sans-serif", 8F); + + // 线条样式 + chartArea.AxisY.LineColor = Color.FromArgb(64, 64, 64, 64); + chartArea.AxisX.LineColor = Color.FromArgb(64, 64, 64, 64); + chartArea.AxisY.MajorGrid.LineColor = Color.FromArgb(64, 64, 64, 64); + chartArea.AxisX.MajorGrid.LineColor = Color.FromArgb(64, 64, 64, 64); + + chart1.ChartAreas.Add(chartArea); + + + Panel scrollPanel = new Panel(); + scrollPanel.Style.Add("width", "100%"); // 父容器自适应 + scrollPanel.Style.Add("overflow-x", "auto"); // 横向滚动条 + scrollPanel.Style.Add("overflow-y", "hidden"); + scrollPanel.Style.Add("margin-bottom", "10px"); + scrollPanel.Controls.Add(chart1); + + + if (dataSourceChart.ChartType == SeriesChartType.Pie) + { + foreach (Model.DataSourceTeam dataSourceTeam in dataSourceChart.DataSourceTeams) + { + this.lblTotal.Text = "累计值为:"; + if (dataSourceTeam.DataPointName == "累计") + { + foreach (Model.DataSourcePoint dataSourcePoint in dataSourceTeam.DataSourcePoints) + { + this.lblTotal.Text += (dataSourcePoint.PointText + ":" + dataSourcePoint.PointValue + ","); + } + + if (this.lblTotal.Text != "累计值为:") + { + this.lblTotal.Text = this.lblTotal.Text.Substring(0, this.lblTotal.Text.LastIndexOf(",")); + } + } + else + { + this.lblTotal.Visible = false; + chart1.Series.Add(dataSourceTeam.DataPointName); + chart1.Series[dataSourceTeam.DataPointName].ChartType = dataSourceChart.ChartType; + chart1.Series[dataSourceTeam.DataPointName].Name = dataSourceTeam.DataPointName; + chart1.Series[dataSourceTeam.DataPointName].IsValueShownAsLabel = true; + chart1.Series[dataSourceTeam.DataPointName].BorderWidth = 2; + chart1.Series[dataSourceTeam.DataPointName].Label = "#PERCENT{P1}"; + chart1.Series[dataSourceTeam.DataPointName]["DrawingStyle"] = "Cylinder"; + int m = 0; + foreach (Model.DataSourcePoint dataSourcePoint in dataSourceTeam.DataSourcePoints) + { + chart1.Series[dataSourceTeam.DataPointName].Points.AddXY(dataSourcePoint.PointText, + dataSourcePoint.PointValue); + chart1.Series[dataSourceTeam.DataPointName].Points[m].LegendText = + dataSourcePoint.PointText + "#PERCENT{P1}"; + m++; + } + } + } + } + else + { + foreach (Model.DataSourceTeam dataSourceTeam in dataSourceChart.DataSourceTeams) + { + this.lblTotal.Text = "累计值为:"; + if (dataSourceTeam.DataPointName == "累计") + { + foreach (Model.DataSourcePoint dataSourcePoint in dataSourceTeam.DataSourcePoints) + { + this.lblTotal.Text += (dataSourcePoint.PointText + ":" + dataSourcePoint.PointValue + ","); + } + + if (this.lblTotal.Text != "累计值为:") + { + this.lblTotal.Text = this.lblTotal.Text.Substring(0, this.lblTotal.Text.LastIndexOf(",")); + } + } + else + { + this.lblTotal.Visible = false; + chart1.Series.Add(dataSourceTeam.DataPointName); + chart1.Series[dataSourceTeam.DataPointName].ChartType = dataSourceChart.ChartType; + chart1.Series[dataSourceTeam.DataPointName].Name = dataSourceTeam.DataPointName; + chart1.Series[dataSourceTeam.DataPointName].IsValueShownAsLabel = true; + chart1.Series[dataSourceTeam.DataPointName].BorderWidth = 2; + chart1.Series[dataSourceTeam.DataPointName]["DrawingStyle"] = "Cylinder"; + + foreach (Model.DataSourcePoint dataSourcePoint in dataSourceTeam.DataSourcePoints) + { + chart1.Series[dataSourceTeam.DataPointName].Points.AddXY(dataSourcePoint.PointText, + dataSourcePoint.PointValue); + } + } + } + } + + Controls.Add(scrollPanel); + } } } \ No newline at end of file diff --git a/SUBQHSE/FineUIPro.Web/FineUIPro.Web.csproj b/SUBQHSE/FineUIPro.Web/FineUIPro.Web.csproj index 1e1d61c..ea119d4 100644 --- a/SUBQHSE/FineUIPro.Web/FineUIPro.Web.csproj +++ b/SUBQHSE/FineUIPro.Web/FineUIPro.Web.csproj @@ -1145,6 +1145,8 @@ + + @@ -12521,6 +12523,10 @@ ShowWBS.aspx + + + + MeetingManage.aspx ASPXCodeBehind diff --git a/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysis.aspx b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysis.aspx new file mode 100644 index 0000000..32b5807 --- /dev/null +++ b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysis.aspx @@ -0,0 +1,66 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CheckStatisticsAnalysis.aspx.cs" Inherits="FineUIPro.Web.HSSE.HiddenInspection.HSSECheckStatisticsAnalysis" %> + + + + + + + 隐患分析 + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysis.aspx.cs b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysis.aspx.cs new file mode 100644 index 0000000..53a563d --- /dev/null +++ b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysis.aspx.cs @@ -0,0 +1,56 @@ +using System; +using BLL; + +namespace FineUIPro.Web.HSSE.HiddenInspection +{ + public partial class HSSECheckStatisticsAnalysis : PageBase + { + public string Types + { + get => (string)ViewState["Types"]; + set => ViewState["Types"] = value; + } + public string UnitId + { + get => (string)ViewState["UnitId"]; + set => ViewState["UnitId"] = value; + } + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + this.DatePicker1.Text = new DateTime(DateTime.Now.Year, 1, 1).ToString("yyyy-MM-dd"); + this.DatePicker2.Text = DateTime.Now.ToString("yyyy-MM-dd"); + UnitId = this.CurrUser.UnitId; + if (this.CurrUser.UserId == Const.sysglyId || this.CurrUser.UserId == Const.hfnbdId || this.CurrUser.UserId == Const.sedinId) + { + UnitId = CommonService.GetThisUnitId(); + } + BLL.ProjectService.InitProjectDropDownList(this.drpProject,UnitId, false);//项目 + Types = Request.Params["Types"] ?? "1"; + } + + } + + protected void BtnAnalyse_Click(object sender, EventArgs e) + { + string ProjectStr = string.Empty; + + foreach (ListItem item in this.drpProject.SelectedItemArray) + { + ProjectStr += item.Value + ","; + } + + string queryStr = string.Empty; + + if (!string.IsNullOrWhiteSpace(queryStr)) + { + ShowNotify(queryStr, MessageBoxIcon.Warning); + return; + } + + panelCenterRegion.IFrameUrl = $"./CheckStatisticsAnalysisProject.aspx?StartDate={DatePicker1.Text}&EndDate={DatePicker2.Text}&ProjectStr={ProjectStr}&Types={Types}&UnitId={UnitId}"; + } + } +} \ No newline at end of file diff --git a/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysis.aspx.designer.cs b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysis.aspx.designer.cs new file mode 100644 index 0000000..79c6e83 --- /dev/null +++ b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysis.aspx.designer.cs @@ -0,0 +1,98 @@ +//------------------------------------------------------------------------------ +// <Զ> +// ˴ɹɡ +// +// ԴļĸĿܵ²ȷΪ +// ɴ룬Ľʧ +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.HSSE.HiddenInspection +{ + + + public partial class HSSECheckStatisticsAnalysis + { + + /// + /// form1 ؼ + /// + /// + /// ԶɵֶΡ + /// Ҫ޸ģ뽫ֶļƵļ + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 ؼ + /// + /// + /// ԶɵֶΡ + /// Ҫ޸ģ뽫ֶļƵļ + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel3 ؼ + /// + /// + /// ԶɵֶΡ + /// Ҫ޸ģ뽫ֶļƵļ + /// + protected global::FineUIPro.Panel Panel3; + + /// + /// panelCenterRegion ؼ + /// + /// + /// ԶɵֶΡ + /// Ҫ޸ģ뽫ֶļƵļ + /// + protected global::FineUIPro.Panel panelCenterRegion; + + /// + /// Toolbar2 ؼ + /// + /// + /// ԶɵֶΡ + /// Ҫ޸ģ뽫ֶļƵļ + /// + protected global::FineUIPro.Toolbar Toolbar2; + + /// + /// DatePicker1 ؼ + /// + /// + /// ԶɵֶΡ + /// Ҫ޸ģ뽫ֶļƵļ + /// + protected global::FineUIPro.DatePicker DatePicker1; + + /// + /// DatePicker2 ؼ + /// + /// + /// ԶɵֶΡ + /// Ҫ޸ģ뽫ֶļƵļ + /// + protected global::FineUIPro.DatePicker DatePicker2; + + /// + /// drpProject ؼ + /// + /// + /// ԶɵֶΡ + /// Ҫ޸ģ뽫ֶļƵļ + /// + protected global::FineUIPro.DropDownList drpProject; + + /// + /// BtnAnalyse ؼ + /// + /// + /// ԶɵֶΡ + /// Ҫ޸ģ뽫ֶļƵļ + /// + protected global::FineUIPro.Button BtnAnalyse; + } +} diff --git a/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysisProject.aspx b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysisProject.aspx new file mode 100644 index 0000000..12af757 --- /dev/null +++ b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysisProject.aspx @@ -0,0 +1,139 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CheckStatisticsAnalysisProject.aspx.cs" Inherits="FineUIPro.Web.HSSE.HiddenInspection.HSSECheckStatisticsAnalysisProject" %> + +<%@ Register Src="~/Controls/ChartControl.ascx" TagName="ChartControl" TagPrefix="uc1" %> + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysisProject.aspx.cs b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysisProject.aspx.cs new file mode 100644 index 0000000..7db2e5d --- /dev/null +++ b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysisProject.aspx.cs @@ -0,0 +1,576 @@ +using BLL; +using Model; +using Newtonsoft.Json.Linq; +using System; +using System.Collections; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; + +namespace FineUIPro.Web.HSSE.HiddenInspection +{ + public partial class HSSECheckStatisticsAnalysisProject : PageBase + { + public DataTable ChartTable + { + get { return (DataTable)ViewState["ChartTable"]; } + set { ViewState["ChartTable"] = value; } + } + + /// + /// 开始年月 + /// + public string StartDate + { + get => (string)ViewState["StartDate"]; + set => ViewState["StartDate"] = value; + } + + /// + /// 结束年月 + /// + public string EndDate + { + get => (string)ViewState["EndDate"]; + set => ViewState["EndDate"] = value; + } + + public string UnitId + { + get => (string)ViewState["UnitId"]; + set => ViewState["UnitId"] = value; + } + public bool ShowHsse + { + get => (bool)ViewState["ShowHsse"]; + set => ViewState["ShowHsse"] = value; + } + + public bool ShowEnvironment + { + get => (bool)ViewState["ShowEnvironment"]; + set => ViewState["ShowEnvironment"] = value; + } + + public bool ShowCqms + { + get => (bool)ViewState["ShowCqms"]; + set => ViewState["ShowCqms"] = value; + } + + + public List projects = new List(); + + #region Page_Init + + // 注意:动态创建的代码需要放置于Page_Init(不是Page_Load),这样每次构造页面时都会执行 + protected void Page_Init(object sender, EventArgs e) + { + string ProblemTypes = Request.Params["Types"]; + + ShowHsse = ProblemTypes.Contains("1"); + ShowCqms = ProblemTypes.Contains("2"); + ShowEnvironment = ProblemTypes.Contains("3"); + + InitGrid(); + } + + + private void InitGrid() + { + StartDate = Request.Params["StartDate"]; + EndDate = Request.Params["EndDate"]; + UnitId = Request.Params["UnitId"]; + string ProjectStr = Request.Params["ProjectStr"]; + if (!string.IsNullOrWhiteSpace(ProjectStr)) + { + var projectlst = ProjectStr.Split(','); + foreach (var un in projectlst) + { + if (!string.IsNullOrWhiteSpace(un)) + { + projects.Add(un); + } + } + } + } + + #endregion + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + this.drpChartType.DataTextField = "ConstText"; + this.drpChartType.DataValueField = "ConstValue"; + this.drpChartType.DataSource = BLL.ConstValue.drpConstItemList(ConstValue.Group_ChartType); + this.drpChartType.DataBind(); + // 绑定表格 + this.BindGrid(); + AnalyseData(); + } + } + + #region 绑定数据 + + /// + /// 绑定数据 + /// + private void BindGrid() + { + ChartTable = new DataTable(); + ChartTable.Columns.Add("项目"); + ChartTable.Columns.Add("待整改数"); + ChartTable.Columns.Add("已关闭数"); + DateTime start = DateTime.Parse(StartDate); + DateTime end = DateTime.Parse(EndDate); + var sublist = (from x in Funs.DB.Base_Project + where (x.ProjectState == null || x.ProjectState == BLL.Const.ProjectState_1) && + (x.IsDelete == null || x.IsDelete == false) && x.UnitId == UnitId + orderby x.ProjectCode descending + select x).ToList(); + + var allHazardList = new List(); + if (ShowHsse) + { + allHazardList = (from x in Funs.DB.View_Hazard_HazardRegister + where x.CheckTime.HasValue && x.CheckTime.Value >= start && x.CheckTime.Value <= end + select new TempHazardModel + { + ProjectId = x.ProjectId, + ProjectName = x.ProjectName, + States = x.States, + CheckTime = x.CheckTime + }).ToList(); + } + + if (ShowCqms) + { + allHazardList = (from x in Funs.DB.Check_CheckControl + join p in Funs.DB.Base_Project on x.ProjectId equals p.ProjectId into pt + from p in pt + join y in Funs.DB.Check_CheckControl on x.CheckControlCode equals y.CheckControlCode into yt + from y in yt + where x.CheckDate.HasValue && x.CheckDate.Value >= start && x.CheckDate.Value <= end + select new TempHazardModel + { + ProjectId = x.ProjectId, + ProjectName = p.ProjectName, + States = y.State, + CheckTime = x.CheckDate + }).ToList(); + } + + + if (projects.Count > 0) + { + allHazardList = allHazardList.Where(x => projects.Contains(x.ProjectId)).ToList(); + } + + List dataList = new List(); + foreach (var item in sublist) //项目分组 + { + if (projects.Count > 0 && !(projects.Where(x => x == item.ProjectId).Any())) + { + continue; + } + + AnalysisData analysisData = new AnalysisData(); + var projectHazardList = from x in allHazardList + where x.ProjectId == item.ProjectId + select x; //当前项目所有隐患 + + int closeList = 0; + if (ShowHsse) + { + closeList = projectHazardList.Where(x => x.States == "3").Count(); //已闭环 + } + + if (ShowCqms) + { + closeList = projectHazardList.Where(x => x.States == "7").Count(); //已闭环 + } + + analysisData.ProjectId = item.ProjectId; + analysisData.ProjectName = !string.IsNullOrEmpty(item.ShortName) ? item.ShortName : item.ProjectName; + analysisData.HJNum = projectHazardList.Count(); + analysisData.CloseNum = closeList; + analysisData.UNCloseNum = projectHazardList.Count() - closeList; + if (projectHazardList.Count() > 0) + { + double rate = closeList / (double)projectHazardList.Count() * 100; + analysisData.ProjectRate = rate.ToString("F2") + "%"; // 保留两位小数 + } + else + { + // 处理分母为零的情况,例如设置一个默认值或抛出异常 + analysisData.ProjectRate = "0.00%"; // 或者其他适当的默认值 + } + + dataList.Add(analysisData); + + //chart图表 + DataRow chartTableRow = ChartTable.NewRow(); + chartTableRow["项目"] = !string.IsNullOrEmpty(item.ShortName) ? item.ShortName : item.ProjectName; + chartTableRow["待整改数"] = projectHazardList.Count() - closeList; + chartTableRow["已关闭数"] = closeList; + ChartTable.Rows.Add(chartTableRow); + } + + Grid1.RecordCount = dataList.Count; + Grid1.DataSource = dataList; + Grid1.DataBind(); + + // 数据合计 + OutputSummaryData(dataList); + } + + + /// + /// 数据合计 + /// + /// + private void OutputSummaryData(List source) + { + JObject summary = new JObject(); + summary.Add("ProjectName", "合计"); + int UNCloseNumAll = 0; + int CloseNumAll = 0; + int HJNumAll = 0; + + foreach (var analysisData in source) + { + UNCloseNumAll += Convert.ToInt32(analysisData.UNCloseNum); + CloseNumAll += Convert.ToInt32(analysisData.CloseNum); + HJNumAll += Convert.ToInt32(analysisData.HJNum); + } + summary.Add("UNCloseNum", UNCloseNumAll); + summary.Add("CloseNum", CloseNumAll); + summary.Add("HJNum", HJNumAll); + Grid1.SummaryData = summary; + } + + #endregion + + #region GV 数据操作 + + /// + /// 分页 + /// + /// + /// + protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) + { + this.Grid1.PageIndex = e.NewPageIndex; + this.BindGrid(); + } + + /// + /// 排序 + /// + /// + /// + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + this.Grid1.SortDirection = e.SortDirection; + this.Grid1.SortField = e.SortField; + this.BindGrid(); + } + + #endregion + + #region 数据编辑事件 + + protected void btnQuery_OnClick(object sender, EventArgs e) + { + BindGrid(); + } + + #endregion + + #region 关闭弹出窗 + + /// + /// 关闭弹出窗 + /// + /// + /// + protected void Window1_Close(object sender, WindowCloseEventArgs e) + { + BindGrid(); + } + + #endregion + + #region 导出按钮 + + /// 导出按钮 + ///
+ /// + /// + protected void btnOut_Click(object sender, EventArgs e) + { + Response.ClearContent(); + string filename = Funs.GetNewFileName(); + Response.AddHeader("content-disposition", + "attachment; filename=" + + System.Web.HttpUtility.UrlEncode("安全巡检统计分析表" + filename, System.Text.Encoding.UTF8) + ".xls"); + Response.ContentType = "application/excel"; + Response.ContentEncoding = System.Text.Encoding.UTF8; + this.Grid1.PageSize = 500; + this.BindGrid(); + Response.Write(GetGridTableHtml(Grid1)); + Response.End(); + } + + private string GetGridTableHtml(Grid grid) + { + StringBuilder sb = new StringBuilder(); + + MultiHeaderTable mht = new MultiHeaderTable(); + mht.ResolveMultiHeaderTable(Grid1.Columns); + + + sb.Append(""); + + + sb.Append(""); + + foreach (List rows in mht.MultiTable) + { + sb.Append(""); + foreach (object[] cell in rows) + { + int rowspan = Convert.ToInt32(cell[0]); + int colspan = Convert.ToInt32(cell[1]); + GridColumn column = cell[2] as GridColumn; + + sb.AppendFormat("{3}", + rowspan != 1 ? " rowspan=\"" + rowspan + "\"" : "", + colspan != 1 ? " colspan=\"" + colspan + "\"" : "", + colspan != 1 ? " style=\"text-align:center;\"" : "", + column.HeaderText); + } + + sb.Append(""); + } + + + foreach (GridRow row in grid.Rows) + { + sb.Append(""); + + foreach (GridColumn column in mht.Columns) + { + string html = row.Values[column.ColumnIndex].ToString(); + + if (column.ColumnID == "tfNumber") + { + html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text; + } + else if (column.ColumnID == "tfGender") + { + html = (row.FindControl("labGender") as System.Web.UI.WebControls.Label).Text; + } + sb.AppendFormat("", html); + } + + sb.Append(""); + } + + sb.Append("
{0}
"); + + return sb.ToString(); + } + + + #region 多表头处理 + + /// + /// 多表头处理 + /// + public class MultiHeaderTable + { + // 包含 rowspan,colspan 的多表头,方便生成 HTML 的 table 标签 + public List> MultiTable = new List>(); + + // 最终渲染的列数组 + public List Columns = new List(); + + public void ResolveMultiHeaderTable(GridColumnCollection columns) + { + List row = new List(); + foreach (GridColumn column in columns) + { + object[] cell = new object[4]; + cell[0] = 1; // rowspan + cell[1] = 1; // colspan + cell[2] = column; + cell[3] = null; + row.Add(cell); + } + + ResolveMultiTable(row, 0); + ResolveColumns(row); + } + + private void ResolveColumns(List row) + { + foreach (object[] cell in row) + { + GroupField groupField = cell[2] as GroupField; + if (groupField != null && groupField.Columns.Count > 0) + { + List subrow = new List(); + foreach (GridColumn column in groupField.Columns) + { + subrow.Add(new object[] + { + 1, + 1, + column, + groupField + }); + } + + ResolveColumns(subrow); + } + else + { + Columns.Add(cell[2] as GridColumn); + } + } + } + + private void ResolveMultiTable(List row, int level) + { + List nextrow = new List(); + + foreach (object[] cell in row) + { + GroupField groupField = cell[2] as GroupField; + if (groupField != null && groupField.Columns.Count > 0) + { + // 如果当前列包含子列,则更改当前列的 colspan,以及增加父列(向上递归)的colspan + cell[1] = Convert.ToInt32(groupField.Columns.Count); + PlusColspan(level - 1, cell[3] as GridColumn, groupField.Columns.Count - 1); + + foreach (GridColumn column in groupField.Columns) + { + nextrow.Add(new object[] + { + 1, + 1, + column, + groupField + }); + } + } + } + + MultiTable.Add(row); + // 如果当前下一行,则增加上一行(向上递归)中没有子列的列的 rowspan + if (nextrow.Count > 0) + { + PlusRowspan(level); + ResolveMultiTable(nextrow, level + 1); + } + } + + private void PlusRowspan(int level) + { + if (level < 0) + { + return; + } + + foreach (object[] cells in MultiTable[level]) + { + GroupField groupField = cells[2] as GroupField; + if (groupField != null && groupField.Columns.Count > 0) + { + } + else + { + cells[0] = Convert.ToInt32(cells[0]) + 1; + } + } + + PlusRowspan(level - 1); + } + + private void PlusColspan(int level, GridColumn parent, int plusCount) + { + if (level < 0) + { + return; + } + + foreach (object[] cells in MultiTable[level]) + { + GridColumn column = cells[2] as GridColumn; + if (column == parent) + { + cells[1] = Convert.ToInt32(cells[1]) + plusCount; + + PlusColspan(level - 1, cells[3] as GridColumn, plusCount); + } + } + } + } + + #endregion + + #endregion + + protected void drpChartType_SelectedIndexChanged(object sender, EventArgs e) + { + AnalyseData(); + } + + private void AnalyseData() + { + DataView dv = new DataView(ChartTable); + var tb = dv.ToTable(); + DataTable newTable = new DataTable(); + foreach (DataColumn column in tb.Columns) + { + newTable.Columns.Add(column.ColumnName, column.DataType); + } + // 将数据从原始表复制到新的DataTable中 + foreach (DataRow row in tb.Rows) + { + DataRow newRow = newTable.NewRow(); + foreach (DataColumn column in newTable.Columns) + { + newRow[column.ColumnName] = row[column.ColumnName]; + } + newTable.Rows.Add(newRow); + } + + this.ChartHiddenDangerProject.CreateChart1(BLL.ChartControlService.GetDataSourceChart(newTable, "安全巡检统计分析", + this.drpChartType.SelectedValue, 1150, 450, false)); + } + + + public class AnalysisData + { + public string ProjectId { get; set; } + public string ProjectName { get; set; } + public int UNCloseNum { get; set; } + public int CloseNum { get; set; } + public int HJNum { get; set; } + public string ProjectRate { get; set; } + } + + public class TempHazardModel + { + public string ProjectId { get; set; } + public string ProjectName { get; set; } + public string States { get; set; } + public DateTime? CheckTime { get; set; } + } + } +} \ No newline at end of file diff --git a/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysisProject.aspx.designer.cs b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysisProject.aspx.designer.cs new file mode 100644 index 0000000..78f34b6 --- /dev/null +++ b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/CheckStatisticsAnalysisProject.aspx.designer.cs @@ -0,0 +1,134 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.HSSE.HiddenInspection +{ + + + public partial class HSSECheckStatisticsAnalysisProject + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// TabStrip1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TabStrip TabStrip1; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar4 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar4; + + /// + /// btnQuery 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnQuery; + + /// + /// btnOut 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnOut; + + /// + /// lblNumber 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label lblNumber; + + /// + /// drpChartType 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList drpChartType; + + /// + /// cpHiddenDangerUnit 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ContentPanel cpHiddenDangerUnit; + + /// + /// ChartHiddenDangerProject 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::Web.Controls.ChartControl ChartHiddenDangerProject; + + /// + /// Window1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Window1; + + /// + /// Window2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Window2; + } +} diff --git a/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/HiddenRectificationList.aspx.cs b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/HiddenRectificationList.aspx.cs index 1defad7..93d01dd 100644 --- a/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/HiddenRectificationList.aspx.cs +++ b/SUBQHSE/FineUIPro.Web/HSSE/HiddenInspection/HiddenRectificationList.aspx.cs @@ -103,6 +103,11 @@ namespace FineUIPro.Web.HSSE.HiddenInspection this.drpProblemTypes.DataSource = ProblemTypes; this.drpProblemTypes.DataBind(); Funs.FineUIPleaseSelect(this.drpProblemTypes); + var getProject = ProjectService.GetProjectByProjectId(ProjectId); + if (getProject != null && getProject.IsAutoFetch == true) + { + APIHazardRegisterSyncService.getHazardRegisterLists(this.ProjectId); + } // 绑定表格 BindGrid(); } diff --git a/SUBQHSE/FineUIPro.Web/ProjectData/ProjectSysSet.aspx b/SUBQHSE/FineUIPro.Web/ProjectData/ProjectSysSet.aspx index ba8648f..99e2a7b 100644 --- a/SUBQHSE/FineUIPro.Web/ProjectData/ProjectSysSet.aspx +++ b/SUBQHSE/FineUIPro.Web/ProjectData/ProjectSysSet.aspx @@ -24,6 +24,8 @@ + + diff --git a/SUBQHSE/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.cs b/SUBQHSE/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.cs index ac5699d..c2a8e96 100644 --- a/SUBQHSE/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.cs +++ b/SUBQHSE/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.cs @@ -93,6 +93,7 @@ namespace FineUIPro.Web.common.ProjectSet if (getProject != null) { getProject.IsFace = this.ckbIsFace.Checked; + getProject.IsAutoFetch = this.ckbIsAutoFetch.Checked; Funs.DB.SubmitChanges(); } #endregion @@ -454,7 +455,10 @@ namespace FineUIPro.Web.common.ProjectSet { this.ckbIsFace.Checked = true; } - + if (getProject != null && getProject.IsAutoFetch == true) + { + this.ckbIsAutoFetch.Checked = true; + } var q = from x in Funs.DB.Project_Sys_Set where x.ProjectId == projectId select x; if (q.Count() > 0) { diff --git a/SUBQHSE/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.designer.cs b/SUBQHSE/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.designer.cs index 0453185..3179327 100644 --- a/SUBQHSE/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.designer.cs +++ b/SUBQHSE/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.designer.cs @@ -77,6 +77,15 @@ namespace FineUIPro.Web.common.ProjectSet /// protected global::FineUIPro.CheckBox ckbIsFace; + /// + /// ckbIsAutoFetch 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.CheckBox ckbIsAutoFetch; + /// /// btnSetMap 控件。 /// diff --git a/SUBQHSE/FineUIPro.Web/index_gateway.aspx.cs b/SUBQHSE/FineUIPro.Web/index_gateway.aspx.cs index 7efed59..2b8a2b8 100644 --- a/SUBQHSE/FineUIPro.Web/index_gateway.aspx.cs +++ b/SUBQHSE/FineUIPro.Web/index_gateway.aspx.cs @@ -53,6 +53,15 @@ namespace FineUIPro.Web if (!IsPostBack) { + int unitType = CommonService.GetUnitTypeByUserId(this.CurrUser.UserId); + if (unitType == 0) + { + Button3.Text = "公司"; + } + else if (unitType == 1) + { + Button3.Text = "分公司"; + } this.CurrUser.LoginProjectId = null; } } diff --git a/SUBQHSE/Model/APIItem/DataShare/PersonSyncData.cs b/SUBQHSE/Model/APIItem/DataShare/PersonSyncData.cs index 842e3ec..06e5440 100644 --- a/SUBQHSE/Model/APIItem/DataShare/PersonSyncData.cs +++ b/SUBQHSE/Model/APIItem/DataShare/PersonSyncData.cs @@ -119,6 +119,7 @@ namespace Model public string PostType { get; set; } public bool? IsHsse { get; set; } public bool? IsCQMS { get; set; } + public bool? IsCQMSCheck { get; set; } public string TeamGroupName { get; set; } public string WorkAreaName { get; set; } } diff --git a/SUBQHSE/Model/APIItem/HSSE/QCRegistrationItem.cs b/SUBQHSE/Model/APIItem/HSSE/QCRegistrationItem.cs index fd0a593..9189108 100644 --- a/SUBQHSE/Model/APIItem/HSSE/QCRegistrationItem.cs +++ b/SUBQHSE/Model/APIItem/HSSE/QCRegistrationItem.cs @@ -158,6 +158,13 @@ namespace Model{ get; set; } - + /// + /// 颁奖年份 + /// + public DateTime? AwardYear + { + get; + set; + } } } \ No newline at end of file diff --git a/SUBQHSE/Model/Model.cs b/SUBQHSE/Model/Model.cs index d559e4e..2a6334c 100644 --- a/SUBQHSE/Model/Model.cs +++ b/SUBQHSE/Model/Model.cs @@ -28009,6 +28009,8 @@ namespace Model private string _SubjectUnitWebUrl; + private System.Nullable _IsAutoFetch; + private EntitySet _Accident_AccidentHandle; private EntitySet _Accident_AccidentPersonRecord; @@ -28767,6 +28769,8 @@ namespace Model partial void OnSubjectUnitApiUrlChanged(); partial void OnSubjectUnitWebUrlChanging(string value); partial void OnSubjectUnitWebUrlChanged(); + partial void OnIsAutoFetchChanging(System.Nullable value); + partial void OnIsAutoFetchChanged(); #endregion public Base_Project() @@ -29957,6 +29961,26 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsAutoFetch", DbType="Bit")] + public System.Nullable IsAutoFetch + { + get + { + return this._IsAutoFetch; + } + set + { + if ((this._IsAutoFetch != value)) + { + this.OnIsAutoFetchChanging(value); + this.SendPropertyChanging(); + this._IsAutoFetch = value; + this.SendPropertyChanged("IsAutoFetch"); + this.OnIsAutoFetchChanged(); + } + } + } + [global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_Accident_AccidentHandle_Base_Project", Storage="_Accident_AccidentHandle", ThisKey="ProjectId", OtherKey="ProjectId", DeleteRule="NO ACTION")] public EntitySet Accident_AccidentHandle { @@ -345256,6 +345280,8 @@ namespace Model private string _AwardType; + private System.Nullable _AwardYear; + #region 可扩展性方法定义 partial void OnLoaded(); partial void OnValidate(System.Data.Linq.ChangeAction action); @@ -345290,6 +345316,8 @@ namespace Model partial void OnIsUpdateChanged(); partial void OnAwardTypeChanging(string value); partial void OnAwardTypeChanged(); + partial void OnAwardYearChanging(System.Nullable value); + partial void OnAwardYearChanged(); #endregion public QCManage_QCGroupRegistration() @@ -345597,6 +345625,26 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AwardYear", DbType="DateTime")] + public System.Nullable AwardYear + { + get + { + return this._AwardYear; + } + set + { + if ((this._AwardYear != value)) + { + this.OnAwardYearChanging(value); + this.SendPropertyChanging(); + this._AwardYear = value; + this.SendPropertyChanged("AwardYear"); + this.OnAwardYearChanged(); + } + } + } + public event PropertyChangingEventHandler PropertyChanging; public event PropertyChangedEventHandler PropertyChanged;