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 Mapster;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using Tnb.Common.Utils;
using Tnb.QcMgr.Entities.Enums;
using Tnb.QcMgr.Entities;
using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Dto;
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
using Tnb.WarehouseMgr.Interfaces;
using Tnb.QcMgr.Interfaces;
namespace Tnb.WarehouseMgr
{
///
/// 销售发货
///
public class WmsSaleService : WmsPurchaseAndSaleCommonService, IWmsSaleService
{
private readonly IWmsOutStockService _wmsOutStockService;
private readonly IQcCheckPlanService _qcCheckPlanService;
public WmsSaleService(ISqlSugarRepository repo, IUserManager userManager, IWmsOutStockService wmsOutStockService, IQcCheckPlanService qcCheckPlanService)
: base(repo, userManager)
{
_wmsOutStockService = wmsOutStockService;
_qcCheckPlanService = qcCheckPlanService;
}
///
/// 销售发货
///
///
///
///
///
[HttpPost]
public async Task Sale(PurchaseAndReceiveUpInput input)
{
_ = await PurchaseAndSaleUpdate(input);
VisualDevModelDataCrInput visualDevModelDataInput = new();
visualDevModelDataInput.data = PocoToDictionary.ToDictionary(input) as Dictionary;
visualDevModelDataInput.data["location_id"] = "26412597341221";
visualDevModelDataInput.data["location_code"] = "YCL01-01-01";
(string pkId, List outStockDList) multi = await _wmsOutStockService.OutStockApplyFor(visualDevModelDataInput);
CreateTaskEntity ctEntity = new();
ctEntity.maintableid = multi.pkId;
ctEntity.materialids = multi.outStockDList?.Select(x => x.material_id!).ToList() ?? Array.Empty().ToList();
ctEntity.triggerevent = EnumTriggerEvent.出厂检按入厂频次;
_ = _qcCheckPlanService.CreateWmsTask(ctEntity);
return await Task.FromResult(1);
}
///
/// 根据销售发货主表Id获取子表明细
///
///
///
[HttpGet("id")]
public async Task GetSaleDetailsByBillId(string id)
{
return await GetDetailsByPkId(id);
}
///
/// 审核反审核
///
///
///
///
///
[HttpPost]
public async Task Audit(PurchaseAndSaleAuditUpInput input)
{
return await Audit(input);
}
///
/// mes 检验完后通知wms(销售) 回调接口
///
///
///
///
[HttpPost]
public async Task MesCheckdSaleCallback(MesCheckdCallbackUpinput input)
{
return await UpdateChackStatus(input);
}
}
}