diff --git a/.vs/AMESCoreStudio/DesignTimeBuild/.dtbcache.v2 b/.vs/AMESCoreStudio/DesignTimeBuild/.dtbcache.v2 index 56330dde..16e57e5a 100644 Binary files a/.vs/AMESCoreStudio/DesignTimeBuild/.dtbcache.v2 and b/.vs/AMESCoreStudio/DesignTimeBuild/.dtbcache.v2 differ diff --git a/.vs/AMESCoreStudio/config/applicationhost.config b/.vs/AMESCoreStudio/config/applicationhost.config index a465bb90..7eb8f9e8 100644 --- a/.vs/AMESCoreStudio/config/applicationhost.config +++ b/.vs/AMESCoreStudio/config/applicationhost.config @@ -163,7 +163,7 @@ - + diff --git a/.vs/AMESCoreStudio/v16/.suo b/.vs/AMESCoreStudio/v16/.suo index 49d69323..8b878abc 100644 Binary files a/.vs/AMESCoreStudio/v16/.suo and b/.vs/AMESCoreStudio/v16/.suo differ diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index d6f0d7a8..98f2a9c1 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -1,8 +1,7 @@ { "ExpandedNodes": [ - "", - "\\AMESCoreStudio.Web" + "" ], - "SelectedNode": "\\AMESCoreStudio.Web\\AMESCoreStudio.Web.csproj", + "SelectedNode": "\\AMESCoreStudio.sln", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 439699ed..b3b94a7b 100644 Binary files a/.vs/slnx.sqlite and b/.vs/slnx.sqlite differ diff --git a/.vs/安勤/v16/.suo b/.vs/安勤/v16/.suo index d605af83..03467bc1 100644 Binary files a/.vs/安勤/v16/.suo and b/.vs/安勤/v16/.suo differ diff --git a/AMESCoreStudio.CommonTools/bin/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.dll b/AMESCoreStudio.CommonTools/bin/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.dll index 6efce073..973ad504 100644 Binary files a/AMESCoreStudio.CommonTools/bin/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.dll and b/AMESCoreStudio.CommonTools/bin/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.dll differ diff --git a/AMESCoreStudio.CommonTools/bin/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.pdb b/AMESCoreStudio.CommonTools/bin/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.pdb index b6758a50..77598e77 100644 Binary files a/AMESCoreStudio.CommonTools/bin/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.pdb and b/AMESCoreStudio.CommonTools/bin/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.pdb differ diff --git a/AMESCoreStudio.CommonTools/obj/AMESCoreStudio.CommonTools.csproj.nuget.dgspec.json b/AMESCoreStudio.CommonTools/obj/AMESCoreStudio.CommonTools.csproj.nuget.dgspec.json index 351e7006..750f96a1 100644 --- a/AMESCoreStudio.CommonTools/obj/AMESCoreStudio.CommonTools.csproj.nuget.dgspec.json +++ b/AMESCoreStudio.CommonTools/obj/AMESCoreStudio.CommonTools.csproj.nuget.dgspec.json @@ -1,28 +1,25 @@ { "format": 1, "restore": { - "C:\\Users\\yiruwang\\Desktop\\AMES\\AMESCoreStudio_ST\\AMESCoreStudio_Git\\AMES\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj": {} + "D:\\SFIS_WEB\\安勤\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj": {} }, "projects": { - "C:\\Users\\yiruwang\\Desktop\\AMES\\AMESCoreStudio_ST\\AMESCoreStudio_Git\\AMES\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj": { + "D:\\SFIS_WEB\\安勤\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\yiruwang\\Desktop\\AMES\\AMESCoreStudio_ST\\AMESCoreStudio_Git\\AMES\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj", + "projectUniqueName": "D:\\SFIS_WEB\\安勤\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj", "projectName": "AMESCoreStudio.CommonTools", - "projectPath": "C:\\Users\\yiruwang\\Desktop\\AMES\\AMESCoreStudio_ST\\AMESCoreStudio_Git\\AMES\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj", - "packagesPath": "C:\\Users\\yiruwang\\.nuget\\packages\\", - "outputPath": "C:\\Users\\yiruwang\\Desktop\\AMES\\AMESCoreStudio_ST\\AMESCoreStudio_Git\\AMES\\AMESCoreStudio.CommonTools\\obj\\", + "projectPath": "D:\\SFIS_WEB\\安勤\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj", + "packagesPath": "C:\\Users\\apple.chen\\.nuget\\packages\\", + "outputPath": "D:\\SFIS_WEB\\安勤\\AMESCoreStudio.CommonTools\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages", - "C:\\Program Files (x86)\\Microsoft\\Xamarin\\NuGet\\", - "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" + "D:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" ], "configFilePaths": [ - "C:\\Users\\yiruwang\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Users\\apple.chen\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Xamarin.Offline.config" + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ "netcoreapp3.1" diff --git a/AMESCoreStudio.CommonTools/obj/AMESCoreStudio.CommonTools.csproj.nuget.g.props b/AMESCoreStudio.CommonTools/obj/AMESCoreStudio.CommonTools.csproj.nuget.g.props index 228f2cd7..777b63de 100644 --- a/AMESCoreStudio.CommonTools/obj/AMESCoreStudio.CommonTools.csproj.nuget.g.props +++ b/AMESCoreStudio.CommonTools/obj/AMESCoreStudio.CommonTools.csproj.nuget.g.props @@ -5,15 +5,13 @@ NuGet $(MSBuildThisFileDirectory)project.assets.json $(UserProfile)\.nuget\packages\ - C:\Users\yiruwang\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages;C:\Program Files (x86)\Microsoft\Xamarin\NuGet\;C:\Program Files\dotnet\sdk\NuGetFallbackFolder + C:\Users\apple.chen\.nuget\packages\;D:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages PackageReference 5.11.4 - - - - + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) diff --git a/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.GeneratedMSBuildEditorConfig.editorconfig b/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.GeneratedMSBuildEditorConfig.editorconfig index e35b99ce..f1c9191b 100644 --- a/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.GeneratedMSBuildEditorConfig.editorconfig +++ b/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.GeneratedMSBuildEditorConfig.editorconfig @@ -1,3 +1,3 @@ is_global = true build_property.RootNamespace = AMESCoreStudio.CommonTools -build_property.ProjectDir = C:\Users\yiruwang\Desktop\AMES\AMESCoreStudio_ST\AMESCoreStudio_Git\AMES\AMESCoreStudio.CommonTools\ +build_property.ProjectDir = D:\SFIS_WEB\安勤\AMESCoreStudio.CommonTools\ diff --git a/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.assets.cache b/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.assets.cache index ae79c549..bb0f9f37 100644 Binary files a/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.assets.cache and b/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.assets.cache differ diff --git a/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.dll b/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.dll index 6efce073..973ad504 100644 Binary files a/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.dll and b/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.dll differ diff --git a/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.pdb b/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.pdb index b6758a50..77598e77 100644 Binary files a/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.pdb and b/AMESCoreStudio.CommonTools/obj/Debug/netcoreapp3.1/AMESCoreStudio.CommonTools.pdb differ diff --git a/AMESCoreStudio.CommonTools/obj/Release/netcoreapp3.1/AMESCoreStudio.CommonTools.GeneratedMSBuildEditorConfig.editorconfig b/AMESCoreStudio.CommonTools/obj/Release/netcoreapp3.1/AMESCoreStudio.CommonTools.GeneratedMSBuildEditorConfig.editorconfig index a196e6b5..f1c9191b 100644 --- a/AMESCoreStudio.CommonTools/obj/Release/netcoreapp3.1/AMESCoreStudio.CommonTools.GeneratedMSBuildEditorConfig.editorconfig +++ b/AMESCoreStudio.CommonTools/obj/Release/netcoreapp3.1/AMESCoreStudio.CommonTools.GeneratedMSBuildEditorConfig.editorconfig @@ -1,3 +1,3 @@ is_global = true build_property.RootNamespace = AMESCoreStudio.CommonTools -build_property.ProjectDir = D:\安勤\AMESCoreStudio.CommonTools\ +build_property.ProjectDir = D:\SFIS_WEB\安勤\AMESCoreStudio.CommonTools\ diff --git a/AMESCoreStudio.CommonTools/obj/Release/netcoreapp3.1/AMESCoreStudio.CommonTools.assets.cache b/AMESCoreStudio.CommonTools/obj/Release/netcoreapp3.1/AMESCoreStudio.CommonTools.assets.cache index 3903b9a5..b3c12050 100644 Binary files a/AMESCoreStudio.CommonTools/obj/Release/netcoreapp3.1/AMESCoreStudio.CommonTools.assets.cache and b/AMESCoreStudio.CommonTools/obj/Release/netcoreapp3.1/AMESCoreStudio.CommonTools.assets.cache differ diff --git a/AMESCoreStudio.CommonTools/obj/project.assets.json b/AMESCoreStudio.CommonTools/obj/project.assets.json index a41f662f..51c9fbce 100644 --- a/AMESCoreStudio.CommonTools/obj/project.assets.json +++ b/AMESCoreStudio.CommonTools/obj/project.assets.json @@ -8,30 +8,25 @@ ".NETCoreApp,Version=v3.1": [] }, "packageFolders": { - "C:\\Users\\yiruwang\\.nuget\\packages\\": {}, - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}, - "C:\\Program Files (x86)\\Microsoft\\Xamarin\\NuGet\\": {}, - "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {} + "C:\\Users\\apple.chen\\.nuget\\packages\\": {}, + "D:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} }, "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\yiruwang\\Desktop\\AMES\\AMESCoreStudio_ST\\AMESCoreStudio_Git\\AMES\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj", + "projectUniqueName": "D:\\SFIS_WEB\\安勤\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj", "projectName": "AMESCoreStudio.CommonTools", - "projectPath": "C:\\Users\\yiruwang\\Desktop\\AMES\\AMESCoreStudio_ST\\AMESCoreStudio_Git\\AMES\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj", - "packagesPath": "C:\\Users\\yiruwang\\.nuget\\packages\\", - "outputPath": "C:\\Users\\yiruwang\\Desktop\\AMES\\AMESCoreStudio_ST\\AMESCoreStudio_Git\\AMES\\AMESCoreStudio.CommonTools\\obj\\", + "projectPath": "D:\\SFIS_WEB\\安勤\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj", + "packagesPath": "C:\\Users\\apple.chen\\.nuget\\packages\\", + "outputPath": "D:\\SFIS_WEB\\安勤\\AMESCoreStudio.CommonTools\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages", - "C:\\Program Files (x86)\\Microsoft\\Xamarin\\NuGet\\", - "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" + "D:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" ], "configFilePaths": [ - "C:\\Users\\yiruwang\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Users\\apple.chen\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Xamarin.Offline.config" + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ "netcoreapp3.1" diff --git a/AMESCoreStudio.CommonTools/obj/project.nuget.cache b/AMESCoreStudio.CommonTools/obj/project.nuget.cache index 81b713c8..8e23311b 100644 --- a/AMESCoreStudio.CommonTools/obj/project.nuget.cache +++ b/AMESCoreStudio.CommonTools/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "2fIHsumIkVxB9cxkVDgXQ+h//IUaMqrhb6BgAuaYSrYPblP7jR7MMNCYa/+JQPOy86bq+CIg7wBrFfw7Pcyswg==", + "dgSpecHash": "Y1E9o+3KYhbVyROwQy7Br3wVzfjKVSXcvMR9ZI6jN2XRke4BQDsBTs5Cl2G6TP/C20cUYM3DfDjqvUX8fpdM0A==", "success": true, - "projectFilePath": "C:\\Users\\yiruwang\\Desktop\\AMES\\AMESCoreStudio_ST\\AMESCoreStudio_Git\\AMES\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj", + "projectFilePath": "D:\\SFIS_WEB\\安勤\\AMESCoreStudio.CommonTools\\AMESCoreStudio.CommonTools.csproj", "expectedPackageFiles": [], "logs": [] } \ No newline at end of file diff --git a/AMESCoreStudio.Web/Controllers/WHSController.cs b/AMESCoreStudio.Web/Controllers/WHSController.cs index da711649..dd59feab 100644 --- a/AMESCoreStudio.Web/Controllers/WHSController.cs +++ b/AMESCoreStudio.Web/Controllers/WHSController.cs @@ -104,6 +104,15 @@ namespace AMESCoreStudio.Web.Controllers } ViewBag.FactoryUnit = UnitItems; } + private async Task GetFactoryUnitsList4() + { + var UnitItems = new List(); + UnitItems.Add(new SelectListItem("請選擇", "0")); + UnitItems.Add(new SelectListItem("系統組裝", "B")); + UnitItems.Add(new SelectListItem("單板", "S")); + UnitItems.Add(new SelectListItem("重工", "R")); + ViewBag.FactoryUnit = UnitItems; + } private async Task GetFactoryList() { var result = await _basApi.GetFactoryInfoes(); @@ -2668,6 +2677,90 @@ namespace AMESCoreStudio.Web.Controllers #endregion + #region WHS022外包廠工時大表 + + public async Task WHS022(string unit) + { + var user_id = Request.Cookies["UserID"]; + GetUserID(); + //製程單位 + await GetFactoryUnitsList4(); + + return View(); + } + + [HttpGet] + public async Task WHS022OWByUserQuery(string sUnitNo,string sItemNo,string sUserId) + { + var result = await _whsApi.GetOutsourceWorktimeByUserWHS022(sUnitNo, sItemNo, sUserId); + + if (result.Count > 0) + { + return Json(new Table() { code = 0, msg = "", data = result, count = result.Count }); + } + + return Json(new Table() { count = 0, data = null }); + } + + + + [HttpGet] + public async Task WHS022ColumnNameQuery(string sUnitNo) + { + + var result = await _whsApi.GetOutsourceWorktimeColumnNameWHS022(sUnitNo); + + if (result.Count > 0) + { + return Json(new Table() { code = 0, msg = "", data = result, count = result.Count }); + } + + return Json(new Table() { count = 0, data = null }); + } + [HttpPost] + public async Task WHS022OWAddData(string sUnitNo, string sItemNo, string sData, string sUserId) + { + IResultModel result; + result = await _whsApi.PostOWAddDataWHS022(sUnitNo, sItemNo, sData, sUserId); + + return Json(result); + } + + [HttpPost] + public async Task WHS022OWAddChangeData(string sUnitNo, string sItemNo, string sUserId) + { + IResultModel result; + result = await _whsApi.PostOWAddChangeDataWHS022(sUnitNo, sItemNo, sUserId); + + return Json(result); + } + + #endregion + + #region WHS023外包廠工時大表 + public async Task WHS023(string unit) + { + var user_id = Request.Cookies["UserID"]; + GetUserID(); + //製程單位 + await GetFactoryUnitsList4(); + + return View(); + } + + [HttpGet] + public async Task WHS023OWByQuery(string sUnitNo, string sItemNo, string sUserId) + { + var result = await _whsApi.GetOutsourceWorktimeWHS023(sUnitNo, sItemNo, sUserId); + + if (result.Count > 0) + { + return Json(new Table() { code = 0, msg = "", data = result, count = result.Count }); + } + + return Json(new Table() { count = 0, data = null }); + } + #endregion public void GetUserID() { var userID = ""; diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IWHS.cs b/AMESCoreStudio.Web/HttpApis/AMES/IWHS.cs index 53dccb66..ccac8d68 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/IWHS.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/IWHS.cs @@ -11,7 +11,7 @@ using AMESCoreStudio.CommonTools.Result; namespace AMESCoreStudio.Web { [JsonReturn] - public interface IWHS:IHttpApi + public interface IWHS : IHttpApi { #region WHS001 工作群組維護 @@ -98,7 +98,7 @@ namespace AMESCoreStudio.Web /// /// [WebApiClient.Attributes.HttpPost("api/StandardWorkTimes")] - ITask> PostStandardWorkTime([FromBody,RawJsonContent] string model); + ITask> PostStandardWorkTime([FromBody, RawJsonContent] string model); /// /// 更新標準工時 @@ -133,7 +133,7 @@ namespace AMESCoreStudio.Web /// /// [WebApiClient.Attributes.HttpGet("api/StandardWorkTimes/WHS003/{u}/{l}/{i}")] - ITask> GetStandardWorkTimes003(string u,int l,string i); + ITask> GetStandardWorkTimes003(string u, int l, string i); /// /// 獲取標準工時資料 @@ -605,6 +605,23 @@ namespace AMESCoreStudio.Web #endregion + #region WHS022 外包廠工時大表 + /// + /// 新增異常工時 + /// + /// + [WebApiClient.Attributes.HttpGet("api/OutsourceWorktime/WHS022ByUserQuery/{sUnitNo}/{sItemNo}/{sUserId}")] + ITask> GetOutsourceWorktimeByUserWHS022(string sUnitNo, string sItemNo, string sUserId); + + [WebApiClient.Attributes.HttpGet("api/OutsourceWorktime/WHS022OWColumnNameQuery/{sUnitNo}")] + ITask> GetOutsourceWorktimeColumnNameWHS022(string sUnitNo); + [WebApiClient.Attributes.HttpPost("api/OutsourceWorktime/WHS022OWAddData/{sUnitNo}/{sItemNo}/{sData}/{sUserId}")] + ITask> PostOWAddDataWHS022(string sUnitNo, string sItemNo, string sData, string sUserId); + [WebApiClient.Attributes.HttpPost("api/OutsourceWorktime/WHS022OWAddChangeData/{sUnitNo}/{sItemNo}/{sUserId}")] + ITask> PostOWAddChangeDataWHS022(string sUnitNo, string sItemNo, string sUserId); + [WebApiClient.Attributes.HttpGet("api/OutsourceWorktime/WHS023OWByQuery/{sUnitNo}/{sItemNo}/{sUserId}")] + ITask> GetOutsourceWorktimeWHS023(string sUnitNo, string sItemNo, string sUserId); + #endregion } } diff --git a/AMESCoreStudio.Web/ViewModels/WHS/WHS020ViewModel.cs b/AMESCoreStudio.Web/ViewModels/WHS/WHS020ViewModel.cs new file mode 100644 index 00000000..a196425b --- /dev/null +++ b/AMESCoreStudio.Web/ViewModels/WHS/WHS020ViewModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using AMESCoreStudio.WebApi.Models.AMES; +using AMESCoreStudio.WebApi.Models.BAS; + +namespace AMESCoreStudio.Web.ViewModels.WHS +{ + public class WHS020ViewModel + { + + public IEnumerable StandardWorkTimes { get; set; } + } +} diff --git a/AMESCoreStudio.Web/Views/WHS/WHS022.cshtml b/AMESCoreStudio.Web/Views/WHS/WHS022.cshtml new file mode 100644 index 00000000..aef7bc26 --- /dev/null +++ b/AMESCoreStudio.Web/Views/WHS/WHS022.cshtml @@ -0,0 +1,356 @@ +@{ + ViewData["Title"] = "外包廠工時大表"; + Layout = "~/Views/Shared/_AMESLayout.cshtml"; +} + +
+
+
@ViewBag.Title
+
+
+
+
+
+ +
+ @if (@ViewBag.FactoryUnitNo != null) + { + + } + else + { + + } +
+ +
+
+ +
+ +
+
+
+ +
+
+
+
+ +
+ + + + + + + + + +
#
+
+ + +
+@section Scripts{ + + +} \ No newline at end of file diff --git a/AMESCoreStudio.Web/Views/WHS/WHS023.cshtml b/AMESCoreStudio.Web/Views/WHS/WHS023.cshtml new file mode 100644 index 00000000..5e88d3a4 --- /dev/null +++ b/AMESCoreStudio.Web/Views/WHS/WHS023.cshtml @@ -0,0 +1,148 @@ +@{ + ViewData["Title"] = "外包廠工時大表查詢"; + Layout = "~/Views/Shared/_AMESLayout.cshtml"; +} + +
+
+
@ViewBag.Title
+
+
+
+
+
+ +
+ @if (@ViewBag.FactoryUnitNo != null) + { + + } + else + { + + } +
+ +
+
+ +
+ +
+
+
+ +
+
+
+ + + + + + + + + +
#
+
+ + +
+@section Scripts{ + + +} \ No newline at end of file diff --git a/AMESCoreStudio.WebApi/AMESCoreStudio.WebApi/AMESCoreStudio.WebApi.xml b/AMESCoreStudio.WebApi/AMESCoreStudio.WebApi/AMESCoreStudio.WebApi.xml index b181ca7e..f30cc1da 100644 --- a/AMESCoreStudio.WebApi/AMESCoreStudio.WebApi/AMESCoreStudio.WebApi.xml +++ b/AMESCoreStudio.WebApi/AMESCoreStudio.WebApi/AMESCoreStudio.WebApi.xml @@ -1424,6 +1424,14 @@
+ + + 查詢箱號是否有在FQC抽驗中或允收 + + 箱號 + WIPID + + 新增檢驗單明細資料檔 @@ -3025,6 +3033,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 不良現象原因代碼維護 @@ -3771,6 +3832,89 @@ + + + 工作群組維護 + + + + + + + + + + + + + + + + + + + + + + + + WHS022 + + 製程 + 料號 + 使用者ID + + + + + WHS022 + + 製程 + 料號 + + + + + + + 製程 + + + + + + + 製程 + + + + + WHS022OWAddData + + 製程 + 料號 + 工時資料 + 使用者ID + + + + + WHS022OWAddChangeData + + 製程 + 料號 + 使用者ID + + + + + WHS023 + + 製程 + 料號 + 使用者ID + + @@ -7010,25 +7154,25 @@ - + 過站判斷 - + - + 過站判斷 - + FQC抽驗過站 @@ -7037,7 +7181,7 @@ UserID - + 判斷過站完成新增or更新 Table @@ -7045,81 +7189,81 @@ T:燒機In - + BarcodeInfo-條碼資料檔 - + BarcodeStation-條碼過站資料檔 - + BarcodeItem-組件资料 - + BarcodeOutfit-治具資料 - + OutfitInfo-設備資料檔 使用次數 - + BurnInfo-燒入資料檔 - + NgInfo-測試不良基本資料檔 - + BarcodeWip-檔案用途 條碼工單資料檔 - + WipStation - + WipClass-各班別數量資料檔 - + WipTime-工單各站數量資料檔 – By TIME - + 判斷工單狀態 @@ -7130,49 +7274,49 @@ 作業站ID - + 內部序號查詢工單號碼 內部序號 Success:true or false - + 查詢序號是否有在該工單 條碼區間內 內部序號 工單號碼 - + 內部序號查詢目前生產單位 內部序號 Success:true or false - + 內部序號查詢目前站別 內部序號 Success:true or false - + 內部序號是否鎖定 內部序號 Success:true or false - + 內部序號是否報廢 內部序號 Success:true or false - + 確認內部條碼流動 @@ -7182,7 +7326,7 @@ 作業站編號 - + 確認工單狀態 @@ -7193,7 +7337,7 @@ 作業站 - + 判斷序號狀態 @@ -7201,85 +7345,397 @@ 內部序號 - + + + 燒機判斷 + + 工單號碼 + 內部序號ID + 作業站ID + + + + + 確認組件狀態 + + + + + + 確認治具狀態 + + + + + + 確認組件數量正確 + + 工單號碼 + 內部條碼 + 生產單位 + + + + + 內部序號找BarCodeID + + 內部條碼 + 0:找不到 + + + + 料號找料號ID + + 料號 + 0:找不到 + + + + 取得上一個作業站RuleStationID + + 工單ID + BarCodeID + 目前作業站ID + 工單流程ID + true:false + + + + 確認下一站為完工 + + 工單號碼 + 生產單位ID + 作業站ID + Success(true)是 (false)不是 + + + + 確認目前該站是否為第一站 + + 工單號碼 + 生產單位ID + 作業站ID + Y:是 N:不是 + + + + 判斷生產中工單是否已經全部完工 自動更新 + + 工單號碼 + 生產單位ID + StationID + + + + + 確認是否有掃毒 + + 工單號碼 + 工單料號 + + + + + 過站判斷 + + + + + + + + + + + 過站判斷 + + + + + + + FQC抽驗過站 + + 入庫單號 + 順序 + UserID + + + + + 判斷過站完成新增or更新 Table + + + + + + + BarcodeInfo-條碼資料檔 + + model資料 + BarCodeId 0=(修改) !=0(新增) + + + + + BarcodeStation-條碼過站資料檔 + + + + + + + BarcodeItem-組件资料 + + + BarcodeItemID 陣列 + + + + + BarCodeOutfit-治具資料 + + + BarCodeOutfit ID List + + + + + OutfitInfo-設備資料檔 使用次數 + + + + + + + BurnInfo-燒入資料檔 + + + + + + + NgInfo-測試不良基本資料檔 + + + Db ID + Db ID + + + + + BarcodeWip-檔案用途 條碼工單資料檔 + + + + + + + WipStation + + + + + + WipClass-各班別數量資料檔 + + + + + + WipTime-工單各站數量資料檔 – By TIME + + + + + + WipKp-工單keyParts 長度更新 + + + + + + + 判斷工單狀態 + + 工單號碼 + 生產單位 + 線別 + 流程 + 作業站ID + + + + + 內部序號查詢工單號碼 + + 內部序號 + Success:true or false + + + + 查詢序號是否有在該工單 條碼區間內 + + 內部序號 + 工單號碼 + + + + 內部序號是否鎖定 + + 內部序號ID + 內部序號 + Success:true or false + + + + 內部序號是否報廢 + + 內部序號ID + 內部序號 + Success:true or false + + + + 確認內部條碼流動 + + 工單號碼ID + 內部條碼ID + 內部條碼 + 作業站編號 + + + + + 確認工單狀態 + + 工單號碼 + 生產單位 + 流程 + 線別 + 作業站 + 生產條碼 + + + + + 判斷序號狀態 + + 內部序號ID + 內部序號 + + + + + 燒機判斷 + + 工單號碼 + 內部序號ID + 作業站ID + 過站狀態Pass Fail + + + + + 確認組件狀態 + + + + + + 確認治具狀態 + + + + + + 取得上一個作業站RuleStationID + + 工單ID + BarCodeID + 目前作業站ID + 工單流程ID + true:false + + + + 確認下一站為完工 + + 流程ID + 作業站ID + 過站狀態 Pass or Fail + Success(true)是 (false)不是 + + - 燒機判斷 + 確認目前該站是否為第一站 - 工單號碼 - 內部序號ID + 工單號碼ID 作業站ID - + Y:是 N:不是 - + - 確認組件狀態 + 判斷生產中工單是否已經全部完工 自動更新 + 工單ID - + - 確認治具狀態 + 無序號工單批次作業 + - + - 確認組件數量正確 + 確認治具是否已達到預警提前次數 - 工單號碼 - 內部條碼 - 生產單位 - + - + - 內部序號找BarCodeID + 確認過站基本欄位是否填寫 - 內部條碼 - 0:找不到 + + - + - 料號找料號ID + 過站相關資訊 寫入 - 料號 - 0:找不到 + + - + - 取得上一個作業站RuleStationID + 確認過站資料是否正確 - 工單ID - BarCodeID - 目前作業站ID - 工單流程ID - true:false + + - + - 確認下一站為完工 + KeyPart 細項判斷確認 - 工單號碼 - 生產單位ID - 作業站ID - Success(true)是 (false)不是 + 工單組件資料 + 過站刷入組件資料 + - + - 確認目前該站是否為第一站 + 更新 組件替換資料 - 工單號碼 - 生產單位ID - 作業站ID - Y:是 N:不是 + 料號組件資料 + 料號組件更換資料 + - + - 判斷生產中工單是否已經全部完工 自動更新 + 取該筆工單流水碼 - 工單號碼 - 生產單位ID - StationID + 工單號碼 @@ -7290,6 +7746,13 @@ 工單料號 + + + 執行Get Https網址 + + 呼叫網址 + + 檔案用途 條碼工單資料檔 @@ -8324,6 +8787,14 @@ 外包廠商代號 + + + 線頭看板 + + 生產製程 + 線別ID + + TestLog 測試Log @@ -13362,6 +13833,51 @@ 站別資料 + + + 維修不良組件資料檔 + + + + + 不良組件ID + + + + + 不良零件ID + + + + + 舊組件序號 + + + + + 新組件序號 + + + + + 創建者ID + + + + + 創建日期 + + + + + 更新者ID + + + + + 更新日期 + + 不良代码资料表 @@ -14224,6 +14740,86 @@ 更新日期 + + + 外包工時资料表 + + + + + OUTSOURCE_WORKTIME ID + + + + + 料號 + + + + + OUTSOURCE_UNIT_COL.ID + + + + + 工時表資料 + + + + + 建立者 + + + + + 建立日期 + + + + + 外包工時资料表 + + + + + OUTSOURCE_WORKTIME_CHANGE ID + + + + + OUTSOURCE_WORKTIME ID + + + + + 料號 + + + + + OUTSOURCE_UNIT_COL.ID + + + + + 工時表資料 + + + + + 建立者 + + + + + 前次建立日期 + + + + + 建立日期 + + 序號料號資料表 @@ -15485,6 +16081,11 @@ 月份A~L + + + 日期 + + 料號出貨序號規則資料檔 @@ -15555,6 +16156,11 @@ 月份A~L + + + 日期 + + 外包機種資料 @@ -17540,6 +18146,11 @@ 更新日期 + + + 是否列印NL + + 認證Logos @@ -20113,14 +20724,24 @@ BarcodeItemKP Dto - + 工單號碼 - + - 條碼 + 工單號碼ID + + + + + 內部條碼ID + + + + + 內部條碼No @@ -22022,6 +22643,71 @@ CFQR件數 總筆數 + + + 生產製程 + + + + + 生產線別 + + + + + 生產線別名稱 + + + + + 目前站別名稱 + + + + + 當前工單 + + + + + 工程編號 + + + + + 計畫產量 + + + + + 開工時間 + + + + + 標準工時 + + + + + 應投入數量 + + + + + 實際投入數量(當天) + + + + + 累計投入數量 + + + + + 生產效率 + + 流程站別資料 @@ -23047,7 +23733,7 @@ - 生產單位 + 生產單位-製程 @@ -23057,7 +23743,7 @@ - 作業站 + 作業站ID @@ -23092,22 +23778,22 @@ - 刷入類型 NG or KP(Item_No) + 刷入類型 NG(不良) or KP(Item_No) - 刷入組件資料或不良代碼 + KP:組件料號,NG:不良代碼 - 組件:舊組件序號 NG:異常位置 + KP:舊組件序號,NG:異常位置 - 組件:組件料號 NG: + KP:組件料號,NG: @@ -23125,6 +23811,46 @@ 設備名稱 + + + 料號ID + + + + + 料號No + + + + + Burn In 燒機完成狀態 + + + + + 工作站_測試類別 + + + + + 工作站_工作站類別 + + + + + 工作站_綁定製程 + + + + + 工作站_工作站名稱 + + + + + 生產單位_簡碼 + + @@ -23489,6 +24215,21 @@ 無 + + + LN列印 + + + + + 不印(標準品) + + + + + 印 + + WipAttr @@ -24811,6 +25552,21 @@ 测试文本 + + + 維修不良序號 + + + + + 外包工時資料 + + + + + 外包工時資料 + + diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/OutsourceWorktimeController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/OutsourceWorktimeController.cs new file mode 100644 index 00000000..46ee7cf9 --- /dev/null +++ b/AMESCoreStudio.WebApi/Controllers/AMES/OutsourceWorktimeController.cs @@ -0,0 +1,431 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using AMESCoreStudio.WebApi; +using AMESCoreStudio.WebApi.Models.AMES; +using AMESCoreStudio.CommonTools.Result; +using Dapper; +using AMESCoreStudio.WebApi.Extensions; + +namespace AMESCoreStudio.WebApi.Controllers.AMES +{ + /// + /// 工作群組維護 + /// + [Route("api/[controller]")] + [ApiController] + public class OutsourceWorktimeController : ControllerBase + { + private readonly AMESContext _context; + private readonly AMESContext _context2; + + /// + /// + /// + /// + public OutsourceWorktimeController(AMESContext context) + { + _context = context; + _context2 = context; + } + + /// + /// + /// + /// + // GET: api/StandardWorkTimes + [HttpGet] + public async Task>> GetStandardWorkTime() + { + IQueryable q = _context.StandardWorkTimes; + + q = q.OrderBy(p => p.StandardID); + + var standardWorkTime = await q.ToListAsync(); + + foreach (var data in standardWorkTime) + { + data.LineInfo = _context.LineInfoes.Find(data.LineID); + data.Stations = _context.Stationses.Find(data.StationID); + } + + return standardWorkTime; + } + + /// + /// + /// + /// + /// + // GET: api/StandardWorkTimes/5 + [HttpGet("{id}")] + public async Task>> GetStandardWorkTime(int id) + { + IQueryable q = _context.StandardWorkTimes; + q = q.Where(p => p.StandardID.Equals(id)); + + var standardWorkTime = await q.ToListAsync(); + + if (standardWorkTime == null) + { + return NotFound(); + } + foreach (var data in standardWorkTime) + { + data.LineInfo = _context.LineInfoes.Find(data.LineID); + data.Stations = _context.Stationses.Find(data.StationID); + } + + return standardWorkTime; + } + + /// + /// WHS022 + /// + /// 製程 + /// 料號 + /// 使用者ID + /// + [HttpGet("WHS022ByUserQuery/{sUnitNo}/{sItemNo}/{sUserId}")] + public async Task> GetOutsourceWorktimeByUserQuery(string sUnitNo ,string sItemNo,int sUserId) + { + var querySql = @" + SELECT DISTINCT 1 FACTORY_SEQ, '安勤' FACTORY_NAME_CH ,OUL.OUC_ID , OUL.SEQ, + (CASE WHEN OUL.COL_STATION_ID IS NOT NULL THEN TO_CHAR(OUL.COL_STATION_ID) ELSE OUL.COL_OTHER_NAME END) COLUMN_NAME, + (CASE OUL.SEQ WHEN 1 THEN '安勤' ELSE TO_CHAR(SW.TOTAL_CT) END) OUTSOURCE_VALUE + FROM (SELECT * FROM JHAMES.OUTSOURCE_UNIT_COL OUL WHERE OUL.UNIT_NO = :UNIT_NO)OUL + LEFT JOIN (SELECT * FROM JHAMES.STANDARD_WORKTIME WHERE ITEM_NO = :ITEM_NO) SW ON SW.STATION_ID = OUL.COL_STATION_ID + UNION + SELECT 2 FACTORY_SEQ, + (SELECT FI.FACTORY_NAME_CH FROM JHSYS.USER_INFO UI + LEFT JOIN JHAMES.FACTORY_INFO FI ON UI.FACTORY_ID = FI.FACTORY_ID + WHERE UI.USER_ID = :USER_ID) FACTORY_NAME_CH, + OUL.OUC_ID , OUL.SEQ, + (CASE WHEN OUL.COL_STATION_ID IS NOT NULL THEN TO_CHAR(OUL.COL_STATION_ID) ELSE OUL.COL_OTHER_NAME + END) COLUMN_NAME, + (CASE OUL.SEQ WHEN 1 THEN (SELECT FI.FACTORY_NAME_CH FROM JHSYS.USER_INFO UI + LEFT JOIN JHAMES.FACTORY_INFO FI ON UI.FACTORY_ID = FI.FACTORY_ID + WHERE UI.USER_ID = :USER_ID) ELSE OW.VALUE END) + OUTSOURCE_VALUE + FROM (SELECT * FROM JHAMES.OUTSOURCE_UNIT_COL OUL WHERE OUL.UNIT_NO = :UNIT_NO)OUL + LEFT JOIN JHAMES.FACTORY_UNIT FU ON FU.UNIT_NO = OUL.UNIT_NO + LEFT JOIN (SELECT * FROM JHAMES.OUTSOURCE_WORKTIME WHERE ITEM_NO = :ITEM_NO AND USER_ID = :USER_ID) OW ON OW.OUC_ID = OUL.OUC_ID + ORDER BY FACTORY_SEQ,FACTORY_NAME_CH,SEQ"; + + DynamicParameters p = new DynamicParameters(); + p.Add("UNIT_NO", sUnitNo); + p.Add("ITEM_NO", sItemNo); + p.Add("USER_ID", sUserId); + var result = await _context.Database.DapperQueryAsync(querySql, p); + return result; + } + + /// + /// WHS022 + /// + /// 製程 + /// 料號 + /// + [HttpGet("WHS022ByItemQuery/{sUnitNo}/{sItemNo}")] + public async Task> GetOutsourceWorktimeByItemQuery(string sUnitNo, string sItemNo) + { + var querySql = @"SELECT DISTINCT 1 FACTORY_SEQ, '安勤' FACTORY_NAME_CH ,OUL.OUC_ID , OUL.SEQ, + (CASE WHEN OUL.COL_STATION_ID IS NOT NULL THEN TO_CHAR(OUL.COL_STATION_ID) ELSE OUL.COL_OTHER_NAME END) COLUMN_NAME, + (CASE OUL.SEQ WHEN 1 THEN '安勤' ELSE TO_CHAR(SW.TOTAL_CT) END) OUTSOURCE_VALUE + FROM (SELECT * FROM JHAMES.OUTSOURCE_UNIT_COL OUL WHERE OUL.UNIT_NO = :UNIT_NO)OUL + LEFT JOIN (SELECT * FROM JHAMES.STANDARD_WORKTIME WHERE ITEM_NO = :ITEM_NO) SW ON SW.STATION_ID = OUL.COL_STATION_ID + UNION + SELECT 2 FACTORY_SEQ, + (SELECT FI.FACTORY_NAME_CH FROM JHSYS.USER_INFO UI + LEFT JOIN JHAMES.FACTORY_INFO FI ON UI.FACTORY_ID = FI.FACTORY_ID + WHERE UI.USER_ID = OW.USER_ID) FACTORY_NAME_CH, + OUL.OUC_ID , OUL.SEQ, + (CASE WHEN OUL.COL_STATION_ID IS NOT NULL THEN TO_CHAR(OUL.COL_STATION_ID) ELSE OUL.COL_OTHER_NAME + END) COLUMN_NAME, + (CASE OUL.SEQ WHEN 1 THEN (SELECT FI.FACTORY_NAME_CH FROM JHSYS.USER_INFO UI + LEFT JOIN JHAMES.FACTORY_INFO FI ON UI.FACTORY_ID = FI.FACTORY_ID + WHERE UI.USER_ID = OW.USER_ID) ELSE OW.VALUE END) + OUTSOURCE_VALUE + FROM (SELECT * FROM JHAMES.OUTSOURCE_UNIT_COL OUL WHERE OUL.UNIT_NO = :UNIT_NO)OUL + LEFT JOIN JHAMES.FACTORY_UNIT FU ON FU.UNIT_NO = OUL.UNIT_NO + LEFT JOIN (SELECT * FROM JHAMES.OUTSOURCE_WORKTIME WHERE ITEM_NO = :ITEM_NO ) OW ON OW.OUC_ID = OUL.OUC_ID + ORDER BY FACTORY_SEQ,FACTORY_NAME_CH,SEQ"; + + DynamicParameters p = new DynamicParameters(); + p.Add("UNIT_NO", sUnitNo); + p.Add("ITEM_NO", sItemNo); + var result = await _context.Database.DapperQueryAsync(querySql, p); + return result; + } + /// + /// + /// + /// 製程 + /// + [HttpGet("WHS022OWColumnNameQuery/{sUnitNo}")] + public async Task> WHS022OWColumnNameQuery(string sUnitNo) + { + var querySql = @"SELECT OUC.OUC_ID,OUC.SEQ, + (CASE WHEN OUC.COL_STATION_ID IS NULL THEN TO_CHAR(OUC.COL_OTHER_NAME) ELSE TO_CHAR(S.STATION_NAME) END) AS COLUMN_NAME + FROM JHAMES.OUTSOURCE_UNIT_COL OUC + LEFT JOIN JHAMES.STATIONS S ON S.STATION_ID = OUC.COL_STATION_ID + WHERE OUC.UNIT_NO = :UNIT_NO + ORDER BY OUC.SEQ"; + + DynamicParameters p = new DynamicParameters(); + p.Add("UNIT_NO", sUnitNo); + var result = await _context.Database.DapperQueryAsync(querySql, p); + return result; + } + + /// + /// + /// + /// 製程 + /// + [HttpGet("WHS022OutsourceWorktimeQuery/{sUnitNo}/{sItemNo}/{sUserId}")] + public async Task> WHS022OutsourceWorktimeQuery(string sUnitNo, string sItemNo, int sUserId) + { + var querySql = @"SELECT OW.OW_ID, OW.ITEM_NO, OW.OUC_ID, OW.VALUE, OW.USER_ID, OW.CREATE_DATE + FROM JHAMES.OUTSOURCE_WORKTIME OW + LEFT JOIN JHAMES.OUTSOURCE_UNIT_COL OUC ON OUC.OUC_ID = OW.OUC_ID + WHERE OUC.UNIT_NO = :UNIT_NO + AND OW.ITEM_NO = :ITEM_NO + AND OW.USER_ID = :USER_ID + ORDER BY OW.OW_ID"; + + DynamicParameters p = new DynamicParameters(); + p.Add("UNIT_NO", sUnitNo); + p.Add("ITEM_NO", sItemNo); + p.Add("USER_ID", sUserId); + var result = await _context.Database.DapperQueryAsync(querySql, p); + return result; + } + + /// + /// WHS022OWAddData + /// + /// 製程 + /// 料號 + /// 工時資料 + /// 使用者ID + /// + // GET: api/StandardWorkTimes/5 + [HttpPost("WHS022OWAddData/{sUnitNo}/{sItemNo}/{sData}/{sUserId}")] + public async Task> WHS022OWAddData(string sUnitNo, string sItemNo, string sData, string sUserId) + { + OutsourceWorktime FinalOutsourceWorktime = new OutsourceWorktime(); + Helper helper = new Helper(_context); + + var dsColumnNameId = WHS022OWColumnNameQuery(sUnitNo).Result.ToList(); + var lColumnNameId = dsColumnNameId.Select(s => new + { + OUC_ID = s.OUC_ID, + SEQ = s.SEQ, + COLUMN_NAME = s.COLUMN_NAME, + }); + List list = new List(); + foreach (var s in lColumnNameId) + { + var _Data = int.Parse(s.OUC_ID.ToString()); + list.Add(_Data); + } + int[] iaColumnNameId = list.ToArray(); + var _sData = sData.Remove(sData.Length-1).Split(','); + IQueryable ItemUserOutsourceWorktimes = _context.OutsourceWorktimes; + OutsourceWorktime _ItemUserOutsourceWorktime = new OutsourceWorktime(); + + ItemUserOutsourceWorktimes = ItemUserOutsourceWorktimes.Where(p => p.ItemNo.Equals(sItemNo) && p.UserId.Equals(int.Parse(sUserId)) + && iaColumnNameId.Contains(p.OucId)); + if (ItemUserOutsourceWorktimes.Count() == 0) + { + for (int i = 0; i < _sData.Length; i++) + { + var _Value = _sData[i].ToString(); + if (i == 0) + _Value = null; + var _OwId = helper.GetIDKey("OUTSOURCE_WORKTIMEID").Result; + FinalOutsourceWorktime.OwId = _OwId; + FinalOutsourceWorktime.ItemNo = sItemNo; + FinalOutsourceWorktime.Value = _Value; + FinalOutsourceWorktime.CreateDate = DateTime.Now; + FinalOutsourceWorktime.UserId = int.Parse(sUserId); + FinalOutsourceWorktime.OucId = int.Parse(iaColumnNameId[i].ToString()); + + _context.OutsourceWorktimes.Add(FinalOutsourceWorktime); + } + } + else + { + //var r = WHS020OWAddChangeData(ItemUserOutsourceWorktimes); + try + { + for (int i = 0; i < _sData.Length; i++) + { + var _Value = _sData[i].ToString(); + if (i == 0) + _Value = null; + _ItemUserOutsourceWorktime = ItemUserOutsourceWorktimes.Where(p => p.ItemNo.Equals(sItemNo) && p.UserId.Equals(int.Parse(sUserId)) && p.OucId.Equals(int.Parse(iaColumnNameId[i].ToString()))) + .Select(q1 => new OutsourceWorktime + { + ItemNo = q1.ItemNo, + Value = _Value, + CreateDate = DateTime.Now, + UserId = q1.UserId, + OucId = q1.OucId, + OwId = q1.OwId + }).FirstOrDefault(); + _context.OutsourceWorktimes.Update(_ItemUserOutsourceWorktime); + //_context.Entry(_ItemUserOutsourceWorktime).State = EntityState.Modified; + } + } + catch (Exception ex) + { + var i = 1; + } + + + } + + //data.StandardID = helper.GetIDKey("OUTSOURCE_WORKTIMEID").Result; + var t = 1; + ResultModel result = new ResultModel(); + //_context.Entry(OutsourceWorktime).State = EntityState.Modified; + ////OutsourceWorktime.CreateDate = DateTime.Now; + + try + { + await _context.SaveChangesAsync(); + result.Success = true; + result.Msg = "OK"; + } + catch (Exception ex) + { + result.Success = false; + result.Msg = ex.InnerException.Message; + } + return result; + } + /// + /// WHS022OWAddChangeData + /// + /// 製程 + /// 料號 + /// 使用者ID + /// + [HttpPost("WHS022OWAddChangeData/{sUnitNo}/{sItemNo}/{sUserId}")] + public async Task> WHS022OWAddChangeData(string sUnitNo, string sItemNo, int sUserId) + { + Helper helper = new Helper(_context2); + IQueryable OutsourceWorktimeChanges = _context2.OutsourceWorktimeChanges; + OutsourceWorktimeChange _OutsourceWorktimeChange = new OutsourceWorktimeChange(); + + var dsOutsourceWorktimes = WHS022OutsourceWorktimeQuery(sUnitNo, sItemNo, sUserId).Result.ToList(); + var ldsOutsourceWorktimes = dsOutsourceWorktimes.Select(s => new + { + OwId = s.OW_ID, + ItemNo = s.ITEM_NO, + OucId = s.OUC_ID, + Value = s.VALUE, + UserId = s.USER_ID, + CreateDate = s.CREATE_DATE + }); + List list = new List(); + foreach (var s in ldsOutsourceWorktimes) + { + var _Data = int.Parse(s.OwId.ToString()); + list.Add(_Data); + } + int[] iaOwId = list.ToArray(); + OutsourceWorktimeChanges = OutsourceWorktimeChanges.Where(p => iaOwId.Contains(p.OwId)); + foreach (var OutsourceWorktimeChange in OutsourceWorktimeChanges) + { + _context2.Entry(OutsourceWorktimeChange).State = EntityState.Deleted; + } + foreach (var _OutsourceWorktime in ldsOutsourceWorktimes) + { + try + { + var _OwcId = helper.GetIDKey("OUTSWORKTIMECHANGEID").Result; + + _OutsourceWorktimeChange.OwcId = _OwcId; + _OutsourceWorktimeChange.ItemNo = _OutsourceWorktime.ItemNo; + _OutsourceWorktimeChange.LastValue = _OutsourceWorktime.Value; + _OutsourceWorktimeChange.LastDate = _OutsourceWorktime.CreateDate; + _OutsourceWorktimeChange.UserId = (int)_OutsourceWorktime.UserId; + _OutsourceWorktimeChange.OucId = (int)_OutsourceWorktime.OucId; + _OutsourceWorktimeChange.OwId = (int)_OutsourceWorktime.OwId; + _OutsourceWorktimeChange.CreateDate = DateTime.Now; + + _context2.OutsourceWorktimeChanges.Add(_OutsourceWorktimeChange); + } + catch (Exception ex) + { + var i = 1; + } + + } + + var t = 1; + ResultModel result = new ResultModel(); + + try + { + await _context2.SaveChangesAsync(); + result.Success = true; + result.Msg = "OK"; + } + catch (Exception ex) + { + result.Success = false; + result.Msg = ex.InnerException.Message; + } + return result; + } + + /// + /// WHS023 + /// + /// 製程 + /// 料號 + /// 使用者ID + /// + [HttpGet("WHS023OWByQuery/{sUnitNo}/{sItemNo}/{sUserId}")] + public async Task> GetOutsourceWorktimeByQuery(string sUnitNo, string sItemNo) + { + var querySql = @"SELECT DISTINCT 1 FACTORY_SEQ, '安勤' FACTORY_NAME_CH ,OUL.OUC_ID , OUL.SEQ, + (CASE WHEN OUL.COL_STATION_ID IS NOT NULL THEN TO_CHAR(OUL.COL_STATION_ID) ELSE OUL.COL_OTHER_NAME END) COLUMN_NAME, + (CASE OUL.SEQ WHEN 1 THEN '安勤' ELSE TO_CHAR(SW.TOTAL_CT) END) OUTSOURCE_VALUE + FROM (SELECT * FROM JHAMES.OUTSOURCE_UNIT_COL OUL WHERE OUL.UNIT_NO = :UNIT_NO)OUL + LEFT JOIN (SELECT * FROM JHAMES.STANDARD_WORKTIME WHERE ITEM_NO = :ITEM_NO) SW ON SW.STATION_ID = OUL.COL_STATION_ID + UNION + SELECT * FROM ( + SELECT 2 FACTORY_SEQ, + (SELECT FI.FACTORY_NAME_CH FROM JHSYS.USER_INFO UI + LEFT JOIN JHAMES.FACTORY_INFO FI ON UI.FACTORY_ID = FI.FACTORY_ID + WHERE UI.USER_ID = OW.USER_ID) FACTORY_NAME_CH, + OUL.OUC_ID , OUL.SEQ, + (CASE WHEN OUL.COL_STATION_ID IS NOT NULL THEN TO_CHAR(OUL.COL_STATION_ID) ELSE OUL.COL_OTHER_NAME + END) COLUMN_NAME, + (CASE OUL.SEQ WHEN 1 THEN (SELECT FI.FACTORY_NAME_CH FROM JHSYS.USER_INFO UI + LEFT JOIN JHAMES.FACTORY_INFO FI ON UI.FACTORY_ID = FI.FACTORY_ID + WHERE UI.USER_ID = OW.USER_ID) ELSE OW.VALUE END) + OUTSOURCE_VALUE + FROM (SELECT * FROM JHAMES.OUTSOURCE_UNIT_COL OUL WHERE OUL.UNIT_NO = :UNIT_NO)OUL + LEFT JOIN JHAMES.FACTORY_UNIT FU ON FU.UNIT_NO = OUL.UNIT_NO + LEFT JOIN (SELECT * FROM JHAMES.OUTSOURCE_WORKTIME WHERE ITEM_NO = :ITEM_NO ) OW ON OW.OUC_ID = OUL.OUC_ID + ) V1 WHERE V1.FACTORY_NAME_CH IS NOT NULL + ORDER BY FACTORY_SEQ,FACTORY_NAME_CH,SEQ"; + + DynamicParameters p = new DynamicParameters(); + p.Add("UNIT_NO", sUnitNo); + p.Add("ITEM_NO", sItemNo); + var result = await _context.Database.DapperQueryAsync(querySql, p); + return result; + } + } +} diff --git a/AMESCoreStudio.WebApi/Models/AMES/OutsourceWorktime.cs b/AMESCoreStudio.WebApi/Models/AMES/OutsourceWorktime.cs new file mode 100644 index 00000000..8e23a125 --- /dev/null +++ b/AMESCoreStudio.WebApi/Models/AMES/OutsourceWorktime.cs @@ -0,0 +1,60 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Runtime.Serialization; +using AMESCoreStudio.WebApi.Models.BAS; + +namespace AMESCoreStudio.WebApi.Models.AMES +{ + /// + /// 外包工時资料表 + /// + [Table("OUTSOURCE_WORKTIME", Schema = "JHAMES")] + public class OutsourceWorktime + { + /// + /// OUTSOURCE_WORKTIME ID + /// + [Key] + [Column("OW_ID")] + [DataMember] + [Display(Name = "OUTSOURCE_WORKTIME ID")] + public int OwId { get; set; } + /// + /// 料號 + /// + [Column("ITEM_NO")] + [DataMember] + [Display(Name = "料號")] + public string ItemNo { get; set; } + /// + /// OUTSOURCE_UNIT_COL.ID + /// + [Column("OUC_ID")] + [DataMember] + [Display(Name = "OUTSOURCE_UNIT_COL.ID")] + public int OucId { get; set; } + /// + /// 工時表資料 + /// + [Column("VALUE")] + [DataMember] + [Display(Name = "工時表資料")] + public string Value { get; set; } + /// + /// 建立者 + /// + [Column("USER_ID")] + [DataMember] + [Display(Name = "建立者")] + public int UserId { get; set; } + /// + /// 建立日期 + /// + [Column("CREATE_DATE")] + [DataMember] + [Display(Name = "建立日期")] + public DateTime CreateDate { get; set; } + + } +} \ No newline at end of file diff --git a/AMESCoreStudio.WebApi/Models/AMES/OutsourceWorktimeChange.cs b/AMESCoreStudio.WebApi/Models/AMES/OutsourceWorktimeChange.cs new file mode 100644 index 00000000..7229c401 --- /dev/null +++ b/AMESCoreStudio.WebApi/Models/AMES/OutsourceWorktimeChange.cs @@ -0,0 +1,74 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Runtime.Serialization; +using AMESCoreStudio.WebApi.Models.BAS; + +namespace AMESCoreStudio.WebApi.Models.AMES +{ + /// + /// 外包工時资料表 + /// + [Table("OUTSOURCE_WORKTIME_CHANGE", Schema = "JHAMES")] + public class OutsourceWorktimeChange + { + /// + /// OUTSOURCE_WORKTIME_CHANGE ID + /// + [Key] + [Column("OWC_ID")] + [DataMember] + [Display(Name = "OUTSOURCE_WORKTIME_CHANGE ID")] + public int OwcId { get; set; } + /// + /// OUTSOURCE_WORKTIME ID + /// + [Column("OW_ID")] + [DataMember] + [Display(Name = "OUTSOURCE_WORKTIME ID")] + public int OwId { get; set; } + /// + /// 料號 + /// + [Column("ITEM_NO")] + [DataMember] + [Display(Name = "料號")] + public string ItemNo { get; set; } + /// + /// OUTSOURCE_UNIT_COL.ID + /// + [Column("OUC_ID")] + [DataMember] + [Display(Name = "OUTSOURCE_UNIT_COL.ID")] + public int OucId { get; set; } + /// + /// 工時表資料 + /// + [Column("LAST_VALUE")] + [DataMember] + [Display(Name = "前次工時表資料")] + public string LastValue { get; set; } + /// + /// 建立者 + /// + [Column("USER_ID")] + [DataMember] + [Display(Name = "建立者")] + public int UserId { get; set; } + /// + /// 前次建立日期 + /// + [Column("LAST_DATE")] + [DataMember] + [Display(Name = "前次建立日期")] + public DateTime LastDate { get; set; } + /// + /// 建立日期 + /// + [Column("CREATE_DATE")] + [DataMember] + [Display(Name = "建立日期")] + public DateTime CreateDate { get; set; } + + } +} \ No newline at end of file diff --git a/AMESCoreStudio.WebApi/Models/AMESContext.cs b/AMESCoreStudio.WebApi/Models/AMESContext.cs index 7807edb2..e10005d9 100644 --- a/AMESCoreStudio.WebApi/Models/AMESContext.cs +++ b/AMESCoreStudio.WebApi/Models/AMESContext.cs @@ -1005,6 +1005,14 @@ namespace AMESCoreStudio.WebApi /// 維修不良序號 /// public DbSet NgKeyparts { get; set; } + /// + ///外包工時資料 + /// + public DbSet OutsourceWorktimes { get; set; } + /// + ///外包工時資料 + /// + public DbSet OutsourceWorktimeChanges { get; set; } } }