BillMachinfoService.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. using Dm;
  2. using MathNet.Numerics.RootFinding;
  3. using SqlSugar;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Reflection.Emit;
  8. using System.Reflection.PortableExecutable;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using wms.sqlsugar.model.fj;
  12. using WMS.BZModels;
  13. using WMS.BZModels.Dto.FJ.BillMachInfoDtos;
  14. using WMS.BZSqlSugar;
  15. using WMS.Info;
  16. using WMS.Info.Models;
  17. using static System.Runtime.CompilerServices.RuntimeHelpers;
  18. namespace WMS.BZServices.FJ
  19. {
  20. public class BillMachinfoService
  21. {
  22. private readonly Repository<BillMachinfo> _billMachinfoRepository;
  23. private readonly Repository<BaseWarehouse> _baseWarehouseRepository;
  24. private readonly Repository<BaseWarearea> _baseWareareaRepository;
  25. public BillMachinfoService(Repository<BillMachinfo> billMachinfoRepository, Repository<BaseWarehouse> baseWarehouseRepository, Repository<BaseWarearea> baseWareareaRepository)
  26. {
  27. _billMachinfoRepository = billMachinfoRepository;
  28. _baseWarehouseRepository = baseWarehouseRepository;
  29. _baseWareareaRepository = baseWareareaRepository;
  30. }
  31. public PagedInfo<BillMachinfoDto> GetPageList(Pagination pagination, BillMachinfoQueryDto billDocsinfoQueryDto)
  32. {
  33. var predicate = Expressionable.Create<BillMachinfo, BaseWarehouse, BaseWarearea>();
  34. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.Name), (billMachinfo, warehouse, warearea) => billMachinfo.Name.Contains(billDocsinfoQueryDto.Name));
  35. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.KeyWord), (billMachinfo, warehouse, warearea) => billMachinfo.MachNo.Contains(billDocsinfoQueryDto.KeyWord)
  36. || billMachinfo.Name.Contains(billDocsinfoQueryDto.KeyWord) || billMachinfo.Station.Contains(billDocsinfoQueryDto.KeyWord) || billMachinfo.GrpCode.Contains(billDocsinfoQueryDto.KeyWord));
  37. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.WarehouseId), (billMachinfo, warehouse, warearea) => billMachinfo.WarehouseId.ToString().Contains(billDocsinfoQueryDto.WarehouseId));
  38. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.MachNo), (billMachinfo, warehouse, warearea) => billMachinfo.MachNo.Contains(billDocsinfoQueryDto.MachNo));
  39. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.Station), (billMachinfo, warehouse, warearea) => billMachinfo.Station.Contains(billDocsinfoQueryDto.Station));
  40. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.GrpCode), (billMachinfo, warehouse, warearea) => billMachinfo.GrpCode.Contains(billDocsinfoQueryDto.GrpCode));
  41. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.BillCode), (billMachinfo, warehouse, warearea) => billMachinfo.BillCode.Equals(billDocsinfoQueryDto.BillCode));
  42. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.WareDirect), (billMachinfo, warehouse, warearea) => billMachinfo.WareDirect.Equals(billDocsinfoQueryDto.WareDirect));
  43. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.WareAreaId), (billMachinfo, warehouse, warearea) => billMachinfo.WareAreaId.Equals(billDocsinfoQueryDto.WareAreaId));
  44. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.Direction), (billMachinfo, warehouse, warearea) => billMachinfo.Direction.Contains(billDocsinfoQueryDto.Direction));
  45. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.WorkOrder), (billMachinfo, warehouse, warearea) => billMachinfo.WorkOrder.Equals(billDocsinfoQueryDto.WorkOrder));
  46. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.SetGrpCode), (billMachinfo, warehouse, warearea) => billMachinfo.SetGrpCode.Equals(billDocsinfoQueryDto.SetGrpCode));
  47. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.ProBillCode), (billMachinfo, warehouse, warearea) => billMachinfo.ProBillCode.Equals(billDocsinfoQueryDto.ProBillCode));
  48. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.ProWorkOrder), (billMachinfo, warehouse, warearea) => billMachinfo.ProWorkOrder.Equals(billDocsinfoQueryDto.ProWorkOrder));
  49. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.ProSetGrpCode), (billMachinfo, warehouse, warearea) => billMachinfo.ProSetGrpCode.Equals(billDocsinfoQueryDto.ProSetGrpCode));
  50. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.MacTypeCode), (billMachinfo, warehouse, warearea) => billMachinfo.MacTypeCode.Equals(billDocsinfoQueryDto.MacTypeCode));
  51. predicate = predicate.AndIF(!string.IsNullOrEmpty(billDocsinfoQueryDto?.MacTypeName), (billMachinfo, warehouse, warearea) => billMachinfo.MacTypeName.Contains(billDocsinfoQueryDto.MacTypeName));
  52. var list = _billMachinfoRepository.Context.Queryable<BillMachinfo, BaseWarehouse, BaseWarearea>((billMachinfo, warehouse, warearea) => new object[] {
  53. JoinType.Left,billMachinfo.WarehouseId == warehouse.Id , JoinType.Left, warehouse.Id==warearea.WarehouseId}).Where(predicate.ToExpression())
  54. .Select((billMachinfo, warehouse, warearea) => new BillMachinfoDto
  55. {
  56. Id = billMachinfo.Id.ToString(),
  57. WarehouseName = warehouse.Name,
  58. WarehouseId = billMachinfo.WarehouseId.ToString(),
  59. WarehouseCode = billMachinfo.WarehouseCode,
  60. WarehouseSort = billMachinfo.WarehouseSort,
  61. WareDirect = billMachinfo.WareDirect,
  62. WareAreaId = billMachinfo.WareAreaId.ToString(),
  63. IsStop = billMachinfo.IsStop,
  64. MachNo = billMachinfo.MachNo,
  65. Name = billMachinfo.Name,
  66. GrpCode = billMachinfo.GrpCode,
  67. Station = billMachinfo.Station,
  68. Direction = billMachinfo.Direction,
  69. BillCode = billMachinfo.BillCode,
  70. WorkOrder = billMachinfo.WorkOrder,
  71. SetGrpCode = billMachinfo.SetGrpCode,
  72. ProBillCode = billMachinfo.ProBillCode,
  73. ProWorkOrder = billMachinfo.ProWorkOrder,
  74. ProSetGrpCode = billMachinfo.ProSetGrpCode,
  75. Memo = billMachinfo.Memo,
  76. AddWho = billMachinfo.AddWho,
  77. EditWho = billMachinfo.EditWho,
  78. AddTime = billMachinfo.AddTime,
  79. EditTime = billMachinfo.EditTime,
  80. MacTypeCode = billMachinfo.MacTypeCode,
  81. MacTypeName = billMachinfo.MacTypeName,
  82. AgvPoint = billMachinfo.AgvPoint,
  83. NearestWarehouseName = billMachinfo.NearestWarehouseName
  84. }).MergeTable().ToPage(pagination);
  85. return list;
  86. }
  87. public void Save(LoginUserInfo loginUser, string keyValue, BillMachinfo entity)
  88. {
  89. if (string.IsNullOrWhiteSpace(entity.Name))
  90. {
  91. throw new ArgumentException("机台名称不能为空");
  92. }
  93. var warehouse = _baseWarehouseRepository.Queryable().First(o => o.Id == entity.WarehouseId);
  94. if (warehouse == null)
  95. {
  96. throw new ArgumentException("仓库不存在!");
  97. }
  98. var warearea = _baseWareareaRepository.Queryable().First(o => o.Id == entity.WareAreaId);
  99. if (keyValue.IsEmpty() || keyValue == "undefined")
  100. {
  101. var mat = _billMachinfoRepository.Count(p => p.MachNo == entity.MachNo);
  102. if (mat > 0)
  103. {
  104. throw new ArgumentException("机台号已存在");
  105. }
  106. entity.WarehouseId = warehouse.Id;
  107. entity.WarehouseCode = warehouse.Code;
  108. entity.WareAreaId = warearea == null ? 0 : warearea.Id;
  109. entity.AddTime = DateTime.Now;
  110. entity.AddWho = loginUser.UserNo;
  111. entity.EditTime = DateTime.Now;
  112. entity.EditWho = loginUser.UserNo;
  113. entity.IsStop = 0;
  114. _billMachinfoRepository.Insert(entity);
  115. }
  116. else
  117. {
  118. if (!long.TryParse(keyValue, out var id))
  119. {
  120. throw BZSysExCore.ThrowFailException("机台id错误!");
  121. }
  122. var mat = _billMachinfoRepository.Count(p => p.MachNo == entity.MachNo && p.Id != id);
  123. if (mat > 0)
  124. {
  125. throw new ArgumentException("机台号已存在");
  126. }
  127. entity.WarehouseId = warehouse.Id;
  128. entity.WarehouseCode = warehouse.Code;
  129. entity.WareAreaId = warearea == null ? 0 : warearea.Id;
  130. entity.EditTime = DateTime.Now;
  131. entity.EditWho = loginUser.UserNo;
  132. //注意更新的列。
  133. _billMachinfoRepository.AsUpdateable(entity).UpdateColumns(it => new { it.Name, it.WarehouseId, it.WarehouseCode, it.WareAreaId, it.EditTime, it.EditWho, it.MachNo, it.WareDirect, it.GrpCode, it.Station, it.Direction, it.MacTypeCode, it.MacTypeName, it.NearestWarehouseName }).IgnoreColumns(it => it.AddTime).IgnoreColumns(it => it.AddWho).IgnoreColumns(ignoreAllNullColumns: true).Where(it => it.Id == id).ExecuteCommand();
  134. }
  135. }
  136. public void Delete(long id)
  137. {
  138. var entity = _billMachinfoRepository.GetSingle(o => o.Id == id);
  139. if (entity == null)
  140. {
  141. throw BZSysExCore.ThrowFailException("机台不存在!");
  142. }
  143. _billMachinfoRepository.Deleteable().Where(it => it.Id == id).ExecuteCommand();
  144. }
  145. public void SaveWareDirect(LoginUserInfo loginUser, SaveWareDirectDto Data)
  146. {
  147. if (Data.Ids != null && Data.Ids.Length == 0)
  148. {
  149. throw BZSysExCore.ThrowFailException("没有选择数据!");
  150. }
  151. if (string.IsNullOrEmpty(Data.WarehouseId))
  152. {
  153. throw BZSysExCore.ThrowFailException("仓库不能为空!");
  154. }
  155. var wearhouse = _baseWarehouseRepository.Queryable().First(o => o.Id.Equals(Data.WarehouseId));
  156. if (wearhouse == null)
  157. {
  158. throw BZSysExCore.ThrowFailException("仓库不存在!");
  159. }
  160. var wareDirect = "N";
  161. if (wearhouse.Name.Contains("南"))
  162. {
  163. wareDirect = "S";
  164. }
  165. var lists = _billMachinfoRepository.Queryable().Where(o => Data.Ids.Contains(o.Id.ToString())).ToList();
  166. if (lists == null || lists.Count == 0)
  167. {
  168. throw BZSysExCore.ThrowFailException("没有机台数据!");
  169. }
  170. lists.ForEach(it =>
  171. {
  172. it.EditTime = DateTime.Now;
  173. it.EditWho = loginUser.UserNo;
  174. it.WarehouseId = wearhouse.Id;
  175. it.WarehouseCode = wearhouse.Code;
  176. it.WareDirect = wareDirect;
  177. });
  178. _billMachinfoRepository.UpdateRange(lists);
  179. }
  180. }
  181. }