From 976625dc9bd8ed0ecb905f555579caad9a9e19df Mon Sep 17 00:00:00 2001 From: gaofei1985 <181547018@qq.com> Date: Fri, 28 Jul 2023 11:14:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=95=E8=BD=A6=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../版本日志/SGGLDB_WH_2023-07-28.sql | 167 ++++++++ SGGL/BLL/Common/NPOIHelper.cs | 4 + .../File/Excel/TestRun/管道一览表.xlsx | Bin 9447 -> 10166 bytes .../File/Excel/TestRun/设备一览表.xlsx | Bin 9156 -> 47764 bytes SGGL/FineUIPro.Web/FineUIPro.Web.csproj | 35 ++ .../BeforeTestRun/InspectTemplate.aspx | 93 +++++ .../BeforeTestRun/InspectTemplate.aspx.cs | 236 +++++++++++ .../InspectTemplate.aspx.designer.cs | 197 ++++++++++ .../BeforeTestRun/InspectTemplateEdit.aspx | 64 +++ .../BeforeTestRun/InspectTemplateEdit.aspx.cs | 105 +++++ .../InspectTemplateEdit.aspx.designer.cs | 152 ++++++++ .../TestRun/BeforeTestRun/SubInspectTerm.aspx | 83 ++++ .../BeforeTestRun/SubInspectTerm.aspx.cs | 367 ++++++++++++++++++ .../SubInspectTerm.aspx.designer.cs | 134 +++++++ .../BeforeTestRun/SubSysWorkPackage.aspx | 17 +- .../BeforeTestRun/SubSysWorkPackage.aspx.cs | 4 +- .../SubSysWorkPackage.aspx.designer.cs | 72 ++-- .../TestRun/BeforeTestRun/SubWorkInspect.aspx | 76 ++++ .../BeforeTestRun/SubWorkInspect.aspx.cs | 156 ++++++++ .../SubWorkInspect.aspx.designer.cs | 116 ++++++ .../BeforeTestRun/SysPipingDeviceImport.aspx | 10 +- .../SysPipingDeviceImport.aspx.cs | 150 ++++--- .../SysPipingDeviceImport.aspx.designer.cs | 256 ++++++------ 23 files changed, 2263 insertions(+), 231 deletions(-) create mode 100644 DataBase/版本日志/SGGLDB_WH_2023-07-28.sql create mode 100644 SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplate.aspx create mode 100644 SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplate.aspx.cs create mode 100644 SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplate.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplateEdit.aspx create mode 100644 SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplateEdit.aspx.cs create mode 100644 SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplateEdit.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubInspectTerm.aspx create mode 100644 SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubInspectTerm.aspx.cs create mode 100644 SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubInspectTerm.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubWorkInspect.aspx create mode 100644 SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubWorkInspect.aspx.cs create mode 100644 SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubWorkInspect.aspx.designer.cs diff --git a/DataBase/版本日志/SGGLDB_WH_2023-07-28.sql b/DataBase/版本日志/SGGLDB_WH_2023-07-28.sql new file mode 100644 index 00000000..67cfe78d --- /dev/null +++ b/DataBase/版本日志/SGGLDB_WH_2023-07-28.sql @@ -0,0 +1,167 @@ + +--˵ +delete Sys_Menu where MenuId='3B60BB5F-A000-40FC-9C7F-D4AE28EB2EB3' +delete Sys_Menu where MenuId='D9D90BA4-BF34-4045-977F-DCE9D507F40F' +delete Sys_Menu where MenuId='150A6D3D-CAA2-4246-947C-6730A18BCC83' +INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Icon,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed)VALUES('3B60BB5F-A000-40FC-9C7F-D4AE28EB2EB3','ģ',null,'TestRun/BeforeTestRun/InspectTemplate.aspx',5,'AD6E08B6-5571-4FFB-BDBE-9E6811770BD6','Menu_TestRun',0,1,1) +INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Icon,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed)VALUES('D9D90BA4-BF34-4045-977F-DCE9D507F40F','ɹ',null,'TestRun/BeforeTestRun/SubInspectTerm.aspx',6,'AD6E08B6-5571-4FFB-BDBE-9E6811770BD6','Menu_TestRun',0,1,1) +INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Icon,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed)VALUES('150A6D3D-CAA2-4246-947C-6730A18BCC83','ϵͳ',null,'TestRun/BeforeTestRun/SubWorkInspect.aspx',7,'AD6E08B6-5571-4FFB-BDBE-9E6811770BD6','Menu_TestRun',0,1,1) + +go +--==ģϢ +if object_id(N'PreRun_WorkInspectTemplate',N'U') is not null +drop table dbo.PreRun_WorkInspectTemplate +CREATE TABLE dbo.PreRun_WorkInspectTemplate( + WorkInspectId varchar(50) NOT NULL,-- + WorkPackId varchar(50) NULL,-- + WorkInspectName varchar(500) NULL,-- + Remark nvarchar(150) NULL,--ע + AddUser varchar(50) NULL,-- + AddTime datetime NULL,-- + Sort int NULL,-- + CONSTRAINT PK_PreRun_WorkInspectTemplate PRIMARY KEY CLUSTERED +( + WorkInspectId ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] +GO + +--==ģ +--WP02 ܵϴ +delete PreRun_WorkInspectTemplate where WorkInspectId='D114152C-AB8F-4A27-BB99-047EFC6A659B' +delete PreRun_WorkInspectTemplate where WorkInspectId='A9EE383E-9073-4C6A-9BF9-6A55D13DED78' +delete PreRun_WorkInspectTemplate where WorkInspectId='ECEAF45C-43E1-4DBD-9ECF-EB509B30C727' +delete PreRun_WorkInspectTemplate where WorkInspectId='123E15BA-8885-445A-8C88-FFEE69E6AAC3' +delete PreRun_WorkInspectTemplate where WorkInspectId='98E970F7-58E2-4EFC-B74F-0D724B968ED2' +delete PreRun_WorkInspectTemplate where WorkInspectId='2340CB66-6CB4-47A6-A80C-F7C523E7F19D' +delete PreRun_WorkInspectTemplate where WorkInspectId='FE74C3B5-33D7-4DB2-A234-CF61248AE508' +delete PreRun_WorkInspectTemplate where WorkInspectId='C57CBFFD-B11F-4F8F-A637-B7EF6344B818' +delete PreRun_WorkInspectTemplate where WorkInspectId='BDD6D5B1-C82C-46A1-BCC5-5F66BFCE4C72' +delete PreRun_WorkInspectTemplate where WorkInspectId='C6171D1B-9B3C-47A5-A5BE-BB21525C67A9' +delete PreRun_WorkInspectTemplate where WorkInspectId='2DA39968-C16D-4723-9932-80804B0F88E6' +delete PreRun_WorkInspectTemplate where WorkInspectId='11F562CB-9867-46E3-A42A-3DCF6C9B80A6' +delete PreRun_WorkInspectTemplate where WorkInspectId='435AF81B-23CD-4EE8-8023-7F26BF8672AA' +delete PreRun_WorkInspectTemplate where WorkInspectId='948611DC-519D-465A-BBA2-5BD26C70C62A' +delete PreRun_WorkInspectTemplate where WorkInspectId='2F77D05B-837C-4A74-AAAD-2BCDAF7444D7' +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('D114152C-AB8F-4A27-BB99-047EFC6A659B','641DA0F4-42A7-4DE3-9A57-95A606016655','ϴɨ·ڵĹܵѹϸ','','',GETDATE(),1) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('A9EE383E-9073-4C6A-9BF9-6A55D13DED78','641DA0F4-42A7-4DE3-9A57-95A606016655','װƵĿװȡ','','',GETDATE(),2) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('ECEAF45C-43E1-4DBD-9ECF-EB509B30C727','641DA0F4-42A7-4DE3-9A57-95A606016655','ҪѲȡЧʩ','','',GETDATE(),3) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('123E15BA-8885-445A-8C88-FFEE69E6AAC3','641DA0F4-42A7-4DE3-9A57-95A606016655','ڷѲѲȡʩ','','',GETDATE(),4) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('98E970F7-58E2-4EFC-B74F-0D724B968ED2','641DA0F4-42A7-4DE3-9A57-95A606016655','Ҫ¶ȼƲԪʱͷס','','',GETDATE(),5) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('2340CB66-6CB4-47A6-A80C-F7C523E7F19D','641DA0F4-42A7-4DE3-9A57-95A606016655','ҪDZѲȡЧʩ','','',GETDATE(),6) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('FE74C3B5-33D7-4DB2-A234-CF61248AE508','641DA0F4-42A7-4DE3-9A57-95A606016655','ͽλ״̬ϳϴɨҪ','','',GETDATE(),7) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('C57CBFFD-B11F-4F8F-A637-B7EF6344B818','641DA0F4-42A7-4DE3-9A57-95A606016655','֧״̬ϳϴɨҪ','','',GETDATE(),8) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('BDD6D5B1-C82C-46A1-BCC5-5F66BFCE4C72','641DA0F4-42A7-4DE3-9A57-95A606016655','ưѲä塣','','',GETDATE(),9) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('C6171D1B-9B3C-47A5-A5BE-BB21525C67A9','641DA0F4-42A7-4DE3-9A57-95A606016655','豸ڼĭ̵ѲȡЧʩ','','',GETDATE(),10) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('2DA39968-C16D-4723-9932-80804B0F88E6','641DA0F4-42A7-4DE3-9A57-95A606016655','ϴܵ޹ϵͳäʩƱʾ','','',GETDATE(),11) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('11F562CB-9867-46E3-A42A-3DCF6C9B80A6','641DA0F4-42A7-4DE3-9A57-95A606016655','ųѼӹ̣ʱ̶ʩϳϴɨҪ','','',GETDATE(),12) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('435AF81B-23CD-4EE8-8023-7F26BF8672AA','641DA0F4-42A7-4DE3-9A57-95A606016655','ȫʩϳϴɨҪ','','',GETDATE(),13) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('948611DC-519D-465A-BBA2-5BD26C70C62A','641DA0F4-42A7-4DE3-9A57-95A606016655','ʩϳϴɨҪ','','',GETDATE(),14) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('2F77D05B-837C-4A74-AAAD-2BCDAF7444D7','641DA0F4-42A7-4DE3-9A57-95A606016655','','','',GETDATE(),15) +--WP03 ܵɨ +delete PreRun_WorkInspectTemplate where WorkInspectId='BC693EF5-405B-4341-8D7F-E1A7DF613CB5' +delete PreRun_WorkInspectTemplate where WorkInspectId='D1977C77-1823-4EC6-8B6A-576ED5C664BC' +delete PreRun_WorkInspectTemplate where WorkInspectId='BC5B90E2-BE72-4957-98CF-0018F8F79900' +delete PreRun_WorkInspectTemplate where WorkInspectId='B8700369-6E43-4D4A-8D35-5D46E064511C' +delete PreRun_WorkInspectTemplate where WorkInspectId='4CBE76B2-1760-428C-9855-30FBD610157D' +delete PreRun_WorkInspectTemplate where WorkInspectId='CC5718D2-10D4-449E-8527-3ABD6E12F120' +delete PreRun_WorkInspectTemplate where WorkInspectId='99068D60-FD45-4435-890C-52E5BC743645' +delete PreRun_WorkInspectTemplate where WorkInspectId='A830F841-C86F-45F6-A888-7EFFA9914F9C' +delete PreRun_WorkInspectTemplate where WorkInspectId='7671F673-6BF1-4A65-9848-6ED60E541C38' +delete PreRun_WorkInspectTemplate where WorkInspectId='41B4C1ED-0D00-4C8F-BDB6-8C3450330255' +delete PreRun_WorkInspectTemplate where WorkInspectId='A0CD44CB-48FC-46E7-A7EA-177B8D880409' +delete PreRun_WorkInspectTemplate where WorkInspectId='3C5F0A0B-0A45-45BE-BDC8-8444415DFEAC' +delete PreRun_WorkInspectTemplate where WorkInspectId='AE04B9B6-0143-411D-BD45-C53FEC73D78C' +delete PreRun_WorkInspectTemplate where WorkInspectId='F51EAB4B-96E8-48C6-848D-DD0EBEDA7539' +delete PreRun_WorkInspectTemplate where WorkInspectId='7428215F-D5BE-4FE3-98B9-6D962B13224B' +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('BC693EF5-405B-4341-8D7F-E1A7DF613CB5','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','ϴɨ·ڵĹܵѹϸ','','',GETDATE(),1) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('D1977C77-1823-4EC6-8B6A-576ED5C664BC','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','װƵĿװȡ','','',GETDATE(),2) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('BC5B90E2-BE72-4957-98CF-0018F8F79900','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','ҪѲȡЧʩ','','',GETDATE(),3) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('B8700369-6E43-4D4A-8D35-5D46E064511C','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','ڷѲѲȡʩ','','',GETDATE(),4) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('4CBE76B2-1760-428C-9855-30FBD610157D','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','Ҫ¶ȼƲԪʱͷס','','',GETDATE(),5) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('CC5718D2-10D4-449E-8527-3ABD6E12F120','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','ҪDZѲȡЧʩ','','',GETDATE(),6) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('99068D60-FD45-4435-890C-52E5BC743645','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','ͽλ״̬ϳϴɨҪ','','',GETDATE(),7) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('A830F841-C86F-45F6-A888-7EFFA9914F9C','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','֧״̬ϳϴɨҪ','','',GETDATE(),8) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('7671F673-6BF1-4A65-9848-6ED60E541C38','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','ưѲä塣','','',GETDATE(),9) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('41B4C1ED-0D00-4C8F-BDB6-8C3450330255','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','豸ڼĭ̵ѲȡЧʩ','','',GETDATE(),10) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('A0CD44CB-48FC-46E7-A7EA-177B8D880409','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','ϴܵ޹ϵͳäʩƱʾ','','',GETDATE(),11) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('3C5F0A0B-0A45-45BE-BDC8-8444415DFEAC','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','ųѼӹ̣ʱ̶ʩϳϴɨҪ','','',GETDATE(),12) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('AE04B9B6-0143-411D-BD45-C53FEC73D78C','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','ȫʩϳϴɨҪ','','',GETDATE(),13) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('F51EAB4B-96E8-48C6-848D-DD0EBEDA7539','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','ʩϳϴɨҪ','','',GETDATE(),14) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('7428215F-D5BE-4FE3-98B9-6D962B13224B','BEB24AE8-F66D-458B-ADFD-3810405B5EB8','','','',GETDATE(),15) +--WP05 ѧϴ +delete PreRun_WorkInspectTemplate where WorkInspectId='2C74C5DE-D600-425E-9870-061715D0AA93' +delete PreRun_WorkInspectTemplate where WorkInspectId='F2F146F9-4A2A-40E2-9FA3-83B954DF4775' +delete PreRun_WorkInspectTemplate where WorkInspectId='EF527C06-4CAB-46EC-A6C6-FB5C9152C03B' +delete PreRun_WorkInspectTemplate where WorkInspectId='25D55B52-6083-4856-BEAA-F983DB250CE2' +delete PreRun_WorkInspectTemplate where WorkInspectId='14DBD15B-F40E-4FAD-B903-5FACEF1D85F4' +delete PreRun_WorkInspectTemplate where WorkInspectId='89D04B6E-16D0-4870-B006-7ADA9FED4F8D' +delete PreRun_WorkInspectTemplate where WorkInspectId='B534309B-1767-47A2-9729-46ACB732AAD2' +delete PreRun_WorkInspectTemplate where WorkInspectId='D76DB877-D8C6-45EB-BDB0-E33AC3EA3272' +delete PreRun_WorkInspectTemplate where WorkInspectId='6CB94B9D-2ED6-4C6D-A164-1AE8EE3CB02E' +delete PreRun_WorkInspectTemplate where WorkInspectId='F9B9A741-A9F1-4863-86C1-B061A4645B1F' +delete PreRun_WorkInspectTemplate where WorkInspectId='4C1F3A32-A3CF-48A9-83A5-ACD7C6CBE644' +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('2C74C5DE-D600-425E-9870-061715D0AA93','474F94B6-E927-4E9A-A544-F8E1AE63F6FF','ѧϴ·Ĺܵѹϸ','','',GETDATE(),1) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('F2F146F9-4A2A-40E2-9FA3-83B954DF4775','474F94B6-E927-4E9A-A544-F8E1AE63F6FF','ϵͳ·ıáѹѵԳϸ','','',GETDATE(),2) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('EF527C06-4CAB-46EC-A6C6-FB5C9152C03B','474F94B6-E927-4E9A-A544-F8E1AE63F6FF','ҪDZڷѲȡЧʩ','','',GETDATE(),3) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('25D55B52-6083-4856-BEAA-F983DB250CE2','474F94B6-E927-4E9A-A544-F8E1AE63F6FF','ϵͳе豸ڼѲȡʩ','','',GETDATE(),4) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('14DBD15B-F40E-4FAD-B903-5FACEF1D85F4','474F94B6-E927-4E9A-A544-F8E1AE63F6FF','ҪIJԪʱͷס','','',GETDATE(),5) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('89D04B6E-16D0-4870-B006-7ADA9FED4F8D','474F94B6-E927-4E9A-A544-F8E1AE63F6FF','֧ܵܰװϷҪ','','',GETDATE(),6) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('B534309B-1767-47A2-9729-46ACB732AAD2','474F94B6-E927-4E9A-A544-F8E1AE63F6FF','֧״̬ϻѧϴҪ','','',GETDATE(),7) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('D76DB877-D8C6-45EB-BDB0-E33AC3EA3272','474F94B6-E927-4E9A-A544-F8E1AE63F6FF','ưѲä塣','','',GETDATE(),8) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('6CB94B9D-2ED6-4C6D-A164-1AE8EE3CB02E','474F94B6-E927-4E9A-A544-F8E1AE63F6FF','ϴϵͳ޹ϵͳäʩƱʾ','','',GETDATE(),9) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('F9B9A741-A9F1-4863-86C1-B061A4645B1F','474F94B6-E927-4E9A-A544-F8E1AE63F6FF','ѧϴʱʩԴҩƷѧߵȽѱ롣','','',GETDATE(),10) +INSERT INTO dbo.PreRun_WorkInspectTemplate(WorkInspectId,WorkPackId,WorkInspectName,Remark,AddUser,AddTime,Sort) VALUES('4C1F3A32-A3CF-48A9-83A5-ACD7C6CBE644','474F94B6-E927-4E9A-A544-F8E1AE63F6FF','ȫʩϻѧϴҪ','','',GETDATE(),11) +GO + +--==ϵͳ +if object_id(N'PreRun_SubInspectTerm',N'U') is not null +drop table dbo.PreRun_SubInspectTerm +CREATE TABLE dbo.PreRun_SubInspectTerm( + SubInspectId varchar(50) NOT NULL,-- + ProjectId varchar(50) NULL,--Ŀ + InstallationId varchar(50) NULL,--װ(ֶΣڹ) + ProcessesId varchar(50) NULL,--(ֶΣڹ) + SystemId varchar(50) NULL,--ϵͳ(ֶΣڹ) + SubSystemId varchar(50) NULL,--ϵͳ + WorkPackId varchar(50) NULL,-- + InspectResult varchar(500) NULL,-- + InspectTime datetime NULL,--ʱ + AddUser varchar(50) NULL,-- + AddTime datetime NULL,-- + CONSTRAINT PK_PreRun_SubInspectTerm PRIMARY KEY CLUSTERED +( + SubInspectId ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] +GO + +--==ϵͳ +if object_id(N'PreRun_SubInspectTermItem',N'U') is not null +drop table dbo.PreRun_SubInspectTermItem +CREATE TABLE dbo.PreRun_SubInspectTermItem( + SubItemId varchar(50) NOT NULL,-- + SubInspectId varchar(50) NULL,-- + WorkPackId varchar(50) NULL,-- + ProjectId varchar(50) NULL,--Ŀ + WorkInspectId varchar(50) NOT NULL,--ģ + WorkInspectName varchar(500) NULL,-- + InstallationId varchar(50) NULL,--װ(ֶΣڹ) + ProcessesId varchar(50) NULL,--(ֶΣڹ) + SystemId varchar(50) NULL,--ϵͳ(ֶΣڹ) + SubSystemId varchar(50) NULL,--ϵͳ + InspectedUser varchar(50) NULL,-- + InspectionResults int NULL,--0:δͨ 1:ͨ + InspectionIllustrate varchar(200) NULL,--˵ + Remark varchar(200) NULL,--ע + AddUser varchar(50) NULL,-- + AddTime datetime NULL,-- + Sort int NULL,-- + CONSTRAINT PK_PreRun_SubInspectTermItem PRIMARY KEY CLUSTERED +( + SubItemId ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] +GO + + diff --git a/SGGL/BLL/Common/NPOIHelper.cs b/SGGL/BLL/Common/NPOIHelper.cs index 505431e9..ee58679b 100644 --- a/SGGL/BLL/Common/NPOIHelper.cs +++ b/SGGL/BLL/Common/NPOIHelper.cs @@ -205,6 +205,8 @@ namespace BLL for (int i = startIndex; i <= lastIndex; i++) { IRow row = sheet.GetRow(i); + //移除空行 + if (row.Cells.Count(p => !string.IsNullOrWhiteSpace(p.ToString())) == 0) continue; DataRow drNew = dt.NewRow(); if (row != null) { @@ -298,6 +300,8 @@ namespace BLL { IRow row = sheet.GetRow(i); DataRow dataRow = dt.NewRow(); + //移除空行 + if (row.Cells.Count(p => !string.IsNullOrWhiteSpace(p.ToString())) == 0) continue; for (int j = row.FirstCellNum; j < cellCount; j++) { diff --git a/SGGL/FineUIPro.Web/File/Excel/TestRun/管道一览表.xlsx b/SGGL/FineUIPro.Web/File/Excel/TestRun/管道一览表.xlsx index 2c1f4f697ae219776e972a05678024ba09e7d4dd..3ff4f51bbac8068729a545a5763fafacea1b947e 100644 GIT binary patch delta 5030 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 diff --git a/SGGL/FineUIPro.Web/File/Excel/TestRun/设备一览表.xlsx b/SGGL/FineUIPro.Web/File/Excel/TestRun/设备一览表.xlsx index c6be63f1637dae321be87e593cef168017285004..0ff4a7fc1134d8e92427efa2809fba79ae67ef3c 100644 GIT binary patch literal 47764 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 Xs7i8oZuSQVeCrAe delta 4832 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 M_U9O7^nWA&0@yA4+yDRo diff --git a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj index 0179e2db..3066779f 100644 --- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj +++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj @@ -1595,10 +1595,14 @@ + + + + @@ -1925,6 +1929,9 @@ + + + @@ -14808,6 +14815,20 @@ DeviceRunEdit.aspx + + InspectTemplate.aspx + ASPXCodeBehind + + + InspectTemplate.aspx + + + InspectTemplateEdit.aspx + ASPXCodeBehind + + + InspectTemplateEdit.aspx + SelectProperty.aspx ASPXCodeBehind @@ -14829,6 +14850,13 @@ SetWorkPackage.aspx + + SubInspectTerm.aspx + ASPXCodeBehind + + + SubInspectTerm.aspx + SubSysWorkPackage.aspx ASPXCodeBehind @@ -14836,6 +14864,13 @@ SubSysWorkPackage.aspx + + SubWorkInspect.aspx + ASPXCodeBehind + + + SubWorkInspect.aspx + SysPipingDeviceImport.aspx ASPXCodeBehind diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplate.aspx b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplate.aspx new file mode 100644 index 00000000..8d4f094e --- /dev/null +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplate.aspx @@ -0,0 +1,93 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="InspectTemplate.aspx.cs" Inherits="FineUIPro.Web.TestRun.BeforeTestRun.InspectTemplate" %> + + + + + + 工作包模板管理 + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplate.aspx.cs b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplate.aspx.cs new file mode 100644 index 00000000..53492268 --- /dev/null +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplate.aspx.cs @@ -0,0 +1,236 @@ +using BLL; +using Model; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace FineUIPro.Web.TestRun.BeforeTestRun +{ + public partial class InspectTemplate : PageBase + { + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + this.InitTreeMenu();//加载树 + } + } + + #region 数绑定 + + /// + /// 加载树 + /// + private void InitTreeMenu() + { + this.tvControlItem.Nodes.Clear(); + TreeNode rootNode = new TreeNode(); + rootNode.Text = "工作包模板设置"; + rootNode.NodeID = "0"; + rootNode.Expanded = true; + rootNode.ToolTip = ""; + rootNode.EnableClickEvent = true; + this.tvControlItem.Nodes.Add(rootNode); + var list = Funs.DB.PreRun_WorkPackage.OrderBy(x => x.Sort).ToList(); + foreach (var item in list) + { + TreeNode rootUnitNode = new TreeNode();//定义根节点 + rootUnitNode.NodeID = item.WorkPackId; + rootUnitNode.Text = item.WorkPackCode; + rootUnitNode.ToolTip = item.WorkPackName; + rootUnitNode.CommandName = ""; + rootUnitNode.EnableClickEvent = true; + rootUnitNode.EnableExpandEvent = true; + rootUnitNode.Expanded = true; + rootNode.Nodes.Add(rootUnitNode); + } + } + + /// + /// 点击TreeView + /// + protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) + { + this.BindGrid(); + } + + #endregion + + #region 数据绑定 + + /// + /// 绑定数据 + /// + public void BindGrid() + { + string strSql = @"select * from PreRun_WorkInspectTemplate where WorkPackId=@WorkPackId "; + List listStr = new List(); + listStr.Add(new SqlParameter("@WorkPackId", this.tvControlItem.SelectedNodeID)); + if (!string.IsNullOrWhiteSpace(txtsWorkInspectName.Text)) + { + strSql += "and WorkInspectName like '%" + txtsWorkInspectName.Text + "%'"; + } + strSql += " order by Sort asc"; + + SqlParameter[] parameter = listStr.ToArray(); + DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); + Grid1.RecordCount = tb.Rows.Count; + var table = this.GetPagedDataTable(Grid1, tb); + Grid1.DataSource = table; + Grid1.DataBind(); + } + + /// + /// 搜索 + /// + protected void btnSearch_Click(object sender, EventArgs e) + { + BindGrid(); + } + + /// + /// 分页 + /// + protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) + { + Grid1.PageIndex = e.NewPageIndex; + BindGrid(); + } + + /// + /// 排序 + /// + + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + Grid1.SortDirection = e.SortDirection; + Grid1.SortField = e.SortField; + BindGrid(); + } + + /// + /// 分页下拉框事件 + /// + protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) + { + Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); + BindGrid(); + } + + /// + /// 行按钮事件 + /// + protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) + { + if (e.CommandName == "Delete") + { + string rowID = e.RowID; + var model = Funs.DB.PreRun_WorkInspectTemplate.FirstOrDefault(p => p.WorkInspectId == rowID); + if (model != null) + { + Funs.DB.PreRun_WorkInspectTemplate.DeleteOnSubmit(model); + Funs.DB.SubmitChanges(); + BindGrid(); + ShowNotify("删除成功!"); + } + else + { + ShowNotify("删除错误!"); + } + } + } + + #endregion + + /// + /// 保存 + /// + protected void btnSave_Click(object sender, EventArgs e) + { + try + { + JArray mergedData = Grid1.GetMergedData(); + foreach (JObject mergedRow in mergedData) + { + string status = mergedRow.Value("status"); + JObject values = mergedRow.Value("values"); + int i = mergedRow.Value("index"); + var rowid = this.Grid1.Rows[i].DataKeys[0].ToString(); + var add = false; + PreRun_WorkInspectTemplate model = Funs.DB.PreRun_WorkInspectTemplate.FirstOrDefault(x => x.WorkInspectId == rowid); + if (model == null) + { + add = true; + model = new PreRun_WorkInspectTemplate(); + model.WorkInspectId = Guid.NewGuid().ToString(); + model.AddUser = this.CurrUser.UserId; + model.AddTime = DateTime.Now; + model.Sort = i; + } + model.WorkPackId = this.tvControlItem.SelectedNodeID; + model.WorkInspectName = values.Value("WorkInspectName"); + model.Remark = values.Value("Remark"); + if (add) Funs.DB.PreRun_WorkInspectTemplate.InsertOnSubmit(model); + Funs.DB.SubmitChanges(); + } + BindGrid(); + ShowNotify("修改成功!"); + } + catch (Exception ex) + { + ShowNotify(ex.Message, MessageBoxIcon.Error); + } + } + + /// + /// 新增 + /// + protected void btnAdd_Click(object sender, EventArgs e) + { + if (string.IsNullOrWhiteSpace(this.tvControlItem.SelectedNodeID)) + { + ShowNotify("请选择工作包!", MessageBoxIcon.Warning); + return; + } + this.hidSelectedNodeID.Text = string.Empty; + PageContext.RegisterStartupScript(Window1.GetSaveStateReference(hidSelectedNodeID.ClientID) + + Window1.GetShowReference($"InspectTemplateEdit.aspx?WorkInspectId=&WorkPackId={this.tvControlItem.SelectedNodeID}", "新增")); + } + + /// + /// 编辑 + /// + protected void btnEdit_Click(object sender, EventArgs e) + { + if (Grid1.SelectedRowIndexArray.Length == 0) + { + ShowNotify("请选择一条数据!", MessageBoxIcon.Warning); + return; + } + var rowIndex = Grid1.SelectedRowIndex; + var rowId = Grid1.DataKeys[rowIndex][0].ToString(); + var workPackId = Grid1.DataKeys[rowIndex][1].ToString(); + this.hidSelectedNodeID.Text = string.Empty; + PageContext.RegisterStartupScript(Window1.GetSaveStateReference(hidSelectedNodeID.ClientID) + + Window1.GetShowReference($"InspectTemplateEdit.aspx?WorkInspectId={rowId}&WorkPackId={workPackId}", "编辑")); + } + + /// + /// 新增/编辑关闭 + /// + protected void Window1_Close(object sender, WindowCloseEventArgs e) + { + if (!string.IsNullOrWhiteSpace(hidSelectedNodeID.Text)) + { + this.tvControlItem.SelectedNodeID = hidSelectedNodeID.Text; + BindGrid(); + } + } + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplate.aspx.designer.cs b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplate.aspx.designer.cs new file mode 100644 index 00000000..a9df4f90 --- /dev/null +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplate.aspx.designer.cs @@ -0,0 +1,197 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.TestRun.BeforeTestRun +{ + + + public partial class InspectTemplate + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// panelLeftRegion 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel panelLeftRegion; + + /// + /// tvControlItem 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Tree tvControlItem; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar1; + + /// + /// txtsWorkInspectName 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtsWorkInspectName; + + /// + /// btnSearch 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnSearch; + + /// + /// ToolbarFill 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarFill ToolbarFill; + + /// + /// btnAdd 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnAdd; + + /// + /// btnEdit 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnEdit; + + /// + /// btnSave 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnSave; + + /// + /// hidSelectedNodeID 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.HiddenField hidSelectedNodeID; + + /// + /// txtWorkInspectName 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtWorkInspectName; + + /// + /// txtRemark 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtRemark; + + /// + /// ToolbarSeparator2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarSeparator ToolbarSeparator2; + + /// + /// ToolbarText2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarText ToolbarText2; + + /// + /// ddlPageSize 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList ddlPageSize; + + /// + /// Window1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Window1; + } +} diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplateEdit.aspx b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplateEdit.aspx new file mode 100644 index 00000000..a2b65114 --- /dev/null +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplateEdit.aspx @@ -0,0 +1,64 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="InspectTemplateEdit.aspx.cs" Inherits="FineUIPro.Web.TestRun.BeforeTestRun.InspectTemplateEdit" %> + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplateEdit.aspx.cs b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplateEdit.aspx.cs new file mode 100644 index 00000000..35286404 --- /dev/null +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplateEdit.aspx.cs @@ -0,0 +1,105 @@ +using BLL; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace FineUIPro.Web.TestRun.BeforeTestRun +{ + public partial class InspectTemplateEdit : PageBase + { + + /// + /// 工作包主键 + /// + public string WorkPackId + { + get { return (string)ViewState["WorkPackId"]; } + set { ViewState["WorkPackId"] = value; } + } + + /// + /// 主键 + /// + public string WorkInspectId + { + get { return (string)ViewState["WorkInspectId"]; } + set { ViewState["WorkInspectId"] = value; } + } + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + this.WorkInspectId = Request.Params["WorkInspectId"]; + this.WorkPackId = Request.Params["WorkPackId"]; + PageInit(); + } + } + + /// + /// 默认绑定 + /// + public void PageInit() + { + if (!string.IsNullOrWhiteSpace(this.WorkInspectId)) + { + var modelQuery = from temp in Funs.DB.PreRun_WorkInspectTemplate + join workpack in Funs.DB.PreRun_WorkPackage on temp.WorkPackId equals workpack.WorkPackId + where temp.WorkInspectId == this.WorkInspectId + select new { temp.WorkInspectId, temp.WorkInspectName, temp.Sort, temp.Remark, temp.WorkPackId, workpack.WorkPackName, workpack.WorkPackCode }; + if (modelQuery.Count() > 0) + { + var model = modelQuery.FirstOrDefault(); + lblgzbmc.Text = model.WorkPackName; + lblgzbbm.Text = model.WorkPackCode; + txtWorkInspectName.Text = model.WorkInspectName; + txtRemark.Text = model.Remark; + txtSort.Text = model.Sort != null ? model.Sort.ToString() : (Funs.DB.PreRun_WorkInspectTemplate.Count(x => x.WorkPackId == this.WorkPackId) + 1).ToString(); + } + } + else + { + var model = Funs.DB.PreRun_WorkPackage.FirstOrDefault(x => x.WorkPackId == this.WorkPackId); + if (model != null) + { + lblgzbmc.Text = model.WorkPackName; + lblgzbbm.Text = model.WorkPackCode; + txtSort.Text = (Funs.DB.PreRun_WorkInspectTemplate.Count(x => x.WorkPackId == this.WorkPackId) + 1).ToString(); + } + } + } + + /// + /// 保存 + /// + protected void btnSave_Click(object sender, EventArgs e) + { + try + { + var model = Funs.DB.PreRun_WorkInspectTemplate.FirstOrDefault(x => x.WorkInspectId == this.WorkInspectId); + if (model == null) model = new Model.PreRun_WorkInspectTemplate(); + model.WorkInspectName = txtWorkInspectName.Text; + model.Remark = txtRemark.Text; + model.WorkPackId = this.WorkPackId; + model.Sort = int.Parse(txtSort.Text); + if (string.IsNullOrWhiteSpace(this.WorkInspectId)) + { + model.WorkInspectId = Guid.NewGuid().ToString(); + model.AddUser = this.CurrUser.UserId; + model.AddTime = DateTime.Now; + Funs.DB.PreRun_WorkInspectTemplate.InsertOnSubmit(model); + } + Funs.DB.SubmitChanges(); + ShowNotify("保存成功!", MessageBoxIcon.Success); + PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(this.WorkPackId) + ActiveWindow.GetHidePostBackReference()); + } + catch (Exception ex) + { + ShowNotify(ex.Message, MessageBoxIcon.Error); + } + } + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplateEdit.aspx.designer.cs b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplateEdit.aspx.designer.cs new file mode 100644 index 00000000..723161fb --- /dev/null +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectTemplateEdit.aspx.designer.cs @@ -0,0 +1,152 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.TestRun.BeforeTestRun +{ + + + public partial class InspectTemplateEdit + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// SimpleForm1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Form SimpleForm1; + + /// + /// Toolbar1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar1; + + /// + /// ToolbarFill1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarFill ToolbarFill1; + + /// + /// btnSave 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnSave; + + /// + /// hdAttachUrl 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.HiddenField hdAttachUrl; + + /// + /// hdId 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.HiddenField hdId; + + /// + /// ContentPanel2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ContentPanel ContentPanel2; + + /// + /// Form2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Form Form2; + + /// + /// lblgzbmc 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Label lblgzbmc; + + /// + /// lblgzbbm 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Label lblgzbbm; + + /// + /// txtWorkInspectName 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextArea txtWorkInspectName; + + /// + /// txtRemark 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtRemark; + + /// + /// txtSort 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.NumberBox txtSort; + } +} diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubInspectTerm.aspx b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubInspectTerm.aspx new file mode 100644 index 00000000..1e80653d --- /dev/null +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubInspectTerm.aspx @@ -0,0 +1,83 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SubInspectTerm.aspx.cs" Inherits="FineUIPro.Web.TestRun.BeforeTestRun.SubInspectTerm" %> + + + + + + 生成工作包检查 + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubInspectTerm.aspx.cs b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubInspectTerm.aspx.cs new file mode 100644 index 00000000..ba0b4331 --- /dev/null +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubInspectTerm.aspx.cs @@ -0,0 +1,367 @@ +using BLL; +using Model; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace FineUIPro.Web.TestRun.BeforeTestRun +{ + public partial class SubInspectTerm : PageBase + { + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + this.InitTreeMenu();//加载树 + } + } + + #region 树绑定 + + /// + /// 加载树 + /// + private void InitTreeMenu() + { + this.tvControlItem.Nodes.Clear(); + TreeNode rootNode = new TreeNode(); + rootNode.Text = "检查表"; + rootNode.NodeID = "0"; + rootNode.Expanded = true; + rootNode.ToolTip = ""; + rootNode.EnableClickEvent = true; + this.tvControlItem.Nodes.Add(rootNode); + var list = from a in Funs.DB.PreRun_SysDevice + join b in Funs.DB.PreRun_SubSysWorkPackage on a.PreRunId equals b.SubSystemId + join c in Funs.DB.PreRun_WorkPackage on b.WorkPackId equals c.WorkPackId + where a.ProjectId == this.CurrUser.LoginProjectId + select new { a.PreRunId, a.PreRunCode, a.PreRunName, a.ProjectId, c.WorkPackId, c.WorkPackCode, c.WorkPackName }; + + if (list.Count() > 0) + { + var subList = list.GroupBy(x => new { x.PreRunId, x.PreRunCode, x.PreRunName }); + foreach (var item in subList) + { + TreeNode rootUnitNode = new TreeNode();//定义根节点 + rootUnitNode.NodeID = item.Key.PreRunId; + rootUnitNode.Text = item.Key.PreRunName; + rootUnitNode.ToolTip = item.Key.PreRunName; + rootUnitNode.CommandName = ""; + rootUnitNode.EnableClickEvent = true; + rootUnitNode.EnableExpandEvent = true; + rootNode.Nodes.Add(rootUnitNode); + rootUnitNode.Expanded = true; + var worklist = list.Where(a => a.PreRunId == item.Key.PreRunId).GroupBy(x => new { x.WorkPackId, x.WorkPackCode, x.WorkPackName }).ToList(); + if (worklist.Count > 0) + { + foreach (var itemWork in worklist) + { + TreeNode newNode = new TreeNode(); + newNode.Text = itemWork.Key.WorkPackName; + newNode.NodeID = itemWork.Key.WorkPackId + "|" + item.Key.PreRunId; + newNode.ToolTip = itemWork.Key.WorkPackName; + newNode.CommandName = ""; + newNode.EnableClickEvent = true; + rootUnitNode.Nodes.Add(newNode); + } + } + } + } + + } + + /// + /// 点击TreeView + /// + protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) + { + this.BindGrid(); + } + + #endregion + + #region 数据绑定 + + /// + /// 绑定数据 + /// + public void BindGrid() + { + var workPackId = this.tvControlItem.SelectedNodeID.Split('|').First(); + var subSystemId = this.tvControlItem.SelectedNodeID.Split('|').Last(); + //获取子系统 + var subSysModel = Funs.DB.PreRun_SysDevice.FirstOrDefault(x => x.PreRunId == subSystemId); + var list = Funs.DB.PreRun_SubInspectTermItem.Where(x => x.WorkPackId == workPackId && x.SubSystemId == subSystemId).ToList(); + if (list.Count == 0) + { + list = new List(); + var defaultDatas = Funs.DB.PreRun_WorkInspectTemplate.Where(s => s.WorkPackId == workPackId).ToList(); + if (defaultDatas.Count > 0) + { + int index = 0; + foreach (var item in defaultDatas) + { + var model = new PreRun_SubInspectTermItem(); + model.SubItemId = Guid.NewGuid().ToString(); + model.ProjectId = this.CurrUser.LoginProjectId; + model.WorkPackId = item.WorkPackId; + model.WorkInspectId = item.WorkInspectId; + model.WorkInspectName = item.WorkInspectName; + model.InstallationId = subSysModel.InstallationId; + model.ProcessesId = subSysModel.ProcessesId; + model.SystemId = subSysModel.SystemId; + model.SubSystemId = subSysModel.PreRunId; + model.Sort = index + 1; + list.Add(model); + index++; + } + } + } + + Grid1.DataSource = list; + Grid1.DataBind(); + //检查人绑定 + var userList = from user in Funs.DB.Sys_User join projectrole in Funs.DB.Project_ProjectUser on user.UserId equals projectrole.UserId where projectrole.ProjectId == this.CurrUser.LoginProjectId select user; + + var userids = new List() { Const.sysglyId, Const.hfnbdId, Const.sedinId }; + var addUserList = Funs.DB.Sys_User.Where(x => userids.Contains(x.UserId)); + var data = userList.ToList(); + if (addUserList.Count() > 0) + { + data.AddRange(addUserList); + } + DropDownList ddlInspectedUser = Grid1.FindColumn("InspectedUser").FindControl("ddlInspectedUser") as DropDownList; + ddlInspectedUser.DataTextField = "UserName"; + ddlInspectedUser.DataValueField = "UserId"; + ddlInspectedUser.DataSource = data; + ddlInspectedUser.DataBind(); + //Funs.FineUIPleaseSelect(ddlInspectedUser); + + } + + /// + /// 排序 + /// + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + Grid1.SortDirection = e.SortDirection; + Grid1.SortField = e.SortField; + BindGrid(); + } + + + /// + /// 行按钮事件 + /// + protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) + { + if (e.CommandName == "Delete") + { + string rowID = e.RowID; + var model = Funs.DB.PreRun_SubInspectTermItem.FirstOrDefault(p => p.SubItemId == rowID); + if (model != null) + { + Funs.DB.PreRun_SubInspectTermItem.DeleteOnSubmit(model); + Funs.DB.SubmitChanges(); + BindGrid(); + ShowNotify("删除成功!"); + } + else + { + var list = gvList(); + list.RemoveAll(x => x.SubItemId == rowID); + Grid1.DataSource = list; + Grid1.DataBind(); + ShowNotify("删除成功!"); + } + } + } + + #endregion + + /// + /// 保存 + /// + protected void btnSave_Click(object sender, EventArgs e) + { + try + { + if (Grid1.SelectedRowIndexArray.Length == 0) + { + ShowNotify("请选择一条数据!", MessageBoxIcon.Warning); + return; + } + var workPackId = this.tvControlItem.SelectedNodeID.Split('|').First(); + var subSystemId = this.tvControlItem.SelectedNodeID.Split('|').Last(); + var subTrem = Funs.DB.PreRun_SubInspectTerm.FirstOrDefault(x => x.SubSystemId == subSystemId && x.WorkPackId == workPackId); + JArray mergedData = Grid1.GetMergedData(); + foreach (JObject mergedRow in mergedData) + { + string status = mergedRow.Value("status"); + JObject values = mergedRow.Value("values"); + int i = mergedRow.Value("index"); + var subItemId = this.Grid1.Rows[i].DataKeys[0].ToString(); + var workInspectId = this.Grid1.Rows[i].DataKeys[1].ToString(); + if (!Grid1.SelectedRowIndexArray.Contains(i)) continue; + + //获取子系统信息 + var list = new List(); + var subSysModel = Funs.DB.PreRun_SysDevice.FirstOrDefault(x => x.PreRunId == subSystemId); + if (subSysModel != null) + { + //获取子系统工作包检查表,如果不存在则添加 + if (subTrem == null) + { + subTrem = new PreRun_SubInspectTerm(); + subTrem.SubInspectId = Guid.NewGuid().ToString(); + subTrem.WorkPackId = workPackId; + subTrem.ProjectId = this.CurrUser.LoginProjectId; + subTrem.InstallationId = subSysModel.InstallationId; + subTrem.ProcessesId = subSysModel.ProcessesId; + subTrem.SystemId = subSysModel.SystemId; + subTrem.SubSystemId = subSysModel.PreRunId; + subTrem.AddUser = this.CurrUser.UserId; + subTrem.AddTime = DateTime.Now; + Funs.DB.PreRun_SubInspectTerm.InsertOnSubmit(subTrem); + } + + var model = Funs.DB.PreRun_SubInspectTermItem.FirstOrDefault(x => x.SubItemId == subItemId); + if (model == null) + { + model = new PreRun_SubInspectTermItem(); + model.SubItemId = subItemId; + model.SubInspectId = subTrem.SubInspectId; + model.WorkPackId = workPackId; + model.ProjectId = this.CurrUser.LoginProjectId; + model.WorkInspectId = workInspectId; + model.WorkInspectName = values.Value("WorkInspectName"); + model.InstallationId = subSysModel.InstallationId; + model.ProcessesId = subSysModel.ProcessesId; + model.SystemId = subSysModel.SystemId; + model.SubSystemId = subSysModel.PreRunId; + model.InspectedUser = !string.IsNullOrWhiteSpace(values.Value("InspectedUser")) ? values.Value("InspectedUser") : string.Empty; + model.AddUser = this.CurrUser.UserId; + model.AddTime = DateTime.Now; + model.Sort = i + 1; + Funs.DB.PreRun_SubInspectTermItem.InsertOnSubmit(model); + } + else + { + model.InspectedUser = !string.IsNullOrWhiteSpace(values.Value("InspectedUser")) ? values.Value("InspectedUser") : string.Empty; + model.WorkInspectName = values.Value("WorkInspectName"); + Funs.DB.SubmitChanges(); + } + } + Funs.DB.SubmitChanges(); + } + BindGrid(); + ShowNotify("保存成功!"); + } + catch (Exception ex) + { + ShowNotify(ex.Message, MessageBoxIcon.Error); + } + } + + /// + /// 新增 + /// + protected void btnAdd_Click(object sender, EventArgs e) + { + var list = gvList(); + var workPackId = this.tvControlItem.SelectedNodeID.Split('|').First(); + var subSystemId = this.tvControlItem.SelectedNodeID.Split('|').Last(); + //获取子系统 + var subSysModel = Funs.DB.PreRun_SysDevice.FirstOrDefault(x => x.PreRunId == subSystemId); + if (subSysModel != null) + { + var model = new PreRun_SubInspectTermItem(); + model.SubItemId = Guid.NewGuid().ToString(); + model.ProjectId = this.CurrUser.LoginProjectId; + model.WorkPackId = workPackId; + model.WorkInspectId = string.Empty; + model.WorkInspectName = string.Empty; + model.InstallationId = subSysModel.InstallationId; + model.ProcessesId = subSysModel.ProcessesId; + model.SystemId = subSysModel.SystemId; + model.SubSystemId = subSysModel.PreRunId; + model.Sort = list.Count + 1; + list.Add(model); + } + Grid1.DataSource = list; + Grid1.DataBind(); + } + + /// + /// 入场人员培训及特种作业报验人数集合 + /// + private List gvList() + { + List list = new List(); + JArray mergedData = Grid1.GetMergedData(); + foreach (JObject mergedRow in mergedData) + { + string status = mergedRow.Value("status"); + JObject values = mergedRow.Value("values"); + int i = mergedRow.Value("index"); + var subItemId = this.Grid1.Rows[i].DataKeys[0].ToString(); + var workInspectId = this.Grid1.Rows[i].DataKeys[1] != null ? this.Grid1.Rows[i].DataKeys[1].ToString() : string.Empty; ; + var subInspectId = this.Grid1.Rows[i].DataKeys[2] != null ? this.Grid1.Rows[i].DataKeys[2].ToString() : string.Empty; + var workPackId = this.Grid1.Rows[i].DataKeys[3].ToString(); + var installationId = this.Grid1.Rows[i].DataKeys[4].ToString(); + var processesId = this.Grid1.Rows[i].DataKeys[4].ToString(); + var systemId = this.Grid1.Rows[i].DataKeys[4].ToString(); + var subSystemId = this.Grid1.Rows[i].DataKeys[4].ToString(); + + var model = new PreRun_SubInspectTermItem(); + model = new PreRun_SubInspectTermItem(); + model.SubItemId = subItemId; + model.SubInspectId = subInspectId; + model.WorkPackId = workPackId; + model.ProjectId = this.CurrUser.LoginProjectId; + model.WorkInspectId = workInspectId; + model.WorkInspectName = values.Value("WorkInspectName"); + model.InstallationId = installationId; + model.ProcessesId = processesId; + model.SystemId = systemId; + model.SubSystemId = subSystemId; + model.InspectedUser = !string.IsNullOrWhiteSpace(values.Value("InspectedUser")) ? values.Value("InspectedUser") : string.Empty; + model.AddUser = this.CurrUser.UserId; + model.AddTime = DateTime.Now; + model.Sort = i + 1; + list.Add(model); + } + return list; + } + + /// + /// 检测结果 + /// + /// + public string Results(object value) + { + var result = string.Empty; + + if (value != null) + { + var intVal = int.Parse(value.ToString()); + if (intVal == 1) + { + result = "通过"; + } + else if (intVal == 0) + { + result = "未通过"; + } + } + + return result; + } + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubInspectTerm.aspx.designer.cs b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubInspectTerm.aspx.designer.cs new file mode 100644 index 00000000..3e1fd3a0 --- /dev/null +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubInspectTerm.aspx.designer.cs @@ -0,0 +1,134 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.TestRun.BeforeTestRun +{ + + + public partial class SubInspectTerm + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// panelLeftRegion 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel panelLeftRegion; + + /// + /// tvControlItem 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Tree tvControlItem; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar1; + + /// + /// ToolbarFill 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarFill ToolbarFill; + + /// + /// btnAdd 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnAdd; + + /// + /// btnSave 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnSave; + + /// + /// txtWorkInspectName 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtWorkInspectName; + + /// + /// ddlInspectedUser 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList ddlInspectedUser; + + /// + /// lblInspectionResults 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label lblInspectionResults; + } +} diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubSysWorkPackage.aspx b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubSysWorkPackage.aspx index bf17dce7..e998d896 100644 --- a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubSysWorkPackage.aspx +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubSysWorkPackage.aspx @@ -56,29 +56,26 @@ diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubSysWorkPackage.aspx.cs b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubSysWorkPackage.aspx.cs index 1a80eb10..9f88979f 100644 --- a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubSysWorkPackage.aspx.cs +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubSysWorkPackage.aspx.cs @@ -135,8 +135,8 @@ namespace FineUIPro.Web.TestRun.BeforeTestRun if (list.Count(p => p.PreRunLevel == 2) > 0) { gx.Hidden = false; - lblgxmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 2).PreRunName; - lblgxbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 2).PreRunCode; + lblgxmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 2).PreRunCode; + lblgxbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 2).PreRunName; } if (list.Count(p => p.PreRunLevel == 3) > 0) { diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubSysWorkPackage.aspx.designer.cs b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubSysWorkPackage.aspx.designer.cs index afcb7e51..e0d97e5b 100644 --- a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubSysWorkPackage.aspx.designer.cs +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubSysWorkPackage.aspx.designer.cs @@ -120,15 +120,6 @@ namespace FineUIPro.Web.TestRun.BeforeTestRun { /// protected global::FineUIPro.FormRow zz; - /// - /// lblzzbm 控件。 - /// - /// - /// 自动生成的字段。 - /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 - /// - protected global::FineUIPro.Label lblzzbm; - /// /// lblzzmc 控件。 /// @@ -138,6 +129,15 @@ namespace FineUIPro.Web.TestRun.BeforeTestRun { /// protected global::FineUIPro.Label lblzzmc; + /// + /// lblzzbm 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Label lblzzbm; + /// /// gx 控件。 /// @@ -147,15 +147,6 @@ namespace FineUIPro.Web.TestRun.BeforeTestRun { /// protected global::FineUIPro.FormRow gx; - /// - /// lblgxbm 控件。 - /// - /// - /// 自动生成的字段。 - /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 - /// - protected global::FineUIPro.Label lblgxbm; - /// /// lblgxmc 控件。 /// @@ -165,6 +156,15 @@ namespace FineUIPro.Web.TestRun.BeforeTestRun { /// protected global::FineUIPro.Label lblgxmc; + /// + /// lblgxbm 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Label lblgxbm; + /// /// sxt 控件。 /// @@ -174,15 +174,6 @@ namespace FineUIPro.Web.TestRun.BeforeTestRun { /// protected global::FineUIPro.FormRow sxt; - /// - /// lblsxtbm 控件。 - /// - /// - /// 自动生成的字段。 - /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 - /// - protected global::FineUIPro.Label lblsxtbm; - /// /// lblsxtmc 控件。 /// @@ -192,6 +183,15 @@ namespace FineUIPro.Web.TestRun.BeforeTestRun { /// protected global::FineUIPro.Label lblsxtmc; + /// + /// lblsxtbm 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Label lblsxtbm; + /// /// sszxt 控件。 /// @@ -201,15 +201,6 @@ namespace FineUIPro.Web.TestRun.BeforeTestRun { /// protected global::FineUIPro.FormRow sszxt; - /// - /// lblszxtbm 控件。 - /// - /// - /// 自动生成的字段。 - /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 - /// - protected global::FineUIPro.Label lblszxtbm; - /// /// lblszxtmc 控件。 /// @@ -219,6 +210,15 @@ namespace FineUIPro.Web.TestRun.BeforeTestRun { /// protected global::FineUIPro.Label lblszxtmc; + /// + /// lblszxtbm 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Label lblszxtbm; + /// /// gzb 控件。 /// diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubWorkInspect.aspx b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubWorkInspect.aspx new file mode 100644 index 00000000..8bb7de0b --- /dev/null +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubWorkInspect.aspx @@ -0,0 +1,76 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SubWorkInspect.aspx.cs" Inherits="FineUIPro.Web.TestRun.BeforeTestRun.SubWorkInspect" %> + + + + + + 子系统工作包检查 + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubWorkInspect.aspx.cs b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubWorkInspect.aspx.cs new file mode 100644 index 00000000..1f04d509 --- /dev/null +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubWorkInspect.aspx.cs @@ -0,0 +1,156 @@ +using BLL; +using Model; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace FineUIPro.Web.TestRun.BeforeTestRun +{ + public partial class SubWorkInspect : PageBase + { + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + this.InitTreeMenu();//加载树 + } + } + + + #region 树绑定 + + /// + /// 加载树 + /// + private void InitTreeMenu() + { + + + this.tvControlItem.Nodes.Clear(); + TreeNode rootNode = new TreeNode(); + rootNode.Text = "检查表"; + rootNode.NodeID = "0"; + rootNode.Expanded = true; + rootNode.ToolTip = ""; + rootNode.EnableClickEvent = true; + this.tvControlItem.Nodes.Add(rootNode); + var userSubInspects = Funs.DB.PreRun_SubInspectTermItem.Where(x => x.InspectedUser == this.CurrUser.UserId).ToList(); + if (userSubInspects.Count == 0) return; + var subSystemIds = userSubInspects.ConvertAll(x => x.SubSystemId); + var workPackIds = userSubInspects.ConvertAll(x => x.WorkPackId); + + var list = from a in Funs.DB.PreRun_SysDevice + join b in Funs.DB.PreRun_SubSysWorkPackage on a.PreRunId equals b.SubSystemId + join c in Funs.DB.PreRun_WorkPackage on b.WorkPackId equals c.WorkPackId + where a.ProjectId == this.CurrUser.LoginProjectId && subSystemIds.Contains(a.PreRunId) && workPackIds.Contains(c.WorkPackId) + select new { a.PreRunId, a.PreRunCode, a.PreRunName, a.ProjectId, c.WorkPackId, c.WorkPackCode, c.WorkPackName }; + + if (list.Count() > 0) + { + var subList = list.GroupBy(x => new { x.PreRunId, x.PreRunCode, x.PreRunName }); + foreach (var item in subList) + { + TreeNode rootUnitNode = new TreeNode();//定义根节点 + rootUnitNode.NodeID = item.Key.PreRunId; + rootUnitNode.Text = item.Key.PreRunName; + rootUnitNode.ToolTip = item.Key.PreRunName; + rootUnitNode.CommandName = ""; + rootUnitNode.EnableClickEvent = true; + rootUnitNode.EnableExpandEvent = true; + rootNode.Nodes.Add(rootUnitNode); + rootUnitNode.Expanded = true; + var worklist = list.Where(a => a.PreRunId == item.Key.PreRunId).GroupBy(x => new { x.WorkPackId, x.WorkPackCode, x.WorkPackName }).ToList(); + if (worklist.Count > 0) + { + foreach (var itemWork in worklist) + { + TreeNode newNode = new TreeNode(); + newNode.Text = itemWork.Key.WorkPackName; + newNode.NodeID = itemWork.Key.WorkPackId + "|" + item.Key.PreRunId; + newNode.ToolTip = itemWork.Key.WorkPackName; + newNode.CommandName = ""; + newNode.EnableClickEvent = true; + rootUnitNode.Nodes.Add(newNode); + } + } + } + } + + } + + /// + /// 点击TreeView + /// + protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) + { + this.BindGrid(); + } + + #endregion + + #region 数据绑定 + + /// + /// 绑定数据 + /// + public void BindGrid() + { + var workPackId = this.tvControlItem.SelectedNodeID.Split('|').First(); + var subSystemId = this.tvControlItem.SelectedNodeID.Split('|').Last(); + //获取子系统 + var subSysModel = Funs.DB.PreRun_SysDevice.FirstOrDefault(x => x.PreRunId == subSystemId); + var list = Funs.DB.PreRun_SubInspectTermItem.Where(x => x.WorkPackId == workPackId && x.SubSystemId == subSystemId && x.InspectedUser == this.CurrUser.UserId).ToList(); + Grid1.DataSource = list; + Grid1.DataBind(); + } + + /// + /// 排序 + /// + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + Grid1.SortDirection = e.SortDirection; + Grid1.SortField = e.SortField; + BindGrid(); + } + + #endregion + + /// + /// 保存 + /// + protected void btnSave_Click(object sender, EventArgs e) + { + try + { + JArray mergedData = Grid1.GetMergedData(); + foreach (JObject mergedRow in mergedData) + { + string status = mergedRow.Value("status"); + JObject values = mergedRow.Value("values"); + int i = mergedRow.Value("index"); + var subItemId = this.Grid1.Rows[i].DataKeys[0].ToString(); + + //获取子系统信息 + var model = Funs.DB.PreRun_SubInspectTermItem.FirstOrDefault(x => x.SubItemId == subItemId); + if (model != null) + { + model.InspectionIllustrate = !string.IsNullOrWhiteSpace(values.Value("InspectionIllustrate")) ? values.Value("InspectionIllustrate") : string.Empty; + model.InspectionResults = !string.IsNullOrWhiteSpace(values.Value("InspectionResults")) ? int.Parse(values.Value("InspectionResults")) : -1; + Funs.DB.SubmitChanges(); + } + } + BindGrid(); + ShowNotify("保存成功!"); + } + catch (Exception ex) + { + ShowNotify(ex.Message, MessageBoxIcon.Error); + } + } + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubWorkInspect.aspx.designer.cs b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubWorkInspect.aspx.designer.cs new file mode 100644 index 00000000..438b75b9 --- /dev/null +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SubWorkInspect.aspx.designer.cs @@ -0,0 +1,116 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.TestRun.BeforeTestRun +{ + + + public partial class SubWorkInspect + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// panelLeftRegion 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel panelLeftRegion; + + /// + /// tvControlItem 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Tree tvControlItem; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar1; + + /// + /// ToolbarFill 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarFill ToolbarFill; + + /// + /// btnSave 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnSave; + + /// + /// txtInspectionIllustrate 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtInspectionIllustrate; + + /// + /// ddlInspectionResults 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList ddlInspectionResults; + } +} diff --git a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SysPipingDeviceImport.aspx b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SysPipingDeviceImport.aspx index 270cd340..05dc320f 100644 --- a/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SysPipingDeviceImport.aspx +++ b/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/SysPipingDeviceImport.aspx @@ -43,28 +43,26 @@