OutStockSearchService.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. using DapperORMCore.Context.DataContext;
  2. using DapperORMCore.Model.CoreModel;
  3. using DapperORMCore.Repository.IRepositorys;
  4. using DapperORMCore.String.Consts;
  5. using Microsoft.Extensions.Configuration;
  6. using NXWMS.DataAccess.Entity;
  7. using NXWMS.IService.NXPDA.InStock;
  8. using NXWMS.IService.NXPDA.OutStock;
  9. using NXWMS.IService.NXWMS.OutStock;
  10. using NXWMS.Model.AppModels.Condition.Balance;
  11. using NXWMS.Model.AppModels.Condition.Base;
  12. using NXWMS.Model.AppModels.Condition.NXPDA.InStock;
  13. using NXWMS.Model.AppModels.Condition.NXPDA.OutStock;
  14. using NXWMS.Model.AppModels.Result.Balance;
  15. using NXWMS.Model.AppModels.Result.Base;
  16. using NXWMS.Model.AppModels.Result.NXPDA.InStock;
  17. using NXWMS.Model.AppModels.Result.NXPDA.OutStock;
  18. using NXWMS.Model.Common;
  19. using NXWMS.Service;
  20. using NXWMS.String.Enums;
  21. using System;
  22. using System.Collections.Generic;
  23. using System.Data;
  24. using System.Linq;
  25. using System.Text;
  26. using System.Threading.Tasks;
  27. using WestDistance.DapperORM.Repository.Repositorys;
  28. namespace NXWMS.Service.NXPDA.OutStock
  29. {
  30. /// <summary>
  31. /// 入库查询接口
  32. /// </summary>
  33. [AutoInject(typeof(IOutStockSearchService), InjectType.Scope)]
  34. public class OutStockSearchService : ServiceBase, IOutStockSearchService
  35. {
  36. /// <summary>
  37. /// 系统操作仓储中转
  38. /// </summary>
  39. private IDataRepositoryContext _dataContext;
  40. /// <summary>
  41. /// SQL节点仓储
  42. /// </summary>
  43. private ISQLNodeRepository _iSQLNodeRepository;
  44. /// <summary>
  45. /// 配置
  46. /// </summary>
  47. private IConfiguration _configuration;
  48. private IWmsOutInvoiceService _wmsOutInvoiceService;
  49. public OutStockSearchService(IDataRepositoryContext dataRepositoryContext, IWmsOutInvoiceService wmsOutInvoiceService, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository)
  50. {
  51. this._dataContext = dataRepositoryContext;
  52. this._configuration = configuration;
  53. this._iSQLNodeRepository = iSQLNodeRepository;
  54. this._wmsOutInvoiceService = wmsOutInvoiceService;
  55. }
  56. public OperateResultInfo<InArrivalNoticePalletMainResult> GetArrivalNoticePalletList(InArrivalNoticePalletCondition info)
  57. {
  58. if (string.IsNullOrWhiteSpace(info.PalletCode))
  59. {
  60. return FailMessageStatus("参数错误", new InArrivalNoticePalletMainResult());
  61. }
  62. var results= _wmsOutInvoiceService.QueryInvoiceSortData(new Model.AppModels.Result.OutStock.WmsOutPutDownResult()
  63. {
  64. PALLET_CODE = info.PalletCode
  65. }).Data.ConvertAll((m) => {
  66. var result = new InArrivalNoticePalletResult()
  67. {
  68. MaterielCode = m.MATERIEL_CODE,
  69. QTY = m.TRAY_QTY,
  70. MaterielName = m.MATERIEL_NAME,
  71. };
  72. return result;
  73. });
  74. //var sql = $@"SELECT MaterielCode = WMS_OUT_INVOICE_RECORD.MATERIEL_CODE,
  75. // MaterielName=WMS_OUT_INVOICE_RECORD.MATERIEL_NAME,QTY=WMS_IN_RECEIPT_RECORD.RECEIPT_QTY,
  76. // TwoVessel = BAS_PACKAGE.PACKAGE_NAME
  77. // from WMS_OUT_INVOICE_RECORD
  78. // JOIN WMS_OUT_INVOICE ON WMS_OUT_INVOICE_RECORD.INVOICE_ID = WMS_OUT_INVOICE.INVOICE_ID
  79. // JOIN BAS_PACKAGE ON WMS_OUT_INVOICE_RECORD.PACKAGE_CODE = BAS_PACKAGE.PACKAGE_CODE
  80. // JOIN WMS_IN_RECEIPT_RECORD ON WMS_IN_RECEIPT_RECORD.MATERIEL_BARCODE =WMS_OUT_INVOICE_RECORD.MATERIEL_BARCODE
  81. // WHERE WMS_OUT_INVOICE.INVOICE_STATUS = 11
  82. // AND WMS_OUT_INVOICE_RECORD.INVOICE_RECORD_STATUS=11
  83. // AND WMS_OUT_INVOICE_RECORD.PALLET_CODE = '{info.PalletCode}'";
  84. //var results = new DataRepository<InArrivalNoticePalletResult>(_dataContext).Query(sql);
  85. return SuccessStatus(new InArrivalNoticePalletMainResult
  86. {
  87. Details = results,
  88. //IsEffective = new DataRepository<BAS_PALLET>(_dataContext).Query("PALLET_CODE", info.PalletCode).
  89. // Where(s => s.USED_FLAG == 1 && s.DEL_FLAG == 0).Any() &&
  90. // new DataRepository<WMS_OUT_INVOICE_RECORD>(_dataContext).Query("PALLET_CODE", info.PalletCode).
  91. // Where(s => s.INVOICE_RECORD_STATUS == 1).Any() //已确认状态下
  92. });
  93. }
  94. public OperateResultInfo<InArrivalNoticeBarCodeResult> GetArrivalNoticeBarCodeInfo(InArrivalNoticeBarCodeCondition info)
  95. {
  96. if (string.IsNullOrWhiteSpace(info.BarCode))
  97. {
  98. return FailMessageStatus("参数错误", new InArrivalNoticeBarCodeResult());
  99. }
  100. var sql = $@"SELECT MaterielCode=WMS_OUT_INVOICE_DTL.MATERIEL_CODE,
  101. MaterielName = WMS_OUT_INVOICE_DTL.MATERIEL_NAME,SpecsModel = BAS_MATERIEL.SPECS_MODEL,
  102. BatchNo = WMS_OUT_INVOICE_DTL.BATCH_NO,ArrivalQTY = WMS_IN_RECEIPT_DTL.ARRIVAL_QTY,
  103. ReceiptQTY = WMS_IN_RECEIPT_DTL.RECEIPT_DTL_QTY,TwoVessel = BAS_PACKAGE.PACKAGE_NAME,
  104. BinCode = WMS_IN_RECEIPT_RECORD.BIN_CODE,BinName = WMS_IN_RECEIPT_RECORD.BIN_NAME,
  105. UnitCode = WMS_IN_RECEIPT_RECORD.UNIT_CODE,UnitName = BAS_UNIT.UNIT_NAME,Remark = WMS_OUT_INVOICE_DTL.DESCRIBE,
  106. InvoiceDTLId = WMS_OUT_INVOICE_DTL.INVOICE_DTL_ID
  107. from WMS_OUT_INVOICE_DTL
  108. JOIN WMS_OUT_INVOICE ON WMS_OUT_INVOICE_DTL.INVOICE_ID = WMS_OUT_INVOICE_DTL.INVOICE_ID
  109. JOIN BAS_PACKAGE ON WMS_OUT_INVOICE_DTL.PACKAGE_CODE = BAS_PACKAGE.PACKAGE_CODE
  110. JOIN BAS_MATERIEL ON BAS_MATERIEL.MATERIEL_CODE=WMS_OUT_INVOICE_DTL.MATERIEL_CODE
  111. JOIN WMS_IN_RECEIPT_RECORD ON WMS_IN_RECEIPT_RECORD.MATERIEL_BARCODE =WMS_OUT_INVOICE_DTL.MATERIEL_BARCODE
  112. JOIN WMS_IN_RECEIPT_DTL ON WMS_IN_RECEIPT_DTL.MATERIEL_BARCODE =WMS_OUT_INVOICE_DTL.MATERIEL_BARCODE
  113. LEFT JOIN BAS_UNIT ON BAS_UNIT.UNIT_CODE = WMS_OUT_INVOICE_DTL.UNIT_CODE
  114. WHERE WMS_OUT_INVOICE.INVOICE_STATUS = 11
  115. AND WMS_OUT_INVOICE_DTL.INVOICE_DTL_STATUS=11
  116. WHERE WMS_OUT_INVOICE_DTL.MATERIEL_BARCODE='{info.BarCode}'";
  117. if (!string.IsNullOrWhiteSpace(info.Statuss))
  118. {
  119. sql = sql + " AND WMS_OUT_INVOICE.INVOICE_STATUS in(" + info.Statuss + ")";
  120. }
  121. if (!string.IsNullOrWhiteSpace(info.DTLStatuss))
  122. {
  123. sql = sql + " AND WMS_OUT_INVOICE_DTL.INVOICE_DTL_STATUS in(" + info.Statuss + ")";
  124. }
  125. var results = new DataRepository<InArrivalNoticeBarCodeResult>(_dataContext).Query(sql).FirstOrDefault();
  126. return SuccessStatus(results);
  127. }
  128. public OperateResultInfo<InArtificialPutDownPalletMainResult> GetPutDownPalletList(InArtificialPutDownCondition info)
  129. {
  130. if (string.IsNullOrWhiteSpace(info.PalletCode))
  131. {
  132. return FailMessageStatus("参数错误", new InArtificialPutDownPalletMainResult());
  133. }
  134. var sql = $@"SELECT MaterielCode = WMS_OUT_PUTDOWN_DTL.MATERIEL_CODE,
  135. MaterielName=WMS_OUT_PUTDOWN_DTL.MATERIEL_NAME,QTY=WMS_IN_RECEIPT_RECORD.RECEIPT_QTY,
  136. TwoVessel = BAS_PACKAGE.PACKAGE_NAME
  137. from WMS_OUT_PUTDOWN_DTL
  138. JOIN WMS_OUT_PUTDOWN ON WMS_OUT_PUTDOWN_DTL.PUTDOWN_ID = WMS_OUT_PUTDOWN.PUTDOWN_ID
  139. JOIN BAS_PACKAGE ON WMS_OUT_PUTDOWN_DTL.PACKAGE_CODE = BAS_PACKAGE.PACKAGE_CODE
  140. JOIN WMS_IN_RECEIPT_RECORD ON WMS_IN_RECEIPT_RECORD.MATERIEL_BARCODE =WMS_OUT_PUTDOWN_DTL.MATERIEL_BARCODE
  141. WHERE WMS_OUT_PUTDOWN.PUTDOWN_STATUS = 11
  142. AND WMS_OUT_PUTDOWN_DTL.INVOICE_RECORD_STATUS=11
  143. AND WMS_IN_RECEIPT_RECORD.PALLET_CODE = '{info.PalletCode}'";
  144. var results = new DataRepository<InArtificialPutDownPalletResult>(_dataContext).Query(sql);
  145. return SuccessStatus(new InArtificialPutDownPalletMainResult
  146. {
  147. Details = results,
  148. IsEffective = new DataRepository<BAS_PALLET>(_dataContext).Query("PALLET_CODE", info.PalletCode).
  149. Where(s => s.USED_FLAG == 1 && s.DEL_FLAG == 0).Any() &&
  150. new DataRepository<WMS_OUT_INVOICE_RECORD>(_dataContext).Query("PALLET_CODE", info.PalletCode).
  151. Where(s => s.INVOICE_RECORD_STATUS == 1).Any() //已确认状态下
  152. });
  153. }
  154. public OperateResultInfo<InArtificialPutDownBarCodeResult> GetPutDownBarCodeInfo(InArtificialPutDownCondition info)
  155. {
  156. if (string.IsNullOrWhiteSpace(info.MaterielBarCodes))
  157. {
  158. return FailMessageStatus("参数错误", new InArtificialPutDownBarCodeResult());
  159. }
  160. var sql = $@"SELECT MaterielCode=WMS_OUT_PUTDOWN_DTL.MATERIEL_CODE,
  161. MaterielName = WMS_OUT_PUTDOWN_DTL.MATERIEL_NAME,SpecsModel = BAS_MATERIEL.SPECS_MODEL,
  162. BatchNo = WMS_OUT_PUTDOWN_DTL.BATCH_NO,ArrivalQTY = WMS_IN_RECEIPT_DTL.ARRIVAL_QTY,
  163. ReceiptQTY = WMS_IN_RECEIPT_DTL.RECEIPT_DTL_QTY,TwoVessel = BAS_PACKAGE.PACKAGE_NAME,
  164. BinCode = WMS_IN_RECEIPT_RECORD.BIN_CODE,BinName = WMS_IN_RECEIPT_RECORD.BIN_NAME,
  165. UnitCode = WMS_IN_RECEIPT_RECORD.UNIT_CODE,UnitName = BAS_UNIT.UNIT_NAME,Remark = WMS_OUT_PUTDOWN_DTL.DESCRIBE,
  166. PutDownDTLId = WMS_OUT_PUTDOWN_DTL.PUTDOWN_DTL_ID
  167. from WMS_OUT_PUTDOWN_DTL
  168. JOIN WMS_OUT_PUTDOWN ON WMS_OUT_PUTDOWN_DTL.PUTDOWN_ID = WMS_OUT_PUTDOWN.PUTDOWN_ID
  169. JOIN BAS_PACKAGE ON WMS_OUT_PUTDOWN_DTL.PACKAGE_CODE = BAS_PACKAGE.PACKAGE_CODE
  170. JOIN BAS_MATERIEL ON BAS_MATERIEL.MATERIEL_CODE=WMS_OUT_PUTDOWN_DTL.MATERIEL_CODE
  171. JOIN WMS_IN_RECEIPT_RECORD ON WMS_IN_RECEIPT_RECORD.MATERIEL_BARCODE =WMS_OUT_PUTDOWN_DTL.MATERIEL_BARCODE
  172. JOIN WMS_IN_RECEIPT_DTL ON WMS_IN_RECEIPT_DTL.MATERIEL_BARCODE =WMS_OUT_PUTDOWN_DTL.MATERIEL_BARCODE
  173. LEFT JOIN BAS_UNIT ON BAS_UNIT.UNIT_CODE = WMS_OUT_PUTDOWN_DTL.UNIT_CODE
  174. WHERE WMS_OUT_PUTDOWN.PUTDOWN_STATUS = 11
  175. AND WMS_OUT_PUTDOWN_DTL.PUTDOWN_DTL_STATUS=11
  176. AND WMS_OUT_PUTDOWN_DTL.MATERIEL_BARCODE ='{info.MaterielBarCodes}'";
  177. if (!string.IsNullOrWhiteSpace(info.Statuss))
  178. {
  179. sql = sql + " AND WMS_OUT_PUTDOWN.PUTDOWN_STATUS in(" + info.Statuss + ")";
  180. }
  181. if (!string.IsNullOrWhiteSpace(info.DTLStatuss))
  182. {
  183. sql = sql + " AND WMS_OUT_PUTDOWN.PUTDOWN_DTL_STATUS in(" + info.DTLStatuss + ")";
  184. }
  185. var results = new DataRepository<InArtificialPutDownBarCodeResult>(_dataContext).Query(sql).FirstOrDefault();
  186. return SuccessStatus(results);
  187. }
  188. }
  189. }