| README.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| WebApi/MODULES.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| WebApi/help.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
README.md
@@ -1,4 +1,46 @@ ## LB_MesService # GS MES æå¡ èå®PCå端 ## é¡¹ç®æ¦è§ GS MES Service åºäº ASP.NET Core 8.0 æå»ºï¼`Gs.HostIIS` è´è´£æç®¡ Web APIãå è½½é 置并æ´é²åç»å Swagger ææ¡£ãåä¸å¡æ¨¡åï¼BaseInfoãSalesãWarehouse çï¼ä»¥ `Gs.<Module>` 项ç®åå¨ï¼æ§å¶å¨æ¾å¨ `Services/`ï¼æ°æ®æ¨¡åä½äº `Models/`ï¼å ±äº«å®ä½å DTO éä¸å¨ `Gs.Entity`ãéç¨ç»ä»¶ï¼ææãExcelãHTTPãä¾èµæ³¨å ¥æ©å±çï¼ç»ä¸å°è£ å¨ `Gs.Toolbox`ã ## ç®å½ç»æ - `GsMesSolution.sln`ï¼è§£å³æ¹æ¡å ¥å£ï¼ç»ä¸æ§è¡æå»ºãæµè¯ã - `Gs.HostIIS/`ï¼å®¿ä¸»é¡¹ç®ï¼å å« `Program.cs`ã`appsettings*.json`ãSwagger é 置以å `/down`ã`/upload` éæèµæºæ å°ã - `Gs.<Module>/`ï¼ä¸å¡æ¨¡åï¼å¦ `Gs.BaseInfo`ã`Gs.Sales`ã`Gs.Warehouse`ï¼ï¼éµå¾ª `Models/` + `Services/` æä»¶å¤¹å¸å±ã - `Gs.Entity/`ï¼SqlSugar å®ä½ä¸è·¨æ¨¡åå ±äº«ç DTOã - `Gs.Toolbox/`ï¼ä¾èµæ³¨å ¥æ©å±ãAPI 约å®ãæ¥å¿ãExcel å·¥å ·çåºç¡è®¾æ½è½åã - `Gs.HostIIS/.config/`ï¼é¨ç½²é¶æ®µä½¿ç¨çç¯å¢é ç½®è½¬æ¢æä»¶ã ## å¿«éå¼å§ 1. å®è£ .NET SDK 8.0ï¼ç¡®è®¤æ°æ®åºè¿æ¥ä¿¡æ¯ä¸ `appsettings.json` 对åºã 2. æ¢å¤ä¾èµï¼ ```bash dotnet restore GsMesSolution.sln ``` 3. æå»ºé¡¹ç®ï¼ ```bash dotnet build GsMesSolution.sln -c Release ``` 4. å¯å¨ APIï¼ ```bash dotnet run --project Gs.HostIIS/Gs.HostIIS.csproj ``` å¯å¨åè®¿é® `http://localhost:<端å£>/swagger` æ¥çåç» API ææ¡£ãéæä¸è½½ç®å½æ å° `/down`ï¼ä¸ä¼ ç®å½æ å° `/upload`ï¼è·¯å¾ç±é ç½®ä¸ç `DownPath`ã`UploadPath` æ§å¶ã ## æµè¯è¯´æ ä»åºææªå¼å ¥èªå¨åæµè¯ãæ°å¢åè½æ¶è¯·å¨ç¸åºæ¨¡åæå建 xUnit 项ç®ï¼ç¤ºä¾ï¼`Gs.Sales.Tests`ï¼ï¼æµè¯æä»¶ç»ä¸å½å为 `*Tests.cs`ãMock SqlSugar ä¾èµä¿ææµè¯å¯éå¤ï¼å¹¶å¨è§£å³æ¹æ¡æ ¹ç®å½æ§è¡ï¼ ```bash dotnet test ``` æäº¤åæ´åè®°å½æå·¥åçç»æï¼Swagger å¯ç¨æ§ãæ ¸å¿æ¥å£ãå ³é®åå¨è¿ç¨ï¼å¹¶åå ¥ PRã ## é ç½®ä¸å®å ¨ - ç¦æ¢æäº¤ä»»ä½ç¡¬ç¼ç çè¿æ¥å符串æå¯ç ï¼å¼åé¶æ®µéè¿ User Secrets æç¯å¢åéæ³¨å ¥ã - ç¯å¢å·®å¼é ç½®æ¾å ¥ `.config` ç®å½ï¼å叿¶æ§è¡è½¬æ¢ï¼ä¸ç´æ¥ä¿®æ¹åºç¡é ç½®ã - è°æ´ SqlSugar æ°æ®ç»æåå¡å¿ å¨é¢åå¸ç¯å¢éªè¯ï¼å¹¶å¨å ¬å¼é¨ç½²åæ£æ¥ Swagger æ´é²èå´ã ## è´¡ç®æå - éµå¾ªåç©ºæ ¼ç¼©è¿ãç±»å `PascalCase`ãå±é¨åé `camelCase`ã常é `ALL_CAPS` çå½åè§èï¼ä¿æå¯ç©ºå¼ç¨å¯ç¨ã - æ°å¢æå¡éè¿ `Gs.Toolbox` çæ©å±æ¹æ³æ³¨åï¼ç¡®ä¿ `builder.AddCustomInject()` æµç¨å®ä¹ç»ä¸ã - æäº¤ä¿¡æ¯æ²¿ç¨åå²é£æ ¼ï¼ç®æ´ç䏿åè¡è¯´æï¼ä¾å¦ `Baobiao: ä¿®å¤å¯¼åºå¼å¸¸`ã - PR ä¸éååºå影忍¡åãé ç½®ææ°æ®åºåæ´ãèªå¨åæµè¯ä¸æå·¥åçç»æï¼å¹¶éä¸ç¤ºä¾è¯·æ±ææªå¾ã WebApi/MODULES.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,152 @@ # 模å详解æå æ¬æåæ±æ» GS MES Service è§£å³æ¹æ¡å å项ç®/模åçèè´£ãæ ¸å¿æ¥å£ä»¥åä¸å ¶ä»æ¨¡åçä¾èµå ³ç³»ï¼ä¾å¼åãæµè¯ä¸è¿ç»´äººåå¿«éå®ä½ä»£ç ä½ç½®ä¸ä¸å¡è¾¹çã ## éç¨åºç¡ç»ä»¶ - **Gs.HostIIS**ï¼`Gs.HostIIS/Program.cs`ã`Gs.HostIIS/RequestAuthorizeAttribute.cs`ï¼ - æ¿è½½ ASP.NET Core 主æºï¼ç»ä¸æ³¨å MVCãå ¨å±ææè¿æ»¤ãCORSãSwagger åç»åéæç®å½ã - éè¿ `builder.AddCustomInject()` å `app.AddCustomController()` æ«æææå¼ç¨ç¨åºéçæå¡ï¼å®ç°æ¨¡åçº§çææã - è§£æé 置项 `ServicesPath`ã`DownPath`ã`UploadPath`ï¼å¯¹åº Swagger XMLãä¸è½½ä¸ä¸ä¼ ç®å½ã - **Gs.Toolbox**ï¼å¦ `Gs.Toolbox\Repository.cs`ã`Gs.Toolbox\ApiCore\Extensions`ï¼ - æä¾ SqlSugar ä»å¨åºç±»ãç»ä¸è¿å模åãExcel/æ¥å¿/HTTP å·¥å ·ä»¥å DI æ è®°æ¥å£ï¼`ISingleton`ã`IScope`ã`ITransient`ï¼ã - `ApplicationBuilderExtension` æ ¹æ®æ¥å£æ è®°èªå¨æ³¨å ¥ï¼å®ç°æ¨¡åé¶æ£ç±»çé䏿³¨åã - `ApplicationExtension` ä¸ `CustomControllerFeatureProvider` åå©ææ¨¡åå¨æè£ é æ§å¶å¨ã - **Gs.Entity** - éä¸ç»´æ¤ SqlSugar å®ä½ãDTO åå ¬å ±æä¸¾ï¼ä¾ææä¸å¡æ¨¡åå¤ç¨ï¼åå°éå¤å®ä¹ã ## ä¸å¡é¢å模å ### Gs.BaseInfo - 责任ï¼ç»´æ¤ä¸»æ°æ®ï¼å¦ç©æãä¾åºåãå·¥ä½ãé¨é¨çï¼ä¸ºä»å¨ãéå®ãç产模åæä¾åºç¡ä¿¡æ¯ã - ä¸»è¦æå¡ï¼ - `Gs.BaseInfo\Services\MesItemsManager.cs`ï¼ç©ææ¡£æ¡å页æ¥è¯¢ãæ å°åä½/ä»åº/ç©æç»çå ³èä¿¡æ¯ã - `Gs.BaseInfo\Services\MesSupplierManager.cs`ã`MesCustomerManager.cs`ï¼ä¾åºå/客æ·èµæå¢å æ¹æ¥ã - `Gs.BaseInfo\Services\PrintInfoManager.cs`ã`PrintUserManager.cs`ï¼æå°æ¨¡æ¿åç¨æ·è®¾å¤ä¿¡æ¯ã - `Gs.BaseInfo\Services\SysDepartmentManager.cs`ã`MesPositionManager.cs`ï¼ç»ç»åå²ä½ç®¡çã - ä¾èµï¼å¤§éå¤ç¨ `Repository<T>` æä¾çéç¨å页ãäºå¡å°è£ ï¼å¹¶è¯»å `UtilityHelper` ä¸çç¨æ·ä¸ä¸ææ°æ®ã ### Gs.Sales - 责任ï¼éå®è®¢åãåè´§ãéè´§çéå®å±¥çº¦æµç¨ç对æ¥ä¸æ¥è¯¢ã - ä¸»è¦æå¡ï¼ - `Gs.Sales\SalesManager.cs`ï¼éå®è®¢ååé¡µãæ¡ä»¶è¿æ»¤ãè°ç¨åå¨è¿ç¨ã - `Gs.Sales\SalesDeliverManager.cs`ã`SalesDeliverDjManager.cs`ï¼åè´§ååå ¶æç»ãåæ®æå°/å®¡æ ¸ã - `Gs.Sales\SalesReturnManager.cs`ã`SalesReturnDjManager.cs`ï¼éå®éè´§ç³è¯·ãæ§è¡ååæ®ç®¡çã - ç¹ç¹ï¼ä»¥ `ApiGroup(ApiGroupNames.XS)` æ è¯ï¼å¨ Swagger ä¸å½äºéå®åç»ï¼æ¥å£å¤è¿åå¨æå¯¹è±¡ï¼ä¾èµ SqlClient è°ç¨åå¨è¿ç¨æ»¡è¶³å¤ææ¥è¡¨éæ±ã ### Gs.Warehouse - 责任ï¼ä»å¨ç®¡çä¸åºåå¤çï¼è¦çæ¶ååãè°æ¨ãçç¹ãæ¡ç ä¸èªå¨å ¥åºã - ä¸»è¦æå¡ï¼ - `Gs.Warehouse\Services\MesInvItemOutsManager.cs`ï¼æ ¸å¿åºåºé»è¾ï¼æåãåæåãåææï¼ï¼æ¯æåé¡µãæ¹éæä½ãç¶æååã - `MesInvItemArnManager.cs`ã`MesInvItemArnDetailManager.cs`ï¼å°è´§éç¥ãéªæ¶å ¥åºãå¼å¸¸å¤çã - `MesInvItemMovesManager.cs`ã`MesInvItemMovesDjManager.cs`ï¼ä»åºè°æ¨åè°æ¨å追踪ã - `MesInvItemBarcodesManager.cs`ã`VArrivalBarcodeManager.cs`ï¼æ¡ç çæãæ ¡éªä¸è¿½æº¯ã - `MesShouTuoManager.cs`ã`MesShouTuoDjManager.cs`ï¼æ¶æãéæä¸å¡ã - `MesAutoRkController.cs`ï¼èªå¨å ¥åºæ¥å£ï¼ä¸è®¾å¤/产线éæã - ä¾èµï¼ä¸ `Gs.BaseInfo` çä»åºãç©æä¿¡æ¯ç´§å¯å ³èï¼å¤å¤è°ç¨ `InitialBarcode` DTOï¼é¨åé»è¾å å«äºå¡ `UseTransaction`ã ### Gs.Report - è´£ä»»ï¼æ¥è¡¨æ¥è¯¢ã导åºä¸çæ¿åç°ï¼è¦çç产ãè´¨éãä»å¨çå¤åºæ¯ã - ä¸»è¦æå¡ï¼ - `Gs.Report\ReportController.cs`ï¼éç¨æ¥è¡¨å ¥å£ï¼ææ¥è¡¨ä»£ç è°åº¦ä¸åæ¥è¯¢ã - `Gs.Report\XlsInOutController.cs`ï¼åºå ¥åºç»è®¡ Excel 导åºï¼å¤§éä½¿ç¨ `ExcelHelper`ã - `Gs.Report\CkController.cs`ã`QLController.cs`ï¼ä»åºåºåãè´¨éç»è®¡ã - `Gs.Report\WOTraceCodes.cs`ã`BTDetails.cs`ï¼å·¥åè¿½è¸ªä¸æ¡ç æç»ã - `YS_*` ç³»åï¼ä»¥ `YS` åç¼å½åçä¸ç¨æ¥è¡¨ï¼è®¾å¤ä¿å »ãè¿è´§æ£éªã馿£å·¡æ£çï¼ï¼å¤è¿å DataTable/Excel æä»¶ã - ç¹ç¹ï¼å¤æ°æ¥å£ä¸º POSTï¼æ¥å卿æ¡ä»¶ãå页åå¯¼åºæ è®°ï¼æ·±åº¦ä¾èµ SQL åå¨è¿ç¨åè§å¾ã ### Gs.Sys - 责任ï¼ç³»ç»é ç½®ä¸æé管çã - ä¸»è¦æå¡ï¼ - `Gs.Sys\Services\UserController.cs`ï¼ç¨æ·ç»´æ¤ãè§è²ç»å®ãç»å½æ ¡éªã - `RoleController.cs`ã`MenuActionController.cs`ï¼è§è²ä¸èåæéé ç½®ï¼æ¯ææ å½¢ç»æè¿åã - `OrganizationController.cs`ï¼ç»ç»æ¶æç»´æ¤ï¼ä¾å ¶ä»æ¨¡åæç»ç»è¿æ»¤æ°æ®ã - `DocNoRuleController.cs`ï¼åå·è§å管çï¼çæä¸å¡åæ®ç¼å·ã - `MesConfigController.cs`, `MesFileController.cs`ï¼ç³»ç»éç¨é ç½®ãæä»¶ç®¡çã - `MesSysPageviewManager.cs`ï¼é¨æ·é¡µé¢è®¿é®ç»è®¡ã - `SysLogController.cs`ï¼æä½æ¥å¿æ¥è¯¢ã - 模åï¼`Gs.Sys\Models` å å« `SysRole`, `SysUserRole`, `SysDocRule` çå®ä½ï¼å¯¹åºæ°æ®åºæé表ã - ä¾èµï¼ä¸ºå ¨å±è®¤è¯åæææå¡ï¼å ¶ä»æ¨¡åéè¿ `_userGuid`ã`_orgFids` æ§å¶æ°æ®æéã ### GS.QC - 责任ï¼è´¨é管çï¼æ¥æãå¶ç¨ãåºè´§æ£éªï¼å缺é·åºç®¡çã - ä¸»è¦æå¡ï¼ - `GS.QC\Service\FqcManager.cs`ã`FqcItemsManager.cs`ï¼æåç»æ£ä»»å¡ãæ½æ ·ç»æãå¤å®ã - `IpqcShouManager.cs`ã`IpqcXunManager.cs`ï¼å¶ç¨é¦æ£ãå·¡æ£æµç¨ã - `MesQaItemsDetect01Manager.cs`ï¼æ¥ææ£éªæç»å¤çã - `MesDefectCodeManager.cs` 䏿¨¡å `MesDefectCode.cs`ï¼ç¼ºé·ä»£ç ç»´æ¤ä¸å±çº§å ³ç³»ã - `RkqcManager.cs`ã`RkqcSqManager.cs`ã`RkqcfaManager.cs`ï¼å ¥åºè´¨æ£ç³è¯·ãæ¹æ¡åæ§è¡ã - `MesQmCheckitemManager.cs` å `MesQmCheckitemDtManager.cs`ï¼æ£éªé¡¹ç®åæç»ç»´æ¤ã - ç¹ç¹ï¼å¤§éä½¿ç¨æ½æ ·æ¹æ¡æ¨¡å `MesQmAql*`ï¼ä¸ä»å¨æ¨¡åå ±äº«æ¡ç åå°è´§åæ°æ®ã ### Gs.JJGZ - 责任ï¼è®¡ä»¶è®¡ä»·ãå·¥æ¶ä¸èå¤ç»è®¡ã - ä¸»è¦æå¡ï¼ - `Gs.JJGZ\MesJjgzScheduleController.cs`ï¼æç计åã产线çç»æç¨ã - `MesJjgzTimeTypeController.cs`ï¼å·¥æ¶ç±»åå®ä¹ï¼å çã请åçï¼ã - `MesJjgzJjsalaryController.cs`ã`MesJjgzJssalaryController.cs`ï¼è®¡ä»¶ã计æ¶èªèµè®¡ç®ã - `MesJjgzErrorJsController.cs`ï¼è®¡èªå¼å¸¸å¤çä¸è°æ´ã - `MesAttanConController.cs`ã`MesDeToLineController.cs`ï¼èå¤ãå²ä½å°çº¿å ³ç³»ç»´æ¤ã - ä¾èµï¼éè¦æ¥èªç产ãå·¥åãäººåæ¨¡åçæ°æ®ï¼å¯è½è°ç¨åå¨è¿ç¨çæèªèµæ¥è¡¨ã ### Gs.Wom - 责任ï¼è½¦é´å¶é æ§è¡ä¸å·¥åºééã - ä¸»è¦æå¡ï¼ - `Gs.Wom\Service\MesProcInfoController.cs`ï¼å·¥åºå·¥èºä¿¡æ¯ãèç¹ç»´æ¤ã - `MesProdGx0Controller.cs`, `WompbaManager.cs`, `WompbaGxManager.cs`ï¼å·¥åæäº§ãå·¥åºåé ãç产工èºè·¯çº¿ã - `MesWorkProdManager.cs`ã`MesScrkDjManager.cs`ï¼ç产ä¸çº¿ãå ¥åºåæ®ã - `FanGongManager.cs`ã`MesBackFlashController.cs`ï¼è¿å·¥ï¼å岿µç¨ã - `WorkService\WorkCollectController.cs`ã`WorkTechniqueController.cs`ï¼äº§çº¿çæ¿ãå·¥èºèµææ¥è¯¢ãå·¥åºæ«ç ééã - `WorkProController.cs`ã`WorkRepairController.cs`ã`WorkWeightController.cs`ï¼ç产è¿åº¦ãç»´ä¿®ãç§°éçç°åºæä½æ¥å£ã - ä¾èµï¼ä¸æ¡ç ãä»å¨ãå·¥åã人åä¿¡æ¯ç´§å¯è¦åï¼æ¯ MES æ§è¡å±çæ ¸å¿ã ### Gs.Ww - 责任ï¼å§å¤å å·¥ä¸å¡ï¼å¤åç产ï¼ã - ä¸»è¦æå¡ï¼ - `Gs.Ww\WWBlManager.cs`ã`WWBlDJManager.cs`ï¼å§å¤è¡¥æç³è¯·ä¸åæ®ã - `WWLLDJManager.cs`ã`WWTBlDJManager.cs`ï¼å§å¤é¢æãéæåæ®ã - `WWTblManager.cs`ï¼å§å¤éè¡¥æå¤çã - `ProductionOrderManager.cs`ã`WWPCManager.cs`ï¼å§å¤ç产订ååæäº§æ§å¶ã - ç¹ç¹ï¼ä¸ä»å¨å ±äº«é¢éæé»è¾ï¼ä¸éå®/éè´æ¨¡åå ±äº«ä¾åºåçåºç¡èµæã ### Gs.QiTaRk & Gs.QiTaCk - **Gs.QiTaRk**ï¼å¤çå ¶ä»å ¥åºç±»ä¸å¡ã - `MesItemQtrkManager.cs`ã`MesItemQtrkDjManager.cs`ï¼å ¶ä»å ¥åºåæ®åæç»ã - `MesItemTblManager.cs`ã`MesItemTblRkManager.cs`ï¼è°æ´/è¡¥å½å ¥åºã - **Gs.QiTaCk**ï¼å¤çå ¶ä»åºåºç±»ä¸å¡ã - `MesItemQtManager.cs`ã`MesItemQtDJManager.cs`ï¼å ¶ä»åºåºåæ®ä¸æç»ã - `MesItemBlManager.cs`ã`MesItemBlDJManager.cs`ï¼æ¥æº¢/æ¥æåºåºã - `MesCgthSqManager.cs`ã`MesCgthSqDjManager.cs`ï¼éè´éè´§ç³è¯·ã - `MesSctkSqManager.cs`ã`MesSctkSqDjManager.cs`ï¼ç产éåºç³è¯·ã - è¿äºæ¨¡å为ä»å¨æä¾è¡¥å ä¸å¡å£å¾ï¼é常ä¸ä¼è®¡ç³»ç»ææå·¥åæ®å¯¹æ¥ã ### Gs.Warehouse éå±ï¼`Gs.Warehouse\Dto\InitialBarcode.cs` - 为æ¡ç çæãåå§å¯¼å ¥æä¾ DTOï¼ä¾ `MesInvItemBarcodesManager` çæå¡åºåå/ååºååã ### Gs.Pda - 责任ï¼ä¸º PDA/ææç»ç«¯æä¾è½»éæ¥å£ã - `Gs.Pda\Service\PqcManager.cs`ï¼ç产巡æ£ç¸å ³ PDA æä½ã - `IqcManager.cs`ï¼æ¥ææ£éª PDA 端ã - ç¹ç¹ï¼æ¥å£åæ°é常æ´ç²¾ç®ï¼è¿å PDA å好çç»æï¼å¤ç¨ä¸»ç³»ç»çæéæ ¡éªã ### Gs.OpenApi - 责任ï¼å¯¹å¤å¼æ¾æ¥å£ï¼ä¸ ERP çå¤é¨ç³»ç»åæ¥å ³é®æ°æ®ã - `Gs.OpenApi\Services\ErpMesController.cs`ï¼æä¾ ERP è°ç¨å ¥å£ï¼æ§è¡ç©æãåºåã订åçæ°æ®çæ¨é/åä¼ ã - ç¹ç¹ï¼å¯è½éè¦é¢å¤çå®å ¨çç¥ï¼å¦ IP ç½ååãç¾åï¼ï¼å¹¶å¯¹æ¥æ¶æ¯éåæå®æ¶ä»»å¡ï¼å¯å¨æå±æ¶å å ¥ï¼ã ### è¾ å©é¡¹ç® - **Gs.JJGZ**ï¼å·²è¯´æï¼ï¼ä¸èªèµãèå¤ç¸å ³ã - **TemplateEngineHost**ï¼æä¾æ¨¡æ¿æ¸²æææ¥è¡¨çæè¾ 婿å¡ï¼å¸¸ä¸ `Gs.Report` èå¨ã - **Gs.HostIIS\.config**ï¼æç¯å¢æåçåå¸é ç½®ï¼ç¨äº Dev/Test/Prod åæ°è¦çã ## 模åé´å ¸åæµç¨ç¤ºä¾ 1. **éå®åè´§**ï¼`Gs.Sales\SalesDeliverManager` 便® `Gs.BaseInfo` ç客æ·/ç©ææ°æ®çæåè´§åï¼åæ¶è°ç¨ `Gs.Warehouse\MesInvItemOutsManager` æ£ååºåã 2. **ç产ä¸çº¿ä¸å ¥åº**ï¼`Gs.Wom\WorkProController` è®°å½å·¥åºæ°æ®ï¼çææ¡ç åç± `Gs.Warehouse\MesInvItemArnManager` å ¥åºï¼å¹¶å¨ `GS.QC\IpqcXunManager` åå·¡æ£ã 3. **è´¨éå¼å¸¸å¤ç**ï¼`GS.QC\MesQcExceptionalManager` è®°å½å¼å¸¸ï¼è§¦å `Gs.Warehouse\MesInvItemMovesManager` è¿è¡ä¸è¯å转åºï¼æåå¨ `Gs.Report\ReportController` æä¾ç»è®¡ã 4. **è®¡èªæ°æ®éé**ï¼`Gs.Wom\WorkCollectController` ä¸ä¼ çå·¥åºå®æéä¼ ç» `Gs.JJGZ\MesJjgzJjsalaryController` 计ç®è®¡ä»¶å·¥èµã ## æ©å±å¼å建议 - å¼å ¥æ°æ¨¡åæ¶ï¼å建 `Gs.NewModule` 项ç®ï¼éµå¾ª `Models/` + `Services/` ç»æï¼å¹¶å¨ç±»ä¸åºç¨ `ApiGroup` ä¸ DI æ è®°æ¥å£ã`builder.AddCustomInject()` ä¼èªå¨æ³¨åï¼å®ç°é¶é ç½®æ¥å ¥ã - 跨模åè°ç¨æ¶ä¼å éè¿ä»å¨ææ¥å£è¿å DTOï¼é¿å ç´æ¥è®¿é®å ¶ä»æ¨¡åæ°æ®åºè¡¨ï¼å¦éå ±äº«å®ä½ï¼è¯·æ¾å ¥ `Gs.Entity`ã - æ¥è¡¨å¯¼åºç»ä¸å¤ç¨ `Gs.Toolbox\ExcelHelper`ï¼æ¥å¿å HTTP è°ç¨å§æ `LogHelper`ã`InterfaceUtil`ã - æææ¥å£é»è®¤å¯ç¨ `ApiAuthorizeAttribute`ï¼æ°å¢å¿åæ¥å£éæ¾å¼å `[AllowAnonymous]` å¹¶è¯ä¼°å®å ¨é£é©ã 以ä¸å 容å¯ä½ä¸ºæ¨¡ååå审é ãéæ±æè§£åæ°æåå¹è®çåèã妿éè¦è¿ä¸æ¥çæ°æ®åºç»æãåå¨è¿ç¨è¯´æï¼å¯å¨åæ§å¶å¨ä¸æç´¢å¯¹åºç SQL/åå¨è¿ç¨åç§°ï¼ä¸ DBA åä½ç»´æ¤è¡¥å ææ¡£ã*** End Patch WebApi/help.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,95 @@ # GS MES æå¡å¸®å©ææ¡£ ## 1. é¡¹ç®æ»ä½æ¦è§ GS MES Service æ¯ä¸å¥ MESï¼å¶é æ§è¡ç³»ç»ï¼å端æ¥å£ï¼éç¨ ASP.NET Core 8.0 ä½ä¸ºå®¿ä¸»æ¡æ¶ãå ¥å£é¡¹ç® `Gs.HostIIS` è´è´£æ³¨åæ§å¶å¨ãå è½½é ç½®åå¯ç¨ Swaggerï¼åæ¶éè¿ `builder.AddCustomInject()` èªå¨åç°å¹¶æ³¨å忍¡åä¸çä¸å¡æå¡ãåè½æé¢åæå为 `Gs.BaseInfo`ã`Gs.Sales`ã`Gs.Warehouse`ã`Gs.Report` ç项ç®ï¼æ¯ä¸ªæ¨¡åéè¿ `Services/`ï¼æ§å¶å¨ï¼å `Models/`ï¼é¢å模åï¼å夿´é² APIã ## 2. æ ¸å¿æ¶æä¸è¿è¡æºå¶ - **å¯å¨æµç¨**ï¼`Program.cs` å»ºç« WebApplicationï¼é ç½® JSON åºååï¼å ¨é UnicodeãNewtonsoft.Jsonï¼ãå ¨å±ææè¿æ»¤ãCORSãSwagger åéææä»¶ç®å½ï¼ç¶åè°ç¨ `app.AddCustomController()` ä¸ `builder.AddCustomInject()` æ©å±ã - **èªå¨ä¾èµæ³¨å ¥**ï¼`Gs.Toolbox.ApiCore.Extensions.ApplicationBuilderExtension` 伿«æå ¥å£ç¨åºéåå ¶å¼ç¨ï¼è¯å«å®ç°äº `ISingleton`ã`IScope`ã`ITransient` çæ è®°æ¥å£ææ æ³¨äº `ExposeAttribute` çç±»ï¼å¹¶æçº¦å®æ³¨å ¥å®¹å¨ã - **æ§å¶å¨å è½½**ï¼`CustomControllerFeatureProvider` ä¸ `CustomApplicationModelConvention` ç»å `ApiGroup` ç¹æ§ï¼å®ç°ææ¨¡ååç»çè·¯ç±ä¸ Swagger ææ¡£ååã - **æææºå¶**ï¼`ApiAuthorizeAttribute` æ¦æªæææªæ è®° `[AllowAnonymous]` ç请æ±ï¼æ£æ¥è¯·æ±å¤´ `token` æ¯å¦å å«å½¢å¦ `token <guid>` çå¼ï¼é¿åº¦è³å° 5ï¼ã - **éæèµæº**ï¼æ ¹æ®é 置项 `DownPath` ä¸ `UploadPath` æ å° `/down`ã`/upload` éæç®å½ï¼ç¨äºæä»¶ä¸è½½ä¸ä¸ä¼ ã ## 3. 主è¦é¡¹ç®ä¸æä»¶å¤¹èè´£ - `GsMesSolution.sln`ï¼è§£å³æ¹æ¡æ ¹å ¥å£ã - `Gs.HostIIS/`ï¼ä¸»æºé¡¹ç®ï¼å å«é ç½®æä»¶ãSwagger 设置ãèªå®ä¹ææå±æ§ã - `Gs.<Module>/`ï¼é¢å模åï¼ç¤ºä¾ï¼ - `Gs.BaseInfo`ï¼åºç¡èµæç»´æ¤ï¼`MesItemsManager` çæ§å¶å¨ç»§æ¿ `Repository<T>` å¹¶ä½¿ç¨ SqlSugar æ¥è¯¢ã - `Gs.Warehouse`ï¼ä»å¨ç¸å ³æ¥å£ã - `Gs.Report`ï¼æ¥è¡¨ä¸å¯¼åºåè½ã - `Gs.Entity/`ï¼éä¸åæ¾ SqlSugar å®ä½ãæä¸¾ãDTOã - `Gs.Toolbox/`ï¼éç¨å·¥å ·ï¼å æ¬é 置读åï¼`AppSettingsHelper`ï¼ãä»å¨åºç±»ï¼`Repository<T>`ï¼ãExcel 导åºãæ¥å¿ãApiCore æ©å±çã - `TemplateEngineHost/`ï¼æ¨¡ç弿éæï¼è¥éçææ¥è¡¨/ææ¡£ï¼ã - `.config/`ï¼é¨ç½²é¶æ®µä½¿ç¨çç¯å¢é ç½®è½¬æ¢æä»¶ã ## 4. å¼åç¯å¢åå¤ 1. å®è£ .NET SDK 8.0ï¼`dotnet --version` éªè¯ï¼ã 2. å夿°æ®åºè®¿é®è´¦å·ï¼ä¸ `ConnectionStrings` ä¸çç®æ åºä¸è´ï¼ææå段éè¿ User Secrets æç¯å¢åéæ³¨å ¥ã 3. é ç½® GitãPowerShell/BashãSQL 客æ·ç«¯å常ç¨è°è¯å·¥å ·ï¼Postmanãcurlï¼ã 4. è¥éå端èè°ï¼ç¡®è®¤æ¬å°ç«¯å£ï¼é»è®¤å¨ `appsettings*.json` ä¸è®¾ç½®ï¼åè·¨åçç¥ï¼`AllowAnyOrigin`ï¼ã ## 5. æå»ºãè¿è¡ä¸è°è¯ ```bash dotnet restore GsMesSolution.sln # å®è£ ææ NuGet ä¾èµï¼SqlSugarãSwashbuckle çï¼ dotnet build GsMesSolution.sln -c Release dotnet run --project Gs.HostIIS/Gs.HostIIS.csproj ``` å¯å¨åè®¿é® `http://localhost:<端å£>/swagger`ï¼å¯è§æç § `ApiGroupNames` åç»çæ¥å£ææ¡£ãè°ç¨éè¦ææçæ¥å£æ¶ï¼å¨è¯·æ±å¤´æ·»å `token: token 3fa85f64-5717-4562-b3fc-2c963f66afa6`ï¼ç¤ºä¾ï¼ã ### 常è§è°è¯æå·§ - ä½¿ç¨ `?trace=true` ç约å®åæ°ï¼è¥æ§å¶å¨æ¯æï¼å®ä½æ¥å¿ã - å ³æ³¨æ§å¶å°è¾åºç SqlSugar SQL æ¥å¿ï¼`Repository<T>` éè¿ `Db.Aop.OnLogExecuting` è¾åºæ ¼å¼åè¯å¥ï¼ã - è¥éè¦ä¸´æ¶å ³éææï¼å¯å¨æµè¯ç¯å¢å¯¹ `ApiAuthorizeAttribute` 忡件çè·¯æå¨æ§å¶å¨æ¹æ³ä¸å `[AllowAnonymous]`ï¼ä¸çº¿åå¡å¿ ç§»é¤ï¼ã ## 6. é 置管ç - **åºç¡é ç½®**ï¼`Gs.HostIIS/appsettings.json`ã`appsettings.Development.json` åå¨è·¯å¾ãSwagger åç» XML è·¯å¾çï¼`ServicesPath` ç¨äºæ«æçæç XML 注éã - **ææä¿¡æ¯**ï¼ä½¿ç¨ `dotnet user-secrets`ï¼å¼åç¯å¢ï¼æç³»ç»ç¯å¢åéæ³¨å ¥ `ConnectionStrings` çææåæ®µï¼åå¿æäº¤å°çæ¬åºã - **ç¯å¢è½¬æ¢**ï¼ç产/æµè¯ç¯å¢é ç½®æ¾å ¥ `Gs.HostIIS/.config/*.json`ï¼éè¿å叿µç¨æ CI/CD å¨é¨ç½²é¶æ®µè¦çã - **æä»¶ç®å½**ï¼ç¡®è®¤ `DownPath`ã`UploadPath` 对åºçç©çç®å½æéï¼æå¡å¯å¨ä¼å°è¯èªå¨å建缺失ç®å½ã ## 7. ä¸å¡æ¨¡åå¼åæ¨¡å¼ - æ§å¶å¨éå¸¸ç»§æ¿ `Repository<T>`ï¼ç´æ¥å¤ç¨ SqlSugarScopeï¼æ¯æäºå¡ãéç¨å页 `CommonPage`ï¼ã - éè¿ `ApiGroup(ApiGroupNames.XXX)` 声æ Swagger åç»ï¼ä½¿ç¨ `RequestMethod` ç¹æ§æå® HTTP æ¹æ³ï¼ç³»ç»èªå¸¦ç `RequestMethods` æä¸¾ï¼ã - ä¾èµæ³¨å ¥ï¼å¨æé 彿°ä¸å£°ææéæå¡ï¼å¦ `IHttpContextAccessor`ãä»å¨æ¥å£ï¼ï¼å¹¶ç¡®ä¿å®ç°ç±»å®ç°å¯¹åºçå½å¨ææ¥å£ä»¥è¢«èªå¨æ³¨å ¥ã - ç¨æ·èº«ä»½ï¼ä½¿ç¨ `UtilityHelper.GetUserGuidAndOrgGuid()` ä»è¯·æ±ä¸ä¸ææåç¨æ·æ è¯ï¼å¸¸ç¨äºæ°æ®é离ã - ååºæ ¼å¼ï¼å°è£ å¨ `ResponseResult`ã`ReturnDto<T>` çç»ä¸è¿å对象ä¸ï¼ä¿æå端ä½éªä¸è´ã ## 8. æ°æ®è®¿é®ä¸åºç¡å·¥å · - **SqlSugar ä»å¨**ï¼`Repository<T>` é»è®¤è¿æ¥ `AppSettingsHelper.getValueByKey("ConnectionStrings")`ï¼æ¯æ `UseTransaction` å è£ äºå¡åã`CommonPage` å¿«éå页ã - **Excel 导åº**ï¼`ExcelHelper` æä¾å¯¼åºåè½ï¼é叏卿¥è¡¨æ¨¡å使ç¨ã - **HTTP è¾ å©**ï¼`InterfaceUtil`ã`UtilityHelper` çå°è£ 跨系ç»è°ç¨ãç¨æ·ä¸ä¸æè§£æã - **æ¥å¿**ï¼`LogHelper` å°è£ å¸¸è§æ¥å¿è®°å½ï¼éè¦æ¶å¯æ©å±ç°æå®ç°æ¥å ¥éä¸å¼æ¥å¿å¹³å°ã ## 9. å®å ¨ä¸ææ - æææ¥å£é»è®¤ç»è¿ `ApiAuthorizeAttribute` æ ¡éª `token`ãç产ç¯å¢åºæ¿æ¢é¿åº¦æ ¡éªé»è¾ä¸ºçå®èº«ä»½è®¤è¯ï¼JWTãåç¹ç»å½çï¼ã - Swagger UI æ´é²å¨ `/swagger`ï¼ä¸çº¿åé确认æ¯å¦éå¶å¤ç½è®¿é®æå¯ç¨è®¤è¯ã - 请å¿å¨ä»åºä¸åå¨çå®å¯é¥ãæ°æ®åºè´¦å·æç产é ç½®ï¼`.config` ç®å½ä» åæ¾æ¨¡æ¿/è½¬æ¢æä»¶ã - æ°æ®æéï¼æ¨¡åå 坿 ¹æ® `_orgFids`ã`_userGuid` çåæ®µæ§å¶æ¥è¯¢èå´ã ## 10. æµè¯ä¸è´¨éä¿è¯ - 建议为æ¯ä¸ªé¢å模åå建对åºç xUnit æµè¯é¡¹ç®ï¼å¦ `Gs.BaseInfo.Tests`ï¼ï¼æµè¯æä»¶å½åç»ä¸ä¸º `*Tests.cs`ã - æµè¯ä¸éè¿æ¨¡æä»å¨æ SqlSugar 客æ·ç«¯ï¼é¿å ä¾èµç宿°æ®åºï¼å¯å©ç¨ `ISqlSugarClient` æ¥å£å®ç°èªå®ä¹ Fakeã - æ§è¡æµè¯ï¼`dotnet test`ï¼å¨è§£å³æ¹æ¡æ ¹ç®å½ï¼ï¼å¹¶å°ç»æåå ¥ PR æè¿°ã - å¨èªå¨åè¦çå®åä¹åï¼éå¨ PR ä¸è®°å½æå·¥åçæ¥éª¤ï¼Swagger å è½½ãæ ¸å¿æ¥å£ãå ³é®åå¨è¿ç¨æ§è¡æ åµï¼ã ## 11. 常è§é®é¢ææ¥ - **Swagger ææ¡£ç¼ºå¤±**ï¼ç¡®è®¤ `ServicesPath` æåçç®å½åå¨ XML æä»¶ï¼å¯éæ°æ§è¡ `dotnet build` çææ³¨éæä»¶ã - **éææä»¶ 404**ï¼æ ¸æ¥ç©çç®å½è·¯å¾æ¯å¦æ£ç¡®ï¼ææ¥å¿ä¸æ¯å¦æç¤ºè®¿é®æéé®é¢ã - **token 被æç»**ï¼æ£æ¥è¯·æ±å¤´æ ¼å¼æ¯å¦ä¸º `token: token <å¼>`ï¼å¦éè°è¯ï¼å¯å¨æ¬å°å°æå°é¿åº¦æ¹ä¸º 0ã - **SqlSugar è¿æ¥å¤±è´¥**ï¼ç¡®ä¿ç¯å¢åéä¸é ç½®æ£ç¡®è¿æ¥å符串ï¼å¹¶éªè¯æ°æ®åºæå¡å¨å¯è¾¾ã - **ä¾èµæ³¨å ¥æ¾ä¸å°å®ç°**ï¼ç¡®è®¤å®ç°ç±»å¼ç¨äºæ è®°æ¥å£æ `ExposeAttribute`ï¼ä¸æå¨ç¨åºé已被 `Gs.HostIIS` å¼ç¨ã - **è·¨å请æ±å¤±è´¥**ï¼é»è®¤çç¥å è®¸æææ¥æºï¼å¦ä»æ¥éï¼æ£æ¥æµè§å¨è¯·æ±å¤´ææ¯å¦æä»£ç屿¦æªã ## 12. è´¡ç®ä¸å使µç¨ 1. 仿æ°ä¸»å¹²å建åè½åæ¯ï¼ä¿ææ¬å°ç¯å¢ä¸è¿ç«¯åæ¥ã 2. æè§èç¼å代ç ï¼åç©ºæ ¼ç¼©è¿ã`PascalCase` ç±»åã`camelCase` åéãå¼å¯å¯ç©ºå¼ç¨ã 3. æ°å¢æä¿®æ¹æ¨¡åæ¶ï¼åæ¥æ´æ°ææ¡£ï¼READMEãhelpãæ¨¡å说æï¼ä»¥å `.config` è½¬æ¢æä»¶ï¼å¦æé ç½®åæ´ï¼ã 4. æ¬å°æ§è¡ `dotnet build`ã`dotnet test`ï¼è¥å卿µè¯ï¼ï¼å¹¶å®æå ³é® API çæå·¥åçã 5. 使ç¨ç®æ´ä¸æåè¡ä½ä¸ºæäº¤è¯´æï¼ç¤ºä¾ï¼`BaseInfo: è°æ´ç©æå页æ¥è¯¢`ï¼ã 6. æäº¤ PR æ¶ååºå影忍¡åãé ç½®/æ°æ®åºåæ´ãèªå¨åæµè¯ç»æãæå·¥éªè¯ç»æåå¿ è¦ç请æ±/ååºç¤ºä¾ææªå¾ã ## 13. åèèµæ - SqlSugar 宿¹ææ¡£ï¼https://www.donet5.com/Home/Doc - ASP.NET Core 宿¹ææ¡£ï¼https://learn.microsoft.com/aspnet/core - Swashbuckle.AspNetCore ææ¡£ï¼https://github.com/domaindrivendev/Swashbuckle.AspNetCore - .NET ç¨æ·å¯é¥ç®¡çï¼https://learn.microsoft.com/aspnet/core/security/app-secrets