| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373 |
- using System;
- using Abp.Auditing;
- using Abp.Authorization;
- using Abp.Domain.Repositories;
- using IwbZero.AppServiceBase;
- using ShwasherSys.Authorization.Permissions;
- using ShwasherSys.ProductInfo.Dto;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Linq.Dynamic.Core;
- using System.Reflection;
- using System.Threading.Tasks;
- using System.Web.Mvc;
- using Abp.Application.Services.Dto;
- using Castle.Core.Internal;
- using IwbZero.Helper;
- using MiniExcelLibs;
- using NPOI.SS.Formula.Functions;
- namespace ShwasherSys.ProductInfo
- {
- [AbpAuthorize]
- public class StandardsAppService : ShwasherAsyncCrudAppService<Standard, StandardDto, int, PagedRequestDto, StandardCreateDto, StandardUpdateDto >, IStandardsAppService
- {
- public StandardsAppService(IRepository<Standard, int> repository, IRepository<StandardCatalog> standardCatalogRepository, IRepository<StandardDetail> standardDetailRepository) : base(repository, "StandardName")
- {
- StandardCatalogRepository = standardCatalogRepository;
- StandardDetailRepository = standardDetailRepository;
- KeyIsAuto = false;
- }
- protected override string GetPermissionName { get; set; } = PermissionNames.PagesProductInfoStandards;
- protected override string GetAllPermissionName { get; set; } = PermissionNames.PagesProductInfoStandards;
- protected override string CreatePermissionName { get; set; } = PermissionNames.PagesProductInfoStandardsCreate;
- protected override string UpdatePermissionName { get; set; } = PermissionNames.PagesProductInfoStandardsUpdate;
- protected override string DeletePermissionName { get; set; } = PermissionNames.PagesProductInfoStandardsDelete;
- protected IRepository<StandardCatalog> StandardCatalogRepository { get; }
- protected IRepository<StandardDetail> StandardDetailRepository { get; }
- [DisableAuditing]
- public List<SelectListItem> GetStandardsList()
- {
- var objList = new List<SelectListItem>();
-
- var entitys = Repository.GetAll();
- foreach (var standard in entitys)
- {
- objList.Add(new SelectListItem()
- {
- Text = standard.StandardName,
- Value = standard.Id+""
- });
- }
- return objList;
- }
- [DisableAuditing]
- public async Task<PagedResultDto<StandardCatalogDto>> GetAllCatalog(PagedRequestDto input)
- {
- CheckGetAllPermission();
- var query = StandardCatalogRepository.GetAll();
-
-
- if (input.SearchList != null && input.SearchList.Count > 0)
- {
- List<LambdaObject> objList = new List<LambdaObject>();
- foreach (var o in input.SearchList)
- {
- if (o.KeyWords.IsNullOrEmpty())
- continue;
- objList.Add(new LambdaObject()
- {
- FieldType = (LambdaFieldType)o.FieldType,
- FieldName = o.KeyField,
- FieldValue = o.KeyWords,
- ExpType = (LambdaExpType)o.ExpType
- });
- }
-
- var exp = objList.GetExp<StandardCatalog>();
- if (exp != null)
- {
- query = query.Where(exp);
- }
- }
-
- var totalCount = await AsyncQueryableExecuter.CountAsync(query);
- query = query.OrderBy(i=>i.Id);
- query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
- var entities = await AsyncQueryableExecuter.ToListAsync(query);
- var dtos = new PagedResultDto<StandardCatalogDto>(
- totalCount,
- ObjectMapper.Map<List<StandardCatalogDto>>(entities)
- );
- return dtos;
- }
- [DisableAuditing]
- public async Task<PagedResultDto<StandardDetailDto>> GetDetail(PagedRequestDto input)
- {
- CheckGetAllPermission();
- var query = StandardDetailRepository.GetAll();
-
- if (input.SearchList != null && input.SearchList.Count > 0)
- {
- List<LambdaObject> objList = new List<LambdaObject>();
- foreach (var o in input.SearchList)
- {
- if (o.KeyWords.IsNullOrEmpty())
- continue;
- if (o.KeyField == "innerDiameter")
- {
- var innerDi = Convert.ToDecimal(o.KeyWords);
- query = query.Where(i=> innerDi>=i.InnerDiameter1&& innerDi <= i.InnerDiameter2);
- continue;
- }
- if (o.KeyField == "outDiameter")
- {
- var outDi = Convert.ToDecimal(o.KeyWords);
- query = query.Where(i => outDi >= i.OutDiameter1 && outDi <= i.OutDiameter2);
- continue;
- }
- objList.Add(new LambdaObject()
- {
- FieldType = (LambdaFieldType)o.FieldType,
- FieldName = o.KeyField,
- FieldValue = o.KeyWords,
- ExpType = (LambdaExpType)o.ExpType
- });
- }
- var exp = objList.GetExp<StandardDetail>();
- if (exp != null)
- {
- query = query.Where(exp);
- }
- }
-
- var totalCount = await AsyncQueryableExecuter.CountAsync(query);
- query = query.OrderBy(i => i.Specs);
- query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
- var entities = await AsyncQueryableExecuter.ToListAsync(query);
- var dtos = new PagedResultDto<StandardDetailDto>(
- totalCount,
- ObjectMapper.Map<List<StandardDetailDto>>(entities)
- );
- return dtos;
- }
- [DisableAuditing]
- public async Task<PagedResultDto<StandardDetailDto>> GetDetailView(PagedRequestDto input)
- {
- CheckGetAllPermission();
- var de = StandardDetailRepository.GetAll();
- var cq = StandardCatalogRepository.GetAll();
- var query = from detail in de
- join catalog in cq on detail.StandardId equals catalog.Id into l
- from lua in l.DefaultIfEmpty()
- select new StandardDetailDto
- {
- Id = detail.Id,
- StandardId = detail.StandardId,
- Height1 = detail.Height1,
- Height2 = detail.Height2,
- InnerChamfer1 = detail.InnerChamfer1,
- InnerChamfer2 = detail.InnerChamfer2,
- InnerDiameter1 = detail.InnerDiameter1,
- InnerDiameter2 = detail.InnerDiameter2,
- OutChamfer1 = detail.OutChamfer1,
- OutChamfer2 = detail.OutChamfer2,
- OutDiameter1 = detail.OutDiameter1,
- OutDiameter2 = detail.OutDiameter2,
- Thickness1 = detail.Thickness1,
- Thickness2 = detail.Thickness2,
- ThousandWeigh = detail.ThousandWeigh,
- StandardName = detail.StandardName,
- StandardAbbrName = lua.StandardAbbrName,
- StandardAbbr = lua.StandardAbbr,
- StandardFullName = lua.StandardName,
- Specs = detail.Specs
- };
- if (input.SearchList != null && input.SearchList.Count > 0)
- {
- List<LambdaObject> objList = new List<LambdaObject>();
- foreach (var o in input.SearchList)
- {
- if (o.KeyWords.IsNullOrEmpty())
- continue;
- if (o.KeyField == "innerDiameter")
- {
- var innerDi = Convert.ToDecimal(o.KeyWords);
- query = query.Where(i => innerDi >= i.InnerDiameter1 && innerDi <= i.InnerDiameter2);
- continue;
- }
- if (o.KeyField == "outDiameter")
- {
- var outDi = Convert.ToDecimal(o.KeyWords);
- query = query.Where(i => outDi >= i.OutDiameter1 && outDi <= i.OutDiameter2);
- continue;
- }
- objList.Add(new LambdaObject()
- {
- FieldType = (LambdaFieldType)o.FieldType,
- FieldName = o.KeyField,
- FieldValue = o.KeyWords,
- ExpType = (LambdaExpType)o.ExpType
- });
- }
- var exp = objList.GetExp<StandardDetailDto>();
- if (exp != null)
- {
- query = query.Where(exp);
- }
- }
-
- var totalCount = await AsyncQueryableExecuter.CountAsync(query);
- query = query.OrderBy(i => i.StandardId);
- query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
- var entities = await AsyncQueryableExecuter.ToListAsync(query);
- var dtos = new PagedResultDto<StandardDetailDto>(
- totalCount, entities
- //ObjectMapper.Map<List<StandardDetailDto>>(entities)
- );
- return dtos;
- }
- [DisableAuditing]
- public async Task<StandardCatalog> GetCatalog(int id)
- {
- var entity = await StandardCatalogRepository.GetAsync(id);
- return entity;
- }
- #region 数据测试导入
- [DisableAuditing]
- public async Task ImportData()
- {
- //using var stream = File.OpenRead("C:\\Users\\Lenovo\\Desktop\\项目文档目录\\shwasher\\垫圈标准目录.xlsx");
- //var rows = (await stream.QueryAsync(true)).ToList();
- ////rows[0].序号
- //foreach (dynamic row in rows)
- //{
- // //var ss = row["序号"];
- // StandardCatalog catalog = new StandardCatalog()
- // {
- // Id = Convert.ToInt32(row.序号),
- // StandardAbbr=row.简写,
- // StandardAbbrName = row.标准简称,
- // StandardName = row.标准完整名称,
- // Rigidity = row.硬度,
- // Param = row.参数,
- // Drawing = row.图纸
- // };
- // await StandardCatalogRepository.InsertAsync(catalog);
- //}
- using var stream = File.OpenRead("C:\\Users\\Lenovo\\Desktop\\项目文档目录\\shwasher\\标准明细整理-导入数据.xlsx");
- var rows = (await stream.QueryAsync(true)).ToList();
- //rows[0].序号
- foreach (dynamic row in rows)
- {
- //var ss = row["序号"];
- int standardId = Convert.ToInt32(row.编号);
- string standardName = row.名称 + "";
- string specs = row.规格 + "";
- string innerDiameter1 = SplitEx(row.内径);
- string innerDiameter2 = SplitEx(row.内径, 1);
- string outDiameter1 = SplitEx(row.外径);
- string outDiameter2 = SplitEx(row.外径, 1);
- string thickness1 = SplitEx(row.厚度);
- string thickness2 = SplitEx(row.厚度, 1);
- string innerChamfer1 = SplitEx(row.内倒角);
- string innerChamfer2 = SplitEx(row.内倒角, 1);
- string outChamfer1 = SplitEx(row.外倒角);
- string outChamfer2 = SplitEx(row.外倒角, 1);
- string height1 = SplitEx(row.高度);
- string height2 = SplitEx(row.高度, 1);
- string thousandWeigh = row.千件重 + "";
- StandardDetail detail = new StandardDetail()
- {
- StandardId = standardId,
- StandardName = standardName,
- Specs = specs,
- InnerDiameter1 = Convert.ToDecimal(innerDiameter1),
- InnerDiameter2 = Convert.ToDecimal(innerDiameter2),
- OutDiameter1 = Convert.ToDecimal(outDiameter1),
- OutDiameter2 = Convert.ToDecimal(outDiameter2),
- OutChamfer1 = Convert.ToDecimal(outChamfer1),
- OutChamfer2 = Convert.ToDecimal(outChamfer2),
- InnerChamfer1 = Convert.ToDecimal(innerChamfer1),
- InnerChamfer2 = Convert.ToDecimal(innerChamfer2),
- Thickness1 = Convert.ToDecimal(thickness1),
- Thickness2 = Convert.ToDecimal(thickness2),
- Height1 = Convert.ToDecimal(height1),
- Height2 = Convert.ToDecimal(height2),
- ThousandWeigh = Convert.ToDecimal(thousandWeigh.IsNullOrEmpty() ? "0" : thousandWeigh)
- };
- await StandardDetailRepository.InsertAsync(detail);
- }
- }
- private string SplitEx(dynamic input, int index = 0)
- {
- string str = input?.ToString();
- if (str.IsNullOrEmpty())
- {
- return "0";
- }
- string[] split=null;
- if (str.IndexOf("~", StringComparison.Ordinal)>0)
- {
- split = str?.Split(new[] { '~' }, StringSplitOptions.None);
- }else if (str.IndexOf("/", StringComparison.Ordinal) > 0)
- {
- split = str?.Split(new[] { '/' }, StringSplitOptions.None);
- }
- else
- {
- return str.Trim();
- }
- //如果没有数值用0
- //if (split?.Length == 0)
- //{
- // return "0";
- //}
- //如果只有一个数值,那最大和最小值相同
- //if (split?.Length == 1 && index == 1)
- //{
- // return split[0].Trim();
- //}
- return split?[index].Trim();
- }
- [DisableAuditing]
- public async Task ImportData2()
- {
- var standardDetails = await StandardDetailRepository.GetAllListAsync();
- foreach (var detail in standardDetails)
- {
- var standardCatalog = await StandardCatalogRepository.GetAsync(detail.StandardId);
- detail.StandardName = standardCatalog.StandardAbbr + " M" + detail.Specs;
- await StandardDetailRepository.UpdateAsync(detail);
- //detail.Specs = detail.Specs.TrimStart();
- //await StandardDetailRepository.UpdateAsync(detail);
- }
- }
- #endregion
- }
- }
|