| | |
| | | |
| | | ### Database Layer |
| | | - Uses **SqlSugar ORM** for data access with Oracle database |
| | | - Connection string configured in `appsettings.json` |
| | | - Two database contexts available: |
| | | - `DbContext<T>` (MES.Service/DB/DbContext.cs:10) - Generic repository pattern |
| | | - `SqlSugarHelper` (MES.Service/DB/SqlSugarHelper.cs:6) - Oracle-specific helper with transaction support |
| | | - Connection string configured in `appsettings.json` and loaded via `AppsettingsUtility.Settings.DataBaseConn` |
| | | - Three database access patterns available: |
| | | - `Repository<T>` (MES.Service/DB/Repository.cs:6) - Base class for all Manager classes, extends SqlSugar's SimpleClient with Oracle configuration and transaction support via `UseTransaction()` method |
| | | - `DbContext<T>` (MES.Service/DB/DbContext.cs:10) - Generic repository pattern for SqlServer (legacy, not actively used) |
| | | - `SqlSugarHelper` (MES.Service/DB/SqlSugarHelper.cs:6) - Static Oracle helper with `GetInstance()` and `UseTransactionWithOracle()` methods |
| | | - **IMPORTANT**: Most services inherit from `Repository<T>`, which provides pre-configured Oracle connection and built-in transaction management |
| | | |
| | | ### Service Layer Structure |
| | | - **BasicData**: Core business entities (customers, items, suppliers, etc.) |
| | |
| | | - `webApi/`: External API DTOs for ERP integration |
| | | |
| | | ### API Layer |
| | | - ASP.NET Core Web API with Swagger documentation |
| | | - Controllers organized by domain (BasicData, QC, Warehouse) |
| | | - Newtonsoft.Json for serialization with camelCase naming |
| | | - ASP.NET Core Web API with Swagger documentation (available in Development mode) |
| | | - Controllers organized by domain (BasicData, QC, Warehouse, FBSDB) |
| | | - Newtonsoft.Json for serialization with camelCase naming (configured in Startup.cs:46) |
| | | - CORS enabled for cross-origin requests |
| | | - Custom ActionFilter for request/response handling |
| | | - Custom ActionFilter (MESApplication/Filter/ActionFilter.cs) for global request/response logging |
| | | - All endpoints use `[HttpPost]` by convention, even for read operations |
| | | - Route pattern: `api/[controller]/[action]` |
| | | |
| | | ## Common Development Commands |
| | | |
| | |
| | | ## Important Patterns |
| | | |
| | | ### Repository Pattern |
| | | Most business logic follows the Manager pattern: |
| | | - Managers in `MES.Service/service/` handle business operations |
| | | - Controllers in `MESApplication/Controllers/` handle HTTP requests |
| | | - Models in `MES.Service/Modes/` represent database entities |
| | | All business logic follows the Manager pattern with inheritance-based repository access: |
| | | - **Managers** in `MES.Service/service/` inherit from `Repository<T>` and handle business operations |
| | | - Example: `MesCustomerManager : Repository<MesCustomer>` (47 Manager classes total) |
| | | - Managers use `UseTransaction(db => {...})` for transactional operations |
| | | - Directly access SqlSugar methods via inherited SimpleClient functionality |
| | | - **Controllers** in `MESApplication/Controllers/` handle HTTP requests and instantiate Manager classes |
| | | - Controllers manually create Manager instances (e.g., `new MesCustomerManager()`) |
| | | - Use `ResponseResult` utility class for standardized API responses |
| | | - Controllers wrap Manager calls in try-catch blocks and log to MessageCenter |
| | | - **Models** in `MES.Service/Modes/` represent database entities with SqlSugar attributes |
| | | |
| | | ### Service Registration |
| | | Services are manually instantiated rather than using dependency injection containers. When adding new services, follow the existing pattern in the respective Manager classes. |
| | | ### Service Registration and Response Format |
| | | Services are manually instantiated rather than using dependency injection containers: |
| | | - Controllers directly instantiate Managers: `private readonly MesCustomerManager m = new();` |
| | | - Startup.cs configures `AppSettings` from appsettings.json into static `AppsettingsUtility.Settings` |
| | | - No DI container for business logic - all service creation is explicit |
| | | |
| | | All API endpoints return `ResponseResult` (MES.Service/util/ResponseResult.cs:7) with structure: |
| | | ```csharp |
| | | { |
| | | status: 0, // 0 = success, 1 = failure |
| | | message: "OK", // error message or "OK" |
| | | data: object, // response payload wrapped in ExpandoObject |
| | | TotalCount: 0 // optional pagination count |
| | | } |
| | | ``` |
| | | |
| | | ### Error Handling |
| | | - ActionFilter handles global request/response processing |
| | | - SQL logging enabled via SqlSugar AOP for debugging |
| | | - Console output for SQL query debugging |
| | | - `ActionFilter` (MESApplication/Filter/ActionFilter.cs:13) handles global request/response processing |
| | | - Logs all requests with headers and body parameters |
| | | - Logs all responses with execution time |
| | | - Catches exceptions and logs via `ErrorLog.Write()` |
| | | - SQL logging enabled via SqlSugar AOP for debugging (prints to Console) |
| | | - All Controller methods catch exceptions and return `ResponseResult.ResponseError(ex)` |
| | | - ERP integration operations logged to `MessageCenter` table with status tracking |
| | | |
| | | ## API Documentation |
| | | |
| | | API documentation is available in the `MESApplication/Docs/` folder: |
| | | - `Spi_API.md` - SPI (Solder Paste Inspection) API documentation |
| | | - `Aoi_API.md` - AOI (Automated Optical Inspection) API documentation |
| | | |
| | | ## Testing |
| | | |
| | | No test projects are currently configured in this solution. When adding tests, create separate test projects following .NET testing conventions. |
| | | No test projects are currently configured in this solution. When adding tests, create separate test projects following .NET testing conventions. |
| | | |
| | | ## Key Utilities |
| | | |
| | | - `AppsettingsUtility` (MES.Service/util/AppsettingsUtility.cs:6) - Loads configuration into static `Settings` property |
| | | - `ResponseResult` (MES.Service/util/ResponseResult.cs:7) - Standardized API response wrapper |
| | | - `ErrorLog` - Custom error logging utility used by ActionFilter |