using DapperORMCore.Context.DataContext; using DapperORMCore.Model.CoreModel; using DapperORMCore.Repository.IRepositorys; using DapperORMCore.String.Consts; using Microsoft.Extensions.Configuration; using NXWMS.DataAccess.Entity; using NXWMS.IService.NXPDA.InStock; using NXWMS.IService.NXPDA.OutStock; using NXWMS.IService.NXWMS.OutStock; using NXWMS.Model.AppModels.Condition.Balance; using NXWMS.Model.AppModels.Condition.Base; using NXWMS.Model.AppModels.Condition.NXPDA.InStock; using NXWMS.Model.AppModels.Condition.NXPDA.OutStock; using NXWMS.Model.AppModels.Result.Balance; using NXWMS.Model.AppModels.Result.Base; using NXWMS.Model.AppModels.Result.NXPDA.InStock; using NXWMS.Model.AppModels.Result.NXPDA.OutStock; using NXWMS.Model.Common; using NXWMS.Service; using NXWMS.String.Enums; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using WestDistance.DapperORM.Repository.Repositorys; namespace NXWMS.Service.NXPDA.OutStock { /// /// 入库查询接口 /// [AutoInject(typeof(IOutStockSearchService), InjectType.Scope)] public class OutStockSearchService : ServiceBase, IOutStockSearchService { /// /// 系统操作仓储中转 /// private IDataRepositoryContext _dataContext; /// /// SQL节点仓储 /// private ISQLNodeRepository _iSQLNodeRepository; /// /// 配置 /// private IConfiguration _configuration; private IWmsOutInvoiceService _wmsOutInvoiceService; public OutStockSearchService(IDataRepositoryContext dataRepositoryContext, IWmsOutInvoiceService wmsOutInvoiceService, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository) { this._dataContext = dataRepositoryContext; this._configuration = configuration; this._iSQLNodeRepository = iSQLNodeRepository; this._wmsOutInvoiceService = wmsOutInvoiceService; } public OperateResultInfo GetArrivalNoticePalletList(InArrivalNoticePalletCondition info) { if (string.IsNullOrWhiteSpace(info.PalletCode)) { return FailMessageStatus("参数错误", new InArrivalNoticePalletMainResult()); } var results= _wmsOutInvoiceService.QueryInvoiceSortData(new Model.AppModels.Result.OutStock.WmsOutPutDownResult() { PALLET_CODE = info.PalletCode }).Data.ConvertAll((m) => { var result = new InArrivalNoticePalletResult() { MaterielCode = m.MATERIEL_CODE, QTY = m.TRAY_QTY, MaterielName = m.MATERIEL_NAME, }; return result; }); //var sql = $@"SELECT MaterielCode = WMS_OUT_INVOICE_RECORD.MATERIEL_CODE, // MaterielName=WMS_OUT_INVOICE_RECORD.MATERIEL_NAME,QTY=WMS_IN_RECEIPT_RECORD.RECEIPT_QTY, // TwoVessel = BAS_PACKAGE.PACKAGE_NAME // from WMS_OUT_INVOICE_RECORD // JOIN WMS_OUT_INVOICE ON WMS_OUT_INVOICE_RECORD.INVOICE_ID = WMS_OUT_INVOICE.INVOICE_ID // JOIN BAS_PACKAGE ON WMS_OUT_INVOICE_RECORD.PACKAGE_CODE = BAS_PACKAGE.PACKAGE_CODE // JOIN WMS_IN_RECEIPT_RECORD ON WMS_IN_RECEIPT_RECORD.MATERIEL_BARCODE =WMS_OUT_INVOICE_RECORD.MATERIEL_BARCODE // WHERE WMS_OUT_INVOICE.INVOICE_STATUS = 11 // AND WMS_OUT_INVOICE_RECORD.INVOICE_RECORD_STATUS=11 // AND WMS_OUT_INVOICE_RECORD.PALLET_CODE = '{info.PalletCode}'"; //var results = new DataRepository(_dataContext).Query(sql); return SuccessStatus(new InArrivalNoticePalletMainResult { Details = results, //IsEffective = new DataRepository(_dataContext).Query("PALLET_CODE", info.PalletCode). // Where(s => s.USED_FLAG == 1 && s.DEL_FLAG == 0).Any() && // new DataRepository(_dataContext).Query("PALLET_CODE", info.PalletCode). // Where(s => s.INVOICE_RECORD_STATUS == 1).Any() //已确认状态下 }); } public OperateResultInfo GetArrivalNoticeBarCodeInfo(InArrivalNoticeBarCodeCondition info) { if (string.IsNullOrWhiteSpace(info.BarCode)) { return FailMessageStatus("参数错误", new InArrivalNoticeBarCodeResult()); } var sql = $@"SELECT MaterielCode=WMS_OUT_INVOICE_DTL.MATERIEL_CODE, MaterielName = WMS_OUT_INVOICE_DTL.MATERIEL_NAME,SpecsModel = BAS_MATERIEL.SPECS_MODEL, BatchNo = WMS_OUT_INVOICE_DTL.BATCH_NO,ArrivalQTY = WMS_IN_RECEIPT_DTL.ARRIVAL_QTY, ReceiptQTY = WMS_IN_RECEIPT_DTL.RECEIPT_DTL_QTY,TwoVessel = BAS_PACKAGE.PACKAGE_NAME, BinCode = WMS_IN_RECEIPT_RECORD.BIN_CODE,BinName = WMS_IN_RECEIPT_RECORD.BIN_NAME, UnitCode = WMS_IN_RECEIPT_RECORD.UNIT_CODE,UnitName = BAS_UNIT.UNIT_NAME,Remark = WMS_OUT_INVOICE_DTL.DESCRIBE, InvoiceDTLId = WMS_OUT_INVOICE_DTL.INVOICE_DTL_ID from WMS_OUT_INVOICE_DTL JOIN WMS_OUT_INVOICE ON WMS_OUT_INVOICE_DTL.INVOICE_ID = WMS_OUT_INVOICE_DTL.INVOICE_ID JOIN BAS_PACKAGE ON WMS_OUT_INVOICE_DTL.PACKAGE_CODE = BAS_PACKAGE.PACKAGE_CODE JOIN BAS_MATERIEL ON BAS_MATERIEL.MATERIEL_CODE=WMS_OUT_INVOICE_DTL.MATERIEL_CODE JOIN WMS_IN_RECEIPT_RECORD ON WMS_IN_RECEIPT_RECORD.MATERIEL_BARCODE =WMS_OUT_INVOICE_DTL.MATERIEL_BARCODE JOIN WMS_IN_RECEIPT_DTL ON WMS_IN_RECEIPT_DTL.MATERIEL_BARCODE =WMS_OUT_INVOICE_DTL.MATERIEL_BARCODE LEFT JOIN BAS_UNIT ON BAS_UNIT.UNIT_CODE = WMS_OUT_INVOICE_DTL.UNIT_CODE WHERE WMS_OUT_INVOICE.INVOICE_STATUS = 11 AND WMS_OUT_INVOICE_DTL.INVOICE_DTL_STATUS=11 WHERE WMS_OUT_INVOICE_DTL.MATERIEL_BARCODE='{info.BarCode}'"; if (!string.IsNullOrWhiteSpace(info.Statuss)) { sql = sql + " AND WMS_OUT_INVOICE.INVOICE_STATUS in(" + info.Statuss + ")"; } if (!string.IsNullOrWhiteSpace(info.DTLStatuss)) { sql = sql + " AND WMS_OUT_INVOICE_DTL.INVOICE_DTL_STATUS in(" + info.Statuss + ")"; } var results = new DataRepository(_dataContext).Query(sql).FirstOrDefault(); return SuccessStatus(results); } public OperateResultInfo GetPutDownPalletList(InArtificialPutDownCondition info) { if (string.IsNullOrWhiteSpace(info.PalletCode)) { return FailMessageStatus("参数错误", new InArtificialPutDownPalletMainResult()); } var sql = $@"SELECT MaterielCode = WMS_OUT_PUTDOWN_DTL.MATERIEL_CODE, MaterielName=WMS_OUT_PUTDOWN_DTL.MATERIEL_NAME,QTY=WMS_IN_RECEIPT_RECORD.RECEIPT_QTY, TwoVessel = BAS_PACKAGE.PACKAGE_NAME from WMS_OUT_PUTDOWN_DTL JOIN WMS_OUT_PUTDOWN ON WMS_OUT_PUTDOWN_DTL.PUTDOWN_ID = WMS_OUT_PUTDOWN.PUTDOWN_ID JOIN BAS_PACKAGE ON WMS_OUT_PUTDOWN_DTL.PACKAGE_CODE = BAS_PACKAGE.PACKAGE_CODE JOIN WMS_IN_RECEIPT_RECORD ON WMS_IN_RECEIPT_RECORD.MATERIEL_BARCODE =WMS_OUT_PUTDOWN_DTL.MATERIEL_BARCODE WHERE WMS_OUT_PUTDOWN.PUTDOWN_STATUS = 11 AND WMS_OUT_PUTDOWN_DTL.INVOICE_RECORD_STATUS=11 AND WMS_IN_RECEIPT_RECORD.PALLET_CODE = '{info.PalletCode}'"; var results = new DataRepository(_dataContext).Query(sql); return SuccessStatus(new InArtificialPutDownPalletMainResult { Details = results, IsEffective = new DataRepository(_dataContext).Query("PALLET_CODE", info.PalletCode). Where(s => s.USED_FLAG == 1 && s.DEL_FLAG == 0).Any() && new DataRepository(_dataContext).Query("PALLET_CODE", info.PalletCode). Where(s => s.INVOICE_RECORD_STATUS == 1).Any() //已确认状态下 }); } public OperateResultInfo GetPutDownBarCodeInfo(InArtificialPutDownCondition info) { if (string.IsNullOrWhiteSpace(info.MaterielBarCodes)) { return FailMessageStatus("参数错误", new InArtificialPutDownBarCodeResult()); } var sql = $@"SELECT MaterielCode=WMS_OUT_PUTDOWN_DTL.MATERIEL_CODE, MaterielName = WMS_OUT_PUTDOWN_DTL.MATERIEL_NAME,SpecsModel = BAS_MATERIEL.SPECS_MODEL, BatchNo = WMS_OUT_PUTDOWN_DTL.BATCH_NO,ArrivalQTY = WMS_IN_RECEIPT_DTL.ARRIVAL_QTY, ReceiptQTY = WMS_IN_RECEIPT_DTL.RECEIPT_DTL_QTY,TwoVessel = BAS_PACKAGE.PACKAGE_NAME, BinCode = WMS_IN_RECEIPT_RECORD.BIN_CODE,BinName = WMS_IN_RECEIPT_RECORD.BIN_NAME, UnitCode = WMS_IN_RECEIPT_RECORD.UNIT_CODE,UnitName = BAS_UNIT.UNIT_NAME,Remark = WMS_OUT_PUTDOWN_DTL.DESCRIBE, PutDownDTLId = WMS_OUT_PUTDOWN_DTL.PUTDOWN_DTL_ID from WMS_OUT_PUTDOWN_DTL JOIN WMS_OUT_PUTDOWN ON WMS_OUT_PUTDOWN_DTL.PUTDOWN_ID = WMS_OUT_PUTDOWN.PUTDOWN_ID JOIN BAS_PACKAGE ON WMS_OUT_PUTDOWN_DTL.PACKAGE_CODE = BAS_PACKAGE.PACKAGE_CODE JOIN BAS_MATERIEL ON BAS_MATERIEL.MATERIEL_CODE=WMS_OUT_PUTDOWN_DTL.MATERIEL_CODE JOIN WMS_IN_RECEIPT_RECORD ON WMS_IN_RECEIPT_RECORD.MATERIEL_BARCODE =WMS_OUT_PUTDOWN_DTL.MATERIEL_BARCODE JOIN WMS_IN_RECEIPT_DTL ON WMS_IN_RECEIPT_DTL.MATERIEL_BARCODE =WMS_OUT_PUTDOWN_DTL.MATERIEL_BARCODE LEFT JOIN BAS_UNIT ON BAS_UNIT.UNIT_CODE = WMS_OUT_PUTDOWN_DTL.UNIT_CODE WHERE WMS_OUT_PUTDOWN.PUTDOWN_STATUS = 11 AND WMS_OUT_PUTDOWN_DTL.PUTDOWN_DTL_STATUS=11 AND WMS_OUT_PUTDOWN_DTL.MATERIEL_BARCODE ='{info.MaterielBarCodes}'"; if (!string.IsNullOrWhiteSpace(info.Statuss)) { sql = sql + " AND WMS_OUT_PUTDOWN.PUTDOWN_STATUS in(" + info.Statuss + ")"; } if (!string.IsNullOrWhiteSpace(info.DTLStatuss)) { sql = sql + " AND WMS_OUT_PUTDOWN.PUTDOWN_DTL_STATUS in(" + info.DTLStatuss + ")"; } var results = new DataRepository(_dataContext).Query(sql).FirstOrDefault(); return SuccessStatus(results); } } }