22
schangxiang@126.com
2024-12-04 abf9b6bb33fcfad5b56a17a5d3e99b49782a7316
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
@@ -7,6 +7,7 @@
using DocumentFormat.OpenXml.Office.CustomUI;
using Microsoft.CodeAnalysis.Operations;
using Admin.NET.Application.Service.WmsTask.WmsRbLineTask.Dto;
using Furion.DatabaseAccessor;
namespace Admin.NET.Application;
/// <summary>
@@ -21,12 +22,16 @@
    private readonly SqlSugarRepository<SysConfig> _sysConfigRep;
    private readonly SqlSugarRepository<Mes_BatchOrderUPI_New> _mesBatchOrderUpiRep;
    private readonly SqlSugarRepository<Mes_Order_Gather> _mesOrderGatherRep;
    private readonly SqlSugarRepository<WmsRecordUpiProcess> _wmsRecordUpiProcessRep;
    private readonly SqlSugarRepository<WmsRecordPackageProcess> _wmsRecordPackageProcessRep;
    public WmsOperationTaskService(SqlSugarRepository<WmsRbLineTask> rep, SqlSugarRepository<WmsStockQuan> wmsStockQuanRep
        , SqlSugarRepository<Mes_Package_Gather> mesPackageGatherRep
        , SqlSugarRepository<SysConfig> sysConfigRep
        , SqlSugarRepository<Mes_BatchOrderUPI_New> mesBatchOrderUpiRep
        , SqlSugarRepository<Mes_Order_Gather> mesOrderGatherRep
        , SqlSugarRepository<WmsRecordUpiProcess> wmsRecordUpiProcessRep
        , SqlSugarRepository<WmsRecordPackageProcess> wmsRecordPackageProcessRep
        )
    {
        _sysConfigRep = sysConfigRep;
@@ -35,6 +40,8 @@
        _wmsStockQuanRep = wmsStockQuanRep;
        _mesBatchOrderUpiRep = mesBatchOrderUpiRep;
        _mesOrderGatherRep = mesOrderGatherRep;
        _wmsRecordUpiProcessRep = wmsRecordUpiProcessRep;
        _wmsRecordPackageProcessRep = wmsRecordPackageProcessRep;
    }
@@ -47,6 +54,7 @@
    [HttpPost]
    [ApiDescriptionSettings(Name = "ForceOutbound")]
    [Description("WmsOperationTask/ForceOutbound")]
    [UnitOfWork]
    public async Task ForceOutbound(ForceOutboundInput input)
    {
        if (input == null || input.PackageCodeList?.Count == 0)
@@ -85,6 +93,7 @@
    [HttpPost]
    [ApiDescriptionSettings(Name = "ValdateQiTao")]
    [Description("WmsOperationTask/ValdateQiTao")]
    [UnitOfWork]
    public async Task<ValidateQiTaoOutput> ValdateQiTao(ValidateQiTaoInput input)
    {
        ValidateQiTaoOutput output = new ValidateQiTaoOutput();
@@ -106,10 +115,13 @@
        {
            throw Oops.Oh($"没有配置 判断齐套 值");
        }
        if (!string.IsNullOrEmpty(sysConfig.Value) && sysConfig.Value != "无")
        if (!string.IsNullOrEmpty(sysConfig.Value) && sysConfig.Value.Trim() != "无")
        {
            throw Oops.Oh($"判断齐套值已经存在值{sysConfig.Value},不允许操作");
        }
        //记录工作时间和工作人
        var curUserName = App.User.FindFirst(ClaimConst.RealName)?.Value;
        var setValue = "";
        var _QiTaoReuslt = "";
@@ -118,21 +130,40 @@
        if (num > 0)
        {
            //不齐套
            setValue = $"{input.PackageCode}|不齐套";
            setValue = $"{input.PackageCode}|不齐套|" + curUserName;
            _QiTaoReuslt = "不齐套";
        }
        else
        {
            setValue = $"{input.PackageCode}|齐套";
            setValue = $"{input.PackageCode}|齐套|" + curUserName;
            _QiTaoReuslt = "齐套";
        }
        //临时屏蔽
        /*
        sysConfig.Value = setValue;
        await _sysConfigRep.UpdateAsync(sysConfig);
        //*/
        //记录工作时间和工作人
        var sysConfig_wms_unline_oper = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_oper);
        if (sysConfig_wms_unline_oper == null)
        {
            throw Oops.Oh($"没有配置 包装下线操作人 值");
        }
        if (sysConfig_wms_unline_oper.Value != curUserName)
        {
            sysConfig_wms_unline_oper.Value = curUserName;
            await _sysConfigRep.UpdateAsync(sysConfig_wms_unline_oper);
            var sysConfig_wms_unline_time = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_time);
            if (sysConfig_wms_unline_time == null)
            {
                throw Oops.Oh($"没有配置 包装下线登陆时间 值");
            }
            sysConfig_wms_unline_time.Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            await _sysConfigRep.UpdateAsync(sysConfig_wms_unline_time);
        }
        output = package.Adapt<ValidateQiTaoOutput>();
@@ -149,6 +180,7 @@
    [HttpPost]
    [ApiDescriptionSettings(Name = "ValdateLabel")]
    [Description("WmsOperationTask/ValdateLabel")]
    [UnitOfWork]
    public async Task<Mes_Package_Gather> ValdateLabel(ValidateLabelInput input)
    {
        if (input == null || input.PackageCode == null || input.Upi == null)
@@ -171,10 +203,92 @@
        {
            throw Oops.Oh($"没有找到包号{input.PackageCode}的汇总数据");
        }
        WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
        wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>();
        wmsRecordPackage.CreateTime = DateTime.Now;
        wmsRecordPackage.Location = "BZ29";
        wmsRecordPackage.OperRemark = "核对标签";
        await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
        WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess();
        wmsRecordUpi = singleUpi.Adapt<WmsRecordUpiProcess>();
        wmsRecordUpi.CreateTime = DateTime.Now;
        wmsRecordUpi.Location = "BZ29";
        wmsRecordUpi.OperRemark = "核对标签";
        await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
        return singlePackage;
    }
    /// <summary>
    /// NG包下线
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "UnlineForNGPackage")]
    [Description("WmsOperationTask/UnlineForNGPackage")]
    [UnitOfWork]
    public async Task UnlineForNGPackage(UnlineForNGPackageInput input)
    {
        if (input == null)
        {
            throw Oops.Oh("参数不能为空");
        }
        if (string.IsNullOrEmpty(input.PackageCode))
        {
            throw Oops.Oh("包号不能为空");
        }
        if (string.IsNullOrEmpty(input.Reason))
        {
            throw Oops.Oh("原因不能为空");
        }
        var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
        if (singlePackage == null)
        {
            throw Oops.Oh($"没有找到包号{input.PackageCode}的汇总数据");
        }
        singlePackage.UpiFlag = UpiFlagEnum.NG;
        singlePackage.UpdateTime = DateTime.Now;
        singlePackage.UpiStatus = UpiStatusEnum.已下线;
        singlePackage.AreaCode = AreaCodeEnum.下线区域;
        var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
        if (upiList == null)
        {
            throw Oops.Oh($"没有找到包号{input.PackageCode}的板件数据");
        }
        foreach (var item in upiList)
        {
            item.UpiFlag = UpiFlagEnum.NG;
            item.UpdateTime = DateTime.Now;
            item.UpiStatus = UpiStatusEnum.已下线;
            item.AreaCode = AreaCodeEnum.下线区域;
            WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess();
            wmsRecordUpi = item.Adapt<WmsRecordUpiProcess>();
            wmsRecordUpi.CreateTime = DateTime.Now;
            wmsRecordUpi.Location = "";
            wmsRecordUpi.OperRemark = "NG下线";
            await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
        }
        WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
        wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>();
        wmsRecordPackage.Location = "";
        wmsRecordPackage.OperRemark = "NG下线";
        await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
        await _mesPackageGatherRep.UpdateAsync(singlePackage);
        await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList);
    }
}