KnowledgeService.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using TEAMModelOS.Model.Syllabus.Dtos;
  7. using TEAMModelOS.Model.Syllabus.Models;
  8. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  9. using TEAMModelOS.Service.Core.Implements;
  10. using TEAMModelOS.Service.Syllabus.Interfaces;
  11. namespace TEAMModelOS.Service.Syllabus.Implements
  12. {
  13. public class KnowledgeService : BaseService, IKnowledgeService
  14. {
  15. public async Task<List<KnowledgePoint>> FindKnowledgePointByDict(KnowledgeDto knowledgePoint) {
  16. List<KnowledgePoint> points = await FindListByDict<KnowledgePoint>(knowledgePoint.PointParams);
  17. if (knowledgePoint.Periods.IsNotEmpty()) {
  18. HashSet<KnowledgePoint> knowledges = new HashSet<KnowledgePoint>();
  19. foreach (string period in knowledgePoint.Periods) {
  20. if (!string.IsNullOrEmpty(period)) {
  21. knowledges.UnionWith(points.Where(x => x.AdvicePeriodCode.Contains(period)).ToHashSet());
  22. }
  23. }
  24. return knowledges.OrderBy(x=>x.Order).ToList();
  25. }
  26. return points.OrderBy(x => x.Order).ToList();
  27. }
  28. public async Task<List<KnowledgePoint>> FindKnowledgeBlockAndPointByDict(KnowledgeDto knowledgePoint) {
  29. List<KnowledgeBlock> blocks = await FindListByDict<KnowledgeBlock>(knowledgePoint.PointParams);
  30. List<KnowledgeBlockPoint> blockPoints = await FindListByDict<KnowledgeBlockPoint>(knowledgePoint.PointParams);
  31. HashSet<KnowledgeBlock> knowledges = new HashSet<KnowledgeBlock>();
  32. HashSet<KnowledgeBlockPoint> knowledgeBlocks = new HashSet<KnowledgeBlockPoint>();
  33. if (knowledgePoint.Periods.IsNotEmpty())
  34. {
  35. foreach (string period in knowledgePoint.Periods)
  36. {
  37. if (!string.IsNullOrEmpty(period))
  38. {
  39. knowledges.UnionWith(blocks.Where(x => x.AdvicePeriodCode.Contains(period)).ToHashSet());
  40. knowledgeBlocks.UnionWith(blockPoints.Where(x => x.AdvicePeriodCode.Contains(period)).ToHashSet());
  41. }
  42. }
  43. //knowledges.OrderBy(x => x.Order).ToList();
  44. // knowledgeBlocks.OrderBy(x => x.Order).ToList();
  45. }
  46. return null;
  47. }
  48. }
  49. }