Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
@@ -82,7 +82,7 @@
        }
        //获取要盘点的箱码信息(盘点记录中数据)
        public List<StockCheckLogDto> GetStockCheckLogList(string crNo, string crDetail, string palletNo, string boxNo)
        public List<StockCheckLogDto> GetStockCheckLogList(string crNo, string crDetail, string palletNo, string boxNo, string isContinue)
        {
            try
            {
@@ -101,6 +101,18 @@
                var detail = crDetail.Split("-");
                var sku = detail[0];
                //判断是否为无码物料
                var skuinfo = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == sku);
                //判断是否存在物料消息
                if (skuinfo == null)
                {
                    throw new Exception("托盘码不能为空");
                }
                int isQtySku = 0;
                if (skuinfo.Type == "4" && isContinue == "1")
                {
                    isQtySku = 1;
                }
                var lotNo = detail[1];
                var list = Db.Queryable<BllStockCheckLog>().Where(m => m.IsDel == "0" && m.CRNo == crNo);
                //var deList= Db.Queryable<BllStockCheckDetail>().Where(m => m.IsDel == "0" && m.SkuNo == sku && m.LotNo == lotNo && m.PalletNo == palletNo);
@@ -108,25 +120,47 @@
                //{
                //    throw new Exception("未查询到托盘上的盘点物料批次信息");
                //}
                list = list.Where(m => m.SkuNo == sku && m.LotNo == lotNo && m.PalletNo == palletNo);
                if (!string.IsNullOrWhiteSpace(boxNo))
                {
                    list = list.Where(m => m.BoxNo == boxNo);
                }
                var data = list.Select(m => new StockCheckLogDto()
                List<StockCheckLogDto> data = new List<StockCheckLogDto>();
                //判断是否为无码物料
                if (isQtySku == 1)
                {
                    BoxNo = m.BoxNo,
                    BoxNo3 = m.BoxNo3,
                    SkuNo = m.SkuNo,
                    SkuName = m.SkuName,
                    LotNo = m.LotNo,
                    Qty = m.Qty,
                    CheckResult = m.CheckResult,
                    //获取库存信息
                    var stockDetail = Db.Queryable<DataStockDetail>().First(a => a.IsDel == "0" && a.Status == "3" && a.SkuNo == sku && a.PalletNo == palletNo);
                }).ToList();
                    var model = new StockCheckLogDto()
                    {
                        PalletNo = palletNo,
                        SkuNo = sku,
                        Qty = (int?)stockDetail.Qty,
                        CheckResult = 4,
                    };
                    data.Add(model);
                }
                else
                {
                    data = list.Select(m => new StockCheckLogDto()
                    {
                        BoxNo = m.BoxNo,
                        BoxNo3 = m.BoxNo3,
                        SkuNo = m.SkuNo,
                        SkuName = m.SkuName,
                        LotNo = m.LotNo,
                        Qty = m.Qty,
                        CheckResult = m.CheckResult,
                    }).ToList();
                }
                return data;
            }
            catch (Exception e)
            {
@@ -134,7 +168,7 @@
            }
        }
        public void CrSetCheck(string crNo, string crDetail, string palletNo, string boxNo, string boxNo3, string result, int? qty, int userId)
        public void CrSetCheck(string crNo, string crDetail, string palletNo, string boxNo, string boxNo3, string result, int? qty, string isContinue, int userId)
        {
            try
            {
@@ -164,8 +198,8 @@
                //盘点记录
                var checkLog = Db.Queryable<BllStockCheckLog>().Where(m =>
                    m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo && m.CheckResult == null);
                var time = DateTime.Now;
                //正常
                if (result == "0")
                {
                    if (!string.IsNullOrWhiteSpace(boxNo))
@@ -177,7 +211,7 @@
                        checkLog = checkLog.Where(m => m.BoxNo3 == boxNo3);
                    }
                    if (checkLog.Count() == 0)
                    if (checkLog.Count() == 0 && isContinue == "0")
                    {
                        throw new Exception("未查询到未盘点的箱支信息");
                    }
@@ -188,7 +222,7 @@
                    {
                        if (l.CheckResult != null)
                        {
                           continue;
                            continue;
                        }
                        l.RealQty = l.Qty;
                        l.CheckResult = 0;
@@ -203,6 +237,7 @@
                        checkDetail.RealQty = 0;
                    }
                    checkDetail.RealQty += num;
                    checkDetail.CheckResult = 0;
                    //if (checkDetail.CheckResult == null || checkDetail.CheckResult == 0)
                    //{
                    //    checkDetail.CheckResult = 0;
@@ -210,6 +245,7 @@
                    Db.Updateable(checkDetail).ExecuteCommand();
                    Db.Updateable(list).ExecuteCommand();
                }
                //盘亏
                else if (result == "1")
                {
                    if (!string.IsNullOrWhiteSpace(boxNo))
@@ -221,10 +257,20 @@
                        checkLog = checkLog.Where(m => m.BoxNo3 == boxNo3);
                    }
                    if (checkLog.Count() == 0)
                    if (checkLog.Count() == 0 && isContinue == "0")
                    {
                        throw new Exception("未查询到箱支信息");
                    }
                    //
                    if (isContinue == "1")
                    {
                        if (qty == null || qty <= 0)
                        {
                            throw new Exception("数量盘点时、盘亏数量不能为空且需大于0");
                        }
                    }
                    var list = checkLog.ToList();
                    var num = 0;
@@ -241,64 +287,100 @@
                        checkDetail.RealQty = 0;
                    }
                    checkDetail.RealQty += num;
                    //checkDetail.CheckResult = 1;
                    if (isContinue == "1")
                    {
                        checkDetail.RealQty = qty;
                    }
                    checkDetail.CheckResult = 1;
                    Db.Updateable(checkDetail).ExecuteCommand();
                    Db.Updateable(list).ExecuteCommand();
                }
                //盘盈
                else if (result == "2")
                {
                    if (string.IsNullOrWhiteSpace(boxNo) || string.IsNullOrWhiteSpace(boxNo3))
                    if (isContinue == "0")
                    {
                        throw new Exception("盘盈时箱码与支码不能为空");
                        if (string.IsNullOrWhiteSpace(boxNo) || string.IsNullOrWhiteSpace(boxNo3))
                        {
                            throw new Exception("盘盈时箱码与支码不能为空");
                        }
                    }
                    if (qty == null || qty <= 0)
                    {
                        throw new Exception("盘盈时数量不能为空且需大于0");
                    }
                    var count = Db.Queryable<DataBoxInfo>()
                        .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
                    var count2 = Db.Queryable<BllStockCheckLog>()
                        .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
                    if (count > 0 || count2 > 0)
                    if (isContinue == "0")
                    {
                        throw new Exception("当前库存中已存在该箱支信息");
                        var count = Db.Queryable<DataBoxInfo>()
                        .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
                        var count2 = Db.Queryable<BllStockCheckLog>()
                            .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
                        if (count > 0 || count2 > 0)
                        {
                            throw new Exception("当前库存中已存在该箱支信息");
                        }
                    }
                    var crLog = new BllStockCheckLog()
                    BllStockCheckLog crLog = new BllStockCheckLog();
                    if (isContinue == "0")
                    {
                        CRNo = crNo,
                        PalletNo = palletNo,
                        BoxNo = boxNo,
                        BoxNo2 = null,
                        BoxNo3 = boxNo3,
                        Qty = qty,
                        SkuNo = checkDetail.SkuNo,
                        SkuName = checkDetail.SkuName,
                        Standard = checkDetail.Standard,
                        LotNo = checkDetail.LotNo,
                        LotText = checkDetail.LotText,
                        SupplierLot = checkDetail.SupplierLot,
                        crLog = new BllStockCheckLog()
                        {
                            CRNo = crNo,
                            PalletNo = palletNo,
                            BoxNo = boxNo,
                            BoxNo2 = null,
                            BoxNo3 = boxNo3,
                            Qty = qty,
                            SkuNo = checkDetail.SkuNo,
                            SkuName = checkDetail.SkuName,
                            Standard = checkDetail.Standard,
                            LotNo = checkDetail.LotNo,
                            LotText = checkDetail.LotText,
                            SupplierLot = checkDetail.SupplierLot,
                        RealQty = qty,
                        CheckResult = 2,
                        CheckDate = time,
                        CheckUserId = userId,
                            RealQty = qty,
                            CheckResult = 2,
                            CheckDate = time,
                            CheckUserId = userId,
                        CreateUser = userId,
                        CreateTime = time
                    };
                    if (checkDetail.RealQty == null)
                            CreateUser = userId,
                            CreateTime = time
                        };
                    }
                    else
                    {
                        var checkInfo = Db.Queryable<BllStockCheckLog>().First(m =>
                    m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo);
                        checkInfo.RealQty = qty;
                        checkInfo.CheckResult = 2;
                        checkInfo.CheckUserId = userId;
                        checkInfo.CheckDate = time;
                        checkInfo.UpdateUser = userId;
                        checkInfo.UpdateTime = time;
                        Db.Updateable(checkInfo).ExecuteCommand();
                    }
                    if (checkDetail.RealQty == null && isContinue == "0")
                    {
                        checkDetail.RealQty = 0;
                    }
                    checkDetail.RealQty += qty;
                    //checkDetail.CheckResult = 1;
                    if (isContinue == "1")
                    {
                        checkDetail.RealQty = qty;
                    }
                    checkDetail.CheckResult = 2;
                    Db.Updateable(checkDetail).ExecuteCommand();
                    Db.Insertable(crLog).ExecuteCommand();
                    if (isContinue == "0")
                    {
                        Db.Insertable(crLog).ExecuteCommand();
                    }
                }
                else
                {
                    Db.RollbackTran();
                    throw new Exception("盘点结果不符,请核实!");
                }
                var checkLogNum = Db.Queryable<BllStockCheckLog>().Where(m => m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo);
@@ -351,7 +433,7 @@
            {
                str += " and PalletNo like @palletno";
            }
            //排序
            str += " order by LotNo,LocatNo,PalletNo";
            List<DataStockDetail> stockList = Db.Ado.SqlQuery<DataStockDetail>(str, new
@@ -376,7 +458,7 @@
                {
                    throw new Exception("托盘号不能为空");
                }
                var detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m=>m.Id).ToList();
                var detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m => m.Id).ToList();
                var info = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && detail.Contains(m.StockDetailId))
                    .GroupBy(m => m.BoxNo).Select(a => new PdaPalletNoCheckDto
                    {
@@ -385,7 +467,7 @@
                    }).ToList();
                return info;
            }
            catch(Exception e)
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
@@ -400,9 +482,9 @@
                {
                    throw new Exception("箱码不能为空");
                }
                var info = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo)
                    .GroupBy(m => new{m.BoxNo,m.SkuNo,m.SkuName,m.LotNo}).Select(a => new PdaPalletNoCheckDto
                    .GroupBy(m => new { m.BoxNo, m.SkuNo, m.SkuName, m.LotNo }).Select(a => new PdaPalletNoCheckDto
                    {
                        BoxNo = a.BoxNo,
                        SkuNo = a.SkuNo,
@@ -410,7 +492,7 @@
                        LotNo = a.LotNo,
                        Qty = SqlFunc.AggregateSum(a.Qty)
                    }).ToList();
                if (info.Count>1)
                if (info.Count > 1)
                {
                    throw new Exception("当前箱码查询出多条物料或批次信息,请核实");
                }
@@ -424,7 +506,7 @@
        }
        //解绑原托盘绑定新托盘
        public void SaveUnbind(string palletNo,string boxNo,string palletNoNew,int userId)
        public void SaveUnbind(string palletNo, string boxNo, string palletNoNew, int userId)
        {
            try
            {
@@ -449,7 +531,7 @@
                    throw new Exception("原托盘上未查到箱支明细,请核实");
                }
                //库存明细id
                var infoIds = infos.GroupBy(m => m.StockDetailId).Select(a =>a.StockDetailId).ToList();
                var infoIds = infos.GroupBy(m => m.StockDetailId).Select(a => a.StockDetailId).ToList();
                if (infoIds.Count == 0)
                {
                    throw new Exception("未查询到当前箱码信息,请核实");
@@ -484,7 +566,7 @@
                                }
                            }
                        }
                    }
                    }
                    #endregion
                }
                if (!newPalletHaveGoods)//新托盘上没有物品
@@ -519,7 +601,7 @@
                    }
                    var stockDetail2 = stockDetailList.FirstOrDefault(w => w.SkuNo == stockDetail1.SkuNo && w.LotNo == stockDetail1.LotNo);
                    var stId = 0;
                    var stId = 0;
                    if (stockDetail2 == null) //添加-新托盘上没有同物料同批次物品
                    {
                        //新托盘添加库存明细