Files
tnb.server/ProductionMgr/Tnb.ProductionMgr/PrdKittingOutService.cs
2023-08-02 15:58:08 +08:00

256 lines
15 KiB
C#

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
{
/// <summary>
/// 生产领料
/// </summary>
[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<PrdKittingOutH> _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<PrdKittingOutH> 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<dynamic> Create(VisualDevModelDataCrInput visualDevModelDataCrInput)
// {
// PrdKittingOutH prdKittingOutH = new PrdKittingOutH();
// try
// {
// var db = _repository.AsSugarClient();
//
// List<MESKittingOutStkInput> input = new List<MESKittingOutStkInput>();
// 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<MESKittingOutStkDInput>(),
// });
//
// input[0].wmsKittingoutDs = JsonConvert.DeserializeObject<List<MESKittingOutStkDInput>>(JsonConvert.SerializeObject(visualDevModelDataCrInput.data["tableField115"]));
// string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host;
// Dictionary<string, object> header = new Dictionary<string, object>()
// {
// ["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<AuthResponse>(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<PrdKittingOutD> prdKittingOutDs = new List<PrdKittingOutD>();
// foreach (var item in (JArray)visualDevModelDataCrInput.data["tableField115"])
// {
// prdKittingOutDs.Add(new PrdKittingOutD()
// {
// material_id = item.Value<string>("material_id"),
// material_code = item.Value<string>("material_code"),
// unit_id = item.Value<string>("unit_id"),
// unit_code = item.Value<string>("unit_code"),
// pr_qty = item.Value<decimal>("pr_qty"),
// code_batch = item.Value<string>("code_batch"),
// box = item.Value<int>("box"),
// kitting_out_id = prdKittingOutH.id,
// });
// }
//
// // VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true);
// // await _runService.Create(templateEntity, visualDevModelDataCrInput);
//
// DbResult<bool> result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
// {
// await _repository.InsertAsync(prdKittingOutH);
// if (prdKittingOutDs.Count > 0)
// {
// await db.Insertable<PrdKittingOutD>(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);
// }
//
// }
/// <summary>
/// 齐套出库申请
/// </summary>
/// <param name="kittingOutInput"></param>
/// <returns></returns>
/// <exception cref="AppFriendlyException"></exception>
[HttpPost]
public async Task<dynamic> KittingOut(KittingOutInput kittingOutInput)
{
PrdKittingOutH prdKittingOutH = new PrdKittingOutH();
try
{
var db = _repository.AsSugarClient();
List<MESKittingOutStkInput> input = new List<MESKittingOutStkInput>();
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<MESKittingOutStkDInput>(),
});
input[0].wmsKittingoutDs = JsonConvert.DeserializeObject<List<MESKittingOutStkDInput>>(JsonConvert.SerializeObject(kittingOutInput.tableField115));
string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host;
Dictionary<string, object> header = new Dictionary<string, object>()
{
["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<AuthResponse>(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<PrdKittingOutD> prdKittingOutDs = new List<PrdKittingOutD>();
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<bool> result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
{
await _repository.InsertAsync(prdKittingOutH);
if (prdKittingOutDs.Count > 0)
{
await db.Insertable<PrdKittingOutD>(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);
}
}
}
}