From e5a6132abf5dacb4f5ffcad6bfcc2531cef3bc2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=BE=E8=8D=A3=E5=9B=BD?= Date: Fri, 14 Jan 2022 16:26:07 +0800 Subject: [PATCH] [fix] V1ScpDbContext --- .../appsettings.json | 2 +- .../Logs/logs.txt | 122 +++++++++++ .../Win_in.Sfs.Scp.WebApi.Xml.Host/Startup.cs | 45 ---- .../SwaggerFixArraysInXmlFilter.cs | 47 ++++ .../DbContext/V1ScpDbContext.cs | 8 +- .../V1ScpDbContextModelCreatingExtensions.cs | 202 +----------------- .../V1ScpEntityFrameworkCoreModule.cs | 8 - .../PartEventHandler.cs | 37 +++- .../V1ScpEventModule.cs | 7 +- .../WebApiApplicationAutoMapperProfile.cs | 81 +++++++ 10 files changed, 291 insertions(+), 268 deletions(-) create mode 100644 WebApiService/src/Win_in.Sfs.Scp.WebApi.Xml.Host/SwaggerFixArraysInXmlFilter.cs create mode 100644 WebApiService/src/Win_in.Sfs.Scp.v1.Event/WebApiApplicationAutoMapperProfile.cs diff --git a/WebApiService/src/Win_in.Sfs.Scp.WebApi.HttpApi.Host/appsettings.json b/WebApiService/src/Win_in.Sfs.Scp.WebApi.HttpApi.Host/appsettings.json index 3cc457f..7656c3a 100644 --- a/WebApiService/src/Win_in.Sfs.Scp.WebApi.HttpApi.Host/appsettings.json +++ b/WebApiService/src/Win_in.Sfs.Scp.WebApi.HttpApi.Host/appsettings.json @@ -6,7 +6,7 @@ }, "ConnectionStrings": { "Default": "Server=127.0.0.1;Database=Scp_WebApi;User ID=sa;Password=Microsoft2008;connection timeout=600;", - "WebApi": "Server=127.0.0.1;Database=Scp_WebApi;User ID=sa;Password=Microsoft2008;connection timeout=600;" + "V1Scp": "Server=127.0.0.1;Database=Scp_V1;User ID=sa;Password=Microsoft2008;connection timeout=600;" }, "AuthServer": { "Authority": "https://localhost:9988", diff --git a/WebApiService/src/Win_in.Sfs.Scp.WebApi.Xml.Host/Logs/logs.txt b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Xml.Host/Logs/logs.txt index de90376..ba0c7ae 100644 --- a/WebApiService/src/Win_in.Sfs.Scp.WebApi.Xml.Host/Logs/logs.txt +++ b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Xml.Host/Logs/logs.txt @@ -5593,3 +5593,125 @@ System.Net.Http.HttpRequestException: Response status code does not indicate suc 2022-01-13 09:18:16.269 +08:00 [INF] Executed action Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.PartController.CreateAsync (Win_in.Sfs.Scp.WebApi.Xml.Host) in 16097.5245ms 2022-01-13 09:18:16.269 +08:00 [INF] Executed endpoint 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.PartController.CreateAsync (Win_in.Sfs.Scp.WebApi.Xml.Host)' 2022-01-13 09:18:16.271 +08:00 [INF] Request finished HTTP/2 POST https://localhost:9977/api/scp/part application/xml 543 - 200 1034 application/xml;+charset=utf-8 16164.5237ms +2022-01-13 17:16:32.805 +08:00 [INF] Starting Win_in.Sfs.Scp.WebApi.Xml.Host. +2022-01-13 17:16:33.922 +08:00 [INF] User profile is available. Using 'C:\Users\changketec\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest. +2022-01-13 17:16:34.506 +08:00 [INF] Now listening on: https://localhost:9977 +2022-01-13 17:16:34.507 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2022-01-13 17:16:34.507 +08:00 [INF] Hosting environment: Development +2022-01-13 17:16:34.507 +08:00 [INF] Content root path: D:\Work\SFS\Backend\Scp\WebApiService\src\Win_in.Sfs.Scp.WebApi.Xml.Host +2022-01-13 17:16:36.854 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/swagger/index.html - - +2022-01-13 17:16:37.409 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/swagger/index.html - - - 200 - text/html;charset=utf-8 558.1198ms +2022-01-13 17:16:37.424 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/_framework/aspnetcore-browser-refresh.js - - +2022-01-13 17:16:37.427 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/_framework/aspnetcore-browser-refresh.js - - - 200 11964 application/javascript;+charset=utf-8 2.5674ms +2022-01-13 17:16:38.290 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/swagger/v1/swagger.json - - +2022-01-13 17:18:10.620 +08:00 [INF] Starting Win_in.Sfs.Scp.WebApi.Xml.Host. +2022-01-13 17:18:11.543 +08:00 [INF] User profile is available. Using 'C:\Users\changketec\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest. +2022-01-13 17:18:12.344 +08:00 [INF] Now listening on: https://localhost:9977 +2022-01-13 17:18:12.344 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2022-01-13 17:18:12.344 +08:00 [INF] Hosting environment: Development +2022-01-13 17:18:12.344 +08:00 [INF] Content root path: D:\Work\SFS\Backend\Scp\WebApiService\src\Win_in.Sfs.Scp.WebApi.Xml.Host +2022-01-13 17:18:14.043 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/swagger/index.html - - +2022-01-13 17:18:14.764 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/_framework/aspnetcore-browser-refresh.js - - +2022-01-13 17:18:14.772 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/_framework/aspnetcore-browser-refresh.js - - - 200 11964 application/javascript;+charset=utf-8 6.5364ms +2022-01-13 17:18:14.785 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/swagger/index.html - - - 200 - text/html;charset=utf-8 739.3333ms +2022-01-13 17:18:16.283 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/swagger/v1/swagger.json - - +2022-01-14 16:20:12.601 +08:00 [INF] Starting Win_in.Sfs.Scp.WebApi.Xml.Host. +2022-01-14 16:20:15.613 +08:00 [INF] User profile is available. Using 'C:\Users\changketec\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest. +2022-01-14 16:20:15.807 +08:00 [INF] Creating key {aa504a78-83ce-4280-86ce-6a4bea3824e3} with creation date 2022-01-14 08:20:15Z, activation date 2022-01-16 04:14:18Z, and expiration date 2022-04-14 08:20:15Z. +2022-01-14 16:20:15.843 +08:00 [INF] Writing data to file 'C:\Users\changketec\AppData\Local\ASP.NET\DataProtection-Keys\key-aa504a78-83ce-4280-86ce-6a4bea3824e3.xml'. +2022-01-14 16:20:16.885 +08:00 [INF] Now listening on: https://localhost:9977 +2022-01-14 16:20:16.885 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2022-01-14 16:20:16.885 +08:00 [INF] Hosting environment: Development +2022-01-14 16:20:16.885 +08:00 [INF] Content root path: D:\Work\SFS\Backend\Scp\WebApiService\src\Win_in.Sfs.Scp.WebApi.Xml.Host +2022-01-14 16:20:21.067 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/swagger - - +2022-01-14 16:20:21.645 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/swagger - - - 301 0 - 581.0510ms +2022-01-14 16:20:21.793 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/swagger/index.html - - +2022-01-14 16:20:22.243 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/swagger/index.html - - - 200 - text/html;charset=utf-8 449.9605ms +2022-01-14 16:20:22.259 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/swagger/swagger-ui-standalone-preset.js - - +2022-01-14 16:20:22.259 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/_framework/aspnetcore-browser-refresh.js - - +2022-01-14 16:20:22.260 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/swagger/swagger-ui-bundle.js - - +2022-01-14 16:20:22.261 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/_framework/aspnetcore-browser-refresh.js - - - 200 11963 application/javascript;+charset=utf-8 2.1807ms +2022-01-14 16:20:22.262 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/swagger/swagger-ui.css - - +2022-01-14 16:20:22.302 +08:00 [INF] Sending file. Request path: '/swagger-ui-standalone-preset.js'. Physical path: 'N/A' +2022-01-14 16:20:22.307 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/swagger/swagger-ui-standalone-preset.js - - - 200 336841 application/javascript 47.3695ms +2022-01-14 16:20:22.309 +08:00 [INF] Sending file. Request path: '/swagger-ui.css'. Physical path: 'N/A' +2022-01-14 16:20:22.309 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/swagger/swagger-ui.css - - - 200 143410 text/css 47.2542ms +2022-01-14 16:20:22.328 +08:00 [INF] Sending file. Request path: '/swagger-ui-bundle.js'. Physical path: 'N/A' +2022-01-14 16:20:22.329 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/swagger/swagger-ui-bundle.js - - - 200 1097461 application/javascript 68.9070ms +2022-01-14 16:20:22.819 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/swagger/v1/swagger.json - - +2022-01-14 16:20:22.906 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/swagger/favicon-32x32.png - - +2022-01-14 16:20:22.907 +08:00 [INF] Sending file. Request path: '/favicon-32x32.png'. Physical path: 'N/A' +2022-01-14 16:20:22.907 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/swagger/favicon-32x32.png - - - 200 628 image/png 1.2248ms +2022-01-14 16:20:24.506 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/swagger/v1/swagger.json - - - 200 - application/json;charset=utf-8 1687.1007ms +2022-01-14 16:21:38.133 +08:00 [INF] Starting Win_in.Sfs.Scp.WebApi.Xml.Host. +2022-01-14 16:21:39.121 +08:00 [INF] User profile is available. Using 'C:\Users\changketec\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest. +2022-01-14 16:21:39.879 +08:00 [INF] Now listening on: https://localhost:9977 +2022-01-14 16:21:39.880 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2022-01-14 16:21:39.880 +08:00 [INF] Hosting environment: Development +2022-01-14 16:21:39.880 +08:00 [INF] Content root path: D:\Work\SFS\Backend\Scp\WebApiService\src\Win_in.Sfs.Scp.WebApi.Xml.Host +2022-01-14 16:21:43.539 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/swagger/index.html - - +2022-01-14 16:21:43.962 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/swagger/index.html - - - 200 - text/html;charset=utf-8 428.1001ms +2022-01-14 16:21:43.963 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/_framework/aspnetcore-browser-refresh.js - - +2022-01-14 16:21:43.975 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/_framework/aspnetcore-browser-refresh.js - - - 200 11963 application/javascript;+charset=utf-8 12.2802ms +2022-01-14 16:21:44.232 +08:00 [INF] Request starting HTTP/2 GET https://localhost:9977/swagger/v1/swagger.json - - +2022-01-14 16:21:44.686 +08:00 [INF] Request finished HTTP/2 GET https://localhost:9977/swagger/v1/swagger.json - - - 200 - application/json;charset=utf-8 454.5244ms +2022-01-14 16:23:40.316 +08:00 [INF] Request starting HTTP/2 POST https://localhost:9977/test/body?name=a application/xml 117 +2022-01-14 16:23:40.353 +08:00 [INF] BasicAuthentication was not authenticated. Failure message: Missing Authorization Header +2022-01-14 16:23:40.354 +08:00 [INF] Executing endpoint 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host)' +2022-01-14 16:23:40.378 +08:00 [INF] Route matched with {action = "BodyParamTest", controller = "Test"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult`1[Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book]] BodyParamTestAsync(System.String, System.String, Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book) on controller Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController (Win_in.Sfs.Scp.WebApi.Xml.Host). +2022-01-14 16:23:40.463 +08:00 [INF] Executing action method Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host) - Validation state: "Valid" +2022-01-14 16:23:40.467 +08:00 [INF] Executed action method Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host), returned result Microsoft.AspNetCore.Mvc.ObjectResult in 0.8298ms. +2022-01-14 16:23:40.470 +08:00 [INF] Executing ObjectResult, writing value of type 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book'. +2022-01-14 16:23:40.479 +08:00 [INF] Executed action Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host) in 98.1129ms +2022-01-14 16:23:40.479 +08:00 [INF] Executed endpoint 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host)' +2022-01-14 16:23:40.480 +08:00 [INF] Request finished HTTP/2 POST https://localhost:9977/test/body?name=a application/xml 117 - 200 - application/json;+charset=utf-8 164.0594ms +2022-01-14 16:23:55.410 +08:00 [INF] Request starting HTTP/2 POST https://localhost:9977/test/body?name=a application/xml 117 +2022-01-14 16:23:55.416 +08:00 [INF] BasicAuthentication was not authenticated. Failure message: Missing Authorization Header +2022-01-14 16:23:55.421 +08:00 [INF] Executing endpoint 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host)' +2022-01-14 16:23:55.421 +08:00 [INF] Route matched with {action = "BodyParamTest", controller = "Test"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult`1[Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book]] BodyParamTestAsync(System.String, System.String, Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book) on controller Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController (Win_in.Sfs.Scp.WebApi.Xml.Host). +2022-01-14 16:23:55.436 +08:00 [INF] Executing action method Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host) - Validation state: "Valid" +2022-01-14 16:24:04.075 +08:00 [INF] Executed action method Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host), returned result Microsoft.AspNetCore.Mvc.ObjectResult in 8638.9228ms. +2022-01-14 16:24:04.075 +08:00 [INF] Executing ObjectResult, writing value of type 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book'. +2022-01-14 16:24:04.076 +08:00 [INF] Executed action Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host) in 8654.5938ms +2022-01-14 16:24:04.076 +08:00 [INF] Executed endpoint 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host)' +2022-01-14 16:24:04.076 +08:00 [INF] Request finished HTTP/2 POST https://localhost:9977/test/body?name=a application/xml 117 - 200 - application/json;+charset=utf-8 8665.6463ms +2022-01-14 16:24:08.679 +08:00 [INF] Request starting HTTP/2 POST https://localhost:9977/test/body?name=a&author=ss application/xml 117 +2022-01-14 16:24:08.681 +08:00 [INF] BasicAuthentication was not authenticated. Failure message: Missing Authorization Header +2022-01-14 16:24:08.682 +08:00 [INF] Executing endpoint 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host)' +2022-01-14 16:24:08.682 +08:00 [INF] Route matched with {action = "BodyParamTest", controller = "Test"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult`1[Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book]] BodyParamTestAsync(System.String, System.String, Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book) on controller Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController (Win_in.Sfs.Scp.WebApi.Xml.Host). +2022-01-14 16:24:08.700 +08:00 [INF] Executing action method Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host) - Validation state: "Valid" +2022-01-14 16:24:21.953 +08:00 [INF] Executed action method Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host), returned result Microsoft.AspNetCore.Mvc.ObjectResult in 13253.1597ms. +2022-01-14 16:24:21.953 +08:00 [INF] Executing ObjectResult, writing value of type 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book'. +2022-01-14 16:24:21.954 +08:00 [INF] Executed action Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host) in 13271.9532ms +2022-01-14 16:24:21.954 +08:00 [INF] Executed endpoint 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host)' +2022-01-14 16:24:21.954 +08:00 [INF] Request finished HTTP/2 POST https://localhost:9977/test/body?name=a&author=ss application/xml 117 - 200 - application/json;+charset=utf-8 13274.8196ms +2022-01-14 16:24:28.885 +08:00 [INF] Request starting HTTP/2 POST https://localhost:9977/test/body?name=a&author=ss application/xml 118 +2022-01-14 16:24:28.886 +08:00 [INF] BasicAuthentication was not authenticated. Failure message: Missing Authorization Header +2022-01-14 16:24:28.886 +08:00 [INF] Executing endpoint 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host)' +2022-01-14 16:24:28.887 +08:00 [INF] Route matched with {action = "BodyParamTest", controller = "Test"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult`1[Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book]] BodyParamTestAsync(System.String, System.String, Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book) on controller Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController (Win_in.Sfs.Scp.WebApi.Xml.Host). +2022-01-14 16:24:28.903 +08:00 [INF] Executing action method Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host) - Validation state: "Valid" +2022-01-14 16:24:44.252 +08:00 [INF] Executed action method Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host), returned result Microsoft.AspNetCore.Mvc.ObjectResult in 15345.0094ms. +2022-01-14 16:24:44.258 +08:00 [INF] Executing ObjectResult, writing value of type 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book'. +2022-01-14 16:24:44.258 +08:00 [INF] Executed action Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host) in 15371.5744ms +2022-01-14 16:24:44.259 +08:00 [INF] Executed endpoint 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host)' +2022-01-14 16:24:44.259 +08:00 [INF] Request finished HTTP/2 POST https://localhost:9977/test/body?name=a&author=ss application/xml 118 - 200 - application/json;+charset=utf-8 15386.2385ms +2022-01-14 16:24:54.010 +08:00 [INF] Request starting HTTP/2 POST https://localhost:9977/test/body?name=a&author=ss application/xml 110 +2022-01-14 16:24:54.010 +08:00 [INF] BasicAuthentication was not authenticated. Failure message: Missing Authorization Header +2022-01-14 16:24:54.010 +08:00 [INF] Executing endpoint 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host)' +2022-01-14 16:24:54.010 +08:00 [INF] Route matched with {action = "BodyParamTest", controller = "Test"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult`1[Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book]] BodyParamTestAsync(System.String, System.String, Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book) on controller Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController (Win_in.Sfs.Scp.WebApi.Xml.Host). +2022-01-14 16:24:54.024 +08:00 [INF] Executing action method Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host) - Validation state: "Valid" +2022-01-14 16:24:56.996 +08:00 [INF] Executed action method Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host), returned result Microsoft.AspNetCore.Mvc.ObjectResult in 2971.5882ms. +2022-01-14 16:24:56.996 +08:00 [INF] Executing ObjectResult, writing value of type 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book'. +2022-01-14 16:24:56.997 +08:00 [INF] Executed action Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host) in 2986.3222ms +2022-01-14 16:24:56.997 +08:00 [INF] Executed endpoint 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host)' +2022-01-14 16:24:56.997 +08:00 [INF] Request finished HTTP/2 POST https://localhost:9977/test/body?name=a&author=ss application/xml 110 - 200 - application/json;+charset=utf-8 2986.9762ms +2022-01-14 16:25:10.277 +08:00 [INF] Request starting HTTP/2 POST https://localhost:9977/test/body?name=a&author=ss application/xml 110 +2022-01-14 16:25:10.277 +08:00 [INF] BasicAuthentication was not authenticated. Failure message: Missing Authorization Header +2022-01-14 16:25:10.277 +08:00 [INF] Executing endpoint 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host)' +2022-01-14 16:25:10.277 +08:00 [INF] Route matched with {action = "BodyParamTest", controller = "Test"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult`1[Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book]] BodyParamTestAsync(System.String, System.String, Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book) on controller Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController (Win_in.Sfs.Scp.WebApi.Xml.Host). +2022-01-14 16:25:10.292 +08:00 [INF] Executing action method Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host) - Validation state: "Valid" +2022-01-14 16:25:16.423 +08:00 [INF] Executed action method Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host), returned result Microsoft.AspNetCore.Mvc.ObjectResult in 6130.732ms. +2022-01-14 16:25:16.423 +08:00 [INF] Executing ObjectResult, writing value of type 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.Book'. +2022-01-14 16:25:16.424 +08:00 [INF] Executed action Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host) in 6146.2529ms +2022-01-14 16:25:16.424 +08:00 [INF] Executed endpoint 'Win_in.Sfs.Scp.WebApi.XmlHost.Controllers.TestController.BodyParamTestAsync (Win_in.Sfs.Scp.WebApi.Xml.Host)' +2022-01-14 16:25:16.424 +08:00 [INF] Request finished HTTP/2 POST https://localhost:9977/test/body?name=a&author=ss application/xml 110 - 200 - application/json;+charset=utf-8 6147.1488ms diff --git a/WebApiService/src/Win_in.Sfs.Scp.WebApi.Xml.Host/Startup.cs b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Xml.Host/Startup.cs index 4828145..74129e2 100644 --- a/WebApiService/src/Win_in.Sfs.Scp.WebApi.Xml.Host/Startup.cs +++ b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Xml.Host/Startup.cs @@ -9,7 +9,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.OpenApi.Models; -using Swashbuckle.AspNetCore.SwaggerGen; namespace Win_in.Sfs.Scp.WebApi.XmlHost { @@ -79,48 +78,4 @@ namespace Win_in.Sfs.Scp.WebApi.XmlHost } -} -internal class SwaggerFixArraysInXmlFilter : ISchemaFilter -{ - public void Apply(OpenApiSchema schema, SchemaFilterContext context) - { - var type = context.Type; - - // Fix issues with xml array examples not generating correctly - if (type.IsValueType) - { - return; - } - - if (type.Name == "String") - { - return; - } - - schema.Xml = new OpenApiXml { Name = type.Name }; - if (schema.Properties == null) - { - return; - } - - foreach (var property in schema.Properties) - { - //Array property, which wraps its elements - if (property.Value.Type != "array") - { - continue; - } - - property.Value.Xml = new OpenApiXml - { - Name = $"{property.Key}", - Wrapped = true - }; - property.Value.Items.Xml = new OpenApiXml - { - Name = $"{property.Value.Items.Type}", - Wrapped = true - }; - } - } } \ No newline at end of file diff --git a/WebApiService/src/Win_in.Sfs.Scp.WebApi.Xml.Host/SwaggerFixArraysInXmlFilter.cs b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Xml.Host/SwaggerFixArraysInXmlFilter.cs new file mode 100644 index 0000000..aae920c --- /dev/null +++ b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Xml.Host/SwaggerFixArraysInXmlFilter.cs @@ -0,0 +1,47 @@ +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; + +internal class SwaggerFixArraysInXmlFilter : ISchemaFilter +{ + public void Apply(OpenApiSchema schema, SchemaFilterContext context) + { + var type = context.Type; + + // Fix issues with xml array examples not generating correctly + if (type.IsValueType) + { + return; + } + + if (type.Name == "String") + { + return; + } + + schema.Xml = new OpenApiXml { Name = type.Name }; + if (schema.Properties == null) + { + return; + } + + foreach (var property in schema.Properties) + { + //Array property, which wraps its elements + if (property.Value.Type != "array") + { + continue; + } + + property.Value.Xml = new OpenApiXml + { + Name = $"{property.Key}", + Wrapped = true + }; + property.Value.Items.Xml = new OpenApiXml + { + Name = $"{property.Value.Items.Type}", + Wrapped = true + }; + } + } +} \ No newline at end of file diff --git a/WebApiService/src/Win_in.Sfs.Scp.v1.EntityFrameworkCore/DbContext/V1ScpDbContext.cs b/WebApiService/src/Win_in.Sfs.Scp.v1.EntityFrameworkCore/DbContext/V1ScpDbContext.cs index 1bc3a0a..03f63d1 100644 --- a/WebApiService/src/Win_in.Sfs.Scp.v1.EntityFrameworkCore/DbContext/V1ScpDbContext.cs +++ b/WebApiService/src/Win_in.Sfs.Scp.v1.EntityFrameworkCore/DbContext/V1ScpDbContext.cs @@ -1,12 +1,12 @@ using Microsoft.EntityFrameworkCore; +using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Win_in.Sfs.Scp.v1.Domain; namespace Win_in.Sfs.Scp.v1.EntityFrameworkCore { - public class V1ScpDbContext : - AbpDbContext, - IV1ScpDbContext + [ConnectionStringName("V1Scp")] + public class V1ScpDbContext : AbpDbContext, IV1ScpDbContext { /* Add DbSet properties for your Aggregate Roots / Entities here. */ @@ -40,7 +40,7 @@ namespace Win_in.Sfs.Scp.v1.EntityFrameworkCore // //... //}); - builder.ConfigureWebApi(); + builder.ConfigureV1Scp(); } } diff --git a/WebApiService/src/Win_in.Sfs.Scp.v1.EntityFrameworkCore/DbContext/V1ScpDbContextModelCreatingExtensions.cs b/WebApiService/src/Win_in.Sfs.Scp.v1.EntityFrameworkCore/DbContext/V1ScpDbContextModelCreatingExtensions.cs index 028dd62..38fb988 100644 --- a/WebApiService/src/Win_in.Sfs.Scp.v1.EntityFrameworkCore/DbContext/V1ScpDbContextModelCreatingExtensions.cs +++ b/WebApiService/src/Win_in.Sfs.Scp.v1.EntityFrameworkCore/DbContext/V1ScpDbContextModelCreatingExtensions.cs @@ -9,7 +9,7 @@ namespace Win_in.Sfs.Scp.v1.EntityFrameworkCore public static class V1ScpDbContextModelCreatingExtensions { public const string IsDeletedFilter = "IsDeleted=0"; - public static void ConfigureWebApi( + public static void ConfigureV1Scp( this ModelBuilder builder, Action optionsAction = null) { @@ -22,208 +22,10 @@ namespace Win_in.Sfs.Scp.v1.EntityFrameworkCore optionsAction?.Invoke(options); - /* - builder.ConfigurePart(options); - builder.ConfigSuppliers(options); - builder.ConfigReceipt(options); - builder.ConfigPurchaseOrder(options); - builder.ConfigPurchaseOrderDetail(options); - builder.ConfigUnplannedReceipt(options); - */ + } - /* - /// - /// 零件表 - /// - /// - /// - private static void ConfigurePart(this ModelBuilder builder, V1ScpModelBuilderConfigurationOptions options) - { - - builder.Entity(b => - { - - b.ToTable($"{options.TablePrefix}_Part", options.Schema); - - b.ConfigureByConvention(); - b.Property(x => x.Code).IsRequired().HasMaxLength(64); - b.Property(x => x.Name).IsRequired().HasMaxLength(64); - b.Property(x => x.Desc1).HasMaxLength(1024); - b.Property(x => x.Desc2).HasMaxLength(1024); - b.Property(x => x.Status).IsRequired().HasMaxLength(64); - b.Property(x => x.IsBuyPart).IsRequired(); - b.Property(x => x.IsMakePart).IsRequired(); - b.Property(x => x.Uom).IsRequired().HasMaxLength(64); - b.Property(x => x.AbcClass).IsRequired().HasMaxLength(64); - b.Property(x => x.ProductLine).HasMaxLength(64); - b.Property(x => x.Type).HasMaxLength(64); - b.Property(x => x.Catalog).HasMaxLength(64); - b.Property(x => x.Group).HasMaxLength(64); - b.Property(x => x.Version).HasMaxLength(64); - b.Property(x => x.Site).IsRequired().HasMaxLength(64); - b.Property(x => x.Company).IsRequired().HasMaxLength(64); - //b.Property(x => x.Color).HasMaxLength(64); - //b.Property(x => x.Configuration).HasMaxLength(64); - //b.Property(x => x.Project).HasMaxLength(64); - //b.Property(x => x.Eco).HasMaxLength(64); - //b.Property(x => x.StdPackUom).IsRequired().HasMaxLength(64); - //b.Property(x => x.StdPackQty).IsRequired(); - //b.Property(x => x.ExtPackUom).HasMaxLength(64); - //b.Property(x => x.ExtPackQty); - }); - } - - - /// - /// 供应商 - /// - private static void ConfigSuppliers(this ModelBuilder builder, V1ScpModelBuilderConfigurationOptions options) - { - builder.Entity(b => - { - //Configure table & schema name - b.ToTable(options.TablePrefix + "_Suppliers", options.Schema); - - b.ConfigureByConvention(); - - b.Property(q => q.Code).IsRequired().HasMaxLength(64); - b.Property(q => q.Name).IsRequired().HasMaxLength(64); - b.Property(q => q.Desc).HasMaxLength(1024); - b.Property(q => q.Rank).HasMaxLength(64); - b.Property(q => q.Address).HasMaxLength(1024); - b.Property(q => q.Country).HasMaxLength(64); - b.Property(q => q.City).HasMaxLength(64); - b.Property(q => q.Phone).HasMaxLength(64); - b.Property(q => q.Fax).HasMaxLength(64); - b.Property(q => q.PostId).HasMaxLength(64); - b.Property(q => q.ContactName).HasMaxLength(64); - b.Property(q => q.Currency).HasMaxLength(64); - b.Property(q => q.IsActive).IsRequired(); - b.Property(q => q.Company).HasMaxLength(64); - b.Property(q => q.Remark).HasMaxLength(4096); - b.Property(x => x.Bank).HasMaxLength(64); - }); - } - /// - /// 收货单与退货单明细 - /// - private static void ConfigReceipt(this ModelBuilder builder, V1ScpModelBuilderConfigurationOptions options) - { - builder.Entity(b => - { - //Configure table & schema name - b.ToTable(options.TablePrefix + "_Receipt", options.Schema); - - b.ConfigureByConvention(); - - b.Property(q => q.RcNumber).IsRequired().HasMaxLength(64); - b.Property(q => q.AsnNumber).IsRequired().HasMaxLength(64); - b.Property(q => q.PoNumber).HasMaxLength(64); - b.Property(q => q.SupplierCode).IsRequired().HasMaxLength(64); - b.Property(q => q.RcType).IsRequired().HasMaxLength(64); - b.Property(q => q.Warehouse).HasMaxLength(64); - b.Property(q => q.Dock).HasMaxLength(64); - b.Property(q => q.ReceiveDate).IsRequired(); - b.Property(q => q.ReceiveTime); - b.Property(q => q.PoLine).HasMaxLength(64); - b.Property(q => q.PartCode).IsRequired().HasMaxLength(64); - b.Property(q => q.Lot).IsRequired().HasMaxLength(64); - b.Property(q => q.SupplierLot).IsRequired(); - b.Property(q => q.Uom).IsRequired().HasMaxLength(64); - b.Property(q => q.ReceiveQty).IsRequired(); - b.Property(q => q.SupplierPackConvertRate).IsRequired(); - b.Property(q => q.Remark).HasMaxLength(4096); - b.Property(q => q.Site).IsRequired().HasMaxLength(64); - b.Property(q => q.Company).IsRequired().HasMaxLength(64); - }); - } - - /// - /// 采购订单主表 - /// - private static void ConfigPurchaseOrder(this ModelBuilder builder, V1ScpModelBuilderConfigurationOptions options) - { - builder.Entity(b => - { - //Configure table & schema name - b.ToTable(options.TablePrefix + "_PO", options.Schema); - - b.ConfigureByConvention(); - - b.Property(q => q.PoNumber).HasMaxLength(64); - b.Property(q => q.SupplierCode).IsRequired().HasMaxLength(64); - b.Property(q => q.PoType).IsRequired().HasMaxLength(64); - b.Property(q => q.Status).IsRequired(); - b.Property(q => q.IsConsignment).IsRequired(); - b.Property(q => q.OrderDate).IsRequired(); - b.Property(q => q.DueDate).IsRequired(); - b.Property(q => q.Version).IsRequired().HasMaxLength(64); - b.Property(q => q.TaxRate).IsRequired(); - b.Property(q => q.Site).IsRequired().HasMaxLength(64); - b.Property(q => q.Company).IsRequired().HasMaxLength(64); - b.Property(q => q.ContactName).HasMaxLength(64); - b.Property(q => q.ContactPhone).HasMaxLength(64); - b.Property(q => q.Remark).HasMaxLength(4096); - - b.HasMany(u => u.Details).WithOne().HasForeignKey(rd => rd.Id).OnDelete(DeleteBehavior.NoAction).IsRequired(); - - }); - } - - /// - /// 采购订单明细表 - /// - private static void ConfigPurchaseOrderDetail(this ModelBuilder builder, V1ScpModelBuilderConfigurationOptions options) - { - builder.Entity(b => - { - //Configure table & schema name - b.ToTable(options.TablePrefix + "_PODetail", options.Schema); - - b.ConfigureByConvention(); - - b.Property(q => q.PoNumber).IsRequired().HasMaxLength(64); - b.Property(q => q.PoLine).IsRequired().HasMaxLength(64); - b.Property(q => q.PartCode).IsRequired().HasMaxLength(64); - b.Property(q => q.Uom).IsRequired().HasMaxLength(64); - b.Property(q => q.OrderQty).IsRequired(); - b.Property(q => q.StdPackQty).IsRequired(); - b.Property(q => q.SupplierPackConvertRate); - b.Property(q => q.IsConsignment).IsRequired(); - b.Property(q => q.LineStatus).IsRequired(); - b.Property(q => q.Remark).HasMaxLength(4096); - }); - } - - - private static void ConfigUnplannedReceipt(this ModelBuilder builder, - V1ScpModelBuilderConfigurationOptions options) - { - builder.Entity(b => - { - //Configure table & schema name - b.ToTable(options.TablePrefix + "_UnplannedReceipt", options.Schema); - - b.ConfigureByConvention(); - - b.Property(q => q.TrNbr).IsRequired(); - b.Property(q => q.TrType).IsRequired().HasMaxLength(8); - b.Property(q => q.Order).HasMaxLength(64); - b.Property(q => q.Location).IsRequired().HasMaxLength(8); - b.Property(q => q.EffectiveDate).IsRequired(); - b.Property(q => q.SystemDate).IsRequired(); - b.Property(q => q.PartCode).IsRequired().HasMaxLength(18); - b.Property(q => q.Lot).IsRequired().HasMaxLength(64); - b.Property(q => q.Uom).IsRequired().HasMaxLength(8); - b.Property(q => q.Qty).IsRequired(); - b.Property(q => q.SoJob).HasMaxLength(20); - b.Property(q => q.Remark).HasMaxLength(4096); - b.Property(q => q.Site).IsRequired().HasMaxLength(8); - b.Property(q => q.Company).IsRequired().HasMaxLength(8); - }); - */ } diff --git a/WebApiService/src/Win_in.Sfs.Scp.v1.EntityFrameworkCore/V1ScpEntityFrameworkCoreModule.cs b/WebApiService/src/Win_in.Sfs.Scp.v1.EntityFrameworkCore/V1ScpEntityFrameworkCoreModule.cs index 85e6502..1e66bcf 100644 --- a/WebApiService/src/Win_in.Sfs.Scp.v1.EntityFrameworkCore/V1ScpEntityFrameworkCoreModule.cs +++ b/WebApiService/src/Win_in.Sfs.Scp.v1.EntityFrameworkCore/V1ScpEntityFrameworkCoreModule.cs @@ -39,14 +39,6 @@ namespace Win_in.Sfs.Scp.v1.EntityFrameworkCore }); - /* - context.Services.AddAbpDbContext(options => - { - options.AddDefaultRepositories(includeAllEntities: true); - }); - */ - - Configure(options => { diff --git a/WebApiService/src/Win_in.Sfs.Scp.v1.Event/PartEventHandler.cs b/WebApiService/src/Win_in.Sfs.Scp.v1.Event/PartEventHandler.cs index 24897fd..7cbf3fd 100644 --- a/WebApiService/src/Win_in.Sfs.Scp.v1.Event/PartEventHandler.cs +++ b/WebApiService/src/Win_in.Sfs.Scp.v1.Event/PartEventHandler.cs @@ -2,11 +2,10 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Entities.Events; -using Volo.Abp.Domain.Entities.Events.Distributed; using Volo.Abp.EventBus; -using Volo.Abp.EventBus.Distributed; using Win_in.Sfs.Scp.v1.Domain; using Win_in.Sfs.Scp.WebApi; +using Volo.Abp.ObjectMapping; namespace Win_in.Sfs.Scp.v1.Event { @@ -15,20 +14,40 @@ namespace Win_in.Sfs.Scp.v1.Event ITransientDependency { private readonly ITaPartRepository _taPartRepository; + private readonly IObjectMapper _objectMapper; - public PartEventHandler(ITaPartRepository taPartRepository) + public PartEventHandler(ITaPartRepository taPartRepository, + IObjectMapper objectMapper) { _taPartRepository = taPartRepository; + _objectMapper = objectMapper; } - public Task HandleEventAsync(EntityCreatedEventData eventData) + public async Task HandleEventAsync(EntityCreatedEventData eventData) { - Console.WriteLine("Local Event:" + eventData.Entity.Id); - return Task.CompletedTask; + var part = eventData.Entity; + Console.WriteLine("Local Event:" + part.Code); + + //根据传入数据新增或修改TA_PART + + var taPart = _objectMapper.Map(part); + var current = await _taPartRepository.GetAsync(p => p.PartCode == taPart.PartCode); + if (current == null) + { + await _taPartRepository.InsertAsync(taPart); + } + else + { + current = _objectMapper.Map(part); + + // current.PartDesc1 = part.Desc1; + // current.PartDesc2 = part.Desc2; + //... + + await _taPartRepository.UpdateAsync(current); + } - // throw new System.NotImplementedException(); - //TODO 根据传入数据新增或修改TA_PART } - + } } \ No newline at end of file diff --git a/WebApiService/src/Win_in.Sfs.Scp.v1.Event/V1ScpEventModule.cs b/WebApiService/src/Win_in.Sfs.Scp.v1.Event/V1ScpEventModule.cs index f11b0ec..8c25fbe 100644 --- a/WebApiService/src/Win_in.Sfs.Scp.v1.Event/V1ScpEventModule.cs +++ b/WebApiService/src/Win_in.Sfs.Scp.v1.Event/V1ScpEventModule.cs @@ -1,4 +1,5 @@ using Volo.Abp.Autofac; +using Volo.Abp.AutoMapper; using Volo.Abp.Domain.Entities.Events.Distributed; using Volo.Abp.Modularity; using Win_in.Sfs.Scp.v1.Domain; @@ -9,6 +10,7 @@ namespace Win_in.Sfs.Scp.v1.Event { [DependsOn( typeof(AbpAutofacModule), + typeof(AbpAutoMapperModule), typeof(V1ScpDomainModule), typeof(WebApiDomainModule), typeof(V1ScpEntityFrameworkCoreModule) @@ -17,8 +19,11 @@ namespace Win_in.Sfs.Scp.v1.Event { public override void ConfigureServices(ServiceConfigurationContext context) { + Configure(options => + { + options.AddMaps(); + }); - } } diff --git a/WebApiService/src/Win_in.Sfs.Scp.v1.Event/WebApiApplicationAutoMapperProfile.cs b/WebApiService/src/Win_in.Sfs.Scp.v1.Event/WebApiApplicationAutoMapperProfile.cs new file mode 100644 index 0000000..667b10b --- /dev/null +++ b/WebApiService/src/Win_in.Sfs.Scp.v1.Event/WebApiApplicationAutoMapperProfile.cs @@ -0,0 +1,81 @@ +using AutoMapper; +using Volo.Abp.AutoMapper; +using Win_in.Sfs.Scp.v1.Domain; +using Win_in.Sfs.Scp.WebApi; + +namespace Win_in.Sfs.Scp.v1.Event +{ + public class EventAutoMapperProfile : Profile + { + public EventAutoMapperProfile() + { + /* You can configure your AutoMapper mapping configuration here. + * Alternatively, you can split your mapping configurations + * into multiple profile classes for a better organization. */ + + CreateMapPart(); + CreateMapSupplier(); + CreateMapReceipt(); + CreateMapPurchaseOrder(); + CreateMapPurchaseOrderDetail(); + CreateMapUnplannedReceipt(); + } + + /// + /// 零件实体与Dto映射 + /// + private void CreateMapPart() + + { + CreateMap(); + } + + /// + /// 供应商实体与Dto相互映射 + /// + private void CreateMapSupplier() + + { + CreateMap(); + } + + + /// + /// 收货单与退货单明细实体与Dto映射 + /// + private void CreateMapReceipt() + + { + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + } + + + /// + /// 采购订单主表映射 + /// + private void CreateMapPurchaseOrder() + + { + CreateMap(); + } + + /// + /// 采购订单明细表映射 + /// + private void CreateMapPurchaseOrderDetail() + + { + CreateMap(); + } + + private void CreateMapUnplannedReceipt() + { + CreateMap(); + + CreateMap(); + } + } +}