zhaowc
2025-03-27 d07f25c163706ac46a83bd2c63db1e3c52715222
Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
@@ -14,6 +14,7 @@
using SqlSugar.Extensions;
using Utility.Tools;
using WMS.BLL.LogServer;
using WMS.BLL.SysServer;
using WMS.DAL;
using WMS.Entity.BllAsnEntity;
using WMS.Entity.BllCheckEntity;
@@ -200,7 +201,7 @@
                    LotNo = m.LotNo,
                    LotText = m.LotText,
                    SupplierLot = m.SupplierLot,
                    Qty = (decimal)m.Qty,
                    Qty = m.Qty,
                    PalletNo = m.PalletNo
                }).ToList();
@@ -658,12 +659,12 @@
                                };
                                Db.Insertable<DataBoxInfo>(databox).ExecuteCommand();
                                //库存明细增加数量
                                stockDetailInfo.Qty += l.RealQty;
                                stockDetailInfo.Qty += (int)l.RealQty;
                            }
                            else
                            {
                                //库存明细增加数量
                                stockDetailInfo.Qty = l.RealQty;
                                stockDetailInfo.Qty = (int)l.RealQty;
                            }
                            stockDetailInfo.Status = "0";
@@ -676,11 +677,11 @@
                            }
                            if (sku.Type != "4")
                            {
                                de.Qty += (decimal)l.RealQty;
                                de.Qty += (int)l.RealQty;
                            }
                            else
                            {
                                de.Qty += (decimal)(l.RealQty - l.Qty);
                                de.Qty += (int)(l.RealQty - l.Qty);
                            }
                            Db.Updateable(de).ExecuteCommand();
@@ -994,7 +995,7 @@
                                }
                            }
                            //生成盘点记录
                            //生成盘点记录
                            Db.Insertable(logList).ExecuteCommand();
                        }
                        // 储位号
@@ -1295,7 +1296,7 @@
        }
        //AGV移库完成
        public void MoveSuccess(string taskNo, int userId)
        public void MoveSuccess(string taskNo,string mesTokenUrl, string mesUrl, int userId)
        {
            try
            {
@@ -1332,22 +1333,24 @@
                var endLocate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat);
                if (endLocate != null)
                {
                    if (endLocate.Status != "0")
                    if (endLocate.Status != "4")
                    {
                        throw new Exception("目标储位状态非空储位");
                        throw new Exception("目标储位状态非移入中");
                    }
                }
                var data = new List<RequertBeiliaoInfoModel>();
                //更改库存明细
                foreach (var item in stockDetail)
                {
                    item.Status = "0";//待分配
                    item.LockQty = 0;//锁定数量改为0
                    //item.Status = "0";//待分配
                    //item.LockQty = 0;//锁定数量改为0
                    if (endLocate != null)//有目标储位说明移到其他区域储位
                    {
                        item.LocatNo = endLocate.LocatNo;//储位更改
                        item.WareHouseNo = endLocate.WareHouseNo;//所属仓库更改
                        item.RoadwayNo = endLocate.RoadwayNo;//所属巷道更改
                        item.AreaNo = endLocate.AreaNo;//所属区域更改
                        item.AreaNo = endLocate.AreaNo;//所属区域更改
                    }
                    else//没有目标储位说明移到入库口
                    {
@@ -1355,21 +1358,102 @@
                        item.WareHouseNo = "";//所属仓库更改(改为空)
                        item.RoadwayNo = "";//所属巷道更改(改为空)
                        item.AreaNo = "";//所属区域更改(改为空)
                    }
                    }
                    if (item.Qty == item.LockQty && item.LockQty>0)
                    {
                        item.Status = "2";
                    }
                    else if (item.Qty > item.LockQty && item.LockQty > 0)
                    {
                        item.Status = "1";
                    }
                    else if (item.Qty > item.LockQty && item.LockQty == 0)
                    {
                        item.Status = "0";
                    }
                    Db.Updateable(item).ExecuteCommand();
                    //更改库存总表
                    var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo);
                    stock.LockQty -= (decimal)item.Qty;
                    Db.Updateable(stock).ExecuteCommand();
                    if (endLocate != null && endLocate.AreaNo == "B12") //是否是3楼缓存区 是:删除库存
                    {
                        if (string.IsNullOrWhiteSpace(item.SONo))
                        {
                            throw new Exception("当前托盘不是拼托出库托盘");
                        }
                        //记录托盘上信息给MES
                        var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == item.Id).ToList();
                        if (boxInfo.Count == 0)
                        {
                            throw new Exception("托盘上物料箱码信息不存在,请检查!");
                        }
                        foreach (var item2 in boxInfo)
                        {
                            data.Add(new RequertBeiliaoInfoModel()
                            {
                                no = item2.BoxNo,
                                materiel_no = item.SkuNo,
                                materiel_name = item.SkuName,
                                qty = item.Qty,
                                batch = item.LotNo,
                                producttime = item2.ProductionTime.ToString().Substring(1, 8),
                                expiry = item2.ExpirationTime.ToString().Substring(1, 8)
                            });
                        }
                        //库存箱码明细删除
                        Db.Deleteable(boxInfo).ExecuteCommand();
                        //删除库存托盘信息
                        Db.Deleteable(item).ExecuteCommand();
                        //更改库存总表
                        var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo);
                        stock.LockQty -= (decimal)item.Qty;
                        stock.Qty -= (decimal)item.Qty;
                        Db.Updateable(stock).ExecuteCommand();
                        //更改托盘状态
                        var pallet = Db.Queryable<SysPallets>().First(m=>m.IsDel =="0" && m.PalletNo == task.PalletNo);
                        if (pallet != null)
                        {
                            pallet.Status = "0";
                            Db.Updateable(pallet).ExecuteCommand();
                        }
                    }
                }
                if (endLocate != null)
                {
                    //更改目标储位状态
                    endLocate.Status = "1";//有物品
                    Db.Updateable(endLocate).ExecuteCommand();
                }
                }
                //正式运行程序放开
                if (endLocate != null && endLocate.AreaNo == "B12")
                {
                    //获取令牌
                    var token = new Token().GetMesToken(mesTokenUrl);
                    Dictionary<string, string> mesDic = new Dictionary<string, string>()
                    {
                        {"Authorization",token }
                    };
                    var mesData = new RequertBeiliaoModel()
                    {
                        morder_no = stockDetail.First().SONo,
                        pallet = stockDetail.First().PalletNo,
                        layer_no = endLocate.LocatNo,
                        items = data
                    };
                    var jsonData = JsonConvert.SerializeObject(mesData);
                    //调用接口
                    var response = HttpHelper.DoPost(mesUrl, jsonData, "备料完成运至缓存区反馈至MES", "MES", mesDic);
                    var obj = JsonConvert.DeserializeObject<MesModel>(response);//解析返回数据
                    if (obj.status != "0")
                    {
                        throw new Exception("备料同步MES失败:" + obj.message);
                    }
                }
                if (userId != 0)
                {
                    //添加操作日志记录