123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302 |
- using Microsoft.Extensions.Logging;
- using NXWMS.DataAccess.Entity;
- using NXWMS.Model.AppModels.Result.ERP;
- using NXWMS.Model.AppModels.Result.Instock;
- using NXWMS.Model.Common;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- namespace NXWMS.Service.ERP
- {
- [AutoInject(typeof(IService.NXWMS.IERPServer), InjectType.Scope)]
- public class ERPServer : IService.NXWMS.IERPServer
- {
- private ErpHttpClient _client;
- public ERPServer(ErpHttpClient httpClient)
- {
- this._client = httpClient;
- }
- #region 基础信息
- public async Task<IEnumerable<BAS_CUSTOMER>> GetERPCustomersAsync()
- {
- const string Url = "/api/Customer/Query";
- var list = await this._client.HttpPostAsync<List<NX.ERP.Model.Customer>>(Url, new NX.ERP.Model.Request.Customer());
- return list.ConvertAll(m =>
- {
- return new BAS_CUSTOMER()
- {
- CUSTOMER_CODE = m.CustomerCode,
- CUSTOMER_NAME = m.CustomerName,
- CONTRACT = m.Contract,
- CONTRACT_PHONE = m.ContractPhone,
- ADDRESS = m.Address,
- USED_FLAG = 1,
- DEL_FLAG = 0
- };
- });
- }
- public async Task<IEnumerable<BAS_BIN>> GetERPERPpBinsAsync()
- {
- const string Url = "/api/Position/Query";
- var list = await this._client.HttpPostAsync<List<NX.ERP.Model.Bin>>(Url, new NX.ERP.Model.Request.Bin());
- return list.ConvertAll(m =>
- {
- return new BAS_BIN()
- {
- BIN_CODE = m.BinCode,
- BIN_NAME = m.BinName,
- WAREHOUSE_CODE = m.WarehouseCode,
- REGION_CODE = m.RegionCode,
- AREA_CODE = "0",
- SHELF_CODE = "-1",
- USED_FLAG = 1,
- DEL_FLAG = 0
- };
- });
- }
- public async Task<IEnumerable<BAS_MATERIEL>> GetERPMaterielsAsync()
- {
- const string Url = "/api/Material/Query";
- var list = await this._client.HttpPostAsync<List<NX.ERP.Model.Material>>(Url, new NX.ERP.Model.Request.Material());
- return list.ConvertAll(m =>
- {
- return new BAS_MATERIEL()
- {
- MATERIEL_CODE = m.MaterialCode,
- MATERIEL_NAME = m.MaterialName,
- MAX_STOCK = m.MaxStock,
- MIN_STOCK = m.MinStock,
- UNIT_CODE = m.UnitCode,
- MATERIEL_TYPE = m.MaterialTypeCode,
- SPECS_MODEL=m.SpecsModel,
- USED_FLAG = 1,
- DEL_FLAG = 0
- };
- });
- }
- public async Task<IEnumerable<BAS_MATERIEL_TYPE>> GetERPMaterielTypesAsync()
- {
- const string Url = "/api/MaterialType/Query";
- var list = await this._client.HttpPostAsync<List<NX.ERP.Model.MaterialType>>(Url, new NX.ERP.Model.Request.MaterialType());
- return list.ConvertAll(m =>
- {
- return new BAS_MATERIEL_TYPE()
- {
- MATERIEL_TYPE_CODE = m.MaterialTypeCode,
- MATERIEL_TYPE_NAME = m.MaterialTypeName,
- USED_FLAG = 1,
- DEL_FLAG = 0
- };
- });
- }
- public async Task<IEnumerable<BAS_SUPPLIER>> GetERPSuppliersAsync()
- {
- const string Url = "/api/Supplier/Query";
- var list = await this._client.HttpPostAsync<List<NX.ERP.Model.Supplier>>(Url, new NX.ERP.Model.Request.Supplier());
- return list.ConvertAll(m =>
- {
- return new BAS_SUPPLIER()
- {
- SUPPLIER_CODE = m.SupplierCode,
- SUPPLIER_NAME = m.SupplierName,
- CONTRACT = m.Contract,
- CONTRACT_PHONE = m.ContractPhone,
- USED_FLAG = 1,
- DEL_FLAG = 0
- };
- });
- }
- public async Task<IEnumerable<BAS_UNIT>> GetERPUnitsAsync()
- {
- const string Url = "/api/Unit/Query";
- var list = await this._client.HttpPostAsync<List<NX.ERP.Model.Unit>>(Url, new NX.ERP.Model.Request.Unit());
- return list.ConvertAll(m =>
- {
- return new BAS_UNIT()
- {
- UNIT_CODE = m.UnitCode,
- UNIT_NAME = m.UnitName,
- USED_FLAG = 1,
- DEL_FLAG = 0
- };
- });
- }
- public async Task<IEnumerable<BAS_WAREHOUSE>> GetERPWareHousesAsync()
- {
- const string Url = "/api/WareHouse/Query";
- var list = await this._client.HttpPostAsync<List<NX.ERP.Model.Warehouse>>(Url, new NX.ERP.Model.Request.Warehouse());
- return list.ConvertAll(m =>
- {
- return new BAS_WAREHOUSE()
- {
- WAREHOUSE_CODE = m.WarehouseCode,
- WAREHOUSE_NAME = m.WarehouseName,
- USED_FLAG = 1,
- DEL_FLAG = 0
- };
- });
- }
- #endregion
- #region 上游单据
- public async Task<IEnumerable<(WMS_IN_ARRIVAL, IEnumerable<WMS_IN_ARRIVAL_DTL>)>> GetArrival(string Code = null)
- {
- const string Url = "/api/Arrival/Query";
- var list = await this._client.HttpPostAsync<List<NX.ERP.Model.Purchase.Arrival>>(Url, new NX.ERP.Model.Request.Arrival() { ArrivalNo = Code });
- var result = new List<(WMS_IN_ARRIVAL, IEnumerable<WMS_IN_ARRIVAL_DTL>)>();
- foreach (var item in list)
- {
- var arr = new WMS_IN_ARRIVAL()
- {
- ARRIVAL_NO = item.ArrivalNo,
- ARRIVAL_TYPE = "1",
- ARRIVAL_STATUS = 0,
- ERP_ID = item.ArrivalNo,
- };
- var detail = item.ArrivalDtlLst.ToList().ConvertAll(m =>
- {
- return new WMS_IN_ARRIVAL_DTL()
- {
- MATERIEL_CODE = m.MaterialCode,
- BATCH_NO = m.BatchNo,
- ARRIVAL_QTY = m.Qty,
- SUPPLIER_CODE = item.SupplierCode,
- RECEIPT_QTY = m.RealQuantity,
- ERP_DTL_ID = m.ArrivalDtlId
- };
- });
- result.Add((arr, detail));
- }
- return result;
- }
- public async Task<IDictionary<WMS_OUT_INVOICE, IEnumerable<WMS_OUT_INVOICE_DTL>>> GetOutInvoice()
- {
- const string Url = "/api/ProductOrder/QueryDetails";
- var list = await this._client.HttpPostAsync<List<NX.ERP.Model.MOM.MomDetail>>(Url, new NX.ERP.Model.Request.MomOrder());
- var result = new Dictionary<WMS_OUT_INVOICE, IEnumerable<WMS_OUT_INVOICE_DTL>>();
- foreach (var item in list)
- {
- var arr = new WMS_OUT_INVOICE()
- {
- INVOICE_NO = item.ProductOrderNo,
- INVOICE_TYPE = "2",
- INVOICE_STATUS = 0,
- DATA_VERSION = 0,
- ERP_ID = item.ProductOrderNo,
- };
- var detail = item.ProductAllocateOrderLst.ToList().ConvertAll(m =>
- {
- return new WMS_OUT_INVOICE_DTL()
- {
- MATERIEL_CODE = m.MaterialCode,
- INVOICE_DEMAND_QTY = m.Qty,
- INVOICE_DTL_STATUS = 0,
- INSPECTION_RESULT = "OK",
- ERP_DTL_ID = m.AllocateId,
- };
- });
- result.Add(arr, detail);
- }
- return result;
- }
- #endregion
- #region 出库
- #endregion
- #region 入库
- public string MaterialStoreOut(NX.ERP.Model.Request.MaterialStoreOut materialStore)
- {
- return "";
- }
- public async Task<int> PuStockIn(Inbound inbound)
- {
- var _inbound = new NX.ERP.BLL.Model.Inbound()
- {
- InboundDate = inbound.InboundDate,
- InboundNo = inbound.InboundNo,
- InboundType = NX.ERP.BLL.Model.InboundType.PurchaseIn,
- SourceName = inbound.SourceName,
- SourceNo = inbound.SourceNo,
- WarehouseCode = inbound.WarehouseCode,
- InboundDtlLst = inbound.InboundDetail.ToList().ConvertAll(m =>
- {
- return new NX.ERP.BLL.Model.InboundDetail()
- {
- BinCode = m.BinCode,
- MaterialCode = m.MaterialCode,
- Qty = m.Qty,
- SourceDtlId = m.SourceDtlId
- };
- })
- };
- const string Url = "/api/Store/StoreIn";
- var list = await this._client.HttpPostAsync<NX.ERP.BLL.Model.StoreResult>(Url, _inbound);
- return list.ID;
- }
- //public Task<string> PuStockIn(WmsInReceiptResult wmsInReceipt)
- //{
- //var _storeIn = new NX.ERP.BLL.Model.Inbound();
- //_storeIn.InboundNo = wmsInReceipt.RECEIPT_NO;
- //_storeIn.InboundDate = wmsInReceipt.RECEIPT_TIME;
- //_storeIn.InboundType =NX.ERP.BLL.Model.InboundType.productIn;
- //_storeIn.SourceName = "采购到货单";
- //_storeIn.WarehouseCode = "2";
- //_storeIn.SourceNo = wmsInReceipt.ARRIVAL_NO;
- //_storeIn.InboundDtlLst = wmsInReceipt.WmsInReceiptDtlList.ConvertAll(m => {
- // return new NX.ERP.BLL.Model.InboundDetail
- // {
- // BinCode=m.b
- // };
- //});
- //}
- #endregion
- }
- }
|