Administrator
2024-07-15 970d5c1800587d3a634a716a13a3092f59785b11
Wms/WMS.BLL/BllSoServer/CompleteDetailServer.cs
@@ -3,7 +3,9 @@
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Model.ModelDto.BllSoDto;
using Model.ModelVm.BllSoVm;
using SqlSugar;
using WMS.DAL;
using WMS.Entity.BllSoEntity;
@@ -13,118 +15,58 @@
namespace WMS.BLL.BllSoServer
{
    public class CompleteDetailServer: DbHelper<BllCompleteDetail>,ICompleteDetailServer
    public class CompleteDetailServer : DbHelper<BllCompleteDetail>, ICompleteDetailServer
    {
        private static readonly SqlSugarScope Db = DataContext.Db;
        public CompleteDetailServer():base(Db)
        public CompleteDetailServer() : base(Db)
        {
        }
        //查询拣货明细箱码信息(分组后)
        public List<CompleteDetailDto> GetCompleteDetailList(int id, int page, int limit, out int count)
        public async Task<List<CompleteDetailDto>> GetCompleteDetailList(GetCompleteDetailVm model, RefAsync<int> count)
        {
            try
            {
                var total = 0;
                var detailInfo = Db.Queryable<BllCompleteDetail>().First(w => string.IsNullOrEmpty(w.BoxNo) || string.IsNullOrEmpty(w.BoxNo3));
                if (detailInfo == null)
            Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>()
                .And(it => it.ExportAllotId == model.Id)
                .And(it => it.IsDel == "0")
                .ToExpression();//注意 这一句 不能少
            var data = await GetAllWhereAsync(item)
                .GroupBy(m => new
                {
                    Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>()
                    .And(it => it.ExportAllotId == id)
                    .And(it => it.IsDel == "0")
                    .ToExpression();//注意 这一句 不能少
                    var data = GetAllWhereAsync(item)
                        .GroupBy(m => new
                        {
                            m.SONo,
                            m.SODetailNo,
                            m.StockId,
                            m.ExportAllotId,
                    m.SONo,
                    m.SODetailNo,
                    m.StockId,
                    m.ExportAllotId,
                            m.BoxNo,
                            m.LotNo,
                            m.LotText,
                            m.SupplierLot,
                            m.SkuNo,
                            m.SkuName,
                            m.Standard,
                            m.PalletNo,
                            m.NowPalletNo,
                        })
                        .Select(a => new CompleteDetailDto()
                        {
                            SONo = a.SONo,
                            SODetailNo = a.SODetailNo,
                            StockId = a.StockId,
                            ExportAllotId = a.ExportAllotId,
                            BoxNo = a.BoxNo,
                            LotNo = a.LotNo,
                            LotText = a.LotText,
                            SupplierLot = a.SupplierLot,
                            SkuNo = a.SkuNo,
                            SkuName = a.SkuName,
                            Standard = a.Standard,
                            PalletNo = a.PalletNo,
                            CompleteQty = SqlFunc.AggregateSum(a.CompleteQty),
                            NowPalletNo = a.NowPalletNo,
                            //CreateTime = a.CreateTime
                        }).ToOffsetPage(page, limit, ref total);
                    count = total;
                    return data;
                }
                else //箱码或支码为空说明是按数量拣货,增加 CreateTime 分组条件
                    m.BoxNo,
                    m.LotNo,
                    m.LotText,
                    m.SupplierLot,
                    m.SkuNo,
                    m.SkuName,
                    m.Standard,
                    m.PalletNo,
                    m.NowPalletNo
                })
                .Select(a => new CompleteDetailDto()
                {
                    Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>()
                    .And(it => it.ExportAllotId == id)
                    .And(it => it.IsDel == "0")
                    .ToExpression();//注意 这一句 不能少
                    var data = GetAllWhereAsync(item)
                        .GroupBy(m => new
                        {
                            m.SONo,
                            m.SODetailNo,
                            m.StockId,
                            m.ExportAllotId,
                    SONo = a.SONo,
                    SODetailNo = a.SODetailNo,
                    StockId = a.StockId,
                    ExportAllotId = a.ExportAllotId,
                            m.BoxNo,
                            m.LotNo,
                            m.LotText,
                            m.SupplierLot,
                            m.SkuNo,
                            m.SkuName,
                            m.Standard,
                            m.PalletNo,
                            m.NowPalletNo,
                            m.CreateTime
                        })
                        .Select(a => new CompleteDetailDto()
                        {
                            SONo = a.SONo,
                            SODetailNo = a.SODetailNo,
                            StockId = a.StockId,
                            ExportAllotId = a.ExportAllotId,
                    BoxNo = a.BoxNo,
                    LotNo = a.LotNo,
                    LotText = a.LotText,
                    SupplierLot = a.SupplierLot,
                    SkuNo = a.SkuNo,
                    SkuName = a.SkuName,
                    Standard = a.Standard,
                    PalletNo = a.PalletNo,
                    CompleteQty = SqlFunc.AggregateSum(a.CompleteQty),
                    NowPalletNo = a.NowPalletNo,
                }).ToPageListAsync(model.Page, model.Limit, count);
                            BoxNo = a.BoxNo,
                            LotNo = a.LotNo,
                            LotText = a.LotText,
                            SupplierLot = a.SupplierLot,
                            SkuNo = a.SkuNo,
                            SkuName = a.SkuName,
                            Standard = a.Standard,
                            PalletNo = a.PalletNo,
                            CompleteQty = SqlFunc.AggregateSum(a.CompleteQty),
                            NowPalletNo = a.NowPalletNo,
                        //CreateTime = a.CreateTime
                    }).ToOffsetPage(page, limit, ref total);
                    count = total;
                    return data;
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            return data;
        }
        //查询拣货明细支码详细信息
@@ -135,7 +77,7 @@
                Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>()
                    .AndIF(!string.IsNullOrWhiteSpace(boxNo), it => it.BoxNo == boxNo.Trim())
                    .AndIF(!string.IsNullOrWhiteSpace(boxNo3), it => it.BoxNo3.Contains(boxNo3.Trim()))
                    .ToExpression();
                    .ToExpression();
                var data = GetAllWhereAsync(item)
                    .LeftJoin<SysUserInfor>((a, b) => a.CreateUser == b.Id)
                    .LeftJoin<SysUserInfor>((a, b, c) => a.UpdateUser == c.Id)
@@ -159,7 +101,7 @@
                        CompleteQty = a.CompleteQty,
                        NowPalletNo = a.NowPalletNo,
                        CreateUserName = b.RealName,
                        CreateUserName = b.RealName,
                        UpdateUserName = c.RealName,
                        CreateTime = a.CreateTime,
                        UpdateTime = a.UpdateTime,
@@ -201,7 +143,7 @@
                    {
                        page = 1;
                    }
                    sqlString += sqlPub + $" order by 1  offset {((page - 1) * limit)} rows fetch next {limit} rows only;";
                    var com = new Common();
@@ -210,7 +152,7 @@
                    var modelList = Db.Ado.SqlQuery<CompleteDetailDto>(sqlString);
                    return modelList;
                }
                else
                else
                {
                    string sqlString = string.Empty;
                    string sqlCount = string.Empty;