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;
using Tnb.WarehouseMgr.Entities.Consts;
using JNPF.Common.Enums;
using JNPF.FriendlyException;
using Microsoft.Extensions.Logging;
using Tnb.ProductionMgr.Entities;
using Tnb.WarehouseMgr.Entities.Entity;
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, qcCheckPlanService)
{
_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["station_id"] = "30018443941397";
visualDevModelDataInput.data["station_code"] = "02DTGW";
if (visualDevModelDataInput.data.ContainsKey(nameof(WmsPurchaseH.source_code))) {
visualDevModelDataInput.data["sync_status"] = WmsWareHouseConst.SYNC_STATUS__NOTSYNC;
}
else
{
visualDevModelDataInput.data["sync_status"] = WmsWareHouseConst.SYNC_STATUS_NONEEDSYNC;
}
visualDevModelDataInput.data["audit_status"] = 0;
visualDevModelDataInput.data["is_check"] = 0;
(string pkId, List outStockDList) multi = await _wmsOutStockService.OutStockApplyFor(visualDevModelDataInput);
_ = SyncMesData(multi.pkId, multi.outStockDList?.Select(x => x.material_id!).ToList() ?? Array.Empty().ToList(), EnumTriggerEvent.出厂检按入厂频次);
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);
}
}
}