From 92e2c34a833c4fd3d446c788a711f177f1c29e2a Mon Sep 17 00:00:00 2001 From: DESKTOP-9BNTV8O <DESKTOP-9BNTV8O@163.com> Date: 星期六, 14 十二月 2024 13:41:11 +0800 Subject: [PATCH] 修改问题 --- Wms/WMS.BLL/BllTransServer/RcsServer.cs | 811 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 809 insertions(+), 2 deletions(-) diff --git a/Wms/WMS.BLL/BllTransServer/RcsServer.cs b/Wms/WMS.BLL/BllTransServer/RcsServer.cs index f77469a..addb71c 100644 --- a/Wms/WMS.BLL/BllTransServer/RcsServer.cs +++ b/Wms/WMS.BLL/BllTransServer/RcsServer.cs @@ -1,10 +1,817 @@ -锘縰sing System; +锘縰sing Model.InterFaceModel; +using Model.ModelDto; +using Newtonsoft.Json; +using SqlSugar; +using System; using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; using System.Text; +using Utility.Tools; +using WMS.DAL; +using WMS.Entity.BllAsnEntity; +using WMS.Entity.BllSoEntity; +using WMS.Entity.Context; +using WMS.Entity.DataEntity; +using WMS.Entity.LogEntity; +using WMS.Entity.SysEntity; +using WMS.IBLL.IBllTransServer; +using static Model.InterFaceModel.RCSModel; namespace WMS.BLL.BllTransServer { - class RcsServer + public class RcsServer:IRcsServer { + private static readonly SqlSugarScope Db = DataContext.Db; + /// <summary> + /// RCS鍙《 + /// </summary> + /// <param name="model"></param> + /// <param name="url"></param> + /// <param name="taskNo"></param> + /// <exception cref="Exception"></exception> + public void GetPalletNo(Pallnetmsg model, string url, out string taskNo) + { + try + { + string taskMsg = ""; + if (string.IsNullOrEmpty(model.Location)) + { + throw new Exception("璁惧鎵�鍦ㄤ綅缃笉鍙负绌�"); + } + //鍙《璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙鐩爣鍌ㄤ綅锛� + var endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.Location); + if (endLoction == null) + { + throw new Exception("璁惧鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); + } + var houseNo = endLoction.WareHouseNo;//鍙《浣嶇疆锛屽悗缁牴鎹綅缃叧鑱旀垨瀹氫箟锛屾潵鍒ゆ柇鍙《浣嶇疆鎵�灞炶溅闂� + var urlMes = "";//鍥炰紶MES鐨勬帴鍙e湴鍧� + var noticeNo = "0";//鍑哄叆搴撳崟鎹槑缁咺D + var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.Status == "0");//鎵�鏈夊緟鍒嗛厤鐨勬《 + + //寮�濮嬩簨鍔� + Db.BeginTran(); + DataStockDetail pallet = new DataStockDetail(); + switch (model.Type) + { + case "0"://鍙噣妗� + pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "0" && w.Status == "0" + && (w.AreaNo.Contains("01") || w.AreaNo.Contains("11") || w.AreaNo.Contains("21") || w.AreaNo.Contains("31"))).OrderByDescending(o => o.CreateTime).First(); + if (pallet == null) + { + throw new Exception("鏆傛棤鍑�妗跺彲鍒嗛厤"); + } + pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� + //鏇存柊妗跺簱瀛樻槑缁� + Db.Updateable(pallet).ExecuteCommand(); + + taskMsg = "璁惧鍙噣妗朵换鍔�"; + break; + case "1"://鍙枡妗讹紙娣锋枡锛� + //鍒ゆ柇鏄惁鏈夋壒娆″彿 + if (string.IsNullOrWhiteSpace(model.LotNo)) + { + throw new Exception("鎵规鍙蜂负绌猴紒"); + } + //鏌ユ壘搴撳瓨涓槸鍚︽湁鍙敤鐨勬鎵规鐨勬贩鏂欐《 + pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "1" && w.Status == "0" && w.LotNo == model.LotNo + && (w.AreaNo.Contains("02") || w.AreaNo.Contains("12") || w.AreaNo.Contains("22") || w.AreaNo.Contains("32"))).OrderByDescending(o => o.CompleteTime).First(); + if (pallet == null) + { + throw new Exception("鏆傛棤娣锋枡妗跺彲鍒嗛厤"); + } + pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� + pallet.LotNo = model.LotNo;//鎵规鍙� + //鏇存柊妗跺簱瀛樻槑缁� + Db.Updateable(pallet).ExecuteCommand(); + + taskMsg = "璁惧鍙枡妗舵贩鏂欎换鍔�"; + break; + case "2"://鍙枡妗讹紙涓嬫枡锛� + //鍒ゆ柇鏄惁鏈夋壒娆″彿 + if (string.IsNullOrWhiteSpace(model.LotNo)) + { + throw new Exception("鎵规鍙蜂负绌猴紒"); + } + //鏌ユ壘鏄惁鏈夋鎵规鍑哄簱鍗曟槑缁� + var soNoticeDetail = Db.Queryable<BllExportNoticeDetail>().Where(w => w.IsDel == "0" && w.LotNo == model.LotNo).OrderBy(o => o.CreateTime).First(); + if (soNoticeDetail == null) + { + throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍑哄簱鍗曟槑缁�"); + } + noticeNo = soNoticeDetail.Id.ToString(); + //鍑哄簱鎬诲崟 + var soNotice = Db.Queryable<BllExportNotice>().Where(w => w.IsDel == "0" && w.SONo == soNoticeDetail.SONo).First(); + if (soNotice == null) + { + throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍑哄簱鍗�"); + } + soNotice.Status = "3";//姝e湪鎵ц + soNotice.UpdateTime = DateTime.Now; + //鏇存柊鍑哄簱鍗� + Db.Updateable(soNotice).ExecuteCommand(); + + //鏌ユ壘搴撳瓨涓槸鍚︽湁姝ゆ壒娆$殑鍚堟牸涓嬫枡妗� + pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "2" && w.Status == "0" && w.LotNo == model.LotNo && w.InspectStatus=="1" + && (w.AreaNo.Contains("03") || w.AreaNo.Contains("13") || w.AreaNo.Contains("23") || w.AreaNo.Contains("33"))).OrderByDescending(o => o.CompleteTime).First(); + if (pallet == null) + { + throw new Exception("鏆傛棤涓嬫枡妗跺彲鍒嗛厤"); + } + pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� + //鏇存柊妗跺簱瀛樻槑缁� + Db.Updateable(pallet).ExecuteCommand(); + + taskMsg = "璁惧鍙枡妗朵笅鏂欎换鍔�"; + break; + case "3"://鍙剰妗� + List<DataStockDetail> palletList = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "3" && w.Status == "0" + && (w.AreaNo.Contains("03") || w.AreaNo.Contains("13") || w.AreaNo.Contains("23") || w.AreaNo.Contains("33"))).OrderByDescending(o => o.CompleteTime).ToList(); + if (palletList.Count <= 0) + { + throw new Exception("鏆傛棤鑴忔《鍙垎閰�"); + } + //閬嶅巻搴撳瓨鑴忔《锛岃繑鍥濵ES楠岃瘉 + foreach (var item in palletList) + { + #region 鍘绘帀MES + //string jsonReq = JsonConvert.SerializeObject(item.PalletNo); + //var response = HttpHelper.DoPost(urlMes, jsonReq, "鍥炰紶MES鑴忔《缂栧彿", "RCS").ToString(); + //var obj = JsonConvert.DeserializeObject<ReMes>(response);//瑙f瀽杩斿洖鏁版嵁 + //if (obj.Success == "0") + //{ + // if (obj.Result != "1")//涓嶅彲娓呮礂锛屽皢鑴忔《鍐荤粨 + // { + // item.Status = "5";//寮傚父鍐荤粨 + // //淇敼璇ユ《搴撳瓨鐘舵�� + // Db.Updateable(item).ExecuteCommand(); + + // continue; + // } + // //涓嬪彂灏忚溅浠诲姟 + // var task2 = new TaskDetial + // { + // Startport = item.LocatNo, + // Endport = model.Location, + // Pallno = item.PalletNo, + // Type = model.Type, + // Crtype = "1", + // Noticedetailno = int.Parse(noticeno), + // }; + // CreateLotTask(task2); + // return; + //} + //else + //{ + // throw new Exception("鍥炰紶MES鍑�妗剁紪鍙峰け璐ワ紒"); + //} + #endregion + + item.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� + //鏇存柊妗跺簱瀛樻槑缁� + Db.Updateable(item).ExecuteCommand(); + //璧峰鍌ㄤ綅鍦板潃淇℃伅 + var startLoction2 = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == item.LocatNo); + if (startLoction2 == null) + { + throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿item.LocatNo}"); + } + + taskNo = new Common().GetMaxNo("TK");//浠诲姟鍙� + var logTaskEntry2 = new LogTask + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "RCS", + //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + SendDate = DateTime.Now, //鍙戦�佹椂闂� + //BackDate = DateTime.Now, //杩斿洖鏃堕棿 + StartLocat = item.LocatNo,//璧峰浣嶇疆 + EndLocat = model.Location,//鐩爣浣嶇疆 + PalletNo = item.PalletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3鍏朵粬 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + NoticeDetailNo = int.Parse(noticeNo), + Msg = taskMsg, //鍏抽敭淇℃伅 + }; + //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅 + var task2 = new TaskDetial + { + Taskno = taskNo,//浠诲姟鍙� + Startport = item.LocatNo, + Endport = model.Location, + Pallno = item.PalletNo, + Type = model.Type, + Crtype = "1", + Noticedetailno = int.Parse(noticeNo), + }; + CreateLotTask(task2, url); + //缁欎笅杞︿笅鍙戜换鍔� + logTaskEntry2.SendDate = DateTime.Now;//鍙戦�佹椂闂� + var agvResult2 = CreateLotTask(task2, url); + if (agvResult2)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskEntry2.IsSuccess = 1; + logTaskEntry2.BackDate = DateTime.Now; + logTaskEntry2.Status = "1"; + Db.Insertable(logTaskEntry2).ExecuteCommand(); + + startLoction2.Status = "3";//鍑哄簱涓� + Db.Updateable(startLoction2).ExecuteCommand(); + + endLoction.Status = "2";//鍏ュ簱涓� + Db.Updateable(endLoction).ExecuteCommand(); + } + else//澶辫触 + { + logTaskEntry2.IsSuccess = 0; + Db.Insertable(logTaskEntry2).ExecuteCommand(); + + } + //鎻愪氦浜嬪姟 + Db.CommitTran(); + return; + } + + taskMsg = "璁惧鍙剰妗朵换鍔�"; + break; + default: + throw new Exception("浠诲姟绫诲瀷鏃犳晥"); + } + //璧峰鍌ㄤ綅鍦板潃淇℃伅 + var startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == pallet.LocatNo); + if (startLoction == null) + { + throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿pallet.LocatNo}"); + } + + taskNo = new Common().GetMaxNo("TK");//浠诲姟鍙� + //浠诲姟淇℃伅 + var logTaskEntry = new LogTask + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "RCS", + //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + SendDate = DateTime.Now, //鍙戦�佹椂闂� + //BackDate = DateTime.Now, //杩斿洖鏃堕棿 + StartLocat = pallet.LocatNo,//璧峰浣嶇疆 + EndLocat = model.Location,//鐩爣浣嶇疆 + PalletNo = pallet.PalletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3鍏朵粬 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + NoticeDetailNo = int.Parse(noticeNo), + Msg = taskMsg, //鍏抽敭淇℃伅 + }; + + //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅 + var task = new TaskDetial + { + Taskno= taskNo,//浠诲姟鍙� + Startport = pallet.LocatNo,//璧峰浣嶇疆 + Endport = model.Location,//鐩爣浣嶇疆 + Pallno = pallet.PalletNo,//妗跺彿 + Crtype = "1",//鍙《 + Noticedetailno = int.Parse(noticeNo), + LotNo = model.LotNo, + }; + //缁欎笅杞︿笅鍙戜换鍔� + logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� + var agvResult = CreateLotTask(task, url); + if (agvResult)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskEntry.IsSuccess = 1; + logTaskEntry.BackDate = DateTime.Now; + logTaskEntry.Status = "1"; + Db.Insertable(logTaskEntry).ExecuteCommand(); + + startLoction.Status = "3";//鍑哄簱涓� + Db.Updateable(startLoction).ExecuteCommand(); + + endLoction.Status = "2";//鍏ュ簱涓� + Db.Updateable(endLoction).ExecuteCommand(); + } + else//澶辫触 + { + logTaskEntry.IsSuccess = 0; + Db.Insertable(logTaskEntry).ExecuteCommand(); + + } + //鎻愪氦浜嬪姟 + Db.CommitTran(); + } + catch (Exception ex) + { + //鍥炴粴浜嬪姟 + Db.RollbackTran(); + throw new Exception(ex.Message); + } + } + + /// <summary> + /// 鐢宠鍌ㄤ綅 + /// </summary> + /// <param name="model"></param> + /// <param name="url"></param> + /// <param name="taskNo"></param> + /// <exception cref="Exception"></exception> + public void ApplyLocatNo(Pallnetmsg model, string url, out string taskNo) + { + try + { + string taskMsg = ""; + //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� + var deviceLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.Location); + if (deviceLocatInfo == null) + { + throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}"); + } + var houseNo = deviceLocatInfo.WareHouseNo;//鐢宠鍌ㄤ綅璁惧鎵�鍦ㄨ溅闂寸紪鍙� + var noticeno = "0";//鍑哄叆搴撳崟鎹槑缁咺D + + var storageLocat = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0"); + //寮�鍚簨鍔� + Db.BeginTran(); + + SysStorageLocat loction = new SysStorageLocat();//鐩爣鍌ㄤ綅淇℃伅 + switch (model.Type) + { + case "3"://娓呮礂璁惧鐢宠鍌ㄤ綅锛堝噣妗剁敵璇峰偍浣嶏級 + loction = storageLocat.Where(w => w.WareHouseNo == houseNo && (w.AreaNo.Contains("01") || w.AreaNo.Contains("11") || w.AreaNo.Contains("21") || w.AreaNo.Contains("31"))).OrderByDescending(o => o.CreateTime).First(); + if (loction == null) + { + throw new Exception("璇ヨ溅闂村噣妗跺尯鏆傛棤绌轰綑鍌ㄤ綅"); + } + + taskMsg = "娓呮礂璁惧锛堝噣妗讹級鐢宠鍌ㄤ綅浠诲姟"; + break; + case "0"://鎺ユ枡璁惧鐢宠鍌ㄤ綅锛堥娣锋枡妗剁敵璇峰偍浣嶏級 + //鍒ゆ柇鏄惁鏈夋壒娆″彿 + if (string.IsNullOrWhiteSpace(model.LotNo)) + { + throw new Exception("鎵规鍙蜂负绌猴紒"); + } + loction = storageLocat.Where(w => w.WareHouseNo == houseNo && (w.AreaNo.Contains("02") || w.AreaNo.Contains("12") || w.AreaNo.Contains("22") || w.AreaNo.Contains("32"))).OrderByDescending(o => o.CreateTime).First(); + if (loction == null) + { + throw new Exception("璇ヨ溅闂撮娣峰尯鏆傛棤绌轰綑鍌ㄤ綅"); + } + + taskMsg = "鎺ユ枡璁惧锛堥娣锋枡妗讹級鐢宠鍌ㄤ綅浠诲姟"; + break; + case "1"://娣锋枡璁惧鐢宠鍌ㄤ綅锛堝崐鎴愬搧妗剁敵璇峰偍浣嶏級 + //鍒ゆ柇鏄惁鏈夋壒娆″彿 + if (string.IsNullOrWhiteSpace(model.LotNo)) + { + throw new Exception("鎵规鍙蜂负绌猴紒"); + } + //鏍¢獙姝ゆ壒娆℃槸鍚︽湁鍏ュ簱鍗� + var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().Where(w => w.IsDel == "0" && w.Status == "0" && w.LotNo == model.LotNo).OrderByDescending(o => o.CreateTime).First(); + if (noticeDetail == null) + { + throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍏ュ簱鍗曟槑缁�"); + } + noticeno = noticeDetail.Id.ToString(); + //鍏ュ簱鎬诲崟 + var notice = Db.Queryable<BllArrivalNotice>().Where(w => w.IsDel == "0" && w.ASNNo == noticeDetail.ASNNo).First(); + if (notice == null) + { + throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍏ュ簱鍗�"); + } + notice.Status = "1";//姝e湪鎵ц + //鏇存柊鍏ュ簱鍗曠姸鎬� + Db.Updateable(notice).ExecuteCommand(); + + loction = storageLocat.Where(w => w.WareHouseNo == houseNo && (w.AreaNo.Contains("03") || w.AreaNo.Contains("13") || w.AreaNo.Contains("23") || w.AreaNo.Contains("33"))).OrderByDescending(o => o.CreateTime).First(); + if (loction == null) + { + throw new Exception("璇ヨ溅闂村崐鎴愬搧鍖烘殏鏃犵┖浣欏偍浣�"); + } + + taskMsg = "鎺ユ枡璁惧锛堟贩鏂欐《锛夌敵璇峰偍浣嶄换鍔�"; + break; + case "2"://涓嬫枡璁惧鐢宠鍌ㄤ綅锛堣剰妗剁敵璇峰偍浣嶏級 + loction = storageLocat.Where(w => w.WareHouseNo == houseNo && (w.AreaNo.Contains("04") || w.AreaNo.Contains("14") || w.AreaNo.Contains("24") || w.AreaNo.Contains("34"))).OrderByDescending(o => o.CreateTime).First(); + if (loction == null) + { + throw new Exception("璇ヨ溅闂磋剰妗跺尯鏆傛棤绌轰綑鍌ㄤ綅"); + } + + taskMsg = "涓嬫枡璁惧锛堣剰妗讹級鐢宠鍌ㄤ綅浠诲姟"; + break; + } + + taskNo = new Common().GetMaxNo("TK");//浠诲姟鍙� + //浠诲姟淇℃伅 + var logTaskEntry = new LogTask + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "RCS", + //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + SendDate = DateTime.Now, //鍙戦�佹椂闂� + //BackDate = DateTime.Now, //杩斿洖鏃堕棿 + StartLocat = model.Location,//璧峰浣嶇疆 + EndLocat = model.Location,//鐩爣浣嶇疆 + PalletNo = model.PalletNo,//妗跺彿 + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3鍏朵粬 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + NoticeDetailNo = int.Parse(noticeno), + Msg = taskMsg, //鍏抽敭淇℃伅 + }; + var task = new TaskDetial + { + Startport = model.Location, + Endport = loction.LocatNo, + Pallno = model.PalletNo, + Type = model.Type, + Crtype = "0",//鍏ュ簱 + Noticedetailno = int.Parse(noticeno), + LotNo = model.LotNo, + }; + //缁欎笅杞︿笅鍙戜换鍔� + logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� + var agvResult = CreateLotTask(task, url); + if (agvResult)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskEntry.IsSuccess = 1; + logTaskEntry.BackDate = DateTime.Now; + logTaskEntry.Status = "1"; + Db.Insertable(logTaskEntry).ExecuteCommand(); + + deviceLocatInfo.Status = "3";//鍑哄簱涓� + Db.Updateable(deviceLocatInfo).ExecuteCommand(); + + loction.Status = "2";//鍏ュ簱涓� + Db.Updateable(loction).ExecuteCommand(); + } + else//澶辫触 + { + logTaskEntry.IsSuccess = 0; + Db.Insertable(logTaskEntry).ExecuteCommand(); + } + //鎻愪氦浜嬪姟 + Db.CommitTran(); + } + catch (Exception ex) + { + //鍥炴粴浜嬪姟 + Db.RollbackTran(); + throw new Exception(ex.Message); + } + } + + + /// <summary> + /// MES涓嬪彂灏嗗噣妗舵敼涓鸿剰妗跺苟鎷夊埌鑴忔《鍖� + /// </summary> + /// <param name="PalletNo"></param> + /// <returns></returns> + public void ChangePalletStatus(string PalletNo,string url) + { + try + { + var detail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == PalletNo && w.PalletStatus == "0"); + if (detail == null) + { + throw new Exception($"搴撳瓨涓笉瀛樺湪妗跺彿涓猴細{PalletNo}鐨勫簱瀛�!"); + } + //璧峰鐩爣鍌ㄤ綅淇℃伅 + var statrtLocat = Db.Queryable<SysStorageLocat>().First(w => w.WareHouseNo == detail.WareHouseNo && w.AreaNo == detail.AreaNo && w.LocatNo == detail.LocatNo); + if (statrtLocat == null) + { + throw new Exception($"璇ユ《鎵�鍦ㄧ殑鍌ㄤ綅淇℃伅涓嶅瓨鍦�!"); + } + //寮�鍚簨鍔� + Db.BeginTran(); + + //鏌ユ壘鏄惁鏈夌┖浣欒剰妗朵綅 + var endLocat = Db.Queryable<SysStorageLocat>().First(w => w.WareHouseNo == detail.WareHouseNo && w.AreaNo.Contains("04") && w.Status == "0" && w.Flag=="0"); + if (endLocat == null) + { + detail.Status = "5";//寮傚父閿佸畾 + detail.PalletStatus = "3";//鑴忔《 + //淇敼搴撳瓨鐘舵�� + Db.Updateable(detail).ExecuteCommand(); + } + else + { + //鐢熸垚璋冨害灏忚溅鍑�妗跺幓鑴忔《鍖轰换鍔� + var ztask = new TaskDetial + { + Startport = detail.LocatNo, + Endport = endLocat.LocatNo, + Pallno = PalletNo, + Type = "3", + Crtype = "2", + Noticedetailno = 0, + }; + string taskNo = ""; + CreateLotTask(ztask, url); + + statrtLocat.Status = "3";//鍑哄簱涓� + //淇敼璧峰鍌ㄤ綅鐘舵�� + Db.Updateable(statrtLocat).ExecuteCommand(); + + detail.Status = "5";//寮傚父閿佸畾 + detail.PalletStatus = "3";//鑴忔《 + //淇敼搴撳瓨鐘舵�� + Db.Updateable(detail).ExecuteCommand(); + } + Db.CommitTran(); + } + catch (Exception ex) + { + Db.RollbackTran(); + throw ex; + } + } + + /// <summary> + /// MES涓嬪彂娓呮礂閿佸畾鑴忔《 + /// </summary> + /// <param name="pallnetmsg"></param> + public void CleanPallet(Pallnetmsg pallnetmsg,string url) + { + try + { + var detail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == pallnetmsg.PalletNo && w.PalletStatus == "3"); + if (detail == null) + { + throw new Exception($"搴撳瓨涓笉瀛樺湪妗跺彿涓猴細{pallnetmsg.PalletNo}鐨勫簱瀛�!"); + } + //涓嬪彂灏忚溅浠诲姟 + var task = new TaskDetial + { + Startport = detail.LocatNo, + Endport = pallnetmsg.Location, + Pallno = detail.PalletNo, + Type = "3", + Crtype = "1", + Noticedetailno = 0, + LotNo = "", + }; + string taskNo = ""; + CreateLotTask(task,url); + } + catch (Exception ex) + { + throw ex; + } + } + + /// <summary> + /// 鐢熸垚浠诲姟鍗曞埌LogTask + /// </summary> + /// <param name="req"></param> + /// <returns></returns> + public bool CreateLotTask(TaskDetial taskDetial,string url) + { + bool result = false; + + #region 鍛煎彨灏忚溅浠g爜 + List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>(); + + List<PositionCodePath> pahtList = new List<PositionCodePath>(); + //璧峰浣嶇疆 + PositionCodePath path1 = new PositionCodePath(); + path1.positionCode = taskDetial.Startport; + if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� + { + path1.type = "05"; + } + else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� + { + path1.type = "05"; + } + pahtList.Add(path1); + + //鐩爣浣嶇疆 + PositionCodePath path2 = new PositionCodePath(); + path2.positionCode = taskDetial.Endport; + if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� + { + path2.type = "05"; + } + else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� + { + path2.type = "05"; + } + pahtList.Add(path2); + + //涓嬭溅浠诲姟鍗� + AgvSchedulingTask agvTask = new AgvSchedulingTask(); + agvTask.reqCode = taskDetial.Taskno;//浠诲姟鍙� + agvTask.ctnrCode = taskDetial.Pallno;//妗跺彿 + agvTask.ctnrTyp = "1"; + agvTask.reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");//璇锋眰鏃堕棿 + agvTask.wbCode = ""; + agvTask.positionCodePath = pahtList;//灏忚溅璺緞 + agvTask.podCode = ""; + agvTask.userCallCode = "";//taskDetial.Endport;//鐩爣浣嶇疆 + if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� + { + agvTask.taskTyp = "Z3";//浠诲姟绫诲瀷 绾胯竟鍒版墭鐩樻敹闆嗗櫒 Z1锛� 鎵樼洏鍨涚敵璇峰叆搴� Z2 + } + else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� + { + agvTask.taskTyp = "Z4";//浠诲姟绫诲瀷 绾胯竟鍒版墭鐩樻敹闆嗗櫒 Z1锛� 鎵樼洏鍨涚敵璇峰叆搴� Z2 + } + agvTaskList.Add(agvTask); + + // 姝e紡杩愯绋嬪簭鏀惧紑 + var list2 = agvTaskList.Select(m => m.reqCode).ToList(); + var jsonData = JsonConvert.SerializeObject(agvTaskList); + jsonData = jsonData.Substring(1); + jsonData = jsonData.Substring(0, jsonData.Length - 1); + + string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV"); + //瑙f瀽杩斿洖鏁版嵁 + var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response); + if (agvModel.Code == "0") + { + result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔� + } + else + { + string logMsg = ""; + if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� + { + logMsg = "鐢宠鍙《"; + } + else if(taskDetial.Crtype == "0")//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� + { + logMsg = "鐢宠鍌ㄤ綅"; + } + var logStr = $@".\log\AGV\AGV{logMsg}" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; + LogFile.SaveLogToFile($"AGV{logMsg}寮傚父锛�( {agvModel.Message} ),", logStr); + } + return result; + #endregion + } + + /// <summary> + /// 浠诲姟瀹屾垚 + /// </summary> + /// <param name="TaskNo"></param> + /// <param name="Status"></param> + /// <exception cref="Exception"></exception> + public void RCSFinishTask(string TaskNo, string Status) + { + try + { + #region 鏉′欢鍒ゆ柇 + var resultModel = new ErpModel() { Success = -1, Message = "" }; + if (string.IsNullOrEmpty(TaskNo)) + { + throw new Exception("浠诲姟鍙蜂笉鍙负绌�"); + } + //浠诲姟淇℃伅 + var taskInfo = Db.Queryable<LogTask>().First(w => w.TaskNo == TaskNo); + if (taskInfo == null) + { + throw new Exception($"浠诲姟鍙蜂负:{TaskNo}鐨勪换鍔′笉瀛樺湪!"); + } + if (taskInfo.Status != "1") + { + throw new Exception($"浠诲姟鍙蜂负:{TaskNo}鐨勪换鍔$姸鎬佸紓甯�"); + } + #endregion + //寮�鍚簨鍔� + Db.BeginTran(); + var comTime = DateTime.Now; + + if (Status == "0") + { + taskInfo.Status = "3";//寮傚父缁撴潫 + //淇敼浠诲姟鐘舵�� + Db.Updateable(taskInfo).ExecuteCommand(); + + resultModel.Success = 0; + resultModel.Message = "鎴愬姛"; + + //鎻愪氦浜嬪姟 + Db.CommitTran(); + + return; + } + //搴撳瓨鏄庣粏 + var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == taskInfo.PalletNo); + if (stockDetail == null) + { + throw new Exception($"妗跺簱瀛樹俊鎭笉瀛樺湪"); + } + //璧峰鍌ㄤ綅淇℃伅 + var startLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.StartLocat && w.IsDel == "0"); + if (startLocatInfo == null) + { + throw new Exception($"璧峰鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); + } + startLocatInfo.Status = "0";//绌哄偍浣� + //淇敼璧峰鍌ㄤ綅鐘舵�� + Db.Updateable(startLocatInfo).ExecuteCommand(); + + //鐩爣鍌ㄤ綅淇℃伅 + var endLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.EndLocat && w.IsDel == "0"); + if (endLocatInfo == null) + { + throw new Exception($"鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); + } + endLocatInfo.Status = "1";//鏈夌墿鍝� + //淇敼鐩爣鍌ㄤ綅鐘舵�� + Db.Updateable(endLocatInfo).ExecuteCommand(); + + stockDetail.WareHouseNo = endLocatInfo.WareHouseNo;//鎵�灞炰粨搴� + stockDetail.RoadwayNo = endLocatInfo.RoadwayNo;//鎵�灞炲贩閬� + stockDetail.AreaNo = endLocatInfo.AreaNo;//鎵�灞炲尯鍩� + stockDetail.LocatNo = endLocatInfo.LocatNo;//鍌ㄤ綅鍦板潃 + if (endLocatInfo.AreaNo.Contains("01") || endLocatInfo.AreaNo.Contains("11") || endLocatInfo.AreaNo.Contains("21") || endLocatInfo.AreaNo.Contains("31"))//娲佸噣鍖� + { + stockDetail.PalletStatus = "0"; + stockDetail.Status = "0";//寰呭垎閰� + } + else if (endLocatInfo.AreaNo.Contains("02") || endLocatInfo.AreaNo.Contains("12") || endLocatInfo.AreaNo.Contains("22") || endLocatInfo.AreaNo.Contains("32"))//棰勬贩鍖� + { + stockDetail.PalletStatus = "1"; + stockDetail.Status = "0";//寰呭垎閰� + } + else if (endLocatInfo.AreaNo.Contains("03") || endLocatInfo.AreaNo.Contains("13") || endLocatInfo.AreaNo.Contains("23") || endLocatInfo.AreaNo.Contains("33"))//鍗婃垚鍝佸尯 + { + stockDetail.PalletStatus = "2"; + stockDetail.Status = "0";//寰呭垎閰� + } + else if (endLocatInfo.AreaNo.Contains("04") || endLocatInfo.AreaNo.Contains("14") || endLocatInfo.AreaNo.Contains("24")|| endLocatInfo.AreaNo.Contains("34"))//鑴忔《鍖� + { + stockDetail.PalletStatus = "3"; + stockDetail.LotNo = "";//鎵规 + stockDetail.SkuNo = ""; + stockDetail.SkuName = ""; + stockDetail.Status = "0";//寰呭垎閰� + stockDetail.InspectStatus = "0";//寰呮楠� + } + //淇敼搴撳瓨鏄庣粏 + Db.Updateable(stockDetail).ExecuteCommand(); + //鍏ュ簱浠诲姟锛屽鐞嗗叆搴撳崟 + if (taskInfo.Type == "0" && taskInfo.NoticeDetailNo!=0) + { + var notice = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.Status == "1"); + if (notice != null) + { + notice.Status = "2";//鎵ц瀹屾垚 + notice.UpdateTime = DateTime.Now; + notice.CompleteTime = DateTime.Now; + //淇敼鍏ュ簱鍗曠姸鎬� + Db.Updateable(notice).ExecuteCommand(); + } + } + //鍑哄簱浠诲姟锛屽鐞嗗嚭搴撳崟 + if (taskInfo.Type == "1" && taskInfo.NoticeDetailNo != 0)//鍏ュ簱 + { + var notice = Db.Queryable<BllExportNotice>().First(w => w.IsDel == "0" && w.Status == "3"); + if (notice != null) + { + notice.Status = "4";//鎵ц瀹屾垚 + notice.UpdateTime = DateTime.Now; + notice.CompleteTime = DateTime.Now; + //淇敼鍏ュ簱鍗曠姸鎬� + Db.Updateable(notice).ExecuteCommand(); + } + } + + #region 鍘绘帀MES + //鍥炰紶妗剁姸鎬佺粰MES + //BackPalletStatus(taskInfo.PalletNo, sd3.PalletStatus); + #endregion + + taskInfo.Status = "2";//鎵ц瀹屾垚 + //淇敼浠诲姟鐘舵�� + Db.Updateable(taskInfo).ExecuteCommand(); + + //鎻愪氦浜嬪姟 + Db.CommitTran(); + } + catch (Exception ex) + { + //鍥炴粴浜嬪姟 + Db.RollbackTran(); + throw new Exception(ex.Message); + } + } } } -- Gitblit v1.8.0