BillRingpalletizinginfoService.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. using SqlSugar;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using wms.sqlsugar.model.fj;
  8. using WMS.BZModels.Dto.FJ.WCSPalletizingDtos;
  9. using WMS.BZModels;
  10. using WMS.BZSqlSugar;
  11. using WMS.Info;
  12. using WMS.BZModels.Dto.FJ.BillRingpalletizinginfoDtos;
  13. using Org.BouncyCastle.Crypto;
  14. namespace WMS.BZServices.FJ
  15. {
  16. public class BillRingpalletizinginfoService
  17. {
  18. private readonly Repository<BillRingpalletizinginfo> _billRingpalletizinginfoRepository;
  19. private readonly Repository<BillBomsetgrp> _billBomsetgrpRepository;
  20. private readonly Repository<BaseWarehouse> _wareHouserepository;
  21. public BillRingpalletizinginfoService(Repository<BillRingpalletizinginfo> billRingpalletizinginfoRepository, Repository<BillBomsetgrp> billBomsetgrpRepository, Repository<BaseWarehouse> wareHouserepository)
  22. {
  23. _billRingpalletizinginfoRepository = billRingpalletizinginfoRepository;
  24. _billBomsetgrpRepository = billBomsetgrpRepository;
  25. _wareHouserepository = wareHouserepository;
  26. }
  27. public PagedInfo<BillRingpalletizinginfoDto> GetPageList(Pagination pagination, BillRingpalletizinginfoQueryDto wcsPalletizingQueryDto)
  28. {
  29. var predicate = Expressionable.Create<BillRingpalletizinginfo, BillBomsetgrp>();
  30. predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.KeyWord), (Ringpalletizing, Bomsetgrp) => Ringpalletizing.BomCode.ToString().Contains(wcsPalletizingQueryDto.KeyWord) || Bomsetgrp.Name.Contains(wcsPalletizingQueryDto.KeyWord));
  31. predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.WareHouseId), (Ringpalletizing, Bomsetgrp) => Ringpalletizing.WareHouseId.Equals(wcsPalletizingQueryDto.WareHouseId));
  32. predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.BomSetGrpName), (Ringpalletizing, Bomsetgrp) => Bomsetgrp.Name.Equals(wcsPalletizingQueryDto.BomSetGrpName) || Bomsetgrp.Code.Equals(wcsPalletizingQueryDto.BomSetGrpName));
  33. predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.BomCode), (Ringpalletizing, Bomsetgrp) => Ringpalletizing.BomCode.Contains(wcsPalletizingQueryDto.BomCode));
  34. predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.Id), (Ringpalletizing, Bomsetgrp) => Ringpalletizing.Id.ToString().Contains(wcsPalletizingQueryDto.Id));
  35. predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.Out), (Ringpalletizing, Bomsetgrp) => Ringpalletizing.Out.Equals(wcsPalletizingQueryDto.Out));
  36. predicate = predicate.AndIF(wcsPalletizingQueryDto != null && wcsPalletizingQueryDto.AddTimeFrom.HasValue, (Ringpalletizing, Bomsetgrp) => Ringpalletizing.AddTime >= wcsPalletizingQueryDto.AddTimeFrom);
  37. predicate = predicate.AndIF(wcsPalletizingQueryDto != null && wcsPalletizingQueryDto.AddTimeTo.HasValue, (Ringpalletizing, Bomsetgrp) => Ringpalletizing.AddTime <= wcsPalletizingQueryDto.AddTimeTo);
  38. var list = _billRingpalletizinginfoRepository.Context.Queryable<BillRingpalletizinginfo, BillBomsetgrp>((Ringpalletizing, Bomsetgrp) => new object[] { JoinType.Left, Ringpalletizing.BomSetGrpId == Bomsetgrp.Id }).Where(predicate.ToExpression())
  39. .Select((Ringpalletizing, Bomsetgrp) => new BillRingpalletizinginfoDto
  40. {
  41. Id = Ringpalletizing.Id.ToString(),
  42. WareHouseId = Ringpalletizing.WareHouseId.ToString(),
  43. BomSetGrpId = Ringpalletizing.BomSetGrpId.ToString(),
  44. BomSetGrpName = Bomsetgrp.Name,
  45. BomSetGrpCode = Bomsetgrp.Code,
  46. HWCountQty = Ringpalletizing.HWCountQty,
  47. BomCode = Ringpalletizing.BomCode,
  48. HaveQty = Ringpalletizing.HaveQty,
  49. Out = Ringpalletizing.Out,
  50. Memo = Ringpalletizing.Memo,
  51. AddWho = Ringpalletizing.AddWho,
  52. EditWho = Ringpalletizing.EditWho,
  53. AddTime = Ringpalletizing.AddTime,
  54. EditTime = Ringpalletizing.EditTime,
  55. LastXYNO = Ringpalletizing.LastXYNO,
  56. }).MergeTable()
  57. .ToPage(pagination);
  58. var wareHouses = _wareHouserepository.Queryable().Where(o => o.IsStop == 0).ToList();
  59. list.Result.ForEach(o =>
  60. {
  61. o.WarehouseName = wareHouses.FirstOrDefault(v => o.WareHouseId == v.Id.ToString())?.Name ?? "";
  62. });
  63. return list;
  64. }
  65. public bool UpdateOut(List<string> ids, string outstatus, string userId)
  66. {
  67. var list = _billRingpalletizinginfoRepository.Queryable().Where(o => ids.Contains(o.Id.ToString())).ToList();
  68. if (!list.Any())
  69. {
  70. throw new ArgumentException("没有找到该码垛数据!");
  71. }
  72. bool status = Convert.ToBoolean(Convert.ToInt32(outstatus));
  73. list.ForEach(o =>
  74. {
  75. o.Out = status;
  76. o.EditWho = userId;
  77. o.EditTime = DateTime.Now;
  78. o.Memo = o.Memo + "手动,";
  79. });
  80. var result = _billRingpalletizinginfoRepository.UpdateRange(list.ToArray());
  81. return result;
  82. }
  83. public bool UpdateHaveQty(LoginUserInfo loginUser, long keyValue, BillRingpalletizinginfo entity)
  84. {
  85. var first = _billRingpalletizinginfoRepository.Queryable().First(o => o.Id.Equals(keyValue));
  86. if (first == null)
  87. {
  88. throw new ArgumentException("没有找到该码垛数据!");
  89. }
  90. first.HaveQty = entity.HaveQty;
  91. first.LastXYNO = entity.LastXYNO;
  92. first.EditTime = DateTime.Now;
  93. first.EditWho = loginUser.UserNo;
  94. var result = _billRingpalletizinginfoRepository.UpdateEntity(first);
  95. return result;
  96. }
  97. public bool UpdateOvertimeOut(List<string> ids, string userId)
  98. {
  99. var list = _billRingpalletizinginfoRepository.Queryable().Where(o => ids.Contains(o.Id.ToString())).ToList();
  100. if (!list.Any())
  101. {
  102. throw new ArgumentException("没有找到该码垛数据!");
  103. }
  104. list.ForEach(o =>
  105. {
  106. o.AddTime = o.AddTime.AddHours(-72);
  107. o.EditWho = userId;
  108. o.EditTime = DateTime.Now;
  109. o.Memo = o.Memo + "手动超时,";
  110. });
  111. var result = _billRingpalletizinginfoRepository.UpdateRange(list.ToArray());
  112. return result;
  113. }
  114. }
  115. }