zhaowc
2025-04-07 b9f7560cbe0e562a40e9515a0559a3e951f0fee6
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -306,6 +306,10 @@
                {
                    throw new Exception("复核失败,复核人员和关闭订单人员不能相同!");
                }
                if (date.Id == notice.CreateUser)
                {
                    throw new Exception("复核失败,复核人员和创建订单人员不能相同!");
                }
                var list = new List<SoDetail>();
                foreach (var d in detail)
                {
@@ -1283,8 +1287,7 @@
                                throw new Exception("当前单据明细中计划数量与拣货数量不符,请核实");
                            }
                        }
                        if (d.Qty < d.CompleteQty)
                        {
                            //更改库存明细锁定数量
                            var allotList = Db.Queryable<BllExportAllot>().Where(o => o.SODetailNo == d.Id && o.Status == "3" && o.IsDel == "0").ToList();
                            foreach (var o in allotList)
@@ -1335,7 +1338,7 @@
                                Db.Updateable(st).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
                            }
                            #endregion
                        }
                    }
                    //添加操作日志记录
@@ -1687,7 +1690,7 @@
        #region 下发出库、出库完成、重新下发任务、取消任务、异常处理
        // 下发出库(调用cs接口给他库位地址)
        public List<OutCommandDto> IssueOutHouse(string soNo, string unstackingMode, string outMode, string loadingAddre, int userId, string url, out string str)
        public List<OutCommandDto> IssueOutHouse(string soNo, string unstackingMode, string outMode,string checkmode, string loadingAddre, int userId, string url, out string str)
        {
            try
            {
@@ -1707,8 +1710,11 @@
                {
                    throw new Exception($"未找到{soNo}出库单信息");
                }
                //所有要出库的出库分配信息(未下发的信息和待拣货的信息)
                var list = Db.Queryable<BllExportAllot>().Where(a => a.IsDel == "0" && a.SONo == soNo && a.Status == "0").ToList();
                //更新出库单拣选方式
                notice.UDF1 = checkmode;
                Db.Updateable(notice).ExecuteCommand();
                //所有要出库的出库分配信息(未下发的信息和待拣货的信息和部分拣货后回流入库的托盘)
                var list = Db.Queryable<BllExportAllot>().Where(a => a.IsDel == "0" && a.SONo == soNo && (a.Status == "0" || a.Status == "3")).ToList();
                if (list.Count == 0) //判断是否有需要下发的出库流水
                {
                    throw new Exception("当前出库单据无需要下发的托盘");
@@ -2427,11 +2433,11 @@
                                if (outLine == "443")//西侧出库
                                {
                                    positionEnd = locateno.OrderBy(m => m.LocatNo).First(m => m.Row == 1 && m.Status == "0" && m.Flag == "0").LocatNo; //西侧房间库位和对面房间
                                    positionEnd = locateno.OrderBy(m => m.LocatNo).First(m => m.Row == 1 && m.Status == "0" && m.Flag == "0").LocatNo; //西侧房间库位
                                }
                                else if (outLine == "440")  //东侧出库
                                {
                                    positionEnd = locateno.OrderBy(m => m.LocatNo).First(m => m.Row == 2  && m.Status == "0" && m.Flag == "0").LocatNo; //东侧房间库位
                                    positionEnd = locateno.OrderBy(m => m.LocatNo).First(m => m.Row == 3  && m.Status == "0" && m.Flag == "0").LocatNo; //东侧房间库位和对面房间
                                }
                            }
                            else if (type1.Type == "2" || type1.Type == "3") //抽检出库 /取样出库
@@ -2441,7 +2447,18 @@
                            else if (type1.Type == "4")//不合格品出库
                            {
                                positionEnd = Db.Queryable<SysStorageLocat>().OrderBy(m => m.LocatNo).First(m => m.AreaNo == "B03" && m.Status == "0" && m.Flag == "0").LocatNo;
                                positionEnd = Db.Queryable<SysStorageLocat>().OrderBy(m => m.LocatNo).First(m => (m.AreaNo == "B01"|| m.AreaNo == "B02"||m.AreaNo == "B04") && m.Status == "0" && m.Flag == "0").LocatNo;
                            }
                            else if (type1.Type == "0")//成品出库
                            {
                                if (type1.UDF1 == "0") //出库到暂存区
                                {
                                    positionEnd = Db.Queryable<SysStorageLocat>().OrderBy(m => m.LocatNo).First(m => m.AreaNo == "B02" && m.Status == "0" && m.Flag == "0").LocatNo;
                                }
                                else
                                {
                                    return;
                                }
                            }
                            else //其他单据类型都存放发货缓存区
                            {
@@ -2669,8 +2686,9 @@
                    StartLocate = locateNo, // 起始位置
                    StartRoadway = locate.RoadwayNo,
                    EndLocate = task.EndLocat, // 目标位置 
                    EndRoadway = task.EndRoadway,
                    TaskNo = task.TaskNo, // 任务号
                    TaskType = "1",// 任务类型 (出库)
                    TaskType = task.Type,// 任务类型 (出库)
                    OutMode = "",  //目标地址
                    Order = 1
                }; //出库数据