AdoS0BarcodeRulesController.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using Admin.NET.Plugin.AiDOP.Dto.S0.Warehouse;
  2. using Admin.NET.Plugin.AiDOP.Entity.S0.Supply;
  3. using Admin.NET.Plugin.AiDOP.Entity.S0.Warehouse;
  4. using Admin.NET.Plugin.AiDOP.Infrastructure;
  5. namespace Admin.NET.Plugin.AiDOP.Controllers.S0.Warehouse;
  6. /// <summary>
  7. /// S0 条码规则主数据(BarCodeNbr 语义)
  8. /// </summary>
  9. [ApiController]
  10. [Route("api/s0/warehouse/barcode-rules")]
  11. [AllowAnonymous]
  12. [NonUnify]
  13. public class AdoS0BarcodeRulesController : ControllerBase
  14. {
  15. private readonly SqlSugarRepository<AdoS0BarCodeNbr> _rep;
  16. private readonly SqlSugarRepository<AdoS0SuppMaster> _suppRep;
  17. public AdoS0BarcodeRulesController(
  18. SqlSugarRepository<AdoS0BarCodeNbr> rep,
  19. SqlSugarRepository<AdoS0SuppMaster> suppRep)
  20. {
  21. _rep = rep;
  22. _suppRep = suppRep;
  23. }
  24. [HttpGet]
  25. public async Task<IActionResult> GetPagedAsync([FromQuery] AdoS0BarcodeRuleQueryDto q)
  26. {
  27. (q.Page, q.PageSize) = PagingGuard.Normalize(q.Page, q.PageSize);
  28. var query = _rep.AsQueryable()
  29. .WhereIF(q.CompanyRefId.HasValue, x => x.CompanyRefId == q.CompanyRefId!.Value)
  30. .WhereIF(q.FactoryRefId.HasValue, x => x.FactoryRefId == q.FactoryRefId!.Value)
  31. .WhereIF(!string.IsNullOrWhiteSpace(q.DomainCode), x => x.DomainCode == q.DomainCode)
  32. .WhereIF(!string.IsNullOrWhiteSpace(q.Customer), x => x.Customer != null && x.Customer.Contains(q.Customer!))
  33. .WhereIF(!string.IsNullOrWhiteSpace(q.Type), x => x.Type != null && x.Type.Contains(q.Type!))
  34. .WhereIF(!string.IsNullOrWhiteSpace(q.Keyword),
  35. x => (x.Customer != null && x.Customer.Contains(q.Keyword!)) || (x.Type != null && x.Type.Contains(q.Keyword!)));
  36. var total = await query.CountAsync();
  37. var list = await query
  38. .OrderByDescending(x => x.CreateTime)
  39. .Skip((q.Page - 1) * q.PageSize)
  40. .Take(q.PageSize)
  41. .ToListAsync();
  42. await ApplySuppNameAsync(list);
  43. return Ok(new { total, page = q.Page, pageSize = q.PageSize, list });
  44. }
  45. [HttpGet("{id:long}")]
  46. public async Task<IActionResult> GetAsync(long id)
  47. {
  48. var item = await _rep.GetByIdAsync(id);
  49. if (item == null) return NotFound();
  50. await ApplySuppNameAsync(new List<AdoS0BarCodeNbr> { item });
  51. return Ok(item);
  52. }
  53. [HttpPost]
  54. public async Task<IActionResult> CreateAsync([FromBody] AdoS0BarcodeRuleUpsertDto dto)
  55. {
  56. var entity = MapToEntity(dto);
  57. entity.CreateTime = DateTime.Now;
  58. await _rep.AsInsertable(entity).ExecuteReturnEntityAsync();
  59. return Ok(entity);
  60. }
  61. [HttpPut("{id:long}")]
  62. public async Task<IActionResult> UpdateAsync(long id, [FromBody] AdoS0BarcodeRuleUpsertDto dto)
  63. {
  64. var entity = await _rep.GetByIdAsync(id);
  65. if (entity == null) return NotFound();
  66. entity.CompanyRefId = dto.CompanyRefId;
  67. entity.FactoryRefId = dto.FactoryRefId;
  68. entity.DomainCode = dto.DomainCode ?? string.Empty;
  69. entity.Customer = dto.Customer;
  70. entity.Type = dto.Type;
  71. entity.WaterRules = dto.WaterRules;
  72. entity.WaterLen = dto.WaterLen;
  73. entity.Separator = dto.Separator;
  74. entity.FirmLength = dto.FirmLength;
  75. CopyFirmStrings(dto, entity);
  76. entity.UpdateUser = dto.UpdateUser;
  77. entity.UpdateTime = DateTime.Now;
  78. await _rep.AsUpdateable(entity).ExecuteCommandAsync();
  79. return Ok(entity);
  80. }
  81. [HttpDelete("{id:long}")]
  82. public async Task<IActionResult> DeleteAsync(long id)
  83. {
  84. var item = await _rep.GetByIdAsync(id);
  85. if (item == null) return NotFound();
  86. await _rep.DeleteAsync(item);
  87. return Ok(new { message = "删除成功" });
  88. }
  89. private static AdoS0BarCodeNbr MapToEntity(AdoS0BarcodeRuleUpsertDto dto)
  90. {
  91. var e = new AdoS0BarCodeNbr
  92. {
  93. CompanyRefId = dto.CompanyRefId,
  94. FactoryRefId = dto.FactoryRefId,
  95. DomainCode = dto.DomainCode ?? string.Empty,
  96. Customer = dto.Customer,
  97. Type = dto.Type,
  98. WaterRules = dto.WaterRules,
  99. WaterLen = dto.WaterLen,
  100. Separator = dto.Separator,
  101. FirmLength = dto.FirmLength,
  102. CreateUser = dto.CreateUser
  103. };
  104. CopyFirmStrings(dto, e);
  105. return e;
  106. }
  107. private static void CopyFirmStrings(AdoS0BarcodeRuleUpsertDto dto, AdoS0BarCodeNbr e)
  108. {
  109. e.FirmString1 = dto.FirmString1; e.FirmStringLen1 = dto.FirmStringLen1; e.FirmString1Note = dto.FirmString1Note;
  110. e.FirmString2 = dto.FirmString2; e.FirmStringLen2 = dto.FirmStringLen2; e.FirmString2Note = dto.FirmString2Note;
  111. e.FirmString3 = dto.FirmString3; e.FirmStringLen3 = dto.FirmStringLen3; e.FirmString3Note = dto.FirmString3Note;
  112. e.FirmString4 = dto.FirmString4; e.FirmStringLen4 = dto.FirmStringLen4; e.FirmString4Note = dto.FirmString4Note;
  113. e.FirmString5 = dto.FirmString5; e.FirmStringLen5 = dto.FirmStringLen5; e.FirmString5Note = dto.FirmString5Note;
  114. e.FirmString6 = dto.FirmString6; e.FirmStringLen6 = dto.FirmStringLen6; e.FirmString6Note = dto.FirmString6Note;
  115. e.FirmString7 = dto.FirmString7; e.FirmStringLen7 = dto.FirmStringLen7; e.FirmString7Note = dto.FirmString7Note;
  116. e.FirmString8 = dto.FirmString8; e.FirmStringLen8 = dto.FirmStringLen8; e.FirmString8Note = dto.FirmString8Note;
  117. e.FirmString9 = dto.FirmString9; e.FirmStringLen9 = dto.FirmStringLen9; e.FirmString9Note = dto.FirmString9Note;
  118. e.FirmString10 = dto.FirmString10; e.FirmStringLen10 = dto.FirmStringLen10; e.FirmString10Note = dto.FirmString10Note;
  119. e.FirmString11 = dto.FirmString11; e.FirmStringLen11 = dto.FirmStringLen11; e.FirmString11Note = dto.FirmString11Note;
  120. e.FirmString12 = dto.FirmString12; e.FirmStringLen12 = dto.FirmStringLen12; e.FirmString12Note = dto.FirmString12Note;
  121. }
  122. private async Task ApplySuppNameAsync(List<AdoS0BarCodeNbr> rules)
  123. {
  124. if (rules.Count == 0) return;
  125. var customerCodes = rules
  126. .Select(r => r.Customer)
  127. .Where(c => !string.IsNullOrWhiteSpace(c))
  128. .Distinct()
  129. .ToList();
  130. if (customerCodes.Count == 0) return;
  131. var supps = await _suppRep.AsQueryable()
  132. .Where(s => customerCodes.Contains(s.Supp))
  133. .ToListAsync();
  134. foreach (var rule in rules)
  135. {
  136. if (string.IsNullOrWhiteSpace(rule.Customer)) continue;
  137. var supp = supps.Find(s => string.Equals(s.Supp, rule.Customer, StringComparison.OrdinalIgnoreCase));
  138. rule.SuppName = supp?.SortName;
  139. }
  140. }
  141. }