| | |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using Utility.Tools; |
| | | using WMS.BLL.LogServer; |
| | | using WMS.DAL; |
| | | using WMS.Entity.BllAsnEntity; |
| | |
| | | using WMS.Entity.LogEntity; |
| | | using WMS.Entity.SysEntity; |
| | | using WMS.IBLL.IBllTransServer; |
| | | using static Model.InterFaceModel.RCSModel; |
| | | |
| | | namespace WMS.BLL.BllTransServer |
| | | { |
| | |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | public ErpModel CreateAsn(AsnInfo model) |
| | | public ErpModel CreateAsnWork(AsnInfo model) |
| | | { |
| | | try |
| | | { |
| | |
| | | Origin = string.IsNullOrEmpty(model.Origin) ? "MES" : model.Origin, |
| | | CustomerNo = model.Customer, |
| | | CustomerName = "", |
| | | OrderCode = model.OrderCode, |
| | | OrderCode = model.OrderCode |
| | | }; |
| | | |
| | | // 入库明细表信息 |
| | |
| | | /// <param name="TaskNo"></param> |
| | | /// <param name="Status"></param> |
| | | /// <returns></returns> |
| | | public ErpModel FinishTask(string TaskNo,string Status) |
| | | public ErpModel RCSFinishTask(string TaskNo,string Status) |
| | | { |
| | | try |
| | | { |
| | |
| | | |
| | | resultModel.Success = 0; |
| | | resultModel.Message = "成功"; |
| | | |
| | | //提交事务 |
| | | Db.CommitTran(); |
| | | |
| | | return resultModel; |
| | | } |
| | | switch (taskInfo.OrderType) |
| | | { |
| | | #region 入库完成 |
| | | case "0": |
| | | //入库单明细信息 |
| | | var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(w => w.Id == taskInfo.NoticeDetailNo); |
| | | if (noticeDetail == null) |
| | | { |
| | | resultModel.Message = "该任务对应的入库单明细不存在!"; |
| | | return resultModel; |
| | | } |
| | | //入库单信息 |
| | | var notice = Db.Queryable<BllArrivalNotice>().First(w => w.ASNNo == noticeDetail.ASNNo); |
| | | if (notice == null) |
| | | { |
| | | resultModel.Message = "该任务对应的入库单不存在!"; |
| | | return resultModel; |
| | | } |
| | | if (notice.Status == "3" || notice.Status == "4") |
| | | { |
| | | resultModel.Message = "该任务对应的入库单已执行完成!"; |
| | | return resultModel; |
| | | } |
| | | |
| | | //目标储位信息 |
| | | var locatInfo = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.EndLocat && w.IsDel == "0"); |
| | | if (locatInfo == null) |
| | |
| | | resultModel.Message = "目标储位信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | |
| | | //库存明细 |
| | | var sd1 = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == taskInfo.PalletNo); |
| | | if (sd1 == null) |
| | | { |
| | | sd1 = new DataStockDetail() |
| | | { |
| | | LotNo = noticeDetail.LotNo, |
| | | LotText = noticeDetail.LotText, |
| | | SupplierLot = noticeDetail.SupplierLot, |
| | | SkuNo = noticeDetail.SkuNo, |
| | | SkuName = noticeDetail.SkuName, |
| | | Standard = noticeDetail.Standard, |
| | | Qty = 1, |
| | | LockQty = 0, |
| | | FrozenQty = 0, |
| | | InspectQty = 0, |
| | | ASNNo = noticeDetail.ASNNo, |
| | | ASNDetailNo = noticeDetail.Id, |
| | | WareHouseNo = locatInfo.WareHouseNo,//所属仓库 |
| | | RoadwayNo = locatInfo.RoadwayNo,//所属巷道 |
| | | AreaNo = locatInfo.AreaNo,//所属区域 |
| | | LocatNo = locatInfo.LocatNo,//储位地址 |
| | | PalletNo = taskInfo.PalletNo, |
| | | PalletNo2 = "", |
| | | PalletNo3 = "", |
| | | PalletTags = "0", |
| | | CompleteTime = comTime, |
| | | ProductionTime = null, |
| | | ExpirationTime = null, |
| | | Status = "0", |
| | | InspectMark = "0", |
| | | InspectStatus = "0",//待检验 |
| | | BitPalletMark = "0", |
| | | PackagNo = "", |
| | | IsBale = "0", |
| | | IsBelt = "0", |
| | | |
| | | PalletStatus = "1", |
| | | |
| | | IsDel = "0", |
| | | CreateUser = 0, |
| | | CreateTime = comTime |
| | | }; |
| | | //插入库存明细 |
| | | Db.Insertable(sd1).ExecuteCommand(); |
| | | resultModel.Message = $"该桶对应的库存信息不存在,桶号:{taskInfo.PalletNo}!"; |
| | | return resultModel; |
| | | } |
| | | else |
| | | { |
| | |
| | | sd1.LockQty = 0; |
| | | sd1.FrozenQty = 0; |
| | | sd1.InspectQty = 0; |
| | | sd1.ASNNo = noticeDetail.ASNNo; |
| | | sd1.ASNDetailNo = noticeDetail.Id; |
| | | sd1.WareHouseNo = locatInfo.WareHouseNo;//所属仓库 |
| | | sd1.RoadwayNo = locatInfo.RoadwayNo;//所属巷道 |
| | | sd1.AreaNo = locatInfo.AreaNo;//所属区域 |
| | | sd1.LocatNo = locatInfo.LocatNo;//储位地址 |
| | | sd1.CompleteTime = comTime; |
| | | sd1.InspectStatus = "0";//待检验 |
| | | sd1.PalletStatus = "1";//预混 |
| | | sd1.PalletStatus = "2";//半成品 |
| | | |
| | | //修改库存明细 |
| | | Db.Updateable(sd1).ExecuteCommand(); |
| | | } |
| | | |
| | | noticeDetail.CompleteQty += 1;//完成数量 |
| | | noticeDetail.Status = "1";//0:等待执行 1:正在执行 2:执行完成 |
| | | if (noticeDetail.CompleteQty >= noticeDetail.Qty) |
| | | { |
| | | noticeDetail.Status = "2"; |
| | | noticeDetail.CompleteTime = comTime; |
| | | } |
| | | noticeDetail.UpdateUser = 0; |
| | | noticeDetail.UpdateTime = comTime; |
| | | //更新入库单明细 |
| | | Db.Updateable(noticeDetail).ExecuteCommand(); |
| | | |
| | | notice.UpdateUser = 0; |
| | | notice.UpdateTime = comTime; |
| | | if (notice.Status == "0") |
| | | { |
| | | notice.Status = "1"; |
| | | } |
| | | var asnDetailNum = Db.Queryable<BllArrivalNoticeDetail>().Count(m => m.IsDel == "0" && m.ASNNo == noticeDetail.ASNNo && m.Status != "2"); |
| | | if (asnDetailNum == 0) |
| | | { |
| | | notice.Status = "2"; |
| | | notice.CompleteTime = comTime;//完成时间 |
| | | } |
| | | //更新入库单 |
| | | Db.Updateable(notice).ExecuteCommand(); |
| | | |
| | | locatInfo.Status = "1";//有物品 |
| | | //更新储位状态 |
| | | Db.Updateable(locatInfo).ExecuteCommand(); |
| | | |
| | | #region 质检请验 |
| | | var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == noticeDetail.SkuNo && m.LotNo == noticeDetail.LotNo && m.SupplierLot == noticeDetail.SupplierLot); |
| | | if (qualityRequest == null) |
| | | //入库单明细信息 |
| | | var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(w => w.Id == taskInfo.NoticeDetailNo); |
| | | if (noticeDetail != null) |
| | | { |
| | | //质检请验单信息 |
| | | string qcNo = new Common().GetMaxNo("QC"); |
| | | qualityRequest = new BllQualityInspectionRequest(); |
| | | qualityRequest.QcNo = qcNo; |
| | | qualityRequest.Status = "0"; |
| | | qualityRequest.SkuNo = noticeDetail.SkuNo; |
| | | qualityRequest.SkuName = noticeDetail.SkuName; |
| | | qualityRequest.LotNo = noticeDetail.LotNo; |
| | | qualityRequest.SupplierLot = noticeDetail.SupplierLot; |
| | | qualityRequest.Qty = noticeDetail.Qty; |
| | | qualityRequest.SamplingQty = 0; |
| | | qualityRequest.ASNNo = noticeDetail.ASNNo; |
| | | qualityRequest.CreateUser = 0; |
| | | qualityRequest.CreateTime = comTime; |
| | | |
| | | // 记录任务日志 |
| | | var taskNo = new Common().GetMaxNo("TK"); |
| | | var exTask = new LogTask() |
| | | //入库单信息 |
| | | var notice = Db.Queryable<BllArrivalNotice>().First(w => w.ASNNo == noticeDetail.ASNNo); |
| | | if (notice == null) |
| | | { |
| | | 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 = qualityRequest.QcNo, |
| | | SkuNo = qualityRequest.SkuNo, |
| | | Qty = qualityRequest.Qty.ToString(), |
| | | LotNo = qualityRequest.LotNo, |
| | | SupplierLot = qualityRequest.SupplierLot, |
| | | RequestUser = "", // 请验人 |
| | | }; |
| | | 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); |
| | | List<string> list1 = new List<string>(); |
| | | list1.Add(taskNo); |
| | | //if (limesModel.Success == 0) |
| | | //{ |
| | | //更改任务的发送返回时间// |
| | | new TaskServer().EditTaskIssueOk(list1, time1, time2); |
| | | |
| | | // 更新请验单信息 |
| | | qualityRequest.Status = "1"; |
| | | qualityRequest.SamplingQty = 10;//decimal.Parse(limesModel.SamplingQty); |
| | | qualityRequest.RequestUser = 0; |
| | | qualityRequest.RequestTime = DateTime.Now; |
| | | qualityRequest.UpdateTime = DateTime.Now; |
| | | qualityRequest.UpdateUser = 0; |
| | | //添加质检请验单 |
| | | Db.Insertable(qualityRequest).ExecuteCommand(); |
| | | //} |
| | | //if (limesModel.Success == -1) |
| | | //{ |
| | | // new TaskServer().EditTaskIssueNo(list1, time1, time2,limesModel.Message); |
| | | // throw new Exception(limesModel.Message); |
| | | //} |
| | | resultModel.Message = "该任务对应的入库单不存在!"; |
| | | return resultModel; |
| | | } |
| | | catch (Exception ex) |
| | | if (notice.Status == "3" || notice.Status == "4") |
| | | { |
| | | throw new Exception(ex.Message); |
| | | resultModel.Message = "该任务对应的入库单已执行完成!"; |
| | | return resultModel; |
| | | } |
| | | noticeDetail.CompleteQty += 1;//完成数量 |
| | | noticeDetail.Status = "1";//0:等待执行 1:正在执行 2:执行完成 |
| | | if (noticeDetail.CompleteQty >= noticeDetail.Qty) |
| | | { |
| | | noticeDetail.Status = "2"; |
| | | noticeDetail.CompleteTime = comTime; |
| | | } |
| | | noticeDetail.UpdateUser = 0; |
| | | noticeDetail.UpdateTime = comTime; |
| | | //更新入库单明细 |
| | | Db.Updateable(noticeDetail).ExecuteCommand(); |
| | | |
| | | notice.UpdateUser = 0; |
| | | notice.UpdateTime = comTime; |
| | | if (notice.Status == "0") |
| | | { |
| | | notice.Status = "1"; |
| | | } |
| | | var asnDetailNum = Db.Queryable<BllArrivalNoticeDetail>().Count(m => m.IsDel == "0" && m.ASNNo == noticeDetail.ASNNo && m.Status != "2"); |
| | | if (asnDetailNum == 0) |
| | | { |
| | | notice.Status = "2"; |
| | | notice.CompleteTime = comTime;//完成时间 |
| | | } |
| | | //更新入库单 |
| | | Db.Updateable(notice).ExecuteCommand(); |
| | | } |
| | | |
| | | #region 质检请验,去掉MES |
| | | //var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == noticeDetail.SkuNo && m.LotNo == noticeDetail.LotNo && m.SupplierLot == noticeDetail.SupplierLot); |
| | | //if (qualityRequest == null) |
| | | //{ |
| | | // //质检请验单信息 |
| | | // string qcNo = new Common().GetMaxNo("QC"); |
| | | // qualityRequest = new BllQualityInspectionRequest(); |
| | | // qualityRequest.QcNo = qcNo; |
| | | // qualityRequest.Status = "0"; |
| | | // qualityRequest.SkuNo = noticeDetail.SkuNo; |
| | | // qualityRequest.SkuName = noticeDetail.SkuName; |
| | | // qualityRequest.LotNo = noticeDetail.LotNo; |
| | | // qualityRequest.SupplierLot = noticeDetail.SupplierLot; |
| | | // qualityRequest.Qty = noticeDetail.Qty; |
| | | // qualityRequest.SamplingQty = 0; |
| | | // qualityRequest.ASNNo = noticeDetail.ASNNo; |
| | | // qualityRequest.CreateUser = 0; |
| | | // qualityRequest.CreateTime = comTime; |
| | | |
| | | // // 记录任务日志 |
| | | // 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 = qualityRequest.QcNo, |
| | | // SkuNo = qualityRequest.SkuNo, |
| | | // Qty = qualityRequest.Qty.ToString(), |
| | | // LotNo = qualityRequest.LotNo, |
| | | // SupplierLot = qualityRequest.SupplierLot, |
| | | // RequestUser = "", // 请验人 |
| | | // }; |
| | | // 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); |
| | | // List<string> list1 = new List<string>(); |
| | | // list1.Add(taskNo); |
| | | // //if (limesModel.Success == 0) |
| | | // //{ |
| | | // //更改任务的发送返回时间// |
| | | // new TaskServer().EditTaskIssueOk(list1, time1, time2); |
| | | |
| | | // // 更新请验单信息 |
| | | // qualityRequest.Status = "1"; |
| | | // qualityRequest.SamplingQty = 10;//decimal.Parse(limesModel.SamplingQty); |
| | | // qualityRequest.RequestUser = 0; |
| | | // qualityRequest.RequestTime = DateTime.Now; |
| | | // qualityRequest.UpdateTime = DateTime.Now; |
| | | // qualityRequest.UpdateUser = 0; |
| | | // //添加质检请验单 |
| | | // Db.Insertable(qualityRequest).ExecuteCommand(); |
| | | // //} |
| | | // //if (limesModel.Success == -1) |
| | | // //{ |
| | | // // new TaskServer().EditTaskIssueNo(list1, time1, time2,limesModel.Message); |
| | | // // throw new Exception(limesModel.Message); |
| | | // //} |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // throw new Exception(ex.Message); |
| | | // } |
| | | //} |
| | | #endregion |
| | | |
| | | break; |
| | |
| | | |
| | | #region 出库完成 |
| | | case "1": |
| | | //出库单明细信息 |
| | | var exNoticeDetail = Db.Queryable<BllExportNoticeDetail>().First(w => w.Id == taskInfo.NoticeDetailNo); |
| | | if (exNoticeDetail == null) |
| | | { |
| | | resultModel.Message = "该任务对应的出库单明细不存在!"; |
| | | return resultModel; |
| | | } |
| | | //出库单信息 |
| | | var exNotice = Db.Queryable<BllExportNotice>().First(w => w.SONo == exNoticeDetail.SONo); |
| | | if (exNotice == null) |
| | | { |
| | | resultModel.Message = "该任务对应的出库单不存在!"; |
| | | return resultModel; |
| | | } |
| | | if (exNotice.Status == "4" || exNotice.Status == "5") |
| | | { |
| | | resultModel.Message = "该任务对应的出库单已执行完成!"; |
| | | return resultModel; |
| | | } |
| | | |
| | | //起始储位信息 |
| | | var startLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.StartLocat && w.IsDel == "0"); |
| | | if (startLocatInfo == null) |
| | | { |
| | | resultModel.Message = "起始储位信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | //目标储位信息 |
| | | var endLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.EndLocat && w.IsDel == "0"); |
| | | if (endLocatInfo == null) |
| | | { |
| | | resultModel.Message = "目标储位信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | //库存明细 |
| | |
| | | resultModel.Message = "库存信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | //修改出库单明细拣货数量 |
| | | exNoticeDetail.CompleteQty += sd2.Qty; |
| | | Db.Updateable(exNoticeDetail).ExecuteCommand(); |
| | | |
| | | exNotice.UpdateUser = 0; |
| | | exNotice.UpdateTime = comTime; |
| | | if (exNotice.Status == "0" || exNotice.Status == "1" || exNotice.Status == "2") |
| | | { |
| | | exNotice.Status = "3";//更改为正在执行 |
| | | } |
| | | var num = Db.Queryable<BllExportNoticeDetail>().Count(m => m.IsDel == "0" && m.SONo == exNoticeDetail.SONo && m.CompleteQty < m.Qty); |
| | | if (num <= 0) |
| | | { |
| | | exNotice.Status = "4"; //更改为执行完成 |
| | | } |
| | | //修改出库单信息 |
| | | Db.Updateable(exNotice).ExecuteCommand(); |
| | | |
| | | sd2.Qty = 0; |
| | | sd2.LockQty = 0; |
| | | sd2.FrozenQty = 0; |
| | | sd2.InspectQty = 0; |
| | | sd2.ASNNo = ""; |
| | | sd2.ASNDetailNo = null; |
| | | sd2.WareHouseNo = endLocatInfo.WareHouseNo;//所属仓库 |
| | | sd2.RoadwayNo = endLocatInfo.RoadwayNo;//所属巷道 |
| | | sd2.AreaNo = endLocatInfo.AreaNo;//所属区域 |
| | | sd2.LocatNo = endLocatInfo.LocatNo;//储位地址 |
| | | sd2.WareHouseNo = "";//所属仓库 |
| | | sd2.RoadwayNo = "";//所属巷道 |
| | | sd2.AreaNo = "";//所属区域 |
| | | sd2.LocatNo = "";//储位地址 |
| | | sd2.CompleteTime = comTime; |
| | | //修改库存明细 |
| | | Db.Updateable(sd2).ExecuteCommand(); |
| | |
| | | startLocatInfo.Status = "0";//空储位 |
| | | //修改起始储位状态 |
| | | Db.Updateable(startLocatInfo).ExecuteCommand(); |
| | | //出库单明细信息 |
| | | var exNoticeDetail = Db.Queryable<BllExportNoticeDetail>().First(w => w.Id == taskInfo.NoticeDetailNo); |
| | | if (exNoticeDetail != null) |
| | | { |
| | | //出库单信息 |
| | | var exNotice = Db.Queryable<BllExportNotice>().First(w => w.SONo == exNoticeDetail.SONo); |
| | | if (exNotice == null) |
| | | { |
| | | resultModel.Message = "该任务对应的出库单不存在!"; |
| | | return resultModel; |
| | | } |
| | | if (exNotice.Status == "4" || exNotice.Status == "5") |
| | | { |
| | | resultModel.Message = "该任务对应的出库单已执行完成!"; |
| | | return resultModel; |
| | | } |
| | | exNotice.UpdateUser = 0; |
| | | exNotice.UpdateTime = comTime; |
| | | if (exNotice.Status == "0" || exNotice.Status == "1" || exNotice.Status == "2") |
| | | { |
| | | exNotice.Status = "3";//更改为正在执行 |
| | | } |
| | | var num = Db.Queryable<BllExportNoticeDetail>().Count(m => m.IsDel == "0" && m.SONo == exNoticeDetail.SONo && m.CompleteQty < m.Qty); |
| | | if (num <= 0) |
| | | { |
| | | exNotice.Status = "4"; //更改为执行完成 |
| | | } |
| | | //修改出库单信息 |
| | | Db.Updateable(exNotice).ExecuteCommand(); |
| | | |
| | | endLocatInfo.Status = "1";//有物品 |
| | | //修改目标储位状态 |
| | | Db.Updateable(endLocatInfo).ExecuteCommand(); |
| | | |
| | | //修改出库单明细拣货数量 |
| | | exNoticeDetail.CompleteQty += sd2.Qty; |
| | | Db.Updateable(exNoticeDetail).ExecuteCommand(); |
| | | } |
| | | break; |
| | | #endregion |
| | | |
| | | #region 任务完成 |
| | | case "2": |
| | | //起始储位信息 |
| | | var startLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.StartLocat && w.IsDel == "0"); |
| | | if (startLocatInfo2 == null) |
| | | { |
| | | resultModel.Message = "起始储位信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | //目标储位信息 |
| | | var endLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.EndLocat && w.IsDel == "0"); |
| | | if (endLocatInfo2 == null) |
| | | { |
| | | resultModel.Message = "目标储位信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | #region 移库完成 |
| | | case "3": |
| | | //库存明细 |
| | | var sd3 = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == taskInfo.PalletNo); |
| | | if (sd3 == null) |
| | |
| | | resultModel.Message = "库存信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | sd3.WareHouseNo = endLocatInfo2.WareHouseNo;//所属仓库 |
| | | sd3.RoadwayNo = endLocatInfo2.RoadwayNo;//所属巷道 |
| | | sd3.AreaNo = endLocatInfo2.AreaNo;//所属区域 |
| | | sd3.LocatNo = endLocatInfo2.LocatNo;//储位地址 |
| | | if (endLocatInfo2.AreaNo == "A01")//洁净区 |
| | | if (taskInfo.Type == "0")//入库任务 |
| | | { |
| | | sd3.PalletStatus = "0"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo == "A02")//预混区 |
| | | { |
| | | sd3.PalletStatus = "1"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo == "A03")//半成品区 |
| | | { |
| | | sd3.PalletStatus = "2"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo == "A04")//脏桶区 |
| | | { |
| | | sd3.PalletStatus = "3"; |
| | | } |
| | | //目标储位信息 |
| | | var endLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.EndLocat && w.IsDel == "0"); |
| | | if (endLocatInfo2 == null) |
| | | { |
| | | resultModel.Message = "目标储位信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | endLocatInfo2.Status = "1";//有物品 |
| | | //修改目标储位状态 |
| | | Db.Updateable(endLocatInfo2).ExecuteCommand(); |
| | | |
| | | sd3.WareHouseNo = endLocatInfo2.WareHouseNo;//所属仓库 |
| | | sd3.RoadwayNo = endLocatInfo2.RoadwayNo;//所属巷道 |
| | | sd3.AreaNo = endLocatInfo2.AreaNo;//所属区域 |
| | | sd3.LocatNo = endLocatInfo2.LocatNo;//储位地址 |
| | | if (endLocatInfo2.AreaNo.Contains("01"))//净桶区 |
| | | { |
| | | sd3.PalletStatus = "0"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo.Contains("02"))//预混区 |
| | | { |
| | | sd3.PalletStatus = "1"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo.Contains("03"))//半成品区 |
| | | { |
| | | sd3.PalletStatus = "2"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo.Contains("04"))//脏桶区 |
| | | { |
| | | sd3.PalletStatus = "3"; |
| | | sd3.LotNo = "";//批次 |
| | | sd3.SkuNo = ""; |
| | | sd3.SkuName = ""; |
| | | sd3.InspectStatus = "0";//待检验 |
| | | } |
| | | } |
| | | else if (taskInfo.Type == "1")//出库任务 |
| | | { |
| | | //起始储位信息 |
| | | var startLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.StartLocat && w.IsDel == "0"); |
| | | if (startLocatInfo2 == null) |
| | | { |
| | | resultModel.Message = "起始储位信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | startLocatInfo2.Status = "0";//空储位 |
| | | //修改起始储位状态 |
| | | Db.Updateable(startLocatInfo2).ExecuteCommand(); |
| | | |
| | | sd3.WareHouseNo = "";//所属仓库 |
| | | sd3.RoadwayNo = "";//所属巷道 |
| | | sd3.AreaNo = "";//所属区域 |
| | | sd3.LocatNo = "";//储位地址 |
| | | } |
| | | else if (taskInfo.Type == "2")//移库任务 |
| | | { |
| | | //起始储位信息 |
| | | var startLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.StartLocat && w.IsDel == "0"); |
| | | if (startLocatInfo2 == null) |
| | | { |
| | | resultModel.Message = "起始储位信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | startLocatInfo2.Status = "0";//空储位 |
| | | //修改起始储位状态 |
| | | Db.Updateable(startLocatInfo2).ExecuteCommand(); |
| | | |
| | | //目标储位信息 |
| | | var endLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.EndLocat && w.IsDel == "0"); |
| | | if (endLocatInfo2 == null) |
| | | { |
| | | resultModel.Message = "目标储位信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | endLocatInfo2.Status = "1";//有物品 |
| | | //修改目标储位状态 |
| | | Db.Updateable(endLocatInfo2).ExecuteCommand(); |
| | | |
| | | sd3.WareHouseNo = endLocatInfo2.WareHouseNo;//所属仓库 |
| | | sd3.RoadwayNo = endLocatInfo2.RoadwayNo;//所属巷道 |
| | | sd3.AreaNo = endLocatInfo2.AreaNo;//所属区域 |
| | | sd3.LocatNo = endLocatInfo2.LocatNo;//储位地址 |
| | | sd3.Status = "0"; |
| | | if (endLocatInfo2.AreaNo.Contains("01"))//洁净区 |
| | | { |
| | | sd3.PalletStatus = "0"; |
| | | sd3.Status = "0"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo.Contains("02"))//预混区 |
| | | { |
| | | sd3.PalletStatus = "1"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo.Contains("03"))//半成品区 |
| | | { |
| | | sd3.PalletStatus = "2"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo.Contains("04"))//脏桶区 |
| | | { |
| | | sd3.PalletStatus = "3"; |
| | | sd3.LotNo = "";//批次 |
| | | sd3.SkuNo = ""; |
| | | sd3.SkuName = ""; |
| | | sd3.InspectStatus = "0";//待检验 |
| | | } |
| | | } |
| | | //修改库存明细 |
| | | Db.Updateable(sd3).ExecuteCommand(); |
| | | |
| | | startLocatInfo2.Status = "0";//空储位 |
| | | //修改起始储位状态 |
| | | Db.Updateable(startLocatInfo2).ExecuteCommand(); |
| | | #region 去掉MES |
| | | //回传桶状态给MES |
| | | //BackPalletStatus(taskInfo.PalletNo, sd3.PalletStatus); |
| | | #endregion |
| | | |
| | | endLocatInfo2.Status = "1";//有物品 |
| | | //修改目标储位状态 |
| | | Db.Updateable(endLocatInfo2).ExecuteCommand(); |
| | | break; |
| | | #endregion |
| | | } |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 回传桶状态给MES |
| | | /// </summary> |
| | | /// <param name="PalletNo">桶号</param> |
| | | /// <param name="Status">0:净桶 1:预混 2:半成品 3:脏桶</param> |
| | | /// <param name="url"></param> |
| | | public void BackPalletStatus(string PalletNo, string Status,string url="") |
| | | { |
| | | try |
| | | { |
| | | var obj = new |
| | | { |
| | | PalletNo = PalletNo, |
| | | Status = Status |
| | | }; |
| | | string jsonReq = JsonConvert.SerializeObject(obj); |
| | | var response = HttpHelper.DoPost(url, jsonReq, "回传MES桶状态", "MES").ToString(); |
| | | var result = JsonConvert.DeserializeObject<ReMes>(response);//解析返回数据 |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 下发出库单 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | public SoResInfo ErpAddExportNotice(SoInfo model) |
| | | public SoResInfo CreateSoWork(SoInfo model) |
| | | { |
| | | try |
| | | { |