using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JNPF.Common.Core.Manager;
using JNPF.Common.Dtos.VisualDev;
using JNPF.Common.Security;
using JNPF.DependencyInjection;
using JNPF.FriendlyException;
using JNPF.Logging;
using JNPF.VisualDev;
using Mapster;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using NPOI.OpenXmlFormats;
using NPOI.OpenXmlFormats.Dml.Diagram;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.Common.Utils;
using Tnb.QcMgr.Entities;
using Tnb.QcMgr.Entities.Enums;
using Tnb.QcMgr.Interfaces;
using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Consts;
using Tnb.WarehouseMgr.Entities.Dto;
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
using Tnb.WarehouseMgr.Interfaces;
namespace Tnb.WarehouseMgr
{
///
/// 采购收货
///
[OverideVisualDev(ModuleConsts.MODULE_WMSPURCHASE_ID)]
public class WmsPurchaseService : WmsPurchaseAndSaleCommonService, IWmsPurchaseService
{
private readonly ISqlSugarClient _db;
private readonly IUserManager _userManager;
public WmsPurchaseService(ISqlSugarRepository repo, IUserManager userManager, IQcCheckPlanService qcCheckPlanService)
: base(repo, userManager, qcCheckPlanService)
{
_db = repo.AsSugarClient();
_userManager = userManager;
}
private async Task xxx(VisualDevModelDataCrInput input)
{
PurchaseAndReceiveUpInput input2 = new();
var input3 = input.data.ToObject();
input3.details = input.data["tablefield177"].ToObject>();
var sss = JsonConvert.SerializeObject(input3);
return await Task.FromResult(sss);
}
///
/// 采购收货
///
///
///
[HttpPost]
public async Task Purchase(PurchaseAndReceiveUpInput input)
{
var blFlag = true;
try
{
await _db.Ado.BeginTranAsync();
WmsInstockH? instock = null;
var purchaseDs = await PurchaseAndSaleUpdate(input);
List instockDs = new();
if (purchaseDs?.Count > 0)
{
instock = input.Adapt();
instock.id = SnowflakeIdHelper.NextId();
instock.create_id = _userManager.UserId;
instock.create_time = DateTime.Now;
instock.org_id = _userManager.User.OrganizeId;
if (instock.source_code != null) {
instock.sync_status = WmsWareHouseConst.SYNC_STATUS__NOTSYNC;
}
else {
instock.sync_status = WmsWareHouseConst.SYNC_STATUS_NONEEDSYNC;
}
instock.audit_status = 0;
instock.print_status = "0";
instock.is_check = 0;
await _db.Insertable(instock).ExecuteCommandAsync();
instockDs = purchaseDs.Adapt>();
instockDs.ForEach(instockD =>
{
instockD.bill_id =instock.id;
instockD.create_id = _userManager.UserId;
instockD.create_time = DateTime.Now;
instockD.org_id = _userManager.User.OrganizeId;
});
await _db.Insertable(instockDs).ExecuteCommandAsync();
}
//通知Mes接口
//_ = SyncMesData(instock.id, instockDs.Select(x => x.material_id).ToList(), EnumTriggerEvent.入厂检按物料编号);
await _db.Ado.CommitTranAsync();
}
catch (Exception ex)
{
blFlag = false;
await _db.Ado.RollbackTranAsync();
Log.Error("采购收货失败", ex);
throw;
}
return await Task.FromResult(blFlag);
}
///
/// 根据主表Id获取采购收货明细
///
/// 主表Id
///
[HttpGet("id")]
public async Task GetPurchaseDetailByBillId(string id)
{
return await GetDetailsByPkId(id);
}
///
/// 审核反审核
///
///
///
///
///
[HttpPost]
public async Task Audit(PurchaseAndSaleAuditUpInput input)
{
return await Audit(input);
}
///
/// mes 检验完后通知wms(采购) 回调接口
///
///
///
///
[HttpPost]
public async Task MesCheckdPurchaseCallback(MesCheckdCallbackUpinput input)
{
return await UpdateChackStatus(input);
}
}
}