| | |
| | | using Model.ModelDto.DataDto; |
| | | using System.Xml.Schema; |
| | | using ZXing.OneD; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WMS.BLL.BllPdaServer |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 保存指定的储位 |
| | | /// </summary> |
| | | /// <param name="palletNo"></param> |
| | | /// <param name="locateNo"></param> |
| | | /// <param name="userId"></param> |
| | | /// <exception cref="Exception"></exception> |
| | | public void SaveAppointLocate(string palletNo, string locateNo, int userId) |
| | | { |
| | | try |
| | | { |
| | | //托盘库存信息 |
| | | var stockDetailList = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).ToList(); |
| | | if (stockDetailList.Count(m=> string.IsNullOrWhiteSpace(m.LocatNo)) > 0) |
| | | { |
| | | throw new Exception("托盘没有在平库储位上"); |
| | | } |
| | | //判断托盘的储位是否是平库 |
| | | var stockDetail = stockDetailList.First(); |
| | | var oldLocate = stockDetail.LocatNo; |
| | | var pingAreaStr = Db.Queryable<SysStorageArea>().Where(m => m.IsDel == "0" && m.WareHouseNo == "W04" && m.AreaNo != "B06" && m.AreaNo != "B07").Select(m => m.AreaNo).ToList(); |
| | | var pingLocateInfo = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == oldLocate && pingAreaStr.Contains(m.AreaNo) && m.IsDel == "0"); |
| | | if (pingLocateInfo == null) |
| | | { |
| | | throw new Exception("当前托盘所在的储位没有在系统中找到信息"); |
| | | } |
| | | |
| | | var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList(); |
| | | //验证物料是否有成品 |
| | | foreach (var item in stockDetailList) |
| | | { |
| | | var skuItem = skuList.First(m => m.SkuNo == item.SkuNo); |
| | | if (skuItem.Type == "2") |
| | | { |
| | | throw new Exception("成品物料请入成品库"); |
| | | } |
| | | } |
| | | //储位 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.LocatNo == locateNo); |
| | | if (locate == null) |
| | | { |
| | | throw new Exception("未查询到储位的信息"); |
| | | } |
| | | if (locate.WareHouseNo != "W02") |
| | | { |
| | | throw new Exception("只能指定立库的储位"); |
| | | } |
| | | if (locate.Status != "0" || locate.Flag != "0") |
| | | { |
| | | throw new Exception("该储位状态不是空储位或标志不是正常的"); |
| | | } |
| | | |
| | | |
| | | Db.BeginTran(); |
| | | try |
| | | { |
| | | var time = DateTime.Now; |
| | | //判断当前托盘是否存在绑定信息 |
| | | var task = Db.Queryable<LogTask>().First(m=> m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1") && m.OrderType == "0" && m.Type == "0"); |
| | | |
| | | var upShelf = Db.Queryable<BllPalletUpShelf>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1")); |
| | | if (task != null) |
| | | { |
| | | if (task.Status == "1") |
| | | { |
| | | throw new Exception("托盘正在执行任务,不可指定储位"); |
| | | } |
| | | if (task.Status == "0") |
| | | { |
| | | if (upShelf != null) |
| | | { |
| | | if (upShelf.Status == "1") |
| | | { |
| | | throw new Exception("托盘正在执行上架任务,不可指定储位"); |
| | | } |
| | | if (upShelf.Status == "0") |
| | | { |
| | | if (locate.LocatNo == task.EndLocat) |
| | | { |
| | | throw new Exception("已指定储位,无需重复指定"); |
| | | } |
| | | //重新指定储位 |
| | | task.EndLocat = locate.LocatNo; |
| | | task.EndRoadway = locate.RoadwayNo; |
| | | upShelf.LocatNo = locate.LocatNo; |
| | | upShelf.RoadwayNo = locate.RoadwayNo; |
| | | Db.Updateable(task).ExecuteCommand(); |
| | | Db.Updateable(upShelf).ExecuteCommand(); |
| | | new OperationASNServer().AddLogOperationAsn("PDA模块", "指定储位", palletNo, "编辑", $"指定了储位:{locate.LocatNo}、托盘码:{palletNo}的信息", userId); |
| | | Db.CommitTran(); |
| | | return; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("查询出任务但没有上架记录,信息错误"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 添加入库日志记录 |
| | | var taskNo = new Common().GetMaxNo("TK"); |
| | | var addTask = new LogTask //入库任务 |
| | | { |
| | | TaskNo = taskNo, |
| | | Sender = "WMS", |
| | | Receiver = "WCS", |
| | | IsSuccess = 1, //是否下发成功 0失败 1成功 |
| | | SendDate = DateTime.Now, //发送时间 |
| | | //BackDate = DateTime.Now, //返回时间 |
| | | StartRoadway = "", // 起始巷道 |
| | | StartLocat = oldLocate,//起始位置 |
| | | EndLocat = locate.LocatNo,//目标位置 |
| | | EndRoadway = locate.RoadwayNo, // 目标巷道 |
| | | PalletNo = palletNo,//托盘码 |
| | | IsSend = 1,//是否可再次下发 |
| | | IsCancel = 1,//是否可取消 |
| | | IsFinish = 1,//是否可完成 |
| | | Type = "0",//任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | Status = "0",//任务状态0:等待执行1正在执行2执行完成 |
| | | OrderType = "0",//0 入库单 1 出库单 2 盘点单 3 移库单 |
| | | Msg = $"{oldLocate}到=>>{locate.LocatNo}的入库任务", //关键信息 |
| | | |
| | | }; |
| | | Db.Insertable(addTask).ExecuteCommand(); |
| | | |
| | | //添加托盘上架记录 |
| | | var upShelfAdd = new BllPalletUpShelf() |
| | | { |
| | | TaskNo = addTask.TaskNo, |
| | | TraceNo = "", |
| | | PalletNo = palletNo, |
| | | SkuNo = stockDetail.SkuNo, |
| | | SkuName = stockDetail.SkuName, |
| | | LotNo = stockDetail.LotNo, |
| | | Status = "0", |
| | | |
| | | WareHouseNo = locate.WareHouseNo, |
| | | RoadwayNo = locate.RoadwayNo, |
| | | AreaNo = locate.AreaNo, |
| | | LocatNo = locate.LocatNo, |
| | | |
| | | CreateUser = 0, |
| | | }; |
| | | Db.Insertable(upShelfAdd).ExecuteCommand(); |
| | | |
| | | locate.Status = "2"; |
| | | |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | |
| | | new OperationASNServer().AddLogOperationAsn("PDA模块", "指定储位", palletNo, "编辑", $"指定了储位:{locate.LocatNo}、托盘码:{palletNo}的信息", userId); |
| | | Db.CommitTran(); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Db.RollbackTran(); |
| | | throw new Exception(e.Message); |
| | | } |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |