Administrator
2024-03-02 18dfe607d34ecbc7881e8c80c8434354723d27c7
Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
@@ -11,6 +11,7 @@
using Model.ModelVm.BllCheckVm;
using Newtonsoft.Json;
using SqlSugar;
using SqlSugar.Extensions;
using Utility.Tools;
using WMS.BLL.LogServer;
using WMS.DAL;
@@ -543,7 +544,10 @@
                    //循环盘点记录
                    foreach (var l in demo)
                    {
                        var sku = Db.Queryable<SysMaterials>().First(a => a.IsDel == "0" && a.SkuNo == l.SkuNo);
                        if (l.CheckResult == 0)//正常
                        {
                            if (sku.Type != "4")
                        {
                            var de3 = stockBox.First(m => m.BoxNo == l.BoxNo && m.BoxNo3 == l.BoxNo3);
                            if (de3 == null)
@@ -558,7 +562,21 @@
                            de2.Status = "0";//将库存明细状态改为待分配
                            Db.Updateable(de2).ExecuteCommand();
                        }
                            else
                            {
                                var de2 = stockDetail.First(m => m.PalletNo == l.PalletNo && m.SkuNo == l.SkuNo);
                                if (de2 == null)
                                {
                                    throw new Exception($"未查询到{l.PalletNo}的库存明细的信息");
                                }
                                de2.Status = "0";//将库存明细状态改为待分配
                                Db.Updateable(de2).ExecuteCommand();
                            }
                        }
                        else if (l.CheckResult == 1)//盘亏
                        {
                            if (sku.Type != "4")
                        {
                            var de3 = stockBox.First(m => m.BoxNo == l.BoxNo && m.BoxNo3 == l.BoxNo3);
                            if (de3 == null)
@@ -583,11 +601,35 @@
                            Db.Updateable(de).ExecuteCommand();
                            Db.Updateable(de2).ExecuteCommand();
                            Db.Deleteable(de3).ExecuteCommand();
                            }
                            else
                            {
                                var de2 = stockDetail.First(m => m.PalletNo == l.PalletNo && m.SkuNo == l.SkuNo);
                                if (de2 == null)
                                {
                                    throw new Exception($"未查询到{l.PalletNo}的库存明细的信息");
                                }
                                de2.Status = "0";
                                de2.Qty = l.RealQty;
                                var de = stock.First(m => m.SkuNo == l.SkuNo && m.LotNo == l.LotNo);
                                if (de == null)
                                {
                                    throw new Exception($"未查询到物料{l.SkuNo}批次{l.LotNo}的总库存的信息");
                                }
                                de.Qty -= Convert.ToDecimal(l.Qty - l.RealQty);
                                Db.Updateable(de).ExecuteCommand();
                                Db.Updateable(de2).ExecuteCommand();
                            }
                        }
                        else if (l.CheckResult == 2)//盘盈
                        {                           
                            var stockDetailInfo = stockDetail.First(m => m.PalletNo == d.PalletNo && m.SkuNo == d.SkuNo && m.LotNo == d.LotNo);//库存明细
                            if (sku.Type != "4")
                            {
                            var stockBoxInfo = stockBox.First(m => m.StockDetailId == stockDetailInfo.Id);//库存箱支明细
                            var boxInfo = boxQtyList.First(m => m.boxNo == l.BoxNo);//找到对应箱子是否零箱
                            //添加库存箱支信息
@@ -617,6 +659,14 @@
                            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 +674,15 @@
                            {
                                throw new Exception($"未查询到{l.BoxNo}箱中{l.BoxNo3}库存的信息");
                            }
                            if (sku.Type != "4")
                            {
                            de.Qty += (int)l.RealQty;
                            }
                            else
                            {
                                de.Qty += (int)(l.RealQty - l.Qty);
                            }
                            Db.Updateable(de).ExecuteCommand();
                        }
                    }
@@ -868,6 +926,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,10 +937,39 @@
                    {
                        if (item.Status == 0)
                        {
                            var logList = new List<BllStockCheckLog>();
                            //判断是否为无码物料
                            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 = "",
                                    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();
                            var logList = new List<BllStockCheckLog>();
                            foreach (var b in bo)
                            {
                                var checkLog = new BllStockCheckLog()
@@ -903,6 +992,8 @@
                                };
                                logList.Add(checkLog);
                            }     
                            }
                            //生成盘点记录
                            Db.Insertable(logList).ExecuteCommand();
                        }
@@ -1104,22 +1195,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)
                            {
                            //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);
                            }
                            //    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)
                        {