WorkProcedureDal.cs 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. using Cksoft.Data;
  2. using Cksoft.Unity;
  3. using DllEapEntity;
  4. using Newtonsoft.Json;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. namespace DllEapDal.OFILM
  10. {
  11. public class WorkProcedureDal
  12. {
  13. private IDatabase CurrDb = null;
  14. public WorkProcedureDal(IDatabase db)
  15. {
  16. CurrDb = db;
  17. }
  18. public IEnumerable<WorkingProcedure> Get(int start, int length, string order, string sort, string filter, string errorinfo)
  19. {
  20. var pros = CurrDb.FindListForCondition<WorkingProcedure>($" {filter} order by {sort} {order} limit {start - 1},{length}", ref errorinfo);
  21. return pros;
  22. }
  23. public int GetCount(string filter)
  24. {
  25. string errorinfo = string.Empty;
  26. var entities = CurrDb.FindListForCondition<WorkingProcedure>(filter, ref errorinfo);
  27. if (entities != null)
  28. {
  29. return entities.Count();
  30. }
  31. return 0;
  32. }
  33. public WorkingProcedure Get(int id)
  34. {
  35. var pro = CurrDb.FindEntityFor<WorkingProcedure>(id);
  36. return pro;
  37. }
  38. /// <summary>
  39. /// 添加WorkingProcedure并返回Id
  40. /// </summary>
  41. /// <param name="role"></param>
  42. /// <param name="userCode"></param>
  43. /// <returns></returns>
  44. public int Add(WorkingProcedure pro, string userCode, ref string errorinfo)
  45. {
  46. var entities = CurrDb.FindListForCondition<WorkingProcedure>($" and a.park='{pro.Park}' and a.MachineType='{pro.MachineType}' and a.workshopSection='{pro.WorkshopSection}' and a.assignmentContent='{pro.AssignmentContent}' ", ref errorinfo);
  47. if (entities != null && entities.Count() > 0)
  48. {
  49. errorinfo = "已存在相同园区,机种,工段,作业内容,请确认";
  50. return -1;
  51. }
  52. CurrDb.InsertFor(pro, userCode);
  53. var sql = "select @@identity;";
  54. var id = Convert.ToInt32(CurrDb.FindList<string>(sql).FirstOrDefault() ?? "-1");
  55. return id;
  56. }
  57. /// <summary>
  58. /// 批量新增
  59. /// </summary>
  60. /// <param name="pros"></param>
  61. /// <param name="userCode"></param>
  62. /// <param name="errorinfo"></param>
  63. /// <returns></returns>
  64. public int Adds(IEnumerable<WorkingProcedure> pros, string userCode, ref string errorinfo)
  65. {
  66. //var entities = CurrDb.FindListForCondition<WorkingProcedure>($" and a.park='{pro.Park}' ", ref errorinfo);
  67. //if (entities != null && entities.Count() > 0)
  68. //{
  69. // errorinfo = "已存在相同园区,机种,工段,作业内容,请确认";
  70. // return -1;
  71. //}
  72. try
  73. {
  74. var gpors = pros.GroupBy(l => new { l.Park,l.Floor, l.MachineType }).Select(p => new { p.Key.Park,p.Key.Floor, p.Key.MachineType });
  75. foreach (var item in gpors)
  76. {
  77. string sqldel = $"delete from WorkingProcedure where Park='{item.Park}' and Floor='{item.Floor}' and MachineType='{item.MachineType}'";
  78. CurrDb.ExecuteBySql(sqldel);
  79. }
  80. CurrDb.InsertFor<WorkingProcedure>(pros, userCode);
  81. var sql = "select @@identity;";
  82. var id = Convert.ToInt32(CurrDb.FindList<string>(sql).FirstOrDefault() ?? "-1");
  83. return id;
  84. }
  85. catch (Exception e)
  86. {
  87. errorinfo = e.ToString();
  88. return -1;
  89. }
  90. }
  91. /// <summary>
  92. /// 查询是否有重复数据
  93. /// </summary>
  94. /// <param name="pros"></param>
  95. /// <param name="errorinfo"></param>
  96. /// <returns></returns>
  97. public int CheckSame(IEnumerable<WorkingProcedure> pros, ref Object errorinfo)
  98. {
  99. //var list = pros.Where((x, i) => pros.ToList().FindIndex(n => (n.Park == x.Park && n.MachineType == x.MachineType && n.WorkshopSection == x.WorkshopSection && n.AssignmentContent == x.AssignmentContent)) == i).ToList();
  100. List<WorkingProcedure> workingProcedures = new List<WorkingProcedure>();
  101. var result = from r in pros
  102. group r by new { r.Park,r.Floor, r.MachineType, r.WorkshopSection, r.AssignmentContent } into g
  103. where g.Count() > 1
  104. select g;
  105. //遍历分组结果集
  106. foreach (var item in result)
  107. {
  108. foreach (WorkingProcedure u in item)
  109. {
  110. workingProcedures.Add(u);
  111. }
  112. }
  113. if (workingProcedures.Count() >= 1)
  114. {
  115. var gpors = workingProcedures.GroupBy(l => new { l.Park,l.Floor, l.MachineType, l.WorkshopSection, l.AssignmentContent }).Select(p => new { p.Key.Park,p.Key.Floor, p.Key.MachineType, p.Key.WorkshopSection, p.Key.AssignmentContent });
  116. errorinfo = gpors;
  117. return -2;
  118. }
  119. return 1;
  120. }
  121. /// <summary>
  122. /// 待优化 存在删除后不能
  123. /// </summary>
  124. /// <param name="role"></param>
  125. /// <param name="userCode"></param>
  126. /// <param name="errorinfo"></param>
  127. /// <returns></returns>
  128. public int Update(WorkingProcedure role, string userCode, ref string errorinfo)
  129. {
  130. var entities = CurrDb.FindListForCondition<WorkingProcedure>($" and a.park='{role.Park}' and a.MachineType='{role.MachineType}' and a.workshopSection='{role.WorkshopSection}' and a.assignmentContent='{role.AssignmentContent}' " +
  131. $"and a.ID<>{role.ID}", ref errorinfo);
  132. if (entities != null && entities.Count() > 0)
  133. {
  134. errorinfo = "已存在相同园区,机种,工段,作业内容,请确认";
  135. return -1;
  136. }
  137. if (CurrDb.UpdateFor(role, userCode) < 0)
  138. {
  139. return -1;
  140. }
  141. return role.ID;
  142. }
  143. public IEnumerable<WorkingProcedure> getWorkingProcedure(int id)
  144. {
  145. var sql = $"select * from WorkingProcedure where ID={id}";
  146. return CurrDb.FindList<WorkingProcedure>(sql);
  147. }
  148. public int Delete(int id, ref string msg)
  149. {
  150. if (CurrDb.DeleteFor<WorkingProcedure>(id) < 0)
  151. {
  152. msg = "删除失败";
  153. return -1;
  154. }
  155. msg = string.Empty;
  156. return 1;
  157. }
  158. public int DeleteAll(string filter, ref string msg)
  159. {
  160. string sql = $@" delete from WorkingProcedure where 1=1 {filter}";
  161. if (CurrDb.ExecuteBySql(sql) < 0)
  162. {
  163. msg = "删除失败";
  164. return -1;
  165. }
  166. msg = string.Empty;
  167. return 1;
  168. }
  169. public IEnumerable<WorkingProcedure> GetWorkingProcedureExprort(string filter, string sortField, string sortOrder, int take)
  170. {
  171. var sql = $"select * from WorkingProcedure limit {take}";
  172. IEnumerable<WorkingProcedure> dtos = CurrDb.FindList<WorkingProcedure>(sql).Take(take);
  173. if (dtos == null || dtos.Count() <= 0)
  174. return null;
  175. return dtos;
  176. }
  177. }
  178. }