MachineToPmDal.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. using Cksoft.Data;
  2. using DllEapEntity.PM;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. namespace DllEapDal
  8. {
  9. public class MachineToPmDal
  10. {
  11. private IDatabase CurrDb;
  12. public MachineToPmDal(IDatabase db)
  13. {
  14. CurrDb = db;
  15. }
  16. public IEnumerable<MachineToPM> Get()
  17. {
  18. var sql = @" select a.id,a.fCode macCode, a.FName macName, b.id modelId, b.FCode modelCode, b.FName modelName,
  19. d.FCode pmcode, d.FName pmName, d.Maintenance maintenance, d.TimeSpan timespan, d.id pmId,
  20. c.startTime starttime, f.pmTime lastpmtime,h.FCode as pCode,h.FName as pName
  21. from machine a
  22. left outer join macmodel b on a.mmodeId = b.id
  23. left outer join pmmachine c on a.id = c.macid
  24. left outer join pmschema d on c.pmid = d.id
  25. left outer join pmhistory f on a.id = f.macid and f.id in (select max(id) from pmhistory h where h.macid = a.id and h.pmid = c.pmid)
  26. left outer join MacTProcess g on a.id=g.macid
  27. left outer join TProcess h on g.pCode=h.FCode";
  28. var models = CurrDb.FindList<MachineToPM>(sql);
  29. return models;
  30. }
  31. public IEnumerable<MachineToPM> Get(int start, int length, string order, string sort, string filter, string states, string errorinfo, out int total)
  32. {
  33. string sql = @"select a.id,a.fCode macCode,a.FName macName,b.id modelId,b.FCode modelCode,b.FName modelName,
  34. d.FCode pmcode,d.FName pmName,d.Maintenance maintenance,d.TimeSpan timespan,d.id pmId,
  35. c.startTime starttime,f.pmTime lastpmtime,h.FCode as PCode,h.FName as PName
  36. from machine a
  37. left outer join macmodel b on a.mmodeId = b.id
  38. left outer join pmmachine c on a.id=c.macid
  39. left outer join pmschema d on c.pmid=d.id
  40. left outer join pmhistory f on a.id=f.macid and f.id in (select max(id) from pmhistory h where h.macid=a.id and h.pmid=c.pmid)
  41. left outer join MacTProcess g on a.id=g.macid
  42. left outer join TProcess h on g.pCode=h.FCode "
  43. + $" where 1=1 {filter} order by {sort} {order}";
  44. var pms = CurrDb.FindList<MachineToPM>(sql).Where(c => !string.IsNullOrEmpty(c.PmCode)).ToList();
  45. DateTime dateNow = DateTime.Now;
  46. var results = new List<MachineToPM>();
  47. for (var i = 0; i < pms.Count(); i++)
  48. {
  49. var item = pms[i];
  50. if (item.LastPmTime == null)
  51. {
  52. item.NextPmTime = item.StartTime.Value.AddDays(item.TimeSpan);
  53. if (item.NextPmTime >= dateNow.AddDays(10))
  54. {
  55. item.State = 0; // 正常未到保养提醒
  56. results.Add(item);
  57. }
  58. else if (dateNow < item.NextPmTime && item.NextPmTime < dateNow.AddDays(10))
  59. {
  60. item.State = 1; // 提醒未过保
  61. results.Add(item);
  62. }
  63. else
  64. {
  65. item.State = 2; // 过保
  66. results.Add(item);
  67. }
  68. }
  69. else
  70. {
  71. item.NextPmTime = item.LastPmTime.Value.AddDays(item.TimeSpan);
  72. if (item.NextPmTime >= dateNow.AddDays(10))
  73. {
  74. item.State = 0; // 正常未到保养提醒
  75. results.Add(item);
  76. }
  77. else if (dateNow < item.NextPmTime && item.NextPmTime < dateNow.AddDays(10))
  78. {
  79. item.State = 1; // 提醒未过保
  80. results.Add(item);
  81. }
  82. else
  83. {
  84. item.State = 2; // 过保
  85. results.Add(item);
  86. }
  87. }
  88. }
  89. total = results.Count;
  90. if (!string.IsNullOrEmpty(states))
  91. {
  92. var arr = states.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(c => Convert.ToInt32(c)).ToList();
  93. if (arr != null && arr.Count > 0)
  94. {
  95. if (arr.Count == 1)
  96. {
  97. results = results.Where(c => c.State == arr[0]).ToList();
  98. }
  99. else if (arr.Count == 2)
  100. {
  101. results = results.Where(c => c.State == arr[0] || c.State == arr[1]).ToList();
  102. }
  103. }
  104. }
  105. results = results.Skip(start - 1).Take(length).ToList();
  106. return results;
  107. }
  108. public int GetCount(string filter)
  109. {
  110. string errorinfo = string.Empty;
  111. //string sql = $"select count(1) from ProgramRule a where 1=1 {filter}";
  112. var entities = CurrDb.FindListForCondition<MachineToPM>(filter, ref errorinfo);
  113. if (entities != null)
  114. {
  115. return entities.Count();
  116. }
  117. return 0;
  118. }
  119. public MachineToPM Get(int id)
  120. {
  121. var pro = CurrDb.FindEntityFor<MachineToPM>(id);
  122. return pro;
  123. }
  124. }
  125. }