| | |
| | | using Model.InterFaceModel; |
| | | using Model.ModelVm; |
| | | using Newtonsoft.Json; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | |
| | | using WMS.BLL.LogServer; |
| | | using WMS.DAL; |
| | | using WMS.Entity.BllAsnEntity; |
| | | using WMS.Entity.BllQualityEntity; |
| | | using WMS.Entity.BllSoEntity; |
| | | using WMS.Entity.Context; |
| | | using WMS.Entity.DataEntity; |
| | |
| | | } |
| | | } |
| | | var upShelfOldList = Db.Queryable<BllPalletUpShelf>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1")).ToList(); |
| | | if (upShelfOldList != null) //查询到入库信息 |
| | | if (upShelfOldList.Count != 0) //查询到入库信息 |
| | | { |
| | | var upShelfOld = upShelfOldList.First(); |
| | | var beingTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == upShelfOld.TaskNo); |
| | |
| | | // 添加托盘绑定表托盘入库任务号 liudl |
| | | foreach (DataStockDetail stockModel in stockDetail) |
| | | { |
| | | var bindModel = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.Status == "2" |
| | | && m.PalletNo == stockModel.PalletNo && m.ASNNo == stockModel.ASNNo && m.ASNDetailNo == stockModel.ASNDetailNo); |
| | | var bindModel = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.Status == "2" |
| | | && m.PalletNo == stockModel.PalletNo && m.ASNNo == stockModel.ASNNo && m.ASNDetailNo == stockModel.ASNDetailNo).OrderByDescending(m=>m.CreateTime).First(); |
| | | if (bindModel != null && string.IsNullOrWhiteSpace(bindModel.TaskNo)) |
| | | { |
| | | bindModel.TaskNo = taskNo; |
| | |
| | | foreach (var item in stockDetail) |
| | | { |
| | | var skuItem = skuList.First(m => m.SkuNo == item.SkuNo); |
| | | if (skuItem.SkuNo == "100099") |
| | | { |
| | | continue; |
| | | } |
| | | if (skuItem.Type != "2") |
| | | { |
| | | throw new Exception("托盘上有不是成品的物料"); |
| | |
| | | } |
| | | |
| | | //巷道组信息 |
| | | var roadList = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo)) |
| | | var roadList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo) && !string.IsNullOrWhiteSpace(m.RoadwayNo)) |
| | | .GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList(); |
| | | |
| | | #endregion |
| | |
| | | |
| | | foreach (DataStockDetail stockModel in stockDetail) |
| | | { |
| | | var bindModel = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.Status == "2" |
| | | && m.PalletNo == stockModel.PalletNo && m.ASNNo == stockModel.ASNNo && m.ASNDetailNo == stockModel.ASNDetailNo); |
| | | var bindModel = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.Status == "2" |
| | | && m.PalletNo == stockModel.PalletNo && m.ASNNo == stockModel.ASNNo && m.ASNDetailNo == stockModel.ASNDetailNo).OrderByDescending(m=>m.CreateTime).First(); |
| | | if (bindModel != null && string.IsNullOrWhiteSpace(bindModel.TaskNo)) |
| | | { |
| | | bindModel.TaskNo = taskNo; |
| | |
| | | foreach (var item in stockDetail) |
| | | { |
| | | var skuItem = skuList.First(m => m.SkuNo == item.SkuNo); |
| | | if (skuItem.SkuNo == "100099") |
| | | { |
| | | continue; |
| | | } |
| | | if (skuItem.Type != "2") |
| | | { |
| | | throw new Exception("托盘上有不是成品的物料"); |
| | |
| | | } |
| | | |
| | | locate = allotLocate.GetMiJiSuiTableLocate(roadwayNo, areaList); |
| | | |
| | | if (locate == null) |
| | | { |
| | | throw new Exception($"没有空储位"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | |
| | | { |
| | | throw new Exception($"未查询到任务中的储位信息"); |
| | | } |
| | | 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 pingAreaStr = Db.Queryable<SysStorageArea>().Where(m => m.IsDel == "0" && m.WareHouseNo == "W04").Select(m => m.AreaNo).ToList(); |
| | | var pingLocateInfo = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locate.LocatNo && pingAreaStr.Contains(m.AreaNo) && m.IsDel == "0"); |
| | | if (pingLocateInfo == null) |
| | | { |
| | | throw new Exception("当前任务起始储位不在平库储位"); |
| | | } |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == task.PalletNo).ToList(); |
| | | foreach (var item in stockDetail) |
| | | { |
| | | item.WareHouseNo = ""; |
| | | item.RoadwayNo = ""; |
| | | item.AreaNo = ""; |
| | | item.LocatNo = ""; |
| | | } |
| | | Db.Updateable(stockDetail).ExecuteCommand(); |
| | | locate.Status = "0"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 移库任务完成JC34 |
| | | /// </summary> |
| | | /// <param name="taskNo"></param> |
| | | /// <param name="userId"></param> |
| | | /// <exception cref="Exception"></exception> |
| | | public void MoveSuccess(string taskNo, int userId) |
| | | { |
| | | try |
| | | { |
| | | Db.BeginTran(); |
| | | //正常入库 |
| | | var task = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == taskNo); |
| | | if (task == null) |
| | | { |
| | | throw new Exception("未查询到任务信息"); |
| | | } |
| | | if (task.Status == "2") |
| | | { |
| | | throw new Exception("当前任务已完成"); |
| | | } |
| | | |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList(); |
| | | //判断是否是回流入库完成 |
| | | if (!stockDetail.Any()) |
| | | { |
| | | throw new Exception("没有查询到库存信息"); |
| | | } |
| | | //当前任务中的储位信息 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat); |
| | | if (locate == null) |
| | | { |
| | | throw new Exception($"未查询到任务中的起始储位信息"); |
| | | } |
| | | //当前任务中的储位信息 |
| | | var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat); |
| | | if (locate2 == null) |
| | | { |
| | | throw new Exception($"未查询到任务中的目标储位信息"); |
| | | } |
| | | |
| | | task.Status = "2";//任务状态 |
| | | task.IsSend = 0; |
| | | task.IsCancel = 0; |
| | | task.IsFinish = 0; |
| | | task.FinishDate = DateTime.Now;//完成时间 |
| | | Db.Updateable(task).ExecuteCommand(); |
| | | if (userId != 0) |
| | | { |
| | | //添加操作日志记录 |
| | | var k = new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", taskNo, "完成", $"点击完成按钮、完成任务号为:{taskNo}的任务", userId); |
| | | } |
| | | |
| | | foreach (var item in stockDetail) |
| | | { |
| | | if (locate2.LocatNo == "B040101") |
| | | { |
| | | item.WareHouseNo = ""; |
| | | item.RoadwayNo = ""; |
| | | item.AreaNo = ""; |
| | | item.LocatNo = ""; |
| | | } |
| | | else |
| | | { |
| | | item.WareHouseNo = locate2.WareHouseNo; |
| | | item.RoadwayNo = locate2.RoadwayNo; |
| | | item.AreaNo = locate2.AreaNo; |
| | | item.LocatNo = locate2.LocatNo; |
| | | } |
| | | item.UpdateTime = DateTime.Now; |
| | | if (userId != 0) |
| | | { |
| | | item.UpdateUser = userId; |
| | | } |
| | | } |
| | | |
| | | if (locate.WareHouseNo != "W04") |
| | | { |
| | | locate.Status = "0"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | } |
| | | |
| | | if (locate2.LocatNo == "B040101") |
| | | { |
| | | locate2.Status = "0"; |
| | | Db.Updateable(locate2).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | locate2.Status = "1"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | } |
| | | |
| | | Db.Updateable(stockDetail).ExecuteCommand(); |
| | | Db.CommitTran(); |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Db.RollbackTran(); |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | #region MyRegion |
| | | |
| | | |
| | | /// <summary> |
| | | /// 向Limes发送请验信息 |
| | | /// </summary> |
| | | /// <param name="model">model.Id:请验单主键;model.Code:出库口 </param> |
| | | /// <param name="userId">操作用户</param> |
| | | /// <param name="url">Wcs地址</param> |
| | | /// <returns></returns> |
| | | public bool SendInspectionRequest(IdVm model, int userId, string url, string userName) |
| | | { |
| | | try |
| | | { |
| | | // 判断请验单状态 |
| | | var data = Db.Queryable<BllQualityInspectionRequest>() |
| | | .Where(m => m.QcNo == model.Code && m.IsDel == "0" && m.Status == "0").ToList().FirstOrDefault(); |
| | | if (data == null) |
| | | { |
| | | throw new Exception("操作失败!请验单状态变更."); |
| | | } |
| | | |
| | | // 记录任务日志 |
| | | //var taskNo = new Common().GetMaxNo("TK"); |
| | | //var exTask = new LogTask() |
| | | //{ |
| | | // TaskNo = taskNo, |
| | | // Sender = "WMS", |
| | | // Receiver = "Limes", |
| | | // IsSuccess = 0, //是否下发成功 0失败 1成功 |
| | | // StartLocat = "", //起始位置 |
| | | // PalletNo = "", //托盘码 |
| | | // IsSend = 1, //是否可再次下发 |
| | | // IsCancel = 1, //是否可取消 |
| | | // IsFinish = 1, //是否可完成 |
| | | // Status = "0", //任务状态0:等待执行1正在执行2执行完成 |
| | | // OrderType = "5", //0 入库单 1 出库单 2 盘点单 3 移库单 4 取样出库单 5 其他 |
| | | // EndLocat = "", //目标位置 |
| | | // Type = "3", //任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | // Msg = "请验任务" |
| | | //}; |
| | | |
| | | //// 插入任务日志 |
| | | //Db.Insertable(exTask).ExecuteCommand(); |
| | | |
| | | |
| | | // 调用Limes接口发起请验 |
| | | var sendModel = new SendLimesModel() |
| | | { |
| | | QcNo = data.QcNo, |
| | | SkuNo = data.SkuNo, |
| | | Qty = data.Qty.ToString(), |
| | | LotNo = data.LotNo, |
| | | SupplierLot = data.SupplierLot, |
| | | RequestUser = userName, // 请验人 |
| | | }; |
| | | var jsonData = JsonConvert.SerializeObject(sendModel); |
| | | string response = ""; |
| | | |
| | | try |
| | | { |
| | | var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | //response = HttpHelper.DoPost(url, jsonData, "上传Limes系统发起请验", "Limes"); |
| | | var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | |
| | | ////解析返回数据 |
| | | //var limesModel = JsonConvert.DeserializeObject<LimesModel>(response); |
| | | //if (limesModel.Success == 0) |
| | | //{ |
| | | |
| | | |
| | | // 更新请验单信息 |
| | | data.Status = "1"; |
| | | data.SamplingQty = 10;//decimal.Parse(limesModel.SamplingQty); |
| | | data.RequestUser = userId; |
| | | data.RequestTime = DateTime.Now; |
| | | data.UpdateTime = DateTime.Now; |
| | | data.UpdateUser = userId; |
| | | |
| | | Db.Updateable(data).ExecuteCommand(); |
| | | //} |
| | | //if (limesModel.Success == -1) |
| | | //{ |
| | | |
| | | // throw new Exception(limesModel.Message); |
| | | //} |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | } |
| | | |
| | | //添加操作日志记录 |
| | | var k = new OperationCrServer() |
| | | .AddLogOperationCr("质量管理", "质检请验", model.Code, "请验", $"向质量部分发起请验!", userId); |
| | | |
| | | return true; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | } |