| | |
| | | { |
| | | 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("当前出库单据无需要下发的托盘"); |
| | |
| | | //出库任务号更改,如果由PLC出库,则PLC回传任务号为:任务号+实际出库口 |
| | | var TtaskNo = taskNo; |
| | | var outLine = ""; |
| | | if (userId == 0) |
| | | if (taskNo.Length == 18) |
| | | { |
| | | TtaskNo = taskNo.Substring(0, taskNo.Length - 3); |
| | | outLine = taskNo.Substring(taskNo.Length - 3, 3); |
| | |
| | | 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 //其他单据类型都存放发货缓存区 |
| | | { |
| | |
| | | agvTask.CtnrTyp = "1"; //容器类型,值为1 |
| | | if (type == "D02") |
| | | { |
| | | agvTask.CtnrNum = "10"; //叠托任务需要下发空托盘数量 |
| | | var palnoNum = Db.Queryable<BllPalletBind>().OrderByDescending(w=>w.Id).First(w => w.IsDel == "0" && w.PalletNo == task.PalletNo); |
| | | agvTask.CtnrNum = palnoNum.Qty.ToString(); //叠托任务需要下发空托盘数量 |
| | | } |
| | | |
| | | agvTaskList.Add(agvTask); |
| | |
| | | StartLocate = locateNo, // 起始位置 |
| | | StartRoadway = locate.RoadwayNo, |
| | | EndLocate = task.EndLocat, // 目标位置 |
| | | EndRoadway = task.EndRoadway, |
| | | TaskNo = task.TaskNo, // 任务号 |
| | | TaskType = "1",// 任务类型 (出库) |
| | | TaskType = task.Type,// 任务类型 (出库) |
| | | OutMode = "", //目标地址 |
| | | Order = 1 |
| | | }; //出库数据 |
| | |
| | | throw new Exception("拣货数量不能大于箱内剩余待拣数量"); |
| | | } |
| | | decimal pickQty = 0;//拣货的数量 |
| | | |
| | | Db.BeginTran(); |
| | | var comList = new List<BllCompleteDetail>(); |
| | | foreach (var item in boxInfos) |
| | | { |
| | |
| | | } |
| | | //修改出库单信息 |
| | | Db.Updateable(notice).ExecuteCommand(); |
| | | |
| | | Db.CommitTran(); |
| | | return allot.LoadingAddre; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | |
| | | Db.RollbackTran(); |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |