using ERP; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore.Storage; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using System.Threading; using System.Threading.Tasks; using WMS.Web.Core.Dto; using WMS.Web.Core.Dto.Erp.Customer; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Entitys; using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.IService; using WMS.Web.Domain.IService.Public; using Microsoft.Extensions.Hosting; using WMS.Web.Domain.Options; using Microsoft.Extensions.Options; using WMS.Web.Domain.Values; namespace WMS.Web.Api.Controllers { [Route("api/[controller]")] [ApiController] public class TestController : ControllerBase { private readonly IErpService _erpService; private IInStockTaskService _inStockTaskService; private readonly IBasicsRepositories _basicsRepositories; private IBasicsRepositories _transactionRepositories; private readonly IOpsService _opsService; private readonly IBoxService _boxService; private readonly IOutStockTaskRepositories _outStockTaskRepositories; private readonly IOutStockTaskService _outStockTaskService; private readonly IBoxInventoryRepositories _boxInventoryRepositories; private readonly ITakeStockService _takeStockService; private readonly ITakeStockRepositories _takeStockRepositories; private readonly IInStockTaskRepositories _inStockTaskRepositories; private readonly IOutStockService _outStockService; private readonly IWebHostEnvironment _env; private readonly AppOptions _options; public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories, IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, IBasicsRepositories basicsRepositories, IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, IOptions options, ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService, IInStockTaskRepositories inStockTaskRepositories, IWebHostEnvironment env) { _inStockTaskRepositories = inStockTaskRepositories; _basicsRepositories = basicsRepositories; _options = options?.Value; _boxInventoryRepositories = boxInventoryRepositories; this._erpService = erpService; this._inStockTaskService = inStockTaskService; this._transactionRepositories = transactionRepositories; _opsService = opsService; _boxService = boxService; _outStockTaskRepositories = outStockTaskRepositories; _outStockTaskService = outStockTaskService; _takeStockService = takeStockService; _takeStockRepositories = takeStockRepositories; _outStockService = outStockService; _env = env; } [HttpGet] [Route("hj")] public async Task TestHJ() { //OperateRequest dto = new OperateRequest(); //dto.Ids.Add(95); // var result = await this._erpService.BillQueryForSubStock(); //var ss= result.Data.Where(w => w.Name.Equals("Fares")).ToList(); //await _outStockService.Sync(dto, null); //var b = await _takeStockService.Sync(dto); // List list = null; //var b= list.FirstOrDefault(f => f.Id == 123); //var entity=await _takeStockRepositories.GetEntityList(new List() {2 }); //var r= await _takeStockService.Loss_Profit(entity.First()); //var list = await GetList(); List<(string materialNumber, string orgCode, string stockCode, int subStockId)> request = new List<(string materialNumber, string orgCode, string stockCode, int subStockId)>(); request.Add(("G03-60-551495", "101", "WMSCH001", 2683)); var c = await _erpService.BillQueryForInventory(request); //var c = await _erpService.BillQueryForAssembledAppOutStock_Assembly(new List() { "ZZCX003061" }, DateTime.Now.AddDays(-10)); //var bc2 = await _erpService.BillQueryForDeliveryNoticeOutStock(new List() { "FHTZD8022232" }, DateTime.Now.AddDays(-10)); //var bc = await _erpService.BillQueryForTransferOutOutStock(null, DateTime.Now.AddDays(-10)); //var b=await _erpService.BillQueryForAssembledAppOutStock_Assembly(null, DateTime.Now.AddDays(-1)); // var b2 = await _erpService.BillQueryForAssembledAppOutStock_Dassembly(null, DateTime.Now.AddDays(-10)); //var b = await _outStockTaskService.Sync(new List() { "FHTZD8022232" }); //var result = await this._outStockTaskService.Sync(null); //var t=await _outStockTaskRepositories.Get(1); // t.Details[0].Remark = "sdf"; // t.Details[0].ErpDetails[0].SaleBillNo = "sdfsfsbbbb"; // var s = await _outStockTaskRepositories.Edit(t); //await _boxService.Sync(list); //var res = await this._erpService.BillQueryForAssembledAppOutStock_Dassembly(null,DateTime.Now.AddDays(-300)); //var result= await this._erpService.BillQueryForPurchaseInStock(); //var result = await this._erpService.BillQueryForOrg(); //var result = await this._erpService.BillQueryForMaterial(); //if (!result.IsSuccess) // return ""; //return JsonConvert.SerializeObject(result.Data); return ""; } /// /// 出库任务单手动同步金蝶数据 /// /// [HttpGet] [Route("Refresh")] public async Task Refresh() { if (!_env.IsDevelopment()) return ""; var result = await this._outStockTaskService.Sync(null); return ""; } [HttpGet] [Route("tf")] public async Task TestTF() { ////var result = await this._erpService.BillQueryForOrg(); var result = await this._erpService.BillQueryForBillType(); //if (!result.IsSuccess) // return ""; //return JsonConvert.SerializeObject(result.Data); // var bis = new List() { "CGDD224198", "CGDD224199", "CGDD224200", "CGDD224202", "SUB00006680", "CGDD224203", "SUB000066801", "CGDD224204", "CGDD224205", "CGDD224206", "CGDD224207", "SUB00006681", "CGDD224208", "CGDD224209", "SUB00006682", "CGDD224210", "CGDD224211", "CGDD224212", "CGDD224213", "CGDD224216", "SUB00006683", "CGDD224218", "CGDD224219", "CGDD224220", "CGDD224221", "CGDD224222", "CGDD224223", "CGDD224224", "CGDD224225", "CGDD224226", "CGDD224227", "CGDD224229", "CGDD224230", "CGDD224231", "CGDD224232", "CGDD224233", "SUB00006685", "SUB00006686", "CGDD224234", "CGDD224235", "CGDD224236", "CGDD224237", "CGDD224238", "CGDD224239", "CGDD224240", "CGDD224241", "CGDD224242", "CGDD224243", "CGDD224244", "CGDD224245", "CGDD224246", "CGDD224247", "CGDD224248", "CGDD224249", "CGDD224250", "CGDD224251" }; //var result = await this._erpService.BillQueryForPurchaseInStock(); //var result1 = await this._erpService.BillQueryForMiscellaneous(); //var result2 = await this._erpService.BillQueryForTransferDirect(); //var result3 = await this._erpService.BillQueryForTransferin(); //var result4= await this._erpService.BillQueryForAssembledApp_Assembly(); //var result5 = await this._erpService.BillQueryForAssembledApp_Disassembly(); //var list= result.Data.ToList(); //list.AddRange(result2.Data.ToList()); var tt = JsonConvert.SerializeObject(result); //var tttt = new List() { "ABCD14200999" }; //var boxInventorys = await _boxInventoryRepositories.Get(142); //var data = new List(); //var entity = new BoxInventory(); //entity.Id = 34; //entity.BoxId = 142; //entity.OrgCode = "101"; //entity.StockCode = "CK003"; //entity.SubStockId = 2949; //var det = new BoxInventoryDetails(); //det.Id = 266; //det.Fid = 34; //det.MaterialId = 4799560; //det.SerialNumbers = new List() { "ABCD143001", "ABCD142002" }; //det.Qty = 2; //entity.Details.Add(det); //boxInventorys.Details.ForEach(x=> //{ // x.SerialNumbers.RemoveAll(t => tttt.Contains(t)); // //x.SerialNumbers.AddRange(tttt); // x.Qty = 3; //}); //data.Add(boxInventorys); //var result= await _boxInventoryRepositories.UpdateRange(data); return tt; } /// /// 根据物料Id获取物料编码 /// /// /// [HttpGet] [Route("GetMaterial")] public async Task> GetMaterial([FromQuery] List materialIds) { List<(int Id, string Number, string name)> mList = new List<(int Id, string Number, string name)>(); if (!_env.IsDevelopment()) return mList; var materials_result = await _erpService.BillQueryForMaterial(); var materials = materials_result.Data.ToList(); foreach (var mid in materialIds) { var m = materials.FirstOrDefault(f => f.MaterialId == mid); mList.Add((m.MaterialId, m.MaterialNumber, m.MaterialName)); } return mList; } /// /// 根据物料编码获取物料Id /// /// /// [HttpGet] [Route("GetMaterialId/{number}")] public async Task> GetMaterialId([FromRoute] string number) { List<(int Id, string Number, string name)> mList = new List<(int Id, string Number, string name)>(); if (!_env.IsDevelopment()) return mList; var materials_result = await _erpService.BillQueryForMaterial(); var materials = materials_result.Data.ToList(); var mL = materials.Where(f => f.MaterialNumber.Contains(number)) .Select(s=>new { Id=s.MaterialId, Number=s.MaterialNumber, name=s.MaterialName }).ToList(); foreach(var m in mL) { mList.Add((m.Id, m.Number, m.name)); } return mList; } /// /// 自动生成箱信息 /// /// /// /// /// [HttpGet] [Route("SCBox/{str}/{number}")] public async Task SCBox([FromRoute] string str, [FromRoute] int number, [FromQuery] List materialNumbers) { if (!_env.IsDevelopment()) return Result.ReSuccess(); if (materialNumbers == null) materialNumbers = new List(); var list = await GetList(str, number, materialNumbers); await _boxService.Sync(list); return Result.ReSuccess(); } private async Task> GetList(string str, int number, List materialNumbers) { var materials_result = await _erpService.BillQueryForMaterial(); var materials = materials_result.Data.ToList(); List mIds = materials.Where(w => materialNumbers.Contains(w.MaterialNumber)).Select(s => s.MaterialId).ToList(); int jn = 3; if (mIds.Count() <= 0) mIds= materials.Skip((new Random()).Next(1000, 10000)).Take(4).Select(s => s.MaterialId).ToList(); jn = mIds.Count() - 1; List list = new List(); for (int i = 0; i < number; i++) { List Details = new List(); for (int j = 0; j <= jn; j++) { var ran = (new Random()).Next(5, 10); List SerialNumbers = new List(); for (int g = 0; g < ran; g++) { OpsSerialNumbersResponse or = new OpsSerialNumbersResponse() { SerialNumber = await GetStr(), BarCereateUser = "01", BarCreateTime = DateTime.Now }; SerialNumbers.Add(or); } var mi = (new Random()).Next(1000, 20000); OpsBoxDetailsResponse d = new OpsBoxDetailsResponse() { MaterialId = mIds[j], Qty = ran, SerialNumbers = SerialNumbers }; Details.Add(d); } OpsBoxResponse response = new OpsBoxResponse() { BoxBillNo = str + ((new Random()).Next(500, 2000) + i).ToString(), OpsBoxId = 100 + i, CompleteCartonTime = DateTime.Now, CompleteCartonUser = "02", CreateTime = DateTime.Now, CreateUser = "01", OrgId = 0, SupplierId = 10897, Details = Details }; list.Add(response); } return list; } private Task GetStr() { var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; var Charsarr = new char[11]; var random = new Random(); for (int i = 0; i < Charsarr.Length; i++) { Charsarr[i] = characters[random.Next(characters.Length)]; } return Task.FromResult(new String(Charsarr)); } /// /// 测试:同步入库单 /// /// [HttpGet] [Route("InStock")] public async Task InStock() { //3.同步数据 var result = await _inStockTaskService.Sysn(); return result; } /// /// 测试-接口是否正常 /// /// [HttpGet] [Route("lst")] public string Lst() { var successStr = "tongfei test lst->数据库链接地址:" + _options.DBConnectionString+",单点项目链接地址:"+_options.SingleBaseUrl; return successStr; } /// /// 测试-单点接口是否正常 /// /// [HttpGet] [Route("lst1")] public async Task Lst1() { var result = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", 1); return JsonConvert.SerializeObject(result); } /// /// 测试-单点接口是否正常 /// /// [HttpGet] [Route("lst2")] public async Task Lst2() { var ids = new List(); ids.Add(1); var result = await _inStockTaskRepositories.GetList(ids); return JsonConvert.SerializeObject(result); } } }