1
heshaofeng
2026-01-13 1866b69e8f67e382a0a75268d63e6418c8ae02e7
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundQueryService.cs
@@ -13,13 +13,125 @@
{
    public partial class OutboundService
    {
        public WebResponseContent GetOrderInfo(string orderNo)
        {
            try
            {
                Dt_OutboundOrder outboundOrder = _outboundRepository.Db.Queryable<Dt_OutboundOrder>().First(x => x.OrderNo == orderNo);
                return WebResponseContent.Instance.OK(data: outboundOrder);
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        //public WebResponseContent QueryPickingTasks(string palletCode, string orderNo)
        //{
        //    try
        //    {
        //        Dt_StockInfo stockInfo = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
        //        var outboundOrder = _outboundRepository.QueryFirst(x => x.OrderNo == orderNo);
        //        bool isMatMixed = false;
        //        if (stockInfo != null)
        //        {
        //            isMatMixed = stockInfo.Details.GroupBy(x => new
        //            {
        //                x.MaterielCode,
        //                x.MaterielName,
        //                x.BatchNo,
        //                x.SupplyCode,
        //                x.WarehouseCode
        //            }).Count() > 1;
        //        }
        //        List<Dt_OutStockLockInfo> outStockLockInfos = _outboundLockInfoRepository.QueryData(x => x.PalletCode == palletCode && x.OrderNo == orderNo);
        //        return WebResponseContent.Instance.OK(data: new { outStockLockInfos, stockInfo, isMatMixed });
        //    }
        //    catch (Exception ex)
        //    {
        //        return WebResponseContent.Instance.Error(ex.Message);
        //    }
        //}
        public WebResponseContent QueryPickingTasks(string palletCode, string orderNo)
        {
            try
            {
                List<Dt_OutStockLockInfo> outStockLockInfos = _outboundLockInfoService.Repository.QueryData(x => x.PalletCode == palletCode && x.OrderNo == orderNo);
                return WebResponseContent.Instance.OK(data: outStockLockInfos);
                Dt_StockInfo stockInfo = _stockInfoRepository.Db.Queryable<Dt_StockInfo>()
                    .Where(x => x.PalletCode == palletCode)
                    .Includes(x => x.Details)
                    .First();
                List<Dt_OutStockLockInfo> outStockLockInfos = _outboundLockInfoRepository
                    .QueryData(x => x.PalletCode == palletCode && x.OrderNo == orderNo);
                bool isMatMixed = false;
                if (stockInfo != null && stockInfo.Details != null && stockInfo.Details.Any())
                {
                    if (outStockLockInfos.FirstOrDefault() != null)
                    {
                        bool includeBatchNo = !string.IsNullOrEmpty(outStockLockInfos.FirstOrDefault().BatchNo);
                        bool includeSupplyCode = !string.IsNullOrEmpty(outStockLockInfos.FirstOrDefault().SupplyCode);
                        if (includeBatchNo && includeSupplyCode)
                        {
                            isMatMixed = stockInfo.Details.GroupBy(x => new
                            {
                                x.MaterielCode,
                                x.MaterielName,
                                x.BatchNo,
                                x.SupplyCode,
                                x.WarehouseCode
                            }).Count() > 1;
                        }
                        else if (includeBatchNo && !includeSupplyCode)
                        {
                            isMatMixed = stockInfo.Details.GroupBy(x => new
                            {
                                x.MaterielCode,
                                x.MaterielName,
                                x.BatchNo,
                                x.WarehouseCode
                            }).Count() > 1;
                        }
                        else if (!includeBatchNo && includeSupplyCode)
                        {
                            isMatMixed = stockInfo.Details.GroupBy(x => new
                            {
                                x.MaterielCode,
                                x.MaterielName,
                                x.SupplyCode,
                                x.WarehouseCode
                            }).Count() > 1;
                        }
                        else
                        {
                            isMatMixed = stockInfo.Details.GroupBy(x => new
                            {
                                x.MaterielCode,
                                x.MaterielName,
                                x.WarehouseCode
                            }).Count() > 1;
                        }
                    }
                    else
                    {
                        isMatMixed = stockInfo.Details.GroupBy(x => new
                        {
                            x.MaterielCode,
                            x.MaterielName,
                            x.WarehouseCode
                        }).Count() > 1;
                    }
                }
                return WebResponseContent.Instance.OK(data: new { outStockLockInfos, stockInfo, isMatMixed });
            }
            catch (Exception ex)
            {
@@ -39,7 +151,7 @@
            try
            {
                // 鏋勫缓鏌ヨ鏉′欢
                var query = _stockChangeService.Repository.Db
                var query = _stockChangeRepository.Db
                    .Queryable<Dt_StockQuantityChangeRecord>()
                    .LeftJoin<Dt_OutboundOrder>((r, o) => r.OrderNo == o.OrderNo)
                    .Where((r, o) => r.ChangeType == (int)StockChangeTypeEnum.Outbound)