diff --git a/General_Line_MES.sln b/General_Line_MES.sln index 96bcda7..0381c64 100644 --- a/General_Line_MES.sln +++ b/General_Line_MES.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 18 -VisualStudioVersion = 18.0.11222.15 d18.0 +VisualStudioVersion = 18.0.11222.15 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RIZO.Admin.WebApi", "RIZO.Admin.WebApi\RIZO.Admin.WebApi.csproj", "{E5497BB4-B0C1-4794-9FAE-163F626EC399}" EndProject diff --git a/RIZO.Admin.WebApi/Controllers/MES/product/ProWorkorderController.cs b/RIZO.Admin.WebApi/Controllers/MES/product/ProWorkorderController.cs index 829d09b..84ba496 100644 --- a/RIZO.Admin.WebApi/Controllers/MES/product/ProWorkorderController.cs +++ b/RIZO.Admin.WebApi/Controllers/MES/product/ProWorkorderController.cs @@ -278,6 +278,15 @@ namespace RIZO.Admin.WebApi.Controllers //} + //TODO 获取物料 + [HttpGet("get_material")] + public IActionResult GetMaterialInfo(string? Name_or_Code) + { + var response = _ProWorkorderService.GetMaterialInfo(Name_or_Code); + return SUCCESS(response); + + } + ////TODO 获取客户 //[HttpPost("get_custom")] @@ -317,9 +326,9 @@ namespace RIZO.Admin.WebApi.Controllers // return SUCCESS(response); //} - //TODO 获取组 + // TODO 获取组 //[HttpGet("get_groups")] - //public IActionResult GetGroupList(string route_code,DateTime dateTime) + //public IActionResult GetGroupList(string route_code, DateTime dateTime) //{ // if (string.IsNullOrEmpty(route_code)) { return SUCCESS(null); } // if (dateTime == DateTime.MinValue) diff --git a/RIZO.Admin.WebApi/Controllers/MES/product_trace/ProductTraceProcessParametersController.cs b/RIZO.Admin.WebApi/Controllers/MES/product_trace/ProductTraceProcessParametersController.cs new file mode 100644 index 0000000..278e812 --- /dev/null +++ b/RIZO.Admin.WebApi/Controllers/MES/product_trace/ProductTraceProcessParametersController.cs @@ -0,0 +1,100 @@ +using Microsoft.AspNetCore.Mvc; +using RIZO.Model.Mes.Dto; +using RIZO.Model.Mes; +using RIZO.Service.Mes.IMesService; + +//创建时间:2026-01-13 +namespace RIZO.Admin.WebApi.Controllers.Mes +{ + /// + /// 工艺参数采集 + /// + [Route("mes/ProductTraceProcessParameters")] + public class ProductTraceProcessParametersController : BaseController + { + /// + /// 工艺参数采集接口 + /// + private readonly IProductTraceProcessParametersService _ProductTraceProcessParametersService; + + public ProductTraceProcessParametersController(IProductTraceProcessParametersService ProductTraceProcessParametersService) + { + _ProductTraceProcessParametersService = ProductTraceProcessParametersService; + } + + /// + /// 查询工艺参数采集列表 + /// + /// + /// + [HttpGet("list")] + [ActionPermissionFilter(Permission = "producttraceprocessparameters:list")] + public IActionResult QueryProductTraceProcessParameters([FromQuery] ProductTraceProcessParametersQueryDto parm) + { + var response = _ProductTraceProcessParametersService.GetList(parm); + return SUCCESS(response); + } + + + /// + /// 查询工艺参数采集详情 + /// + /// + /// + [HttpGet("{Id}")] + [ActionPermissionFilter(Permission = "producttraceprocessparameters:query")] + public IActionResult GetProductTraceProcessParameters(int Id) + { + var response = _ProductTraceProcessParametersService.GetInfo(Id); + + var info = response.Adapt(); + return SUCCESS(info); + } + + /// + /// 添加工艺参数采集 + /// + /// + [HttpPost] + [ActionPermissionFilter(Permission = "producttraceprocessparameters:add")] + [Log(Title = "工艺参数采集", BusinessType = BusinessType.INSERT)] + public IActionResult AddProductTraceProcessParameters([FromBody] ProductTraceProcessParametersDto parm) + { + var modal = parm.Adapt().ToCreate(HttpContext); + + var response = _ProductTraceProcessParametersService.AddProductTraceProcessParameters(modal); + + return SUCCESS(response); + } + + /// + /// 更新工艺参数采集 + /// + /// + [HttpPut] + [ActionPermissionFilter(Permission = "producttraceprocessparameters:edit")] + [Log(Title = "工艺参数采集", BusinessType = BusinessType.UPDATE)] + public IActionResult UpdateProductTraceProcessParameters([FromBody] ProductTraceProcessParametersDto parm) + { + var modal = parm.Adapt().ToUpdate(HttpContext); + var response = _ProductTraceProcessParametersService.UpdateProductTraceProcessParameters(modal); + + return ToResponse(response); + } + + /// + /// 删除工艺参数采集 + /// + /// + [HttpPost("delete/{ids}")] + [ActionPermissionFilter(Permission = "producttraceprocessparameters:delete")] + [Log(Title = "工艺参数采集", BusinessType = BusinessType.DELETE)] + public IActionResult DeleteProductTraceProcessParameters([FromRoute]string ids) + { + var idArr = Tools.SplitAndConvert(ids); + + return ToResponse(_ProductTraceProcessParametersService.Delete(idArr)); + } + + } +} \ No newline at end of file diff --git a/RIZO.Admin.WebApi/RIZO.Admin.WebApi.csproj b/RIZO.Admin.WebApi/RIZO.Admin.WebApi.csproj index 045f099..35138f6 100644 --- a/RIZO.Admin.WebApi/RIZO.Admin.WebApi.csproj +++ b/RIZO.Admin.WebApi/RIZO.Admin.WebApi.csproj @@ -34,7 +34,6 @@ - diff --git a/RIZO.Admin.WebApi/wwwroot/ImportTemplate/workorder.xlsx b/RIZO.Admin.WebApi/wwwroot/ImportTemplate/workorder.xlsx new file mode 100644 index 0000000..284ba96 Binary files /dev/null and b/RIZO.Admin.WebApi/wwwroot/ImportTemplate/workorder.xlsx differ diff --git a/RIZO.Model/MES/product/Dto/ProWorkorderDto.cs b/RIZO.Model/MES/product/Dto/ProWorkorderDto.cs index 55f3bbc..214326a 100644 --- a/RIZO.Model/MES/product/Dto/ProWorkorderDto.cs +++ b/RIZO.Model/MES/product/Dto/ProWorkorderDto.cs @@ -39,42 +39,42 @@ namespace RIZO.Model.MES.product.Dto /// /// 雪花id /// - public string Id { get; set; } + public string? Id { get; set; } /// /// 工单号 /// - public string Workorder { get; set; } + public string? Workorder { get; set; } /// /// 存货编码 /// - public string ProductionCode { get; set; } + public string? ProductionCode { get; set; } /// /// 产品名称 /// - public string ProductionName { get; set; } + public string? ProductionName { get; set; } /// /// 规格型号 /// - public string Specification { get; set; } + public string? Specification { get; set; } /// /// 项目号 /// - public string Project { get; set; } + public string? Project { get; set; } /// /// 客户编码 /// - public string CustomCode { get; set; } + public string? CustomCode { get; set; } /// /// 单位 /// - public string Unit { get; set; } + public string? Unit { get; set; } /// @@ -96,7 +96,7 @@ namespace RIZO.Model.MES.product.Dto /// /// 组别 /// - public string GroupCode { get; set; } + public string? GroupCode { get; set; } /// @@ -113,7 +113,7 @@ namespace RIZO.Model.MES.product.Dto /// /// 线别 /// - public string LineCode { get; set; } + public string? LineCode { get; set; } /// /// 序号 @@ -155,12 +155,12 @@ namespace RIZO.Model.MES.product.Dto /// /// 备注 /// - public string Remark { get; set; } + public string? Remark { get; set; } /// /// 创建人 /// - public string CreatedBy { get; set; } + public string? CreatedBy { get; set; } /// /// 创建时间 @@ -170,7 +170,7 @@ namespace RIZO.Model.MES.product.Dto /// /// 更新人 /// - public string UpdatedBy { get; set; } + public string? UpdatedBy { get; set; } /// /// 更新时间 diff --git a/RIZO.Model/MES/product_trace/Dto/ProductTraceProcessParametersDto.cs b/RIZO.Model/MES/product_trace/Dto/ProductTraceProcessParametersDto.cs new file mode 100644 index 0000000..bce9df9 --- /dev/null +++ b/RIZO.Model/MES/product_trace/Dto/ProductTraceProcessParametersDto.cs @@ -0,0 +1,88 @@ + +namespace RIZO.Model.Mes.Dto +{ + /// + /// 工艺参数采集查询对象 + /// + public class ProductTraceProcessParametersQueryDto : PagerInfo + { + public DateTime[] TraceTimeArray { get; set; }=new DateTime[2]; + public string WorkstationCode { get; set; } + + public string ProductlinebodyCode { get; set; } + + public string OperationCode { get; set; } + + public string RoutingCode { get; set; } + + public string ProductSn { get; set; } + + public string Workorder { get; set; } + + public string ParameterCode { get; set; } + + + } + + /// + /// 工艺参数采集输入输出对象 + /// + public class ProductTraceProcessParametersDto + { + [Required(ErrorMessage = "数据类型:FLOAT, INT, STRING, BOOL, AI(模拟量输入)等不能为空")] + public string DataType { get; set; } + + public DateTime? UpdatedTime { get; set; } + + public DateTime? CreatedTime { get; set; } + + public string Updatedby { get; set; } + + public string Createdby { get; set; } + + public string Operator { get; set; } + + public DateTime? CollectTime { get; set; } + + public int? Result { get; set; } + + public decimal MaxValue { get; set; } + + public decimal MinValue { get; set; } + + public decimal StandardValue { get; set; } + + public string Unit { get; set; } + + [Required(ErrorMessage = "主键不能为空")] + public int Id { get; set; } + + public string Description { get; set; } + + public string PlcPoint { get; set; } + + public string ParameterName { get; set; } + + [Required(ErrorMessage = "参数名称,如:温度、压力、时间不能为空")] + public string ParameterCode { get; set; } + + public string WorkstationCode { get; set; } + + public string ProductlinebodyCode { get; set; } + + public string FlowCode { get; set; } + + public string OperationCode { get; set; } + + public string RoutingCode { get; set; } + + public string ProductSn { get; set; } + + public string Workorder { get; set; } + + + + [ExcelColumn(Name = "数据类型:FLOAT, INT, STRING, BOOL, AI(模拟量输入)等")] + public string DataTypeLabel { get; set; } + } +} \ No newline at end of file diff --git a/RIZO.Model/MES/product_trace/ProductTraceProcessParameters.cs b/RIZO.Model/MES/product_trace/ProductTraceProcessParameters.cs new file mode 100644 index 0000000..f4fff40 --- /dev/null +++ b/RIZO.Model/MES/product_trace/ProductTraceProcessParameters.cs @@ -0,0 +1,161 @@ + +namespace RIZO.Model.Mes +{ + /// + /// 工艺参数采集 + /// + [SugarTable("product_trace_process_parameters")] + public class ProductTraceProcessParameters + { + + /// + /// 主键 + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + + + + /// + /// 工单号 + /// + public string Workorder { get; set; } + + + /// + /// 产品SN + /// + [SugarColumn(ColumnName = "product_SN")] + public string ProductSn { get; set; } + + + + /// + /// 工艺路线编码 + /// + public string RoutingCode { get; set; } + + /// + /// 工序号 + /// + public string OperationCode { get; set; } + + + + /// + /// 流程code + /// + public string FlowCode { get; set; } + + /// + /// 产线code + /// + public string ProductlinebodyCode { get; set; } + + /// + /// 工站code + /// + public string WorkstationCode { get; set; } + + + /// + /// 显示名称(用于UI展示,可和name一样) + /// + [SugarColumn(ColumnName = "parameter_name")] + public string ParameterName { get; set; } + + /// + /// 参数名称,如:温度、压力、时间 + /// + [SugarColumn(ColumnName = "parameter_code")] + public string ParameterCode { get; set; } + + + /// + /// plc点位 + /// + [SugarColumn(ColumnName = "plc_point")] + public string PlcPoint { get; set; } + + + + /// + /// 参数描述,如:模具温度,用于热压工序 + /// + public string Description { get; set; } + + + + + /// + /// 数据类型:FLOAT, INT, STRING, BOOL, AI(模拟量输入)等 + /// + [SugarColumn(ColumnName = "data_type")] + public string DataType { get; set; } + + + /// + /// 单位,如:℃、MPa、秒、mm + /// + public string Unit { get; set; } + + + /// + /// 最大允许值(用于报警/校验) + /// + [SugarColumn(ColumnName = "max_value")] + public decimal MaxValue { get; set; } + + /// + /// 最小允许值(用于报警/校验) + /// + [SugarColumn(ColumnName = "min_value")] + public decimal MinValue { get; set; } + + /// + /// 标准/目标值(如目标温度 200.0 ℃) + /// + [SugarColumn(ColumnName = "standard_value")] + public decimal StandardValue { get; set; } + + + + /// + /// 1 是合格 0是不合格 + /// + public int? Result { get; set; } + + /// + /// 操作人 + /// + public string Operator { get; set; } + + /// + /// 采集时间 + /// + [SugarColumn(ColumnName = "collect_time")] + public DateTime? CollectTime { get; set; } + + /// 更新时间 + /// + [SugarColumn(ColumnName = "updated_time")] + public DateTime? UpdatedTime { get; set; } + + /// + /// 创建时间 + /// + [SugarColumn(ColumnName = "created_time")] + public DateTime? CreatedTime { get; set; } + + /// + /// 更新人 + /// + public string Updatedby { get; set; } + + /// + /// 创建人 + /// + public string Createdby { get; set; } + + } +} \ No newline at end of file diff --git a/RIZO.Model/RIZO.Model.csproj b/RIZO.Model/RIZO.Model.csproj index e0addc3..4b1c26b 100644 --- a/RIZO.Model/RIZO.Model.csproj +++ b/RIZO.Model/RIZO.Model.csproj @@ -12,8 +12,4 @@ - - - - diff --git a/RIZO.Service/MES/product/IService/IProWorkorderService.cs b/RIZO.Service/MES/product/IService/IProWorkorderService.cs index 113ca71..5cffd7e 100644 --- a/RIZO.Service/MES/product/IService/IProWorkorderService.cs +++ b/RIZO.Service/MES/product/IService/IProWorkorderService.cs @@ -6,6 +6,7 @@ using RIZO.Model.MES.product.Dto; using RIZO.Model.System.Dto; using RIZO.Model.System; using Microsoft.AspNetCore.Http; +using MDM.Model.Material; @@ -42,6 +43,9 @@ namespace RIZO.Service.MES.product.IService public PagedInfo WorkOrderExport(DateTime exportTime, PagerInfo pager); //List GetMaterialInfo(BaseMaterialListQueryDto5 parm); + List GetMaterialInfo(string Name_or_Code); + + //List GetCustomInfo(BaseCustomQueryDto2 parm); // List GetGroupList(DateTime dateTime); @@ -55,7 +59,7 @@ namespace RIZO.Service.MES.product.IService //List GetGroupList(); - // List SearchBOMNum(string workorder_num); + // List SearchBOMNum(string workorder_num); int WorkOrderLog(string workorder, string log, string Operator); diff --git a/RIZO.Service/MES/product/ProWorkorderService.cs b/RIZO.Service/MES/product/ProWorkorderService.cs index ec07e46..1adbee4 100644 --- a/RIZO.Service/MES/product/ProWorkorderService.cs +++ b/RIZO.Service/MES/product/ProWorkorderService.cs @@ -4,6 +4,7 @@ using Infrastructure.Attribute; using Infrastructure.Converter; using Mapster; using MathNet.Numerics.Distributions; +using MDM.Model.Material; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Components.Forms; using Microsoft.AspNetCore.Http; @@ -948,6 +949,21 @@ namespace RIZO.Service.MES.product //} + /// + /// 获取物料信息 + /// + /// + public List GetMaterialInfo(string Name_or_Code) + { + var predicate = Expressionable.Create() + .OrIF(!string.IsNullOrEmpty(Name_or_Code), it => it.Name.Contains(Name_or_Code)) + .OrIF(!string.IsNullOrEmpty(Name_or_Code), it => it.Code.Contains(Name_or_Code)) + ; + + return Context.Queryable() + .Where(predicate.ToExpression()).Take(20).ToList(); + } + /// /// 获取客户信息 /// @@ -1023,7 +1039,7 @@ namespace RIZO.Service.MES.product - + /// /// 查询BOM 及其所需数量 diff --git a/RIZO.Service/MES/product_trace/IMesService/IProductTraceProcessParametersService.cs b/RIZO.Service/MES/product_trace/IMesService/IProductTraceProcessParametersService.cs new file mode 100644 index 0000000..2fcfbc2 --- /dev/null +++ b/RIZO.Service/MES/product_trace/IMesService/IProductTraceProcessParametersService.cs @@ -0,0 +1,21 @@ +using RIZO.Model.Mes.Dto; +using RIZO.Model.Mes; + +namespace RIZO.Service.Mes.IMesService +{ + /// + /// 工艺参数采集service接口 + /// + public interface IProductTraceProcessParametersService : IBaseService + { + PagedInfo GetList(ProductTraceProcessParametersQueryDto parm); + + ProductTraceProcessParameters GetInfo(int Id); + + + ProductTraceProcessParameters AddProductTraceProcessParameters(ProductTraceProcessParameters parm); + int UpdateProductTraceProcessParameters(ProductTraceProcessParameters parm); + + + } +} diff --git a/RIZO.Service/MES/product_trace/ProductTraceProcessParametersService.cs b/RIZO.Service/MES/product_trace/ProductTraceProcessParametersService.cs new file mode 100644 index 0000000..492563c --- /dev/null +++ b/RIZO.Service/MES/product_trace/ProductTraceProcessParametersService.cs @@ -0,0 +1,91 @@ +using Infrastructure.Attribute; +using Infrastructure.Extensions; +using RIZO.Model.Mes; +using RIZO.Model.Mes.Dto; +using RIZO.Repository; +using RIZO.Service.Mes.IMesService; +using System.ComponentModel; + +namespace RIZO.Service.Mes +{ + /// + /// 工艺参数采集Service业务层处理 + /// + [AppService(ServiceType = typeof(IProductTraceProcessParametersService), ServiceLifetime = LifeTime.Transient)] + public class ProductTraceProcessParametersService : BaseService, IProductTraceProcessParametersService + { + /// + /// 查询工艺参数采集列表 + /// + /// + /// + public PagedInfo GetList(ProductTraceProcessParametersQueryDto parm) + { + var predicate = QueryExp(parm) + .AndIF(!string.IsNullOrEmpty(parm.WorkstationCode), x => x.WorkstationCode.Contains( parm.WorkstationCode)) + .AndIF(!string.IsNullOrEmpty(parm.ProductlinebodyCode), x => x.ProductlinebodyCode.Contains(parm.ProductlinebodyCode)) + .AndIF(!string.IsNullOrEmpty(parm.OperationCode), x => x.OperationCode.Contains(parm.OperationCode)) + .AndIF(!string.IsNullOrEmpty(parm.RoutingCode), x => x.RoutingCode.Contains(parm.RoutingCode)) + .AndIF(!string.IsNullOrEmpty(parm.ProductSn), x => x.ProductSn.Contains(parm.ProductSn)) + .AndIF(!string.IsNullOrEmpty(parm.Workorder), x => x.Workorder.Contains(parm.Workorder)) + .AndIF(!string.IsNullOrEmpty(parm.ParameterCode), x => x.ParameterCode.Contains(parm.ParameterCode)) + .AndIF(parm.TraceTimeArray != null && parm.TraceTimeArray.Length == 2, x => x.CollectTime >= parm.TraceTimeArray[0] && x.CollectTime <= parm.TraceTimeArray[1]) + + + ; + + var response = Queryable() + .Where(predicate.ToExpression()) + .ToPage(parm); + + return response; + } + + + /// + /// 获取详情 + /// + /// + /// + public ProductTraceProcessParameters GetInfo(int Id) + { + var response = Queryable() + .Where(x => x.Id == Id) + .First(); + + return response; + } + + /// + /// 添加工艺参数采集 + /// + /// + /// + public ProductTraceProcessParameters AddProductTraceProcessParameters(ProductTraceProcessParameters model) + { + return Insertable(model).ExecuteReturnEntity(); + } + + /// + /// 修改工艺参数采集 + /// + /// + /// + public int UpdateProductTraceProcessParameters(ProductTraceProcessParameters model) + { + return Update(model, true); + } + + /// + /// 查询导出表达式 + /// + /// + /// + private static Expressionable QueryExp(ProductTraceProcessParametersQueryDto parm) + { + var predicate = Expressionable.Create(); + + return predicate; + } + } +} \ No newline at end of file diff --git a/RIZO.Service/RIZO.Service.csproj b/RIZO.Service/RIZO.Service.csproj index aaf640a..e8a3eea 100644 --- a/RIZO.Service/RIZO.Service.csproj +++ b/RIZO.Service/RIZO.Service.csproj @@ -9,11 +9,9 @@ 1591 + - - - diff --git a/valeo_lmes.sln b/valeo_lmes.sln new file mode 100644 index 0000000..96bcda7 --- /dev/null +++ b/valeo_lmes.sln @@ -0,0 +1,85 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 18 +VisualStudioVersion = 18.0.11222.15 d18.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RIZO.Admin.WebApi", "RIZO.Admin.WebApi\RIZO.Admin.WebApi.csproj", "{E5497BB4-B0C1-4794-9FAE-163F626EC399}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RIZO.Model", "RIZO.Model\RIZO.Model.csproj", "{B35D73B1-2E22-4636-B88B-10C5E6D8E524}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RIZO.Common", "RIZO.Common\RIZO.Common.csproj", "{42C84599-1E99-45B4-929B-417C37337EF8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RIZO.Infrastructure", "Infrastructure\RIZO.Infrastructure.csproj", "{5D740120-5491-4FE2-B5BE-8A9C48BFE3C5}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RIZO.Tasks", "RIZO.Tasks\RIZO.Tasks.csproj", "{B657ED99-40E5-423A-AFE7-157C4EE576CB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RIZO.Service", "RIZO.Service\RIZO.Service.csproj", "{75ADA3C1-148D-4727-A718-79447D9B5EEE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RIZO.Repository", "RIZO.Repository\RIZO.Repository.csproj", "{17E277BF-B2B8-4111-AE43-38246128C83C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RIZO.CodeGenerator", "RIZO.CodeGenerator\RIZO.CodeGenerator.csproj", "{B353DE0B-12C6-4C15-909A-DB68F71D5AE9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RIZO.ServiceCore", "RIZO.ServiceCore\RIZO.ServiceCore.csproj", "{4E2CC4E4-F109-4876-8498-912E13905765}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RIZO.Mall", "RIZO.Mall\RIZO.Mall.csproj", "{46A22606-F436-4846-AF21-E66E732E1912}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MDM", "MDM\MDM.csproj", "{BA1FDC29-D3F7-E2E9-48BB-D9E0C3021BE7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E5497BB4-B0C1-4794-9FAE-163F626EC399}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E5497BB4-B0C1-4794-9FAE-163F626EC399}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E5497BB4-B0C1-4794-9FAE-163F626EC399}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E5497BB4-B0C1-4794-9FAE-163F626EC399}.Release|Any CPU.Build.0 = Release|Any CPU + {B35D73B1-2E22-4636-B88B-10C5E6D8E524}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B35D73B1-2E22-4636-B88B-10C5E6D8E524}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B35D73B1-2E22-4636-B88B-10C5E6D8E524}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B35D73B1-2E22-4636-B88B-10C5E6D8E524}.Release|Any CPU.Build.0 = Release|Any CPU + {42C84599-1E99-45B4-929B-417C37337EF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {42C84599-1E99-45B4-929B-417C37337EF8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {42C84599-1E99-45B4-929B-417C37337EF8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {42C84599-1E99-45B4-929B-417C37337EF8}.Release|Any CPU.Build.0 = Release|Any CPU + {5D740120-5491-4FE2-B5BE-8A9C48BFE3C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5D740120-5491-4FE2-B5BE-8A9C48BFE3C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5D740120-5491-4FE2-B5BE-8A9C48BFE3C5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5D740120-5491-4FE2-B5BE-8A9C48BFE3C5}.Release|Any CPU.Build.0 = Release|Any CPU + {B657ED99-40E5-423A-AFE7-157C4EE576CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B657ED99-40E5-423A-AFE7-157C4EE576CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B657ED99-40E5-423A-AFE7-157C4EE576CB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B657ED99-40E5-423A-AFE7-157C4EE576CB}.Release|Any CPU.Build.0 = Release|Any CPU + {75ADA3C1-148D-4727-A718-79447D9B5EEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {75ADA3C1-148D-4727-A718-79447D9B5EEE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {75ADA3C1-148D-4727-A718-79447D9B5EEE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {75ADA3C1-148D-4727-A718-79447D9B5EEE}.Release|Any CPU.Build.0 = Release|Any CPU + {17E277BF-B2B8-4111-AE43-38246128C83C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {17E277BF-B2B8-4111-AE43-38246128C83C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {17E277BF-B2B8-4111-AE43-38246128C83C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {17E277BF-B2B8-4111-AE43-38246128C83C}.Release|Any CPU.Build.0 = Release|Any CPU + {B353DE0B-12C6-4C15-909A-DB68F71D5AE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B353DE0B-12C6-4C15-909A-DB68F71D5AE9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B353DE0B-12C6-4C15-909A-DB68F71D5AE9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B353DE0B-12C6-4C15-909A-DB68F71D5AE9}.Release|Any CPU.Build.0 = Release|Any CPU + {4E2CC4E4-F109-4876-8498-912E13905765}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4E2CC4E4-F109-4876-8498-912E13905765}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4E2CC4E4-F109-4876-8498-912E13905765}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4E2CC4E4-F109-4876-8498-912E13905765}.Release|Any CPU.Build.0 = Release|Any CPU + {46A22606-F436-4846-AF21-E66E732E1912}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {46A22606-F436-4846-AF21-E66E732E1912}.Debug|Any CPU.Build.0 = Debug|Any CPU + {46A22606-F436-4846-AF21-E66E732E1912}.Release|Any CPU.ActiveCfg = Release|Any CPU + {46A22606-F436-4846-AF21-E66E732E1912}.Release|Any CPU.Build.0 = Release|Any CPU + {BA1FDC29-D3F7-E2E9-48BB-D9E0C3021BE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BA1FDC29-D3F7-E2E9-48BB-D9E0C3021BE7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BA1FDC29-D3F7-E2E9-48BB-D9E0C3021BE7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BA1FDC29-D3F7-E2E9-48BB-D9E0C3021BE7}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {0469FF3A-7322-4053-94C7-881B103A57C5} + EndGlobalSection +EndGlobal