胖子天骄的MES系统
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 

70 rindas
2.9 KiB

  1. using BPA.MES.Base.Application.Services.ReportService.Dtos;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace BPA.MES.Base.Application.Services.ReportService
  8. {
  9. [ApiDescriptionSettings("统计报表管理", Order = 2, Name = "Report", Tag = "报表信息", KeepName = true, SplitCamelCase = true, KeepVerb = true)]
  10. public class ReportService : IReportService, ITransient, IDynamicApiController
  11. {
  12. private readonly ISqlSugarClient _dbContext;
  13. public ReportService(ISqlSugarClient db)
  14. {
  15. _dbContext = db;
  16. }
  17. /// <summary>
  18. /// 获取成品生产统计
  19. /// </summary>
  20. /// <param name="input"></param>
  21. /// <returns></returns>
  22. [HttpPost]
  23. public async Task<SqlSugarPagedList<ProductOutDto>> GetProductReport(ProductInputDto input)
  24. {
  25. var res = await _dbContext.Queryable<Pztj_WorkInfoEntity>().LeftJoin<Pztj_FinalsInfoEntity>((a, b) => a.FinalId == b.Id)
  26. .WhereIF(!string.IsNullOrEmpty(input.ProductName), (a, b) => b.Name.Contains(input.ProductName))
  27. .WhereIF(input.StartTime.HasVal(), (a, b) => a.CreateTime >= input.StartTime.Value)
  28. .WhereIF(input.EndTime.HasVal(), (a, b) => a.CreateTime <= input.EndTime.Value)
  29. .Where((a, b) => a.Status == WorkOrderStatusEnum.Completed)
  30. .GroupBy((a, b) => b.Name)
  31. .Select((a, b) => new ProductOutDto
  32. {
  33. ProductName = b.Name,
  34. Count = SqlFunc.AggregateSum(Convert.ToDecimal(a.Number)),
  35. }).ToPagedListAsync(input.PageIndex, input.PageSize);
  36. return res;
  37. }
  38. /// <summary>
  39. /// 获取物料统计
  40. /// </summary>
  41. /// <param name="input"></param>
  42. /// <returns></returns>
  43. [HttpPost]
  44. public async Task<SqlSugarPagedList<MaterialsOutDto>> GetMaterialsReport(MaterialsInputDto input)
  45. {
  46. var result = await _dbContext.Queryable<WorkInfoMaterialsRecordEntity>()
  47. .LeftJoin<Pztj_WorkInfoEntity>((a, b) => a.WorkId == b.Id)
  48. .Where((a, b) => b.Status == WorkOrderStatusEnum.Completed)
  49. .WhereIF(!string.IsNullOrEmpty(input.MaterialName), (a, b) => a.MaterialName.Contains(input.MaterialName))
  50. .WhereIF(input.StartTime.HasVal(), (a, b) => b.CreateTime >= input.StartTime.Value)
  51. .WhereIF(input.EndTime.HasVal(), (a, b) => b.CreateTime <= input.EndTime.Value)
  52. .GroupBy((a, b) => a.MaterialName)
  53. .Select((a, b) => new MaterialsOutDto
  54. {
  55. Count = SqlFunc.AggregateSumNoNull(Convert.ToDecimal(a.Weight)),
  56. MaterialName = a.MaterialName,
  57. }).ToPagedListAsync(input.PageIndex, input.PageSize);
  58. return result;
  59. }
  60. }
  61. }