From c23d113eae03328c7e1692a5c6298bd54863a395 Mon Sep 17 00:00:00 2001 From: fei550 <1420031550@qq.com> Date: Fri, 24 Oct 2025 10:04:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=AE=A1=E9=81=93=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=E6=A0=87=E8=AF=86=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=8F=8AAPI=E6=8E=A7=E5=88=B6=E5=99=A8=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E4=BA=86=E5=A4=9A=E4=B8=AA=E6=9C=8D=E5=8A=A1=E5=92=8C=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E7=AE=A1=E9=81=93=E9=A2=9C=E8=89=B2=E6=A0=87=E8=AF=86=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=9A=84=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=B9=B6=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E4=BA=86=E5=8C=85=E8=A3=85=E7=AE=A1=E7=90=86=E3=80=81?= =?UTF-8?q?=E8=BD=A6=E6=AC=A1=E7=AE=A1=E7=90=86=E3=80=81=E7=AE=A1=E9=81=93?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=92=8C=E7=84=8A=E5=8F=A3=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E7=9A=84API=E6=8E=A7=E5=88=B6=E5=99=A8=E3=80=82=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E4=BA=86=E6=96=87=E4=BB=B6=E8=B7=AF=E5=BE=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BA=86=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E5=92=8C=E6=8E=92=E5=BA=8F=E9=80=BB=E8=BE=91=EF=BC=8C=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E4=BA=86=E4=B8=8D=E5=86=8D=E4=BD=BF=E7=94=A8=E7=9A=84?= =?UTF-8?q?API=E6=96=B9=E6=B3=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/SGGL_SeDin_New.slnx/v18/.wsuo | Bin 0 -> 464896 bytes .../v18/DocumentLayout.backup.json | 79 ++ .../v18/DocumentLayout.json | 95 ++ .vs/SGGL_SeDin_New/v17/.wsuo | Bin 73216 -> 66560 bytes .../BLL/API/HJGL/APIPackagingManageService.cs | 102 ++- .../BaseInfo/Base_MaterialColorService.cs | 94 ++ .../HJGL/PreDesign/PackagingManageService .cs | 25 +- .../PreDesign/TrainNumberManageService.cs | 22 +- .../TestPackage/TestPackagePrintService.cs | 40 +- .../WeldingManage/PipelineComponentService.cs | 1 + .../Excel/DataIn/管道颜色标识库导入模板.xlsx | Bin 0 -> 9028 bytes .../Fastreport/JGZL/管道压力试验技术要求.frx | 28 +- .../JGZL/管道材料材质标识检查记录.frx | 15 +- SGGL/FineUIPro.Web/File/Fastreport/装箱单.frx | 4 +- SGGL/FineUIPro.Web/FineUIPro.Web.csproj | 13 +- .../HJGL/BaseInfo/MaterialColor.aspx | 9 +- .../HJGL/BaseInfo/MaterialColor.aspx.cs | 9 +- .../BaseInfo/MaterialColor.aspx.designer.cs | 9 + .../HJGL/BaseInfo/MaterialColorIn.aspx | 35 + .../HJGL/BaseInfo/MaterialColorIn.aspx.cs | 142 +++ .../BaseInfo/MaterialColorIn.aspx.designer.cs | 98 +++ .../HJGL/BaseInfo/MaterialColorInaspx.aspx | 16 - .../HJGL/BaseInfo/MaterialColorInaspx.aspx.cs | 12 - .../MaterialColorInaspx.aspx.designer.cs | 26 - .../HJGL/PreDesign/InstallList.aspx | 22 +- .../HJGL/PreDesign/InstallList.aspx.cs | 108 +-- .../PreDesign/InstallList.aspx.designer.cs | 9 + .../HJGL/PreDesign/PackagingManage.aspx | 3 + .../HJGL/PreDesign/PackagingManageEdit.aspx | 16 +- .../PreDesign/PackagingManageEdit.aspx.cs | 8 +- .../PackagingManageEdit.aspx.designer.cs | 9 + .../HJGL/PreDesign/TrainNumberManageEdit.aspx | 2 +- .../PreDesign/TrainNumberManageEdit.aspx.cs | 2 +- .../HJGL/PreDesign/TrainNumberManager.aspx | 2 +- .../HJGL/PreDesign/TrainNumberManager.aspx.cs | 2 +- .../TestPackage/TestPackageComplete.aspx.cs | 8 + .../ProjectData/ProjectSysSet.aspx | 23 +- .../ProjectData/ProjectSysSet.aspx.cs | 827 ++++++------------ .../ProjectSysSet.aspx.designer.cs | 9 + .../HJGL/BaseInfo/BaseMaterialcolorDataIn.cs | 37 + .../{ => BaseInfo}/BaseMaterialcolorOutput.cs | 0 .../Material}/MaterialStockItem.cs | 0 .../PackagingManage/PackagingManageInput.cs | 59 ++ .../PackagingManagePrintOutput.cs | 0 .../PipelineComponentPrintDto.cs | 0 .../Pipeline_ComponentQRCodeItem.cs | 0 SGGL/Model/Model.cs | 239 +++++ SGGL/Model/Model.csproj | 15 +- .../PackagingManageController.cs | 23 +- .../PipelineComponentController.cs | 0 .../TrainNumberManageController.cs | 10 +- .../PipeJointController.cs | 0 .../PreWeldingDailyController.cs | 0 .../ReportQueryController.cs | 0 SGGL/WebAPI/WebAPI.csproj | 12 +- 55 files changed, 1502 insertions(+), 817 deletions(-) create mode 100644 .vs/SGGL_SeDin_New.slnx/v18/.wsuo create mode 100644 .vs/SGGL_SeDin_New.slnx/v18/DocumentLayout.backup.json create mode 100644 .vs/SGGL_SeDin_New.slnx/v18/DocumentLayout.json create mode 100644 SGGL/FineUIPro.Web/File/Excel/DataIn/管道颜色标识库导入模板.xlsx create mode 100644 SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorIn.aspx create mode 100644 SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorIn.aspx.cs create mode 100644 SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorIn.aspx.designer.cs delete mode 100644 SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorInaspx.aspx delete mode 100644 SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorInaspx.aspx.cs delete mode 100644 SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorInaspx.aspx.designer.cs create mode 100644 SGGL/Model/HJGL/BaseInfo/BaseMaterialcolorDataIn.cs rename SGGL/Model/HJGL/{ => BaseInfo}/BaseMaterialcolorOutput.cs (100%) rename SGGL/Model/HJGL/{ => PreDesign/Material}/MaterialStockItem.cs (100%) create mode 100644 SGGL/Model/HJGL/PreDesign/PackagingManage/PackagingManageInput.cs rename SGGL/Model/HJGL/{ => PreDesign/PackagingManage}/PackagingManagePrintOutput.cs (100%) rename SGGL/Model/HJGL/{ => PreDesign/PipelineComponent}/PipelineComponentPrintDto.cs (100%) rename SGGL/Model/HJGL/{ => PreDesign/PipelineComponent}/Pipeline_ComponentQRCodeItem.cs (100%) rename SGGL/WebAPI/Controllers/HJGL/{ => PreDesign}/PackagingManageController.cs (91%) rename SGGL/WebAPI/Controllers/HJGL/{ => PreDesign}/PipelineComponentController.cs (100%) rename SGGL/WebAPI/Controllers/HJGL/{ => PreDesign}/TrainNumberManageController.cs (93%) rename SGGL/WebAPI/Controllers/HJGL/{ => WeldingManage}/PipeJointController.cs (100%) rename SGGL/WebAPI/Controllers/HJGL/{ => WeldingManage}/PreWeldingDailyController.cs (100%) rename SGGL/WebAPI/Controllers/HJGL/{ => WeldingManage}/ReportQueryController.cs (100%) diff --git a/.vs/SGGL_SeDin_New.slnx/v18/.wsuo b/.vs/SGGL_SeDin_New.slnx/v18/.wsuo new file mode 100644 index 0000000000000000000000000000000000000000..9f69490a81f4ec69390309627f85fda11fadf260 GIT binary patch literal 464896 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 Gf&T|nD#)z> literal 0 HcmV?d00001 diff --git a/.vs/SGGL_SeDin_New.slnx/v18/DocumentLayout.backup.json b/.vs/SGGL_SeDin_New.slnx/v18/DocumentLayout.backup.json new file mode 100644 index 00000000..75ab69a7 --- /dev/null +++ b/.vs/SGGL_SeDin_New.slnx/v18/DocumentLayout.backup.json @@ -0,0 +1,79 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\\u6570\u636E\\\u8BFA\u5FC5\u8FBE\\\u8D5B\u9F0E\\SGGL_SeDin_New\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": -1, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{e506b91c-c606-466a-90a9-123d1d1e12b3}" + }, + { + "$type": "Bookmark", + "Name": "ST:133:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + }, + { + "$type": "Bookmark", + "Name": "ST:134:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + }, + { + "$type": "Bookmark", + "Name": "ST:1:0:{f2bd8fb8-fc94-3dae-a733-fd993c73cc87}" + }, + { + "$type": "Bookmark", + "Name": "ST:131:0:{1fc202d4-d401-403c-9834-5b218574bb67}" + }, + { + "$type": "Bookmark", + "Name": "ST:129:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" + }, + { + "$type": "Bookmark", + "Name": "ST:2:0:{f2bd8fb8-fc94-3dae-a733-fd993c73cc87}" + }, + { + "$type": "Bookmark", + "Name": "ST:3:0:{f2bd8fb8-fc94-3dae-a733-fd993c73cc87}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{1a46fd64-28d5-434c-8eb3-17a02d419b53}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{5726b0e3-1012-5233-81f9-d1fad48e7a56}" + }, + { + "$type": "Bookmark", + "Name": "ST:137:0:{1fc202d4-d401-403c-9834-5b218574bb67}" + }, + { + "$type": "Bookmark", + "Name": "ST:138:0:{1fc202d4-d401-403c-9834-5b218574bb67}" + }, + { + "$type": "Bookmark", + "Name": "ST:136:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + }, + { + "$type": "Bookmark", + "Name": "ST:2:0:{b9f91511-5ca5-40ec-9726-f3e3a7e534e2}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/SGGL_SeDin_New.slnx/v18/DocumentLayout.json b/.vs/SGGL_SeDin_New.slnx/v18/DocumentLayout.json new file mode 100644 index 00000000..7c674097 --- /dev/null +++ b/.vs/SGGL_SeDin_New.slnx/v18/DocumentLayout.json @@ -0,0 +1,95 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\\u6570\u636E\\\u8BFA\u5FC5\u8FBE\\\u8D5B\u9F0E\\SGGL_SeDin_New\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": -1, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{e506b91c-c606-466a-90a9-123d1d1e12b3}" + }, + { + "$type": "Bookmark", + "Name": "ST:133:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + }, + { + "$type": "Bookmark", + "Name": "ST:134:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + }, + { + "$type": "Bookmark", + "Name": "ST:1:0:{f2bd8fb8-fc94-3dae-a733-fd993c73cc87}" + }, + { + "$type": "Bookmark", + "Name": "ST:131:0:{1fc202d4-d401-403c-9834-5b218574bb67}" + }, + { + "$type": "Bookmark", + "Name": "ST:129:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" + }, + { + "$type": "Bookmark", + "Name": "ST:2:0:{f2bd8fb8-fc94-3dae-a733-fd993c73cc87}" + }, + { + "$type": "Bookmark", + "Name": "ST:3:0:{f2bd8fb8-fc94-3dae-a733-fd993c73cc87}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{1a46fd64-28d5-434c-8eb3-17a02d419b53}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{5726b0e3-1012-5233-81f9-d1fad48e7a56}" + }, + { + "$type": "Bookmark", + "Name": "ST:137:0:{1fc202d4-d401-403c-9834-5b218574bb67}" + }, + { + "$type": "Bookmark", + "Name": "ST:138:0:{1fc202d4-d401-403c-9834-5b218574bb67}" + }, + { + "$type": "Bookmark", + "Name": "ST:136:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + }, + { + "$type": "Bookmark", + "Name": "ST:2:0:{b9f91511-5ca5-40ec-9726-f3e3a7e534e2}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" + }, + { + "$type": "Bookmark", + "Name": "ST:130:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + }, + { + "$type": "Bookmark", + "Name": "ST:132:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + }, + { + "$type": "Bookmark", + "Name": "ST:129:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + }, + { + "$type": "Bookmark", + "Name": "ST:131:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/SGGL_SeDin_New/v17/.wsuo b/.vs/SGGL_SeDin_New/v17/.wsuo index f2dbb8d22e58454d87ab6d7c948f72dd86c0cb5f..61fd1a6264009150cdf83408e8e85a5583e7a7e5 100644 GIT binary patch delta 1363 zcmcJOOHWfl6vsQ$3)FIpKoN)_@lk0NtG%TluY^Jy7bfzOg%V@Jqo9J?n7eSHX_v%c zVmp3<`w5`4GBJVV>e?>+8t&@Ch1CC{Goc$uG;xw&&YZ{0-1*Nv`Oijv+xRfY+V|#r zc;m(O-Ok{oe8m@-+34|j8bB38wDpGAnE2_vk_#ae1m{(X(li3_FR54)>|rfj{SDg( z|16*_Z>iilSSsmOR+U%HI={7U-hp}8RTvY{8WjmFP!N%2m5HSsiei^euHCK_ByX($k8<(J%+cFMka-@#2^( z-1wfb$9Ia|soEuJBO1q-97}t}mvl_nJv+`YFGjG2WSYj6Pq@l=-{rakg&p20rClC4 zYIEK8NAFU(V|tw#!=7x?bvF3c`!3#S@Or*AQuOlNtt|i;B~Se{{Z|r B1`q%M delta 2010 zcmcJOYfO_@7{@tp3)Zf!1!~8oGR3Y#Y+W6Uo1*VlK!;)}V&`T}5KurEVap2>wwZck z%-i7oYupmzSodLHw#D`3%aWO(n9VGk;zqLQjDjwMWk?p&eK6B?&wqll*d? z^PKZs&pG}swf|FfcR7py*pn*6iN%e*NAi`IgbJn$(}<0UiQzMP=2=+@eo-xc&PJ*P z!V=ly+lxqkXvTU@M7~FRi%FhG#1Xl~Z`>dRl@4}$4T#@1{nP#RPLJ5_#6pEBcjvnCObdl8A zv6H0OOJRqeW4lGm43kUziWgtz+ z=0_fVE+KIlm>2e)9bsj(aPZQ(6I%qr3BjTV6RF_AjaNb` zbWfSoZhmZb!J>`@iv|U_jLVf!iB2V_7wLG>{8vVtS`{h%Fq2Cqwg9cA`P2spRYi4Ru&GeB`Jxu87w!dGj-ldPC%(TR%6l|0 zUoJuAcr%IMvV z9K&bdB`MO?^^EPs8UGqg29vPzdInkgP}Q~&N6#9N`IQz!*K|k-cwxR~L;u&!@Lh3E z#Vf+j>-X&(%u1vqwdEhcX`q5i}Nu`?Z$=Tp#qQj5MDamaqJ8+Si9VPZ6awO~>E z7Nz56pTMfIXnz?B##7iquEa>U85hRVriwas*NXBn-Bbw!mom}!Lz>Xc;O|Q(YKE{lcwRpUWwP85D1taOTGpPC<;tLG* diff --git a/SGGL/BLL/API/HJGL/APIPackagingManageService.cs b/SGGL/BLL/API/HJGL/APIPackagingManageService.cs index b381035f..238a556d 100644 --- a/SGGL/BLL/API/HJGL/APIPackagingManageService.cs +++ b/SGGL/BLL/API/HJGL/APIPackagingManageService.cs @@ -6,30 +6,96 @@ using System.Linq; namespace BLL { public class APIPackagingManageService + { - public static List GetPackagingManageList(string projectId) + public static List GetPackagingManageList(PackagingManageInput filter, int pageIndex, int pageSize, out int totalCount) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { - var q = (from x in db.HJGL_PackagingManage - join n in db.Base_Project on x.ProjectId equals n.ProjectId - join m in db.Person_Persons on x.ReceiveMan equals m.PersonId into tt - from t in tt.DefaultIfEmpty() - where x.ProjectId == projectId + // base join query to include project and receive person + var baseQuery = from x in db.HJGL_PackagingManage + join n in db.Base_Project on x.ProjectId equals n.ProjectId + join m in db.Person_Persons on x.ReceiveMan equals m.PersonId into tt + from t in tt.DefaultIfEmpty() + select new { x, n, t }; + + if (filter != null) + { + if (!string.IsNullOrEmpty(filter.PackagingManageId)) + { + baseQuery = baseQuery.Where(z => z.x.PackagingManageId == filter.PackagingManageId); + } + if (!string.IsNullOrEmpty(filter.PackagingCode)) + { + baseQuery = baseQuery.Where(z => z.x.PackagingCode.Contains(filter.PackagingCode)); + } + if (!string.IsNullOrEmpty(filter.ProjectId)) + { + baseQuery = baseQuery.Where(z => z.x.ProjectId == filter.ProjectId); + } + if (!string.IsNullOrEmpty(filter.ProjectName)) + { + baseQuery = baseQuery.Where(z => z.n.ProjectName.Contains(filter.ProjectName)); + } + if (!string.IsNullOrEmpty(filter.ContactName)) + { + baseQuery = baseQuery.Where(z => z.x.ContactName.Contains(filter.ContactName)); + } + if (!string.IsNullOrEmpty(filter.ContactPhone)) + { + baseQuery = baseQuery.Where(z => z.x.ContactPhone.Contains(filter.ContactPhone)); + } + if (!string.IsNullOrEmpty(filter.StackingPosition)) + { + baseQuery = baseQuery.Where(z => z.x.StackingPosition.Contains(filter.StackingPosition)); + } + if (filter.State != null) + { + baseQuery = baseQuery.Where(z => z.x.State == filter.State); + } + if (!string.IsNullOrEmpty(filter.ReceiveMan)) + { + baseQuery = baseQuery.Where(z => z.x.ReceiveMan == filter.ReceiveMan || (z.t != null && z.t.PersonName.Contains(filter.ReceiveMan))); + } + if (!string.IsNullOrEmpty(filter.ReceiveDate)) + { + DateTime dt; + if (DateTime.TryParse(filter.ReceiveDate, out dt)) + { + var start = dt.Date; + var end = start.AddDays(1); + baseQuery = baseQuery.Where(z => z.x.ReceiveDate != null && z.x.ReceiveDate >= start && z.x.ReceiveDate < end); + } + } + if (!string.IsNullOrEmpty(filter.TrainNumberId)) + { + baseQuery = baseQuery.Where(z => z.x.TrainNumber != null && z.x.TrainNumber.Contains(filter.TrainNumberId)); + } + } + + baseQuery = baseQuery.OrderByDescending(z => (z.x.ReceiveDate ?? DateTime.MinValue)).ThenBy(z => z.x.PackagingCode); + + var q = (from z in baseQuery select new PackagingManageDetailItem { - PackagingManageId = x.PackagingManageId, - PackagingCode = x.PackagingCode, - ProjectName = n.ProjectName, - ContactName = x.ContactName, - ContactPhone = x.ContactPhone, - StackingPosition = x.StackingPosition, - State = x.State, - ReceiveMan = t.PersonName, - ReceiveDate = string.Format("{0:g}", x.ReceiveDate), - TrainNumber = x.TrainNumber, + PackagingManageId = z.x.PackagingManageId, + PackagingCode = z.x.PackagingCode, + ProjectName = z.n.ProjectName, + ContactName = z.x.ContactName, + ContactPhone = z.x.ContactPhone, + StackingPosition = z.x.StackingPosition, + State = z.x.State, + ReceiveMan = z.t.PersonName, + ReceiveDate = string.Format("{0:g}", z.x.ReceiveDate), + TrainNumber = z.x.TrainNumber, }).Distinct(); - return q.ToList(); + + totalCount = q.Count(); + + if (pageIndex <=0) pageIndex =1; + if (pageSize <=0) pageSize =20; + + return q.Skip((pageIndex -1) * pageSize).Take(pageSize).ToList(); } } @@ -190,8 +256,6 @@ namespace BLL } } } - - public static string GetNewPackagingCode(string projectId) { return HJGLPackagingmanageService.GetNewPackagingCode(projectId); diff --git a/SGGL/BLL/HJGL/BaseInfo/Base_MaterialColorService.cs b/SGGL/BLL/HJGL/BaseInfo/Base_MaterialColorService.cs index 0a1541ac..b9aa8205 100644 --- a/SGGL/BLL/HJGL/BaseInfo/Base_MaterialColorService.cs +++ b/SGGL/BLL/HJGL/BaseInfo/Base_MaterialColorService.cs @@ -1,5 +1,8 @@ +using EmitMapper; using FineUIPro; +using MiniExcelLibs; using Model; +using System; using System.Collections; using System.Collections.Generic; using System.Linq; @@ -190,5 +193,96 @@ namespace BLL } + + public static ResponeData ImportData( string path, string projectid) + { + var responeData = new ResponeData(); + try + { + List temeplateDtoIns = MiniExcel.Query(path, startCell: "A1").ToList(); + + if (temeplateDtoIns == null || temeplateDtoIns.Count ==0) + { + responeData.code =0; + responeData.message = "Ϊգ"; + return responeData; + } + + // ȡʱ벢֤ǿ + var materialCodes = new List(); + foreach (var row in temeplateDtoIns) + { + var code = (row.MaterialCode ?? string.Empty).Trim(); + if (string.IsNullOrWhiteSpace(code)) + { + responeData.code =0; + responeData.message = "ввΪգ"; + return responeData; + } + materialCodes.Add(code); + } + + var materialCodeList = materialCodes.Distinct().ToList(); + + // ݿ֤ЩʱǷ + var existMaterials = (from m in Funs.DB.Base_Material + where materialCodeList.Contains(m.MaterialCode) + select new { m.MaterialCode, m.MaterialId }).ToList(); + + var existCodes = existMaterials.Select(x => x.MaterialCode).ToList(); + var notExist = materialCodeList.Except(existCodes).ToList(); + if (notExist.Count >0) + { + responeData.code =0; + responeData.message = string.Join(",", notExist) + " ʲڣ"; + return responeData; + } + + // + foreach (var row in temeplateDtoIns) + { + var code = (row.MaterialCode ?? string.Empty).Trim(); + var mat = existMaterials.FirstOrDefault(x => x.MaterialCode == code); + if (mat == null) + { + responeData.code =0; + responeData.message = code + " ʲڣ"; + return responeData; + } + + var colorName = string.IsNullOrWhiteSpace(row.ColorName) ? "" : row.ColorName.Trim(); + var colorCardNo = string.IsNullOrWhiteSpace(row.ColorCardNo) ? "" : row.ColorCardNo.Trim(); + var rgb = string.IsNullOrWhiteSpace(row.RGB) ? null : row.RGB.Trim(); + var remark = string.IsNullOrWhiteSpace(row.Remark) ? null : row.Remark.Trim(); + + Model.Base_MaterialColor table = new Model.Base_MaterialColor + { + MaterialColorId = BLL.SQLHelper.GetNewID(typeof(Model.Base_MaterialColor)), + UnitId = string.Empty, + ProjectId = projectid, + MaterialId = mat.MaterialId, + ColorName = colorName, + ColorCardNo = colorCardNo, + RGB = rgb, + Remark = remark + }; + Funs.DB.Base_MaterialColor.InsertOnSubmit(table); + } + + Funs.DB.SubmitChanges(); + + responeData.code =1; + responeData.message = "ɹ"; + responeData.data = temeplateDtoIns.Count; + return responeData; + } + catch (Exception ex) + { + responeData.code =0; + responeData.message = "ʧܣ" + ex.ToString(); + return responeData; + } + } + } } \ No newline at end of file diff --git a/SGGL/BLL/HJGL/PreDesign/PackagingManageService .cs b/SGGL/BLL/HJGL/PreDesign/PackagingManageService .cs index 39c69551..ef028fa0 100644 --- a/SGGL/BLL/HJGL/PreDesign/PackagingManageService .cs +++ b/SGGL/BLL/HJGL/PreDesign/PackagingManageService .cs @@ -35,7 +35,12 @@ namespace BLL { "预制散件" ,(int)TypeInt.预制散件}, { "其他材料" ,(int)TypeInt.其他材料}, }; - + public static Dictionary CategoryIntMap = new Dictionary + { + { "打捆" ,(int)CategoryInt.打捆}, + { "装箱" ,(int)CategoryInt.装箱}, + { "散装" ,(int)CategoryInt.散装}, + }; #endregion Fields #region Enums @@ -46,6 +51,12 @@ namespace BLL 预制散件 = 20, 其他材料 = 30, } + public enum CategoryInt : int + { + 打捆 = 10, + 装箱 = 20, + 散装 = 30, + } #endregion Enums @@ -73,6 +84,7 @@ namespace BLL TrainNumber = newtable.TrainNumber, TrainNumberId = newtable.TrainNumberId, TypeInt = newtable.TypeInt, + CategoryInt = newtable.CategoryInt, CompileMan = newtable.CompileMan, CompileDate = newtable.CompileDate }; @@ -227,7 +239,9 @@ namespace BLL StackingPosition = x.StackingPosition, State = x.State, TypeInt = x.TypeInt, + CategoryInt = x.CategoryInt, TypeString = GetTypeString(x.TypeInt), + CategoryString = GetCategoryString(x.CategoryInt), ReceiveMan = train.ContactName,//t.PersonName, ReceiveDate = x.ReceiveDate.HasValue ? string.Format("{0:g}", x.ReceiveDate) : "", PlanStartDate = GetMinPlanStartDate(x.PackagingManageId), @@ -261,7 +275,10 @@ namespace BLL { return TypeIntMap.FirstOrDefault(c => c.Value == TypeInt).Key; } - + public static string GetCategoryString(int? CategoryInt) + { + return CategoryIntMap.FirstOrDefault(c => c.Value == CategoryInt).Key; + } /// /// 管线下拉框 /// @@ -313,6 +330,7 @@ namespace BLL table.TrainNumber = newtable.TrainNumber; table.TrainNumberId = newtable.TrainNumberId; table.TypeInt = newtable.TypeInt; + table.CategoryInt = newtable.CategoryInt; db1.SubmitChanges(); } } @@ -344,6 +362,9 @@ namespace BLL public string TrainNumberOld { get; set; } public int? TypeInt { get; set; } public string TypeString { get; set; } + public int? CategoryInt { get; set; } + public string CategoryString { get; set; } + #endregion Properties } diff --git a/SGGL/BLL/HJGL/PreDesign/TrainNumberManageService.cs b/SGGL/BLL/HJGL/PreDesign/TrainNumberManageService.cs index 17572a55..26e0edb0 100644 --- a/SGGL/BLL/HJGL/PreDesign/TrainNumberManageService.cs +++ b/SGGL/BLL/HJGL/PreDesign/TrainNumberManageService.cs @@ -1,19 +1,11 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; namespace BLL { public static class TrainNumberManageService - { - /// - /// 记录数 - /// - public static int Count - { - get; - set; - } - + { private static IQueryable GetByQueryModle(Model.HJGL_TrainNumberManage table) { var q = from x in Funs.DB.HJGL_TrainNumberManage select x; @@ -71,11 +63,11 @@ namespace BLL return GetByQueryModle(table).ToList(); } - public static (List Data, int Total) GetListByQueryModle(Model.HJGL_TrainNumberManage table, int pageIndex = 0, int pageSize = 20) + public static (List Data, int Total) GetListByQueryModle(Model.HJGL_TrainNumberManage table, int pageIndex = 1, int pageSize = 20) { var baseQuery = GetByQueryModle(table); var pagedData = baseQuery - .Skip((pageIndex) * pageSize) + .Skip((pageIndex-1) * pageSize) .Take(pageSize) .ToList(); @@ -94,10 +86,10 @@ namespace BLL public static string GetNewTrainNumber(string ProjectId) { var q = from x in Funs.DB.HJGL_TrainNumberManage - where x.ProjectId == ProjectId + where x.ProjectId == ProjectId select x.TrainNumber; var max = q.Count(); - var NewTrainNumber = (max + 1).ToString().PadLeft(2, '0'); + var NewTrainNumber = string.Format("{0:yyyyMMdd}", DateTime.Now)+"-"+(max + 1).ToString().PadLeft(3, '0'); return NewTrainNumber; } diff --git a/SGGL/BLL/HJGL/TestPackage/TestPackagePrintService.cs b/SGGL/BLL/HJGL/TestPackage/TestPackagePrintService.cs index 966c6fbc..10d93ac4 100644 --- a/SGGL/BLL/HJGL/TestPackage/TestPackagePrintService.cs +++ b/SGGL/BLL/HJGL/TestPackage/TestPackagePrintService.cs @@ -353,13 +353,15 @@ namespace BLL dt.Columns.Add("PipelineCode"); dt.Columns.Add("ManterialCode"); dt.Columns.Add("Specification"); + dt.Columns.Add("MaterialColor"); for (int i = 0; i < tb.Rows.Count; i++) { var newRows = dt.NewRow(); newRows["PipelineCode"] = tb.Rows[i]["PipelineCode"].ToString(); - newRows["ManterialCode"] = getMaterialCodeByPipelineId(tb.Rows[i]["PipelineId"].ToString()); + newRows["ManterialCode"] = getMaterialCodeByPipelineId(tb.Rows[i]["PipelineId"].ToString(),out string MaterialColor); newRows["Specification"] = getSpecificationByPipelineId(tb.Rows[i]["PipelineId"].ToString()); + newRows["MaterialColor"] = MaterialColor; dt.Rows.Add(newRows); } @@ -878,18 +880,47 @@ namespace BLL #region 格式化字符串 - public static string getMaterialCodeByPipelineId(string pipelineId) + public static string getMaterialCodeByPipelineId(string pipelineId, out string materialColor) { string materialCode = string.Empty; + materialColor = string.Empty; if (!string.IsNullOrEmpty(pipelineId)) { var weldjoint = (from x in Funs.DB.HJGL_WeldJoint join y in Funs.DB.Base_Material on x.Material1Id equals y.MaterialId join z in Funs.DB.Base_Material on x.Material2Id equals z.MaterialId where x.PipelineId == pipelineId - select new { MaterialCode1 = y.MaterialCode, MaterialCode2 = z.MaterialCode }).FirstOrDefault(); + select new + { + MaterialId1 = y.MaterialId, + MaterialCode1 = y.MaterialCode, + MaterialId2 = z.MaterialId, + MaterialCode2 = z.MaterialCode, + x.ProjectId, + }).FirstOrDefault(); if (weldjoint != null) { + if (!string.IsNullOrEmpty(weldjoint.MaterialId1)) + { + var projectSet = Project_SysSetService.GetSysSetBySetId("11", weldjoint.ProjectId); + Model.BaseMaterialcolorOutput queryModel = new Model.BaseMaterialcolorOutput(); + queryModel.ProjectId = weldjoint.ProjectId; + queryModel.MaterialId = weldjoint.MaterialId1; + var material1 = BLL.BaseMaterialcolorService.GetListByQueryModle(queryModel).FirstOrDefault(); + if (material1 != null) + { + if (projectSet != null && projectSet.SetValue == "1") + { + materialColor = material1.ColorName; + } + else + { + materialColor= material1.ColorCardNo; + } + } + + } + if (!string.IsNullOrEmpty(weldjoint.MaterialCode1) && !string.IsNullOrEmpty(weldjoint.MaterialCode2)) { materialCode = weldjoint.MaterialCode1 + "/" + weldjoint.MaterialCode2; @@ -908,8 +939,7 @@ namespace BLL } } return materialCode; - } - + } public static string getSpecificationByPipelineId(string pipelineId) { string spcificaation = string.Empty; diff --git a/SGGL/BLL/HJGL/WeldingManage/PipelineComponentService.cs b/SGGL/BLL/HJGL/WeldingManage/PipelineComponentService.cs index 1bc23022..a72bc895 100644 --- a/SGGL/BLL/HJGL/WeldingManage/PipelineComponentService.cs +++ b/SGGL/BLL/HJGL/WeldingManage/PipelineComponentService.cs @@ -497,6 +497,7 @@ namespace BLL Model.SGGLDB db = Funs.DB; var q = (from x in db.HJGL_Pipeline_Component join y in db.HJGL_Pipeline on x.PipelineId equals y.PipelineId + orderby y.PipelineCode,x.PipelineComponentCode where y.ProjectId.Contains(projectId) && x.State.Equals(State1) && (string.IsNullOrEmpty(pipelineCode) || y.PipelineCode.Contains(pipelineCode)) && (string.IsNullOrEmpty(pipelineComponentCode) || x.PipelineComponentCode.Contains(pipelineComponentCode)) && diff --git a/SGGL/FineUIPro.Web/File/Excel/DataIn/管道颜色标识库导入模板.xlsx b/SGGL/FineUIPro.Web/File/Excel/DataIn/管道颜色标识库导入模板.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1339c4b953094e023f1d923251e322a3fd3cfab8 GIT binary patch literal 9028 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 - + @@ -56,15 +56,15 @@ - - - - - - - - - + + + + + + + + + @@ -74,7 +74,7 @@ - + @@ -87,7 +87,7 @@ - + @@ -100,7 +100,7 @@ - + @@ -113,7 +113,7 @@ - + diff --git a/SGGL/FineUIPro.Web/File/Fastreport/JGZL/管道材料材质标识检查记录.frx b/SGGL/FineUIPro.Web/File/Fastreport/JGZL/管道材料材质标识检查记录.frx index 79ccb503..569a5c72 100644 --- a/SGGL/FineUIPro.Web/File/Fastreport/JGZL/管道材料材质标识检查记录.frx +++ b/SGGL/FineUIPro.Web/File/Fastreport/JGZL/管道材料材质标识检查记录.frx @@ -1,5 +1,5 @@  - + using System; using System.Collections; using System.Collections.Generic; @@ -42,11 +42,12 @@ namespace FastReport } - + + @@ -107,7 +108,7 @@ namespace FastReport - + @@ -125,7 +126,7 @@ namespace FastReport - + @@ -135,8 +136,8 @@ namespace FastReport - - + + @@ -165,7 +166,7 @@ namespace FastReport - + diff --git a/SGGL/FineUIPro.Web/File/Fastreport/装箱单.frx b/SGGL/FineUIPro.Web/File/Fastreport/装箱单.frx index ef8357f2..b6bffbde 100644 --- a/SGGL/FineUIPro.Web/File/Fastreport/装箱单.frx +++ b/SGGL/FineUIPro.Web/File/Fastreport/装箱单.frx @@ -1,5 +1,5 @@  - + using System; using System.Collections; using System.Collections.Generic; @@ -42,7 +42,7 @@ namespace FastReport } - + diff --git a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj index 988a2753..aa834918 100644 --- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj +++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj @@ -1487,7 +1487,7 @@ - + @@ -10108,12 +10108,12 @@ MaterialColorEdit.aspx - - MaterialColorInaspx.aspx + + MaterialColorIn.aspx ASPXCodeBehind - - MaterialColorInaspx.aspx + + MaterialColorIn.aspx MaterialEdit.aspx @@ -16835,12 +16835,11 @@ 3 0 primary - False True - + diff --git a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColor.aspx b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColor.aspx index 8564fed7..4165bcb0 100644 --- a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColor.aspx +++ b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColor.aspx @@ -43,9 +43,12 @@ + + + - + @@ -57,7 +60,7 @@ + FieldType="String" HeaderText="材质" TextAlign="Left" HeaderTextAlign="Center" > @@ -66,7 +69,7 @@ FieldType="String" HeaderText="色卡号" TextAlign="Left" HeaderTextAlign="Center" > + FieldType="String" HeaderText="RGB" TextAlign="Left" HeaderTextAlign="Center" > diff --git a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColor.aspx.cs b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColor.aspx.cs index e91bb6ea..6b12fcf9 100644 --- a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColor.aspx.cs +++ b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColor.aspx.cs @@ -238,6 +238,13 @@ namespace FineUIPro.Web.HJGL.BaseInfo return sb.ToString(); } - #endregion + #endregion + + #region 导入按钮 + protected void btnImport_Click(object sender, EventArgs e) + { + PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("MaterialColorIn.aspx?", "导入 - "))); + } + #endregion } } \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColor.aspx.designer.cs b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColor.aspx.designer.cs index 7853f4ba..b3caa8a5 100644 --- a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColor.aspx.designer.cs +++ b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColor.aspx.designer.cs @@ -68,6 +68,15 @@ namespace FineUIPro.Web.HJGL.BaseInfo /// protected global::FineUIPro.Button btnNew; + /// + /// btnImport 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnImport; + /// /// btnOut 控件。 /// diff --git a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorIn.aspx b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorIn.aspx new file mode 100644 index 00000000..4f5262f5 --- /dev/null +++ b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorIn.aspx @@ -0,0 +1,35 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MaterialColorIn.aspx.cs" Inherits="FineUIPro.Web.HJGL.BaseInfo.MaterialColorIn" %> + + + + + + + 管道颜色标识库导入 + + +
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorIn.aspx.cs b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorIn.aspx.cs new file mode 100644 index 00000000..4b463c73 --- /dev/null +++ b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorIn.aspx.cs @@ -0,0 +1,142 @@ +using BLL; +using Model; +using System; +using System.IO; +using System.Text; +using System.Web; + +namespace FineUIPro.Web.HJGL.BaseInfo +{ + public partial class MaterialColorIn : PageBase + { + #region 加载 + + + /// + /// 加载页面 + /// + /// + /// + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + + } + } + + #endregion + + #region 导入 + + /// + /// 导入 + /// + /// + /// + protected void btnImport_Click(object sender, EventArgs e) + { + var message = string.Empty; + errorInfos = string.Empty; + if (fuAttachUrl.HasFile == false) + { + ShowNotify("请选择Excel文件!", MessageBoxIcon.Warning); + return; + } + + var IsXls = Path.GetExtension(fuAttachUrl.FileName).Trim().ToLower(); + if (IsXls != ".xlsx") + { + ShowNotify("只能选择Excel文件!", MessageBoxIcon.Warning); + return; + } + if (!string.IsNullOrEmpty(errorInfos)) errorInfos = string.Empty; + var rootPath = Server.MapPath("~/"); + var initFullPath = rootPath + initPath; + if (!Directory.Exists(initFullPath)) Directory.CreateDirectory(initFullPath); + //指定上传文件名称 + hdFileName.Text = Funs.GetNewFileName() + IsXls; + //上传文件路径 + var filePath = initFullPath + hdFileName.Text; + //文件上传服务器 + fuAttachUrl.PostedFile.SaveAs(filePath); + //文件上传服务器后的名称 + var fileName = rootPath + initPath + hdFileName.Text; + + ResponeData responeData; + responeData = TwInOutplanmasterService.ImportData(fuAttachUrl.FileName, fileName, this.CurrUser.LoginProjectId, this.CurrUser.PersonId); + + + if (responeData.code == 1) + { + ShowNotify("数据导入成功!", MessageBoxIcon.Success); + PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference()); + } + else + { + Alert alert = new Alert(); + alert.Message = responeData.message; + alert.MessageBoxIcon = MessageBoxIcon.Error; + alert.Show(); + } + } + + #endregion + + #region 定义项 + + /// + /// 上传预设的虚拟路径 + /// + private readonly string initPath = Const.ExcelUrl; //"File\\Excel\\DataIn\\"; + + /// + /// 错误集合 + /// + public static string errorInfos = string.Empty; + + #endregion + + #region 模板下载 + + /// + /// 模板下载 + /// + /// + /// + protected void btnDownLoad_Click(object sender, EventArgs e) + { + PageContext.RegisterStartupScript(Confirm.GetShowReference("确定要下载模板吗?", string.Empty, + MessageBoxIcon.Question, PageManager1.GetCustomEventReference(false, "Confirm_OK"), + PageManager1.GetCustomEventReference("Confirm_Cancel"))); + } + + /// + /// 下载导入模板 + /// + /// + /// + protected void PageManager1_CustomEvent(object sender, CustomEventArgs e) + { + if (e.EventArgument == "Confirm_OK") + { + var rootPath = Server.MapPath("~/"); + var uploadfilepath = rootPath + Const.Tw_InPlanMasteTemplateUrl; + var filePath = Const.Tw_InPlanMasteTemplateUrl; + var fileName = Path.GetFileName(filePath); + var info = new FileInfo(uploadfilepath); + var fileSize = info.Length; + Response.ClearContent(); + Response.AddHeader("Content-Disposition", + "attachment;filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8)); + Response.ContentType = "excel/plain"; + Response.ContentEncoding = Encoding.UTF8; + Response.AddHeader("Content-Length", fileSize.ToString().Trim()); + Response.TransmitFile(uploadfilepath, 0, fileSize); + Response.End(); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorIn.aspx.designer.cs b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorIn.aspx.designer.cs new file mode 100644 index 00000000..d6656931 --- /dev/null +++ b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorIn.aspx.designer.cs @@ -0,0 +1,98 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.HJGL.BaseInfo +{ + + + public partial class MaterialColorIn + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// Toolbar1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar1; + + /// + /// ToolbarFill1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarFill ToolbarFill1; + + /// + /// btnImport 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnImport; + + /// + /// btnDownLoad 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnDownLoad; + + /// + /// fuAttachUrl 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.FileUpload fuAttachUrl; + + /// + /// hdFileName 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.HiddenField hdFileName; + } +} diff --git a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorInaspx.aspx b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorInaspx.aspx deleted file mode 100644 index 8e0c8a16..00000000 --- a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorInaspx.aspx +++ /dev/null @@ -1,16 +0,0 @@ -<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MaterialColorInaspx.aspx.cs" Inherits="FineUIPro.Web.HJGL.BaseInfo.MaterialColorInaspx" %> - - - - - - - - - -
-
-
-
- - diff --git a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorInaspx.aspx.cs b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorInaspx.aspx.cs deleted file mode 100644 index 7a29323f..00000000 --- a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorInaspx.aspx.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace FineUIPro.Web.HJGL.BaseInfo -{ - public partial class MaterialColorInaspx : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorInaspx.aspx.designer.cs b/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorInaspx.aspx.designer.cs deleted file mode 100644 index 6a2c9880..00000000 --- a/SGGL/FineUIPro.Web/HJGL/BaseInfo/MaterialColorInaspx.aspx.designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码是由工具生成的。 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace FineUIPro.Web.HJGL.BaseInfo -{ - - - public partial class MaterialColorInaspx - { - - /// - /// form1 控件。 - /// - /// - /// 自动生成的字段。 - /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 - /// - protected global::System.Web.UI.HtmlControls.HtmlForm form1; - } -} diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/InstallList.aspx b/SGGL/FineUIPro.Web/HJGL/PreDesign/InstallList.aspx index 62d2da0f..7ab340a6 100644 --- a/SGGL/FineUIPro.Web/HJGL/PreDesign/InstallList.aspx +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/InstallList.aspx @@ -22,6 +22,7 @@ + @@ -56,6 +57,11 @@ EmptyText="输入查询条件" Width="240px" LabelWidth="100px" LabelAlign="Right"> + + + + +
- - - @@ -104,7 +110,7 @@ FieldType="String" HeaderText="车次" HeaderTextAlign="Center" TextAlign="Left"> - diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/InstallList.aspx.cs b/SGGL/FineUIPro.Web/HJGL/PreDesign/InstallList.aspx.cs index cc196643..0a4212f6 100644 --- a/SGGL/FineUIPro.Web/HJGL/PreDesign/InstallList.aspx.cs +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/InstallList.aspx.cs @@ -1,5 +1,6 @@ using BLL; using MiniExcelLibs; +using Model; using System; using System.Collections.Generic; using System.Data; @@ -12,7 +13,7 @@ namespace FineUIPro.Web.HJGL.PreDesign public partial class InstallList : PageBase { public int pageSize = 20; - public static DataTable GridDataTable = new DataTable(); + public static IQueryable GridDataTable = null; protected void Page_Load(object sender, EventArgs e) { @@ -213,11 +214,10 @@ namespace FineUIPro.Web.HJGL.PreDesign private void BindGrid() { if (tvControlItem.SelectedNode == null) return; - DataTable tb = BindData(); - GridDataTable = tb; - // 2.获取当前分页数据 - Grid1.RecordCount = tb.Rows.Count; - var table = this.GetPagedDataTable(Grid1, tb); + var view_HJGL_InstallDatas = BindData(Grid1.PageIndex+1, Grid1.PageSize,out int totalCount); + // 2.获取当前分页数据 + Grid1.RecordCount = totalCount; + var table = view_HJGL_InstallDatas; Grid1.DataSource = table; Grid1.DataBind(); } @@ -226,63 +226,33 @@ namespace FineUIPro.Web.HJGL.PreDesign /// 查询数据 /// /// - private DataTable BindData() + private List BindData(int pageIndex, int pageSize, out int totalCount) { - string strSql = @"WITH cte as (select newid()as id,pipeline.PipelineCode as PipelineCode, - comonent.PipelineComponentCode as PipelineComponentCode, - '预制组件' as Stype, - '' as matdef, - packdetail.Number as Number, - pack.PackagingCode as PackagingCode, - trainnumber.TrainNumber as TrainNumber, - pipeline.FlowingSection as FlowingSection, - pipeline.UnitWorkId as UnitWorkId - from HJGL_Pipeline pipeline - left join HJGL_PackagingManageDetail packdetail on pipeline.PipelineId = packdetail.PipelineId - left join HJGL_Pipeline_Component comonent - on packdetail.PipelineComponentId = comonent.PipelineComponentId - left join HJGL_PackagingManage pack on packdetail.PackagingManageId = pack.PackagingManageId - left join HJGL_TrainNumberManage trainnumber on pack.TrainNumberId = TrainNumber.Id - where (packdetail.PipelineComponentId is not null or packdetail.PipelineComponentId != '') - union all - select newid()as id,pipeline.PipelineCode as PipelineCode, - packdetail.MaterialCode as PipelineComponentCode, - '预制散件' as Stype, - matlib.MaterialDef as matdef, - packdetail.Number as Number, - pack.PackagingCode as PackagingCode, - trainnumber.TrainNumber as TrainNumber, - pipeline.FlowingSection as FlowingSection, - pipeline.UnitWorkId as UnitWorkId - from HJGL_Pipeline pipeline - left join HJGL_PackagingManageDetail packdetail on pipeline.PipelineId = packdetail.PipelineId - left join HJGL_MaterialCodeLib matlib on packdetail.MaterialCode = matlib.MaterialCode - left join HJGL_PackagingManage pack on packdetail.PackagingManageId = pack.PackagingManageId - left join HJGL_TrainNumberManage trainnumber on pack.TrainNumberId = TrainNumber.Id - where (packdetail.PipelineComponentId is null or packdetail.PipelineComponentId = '')) - SELECT * FROM cte WHERE 1=1 "; - List listStr = new List(); + var baseQuery=from x in Funs.DB.View_HJGL_InstallData + where x.ProjectId == this.CurrUser.LoginProjectId + select x; if (tvControlItem.SelectedNode.CommandName.Split('|').Length == 2) { - strSql += " and cte.UnitWorkId =@UnitWorkId"; - listStr.Add(new SqlParameter("@UnitWorkId", this.tvControlItem.SelectedNodeID)); + baseQuery = baseQuery.Where(x => x.UnitWorkId == tvControlItem.SelectedNode.NodeID); } else if (tvControlItem.SelectedNode.CommandName == "流水段") { - strSql += " and cte.FlowingSection = @FlowingSection "; - listStr.Add(new SqlParameter("@FlowingSection", this.tvControlItem.SelectedNode.Text)); - } + baseQuery = baseQuery.Where(x => x.UnitWorkId == tvControlItem.SelectedNode.ParentNode.NodeID && x.FlowingSection == tvControlItem.SelectedNode.Text); + } if (!string.IsNullOrEmpty(txtPipelineCode2.Text)) { - strSql += " AND cte.PipelineCode like @PipelineCode"; - listStr.Add(new SqlParameter("@PipelineCode", "%" + this.txtPipelineCode2.Text.Trim() + "%")); - } + baseQuery = baseQuery.Where(x => x.PipelineCode.Contains(txtPipelineCode2.Text.Trim())); + + } if (!string.IsNullOrEmpty(txtPipelineComponentCode.Text)) { - strSql += " AND cte.PipelineComponentCode like @PipelineComponentCode"; - listStr.Add(new SqlParameter("@PipelineComponentCode", "%" + this.txtPipelineComponentCode.Text.Trim() + "%")); + baseQuery = baseQuery.Where(x => x.Code.Contains(txtPipelineComponentCode.Text.Trim())); + } + if (!string.IsNullOrEmpty(drpTypeStr.SelectedValue)) + { + baseQuery = baseQuery.Where(x => x.TypeStr.Contains(drpTypeStr.SelectedValue)); } //if (!string.IsNullOrEmpty(drpFlowingSection.SelectedValue) && drpFlowingSection.SelectedValue != Const._Null) //{ @@ -291,13 +261,17 @@ namespace FineUIPro.Web.HJGL.PreDesign //} if (!string.IsNullOrEmpty(txtPipelineCode.Text)) { - strSql += " AND cte.PipelineCode like @pipeline"; - listStr.Add(new SqlParameter("@pipeline", "%" + this.txtPipelineCode.Text.Trim() + "%")); - } - strSql += " ORDER BY PipelineCode,PipelineComponentCode "; - SqlParameter[] parameter = listStr.ToArray(); - DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); - return tb; + baseQuery = baseQuery.Where(x => x.PipelineCode.Contains(txtPipelineCode.Text.Trim())); + + } + baseQuery = baseQuery.OrderBy(x => x.PipelineCode).ThenBy(x => x.Code); + totalCount = baseQuery.Count(); + GridDataTable = baseQuery; + // 分页保护 + if (pageIndex <= 0) pageIndex = 1; + if (pageSize <= 0) pageSize = 10; + var query = baseQuery.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); + return query; } #endregion @@ -392,17 +366,17 @@ namespace FineUIPro.Web.HJGL.PreDesign { if (GridDataTable != null) { - var q = (from x in GridDataTable.AsEnumerable() + var q = (from x in GridDataTable select new { - 管线号 = x.Field("PipelineCode"), - 类型 = x.Field("Stype"), - 组件编号 = x.Field("PipelineComponentCode"), - 预制散件材料描述 = !string.IsNullOrWhiteSpace(x.Field("matdef")) ? x.Field("matdef") : "-", - 数量 = x.Field("Number"), - 所在包装编号 = x.Field("PackagingCode"), - 车次 = x.Field("TrainNumber"), - 流水段 = x.Field("FlowingSection") + 管线号 = x.PipelineCode, + 类型 = x.TypeStr, + 编号 = x.Code, + 预制散件材料描述 = x.Matdef??"-", + 数量 = x.Number, + 所在包装编号 = x.PackagingCode, + 车次 = x.TrainNumber, + 流水段 = x.FlowingSection }); string path = Funs.RootPath + @"File\Excel\Temp\PrePipelineInstallList.xlsx"; path = path.Replace(".xlsx", string.Format("{0:yyyy-MM-dd}", DateTime.Now) + ".xlsx"); diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/InstallList.aspx.designer.cs b/SGGL/FineUIPro.Web/HJGL/PreDesign/InstallList.aspx.designer.cs index e7f9d40b..f8aea7a7 100644 --- a/SGGL/FineUIPro.Web/HJGL/PreDesign/InstallList.aspx.designer.cs +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/InstallList.aspx.designer.cs @@ -131,6 +131,15 @@ namespace FineUIPro.Web.HJGL.PreDesign /// protected global::FineUIPro.TextBox txtPipelineComponentCode; + /// + /// drpTypeStr 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList drpTypeStr; + /// /// ToolbarFill2 控件。 /// diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManage.aspx b/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManage.aspx index d1265202..3e334bbb 100644 --- a/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManage.aspx +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManage.aspx @@ -43,6 +43,9 @@ + + diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManageEdit.aspx b/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManageEdit.aspx index 36d10e48..bc3c4644 100644 --- a/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManageEdit.aspx +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManageEdit.aspx @@ -17,11 +17,19 @@ - - + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManageEdit.aspx.cs b/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManageEdit.aspx.cs index 678a2e53..903e2f8b 100644 --- a/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManageEdit.aspx.cs +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManageEdit.aspx.cs @@ -30,7 +30,10 @@ namespace FineUIPro.Web.HJGL.PreDesign drpTypeInt.DataSource = HJGLPackagingmanageService.TypeIntMap; drpTypeInt.DataBind(); - + droCategoryInt.DataTextField = "Key"; + droCategoryInt.DataValueField = "Value"; + droCategoryInt.DataSource = HJGLPackagingmanageService.CategoryIntMap; + droCategoryInt.DataBind(); btnClose.OnClientClick = ActiveWindow.GetHideReference(); if (!string.IsNullOrEmpty(PackagingManageId)) { @@ -41,6 +44,7 @@ namespace FineUIPro.Web.HJGL.PreDesign txtStackingPosition.Text = model.StackingPosition; drpTrainNumber.SelectedValue = model.TrainNumberId; drpTypeInt.SelectedValue = model.TypeInt.ToString(); + droCategoryInt.SelectedValue = model.CategoryInt.ToString(); if (model.State == HJGLPackagingmanageService.state_0) { btnSave.Hidden = false; @@ -92,6 +96,7 @@ namespace FineUIPro.Web.HJGL.PreDesign //table.ContactPhone = txtContactPhone.Text; table.TrainNumberId = drpTrainNumber.SelectedValue; table.TypeInt = int.Parse(drpTypeInt.SelectedValue); + table.CategoryInt = int.Parse(droCategoryInt.SelectedValue); table.CompileMan = this.CurrUser.PersonId; table.CompileDate = DateTime.Now; if (drpTypeInt.SelectedValue == ((int)HJGLPackagingmanageService.TypeInt.预制组件).ToString()) @@ -115,6 +120,7 @@ namespace FineUIPro.Web.HJGL.PreDesign //table.ContactPhone =txtContactPhone.Text; table.TrainNumberId = drpTrainNumber.SelectedValue; table.TypeInt = int.Parse(drpTypeInt.SelectedValue); + table.CategoryInt = int.Parse(droCategoryInt.SelectedValue); if (drpTypeInt.SelectedValue == ((int)HJGLPackagingmanageService.TypeInt.预制组件).ToString()) { table.PipelineComponentId = string.Join(",", dropPipelineComponentCode.Values); diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManageEdit.aspx.designer.cs b/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManageEdit.aspx.designer.cs index 94d3a3bc..54fcc8b9 100644 --- a/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManageEdit.aspx.designer.cs +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/PackagingManageEdit.aspx.designer.cs @@ -50,6 +50,15 @@ namespace FineUIPro.Web.HJGL.PreDesign /// protected global::FineUIPro.TextBox txtPackagingCode; + /// + /// droCategoryInt 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList droCategoryInt; + /// /// drpTypeInt 控件。 /// diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManageEdit.aspx b/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManageEdit.aspx index cdf3eee1..d305bd76 100644 --- a/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManageEdit.aspx +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManageEdit.aspx @@ -17,7 +17,7 @@ - + diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManageEdit.aspx.cs b/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManageEdit.aspx.cs index 490b8fb1..8949828e 100644 --- a/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManageEdit.aspx.cs +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManageEdit.aspx.cs @@ -50,7 +50,7 @@ namespace FineUIPro.Web.HJGL.PreDesign } else { - this.txtTrainNumber.Text = TrainNumberManageService.GetNewTrainNumber(this.CurrUser.LoginProjectId); + this.txtTrainNumber.Text = TrainNumberManageService.GetNewTrainNumber(this.CurrUser.LoginProjectId); } } } diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManager.aspx b/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManager.aspx index b2e48c44..bd4c5b85 100644 --- a/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManager.aspx +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManager.aspx @@ -58,7 +58,7 @@ + FieldType="String" HeaderText="发货编号" TextAlign="Left" HeaderTextAlign="Center"> diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManager.aspx.cs b/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManager.aspx.cs index 1f4b6d1d..e5db270e 100644 --- a/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManager.aspx.cs +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/TrainNumberManager.aspx.cs @@ -31,7 +31,7 @@ namespace FineUIPro.Web.HJGL.PreDesign { Model.HJGL_TrainNumberManage table = new Model.HJGL_TrainNumberManage(); table.ProjectId = this.CurrUser.LoginProjectId; - var tb = BLL.TrainNumberManageService.GetListByQueryModle(table, Grid1.PageIndex, Grid1.PageSize); + var tb = BLL.TrainNumberManageService.GetListByQueryModle(table, Grid1.PageIndex+1, Grid1.PageSize); Grid1.RecordCount = tb.Total; Grid1.DataSource = tb.Data; Grid1.DataBind(); diff --git a/SGGL/FineUIPro.Web/HJGL/TestPackage/TestPackageComplete.aspx.cs b/SGGL/FineUIPro.Web/HJGL/TestPackage/TestPackageComplete.aspx.cs index 43881072..930a9e1b 100644 --- a/SGGL/FineUIPro.Web/HJGL/TestPackage/TestPackageComplete.aspx.cs +++ b/SGGL/FineUIPro.Web/HJGL/TestPackage/TestPackageComplete.aspx.cs @@ -134,6 +134,10 @@ namespace FineUIPro.Web.HJGL.TestPackage tn1.Text = q.UnitWorkName + "(已完成" + unitWorkTestPackagePassPercent + "%)"; tn1.ToolTip = "施工单位:" + unitNamesUnitIds; tn1.CommandName = "单位工程"; + if (unitWorkTestPackagePassPercent==100) + { + tn1.CssClass = "Green"; + } rootNode1.Nodes.Add(tn1); var testPackageUnitList = testPackageLists.Where(x => x.UnitWorkId == q.UnitWorkId).ToList(); BindNodes(tn1, testPackageUnitList); @@ -151,6 +155,10 @@ namespace FineUIPro.Web.HJGL.TestPackage tn2.Text = q.UnitWorkName + "(已完成" + unitWorkTestPackagePassPercent + "%)"; tn2.ToolTip = "施工单位:" + unitNamesUnitIds; tn2.CommandName = "单位工程"; + if (unitWorkTestPackagePassPercent == 100) + { + tn2.CssClass = "Green"; + } rootNode2.Nodes.Add(tn2); var testPackageUnitList = testPackageLists.Where(x => x.UnitWorkId == q.UnitWorkId).ToList(); BindNodes(tn2, testPackageUnitList); diff --git a/SGGL/FineUIPro.Web/ProjectData/ProjectSysSet.aspx b/SGGL/FineUIPro.Web/ProjectData/ProjectSysSet.aspx index f4e8566e..78c9b1f4 100644 --- a/SGGL/FineUIPro.Web/ProjectData/ProjectSysSet.aspx +++ b/SGGL/FineUIPro.Web/ProjectData/ProjectSysSet.aspx @@ -14,7 +14,7 @@ - + @@ -49,7 +49,15 @@ - + + + + + + + + + @@ -99,8 +107,8 @@ - - + + - + @@ -131,7 +139,6 @@ <%-- --%> - diff --git a/SGGL/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.cs b/SGGL/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.cs index b7f8daa0..657b9e40 100644 --- a/SGGL/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.cs +++ b/SGGL/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.cs @@ -1,6 +1,8 @@ using BLL; using System; using System.Linq; +using System.Collections.Generic; +using FineUIPro; namespace FineUIPro.Web.common.ProjectSet { @@ -48,595 +50,292 @@ namespace FineUIPro.Web.common.ProjectSet ShowNotify("请选择项目!", MessageBoxIcon.Warning); return; } - #region 焊接 - // 焊接 - Model.Project_Sys_Set dayReport = BLL.Project_SysSetService.GetSysSetBySetId("1", projectId); - Model.Project_Sys_Set point = BLL.Project_SysSetService.GetSysSetBySetId("2", projectId); - Model.Project_Sys_Set trust = BLL.Project_SysSetService.GetSysSetBySetId("3", projectId); - Model.Project_Sys_Set pdms = BLL.Project_SysSetService.GetSysSetBySetId("4", projectId); - Model.Project_Sys_Set batch = BLL.Project_SysSetService.GetSysSetBySetId("5", projectId); - Model.Project_Sys_Set jointB = BLL.Project_SysSetService.GetSysSetBySetId("6", projectId); - Model.Project_Sys_Set thickness = BLL.Project_SysSetService.GetSysSetBySetId("7", projectId); - Model.Project_Sys_Set pressUnit = BLL.Project_SysSetService.GetSysSetBySetId("8", projectId); - Model.Project_Sys_Set AvevaNetUrl = BLL.Project_SysSetService.GetSysSetBySetId("9", projectId); - Model.Project_Sys_Set PressMustCheckBItem = BLL.Project_SysSetService.GetSysSetBySetId("10", projectId); - if (PressMustCheckBItem != null) - { - if (this.ckPressMustCheckBItem.Checked) - { - PressMustCheckBItem.IsAuto = true; - } - else - { - PressMustCheckBItem.IsAuto = false; - } - BLL.Project_SysSetService.UpdateSet(PressMustCheckBItem); - } - else - { - Model.Project_Sys_Set newPressMustCheckBItem = new Model.Project_Sys_Set(); - newPressMustCheckBItem.SetId = "10"; - newPressMustCheckBItem.ProjectId = projectId; - if (this.ckPressMustCheckBItem.Checked) - { - newPressMustCheckBItem.IsAuto = true; - } - else - { - newPressMustCheckBItem.IsAuto = false; - } - BLL.Project_SysSetService.AddSet(newPressMustCheckBItem); - } - if (jointB != null) - { - if (this.ckbJointB.Checked) - { - jointB.IsAuto = true; - } - else - { - jointB.IsAuto = false; - } - BLL.Project_SysSetService.UpdateSet(jointB); - } - else - { - Model.Project_Sys_Set newJointB = new Model.Project_Sys_Set(); - newJointB.SetId = "6"; - newJointB.ProjectId = projectId; - if (this.ckbJointB.Checked) - { - newJointB.IsAuto = true; - } - else - { - newJointB.IsAuto = false; - } - BLL.Project_SysSetService.AddSet(newJointB); - } - if (pressUnit != null) - { - pressUnit.SetValue = this.rblPressUnit.SelectedValue; - BLL.Project_SysSetService.UpdateSet(pressUnit); - } - else - { - Model.Project_Sys_Set newPressUnit = new Model.Project_Sys_Set(); - newPressUnit.SetId = "8"; - newPressUnit.SetValue = this.rblPressUnit.SelectedValue; - newPressUnit.ProjectId = projectId; - BLL.Project_SysSetService.AddSet(newPressUnit); - } - if (AvevaNetUrl != null) - { - AvevaNetUrl.SetValue = this.AvevaNetUrl.Text.Trim(); - BLL.Project_SysSetService.UpdateSet(AvevaNetUrl); - } - else - { - Model.Project_Sys_Set newAvevaNetUrl = new Model.Project_Sys_Set(); - newAvevaNetUrl.SetId = "9"; - newAvevaNetUrl.SetName = "AVEVA NET 地址"; - newAvevaNetUrl.SetValue = this.AvevaNetUrl.Text.Trim(); - newAvevaNetUrl.ProjectId = projectId; - BLL.Project_SysSetService.AddSet(newAvevaNetUrl); - } - if (thickness != null) - { - if (this.ckbThickness.Checked) - { - thickness.IsAuto = true; - } - else - { - thickness.IsAuto = false; - } - BLL.Project_SysSetService.UpdateSet(thickness); - } - else - { - Model.Project_Sys_Set newThickness = new Model.Project_Sys_Set(); - newThickness.SetId = "7"; - newThickness.ProjectId = projectId; - if (this.ckbThickness.Checked) - { - newThickness.IsAuto = true; - } - else - { - newThickness.IsAuto = false; - } - BLL.Project_SysSetService.AddSet(newThickness); - } - if (this.ckbPdms.Checked) - { - pdms.IsAuto = true; - } - else - { - pdms.IsAuto = false; - } - if (ckbDayReport.Checked) - { - dayReport.IsAuto = true; - } - else - { - dayReport.IsAuto = false; - } + SaveWeldingSettings(projectId); + SaveColorModelSettings(projectId); + SaveQualitySettings(projectId); - if (ckbPoint.Checked) - { - point.IsAuto = true; - } - else - { - point.IsAuto = false; - } - - if (robStandard.SelectedValue == "1") - { - trust.IsAuto = true; - trust.SetValue = null; - } - else if (robStandard.SelectedValue == "2") - { - trust.IsAuto = false; - trust.SetValue = null; - } - else - { - trust.IsAuto = null; - trust.SetValue = robStandard.SelectedValue; - } - string lists = string.Empty; - if (cb1.Checked) - { - lists += "1|"; - } - if (cb2.Checked) - { - lists += "2|"; - } - if (cb3.Checked) - { - lists += "3|"; - } - if (cb4.Checked) - { - lists += "4|"; - } - if (cb5.Checked) - { - lists += "5|"; - } - if (cb6.Checked) - { - lists += "6|"; - } - if (cb7.Checked) - { - lists += "7|"; - } - if (!string.IsNullOrEmpty(lists)) - { - lists = lists.Substring(0, lists.LastIndexOf('|')); - batch.IsAuto = true; - batch.SetValue = lists; - } - - BLL.Project_SysSetService.UpdateSet(dayReport); - BLL.Project_SysSetService.UpdateSet(point); - BLL.Project_SysSetService.UpdateSet(pdms); - BLL.Project_SysSetService.UpdateSet(trust); - BLL.Project_SysSetService.UpdateSet(batch); - //this.Show(projectId); - #endregion - #region 颜色模型设置 - Model.Project_Sys_Set Model_PipelineNOComplete = BLL.Project_SysSetService.GetSysSetBySetName("管线未完成", this.CurrUser.LoginProjectId); - if (Model_PipelineNOComplete != null) - { - - if (!string.IsNullOrEmpty(this.txtPipelineNOComplete.Text.Trim())) - { - Model_PipelineNOComplete.SetValue = this.txtPipelineNOComplete.Text.Trim(); - BLL.Project_SysSetService.UpdateSet(Model_PipelineNOComplete); - } - - } - else - { - if (!string.IsNullOrEmpty(this.txtPipelineNOComplete.Text.Trim())) - { - Model.Project_Sys_Set newModel_PipelineNOComplete = new Model.Project_Sys_Set() - { - SetId = SQLHelper.GetNewID(typeof(Model.Project_Sys_Set)), - ProjectId = this.CurrUser.LoginProjectId, - SetName = "管线未完成", - SetValue = this.txtPipelineNOComplete.Text.Trim(), - }; - BLL.Project_SysSetService.AddSet(newModel_PipelineNOComplete); - } - } - Model.Project_Sys_Set Model_PipelineComplete = BLL.Project_SysSetService.GetSysSetBySetName("管线已完成", this.CurrUser.LoginProjectId); - if (Model_PipelineComplete != null) - { - - if (!string.IsNullOrEmpty(this.txtPipelineComplete.Text.Trim())) - { - Model_PipelineComplete.SetValue = this.txtPipelineComplete.Text.Trim(); - BLL.Project_SysSetService.UpdateSet(Model_PipelineComplete); - } - - } - else - { - if (!string.IsNullOrEmpty(this.txtPipelineComplete.Text.Trim())) - { - Model.Project_Sys_Set newModel = new Model.Project_Sys_Set() - { - SetId = SQLHelper.GetNewID(typeof(Model.Project_Sys_Set)), - ProjectId = this.CurrUser.LoginProjectId, - SetName = "管线已完成", - SetValue = this.txtPipelineComplete.Text.Trim(), - }; - - BLL.Project_SysSetService.AddSet(newModel); - } - } - Model.Project_Sys_Set Model_JointNOCompleteColor = BLL.Project_SysSetService.GetSysSetBySetName("焊口未完成", this.CurrUser.LoginProjectId); - if (Model_JointNOCompleteColor != null) - { - - if (!string.IsNullOrEmpty(this.drpJointNOCompleteColor.SelectedValue.Trim())) - { - Model_JointNOCompleteColor.SetValue = this.drpJointNOCompleteColor.SelectedValue.Trim(); - BLL.Project_SysSetService.UpdateSet(Model_JointNOCompleteColor); - } - - } - else - { - if (!string.IsNullOrEmpty(this.drpJointNOCompleteColor.SelectedValue.Trim())) - { - Model.Project_Sys_Set newModel = new Model.Project_Sys_Set() - { - SetId = SQLHelper.GetNewID(typeof(Model.Project_Sys_Set)), - ProjectId = this.CurrUser.LoginProjectId, - SetName = "焊口未完成", - SetValue = this.drpJointNOCompleteColor.SelectedValue.Trim(), - }; - - BLL.Project_SysSetService.AddSet(newModel); - } - } - Model.Project_Sys_Set Model_JointCompleteColor = BLL.Project_SysSetService.GetSysSetBySetName("焊口已完成", this.CurrUser.LoginProjectId); - if (Model_JointCompleteColor != null) - { - - if (!string.IsNullOrEmpty(this.drpJointCompleteColor.SelectedValue.Trim())) - { - Model_JointCompleteColor.SetValue = this.drpJointCompleteColor.SelectedValue.Trim(); - BLL.Project_SysSetService.UpdateSet(Model_JointCompleteColor); - } - - } - else - { - if (!string.IsNullOrEmpty(this.drpJointCompleteColor.SelectedValue.Trim())) - { - Model.Project_Sys_Set newModel = new Model.Project_Sys_Set() - { - SetId = SQLHelper.GetNewID(typeof(Model.Project_Sys_Set)), - ProjectId = this.CurrUser.LoginProjectId, - SetName = "焊口已完成", - SetValue = this.drpJointCompleteColor.SelectedValue.Trim(), - }; - - BLL.Project_SysSetService.AddSet(newModel); - } - } - - #endregion - #region 质量 - - Model.Project_Sys_Set CheckEquipmentDay = BLL.Project_SysSetService.GetSysSetBySetName("检试验设备到期提醒天数", this.CurrUser.LoginProjectId); - if (CheckEquipmentDay != null) - { - - if (!string.IsNullOrEmpty(this.txtRemindDay.Text.Trim())) - { - CheckEquipmentDay.SetValue = this.txtRemindDay.Text.Trim(); - BLL.Project_SysSetService.UpdateSet(CheckEquipmentDay); - } - - } - else - { - if (!string.IsNullOrEmpty(this.txtRemindDay.Text.Trim())) - { - Model.Project_Sys_Set newCheckEquipmentDay = new Model.Project_Sys_Set(); - newCheckEquipmentDay.SetId = SQLHelper.GetNewID(typeof(Model.Project_Sys_Set)); - - newCheckEquipmentDay.ProjectId = this.CurrUser.LoginProjectId; - newCheckEquipmentDay.SetName = "检试验设备到期提醒天数"; - newCheckEquipmentDay.SetValue = this.txtRemindDay.Text.Trim(); - BLL.Project_SysSetService.AddSet(newCheckEquipmentDay); - } - } - Model.Project_Sys_Set CheckMonthStartDay = BLL.Project_SysSetService.GetSysSetBySetName("月报开始日期", this.CurrUser.LoginProjectId); - if (CheckMonthStartDay != null) - { - if (!string.IsNullOrEmpty(this.txtStarTime.Text.Trim())) - { - CheckMonthStartDay.SetValue = this.txtStarTime.Text.Trim(); - BLL.Project_SysSetService.UpdateSet(CheckMonthStartDay); - } - - } - else - { - if (!string.IsNullOrEmpty(this.txtStarTime.Text.Trim())) - { - Model.Project_Sys_Set newCheckEquipmentDay = new Model.Project_Sys_Set(); - newCheckEquipmentDay.SetId = SQLHelper.GetNewID(typeof(Model.Project_Sys_Set)); - newCheckEquipmentDay.ProjectId = this.CurrUser.LoginProjectId; - newCheckEquipmentDay.SetName = "月报开始日期"; - newCheckEquipmentDay.SetValue = this.txtStarTime.Text.Trim(); - BLL.Project_SysSetService.AddSet(newCheckEquipmentDay); - } - } - Model.Project_Sys_Set CheckMonthEndDay = BLL.Project_SysSetService.GetSysSetBySetName("月报结束日期", this.CurrUser.LoginProjectId); - if (CheckMonthEndDay != null) - { - if (!string.IsNullOrEmpty(this.txtEndTime.Text.Trim())) - { - CheckMonthEndDay.SetValue = this.txtEndTime.Text.Trim(); - BLL.Project_SysSetService.UpdateSet(CheckMonthEndDay); - } - - } - else - { - if (!string.IsNullOrEmpty(this.txtEndTime.Text.Trim())) - { - Model.Project_Sys_Set newCheckEquipmentDay = new Model.Project_Sys_Set(); - newCheckEquipmentDay.SetId = SQLHelper.GetNewID(typeof(Model.Project_Sys_Set)); - newCheckEquipmentDay.ProjectId = this.CurrUser.LoginProjectId; - newCheckEquipmentDay.SetName = "月报结束日期"; - newCheckEquipmentDay.SetValue = this.txtEndTime.Text.Trim(); - BLL.Project_SysSetService.AddSet(newCheckEquipmentDay); - } - } - - #endregion + // 刷新界面 this.Show(projectId); //BLL.Sys_LogService.AddLog(BLL.Const.System_1, this.CurrUser.LoginProjectId, this.CurrUser.PersonId, "提交项目环境设置"); Alert.ShowInTop("提交成功!", MessageBoxIcon.Success); } + + private void SaveWeldingSettings(string projectId) + { + // Booleans stored in IsAuto + UpsertIsAutoById("1", projectId, this.ckbDayReport.Checked); + UpsertIsAutoById("2", projectId, this.ckbPoint.Checked); + // trust (id 3) uses special mapping: 1->IsAuto=true, 2->IsAuto=false, otherwise IsAuto=null and SetValue holds value + UpsertTrustSetting("3", projectId, this.robStandard.SelectedValue); + UpsertIsAutoById("4", projectId, this.ckbPdms.Checked); + // batch (id 5) is a list of checked items + UpsertBatchSetting("5", projectId); + UpsertIsAutoById("6", projectId, this.ckbJointB.Checked); + UpsertIsAutoById("7", projectId, this.ckbThickness.Checked); + UpsertValueById("8", projectId, this.rblPressUnit.SelectedValue); + UpsertValueById("9", projectId, this.AvevaNetUrl.Text.Trim(), setName: "AVEVA NET 地址"); + UpsertIsAutoById("10", projectId, this.ckPressMustCheckBItem.Checked); + UpsertValueById("11", projectId, this.rbMaterialColorAttribute.SelectedValue); + } + + private void SaveColorModelSettings(string projectId) + { + UpsertByName("管线未完成", projectId, this.txtPipelineNOComplete.Text.Trim()); + UpsertByName("管线已完成", projectId, this.txtPipelineComplete.Text.Trim()); + UpsertByName("焊口未完成", projectId, this.drpJointNOCompleteColor.SelectedValue.Trim()); + UpsertByName("焊口已完成", projectId, this.drpJointCompleteColor.SelectedValue.Trim()); + } + + private void SaveQualitySettings(string projectId) + { + UpsertByName("检试验设备到期提醒天数", projectId, this.txtRemindDay.Text.Trim()); + UpsertByName("月报开始日期", projectId, this.txtStarTime.Text.Trim()); + UpsertByName("月报结束日期", projectId, this.txtEndTime.Text.Trim()); + } + + #endregion + + #region Upsert Helpers + private void UpsertIsAutoById(string setId, string projectId, bool value) + { + var existing = BLL.Project_SysSetService.GetSysSetBySetId(setId, projectId); + if (existing != null) + { + existing.IsAuto = value; + BLL.Project_SysSetService.UpdateSet(existing); + } + else + { + var newSet = new Model.Project_Sys_Set + { + SetId = setId, + ProjectId = projectId, + IsAuto = value + }; + BLL.Project_SysSetService.AddSet(newSet); + } + } + + private void UpsertValueById(string setId, string projectId, string value, string setName = null) + { + if (string.IsNullOrEmpty(value)) return; + var existing = BLL.Project_SysSetService.GetSysSetBySetId(setId, projectId); + if (existing != null) + { + existing.SetValue = value; + if (!string.IsNullOrEmpty(setName)) existing.SetName = setName; + BLL.Project_SysSetService.UpdateSet(existing); + } + else + { + var newSet = new Model.Project_Sys_Set + { + SetId = setId, + ProjectId = projectId, + SetValue = value, + SetName = setName + }; + BLL.Project_SysSetService.AddSet(newSet); + } + } + + private void UpsertByName(string setName, string projectId, string value) + { + if (string.IsNullOrEmpty(value)) return; + var existing = BLL.Project_SysSetService.GetSysSetBySetName(setName, projectId); + if (existing != null) + { + existing.SetValue = value; + BLL.Project_SysSetService.UpdateSet(existing); + } + else + { + var newSet = new Model.Project_Sys_Set + { + SetId = SQLHelper.GetNewID(typeof(Model.Project_Sys_Set)), + ProjectId = projectId, + SetName = setName, + SetValue = value + }; + BLL.Project_SysSetService.AddSet(newSet); + } + } + + private void UpsertTrustSetting(string setId, string projectId, string selectedValue) + { + var existing = BLL.Project_SysSetService.GetSysSetBySetId(setId, projectId); + if (existing != null) + { + if (selectedValue == "1") + { + existing.IsAuto = true; + existing.SetValue = null; + } + else if (selectedValue == "2") + { + existing.IsAuto = false; + existing.SetValue = null; + } + else + { + existing.IsAuto = null; + existing.SetValue = selectedValue; + } + BLL.Project_SysSetService.UpdateSet(existing); + } + else + { + var newSet = new Model.Project_Sys_Set + { + SetId = setId, + ProjectId = projectId + }; + if (selectedValue == "1") + { + newSet.IsAuto = true; + } + else if (selectedValue == "2") + { + newSet.IsAuto = false; + } + else + { + newSet.IsAuto = null; + newSet.SetValue = selectedValue; + } + BLL.Project_SysSetService.AddSet(newSet); + } + } + + private void UpsertBatchSetting(string setId, string projectId) + { + var items = new List(); + if (cb1.Checked) items.Add("1"); + if (cb2.Checked) items.Add("2"); + if (cb3.Checked) items.Add("3"); + if (cb4.Checked) items.Add("4"); + if (cb5.Checked) items.Add("5"); + if (cb6.Checked) items.Add("6"); + if (cb7.Checked) items.Add("7"); + + if (items.Count == 0) return; + + var lists = string.Join("|", items); + var existing = BLL.Project_SysSetService.GetSysSetBySetId(setId, projectId); + if (existing != null) + { + existing.IsAuto = true; + existing.SetValue = lists; + BLL.Project_SysSetService.UpdateSet(existing); + } + else + { + var newSet = new Model.Project_Sys_Set + { + SetId = setId, + ProjectId = projectId, + IsAuto = true, + SetValue = lists + }; + BLL.Project_SysSetService.AddSet(newSet); + } + } #endregion #region 页面呈现 /// - /// + /// 页面呈现 /// private void Show(string projectId) { var q = from x in Funs.DB.Project_Sys_Set where x.ProjectId == projectId select x; - if (q.Count() > 0) + if (q.Any()) { - foreach (var s in q) - { - if (s.SetId == "1") - { - if (s.IsAuto == true) - { - this.ckbDayReport.Checked = true; - } - else - { - this.ckbDayReport.Checked = false; - } - } - else if (s.SetId == "2") - { - if (s.IsAuto == true) - { - this.ckbPoint.Checked = true; - } - else - { - this.ckbPoint.Checked = false; - } - } - else if (s.SetId == "3") - { - if (s.IsAuto == true) - { - this.robStandard.SelectedValue = "1"; - } - if (s.IsAuto == false) - { - this.robStandard.SelectedValue = "2"; - } - if (s.SetValue == "3") - { - this.robStandard.SelectedValue = "3"; - } - if (s.SetValue == "4") - { - this.robStandard.SelectedValue = "4"; - } - } - else if (s.SetId == "4") - { - if (s.IsAuto == true) - { - this.ckbPdms.Checked = true; - } - else - { - this.ckbPdms.Checked = false; - } - } - else if (s.SetId == "5") - { - cb4.Checked = false; - cb5.Checked = false; - cb6.Checked = false; - cb7.Checked = false; - var lists = s.SetValue.Split('|'); - foreach (var item in lists) - { - if (item == "1") - { - cb1.Checked = true; - } - else if (item == "2") - { - cb2.Checked = true; - } - else if (item == "3") - { - cb3.Checked = true; - } - else if (item == "4") - { - cb4.Checked = true; - } - else if (item == "5") - { - cb5.Checked = true; - } - else if (item == "6") - { - cb6.Checked = true; - } - else if (item == "7") - { - cb7.Checked = true; - } - } - } - else if (s.SetId == "6") - { - if (s.IsAuto == true) - { - this.ckbJointB.Checked = true; - } - else - { - this.ckbJointB.Checked = false; - } - } - else if (s.SetId == "7") - { - if (s.IsAuto == true) - { - this.ckbThickness.Checked = true; - } - else - { - this.ckbThickness.Checked = false; - } - } - else if (s.SetId == "8") - { - if (s.SetValue == "1") - { - this.rblPressUnit.SelectedValue = "1"; - } - else - { - this.rblPressUnit.SelectedValue = "2"; - } - } - else if (s.SetId == "9") - { + var dict = q.ToDictionary(x => x.SetId, x => x); - this.AvevaNetUrl.Text = s.SetValue; - } - else if (s.SetId == "10") - { - if (s.IsAuto == true) - { - this.ckPressMustCheckBItem.Checked = true; - } - else - { - this.ckPressMustCheckBItem.Checked = false; - } - } - } + SetCheckFromDict(dict, "1", this.ckbDayReport); + SetCheckFromDict(dict, "2", this.ckbPoint); + SetRobStandardFromDict(dict, "3"); + SetCheckFromDict(dict, "4", this.ckbPdms); + SetBatchFromDict(dict, "5"); + SetCheckFromDict(dict, "6", this.ckbJointB); + SetCheckFromDict(dict, "7", this.ckbThickness); + SetRadioValueFromDict(dict, "8", this.rblPressUnit, defaultValue: "2"); + if (dict.ContainsKey("9")) this.AvevaNetUrl.Text = dict["9"].SetValue; + SetCheckFromDict(dict, "10", this.ckPressMustCheckBItem); + if (dict.ContainsKey("11")) this.rbMaterialColorAttribute.SelectedValue = dict["11"].SetValue == "1" ? "1" : "2"; } + //颜色模型设置 - Model.Project_Sys_Set Model_PipelineNOComplete = BLL.Project_SysSetService.GetSysSetBySetName("管线未完成", this.CurrUser.LoginProjectId); - if (Model_PipelineNOComplete != null) - { - this.txtPipelineNOComplete.Text = Model_PipelineNOComplete.SetValue; - } - Model.Project_Sys_Set Model_PipelineComplete = BLL.Project_SysSetService.GetSysSetBySetName("管线已完成", this.CurrUser.LoginProjectId); - if (Model_PipelineComplete != null) - { - this.txtPipelineComplete.Text = Model_PipelineComplete.SetValue; - } - Model.Project_Sys_Set Model_JointNOCompleteColor = BLL.Project_SysSetService.GetSysSetBySetName("焊口未完成", this.CurrUser.LoginProjectId); - if (Model_JointNOCompleteColor != null) - { - this.drpJointNOCompleteColor.SelectedValue = Model_JointNOCompleteColor.SetValue; - } - Model.Project_Sys_Set Model_JointCompleteColor = BLL.Project_SysSetService.GetSysSetBySetName("焊口已完成", this.CurrUser.LoginProjectId); - if (Model_JointCompleteColor != null) - { - this.drpJointCompleteColor.SelectedValue = Model_JointCompleteColor.SetValue; - } + var m1 = BLL.Project_SysSetService.GetSysSetBySetName("管线未完成", this.CurrUser.LoginProjectId); + if (m1 != null) this.txtPipelineNOComplete.Text = m1.SetValue; + var m2 = BLL.Project_SysSetService.GetSysSetBySetName("管线已完成", this.CurrUser.LoginProjectId); + if (m2 != null) this.txtPipelineComplete.Text = m2.SetValue; + var m3 = BLL.Project_SysSetService.GetSysSetBySetName("焊口未完成", this.CurrUser.LoginProjectId); + if (m3 != null) this.drpJointNOCompleteColor.SelectedValue = m3.SetValue; + var m4 = BLL.Project_SysSetService.GetSysSetBySetName("焊口已完成", this.CurrUser.LoginProjectId); + if (m4 != null) this.drpJointCompleteColor.SelectedValue = m4.SetValue; ///质量页面呈现 - Model.Project_Sys_Set CheckEquipmentDay = BLL.Project_SysSetService.GetSysSetBySetName("检试验设备到期提醒天数", this.CurrUser.LoginProjectId); - if (CheckEquipmentDay != null) + var c1 = BLL.Project_SysSetService.GetSysSetBySetName("检试验设备到期提醒天数", this.CurrUser.LoginProjectId); + if (c1 != null) this.txtRemindDay.Text = c1.SetValue; + var c2 = BLL.Project_SysSetService.GetSysSetBySetName("月报开始日期", this.CurrUser.LoginProjectId); + if (c2 != null) this.txtStarTime.Text = c2.SetValue; else this.txtStarTime.Text = "25"; + var c3 = BLL.Project_SysSetService.GetSysSetBySetName("月报结束日期", this.CurrUser.LoginProjectId); + if (c3 != null) this.txtEndTime.Text = c3.SetValue; else this.txtEndTime.Text = "24"; + } + + private void SetCheckFromDict(Dictionary dict, string setId, CheckBox checkBox) + { + if (!dict.ContainsKey(setId)) return; + var s = dict[setId]; + checkBox.Checked = s.IsAuto == true; + } + + private void SetRobStandardFromDict(Dictionary dict, string setId) + { + if (!dict.ContainsKey(setId)) return; + var s = dict[setId]; + if (s.IsAuto == true) this.robStandard.SelectedValue = "1"; + else if (s.IsAuto == false) this.robStandard.SelectedValue = "2"; + else if (s.SetValue == "3") this.robStandard.SelectedValue = "3"; + else if (s.SetValue == "4") this.robStandard.SelectedValue = "4"; + } + + private void SetBatchFromDict(Dictionary dict, string setId) + { + if (!dict.ContainsKey(setId)) return; + // reset some checkboxes first + cb1.Checked = cb2.Checked = cb3.Checked = cb4.Checked = cb5.Checked = cb6.Checked = cb7.Checked = false; + var s = dict[setId]; + if (string.IsNullOrEmpty(s.SetValue)) return; + var items = s.SetValue.Split('|'); + foreach (var item in items) { - this.txtRemindDay.Text = CheckEquipmentDay.SetValue; + switch (item) + { + case "1": cb1.Checked = true; break; + case "2": cb2.Checked = true; break; + case "3": cb3.Checked = true; break; + case "4": cb4.Checked = true; break; + case "5": cb5.Checked = true; break; + case "6": cb6.Checked = true; break; + case "7": cb7.Checked = true; break; + } } - Model.Project_Sys_Set CheckMonthStartDay = BLL.Project_SysSetService.GetSysSetBySetName("月报开始日期", this.CurrUser.LoginProjectId); - if (CheckMonthStartDay != null) + } + + private void SetRadioValueFromDict(Dictionary dict, string setId, RadioButtonList rbl, string defaultValue = null) + { + if (!dict.ContainsKey(setId)) { - this.txtStarTime.Text = CheckMonthStartDay.SetValue; - } - else - { - this.txtStarTime.Text = "25"; - } - Model.Project_Sys_Set CheckMonthEndDay = BLL.Project_SysSetService.GetSysSetBySetName("月报结束日期", this.CurrUser.LoginProjectId); - if (CheckMonthEndDay != null) - { - this.txtEndTime.Text = CheckMonthEndDay.SetValue; - } - else - { - this.txtEndTime.Text = "24"; + if (defaultValue != null) rbl.SelectedValue = defaultValue; + return; } + var s = dict[setId]; + rbl.SelectedValue = s.SetValue ?? defaultValue; } #endregion } diff --git a/SGGL/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.designer.cs b/SGGL/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.designer.cs index 1673245d..4be47d9a 100644 --- a/SGGL/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.designer.cs +++ b/SGGL/FineUIPro.Web/ProjectData/ProjectSysSet.aspx.designer.cs @@ -113,6 +113,15 @@ namespace FineUIPro.Web.common.ProjectSet /// protected global::FineUIPro.CheckBox ckPressMustCheckBItem; + /// + /// rbMaterialColorAttribute 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.RadioButtonList rbMaterialColorAttribute; + /// /// ckbDayReport 控件。 /// diff --git a/SGGL/Model/HJGL/BaseInfo/BaseMaterialcolorDataIn.cs b/SGGL/Model/HJGL/BaseInfo/BaseMaterialcolorDataIn.cs new file mode 100644 index 00000000..d4abeb11 --- /dev/null +++ b/SGGL/Model/HJGL/BaseInfo/BaseMaterialcolorDataIn.cs @@ -0,0 +1,37 @@ +using MiniExcelLibs.Attributes; + +namespace Model +{ + /// + /// 管道材质颜色导入实体 + /// + public class BaseMaterialcolorDataIn + { + + /// + /// 材质 + /// + [ExcelColumnIndex("A")] + public string MaterialCode { get; set; } + /// + /// 颜色名称 + /// + [ExcelColumnIndex("B")] + public string ColorName { get; set; } + /// + /// 色卡号 + /// + [ExcelColumnIndex("C")] + public string ColorCardNo { get; set; } + /// + /// RGB + /// + [ExcelColumnIndex("D")] + public string RGB { get; set; } + /// + /// 备注 + /// + [ExcelColumnIndex("E")] + public string Remark { get; set; } + } +} diff --git a/SGGL/Model/HJGL/BaseMaterialcolorOutput.cs b/SGGL/Model/HJGL/BaseInfo/BaseMaterialcolorOutput.cs similarity index 100% rename from SGGL/Model/HJGL/BaseMaterialcolorOutput.cs rename to SGGL/Model/HJGL/BaseInfo/BaseMaterialcolorOutput.cs diff --git a/SGGL/Model/HJGL/MaterialStockItem.cs b/SGGL/Model/HJGL/PreDesign/Material/MaterialStockItem.cs similarity index 100% rename from SGGL/Model/HJGL/MaterialStockItem.cs rename to SGGL/Model/HJGL/PreDesign/Material/MaterialStockItem.cs diff --git a/SGGL/Model/HJGL/PreDesign/PackagingManage/PackagingManageInput.cs b/SGGL/Model/HJGL/PreDesign/PackagingManage/PackagingManageInput.cs new file mode 100644 index 00000000..970a6988 --- /dev/null +++ b/SGGL/Model/HJGL/PreDesign/PackagingManage/PackagingManageInput.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Model +{ + /// + /// 包装管理输入参数 + /// + public class PackagingManageInput + { + /// + /// 主键 + /// + public string PackagingManageId { get; set; } + /// + /// 包装编号 + /// + public string PackagingCode { get; set; } + /// + /// 项目id + /// + public string ProjectId { get; set; } + /// + /// 项目名称 + /// + public string ProjectName { get; set; } + /// + /// 联系人姓名 + /// + public string ContactName { get; set; } + /// + /// 联系人电话 + /// + public string ContactPhone { get; set; } + /// + /// 预制工作包 + /// + public string StackingPosition { get; set; } + /// + /// 状态 + /// + public int? State { get; set; } + /// + /// 接收人 + /// + public string ReceiveMan { get; set; } + /// + /// 接收时间 + /// + public string ReceiveDate { get; set; } + /// + /// 车次id + /// + public string TrainNumberId { get; set; } + } +} diff --git a/SGGL/Model/HJGL/PackagingManagePrintOutput.cs b/SGGL/Model/HJGL/PreDesign/PackagingManage/PackagingManagePrintOutput.cs similarity index 100% rename from SGGL/Model/HJGL/PackagingManagePrintOutput.cs rename to SGGL/Model/HJGL/PreDesign/PackagingManage/PackagingManagePrintOutput.cs diff --git a/SGGL/Model/HJGL/PipelineComponentPrintDto.cs b/SGGL/Model/HJGL/PreDesign/PipelineComponent/PipelineComponentPrintDto.cs similarity index 100% rename from SGGL/Model/HJGL/PipelineComponentPrintDto.cs rename to SGGL/Model/HJGL/PreDesign/PipelineComponent/PipelineComponentPrintDto.cs diff --git a/SGGL/Model/HJGL/Pipeline_ComponentQRCodeItem.cs b/SGGL/Model/HJGL/PreDesign/PipelineComponent/Pipeline_ComponentQRCodeItem.cs similarity index 100% rename from SGGL/Model/HJGL/Pipeline_ComponentQRCodeItem.cs rename to SGGL/Model/HJGL/PreDesign/PipelineComponent/Pipeline_ComponentQRCodeItem.cs diff --git a/SGGL/Model/Model.cs b/SGGL/Model/Model.cs index aa16a05a..1316a9e7 100644 --- a/SGGL/Model/Model.cs +++ b/SGGL/Model/Model.cs @@ -6921,6 +6921,14 @@ namespace Model } } + public System.Data.Linq.Table View_HJGL_InstallData + { + get + { + return this.GetTable(); + } + } + public System.Data.Linq.Table View_HJGL_JointInfoQuery { get @@ -97820,6 +97828,8 @@ namespace Model private System.Nullable _CompileDate; + private System.Nullable _CategoryInt; + #region 可扩展性方法定义 partial void OnLoaded(); partial void OnValidate(System.Data.Linq.ChangeAction action); @@ -97856,6 +97866,8 @@ namespace Model partial void OnCompileManChanged(); partial void OnCompileDateChanging(System.Nullable value); partial void OnCompileDateChanged(); + partial void OnCategoryIntChanging(System.Nullable value); + partial void OnCategoryIntChanged(); #endregion public HJGL_PackagingManage() @@ -98183,6 +98195,26 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CategoryInt", DbType="Int")] + public System.Nullable CategoryInt + { + get + { + return this._CategoryInt; + } + set + { + if ((this._CategoryInt != value)) + { + this.OnCategoryIntChanging(value); + this.SendPropertyChanging(); + this._CategoryInt = value; + this.SendPropertyChanged("CategoryInt"); + this.OnCategoryIntChanged(); + } + } + } + public event PropertyChangingEventHandler PropertyChanging; public event PropertyChangedEventHandler PropertyChanged; @@ -290556,6 +290588,213 @@ namespace Model } } + [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.View_HJGL_InstallData")] + public partial class View_HJGL_InstallData + { + + private string _Id; + + private string _PipelineCode; + + private string _Code; + + private string _TypeStr; + + private string _Matdef; + + private System.Nullable _Number; + + private string _PackagingCode; + + private string _TrainNumber; + + private string _FlowingSection; + + private string _UnitWorkId; + + private string _ProjectId; + + public View_HJGL_InstallData() + { + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", DbType="NVarChar(50) NOT NULL", CanBeNull=false)] + public string Id + { + get + { + return this._Id; + } + set + { + if ((this._Id != value)) + { + this._Id = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PipelineCode", DbType="NVarChar(200)")] + public string PipelineCode + { + get + { + return this._PipelineCode; + } + set + { + if ((this._PipelineCode != value)) + { + this._PipelineCode = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Code", DbType="NVarChar(50)")] + public string Code + { + get + { + return this._Code; + } + set + { + if ((this._Code != value)) + { + this._Code = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TypeStr", DbType="VarChar(8) NOT NULL", CanBeNull=false)] + public string TypeStr + { + get + { + return this._TypeStr; + } + set + { + if ((this._TypeStr != value)) + { + this._TypeStr = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Matdef", DbType="NVarChar(MAX)", UpdateCheck=UpdateCheck.Never)] + public string Matdef + { + get + { + return this._Matdef; + } + set + { + if ((this._Matdef != value)) + { + this._Matdef = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Number", DbType="Decimal(18,2)")] + public System.Nullable Number + { + get + { + return this._Number; + } + set + { + if ((this._Number != value)) + { + this._Number = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PackagingCode", DbType="NVarChar(50)")] + public string PackagingCode + { + get + { + return this._PackagingCode; + } + set + { + if ((this._PackagingCode != value)) + { + this._PackagingCode = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TrainNumber", DbType="NVarChar(50)")] + public string TrainNumber + { + get + { + return this._TrainNumber; + } + set + { + if ((this._TrainNumber != value)) + { + this._TrainNumber = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FlowingSection", DbType="NVarChar(200)")] + public string FlowingSection + { + get + { + return this._FlowingSection; + } + set + { + if ((this._FlowingSection != value)) + { + this._FlowingSection = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnitWorkId", DbType="NVarChar(50)")] + public string UnitWorkId + { + get + { + return this._UnitWorkId; + } + set + { + if ((this._UnitWorkId != value)) + { + this._UnitWorkId = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProjectId", DbType="NVarChar(50)")] + public string ProjectId + { + get + { + return this._ProjectId; + } + set + { + if ((this._ProjectId != value)) + { + this._ProjectId = value; + } + } + } + } + [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.View_HJGL_JointInfoQuery")] public partial class View_HJGL_JointInfoQuery { diff --git a/SGGL/Model/Model.csproj b/SGGL/Model/Model.csproj index d4309d1c..c0dcf251 100644 --- a/SGGL/Model/Model.csproj +++ b/SGGL/Model/Model.csproj @@ -212,11 +212,11 @@ + - @@ -233,14 +233,16 @@ - - + + + - - + + + - + @@ -299,6 +301,7 @@ +