hutongqing
2024-10-31 3a44e6db141a4dd70476b90e57208807ab940585
新增库存、货位、出库单据等模块
已删除7个文件
已添加122个文件
已修改4个文件
3637 ■■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/02c17689-056d-427c-8852-bc22ee4f5e68.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/16a40d16-80f0-4c73-a9a6-e28826d2b979.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2ddc4f6e-5256-4fc8-b4f1-b46f86742993.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/33f3558c-adae-4d5b-a8db-37cdc93fc75a.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/591ce19e-7364-4503-b4b3-a190a9a73366.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/61dd1acc-cecf-4a29-9a45-6aa264ede5b3.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/68ebdd2a-8d51-40b7-a791-f37d7fd0a1c9.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/a239e3a6-c377-4c06-90b5-6cbecfe39546.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ade235eb-fbdf-4815-b117-a62bd238d39b.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/c4eb82bf-cce9-4a6d-b8f0-c7ec4de6fdb2.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d04c6c27-9127-4d1a-aa0f-9cd4d8948537.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ebbfe61f-de85-4793-b9af-ab2c5f423805.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/BasicRepository.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/LocationInfoRepository.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/MaterielInfoRepository.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/WIDESEAWCS_BasicRepository.csproj 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Base/LocationInfoService.cs 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Base/MaterielInfoService.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/BasicService.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Service/LocationInfoService.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Service/MaterielInfoService.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/WIDESEAWCS_BasicService.csproj 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/CommonEnum/EnableEnum.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/CommonEnum/OperateType.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/EnableStatusEnum.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/LocationStatusEnum.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OrderDetailStatusEnum.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OutOrderTypeEnum.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OutboundStatusEnum.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/SequenceEnum.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/OutStockStatus.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/StockChangeType.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/StockStatusEmun.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/CachePointGroupDTO.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/InitializationLocationDTO.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/LocationGroupDTO.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Outbound/OutboundOrderAddDTO.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Outbound/OutboundOrderDetailAddDTO.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Stock/StockSelectViewDTO.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Stock/StockViewDTO.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/IBasicRepository.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/ILocationInfoRepository.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/IMaterielInfoRepository.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/WIDESEAWCS_IBasicRepository.csproj 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/IBasicService.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/ILocationInfoService.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/IMaterielInfoService.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/WIDESEAWCS_IBasicService.csproj 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutStockLockInfoRepository.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundOrderDetailRepository.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundOrderRepository.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundRepository.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/WIDESEAWCS_IOutboundRepository.csproj 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutStockLockInfoService.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundOrderDetailService.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundOrderService.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundService.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/WIDESEAWCS_IOutboundService.csproj 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/ILocationStatusChangeRecordRepository.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/IRecordRepository.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/IStockQuantityChangeRecordRepository.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/WIDESEAWCS_IRecordRepository.csproj 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/ILocationStatusChangeRecordSetvice.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/IRecordService.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/IStockQuantityChangeRecordService.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/WIDESEAWCS_IRecordService.csproj 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockInfoDetailRepository.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockInfoRepository.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockRepository.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/WIDESEAWCS_IStockRepository.csproj 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockInfoDetailService.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockInfoService.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockService.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockViewService.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/WIDESEAWCS_IStockService.csproj 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Basic/Dt_LocationInfo.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Basic/Dt_MaterielInfo.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundLockInfo.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundOrder.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundOrderDetail.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Record/Dt_LocationStatusChangeRecord.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Record/Dt_StockQuantityChangeRecord.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Stock/Dt_StockInfo.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Stock/Dt_StockInfoDetail.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutStockLockInfoRepository.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundOrderDetailRepository.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundOrderRepository.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundRepository.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/WIDESEAWCS_OutboundRepository.csproj 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutStockLockInfoService.cs 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutboundOrderDetailService.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutboundOrderService.cs 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/OutboundService.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutStockLockInfoService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutboundOrderDetailService.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutboundOrderService.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/WIDESEAWCS_OutboundService.csproj 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/LocationStatusChangeRecordRepository.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/RecordRepository.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/StockQuantityChangeRecordRepository.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/WIDESEAWCS_RecordRepository.csproj 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Base/LocationStatusChangeRecordSetvice.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Base/StockQuantityChangeRecordService.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/RecordService.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Service/LocationStatusChangeRecordSetvice.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Service/StockQuantityChangeRecordService.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/WIDESEAWCS_RecordService.csproj 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Basic/LocationInfoController.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Basic/MaterielInfoController.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutStockLockInfoController.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutboundOrderController.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutboundOrderDetailController.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Record/LocationStatusChangeRecordController.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Record/StockQuantityChangeRecordController.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockInfoController.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockInfoDetailController.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockViewController.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockInfoDetailRepository.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockInfoRepository.cs 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockRepository.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/WIDESEAWCS_StockRepository.csproj 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockInfoDetailService.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockInfoService.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockViewService.cs 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockInfoDetailService.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockInfoService.cs 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockViewService.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/StockSerivce.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/WIDESEAWCS_StockService.csproj 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/02c17689-056d-427c-8852-bc22ee4f5e68.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/16a40d16-80f0-4c73-a9a6-e28826d2b979.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2ddc4f6e-5256-4fc8-b4f1-b46f86742993.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/33f3558c-adae-4d5b-a8db-37cdc93fc75a.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/591ce19e-7364-4503-b4b3-a190a9a73366.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/61dd1acc-cecf-4a29-9a45-6aa264ede5b3.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/68ebdd2a-8d51-40b7-a791-f37d7fd0a1c9.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/a239e3a6-c377-4c06-90b5-6cbecfe39546.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ade235eb-fbdf-4815-b117-a62bd238d39b.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/c4eb82bf-cce9-4a6d-b8f0-c7ec4de6fdb2.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d04c6c27-9127-4d1a-aa0f-9cd4d8948537.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ebbfe61f-de85-4793-b9af-ab2c5f423805.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/BasicRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
using 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;
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/LocationInfoRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicRepository/MaterielInfoRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Base/LocationInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,142 @@
using 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);
            }
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Base/MaterielInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
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_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);
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/BasicService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
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;
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;
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Service/LocationInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
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_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
    {
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicService/Service/MaterielInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
using 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));
        }
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/CommonEnum/EnableEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
using 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,
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/CommonEnum/OperateType.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using 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,
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/EnableStatusEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
using 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>
        /// æ­£å¸¸
        /// </summary>
        [Description("正常")]
        Normal = 0,
        /// <summary>
        /// åªå…¥
        /// </summary>
        [Description("只入")]
        OnlyIn = 1,
        /// <summary>
        /// åªå‡º
        /// </summary>
        [Description("只出")]
        OnlyOut = 2,
        /// <summary>
        /// ç¦ç”¨
        /// </summary>
        [Description("禁用")]
        Disable = 3
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/LocationStatusEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
using 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
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OrderDetailStatusEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
using 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
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OutOrderTypeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
using 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
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/OrderEnum/OutboundStatusEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
using 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
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/SequenceEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEAWCS_Common
{
    public enum SequenceEnum
    {
        SeqTaskNum
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/OutStockStatus.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
using 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
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/StockChangeType.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
using 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,
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StockEnum/StockStatusEmun.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
using 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,
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/CachePointGroupDTO.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/InitializationLocationDTO.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Basic/LocationGroupDTO.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Outbound/OutboundOrderAddDTO.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Outbound/OutboundOrderDetailAddDTO.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/Stock/StockSelectViewDTO.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
using 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; }
    }
}
´úÂë¹ÜÀí/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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/IBasicRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/ILocationInfoRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
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_DTO.Basic;
using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_IBasicRepository
{
    public interface ILocationInfoRepository : IRepository<Dt_LocationInfo>
    {
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicRepository/IMaterielInfoRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using 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>
    {
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/IBasicService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/ILocationInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
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_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);
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicService/IMaterielInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
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_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);
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutStockLockInfoRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using 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>
    {
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundOrderDetailRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using 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>
    {
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundOrderRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using 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>
    {
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundRepository/IOutboundRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using 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; }
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutStockLockInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
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_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);
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundOrderDetailService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
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_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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundOrderService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
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_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);
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IOutboundService/IOutboundService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using 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; }
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/ILocationStatusChangeRecordRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using 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>
    {
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/IRecordRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordRepository/IStockQuantityChangeRecordRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using 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>
    {
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/ILocationStatusChangeRecordSetvice.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
using 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);
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/IRecordService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IRecordService/IStockQuantityChangeRecordService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
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_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);
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockInfoDetailRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using 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>
    {
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockInfoRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
using 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);
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockRepository/IStockRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
using 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; }
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockInfoDetailService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
using 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);
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
using 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);
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IStockService/IStockViewService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
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_DTO.Stock;
namespace WIDESEAWCS_IStockService
{
    public interface IStockViewService : IDependency
    {
        PageGridData<StockViewDTO> GetPageData(PageDataOptions options);
        object GetDetailPage(PageDataOptions pageData);
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Basic/Dt_LocationInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Basic/Dt_MaterielInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundLockInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundOrder.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Outbound/Dt_OutboundOrderDetail.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Record/Dt_LocationStatusChangeRecord.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Record/Dt_StockQuantityChangeRecord.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Stock/Dt_StockInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
using 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; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/Stock/Dt_StockInfoDetail.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
using 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; }
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutStockLockInfoRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundOrderDetailRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundOrderRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundRepository/OutboundRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
using 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;
        }
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutStockLockInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
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_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());
        }
    }
}
´úÂë¹ÜÀí/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;
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Base/OutboundOrderService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,145 @@
using 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;
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/OutboundService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
using 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;
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutStockLockInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
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_IOutboundRepository;
using WIDESEAWCS_IOutboundService;
using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_OutboundService
{
    public partial class OutStockLockInfoService : ServiceBase<Dt_OutStockLockInfo, IOutStockLockInfoRepository>, IOutStockLockInfoService
    {
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutboundOrderDetailService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
using 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
    {
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_OutboundService/Service/OutboundOrderService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
using 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
    {
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/LocationStatusChangeRecordRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/RecordRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
using 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;
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordRepository/StockQuantityChangeRecordRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Base/LocationStatusChangeRecordSetvice.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
using 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;
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Base/StockQuantityChangeRecordService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
using 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;
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/RecordService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
using 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;
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Service/LocationStatusChangeRecordSetvice.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
using 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);
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_RecordService/Service/StockQuantityChangeRecordService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
using 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);
        }
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/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}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Basic/LocationInfoController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
using 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);
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Basic/MaterielInfoController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutStockLockInfoController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
using 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);
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutboundOrderController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Outbound/OutboundOrderDetailController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Record/LocationStatusChangeRecordController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Record/StockQuantityChangeRecordController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockInfoController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
using 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);
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockInfoDetailController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Stock/StockViewController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
using 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);
        }
    }
}
´úÂë¹ÜÀí/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" />
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockInfoDetailRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using 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)
        {
        }
    }
}
´úÂë¹ÜÀí/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();
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockRepository/StockRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
using 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;
        }
    }
}
´úÂë¹ÜÀí/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>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockInfoDetailService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
using 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;
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Base/StockInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
using 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;
        }
    }
}
´úÂë¹ÜÀí/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);
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockInfoDetailService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
using 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;
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/Service/StockInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
using 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);
        }
    }
}
´úÂë¹ÜÀí/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
    {
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_StockService/StockSerivce.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
using 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;
        }
    }
}
´úÂë¹ÜÀí/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>