using JNPF; using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.Extras.CollectiveOAuth.Models; using JNPF.Extras.CollectiveOAuth.Utils; using JNPF.FriendlyException; using JNPF.Logging; using JNPF.Systems.Interfaces.System; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SqlSugar; using Tnb.BasicData; using Tnb.BasicData.Entities; using Tnb.ProductionMgr.Entities; using Tnb.ProductionMgr.Interfaces; using Tnb.WarehouseMgr.Entities.Dto.Inputs; namespace Tnb.ProductionMgr { /// /// 生产领料 /// [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModuleId)] public class PrdOutstockService : IOverideVisualDevService, IPrdOutstockService, IDynamicApiController, ITransient { private const string ModuleId = "27542506559765"; private readonly ISqlSugarRepository _repository; private readonly ISqlSugarClient _db; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; private readonly IDictionaryDataService _dictionaryDataService; private readonly IUserManager _userManager; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public PrdOutstockService(ISqlSugarRepository repository, IRunService runService, IUserManager userManager,IVisualDevService visualDevService, IDictionaryDataService dictionaryDataService) { _db = repository.AsSugarClient(); _runService = runService; _visualDevService = visualDevService; _dictionaryDataService = dictionaryDataService; _repository = repository; _userManager = userManager; OverideFuncs.CreateAsync = Create; } private async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput) { try { var db = _repository.AsSugarClient(); MESCreateOutstockInput input = new MESCreateOutstockInput(); input.outstock = new MESWmsOutstockHInput(); input.outstockDs = new List(); string locationId = visualDevModelDataCrInput.data.ContainsKey("location_id") ? visualDevModelDataCrInput.data["location_id"].ToString() : ""; BasLocation location = await db.Queryable().SingleAsync(x => x.id == locationId); input.outstock.bill_type = visualDevModelDataCrInput.data.ContainsKey("bill_type") ? visualDevModelDataCrInput.data["bill_type"].ToString() : ""; // input.outstock.bill_date = visualDevModelDataCrInput.data.ContainsKey("bill_date") ? Convert.ToDateTime(visualDevModelDataCrInput.data["bill_date"].ToString()) : DateTime.Now; input.outstock.bill_date = DateTime.Now; input.outstock.org_id = _userManager.GetUserInfo().Result.organizeId; input.outstock.warehouse_id = visualDevModelDataCrInput.data.ContainsKey("warehouse_id") ? visualDevModelDataCrInput.data["warehouse_id"].ToString() : ""; input.outstock.create_id = _userManager.UserId; input.outstock.location_code = location?.location_code ?? ""; // foreach (var item in (JArray)visualDevModelDataCrInput.data["tablefield107"]) // { // input.outstockDs.Add(new MESWmsOutstockDInput() // { // material_id = item.Value("material_id"), // material_code = item.Value("material_code"), // unit_id = item.Value("unit_id"), // pr_qty = item.Value("pr_qty"), // code_batch = item.Value("code_batch"), // source_id = item.Value("source_id"), // }); // } input.outstockDs = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(visualDevModelDataCrInput.data["tablefield107"])); string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host; Dictionary header = new Dictionary() { ["Authorization"] = App.HttpContext.Request.Headers["Authorization"] }; var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_OUTSTOCK,JsonConvert.SerializeObject(input),header); Log.Information(sendResult); AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult); if (authResponse.code != 200) { throw Oops.Bah(authResponse.msg); } else { VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); await _runService.Create(templateEntity, visualDevModelDataCrInput); } return await Task.FromResult(true); } catch (Exception e) { Console.WriteLine(e); Log.Error(e.Message); throw Oops.Bah(e.Message); } } } }