bklLiudl
2024-07-17 5d03e942416d07962409f7d3230097463fee63fa
Merge branch 'master' into Liudl
20个文件已修改
1479 ■■■■ 已修改文件
HTML/views/SOSetting/ExportAllot.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Pda/View/login.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs 626 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllSoServer/CompleteDetailServer.cs 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllSoServer/ExportAllotServer.cs 118 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllSoServer/ExportNoticeDetailServer.cs 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllSoServer/WaveMageServer.cs 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/LogServer/OperationSOServer.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/SysServer/PalletsServer.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.Entity/Context/DataContext.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IBllSoServer/ICompleteDetailServer.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IBllSoServer/IExportAllotServer.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IBllSoServer/IWaveMageServer.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/ILogServer/IOperationSOServer.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/BllAsnController.cs 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/BllCheckController.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/BllSoController.cs 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/DownApiController.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HTML/views/SOSetting/ExportAllot.html
@@ -329,7 +329,7 @@
            var mxId = "0";
            var yemianid = 0;
            refreshTable();
            refreshTablemx(mxId)
            //refreshTablemx(mxId)
            //渲染出库分配table
            //#region 自定义表头
            var TotalColsArr = [[
Pda/View/login.html
@@ -195,12 +195,12 @@
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        });
                    } else {
                        if(res.code==200){//成功
                        if(res.code==0){//成功
                            layer.msg('登陆成功', {
                                icon: 1,
                                time: 500 //2秒关闭(如果不配置,默认是3秒)
                            }, function () {
                                $.cookie('token', res.ToKen.TokenStr);
                                $.cookie('token', res.data);
                                //回调
                                location.href="/View/index.html";
                            });
Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
@@ -3,6 +3,7 @@
using System.ComponentModel.Design;
using System.Linq;
using System.Linq.Expressions;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
@@ -340,7 +341,7 @@
                    ParentName = "库内作业",
                    MenuName = "盘点单据",
                    FkNo = model.CrNo,
                    TypeName = "添加",
                    TypeName = "编辑",
                    Msg = $"编辑了单据号为{model.CrNo}的盘点单信息"
                });
                //var k = new OperationCrServer().AddLogOperationCr("库内作业", "盘点单据", model.CrNo, "编辑", $"编辑了单据号为{model.CrNo}的盘点单信息", _userManager.UserId);
@@ -889,344 +890,337 @@
        //盘点下发出库
        public async Task<List<OutCommandDto>> CheckOutHouse(string crNo, string outMode, string url, string str)
        {
            try
            #region 集合
            var outDtoList = new List<OutCommandDto>(); //出库数据的集合
                                                        //记录错误信息的集合
            var flagList = new List<int>();//1:当前要出库的储位正在移出、2 出库的托盘储位信息错误(在储位表中未查询到)、3储位损坏不能出库、4 要出库的托盘正在入库
            #endregion
            var com = new Common();
            //assign.IsHavePyTask();
            var notice = await Db.Queryable<BllStockCheck>().FirstAsync(m => m.CRNo == crNo && m.IsDel == "0");
            if (notice == null)
            {
                #region 集合
                var outDtoList = new List<OutCommandDto>(); //出库数据的集合
                //记录错误信息的集合
                var flagList = new List<int>();//1:当前要出库的储位正在移出、2 出库的托盘储位信息错误(在储位表中未查询到)、3储位损坏不能出库、4 要出库的托盘正在入库
                #endregion
                var com = new Common();
                //assign.IsHavePyTask();
                var notice = await Db.Queryable<BllStockCheck>().FirstAsync(m => m.CRNo == crNo && m.IsDel == "0");
                if (notice == null)
                throw Oops.Bah($"未找到{crNo}盘点单信息");
            }
            //所有要出库的盘点明细信息(等待的信息和待拣货的信息)
            var funSetting = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetNo == "InventoryCheckMethod");
            if (funSetting == null || funSetting.IsEnable == "OFF")
            {
                throw Oops.Bah("需配置盘点方式");
            }
            var list = await Db.Queryable<BllStockCheckDetail>().Where(a => a.IsDel == "0" && a.CRNo == crNo && a.Status == 0).ToListAsync();
            if (list.Count == 0) //判断是否有需要下发的盘点明细
            {
                throw Oops.Bah("当前盘点单据无需要下发的托盘");
            }
            if (funSetting.SetValue == "once")
            {
                if (list.Any(s => s.Status == 1 || s.Status == 2))
                {
                    throw Oops.Bah($"未找到{crNo}盘点单信息");
                    throw Oops.Bah("已有正在出库或待盘点的数据,请完成盘点后再出库");
                }
                //所有要出库的盘点明细信息(等待的信息和待拣货的信息)
                var list = await Db.Queryable<BllStockCheckDetail>().Where(a => a.IsDel == "0" && a.CRNo == crNo && a.Status == 0).ToListAsync();
                if (list.Count == 0) //判断是否有需要下发的盘点明细
                list = new List<BllStockCheckDetail>() { list.FirstOrDefault() };
            }
            #region
            //要出库的托盘集合
            var outLpnList = list.Select(m => m.PalletNo).Distinct().ToList();
            //要出库的明细集合
            var outStockDetail = await Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToListAsync();
            var outStockBox = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToListAsync();
            //获取物料信息
            var skuNo = await Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.Type == "4").Select(a => a.SkuNo).ToListAsync();
            var time = DateTime.Now;
            //Db.BeginTran();
            //循环盘点明细的信息生成出库任务
            foreach (var item in list)
            {
                if (item.Status == 0)
                {
                    throw Oops.Bah("当前盘点单据无需要下发的托盘");
                }
                #region
                //要出库的托盘集合
                var outLpnList = list.Select(m => m.PalletNo).Distinct().ToList();
                //要出库的明细集合
                var outStockDetail = await Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToListAsync();
                var outStockBox = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToListAsync();
                //获取物料信息
                var skuNo = await Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.Type == "4").Select(a => a.SkuNo).ToListAsync();
                var time = DateTime.Now;
                Db.BeginTran();
                try
                {
                    //循环盘点明细的信息生成出库任务
                    foreach (var item in list)
                    var logList = new List<BllStockCheckLog>();
                    //判断是否为无码物料
                    if (skuNo.Contains(item.SkuNo))
                    {
                        if (item.Status == 0)
                        var de = outStockDetail.First(m => m.IsDel == "0" &&
                        m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo);
                        var checkLog = new BllStockCheckLog()
                        {
                            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);
                            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,
                                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 = _userManager.UserId,
                            CreateTime = time
                        };
                        logList.Add(checkLog);
                                    CreateUser = _userManager.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 = _userManager.UserId,
                                        CreateTime = time
                                    };
                                    logList.Add(checkLog);
                                }
                            }
                            //生成盘点记录
                            await Db.Insertable(logList).ExecuteCommandAsync();
                        }
                        // 储位号
                        var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo && m.SkuNo == item.SkuNo && m.LotNo == item.LotNo).LocatNo;
                        #region 判断
                        //判断托盘是否在库内
                        if (string.IsNullOrWhiteSpace(locateNo))
                    }
                    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 de = outStockDetail.First(m => m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo);
                            //判断是否是零箱库,当前明细信息直接更新出库完成
                            if (de != null && de.WareHouseNo == "W02")
                            var checkLog = new BllStockCheckLog()
                            {
                                //盘点明细状态改为待盘点
                                item.Status = 2;
                                await Db.Updateable(item).ExecuteCommandAsync();
                                //盘点信息修改
                                if (notice.Status == 0)
                                {
                                    notice.CheckDate = DateTime.Now;
                                    notice.Status = 1;
                                    notice.UpdateUser = _userManager.UserId;
                                    notice.UpdateTime = time;
                                    await Db.Updateable(notice).ExecuteCommandAsync();
                                }
                                //库存中当前托盘的信息
                                var stockDetail = await Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == item.PalletNo).ToListAsync();
                                foreach (var s in stockDetail)
                                {
                                    s.LocatNo = "";//储位更改(改为空)
                                    s.WareHouseNo = "";//所属仓库更改(改为空)
                                    s.RoadwayNo = "";//所属巷道更改(改为空)
                                    s.AreaNo = "";//所属区域更改(改为空)
                                    await Db.Updateable(s).ExecuteCommandAsync();
                                }
                                flagList.Add(5);
                                continue;
                            }
                            //判断托盘是否在入库中
                            var imBl = com.GetImTask(item.PalletNo);
                            if (imBl != null)
                            {
                                flagList.Add(4);
                                continue;
                            }
                            //判断是否是已经出过库又回库(状态为待拣货的 1)
                            if (item.Status == 0)
                            {
                                //如果不在仓库内,当前明细信息直接更新出库完成
                                item.Status = 2;//状态
                                await Db.Updateable(item).ExecuteCommandAsync();
                                if (notice.Status == 0)
                                {
                                    notice.CheckDate = DateTime.Now;
                                    notice.Status = 1;
                                    notice.UpdateUser = _userManager.UserId;
                                    notice.UpdateTime = time;
                                    await Db.Updateable(notice).ExecuteCommandAsync();
                                }
                            }
                            continue;
                        }
                        //当前出库的储位信息
                        var locate = await Db.Queryable<SysStorageLocat>().FirstAsync(m => m.LocatNo == locateNo && m.IsDel == "0");
                        if (locate == null)
                        {
                            flagList.Add(2);
                            continue;
                        }
                        //判断储位标志是否为损坏
                        if (locate.Flag == "2")
                        {
                            flagList.Add(3);
                            continue;
                        }
                        #endregion
                        if (locate.Status == "1") //有物品
                        {
                            #region 添加出库任务
                            var taskNo = new Common().GetMaxNo("TK");
                            //添加出库任务
                            var exTask = new LogTask
                            {
                                TaskNo = taskNo,
                                Sender = "WMS",
                                Receiver = "WCS",
                                IsSuccess = 0, //是否下发成功 0失败 1成功
                                StartLocat = locate.LocatNo,//起始位置
                                EndLocat = outMode,//目标位置
                                PalletNo = item.PalletNo,//托盘码
                                IsSend = 1,//是否可再次下发
                                IsCancel = 1,//是否可取消
                                IsFinish = 1,//是否可完成
                                Type = "1",//任务类型 0 入库任务 1 出库任务  2 移库任务
                                Status = "0",//任务状态0:等待执行1正在执行2执行完成
                                OrderType = "2",//0 入库单 1 出库单  2 盘点单  3 移库单
                                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 = _userManager.UserId,
                                CreateTime = time
                            };
                            await Db.Insertable(exTask).ExecuteCommandAsync();
                            outDtoList.Add(new OutCommandDto()
                            {
                                PalletNo = item.PalletNo,//托盘号
                                StartLocate = locate.LocatNo, // 起始位置
                                StartRoadway = locate.RoadwayNo,
                                EndLocate = "", // 目标位置
                                TaskNo = exTask.TaskNo, // 任务号
                                TaskType = "1",// 任务类型 (出库)
                                OutMode = "",  //目标地址
                                Order = 1
                            });
                            #endregion
                            #region 改变数据
                            if (item.Status == 0)//判断托盘是否下发过
                            {
                                if (notice.Status == 0)
                                {
                                    notice.CheckDate = DateTime.Now;
                                    notice.Status = 1;
                                    notice.UpdateUser = _userManager.UserId;
                                    notice.UpdateTime = time;
                                    await Db.Updateable(notice).ExecuteCommandAsync();
                                }
                            }
                            locate.Status = "3"; //要出库的储位改变状态 正在出库
                            await Db.Updateable(locate).ExecuteCommandAsync();
                            item.TaskNo = exTask.TaskNo; // 出库分配信息中更新任务号
                            item.Status = 1; // 出库分配信息状态改为正在执行
                            await Db.Updateable(item).ExecuteCommandAsync();
                            #endregion
                            flagList.Add(0);
                        }
                        else if (locate.Status == "3") //出库中
                        {
                            #region 改变数据
                            //判断是否是已经出过库又回库(状态为待拣货的 1)
                            if (item.Status == 0)
                            {
                                if (notice.Status == 0)
                                {
                                    notice.CheckDate = DateTime.Now;
                                    notice.Status = 1;
                                    notice.UpdateUser = _userManager.UserId;
                                    notice.UpdateTime = time;
                                    await Db.Updateable(notice).ExecuteCommandAsync();
                                }
                            }
                            var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "2" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo);
                            item.TaskNo = taskNo.TaskNo;
                            item.Status = 1; // 出库分配信息状态改为正在执行
                            await Db.Updateable(item).ExecuteCommandAsync();
                            #endregion
                        }
                        else if (locate.Status == "5") //移出中
                        {
                            flagList.Add(1);
                            logList.Add(checkLog);
                        }
                    }
                    //添加操作日志记录
                    //var k = new OperationCrServer().AddLogOperationCr("库内作业", "盘点单据", crNo, "出库", $"点击出库按钮盘点单号为:{crNo}的盘点单", userId);
                    await _operation.AddLogOperationCr(new OperationInputVm()
                    {
                        ParentName = "库内作业",
                        MenuName = "盘点单据",
                        FkNo = crNo,
                        TypeName = "出库",
                        Msg = $"点击出库按钮盘点单号为:{crNo}的盘点单"
                    });
                    Db.CommitTran();
                    str = string.Empty;
                    if (flagList.Count(m => m == 1) > 0)
                    {
                        str += "1.当前要出库的储位正在移出、";
                    }
                    if (flagList.Count(m => m == 2) > 0)
                    {
                        str += "2.出库的托盘储位信息错误(在储位表中未查询到)、";
                    }
                    if (flagList.Count(m => m == 3) > 0)
                    {
                        str += "4.储位损坏不能出库、";
                    }
                    if (flagList.Count(m => m == 4) > 0)
                    {
                        str += "3.要出库的托盘正在入库、";
                    }
                    if (flagList.Count(m => m == 5) > 0)
                    {
                        str += "5.要出库的托盘在零箱库、";
                    }
                    if (outDtoList.Count > 0)
                    {
                        // 正式运行程序放开
                        var list2 = outDtoList.Select(m => m.TaskNo).ToList();
                        var jsonData = JsonConvert.SerializeObject(outDtoList);
                        string response = "";
                        try
                        {
                            var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss")
                            //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);
                            //}
                        }
                        catch (Exception ex)
                        {
                            throw new Exception(ex.Message);
                        }
                    }
                    return outDtoList;
                    //生成盘点记录
                    await Db.Insertable(logList).ExecuteCommandAsync();
                }
                catch (Exception e)
                // 储位号
                var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo && m.SkuNo == item.SkuNo && m.LotNo == item.LotNo).LocatNo;
                #region 判断
                //判断托盘是否在库内
                if (string.IsNullOrWhiteSpace(locateNo))
                {
                    Db.RollbackTran();
                    throw new Exception(e.Message);
                    var de = outStockDetail.First(m => m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo);
                    //判断是否是零箱库,当前明细信息直接更新出库完成
                    if (de != null && de.WareHouseNo == "W02")
                    {
                        //盘点明细状态改为待盘点
                        item.Status = 2;
                        await Db.Updateable(item).ExecuteCommandAsync();
                        //盘点信息修改
                        if (notice.Status == 0)
                        {
                            notice.CheckDate = DateTime.Now;
                            notice.Status = 1;
                            notice.UpdateUser = _userManager.UserId;
                            notice.UpdateTime = time;
                            await Db.Updateable(notice).ExecuteCommandAsync();
                        }
                        //库存中当前托盘的信息
                        var stockDetail = await Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == item.PalletNo).ToListAsync();
                        foreach (var s in stockDetail)
                        {
                            s.LocatNo = "";//储位更改(改为空)
                            s.WareHouseNo = "";//所属仓库更改(改为空)
                            s.RoadwayNo = "";//所属巷道更改(改为空)
                            s.AreaNo = "";//所属区域更改(改为空)
                            await Db.Updateable(s).ExecuteCommandAsync();
                        }
                        flagList.Add(5);
                        continue;
                    }
                    //判断托盘是否在入库中
                    var imBl = com.GetImTask(item.PalletNo);
                    if (imBl != null)
                    {
                        flagList.Add(4);
                        continue;
                    }
                    //判断是否是已经出过库又回库(状态为待拣货的 1)
                    if (item.Status == 0)
                    {
                        //如果不在仓库内,当前明细信息直接更新出库完成
                        item.Status = 2;//状态
                        await Db.Updateable(item).ExecuteCommandAsync();
                        if (notice.Status == 0)
                        {
                            notice.CheckDate = DateTime.Now;
                            notice.Status = 1;
                            notice.UpdateUser = _userManager.UserId;
                            notice.UpdateTime = time;
                            await Db.Updateable(notice).ExecuteCommandAsync();
                        }
                    }
                    continue;
                }
                //当前出库的储位信息
                var locate = await Db.Queryable<SysStorageLocat>().FirstAsync(m => m.LocatNo == locateNo && m.IsDel == "0");
                if (locate == null)
                {
                    flagList.Add(2);
                    continue;
                }
                //判断储位标志是否为损坏
                if (locate.Flag == "2")
                {
                    flagList.Add(3);
                    continue;
                }
                #endregion
                if (locate.Status == "1") //有物品
                {
                    #region 添加出库任务
                    var taskNo = new Common().GetMaxNo("TK");
                    //添加出库任务
                    var exTask = new LogTask
                    {
                        TaskNo = taskNo,
                        Sender = "WMS",
                        Receiver = "WCS",
                        IsSuccess = 0, //是否下发成功 0失败 1成功
                        StartLocat = locate.LocatNo,//起始位置
                        EndLocat = outMode,//目标位置
                        PalletNo = item.PalletNo,//托盘码
                        IsSend = 1,//是否可再次下发
                        IsCancel = 1,//是否可取消
                        IsFinish = 1,//是否可完成
                        Type = "1",//任务类型 0 入库任务 1 出库任务  2 移库任务
                        Status = "0",//任务状态0:等待执行1正在执行2执行完成
                        OrderType = "2",//0 入库单 1 出库单  2 盘点单  3 移库单
                        CreateTime = time
                    };
                    await Db.Insertable(exTask).ExecuteCommandAsync();
                    outDtoList.Add(new OutCommandDto()
                    {
                        PalletNo = item.PalletNo,//托盘号
                        StartLocate = locate.LocatNo, // 起始位置
                        StartRoadway = locate.RoadwayNo,
                        EndLocate = "", // 目标位置
                        TaskNo = exTask.TaskNo, // 任务号
                        TaskType = "1",// 任务类型 (出库)
                        OutMode = "",  //目标地址
                        Order = 1
                    });
                    #endregion
                    #region 改变数据
                    if (item.Status == 0)//判断托盘是否下发过
                    {
                        if (notice.Status == 0)
                        {
                            notice.CheckDate = DateTime.Now;
                            notice.Status = 1;
                            notice.UpdateUser = _userManager.UserId;
                            notice.UpdateTime = time;
                            await Db.Updateable(notice).ExecuteCommandAsync();
                        }
                    }
                    locate.Status = "3"; //要出库的储位改变状态 正在出库
                    await Db.Updateable(locate).ExecuteCommandAsync();
                    item.TaskNo = exTask.TaskNo; // 出库分配信息中更新任务号
                    item.Status = 1; // 出库分配信息状态改为正在执行
                    await Db.Updateable(item).ExecuteCommandAsync();
                    #endregion
                    flagList.Add(0);
                }
                else if (locate.Status == "3") //出库中
                {
                    #region 改变数据
                    //判断是否是已经出过库又回库(状态为待拣货的 1)
                    if (item.Status == 0)
                    {
                        if (notice.Status == 0)
                        {
                            notice.CheckDate = DateTime.Now;
                            notice.Status = 1;
                            notice.UpdateUser = _userManager.UserId;
                            notice.UpdateTime = time;
                            await Db.Updateable(notice).ExecuteCommandAsync();
                        }
                    }
                    var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "2" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo);
                    item.TaskNo = taskNo.TaskNo;
                    item.Status = 1; // 出库分配信息状态改为正在执行
                    await Db.Updateable(item).ExecuteCommandAsync();
                    #endregion
                }
                else if (locate.Status == "5") //移出中
                {
                    flagList.Add(1);
                }
            }
            catch (Exception e)
            //添加操作日志记录
            //var k = new OperationCrServer().AddLogOperationCr("库内作业", "盘点单据", crNo, "出库", $"点击出库按钮盘点单号为:{crNo}的盘点单", userId);
            await _operation.AddLogOperationCr(new OperationInputVm()
            {
                throw new Exception(e.Message);
                ParentName = "库内作业",
                MenuName = "盘点单据",
                FkNo = crNo,
                TypeName = "出库",
                Msg = $"点击出库按钮盘点单号为:{crNo}的盘点单"
            });
            //Db.CommitTran();
            str = string.Empty;
            if (flagList.Count(m => m == 1) > 0)
            {
                str += "1.当前要出库的储位正在移出、";
            }
            if (flagList.Count(m => m == 2) > 0)
            {
                str += "2.出库的托盘储位信息错误(在储位表中未查询到)、";
            }
            if (flagList.Count(m => m == 3) > 0)
            {
                str += "4.储位损坏不能出库、";
            }
            if (flagList.Count(m => m == 4) > 0)
            {
                str += "3.要出库的托盘正在入库、";
            }
            if (flagList.Count(m => m == 5) > 0)
            {
                str += "5.要出库的托盘在零箱库、";
            }
            if (!string.IsNullOrEmpty(str))
                throw Oops.Bah(str);
            if (outDtoList.Count > 0)
            {
                // 正式运行程序放开
                var list2 = outDtoList.Select(m => m.TaskNo).ToList();
                var jsonData = JsonConvert.SerializeObject(outDtoList);
                string response = "";
                var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss")
                                         //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 Oops.Bah(wcsModel.Msg);
                //}
            }
            return outDtoList;
            #endregion
        }
        //盘点出库完成
Wms/WMS.BLL/BllSoServer/CompleteDetailServer.cs
@@ -3,7 +3,9 @@
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Model.ModelDto.BllSoDto;
using Model.ModelVm.BllSoVm;
using SqlSugar;
using WMS.DAL;
using WMS.Entity.BllSoEntity;
@@ -13,118 +15,58 @@
namespace WMS.BLL.BllSoServer
{
    public class CompleteDetailServer: DbHelper<BllCompleteDetail>,ICompleteDetailServer
    public class CompleteDetailServer : DbHelper<BllCompleteDetail>, ICompleteDetailServer
    {
        private static readonly SqlSugarScope Db = DataContext.Db;
        public CompleteDetailServer():base(Db)
        public CompleteDetailServer() : base(Db)
        {
        }
        //查询拣货明细箱码信息(分组后)
        public List<CompleteDetailDto> GetCompleteDetailList(int id, int page, int limit, out int count)
        public async Task<List<CompleteDetailDto>> GetCompleteDetailList(GetCompleteDetailVm model, RefAsync<int> count)
        {
            try
            {
                var total = 0;
                var detailInfo = Db.Queryable<BllCompleteDetail>().First(w => string.IsNullOrEmpty(w.BoxNo) || string.IsNullOrEmpty(w.BoxNo3));
                if (detailInfo == null)
            Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>()
                .And(it => it.ExportAllotId == model.Id)
                .And(it => it.IsDel == "0")
                .ToExpression();//注意 这一句 不能少
            var data = await GetAllWhereAsync(item)
                .GroupBy(m => new
                {
                    Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>()
                    .And(it => it.ExportAllotId == id)
                    .And(it => it.IsDel == "0")
                    .ToExpression();//注意 这一句 不能少
                    var data = GetAllWhereAsync(item)
                        .GroupBy(m => new
                        {
                            m.SONo,
                            m.SODetailNo,
                            m.StockId,
                            m.ExportAllotId,
                    m.SONo,
                    m.SODetailNo,
                    m.StockId,
                    m.ExportAllotId,
                            m.BoxNo,
                            m.LotNo,
                            m.LotText,
                            m.SupplierLot,
                            m.SkuNo,
                            m.SkuName,
                            m.Standard,
                            m.PalletNo,
                            m.NowPalletNo,
                        })
                        .Select(a => new CompleteDetailDto()
                        {
                            SONo = a.SONo,
                            SODetailNo = a.SODetailNo,
                            StockId = a.StockId,
                            ExportAllotId = a.ExportAllotId,
                            BoxNo = a.BoxNo,
                            LotNo = a.LotNo,
                            LotText = a.LotText,
                            SupplierLot = a.SupplierLot,
                            SkuNo = a.SkuNo,
                            SkuName = a.SkuName,
                            Standard = a.Standard,
                            PalletNo = a.PalletNo,
                            CompleteQty = SqlFunc.AggregateSum(a.CompleteQty),
                            NowPalletNo = a.NowPalletNo,
                            //CreateTime = a.CreateTime
                        }).ToOffsetPage(page, limit, ref total);
                    count = total;
                    return data;
                }
                else //箱码或支码为空说明是按数量拣货,增加 CreateTime 分组条件
                    m.BoxNo,
                    m.LotNo,
                    m.LotText,
                    m.SupplierLot,
                    m.SkuNo,
                    m.SkuName,
                    m.Standard,
                    m.PalletNo,
                    m.NowPalletNo
                })
                .Select(a => new CompleteDetailDto()
                {
                    Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>()
                    .And(it => it.ExportAllotId == id)
                    .And(it => it.IsDel == "0")
                    .ToExpression();//注意 这一句 不能少
                    var data = GetAllWhereAsync(item)
                        .GroupBy(m => new
                        {
                            m.SONo,
                            m.SODetailNo,
                            m.StockId,
                            m.ExportAllotId,
                    SONo = a.SONo,
                    SODetailNo = a.SODetailNo,
                    StockId = a.StockId,
                    ExportAllotId = a.ExportAllotId,
                            m.BoxNo,
                            m.LotNo,
                            m.LotText,
                            m.SupplierLot,
                            m.SkuNo,
                            m.SkuName,
                            m.Standard,
                            m.PalletNo,
                            m.NowPalletNo,
                            m.CreateTime
                        })
                        .Select(a => new CompleteDetailDto()
                        {
                            SONo = a.SONo,
                            SODetailNo = a.SODetailNo,
                            StockId = a.StockId,
                            ExportAllotId = a.ExportAllotId,
                    BoxNo = a.BoxNo,
                    LotNo = a.LotNo,
                    LotText = a.LotText,
                    SupplierLot = a.SupplierLot,
                    SkuNo = a.SkuNo,
                    SkuName = a.SkuName,
                    Standard = a.Standard,
                    PalletNo = a.PalletNo,
                    CompleteQty = SqlFunc.AggregateSum(a.CompleteQty),
                    NowPalletNo = a.NowPalletNo,
                }).ToPageListAsync(model.Page, model.Limit, count);
                            BoxNo = a.BoxNo,
                            LotNo = a.LotNo,
                            LotText = a.LotText,
                            SupplierLot = a.SupplierLot,
                            SkuNo = a.SkuNo,
                            SkuName = a.SkuName,
                            Standard = a.Standard,
                            PalletNo = a.PalletNo,
                            CompleteQty = SqlFunc.AggregateSum(a.CompleteQty),
                            NowPalletNo = a.NowPalletNo,
                        //CreateTime = a.CreateTime
                    }).ToOffsetPage(page, limit, ref total);
                    count = total;
                    return data;
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            return data;
        }
        //查询拣货明细支码详细信息
@@ -135,7 +77,7 @@
                Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>()
                    .AndIF(!string.IsNullOrWhiteSpace(boxNo), it => it.BoxNo == boxNo.Trim())
                    .AndIF(!string.IsNullOrWhiteSpace(boxNo3), it => it.BoxNo3.Contains(boxNo3.Trim()))
                    .ToExpression();
                    .ToExpression();
                var data = GetAllWhereAsync(item)
                    .LeftJoin<SysUserInfor>((a, b) => a.CreateUser == b.Id)
                    .LeftJoin<SysUserInfor>((a, b, c) => a.UpdateUser == c.Id)
@@ -159,7 +101,7 @@
                        CompleteQty = a.CompleteQty,
                        NowPalletNo = a.NowPalletNo,
                        CreateUserName = b.RealName,
                        CreateUserName = b.RealName,
                        UpdateUserName = c.RealName,
                        CreateTime = a.CreateTime,
                        UpdateTime = a.UpdateTime,
@@ -201,7 +143,7 @@
                    {
                        page = 1;
                    }
                    sqlString += sqlPub + $" order by 1  offset {((page - 1) * limit)} rows fetch next {limit} rows only;";
                    var com = new Common();
@@ -210,7 +152,7 @@
                    var modelList = Db.Ado.SqlQuery<CompleteDetailDto>(sqlString);
                    return modelList;
                }
                else
                else
                {
                    string sqlString = string.Empty;
                    string sqlCount = string.Empty;
Wms/WMS.BLL/BllSoServer/ExportAllotServer.cs
@@ -3,7 +3,9 @@
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Model.ModelDto.BllSoDto;
using Model.ModelVm.BllSoVm;
using SqlSugar;
using WMS.BLL.LogServer;
using WMS.DAL;
@@ -24,72 +26,66 @@
        }
        //查询出库分配表信息
        public List<ExportAllotDto> GetExportAllotList(string no, string waveNo, string palletNo, string skuNo, string skuName, string lotNo, string status, string boxNo, int page, int limit, out int count)
        public async Task<List<ExportAllotDto>> GetExportAllotList(GetExportAllotVm model, RefAsync<int> count)
        {
            try
            {
                var strList = new List<int>();
            var strList = new List<int>();
                if (!string.IsNullOrWhiteSpace(boxNo))
            if (!string.IsNullOrWhiteSpace(model.BoxNo))
            {
                var detailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo.Contains(model.BoxNo.Trim())).Select(m => m.ExportAllotId).Distinct().ToList();
                strList = detailList;
            }
            Expression<Func<BllExportAllot, bool>> item = Expressionable.Create<BllExportAllot>()
                .AndIF(!string.IsNullOrWhiteSpace(model.SoNo), it => it.SONo.Contains(model.SoNo.Trim()))
                .AndIF(!string.IsNullOrWhiteSpace(model.WaveNo), it => it.WaveNo.Contains(model.WaveNo.Trim()))
                .AndIF(!string.IsNullOrWhiteSpace(model.PalletNo), it => it.PalletNo.Contains(model.PalletNo.Trim()))
                .AndIF(!string.IsNullOrWhiteSpace(model.SkuNo), it => it.SkuNo.Contains(model.SkuNo.Trim()))
                .AndIF(!string.IsNullOrWhiteSpace(model.SkuName), it => it.SkuName.Contains(model.SkuName.Trim()))
                .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => it.LotNo.Contains(model.LotNo.Trim()))
                .AndIF(!string.IsNullOrWhiteSpace(model.Status), it => it.Status == model.Status)
                .AndIF(!string.IsNullOrWhiteSpace(model.BoxNo), m => strList.Contains(m.Id))
                .ToExpression();//注意 这一句 不能少
            var total = 0;
            var data = await GetAllWhereAsync(item)
                .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id)
                .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
                .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id)
                .Select((a, b, c, d) => new ExportAllotDto()
                {
                    var detailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo.Contains(boxNo.Trim())).Select(m => m.ExportAllotId).Distinct().ToList();
                    strList = detailList;
                }
                Expression<Func<BllExportAllot, bool>> item = Expressionable.Create<BllExportAllot>()
                    .AndIF(!string.IsNullOrWhiteSpace(no), it => it.SONo.Contains(no.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(waveNo), it => it.WaveNo.Contains(waveNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(palletNo), it => it.PalletNo.Contains(palletNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(skuNo), it => it.SkuNo.Contains(skuNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(skuName), it => it.SkuName.Contains(skuName.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(lotNo), it => it.LotNo.Contains(lotNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(status), it => it.Status == status)
                    .AndIF(!string.IsNullOrWhiteSpace(boxNo), m => strList.Contains(m.Id))
                    .ToExpression();//注意 这一句 不能少
                var total = 0;
                var data = GetAllWhereAsync(item)
                    .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id)
                    .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
                    .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id)
                    .Select((a, b, c, d) => new ExportAllotDto()
                    {
                        Id = a.Id,
                        SONo = a.SONo,
                        WaveNo = a.WaveNo,
                        SODetailNo = a.SODetailNo,
                        StockId = a.StockId,
                        TaskNo = a.TaskNo,
                    Id = a.Id,
                    SONo = a.SONo,
                    WaveNo = a.WaveNo,
                    SODetailNo = a.SODetailNo,
                    StockId = a.StockId,
                    TaskNo = a.TaskNo,
                        LotNo = a.LotNo,
                        LotText = a.LotText,
                        SupplierLot = a.SupplierLot,
                        SkuNo = a.SkuNo,
                        SkuName = a.SkuName,
                        Standard = a.Standard,
                        PalletNo = a.PalletNo,
                        IsBale = a.IsBale,
                        IsBelt = a.IsBelt,
                        Qty = a.Qty,
                        CompleteQty = a.CompleteQty,
                        Status = a.Status,
                        LogisticsId = a.LogisticsId,
                        LogisticsName = b.CarrierName,
                        IsAdvance = a.IsAdvance,
                        OutMode = a.OutMode,
                        LoadingAddre=a.LoadingAddre,
                        UnstackingMode=a.UnstackingMode,
                    LotNo = a.LotNo,
                    LotText = a.LotText,
                    SupplierLot = a.SupplierLot,
                    SkuNo = a.SkuNo,
                    SkuName = a.SkuName,
                    Standard = a.Standard,
                    PalletNo = a.PalletNo,
                    IsBale = a.IsBale,
                    IsBelt = a.IsBelt,
                    Qty = a.Qty,
                    CompleteQty = a.CompleteQty,
                    Status = a.Status,
                    LogisticsId = a.LogisticsId,
                    LogisticsName = b.CarrierName,
                    IsAdvance = a.IsAdvance,
                    OutMode = a.OutMode,
                    LoadingAddre = a.LoadingAddre,
                    UnstackingMode = a.UnstackingMode,
                        CreateUserName = c.RealName,
                        UpdateUserName = d.RealName,
                        CreateTime = a.CreateTime,
                        UpdateTime = a.UpdateTime
                    }).OrderByDescending(a => a.CreateTime).OrderBy(a => a.Status).OrderBy(a => a.SkuNo).ToOffsetPage(page, limit, ref total);
                count = total;
                return data;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
                    CreateUserName = c.RealName,
                    UpdateUserName = d.RealName,
                    CreateTime = a.CreateTime,
                    UpdateTime = a.UpdateTime
                }).OrderByDescending(a => a.CreateTime).OrderBy(a => a.Status).OrderBy(a => a.SkuNo)
                .ToPageListAsync(model.Page, model.Limit, count);
            count = total;
            return data;
        }
        //撤销分配(删除)
Wms/WMS.BLL/BllSoServer/ExportNoticeDetailServer.cs
@@ -26,59 +26,52 @@
        }
        public async Task<List<ExportNoticeDetailDto>> GetExportNoticeDetailList(GetExportNoticeDetailVm model, RefAsync<int> count)
        {
            try
            if (string.IsNullOrWhiteSpace(model.SoNo))
            {
                if (string.IsNullOrWhiteSpace(model.SoNo))
                {
                    throw new Exception("出库单号为空");
                }
                var notice = DataContext.Db.Queryable<BllExportNotice>().Where(m => m.IsDel == "0" && m.SONo == model.SoNo).ToList().FirstOrDefault();
                if (notice == null)
                {
                    throw new Exception("出库单号为空");
                }
                var data = await GetAllWhereAsync(a=>a.SONo == model.SoNo)
                    .LeftJoin<SysPackag>((a,b)=> a.PackagNo == b.PackagNo)
                    .LeftJoin<SysUserInfor>((a,b,c)=> a.CreateUser == c.Id)
                    .LeftJoin<SysUserInfor>((a,b,c,d)=> a.UpdateUser == d.Id)
                    .Select((a, b, c, d) => new ExportNoticeDetailDto()
                    {
                        Id = a.Id,
                        Status = a.Status,
                        Origin = notice.Origin,
                        SONo = a.SONo,
                        SkuNo = a.SkuNo,
                        SkuName = a.SkuName,
                        Standard = a.Standard,
                        LotNo = a.LotNo,
                        LotText = a.LotText,
                        Qty = a.Qty,
                        AllotQty = a.AllotQty,
                        FactQty = a.FactQty,
                        CompleteQty = a.CompleteQty,
                        PackagNo = a.PackagNo,
                        PackagName = b.PackagName,
                        Price = a.Price,
                        Money = a.Money,
                        IsBale = a.IsBale,
                        IsBelt = a.IsBelt,
                        SupplierLot = a.SupplierLot,
                        IsWave = a.IsWave,
                        WaveNo = a.WaveNo,
                        CreateUserName = c.RealName,
                        UpdateUserName = d.RealName,
                        CreateTime = a.CreateTime,
                        UpdateTime = a.UpdateTime
                    }).ToPageListAsync(model.Page, model.Limit, count);
                return data;
                throw new Exception("出库单号为空");
            }
            catch (Exception e)
            var notice = DataContext.Db.Queryable<BllExportNotice>().Where(m => m.IsDel == "0" && m.SONo == model.SoNo).ToList().FirstOrDefault();
            if (notice == null)
            {
                throw new Exception(e.Message);
                throw new Exception("出库单号为空");
            }
            var data = await GetAllWhereAsync(a => a.SONo == model.SoNo)
                .LeftJoin<SysPackag>((a, b) => a.PackagNo == b.PackagNo)
                .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
                .LeftJoin<SysUserInfor>((a, b, c, d) => a.UpdateUser == d.Id)
                .Select((a, b, c, d) => new ExportNoticeDetailDto()
                {
                    Id = a.Id,
                    Status = a.Status,
                    Origin = notice.Origin,
                    SONo = a.SONo,
                    SkuNo = a.SkuNo,
                    SkuName = a.SkuName,
                    Standard = a.Standard,
                    LotNo = a.LotNo,
                    LotText = a.LotText,
                    Qty = a.Qty,
                    AllotQty = a.AllotQty,
                    FactQty = a.FactQty,
                    CompleteQty = a.CompleteQty,
                    PackagNo = a.PackagNo,
                    PackagName = b.PackagName,
                    Price = a.Price,
                    Money = a.Money,
                    IsBale = a.IsBale,
                    IsBelt = a.IsBelt,
                    SupplierLot = a.SupplierLot,
                    IsWave = a.IsWave,
                    WaveNo = a.WaveNo,
                    CreateUserName = c.RealName,
                    UpdateUserName = d.RealName,
                    CreateTime = a.CreateTime,
                    UpdateTime = a.UpdateTime
                }).ToPageListAsync(model.Page, model.Limit, count);
            return data;
        }
        public bool DelExportNoticeDetail(int id, int userId)
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -814,67 +814,60 @@
        public async Task<List<ExportNoticeDto>> GetExportNoticeList(GetExportNoticeVm model, RefAsync<int> count)
        {
            try
            {
                var strList = new List<string>();
            var strList = new List<string>();
                if (!string.IsNullOrWhiteSpace(model.LotNo))
            if (!string.IsNullOrWhiteSpace(model.LotNo))
            {
                var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.LotNo.Contains(model.LotNo.Trim())).Select(m => m.SONo).Distinct().ToList();
                strList = detailList;
            }
            Expression<Func<BllExportNotice, bool>> item = Expressionable.Create<BllExportNotice>()
                .AndIF(!string.IsNullOrWhiteSpace(model.No), it => it.SONo.Contains(model.No.Trim()))
                .AndIF(!string.IsNullOrWhiteSpace(model.Type), it => it.Type == model.Type)
                .AndIF(!string.IsNullOrWhiteSpace(model.Status), it => it.Status == model.Status)
                .AndIF(model.LogisticsId != null, it => it.LogisticsId == model.LogisticsId)
                .AndIF(!string.IsNullOrWhiteSpace(model.IsWave), it => it.IsWave == model.IsWave)
                .AndIF(!string.IsNullOrWhiteSpace(model.IsDespatch), it => it.IsDespatch == model.IsDespatch)
                .AndIF(!string.IsNullOrWhiteSpace(model.WaveNo), it => it.WaveNo.Contains(model.WaveNo.Trim()))
                .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => strList.Contains(it.SONo))
                .ToExpression();//注意 这一句 不能少
            var data = await GetAllWhereAsync(item)
                .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id)
                .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
                .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id)
                .LeftJoin<SysUserInfor>((a, b, c, d, e) => a.CheckUser == e.Id)
                .Select((a, b, c, d, e) => new ExportNoticeDto()
                {
                    var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.LotNo.Contains(model.LotNo.Trim())).Select(m => m.SONo).Distinct().ToList();
                    strList = detailList;
                }
                Expression<Func<BllExportNotice, bool>> item = Expressionable.Create<BllExportNotice>()
                    .AndIF(!string.IsNullOrWhiteSpace(model.No), it => it.SONo.Contains(model.No.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(model.Type), it => it.Type == model.Type)
                    .AndIF(!string.IsNullOrWhiteSpace(model.Status), it => it.Status == model.Status)
                    .AndIF(model.LogisticsId != null, it => it.LogisticsId == model.LogisticsId)
                    .AndIF(!string.IsNullOrWhiteSpace(model.IsWave), it => it.IsWave == model.IsWave)
                    .AndIF(!string.IsNullOrWhiteSpace(model.IsDespatch), it => it.IsDespatch == model.IsDespatch)
                    .AndIF(!string.IsNullOrWhiteSpace(model.WaveNo), it => it.WaveNo.Contains(model.WaveNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => strList.Contains(it.SONo))
                    .ToExpression();//注意 这一句 不能少
                    Id = a.Id,
                    SONo = a.SONo,
                    Type = a.Type,
                    Status = a.Status,
                    Origin = a.Origin,
                    CustomerNo = a.CustomerNo,
                    CustomerName = a.CustomerName,
                    LotNo = a.LotNo,
                    LotText = a.LotText,
                    SupplierLot = a.SupplierLot,
                    LogisticsId = a.LogisticsId,
                    LogisticsName = b.CarrierName,
                    IsWave = a.IsWave,
                    WaveNo = a.WaveNo,
                    IsDespatch = a.IsDespatch,
                    Demo = a.Demo,
                var data = await GetAllWhereAsync(item)
                    .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id)
                    .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
                    .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id)
                    .LeftJoin<SysUserInfor>((a, b, c, d, e) => a.CheckUser == e.Id)
                    .Select((a, b, c, d, e) => new ExportNoticeDto()
                    {
                        Id = a.Id,
                        SONo = a.SONo,
                        Type = a.Type,
                        Status = a.Status,
                        Origin = a.Origin,
                        CustomerNo = a.CustomerNo,
                        CustomerName = a.CustomerName,
                        LotNo = a.LotNo,
                        LotText = a.LotText,
                        SupplierLot = a.SupplierLot,
                        LogisticsId = a.LogisticsId,
                        LogisticsName = b.CarrierName,
                        IsWave = a.IsWave,
                        WaveNo = a.WaveNo,
                        IsDespatch = a.IsDespatch,
                        Demo = a.Demo,
                    CreateUserName = c.RealName,
                    UpdateUserName = c.RealName,
                    CreateTime = a.CreateTime,
                    UpdateTime = a.UpdateTime,
                        CreateUserName = c.RealName,
                        UpdateUserName = c.RealName,
                        CreateTime = a.CreateTime,
                        UpdateTime = a.UpdateTime,
                    CheckUserName = e.RealName,
                    CheckTime = a.CheckTime
                })
                .OrderByDescending(a => a.CreateTime)
                .ToPageListAsync(model.Page, model.Limit, count);
                        CheckUserName = e.RealName,
                        CheckTime = a.CheckTime
                    })
                    .OrderByDescending(a => a.CreateTime)
                    .ToPageListAsync(model.Page, model.Limit, count);
                return data;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            return data;
        }
        //获取添加/编辑出库单时选择物料明细信息
@@ -1907,33 +1900,23 @@
        /// <param name="limit">零托标记</param> 
        /// <param name="count">零托标记</param> 
        /// <returns></returns>
        public List<DataStockDetail> GetPalletNoOutList(string skuNo, string skuName, string palletNo, string lotNo, string inspectMark, string bitPalletMark, int page, int limit, out int count)
        public async Task<List<DataStockDetail>> GetPalletNoOutList(GetPalletNoOutVm model, RefAsync<int> count)
        {
            Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
                   .AndIF(!string.IsNullOrWhiteSpace(model.SkuNo), m => m.SkuNo.Contains(model.SkuNo.Trim()))
                   .AndIF(!string.IsNullOrWhiteSpace(model.SkuName), m => m.SkuName.Contains(model.SkuName.Trim()))
                   .AndIF(!string.IsNullOrWhiteSpace(model.PalletNo), m => m.PalletNo.Contains(model.PalletNo.Trim()))
                   .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), m => m.LotNo.Contains(model.LotNo.Trim()))
                   .AndIF(!string.IsNullOrWhiteSpace(model.InspectMark), m => m.InspectMark == model.InspectMark)
                   .AndIF(!string.IsNullOrWhiteSpace(model.BitPalletMark), m => m.BitPalletMark == model.BitPalletMark)
                   .And(m => !string.IsNullOrWhiteSpace(m.WareHouseNo))
                   .And(a => a.Status == "0")
                   .And(a => a.WareHouseNo == "W01")
                   .ToExpression();
            var data = await Db.Queryable<DataStockDetail>().Where(item).OrderBy(m => m.LocatNo).ToPageListAsync(model.Page, model.Limit, count);
            //data.Select(m => m.Status == "0" && m.IsDel == "0");
            try
            {
                Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
                    .AndIF(!string.IsNullOrWhiteSpace(skuNo), m => m.SkuNo.Contains(skuNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(skuName), m => m.SkuName.Contains(skuName.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(palletNo), m => m.PalletNo.Contains(palletNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(lotNo), m => m.LotNo.Contains(lotNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(inspectMark), m => m.InspectMark == inspectMark)
                    .AndIF(!string.IsNullOrWhiteSpace(bitPalletMark), m => m.BitPalletMark == bitPalletMark)
                    .And(m => !string.IsNullOrWhiteSpace(m.WareHouseNo))
                    .And(a => a.Status == "0")
                    .And(a => a.WareHouseNo == "W01")
                    .ToExpression();
                var total = 0;
                var data = Db.Queryable<DataStockDetail>().Where(item).OrderBy(m => m.LocatNo).ToOffsetPage(page, limit, ref total);
                //data.Select(m => m.Status == "0" && m.IsDel == "0");
                count = total;
                return data;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            return data;
        }
        //托盘出库
Wms/WMS.BLL/BllSoServer/WaveMageServer.cs
@@ -3,8 +3,10 @@
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Model.InterFaceModel;
using Model.ModelDto.BllSoDto;
using Model.ModelVm.BllSoVm;
using Newtonsoft.Json;
using SqlSugar;
using WMS.BLL.Logic;
@@ -27,52 +29,44 @@
        }
        //获取波次单信息
        public List<WaveMageDto> GetWaveMageList(string waveNo, string status, string lotNo, int? logisticsId, int page, int limit, out int count)
        public async Task<List<WaveMageDto>> GetWaveMageList(GetWaveMageVm model, RefAsync<int> count)
        {
            try
            {
                Expression<Func<BllWaveMage, bool>> item = Expressionable.Create<BllWaveMage>()
                    .AndIF(!string.IsNullOrWhiteSpace(waveNo), it => it.WaveNo.Contains(waveNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(status), it => it.Status == status)
                    .AndIF(logisticsId != null, it => it.LogisticsId == logisticsId)
                    .AndIF(!string.IsNullOrWhiteSpace(lotNo), it => it.LotNo.Contains(lotNo))
            Expression<Func<BllWaveMage, bool>> item = Expressionable.Create<BllWaveMage>()
                    .AndIF(!string.IsNullOrWhiteSpace(model.WaveNo), it => it.WaveNo.Contains(model.WaveNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(model.Status), it => it.Status == model.Status)
                    .AndIF(model.LogisticsId != null, it => it.LogisticsId == model.LogisticsId)
                    .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => it.LotNo.Contains(model.LotNo))
                    .ToExpression();//注意 这一句 不能少
                var total = 0;
                var data = GetAllWhereAsync(item)
                    .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id)
                    .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
                    .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id)
                    .Select((a, b, c, d) => new WaveMageDto()
                    {
                        Id = a.Id,
                        WaveNo = a.WaveNo,
                        Status = a.Status,
                        Origin = a.Origin,
                        CustomerNo = a.CustomerNo,
                        CustomerName = a.CustomerName,
                        LotNo = a.LotNo,
                        LotText = a.LotText,
                        SupplierLot = a.SupplierLot,
                        LogisticsId = a.LogisticsId,
                        LogisticsName = b.CarrierName,
                        Address = a.Address,
                        CreateUserName = c.RealName,
                        UpdateUserName = c.RealName,
                        CreateTime = a.CreateTime,
                        UpdateTime = a.UpdateTime,
            var data = await GetAllWhereAsync(item)
                .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id)
                .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
                .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id)
                .Select((a, b, c, d) => new WaveMageDto()
                {
                    Id = a.Id,
                    WaveNo = a.WaveNo,
                    Status = a.Status,
                    Origin = a.Origin,
                    CustomerNo = a.CustomerNo,
                    CustomerName = a.CustomerName,
                    LotNo = a.LotNo,
                    LotText = a.LotText,
                    SupplierLot = a.SupplierLot,
                    LogisticsId = a.LogisticsId,
                    LogisticsName = b.CarrierName,
                    Address = a.Address,
                    })
                    .OrderByDescending(a => a.CreateTime)
                    .ToOffsetPage(page, limit, ref total);
                count = total;
                    CreateUserName = c.RealName,
                    UpdateUserName = c.RealName,
                    CreateTime = a.CreateTime,
                    UpdateTime = a.UpdateTime,
                return data;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
                })
                .OrderByDescending(a => a.CreateTime)
                .ToPageListAsync(model.Page, model.Limit, count);
            return data;
        }
        //获取添加波次单的出库单信息
Wms/WMS.BLL/LogServer/OperationSOServer.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Model.ModelDto.LogDto;
using SqlSugar;
using WMS.BLL.SysServer;
@@ -21,43 +22,35 @@
        public OperationSOServer() : base(Db)
        {
        }
        public List<OperationDto> GetLogOperationSoList(string menuName, string type, string msg, string startTime, string endTime, int page, int limit, out int count)
        public async Task<List<OperationDto>> GetLogOperationSoList(string menuName, string type, string msg, string startTime, string endTime, int page, int limit, RefAsync<int> count)
        {
            try
            {
                var item = Expressionable.Create<LogOperationSO>()
            var item = Expressionable.Create<LogOperationSO>()
                    .AndIF(!string.IsNullOrWhiteSpace(menuName), it => it.MenuName.Contains(menuName.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(type), it => it.Type == type)
                    .AndIF(!string.IsNullOrWhiteSpace(msg), it => it.Msg.Contains(msg.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(startTime), it => it.CreateTime >= Convert.ToDateTime(startTime))
                    .AndIF(!string.IsNullOrWhiteSpace(endTime), it => it.CreateTime <= Convert.ToDateTime(endTime).AddDays(1))
                    .ToExpression();//注意 这一句 不能少
                var total = 0;
                var list = GetAllWhereAsync(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,
                    })
                    .OrderByDescending(it => it.CreateTime)
                    .ToOffsetPage(page, limit, ref total);
                count = total;
                return list.OrderByDescending(m => m.CreateTime).ToList();
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            var list = await GetAllWhereAsync(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,
                })
                .OrderByDescending(it => it.CreateTime)
                .ToPageListAsync(page, limit, count);
            return list.OrderByDescending(m => m.CreateTime).ToList();
        }
        public bool AddLogOperationSo(string parentNo, string menuName, string fkNo, string type, string msg, int userId)
        {
Wms/WMS.BLL/SysServer/PalletsServer.cs
@@ -125,8 +125,17 @@
                var str = pallNo.Substring(3, 5);
                string remove = pallNo.Substring(0, 3);
                int sibelius = Convert.ToInt16(str);
                int sibelius = 0;
                var num = 0;
                if (remove != "T" + DateTime.Now.ToString("yy"))
                {
                    remove = "T" + DateTime.Now.ToString("yy");
                    sibelius = 0;
                }
                else
                {
                    sibelius = Convert.ToInt16(str);
                }
                for (int i = 0; i < groupCount; i++)
                {
                    sibelius += 1;
Wms/WMS.Entity/Context/DataContext.cs
@@ -26,7 +26,7 @@
                //Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));
                //获取无参数化SQL 对性能有影响,特别大的SQL参数多的,调试使用
                //Console.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer, sql, pars));
                Console.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer, sql, pars));
            };
Wms/WMS.IBLL/IBllSoServer/ICompleteDetailServer.cs
@@ -1,7 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Model.ModelDto.BllSoDto;
using Model.ModelVm.BllSoVm;
using SqlSugar;
namespace WMS.IBLL.IBllSoServer
{
@@ -15,7 +18,7 @@
        /// <param name="limit"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        List<CompleteDetailDto> GetCompleteDetailList(int id, int page, int limit, out int count);
        Task<List<CompleteDetailDto>> GetCompleteDetailList(GetCompleteDetailVm model, RefAsync<int> count);
        /// <summary>
        /// 获取拣货明细中详细箱支信息 根据箱码\支码
Wms/WMS.IBLL/IBllSoServer/IExportAllotServer.cs
@@ -1,7 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Model.ModelDto.BllSoDto;
using Model.ModelVm.BllSoVm;
using SqlSugar;
namespace WMS.IBLL.IBllSoServer
{
@@ -22,7 +25,7 @@
        /// <param name="limit"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        List<ExportAllotDto> GetExportAllotList(string no, string waveNo, string palletNo, string skuNo, string skuName, string lotNo, string status, string boxNo, int page, int limit, out int count);
        Task<List<ExportAllotDto>> GetExportAllotList(GetExportAllotVm model, RefAsync<int> count);
        /// <summary>
        /// 撤销分配(删除)
Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
@@ -110,8 +110,7 @@
        /// <param name="limit"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        List<DataStockDetail> GetPalletNoOutList(string skuNo, string skuName, string palletNo, string lotNo,
            string inspectMark, string bitPalletMark, int page, int limit, out int count);
        Task<List<DataStockDetail>> GetPalletNoOutList(GetPalletNoOutVm model, RefAsync<int> count);
        /// <summary>
        /// 托盘下发出库
Wms/WMS.IBLL/IBllSoServer/IWaveMageServer.cs
@@ -1,8 +1,11 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Model.InterFaceModel;
using Model.ModelDto.BllSoDto;
using Model.ModelVm.BllSoVm;
using SqlSugar;
namespace WMS.IBLL.IBllSoServer
{
@@ -19,7 +22,7 @@
        /// <param name="limit">数量</param>
        /// <param name="count">中数量</param>
        /// <returns></returns>
        List<WaveMageDto> GetWaveMageList(string waveNo, string status, string lotNo, int? logisticsId, int page, int limit, out int count);
        Task<List<WaveMageDto>> GetWaveMageList(GetWaveMageVm model, RefAsync<int> count);
        /// <summary>
        /// 获取添加波次单的出库单信息
Wms/WMS.IBLL/ILogServer/IOperationSOServer.cs
@@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Model.ModelDto.LogDto;
using SqlSugar;
namespace WMS.IBLL.ILogServer
{
@@ -19,8 +21,8 @@
        /// <param name="limit"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        List<OperationDto> GetLogOperationSoList(string menuName, string type, string msg, string startTime,
            string endTime, int page, int limit, out int count);
        Task<List<OperationDto>> GetLogOperationSoList(string menuName, string type, string msg, string startTime,
            string endTime, int page, int limit, RefAsync<int> count);
        /// <summary>
        /// 添加出库操作日志
        /// </summary>
Wms/Wms/Controllers/BllAsnController.cs
@@ -20,7 +20,7 @@
    [Route("api/[controller]/[action]")]
    [ApiController]
    [Authorize]
    public class BllAsnController : ControllerBase
    {
        #region 依赖注入
@@ -36,7 +36,7 @@
        #endregion
        #region 构造函数
        public BllAsnController(IArrivalNoticeServer arrivalNoticeSvc, IPalletBindServer palletBindSvc,IBllBoxInfoServer bllBoxInfoSvc, ITaskServer taskSvc,IOperationASNServer logSvc, IPalletUnbindServer palletUnbind,IAuditLogServer auditLog,IBllLabelBoxNoServer labelBox, IProcurePlanServer procurePlanSvc)
        public BllAsnController(IArrivalNoticeServer arrivalNoticeSvc, IPalletBindServer palletBindSvc, IBllBoxInfoServer bllBoxInfoSvc, ITaskServer taskSvc, IOperationASNServer logSvc, IPalletUnbindServer palletUnbind, IAuditLogServer auditLog, IBllLabelBoxNoServer labelBox, IProcurePlanServer procurePlanSvc)
        {
            _arrivalNoticeSvc = arrivalNoticeSvc;
            _PalletBindSvc = palletBindSvc;
@@ -64,7 +64,7 @@
            RefAsync<int> count = new RefAsync<int>();
            var bolls = await _arrivalNoticeSvc.GetArrivalNoticeList(model, count);
            return new SqlSugarPagedList() { Items = bolls, Total = count };
        }
        }
        [HttpPost]
@@ -182,7 +182,7 @@
                }
                if (strMesage.Contains("-1"))
                {
                    return Ok(new { code = 0, msg = "部分成功 "+ strMesage });
                    return Ok(new { code = 0, msg = "部分成功 " + strMesage });
                }
                else
                {
@@ -270,7 +270,7 @@
        /// <param name="reason"></param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult CancelOrder(int id,string reason)
        public IActionResult CancelOrder(int id, string reason)
        {
            try
            {
@@ -284,12 +284,12 @@
                {
                    throw new Exception("未获取到用户信息");
                }
                _arrivalNoticeSvc.CancelOrder(id,reason,int.Parse(userId));
                _arrivalNoticeSvc.CancelOrder(id, reason, int.Parse(userId));
                return Ok(new { code = 0, msg = "入库单撤销申请成功" });
            }
            catch (Exception e)
            {
@@ -364,13 +364,13 @@
        }
        [HttpGet]
        public IActionResult GetBoxInfoByBoxNo(string boxNo, string boxNo3,int bindNo=0)
        public IActionResult GetBoxInfoByBoxNo(string boxNo, string boxNo3, int bindNo = 0)
        {
            try
            {
                var models = _PalletBindSvc.GetBoxInfoByBoxNo(boxNo, boxNo3,bindNo);
                var models = _PalletBindSvc.GetBoxInfoByBoxNo(boxNo, boxNo3, bindNo);
                return Ok(new { code = 0, count= models.Count, msg = "箱支明细信息", data = models });
                return Ok(new { code = 0, count = models.Count, msg = "箱支明细信息", data = models });
            }
            catch (Exception e)
            {
@@ -428,7 +428,7 @@
                {
                    throw new Exception("未获取到用户信息");
                }
                _PalletBindSvc.DelBindBoxInfo(boxNo,int.Parse(userId));
                _PalletBindSvc.DelBindBoxInfo(boxNo, int.Parse(userId));
                return Ok(new { code = 0, count = 0, msg = "删除成功", data = "" });
            }
@@ -460,7 +460,7 @@
                {
                    throw new Exception("未获取到用户信息");
                }
                _PalletBindSvc.CancelPalletBind(id, reason,int.Parse(userId));
                _PalletBindSvc.CancelPalletBind(id, reason, int.Parse(userId));
                return Ok(new { code = 0, count = 0, msg = "托盘绑定撤销申请成功", data = "" });
            }
@@ -484,7 +484,7 @@
            {
                var list = _BoxInfoSvc.GetBoxInfoList(boxNo, isContinue, boxNo2);
                var num = 0;
                if (list!=null)
                if (list != null)
                {
                    num = list.Count;
                }
@@ -510,7 +510,7 @@
        {
            try
            {
                var models = _PalletBindSvc.GetLocateList("W01",model.RoadwayNo,model.Row,model.Column,model.Layer,model.LocateNo,model.StockDetailId, model.Page,model.Limit, out int count);
                var models = _PalletBindSvc.GetLocateList("W01", model.RoadwayNo, model.Row, model.Column, model.Layer, model.LocateNo, model.StockDetailId, model.Page, model.Limit, out int count);
                return Ok(new { code = 0, count, msg = "获取指定储位信息", data = models });
            }
@@ -540,7 +540,7 @@
                {
                    throw new Exception("未获取到用户信息");
                }
                _PalletBindSvc.SaveAppointSlot(model.BindId,model.LocateId,int.Parse(userId));
                _PalletBindSvc.SaveAppointSlot(model.BindId, model.LocateId, int.Parse(userId));
                return Ok(new { code = 0, count = 0, msg = "指定储位成功", data = "" });
            }
@@ -692,7 +692,7 @@
                RefAsync<int> count = new RefAsync<int>();
                var bolls = await _taskSvc.GetTaskList(type, model.Type, model.Status, model.TaskNo, model.IsSuccess, model.PalletNo, model.Msg, model.Page, model.Limit, count);
                return Ok(new { code = 0, count, msg = "入库任务信息", data = bolls });
                return Ok(new { code = 0, count = count.Value, msg = "入库任务信息", data = bolls });
            }
            catch (Exception e)
            {
@@ -861,9 +861,9 @@
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                _auditLog.EditAudit(model.Id,model.Status,model.Opinion, int.Parse(userId));
                _auditLog.EditAudit(model.Id, model.Status, model.Opinion, int.Parse(userId));
                return Ok(new { code = 0, count=0, msg = "审核记录列表", data = "" });
                return Ok(new { code = 0, count = 0, msg = "审核记录列表", data = "" });
            }
            catch (Exception e)
            {
@@ -920,7 +920,7 @@
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var list = _BoxInfoSvc.AddLabelBox(model.Id, model.IsReset, decimal.Parse(model.ArriveQty), model.ProductionTime, model.ExpirationTime, model.StoreTime, model.SupplierLot, int.Parse(userId));
                return Ok(new { code = 0,  msg = "生成箱码标签成功", data = list });
                return Ok(new { code = 0, msg = "生成箱码标签成功", data = list });
            }
            catch (Exception e)
            {
@@ -945,7 +945,7 @@
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var list = _BoxInfoSvc.GetBuDaLabelList(model.BoxNo, model.EndBoxNo, model.BoxNo2, model.EndBoxNo2,model.Type,int.Parse(userId));
                var list = _BoxInfoSvc.GetBuDaLabelList(model.BoxNo, model.EndBoxNo, model.BoxNo2, model.EndBoxNo2, model.Type, int.Parse(userId));
                return Ok(new { code = 0, msg = "获取补打箱码标签信息", data = list });
            }
            catch (Exception e)
@@ -986,7 +986,7 @@
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                _BoxInfoSvc.DelLabelByAsnNo(model.AsnNo,model.LotNo,int.Parse(userId));
                _BoxInfoSvc.DelLabelByAsnNo(model.AsnNo, model.LotNo, int.Parse(userId));
                return Ok(new { code = 0, msg = "删除成功", data = "" });
            }
            catch (Exception e)
@@ -1128,7 +1128,7 @@
        {
            try
            {
                var type = new List<string>() { "0","1","2" };
                var type = new List<string>() { "0", "1", "2" };
                var bolls = _taskSvc.GetArchivingTaskList(type, model.Type, model.Status, model.TaskNo, model.IsSuccess, model.PalletNo, model.Msg, model.Page, model.Limit, out int count);
                return Ok(new { code = 0, count, msg = "任务信息", data = bolls });
@@ -1149,7 +1149,7 @@
        {
            try
            {
                var bolls = _logSvc.GetArchivingLogOperationList(model.ComeFrom,model.MenuName, model.Type, model.Msg, model.StartTime, model.EndTime, model.Page, model.Limit, out int count);
                var bolls = _logSvc.GetArchivingLogOperationList(model.ComeFrom, model.MenuName, model.Type, model.Msg, model.StartTime, model.EndTime, model.Page, model.Limit, out int count);
                return Ok(new { code = 0, count, msg = "入库操作日志信息", data = bolls });
            }
@@ -1168,7 +1168,7 @@
        /// <returns>采购单信息</returns>
        [HttpPost]
        [ServiceFilter(typeof(ApiResponseActionFilter))]
        public async Task<SqlSugarPagedList>  GetProcurePlanNoticeList(ProcurePlanNoticeVm model)
        public async Task<SqlSugarPagedList> GetProcurePlanNoticeList(ProcurePlanNoticeVm model)
        {
            RefAsync<int> count = new RefAsync<int>();
            var bolls = await _procurePlanSvc.GetProcurePlanNoticeList(model, count);
@@ -1215,7 +1215,7 @@
                {
                    throw new Exception("未获取到用户信息");
                }
                _procurePlanSvc.CreateAsnByProcurePlan(Convert.ToInt32(model.Id), int.Parse(UserId));
                return Ok(new { code = 0, msg = "添加成功" });
Wms/Wms/Controllers/BllCheckController.cs
@@ -70,7 +70,7 @@
        {
            RefAsync<int> count = new RefAsync<int>();
            var bolls = await _stockCheckSvc.GetStockCheckList(model.CrNo, model.Status, model.PalletNo, model.SkuNo, model.SkuName, model.LotNo, model.StartTime, model.EndTime, model.Page, model.Limit, count);
            return Ok(new { code = 0, count, msg = "盘点单信息", data = bolls });
            return Ok(new { code = 0, count = count.Value, msg = "盘点单信息", data = bolls });
        }
        /// <summary>
@@ -84,7 +84,7 @@
            RefAsync<int> count = new RefAsync<int>();
            var bolls = await _stockCheckSvc.GetStockCheckDetailList(model.CrNo, model.Page, model.Limit, count);
            return Ok(new { code = 0, count, msg = "盘点单明细信息", data = bolls });
            return Ok(new { code = 0, count = count.Value, msg = "盘点单明细信息", data = bolls });
        }
        /// <summary>
        /// 获取库存明细信息(盘点选择明细数据源)
@@ -96,7 +96,7 @@
        {
            RefAsync<int> count = new RefAsync<int>();
            var bolls = await _stockCheckSvc.GetCheckStockDetailList(model.HouseNo, model.RoadwayNo, model.LocateNo, model.Msg, model.Page, model.Limit, count);
            return Ok(new { code = 0, count, msg = "获取库存明细信息", data = bolls });
            return Ok(new { code = 0, count = count.Value, msg = "获取库存明细信息", data = bolls });
        }
        /// <summary>
@@ -175,7 +175,7 @@
                RefAsync<int> count = new RefAsync<int>();
                var list = await _stockCheckLogSvc.GetStockCheckLogList(model.CrNo, model.Status, model.PalletNo, model.BoxNo, model.SkuNo, model.SkuName, model.LotNo, model.Page, model.Limit, count);
                return Ok(new { code = 0, count, msg = "盘点记录", data = list });
                return Ok(new { code = 0, count = count.Value, msg = "盘点记录", data = list });
            }
            catch (Exception e)
            {
@@ -201,7 +201,7 @@
                RefAsync<int> count = new RefAsync<int>();
                var bolls = await _taskSvc.GetTaskList(type, model.Type, model.Status, model.TaskNo, model.IsSuccess, model.PalletNo, model.Msg, model.Page, model.Limit, count);
                return Ok(new { code = 0, count, msg = "库内任务信息", data = bolls });
                return Ok(new { code = 0, count = count.Value, msg = "库内任务信息", data = bolls });
            }
            catch (Exception e)
            {
@@ -222,7 +222,7 @@
                RefAsync<int> count = new RefAsync<int>();
                var bolls = await _logSvc.GetLogOperationCrList(model.MenuName, model.Type, model.Msg, model.StartTime, model.EndTime, model.Page, model.Limit, count);
                return Ok(new { code = 0, count, msg = "出库操作日志信息", data = bolls });
                return Ok(new { code = 0, count = count.Value, msg = "出库操作日志信息", data = bolls });
            }
            catch (Exception e)
            {
@@ -336,7 +336,7 @@
        {
            RefAsync<int> count = new RefAsync<int>();
            List<MateDataStockDto> mateDataStockDtos = await _stockPallet.GetPalletsOutside(model.SkuNo, model.SkuName, model.LotNo, model.PalletNo, model.Page, model.Limit, count);
            return Ok(new { code = 0, count, msg = "获取库外托盘信息成功", data = mateDataStockDtos });
            return Ok(new { code = 0, count = count.Value, msg = "获取库外托盘信息成功", data = mateDataStockDtos });
        }
        /// <summary>
Wms/Wms/Controllers/BllSoController.cs
@@ -522,18 +522,13 @@
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetExportAllotList(GetExportAllotVm model)
        [ServiceFilter(typeof(ApiResponseActionFilter))]
        public async Task<SqlSugarPagedList> GetExportAllotList(GetExportAllotVm model)
        {
            try
            {
                var bolls = _exAllotSvc.GetExportAllotList(model.SoNo, model.WaveNo, model.PalletNo, model.SkuNo, model.SkuName, model.LotNo, model.Status,model.BoxNo, model.Page, model.Limit, out int count);
            RefAsync<int> count = new RefAsync<int>();
            var bolls = await _exAllotSvc.GetExportAllotList(model, count);
                return Ok(new { code = 0, count, msg = "出库分配信息", data = bolls });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
            return new SqlSugarPagedList() { Items = bolls, Total = count };
        }
        /// <summary>
@@ -577,18 +572,13 @@
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetCompleteDetailList(GetCompleteDetailVm model)
        [ServiceFilter(typeof(ApiResponseActionFilter))]
        public async Task<SqlSugarPagedList> GetCompleteDetailList(GetCompleteDetailVm model)
        {
            try
            {
                var bolls = _comDetailSvc.GetCompleteDetailList(model.Id,model.Page, model.Limit, out int count);
            RefAsync<int> count = new RefAsync<int>();
            var bolls = await _comDetailSvc.GetCompleteDetailList(model, count);
                return Ok(new { code = 0, count, msg = "拣货明细信息", data = bolls });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
            return new SqlSugarPagedList() { Items = bolls, Total = count };
        }
        [HttpGet]
@@ -615,19 +605,14 @@
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetPalletNoOutList(GetPalletNoOutVm model)
        [HttpPost]
        [ServiceFilter(typeof(ApiResponseActionFilter))]
        public async Task<SqlSugarPagedList> GetPalletNoOutList(GetPalletNoOutVm model)
        {
            try
            {
                var bolls = _exNoticeSvc.GetPalletNoOutList(model.SkuNo,model.SkuName,model.PalletNo,model.LotNo,model.InspectMark,model.BitPalletMark,model.Page,model.Limit,out int count);
            RefAsync<int> count = new RefAsync<int>();
            var bolls = await _exNoticeSvc.GetPalletNoOutList(model, count);
                return Ok(new { code = 0, count, msg = "获取托盘出库数据异常", data = bolls});
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = "托盘出库数据" + e.Message });
            }
            return new SqlSugarPagedList() { Items = bolls, Total = count };
        }
        /// <summary>
@@ -722,7 +707,7 @@
                RefAsync<int> count = new RefAsync<int>();
                var bolls = await _taskSvc.GetTaskList( type, model.Type,model.Status,model.TaskNo,model.IsSuccess,model.PalletNo,model.Msg,model.Page, model.Limit, count);
                return Ok(new { code = 0, count, msg = "出库任务信息", data = bolls });
                return Ok(new { code = 0, count = count.Value, msg = "出库任务信息", data = bolls });
            }
            catch (Exception e)
            {
@@ -865,18 +850,13 @@
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetLogOperationSoList(GetOperationVm model)
        [ServiceFilter(typeof(ApiResponseActionFilter))]
        public async Task<SqlSugarPagedList> GetLogOperationSoList(GetOperationVm model)
        {
            try
            {
                var bolls = _logSvc.GetLogOperationSoList(model.MenuName, model.Type, model.Msg, model.StartTime, model.EndTime,model.Page, model.Limit, out int count);
            RefAsync<int> count = new RefAsync<int>();
            var bolls = await _logSvc.GetLogOperationSoList(model.MenuName, model.Type, model.Msg, model.StartTime, model.EndTime, model.Page, model.Limit, count);
                return Ok(new { code = 0, count, msg = "出库操作日志信息", data = bolls });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
            return new SqlSugarPagedList() { Items = bolls, Total = count };
        }
        #endregion
@@ -910,18 +890,13 @@
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetWaveMageList(GetWaveMageVm model)
        [ServiceFilter(typeof(ApiResponseActionFilter))]
        public async Task<SqlSugarPagedList> GetWaveMageList(GetWaveMageVm model)
        {
            try
            {
                var bolls = _waveSvc.GetWaveMageList(model.WaveNo, model.Status, model.LotNo, model.LogisticsId, model.Page, model.Limit, out int count);
            RefAsync<int> count = new RefAsync<int>();
            var bolls = await _waveSvc.GetWaveMageList(model, count);
                return Ok(new { code = 0, count, msg = "出库单信息", data = bolls });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
            return new SqlSugarPagedList() { Items = bolls, Total = count };
        }
        /// <summary>
Wms/Wms/Controllers/DownApiController.cs
@@ -174,31 +174,25 @@
        /// <returns></returns>
        [Authorize]
        [HttpGet]
        [UnitOfWork]
        public async Task<IActionResult> CheckOutHouse(string crNo, string outMode)
        {
            try
            //获取当前登录的用户ID
            var claimsIdentity = this.User.Identity as ClaimsIdentity;
            if (claimsIdentity == null)
            {
                //获取当前登录的用户ID
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(userId))
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                string str = "";
                var list = await _crCheckSvc.CheckOutHouse(crNo, outMode, _config.WcsHost + _config.IssueComApiUrl, str);
                return Ok(new { code = 0, msg = str, data = list });
                return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
            }
            catch (Exception e)
            var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
            if (string.IsNullOrWhiteSpace(userId))
            {
                return Ok(new { code = 1, msg = e.Message });
                return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
            }
            string str = "";
            var list = await _crCheckSvc.CheckOutHouse(crNo, outMode, _config.WcsHost + _config.IssueComApiUrl, str);
            return Ok(new { code = 0, msg = str, data = list });
        }
        /// <summary>