From 3a44e6db141a4dd70476b90e57208807ab940585 Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期四, 31 十月 2024 14:34:56 +0800
Subject: [PATCH] 新增库存、货位、出库单据等模块

---
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/WIDESEAWCS_BasicService.csproj                            |   13 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/WIDESEAWCS_StockRepository.csproj                      |   14 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Base/MaterielInfoService.cs                               |   37 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Basic/Dt_MaterielInfo.cs                                  |   56 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/IStockQuantityChangeRecordRepository.cs              |   14 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/MaterielInfoRepository.cs                              |   18 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/WIDESEAWCS_IRecordRepository.csproj                  |   13 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundOrderService.cs                              |   20 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/CachePointGroupDTO.cs                                        |   35 
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/591ce19e-7364-4503-b4b3-a190a9a73366.vsidx |    0 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/EnableStatusEnum.cs                                |   36 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Service/LocationStatusChangeRecordSetvice.cs             |   58 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/CommonEnum/OperateType.cs                                       |   18 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutStockLockInfoRepository.cs                     |   14 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/WIDESEAWCS_OutboundRepository.csproj                |   13 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/BasicRepository.cs                                     |   23 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/WIDESEAWCS_IRecordService.csproj                        |   13 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/StockChangeType.cs                                    |   30 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Stock/StockSelectViewDTO.cs                                        |   22 
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/33f3558c-adae-4d5b-a8db-37cdc93fc75a.vsidx |    0 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/IBasicService.cs                                         |   16 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutboundOrderService.cs                           |  145 ++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockInfoDetailRepository.cs                           |   18 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/ILocationInfoService.cs                                  |   28 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/IRecordRepository.cs                                 |   16 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/IStockQuantityChangeRecordService.cs                    |   20 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockInfoDetailRepository.cs                         |   14 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln                                                             |  136 ++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/SequenceEnum.cs                                                 |   13 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/WIDESEAWCS_BasicRepository.csproj                      |   13 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockService.cs                                         |   16 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockInfoDetailService.cs                               |   20 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/ILocationStatusChangeRecordRepository.cs             |   14 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockInfoController.cs                        |   39 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockInfoService.cs                                     |   22 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/OutStockStatus.cs                                     |   24 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OutboundStatusEnum.cs                                 |   44 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/RecordRepository.cs                                   |   22 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutboundOrderDetailController.cs           |   19 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Record/StockQuantityChangeRecordController.cs       |   17 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Base/LocationStatusChangeRecordSetvice.cs                |   25 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/WIDESEAWCS_IStockService.csproj                          |   13 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj                                          |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutboundOrderDetailService.cs                     |   48 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutStockLockInfoRepository.cs                       |   17 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Record/LocationStatusChangeRecordController.cs      |   17 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundRepository.cs                               |   25 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockInfoDetailService.cs                            |   22 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutboundOrderDetailService.cs                  |   32 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockInfoDetailController.cs                  |   17 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutStockLockInfoController.cs              |   23 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/WIDESEAWCS_IStockRepository.csproj                    |   13 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockViewService.cs                                  |  107 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/IMaterielInfoRepository.cs                            |   14 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundOrderRepository.cs                        |   14 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Base/LocationInfoService.cs                               |  142 ++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutStockLockInfoService.cs                     |   19 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/WIDESEAWCS_IBasicService.csproj                          |   13 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj                                        |    4 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Service/MaterielInfoService.cs                            |   41 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/StockStatusEmun.cs                                    |   36 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Stock/Dt_StockInfoDetail.cs                               |   50 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundRepository.cs                             |   18 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/WIDESEAWCS_RecordRepository.csproj                    |   13 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/IMaterielInfoService.cs                                  |   26 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/StockSerivce.cs                                           |   22 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutboundOrderController.cs                 |   17 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundOrderDetail.cs                        |   44 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OutOrderTypeEnum.cs                                   |   63 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundOrderDetailService.cs                        |   21 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockInfoService.cs                               |   68 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundOrder.cs                              |   40 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutStockLockInfoService.cs                        |   62 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Stock/Dt_StockInfo.cs                                     |   35 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/OutboundService.cs                                     |   25 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Basic/MaterielInfoController.cs                     |   17 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/StockQuantityChangeRecordRepository.cs                |   18 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Outbound/OutboundOrderAddDTO.cs                                    |   32 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/WIDESEAWCS_OutboundService.csproj                      |   16 
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d04c6c27-9127-4d1a-aa0f-9cd4d8948537.vsidx |    0 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/ILocationStatusChangeRecordSetvice.cs                   |   20 
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/a239e3a6-c377-4c06-90b5-6cbecfe39546.vsidx |    0 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundService.cs                                   |   18 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/ILocationInfoRepository.cs                            |   17 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/LocationStatusChangeRecordRepository.cs               |   18 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/LocationStatusEnum.cs                              |   39 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/WIDESEAWCS_IBasicRepository.csproj                    |   13 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundOrderDetailRepository.cs                  |   14 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockViewService.cs                               |   28 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Service/StockQuantityChangeRecordService.cs              |   48 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Record/Dt_LocationStatusChangeRecord.cs                   |   44 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockRepository.cs                                   |   16 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/LocationInfoRepository.cs                              |   25 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockInfoRepository.cs                               |   32 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/LocationGroupDTO.cs                                          |   35 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundOrderDetailRepository.cs                    |   18 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/IRecordService.cs                                       |   16 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs                                       |    4 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Basic/LocationInfoController.cs                     |   31 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutStockLockInfoService.cs                           |   24 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Service/LocationInfoService.cs                            |   22 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/IBasicRepository.cs                                   |   17 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockViewService.cs                                     |   18 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/WIDESEAWCS_StockService.csproj                            |   15 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundOrderRepository.cs                          |   18 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutboundOrderService.cs                        |   26 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/WIDESEAWCS_RecordService.csproj                          |   13 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockViewController.cs                        |   35 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Basic/Dt_LocationInfo.cs                                  |   56 
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/16a40d16-80f0-4c73-a9a6-e28826d2b979.vsidx |    0 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/WIDESEAWCS_IOutboundRepository.csproj              |   13 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Stock/StockViewDTO.cs                                              |   59 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/BasicService.cs                                           |   28 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockInfoRepository.cs                                 |  107 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Outbound/OutboundOrderDetailAddDTO.cs                              |   35 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundLockInfo.cs                           |   60 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockInfoService.cs                                  |   42 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockInfoDetailService.cs                         |   25 
 /dev/null                                                                                                    |    0 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Record/Dt_StockQuantityChangeRecord.cs                    |   56 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockRepository.cs                                     |   22 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Base/StockQuantityChangeRecordService.cs                 |   27 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/RecordService.cs                                         |   22 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OrderDetailStatusEnum.cs                              |   38 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/InitializationLocationDTO.cs                                 |   49 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/CommonEnum/EnableEnum.cs                                        |   27 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/WIDESEAWCS_IOutboundService.csproj                    |   13 
 127 files changed, 3,635 insertions(+), 2 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/02c17689-056d-427c-8852-bc22ee4f5e68.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/02c17689-056d-427c-8852-bc22ee4f5e68.vsidx"
deleted file mode 100644
index 07d32e3..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/02c17689-056d-427c-8852-bc22ee4f5e68.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/16a40d16-80f0-4c73-a9a6-e28826d2b979.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/16a40d16-80f0-4c73-a9a6-e28826d2b979.vsidx"
new file mode 100644
index 0000000..d35681b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/16a40d16-80f0-4c73-a9a6-e28826d2b979.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2ddc4f6e-5256-4fc8-b4f1-b46f86742993.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2ddc4f6e-5256-4fc8-b4f1-b46f86742993.vsidx"
deleted file mode 100644
index 678d094..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2ddc4f6e-5256-4fc8-b4f1-b46f86742993.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/33f3558c-adae-4d5b-a8db-37cdc93fc75a.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/33f3558c-adae-4d5b-a8db-37cdc93fc75a.vsidx"
new file mode 100644
index 0000000..cffa9f8
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/33f3558c-adae-4d5b-a8db-37cdc93fc75a.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/591ce19e-7364-4503-b4b3-a190a9a73366.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/591ce19e-7364-4503-b4b3-a190a9a73366.vsidx"
new file mode 100644
index 0000000..fab0ba6
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/591ce19e-7364-4503-b4b3-a190a9a73366.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/61dd1acc-cecf-4a29-9a45-6aa264ede5b3.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/61dd1acc-cecf-4a29-9a45-6aa264ede5b3.vsidx"
deleted file mode 100644
index 4af5b0a..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/61dd1acc-cecf-4a29-9a45-6aa264ede5b3.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/68ebdd2a-8d51-40b7-a791-f37d7fd0a1c9.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/68ebdd2a-8d51-40b7-a791-f37d7fd0a1c9.vsidx"
deleted file mode 100644
index b058746..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/68ebdd2a-8d51-40b7-a791-f37d7fd0a1c9.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/a239e3a6-c377-4c06-90b5-6cbecfe39546.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/a239e3a6-c377-4c06-90b5-6cbecfe39546.vsidx"
new file mode 100644
index 0000000..2910ed2
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/a239e3a6-c377-4c06-90b5-6cbecfe39546.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ade235eb-fbdf-4815-b117-a62bd238d39b.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ade235eb-fbdf-4815-b117-a62bd238d39b.vsidx"
deleted file mode 100644
index 0e8deae..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ade235eb-fbdf-4815-b117-a62bd238d39b.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/c4eb82bf-cce9-4a6d-b8f0-c7ec4de6fdb2.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/c4eb82bf-cce9-4a6d-b8f0-c7ec4de6fdb2.vsidx"
deleted file mode 100644
index 2387752..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/c4eb82bf-cce9-4a6d-b8f0-c7ec4de6fdb2.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d04c6c27-9127-4d1a-aa0f-9cd4d8948537.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d04c6c27-9127-4d1a-aa0f-9cd4d8948537.vsidx"
new file mode 100644
index 0000000..d47c8c3
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d04c6c27-9127-4d1a-aa0f-9cd4d8948537.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ebbfe61f-de85-4793-b9af-ab2c5f423805.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ebbfe61f-de85-4793-b9af-ab2c5f423805.vsidx"
deleted file mode 100644
index 1cdeb93..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ebbfe61f-de85-4793-b9af-ab2c5f423805.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/BasicRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/BasicRepository.cs"
new file mode 100644
index 0000000..0d8629c
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/BasicRepository.cs"
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_IBasicRepository;
+
+namespace WIDESEAWCS_BasicRepository
+{
+    public class BasicRepository : IBasicRepository
+    {
+
+        public ILocationInfoRepository LocationInfoRepository { get; }
+
+        public IMaterielInfoRepository MaterielInfoRepository { get; }
+
+        public BasicRepository(ILocationInfoRepository locationInfoRepository, IMaterielInfoRepository materielInfoRepository)
+        {
+            LocationInfoRepository = locationInfoRepository;
+            MaterielInfoRepository = materielInfoRepository;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/LocationInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/LocationInfoRepository.cs"
new file mode 100644
index 0000000..b4a75b9
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/LocationInfoRepository.cs"
@@ -0,0 +1,25 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.Basic;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_BasicRepository
+{
+    public class LocationInfoRepository : RepositoryBase<Dt_LocationInfo>, ILocationInfoRepository
+    {
+        public LocationInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+
+        }
+
+       
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/MaterielInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/MaterielInfoRepository.cs"
new file mode 100644
index 0000000..9268728
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/MaterielInfoRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_BasicRepository
+{
+    public class MaterielInfoRepository : RepositoryBase<Dt_MaterielInfo>, IMaterielInfoRepository
+    {
+        public MaterielInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/WIDESEAWCS_BasicRepository.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/WIDESEAWCS_BasicRepository.csproj"
new file mode 100644
index 0000000..65cebb0
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/WIDESEAWCS_BasicRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_IBasicRepository\WIDESEAWCS_IBasicRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Base/LocationInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Base/LocationInfoService.cs"
new file mode 100644
index 0000000..fe37263
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Base/LocationInfoService.cs"
@@ -0,0 +1,142 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.CommonEnum;
+using WIDESEAWCS_Common.LocationEnum;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.Utilities;
+using WIDESEAWCS_DTO.Basic;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_IBasicService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_BasicService
+{
+    public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, ILocationInfoRepository>, ILocationInfoService
+    {
+        private readonly IBasicRepository _basicRepository;
+        public ILocationInfoRepository Repository => BaseDal;
+
+        public LocationInfoService(ILocationInfoRepository BaseDal, IBasicRepository basicRepository) : base(BaseDal)
+        {
+            _basicRepository = basicRepository;
+        }
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            Dt_LocationInfo locationInfo = saveModel.MainData.DicToModel<Dt_LocationInfo>();
+            return base.AddData(locationInfo);
+        }
+
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            return base.UpdateData(saveModel);
+        }
+
+        public override WebResponseContent DeleteData(object[] keys)
+        {
+            return base.DeleteData(keys);
+        }
+
+        public WebResponseContent LocationEnableStatus(int[] keys)
+        {
+            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => keys.Contains(x.Id));
+            locationInfos.ForEach(x =>
+            {
+                x.EnableStatus = EnableEnum.Enable.ObjToInt();
+            });
+            Repository.UpdateData(locationInfos);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        public WebResponseContent LocationDisableStatus(int[] keys)
+        {
+            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => keys.Contains(x.Id));
+            locationInfos.ForEach(x =>
+            {
+                x.EnableStatus = EnableEnum.Disable.ObjToInt();
+            });
+            Repository.UpdateData(locationInfos);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        public WebResponseContent LocationEnableStatus(int key)
+        {
+            return LocationEnableStatus(new int[] { key });
+        }
+
+        public WebResponseContent LocationDisableStatus(int key)
+        {
+            return LocationDisableStatus(new int[] { key });
+        }
+
+        public WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO)
+        {
+            try
+            {
+                (bool, string, object?) result = ModelValidate.ValidateModelData(initializationLocationDTO);
+                if (!result.Item1) return WebResponseContent.Instance.Error(result.Item2);
+
+                int side = 1;
+                List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
+                for (int i = 0; i < initializationLocationDTO.MaxRow; i++)
+                {
+                    for (int j = 0; j < initializationLocationDTO.MaxColumn; j++)
+                    {
+                        for (int k = 0; k < initializationLocationDTO.MaxLayer; k++)
+                        {
+                            Dt_LocationInfo locationInfo = new Dt_LocationInfo()
+                            {
+                                AreaId = 0,
+                                Column = j + 1,
+                                EnableStatus = EnableStatusEnum.Normal.ObjToInt(),
+                                Layer = k + 1,
+                                LocationStatus = LocationStatusEnum.Free.ObjToInt(),
+                                LocationType = 1,
+                                RoadwayNo = initializationLocationDTO.Roadway,
+                                Row = i + 1,
+                            };
+
+                            if (initializationLocationDTO.IsSingleDepth)
+                            {
+                                locationInfo.Depth = 1;
+                                locationInfo.LocationCode = $"R{initializationLocationDTO.Roadway.ToString().PadLeft(2, '0')}-{locationInfo.Row.ToString().PadLeft(3, '0')}-{locationInfo.Column.ToString().PadLeft(3, '0')}-{locationInfo.Layer.ToString().PadLeft(3, '0')}-{locationInfo.Depth.ToString().PadLeft(2, '0')}";
+                                locationInfo.LocationName = $"R{initializationLocationDTO.Roadway.ToString().PadLeft(2, '0')}宸烽亾{locationInfo.Row.ToString().PadLeft(3, '0')}琛寋locationInfo.Column.ToString().PadLeft(3, '0')}鍒梴locationInfo.Layer.ToString().PadLeft(3, '0')}灞倇locationInfo.Depth.ToString().PadLeft(2, '0')}娣�";
+                            }
+                            else
+                            {
+                                if (initializationLocationDTO.FirstDepthRows.Contains(i + 1))
+                                {
+                                    locationInfo.Depth = 1;
+                                }
+                                else
+                                {
+                                    locationInfo.Depth = 2;
+                                }
+                                locationInfo.LocationCode = $"R{initializationLocationDTO.Roadway.ToString().PadLeft(2, '0')}-{locationInfo.Row.ToString().PadLeft(3, '0')}-{locationInfo.Column.ToString().PadLeft(3, '0')}-{locationInfo.Layer.ToString().PadLeft(3, '0')}-{locationInfo.Depth.ToString().PadLeft(2, '0')}";
+                                locationInfo.LocationName = $"R{initializationLocationDTO.Roadway.ToString().PadLeft(2, '0')}宸烽亾{locationInfo.Row.ToString().PadLeft(3, '0')}琛寋locationInfo.Column.ToString().PadLeft(3, '0')}鍒梴locationInfo.Layer.ToString().PadLeft(3, '0')}灞倇locationInfo.Depth.ToString().PadLeft(2, '0')}娣�";
+                            }
+
+                            locationInfos.Add(locationInfo);
+                        }
+                    }
+                }
+
+                BaseDal.AddData(locationInfos);
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Base/MaterielInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Base/MaterielInfoService.cs"
new file mode 100644
index 0000000..d62643b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Base/MaterielInfoService.cs"
@@ -0,0 +1,37 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_IBasicService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_BasicService
+{
+    public partial class MaterielInfoService : ServiceBase<Dt_MaterielInfo, IMaterielInfoRepository>, IMaterielInfoService
+    {
+        public MaterielInfoService(IMaterielInfoRepository BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IMaterielInfoRepository Repository => BaseDal;
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            return base.AddData(saveModel);
+        }
+
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            return base.UpdateData(saveModel);
+        }
+
+        public override WebResponseContent DeleteData(object[] keys)
+        {
+            return base.DeleteData(keys);
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/BasicService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/BasicService.cs"
new file mode 100644
index 0000000..c2f7312
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/BasicService.cs"
@@ -0,0 +1,28 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_IBasicService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_Core.Helper;
+
+namespace WIDESEAWCS_BasicService
+{
+    public class BasicService : IBasicService
+    {
+
+        public ILocationInfoService LocationInfoService { get; }
+
+        public IMaterielInfoService MaterielInfoService { get; }
+
+        public BasicService(ILocationInfoService locationInfoService, IMaterielInfoService materielInfoService)
+        {
+            LocationInfoService = locationInfoService;
+            MaterielInfoService = materielInfoService;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Service/LocationInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Service/LocationInfoService.cs"
new file mode 100644
index 0000000..fc77353
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Service/LocationInfoService.cs"
@@ -0,0 +1,22 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.Utilities;
+using WIDESEAWCS_DTO.Basic;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_IBasicService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_BasicService
+{
+    public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, ILocationInfoRepository>, ILocationInfoService
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Service/MaterielInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Service/MaterielInfoService.cs"
new file mode 100644
index 0000000..fb32ce0
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Service/MaterielInfoService.cs"
@@ -0,0 +1,41 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_IBasicService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_BasicService
+{
+    public partial class MaterielInfoService : ServiceBase<Dt_MaterielInfo, IMaterielInfoRepository>, IMaterielInfoService
+    {
+
+        public bool ExsitMateriel(string materielCode)
+        {
+            return BaseDal.QueryFirst(x => x.MaterielCode == materielCode) != null;
+        }
+
+        public bool ExsitMateriels(List<string> materielCodes)
+        {
+            return BaseDal.QueryFirst(x => materielCodes.Contains(x.MaterielCode)) != null;
+        }
+
+        public Dt_MaterielInfo GetMaterielInfo(string materielCode)
+        {
+            return BaseDal.QueryFirst(x => x.MaterielCode == materielCode);
+        }
+
+        /// <summary>
+        /// 鏌ヨ鐗╂枡淇℃伅
+        /// </summary>
+        /// <param name="materielCodes"></param>
+        /// <returns></returns>
+        public List<Dt_MaterielInfo> GetMaterielInfos(List<string> materielCodes)
+        {
+            return BaseDal.QueryData(x => materielCodes.Contains(x.MaterielCode));
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/WIDESEAWCS_BasicService.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/WIDESEAWCS_BasicService.csproj"
new file mode 100644
index 0000000..1f84f29
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/WIDESEAWCS_BasicService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_IBasicService\WIDESEAWCS_IBasicService.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/CommonEnum/EnableEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/CommonEnum/EnableEnum.cs"
new file mode 100644
index 0000000..8b96971
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/CommonEnum/EnableEnum.cs"
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common.CommonEnum
+{
+    /// <summary>
+    /// 鍚鐘舵��
+    /// </summary>
+    public enum EnableEnum
+    {
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        [Description("绂佺敤")]
+        Disable = 0,
+
+        /// <summary>
+        /// 鍚敤
+        /// </summary>
+        [Description("鍚敤")]
+        Enable = 1,
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/CommonEnum/OperateType.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/CommonEnum/OperateType.cs"
new file mode 100644
index 0000000..ba2cd0a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/CommonEnum/OperateType.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common.CommonEnum
+{
+    public enum OperateType
+    {
+        浜哄伐鍒犻櫎 = 1,
+        鑷姩鍒犻櫎 = 2,
+        浜哄伐鎭㈠ = 3,
+        鑷姩鎭㈠ = 4,
+        浜哄伐瀹屾垚 = 5,
+        鑷姩瀹屾垚 = 6,
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/EnableStatusEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/EnableStatusEnum.cs"
new file mode 100644
index 0000000..a7e0826
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/EnableStatusEnum.cs"
@@ -0,0 +1,36 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common.LocationEnum
+{
+    public enum EnableStatusEnum
+    {
+        /// <summary>
+        /// 姝e父
+        /// </summary>
+        [Description("姝e父")]
+        Normal = 0,
+
+        /// <summary>
+        /// 鍙叆
+        /// </summary>
+        [Description("鍙叆")]
+        OnlyIn = 1,
+
+        /// <summary>
+        /// 鍙嚭
+        /// </summary>
+        [Description("鍙嚭")]
+        OnlyOut = 2,
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        [Description("绂佺敤")]
+        Disable = 3
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/LocationStatusEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/LocationStatusEnum.cs"
new file mode 100644
index 0000000..c753fd8
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/LocationStatusEnum.cs"
@@ -0,0 +1,39 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common.LocationEnum
+{
+    /// <summary>
+    /// 璐т綅鐘舵��
+    /// </summary>
+    public enum LocationStatusEnum
+    {
+        /// <summary>
+        /// 绌洪棽
+        /// </summary>
+        [Description("绌洪棽")]
+        Free = 0,
+
+        /// <summary>
+        /// 閿佸畾
+        /// </summary>
+        [Description("閿佸畾")]
+        Lock = 1,
+
+        /// <summary>
+        /// 鏈夎揣
+        /// </summary>
+        [Description("鏈夎揣")]
+        InStock = 2,
+
+
+        PalletLock = 98,
+
+        [Description("绌烘墭鐩�")]
+        Pallet = 99
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OrderDetailStatusEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OrderDetailStatusEnum.cs"
new file mode 100644
index 0000000..a801663
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OrderDetailStatusEnum.cs"
@@ -0,0 +1,38 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common.OrderEnum
+{
+    public enum OrderDetailStatusEnum
+    {
+        /// <summary>
+        /// 鏂板缓
+        /// </summary>
+        [Description("鏂板缓")]
+        New = 0,
+
+        /// <summary>
+        /// 缁勭洏鍏ュ簱
+        /// </summary>
+        [Description("缁勭洏鍏ュ簱")]
+        GroupAndInbound = 10,
+
+        [Description("鍑哄簱閮ㄥ垎鍒嗛厤瀹屾垚")]
+        AssignOverPartial = 60,
+
+        [Description("鍑哄簱鍒嗛厤瀹屾垚")]
+        AssignOver = 70,
+
+        [Description("鍑哄簱涓�")]
+        Outbound = 80,
+        /// <summary>
+        /// 瀹屾垚
+        /// </summary>
+        [Description("瀹屾垚")]
+        Over = 100
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OutOrderTypeEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OutOrderTypeEnum.cs"
new file mode 100644
index 0000000..0ec12f4
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OutOrderTypeEnum.cs"
@@ -0,0 +1,63 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common.OrderEnum
+{
+    /// <summary>
+    /// 鍑哄簱鍗曠被鍨�
+    /// </summary>
+    public enum OutOrderTypeEnum
+    {
+        /// <summary>
+        /// 鐢熶骇杩斿伐鍗�
+        /// </summary>
+        [Description("鐢熶骇杩斿伐鍗�")]
+        Rework = 200,
+
+        /// <summary>
+        /// 鐢熶骇鍙戞枡鍗�
+        /// </summary>
+        [Description("鐢熶骇鍙戞枡鍗�")]
+        Issue = 205,
+
+        /// <summary>
+        /// 閲囪喘閫�璐у崟
+        /// </summary>
+        [Description("閲囪喘閫�璐у崟")]
+        ProcureReturn = 210,
+
+        /// <summary>
+        /// 璋冩嫧鍑哄簱鍗�
+        /// </summary>
+        [Description("璋冩嫧鍑哄簱鍗�")]
+        Allocate = 215,
+
+        /// <summary>
+        /// 閿�鍞嚭搴撳崟
+        /// </summary>
+        [Description("閿�鍞嚭搴撳崟")]
+        SaleOut = 220,
+
+        /// <summary>
+        /// 绌虹洏鍑哄簱鍗�
+        /// </summary>
+        [Description("绌虹洏鍑哄簱鍗�")]
+        EmptyDisk = 225,
+
+        /// <summary>
+        /// 璐ㄦ鍑哄簱鍗�
+        /// </summary>
+        [Description("璐ㄦ鍑哄簱鍗�")]
+        Quality = 230,
+
+        /// <summary>
+        /// 鍏朵粬鍑哄簱鍗�
+        /// </summary>
+        [Description("鍏朵粬鍑哄簱鍗�")]
+        Other = 235
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OutboundStatusEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OutboundStatusEnum.cs"
new file mode 100644
index 0000000..6b99d4d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OutboundStatusEnum.cs"
@@ -0,0 +1,44 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common.OrderEnum
+{
+    #region
+    public enum OutboundStatusEnum
+    {
+        /// <summary>
+        /// 鏈紑濮�
+        /// </summary>
+        [Description("鏈紑濮�")]
+        鏈紑濮� = 0,
+
+        /// <summary>
+        /// 鍑哄簱涓�
+        /// </summary>
+        [Description("鍑哄簱涓�")]
+        鍏ュ簱涓� = 1,
+
+        /// <summary>
+        /// 鍑哄簱瀹屾垚
+        /// </summary>
+        [Description("鍑哄簱瀹屾垚")]
+        鍏ュ簱瀹屾垚 = 2,
+
+        /// <summary>
+        /// 鍏抽棴
+        /// </summary>
+        [Description("鍏抽棴")]
+        鍏抽棴 = 99,
+
+        /// <summary>
+        /// 鍙栨秷
+        /// </summary>
+        [Description("鍙栨秷")]
+        鍙栨秷 = 98
+    }
+    #endregion
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/SequenceEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/SequenceEnum.cs"
new file mode 100644
index 0000000..1064032
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/SequenceEnum.cs"
@@ -0,0 +1,13 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common
+{
+    public enum SequenceEnum
+    {
+        SeqTaskNum
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/OutStockStatus.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/OutStockStatus.cs"
new file mode 100644
index 0000000..72a4026
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/OutStockStatus.cs"
@@ -0,0 +1,24 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common.StockEnum
+{
+    public enum OutStockStatus
+    {
+        [Description("宸插垎閰�")]
+        宸插垎閰� = 0,
+
+        [Description("鍑哄簱涓�")]
+        鍑哄簱涓� = 1,
+
+        [Description("鍑哄簱瀹屾垚")]
+        鍑哄簱瀹屾垚 = 2,
+
+        [Description("鎾ら攢")]
+        鎾ら攢 = 99
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/StockChangeType.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/StockChangeType.cs"
new file mode 100644
index 0000000..38620fe
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/StockChangeType.cs"
@@ -0,0 +1,30 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common.StockEnum
+{
+    public enum StockChangeType
+    {
+        /// <summary>
+        /// 缁勭洏
+        /// </summary>
+        [Description("")]
+        MaterielGroup,
+
+        /// <summary>
+        /// 鍏ュ簱
+        /// </summary>
+        [Description("")]
+        Inbound,
+
+        /// <summary>
+        /// 鍑哄簱
+        /// </summary>
+        [Description("")]
+        Outbound,
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/StockStatusEmun.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/StockStatusEmun.cs"
new file mode 100644
index 0000000..588867f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/StockStatusEmun.cs"
@@ -0,0 +1,36 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common.StockEnum
+{
+    public enum StockStatusEmun
+    {
+        [Description("缁勭洏鏆傚瓨")]
+        缁勭洏鏆傚瓨 = 1,
+
+        [Description("缁勭洏鎾ら攢")]
+        缁勭洏鎾ら攢 = 2,
+
+        [Description("鍏ュ簱纭")]
+        鍏ュ簱纭 = 3,
+
+        [Description("鍏ュ簱鎾ら攢")]
+        鍏ュ簱鎾ら攢 = 4,
+
+        [Description("宸插叆搴�")]
+        宸插叆搴� = 5,
+
+        [Description("鍏ュ簱瀹屾垚")]
+        鍏ュ簱瀹屾垚 = 6,
+
+        [Description("鍑哄簱閿佸畾")]
+        鍑哄簱閿佸畾 = 7,
+
+        [Description("鍑哄簱瀹屾垚")]
+        鍑哄簱瀹屾垚 = 8,
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/CachePointGroupDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/CachePointGroupDTO.cs"
new file mode 100644
index 0000000..f430de7
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/CachePointGroupDTO.cs"
@@ -0,0 +1,35 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_DTO.Basic
+{
+    public class CachePointGroupDTO
+    {
+        public int IdA { get; set; }
+
+        public int IdB { get; set; }
+
+        public string PointCodeA { get; set; }
+
+        public string PointCodeB { get; set; }
+
+        public int PointTypeA { get; set; }
+
+        public int PointTypeB { get; set; }
+
+        public int PointStatusA { get; set; }
+
+        public int PointStatusB { get; set; }
+
+        public int DepthA { get; set; }
+
+        public int DepthB { get; set; }
+
+        public int EnableStatusA { get; set; }
+
+        public int EnableStatusB { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/InitializationLocationDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/InitializationLocationDTO.cs"
new file mode 100644
index 0000000..72c04bd
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/InitializationLocationDTO.cs"
@@ -0,0 +1,49 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.Attributes;
+
+namespace WIDESEAWCS_DTO.Basic
+{
+    [ModelValidate]
+    public class InitializationLocationDTO
+    {
+        /// <summary>
+        /// 宸烽亾鍙�
+        /// </summary>
+        [PropertyValidate("宸烽亾鍙�", NotNullAndEmpty = true)]
+        public string Roadway { get; set; }
+
+        /// <summary>
+        /// 琛�
+        /// </summary>
+        [PropertyValidate("琛�", MinValue = 0, IsContainMinValue = false)]
+        public int MaxRow { get; set; }
+
+        /// <summary>
+        /// 鍒�
+        /// </summary>
+        [PropertyValidate("鍒�", MinValue = 0, IsContainMinValue = false)]
+        public int MaxColumn { get; set; }
+
+        /// <summary>
+        /// 灞�
+        /// </summary>
+        [PropertyValidate("灞�", MinValue = 0, IsContainMinValue = false)]
+        public int MaxLayer { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍗曟繁璐т綅
+        /// </summary>
+        [PropertyValidate("鏄惁鍗曟繁璐т綅", NotNullAndEmpty = true)]
+        public bool IsSingleDepth { get; set; }
+
+        /// <summary>
+        /// 涓�娣辫鍙�
+        /// </summary>
+        [PropertyValidate("涓�娣辫鍙�", NotNullAndEmptyWithPropertyAndValue = new string[] { nameof(IsSingleDepth), "false" })]
+        public List<int> FirstDepthRows { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/LocationGroupDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/LocationGroupDTO.cs"
new file mode 100644
index 0000000..5556bed
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/LocationGroupDTO.cs"
@@ -0,0 +1,35 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_DTO.Basic
+{
+    public class LocationGroupDTO
+    {
+        public int IdA { get; set; }
+
+        public int IdB { get; set; }
+
+        public string LocationCodeA { get; set; }
+
+        public string LocationCodeB { get; set; }
+
+        public int LocationTypeA { get; set; }
+
+        public int LocationTypeB { get; set; }
+
+        public int LocationStatusA { get; set; }
+
+        public int LocationStatusB { get; set; }
+
+        public int DepthA { get; set; }
+
+        public int DepthB { get; set; }
+
+        public int EnableStatusA { get; set; }
+
+        public int EnableStatusB { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Outbound/OutboundOrderAddDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Outbound/OutboundOrderAddDTO.cs"
new file mode 100644
index 0000000..64314b0
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Outbound/OutboundOrderAddDTO.cs"
@@ -0,0 +1,32 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.Attributes;
+
+namespace WIDESEAWCS_DTO.Outbound
+{
+    [ModelValidate]
+    public class OutboundOrderAddDTO
+    {
+        /// <summary>
+        /// 涓婃父鍗曟嵁缂栧彿
+        /// </summary>
+        public string UpperOrderNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+        [PropertyValidate("鍗曟嵁绫诲瀷", NotNullAndEmpty = true)]
+        public int OrderType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        [PropertyValidate("鍗曟嵁鏄庣粏淇℃伅", NotNullAndEmpty = true)]
+        public List<OutboundOrderDetailAddDTO> Details { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Outbound/OutboundOrderDetailAddDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Outbound/OutboundOrderDetailAddDTO.cs"
new file mode 100644
index 0000000..13ae703
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Outbound/OutboundOrderDetailAddDTO.cs"
@@ -0,0 +1,35 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.Attributes;
+
+namespace WIDESEAWCS_DTO.Outbound
+{
+    [ModelValidate]
+    public class OutboundOrderDetailAddDTO
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [PropertyValidate("鐗╂枡缂栧彿", NotNullAndEmpty = true)]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        public string BatchNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏁伴噺
+        /// </summary>
+        [PropertyValidate("鍗曟嵁鏁伴噺", NotNullAndEmpty = true, MinValue = 0, IsContainMinValue = false)]
+        public decimal OrderQuantity { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Stock/StockSelectViewDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Stock/StockSelectViewDTO.cs"
new file mode 100644
index 0000000..1c9932d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Stock/StockSelectViewDTO.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_DTO.Stock
+{
+    public class StockSelectViewDTO
+    {
+
+        public string MaterielCode {  get; set; }
+
+        public string MaterielName { get; set; }
+
+        public decimal UseableQuantity { get; set; }
+
+        public string PalletCode {  get; set; }
+
+        public string LocationCode {  get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Stock/StockViewDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Stock/StockViewDTO.cs"
new file mode 100644
index 0000000..cd59d46
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Stock/StockViewDTO.cs"
@@ -0,0 +1,59 @@
+锘�
+using Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_DTO.Stock
+{
+    public class StockViewDTO
+    {
+        public int AreaId { get; set; }
+
+        public string LocationCode { get; set; }
+
+        public string LocationName { get; set; }
+
+        public int Column { get; set; }
+
+        public int Row { get; set; }
+
+        public int Layer { get; set; }
+
+        public int Depth { get; set; }
+
+        public int LocationStatus { get; set; }
+
+        public int LocationType { get; set; }
+
+        public string RoadwayNo { get; set; }
+
+        public int EnalbeStatus { get; set; }
+
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int StockId { get; set; }
+
+        public string PalletCode { get; set; }
+
+        public bool IsFull { get; set; }
+
+        public int StockStatus { get; set; }
+
+        public string StockRemark { get; set; }
+
+        public string Creater { get; set; }
+
+        public DateTime CreateDate { get; set; }
+
+        public string Modifier { get; set; }
+
+        public DateTime? ModifyDate { get; set; }
+
+        [Navigate(NavigateType.OneToMany, nameof(Dt_StockInfoDetail.StockId), nameof(StockId))]
+        public List<Dt_StockInfoDetail> Details { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/IBasicRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/IBasicRepository.cs"
new file mode 100644
index 0000000..2f3bb60
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/IBasicRepository.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+
+namespace WIDESEAWCS_IBasicRepository
+{
+    public interface IBasicRepository : IDependency
+    {
+
+        ILocationInfoRepository LocationInfoRepository { get; }
+
+        IMaterielInfoRepository MaterielInfoRepository { get; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/ILocationInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/ILocationInfoRepository.cs"
new file mode 100644
index 0000000..c088211
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/ILocationInfoRepository.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_DTO.Basic;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IBasicRepository
+{
+    public interface ILocationInfoRepository : IRepository<Dt_LocationInfo>
+    {
+        
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/IMaterielInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/IMaterielInfoRepository.cs"
new file mode 100644
index 0000000..9fcae65
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/IMaterielInfoRepository.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IBasicRepository
+{
+    public interface IMaterielInfoRepository : IRepository<Dt_MaterielInfo>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/WIDESEAWCS_IBasicRepository.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/WIDESEAWCS_IBasicRepository.csproj"
new file mode 100644
index 0000000..0739338
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/WIDESEAWCS_IBasicRepository.csproj"
@@ -0,0 +1,13 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_DTO\WIDESEAWCS_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/IBasicService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/IBasicService.cs"
new file mode 100644
index 0000000..b473799
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/IBasicService.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+
+namespace WIDESEAWCS_IBasicService
+{
+    public interface IBasicService: IDependency
+    {
+        ILocationInfoService LocationInfoService { get; }
+
+        IMaterielInfoService MaterielInfoService { get; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/ILocationInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/ILocationInfoService.cs"
new file mode 100644
index 0000000..77c2570
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/ILocationInfoService.cs"
@@ -0,0 +1,28 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_DTO.Basic;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IBasicService
+{
+    public interface ILocationInfoService : IService<Dt_LocationInfo>
+    {
+        ILocationInfoRepository Repository { get; }
+
+        WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO);
+
+        WebResponseContent LocationEnableStatus(int[] keys);
+
+        WebResponseContent LocationDisableStatus(int[] keys);
+
+        WebResponseContent LocationEnableStatus(int key);
+
+        WebResponseContent LocationDisableStatus(int key);
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/IMaterielInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/IMaterielInfoService.cs"
new file mode 100644
index 0000000..77c63c1
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/IMaterielInfoService.cs"
@@ -0,0 +1,26 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IBasicService
+{
+    public interface IMaterielInfoService : IService<Dt_MaterielInfo>
+    {
+        IMaterielInfoRepository Repository { get; }
+
+        bool ExsitMateriel(string materielCode);
+
+        bool ExsitMateriels(List<string> materielCodes);
+
+        Dt_MaterielInfo GetMaterielInfo(string materielCode);
+
+        List<Dt_MaterielInfo> GetMaterielInfos(List<string> materielCodes);
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/WIDESEAWCS_IBasicService.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/WIDESEAWCS_IBasicService.csproj"
new file mode 100644
index 0000000..3871ff0
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/WIDESEAWCS_IBasicService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_BasicRepository\WIDESEAWCS_BasicRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutStockLockInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutStockLockInfoRepository.cs"
new file mode 100644
index 0000000..5d970a1
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutStockLockInfoRepository.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IOutboundRepository
+{
+    public interface IOutStockLockInfoRepository : IRepository<Dt_OutStockLockInfo>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundOrderDetailRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundOrderDetailRepository.cs"
new file mode 100644
index 0000000..5063884
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundOrderDetailRepository.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IOutboundRepository
+{
+    public interface IOutboundOrderDetailRepository : IRepository<Dt_OutboundOrderDetail>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundOrderRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundOrderRepository.cs"
new file mode 100644
index 0000000..1cbd38e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundOrderRepository.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IOutboundRepository
+{
+    public interface IOutboundOrderRepository : IRepository<Dt_OutboundOrder>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundRepository.cs"
new file mode 100644
index 0000000..f905659
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+
+namespace WIDESEAWCS_IOutboundRepository
+{
+    public interface IOutboundRepository : IDependency
+    {
+        IOutboundOrderDetailRepository OutboundOrderDetailRepository { get; }
+
+        IOutboundOrderRepository OutboundOrderRepository { get; }
+
+        IOutStockLockInfoRepository OutboundStockLockInfoRepository { get; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/WIDESEAWCS_IOutboundRepository.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/WIDESEAWCS_IOutboundRepository.csproj"
new file mode 100644
index 0000000..c159328
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/WIDESEAWCS_IOutboundRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_DTO\WIDESEAWCS_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutStockLockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutStockLockInfoService.cs"
new file mode 100644
index 0000000..800bc08
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutStockLockInfoService.cs"
@@ -0,0 +1,24 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.StockEnum;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_IOutboundRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IOutboundService
+{
+    public interface IOutStockLockInfoService : IService<Dt_OutStockLockInfo>
+    {
+        IOutStockLockInfoRepository Repository { get; }
+
+        List<Dt_OutStockLockInfo> GetOutStockLockInfos(Dt_OutboundOrder outboundOrder, Dt_OutboundOrderDetail outboundOrderDetail, List<Dt_StockInfo> outStocks, int? taskNum = null);
+
+        List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId);
+
+        List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId, OutStockStatus outStockStatus);
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundOrderDetailService.cs"
new file mode 100644
index 0000000..fb371ef
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundOrderDetailService.cs"
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.LocationEnum;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_DTO.Stock;
+using WIDESEAWCS_IOutboundRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IOutboundService
+{
+    public interface IOutboundOrderDetailService : IService<Dt_OutboundOrderDetail>
+    {
+        IOutboundOrderDetailRepository Repository { get; }
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundOrderService.cs"
new file mode 100644
index 0000000..0687f22
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundOrderService.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_DTO.Outbound;
+using WIDESEAWCS_IOutboundRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IOutboundService
+{
+    public interface IOutboundOrderService : IService<Dt_OutboundOrder>
+    {
+        IOutboundOrderRepository Repository { get; }
+
+        WebResponseContent AddOutboundOrder(OutboundOrderAddDTO orderAddDTO);
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundService.cs"
new file mode 100644
index 0000000..0855e12
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundService.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+
+namespace WIDESEAWCS_IOutboundService
+{
+    public interface IOutboundService : IDependency
+    {
+        IOutboundOrderDetailService OutboundOrderDetailService { get; }
+
+        IOutboundOrderService OutboundOrderService { get; }
+
+        IOutStockLockInfoService OutboundStockLockInfoService { get; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/WIDESEAWCS_IOutboundService.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/WIDESEAWCS_IOutboundService.csproj"
new file mode 100644
index 0000000..fce3d60
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/WIDESEAWCS_IOutboundService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_OutboundRepository\WIDESEAWCS_OutboundRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/ILocationStatusChangeRecordRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/ILocationStatusChangeRecordRepository.cs"
new file mode 100644
index 0000000..b58889d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/ILocationStatusChangeRecordRepository.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IRecordRepository
+{
+    public interface ILocationStatusChangeRecordRepository : IRepository<Dt_LocationStatusChangeRecord>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/IRecordRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/IRecordRepository.cs"
new file mode 100644
index 0000000..fe4bd3b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/IRecordRepository.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+
+namespace WIDESEAWCS_IRecordRepository
+{
+    public interface IRecordRepository : IDependency
+    {
+        ILocationStatusChangeRecordRepository LocationStatusChangeRecordRepository { get; }
+
+        IStockQuantityChangeRecordRepository StockQuantityChangeRecordRepository { get; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/IStockQuantityChangeRecordRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/IStockQuantityChangeRecordRepository.cs"
new file mode 100644
index 0000000..a7c72f2
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/IStockQuantityChangeRecordRepository.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IRecordRepository
+{
+    public interface IStockQuantityChangeRecordRepository : IRepository<Dt_StockQuantityChangeRecord>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/WIDESEAWCS_IRecordRepository.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/WIDESEAWCS_IRecordRepository.csproj"
new file mode 100644
index 0000000..c159328
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/WIDESEAWCS_IRecordRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_DTO\WIDESEAWCS_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/ILocationStatusChangeRecordSetvice.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/ILocationStatusChangeRecordSetvice.cs"
new file mode 100644
index 0000000..fa10819
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/ILocationStatusChangeRecordSetvice.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_IRecordRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IRecordService
+{
+    public interface ILocationStatusChangeRecordSetvice : IService<Dt_LocationStatusChangeRecord>
+    {
+        ILocationStatusChangeRecordRepository Repository { get; }
+
+        void AddLocationStatusChangeRecord(Dt_LocationInfo locationInfo, int lastStatus, int changeType, string orderNo, int? taskNum);
+
+        void AddLocationStatusChangeRecord(List<Dt_LocationInfo> locationInfos, int newStatus, int changeType, string? orderNo, List<int>? taskNums);
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/IRecordService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/IRecordService.cs"
new file mode 100644
index 0000000..7885778
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/IRecordService.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+
+namespace WIDESEAWCS_IRecordService
+{
+    public interface IRecordService : IDependency
+    {
+        ILocationStatusChangeRecordSetvice LocationStatusChangeRecordSetvice { get; }
+
+        IStockQuantityChangeRecordService StockQuantityChangeRecordService { get; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/IStockQuantityChangeRecordService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/IStockQuantityChangeRecordService.cs"
new file mode 100644
index 0000000..019f01d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/IStockQuantityChangeRecordService.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.StockEnum;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_IRecordRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IRecordService
+{
+    public interface IStockQuantityChangeRecordService : IService<Dt_StockQuantityChangeRecord>
+    {
+        IStockQuantityChangeRecordRepository Repository { get; }
+
+        void AddStockChangeRecord(Dt_StockInfo stockInfo, List<Dt_StockInfoDetail> stockInfoDetails, decimal beforeQuantity, decimal totalQuantity, StockChangeType changeType);
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/WIDESEAWCS_IRecordService.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/WIDESEAWCS_IRecordService.csproj"
new file mode 100644
index 0000000..28729cd
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/WIDESEAWCS_IRecordService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_RecordRepository\WIDESEAWCS_RecordRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockInfoDetailRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockInfoDetailRepository.cs"
new file mode 100644
index 0000000..d461fd7
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockInfoDetailRepository.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IStockRepository
+{
+    public interface IStockInfoDetailRepository : IRepository<Dt_StockInfoDetail>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockInfoRepository.cs"
new file mode 100644
index 0000000..1ddf2cb
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockInfoRepository.cs"
@@ -0,0 +1,32 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_DTO.Stock;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IStockRepository
+{
+    public interface IStockInfoRepository : IRepository<Dt_StockInfo>
+    {
+        List<StockViewDTO> GetAllStockViews();
+
+        Dt_StockInfo GetStockInfo(string palletCode);
+
+        List<Dt_StockInfo> GetStockInfos(string materielCode);
+
+        List<Dt_StockInfo> GetStockInfos(string materielCode, List<string> locationCodes);
+
+        List<Dt_StockInfo> GetStockInfosByIds(List<int> ids);
+
+        List<Dt_StockInfo> GetStockInfosByPalletCodes(List<string> palletCodes);
+
+        List<Dt_StockInfo> GetStockInfosExclude(string materielCode, List<string> palletCodes);
+
+        bool UpdateDataWithDetail(Dt_StockInfo stockInfo);
+
+        Dt_StockInfo GetPalletStockInfo(string roadwayNo);
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockRepository.cs"
new file mode 100644
index 0000000..499eb6f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockRepository.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+
+namespace WIDESEAWCS_IStockRepository
+{
+    public interface IStockRepository : IDependency
+    {
+        IStockInfoDetailRepository StockInfoDetailRepository { get; }
+
+        IStockInfoRepository StockInfoRepository { get; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/WIDESEAWCS_IStockRepository.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/WIDESEAWCS_IStockRepository.csproj"
new file mode 100644
index 0000000..c159328
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/WIDESEAWCS_IStockRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_DTO\WIDESEAWCS_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockInfoDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockInfoDetailService.cs"
new file mode 100644
index 0000000..0ba370d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockInfoDetailService.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_IStockRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IStockService
+{
+    public interface IStockInfoDetailService : IService<Dt_StockInfoDetail>
+    {
+        IStockInfoDetailRepository Repository { get; }
+
+        bool ExistSerialNumber(string SerialNumber);
+
+        bool ExistSerialNumbers(List<string> SerialNumbers);
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockInfoService.cs"
new file mode 100644
index 0000000..64a4fb8
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockInfoService.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_DTO.Stock;
+using WIDESEAWCS_IStockRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IStockService
+{
+    public interface IStockInfoService : IService<Dt_StockInfo>
+    {
+        IStockInfoRepository Repository { get; }
+
+        Dt_StockInfo? GetStockByPalletCode(string palletCode);
+
+        void AddMaterielGroup(Dt_StockInfo stockInfo);
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockService.cs"
new file mode 100644
index 0000000..6ea35af
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockService.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+
+namespace WIDESEAWCS_IStockService
+{
+    public interface IStockService : IDependency
+    {
+        IStockInfoDetailService StockInfoDetailService { get; }
+
+        IStockInfoService StockInfoService { get; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockViewService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockViewService.cs"
new file mode 100644
index 0000000..5a292bf
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockViewService.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_DTO.Stock;
+
+namespace WIDESEAWCS_IStockService
+{
+    public interface IStockViewService : IDependency
+    {
+        PageGridData<StockViewDTO> GetPageData(PageDataOptions options);
+
+        object GetDetailPage(PageDataOptions pageData);
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/WIDESEAWCS_IStockService.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/WIDESEAWCS_IStockService.csproj"
new file mode 100644
index 0000000..1f91f9e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/WIDESEAWCS_IStockService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_StockRepository\WIDESEAWCS_StockRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Basic/Dt_LocationInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Basic/Dt_LocationInfo.cs"
new file mode 100644
index 0000000..b89e4e5
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Basic/Dt_LocationInfo.cs"
@@ -0,0 +1,56 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.DB.Models;
+
+namespace WIDESEAWCS_Model.Models
+{
+    [SugarTable(nameof(Dt_LocationInfo), "璐т綅淇℃伅")]
+    public class Dt_LocationInfo : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍖哄煙涓婚敭")]
+        public int AreaId {  get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "璐т綅缂栧彿")]
+        public string LocationCode {  get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "璐т綅鍚嶇О")]
+        public string LocationName { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "宸烽亾缂栧彿")]
+        public string RoadwayNo {  get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅琛�")]
+        public int Row {  get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅鍒�")]
+        public int Column { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅灞�")]
+        public int Layer {  get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅娣卞害")]
+        public int Depth {  get; set; }
+
+        //[SugarColumn(IsNullable = false, ColumnDescription = "宸︿晶/鍙充晶")]
+        //public int LocationSide {  get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅绫诲瀷")]
+        public int LocationType {  get; set; }
+
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "璐т綅鐘舵��")]
+        public int LocationStatus {  get; set; }
+
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "绂佺敤鐘舵��")]
+        public int EnableStatus { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark {  get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Basic/Dt_MaterielInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Basic/Dt_MaterielInfo.cs"
new file mode 100644
index 0000000..d5f24da
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Basic/Dt_MaterielInfo.cs"
@@ -0,0 +1,56 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.DB.Models;
+
+namespace WIDESEAWCS_Model.Models
+{
+    [SugarTable(nameof(Dt_MaterielInfo), "鐗╂枡淇℃伅")]
+    public class Dt_MaterielInfo : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍖哄煙涓婚敭")]
+        public int AreaId { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "鐗╂枡鎻忚堪")]
+        public string MaterielDes { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "瀹瑰櫒绫诲瀷", DefaultValue = "0")]
+        public int CotainerType { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鍖呰瑙勬牸")]
+        public string Packspes { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐗╂枡灞炴��", DefaultValue = "0")]
+        public int Attribute { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "璁¢噺鍗曚綅", DefaultValue = "0")]
+        public string Unit { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏈夋晥鏈�", DefaultValue = "-1")]
+        public int Validity { get; set; }
+
+        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "瀹夊叏搴撳瓨", DefaultValue = "-1")]
+        public decimal SafetyStock { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏄惁鍏佽娣锋壒")]
+        public bool IsMixBatch { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏄惁鍏佽娣锋枡")]
+        public bool IsMixMateriel { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundLockInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundLockInfo.cs"
new file mode 100644
index 0000000..7bf125a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundLockInfo.cs"
@@ -0,0 +1,60 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.Attributes;
+using WIDESEAWCS_Core.DB.Models;
+
+namespace WIDESEAWCS_Model.Models
+{
+    [SugarTable(nameof(Dt_OutStockLockInfo), "鍑哄簱璇︽儏")]
+    public class Dt_OutStockLockInfo : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿")]
+        public string OrderNo { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁鏄庣粏涓婚敭")]
+        public int OrderDetailId { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁绫诲瀷")]
+        public int OrderType { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鎵规鍙�")]
+        public string BatchNo { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "搴撳瓨涓婚敭")]
+        public int StockId { get; set; }
+
+        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "鍗曟嵁鏁伴噺")]
+        public decimal OrderQuantity { get; set; }
+
+        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "鍘熷搴撳瓨閲�")]
+        public decimal OriginalQuantity {  get; set; }
+
+        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "鍒嗛厤鍑哄簱閲�")]
+        public decimal AssignQuantity {  get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "璐т綅缂栧彿")]
+        public string LocationCode { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+        public string PalletCode { get; set; }
+
+        [SugarColumn(IsNullable = true, ColumnDescription = "浠诲姟鍙�")]
+        public int? TaskNum { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐘舵��")]
+        public int Status { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundOrder.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundOrder.cs"
new file mode 100644
index 0000000..93d29f5
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundOrder.cs"
@@ -0,0 +1,40 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.Attributes;
+using WIDESEAWCS_Core.DB.Models;
+
+namespace WIDESEAWCS_Model.Models
+{
+    [SugarTable(nameof(Dt_OutboundOrder), "鍑哄簱鍗�")]
+    public class Dt_OutboundOrder : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        //[CodeRule(WIDESEA_Core.Enums.RuleCode.OutboundOrderRule)]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿", IsOnlyIgnoreUpdate = true)]
+        public string OrderNo { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "涓婃父鍗曟嵁缂栧彿", IsOnlyIgnoreUpdate = true)]
+        public string UpperOrderNo { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁绫诲瀷", IsOnlyIgnoreUpdate = true)]
+        public int OrderType { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁鐘舵��")]
+        public int OrderStatus { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍒涘缓鏂瑰紡", IsOnlyIgnoreUpdate = true)]
+        public int CreateType { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        [Navigate(NavigateType.OneToMany, nameof(Dt_OutboundOrderDetail.OrderId), nameof(Id))]
+        public List<Dt_OutboundOrderDetail> Details { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundOrderDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundOrderDetail.cs"
new file mode 100644
index 0000000..5052684
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundOrderDetail.cs"
@@ -0,0 +1,44 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.DB.Models;
+
+namespace WIDESEAWCS_Model.Models
+{
+    [SugarTable(nameof(Dt_OutboundOrderDetail), "鍑哄簱鍗曟槑缁�")]
+    public class Dt_OutboundOrderDetail : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍑哄簱鍗曚富閿�")]
+        public int OrderId { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鎵规鍙�")]
+        public string BatchNo { get; set; }
+
+        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "鍗曟嵁鏁伴噺")]
+        public decimal OrderQuantity { get; set; }
+
+        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "閿佸畾鏁伴噺", DefaultValue = "0")]
+        public decimal LockQuantity { get; set; }
+
+        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "宸插嚭鏁伴噺", DefaultValue = "0")]
+        public decimal OverOutQuantity { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟鏄庣粏鐘舵��")]
+        public int OrderDetailStatus { get; set; }
+
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Record/Dt_LocationStatusChangeRecord.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Record/Dt_LocationStatusChangeRecord.cs"
new file mode 100644
index 0000000..c3f7ad2
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Record/Dt_LocationStatusChangeRecord.cs"
@@ -0,0 +1,44 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.DB.Models;
+
+namespace WIDESEAWCS_Model.Models
+{
+    [SugarTable(nameof(Dt_LocationStatusChangeRecord),"璐т綅鐘舵�佸彉鍔ㄨ褰�")]
+    public class Dt_LocationStatusChangeRecord : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅涓婚敭")]
+        public int LocationId {  get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "璐т綅缂栧彿")]
+        public string LocationCode {  get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩鍓嶈揣浣嶇姸鎬�")]
+        public int BeforeStatus {  get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩鍚庤揣浣嶇姸鎬�")]
+        public int AfterStatus { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩绫诲瀷锛堝嚭搴撱�佸叆搴撱�佹墜鍔ㄨ皟鏁�...锛�")]
+        public int ChangeType {  get; set; }
+
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍗曟嵁涓婚敭")]
+        public int? OrderId { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿")]
+        public string OrderNo {  get; set; }
+
+        [SugarColumn(IsNullable = true, ColumnDescription = "浠诲姟鍙�")]
+        public int? TaskNum { get; set; }
+
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Record/Dt_StockQuantityChangeRecord.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Record/Dt_StockQuantityChangeRecord.cs"
new file mode 100644
index 0000000..152d343
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Record/Dt_StockQuantityChangeRecord.cs"
@@ -0,0 +1,56 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.DB.Models;
+
+namespace WIDESEAWCS_Model.Models
+{
+    [SugarTable(nameof(Dt_StockQuantityChangeRecord), "搴撳瓨鍙樺姩淇℃伅璁板綍")]
+    public class Dt_StockQuantityChangeRecord : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "搴撳瓨鏄庣粏涓婚敭")]
+        public int StockDetailId { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+        public string PalleCode { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鎵规鍙�")]
+        public string BatchNo { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 100, ColumnDescription = "搴忓垪鍙�")]
+        public string SerilNumber { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿")]
+        public string OrderNo { get; set; }
+
+        [SugarColumn(IsNullable = true, ColumnDescription = "浠诲姟鍙�")]
+        public int? TaskNum { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩绫诲瀷锛堝嚭搴撱�佸叆搴撱�佹墜鍔ㄨ皟鏁�...锛�")]
+        public int ChangeType { get; set; }
+
+        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "鍙樺姩鏁伴噺锛堟鏁拌〃绀哄鍔狅紝璐熸暟琛ㄧず鍑忓皯锛�")]
+        public decimal ChangeQuantity { get; set; }
+
+        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "鍙樺姩鍓嶅簱瀛橀噺", DefaultValue = "0")]
+        public decimal BeforeQuantity { get; set; }
+
+        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "鍙樺姩鍚庡簱瀛橀噺", DefaultValue = "0")]
+        public decimal AfterQuantity { get; set; }
+
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Stock/Dt_StockInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Stock/Dt_StockInfo.cs"
new file mode 100644
index 0000000..91f1f53
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Stock/Dt_StockInfo.cs"
@@ -0,0 +1,35 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.DB.Models;
+
+namespace WIDESEAWCS_Model.Models
+{
+    [SugarTable(nameof(Dt_StockInfo), "搴撳瓨淇℃伅")]
+    public class Dt_StockInfo : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+        public string PalletCode { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "璐т綅缂栧彿")]
+        public string LocationCode { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏄惁婊$洏", DefaultValue = "0")]
+        public bool IsFull { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "搴撳瓨鐘舵��")]
+        public int StockStatus { get; set; }
+
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        [Navigate(NavigateType.OneToMany, nameof(Dt_StockInfoDetail.StockId), nameof(Id))]
+        public List<Dt_StockInfoDetail> Details { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Stock/Dt_StockInfoDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Stock/Dt_StockInfoDetail.cs"
new file mode 100644
index 0000000..8925400
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Stock/Dt_StockInfoDetail.cs"
@@ -0,0 +1,50 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.DB.Models;
+
+namespace WIDESEAWCS_Model.Models
+{
+    [SugarTable(nameof(Dt_StockInfoDetail), "搴撳瓨淇℃伅鏄庣粏")]
+    public class Dt_StockInfoDetail : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "搴撳瓨淇℃伅涓婚敭")]
+        public int StockId { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿")]
+        public string OrderNo { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鎵规鍙�")]
+        public string BatchNo { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 100, ColumnDescription = "搴忓垪鍙�")]
+        public string SerialNumber { get; set; }
+
+        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "搴撳瓨鏁伴噺")]
+        public decimal StockQuantity { get; set; }
+
+        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "鍑哄簱鏁伴噺", DefaultValue = "0")]
+        public decimal OutboundQuantity { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "搴撳瓨鏄庣粏鐘舵��")]
+        public int Status { get; set; }
+
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        [Navigate(NavigateType.OneToOne, nameof(Dt_StockQuantityChangeRecord.StockDetailId), nameof(Id))]
+        public Dt_StockQuantityChangeRecord StockQuantityChangeRecord { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
index 889e3a0..d036b37 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
@@ -22,6 +22,8 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Core.Attributes;
 using WIDESEAWCS_Core.DB.Models;
 
 namespace WIDESEAWCS_Model.Models
@@ -42,7 +44,7 @@
         /// </summary>
         [ImporterHeader(Name = "浠诲姟鍙�")]
         [ExporterHeader(DisplayName = "浠诲姟鍙�")]
-        [SugarColumn(IsNullable = false, ColumnDescription = "浠诲姟鍙�")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠诲姟鍙�"), SequenceAttirbute(nameof(SequenceEnum.SeqTaskNum), 6000)]
         public int TaskNum { get; set; }
 
         /// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj"
index 80a43fc..6142f1f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj"
@@ -8,7 +8,7 @@
 
 	<ItemGroup>
 		<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
-		<PackageReference Include="WIDESEAWCS_Core" Version="1.0.5" />
+		<PackageReference Include="WIDESEAWCS_Core" Version="1.0.6" />
 	</ItemGroup>
 
 	<ItemGroup>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutStockLockInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutStockLockInfoRepository.cs"
new file mode 100644
index 0000000..5970aae
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutStockLockInfoRepository.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IOutboundRepository
+{
+    public class OutStockLockInfoRepository : RepositoryBase<Dt_OutStockLockInfo>, IOutStockLockInfoRepository
+    {
+        public OutStockLockInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundOrderDetailRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundOrderDetailRepository.cs"
new file mode 100644
index 0000000..70f148c
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundOrderDetailRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_IOutboundRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_OutboundRepository
+{
+    public class OutboundOrderDetailRepository : RepositoryBase<Dt_OutboundOrderDetail>, IOutboundOrderDetailRepository
+    {
+        public OutboundOrderDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundOrderRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundOrderRepository.cs"
new file mode 100644
index 0000000..29de59b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundOrderRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_IOutboundRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_OutboundRepository
+{
+    public class OutboundOrderRepository : RepositoryBase<Dt_OutboundOrder>, IOutboundOrderRepository
+    {
+        public OutboundOrderRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundRepository.cs"
new file mode 100644
index 0000000..3a87ce2
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundRepository.cs"
@@ -0,0 +1,25 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_IOutboundRepository;
+
+namespace WIDESEAWCS_OutboundRepository
+{
+    public class OutboundRepository : IOutboundRepository
+    {
+        public IOutboundOrderDetailRepository OutboundOrderDetailRepository { get; }
+
+        public IOutboundOrderRepository OutboundOrderRepository { get; }
+
+        public IOutStockLockInfoRepository OutboundStockLockInfoRepository { get; }
+
+        public OutboundRepository(IOutboundOrderDetailRepository outboundOrderDetailRepository, IOutboundOrderRepository outboundOrderRepository, IOutStockLockInfoRepository outboundStockLockInfoRepository)
+        {
+            OutboundOrderDetailRepository = outboundOrderDetailRepository;
+            OutboundOrderRepository = outboundOrderRepository;
+            OutboundStockLockInfoRepository = outboundStockLockInfoRepository;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/WIDESEAWCS_OutboundRepository.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/WIDESEAWCS_OutboundRepository.csproj"
new file mode 100644
index 0000000..4a6a1bd
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/WIDESEAWCS_OutboundRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_IOutboundRepository\WIDESEAWCS_IOutboundRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutStockLockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutStockLockInfoService.cs"
new file mode 100644
index 0000000..a513ef5
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutStockLockInfoService.cs"
@@ -0,0 +1,62 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.StockEnum;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IOutboundRepository;
+using WIDESEAWCS_IOutboundService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_OutboundService
+{
+    public partial class OutStockLockInfoService : ServiceBase<Dt_OutStockLockInfo, IOutStockLockInfoRepository>, IOutStockLockInfoService
+    {
+        public IOutStockLockInfoRepository Repository => BaseDal;
+
+        public OutStockLockInfoService(IOutStockLockInfoRepository BaseDal) : base(BaseDal)
+        {
+        }
+
+        public List<Dt_OutStockLockInfo> GetOutStockLockInfos(Dt_OutboundOrder outboundOrder, Dt_OutboundOrderDetail outboundOrderDetail, List<Dt_StockInfo> outStocks, int? taskNum = null)
+        {
+            List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
+
+            foreach (var item in outStocks)
+            {
+                Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
+                {
+                    PalletCode = item.PalletCode,
+                    AssignQuantity = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.OutboundQuantity),
+                    MaterielCode = outboundOrderDetail.MaterielCode,
+                    BatchNo = outboundOrderDetail.BatchNo,
+                    LocationCode = item.LocationCode,
+                    MaterielName = outboundOrderDetail.MaterielName,
+                    OrderDetailId = outboundOrderDetail.Id,
+                    OrderNo = outboundOrder.OrderNo,
+                    OrderType = outboundOrder.OrderType,
+                    OriginalQuantity = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity),
+                    Status = taskNum == null ? OutStockStatus.宸插垎閰�.ObjToInt() : OutStockStatus.鍑哄簱涓�.ObjToInt(),
+                    StockId = item.Id,
+                    TaskNum = taskNum
+                };
+                outStockLockInfos.Add(outStockLockInfo);
+            }
+
+            return outStockLockInfos;
+        }
+
+        public List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId)
+        {
+            return BaseDal.QueryData(x => x.OrderDetailId == orderDetailId);
+        }
+
+        public List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId, OutStockStatus outStockStatus)
+        {
+            return BaseDal.QueryData(x => x.OrderDetailId == orderDetailId && x.Status == outStockStatus.ObjToInt());
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutboundOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutboundOrderDetailService.cs"
new file mode 100644
index 0000000..8045ab7
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutboundOrderDetailService.cs"
@@ -0,0 +1,48 @@
+锘�
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.Stock;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_IBasicService;
+using WIDESEAWCS_IOutboundRepository;
+using WIDESEAWCS_IOutboundService;
+using WIDESEAWCS_IRecordService;
+using WIDESEAWCS_IStockRepository;
+using WIDESEAWCS_IStockService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_StockRepository;
+
+namespace WIDESEAWCS_OutboundService
+{
+    public partial class OutboundOrderDetailService : ServiceBase<Dt_OutboundOrderDetail, IOutboundOrderDetailRepository>, IOutboundOrderDetailService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        private readonly IStockService _stockService;
+        private readonly IBasicService _basicService;
+        private readonly IRecordService _recordService;
+        private readonly IOutboundRepository _outboundRepository;
+        private readonly IOutStockLockInfoService _outStockLockInfoService;
+
+        public IOutboundOrderDetailRepository Repository => BaseDal;
+
+        public OutboundOrderDetailService(IOutboundOrderDetailRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IStockService stockService, IBasicService basicService,  IRecordService recordService, IOutboundRepository outboundRepository, IOutStockLockInfoService outStockLockInfoService) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _stockService = stockService;
+            _basicService = basicService;
+            _recordService = recordService;
+            _outboundRepository = outboundRepository;
+            _outStockLockInfoService = outStockLockInfoService;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutboundOrderService.cs"
new file mode 100644
index 0000000..20fadc6
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutboundOrderService.cs"
@@ -0,0 +1,145 @@
+锘縰sing AutoMapper;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.OrderEnum;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.Utilities;
+using WIDESEAWCS_DTO.Outbound;
+using WIDESEAWCS_IBasicService;
+using WIDESEAWCS_IOutboundRepository;
+using WIDESEAWCS_IOutboundService;
+using WIDESEAWCS_IStockService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_OutboundService
+{
+    public partial class OutboundOrderService : ServiceBase<Dt_OutboundOrder, IOutboundOrderRepository>, IOutboundOrderService
+    {
+        private readonly IMapper _mapper;
+        private readonly IMaterielInfoService _materielInfoService;
+        private readonly IStockInfoService  _stockService;
+        private readonly IStockInfoDetailService _stockDetailService;
+
+        public IOutboundOrderRepository Repository => BaseDal;
+
+        public OutboundOrderService(IOutboundOrderRepository BaseDal, IMapper mapper, IMaterielInfoService materielInfoService, IStockInfoDetailService stockDetailService, IStockInfoService stockInfoService) : base(BaseDal)
+        {
+            _mapper = mapper;
+            _materielInfoService = materielInfoService;
+            _stockDetailService = stockDetailService;
+             _stockService = stockInfoService;
+        }
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            OutboundOrderAddDTO outboundOrder = saveModel.MainData.DicToModel<OutboundOrderAddDTO>();
+            List<OutboundOrderDetailAddDTO> orderDetailAddDTOs = saveModel.DetailData.DicToIEnumerable<OutboundOrderDetailAddDTO>();
+            outboundOrder.Details = orderDetailAddDTOs.GroupBy(x => x.MaterielCode).Select(x => new OutboundOrderDetailAddDTO
+            {
+                BatchNo = x.FirstOrDefault()?.BatchNo ?? "",
+                MaterielCode = x.Key,
+                OrderQuantity = x.Sum(x => x.OrderQuantity),
+                Remark = x.FirstOrDefault(v => !string.IsNullOrEmpty(v.Remark))?.Remark ?? ""
+            }).ToList();
+            return AddOutboundOrder(outboundOrder);
+        }
+
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            List<Dt_OutboundOrderDetail> outboundOrderDetails = saveModel.DetailData.DicToIEnumerable<Dt_OutboundOrderDetail>();
+            if (outboundOrderDetails.GroupBy(x => x.MaterielCode).Select(x => x.Count()).Any(x => x > 1))
+            {
+                return WebResponseContent.Instance.Error("鐗╂枡閲嶅");
+            }
+            outboundOrderDetails = outboundOrderDetails.Where(x => (x.Id > 0 && x.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt()) || x.Id == 0).ToList();
+            
+            List<Dictionary<string, object>> dics = new List<Dictionary<string, object>>();
+            JsonSerializerSettings settings = new JsonSerializerSettings();
+            settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
+            foreach (var item in outboundOrderDetails)
+            {
+                string str = JsonConvert.SerializeObject(item, settings);
+                Dictionary<string, object>? dic = JsonConvert.DeserializeObject<Dictionary<string, object>>(str);
+                if (dic != null)
+                    dics.Add(dic);
+            }
+            saveModel.DetailData = dics;
+            return base.UpdateData(saveModel);
+        }
+
+        public WebResponseContent AddOutboundOrder(OutboundOrderAddDTO orderAddDTO)
+        {
+            WebResponseContent content = new();
+            try
+            {
+                #region 楠岃瘉鏁版嵁
+                (bool, string, object?) result = CheckOutboundOrderAddData(orderAddDTO);
+                if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
+                #endregion
+
+                Dt_OutboundOrder outboundOrder = _mapper.Map<Dt_OutboundOrder>(orderAddDTO);
+                outboundOrder.OrderStatus = OutboundStatusEnum.鏈紑濮�.ObjToInt();
+                bool a = BaseDal.Db.InsertNav(outboundOrder).Include(x => x.Details).ExecuteCommand();
+                content = WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            finally
+            {
+
+            }
+            return content;
+        }
+
+        private (bool, string, object?) CheckOutboundOrderAddData(OutboundOrderAddDTO outboundOrderAddDTO)
+        {
+            (bool, string, object?) result1 = ModelValidate.ValidateModelData(outboundOrderAddDTO);
+            if (!result1.Item1) return result1;
+
+            (bool, string, object?) result2 = ModelValidate.ValidateModelData(outboundOrderAddDTO.Details);
+            if (!result2.Item1) return result2;
+
+            IEnumerable<int> inOrderTypes = Enum.GetValues<OutOrderTypeEnum>().Cast<int>();
+            if (!inOrderTypes.Contains(outboundOrderAddDTO.OrderType))
+            {
+                return (false, "鏈壘鍒拌鍗曟嵁绫诲瀷", outboundOrderAddDTO);
+            }
+
+            List<string> materielCodes = outboundOrderAddDTO.Details.Select(x => x.MaterielCode).ToList();
+            if (!_materielInfoService.ExsitMateriels(materielCodes))
+            {
+                return (false, "鏈夌墿鏂欎俊鎭湭褰曞叆锛岃褰曞叆鐗╂枡淇℃伅", outboundOrderAddDTO);
+            }
+
+            if (BaseDal.QueryFirst(x => x.UpperOrderNo == outboundOrderAddDTO.UpperOrderNo && !string.IsNullOrEmpty(x.UpperOrderNo)) != null)
+            {
+                return (false, "鍗曟嵁宸插瓨鍦�", outboundOrderAddDTO);
+            }
+            return (true, "鎴愬姛", outboundOrderAddDTO);
+        }
+
+        public WebResponseContent ReleaseOutOrder(int orderId)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+
+            }
+            catch (Exception ex)
+            {
+
+            }
+            return content;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/OutboundService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/OutboundService.cs"
new file mode 100644
index 0000000..b4c0a32
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/OutboundService.cs"
@@ -0,0 +1,25 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_IOutboundService;
+
+namespace WIDESEAWCS_OutboundService
+{
+    public class OutboundService : IOutboundService
+    {
+        public IOutboundOrderDetailService OutboundOrderDetailService { get; }
+
+        public IOutboundOrderService OutboundOrderService { get; }
+
+        public IOutStockLockInfoService OutboundStockLockInfoService { get; }
+
+        public OutboundService(IOutboundOrderDetailService outboundOrderDetailService, IOutboundOrderService outboundOrderService, IOutStockLockInfoService outboundStockLockInfoService)
+        {
+            OutboundOrderDetailService = outboundOrderDetailService;
+            OutboundOrderService = outboundOrderService;
+            OutboundStockLockInfoService = outboundStockLockInfoService;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutStockLockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutStockLockInfoService.cs"
new file mode 100644
index 0000000..b975a81
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutStockLockInfoService.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IOutboundRepository;
+using WIDESEAWCS_IOutboundService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_OutboundService
+{
+    public partial class OutStockLockInfoService : ServiceBase<Dt_OutStockLockInfo, IOutStockLockInfoRepository>, IOutStockLockInfoService
+    {
+        
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutboundOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutboundOrderDetailService.cs"
new file mode 100644
index 0000000..235b4fb
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutboundOrderDetailService.cs"
@@ -0,0 +1,32 @@
+锘縰sing OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.LocationEnum;
+using WIDESEAWCS_Common.OrderEnum;
+using WIDESEAWCS_Common.StockEnum;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.Stock;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_IBasicService;
+using WIDESEAWCS_IOutboundRepository;
+using WIDESEAWCS_IOutboundService;
+using WIDESEAWCS_IRecordService;
+using WIDESEAWCS_IStockRepository;
+using WIDESEAWCS_IStockService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_StockRepository;
+
+namespace WIDESEAWCS_OutboundService
+{
+    public partial class OutboundOrderDetailService : ServiceBase<Dt_OutboundOrderDetail, IOutboundOrderDetailRepository>, IOutboundOrderDetailService
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutboundOrderService.cs"
new file mode 100644
index 0000000..09abe2e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutboundOrderService.cs"
@@ -0,0 +1,26 @@
+锘縰sing AutoMapper;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.Utilities;
+using WIDESEAWCS_DTO.Outbound;
+using WIDESEAWCS_IBasicService;
+using WIDESEAWCS_IOutboundRepository;
+using WIDESEAWCS_IOutboundService;
+using WIDESEAWCS_IStockService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_OutboundService
+{
+    public partial class OutboundOrderService : ServiceBase<Dt_OutboundOrder, IOutboundOrderRepository>, IOutboundOrderService
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/WIDESEAWCS_OutboundService.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/WIDESEAWCS_OutboundService.csproj"
new file mode 100644
index 0000000..ddf2d20
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/WIDESEAWCS_OutboundService.csproj"
@@ -0,0 +1,16 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_IBasicService\WIDESEAWCS_IBasicService.csproj" />
+    <ProjectReference Include="..\WIDESEAWCS_IOutboundService\WIDESEAWCS_IOutboundService.csproj" />
+    <ProjectReference Include="..\WIDESEAWCS_IRecordService\WIDESEAWCS_IRecordService.csproj" />
+    <ProjectReference Include="..\WIDESEAWCS_IStockService\WIDESEAWCS_IStockService.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/LocationStatusChangeRecordRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/LocationStatusChangeRecordRepository.cs"
new file mode 100644
index 0000000..c727f0a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/LocationStatusChangeRecordRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_IRecordRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_RecordRepository
+{
+    public class LocationStatusChangeRecordRepository : RepositoryBase<Dt_LocationStatusChangeRecord>, ILocationStatusChangeRecordRepository
+    {
+        public LocationStatusChangeRecordRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/RecordRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/RecordRepository.cs"
new file mode 100644
index 0000000..a709e27
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/RecordRepository.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_IRecordRepository;
+
+namespace WIDESEAWCS_RecordRepository
+{
+    public class RecordRepository : IRecordRepository
+    {
+        public ILocationStatusChangeRecordRepository LocationStatusChangeRecordRepository { get; }
+
+        public IStockQuantityChangeRecordRepository StockQuantityChangeRecordRepository { get; }
+
+        public RecordRepository(ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository, IStockQuantityChangeRecordRepository stockQuantityChangeRecordRepository)
+        {
+            LocationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
+            StockQuantityChangeRecordRepository = stockQuantityChangeRecordRepository;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/StockQuantityChangeRecordRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/StockQuantityChangeRecordRepository.cs"
new file mode 100644
index 0000000..48895e2
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/StockQuantityChangeRecordRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_IRecordRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_RecordRepository
+{
+    public class StockQuantityChangeRecordRepository : RepositoryBase<Dt_StockQuantityChangeRecord>, IStockQuantityChangeRecordRepository
+    {
+        public StockQuantityChangeRecordRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/WIDESEAWCS_RecordRepository.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/WIDESEAWCS_RecordRepository.csproj"
new file mode 100644
index 0000000..5b071da
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/WIDESEAWCS_RecordRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_IRecordRepository\WIDESEAWCS_IRecordRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Base/LocationStatusChangeRecordSetvice.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Base/LocationStatusChangeRecordSetvice.cs"
new file mode 100644
index 0000000..f779b0d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Base/LocationStatusChangeRecordSetvice.cs"
@@ -0,0 +1,25 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.DB;
+using WIDESEAWCS_Core.Seed;
+using WIDESEAWCS_IRecordRepository;
+using WIDESEAWCS_IRecordService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_RecordService
+{
+    public partial class LocationStatusChangeRecordSetvice : ServiceBase<Dt_LocationStatusChangeRecord, ILocationStatusChangeRecordRepository>, ILocationStatusChangeRecordSetvice
+    {
+        public LocationStatusChangeRecordSetvice(ILocationStatusChangeRecordRepository BaseDal) : base(BaseDal)
+        {
+        }
+
+        public ILocationStatusChangeRecordRepository Repository => BaseDal;
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Base/StockQuantityChangeRecordService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Base/StockQuantityChangeRecordService.cs"
new file mode 100644
index 0000000..e70eccb
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Base/StockQuantityChangeRecordService.cs"
@@ -0,0 +1,27 @@
+锘縰sing AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IRecordRepository;
+using WIDESEAWCS_IRecordService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_RecordService
+{
+    public partial class StockQuantityChangeRecordService : ServiceBase<Dt_StockQuantityChangeRecord, IStockQuantityChangeRecordRepository>, IStockQuantityChangeRecordService
+    {
+        private readonly IMapper _mapper;
+        public StockQuantityChangeRecordService(IStockQuantityChangeRecordRepository BaseDal, IMapper mapper) : base(BaseDal)
+        {
+            _mapper = mapper;
+        }
+
+        public IStockQuantityChangeRecordRepository Repository => BaseDal;
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/RecordService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/RecordService.cs"
new file mode 100644
index 0000000..f7bdc00
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/RecordService.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_IRecordService;
+
+namespace WIDESEAWCS_RecordService
+{
+    public class RecordService : IRecordService
+    {
+        public ILocationStatusChangeRecordSetvice LocationStatusChangeRecordSetvice { get; }
+
+        public IStockQuantityChangeRecordService StockQuantityChangeRecordService { get; }
+
+        public RecordService(ILocationStatusChangeRecordSetvice locationStatusChangeRecordSetvice, IStockQuantityChangeRecordService stockQuantityChangeRecordService)
+        {
+            LocationStatusChangeRecordSetvice = locationStatusChangeRecordSetvice;
+            StockQuantityChangeRecordService = stockQuantityChangeRecordService;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Service/LocationStatusChangeRecordSetvice.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Service/LocationStatusChangeRecordSetvice.cs"
new file mode 100644
index 0000000..1dba83b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Service/LocationStatusChangeRecordSetvice.cs"
@@ -0,0 +1,58 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.DB;
+using WIDESEAWCS_Core.Seed;
+using WIDESEAWCS_IRecordRepository;
+using WIDESEAWCS_IRecordService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_RecordService
+{
+    public partial class LocationStatusChangeRecordSetvice : ServiceBase<Dt_LocationStatusChangeRecord, ILocationStatusChangeRecordRepository>, ILocationStatusChangeRecordSetvice
+    {
+        public void AddLocationStatusChangeRecord(Dt_LocationInfo locationInfo, int lastStatus, int changeType, string? orderNo, int? taskNum)
+        {
+            Dt_LocationStatusChangeRecord locationStatusChangeRecord = new Dt_LocationStatusChangeRecord()
+            {
+                AfterStatus = locationInfo.LocationStatus,
+                BeforeStatus = lastStatus,
+                ChangeType = changeType,
+                LocationCode = locationInfo.LocationCode,
+                LocationId = locationInfo.Id,
+                TaskNum = taskNum,
+                OrderNo = orderNo ?? ""
+            };
+
+            BaseDal.AddData(locationStatusChangeRecord);
+        }
+
+        public void AddLocationStatusChangeRecord(List<Dt_LocationInfo> locationInfos, int newStatus, int changeType, string? orderNo, List<int>? taskNums)
+        {
+            List< Dt_LocationStatusChangeRecord > records = new List<Dt_LocationStatusChangeRecord> ();
+            for (int i = 0; i < locationInfos.Count; i++)
+            {
+                Dt_LocationInfo locationInfo = locationInfos[i];
+                int? taskNum = (taskNums != null && taskNums.Count > 0 && taskNums.Count == locationInfos.Count) ? taskNums[i] : null;
+                Dt_LocationStatusChangeRecord locationStatusChangeRecord = new Dt_LocationStatusChangeRecord()
+                {
+                    AfterStatus = newStatus,
+                    BeforeStatus = locationInfo.LocationStatus,
+                    ChangeType = changeType,
+                    LocationCode = locationInfo.LocationCode,
+                    LocationId = locationInfo.Id,
+                    TaskNum = taskNum,
+                    OrderNo = orderNo ?? ""
+                };
+                records.Add(locationStatusChangeRecord);
+            }
+            
+
+            BaseDal.AddData(records);
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Service/StockQuantityChangeRecordService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Service/StockQuantityChangeRecordService.cs"
new file mode 100644
index 0000000..52b12a9
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Service/StockQuantityChangeRecordService.cs"
@@ -0,0 +1,48 @@
+锘縰sing AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.StockEnum;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IRecordRepository;
+using WIDESEAWCS_IRecordService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_RecordService
+{
+    public partial class StockQuantityChangeRecordService : ServiceBase<Dt_StockQuantityChangeRecord, IStockQuantityChangeRecordRepository>, IStockQuantityChangeRecordService
+    {
+        public void AddStockChangeRecord(Dt_StockInfo stockInfo, List<Dt_StockInfoDetail> stockInfoDetails, decimal beforeQuantity, decimal totalQuantity, StockChangeType changeType)
+        {
+            List<Dt_StockQuantityChangeRecord> stockQuantityChangeRecords = new List<Dt_StockQuantityChangeRecord>();
+            stockQuantityChangeRecords = _mapper.Map<List<Dt_StockQuantityChangeRecord>>(stockInfoDetails);
+            int index = 0;
+            decimal currentQuantity = 0;
+            stockQuantityChangeRecords.ForEach(x =>
+            {
+                x.PalleCode = stockInfo.PalletCode;
+                x.BeforeQuantity = beforeQuantity;
+                if (totalQuantity > beforeQuantity)
+                {
+                    x.ChangeQuantity = stockInfoDetails[index].StockQuantity;
+                    currentQuantity += stockInfoDetails[index].StockQuantity;
+                    x.AfterQuantity = stockInfoDetails[index].StockQuantity + beforeQuantity;
+                }
+                else
+                {
+                    x.ChangeQuantity = -stockInfoDetails[index].StockQuantity;
+                    currentQuantity -= stockInfoDetails[index].StockQuantity;
+                    x.AfterQuantity = beforeQuantity - stockInfoDetails[index].StockQuantity;
+                }
+
+                x.ChangeType = changeType.ObjToInt();
+                beforeQuantity += x.ChangeQuantity;
+            });
+            BaseDal.AddData(stockQuantityChangeRecords);
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/WIDESEAWCS_RecordService.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/WIDESEAWCS_RecordService.csproj"
new file mode 100644
index 0000000..b9d97e8
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/WIDESEAWCS_RecordService.csproj"
@@ -0,0 +1,13 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_IRecordService\WIDESEAWCS_IRecordService.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln"
index 8fc84ed..24cf089 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln"
@@ -58,6 +58,54 @@
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_BasicInfoService", "WIDESEAWCS_BasicInfoService\WIDESEAWCS_BasicInfoService.csproj", "{FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}"
 EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Outbound", "Outbound", "{91992A8E-5C32-4628-A87E-5FB68A940673}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_IOutboundRepository", "WIDESEAWCS_IOutboundRepository\WIDESEAWCS_IOutboundRepository.csproj", "{C31D0FE4-3B8A-447E-A0AC-EB04C7ADAB28}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_OutboundRepository", "WIDESEAWCS_OutboundRepository\WIDESEAWCS_OutboundRepository.csproj", "{C2F2EA39-C294-44EE-A715-830BCE7EDFEB}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Outbound", "Outbound", "{E40D6570-54E0-48DB-BA13-E55952031012}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_IOutboundService", "WIDESEAWCS_IOutboundService\WIDESEAWCS_IOutboundService.csproj", "{84B7B4FA-044A-454D-AC5C-35B4921F519A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_OutboundService", "WIDESEAWCS_OutboundService\WIDESEAWCS_OutboundService.csproj", "{B66F0CBE-FADA-4080-AAD7-84DB53288B63}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Basic", "Basic", "{18AE3ECB-AE33-40F9-A9D6-CEAE6A6CA1B2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_BasicRepository", "WIDESEAWCS_BasicRepository\WIDESEAWCS_BasicRepository.csproj", "{BD34D122-7820-47FB-9A13-CF9DD850D986}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_IBasicRepository", "WIDESEAWCS_IBasicRepository\WIDESEAWCS_IBasicRepository.csproj", "{D2D6E6D2-EFB4-4C3A-ACFA-B06A5AC3B9F7}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Basic", "Basic", "{5ADC35E4-8D20-48B8-830D-EDA02864015F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_BasicService", "WIDESEAWCS_BasicService\WIDESEAWCS_BasicService.csproj", "{FE53E6F8-3B2B-4260-941A-73763FA6B6EA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_IBasicService", "WIDESEAWCS_IBasicService\WIDESEAWCS_IBasicService.csproj", "{47CDC721-B4A4-4860-ADBD-ECDFCD534232}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Record", "Record", "{17E05677-EF38-458A-B93B-D03E50FCB362}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Stock", "Stock", "{28E53B78-C0EA-47F6-91F5-1DCE95B87783}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_IRecordRepository", "WIDESEAWCS_IRecordRepository\WIDESEAWCS_IRecordRepository.csproj", "{91B58846-6397-4AEF-AEA7-3FF7C10BF07E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_RecordRepository", "WIDESEAWCS_RecordRepository\WIDESEAWCS_RecordRepository.csproj", "{741FE3C3-5D5B-4A60-BB15-C0F4769FC4AC}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Stock", "Stock", "{CDC177FA-580E-4AF9-8D2E-ED4C1B2AC09C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_IStockRepository", "WIDESEAWCS_IStockRepository\WIDESEAWCS_IStockRepository.csproj", "{7191A47C-6340-4554-8992-B1DBED162E47}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_StockRepository", "WIDESEAWCS_StockRepository\WIDESEAWCS_StockRepository.csproj", "{25304960-ED70-47B3-A91F-24DB3E57B0A1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_IStockService", "WIDESEAWCS_IStockService\WIDESEAWCS_IStockService.csproj", "{DACC6D96-39FA-472A-92CF-58D78D647929}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_StockService", "WIDESEAWCS_StockService\WIDESEAWCS_StockService.csproj", "{089B42C7-67C2-4448-9606-58E610BE16C3}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Record", "Record", "{4368400A-F8BE-4E15-98F0-3404F075CA4C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEAWCS_IRecordService", "WIDESEAWCS_IRecordService\WIDESEAWCS_IRecordService.csproj", "{2A617E6B-350B-4A5E-96DE-37AD1506A77B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEAWCS_RecordService", "WIDESEAWCS_RecordService\WIDESEAWCS_RecordService.csproj", "{36B8B996-B738-4079-8301-E51A1010ADA4}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -132,6 +180,70 @@
 		{FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C31D0FE4-3B8A-447E-A0AC-EB04C7ADAB28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C31D0FE4-3B8A-447E-A0AC-EB04C7ADAB28}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C31D0FE4-3B8A-447E-A0AC-EB04C7ADAB28}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C31D0FE4-3B8A-447E-A0AC-EB04C7ADAB28}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C2F2EA39-C294-44EE-A715-830BCE7EDFEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C2F2EA39-C294-44EE-A715-830BCE7EDFEB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C2F2EA39-C294-44EE-A715-830BCE7EDFEB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C2F2EA39-C294-44EE-A715-830BCE7EDFEB}.Release|Any CPU.Build.0 = Release|Any CPU
+		{84B7B4FA-044A-454D-AC5C-35B4921F519A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{84B7B4FA-044A-454D-AC5C-35B4921F519A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{84B7B4FA-044A-454D-AC5C-35B4921F519A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{84B7B4FA-044A-454D-AC5C-35B4921F519A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B66F0CBE-FADA-4080-AAD7-84DB53288B63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B66F0CBE-FADA-4080-AAD7-84DB53288B63}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B66F0CBE-FADA-4080-AAD7-84DB53288B63}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B66F0CBE-FADA-4080-AAD7-84DB53288B63}.Release|Any CPU.Build.0 = Release|Any CPU
+		{BD34D122-7820-47FB-9A13-CF9DD850D986}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{BD34D122-7820-47FB-9A13-CF9DD850D986}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{BD34D122-7820-47FB-9A13-CF9DD850D986}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{BD34D122-7820-47FB-9A13-CF9DD850D986}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D2D6E6D2-EFB4-4C3A-ACFA-B06A5AC3B9F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D2D6E6D2-EFB4-4C3A-ACFA-B06A5AC3B9F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D2D6E6D2-EFB4-4C3A-ACFA-B06A5AC3B9F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D2D6E6D2-EFB4-4C3A-ACFA-B06A5AC3B9F7}.Release|Any CPU.Build.0 = Release|Any CPU
+		{FE53E6F8-3B2B-4260-941A-73763FA6B6EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{FE53E6F8-3B2B-4260-941A-73763FA6B6EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{FE53E6F8-3B2B-4260-941A-73763FA6B6EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{FE53E6F8-3B2B-4260-941A-73763FA6B6EA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{47CDC721-B4A4-4860-ADBD-ECDFCD534232}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{47CDC721-B4A4-4860-ADBD-ECDFCD534232}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{47CDC721-B4A4-4860-ADBD-ECDFCD534232}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{47CDC721-B4A4-4860-ADBD-ECDFCD534232}.Release|Any CPU.Build.0 = Release|Any CPU
+		{91B58846-6397-4AEF-AEA7-3FF7C10BF07E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{91B58846-6397-4AEF-AEA7-3FF7C10BF07E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{91B58846-6397-4AEF-AEA7-3FF7C10BF07E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{91B58846-6397-4AEF-AEA7-3FF7C10BF07E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{741FE3C3-5D5B-4A60-BB15-C0F4769FC4AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{741FE3C3-5D5B-4A60-BB15-C0F4769FC4AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{741FE3C3-5D5B-4A60-BB15-C0F4769FC4AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{741FE3C3-5D5B-4A60-BB15-C0F4769FC4AC}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7191A47C-6340-4554-8992-B1DBED162E47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7191A47C-6340-4554-8992-B1DBED162E47}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7191A47C-6340-4554-8992-B1DBED162E47}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7191A47C-6340-4554-8992-B1DBED162E47}.Release|Any CPU.Build.0 = Release|Any CPU
+		{25304960-ED70-47B3-A91F-24DB3E57B0A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{25304960-ED70-47B3-A91F-24DB3E57B0A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{25304960-ED70-47B3-A91F-24DB3E57B0A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{25304960-ED70-47B3-A91F-24DB3E57B0A1}.Release|Any CPU.Build.0 = Release|Any CPU
+		{DACC6D96-39FA-472A-92CF-58D78D647929}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DACC6D96-39FA-472A-92CF-58D78D647929}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DACC6D96-39FA-472A-92CF-58D78D647929}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DACC6D96-39FA-472A-92CF-58D78D647929}.Release|Any CPU.Build.0 = Release|Any CPU
+		{089B42C7-67C2-4448-9606-58E610BE16C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{089B42C7-67C2-4448-9606-58E610BE16C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{089B42C7-67C2-4448-9606-58E610BE16C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{089B42C7-67C2-4448-9606-58E610BE16C3}.Release|Any CPU.Build.0 = Release|Any CPU
+		{2A617E6B-350B-4A5E-96DE-37AD1506A77B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{2A617E6B-350B-4A5E-96DE-37AD1506A77B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{2A617E6B-350B-4A5E-96DE-37AD1506A77B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{2A617E6B-350B-4A5E-96DE-37AD1506A77B}.Release|Any CPU.Build.0 = Release|Any CPU
+		{36B8B996-B738-4079-8301-E51A1010ADA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{36B8B996-B738-4079-8301-E51A1010ADA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{36B8B996-B738-4079-8301-E51A1010ADA4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{36B8B996-B738-4079-8301-E51A1010ADA4}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -155,6 +267,30 @@
 		{206FDF79-9BF3-433A-B7FF-627287BBD760} = {5CC8AEFF-2F75-4053-9569-73419839875A}
 		{8C2CC25B-DE5D-433E-A550-63864C7A716D} = {9CB2F821-BB23-48E5-88E8-C326477733C0}
 		{FFAB2C76-1C9E-4006-95C8-A0B2AA53139D} = {9CB2F821-BB23-48E5-88E8-C326477733C0}
+		{91992A8E-5C32-4628-A87E-5FB68A940673} = {4FF30CF7-DA79-4EDD-9A6E-0B0BEAD72A1A}
+		{C31D0FE4-3B8A-447E-A0AC-EB04C7ADAB28} = {91992A8E-5C32-4628-A87E-5FB68A940673}
+		{C2F2EA39-C294-44EE-A715-830BCE7EDFEB} = {91992A8E-5C32-4628-A87E-5FB68A940673}
+		{E40D6570-54E0-48DB-BA13-E55952031012} = {A12315CA-9D81-412C-A09B-B23D95CFFE16}
+		{84B7B4FA-044A-454D-AC5C-35B4921F519A} = {E40D6570-54E0-48DB-BA13-E55952031012}
+		{B66F0CBE-FADA-4080-AAD7-84DB53288B63} = {E40D6570-54E0-48DB-BA13-E55952031012}
+		{18AE3ECB-AE33-40F9-A9D6-CEAE6A6CA1B2} = {4FF30CF7-DA79-4EDD-9A6E-0B0BEAD72A1A}
+		{BD34D122-7820-47FB-9A13-CF9DD850D986} = {18AE3ECB-AE33-40F9-A9D6-CEAE6A6CA1B2}
+		{D2D6E6D2-EFB4-4C3A-ACFA-B06A5AC3B9F7} = {18AE3ECB-AE33-40F9-A9D6-CEAE6A6CA1B2}
+		{5ADC35E4-8D20-48B8-830D-EDA02864015F} = {A12315CA-9D81-412C-A09B-B23D95CFFE16}
+		{FE53E6F8-3B2B-4260-941A-73763FA6B6EA} = {5ADC35E4-8D20-48B8-830D-EDA02864015F}
+		{47CDC721-B4A4-4860-ADBD-ECDFCD534232} = {5ADC35E4-8D20-48B8-830D-EDA02864015F}
+		{17E05677-EF38-458A-B93B-D03E50FCB362} = {4FF30CF7-DA79-4EDD-9A6E-0B0BEAD72A1A}
+		{28E53B78-C0EA-47F6-91F5-1DCE95B87783} = {A12315CA-9D81-412C-A09B-B23D95CFFE16}
+		{91B58846-6397-4AEF-AEA7-3FF7C10BF07E} = {17E05677-EF38-458A-B93B-D03E50FCB362}
+		{741FE3C3-5D5B-4A60-BB15-C0F4769FC4AC} = {17E05677-EF38-458A-B93B-D03E50FCB362}
+		{CDC177FA-580E-4AF9-8D2E-ED4C1B2AC09C} = {4FF30CF7-DA79-4EDD-9A6E-0B0BEAD72A1A}
+		{7191A47C-6340-4554-8992-B1DBED162E47} = {CDC177FA-580E-4AF9-8D2E-ED4C1B2AC09C}
+		{25304960-ED70-47B3-A91F-24DB3E57B0A1} = {CDC177FA-580E-4AF9-8D2E-ED4C1B2AC09C}
+		{DACC6D96-39FA-472A-92CF-58D78D647929} = {28E53B78-C0EA-47F6-91F5-1DCE95B87783}
+		{089B42C7-67C2-4448-9606-58E610BE16C3} = {28E53B78-C0EA-47F6-91F5-1DCE95B87783}
+		{4368400A-F8BE-4E15-98F0-3404F075CA4C} = {A12315CA-9D81-412C-A09B-B23D95CFFE16}
+		{2A617E6B-350B-4A5E-96DE-37AD1506A77B} = {4368400A-F8BE-4E15-98F0-3404F075CA4C}
+		{36B8B996-B738-4079-8301-E51A1010ADA4} = {4368400A-F8BE-4E15-98F0-3404F075CA4C}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {C9A356D5-D4FE-414B-B982-6C97792BE6C6}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Basic/LocationInfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Basic/LocationInfoController.cs"
new file mode 100644
index 0000000..2384093
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Basic/LocationInfoController.cs"
@@ -0,0 +1,31 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_DTO.Basic;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_IBasicService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Server.Controllers.Basic
+{
+    [Route("api/LocationInfo")]
+    [ApiController]
+    public class LocationInfoController : ApiBaseController<ILocationInfoService, Dt_LocationInfo>
+    {
+        private readonly ILocationInfoRepository _repository;
+        public LocationInfoController(ILocationInfoService service, ILocationInfoRepository repository) : base(service)
+        {
+            _repository = repository;
+        }
+
+        [HttpPost, Route("InitializationLocation")]
+        public WebResponseContent InitializationLocation([FromBody] InitializationLocationDTO initializationLocationDTO)
+        {
+            return Service.InitializationLocation(initializationLocationDTO);
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Basic/MaterielInfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Basic/MaterielInfoController.cs"
new file mode 100644
index 0000000..00a28d2
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Basic/MaterielInfoController.cs"
@@ -0,0 +1,17 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_IBasicService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Server.Controllers.Basic
+{
+    [Route("api/MaterielInfo")]
+    [ApiController]
+    public class MaterielInfoController : ApiBaseController<IMaterielInfoService, Dt_MaterielInfo>
+    {
+        public MaterielInfoController(IMaterielInfoService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutStockLockInfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutStockLockInfoController.cs"
new file mode 100644
index 0000000..3b7acfc
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutStockLockInfoController.cs"
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_IOutboundService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Server.Controllers.Outbound
+{
+    [Route("api/OutStockLockInfo")]
+    [ApiController]
+    public class OutStockLockInfoController : ApiBaseController<IOutStockLockInfoService, Dt_OutStockLockInfo>
+    {
+        public OutStockLockInfoController(IOutStockLockInfoService service) : base(service)
+        {
+        }
+
+        [HttpPost, Route("GetByOrderDetailId")]
+        public List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId)
+        {
+            return Service.GetByOrderDetailId(orderDetailId);
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutboundOrderController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutboundOrderController.cs"
new file mode 100644
index 0000000..00cbda3
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutboundOrderController.cs"
@@ -0,0 +1,17 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_IOutboundService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Server.Controllers.Outbound
+{
+    [Route("api/OutboundOrder")]
+    [ApiController]
+    public class OutboundOrderController : ApiBaseController<IOutboundOrderService, Dt_OutboundOrder>
+    {
+        public OutboundOrderController(IOutboundOrderService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutboundOrderDetailController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutboundOrderDetailController.cs"
new file mode 100644
index 0000000..06cefad
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutboundOrderDetailController.cs"
@@ -0,0 +1,19 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_DTO.Stock;
+using WIDESEAWCS_IOutboundService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Server.Controllers.Outbound
+{
+    [Route("api/OutboundOrderDetail")]
+    [ApiController]
+    public class OutboundOrderDetailController : ApiBaseController<IOutboundOrderDetailService, Dt_OutboundOrderDetail>
+    {
+        public OutboundOrderDetailController(IOutboundOrderDetailService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Record/LocationStatusChangeRecordController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Record/LocationStatusChangeRecordController.cs"
new file mode 100644
index 0000000..f174c51
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Record/LocationStatusChangeRecordController.cs"
@@ -0,0 +1,17 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_IRecordService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Server.Controllers.Record
+{
+    [Route("api/LocationStatusChangeRecord")]
+    [ApiController]
+    public class LocationStatusChangeRecordController : ApiBaseController<ILocationStatusChangeRecordSetvice, Dt_LocationStatusChangeRecord>
+    {
+        public LocationStatusChangeRecordController(ILocationStatusChangeRecordSetvice service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Record/StockQuantityChangeRecordController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Record/StockQuantityChangeRecordController.cs"
new file mode 100644
index 0000000..a42c0f8
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Record/StockQuantityChangeRecordController.cs"
@@ -0,0 +1,17 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_IRecordService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Server.Controllers.Record
+{
+    [Route("api/StockQuantityChangeRecord")]
+    [ApiController]
+    public class StockQuantityChangeRecordController : ApiBaseController<IStockQuantityChangeRecordService, Dt_StockQuantityChangeRecord>
+    {
+        public StockQuantityChangeRecordController(IStockQuantityChangeRecordService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockInfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockInfoController.cs"
new file mode 100644
index 0000000..5b30d78
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockInfoController.cs"
@@ -0,0 +1,39 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_DTO.Stock;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_IStockRepository;
+using WIDESEAWCS_IStockService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Server.Controllers.Stock
+{
+    [Route("api/StockInfo")]
+    [ApiController]
+    public class StockInfoController : ApiBaseController<IStockInfoService, Dt_StockInfo>
+    {
+        public StockInfoController(IStockInfoService service) : base(service)
+        {
+        }
+
+        [HttpPost, Route("GetAllStockViews"), AllowAnonymous]
+        public List<StockViewDTO> GetAllStockViews()
+        {
+            return Service.Repository.GetAllStockViews();
+        }
+
+        //[HttpPost, Route("GetStockSelectViews"), AllowAnonymous]
+        //public List<StockSelectViewDTO> GetStockSelectViews(string materielCode)
+        //{
+        //    return Service.GetStockSelectViews(materielCode);
+        //}
+
+        [HttpPost, Route("GetPalletStockInfo"), AllowAnonymous]
+        public Dt_StockInfo GetPalletStockInfo(string roadwayNo)
+        {
+            return Service.Repository.GetPalletStockInfo(roadwayNo);
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockInfoDetailController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockInfoDetailController.cs"
new file mode 100644
index 0000000..c4dd9a7
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockInfoDetailController.cs"
@@ -0,0 +1,17 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_IStockService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Server.Controllers.Stock
+{
+    [Route("api/StockInfoDetail")]
+    [ApiController]
+    public class StockInfoDetailController : ApiBaseController<IStockInfoDetailService, Dt_StockInfoDetail>
+    {
+        public StockInfoDetailController(IStockInfoDetailService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockViewController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockViewController.cs"
new file mode 100644
index 0000000..3e0c2fe
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockViewController.cs"
@@ -0,0 +1,35 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Options;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_DTO.Stock;
+using WIDESEAWCS_IStockService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Server.Controllers.Stock
+{
+    [Route("api/StockView")]
+    [Authorize, ApiController]
+    public class StockViewController : Controller
+    {
+        private readonly IStockViewService _stockViewService;
+        public StockViewController(IStockViewService stockViewService) 
+        {
+            _stockViewService = stockViewService;
+        }
+
+        [HttpPost, Route("GetPageData")]
+        public PageGridData<StockViewDTO> GetPageData([FromBody] PageDataOptions options)
+        {
+            return _stockViewService.GetPageData(options);
+        }
+
+        [HttpPost, Route("GetDetailPage")]
+        public object GetDetailPage([FromBody] PageDataOptions pageData)
+        {
+            return _stockViewService.GetDetailPage(pageData);
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj"
index fe5f5f6..9655223 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj"
@@ -77,6 +77,10 @@
 	</ItemGroup>
 
 	<ItemGroup>
+		<ProjectReference Include="..\WIDESEAWCS_BasicService\WIDESEAWCS_BasicService.csproj" />
+		<ProjectReference Include="..\WIDESEAWCS_OutboundService\WIDESEAWCS_OutboundService.csproj" />
+		<ProjectReference Include="..\WIDESEAWCS_RecordService\WIDESEAWCS_RecordService.csproj" />
+		<ProjectReference Include="..\WIDESEAWCS_StockService\WIDESEAWCS_StockService.csproj" />
 		<ProjectReference Include="..\WIDESEAWCS_SystemServices\WIDESEAWCS_SystemServices.csproj" />
 		<ProjectReference Include="..\WIDESEAWCs_TaskInfoService\WIDESEAWCs_TaskInfoService.csproj" />
 		<ProjectReference Include="..\WIDESEAWCS_Tasks\WIDESEAWCS_Tasks.csproj" />
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockInfoDetailRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockInfoDetailRepository.cs"
new file mode 100644
index 0000000..143e30c
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockInfoDetailRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_IStockRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_StockRepository
+{
+    public class StockInfoDetailRepository : RepositoryBase<Dt_StockInfoDetail>, IStockInfoDetailRepository
+    {
+        public StockInfoDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockInfoRepository.cs"
new file mode 100644
index 0000000..dc0d8ec
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockInfoRepository.cs"
@@ -0,0 +1,107 @@
+锘�
+using SqlSugar;
+using SqlSugar.Extensions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.LocationEnum;
+using WIDESEAWCS_Common.StockEnum;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_DTO.Stock;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_IStockRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEA_StockRepository
+{
+    public class StockInfoRepository : RepositoryBase<Dt_StockInfo>, IStockInfoRepository
+    {
+        public StockInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+
+        public List<StockViewDTO> GetAllStockViews()
+        {
+            ISugarQueryable<Dt_LocationInfo> sugarQueryable = Db.Queryable<Dt_LocationInfo>();
+            ISugarQueryable<Dt_StockInfo> sugarQueryable1 = Db.Queryable<Dt_StockInfo>();
+
+            return sugarQueryable.InnerJoin(sugarQueryable1, (a, b) => a.LocationCode == b.LocationCode).Select((a, b) => new StockViewDTO
+            {
+                AreaId = a.AreaId,
+                LocationCode = b.LocationCode,
+                Column = a.Column,
+                CreateDate = b.CreateDate,
+                Creater = b.Creater,
+                Depth = a.Depth,
+                EnalbeStatus = a.EnableStatus,
+                IsFull = b.IsFull,
+                Layer = a.Layer,
+                LocationName = a.LocationName,
+                LocationStatus = a.LocationStatus,
+                LocationType = a.LocationType,
+                Modifier = b.Modifier,
+                ModifyDate = b.ModifyDate,
+                PalletCode = b.PalletCode,
+                StockRemark = b.Remark,
+                RoadwayNo = a.RoadwayNo,
+                Row = a.Row,
+                StockId = b.Id,
+                StockStatus = b.StockStatus,
+                Details = b.Details,
+            }).Includes(x => x.Details).ToList();
+        }
+
+        public Dt_StockInfo GetStockInfo(string palletCode)
+        {
+            return Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
+        }
+
+        public List<Dt_StockInfo> GetStockInfos(string materielCode)
+        {
+            return Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode)).ToList();
+            //ISugarQueryable<Dt_LocationInfo> sugarQueryable = Db.Queryable<Dt_LocationInfo>();
+            //ISugarQueryable<Dt_StockInfo> sugarQueryable1 = Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode));
+            //return sugarQueryable.InnerJoin(sugarQueryable1, (a, b) => a.LocationCode == b.LocationCode).Select((a, b) => b).Includes(x => x.Details).ToList();
+        }
+
+        public List<Dt_StockInfo> GetStockInfos(string materielCode, List<string> locationCodes)
+        {
+            return Db.Queryable<Dt_StockInfo>().Where(x => locationCodes.Contains(x.LocationCode)).Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode)).ToList();
+
+
+            //ISugarQueryable<Dt_LocationInfo> sugarQueryable = Db.Queryable<Dt_LocationInfo>().Where(x => locationCodes.Contains(x.LocationCode));
+            //ISugarQueryable<Dt_StockInfo> sugarQueryable1 = Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode));
+            //return sugarQueryable.InnerJoin(sugarQueryable1, (a, b) => a.LocationCode == b.LocationCode).Select((a, b) => b).OrderBy(a => a.CreateDate).Includes(a => a.Details).ToList();
+        }
+
+        public List<Dt_StockInfo> GetStockInfosByIds(List<int> ids)
+        {
+            return Db.Queryable<Dt_StockInfo>().Where(x => ids.Contains(x.Id)).Includes(x => x.Details).ToList();
+        }
+
+        public List<Dt_StockInfo> GetStockInfosByPalletCodes(List<string> palletCodes)
+        {
+            return Db.Queryable<Dt_StockInfo>().Where(x => palletCodes.Contains(x.PalletCode)).Includes(x => x.Details).ToList();
+        }
+
+        public List<Dt_StockInfo> GetStockInfosExclude(string materielCode, List<string> palletCodes)
+        {
+            return Db.Queryable<Dt_StockInfo>().Where(x => !palletCodes.Contains(x.PalletCode)).Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode)).ToList();
+        }
+
+        public bool UpdateDataWithDetail(Dt_StockInfo stockInfo)
+        {
+            return Db.UpdateNav(stockInfo).Include(x => x.Details).ExecuteCommand();
+        }
+
+        public Dt_StockInfo GetPalletStockInfo(string roadwayNo)
+        {
+            //ISugarQueryable<string> locationCodes = Db.Queryable<Dt_LocationInfo>().Where(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Pallet.ObjToInt() && (x.EnalbeStatus == LocationEnalbeStatusEnum.OnlyOut.ObjToInt() || LocationEnalbeStatusEnum.Normal.ObjToInt() == x.EnalbeStatus)).Select(x => x.LocationCode);
+
+            return Db.Queryable<Dt_StockInfo>().Where(x => x.StockStatus == StockStatusEmun.宸插叆搴�.ObjToInt() && SqlFunc.Subqueryable<Dt_LocationInfo>().Where(v => v.LocationCode == x.LocationCode && v.RoadwayNo == roadwayNo && v.LocationStatus == LocationStatusEnum.Pallet.ObjToInt() && (v.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || EnableStatusEnum.Normal.ObjToInt() == v.EnableStatus)).Any()).OrderBy(x => x.ModifyDate).First();
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockRepository.cs"
new file mode 100644
index 0000000..ea94c24
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockRepository.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_IStockRepository;
+
+namespace WIDESEAWCS_StockRepository
+{
+    public class StockRepository : IStockRepository
+    {
+        public IStockInfoDetailRepository StockInfoDetailRepository { get; }
+
+        public IStockInfoRepository StockInfoRepository { get; }
+
+        public StockRepository(IStockInfoDetailRepository stockInfoDetailRepository, IStockInfoRepository stockInfoRepository)
+        {
+            StockInfoDetailRepository = stockInfoDetailRepository;
+            StockInfoRepository = stockInfoRepository;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/WIDESEAWCS_StockRepository.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/WIDESEAWCS_StockRepository.csproj"
new file mode 100644
index 0000000..75f000f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/WIDESEAWCS_StockRepository.csproj"
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_IBasicRepository\WIDESEAWCS_IBasicRepository.csproj" />
+    <ProjectReference Include="..\WIDESEAWCS_IStockRepository\WIDESEAWCS_IStockRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockInfoDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockInfoDetailService.cs"
new file mode 100644
index 0000000..3bb4aac
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockInfoDetailService.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_IStockRepository;
+using WIDESEAWCS_IStockService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_StockService
+{
+    public partial class StockInfoDetailService : ServiceBase<Dt_StockInfoDetail, IStockInfoDetailRepository>, IStockInfoDetailService
+    {
+        public StockInfoDetailService(IStockInfoDetailRepository BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IStockInfoDetailRepository Repository => BaseDal;
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockInfoService.cs"
new file mode 100644
index 0000000..f4d810e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockInfoService.cs"
@@ -0,0 +1,42 @@
+锘縰sing AutoMapper;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.Stock;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_IRecordRepository;
+using WIDESEAWCS_IRecordService;
+using WIDESEAWCS_IStockRepository;
+using WIDESEAWCS_IStockService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_StockService
+{
+    public partial class StockInfoService : ServiceBase<Dt_StockInfo, IStockInfoRepository>, IStockInfoService
+    {
+        private readonly IMapper _mapper;
+
+        private readonly IBasicRepository _basicRepository;
+        private readonly IStockRepository _stockRepository;
+        private readonly IRecordService _recordService;
+
+        public IStockInfoRepository Repository => BaseDal;
+
+        public StockInfoService(IStockInfoRepository BaseDal, IMapper mapper, IBasicRepository basicRepository, IStockRepository stockRepository,IRecordService recordService) : base(BaseDal)
+        {
+            _mapper = mapper;
+            _basicRepository = basicRepository;
+            _stockRepository = stockRepository;
+            _recordService = recordService;
+        }
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockViewService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockViewService.cs"
new file mode 100644
index 0000000..e51a3ef
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockViewService.cs"
@@ -0,0 +1,107 @@
+锘�
+using Microsoft.AspNetCore.Http;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Drawing.Printing;
+using System.Dynamic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.Utilities;
+using WIDESEAWCS_DTO.Stock;
+using WIDESEAWCS_IStockRepository;
+using WIDESEAWCS_IStockService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_StockService
+{
+    public partial class StockViewService : IStockViewService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly SqlSugarClient _dbBase;
+
+        public StockViewService(IUnitOfWorkManage unitOfWorkManage)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _dbBase = unitOfWorkManage.GetDbClient();
+        }
+
+        public virtual PageGridData<StockViewDTO> GetPageData(PageDataOptions options)
+        {
+            //string where = ValidatePageOptions(typeof(StockViewDTO).GetProperties());
+            ////鑾峰彇鎺掑簭瀛楁
+            ////Dictionary<string, OrderByType> orderbyDic = options.GetPageDataSort(typeof(StockViewDTO).GetProperties());
+            ////List<OrderByModel> orderByModels = new List<OrderByModel>();
+            ////foreach (var item in orderbyDic)
+            ////{
+            ////    OrderByModel orderByModel = new OrderByModel()
+            ////    {
+            ////        FieldName = item.Key,
+            ////        OrderByType = item.Value
+            ////    };
+            ////    orderByModels.Add(orderByModel);
+            ////}
+            //int totalCount = 0;
+
+            //ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>();
+            //ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>();
+
+            //List<StockViewDTO> list = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode).WhereIF(!string.IsNullOrEmpty(where), where).Select((b, a) => new StockViewDTO
+            //{
+            //    AreaId = a.AreaId,
+            //    LocationCode = b.LocationCode,
+            //    Column = a.Column,
+            //    CreateDate = b.CreateDate,
+            //    Creater = b.Creater,
+            //    Depth = a.Depth,
+            //    EnalbeStatus = a.EnableStatus,
+            //    IsFull = b.IsFull,
+            //    Layer = a.Layer,
+            //    LocationName = a.LocationName,
+            //    LocationStatus = a.LocationStatus,
+            //    LocationType = a.LocationType,
+            //    Modifier = b.Modifier,
+            //    ModifyDate = b.ModifyDate,
+            //    PalletCode = b.PalletCode,
+            //    StockRemark = b.Remark,
+            //    RoadwayNo = a.RoadwayNo,
+            //    Row = a.Row,
+            //    StockId = b.Id,
+            //    StockStatus = b.StockStatus,
+            //    Details = b.Details,
+            //}).ToPageList(options.Page, options.Rows, ref totalCount);
+            //return new PageGridData<StockViewDTO>(totalCount, list);
+            return new PageGridData<StockViewDTO>();
+        }
+
+        public virtual object GetDetailPage(PageDataOptions pageData)
+        {
+            Type t = typeof(StockViewDTO);
+
+            if (pageData.Value == null) return new PageGridData<object>(total: 0, null);
+            string keyName = t.GetKeyName();
+            ////鐢熸垚鏌ヨ鏉′欢
+            //Expression<Func<TEntity, bool>> whereExpression = keyName.CreateExpression<TEntity>(pageData.Value, LinqExpressionType.Equal);
+            int totalCount = 0;
+            PropertyInfo? propertyInfo = t.GetProperties().FirstOrDefault(x => x.GetCustomAttribute<Navigate>() != null);
+            if (propertyInfo != null)
+            {
+                Type detailType = propertyInfo.PropertyType.GetGenericArguments()[0];
+                Navigate? navigate = propertyInfo.GetCustomAttribute<Navigate>();
+                if (navigate != null)
+                {
+                    List<ExpandoObject> list = _dbBase.Queryable(detailType.Name, "detail").Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount);
+                    return new PageGridData<ExpandoObject>(totalCount, list);
+                }
+            }
+            return new PageGridData<object>(total: 0, null);
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockInfoDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockInfoDetailService.cs"
new file mode 100644
index 0000000..d0775ef
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockInfoDetailService.cs"
@@ -0,0 +1,25 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_IStockRepository;
+using WIDESEAWCS_IStockService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_StockService
+{
+    public partial class StockInfoDetailService : ServiceBase<Dt_StockInfoDetail, IStockInfoDetailRepository>, IStockInfoDetailService
+    {
+        public bool ExistSerialNumber(string SerialNumber)
+        {
+            return BaseDal.QueryFirst(x => x.SerialNumber == SerialNumber) != null;
+        }
+
+        public bool ExistSerialNumbers(List<string> SerialNumbers)
+        {
+            return BaseDal.QueryFirst(x => SerialNumbers.Contains(x.SerialNumber)) != null;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockInfoService.cs"
new file mode 100644
index 0000000..09aeca7
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockInfoService.cs"
@@ -0,0 +1,68 @@
+锘縰sing AutoMapper;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.StockEnum;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.Stock;
+using WIDESEAWCS_IBasicRepository;
+using WIDESEAWCS_IRecordRepository;
+using WIDESEAWCS_IRecordService;
+using WIDESEAWCS_IStockRepository;
+using WIDESEAWCS_IStockService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_StockService
+{
+    public partial class StockInfoService : ServiceBase<Dt_StockInfo, IStockInfoRepository>, IStockInfoService
+    {
+        /// <summary>
+        /// 鏍规嵁鎵樼洏鍙锋煡璇㈠簱瀛�
+        /// </summary>
+        /// <param name="palletCode"></param>
+        /// <returns></returns>
+        public Dt_StockInfo? GetStockByPalletCode(string palletCode)
+        {
+            Dt_StockInfo stockInfo = BaseDal.QueryFirst(x => x.PalletCode == palletCode);
+            if (stockInfo != null)
+            {
+                stockInfo.Details = _stockRepository.StockInfoDetailRepository.QueryData(x => x.StockId == stockInfo.Id);
+            }
+            return stockInfo;
+        }
+
+        public void AddMaterielGroup(Dt_StockInfo stockInfo)
+        {
+            decimal beforeQuantity = 0;
+            List<Dt_StockInfoDetail> details = new List<Dt_StockInfoDetail>();
+            if (stockInfo.Id == 0)
+            {
+                BaseDal.Db.InsertNav(stockInfo).Include(x => x.Details).ExecuteCommand();
+                details = stockInfo.Details;
+            }
+            else
+            {
+                beforeQuantity = stockInfo.Details.Where(x => x.Id != 0).Sum(x => x.StockQuantity);
+
+                for (int i = 0; i < stockInfo.Details.Count; i++)
+                {
+                    if (stockInfo.Details[i].Id == 0)
+                    {
+                        details.Add(_stockRepository.StockInfoDetailRepository.Db.Insertable(stockInfo.Details[i]).ExecuteReturnEntity());
+                    }
+
+                }
+            }
+            stockInfo.Details = details;
+            _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.Details, beforeQuantity, stockInfo.Details.Sum(x => x.StockQuantity) + beforeQuantity, StockChangeType.MaterielGroup);
+        }
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockViewService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockViewService.cs"
new file mode 100644
index 0000000..a4c5508
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockViewService.cs"
@@ -0,0 +1,28 @@
+锘�
+using Microsoft.AspNetCore.Http;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Drawing.Printing;
+using System.Dynamic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.Utilities;
+using WIDESEAWCS_DTO.Stock;
+using WIDESEAWCS_IStockRepository;
+using WIDESEAWCS_IStockService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_StockService
+{
+    public partial class StockViewService : IStockViewService
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/StockSerivce.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/StockSerivce.cs"
new file mode 100644
index 0000000..407e6b9
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/StockSerivce.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_IStockService;
+
+namespace WIDESEAWCS_StockService
+{
+    public class StockSerivce:IStockService
+    {
+        public IStockInfoDetailService StockInfoDetailService { get; }
+
+        public IStockInfoService StockInfoService { get; }
+
+        public StockSerivce(IStockInfoDetailService stockInfoDetailService, IStockInfoService stockInfoService)
+        {
+            StockInfoDetailService = stockInfoDetailService;
+            StockInfoService = stockInfoService;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/WIDESEAWCS_StockService.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/WIDESEAWCS_StockService.csproj"
new file mode 100644
index 0000000..0b20a88
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/WIDESEAWCS_StockService.csproj"
@@ -0,0 +1,15 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_IRecordRepository\WIDESEAWCS_IRecordRepository.csproj" />
+    <ProjectReference Include="..\WIDESEAWCS_IRecordService\WIDESEAWCS_IRecordService.csproj" />
+    <ProjectReference Include="..\WIDESEAWCS_IStockService\WIDESEAWCS_IStockService.csproj" />
+  </ItemGroup>
+
+</Project>

--
Gitblit v1.9.3