222
schangxiang@126.com
2024-12-14 de11618a6c41d627acd733a6b5d818d87d291c1e
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
@@ -8,6 +8,7 @@
using Microsoft.CodeAnalysis.Operations;
using Admin.NET.Application.Service.WmsTask.WmsRbLineTask.Dto;
using Furion.DatabaseAccessor;
using Admin.NET.Application.Service.WmsCommonnQuery.Dto;
namespace Admin.NET.Application;
/// <summary>
@@ -26,6 +27,7 @@
    private readonly SqlSugarRepository<WmsRecordPackageProcess> _wmsRecordPackageProcessRep;
    private readonly SqlSugarRepository<Mes_Upi_LineQueue> _mes_Upi_LineQueueRep;
    private readonly SqlSugarRepository<WmsRecordUpiNg> _wmsRecordUpiNgRep;
    private readonly WmsCommonnQueryService _wmsCommonnQueryService;
    public WmsOperationTaskService(
        SqlSugarRepository<Mes_Upi_LineQueue> mes_Upi_LineQueueRep,
@@ -37,8 +39,10 @@
        , SqlSugarRepository<WmsRecordUpiProcess> wmsRecordUpiProcessRep
        , SqlSugarRepository<WmsRecordPackageProcess> wmsRecordPackageProcessRep
        , SqlSugarRepository<WmsRecordUpiNg> wmsRecordUpiNgRep
        , WmsCommonnQueryService wmsCommonnQueryService
        )
    {
        _wmsCommonnQueryService = wmsCommonnQueryService;
        _wmsRecordUpiNgRep = wmsRecordUpiNgRep;
        _sysConfigRep = sysConfigRep;
        _mesPackageGatherRep = mesPackageGatherRep;
@@ -68,14 +72,23 @@
        {
            throw Oops.Oh("参数不能为空");
        }
        //验证传递的包是否都在齐包之内。
        List<WmsPackListOutput> packList = await _wmsCommonnQueryService.PackList(new Service.WmsCommonnQuery.Dto.PackListInput() { IsPack = false });
        List<WmsStockQuan> updateQuanList = new List<WmsStockQuan>();
        foreach (var item in input.PackageCodeList)
        {
            var isExistCount = packList.Where(x => x.PackageCode == item).Count();
            if (isExistCount == 0)
            {
                throw Oops.Oh($"包{item}不是缺包状态,请检查!");
            }
            var quanList = await _wmsStockQuanRep.AsQueryable().Where(x => x.PackageCode == item).ToListAsync();
            var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.齐包待出库).Count();
            var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.齐包待出库 || x.StockStatus == StockStatusEnum.人工齐包出库任务已创建).Count();
            if (isExist > 0)
            {
                throw Oops.Oh($"包{item}中其中有板状态是'{StockStatusEnum.齐包待出库.ToString()}',不允许强制出库");
                throw Oops.Oh($"包{item}中其中有板状态是'{StockStatusEnum.齐包待出库.ToString()}' 或'{StockStatusEnum.人工齐包出库任务已创建.ToString()}',不允许强制出库");
            }
            //更新状态 
@@ -93,6 +106,56 @@
    }
    /// <summary>
    /// 人工齐包出库
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "PersonOutbound")]
    [Description("WmsOperationTask/PersonOutbound")]
    [UnitOfWork]
    public async Task PersonOutbound(PersonOutboundInput input)
    {
        if (input == null || input.PackageCodeList?.Count == 0)
        {
            throw Oops.Oh("参数不能为空");
        }
        //验证传递的包是否都在齐包之内。
        List<WmsPackListOutput> packList = await _wmsCommonnQueryService.PackList(new Service.WmsCommonnQuery.Dto.PackListInput() { IsPack = true });
        List<WmsStockQuan> updateQuanList = new List<WmsStockQuan>();
        foreach (var item in input.PackageCodeList)
        {
            var isExistCount = packList.Where(x => x.PackageCode == item).Count();
            if (isExistCount == 0)
            {
                throw Oops.Oh($"包{item}不是齐包状态,请检查!");
            }
            var quanList = await _wmsStockQuanRep.AsQueryable().Where(x => x.PackageCode == item).ToListAsync();
            var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.人工强制待出库 || x.StockStatus == StockStatusEnum.人工强制任务已创建).Count();
            if (isExist > 0)
            {
                throw Oops.Oh($"包{item}中其中有板状态是'{StockStatusEnum.人工强制待出库.ToString()}'或'{StockStatusEnum.人工强制任务已创建.ToString()}',不允许人工齐包出库");
            }
            //更新状态
            foreach (var quan in quanList)
            {
                quan.StockStatus = StockStatusEnum.齐包待出库;
                quan.StockStatusName = StockStatusEnum.齐包待出库.ToString();
                quan.UpdateTime = DateTime.Now;
                quan.OperReason = "人工齐包出库";
            }
            updateQuanList.AddRange(quanList);
        }
        await _wmsStockQuanRep.UpdateRangeAsync(updateQuanList);
    }
    /// <summary>
    /// 判断齐套
    /// </summary>