From 597f8e08e6264b2143454e40a7be553d1e8b6df7 Mon Sep 17 00:00:00 2001 From: sjz <1240968267@qq.com> Date: 星期五, 09 五月 2025 17:04:19 +0800 Subject: [PATCH] 2025/5/9 沈 --- StandardInterface/MESApplication/Controllers/QcIssueResult/QcIssueResultController.cs | 135 ++++ StandardInterface/MES.Service/Modes/QcIssueResult/DingNameCode.cs | 25 .vs/HM-C#/v17/DocumentLayout.json | 23 StandardInterface/MES.Service/service/PLM/WarehouseDownloadDoc.cs | 145 ++++ StandardInterface/MESApplication/Controllers/Base/LoginController.cs | 44 + StandardInterface/MES.Service/Modes/QcIssueResult/UpdateMesQaItems .cs | 36 + StandardInterface/MES.Service/Modes/QcIssueResult/IqcApplicant.cs | 29 StandardInterface/MES.Service/Modes/QcIssueResult/QcIssueResults.cs | 70 ++ StandardInterface/MES.Service/service/QcIssueResult/QcIssueResultManager.cs | 764 ++++++++++++++++++++++++ StandardInterface/MES.Service/Dto/webApi/PLM/StdDocument.cs | 23 StandardInterface/MES.Service/Modes/LtsLlj.cs | 12 StandardInterface/MESApplication/Controllers/BasicData/MesRohInController.cs | 1 StandardInterface/MES.Service/Modes/MesItems.cs | 21 .vs/VSWorkspaceState.json | 1 StandardInterface/MES.Service/Dto/webApi/QcIssueResult/QcIssueResult.cs | 12 StandardInterface/MES.Service/MES.Service.csproj | 10 StandardInterface/MESApplication/Config/appsettings.json | 10 StandardInterface/MES.Service/Dto/webApi/ErpItems.cs | 4 StandardInterface/MES.Service/Dto/webApi/QcIssueResult/ErpQcIssueResult.cs | 44 + StandardInterface/MESApplication/Controllers/PLM/PLMController.cs | 125 ++++ .vs/HM-C#/v17/.wsuo | 0 StandardInterface/MES.Service/Dto/webApi/PLM/RelatedObject.cs | 17 StandardInterface/MES.Service/Modes/QcIssueResult/IqcDepartment.cs | 25 StandardInterface/MES.Service/service/BasicData/RawMaterial/MesRohInManager.cs | 6 StandardInterface/MES.Service/Dto/webApi/PLM/BaseObject.cs | 12 StandardInterface/MES.Service/resources/TopSdk.dll | 0 StandardInterface/MES.Service/Modes/QcIssueResult/GetQcIssueResultDetail.cs | 51 + StandardInterface/MES.Service/service/BasicData/Material/MesItemsManager.cs | 4 StandardInterface/MES.Service/service/PLM/PLMManager.cs | 189 ++++++ 29 files changed, 1,828 insertions(+), 10 deletions(-) diff --git "a/.vs/HM-C\043/v17/.wsuo" "b/.vs/HM-C\043/v17/.wsuo" new file mode 100644 index 0000000..ffcd3b5 --- /dev/null +++ "b/.vs/HM-C\043/v17/.wsuo" Binary files differ diff --git "a/.vs/HM-C\043/v17/DocumentLayout.json" "b/.vs/HM-C\043/v17/DocumentLayout.json" new file mode 100644 index 0000000..7f931ec --- /dev/null +++ "b/.vs/HM-C\043/v17/DocumentLayout.json" @@ -0,0 +1,23 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\VISUAL STUDIOS JOB\\HM\\HM-C#\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": -1, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index 6b61141..7cec5fb 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -2,5 +2,6 @@ "ExpandedNodes": [ "" ], + "SelectedNode": "\\MESApplication.sln", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/StandardInterface/MES.Service/Dto/webApi/ErpItems.cs b/StandardInterface/MES.Service/Dto/webApi/ErpItems.cs index f891521..f8b7caa 100644 --- a/StandardInterface/MES.Service/Dto/webApi/ErpItems.cs +++ b/StandardInterface/MES.Service/Dto/webApi/ErpItems.cs @@ -79,4 +79,8 @@ public string? F_DCSL { get; set; } //鍊掑啿鏁伴噺 public string? F_BZGS { get; set; } //鏍囧噯宸ユ椂 public string? F_FZMC { get; set; } //鐗╂枡鍒嗙粍鍚嶇О锛堢被鍨嬪悕绉帮級 + public string? MJBM { get; set; } //妯″叿缂栫爜锛堝悕绉帮級 + public string? KHWLBM { get; set; } //瀹㈡埛鐗╂枡缂栫爜 + public string? YS { get; set; } //棰滆壊 + public string? NEXT_GX { get; set; } //涓嬮亾宸ュ簭 } \ No newline at end of file diff --git a/StandardInterface/MES.Service/Dto/webApi/PLM/BaseObject.cs b/StandardInterface/MES.Service/Dto/webApi/PLM/BaseObject.cs new file mode 100644 index 0000000..5794080 --- /dev/null +++ b/StandardInterface/MES.Service/Dto/webApi/PLM/BaseObject.cs @@ -0,0 +1,12 @@ +锘� +namespace MES.Service.Dto.webApi.PLM; + +public class BaseObject +{ + //瀹炰綋涓婚敭 + public long? FID { get; set; } + //缂栫爜 + public string? FCode { get; set; } + //鍚嶇О + public string? FName { get; set; } +} diff --git a/StandardInterface/MES.Service/Dto/webApi/PLM/RelatedObject.cs b/StandardInterface/MES.Service/Dto/webApi/PLM/RelatedObject.cs new file mode 100644 index 0000000..cdee91e --- /dev/null +++ b/StandardInterface/MES.Service/Dto/webApi/PLM/RelatedObject.cs @@ -0,0 +1,17 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MES.Service.Dto.webApi.PLM; + +public class RelatedObject +{ + //瀹炰綋涓婚敭 + public long? FID { get; set; } + //鐗╂枡缂栫爜 + public string? FRE_FCode { get; set; } + //鐩稿叧瀵硅薄 + public long? FRelatedObject { get; set; } +} diff --git a/StandardInterface/MES.Service/Dto/webApi/PLM/StdDocument.cs b/StandardInterface/MES.Service/Dto/webApi/PLM/StdDocument.cs new file mode 100644 index 0000000..151a151 --- /dev/null +++ b/StandardInterface/MES.Service/Dto/webApi/PLM/StdDocument.cs @@ -0,0 +1,23 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MES.Service.Dto.webApi.PLM; + +public class StdDocument +{ + //瀹炰綋涓婚敭 + public long? FID { get; set; } + //缂栫爜 + public string? FCode { get; set; } + //鍚嶇О + public string? FName { get; set; } + //鐗╃悊鏂囦欢鍚� + public string? FPhysicalFileName { get; set; } + //鐗╃悊鏂囦欢 + public string? FFileId { get; set; } + //鍏宠仈瀵硅薄 杞殑 pdf + public string? FRelevantObject { get; set; } +} diff --git a/StandardInterface/MES.Service/Dto/webApi/QcIssueResult/ErpQcIssueResult.cs b/StandardInterface/MES.Service/Dto/webApi/QcIssueResult/ErpQcIssueResult.cs new file mode 100644 index 0000000..62375ce --- /dev/null +++ b/StandardInterface/MES.Service/Dto/webApi/QcIssueResult/ErpQcIssueResult.cs @@ -0,0 +1,44 @@ +锘縰sing Newtonsoft.Json; +using System.Collections.Generic; + +public class ErpQcIssueResult +{ + + public string? ProcessNo { get; set; } + + + public string? FReview { get; set; } + + + public string? QcStatus { get; set; } // 鍘烸CSTATU鏀逛负瑙勮寖鍛藉悕 + + // 鏂板鍚堝苟瀛楁 + + public string? Remark { get; set; } + + + public int? ApplicationQuantity { get; set; } // 淇濇寔鍙┖鎬� + + + public string? Reason { get; set; } + + + public string? BadCauses { get; set; } + + + public string? AffiliatedWorkshop { get; set; } + + + public string? ItemName { get; set; } + + + public string? SupplierName { get; set; } + + + public string? ItemNo { get; set; } + + + public List<string> Applicants { get; set; } = new List<string>(); + + public List<string> ApplicationDepartments { get; set; } = new List<string>(); +} diff --git a/StandardInterface/MES.Service/Dto/webApi/QcIssueResult/QcIssueResult.cs b/StandardInterface/MES.Service/Dto/webApi/QcIssueResult/QcIssueResult.cs new file mode 100644 index 0000000..6ce15a0 --- /dev/null +++ b/StandardInterface/MES.Service/Dto/webApi/QcIssueResult/QcIssueResult.cs @@ -0,0 +1,12 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MES.Service.Dto.webApi.QcIssueResult; + +public class QcIssueResult +{ + public ErpQcIssueResult ErpQcIssueResult { get; set; } +} diff --git a/StandardInterface/MES.Service/MES.Service.csproj b/StandardInterface/MES.Service/MES.Service.csproj index 89bbd58..0cdbe87 100644 --- a/StandardInterface/MES.Service/MES.Service.csproj +++ b/StandardInterface/MES.Service/MES.Service.csproj @@ -7,12 +7,19 @@ </PropertyGroup> <ItemGroup> + <PackageReference Include="AlibabaCloud.SDK.Dingtalk" Version="2.1.99" /> <PackageReference Include="Masuit.Tools.Core" Version="2024.3.4" /> + <PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.4" /> + <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.4" /> + <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.4" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" /> + <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> <PackageReference Include="SqlSugarCore" Version="5.1.4.158" /> </ItemGroup> <ItemGroup> <Folder Include="Dto\webApi\SRM\" /> + <Folder Include="Dto\webApi\鏂版枃浠跺す\" /> <Folder Include="Modes\SRM\" /> <Folder Include="service\SRM\" /> </ItemGroup> @@ -21,6 +28,9 @@ <Reference Include="Kingdee.CDP.WebApi.SDK"> <HintPath>resources\Kingdee.CDP.WebApi.SDK.dll</HintPath> </Reference> + <Reference Include="TopSdk"> + <HintPath>resources\TopSdk.dll</HintPath> + </Reference> </ItemGroup> </Project> diff --git a/StandardInterface/MES.Service/Modes/LtsLlj.cs b/StandardInterface/MES.Service/Modes/LtsLlj.cs index 0e7f4eb..2aecc8a 100644 --- a/StandardInterface/MES.Service/Modes/LtsLlj.cs +++ b/StandardInterface/MES.Service/Modes/LtsLlj.cs @@ -147,6 +147,18 @@ public string? SuppName { get; set; } /// <summary> + /// 缁勭粐缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "DEPARTMENTID")] + public string? DEPARTMENTID { get; set; } + + /// <summary> + /// 缁勭粐鍚嶇О + /// </summary> + [SugarColumn(ColumnName = "DEPARTMENTNAME")] + public string? DEPARTMENTNAME { get; set; } + + /// <summary> /// 鐗╂枡瑙勬牸 /// </summary> [SugarColumn(ColumnName = "ITEM_MODEL")] diff --git a/StandardInterface/MES.Service/Modes/MesItems.cs b/StandardInterface/MES.Service/Modes/MesItems.cs index 265e4c0..bd6cf87 100644 --- a/StandardInterface/MES.Service/Modes/MesItems.cs +++ b/StandardInterface/MES.Service/Modes/MesItems.cs @@ -482,5 +482,26 @@ /// </summary> [SugarColumn(ColumnName = "WLFZMC")] public string? WLFZMC { get; set; } + /// <summary> + /// 妯″叿缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "MJBM")] + public string? MJBM { get; set; } + + /// <summary> + /// 瀹㈡埛鐗╂枡缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "KHWLBM")] + public string? KHWLBM { get; set; } + /// <summary> + /// 棰滆壊 + /// </summary> + [SugarColumn(ColumnName = "YS")] + public string? YS { get; set; } + /// <summary> + /// 涓嬮亾宸ュ簭 + /// </summary> + [SugarColumn(ColumnName = "NEXT_GX")] + public string? Next_Gx { get; set; } } \ No newline at end of file diff --git a/StandardInterface/MES.Service/Modes/QcIssueResult/DingNameCode.cs b/StandardInterface/MES.Service/Modes/QcIssueResult/DingNameCode.cs new file mode 100644 index 0000000..659ff2f --- /dev/null +++ b/StandardInterface/MES.Service/Modes/QcIssueResult/DingNameCode.cs @@ -0,0 +1,25 @@ +锘縰sing SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MES.Service.Modes.QcIssueResult; + +//閽夐拤鐢ㄦ埛鍐呯爜瀵瑰簲琛� +[SugarTable("MES_STAFF")] +internal class DingNameCode +{ + + [SugarColumn(ColumnName = "STAFF_NO")] + public string? STAFF_NO { get; set; } + + //閽夐拤鐢ㄦ埛鍐呯爜 + [SugarColumn(ColumnName = "STAFF_NAME")] + public string? STAFF_NAME { get; set; } + + //閽夐拤鐢ㄦ埛鍚嶇О + [SugarColumn(ColumnName = "PHONE_NUMBER")] + public string? PHONE_NUMBER { get; set; } +} diff --git a/StandardInterface/MES.Service/Modes/QcIssueResult/GetQcIssueResultDetail.cs b/StandardInterface/MES.Service/Modes/QcIssueResult/GetQcIssueResultDetail.cs new file mode 100644 index 0000000..ef667f2 --- /dev/null +++ b/StandardInterface/MES.Service/Modes/QcIssueResult/GetQcIssueResultDetail.cs @@ -0,0 +1,51 @@ +锘縰sing SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MES.Service.Modes.QcIssueResult; + +public class GetQcIssueResultDetail +{ + //鐢宠鏁伴噺 + + public string? FbatchQty { get; set; } + + //浜у搧鍚嶇О + + public string? ItemName { get; set; } + + //瑙勬牸缂栫爜 + + public string? ItemNo { get; set; } + + //渚涘簲鍟嗗悕绉� + public string? SuppName { get; set; } + + //娴嬭瘯浜у搧璐ㄩ噺鐘跺喌鍙婄敵璇峰師鍥� + public string? AppicationReason { get; set; } + + //璁㈠崟鍙�(閲囪喘鍗曞彿) + public string? BadReason { get; set; } + + //澶囨敞 + public string? remark { get; set; } + + //妫�楠屽崟鍙� + public string? ReleaseNo { get; set; } + + //鐢ㄦ埛鍐呯爜 + public string? StaffNo { get; set; } + + //璇勫鐘舵�� + public string? IqcStatus { get; set; } + + //鐢宠閮ㄩ棬 + public string? Department { get; set; } + + //鐢宠閮ㄩ棬 + public string? WorkShop { get; set; } + +} diff --git a/StandardInterface/MES.Service/Modes/QcIssueResult/IqcApplicant.cs b/StandardInterface/MES.Service/Modes/QcIssueResult/IqcApplicant.cs new file mode 100644 index 0000000..28381fa --- /dev/null +++ b/StandardInterface/MES.Service/Modes/QcIssueResult/IqcApplicant.cs @@ -0,0 +1,29 @@ +锘縰sing SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MES.Service.Modes.QcIssueResult; + +//寮傚父澶勭疆鍗曠粨鏋滆〃 +[SugarTable("MES_QCISSUE_RESULT_APPLICANT")] +public class IqcApplicant +{ + //SEQ_QCISSUE_RESULT_APPLICANT + [SugarColumn(ColumnName = "ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_QCISSUE_RESULT_APPLICANT")] + public decimal Id { get; set; } + + //鐢宠浜篒D + [SugarColumn(ColumnName = "APPLICANTID")] + public string? APPLICANTID { get; set; } + + //娴佺▼鍙� + [SugarColumn(ColumnName = "INSTANCEID")] + public string? INSTANCEID { get; set; } + + //鐢宠浜哄悕瀛� + [SugarColumn(ColumnName = "APPLICANTNAME")] + public string? APPLICANTNAME { get; set; } +} diff --git a/StandardInterface/MES.Service/Modes/QcIssueResult/IqcDepartment.cs b/StandardInterface/MES.Service/Modes/QcIssueResult/IqcDepartment.cs new file mode 100644 index 0000000..21531f7 --- /dev/null +++ b/StandardInterface/MES.Service/Modes/QcIssueResult/IqcDepartment.cs @@ -0,0 +1,25 @@ +锘縰sing SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MES.Service.Modes.QcIssueResult; + +//寮傚父澶勭疆鍗曠粨鏋滆〃 +[SugarTable("MES_QCISSUE_RESULT_DEPARTMENT")] +public class IqcDepartment +{ + //SEQ_QCISSUE_RESULT_DEPARTMENT + [SugarColumn(ColumnName = "ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_QCISSUE_RESULT_DEPARTMENT")] + public decimal Id { get; set; } + + //鐢宠閮ㄩ棬鍚嶇О + [SugarColumn(ColumnName = "DEPARTMENTNAME")] + public string? DEPARTMENTNAME { get; set; } + + //娴佺▼鍙� + [SugarColumn(ColumnName = "INSTANCEID")] + public string? INSTANCEID { get; set; } +} diff --git a/StandardInterface/MES.Service/Modes/QcIssueResult/QcIssueResults.cs b/StandardInterface/MES.Service/Modes/QcIssueResult/QcIssueResults.cs new file mode 100644 index 0000000..482615d --- /dev/null +++ b/StandardInterface/MES.Service/Modes/QcIssueResult/QcIssueResults.cs @@ -0,0 +1,70 @@ +锘縰sing SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MES.Service.Modes.QcIssueResult; + +//寮傚父澶勭疆鍗曠粨鏋滆〃 +[SugarTable("MES_QCISSUE_RESULT")] +public class QcIssueResults +{ + //SEQ_MES_SCZZD + [SugarColumn(ColumnName = "ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_QCISSUE_RESULT")] + public decimal Id { get; set; } + + //鏉ユ枡妫�楠屽崟鍙� + [SugarColumn(ColumnName = "RELEASE_NO")] + public string? ReleaseNo { get; set; } + + //娴佺▼鍙� + [SugarColumn(ColumnName = "INSTANCEID")] + public string? INSTANCEID { get; set; } + + //澶勭悊缁撴灉 + [SugarColumn(ColumnName = "FREVIEW")] + public string? FReview { get; set; } + + //寮傚父澶勭疆鍗曟槸鍚﹁鎷掔粷 + [SugarColumn(ColumnName = "QCSTATU")] + public string? QcStatu { get; set; } + + //鐢宠鏁伴噺 + [SugarColumn(ColumnName = "APPLICATIONNUM")] + public string? APPLICATIONNUM { get; set; } + + //涓嶈壇鍘熷洜 + [SugarColumn(ColumnName = "BADCAUSES")] + public string? BADCAUSES { get; set; } + + //鎵�灞炶溅闂� + [SugarColumn(ColumnName = "BELONGINGWORKSHOP")] + public string? BELONGINGWORKSHOP { get; set; } + + //璇勫鐘舵�� + [SugarColumn(ColumnName = "REVIEWSTATUS")] + public string? REVIEWSTATUS { get; set; } + + //鐗╂枡鍚嶇О + [SugarColumn(ColumnName = "ITEMNAME")] + public string? ITEMNAME { get; set; } + + //鐗╂枡缂栫爜 + [SugarColumn(ColumnName = "ITEMNO")] + public string? ITEMNO { get; set; } + + //渚涘簲鍟嗗悕绉� + [SugarColumn(ColumnName = "SUPPLIERNAME")] + public string? SUPPLIERNAME { get; set; } + + //澶囨敞 + [SugarColumn(ColumnName = "REMARK")] + public string? REMARK { get; set; } + + //浜у搧璐ㄩ噺鐘跺喌鍙婄敵璇峰師鍥� + [SugarColumn(ColumnName = "APPLICATIONRESON")] + public string? APPLICATIONRESON { get; set; } + +} diff --git a/StandardInterface/MES.Service/Modes/QcIssueResult/UpdateMesQaItems .cs b/StandardInterface/MES.Service/Modes/QcIssueResult/UpdateMesQaItems .cs new file mode 100644 index 0000000..d9880f6 --- /dev/null +++ b/StandardInterface/MES.Service/Modes/QcIssueResult/UpdateMesQaItems .cs @@ -0,0 +1,36 @@ +锘縰sing SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MES.Service.Modes.QcIssueResult; + +[SugarTable("MES_QA_ITEMS_DETECT_01")] +public class UpdateMesQaItems +{ + [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_QM_ID", + IsPrimaryKey = true)] + public decimal Id { get; set; } + //閫佽揣鍗曞彿 + [SugarColumn(ColumnName = "RELEASE_NO")] + public string? ReleaseNo { get; set; } + + //閫佽揣鍗曞彿 + [SugarColumn(ColumnName = "FNG_HANDLE")] + public string? FngHandle { get; set; } + + //閫佽揣鍗曞彿 + [SugarColumn(ColumnName = "FMRMODE")] + public string? FMRMODE { get; set; } + + //閫佽揣鍗曞彿 + [SugarColumn(ColumnName = "IS_SJ")] + public decimal? ISSJ { get; set; } + + //閫佽揣鍗曞彿 + [SugarColumn(ColumnName = "SJ_NO")] + public string? SJ_NO { get; set; } + +} diff --git a/StandardInterface/MES.Service/resources/TopSdk.dll b/StandardInterface/MES.Service/resources/TopSdk.dll new file mode 100644 index 0000000..43cbaea --- /dev/null +++ b/StandardInterface/MES.Service/resources/TopSdk.dll Binary files differ diff --git a/StandardInterface/MES.Service/service/BasicData/Material/MesItemsManager.cs b/StandardInterface/MES.Service/service/BasicData/Material/MesItemsManager.cs index 83eefff..4b8dbc9 100644 --- a/StandardInterface/MES.Service/service/BasicData/Material/MesItemsManager.cs +++ b/StandardInterface/MES.Service/service/BasicData/Material/MesItemsManager.cs @@ -218,6 +218,10 @@ F_DCSL =item.F_DCSL, F_BZGS =item.F_BZGS, WLFZMC=item.F_FZMC, + MJBM =item.MJBM, + KHWLBM =item.KHWLBM, + YS=item.YS, + Next_Gx = item.NEXT_GX, }; } diff --git a/StandardInterface/MES.Service/service/BasicData/RawMaterial/MesRohInManager.cs b/StandardInterface/MES.Service/service/BasicData/RawMaterial/MesRohInManager.cs index 49bb250..8f3b66b 100644 --- a/StandardInterface/MES.Service/service/BasicData/RawMaterial/MesRohInManager.cs +++ b/StandardInterface/MES.Service/service/BasicData/RawMaterial/MesRohInManager.cs @@ -94,9 +94,9 @@ .Deleteable<MesRohInData>() .Where(s => decimals.Contains(s.Id)) .ExecuteCommand() > 0; - - if (update && insertOrUpdate) return true; - throw new NotImplementedException("鏇存柊澶辫触"); + return true; + /* if (update && insertOrUpdate) return true; + throw new NotImplementedException("鏇存柊澶辫触");*/ } // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶 diff --git a/StandardInterface/MES.Service/service/PLM/PLMManager.cs b/StandardInterface/MES.Service/service/PLM/PLMManager.cs new file mode 100644 index 0000000..9a0bc58 --- /dev/null +++ b/StandardInterface/MES.Service/service/PLM/PLMManager.cs @@ -0,0 +1,189 @@ +锘縰sing Kingdee.CDP.WebApi.SDK; +using MES.Service.Dto.webApi.PLM; +using System.Diagnostics; +using System.Text; + +namespace MES.Service.service.PLM; + +public class PLMManager +{ + public List<StdDocument> RetrieveDrawings(string ItemNo) + { + List<BaseObject> baseObjects = GetPlmCfgBase(ItemNo); + Debug.WriteLine($"绗竴瀹屾暣鍐呭锛圝SON锛�: {Newtonsoft.Json.JsonConvert.SerializeObject(baseObjects, Newtonsoft.Json.Formatting.Indented)}"); + + // 妫�鏌ヨ繑鍥炵粨鏋滄槸鍚︿负绌� + if (baseObjects == null || !baseObjects.Any()) + { + throw new NotImplementedException("杩斿洖缁撴灉涓虹┖"); + } + else + { + List<RelatedObject> relatedObjects = GetPlmCfgRelatedObject(baseObjects[0].FID); + Debug.WriteLine($"绗簩瀹屾暣鍐呭锛圝SON锛�: {Newtonsoft.Json.JsonConvert.SerializeObject(relatedObjects, Newtonsoft.Json.Formatting.Indented)}"); + + // 妫�鏌ヨ繑鍥炵粨鏋滄槸鍚︿负绌� + if (relatedObjects == null || !relatedObjects.Any()) + { + throw new NotImplementedException("杩斿洖缁撴灉涓虹┖"); + } + List<StdDocument> stdDocuments = GetPlmStdDocument(relatedObjects); + return stdDocuments; + } + + } + + #region 1.閫氳繃鐗╂枡缂栫爜锛堥渶瑕佸敮涓�锛夎幏鍙栫墿鏂檌d + public List<BaseObject> GetPlmCfgBase(string ItemNo) + { + //娉ㄦ剰 1锛氭澶勪笉鍐嶄娇鐢ㄥ弬鏁板舰寮忎紶鍏ョ敤鎴峰悕鍙婂瘑鐮佺瓑鏁忔劅淇℃伅锛屾敼涓哄湪鐧诲綍閰嶇疆鏂囦欢涓缃�� + //娉ㄦ剰 2锛氬繀椤诲厛閰嶇疆绗笁鏂圭郴缁熺櫥褰曟巿鏉冧俊鎭悗锛屽啀杩涜涓氬姟鎿嶄綔锛岃鎯呭弬鑰冨悇璇█鐗堟湰SDK浠嬬粛涓殑鐧诲綍閰嶇疆鏂囦欢璇存槑銆� + //璇诲彇閰嶇疆锛屽垵濮嬪寲SDK + K3CloudApi client = new K3CloudApi(); + //鐢ㄤ簬璁板綍缁撴灉 + StringBuilder Info = new StringBuilder(); + //涓氬姟瀵硅薄鏍囪瘑 + //string formId = "PLM_STD_DOCUMENT"; + string formId = "PLM_CFG_BASE"; + DateTime dt = DateTime.Now; + //鏌ヨ瀛楁闆嗗悎锛屽嵆杩斿洖鍝簺鏁版嵁锛屼笉鑳戒负绌猴紝鏍规嵁涓嶅悓涓氬姟鍗曟嵁濉啓涓嶅悓鐨勫瓧娈靛悕锛屼互涓嬩粎涓虹ず渚� + //string fieldKeys = "FCode,FFileId,FRelevantObject"; + //string FilterString = "FID='-2146304'"; + string fieldKeys = "FID,FCode,FName"; + string FilterString = string.Format(@"FCode='{0}'", ItemNo); + string OrderString = ""; + int TopRowCount = 0; + int StartRow = 0; + int Limit = 0; + + var param = new QueryParam() + { + FormId = formId, + FieldKeys = fieldKeys, + FilterString = FilterString, + OrderString = OrderString, + TopRowCount = TopRowCount, + StartRow = StartRow, + Limit = Limit + }; + //璋冪敤鎺ュ彛 + var result = client.ExecuteBillQuery(param.ToJson()); + Debug.WriteLine($"绗竴涓厓绱犲唴瀹�: {result}"); + + return result.Select(s => + { + var entity = new BaseObject + { + FID = (long)s[0], + FCode = (string)s[1], + FName = (string)s[2], + }; + return entity; + }).ToList(); + } + #endregion + + #region 2.閫氳繃鐗╂枡id鑾峰彇鐩稿叧瀵硅薄銆愪笅杞介渶瑕佺殑鏂囨。銆戠殑id + public List<RelatedObject> GetPlmCfgRelatedObject(long? FRelatedObject) + { + //娉ㄦ剰 1锛氭澶勪笉鍐嶄娇鐢ㄥ弬鏁板舰寮忎紶鍏ョ敤鎴峰悕鍙婂瘑鐮佺瓑鏁忔劅淇℃伅锛屾敼涓哄湪鐧诲綍閰嶇疆鏂囦欢涓缃�� + //娉ㄦ剰 2锛氬繀椤诲厛閰嶇疆绗笁鏂圭郴缁熺櫥褰曟巿鏉冧俊鎭悗锛屽啀杩涜涓氬姟鎿嶄綔锛岃鎯呭弬鑰冨悇璇█鐗堟湰SDK浠嬬粛涓殑鐧诲綍閰嶇疆鏂囦欢璇存槑銆� + //璇诲彇閰嶇疆锛屽垵濮嬪寲SDK + K3CloudApi client = new K3CloudApi(); + //鐢ㄤ簬璁板綍缁撴灉 + StringBuilder Info = new StringBuilder(); + //涓氬姟瀵硅薄鏍囪瘑 + //string formId = "PLM_STD_DOCUMENT"; + string formId = "PLM_CFG_RELATEDOBJECT"; + DateTime dt = DateTime.Now; + //鏌ヨ瀛楁闆嗗悎锛屽嵆杩斿洖鍝簺鏁版嵁锛屼笉鑳戒负绌猴紝鏍规嵁涓嶅悓涓氬姟鍗曟嵁濉啓涓嶅悓鐨勫瓧娈靛悕锛屼互涓嬩粎涓虹ず渚� + //string fieldKeys = "FCode,FFileId,FRelevantObject"; + //string FilterString = "FID='-2146304'"; + string fieldKeys = "FID,FRE_FCode,FRelatedObject"; + string FilterString = string.Format(@"FRelatedObject='{0}'", FRelatedObject); + string OrderString = ""; + int TopRowCount = 0; + int StartRow = 0; + int Limit = 0; + + var param = new QueryParam() + { + FormId = formId, + FieldKeys = fieldKeys, + FilterString = FilterString, + OrderString = OrderString, + TopRowCount = TopRowCount, + StartRow = StartRow, + Limit = Limit + }; + //璋冪敤鎺ュ彛 + var result = client.ExecuteBillQuery(param.ToJson()); + Debug.WriteLine(result); + + return result.Select(s => + { + var entity = new RelatedObject + { + FID = (long)s[0], + FRE_FCode = (string)s[1], + FRelatedObject = (long)s[2], + }; + return entity; + }).ToList(); + } + #endregion + + #region 3.鏍规嵁鏂囨。id鑾峰彇鏂囨。鐗╃悊鏂囦欢id + public List<StdDocument> GetPlmStdDocument(List<RelatedObject> relatedObjects) + { + //娉ㄦ剰 1锛氭澶勪笉鍐嶄娇鐢ㄥ弬鏁板舰寮忎紶鍏ョ敤鎴峰悕鍙婂瘑鐮佺瓑鏁忔劅淇℃伅锛屾敼涓哄湪鐧诲綍閰嶇疆鏂囦欢涓缃�� + //娉ㄦ剰 2锛氬繀椤诲厛閰嶇疆绗笁鏂圭郴缁熺櫥褰曟巿鏉冧俊鎭悗锛屽啀杩涜涓氬姟鎿嶄綔锛岃鎯呭弬鑰冨悇璇█鐗堟湰SDK浠嬬粛涓殑鐧诲綍閰嶇疆鏂囦欢璇存槑銆� + //璇诲彇閰嶇疆锛屽垵濮嬪寲SDK + K3CloudApi client = new K3CloudApi(); + //鐢ㄤ簬璁板綍缁撴灉 + StringBuilder Info = new StringBuilder(); + //涓氬姟瀵硅薄鏍囪瘑 + string formId = "PLM_STD_DOCUMENT"; + DateTime dt = DateTime.Now; + //鏌ヨ瀛楁闆嗗悎锛屽嵆杩斿洖鍝簺鏁版嵁锛屼笉鑳戒负绌猴紝鏍规嵁涓嶅悓涓氬姟鍗曟嵁濉啓涓嶅悓鐨勫瓧娈靛悕锛屼互涓嬩粎涓虹ず渚� + string fieldKeys = "FID,FCode,FName,FPhysicalFileName,FFileId,FRelevantObject"; + // 鎻愬彇 FID 鍊� + var fidList = relatedObjects.Select(obj => obj.FID.ToString()).ToList(); + // 灏� FID 鍊肩敤閫楀彿鍒嗛殧锛屽苟鍖呰9鍦ㄥ崟寮曞彿涓� + string fids = string.Join(",", fidList.Select(fid => $"'{fid}'")); + // 鏋勫缓 FilterString + string FilterString = $"FID in ({fids})"; + string OrderString = ""; + int TopRowCount = 0; + int StartRow = 0; + int Limit = 0; + + var param = new QueryParam() + { + FormId = formId, + FieldKeys = fieldKeys, + FilterString = FilterString, + OrderString = OrderString, + TopRowCount = TopRowCount, + StartRow = StartRow, + Limit = Limit + }; + //璋冪敤鎺ュ彛 + var result = client.ExecuteBillQuery(param.ToJson()); + + return result.Select(s => + { + var entity = new StdDocument + { + FID = (long)s[0], + FCode = (string)s[1], + FName = (string)s[2], + FPhysicalFileName = (string)s[3], + FFileId = (string)s[4], + FRelevantObject = (string)s[5], + }; + return entity; + }).ToList(); + } + #endregion +} diff --git a/StandardInterface/MES.Service/service/PLM/WarehouseDownloadDoc.cs b/StandardInterface/MES.Service/service/PLM/WarehouseDownloadDoc.cs new file mode 100644 index 0000000..5527dae --- /dev/null +++ b/StandardInterface/MES.Service/service/PLM/WarehouseDownloadDoc.cs @@ -0,0 +1,145 @@ +锘縰sing Newtonsoft.Json.Linq; +using System.Net; +using System.Text; + +namespace ConsoleApp1 +{ + #region 1.鏍规嵁鏂囨。鐗╃悊鏂囦欢id鑾峰彇鏂囨。娴佹暟鎹� + public class WarehouseDownloadDoc() + { + private string _cloudUrl = "http://47.96.178.105/k3cloud"; + private string _warehouse = "http://183.129.128.254:8081/CloudPLMWarehouse"; + + #region 鏂囨。鏈嶅姟鍣ㄤ笂涓嬫枃 + private string WarehouseCTX + { + get + { + string json = "{\"ap1\":{ \"AcctID\":\"" + "68044981e73323" + "\",\"Username\":\"骞挎繁\",\"Password\":\"gs@123456\",\"Lcid\":2052,\"AuthenticateType\":1,\"PasswordIsEncrypted\":\"false\",\"ClientInfo\":{\"ClientType\":8}}"; + var resp = GetResponse("http://47.96.178.105/k3cloud/Kingdee.BOS.ServiceFacade.ServicesStub.User.UserService.ValidateLoginInfo.common.kdsvc", json, new Dictionary<string, string>()); + string ret = (new StreamReader(resp.GetResponseStream(), Encoding.UTF8)).ReadToEnd(); + var result = JObject.Parse(ret)["Context"]; + string token = result["UserToken"].ToString(); + var warehouseCtx = string.Format("LoginUrl={0}&KDServiceSessionId={1}", _cloudUrl, JObject.Parse(ret)["KDSVCSessionId"].ToString());//瀹夊叏鏂版柟寮� + return Convert.ToBase64String(Encoding.UTF8.GetBytes(warehouseCtx)); + } + } + #endregion + + #region 鐗╃悊鏂囦欢id + private string GetFileId(string fileId) + { + return Convert.ToBase64String(Encoding.UTF8.GetBytes(fileId)); + } + #endregion + + #region 鐢靛瓙浠撹闂嚟璇� + private string Token + { + get + { + var token = Guid.NewGuid().ToString(); + return token; + } + } + #endregion + + #region 鍙戦�佽姹� + public Stream SendRequest(string op, string fileId) + { + var header = new Dictionary<string, string>() + { + {"FileID" ,GetFileId(fileId) }, + { "CTX",WarehouseCTX}, + { "token", Token }, + { "PLM_ACCESS_TYPE","pure" } + }; + return PostDataViaHttpWebRequest(RequestUrl(op), string.Empty, header, !op.Equals("Download")); + } + #endregion + + #region 璇锋眰鐨刄RL + private string RequestUrl(string op) + { + return _warehouse + "/" + op; + } + #endregion + + #region 鑾峰彇鍝嶅簲 + private HttpWebResponse GetResponse(string url, string bodyJson, Dictionary<string, string> header) + { + byte[] data = Encoding.UTF8.GetBytes(bodyJson); + + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); + request.Method = WebRequestMethods.Http.Post; + request.ContentType = "application/json"; + request.ContentLength = data.Length; + if (header != null) + { + foreach (var p in header) + { + request.Headers.Add(p.Key, p.Value); + } + } + + using (Stream reqStream = request.GetRequestStream()) + { + reqStream.Write(data, 0, data.Length); + reqStream.Close(); + } + + HttpWebResponse resp = null; + try + { + resp = (HttpWebResponse)request.GetResponse(); + } + catch (WebException ex) + { + var res = ex.Response; + if (res != null) + { + string statusBase64 = ((HttpWebResponse)ex.Response).StatusDescription;//base64缂栫爜鍚庣殑鎶ラ敊淇℃伅 + } + } + return resp; + } + #endregion + + #region 淇濆瓨鏂囦欢鍒版湰鍦� + /*private void PostDataViaHttpWebRequest(string url, string bodyJson, Dictionary<string, string> header, bool isGetContent) + { + + var resp = GetResponse(url, bodyJson, header); + var resultJson = string.Empty; + Stream stream = File.Open("D://DownloadDocDemo.pdf", FileMode.OpenOrCreate); + int packageSize = 1024 * 1024; + byte[] buffer = new byte[packageSize]; + using (stream) + { + using (Stream outputStream = resp.GetResponseStream()) + { + int readLength = 0; + while ((readLength = outputStream.Read(buffer, 0, packageSize)) > 0) + { + stream.Write(buffer, 0, readLength); + stream.Flush(); + } + outputStream.Close(); + } + stream.Close(); + } + }*/ + #endregion + + #region 杩斿洖鏂囦欢娴佺粰鍓嶇 + private Stream PostDataViaHttpWebRequest(string url, string bodyJson, Dictionary<string, string> header, bool isGetContent) + { + + var resp = GetResponse(url, bodyJson, header); + + return resp.GetResponseStream(); // 鐩存帴杩斿洖鍝嶅簲娴� + } + #endregion + } + #endregion +} diff --git a/StandardInterface/MES.Service/service/QcIssueResult/QcIssueResultManager.cs b/StandardInterface/MES.Service/service/QcIssueResult/QcIssueResultManager.cs new file mode 100644 index 0000000..beec420 --- /dev/null +++ b/StandardInterface/MES.Service/service/QcIssueResult/QcIssueResultManager.cs @@ -0,0 +1,764 @@ +锘縰sing System; +using System.Collections.Generic; +using AlibabaCloud.OpenApiClient.Models; +using AlibabaCloud.SDK.Dingtalkworkflow_1_0; +using AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models; +using AlibabaCloud.SDK.Dingtalkoauth2_1_0; +using AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models; +using AlibabaCloud.TeaUtil.Models; +using Tea; +using System.Diagnostics; +using MES.Service.Dto.webApi; +using MES.Service.Modes; +using SqlSugar; +using MES.Service.DB; +using MES.Service.Modes.QcIssueResult; +using MES.Service.Dto.webApi.QcIssueResult; +//using MES.Service.Dto.webApi.DeliveryNote; +//using MES.Service.Modes.DeliveryNote; +using Newtonsoft.Json; +using Oracle.ManagedDataAccess.Client; +using System.Data; +using System.Reflection; +using System.Text; +using DingTalk.Api; +using System.Net.Http; + +namespace MES.Service.service.QcIssueResult; + +//寮傚父澶勭疆鍗曠粨鏋滆〃 +[SugarTable("MES_QA_ITEMS_DETECT_01")] +public class QcIssueResultManager : Repository<QcIssueResults> +{ + /** + * 浣跨敤 Token 鍒濆鍖栬处鍙稢lient + * @return Client + * @throws Exception + */ + public static AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client CreateClient() + { + AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config(); + config.Protocol = "https"; + config.RegionId = "central"; + return new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client(config); + } + + public static AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client CreateClient1() + { + AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config(); + config.Protocol = "https"; + config.RegionId = "central"; + return new AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client(config); + } + + /** + * 鑾峰彇閽夐拤鐨� Access Token + * @return string 杩斿洖鑾峰彇鍒扮殑 Access Token + */ + public string GetToken() + { + AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client client = CreateClient1(); + AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models.GetAccessTokenRequest getAccessTokenRequest = new AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models.GetAccessTokenRequest + { + AppKey = "ding8nmegrbi29a78ze0", + AppSecret = "CwWeKXzItBJktsVhGoZi73Ts79bP8qp3FuLmS5PtJgNmMxrWFaqdQQTY0RqCRQSC", + }; + + try + { + var response = client.GetAccessToken(getAccessTokenRequest); + return response.Body.AccessToken; // 杩斿洖鑾峰彇鍒扮殑 Access Token + } + catch (TeaException err) + { + Console.WriteLine($"TeaException: Code={err.Code}, Message={err.Message}"); + return null; + } + catch (Exception _err) + { + Console.WriteLine($"Exception: {_err.Message}"); + return null; + } + } + + /** + * 鏌ョ湅鏈夋棤鑷�夊鎵硅妭鐐� + * @return string 杩斿洖鍚姩缁撴灉 + */ + public string GetForecast() + { + // 鑾峰彇 Access Token + string accessToken = GetToken(); + if (string.IsNullOrEmpty(accessToken)) + { + return "鑾峰彇 Access Token 澶辫触"; + } + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client client = CreateClient(); + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastHeaders processForecastHeaders = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastHeaders(); + processForecastHeaders.XAcsDingtalkAccessToken = accessToken; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest.ProcessForecastRequestFormComponentValues formComponentValues0 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest.ProcessForecastRequestFormComponentValues + { + Name = "PhoneField", + Value = "123xxxxxxxx", + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest processForecastRequest = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest + { + ProcessCode = "PROC-4F4B3976-BA15-47EF-9A3C-3A07AC07DFEA", + DeptId = 1, + UserId = "923188102", + FormComponentValues = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest.ProcessForecastRequestFormComponentValues> + { + formComponentValues0 + }, + }; + try + { + var response = client.ProcessForecastWithOptions(processForecastRequest, processForecastHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions()); + return $"閽夐拤宸ヤ綔娴佸疄渚嬪惎鍔ㄦ垚鍔�: {Newtonsoft.Json.JsonConvert.SerializeObject(response.Body)}"; + } + catch (TeaException err) + { + + return $"TeaException: Code={err.Code}, Message={err.Message}"; + + } + catch (Exception _err) + { + return $"Exception: {_err.Message}"; + } + } + + /** + * 鑾峰彇userid + * @return string 杩斿洖鍚姩缁撴灉 + */ + public HttpClient _httpClient; + public string DingTalkService() + { + _httpClient = new HttpClient(); + _httpClient.Timeout = TimeSpan.FromSeconds(30); + return "1"; + } + + public async Task<string> GetUserId(string phone) + { + // 鍙傛暟楠岃瘉 + if (string.IsNullOrWhiteSpace(phone)) + throw new ArgumentException("鎵嬫満鍙蜂笉鑳戒负绌�", nameof(phone)); + + // 鑾峰彇璁块棶浠ょ墝 + string accessToken = GetToken(); + + // 璋冪敤鐜版湁鏂规硶 + return await GetUserIdByMobile(accessToken, phone); + } + + + + public async Task<string> GetUserIdByMobile(string accessToken, string mobile) + { + // 鍙傛暟楠岃瘉 + if (string.IsNullOrWhiteSpace(accessToken)) + throw new ArgumentException("Access token cannot be empty", nameof(accessToken)); + + if (string.IsNullOrWhiteSpace(mobile) || !IsValidMobile(mobile)) + throw new ArgumentException("Invalid mobile number", nameof(mobile)); + + try + { + // 鏋勯�犺姹俇RL + var url = $"https://oapi.dingtalk.com/topapi/v2/user/getbymobile?access_token={accessToken}"; + + string m = DingTalkService(); + + // 鏋勯�犺姹備綋 + var requestBody = new { mobile }; + var jsonContent = JsonConvert.SerializeObject(requestBody); + var content = new StringContent(jsonContent, Encoding.UTF8, "application/json"); + + // 鍙戦�佽姹� + var response = await _httpClient.PostAsync(url, content); + + // 澶勭悊鍝嶅簲 + response.EnsureSuccessStatusCode(); + + var responseBody = await response.Content.ReadAsStringAsync(); + var result = JsonConvert.DeserializeObject<DingTalkResponse>(responseBody); + + // 澶勭悊涓氬姟閫昏緫閿欒 + if (result?.Errcode != 0) + throw new DingTalkApiException(result?.Errcode ?? -1, result?.Errmsg ?? "Unknown error"); + + return result?.Result?.UserId ?? throw new InvalidOperationException("User ID not found in response"); + } + catch (HttpRequestException ex) + { + throw new DingTalkApiException(500, $"HTTP request failed: {ex.Message}", ex); + } + catch (JsonException ex) + { + throw new DingTalkApiException(500, $"JSON parsing failed: {ex.Message}", ex); + } + } + + private bool IsValidMobile(string mobile) + { + // 绠�鍗曠殑鎵嬫満鍙锋牸寮忛獙璇� + return !string.IsNullOrEmpty(mobile) && mobile.Length == 11 && mobile.StartsWith("1"); + } + + + /** + * 鍚姩閽夐拤宸ヤ綔娴佸疄渚� + * @return string 杩斿洖鍚姩缁撴灉 + */ + + public string GetProcessNo(GetQcIssueResultDetail getQcIssueResultDetail) + { + var db = SqlSugarHelper.GetInstance(); + + var stafflist = db.Queryable<DingNameCode>() + .Where(t => t.STAFF_NO == getQcIssueResultDetail.StaffNo) + .Select(t => new DingNameCode + { + STAFF_NAME = t.STAFF_NAME, + PHONE_NUMBER = t.PHONE_NUMBER + }) + .ToList(); + + if (stafflist.Any()) + { + Task<string> task = GetUserId(stafflist[0].PHONE_NUMBER); + string UserId = task.Result; + string applicationUser = $"[\"{UserId}\"]"; + + // 浣跨敤 JSON 搴忓垪鍖栬緭鍑哄璞$殑璇︾粏鍐呭 + string getQcIssueResultDetailJson = JsonConvert.SerializeObject(getQcIssueResultDetail, Formatting.Indented); + Debug.WriteLine("GetQcIssueResultDetail: " + getQcIssueResultDetailJson); + + // 鑾峰彇 Access Token + string accessToken = GetToken(); + if (string.IsNullOrEmpty(accessToken)) + { + return "鑾峰彇 Access Token 澶辫触"; + } + + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client client = CreateClient(); + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceHeaders startProcessInstanceHeaders = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceHeaders(); + Debug.WriteLine(accessToken); + startProcessInstanceHeaders.XAcsDingtalkAccessToken = accessToken; // 浣跨敤鑾峰彇鍒扮殑 Access Token + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues1 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "TextField_K5AVR59BD28", + Value = getQcIssueResultDetail.ItemNo, + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues2 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "TextField_1LW382XRH1DS0", + Value = getQcIssueResultDetail.ItemName, + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues3 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "NumberField_UKE91Z101BK0", + Value = getQcIssueResultDetail.FbatchQty, + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues4 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "TextField_1QM2NWE9T3Y80", + Value = getQcIssueResultDetail.SuppName, + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues5 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "TextField_1DAQ9890FDWG0", + Value = getQcIssueResultDetail.AppicationReason, + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues6 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "DDSelectField_76Z6HC5W1F0", + Value = getQcIssueResultDetail.BadReason, + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues7 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "TextField_3B85TFIK9Z60", + Value = getQcIssueResultDetail.remark, + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues8 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "InnerContactField_WVZLUIPZ9J40", + Value = applicationUser, + + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues9 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "DDSelectField_1AL6MWUUUOHS0", + Value = getQcIssueResultDetail.IqcStatus, + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues10 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "DepartmentField_10ZVNJNJCRJK0", + Value = getQcIssueResultDetail.Department, + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues11 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "DDSelectField_HG2SQUPO2NK0", + Value = getQcIssueResultDetail.WorkShop, + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues12 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "DDPhotoField_QD15KYR764G0", + Value = "娴嬭瘯涓嶈壇鍥剧墖", + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues13 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "DDAttachment_GLZLFSIWK9S0", + Value = "闄勪欢", + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues14 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "DDSelectField_1RN2L4RWQ0AO0", + Value = "鍚�", + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues15 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "InnerContactField_WNG7AU9R2AO0", + Value = "鍔犵", + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues16 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues + { + Name = "DDAttachment_23VB5MMC1R1C0", + Value = "闄勪欢", + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestTargetSelectActioners targetSelectActioners0 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestTargetSelectActioners + { + ActionerKey = "null", + ActionerUserIds = new List<string> + { + UserId + }, + }; + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestApprovers approvers0 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestApprovers + { + ActionType = "OR", + UserIds = new List<string> + { + UserId + }, + }; + + + AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest startProcessInstanceRequest = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest + { + OriginatorUserId = UserId, + ProcessCode = "PROC-4F4B3976-BA15-47EF-9A3C-3A07AC07DFEA", + DeptId = 1, + FormComponentValues = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues> + { + formComponentValues1,formComponentValues2,formComponentValues3, formComponentValues4, formComponentValues5, formComponentValues6, formComponentValues7, formComponentValues8, + formComponentValues9, formComponentValues11 + }, + TargetSelectActioners = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestTargetSelectActioners> + { + targetSelectActioners0 + }, + Approvers = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestApprovers> + { + approvers0 + }, + CcList = new List<string> + { + UserId + }, + CcPosition = "START", + + }; + // 搴忓垪鍖� FormComponentValues 鍒楄〃涓� JSON 鏍煎紡 + string formComponentValuesJson = JsonConvert.SerializeObject(startProcessInstanceRequest.FormComponentValues, Formatting.Indented); + Debug.WriteLine("FormComponentValues: " + formComponentValuesJson); + try + { + string requestContent = Newtonsoft.Json.JsonConvert.SerializeObject(startProcessInstanceRequest); + Debug.WriteLine("startProcessInstanceRequest鍐呭锛�"); + Debug.WriteLine(requestContent); + var response = client.StartProcessInstanceWithOptions(startProcessInstanceRequest, startProcessInstanceHeaders, new RuntimeOptions()); + return $"閽夐拤宸ヤ綔娴佸疄渚嬪惎鍔ㄦ垚鍔�: {Newtonsoft.Json.JsonConvert.SerializeObject(response.Body)}"; + } + catch (TeaException err) + { + string requestContent = Newtonsoft.Json.JsonConvert.SerializeObject(startProcessInstanceRequest); + Debug.WriteLine("startProcessInstanceRequest鍐呭锛�"); + Debug.WriteLine(startProcessInstanceRequest); + return $"TeaException: Code={err.Code}, Message={err.Message}"; + } + catch (Exception _err) + { + return $"Exception: {_err.Message}"; + } + } + else + { + return "鏌ヤ笉鍒版偍鐨勬墜鏈哄彿"; + } + } + + + /** + * 灏嗗甫鏈夋祦绋嬪彿鍜屾楠屽崟鍙风殑鏂拌褰曟彃鍏ヨ〃涓� + */ + public dynamic SaveProcessNo(string ReleaseNo, string ProcessNo, string StaffNo, string Department) + { + var QcIssueResults = GetQcIssueResults(ReleaseNo, ProcessNo); + + var ApplicantResults = GetApplicantResults(ProcessNo, StaffNo); + + var DepartmentResults = GetDepartmentResults(ProcessNo, Department); + + var db = SqlSugarHelper.GetInstance(); + + db.Insertable(ApplicantResults).ExecuteCommand(); // 鎻掑叆鐢宠浜烘暟鎹� + db.Insertable(DepartmentResults).ExecuteCommand(); // 鎻掑叆閮ㄩ棬鏁版嵁 + + return UseTransaction(db => + { + try + { + + + // 缁熶竴浣跨敤浜嬪姟db + //SaveOrUpdateApplicantData(db, ApplicantResults); + //SaveOrUpdateDepartmentData(db, DepartmentResults); + SaveOrUpdateData(db, QcIssueResults); + + return 1; + } + catch + { + db.RollbackTran(); + throw; + } + }); + } + + public QcIssueResults GetQcIssueResults(string ReleaseNo, string ProcessNo) + { + var QcIssueResults = new QcIssueResults + { + INSTANCEID = ProcessNo, + ReleaseNo = ReleaseNo, + QcStatu = "" + }; + + return QcIssueResults; + } + + public IqcApplicant GetApplicantResults(string ProcessNo, string StaffNo) + { + var db = SqlSugarHelper.GetInstance(); + + var stafflist = db.Queryable<DingNameCode>() + .Where(t => t.STAFF_NO == StaffNo) + .Select(t => new DingNameCode + { + STAFF_NAME = t.STAFF_NAME, + PHONE_NUMBER = t.PHONE_NUMBER + }) + .ToList(); + + var ApplicantResults = new IqcApplicant + { + INSTANCEID = ProcessNo, + APPLICANTID = StaffNo, + APPLICANTNAME = stafflist[0].STAFF_NAME + }; + + return ApplicantResults; + } + + public IqcDepartment GetDepartmentResults(string ProcessNo, string Department) + { + + var DepartmentResults = new IqcDepartment + { + INSTANCEID = ProcessNo, + DEPARTMENTNAME = Department + }; + + return DepartmentResults; + } + + /** + * 鏍规嵁娴佺▼鍙锋洿鏂拌〃鐨勮褰� + */ + public dynamic Save(ErpQcIssueResult erpQcIssueResult) + { + //var json = JsonConvert.SerializeObject(erpQcIssueResult); + + ////var saveSuccess = UseTransaction(db => + ////{ + //// var data = GetMesQcIssueResults(erpQcIssueResult); + //// return SaveOrUpdateData(db, data); + ////}); + + //return new + //{ + // SerializedPayload = json, + // ServerTime = DateTime.UtcNow.ToString("O") + //}; + + var mesQcIssueResults = GetMesQcIssueResults(erpQcIssueResult); + + return UseTransaction(db => + { + return SaveOrUpdateData(db, mesQcIssueResults) ? 1 : 0; + }) > 0; + + } + + public QcIssueResults GetMesQcIssueResults(ErpQcIssueResult erpQcIssueResult) + { + var mesQcIssueResults = new QcIssueResults + { + INSTANCEID = erpQcIssueResult.ProcessNo, + FReview = erpQcIssueResult.FReview, + APPLICATIONNUM = erpQcIssueResult.ApplicationQuantity.ToString(), + BADCAUSES = erpQcIssueResult.BadCauses, + BELONGINGWORKSHOP = erpQcIssueResult.AffiliatedWorkshop, + REVIEWSTATUS = erpQcIssueResult.FReview, + QcStatu = erpQcIssueResult.QcStatus, + ITEMNAME = erpQcIssueResult.ItemName, + ITEMNO = erpQcIssueResult.ItemNo, + SUPPLIERNAME = erpQcIssueResult.SupplierName, + REMARK = erpQcIssueResult.Remark, + APPLICATIONRESON=erpQcIssueResult.Reason + }; + + return mesQcIssueResults; + } + + /** + * 鎻掑叆鍜屾洿鏂版暟鎹簱琛� + */ + private bool SaveOrUpdateData(SqlSugarScope db, QcIssueResults qcIssueResults) + { + + // 鏌ヨ QcIssueResults 琛ㄤ腑鏄惁瀛樺湪鍖归厤鐨勮褰� + var mapping = db.Queryable<QcIssueResults>() + .Where(t => t.INSTANCEID == qcIssueResults.INSTANCEID) + .Select(t => new QcIssueResults + { + ReleaseNo = t.ReleaseNo, + }) + .ToList(); + + if (mapping.Any()) + { + if (qcIssueResults.QcStatu == "鎷掔粷") + { + string ReleaseNo = mapping.FirstOrDefault().ReleaseNo; + + // 鍙洿鏂� ReleaseNo 鍜� FReview 涓や釜瀛楁 + var updateResult = db.Updateable<QcIssueResults>() + .SetColumns(t => new QcIssueResults + { + ReleaseNo = ReleaseNo, + INSTANCEID = qcIssueResults.INSTANCEID, + FReview = qcIssueResults.FReview, + APPLICATIONNUM = qcIssueResults.APPLICATIONNUM, + BADCAUSES = qcIssueResults.BADCAUSES, + BELONGINGWORKSHOP = qcIssueResults.BELONGINGWORKSHOP, + REVIEWSTATUS = qcIssueResults.REVIEWSTATUS, + QcStatu = qcIssueResults.QcStatu, + ITEMNAME = qcIssueResults.ITEMNAME, + ITEMNO = qcIssueResults.ITEMNO, + SUPPLIERNAME = qcIssueResults.SUPPLIERNAME, + REMARK = qcIssueResults.REMARK, + APPLICATIONRESON=qcIssueResults.APPLICATIONRESON + + }) + .Where(t => t.INSTANCEID == qcIssueResults.INSTANCEID) // 鏄惧紡鎸囧畾鏇存柊鏉′欢 + .ExecuteCommand(); + + // 鏌ヨ UpdateMesQaItems 琛ㄤ腑鏄惁瀛樺湪鍖归厤鐨勮褰� + var existingRecord = db.Queryable<UpdateMesQaItems>() + .Where(it => it.ReleaseNo == ReleaseNo) + .First(); // 浣跨敤 First 鑾峰彇绗竴鏉¤褰� + + Debug.WriteLine($"鏌ヨ鍒扮殑 mapping: {JsonConvert.SerializeObject(existingRecord)}"); + + if (existingRecord != null) + { + try + { + //瀹氫箟杈撳叆鍙傛暟 + var inputParam1 = new SugarParameter("pi_no", existingRecord.ReleaseNo); + var inputParam2 = new SugarParameter("pi_user", "PL017"); + // 瀹氫箟杈撳嚭鍙傛暟 + var outParam1 = new SugarParameter("po_result", null, true); + var outParam2 = new SugarParameter("po_msg", null, true); + // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼ + Db.Ado.ExecuteCommand("BEGIN PRC_MES_IQC_CG_REVOCK(:pi_no,:pi_user,:po_result,:po_msg ); END;", inputParam1, inputParam2, outParam1, outParam2); + // 鑾峰彇杈撳嚭鍙傛暟鐨勫�� + int result = int.Parse((string)outParam1.Value); + string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value; + if (result == 1) + { + //瀛樺偍杩囩▼澶辫触鍒欎簨鍔¤繘琛屽洖婊� + db.Ado.RollbackTran(); + throw new Exception(message); + } + // 鎻愪氦浜嬪姟 + db.Ado.CommitTran(); + return true; + } + catch (Exception ex) + { + Console.WriteLine("Exception: " + ex.Message); + return false; + } + } + else + { + throw new Exception("鏈壘鍒伴渶瑕佹洿鏂扮殑璁板綍"); + } + } + else + { + string ReleaseNo = mapping.FirstOrDefault().ReleaseNo; + + // 鍙洿鏂� ReleaseNo 鍜� FReview 涓や釜瀛楁 + var updateResult = db.Updateable<QcIssueResults>() + .SetColumns(t => new QcIssueResults + { + ReleaseNo = ReleaseNo, + INSTANCEID = qcIssueResults.INSTANCEID, + FReview = qcIssueResults.FReview, + APPLICATIONNUM = qcIssueResults.APPLICATIONNUM, + BADCAUSES = qcIssueResults.BADCAUSES, + BELONGINGWORKSHOP = qcIssueResults.BELONGINGWORKSHOP, + REVIEWSTATUS = qcIssueResults.REVIEWSTATUS, + QcStatu = qcIssueResults.QcStatu, + ITEMNAME = qcIssueResults.ITEMNAME, + ITEMNO = qcIssueResults.ITEMNO, + SUPPLIERNAME = qcIssueResults.SUPPLIERNAME, + REMARK = qcIssueResults.REMARK, + APPLICATIONRESON = qcIssueResults.APPLICATIONRESON + + + }) + .Where(t => t.INSTANCEID == qcIssueResults.INSTANCEID) // 鏄惧紡鎸囧畾鏇存柊鏉′欢 + .ExecuteCommand(); + + // 鏌ヨ UpdateMesQaItems 琛ㄤ腑鏄惁瀛樺湪鍖归厤鐨勮褰� + var existingRecord = db.Queryable<UpdateMesQaItems>() + .Where(it => it.ReleaseNo == ReleaseNo) + .First(); // 浣跨敤 First 鑾峰彇绗竴鏉¤褰� + + Debug.WriteLine($"鏌ヨ鍒扮殑 mapping: {JsonConvert.SerializeObject(existingRecord)}"); + + if (existingRecord != null) + { + // 鏇存柊 UpdateMesQaItems 琛ㄤ腑鐨勫瓧娈� + existingRecord.FngHandle = qcIssueResults.REVIEWSTATUS; + if (existingRecord.FngHandle == "閫�璐�") + { + existingRecord.FMRMODE = "閫�鏂欒ˉ鏂�"; + } + else + { + existingRecord.FMRMODE = null; + } + + // 鎵ц鏇存柊鎿嶄綔 + updateResult = db.Updateable(existingRecord).ExecuteCommand(); + + if (updateResult > 0) + { + try + { + + //瀹氫箟杈撳叆鍙傛暟 + var inputParam1 = new SugarParameter("PI_BILLNO", ReleaseNo); + var inputParam2 = new SugarParameter("PI_USER", "PL017"); + var inputParam3 = new SugarParameter("PI_HANDLE", existingRecord.FngHandle); + var inputParam4 = new SugarParameter("PI_TLFS", existingRecord.FMRMODE); + var inputParam5 = new SugarParameter("PI_REMARK", ""); + + // 瀹氫箟杈撳嚭鍙傛暟 + var outParam1 = new SugarParameter("PO_RESULT", null, true); + var outParam2 = new SugarParameter("PO_MSG", null, true); + // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼ + Db.Ado.ExecuteCommand("BEGIN PRC_MES_IQC_CG_SUBMIT(:PI_BILLNO,:PI_BILLNO,:PI_HANDLE,:PI_TLFS,:PI_REMARK,:PO_RESULT,:PO_MSG); END;", inputParam1, inputParam2, inputParam3, inputParam4, inputParam5, outParam1, outParam2); + // 鑾峰彇杈撳嚭鍙傛暟鐨勫�� + int result = int.Parse((string)outParam1.Value); + string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value; + if (result == 1) + { + //瀛樺偍杩囩▼澶辫触鍒欎簨鍔¤繘琛屽洖婊� + db.Ado.RollbackTran(); + throw new Exception(message); + } + // 鎻愪氦浜嬪姟 + db.Ado.CommitTran(); + return true; + + } + catch (Exception ex) + { + Console.WriteLine("Exception: " + ex.Message); + return false; + } + } + + return updateResult > 0; // 濡傛灉鏇存柊鎴愬姛锛岃繑鍥� true + } + else + { + throw new Exception("鏈壘鍒伴渶瑕佹洿鏂扮殑璁板綍"); + } + } + } + else + { + // 濡傛灉 mapping 涓虹┖锛屾彃鍏ユ柊璁板綍鍒� QcIssueResults 琛� + var orUpdate = base.Insert(qcIssueResults); + if (orUpdate) return true; + throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�"); + } + + } +} + +// 鍝嶅簲妯″瀷 +public class DingTalkResponse +{ + [JsonProperty("errcode")] + public int Errcode { get; set; } + + [JsonProperty("errmsg")] + public string Errmsg { get; set; } + + [JsonProperty("result")] + public UserResult Result { get; set; } +} + +public class UserResult +{ + [JsonProperty("userid")] + public string UserId { get; set; } +} + +// 鑷畾涔夊紓甯� +public class DingTalkApiException : Exception +{ + public int ErrorCode { get; } + + public DingTalkApiException(int errorCode, string message) : base(message) + { + ErrorCode = errorCode; + } + + public DingTalkApiException(int errorCode, string message, Exception innerException) + : base(message, innerException) + { + ErrorCode = errorCode; + } +} \ No newline at end of file diff --git a/StandardInterface/MESApplication/Config/appsettings.json b/StandardInterface/MESApplication/Config/appsettings.json index cf432d9..3f6e8e8 100644 --- a/StandardInterface/MESApplication/Config/appsettings.json +++ b/StandardInterface/MESApplication/Config/appsettings.json @@ -8,10 +8,10 @@ }, "AllowedHosts": "*", "Version": "1.0.0", - "X-KDApi-AcctID": "61ce591aee4c5a", - "X-KDApi-UserName": "mes", - "X-KDApi-AppID": "310228_4f7q68lG0OG9w9XL5e3q0bXqzgQV4toK", - "X-KDApi-AppSec": "db05ae60d70e4bd0a8bdb974f8030f6f", + "X-KDApi-AcctID": "68044981e73323", + "X-KDApi-UserName": "骞挎繁", + "X-KDApi-AppID": "310990_x3cJ16Do6vC539TFW+6pRy1E6MQ+xooO", + "X-KDApi-AppSec": "817a815631c24517b931ecebe8f8eae1", "X-KDApi-LCID": "2052", - "X-KDApi-ServerUrl": "http://121.36.245.199/K3cloud/" + "X-KDApi-ServerUrl": "http://47.96.178.105/k3cloud" } \ No newline at end of file diff --git a/StandardInterface/MESApplication/Controllers/Base/LoginController.cs b/StandardInterface/MESApplication/Controllers/Base/LoginController.cs index aede14c..0861d0e 100644 --- a/StandardInterface/MESApplication/Controllers/Base/LoginController.cs +++ b/StandardInterface/MESApplication/Controllers/Base/LoginController.cs @@ -1,9 +1,10 @@ -锘縰sing System.Dynamic; -using MES.Service.Dto.@base; +锘縰sing MES.Service.Dto.@base; using MES.Service.service; using MES.Service.util; using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; using Newtonsoft.Json.Linq; +using System.Dynamic; namespace MESApplication.Controllers.Base; @@ -105,4 +106,43 @@ return ResponseResult.ResponseError(ex); } } + + public class Root + { + public string version { get; set; } + + public string apkUrl { get; set; } + } + + /// <summary> + /// 鑾峰彇App鏈�鏂扮増鏈俊鎭� + /// </summary> + /// <param name="data"></param> + /// <returns></returns> + [HttpPost("getAppUpgradeInfo")] + public async Task<ResponseResult> getAppUpgradeInfo() + { + + try + { + HttpClient client = new(); + var requestUrl = $"http://192.168.1.104:8081/UpgradeInformation.json"; + var response = await client.GetAsync(requestUrl); + response.EnsureSuccessStatusCode(); // 妫�鏌TTP鐘舵�佺爜 + var responseContent = await response.Content.ReadAsStringAsync(); + var a = JsonConvert.DeserializeObject<Root>(responseContent); + return new ResponseResult + { + status = 0, + message = "OK", + data = a + }; + + } + catch (Exception ex) + { + return null; + } + } + } \ No newline at end of file diff --git a/StandardInterface/MESApplication/Controllers/BasicData/MesRohInController.cs b/StandardInterface/MESApplication/Controllers/BasicData/MesRohInController.cs index fbce082..a720f08 100644 --- a/StandardInterface/MESApplication/Controllers/BasicData/MesRohInController.cs +++ b/StandardInterface/MESApplication/Controllers/BasicData/MesRohInController.cs @@ -34,6 +34,7 @@ entity.Data = JsonConvert.SerializeObject(rohIn); entity.Status = 1; entity.CreateBy = "PL017"; + entity.Route= rohIn.ErpRohIn.FBillNo; try { dynamic resultInfos = new ExpandoObject(); diff --git a/StandardInterface/MESApplication/Controllers/PLM/PLMController.cs b/StandardInterface/MESApplication/Controllers/PLM/PLMController.cs new file mode 100644 index 0000000..902e37a --- /dev/null +++ b/StandardInterface/MESApplication/Controllers/PLM/PLMController.cs @@ -0,0 +1,125 @@ +锘縰sing ConsoleApp1; +using MES.Service.service.PLM; +using MES.Service.util; +using Microsoft.AspNetCore.Mvc; +using System.Dynamic; +using System.IO; + +namespace MESApplication.Controllers.PLM; + + +[ApiController] +[Route("api/PLM")] +public class PLMController : ControllerBase +{ + private readonly PLMManager m = new(); + private readonly WarehouseDownloadDoc wdd = new(); + + //RetrieveDrawings 璋冨彇鍥剧焊 + [HttpPost("RetrieveDrawings")] + public ResponseResult RetrieveDrawings(string ItemNo) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos = m.RetrieveDrawings(ItemNo); + + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + //RetrieveImageFile 璋冨彇涓婁紶鍒版湇鍔″櫒鐨勬媿鎽勬枃浠� + [HttpGet("GetImageNames")] + public IActionResult GetImageNames(string releaseNo) + { + // 鎷兼帴鏈湴鏂囦欢绯荤粺璺緞 + string basePath = @"D:\MES_FTP\IQC\"; // 鏈嶅姟鍣―鐩樹笅鐨勫熀纭�璺緞 + string folderPath = Path.Combine(basePath, releaseNo); // 鍔ㄦ�佹嫾鎺ュ崟鍙峰搴旂殑鏂囦欢澶硅矾寰� + + // 妫�鏌ユ枃浠跺す鏄惁瀛樺湪 + if (!Directory.Exists(folderPath)) + { + return NotFound($"鏂囦欢澶� {folderPath} 涓嶅瓨鍦ㄣ�傝妫�鏌ヨ矾寰勬槸鍚︽纭��"); + } + + // 鑾峰彇鏂囦欢澶逛腑鐨勬墍鏈夊浘鐗囨枃浠跺悕绉� + string[] imageExtensions = { ".jpg", ".jpeg", ".png", ".gif", ".bmp" }; + // 鑾峰彇鏂囦欢鐨勫畬鏁磋矾寰勶紝骞惰繑鍥炰竴涓寘鍚枃浠跺悕鍜屽畬鏁磋矾寰勭殑瀵硅薄 + var imageFiles = Directory.GetFiles(folderPath) + .Where(file => imageExtensions.Any(ext => file.ToLower().EndsWith(ext))) + .Select(file => new + { + FileName = Path.GetFileName(file), // 鏂囦欢鍚� + FilePath = file, + FileBasePath = ConvertFileToBase64(file) // 鏂囦欢鐨� Base64 鏁版嵁 // 鏂囦欢鐨勫畬鏁磋矾寰� + }); + + return Ok(new { success = true, data = imageFiles }); + } + private string ConvertFileToBase64(string filePath) + { + byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); + return Convert.ToBase64String(fileBytes); + } + + [HttpPost("DeleteImageFile")] + public IActionResult DeleteImageFile([FromQuery] string filePath) + { + // 妫�鏌ユ枃浠惰矾寰勬槸鍚︿负绌� + if (string.IsNullOrWhiteSpace(filePath)) + { + return BadRequest("鏂囦欢璺緞涓嶈兘涓虹┖"); + } + + // 纭繚璺緞鏄粷瀵硅矾寰勶紙鍙互鏍规嵁闇�瑕佽皟鏁达級 + filePath = Path.GetFullPath(filePath); + + // 妫�鏌ユ枃浠舵槸鍚﹀瓨鍦� + if (!System.IO.File.Exists(filePath)) + { + return NotFound("鏂囦欢涓嶅瓨鍦�"); + } + + try + { + // 鍒犻櫎鏂囦欢 + System.IO.File.Delete(filePath); + return Ok("鏂囦欢鍒犻櫎鎴愬姛"); + } + catch (System.Exception ex) + { + // 鎹曡幏寮傚父骞惰繑鍥為敊璇俊鎭� + return StatusCode(500, $"鍒犻櫎鏂囦欢鏃跺彂鐢熼敊璇�: {ex.Message}"); + } + } + + //RetrieveDrawings 璋冨彇鍥剧焊 + [HttpPost("OpenDrawings")] + public IActionResult OpenDrawings(string fileId,string fName) + { + try + { + var resultInfos = wdd.SendRequest("Download", fileId); + + return File(resultInfos, "application/octet-stream", fName); + } + catch (Exception ex) + { + return StatusCode(500, new ResponseResult + { + status = 1, + message = ex.Message, + data = null + }); + } + } +} diff --git a/StandardInterface/MESApplication/Controllers/QcIssueResult/QcIssueResultController.cs b/StandardInterface/MESApplication/Controllers/QcIssueResult/QcIssueResultController.cs new file mode 100644 index 0000000..5863393 --- /dev/null +++ b/StandardInterface/MESApplication/Controllers/QcIssueResult/QcIssueResultController.cs @@ -0,0 +1,135 @@ +锘縰sing MES.Service.Dto.webApi; +using MES.Service.Dto.webApi.QcIssueResult; +using MES.Service.Modes; +using MES.Service.Modes.QcIssueResult; +//using MES.Service.Modes.SentLaboratory; +using MES.Service.service; +using MES.Service.service.QcIssueResult; +using MES.Service.util; +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System.Diagnostics; +using System.Dynamic; +using System.Net; +using System.Text; +using System.Text.Json.Nodes; +using System.Web; + +namespace MESApplication.Controllers.QcIssueResult; + +[ApiController] +[Route("api/[controller]")] +public class QcIssueResultController : ControllerBase +{ + private readonly MessageCenterManager _manager = new(); + private readonly QcIssueResultManager m = new(); + + private readonly string METHOD = "POST"; + + private readonly string TableName = "MES_QCISSUE_RESULT"; + + private readonly string URL = "http://localhost:10054/api/QcIssueResult/"; + + + [HttpPost("GetProcessNo")] + public IActionResult StartDingtalkProcess([FromBody] GetQcIssueResultDetail getQcIssueResultDetail) + { + + try + { + // 鏂板URL瑙g爜澶勭悊閫昏緫 + DecodeUrlEncodedProperties(getQcIssueResultDetail); + + // 璋冪敤 QcIssueResultManager 涓殑 GetProcessNo 鏂规硶鏉ュ惎鍔ㄩ拤閽夊伐浣滄祦瀹炰緥 + string result = m.GetProcessNo(getQcIssueResultDetail); + + string getLaboratoryDetailsJson = JsonConvert.SerializeObject(getQcIssueResultDetail, Formatting.Indented); + Debug.WriteLine("getQcIssueResultDetail: " + getLaboratoryDetailsJson); + + string jsonPart = result.Substring(result.IndexOf("{")); + JObject jsonObject = JObject.Parse(jsonPart); + // 鎻愬彇instanceId鐨勫�� + string instanceId = jsonObject["InstanceId"].ToString(); + + dynamic resultInfos = new ExpandoObject(); + string ProcessNo = instanceId; + var save = m.SaveProcessNo(getQcIssueResultDetail.ReleaseNo, instanceId,getQcIssueResultDetail.StaffNo,getQcIssueResultDetail.Department); + resultInfos.tbBillList = save; + + return Ok(result); + } + catch (Exception ex) + { + // 鎹曡幏寮傚父骞惰繑鍥為敊璇俊鎭� + return StatusCode(500, $"鍚姩閽夐拤宸ヤ綔娴佸疄渚嬪け璐�: {ex.Message}"); + } + } + + // 鏂板瑙g爜鏂规硶 + private void DecodeUrlEncodedProperties(object obj) + { + if (obj == null) return; + + var properties = obj.GetType().GetProperties(); + foreach (var prop in properties) + { + // 鍙鐞嗗瓧绗︿覆绫诲瀷鐨勫睘鎬� + if (prop.PropertyType == typeof(string) && prop.CanWrite) + { + var value = prop.GetValue(obj) as string; + if (!string.IsNullOrEmpty(value)) + { + // 浣跨敤UTF8缂栫爜杩涜瑙g爜 + var decodedValue = HttpUtility.UrlDecode(value, Encoding.UTF8); + prop.SetValue(obj, decodedValue); + } + } + } + } + + [HttpPost("Save")] + public ResponseResult Save(ErpQcIssueResult erpQcIssueResult) + { + var entity = new MessageCenter(); + entity.TableName = TableName; + entity.Url = URL + "Save"; + entity.Method = METHOD; + entity.Data = JsonConvert.SerializeObject(erpQcIssueResult); + entity.Status = 1; + entity.CreateBy = "PL017"; + try + { + dynamic resultInfos = new ExpandoObject(); + var save = m.Save(erpQcIssueResult); + //resultInfos.tbBillList = save; + + //entity.Result = 0; + //if (save) entity.Result = 1; + + //entity.DealWith = 1; + //_manager.save(entity); + + return new ResponseResult + { + status = 0, + message = "OK", + data = save + }; + } + catch (Exception ex) + { + entity.Result = 0; + + entity.DealWith = 0; + + entity.ResultData = ex.Message; + + _manager.save(entity); + + return ResponseResult.ResponseError(ex); + } + } + +} + -- Gitblit v1.9.3