zhaowc
2025-03-27 d07f25c163706ac46a83bd2c63db1e3c52715222
Wms/WMS.BLL/DataServer/StockServer.cs
@@ -9,6 +9,7 @@
using Model.InterFaceModel;
using Model.ModelDto;
using Model.ModelDto.DataDto;
using Model.ModelDto.LogDto;
using Model.ModelDto.SysDto;
using Model.ModelVm.DataVm;
using Newtonsoft.Json;
@@ -1101,7 +1102,10 @@
                }
                #endregion
                palletNo.IsCancel = 0;
                palletNo.IsSend = 0;
                palletNo.IsFinish = 0;
                Db.Updateable(palletNo).ExecuteCommand();
                Db.CommitTran();
@@ -1353,12 +1357,12 @@
                        }
                    }
                }
                else
                else
                {
                    storageStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //获取起始库位信息
                    if (storageStart == null)
                    {
                        throw new Exception("未找到相应的起始库位");
                        isstock = 2; //库口到缓存位任务
                    }
                }
                //var soAllot = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.PalletNo == palletNo.PalletNo);//获取分配信息
@@ -1377,13 +1381,13 @@
                if (isstock == 1)
                {
                    startLocat = Db.Queryable<SysStorageLocat>().First(w=> w.IsDel == "0" && w.LocatNo == palletNo.StartLocat);
                    startLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat);
                    //修改起始库位状态
                    startLocat.Status = "0";//0:空储位 1:有物品 2:入库中 3:出库中 4:移入中 5:移出中 
                    Db.Updateable(startLocat).ExecuteCommand();
                    //调用MES备料反馈完成接口
                    #region  MES备料完成反馈
                    #region
                    var data = new List<RequertBeiliaoInfoModel>();
                    //更改库存明细
@@ -1472,7 +1476,7 @@
                            case "1":
                                endlono = "Y003_0" + endLocat.LocatNo.ToString().Substring(5, 2);
                                break;
                        }
                        var mescode = Db.Queryable<BllExportNotice>().Where(w => w.SONo == stockDetail.First().SONo).First();
                        var mesData = new RequertBeiliaoModel()
@@ -1495,7 +1499,7 @@
                    }
                    #endregion
                }
                else  //空托盘处理
                else if (isstock == 0)
                {
                    //修改组托信息
                    if (bindDetail.WareHouseNo == "W01") //1、空托盘垛到空托盘收集器;
@@ -1524,7 +1528,25 @@
                        }
                    }
                    Db.Updateable(bindDetail).ExecuteCommand();
                }
                else //库口移库到缓存位
                {
                    foreach (var item in stockDetail)
                    {
                        item.LocatNo = endLocat.LocatNo;//储位更改
                        item.WareHouseNo = endLocat.WareHouseNo;//所属仓库更改
                        item.RoadwayNo = endLocat.RoadwayNo;//所属巷道更改
                        item.AreaNo = endLocat.AreaNo;//所属区域更改
                        Db.Updateable(item).ExecuteCommand();
                    }
                }
                palletNo.IsCancel = 0;
                palletNo.IsSend = 0;
                palletNo.IsFinish = 0;
                Db.Updateable(palletNo).ExecuteCommand();
                Db.CommitTran();
            }
            catch (Exception ex)
@@ -1535,7 +1557,7 @@
        }
        #endregion
        #region 数字孪生系统获取库存信息
        #region 数字孪生系统反馈信息
        /// <summary>
        /// 反馈数字孪生系统库存信息
@@ -1583,6 +1605,170 @@
                throw new Exception("返回库存信息有误,错误信息:" + ex);
            }
        }
        /// <summary>
        /// 反馈数字孪生系统操作信息
        /// </summary>
        /// <param name=""></param>
        /// <returns></returns>
        public List<ReLogDataModel> GetLogDataList()
        {
            try
            {
                //库存信息
                var stockDetailsList = Db.Queryable<DataStockDetail>().ToList();
                var sql = "select LocatNo,PalletNo,SkuName,Standard,LotNo,InspectStatus,Qty,ExpirationTime as Warranty from DataStockDetail ";
                var item2 = Expressionable.Create<LogOperationSO>()
                   .And(it => it.IsDel == "0")
                   .ToExpression();//注意 这一句 不能少
                var list2 = Db.Queryable<LogOperationSO>().Where(item2)
                    .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
                    .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id)
                    .Select((it, dic, users) => new OperationDto()
                    {
                        Id = it.Id,
                        ParentNo = it.ParentNo,
                        MenuNo = it.MenuNo,
                        MenuName = it.MenuName,
                        FkNo = it.FkNo,
                        Type = dic.DictName,
                        Msg = it.Msg,
                        CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        CreateUserName = users.RealName,
                    });
                List<ReLogDataModel> list = Db.Ado.SqlQuery<ReLogDataModel>(sql);
                return list;
            }
            catch (Exception ex)
            {
                throw new Exception("返回库存信息有误,错误信息:" + ex);
            }
        }
        /// <summary>
        /// 查询操作日志
        /// </summary>
        /// <param name="menuName">菜单名称</param>
        /// <param name="type">类型</param>
        /// <returns></returns>
        public List<OperationDto> ReLogData()
        {
            try
            {
                var total = 0;
                #region asn
                var item = Expressionable.Create<LogOperationASN>()
                    .And(it => it.IsDel == "0")
                    .ToExpression();//注意 这一句 不能少
                var list = Db.Queryable<LogOperationASN>().Where(item)
                    .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
                    .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id)
                    .Select((it, dic, users) => new OperationDto()
                    {
                        Id = it.Id,
                        ParentNo = it.ParentNo,
                        MenuNo = it.MenuNo,
                        MenuName = it.MenuName,
                        FkNo = it.FkNo,
                        Type = dic.DictName,
                        Msg = it.Msg,
                        CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        CreateUserName = users.RealName,
                    });
                #endregion
                #region so
                var item2 = Expressionable.Create<LogOperationSO>()
                   .And(it => it.IsDel == "0")
                   .ToExpression();//注意 这一句 不能少
                var list2 = Db.Queryable<LogOperationSO>().Where(item2)
                    .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
                    .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id)
                    .Select((it, dic, users) => new OperationDto()
                    {
                        Id = it.Id,
                        ParentNo = it.ParentNo,
                        MenuNo = it.MenuNo,
                        MenuName = it.MenuName,
                        FkNo = it.FkNo,
                        Type = dic.DictName,
                        Msg = it.Msg,
                        CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        CreateUserName = users.RealName,
                    });
                #endregion
                #region cr
                var item3 = Expressionable.Create<LogOperationCR>()
                    .And(it => it.IsDel == "0")
                    .ToExpression();//注意 这一句 不能少
                var list3 = Db.Queryable<LogOperationCR>().Where(item3)
                    .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
                    .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id)
                    .Select((it, dic, users) => new OperationDto()
                    {
                        Id = it.Id,
                        ParentNo = it.ParentNo,
                        MenuNo = it.MenuNo,
                        MenuName = it.MenuName,
                        FkNo = it.FkNo,
                        Type = dic.DictName,
                        Msg = it.Msg,
                        CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        CreateUserName = users.RealName,
                    });
                #endregion
                #region sys
                var item4 = Expressionable.Create<LogOperationSys>()
                    .ToExpression();//注意 这一句 不能少
                var list4 = Db.Queryable<LogOperationSys>().Where(item4)
                    .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
                    .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id)
                    .Select((it, dic, users) => new OperationDto()
                    {
                        Id = it.Id,
                        ParentNo = it.ParentNo,
                        MenuNo = it.MenuNo,
                        MenuName = it.MenuName,
                        FkNo = it.FkNo,
                        Type = dic.DictName,
                        Msg = it.Msg,
                        CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        CreateUserName = users.RealName,
                    });
                #endregion
                var data = Db.UnionAll(list, list2, list3, list4).OrderByDescending(it => it.CreateTime);
                return data.OrderByDescending(m => m.CreateTime).ToList();
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
        #endregion
    }
}