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; using WMS.Web.Core.Dto.Erp; 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() { var st= await _erpService.BillQueryForDeliveryNoticeOutStock(); return ""; } /// /// 出库任务单手动同步金蝶数据 /// /// [HttpGet] [Route("Refresh")] public async Task Refresh() { if (!_env.IsDevelopment()) return ""; var result = await this._outStockTaskService.Sync(null); return ""; } /// /// 手动同步老ops箱信息 /// /// [HttpGet] [Route("RefreshOpsBox")] public async Task RefreshOpsBox() { if (!_env.IsDevelopment()) return ""; var result = await _boxService.Sync(); return ""; } [HttpGet] [Route("tf")] public async Task TestTF() { if (!_env.IsDevelopment()) return ""; ////var result = await this._erpService.BillQueryForOrg(); //var result = await this._erpService.BillQueryForBillType(); var result = await this._erpService.BillQueryForMaterial(); //var list = new List(); //foreach (var item in result.Data.ToList()) //{ // var t = new TestMar(); // t.MaterialNumber = item.MaterialNumber; // t.BarCode = item.BarCode; // list.Add(t); //} var tt = JsonConvert.SerializeObject(result); 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() { if (!_env.IsDevelopment()) return Result.ReSuccess(); //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); } } }