hutongqing
2024-11-22 85458565e09bda1044d19b13d0b1ffb7ab576857
货位分配
已删除12个文件
已修改47个文件
已添加26个文件
已重命名3个文件
2701 ■■■■ 文件已修改
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0953fb38-b0b7-412f-af85-0f46fe65641c.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/10b99ab2-3ed9-4168-861d-3e713d433fdb.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2400cefb-3970-4564-9733-19be936041f9.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/80eaf492-40a3-42d4-8e5b-d47619044cf1.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/LocationInfoRepository.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/WarehouseRepository.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/LocationInfoService.cs 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/WarehouseService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/AGVTaskFeedBackModel.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/EnableEnum.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/PalletTypeEnum.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/EnableStatusEnum.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationChangeType.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationStatusEnum.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationTypeEnum.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InOrderStatusEnum.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InOrderTypeEnum.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OrderCreateTypeEnum.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OrderDetailStatusEnum.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutOrderStatusEnum.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutOrderTypeEnum.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/SynchronizationFlagEmun.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OtherEnum/SequenceEnum.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/OutLockStockStatusEnum.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockChangeTypeEnum.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/InTaskStatusEnum.cs 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/OutTaskStatusEnum.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/AnalysisRuleAttribute.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/CodeRuleAttribute.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisCodeEnum.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisFormatTypeEnum.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisRuleEnum.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/CodeFormatTypeEnum.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/RuleCodeEnum.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/BaseDBConfig.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ConfigEnum.cs 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LocationEnum.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/OperateTypeEnum.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/OrderEnum.cs 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/RoadwayEnum.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/StockEnum.cs 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/TaskEnum.cs 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/CorsSetup.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerSetup.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/AppSettings.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/CodeAnalysisHelper.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/SecurityEncDecryptHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs 213 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerMiddleware.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBContext.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InitializationLocationDTO.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MatSerialNumberDTO.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicRepository/ILocationInfoRepository.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderDetailService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder_Hty.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder_Hty.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task_Hty.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutStockLockInfoService.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/StockQuantityChangeRecordService.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskServiceExtendFunc.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0953fb38-b0b7-412f-af85-0f46fe65641c.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/10b99ab2-3ed9-4168-861d-3e713d433fdb.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2400cefb-3970-4564-9733-19be936041f9.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/80eaf492-40a3-42d4-8e5b-d47619044cf1.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/LocationInfoRepository.cs
@@ -4,6 +4,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.LocationEnum;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/WarehouseRepository.cs
@@ -4,6 +4,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.Enums;
using WIDESEA_IBasicRepository;
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/LocationInfoService.cs
@@ -1,9 +1,11 @@
using SqlSugar;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.LocationEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
@@ -83,10 +85,26 @@
                (bool, string, object?) result = ModelValidate.ValidateModelData(initializationLocationDTO);
                if (!result.Item1) return WebResponseContent.Instance.Error(result.Item2);
                int side = 1;
                int depth = initializationLocationDTO.Depth;
                List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
                for (int i = 0; i < initializationLocationDTO.MaxRow; i++)
                {
                    if((i + 1) % initializationLocationDTO.MaxRow == 1)
                    {
                        depth = initializationLocationDTO.Depth;
                    }
                    else if ((i + 1) % initializationLocationDTO.MaxRow == initializationLocationDTO.Depth + 1)
                    {
                        depth = 1;
                    }
                    else if ((i + 1) % initializationLocationDTO.MaxRow > 1 && (i + 1) % initializationLocationDTO.MaxRow <= initializationLocationDTO.Depth)
                    {
                        depth -= 1;
                    }
                    else
                    {
                        depth += 1;
                    }
                    for (int j = 0; j < initializationLocationDTO.MaxColumn; j++)
                    {
                        for (int k = 0; k < initializationLocationDTO.MaxLayer; k++)
@@ -98,36 +116,17 @@
                                EnableStatus = EnableStatusEnum.Normal.ObjToInt(),
                                Layer = k + 1,
                                LocationStatus = LocationStatusEnum.Free.ObjToInt(),
                                LocationType = LocationTypeEnum.Cube.ObjToInt(),
                                RoadwayNo = initializationLocationDTO.Roadway,
                                LocationType = LocationTypeEnum.Undefined.ObjToInt(),
                                RoadwayNo = $"R{initializationLocationDTO.Roadway.ToString()}",
                                Row = i + 1,
                                Depth = depth,
                            };
                            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')}æ·±";
                            }
                            locationInfo.LocationCode = $"{locationInfo.RoadwayNo}-{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 = $"{locationInfo.RoadwayNo}巷道{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();
            }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/WarehouseService.cs
@@ -10,6 +10,7 @@
using WIDESEA_IBasicService;
using WIDESEA_Model.Models;
using WIDESEA_Core.Helper;
using WIDESEA_Common.CommonEnum;
namespace WIDESEA_BasicService
{
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs
@@ -16,6 +16,8 @@
using WIDESEA_IRecordService;
using WIDESEA_IBasicService;
using WIDESEA_Model.Models;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.LocationEnum;
namespace WIDESEA_BasicService
{
@@ -27,12 +29,194 @@
            _basicRepository = basicRepository;
            _recordService = recordService;
        }
        private Dictionary<string, OrderByType> _emptyAssignOrderBy = new Dictionary<string, OrderByType>()
        double weightValue = 0.5;
        private readonly static object _locker = new object();
        static List<LocationCache> locationCaches = new List<LocationCache>();
        public Dt_LocationInfo? AssignLocation(string roadwayNo, PalletTypeEnum palletType)
        {
            { nameof(Dt_LocationInfo.Depth), OrderByType.Desc },
            { nameof(Dt_LocationInfo.Layer), OrderByType.Asc },
            { nameof(Dt_LocationInfo.Column), OrderByType.Asc },
            { nameof(Dt_LocationInfo.Row), OrderByType.Asc },
        };
            lock (_locker)
            {
                List<LocationCache> removeItems = locationCaches.Where(x => (DateTime.Now - x.DateTime).TotalMinutes > 5).ToList();
                int count = removeItems.Count;
                for (int i = 0; i < count; i++)
                {
                    locationCaches.Remove(removeItems[i]);
                }
                List<string> lockLocationCodes = locationCaches.Select(x => x.LocationCode).ToList();
                List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == roadwayNo);
                //已定义货位类型的货位
                List<Dt_LocationInfo> definedTypeLocations = locationInfos.Where(x => x.LocationType == palletType.ObjToInt()).ToList();
                //未定义类型的空货位
                List<Dt_LocationInfo> undefinedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenBy(x => x.Row).ThenBy(x => x.Column).ToList();
                if (locationInfos.Count * weightValue >= definedTypeLocations.Count && undefinedTypeEmptyLocations.Count > 0)//如果已定义类型货位未超过比例,且有未定义类型的货位
                {
                    if (palletType == PalletTypeEnum.LargePallet)
                    {
                        undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Column % 2 == 1).ToList();
                    }
                    for (int i = 0; i < undefinedTypeEmptyLocations.Count; i++)
                    {
                        Dt_LocationInfo undefinedTypeEmptyLocation = undefinedTypeEmptyLocations[i];
                        Dt_LocationInfo? locationInfo = GetUsableLocation(locationInfos, undefinedTypeEmptyLocation, palletType);
                        if (locationInfo != null)
                        {
                            //UpdateLocationStatus(locationInfo.LocationCode, palletType, LocationStatusEnum.Lock);
                            locationCaches.Add(new LocationCache { LocationCode = locationInfo.LocationCode, DateTime = DateTime.Now });
                            return locationInfo;
                        }
                    }
                }
                else
                {
                    List<Dt_LocationInfo> definedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == palletType.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenBy(x => x.Row).ThenBy(x => x.Column).ToList();
                    for (int i = 0; i < definedTypeEmptyLocations.Count; i++)
                    {
                        Dt_LocationInfo definedTypeEmptyLocation = definedTypeEmptyLocations[i];
                        Dt_LocationInfo? locationInfo = GetUsableLocation(locationInfos, definedTypeEmptyLocation, palletType);
                        if (locationInfo != null)
                        {
                            //UpdateLocationStatus(locationInfo.LocationCode, palletType, LocationStatusEnum.Lock);
                            locationCaches.Add(new LocationCache { LocationCode = locationInfo.LocationCode, DateTime = DateTime.Now });
                            return locationInfo;
                        }
                    }
                }
                return null;
            }
        }
        public Dt_LocationInfo? GetUsableLocation(List<Dt_LocationInfo> locationInfos, Dt_LocationInfo undefinedTypeEmptyLocation, PalletTypeEnum palletType)
        {
            switch (palletType)
            {
                case PalletTypeEnum.LargePallet:
                    {
                        Dt_LocationInfo? nearLocation = locationInfos.FirstOrDefault(x => x.Row == undefinedTypeEmptyLocation.Row && x.Layer == undefinedTypeEmptyLocation.Layer && x.Depth == undefinedTypeEmptyLocation.Depth && x.Column == undefinedTypeEmptyLocation.Column + 1);
                        if (nearLocation != null && nearLocation.LocationStatus == LocationStatusEnum.Free.ObjToInt() && DepthLocationIsEmpty(locationInfos, undefinedTypeEmptyLocation) != null)
                        {
                            Dt_LocationInfo? locationInfo = DepthLocationIsEmpty(locationInfos, undefinedTypeEmptyLocation);
                            if (locationInfo != null)
                            {
                                return locationInfo;
                            }
                        }
                    }
                    break;
                case PalletTypeEnum.SmallPallet:
                    {
                        Dt_LocationInfo? locationInfo = DepthLocationIsEmpty(locationInfos, undefinedTypeEmptyLocation);
                        if (locationInfo != null)
                        {
                            return locationInfo;
                        }
                    }
                    break;
            }
            return null;
        }
        private Dt_LocationInfo? DepthLocationIsEmpty(List<Dt_LocationInfo> locationInfos, Dt_LocationInfo undefinedTypeEmptyLocation)
        {
            int maxDepth = locationInfos.Max(x => x.Depth);
            if (undefinedTypeEmptyLocation.Depth == 1 && maxDepth == 1)
            {
                return undefinedTypeEmptyLocation;
            }
            else
            {
                List<Dt_LocationInfo> locations = GetGroupLocations(locationInfos, undefinedTypeEmptyLocation);
                List<Dt_LocationInfo> moreDepth = locations.Where(x => x.Depth > undefinedTypeEmptyLocation.Depth).ToList();
                bool moreDepthFlag = moreDepth.FirstOrDefault(x => x.LocationStatus != LocationStatusEnum.InStock.ObjToInt()) == null;//查询大于当前货位深度的集合里是否有状态不为有货的货位,如果是true,则表示深货位有未被使用的情况
                List<Dt_LocationInfo> littleDepth = locations.Where(x => x.Depth <= undefinedTypeEmptyLocation.Depth).ToList();
                bool littleDepthFlag = littleDepth.FirstOrDefault(x => x.LocationStatus != LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.OnlyIn.ObjToInt() && x.EnableStatus != EnableStatusEnum.Normal.ObjToInt()) == null; //查询小于当前货位深度的集合里是否有状态不为空,且禁用状态不为禁用以及只入的货位,如果是true,则表示浅货位被使用或者被禁用的情况
                if (moreDepthFlag && littleDepthFlag)
                {
                    return undefinedTypeEmptyLocation;
                }
            }
            return null;
        }
        public void UpdateLocationStatus(string locationCode, PalletTypeEnum palletType, LocationStatusEnum locationStatus, string taskNum = "", string orderNo = "")
        {
            Dt_LocationInfo location = Repository.QueryFirst(x => x.LocationCode == locationCode);
            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo);
            List<Dt_LocationInfo> locations = GetGroupLocations(locationInfos, location);
            if (locationInfos.Max(x => x.Depth) < 3)
            {
                for (int i = 0; i < locations.Count; i++)
                {
                    locations[i].LocationStatus = locationStatus.ObjToInt();
                    locations[i].LocationType = palletType.ObjToInt();
                }
                Dt_LocationInfo? nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1);
                if (nearLocation != null)
                {
                    List<Dt_LocationInfo> nearLocations = GetGroupLocations(locationInfos, nearLocation);
                    for (int i = 0; i < nearLocations.Count; i++)
                    {
                        nearLocations[i].LocationType = palletType.ObjToInt();
                        if (palletType == PalletTypeEnum.LargePallet)
                        {
                            nearLocations[i].LocationStatus = locationStatus.ObjToInt();
                        }
                    }
                    locations.AddRange(nearLocations);
                }
            }
            else
            {
                for (int i = 0; i < locations.Count; i++)
                {
                    locations[i].LocationStatus = locationStatus.ObjToInt();
                    locations[i].LocationType = palletType.ObjToInt();
                }
            }
            Repository.UpdateData(locations);
        }
        private List<Dt_LocationInfo> GetGroupLocations(List<Dt_LocationInfo> locationInfos, Dt_LocationInfo location)
        {
            List<Dt_LocationInfo> groupLocations = new List<Dt_LocationInfo>() { location };
            int maxDepth = locationInfos.Max(x => x.Depth);
            for (int j = location.Depth + 1; j <= maxDepth; j++)
            {
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer);
                if (locationInfo != null)
                {
                    groupLocations.Add(locationInfo);
                }
            }
            for (int j = location.Depth - 1; j >= 1; j--)
            {
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer);
                if (locationInfo != null)
                {
                    groupLocations.Add(locationInfo);
                }
            }
            return groupLocations;
        }
    }
    public class LocationCache
    {
        public string LocationCode { get; set; }
        public DateTime DateTime { get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/AGVTaskFeedBackModel.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/EnableEnum.cs
ÎļþÃû´Ó ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs ÐÞ¸Ä
@@ -5,7 +5,7 @@
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Core.Enums
namespace WIDESEA_Common.CommonEnum
{
    /// <summary>
    /// å¯ç¦çŠ¶æ€
@@ -23,22 +23,5 @@
        /// </summary>
        [Description("启用")]
        Enable = 1,
    }
    #region åº“存状态
    #endregion åº“存状态
    public enum OperateType
    {
        äººå·¥åˆ é™¤ = 1,
        è‡ªåŠ¨åˆ é™¤ = 2,
        äººå·¥æ¢å¤ = 3,
        è‡ªåŠ¨æ¢å¤ = 4,
        äººå·¥å®Œæˆ = 5,
        è‡ªåŠ¨å®Œæˆ = 6,
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/PalletTypeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.CommonEnum
{
    public enum PalletTypeEnum
    {
        SmallPallet = 1,
        MediumPallet = 2,
        LargePallet = 3,
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/EnableStatusEnum.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 WIDESEA_Common.LocationEnum
{
    /// <summary>
    /// è´§ä½ç¦ç”¨çŠ¶æ€
    /// </summary>
    public enum EnableStatusEnum
    {
        /// <summary>
        /// æ­£å¸¸
        /// </summary>
        [Description("正常")]
        Normal = 0,
        /// <summary>
        /// åªå…¥
        /// </summary>
        [Description("只入")]
        OnlyIn = 1,
        /// <summary>
        /// åªå‡º
        /// </summary>
        [Description("只出")]
        OnlyOut = 2,
        /// <summary>
        /// ç¦ç”¨
        /// </summary>
        [Description("禁用")]
        Disable = 3
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationChangeType.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.LocationEnum
{
    /// <summary>
    /// è´§ä½çŠ¶æ€å˜æ›´ç±»åž‹
    /// </summary>
    public enum LocationChangeType
    {
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationStatusEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.LocationEnum
{
    /// <summary>
    /// è´§ä½çŠ¶æ€
    /// </summary>
    public enum LocationStatusEnum
    {
        /// <summary>
        /// ç©ºé—²
        /// </summary>
        [Description("空闲")]
        Free = 0,
        /// <summary>
        /// é”å®š
        /// </summary>
        [Description("锁定")]
        Lock = 1,
        /// <summary>
        /// æœ‰è´§
        /// </summary>
        [Description("有货")]
        InStock = 2,
        /// <summary>
        /// ç©ºæ‰˜é”å®š
        /// </summary>
        [Description("空托锁定")]
        PalletLock = 98,
        /// <summary>
        /// ç©ºæ‰˜ç›˜
        /// </summary>
        [Description("空托盘")]
        Pallet = 99
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationTypeEnum.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 WIDESEA_Common.LocationEnum
{
    /// <summary>
    /// è´§ä½ç±»åž‹
    /// </summary>
    public enum LocationTypeEnum
    {
        /// <summary>
        /// æœªå®šä¹‰
        /// </summary>
        [Description("未定义")]
        Undefined = 0,
        /// <summary>
        /// å°æ‰˜ç›˜
        /// </summary>
        [Description("小托盘")]
        SmallPallet = 1,
        /// <summary>
        /// ä¸­æ‰˜ç›˜
        /// </summary>
        [Description("中托盘")]
        MediumPallet = 2,
        /// <summary>
        /// å¤§æ‰˜ç›˜
        /// </summary>
        [Description("大托盘")]
        LargePallet = 3,
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InOrderStatusEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.OrderEnum
{
    /// <summary>
    /// å…¥åº“单据状态 0,未开始  1,入库中  2,入库完成
    /// </summary>
    public enum InOrderStatusEnum
    {
        /// <summary>
        /// æœªå¼€å§‹
        /// </summary>
        [Description("未开始")]
        æœªå¼€å§‹ = 0,
        /// <summary>
        /// å…¥åº“中
        /// </summary>
        [Description("入库中")]
        å…¥åº“中 = 1,
        /// <summary>
        /// å…¥åº“完成
        /// </summary>
        [Description("入库完成")]
        å…¥åº“完成 = 2,
        /// <summary>
        /// å…³é—­
        /// </summary>
        [Description("关闭")]
        å…³é—­ = 99,
        /// <summary>
        /// å–消
        /// </summary>
        [Description("取消")]
        å–消 = 98
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InOrderTypeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.OrderEnum
{
    /// <summary>
    /// å…¥åº“单类型 100 ç”Ÿäº§å…¥åº“单;200 ç”Ÿäº§é€€æ–™å•;300 é‡‡è´­å…¥åº“单;400 è°ƒæ‹¨å…¥åº“单;500 é”€å”®é€€è´§å•;600 ç©ºç›˜å…¥åº“单;700 å…¶ä»–入库单
    /// </summary>
    public enum InOrderTypeEnum
    {
        /// <summary>
        /// ç”Ÿäº§å…¥åº“单
        /// </summary>
        [Description("生产入库单")]
        Product = 100,
        /// <summary>
        /// ç”Ÿäº§é€€æ–™å•
        /// </summary>
        [Description("生产退料单")]
        Return = 105,
        /// <summary>
        /// é‡‡è´­å…¥åº“单
        /// </summary>
        [Description("采购入库单")]
        Purchase = 110,
        /// <summary>
        /// è°ƒæ‹¨å…¥åº“单
        /// </summary>
        [Description("调拨入库单")]
        Allocat = 115,
        /// <summary>
        /// é”€å”®é€€è´§å•
        /// </summary>
        [Description("销售退货单")]
        SaleReturn = 120,
        /// <summary>
        /// ç©ºç›˜å…¥åº“单
        /// </summary>
        [Description("空盘入库单")]
        EmptyDisk = 125,
        /// <summary>
        /// å…¶ä»–入库单
        /// </summary>
        [Description("其他入库单")]
        Other = 130
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OrderCreateTypeEnum.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 WIDESEA_Common.OrderEnum
{
    public enum OrderCreateTypeEnum
    {
        /// <summary>
        /// ç³»ç»Ÿå†…创建
        /// </summary>
        [Description("系统内创建")]
        CreateInSystem,
        /// <summary>
        /// ä¸Šæ¸¸ç³»ç»ŸæŽ¨é€
        /// </summary>
        [Description("上游系统推送")]
        UpperSystemPush
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OrderDetailStatusEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.OrderEnum
{
    public enum OrderDetailStatusEnum
    {
        /// <summary>
        /// æ–°å»º
        /// </summary>
        [Description("新建")]
        New = 0,
        /// <summary>
        /// ç»„盘入库
        /// </summary>
        [Description("组盘入库")]
        GroupAndInbound = 10,
        /// <summary>
        /// å‡ºåº“部分分配完成
        /// </summary>
        [Description("出库部分分配完成")]
        AssignOverPartial = 60,
        /// <summary>
        /// å‡ºåº“分配完成
        /// </summary>
        [Description("出库分配完成")]
        AssignOver = 70,
        /// <summary>
        /// å‡ºåº“中
        /// </summary>
        [Description("出库中")]
        Outbound = 80,
        /// <summary>
        /// å®Œæˆ
        /// </summary>
        [Description("完成")]
        Over = 100
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutOrderStatusEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.OrderEnum
{
    public enum OutOrderStatusEnum
    {
        /// <summary>
        /// æœªå¼€å§‹
        /// </summary>
        [Description("未开始")]
        æœªå¼€å§‹ = 0,
        /// <summary>
        /// å‡ºåº“中
        /// </summary>
        [Description("出库中")]
        å‡ºåº“中 = 1,
        /// <summary>
        /// å‡ºåº“完成
        /// </summary>
        [Description("出库完成")]
        å‡ºåº“完成 = 2,
        /// <summary>
        /// å…³é—­
        /// </summary>
        [Description("关闭")]
        å…³é—­ = 99,
        /// <summary>
        /// å–消
        /// </summary>
        [Description("取消")]
        å–消 = 98
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_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 WIDESEA_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
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/SynchronizationFlagEmun.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.OrderEnum
{
    /// <summary>
    /// åŒæ­¥æ ‡å¿— 0:未同步 1:同步成功  2:同步失败
    /// </summary>
    public enum SynchronizationFlagEmun
    {
        /// <summary>
        /// å®Œæˆ
        /// </summary>
        [Description("未同步")]
        æœªåŒæ­¥ = 0,
        /// <summary>
        /// å®Œæˆ
        /// </summary>
        [Description("同步成功")]
        åŒæ­¥æˆåŠŸ = 1,
        /// <summary>
        /// å®Œæˆ
        /// </summary>
        [Description("同步失败")]
        åŒæ­¥å¤±è´¥ = 2
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/OtherEnum/SequenceEnum.cs
ÎļþÃû´Ó ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/SequenceEnum.cs ÐÞ¸Ä
@@ -4,7 +4,7 @@
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Core.Enums
namespace WIDESEA_Common.OtherEnum
{
    public enum SequenceEnum
    {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/OutLockStockStatusEnum.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 WIDESEA_Common.StockEnum
{
    public enum OutLockStockStatusEnum
    {
        [Description("已分配")]
        å·²åˆ†é… = 0,
        [Description("出库中")]
        å‡ºåº“中 = 1,
        [Description("出库完成")]
        å‡ºåº“完成 = 2,
        [Description("撤销")]
        æ’¤é”€ = 99
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockChangeTypeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.StockEnum
{
    public enum StockChangeTypeEnum
    {
        /// <summary>
        /// ç»„盘
        /// </summary>
        [Description("组盘")]
        MaterielGroup,
        /// <summary>
        /// å…¥åº“
        /// </summary>
        [Description("入库")]
        Inbound,
        /// <summary>
        /// å‡ºåº“
        /// </summary>
        [Description("出库")]
        Outbound,
        /// <summary>
        /// ç§»åº“
        /// </summary>
        [Description("移库")]
        Relocation,
        /// <summary>
        /// å…¥åº“锁定
        /// </summary>
        [Description("锁定")]
        Lock,
        /// <summary>
        /// åº“存锁定
        /// </summary>
        [Description("库存锁定")]
        StockLock,
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.StockEnum
{
    /// <summary>
    /// åº“存状态: 1,组盘暂存  2,组盘撤销  3,入库确认 4,入库撤销   5,已入库  6,已出库
    /// </summary>
    public enum StockStatusEmun
    {
        [Description("组盘暂存")]
        ç»„盘暂存 = 1,
        [Description("组盘撤销")]
        ç»„盘撤销 = 2,
        [Description("入库确认")]
        å…¥åº“确认 = 3,
        [Description("入库撤销")]
        å…¥åº“撤销 = 4,
        [Description("已入库")]
        å·²å…¥åº“ = 5,
        [Description("入库完成")]
        å…¥åº“完成 = 6,
        [Description("出库锁定")]
        å‡ºåº“锁定 = 7,
        [Description("出库完成")]
        å‡ºåº“完成 = 8,
        [Description("移库锁定")]
        ç§»åº“锁定 = 9,
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/InTaskStatusEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.TaskEnum
{
    /// <summary>
    /// å…¥åº“任务状态
    /// </summary>
    public enum InTaskStatusEnum
    {
        /// <summary>
        /// æ–°å»ºå…¥åº“任务
        /// </summary>
        [Description("新建")]
        InNew = 200,
        /// <summary>
        /// å †åž›æœºå…¥åº“执行中
        /// </summary>
        [Description("堆垛机入库执行中")]
        SC_InExecuting = 230,
        /// <summary>
        /// å †åž›æœºå…¥åº“完成
        /// </summary>
        [Description("堆垛机入库完成")]
        SC_InFinish = 235,
        /// <summary>
        /// å…¥åº“任务完成
        /// </summary>
        [Description("入库任务完成")]
        InFinish = 290,
        /// <summary>
        /// å…¥åº“任务取消
        /// </summary>
        [Description("入库任务取消")]
        InCancel = 298,
        /// <summary>
        /// å…¥åº“任务异常
        /// </summary>
        [Description("入库任务异常")]
        InException = 299,
        /// <summary>
        /// æ–°å»ºç§»åº“任务
        /// </summary>
        [Description("新建移库任务")]
        RelocationNew = 300,
        /// <summary>
        /// ç§»åº“任务完成
        /// </summary>
        [Description("移库任务完成")]
        RelocationFinish = 310,
        /// <summary>
        /// ç§»åº“任务执行中
        /// </summary>
        [Description("移库任务执行中")]
        RelocationExecuting = 320,
        /// <summary>
        /// ç§»åº“任务取消
        /// </summary>
        [Description("移库任务取消")]
        RelocationCancel = 330,
        /// <summary>
        /// ç§»åº“任务异常
        /// </summary>
        [Description("移库任务异常")]
        RelocationException = 340,
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/OutTaskStatusEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.TaskEnum
{
    /// <summary>
    /// å‡ºåº“任务状态
    /// </summary>
    public enum OutTaskStatusEnum
    {
        /// <summary>
        /// æ–°å»ºä»»åŠ¡
        /// </summary>
        [Description("新建")]
        OutNew = 100,
        /// <summary>
        /// å †åž›æœºå‡ºåº“执行中
        /// </summary>
        [Description("堆垛机出库执行中")]
        SC_OutExecuting = 130,
        /// <summary>
        /// å †åž›æœºå‡ºåº“完成
        /// </summary>
        [Description("堆垛机出库完成")]
        SC_OutFinish = 135,
        /// <summary>
        /// å‡ºåº“任务完成
        /// </summary>
        [Description("出库任务完成")]
        OutFinish = 190,
        /// <summary>
        /// å‡ºåº“任务取消
        /// </summary>
        [Description("出库任务取消")]
        OutCancel = 198,
        /// <summary>
        /// å‡ºåº“任务异常
        /// </summary>
        [Description("出库任务异常")]
        OutException = 199
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,108 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.TaskEnum
{
    /// <summary>
    /// ä»»åŠ¡ç±»åž‹
    /// </summary>
    public enum TaskTypeEnum
    {
        /// <summary>
        /// å‡ºåº“ =100
        /// </summary>
        [Description("出库")]
        Outbound = 100,
        /// <summary>
        /// ç›˜ç‚¹å‡ºåº“
        /// </summary>
        [Description("盘点出库")]
        OutInventory = 101,
        /// <summary>
        /// åˆ†æ‹£å‡ºåº“
        /// </summary>
        [Description("分拣出库")]
        OutPick = 102,
        /// <summary>
        /// è´¨æ£€å‡ºåº“
        /// </summary>
        [Description("质检出库")]
        OutQuality = 103,
        /// <summary>
        /// å‡ºç©º
        /// </summary>
        [Description("出空")]
        PalletOutbound = 104,
        /// <summary>
        /// è¡¥ç©º
        /// </summary>
        [Description("补空")]
        PalletFillOutbound = 105,
        /// <summary>
        /// å…¥åº“
        /// </summary>
        [Description("入库")]
        Inbound = 200,
        /// <summary>
        /// ç›˜ç‚¹å…¥åº“
        /// </summary>
        [Description("盘点入库")]
        InInventory = 201,
        /// <summary>
        /// åˆ†æ‹£å…¥åº“
        /// </summary>
        [Description("分拣入库")]
        InPick = 202,
        /// <summary>
        /// è´¨æ£€å…¥åº“
        /// </summary>
        [Description("质检入库")]
        InQuality = 203,
        /// <summary>
        /// å…¥ç©º
        /// </summary>
        [Description("入空")]
        PalletInbound = 204,
        /// <summary>
        /// å›žç©º
        /// </summary>
        [Description("回空")]
        PalletReturnInbound = 205,
        /// <summary>
        /// ç§»åº“
        /// </summary>
        [Description("移库")]
        Relocation = 300,
        /// <summary>
        /// åº“内移库
        /// </summary>
        [Description("库内移库")]
        RelocationIn = 301,
        /// <summary>
        /// åº“外移库
        /// </summary>
        [Description("库外移库")]
        RelocationOut = 302,
        [Description("AGV搬运")]
        AGVCarry = 500,
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs
@@ -8,6 +8,7 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.CodeConfigEnum;
using WIDESEA_Core.Const;
using WIDESEA_Core.DB;
using WIDESEA_Core.DB.Models;
@@ -86,7 +87,7 @@
                }
                if (App.User?.UserId > 0)
                //if (App.User?.UserId > 0)
                {
                    switch (entityInfo.OperationType)
                    {
@@ -142,11 +143,11 @@
                ruleConfig.ModifyDate = DateTime.Now;
                code = ruleConfig.Format;
                code = code.Replace($"[{CodeFormat.YYYY}]", now.Year.ToString().PadLeft(4, '0'));
                code = code.Replace($"[{CodeFormat.MM}]", now.Month.ToString().PadLeft(2, '0'));
                code = code.Replace($"[{CodeFormat.DD}]", now.Day.ToString().PadLeft(2, '0'));
                code = code.Replace($"[{CodeFormat.ST}]", ruleConfig.StartStr.ToString());
                code = code.Replace($"[{CodeFormat.NUM}]", ruleConfig.CurrentVal.ToString().PadLeft(ruleConfig.Length ?? 0, '0'));
                code = code.Replace($"[{CodeFormatTypeEnum.YYYY}]", now.Year.ToString().PadLeft(4, '0'));
                code = code.Replace($"[{CodeFormatTypeEnum.MM}]", now.Month.ToString().PadLeft(2, '0'));
                code = code.Replace($"[{CodeFormatTypeEnum.DD}]", now.Day.ToString().PadLeft(2, '0'));
                code = code.Replace($"[{CodeFormatTypeEnum.ST}]", ruleConfig.StartStr.ToString());
                code = code.Replace($"[{CodeFormatTypeEnum.NUM}]", ruleConfig.CurrentVal.ToString().PadLeft(ruleConfig.Length ?? 0, '0'));
            }
            catch (Exception ex)
            {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/AnalysisRuleAttribute.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.CodeConfigEnum;
using WIDESEA_Core.Enums;
namespace WIDESEA_Core.Attributes
@@ -10,11 +11,11 @@
    [AttributeUsage(AttributeTargets.Property)]
    public class AnalysisItemRuleAttribute : Attribute
    {
        public AnalysisFormatType AnalysisFormaType { get; set; }
        public AnalysisFormatTypeEnum AnalysisFormaType { get; set; }
        public int Length { get; set; }
        public AnalysisItemRuleAttribute(AnalysisFormatType analysisFormaType)
        public AnalysisItemRuleAttribute(AnalysisFormatTypeEnum analysisFormaType)
        {
            AnalysisFormaType = analysisFormaType;
        }
@@ -23,7 +24,7 @@
    [AttributeUsage(AttributeTargets.Class)]
    public class AnalysisRuleAttribute : Attribute
    {
        public AnalysisRule AnalysisRule { get; set; } = AnalysisRule.Split;
        public AnalysisRuleEnum AnalysisRule { get; set; } = AnalysisRuleEnum.Split;
        public AnalysisRuleAttribute()
        {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/CodeRuleAttribute.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.CodeConfigEnum;
using WIDESEA_Core.Enums;
namespace WIDESEA_Core.Attributes
@@ -10,8 +11,8 @@
    [AttributeUsage(AttributeTargets.Property)]
    public class CodeRuleAttribute : Attribute
    {
        public RuleCode RuleCode { get; set; }
        public CodeRuleAttribute(RuleCode ruleCode)
        public RuleCodeEnum RuleCode { get; set; }
        public CodeRuleAttribute(RuleCodeEnum ruleCode)
        {
            RuleCode = ruleCode;
        }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs
@@ -22,7 +22,7 @@
        /// <returns></returns>
        public static string IssueJwt(TokenModelJwt tokenModel)
        {
            string exp = $"{new DateTimeOffset(DateTime.Now.AddMinutes(/*tokenModel.UserId == 1 ? 43200 : */AppSettings.app("ExpMinutes").ObjToInt())).ToUnixTimeSeconds()}";
            string exp = $"{new DateTimeOffset(DateTime.Now.AddMinutes(/*tokenModel.UserId == 1 ? 43200 : */AppSettings.Get("ExpMinutes").ObjToInt())).ToUnixTimeSeconds()}";
            List<Claim> claims = new List<Claim>
                {
                    new Claim(JwtRegisteredClaimNames.Jti, tokenModel.UserId.ToString()),
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs
@@ -71,9 +71,9 @@
        Task<bool> DeleteDataByIdAsync(object id);
        bool DeleteAndMoveIntoHty(TEntity entity, OperateType operateType);
        bool DeleteAndMoveIntoHty(TEntity entity, OperateTypeEnum operateType);
        bool DeleteAndMoveIntoHty(List<TEntity> entities, OperateType operateType);
        bool DeleteAndMoveIntoHty(List<TEntity> entities, OperateTypeEnum operateType);
        /// <summary>
        /// é€šè¿‡ä¸»é”®æ•°æ®åˆ é™¤å¤šæ¡æ•°æ®
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs
@@ -864,7 +864,7 @@
             .WhereIF(whereExpression != null, whereExpression).ToListAsync();
        }
        public bool DeleteAndMoveIntoHty(TEntity entity, OperateType operateType)
        public bool DeleteAndMoveIntoHty(TEntity entity, OperateTypeEnum operateType)
        {
            Type type = entity.GetType();
            Assembly assembly = type.Assembly;
@@ -873,7 +873,7 @@
            {
                object? obj = Activator.CreateInstance(htyType);
                PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
                PropertyInfo? operateTypePro = htyType.GetProperty(nameof(OperateType));
                PropertyInfo? operateTypePro = htyType.GetProperty(nameof(OperateTypeEnum));
                PropertyInfo? sourceIdPro = htyType.GetProperty("SourceId");
                if (obj != null && keyPro != null && operateTypePro != null && sourceIdPro != null)
                {
@@ -909,7 +909,7 @@
            return DeleteData(entity);
        }
        public bool DeleteAndMoveIntoHty(List<TEntity> entities, OperateType operateType)
        public bool DeleteAndMoveIntoHty(List<TEntity> entities, OperateTypeEnum operateType)
        {
            Type type = typeof(TEntity);
            Assembly assembly = type.Assembly;
@@ -918,7 +918,7 @@
            {
                object? obj2 = Activator.CreateInstance(htyType);
                PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
                PropertyInfo? operateTypePro = htyType.GetProperty(nameof(OperateType));
                PropertyInfo? operateTypePro = htyType.GetProperty(nameof(OperateTypeEnum));
                PropertyInfo? sourceIdPro = htyType.GetProperty("SourceId");
                if (obj2 != null && keyPro != null && operateTypePro != null && sourceIdPro != null)
                {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisCodeEnum.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 WIDESEA_Core.CodeConfigEnum
{
    /// <summary>
    /// è§£æžè§„则编号
    /// </summary>
    public enum AnalysisCodeEnum
    {
        /// <summary>
        /// å†…箱码
        /// </summary>
        [Description("内箱码")]
        InnerCode,
        /// <summary>
        /// å¤–箱码
        /// </summary>
        [Description("外箱码")]
        OutterCode
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisFormatTypeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Core.CodeConfigEnum
{
    /// <summary>
    /// è§£æžæ ¼å¼ç±»åž‹
    /// </summary>
    public enum AnalysisFormatTypeEnum
    {
        /// <summary>
        /// ç‰©æ–™ç¼–号
        /// </summary>
        [Description("物料编号")]
        MTC,
        /// <summary>
        /// ç”Ÿäº§æ—¥æœŸ
        /// </summary>
        [Description("生产日期")]
        MTPT,
        /// <summary>
        /// æ‰¹æ¬¡å·
        /// </summary>
        [Description("批次号")]
        BHN,
        /// <summary>
        /// æ•°é‡
        /// </summary>
        [Description("数量")]
        MTQ,
        /// <summary>
        /// è®¢å•号
        /// </summary>
        [Description("订单号")]
        ODN,
        /// <summary>
        /// åŽŸå§‹æ•°æ®
        /// </summary>
        [Description("原始数据")]
        BD,
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisRuleEnum.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 WIDESEA_Core.CodeConfigEnum
{
    /// <summary>
    /// è§£æžè§„则
    /// </summary>
    public enum AnalysisRuleEnum
    {
        /// <summary>
        /// åˆ†å‰²å­—符串分割
        /// </summary>
        [Description("分割字符串分割")]
        Split,
        /// <summary>
        /// é•¿åº¦åˆ†å‰²
        /// </summary>
        [Description("长度分割")]
        Length
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/CodeFormatTypeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Core.CodeConfigEnum
{
    /// <summary>
    /// ç¼–码格式类型
    /// </summary>
    public enum CodeFormatTypeEnum
    {
        /// <summary>
        /// èµ·å§‹å­—符串
        /// </summary>
        [Description("起始字符串")]
        ST,
        /// <summary>
        /// 4位数年
        /// </summary>
        [Description("4位数年")]
        YYYY,
        /// <summary>
        /// 2位数月
        /// </summary>
        [Description("2位数月")]
        MM,
        /// <summary>
        /// 2位数日
        /// </summary>
        [Description("2位数日")]
        DD,
        /// <summary>
        /// æµæ°´å·
        /// </summary>
        [Description("流水号")]
        NUM,
        /// <summary>
        /// ç»“束字符串
        /// </summary>
        [Description("结束字符串")]
        ED
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/RuleCodeEnum.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 WIDESEA_Core.CodeConfigEnum
{
    /// <summary>
    /// ç¼–码规则编号
    /// </summary>
    public enum RuleCodeEnum
    {
        /// <summary>
        /// å…¥åº“单号编码规则编号
        /// </summary>
        [Description("入库单号编码规则编号")]
        InboundOrderRule,
        /// <summary>
        /// å‡ºåº“单号编码规则编号
        /// </summary>
        [Description("出库单号编码规则编号")]
        OutboundOrderRule
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/BaseDBConfig.cs
@@ -42,7 +42,7 @@
            SqlSugarClient sqlSugarClient = new SqlSugarClient(new ConnectionConfig
            {
                ConfigId = MainDb.CurrentDbConnId,
                ConnectionString = AppSettings.app(MainDb.ConnectionString).DecryptDES(AppSecret.DB),
                ConnectionString = AppSettings.Get(MainDb.ConnectionString).DecryptDES(AppSecret.DB),
                IsAutoCloseConnection = true,
                DbType = MainDb.DbType,
                AopEvents = new AopEvents
@@ -58,7 +58,7 @@
            List<MutiDBOperate> listdatabaseSlaveDB = new List<MutiDBOperate>();
            MutiDBOperate mainDb = new MutiDBOperate()
            {
                Connection = AppSettings.app(MainDb.ConnectionString).DecryptDES(AppSecret.DB),
                Connection = AppSettings.Get(MainDb.ConnectionString).DecryptDES(AppSecret.DB),
                ConnId = MainDb.CurrentDbConnId,
                DbType = DataBaseType.SqlServer
            };
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ConfigEnum.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LocationEnum.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/OperateTypeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Core.Enums
{
    public enum OperateTypeEnum
    {
        äººå·¥åˆ é™¤ = 1,
        è‡ªåŠ¨åˆ é™¤ = 2,
        äººå·¥æ¢å¤ = 3,
        è‡ªåŠ¨æ¢å¤ = 4,
        äººå·¥å®Œæˆ = 5,
        è‡ªåŠ¨å®Œæˆ = 6,
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/OrderEnum.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/RoadwayEnum.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/StockEnum.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/TaskEnum.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/CorsSetup.cs
@@ -24,14 +24,14 @@
            services.AddCors(c =>
            {
                if (!AppSettings.app(new string[] { "Cors", "EnableAllIPs" }).ObjToBool())
                if (!AppSettings.Get(new string[] { "Cors", "EnableAllIPs" }).ObjToBool())
                {
                    c.AddPolicy(AppSettings.app(new string[] {"Cors", "PolicyName" }),
                    c.AddPolicy(AppSettings.Get(new string[] {"Cors", "PolicyName" }),
                        policy =>
                        {
                            policy
                            .WithOrigins(AppSettings.app(new string[] { "Cors", "IPs" }).Split(','))
                            .WithOrigins(AppSettings.Get(new string[] { "Cors", "IPs" }).Split(','))
                            .AllowAnyHeader()//Ensures that the policy allows any header.
                            .AllowAnyMethod();
                        });
@@ -39,7 +39,7 @@
                else
                {
                    //允许任意跨域请求
                    c.AddPolicy(AppSettings.app(new string[] { "Cors", "PolicyName" }),
                    c.AddPolicy(AppSettings.Get(new string[] { "Cors", "PolicyName" }),
                        policy =>
                        {
                            policy
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerSetup.cs
@@ -29,7 +29,7 @@
            var basePath = AppContext.BaseDirectory;
            //var basePath2 = Microsoft.DotNet.PlatformAbstractions.ApplicationEnvironment.ApplicationBasePath;
            var ApiName = AppSettings.app(new string[] { "ApiName" });
            var ApiName = AppSettings.Get(new string[] { "ApiName" });
            services.AddSwaggerGen(c =>
            {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs
@@ -74,7 +74,7 @@
                {
                    DateTime? expDate = context.HttpContext.User.Claims.Where(x => x.Type == JwtRegisteredClaimNames.Exp).Select(x => x.Value).FirstOrDefault()?.GetTimeSpmpToDate();
                    //动态标识刷新token(2021.05.01)
                    int ExpMinutes = AppSettings.app("ExpMinutes").ObjToInt();
                    int ExpMinutes = AppSettings.Get("ExpMinutes").ObjToInt();
                    if ((expDate.GetValueOrDefault() - DateTime.Now).TotalMinutes > ExpMinutes)
                    {
                        context.Unauthorized("登陆已过期");
@@ -104,7 +104,7 @@
            {
                DateTime? expDate = context.HttpContext.User.Claims.Where(x => x.Type == JwtRegisteredClaimNames.Exp).Select(x => x.Value).FirstOrDefault()?.GetTimeSpmpToDate();
                //动态标识刷新token(2021.05.01)
                int ExpMinutes = AppSettings.app("ExpMinutes").ObjToInt();
                int ExpMinutes = AppSettings.Get("ExpMinutes").ObjToInt();
                if ((expDate.GetValueOrDefault() - DateTime.Now).TotalMinutes < ExpMinutes / 3 && context.HttpContext.Request.Path != replaceTokenPath)
                {
                    context.HttpContext.Response.Headers.Add("widesea_exp", "1");
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/AppSettings.cs
@@ -39,7 +39,7 @@
        /// </summary>
        /// <param name="sections">节点配置</param>
        /// <returns></returns>
        public static string app(params string[] sections)
        public static string Get(params string[] sections)
        {
            try
            {
@@ -60,7 +60,7 @@
        /// <typeparam name="T"></typeparam>
        /// <param name="sections"></param>
        /// <returns></returns>
        public static List<T> app<T>(params string[] sections)
        public static List<T> Get<T>(params string[] sections)
        {
            List<T> list = new List<T>();
            // å¼•用 Microsoft.Extensions.Configuration.Binder åŒ…
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/CodeAnalysisHelper.cs
@@ -7,6 +7,7 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.CodeConfigEnum;
using WIDESEA_Core.DB;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Seed;
@@ -22,7 +23,7 @@
        /// <param name="analysisCode">规则编号</param>
        /// <param name="code">需解析的字符串</param>
        /// <returns></returns>
        public static T CodeAnalysis<T>(AnalysisCode analysisCode, string code)
        public static T CodeAnalysis<T>(AnalysisCodeEnum analysisCode, string code)
        {
            Type type = typeof(T);
            object? obj = Activator.CreateInstance(type);
@@ -52,7 +53,7 @@
                        if (items.Count == codes.Count)
                        {
                            PropertyInfo[] propertyInfos = type.GetProperties();
                            if (AnalysisRule.Split == analysisRule.AnalysisRule)
                            if (AnalysisRuleEnum.Split == analysisRule.AnalysisRule)
                            {
                                for (int i = 0; i < propertyInfos.Length; i++)
                                {
@@ -85,7 +86,7 @@
        /// <param name="analysisCode">规则编号</param>
        /// <param name="codeList">需解析的字符串集合</param>
        /// <returns></returns>
        public static List<T> CodeAnalysis<T>(AnalysisCode analysisCode, List<string> codeList)
        public static List<T> CodeAnalysis<T>(AnalysisCodeEnum analysisCode, List<string> codeList)
        {
            Type type = typeof(T);
            List<T> list = new List<T>();
@@ -117,7 +118,7 @@
                            if (items.Count == codes.Count)
                            {
                                PropertyInfo[] propertyInfos = type.GetProperties();
                                if (AnalysisRule.Split == analysisRule.AnalysisRule)
                                if (AnalysisRuleEnum.Split == analysisRule.AnalysisRule)
                                {
                                    for (int i = 0; i < propertyInfos.Length; i++)
                                    {
@@ -125,7 +126,7 @@
                                        AnalysisItemRuleAttribute? analysisItemRule = propertyInfo.GetCustomAttribute<AnalysisItemRuleAttribute>();
                                        if (analysisItemRule != null)
                                        {
                                            if(analysisItemRule.AnalysisFormaType == AnalysisFormatType.BD)
                                            if(analysisItemRule.AnalysisFormaType == AnalysisFormatTypeEnum.BD)
                                            {
                                                propertyInfo.SetValue(result, code.ChangeType(propertyInfo.PropertyType));
                                            }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs
@@ -104,55 +104,5 @@
            }
            return null;
        }
        public static T Post<T>(string url, object parm, string rquestName = "") where T : class
        {
            HttpWebResponse response = null;
            StreamReader resultReader = null;
            string responseContent = string.Empty;
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Timeout = 10 * 1000;
                request.Method = "POST";
                request.ContentType = "application/json; charset=UTF-8";
                parm = parm ?? "";
                byte[] data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(parm));
                request.ContentLength = data.Length;
                using (Stream newStream = request.GetRequestStream())
                {
                    newStream.Write(data, 0, data.Length);
                };
                response = (HttpWebResponse)request.GetResponse();
                Stream webStream = response.GetResponseStream();
                if (webStream == null)
                {
                    throw new Exception("Network error");
                }
                int statsCode = (int)response.StatusCode;
                resultReader = new StreamReader(webStream, Encoding.UTF8);
                responseContent = resultReader.ReadToEnd();
                if (response != null)
                    response.Close();
                if (resultReader != null)
                    resultReader.Close();
                if (statsCode != 200)
                {
                    throw new Exception("异常,响应码:" + statsCode.ToString());
                }
                Logger.Write_Log("System/API请求", rquestName, "请求成功", new { è¯·æ±‚报文 = parm, æŽ¥æ”¶æŠ¥æ–‡ = responseContent });
                return JsonConvert.DeserializeObject<T>(responseContent);
            }
            catch (Exception ex)
            {
                Logger.Write_Log("System/API请求", rquestName, "请求异常", new { è¯·æ±‚报文 = parm, æŽ¥æ”¶æŠ¥æ–‡ = responseContent, é”™è¯¯ = ex.Message });
                throw ex;
            }
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/SecurityEncDecryptHelper.cs
@@ -56,7 +56,7 @@
        public static string DecryptDES(this string decryptString, string decryptKey)
        {
            if (decryptKey == AppSecret.DB && !AppSettings.app(MainDb.ConnectionStringsEncryption).ObjToBool())
            if (decryptKey == AppSecret.DB && !AppSettings.Get(MainDb.ConnectionStringsEncryption).ObjToBool())
                return decryptString;
            byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 16));
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs
@@ -16,143 +16,136 @@
{
    public class Logger
    {
        public static void Debug(string message)
        /// <summary>
        /// å†™å…¥è°ƒè¯•日志
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="msg"></param>
        public void WriteDebug(string fileName, string msg)
        {
            if (AppSettings.Get(new string[] { "LogDeubgEnable" }).ObjToBool())
            {
                StringBuilder builder = new StringBuilder(msg);
                builder.Append(Environment.NewLine);
                builder.Append(Environment.NewLine);
                WriteLogToFile($"Debug_{fileName}", builder.ToString());
            }
        }
        public static void Debug(string message, Exception exception)
        /// <summary>
        /// å†™å…¥ä¿¡æ¯æ—¥å¿—
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="msg"></param>
        public void WriteInfo(string fileName, string msg)
        {
            StringBuilder builder = new StringBuilder(msg);
            builder.Append(Environment.NewLine);
            builder.Append(Environment.NewLine);
            WriteLogToFile($"Info_{fileName}", builder.ToString());
        }
        public static void Info(string message)
        /// <summary>
        /// å†™å…¥é”™è¯¯æ—¥å¿—
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="msg"></param>
        /// <param name="ex"></param>
        public void WriteError(string fileName, string msg, Exception ex)
        {
            StringBuilder builder = new StringBuilder(msg);
            builder.Append(Environment.NewLine);
            builder.Append("错误信息:");
            builder.Append(ex.Message);
            builder.Append(Environment.NewLine);
            builder.Append("错误源:");
            builder.Append(ex.Source);
            builder.Append(Environment.NewLine);
            builder.Append("错误堆栈:");
            builder.Append(ex.StackTrace);
            builder.Append(Environment.NewLine);
            builder.Append("错误类型:");
            builder.Append(ex.GetType().ToString());
            builder.Append(Environment.NewLine);
            builder.Append("错误方法:");
            builder.Append(ex.TargetSite?.ToString());
            builder.Append(Environment.NewLine);
            builder.Append(Environment.NewLine);
            WriteLogToFile($"Error_{fileName}", builder.ToString());
        }
        public static void Info(string message, Exception exception)
        ReaderWriterLockSlim LogWriteLock = new ReaderWriterLockSlim();
        string folderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Log\\{DateTime.Now.ToString("yyyy-MM-dd")}");
        private void WriteLogToFile(string fileName, string log)
        {
        }
        public static void Warn(string message)
        {
        }
        public static void Warning(string message, Exception exception)
        {
        }
        public static void Error(string message)
        {
        }
        public static void Error(string message, Exception exception)
        {
        }
        public static void Fatal(string message)
        {
        }
        public static void Fatal(string message, Exception exception)
        {
        }
        public static void Write_Log(string groupName, string logName, string content, object data = null)
        {
            DateTime nowTime = DateTime.Now;
            string basePath = System.Environment.CurrentDirectory + "/Log/" + $"/{groupName}/{nowTime.ToString("yyyy-MM-dd")}";
            //如果日志文件目录不存在,则创建
            if (!Directory.Exists(basePath))
            {
                Directory.CreateDirectory(basePath);
            }
            try
            {
                FileStream fs = new FileStream(basePath + "/" + logName + $"{nowTime.ToString("yyMMdd")}.txt", FileMode.Append);
                StreamWriter strwriter = new StreamWriter(fs);
                try
                // è¿›å…¥å†™é”
                LogWriteLock.EnterWriteLock();
                // å¦‚果文件夹不存在,则创建文件夹
                if (!Directory.Exists(folderPath))
                {
                    strwriter.WriteLine(nowTime.ToString() + "." + nowTime.Millisecond);
                    strwriter.WriteLine(content);
                    if (data != null)
                    {
                        strwriter.WriteLine(JsonConvert.SerializeObject(data));
                    Directory.CreateDirectory(folderPath);
                    }
                    strwriter.WriteLine("-------------------------------");
                    strwriter.WriteLine();
                    strwriter.Flush();
                // èŽ·å–æ—¥å¿—æ–‡ä»¶è·¯å¾„
                string logFilePath = Path.Combine(folderPath, GetLastAccessFileName(fileName));
                // èŽ·å–å½“å‰æ—¶é—´
                DateTime now = DateTime.Now;
                // æž„造日志内容
                string logContent = $"【{now}】{Environment.NewLine}{log}";
                // å°†æ—¥å¿—内容追加到日志文件中
                File.AppendAllText(logFilePath, logContent);
                }
                catch { }
                finally
                {
                    strwriter.Close();
                    fs.Close();
                // é€€å‡ºå†™é”
                LogWriteLock.ExitWriteLock();
                }
            }
            catch { }
        }
        public static void WriteApiLog2DB(HttpContext context, string requestParameter, DateTime beginDate, string responseParameter, DateTime endDate, LoggerStatus loggerStatus)
        int size = 10 * 1024 * 1024;
        string ext = ".log";
        private string GetLogFilePath(string folderPath, string fileName)
        {
            try
            {
                if (context.Request.Method == "OPTIONS") return;
            // èŽ·å–æŒ‡å®šæ–‡ä»¶å¤¹ä¸‹çš„æ‰€æœ‰æ–‡ä»¶
            var allFiles = new DirectoryInfo(folderPath);
            // èŽ·å–ç¬¦åˆæ¡ä»¶çš„æ–‡ä»¶ï¼ŒæŒ‰æ–‡ä»¶åé™åºæŽ’åˆ—
            var selectFiles = allFiles.GetFiles().Where(fi => fi.Name.ToLower().Contains(fileName.ToLower()) && fi.Extension.ToLower() == ext.ToLower() && fi.Length < size).OrderByDescending(d => d.Name).ToList();
                if (context == null)
            FileInfo? file = selectFiles.FirstOrDefault();
            // å¦‚果有符合条件的文件,返回第一个文件的完整路径
            if (file != null)
                {
                    Console.WriteLine($"未获取到httpcontext信息,reqParam:{requestParameter},respParam:{responseParameter},success:{loggerStatus}");
                    return;
                return file.FullName;
                }
                Dictionary<string, object> dic = new Dictionary<string, object>
            // å¦‚果没有符合条件的文件,返回一个新的文件路径,文件名为原文件名加上当前时间
            return Path.Combine(folderPath, $@"{fileName}_{DateTime.Now.ToString("HH-mm-ss")}.log");
        }
        private string GetLastAccessFileName(string fileName)
                {
                    {"BeginDate",beginDate },
                    {"ElapsedTime",(endDate - beginDate).TotalMilliseconds.DoubleToInt() },
                    {"EndDate",endDate },
                    {"RequestParam",requestParameter },
                    {"ResponseParam",responseParameter },
                    {"Success",1 },
                    {"Url",context.Request.Path.Value??"" },
                    {"UserIP",context.GetUserIp() },
                    {"UserName","App.User?.Name" },
                    {"User_Id","0" }
                    //{"BeginDate",beginDate },
                    //{"ElapsedTime",(endDate - beginDate).TotalMilliseconds.ObjToInt() },
                    //{"EndDate",endDate },
                    //{"RequestParam",requestParameter },
                    //{"ResponseParam",responseParameter },
                    //{"Success",1 },
                    //{"Url",context.Request.Path.Value??"" },
                    //{"UserIP",context.GetUserIp() },
                    //{"UserName","App.User?.Name" },
                    //{"User_Id","App.User?.ID" }
                };
                SqlSugarClient sqlSugarClient = DBContext.GetCustomDB(DBContext.GetConnectionConfig());
                sqlSugarClient.Insertable(dic).AS("Sys_Log").ExecuteCommand();
            }
            catch (Exception ex)
            foreach (var m in GetExistLogFileNames(fileName))
            {
            }
        }
    }
    public enum LoggerStatus
                FileInfo fileInfo = new FileInfo(m);
                if (fileInfo.Length < size)
    {
        Success = 1,
        Error = 2,
        Info = 3
                    return m;
                }
            }
            // è¿”回一个新的默认当前时间的日志名称
            return $@"{fileName}_{DateTime.Now.ToString("HH-mm-ss")}.log";
        }
        private string[] GetExistLogFileNames(string fileName)
        {
            string[] fileNames = Directory.GetFiles(folderPath, fileName + "*.log");
            return fileNames;
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerMiddleware.cs
@@ -24,7 +24,7 @@
            app.UseSwaggerUI(c =>
            {
                //根据版本名称倒序 éåŽ†å±•ç¤º
                var apiName = AppSettings.app(new string[] { "ApiName" });
                var apiName = AppSettings.Get(new string[] { "ApiName" });
                typeof(ApiVersions).GetEnumNames().OrderByDescending(e => e).ToList().ForEach(version =>
                {
                    c.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"{apiName} {version}");
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBContext.cs
@@ -25,7 +25,7 @@
        {
            MutiDBOperate mainDb = new MutiDBOperate()
            {
                Connection = AppSettings.app(MainDb.ConnectionString).DecryptDES(AppSecret.DB),
                Connection = AppSettings.Get(MainDb.ConnectionString).DecryptDES(AppSecret.DB),
                ConnId = MainDb.CurrentDbConnId,
                DbType = DataBaseType.SqlServer
            };
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InitializationLocationDTO.cs
@@ -19,31 +19,25 @@
        /// <summary>
        /// è¡Œ
        /// </summary>
        [PropertyValidate("行", MinValue = 0, IsContainMinValue = false)]
        [PropertyValidate("行", MinValue = 1, IsContainMinValue = false)]
        public int MaxRow { get; set; }
        /// <summary>
        /// åˆ—
        /// </summary>
        [PropertyValidate("列", MinValue = 0, IsContainMinValue = false)]
        [PropertyValidate("列", MinValue = 1, IsContainMinValue = false)]
        public int MaxColumn { get; set; }
        /// <summary>
        /// å±‚
        /// </summary>
        [PropertyValidate("层", MinValue = 0, IsContainMinValue = false)]
        [PropertyValidate("层", MinValue = 1, 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; }
        [PropertyValidate("深度", MinValue = 1, NotNullAndEmpty = true)]
        public int Depth { get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MatSerialNumberDTO.cs
@@ -10,22 +10,22 @@
    [AnalysisRule, ModelValidate]
    public class MatSerialNumberDTO
    {
        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormatType.MTC), PropertyValidate("物料编号", NotNullAndEmpty = true)]
        [AnalysisItemRule(WIDESEA_Core.CodeConfigEnum.AnalysisFormatTypeEnum.MTC), PropertyValidate("物料编号", NotNullAndEmpty = true)]
        public string MaterielCode { get; set; }
        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormatType.MTPT), PropertyValidate("生产日期", NotNullAndEmpty = true)]
        [AnalysisItemRule(WIDESEA_Core.CodeConfigEnum.AnalysisFormatTypeEnum.MTPT), PropertyValidate("生产日期", NotNullAndEmpty = true)]
        public string ProductionDate { get; set; }
        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormatType.BHN), PropertyValidate("批次号", NotNullAndEmpty = true)]
        [AnalysisItemRule(WIDESEA_Core.CodeConfigEnum.AnalysisFormatTypeEnum.BHN), PropertyValidate("批次号", NotNullAndEmpty = true)]
        public string BatchNo { get; set; }
        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormatType.MTQ), PropertyValidate("数量", NotNullAndEmpty = true)]
        [AnalysisItemRule(WIDESEA_Core.CodeConfigEnum.AnalysisFormatTypeEnum.MTQ), PropertyValidate("数量", NotNullAndEmpty = true)]
        public decimal MaterielQuantity { get; set; }
        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormatType.ODN), PropertyValidate("订单编号", NotNullAndEmpty = true)]
        [AnalysisItemRule(WIDESEA_Core.CodeConfigEnum.AnalysisFormatTypeEnum.ODN), PropertyValidate("订单编号", NotNullAndEmpty = true)]
        public string OrderNo { get; set; }
        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormatType.BD), PropertyValidate("序列号", NotNullAndEmpty = true)]
        [AnalysisItemRule(WIDESEA_Core.CodeConfigEnum.AnalysisFormatTypeEnum.BD), PropertyValidate("序列号", NotNullAndEmpty = true)]
        public string SerialNumber { get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IBasicRepository/ILocationInfoRepository.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.LocationEnum;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.Enums;
using WIDESEA_DTO.Basic;
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseServices;
using WIDESEA_DTO.Basic;
@@ -15,5 +16,8 @@
    {
        ILocationInfoRepository Repository { get; }
        WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO);
        Dt_LocationInfo? AssignLocation(string roadwayNo, PalletTypeEnum palletType);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.StockEnum;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_IOutboundRepository;
@@ -18,6 +19,6 @@
        List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId);
        List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId, OutStockStatus outStockStatus);
        List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId, OutLockStockStatusEnum outStockStatus);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.StockEnum;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_IRecordRepository;
@@ -14,6 +15,6 @@
    {
        IStockQuantityChangeRecordRepository Repository { get; }
        void AddStockChangeRecord(Dt_StockInfo stockInfo, List<Dt_StockInfoDetail> stockInfoDetails, decimal beforeQuantity, decimal totalQuantity, StockChangeType changeType,int taskNum);
        void AddStockChangeRecord(Dt_StockInfo stockInfo, List<Dt_StockInfoDetail> stockInfoDetails, decimal beforeQuantity, decimal totalQuantity, StockChangeTypeEnum changeType,int taskNum);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs
@@ -7,6 +7,7 @@
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
@@ -74,7 +75,7 @@
                #endregion
                Dt_InboundOrder inboundOrder = _mapper.Map<Dt_InboundOrder>(orderAddDTO);
                inboundOrder.OrderStatus = InboundStatusEnum.未开始.ObjToInt();
                inboundOrder.OrderStatus = InOrderStatusEnum.未开始.ObjToInt();
                bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
                content = WebResponseContent.Instance.OK();
            }
@@ -131,7 +132,7 @@
                {
                    expressionOrder = x => x.OrderNo.Contains(inboundOrderGetDTO.OrderNo);
                }
                int count = BaseDal.QueryData(x => x.OrderStatus == InboundStatusEnum.未开始.ObjToInt()).ToList().Count();
                int count = BaseDal.QueryData(x => x.OrderStatus == InOrderStatusEnum.未开始.ObjToInt()).ToList().Count();
                int maxPage = Convert.ToInt32(Math.Ceiling(count / 10.0));
                if (inboundOrderGetDTO.pageNo <= maxPage)
                {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderDetailService.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder.cs
@@ -5,6 +5,7 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.CodeConfigEnum;
using WIDESEA_Core.DB.Models;
namespace WIDESEA_Model.Models
@@ -15,7 +16,7 @@
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主键")]
        public int Id { get; set; }
        [CodeRule(WIDESEA_Core.Enums.RuleCode.InboundOrderRule)]
        [CodeRule(RuleCodeEnum.InboundOrderRule)]
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "单据编号")]
        public string OrderNo { get; set; }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder_Hty.cs
@@ -6,6 +6,7 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.CodeConfigEnum;
using WIDESEA_Core.DB.Models;
namespace WIDESEA_Model.Models
@@ -16,7 +17,6 @@
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主键")]
        public int Id { get; set; }
        [CodeRule(WIDESEA_Core.Enums.RuleCode.InboundOrderRule)]
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "单据编号")]
        public string OrderNo { get; set; }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder.cs
@@ -5,6 +5,7 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.CodeConfigEnum;
using WIDESEA_Core.DB.Models;
namespace WIDESEA_Model.Models
@@ -15,7 +16,7 @@
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主键")]
        public int Id { get; set; }
        [CodeRule(WIDESEA_Core.Enums.RuleCode.OutboundOrderRule)]
        [CodeRule(RuleCodeEnum.OutboundOrderRule)]
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "单据编号", IsOnlyIgnoreUpdate = true)]
        public string OrderNo { get; set; }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder_Hty.cs
@@ -6,6 +6,7 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.CodeConfigEnum;
using WIDESEA_Core.DB.Models;
namespace WIDESEA_Model.Models
@@ -16,7 +17,6 @@
        [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; }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs
@@ -5,9 +5,9 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.OtherEnum;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.DB.Models;
using WIDESEA_Core.Enums;
namespace WIDESEA_Model.Models
{
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task_Hty.cs
@@ -5,8 +5,8 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.OtherEnum;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.Enums;
namespace WIDESEA_Model.Models
{
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutStockLockInfoService.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.StockEnum;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
@@ -37,7 +38,7 @@
                    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(),
                    Status = taskNum == null ? OutLockStockStatusEnum.已分配.ObjToInt() : OutLockStockStatusEnum.出库中.ObjToInt(),
                    StockId = item.Id,
                    TaskNum = taskNum
                };
@@ -52,7 +53,7 @@
            return BaseDal.QueryData(x => x.OrderDetailId == orderDetailId);
        }
        public List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId, OutStockStatus outStockStatus)
        public List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId, OutLockStockStatusEnum outStockStatus)
        {
            return BaseDal.QueryData(x => x.OrderDetailId == orderDetailId && x.Status == outStockStatus.ObjToInt());
        }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs
@@ -7,6 +7,7 @@
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
@@ -88,7 +89,7 @@
                #endregion
                Dt_OutboundOrder outboundOrder = _mapper.Map<Dt_OutboundOrder>(orderAddDTO);
                outboundOrder.OrderStatus = InboundStatusEnum.未开始.ObjToInt();
                outboundOrder.OrderStatus = OutOrderStatusEnum.未开始.ObjToInt();
                bool a = BaseDal.Db.InsertNav(outboundOrder).Include(x => x.Details).ExecuteCommand();
                content = WebResponseContent.Instance.OK();
            }
@@ -154,7 +155,7 @@
                {
                    expressionOrder = x => x.OrderNo.Contains(outboundOrderGetDTO.OrderNo);
                }
                int count = BaseDal.QueryData(x => x.OrderStatus == OutboundStatusEnum.未开始.ObjToInt()).ToList().Count();
                int count = BaseDal.QueryData(x => x.OrderStatus == OutOrderStatusEnum.未开始.ObjToInt()).ToList().Count();
                int maxPage = Convert.ToInt32(Math.Ceiling(count / 10.0));
                if (outboundOrderGetDTO.pageNo <= maxPage)
                {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/StockQuantityChangeRecordService.cs
@@ -4,6 +4,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.StockEnum;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
@@ -15,7 +16,7 @@
{
    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,int taskNum)
        public void AddStockChangeRecord(Dt_StockInfo stockInfo, List<Dt_StockInfoDetail> stockInfoDetails, decimal beforeQuantity, decimal totalQuantity, StockChangeTypeEnum changeType,int taskNum)
        {
            try
            {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs
@@ -6,6 +6,8 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.LocationEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.Enums;
using WIDESEA_DTO.Stock;
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs
@@ -52,8 +52,6 @@
            ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>();
            ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>();
            ISugarQueryable<Dt_StockInfoDetail> sugarQueryable2 = _dbBase.Queryable<Dt_StockInfoDetail>();
            List<StockViewDTO> list = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode).WhereIF(!string.IsNullOrEmpty(where), where).Select((b, a) => new StockViewDTO
            {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs
@@ -6,6 +6,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.StockEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
@@ -61,7 +62,7 @@
            }
            stockInfo.Details = details;
            _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.Details, beforeQuantity, stockInfo.Details.Sum(x => x.StockQuantity) + beforeQuantity, StockChangeType.MaterielGroup,0);
            _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.Details, beforeQuantity, stockInfo.Details.Sum(x => x.StockQuantity) + beforeQuantity, StockChangeTypeEnum.MaterielGroup,0);
        }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs
@@ -7,6 +7,11 @@
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.LocationEnum;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Common.TaskEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
@@ -153,12 +158,12 @@
                    case "inboundState":
                        {
                            List<object> data = new List<object>();
                            Type type = typeof(InboundStatusEnum);
                            List<int> enums = Enum.GetValues(typeof(InboundStatusEnum)).Cast<int>().ToList();
                            Type type = typeof(InOrderStatusEnum);
                            List<int> enums = Enum.GetValues(typeof(InOrderStatusEnum)).Cast<int>().ToList();
                            int index = 0;
                            foreach (var item in enums)
                            {
                                FieldInfo? fieldInfo = typeof(InboundStatusEnum).GetField(((InboundStatusEnum)item).ToString());
                                FieldInfo? fieldInfo = typeof(InOrderStatusEnum).GetField(((InOrderStatusEnum)item).ToString());
                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                if (description != null)
                                {
@@ -177,12 +182,12 @@
                    case "outboundStatusEnum":
                        {
                            List<object> data = new List<object>();
                            Type type = typeof(OutboundStatusEnum);
                            List<int> enums = Enum.GetValues(typeof(OutboundStatusEnum)).Cast<int>().ToList();
                            Type type = typeof(OutOrderStatusEnum);
                            List<int> enums = Enum.GetValues(typeof(OutOrderStatusEnum)).Cast<int>().ToList();
                            int index = 0;
                            foreach (var item in enums)
                            {
                                FieldInfo? fieldInfo = typeof(OutboundStatusEnum).GetField(((OutboundStatusEnum)item).ToString());
                                FieldInfo? fieldInfo = typeof(OutOrderStatusEnum).GetField(((OutOrderStatusEnum)item).ToString());
                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                if (description != null)
                                {
@@ -284,12 +289,12 @@
                            List<object> data = new List<object>();
                            {
                                Type type = typeof(CreateType);
                                List<int> enums = Enum.GetValues(typeof(CreateType)).Cast<int>().ToList();
                                Type type = typeof(OrderCreateTypeEnum);
                                List<int> enums = Enum.GetValues(typeof(OrderCreateTypeEnum)).Cast<int>().ToList();
                                int index = 0;
                                foreach (var item in enums)
                                {
                                    FieldInfo? fieldInfo = typeof(CreateType).GetField(((CreateType)item).ToString());
                                    FieldInfo? fieldInfo = typeof(OrderCreateTypeEnum).GetField(((OrderCreateTypeEnum)item).ToString());
                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                    if (description != null)
                                    {
@@ -484,27 +489,6 @@
                                    index++;
                                }
                            }
                            {
                                Type type = typeof(AGVTaskStatusEnum);
                                List<int> enums = Enum.GetValues(typeof(AGVTaskStatusEnum)).Cast<int>().ToList();
                                int index = 0;
                                foreach (var item in enums)
                                {
                                    FieldInfo? fieldInfo = typeof(AGVTaskStatusEnum).GetField(((AGVTaskStatusEnum)item).ToString());
                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                    if (description != null)
                                    {
                                        data.Add(new { key = item.ToString(), value = description.Description });
                                    }
                                    else
                                    {
                                        data.Add(new { key = item.ToString(), value = item.ToString() });
                                    }
                                    index++;
                                }
                            }
                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
                        }
                        break;
@@ -535,12 +519,12 @@
                    case "stockChangeType":
                        {
                            List<object> data = new List<object>();
                            Type type = typeof(StockChangeType);
                            List<int> enums = Enum.GetValues(typeof(StockChangeType)).Cast<int>().ToList();
                            Type type = typeof(StockChangeTypeEnum);
                            List<int> enums = Enum.GetValues(typeof(StockChangeTypeEnum)).Cast<int>().ToList();
                            int index = 0;
                            foreach (var item in enums)
                            {
                                FieldInfo? fieldInfo = typeof(StockChangeType).GetField(((StockChangeType)item).ToString());
                                FieldInfo? fieldInfo = typeof(StockChangeTypeEnum).GetField(((StockChangeTypeEnum)item).ToString());
                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                if (description != null)
                                {
@@ -559,12 +543,12 @@
                    case "outStockStatus":
                        {
                            List<object> data = new List<object>();
                            Type type = typeof(OutStockStatus);
                            List<int> enums = Enum.GetValues(typeof(OutStockStatus)).Cast<int>().ToList();
                            Type type = typeof(OutLockStockStatusEnum);
                            List<int> enums = Enum.GetValues(typeof(OutLockStockStatusEnum)).Cast<int>().ToList();
                            int index = 0;
                            foreach (var item in enums)
                            {
                                FieldInfo? fieldInfo = typeof(OutStockStatus).GetField(((OutStockStatus)item).ToString());
                                FieldInfo? fieldInfo = typeof(OutLockStockStatusEnum).GetField(((OutLockStockStatusEnum)item).ToString());
                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                if (description != null)
                                {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskServiceExtendFunc.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs
@@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseController;
using WIDESEA_Core.Enums;
@@ -21,5 +22,17 @@
        {
            _repository = repository;
        }
        [HttpPost, Route("InitializationLocation"), AllowAnonymous]
        public WebResponseContent InitializationLocation([FromBody] InitializationLocationDTO initializationLocationDTO)
        {
            return Service.InitializationLocation(initializationLocationDTO);
        }
        [HttpPost, HttpGet, Route("AssignLocation"), AllowAnonymous]
        public Dt_LocationInfo? AssignLocation(string roadwayNo, PalletTypeEnum palletType)
        {
            return Service.AssignLocation(roadwayNo, palletType);
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
@@ -109,7 +109,7 @@
//todo
//app.UseRecordAccessLogsMiddle();
app.UseCors(AppSettings.app(new string[] { "Cors", "PolicyName" }));
app.UseCors(AppSettings.Get(new string[] { "Cors", "PolicyName" }));
DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
defaultFilesOptions.DefaultFileNames.Clear();
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
@@ -12,7 +12,7 @@
  "MainDB": "DB_WIDESEA", //当前项目的主库,所对应的连接字符串的Enabled必须为true
  //连接字符串
  //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_HUAIAN;User ID=sa;Password=sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_HUAIAN;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //跨域
  "Cors": {
    "PolicyName": "CorsIpAccess", //策略名称