22
schangxiang@126.com
2024-12-15 c1c1b1f95b0880cd58afadb98d6933287fe6311c
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
@@ -27,6 +27,7 @@
    private readonly SqlSugarRepository<WmsRecordUpiProcess> _wmsRecordUpiProcessRep;
    private readonly SqlSugarRepository<WmsRecordPackageProcess> _wmsRecordPackageProcessRep;
    private readonly SqlSugarRepository<Mes_Upi_LineQueue> _mes_Upi_LineQueueRep;
    private readonly SqlSugarRepository<Mes_Package_LineQueue> _mes_Package_LineQueueRep;
    private readonly SqlSugarRepository<WmsRecordUpiNg> _wmsRecordUpiNgRep;
    private readonly WmsCommonnQueryService _wmsCommonnQueryService;
@@ -41,8 +42,10 @@
        , SqlSugarRepository<WmsRecordPackageProcess> wmsRecordPackageProcessRep
        , SqlSugarRepository<WmsRecordUpiNg> wmsRecordUpiNgRep
        , WmsCommonnQueryService wmsCommonnQueryService
        , SqlSugarRepository<Mes_Package_LineQueue> mes_Package_LineQueueRep
        )
    {
        _mes_Package_LineQueueRep = mes_Package_LineQueueRep;
        _wmsCommonnQueryService = wmsCommonnQueryService;
        _wmsRecordUpiNgRep = wmsRecordUpiNgRep;
        _sysConfigRep = sysConfigRep;
@@ -95,12 +98,38 @@
            //更新状态 
            foreach (var quan in quanList)
            {
                if (quan.StockStatus != StockStatusEnum.在库 && quan.StockStatus != StockStatusEnum.已冻结)
                {
                    throw Oops.Oh($"部件条码{quan.Upi}的库存状态不是'{StockStatusEnum.在库.ToString()}或{StockStatusEnum.已冻结.ToString()}'状态");
                }
                quan.StockStatus = StockStatusEnum.人工强制待出库;
                quan.StockStatusName = StockStatusEnum.人工强制待出库.ToString();
                quan.UpdateTime = DateTime.Now;
                quan.OperReason = "人工强制待出库";
            }
            updateQuanList.AddRange(quanList);
            var packageObj = await _mesPackageGatherRep.GetFirstAsync(x => x.PackageCode == item);
            packageObj.UpiFlag = UpiFlagEnum.NG;
            packageObj.UpiStatus = UpiStatusEnum.已下线;
            await _mesPackageGatherRep.UpdateAsync(packageObj);
            foreach (var quan in quanList)
            {
                //清理 队列表
                var removeUpiList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.Upi == quan.Upi).ToListAsync();
                if (removeUpiList?.Count > 0)
                {
                    await _mes_Upi_LineQueueRep.DeleteAsync(removeUpiList);
                }
                var removePackageList = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == quan.PackageCode).ToListAsync();
                if (removePackageList?.Count > 0)
                {
                    await _mes_Package_LineQueueRep.DeleteAsync(removePackageList);
                }
            }
        }
        //模式判断
@@ -153,12 +182,21 @@
            //更新状态 
            foreach (var quan in quanList)
            {
                if (quan.StockStatus != StockStatusEnum.在库 && quan.StockStatus != StockStatusEnum.已冻结)
                {
                    throw Oops.Oh($"部件条码{quan.Upi}的库存状态不是'{StockStatusEnum.在库.ToString()}或{StockStatusEnum.已冻结.ToString()}'状态");
                }
                quan.StockStatus = StockStatusEnum.齐包待出库;
                quan.StockStatusName = StockStatusEnum.齐包待出库.ToString();
                quan.UpdateTime = DateTime.Now;
                quan.OperReason = "人工齐包出库";
            }
            updateQuanList.AddRange(quanList);
            var packageObj = await _mesPackageGatherRep.GetFirstAsync(x => x.PackageCode == item);
            packageObj.UpiStatus = UpiStatusEnum.已齐包;
            packageObj.IsQiBao = true;
            await _mesPackageGatherRep.UpdateAsync(packageObj);
        }
        //模式判断
@@ -213,18 +251,57 @@
        var setValue = "";
        var _QiTaoReuslt = "";
        var other_orderList = await _mesPackageGatherRep.AsQueryable().Where(x => x.Info5 == package.Info5 && x.PackageCode != input.PackageCode).ToListAsync();
        var num = other_orderList.Where(x => x.UpiStatus == UpiStatusEnum.初始 || x.UpiStatus == UpiStatusEnum.不齐包).Count();
        if (num > 0)
        bool isNeedQueryQiTao = true;
        var order = await _mesOrderGatherRep.AsQueryable().Where(x => x.Info5 == package.Info5).FirstAsync();
        if (order == null)
        {
            //不齐套
            setValue = $"{input.PackageCode}|不齐套|" + curUserName;
            _QiTaoReuslt = "不齐套";
        }
        else
        {
            setValue = $"{input.PackageCode}|齐套|" + curUserName;
            _QiTaoReuslt = "齐套";
            if (order.IsKitting != null)
            {
                _QiTaoReuslt = (bool)order.IsKitting ? "齐套" : "不齐套";
                isNeedQueryQiTao = false;
            }
        }
        if (isNeedQueryQiTao)
        {
            var other_orderList = await _mesPackageGatherRep.AsQueryable().Where(x => x.Info5 == package.Info5 && x.PackageCode != input.PackageCode).ToListAsync();
            var num = other_orderList.Where(x => x.UpiStatus == UpiStatusEnum.初始).Count();
            if (num > 0)
            {
                //不齐套
                _QiTaoReuslt = "不齐套";
            }
            else
            {
                _QiTaoReuslt = "齐套";
            }
        }
        setValue = $"{input.PackageCode}|{_QiTaoReuslt}|" + curUserName;
        if (package.UpiStatus == UpiStatusEnum.已下线)
        {
            throw Oops.Oh($"包已下线,齐套结果[{_QiTaoReuslt}]");
        }
        if (order == null)
        {
            Mes_Order_Gather newOrder = new Mes_Order_Gather()
            {
                Info5 = package.Info5,
                IsKitting = _QiTaoReuslt == "齐套" ? true : false,
                PlanNo = package.PlanNo,
                OrderId = package.OrderId
            };
            await _mesOrderGatherRep.InsertAsync(newOrder);
        }
        else
        {
            order.IsKitting = _QiTaoReuslt == "齐套" ? true : false;
            await _mesOrderGatherRep.UpdateAsync(order);
        }
@@ -388,6 +465,21 @@
            await _wmsRecordUpiNgRep.InsertAsync(wmsRecordUpiNg);
            //清理 队列表
            var removeUpiList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.Upi == item.UPI).ToListAsync();
            if (removeUpiList?.Count > 0)
            {
                await _mes_Upi_LineQueueRep.DeleteAsync(removeUpiList);
            }
            var removePackageList = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == item.PackageCode).ToListAsync();
            if (removePackageList?.Count > 0)
            {
                await _mes_Package_LineQueueRep.DeleteAsync(removePackageList);
            }
        }