Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
@@ -107,7 +107,7 @@
            try
            {
                var total = 0;
                var list = Db.Queryable<BllStockCheckDetail>().Where(m => m.IsDel =="0" && m.CRNo == crNo)
                var list = Db.Queryable<BllStockCheckDetail>().Where(m => m.IsDel == "0" && m.CRNo == crNo)
                    .LeftJoin<SysUserInfor>((a, b) => a.CreateUser == b.Id)
                    .LeftJoin<SysUserInfor>((a, b, c) => a.UpdateUser == c.Id)
                    .Select((a, b, c) => new StockCheckDetailDto()
@@ -234,7 +234,7 @@
                if (string.IsNullOrWhiteSpace(model.CrNo))
                {
                    var num = Db.Queryable<BllStockCheck>().Count(m => m.IsDel == "0" && (m.Status == 0 || m.Status == 1));
                    if (num>0)
                    if (num > 0)
                    {
                        throw new Exception("已有等待执行的盘点单据请先完成或删除");
                    }
@@ -339,7 +339,7 @@
                                CreateTime = time
                            };
                            list.Add(detail);
                            var sd = Db.Queryable<DataStockDetail>().Where(m => m.IsDel =="0" && m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo && m.Status == "0").ToList();
                            var sd = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo && m.Status == "0").ToList();
                            foreach (var s in sd)
                            {
                                s.Status = "3";
@@ -356,7 +356,7 @@
                    }
                    if (list.Count>0)
                    if (list.Count > 0)
                    {
                        Db.Insertable(list).ExecuteCommand();
                    }
@@ -397,7 +397,7 @@
                    d.IsDel = "1";
                    d.UpdateTime = time;
                    d.UpdateUser = userId;
                    var item = Db.Queryable<DataStockDetail>().Where(m => m.IsDel =="0" && m.PalletNo == d.PalletNo && m.SkuNo ==d.SkuNo && m.LotNo == d.LotNo && m.Status == "3").ToList();
                    var item = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == d.PalletNo && m.SkuNo == d.SkuNo && m.LotNo == d.LotNo && m.Status == "3").ToList();
                    foreach (var i in item)
                    {
                        i.Status = "0";
@@ -586,37 +586,49 @@
                        }
                        else if (l.CheckResult == 2)//盘盈
                        {
                        {
                            var sku = Db.Queryable<SysMaterials>().First(a => a.IsDel == "0" && a.SkuNo == l.SkuNo);
                            var stockDetailInfo = stockDetail.First(m => m.PalletNo == d.PalletNo && m.SkuNo == d.SkuNo && m.LotNo == d.LotNo);//库存明细
                            var stockBoxInfo = stockBox.First(m => m.StockDetailId == stockDetailInfo.Id);//库存箱支明细
                            var boxInfo = boxQtyList.First(m => m.boxNo == l.BoxNo);//找到对应箱子是否零箱
                            //添加库存箱支信息
                            var databox = new DataBoxInfo
                            if (sku.Type != "4")
                            {
                                StockDetailId = stockDetailInfo.Id,
                                BindNo= stockBoxInfo.BindNo,
                                BoxNo = l.BoxNo,
                                BoxNo2 = l.BoxNo2,
                                BoxNo3 = l.BoxNo3,
                                PalletNo = l.PalletNo,
                                Qty = (int)l.RealQty,
                                FullQty = stockBoxInfo.FullQty,//满箱数量
                                Status = "2",
                                SkuNo = l.SkuNo,
                                SkuName = l.SkuName,
                                LotNo = l.LotNo,
                                LotText = l.LotText,
                                Standard = l.Standard,
                                SupplierLot = l.SupplierLot,
                                var stockBoxInfo = stockBox.First(m => m.StockDetailId == stockDetailInfo.Id);//库存箱支明细
                                var boxInfo = boxQtyList.First(m => m.boxNo == l.BoxNo);//找到对应箱子是否零箱
                                                                                        //添加库存箱支信息
                                var databox = new DataBoxInfo
                                {
                                    StockDetailId = stockDetailInfo.Id,
                                    BindNo = stockBoxInfo.BindNo,
                                    BoxNo = l.BoxNo,
                                    BoxNo2 = l.BoxNo2,
                                    BoxNo3 = l.BoxNo3,
                                    PalletNo = l.PalletNo,
                                    Qty = (int)l.RealQty,
                                    FullQty = stockBoxInfo.FullQty,//满箱数量
                                    Status = "2",
                                    SkuNo = l.SkuNo,
                                    SkuName = l.SkuName,
                                    LotNo = l.LotNo,
                                    LotText = l.LotText,
                                    Standard = l.Standard,
                                    SupplierLot = l.SupplierLot,
                                InspectMark = stockBoxInfo.InspectMark,
                                InspectStatus = stockBoxInfo.InspectStatus,
                                ProductionTime = stockBoxInfo.ProductionTime,
                                BitBoxMark = boxInfo.bitBoxMark,
                            };
                            Db.Insertable<DataBoxInfo>(databox).ExecuteCommand();
                            //库存明细增加数量
                            stockDetailInfo.Qty += (int)l.RealQty;
                                    InspectMark = stockBoxInfo.InspectMark,
                                    InspectStatus = stockBoxInfo.InspectStatus,
                                    ProductionTime = stockBoxInfo.ProductionTime,
                                    BitBoxMark = boxInfo.bitBoxMark,
                                };
                                Db.Insertable<DataBoxInfo>(databox).ExecuteCommand();
                                //库存明细增加数量
                                stockDetailInfo.Qty += (int)l.RealQty;
                            }
                            else
                            {
                                //库存明细增加数量
                                stockDetailInfo.Qty = (int)l.RealQty;
                            }
                            stockDetailInfo.Status = "0";
                            Db.Updateable(stockDetailInfo).ExecuteCommand();
                            //库存增加数量
                            var de = stock.First(m => m.SkuNo == l.SkuNo && m.LotNo == l.LotNo);
@@ -624,7 +636,15 @@
                            {
                                throw new Exception($"未查询到{l.BoxNo}箱中{l.BoxNo3}库存的信息");
                            }
                            de.Qty += (int)l.RealQty;
                            if (sku.Type != "4")
                            {
                                de.Qty += (int)l.RealQty;
                            }
                            else
                            {
                                de.Qty += (int)(l.RealQty - l.Qty);
                            }
                            Db.Updateable(de).ExecuteCommand();
                        }
                    }
@@ -636,7 +656,7 @@
                    if (d.Qty == d.RealQty)
                    {
                        d.CheckResult = 0;
                        if (demo.Count(m=>m.CheckResult == 1 || m.CheckResult == 2)>0)
                        if (demo.Count(m => m.CheckResult == 1 || m.CheckResult == 2) > 0)
                        {
                            d.CheckResult = 3;
                        }
@@ -650,7 +670,7 @@
                        d.CheckResult = 1;
                    }
                    Db.Updateable(d).ExecuteCommand();
                    #region 添加判断盘点完托盘是否是零托 
                    var material = materialList.FirstOrDefault(m => m.SkuNo == d.SkuNo);
                    if (material == null)
@@ -708,13 +728,13 @@
                Db.Updateable(notice).ExecuteCommand();
                //添加操作日志记录
                var k = new OperationCrServer().AddLogOperationCr("库内作业", "盘点单据", notice.CRNo, "调整单据", $"调整了单据号为{notice.CRNo}的盘点单信息", userId);
                //提交事务
                Db.CommitTran();
                return true;
            }
            catch (Exception e)
            {
            {
                //回滚事务
                Db.RollbackTran();
                throw new Exception(e.Message);
@@ -868,6 +888,8 @@
                //要出库的明细集合
                var outStockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToList();
                var outStockBox = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToList();
                //获取物料信息
                var skuNo = Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.Type == "4").Select(a => a.SkuNo).ToList();
                var time = DateTime.Now;
                Db.BeginTran();
                try
@@ -877,32 +899,63 @@
                    {
                        if (item.Status == 0)
                        {
                            var de = outStockDetail.Where(m =>
                                m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo).Select(m => m.Id).ToList();
                            var bo = outStockBox.Where(m => de.Contains(m.StockDetailId)).ToList();
                            var logList = new List<BllStockCheckLog>();
                            foreach (var b in bo)
                            //判断是否为无码物料
                            if (skuNo.Contains(item.SkuNo))
                            {
                                var de = outStockDetail.First(m => m.IsDel == "0" &&
                                m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo);
                                var checkLog = new BllStockCheckLog()
                                {
                                    CRNo = item.CRNo,
                                    PalletNo = item.PalletNo,
                                    BoxNo = b.BoxNo,
                                    BoxNo2 = b.BoxNo2,
                                    BoxNo3 = b.BoxNo3,
                                    Qty = b.Qty,
                                    SkuNo = b.SkuNo,
                                    SkuName = b.SkuName,
                                    Standard = b.Standard,
                                    LotNo = b.LotNo,
                                    LotText = b.LotText,
                                    SupplierLot = b.SupplierLot,
                                    BoxNo = "",
                                    BoxNo2 = "",
                                    BoxNo3 = "",
                                    Qty = (int?)de.Qty,
                                    SkuNo = de.SkuNo,
                                    SkuName = de.SkuName,
                                    Standard = de.Standard,
                                    LotNo = de.LotNo,
                                    LotText = de.LotText,
                                    SupplierLot = de.SupplierLot,
                                    CreateUser = userId,
                                    CreateTime = time
                                };
                                logList.Add(checkLog);
                            }
                            }
                            else
                            {
                                var de = outStockDetail.Where(m =>
                                m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo).Select(m => m.Id).ToList();
                                var bo = outStockBox.Where(m => de.Contains(m.StockDetailId)).ToList();
                                foreach (var b in bo)
                                {
                                    var checkLog = new BllStockCheckLog()
                                    {
                                        CRNo = item.CRNo,
                                        PalletNo = item.PalletNo,
                                        BoxNo = b.BoxNo,
                                        BoxNo2 = b.BoxNo2,
                                        BoxNo3 = b.BoxNo3,
                                        Qty = b.Qty,
                                        SkuNo = b.SkuNo,
                                        SkuName = b.SkuName,
                                        Standard = b.Standard,
                                        LotNo = b.LotNo,
                                        LotText = b.LotText,
                                        SupplierLot = b.SupplierLot,
                                        CreateUser = userId,
                                        CreateTime = time
                                    };
                                    logList.Add(checkLog);
                                }
                            }
                            //生成盘点记录
                            Db.Insertable(logList).ExecuteCommand();
                        }
@@ -915,10 +968,10 @@
                        {
                            var de = outStockDetail.First(m => m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo);
                            //判断是否是零箱库,当前明细信息直接更新出库完成 
                            if (de!= null && de.WareHouseNo=="W02")
                            if (de != null && de.WareHouseNo == "W02")
                            {
                                //盘点明细状态改为待盘点 
                                item.Status = 2;
                                item.Status = 2;
                                Db.Updateable(item).ExecuteCommand();
                                //盘点信息修改
                                if (notice.Status == 0)
@@ -985,7 +1038,7 @@
                            #region 添加出库任务
                            var taskNo = new Common().GetMaxNo("TK");
                            //添加出库任务
                            var exTask = new LogTask
                            var exTask = new LogTask
                            {
                                TaskNo = taskNo,
                                Sender = "WMS",
@@ -1104,22 +1157,22 @@
                        try
                        {
                            var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss")
                            response = HttpHelper.DoPost(url, jsonData, "下发给WCS出库命令", "WCS");
                            //response = HttpHelper.DoPost(url, jsonData, "下发给WCS出库命令", "WCS"); //正式版本放开
                            var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss")
                            ////解析返回数据 
                            var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
                            if (wcsModel.StatusCode == 0)
                            {
                                //        //更改任务的发送返回时间//
                                new TaskServer().EditTaskIssueOk(list2, time1, time2);
                            str += "下发成功";
                            }
                            if (wcsModel.StatusCode == -1)
                            {
                                new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
                                throw new Exception(wcsModel.Msg);
                            }
                            //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
                            //if (wcsModel.StatusCode == 0)
                            //{
                            //        //更改任务的发送返回时间//
                            //    new TaskServer().EditTaskIssueOk(list2, time1, time2);
                            //str += "下发成功";
                            //}
                            //if (wcsModel.StatusCode == -1)
                            //{
                            //    new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
                            //    throw new Exception(wcsModel.Msg);
                            //}
                        }
                        catch (Exception ex)
                        {
@@ -1383,5 +1436,5 @@
        }
        #endregion
    }
    }
}