| | |
| | | { |
| | | throw new Exception("复核失败,复核人员和关闭订单人员不能相同!"); |
| | | } |
| | | if (date.Id == notice.CreateUser) |
| | | { |
| | | throw new Exception("复核失败,复核人员和创建订单人员不能相同!"); |
| | | } |
| | | var list = new List<SoDetail>(); |
| | | foreach (var d in detail) |
| | | { |
| | |
| | | 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) |
| | |
| | | Db.Updateable(st).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); |
| | | } |
| | | #endregion |
| | | } |
| | | |
| | | |
| | | } |
| | | //添加操作日志记录 |
| | |
| | | #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 |
| | | { |
| | |
| | | { |
| | | 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("当前出库单据无需要下发的托盘"); |
| | |
| | | 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") //抽检出库 /取样出库 |
| | |
| | | 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 //其他单据类型都存放发货缓存区 |
| | | { |
| | |
| | | StartLocate = locateNo, // 起始位置 |
| | | StartRoadway = locate.RoadwayNo, |
| | | EndLocate = task.EndLocat, // 目标位置 |
| | | EndRoadway = task.EndRoadway, |
| | | TaskNo = task.TaskNo, // 任务号 |
| | | TaskType = "1",// 任务类型 (出库) |
| | | TaskType = task.Type,// 任务类型 (出库) |
| | | OutMode = "", //目标地址 |
| | | Order = 1 |
| | | }; //出库数据 |