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; using Tnb.ProductionMgr.Entities.Dto; namespace Tnb.ProductionMgr { /// /// 生产领料 /// [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModuleId)] public class PrdKittingOutService : IOverideVisualDevService, IPrdKittingOutService, IDynamicApiController, ITransient { private const string ModuleId = "27565198830357"; private readonly ISqlSugarRepository _repository; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; private readonly IUserManager _userManager; private readonly IBillRullService _billRullService; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public PrdKittingOutService(ISqlSugarRepository repository, IRunService runService, IBillRullService billRullService,IUserManager userManager,IVisualDevService visualDevService) { _runService = runService; _visualDevService = visualDevService; _repository = repository; _userManager = userManager; _billRullService = billRullService; // OverideFuncs.CreateAsync = Create; } // private async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput) // { // PrdKittingOutH prdKittingOutH = new PrdKittingOutH(); // try // { // var db = _repository.AsSugarClient(); // // List input = new List(); // input.Add(new MESKittingOutStkInput() // { // org_id = _userManager.GetUserInfo().Result.organizeId, // bill_date = DateTime.Now, // warehouse_id = visualDevModelDataCrInput.data.ContainsKey("warehouse_id") ? visualDevModelDataCrInput.data["warehouse_id"].ToString() : "", // location_code = visualDevModelDataCrInput.data.ContainsKey("location_code") ? visualDevModelDataCrInput.data["location_code"].ToString() : "", // material_id = visualDevModelDataCrInput.data.ContainsKey("material_id") ? visualDevModelDataCrInput.data["material_id"].ToString() : "", // material_code = visualDevModelDataCrInput.data.ContainsKey("material_code") ? visualDevModelDataCrInput.data["material_code"].ToString() : "", // collocation_scheme_id = visualDevModelDataCrInput.data.ContainsKey("collocation_scheme_id") ? visualDevModelDataCrInput.data["collocation_scheme_id"].ToString() : "", // collocation_scheme_code = visualDevModelDataCrInput.data.ContainsKey("collocation_scheme_code") ? visualDevModelDataCrInput.data["collocation_scheme_code"].ToString() : "", // source_id = prdKittingOutH.id, // seq = visualDevModelDataCrInput.data.ContainsKey("seq") ? (int)visualDevModelDataCrInput.data["seq"] : 0, // create_id = _userManager.UserId, // wmsKittingoutDs = new List(), // }); // // input[0].wmsKittingoutDs = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(visualDevModelDataCrInput.data["tableField115"])); // 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_KITTING_OUT_STK,JsonConvert.SerializeObject(input),header); // Log.Information(sendResult); // // AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult); // if (authResponse.code != 200) // { // throw Oops.Bah(authResponse.msg); // } // else // { // prdKittingOutH.code = await _billRullService.GetBillNumber(CodeTemplateConst.PRDKITTINGOUTSTOCK_CODE); // prdKittingOutH.warehouse_id = visualDevModelDataCrInput.data.ContainsKey("warehouse_id") ? visualDevModelDataCrInput.data["warehouse_id"].ToString() : ""; // prdKittingOutH.location_code = visualDevModelDataCrInput.data.ContainsKey("location_code") ? visualDevModelDataCrInput.data["location_code"].ToString() : ""; // prdKittingOutH.material_id = visualDevModelDataCrInput.data.ContainsKey("material_id") ? visualDevModelDataCrInput.data["material_id"].ToString() : ""; // prdKittingOutH.material_code = visualDevModelDataCrInput.data.ContainsKey("material_code") ? visualDevModelDataCrInput.data["material_code"].ToString() : ""; // prdKittingOutH.collocation_scheme_id = visualDevModelDataCrInput.data.ContainsKey("collocation_scheme_id") ? visualDevModelDataCrInput.data["collocation_scheme_id"].ToString() : ""; // prdKittingOutH.collocation_scheme_code = visualDevModelDataCrInput.data.ContainsKey("collocation_scheme_code") ? visualDevModelDataCrInput.data["collocation_scheme_code"].ToString() : ""; // prdKittingOutH.workline_id = visualDevModelDataCrInput.data.ContainsKey("worklinei_d") ? visualDevModelDataCrInput.data["worklinei_d"].ToString() : ""; // prdKittingOutH.workstation_id = visualDevModelDataCrInput.data.ContainsKey("workstation_id") ? visualDevModelDataCrInput.data["workstation_id"].ToString() : ""; // prdKittingOutH.mo_task_id = visualDevModelDataCrInput.data.ContainsKey("mo_task_id") ? visualDevModelDataCrInput.data["mo_task_id"].ToString() : ""; // prdKittingOutH.seq = visualDevModelDataCrInput.data.ContainsKey("seq") ? visualDevModelDataCrInput.data["seq"]?.ToString() : "0"; // prdKittingOutH.create_id = _userManager.UserId; // prdKittingOutH.create_time = DateTime.Now; // prdKittingOutH.org_id = _userManager.GetUserInfo().Result.organizeId; // List prdKittingOutDs = new List(); // foreach (var item in (JArray)visualDevModelDataCrInput.data["tableField115"]) // { // prdKittingOutDs.Add(new PrdKittingOutD() // { // material_id = item.Value("material_id"), // material_code = item.Value("material_code"), // unit_id = item.Value("unit_id"), // unit_code = item.Value("unit_code"), // pr_qty = item.Value("pr_qty"), // code_batch = item.Value("code_batch"), // box = item.Value("box"), // kitting_out_id = prdKittingOutH.id, // }); // } // // // VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); // // await _runService.Create(templateEntity, visualDevModelDataCrInput); // // DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => // { // await _repository.InsertAsync(prdKittingOutH); // if (prdKittingOutDs.Count > 0) // { // await db.Insertable(prdKittingOutDs).ExecuteCommandAsync(); // } // }); // // if (!result.IsSuccess) // { // throw Oops.Bah(result.ErrorMessage); // } // } // return await Task.FromResult(true); // } // catch (Exception e) // { // Console.WriteLine(e); // Log.Error(e.Message); // throw Oops.Bah(e.Message); // } // // } /// /// 齐套出库申请 /// /// /// /// [HttpPost] public async Task KittingOut(KittingOutInput kittingOutInput) { PrdKittingOutH prdKittingOutH = new PrdKittingOutH(); try { var db = _repository.AsSugarClient(); List input = new List(); input.Add(new MESKittingOutStkInput() { org_id = _userManager.GetUserInfo().Result.organizeId, bill_date = DateTime.Now, warehouse_id = kittingOutInput.warehouse_id, location_code = kittingOutInput.location_code, material_id = kittingOutInput.material_id, material_code = kittingOutInput.material_code, collocation_scheme_id = kittingOutInput.collocation_scheme_id, collocation_scheme_code = kittingOutInput.collocation_scheme_code, source_id = prdKittingOutH.id, seq = !string.IsNullOrEmpty(kittingOutInput.seq) ? Convert.ToInt32(kittingOutInput.seq) : 0, create_id = _userManager.UserId, wmsKittingoutDs = new List(), }); input[0].wmsKittingoutDs = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(kittingOutInput.tableField115)); 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_KITTING_OUT_STK,JsonConvert.SerializeObject(input),header); Log.Information(sendResult); AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult); if (authResponse.code != 200) { throw Oops.Bah(authResponse.msg); } else { prdKittingOutH.code = await _billRullService.GetBillNumber(CodeTemplateConst.PRDKITTINGOUTSTOCK_CODE); prdKittingOutH.warehouse_id = kittingOutInput.warehouse_id; prdKittingOutH.location_code = kittingOutInput.location_code; prdKittingOutH.material_id = kittingOutInput.material_id; prdKittingOutH.material_code = kittingOutInput.material_code; prdKittingOutH.collocation_scheme_id = kittingOutInput.collocation_scheme_id; prdKittingOutH.collocation_scheme_code = kittingOutInput.collocation_scheme_code; prdKittingOutH.workline_id = kittingOutInput.workline_id; prdKittingOutH.workstation_id = kittingOutInput.workstation_id; prdKittingOutH.mo_task_id = kittingOutInput.mo_task_id; prdKittingOutH.seq = kittingOutInput.seq; prdKittingOutH.create_id = _userManager.UserId; prdKittingOutH.create_time = DateTime.Now; prdKittingOutH.org_id = _userManager.GetUserInfo().Result.organizeId; List prdKittingOutDs = new List(); foreach (var item in kittingOutInput.tableField115) { prdKittingOutDs.Add(new PrdKittingOutD() { material_id = item.ContainsKey("material_id") ? item["material_id"].ToString() : "", material_code = item.ContainsKey("material_code") ? item["material_code"].ToString() : "", unit_id = item.ContainsKey("unit_id") ? item["unit_id"].ToString() : "", unit_code = item.ContainsKey("unit_code") ? item["unit_code"].ToString() : "", pr_qty = item.ContainsKey("pr_qty") ? Convert.ToDecimal(item["pr_qty"]) : 0, code_batch = item.ContainsKey("code_batch") ? item["code_batch"].ToString() : "", box = item.ContainsKey("box") ? Convert.ToInt32(item["box"]) : 0, kitting_out_id = prdKittingOutH.id, }); } // VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); // await _runService.Create(templateEntity, visualDevModelDataCrInput); DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { await _repository.InsertAsync(prdKittingOutH); if (prdKittingOutDs.Count > 0) { await db.Insertable(prdKittingOutDs).ExecuteCommandAsync(); } }); if (!result.IsSuccess) { throw Oops.Bah(result.ErrorMessage); } } return await Task.FromResult(true); } catch (Exception e) { Console.WriteLine(e); Log.Error(e.Message); throw Oops.Bah(e.Message); } } } }