public async Task <ResponseResult <HearFromDetails> > Handle(Command request, CancellationToken cancellationToken) { var id = NewId.NextGuid(); if (string.IsNullOrWhiteSpace(request.Name)) { return(ResponseResult <HearFromDetails> .Error("名称不能为空。")); } using (var scope = _databaseScopeFactory.CreateWithTransaction()) { await _hearFromRepository.AddAsync(new QueryStack.Models.HearFrom() { Id = id, Name = request.Name, }); scope.SaveChanges(); } var hearFrom = Mapper.Map <HearFromDetails>(request); hearFrom.Id = id; return(ResponseResult <HearFromDetails> .Ok(hearFrom)); }
public async Task <ResponseResult <Response> > Handle(Command request, CancellationToken cancellationToken) { using (var scope = _databaseScopeFactory.CreateReadOnly()) { var treeInfos = await _materialTypeRepository.SearchByTypeName <QueryStack.Models.MaterialType>(request.TypeName); var allInfos = await _materialTypeRepository.QueryAsync(); var result = TreeLikeSearch.GetTreesByName(treeInfos, allInfos, request.Level) .Where(x => x.ParentId == (request.ParentId == "-1" ? null : request.ParentId)) .Distinct(new Compare()) .OrderBy(x => x.SortOrder).ToList(); foreach (var r in result) { r.HasChildren = false; var res = GetTreesByParentId(r.Id, allInfos); if (res.Where(x => x.TypeName.Contains(request.TypeName)).Any()) { r.HasChildren = true; } } return(ResponseResult <Response> .Ok(new Response(result))); } }
public async Task <ResponseResult <Response> > Handle(Command request, CancellationToken cancellationToken) { request.MaterialTypeId = request.MaterialTypeId ?? request.MaterialTypeId; request.TradeNames = request.TradeNames ?? request.TradeNames; using (var scope = _databaseScopeFactory.CreateReadOnly()) { var filter = FieldLikeSearch.GetLikeSearchByField <MaterialViewDetails>("MateName", request.Filter, 3); if (filter.errorMsg != string.Empty) { return(ResponseResult <Response> .Error($"{filter.errorMsg}.")); } var result = await _materialRepository.QueryForProductAsync <MaterialViewDetails>( request.MaterialTypeId, request.TradeNames, () => filter.Item2, request.PageIndex, request.PageSize, request.Sort.ToSql(), true); return(ResponseResult <Response> .Ok( new Response(result.Data, result.Count, request.PageIndex, request.PageSize))); } }
public async Task <ResponseResult <Response> > Handle(Command request, CancellationToken cancellationToken) { using (var scope = _databaseScopeFactory.CreateReadOnly()) { var result = await _productInfoRepository.DetailAsync(request.Id); return(ResponseResult <Response> .Ok(new Response(result))); } }
public async Task <ResponseResult <Response> > Handle(Command request, CancellationToken cancellationToken) { using (var scope = _databaseScopeFactory.CreateReadOnly()) { var result = await _tradeRepository.QueryAsync <ApiService.Trade.Api.TradeDetails>(request.ProductId); return(ResponseResult <Response> .Ok( new Response(result))); } }
public async Task <ResponseResult <Response> > Handle(Command request, CancellationToken cancellationToken) { using (var scope = _databaseScopeFactory.CreateReadOnly()) { var result = await _propertiesOptionResponsitory.QueryAsync <PropertiesOptionDetials>(request.PropId); return(ResponseResult <Response> .Ok( new Response(result))); } }
public async Task <ResponseResult <Response> > Handle(Command request, CancellationToken cancellationToken) { using (var scope = _databaseScopeFactory.CreateReadOnly()) { var resultData = await _basicDataRepository.QueryByParentIdAsync <BasicDataDetails>(request.ParentId); if (request.Enable.HasValue) { resultData = resultData.Where(q => q.Enabled == request.Enable); } return(ResponseResult <Response> .Ok(new Response(resultData))); } }
public async Task <ResponseResult <Response> > Handle(Command request, CancellationToken cancellationToken) { using (var scope = _databaseScopeFactory.CreateReadOnly()) { var result = await _producTypeRepository.QueryAsync <ProducTypeDetials>(request.ParentId); foreach (var r in result) { r.HasChildren = await _producTypeRepository.HasChildren(r.Id); } return(ResponseResult <Response> .Ok(new Response(result))); } }
public async Task <ResponseResult <Response> > Handle(Command request, CancellationToken cancellationToken) { using (var scope = _databaseScopeFactory.CreateReadOnly()) { var allData = await _producTypeRepository.QueryAsync <ProducTypeDetials>("-1"); allData = allData.OrderBy(q => q.ParentId).ToList(); var thisTypeData = allData.Where(q => q.Id == request.Id).FirstOrDefault(); string nvg = GetNvg(allData, thisTypeData?.ParentId, thisTypeData?.TypeName); return(ResponseResult <Response> .Ok(new Response(nvg))); } }
public async Task <ResponseResult <Response> > Handle( Command request, CancellationToken cancellationToken) { using (var scope = _databaseScopeFactory.CreateWithTransaction()) { var filter = request.Filter.ToSql <HearFromDetails>(); var result = await _hearFromRepository.QueryAsync <HearFromDetails>( () => filter.ToTuble(), request.PageIndex, request.PageSize, request.Sort.ToSql(), true); return(ResponseResult <Response> .Ok( new Response(result.Data, result.Count, request.PageIndex, request.PageSize))); } }
public async Task <ResponseResult <Response> > Handle(Command request, CancellationToken cancellationToken) { using (var scope = _databaseScopeFactory.CreateReadOnly()) { var filter = request.Filter.ToSql <ApiService.ProductVehicle.Api.ProductVehicleDetails>(); var result = await _productVehicleRepository.QueryAsync <ApiService.ProductVehicle.Api.ProductVehicleDetails>( () => filter.ToTuble(), request.PageIndex, request.PageSize, request.Sort.ToSql(), true); return(ResponseResult <Response> .Ok( new Response(result.Data, result.Count, request.PageIndex, request.PageSize))); } }
public async Task <ResponseResult <string> > Handle(Command request, CancellationToken cancellationToken) { if (string.IsNullOrWhiteSpace(request.ProdName)) { return(ResponseResult <string> .Error("产品名称不能为空.")); } if (string.IsNullOrWhiteSpace(request.ProdTypeId)) { return(ResponseResult <string> .Error("产品类型不能为空.")); } if (string.IsNullOrWhiteSpace(request.ProdFullName)) { return(ResponseResult <string> .Error("产品全称不能为空.")); } request.ProdName = request.ProdName.Trim(); request.ProdFullName = request.ProdFullName.Trim(); // 添加 产品信息 var productId = await AddProductInfoAfterGetId(request, cancellationToken); request.ProductId = productId.productid; if (!string.IsNullOrWhiteSpace(productId.errorMsg)) { return(ResponseResult <string> .Error(productId.errorMsg)); } using (var scope = _databaseScopeFactory.CreateWithTransaction()) { // 添加 产品-销售渠道关系 string tradeMsg = await AddProductTrades(request, cancellationToken); if (!string.IsNullOrWhiteSpace(tradeMsg)) { return(ResponseResult <string> .Error(tradeMsg)); } // 添加产品-物料关系 await AddProductMaterials(request, cancellationToken); scope.SaveChanges(); } return(ResponseResult <string> .Ok(productId.productid)); }
public async Task <ResponseResult <Response> > Handle(Command request, CancellationToken cancellationToken) { using (var scope = _databaseScopeFactory.CreateReadOnly()) { var filter = request.Filter.ToSql <ResourceItem>(); var result = await _repository.FindExcelResourcesAsync <ResourceItem>( () => filter.ToTuble(), request.PageIndex, request.PageSize, request.Sort.ToSql(), true); return(ResponseResult <Response> .Ok(new Response( result.Data, result.Count, request.PageIndex, request.PageSize))); } }
public async Task <ResponseResult <Response> > Handle(Command request, CancellationToken cancellationToken) { using (var scope = _databaseScopeFactory.CreateReadOnly()) { // var filter = request.Filter.ToSql<ProductInfoDetails>(); // var filter = FieldLikeSearch.GetLikeSearchByField<ProductInfoDetails>("ProdName", request.Filter, 3); var filter = FilterLikeSearch.Search <ProductInfoDetails>("1", "ProdName", request.Filter, 3, " "); if (filter.errorMsg != string.Empty && filter.errorMsg != null) { return(ResponseResult <Response> .Error($"{filter.errorMsg}.")); } var result = await _productInfoRepository.QueryAsync <ProductInfoDetails>( () => filter.Item2, request.PageIndex, request.PageSize, request.Sort.ToSql(), true); return(ResponseResult <Response> .Ok( new Response(result.Data, result.Count, request.PageIndex, request.PageSize))); } }
public async Task <ResponseResult <Response> > Handle( Command request, CancellationToken cancellationToken) { var queryResult = new MaterialTypeExport(); IEnumerable <MaterialPropertyExport> basicProperties; IEnumerable <Lunz.ProductCenter.MService.QueryStack.Models.Trade> trades; using (var scope = _databaseScopeFactory.CreateReadOnly()) { queryResult = await _repository.FindCustomPropertiesByTypeAsync <MaterialTypeExport>(request.TypeId); basicProperties = await _repository.FindBasicPropertiesAsync <MaterialPropertyExport>(); trades = await _repository.FindAllTradePropertiesAsync <QueryStack.Models.Trade>(); } string url = string.Empty; if (queryResult != null) { var createResult = await CreateFolder(); var path = createResult.Item1; var fileName = $"物料模板-{request.TypeName}{request.UserName}-{createResult.Item2}.xlsx"; FileInfo file = new FileInfo($@"{path}\{fileName}"); if (file?.Exists ?? false) { file.Delete(); } using (ExcelPackage package = new ExcelPackage(file)) { // 物料模板sheet ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("物料"); // 物料属性sheet ExcelWorksheet propertysheet = package.Workbook.Worksheets.Add("属性"); // 第一行 worksheet.Cells[1, 1].Value = $"物料类型Id:{queryResult.Id}"; worksheet.Cells[1, 2].Value = $"物料类型:{queryResult.TypeName}"; worksheet.Cells[1, 3].Value = $"物料编码:{request.TypeCode}"; worksheet.Cells[1, 4].Value = $"模板导出时间:{string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)}"; // row 2, col 1, 物料名称列 worksheet.Cells[2, 1].IsRichText = true; ExcelRichText ert = worksheet.Cells[2, 1].RichText.Add("物料名称"); ert = worksheet.Cells[2, 1].RichText.Add("*"); ert.Color = Color.Red; // 从row 3到maxRows, col 1, 物料名称列验证 var minLength = 1; var maxLength = 40; int maxRows = ExcelPackage.MaxRows; var textValidation = worksheet.DataValidations.AddTextLengthValidation($"A3:A{maxRows}"); textValidation.ShowErrorMessage = true; textValidation.ErrorStyle = ExcelDataValidationWarningStyle.stop; textValidation.ErrorTitle = "物料名称"; textValidation.Error = string.Format("物料名称不能为空,且最大长度不能超过{0}个字符以内的汉字、字母、数字、符号的组合", maxLength); textValidation.Formula.Value = minLength; textValidation.Formula2.Value = maxLength; // 属性sheet var optionRow = 2; var optionCol = 1; // 物料sheet, row 2, col 2, col 3, DT0000000015: 物料单位, DT0000000031: 物料规格 if (basicProperties?.Count() == 2) { optionCol = 1; // 物料sheet, 从row 3到maxRows, col 2, col 3, 物料规格列下拉列表, 物料单位列下拉列表 var col = 2; foreach (var property in basicProperties) { worksheet.Cells[2, col].IsRichText = true; ert = worksheet.Cells[2, col].RichText.Add(property.DisplayName); ert = worksheet.Cells[2, col].RichText.Add("*"); ert.Color = Color.Red; var basicPropertiesRange = ExcelRange.GetAddress(3, col, ExcelPackage.MaxRows, col); // 属性值 var options = property.Options; if (options?.Any() ?? false) { var basicPropertiesValidation = worksheet.DataValidations.AddListValidation(basicPropertiesRange); basicPropertiesValidation.ShowErrorMessage = true; basicPropertiesValidation.ErrorStyle = ExcelDataValidationWarningStyle.stop; basicPropertiesValidation.ErrorTitle = "选择基本属性"; basicPropertiesValidation.Error = "请从属性列表中选择一项"; var valueRange = ExcelRange.GetAddress(2, optionCol, options.Count + 1, optionCol, true); basicPropertiesValidation.Formula.ExcelFormula = $@"属性!{valueRange}"; // 属性sheet, 属性名 propertysheet.Cells[1, optionCol].Value = property.DisplayName; optionRow = 2; foreach (var option in options) { // 属性sheet, 所有属性选项值 propertysheet.Cells[optionRow, optionCol].Value = $"{option.OptionId}:{option.OptionName}"; optionRow++; } } optionCol++; col++; } } else { worksheet.Cells[2, 2].IsRichText = true; ert = worksheet.Cells[2, 2].RichText.Add("物料规格"); ert = worksheet.Cells[2, 2].RichText.Add("*"); ert.Color = Color.Red; worksheet.Cells[2, 3].IsRichText = true; ert = worksheet.Cells[2, 3].RichText.Add("物料单位"); ert = worksheet.Cells[2, 3].RichText.Add("*"); ert.Color = Color.Red; } // row 2, col 4, 是否为生产物料列, 【是否为生产物料】选择为“是”时,【是否有独立编码】默认为“否”且不可修改。 worksheet.Cells[2, 4].IsRichText = true; ert = worksheet.Cells[2, 4].RichText.Add("是否为生产物料"); ert = worksheet.Cells[2, 4].RichText.Add("*"); ert.Color = Color.Red; // 是否为生产物料下拉列表 var range = ExcelRange.GetAddress(3, 4, ExcelPackage.MaxRows, 4); var listValidation = worksheet.DataValidations.AddListValidation(range); listValidation.ShowErrorMessage = true; listValidation.ErrorStyle = ExcelDataValidationWarningStyle.stop; listValidation.ErrorTitle = "选择基本属性"; listValidation.Error = "请从属性列表中选择一项"; listValidation.Formula.Values.Add("0:否"); listValidation.Formula.Values.Add("1:是"); // row 2, col 5, 是否有独立编号列 worksheet.Cells[2, 5].IsRichText = true; ert = worksheet.Cells[2, 5].RichText.Add("是否有独立编号"); ert = worksheet.Cells[2, 5].RichText.Add("*"); ert.Color = Color.Red; // 是否有独立编号下拉列表 range = ExcelRange.GetAddress(3, 5, ExcelPackage.MaxRows, 5); listValidation = worksheet.DataValidations.AddListValidation(range); listValidation.ShowErrorMessage = true; listValidation.ErrorStyle = ExcelDataValidationWarningStyle.stop; listValidation.ErrorTitle = "选择基本属性"; listValidation.Error = "请从属性列表中选择一项"; listValidation.Formula.Values.Add("0:否"); listValidation.Formula.Values.Add("1:是"); // row 2, col 6, 采购主体列 StringBuilder tradeValue = new StringBuilder(); tradeValue.Append(Environment.NewLine); tradeValue.Append("(多个采购主体用英文逗号隔开)"); if (trades?.Any() ?? false) { tradeValue.Append(Environment.NewLine); foreach (var trade in trades) { tradeValue.Append($"{trade.Id}:{trade.TradeName},"); } } var value = tradeValue.ToString(); worksheet.Cells[2, 6].IsRichText = true; ert = worksheet.Cells[2, 6].RichText.Add("采购主体"); if (!string.IsNullOrEmpty(request.TypeCode) && request.TypeCode.StartsWith(_tradCode)) { ert = worksheet.Cells[2, 6].RichText.Add("*"); ert.Color = Color.Red; } ert = worksheet.Cells[2, 6].RichText.Add(value.Remove(value.LastIndexOf(','))); ert.Color = Color.Black; worksheet.Cells[2, 6].Style.WrapText = true; // row 2, col 7, 建议采购价列 worksheet.Cells[2, 7].Value = "建议采购价(5位以内的正数,两位小数)"; worksheet.Cells[2, 7].Style.HorizontalAlignment = ExcelHorizontalAlignment.Right; // 从row 3到maxRows, col 7, 建议采购价列验证 range = ExcelRange.GetAddress(3, 7, ExcelPackage.MaxRows, 7); var decimalValidation = worksheet.DataValidations.AddDecimalValidation(range); decimalValidation.ErrorStyle = ExcelDataValidationWarningStyle.stop; decimalValidation.ErrorTitle = "建议采购价"; decimalValidation.Error = "建议采购价是5位以内的正数"; decimalValidation.ShowErrorMessage = true; decimalValidation.Operator = ExcelDataValidationOperator.between; decimalValidation.Formula.Value = 0.00; decimalValidation.Formula2.Value = 99999.99; // 属性sheet optionRow = 2; // row 2, 从col 8开始, 自定义属性列 var properties = queryResult.Properties; if (properties?.Any() ?? false) { optionCol = 3; var col = 8; foreach (var property in properties) { // 从row 3开始,添加自定义属性选项值下拉列表 range = ExcelRange.GetAddress(3, col, ExcelPackage.MaxRows, col); // 属性选项值 var options = property.Options; if (options?.Any() ?? false) { listValidation = worksheet.DataValidations.AddListValidation(range); listValidation.ShowErrorMessage = true; listValidation.ErrorTitle = "选择自定义属性"; listValidation.Error = "请从属性列表中选择一项"; var customerOptionRange = ExcelRange.GetAddress(2, optionCol, options.Count + 1, optionCol, true); listValidation.Formula.ExcelFormula = $@"属性!{customerOptionRange}"; // 属性sheet, 属性名 propertysheet.Cells[1, optionCol].Value = $"{property.PropId}:{property.DisplayName}"; optionRow = 2; foreach (var option in options) { // 属性sheet, 所有属性选项值 propertysheet.Cells[optionRow, optionCol].Value = $"{option.OptionId}:{option.OptionName}"; optionRow++; } } // 自定义属性是否必填 if (property.IsNecessary) { worksheet.Cells[2, col].IsRichText = true; ert = worksheet.Cells[2, col].RichText.Add($"{property.PropId}:{property.DisplayName}"); ert = worksheet.Cells[2, col].RichText.Add("*"); ert.Color = Color.Red; if (options?.Any() ?? false) { listValidation.ErrorStyle = ExcelDataValidationWarningStyle.stop; } } else { worksheet.Cells[2, col].Value = $"{property.PropId}:{property.DisplayName}"; if (options?.Any() ?? false) { listValidation.ErrorStyle = ExcelDataValidationWarningStyle.warning; } } optionCol++; col++; } } worksheet.View.FreezePanes(3, 1); worksheet.Cells.AutoFitColumns(); propertysheet.Cells.AutoFitColumns(); worksheet.Column(6).Width = 32; package.Save(); } string ossEndpoint = "http://oss-cn-hangzhou.aliyuncs.com"; string ossAccessKeyId = "LTAIFAiipRXidbYT"; string ossAccessKeySecret = "62zh9kaAd60NAqMxNPCqVcvxhNxH0H"; string ossBucketName = "basichz"; string ossRootFolder = "productcenter"; string ossAccessUrl = "//oss.lunz.cn/"; var fileManager = new OssFileManager(ossEndpoint, ossAccessKeyId, ossAccessKeySecret, ossBucketName, ossRootFolder, ossAccessUrl); // 上传至阿里云 var uploadResult = fileManager.Upload(file.Name.Trim(), $@"{path}\{file.Name.Trim()}"); // 返回阿里云Url地址 url = $@"http://basichz.lunz.cn/{uploadResult.Key}"; // 删除文件夹 DirectoryInfo directory = new DirectoryInfo(path); if (directory.Exists) { directory.Delete(true); } } return(ResponseResult <Response> .Ok(new Response(url))); }