From c798f9e523b366f4c2268a8e4aac724ff89388e6 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期六, 14 十二月 2024 10:03:13 +0800
Subject: [PATCH] 修改问题
---
Wms/WMS.BLL/BllTransServer/RcsServer.cs | 845 +++++++++++++++++++++++++++++++++-------------------
Wms/Model/InterFaceModel/RCSModel.cs | 6
Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs | 7
Wms/Wms/Controllers/DownApiController.cs | 93 ++--
4 files changed, 585 insertions(+), 366 deletions(-)
diff --git a/Wms/Model/InterFaceModel/RCSModel.cs b/Wms/Model/InterFaceModel/RCSModel.cs
index 6319c9d..8b71478 100644
--- a/Wms/Model/InterFaceModel/RCSModel.cs
+++ b/Wms/Model/InterFaceModel/RCSModel.cs
@@ -61,7 +61,6 @@
public class TaskDetial
{
-
public string Taskno { get; set; }
public string Startport { get; set; }
public string Endport { get; set; }
@@ -71,9 +70,8 @@
public string Type { get; set; }
/// <summary>
/// 浠诲姟绫诲瀷
- /// 0锛氬叆搴�
- /// 1锛氬嚭搴�
- /// 2锛氱Щ搴�
+ /// 0锛氱敵璇峰偍浣�
+ /// 1锛氬彨妗�
/// </summary>
public string Crtype { get; set; }
/// <summary>
diff --git a/Wms/WMS.BLL/BllTransServer/RcsServer.cs b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
index 1576fe2..6024291 100644
--- a/Wms/WMS.BLL/BllTransServer/RcsServer.cs
+++ b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
@@ -1,4 +1,5 @@
锘縰sing Model.InterFaceModel;
+using Model.ModelDto;
using Newtonsoft.Json;
using SqlSugar;
using System;
@@ -23,39 +24,45 @@
{
private static readonly SqlSugarScope Db = DataContext.Db;
/// <summary>
- /// RCS鍙《(鍑�妗跺拰鑴忔《)
+ /// RCS鍙《
/// </summary>
- /// <param name="warehouseno">搴撳尯</param>
- /// <param name="type">鍙枡绫诲瀷</param>
- /// <returns></returns>
- public void GetPalletNo(Pallnetmsg model,string url,out string taskNo)
- {
- DataStockDetail pallet = new DataStockDetail();
+ /// <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 locatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.Location);
- if (locatInfo == null)
+ //鍙《璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙鐩爣鍌ㄤ綅锛�
+ var endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.Location);
+ if (endLoction == null)
{
throw new Exception("璁惧鍌ㄤ綅淇℃伅涓嶅瓨鍦�");
}
- var house = locatInfo.WareHouseNo;//鍙《浣嶇疆锛屽悗缁牴鎹綅缃叧鑱旀垨瀹氫箟锛屾潵鍒ゆ柇鍙《浣嶇疆鎵�灞炶溅闂�
+ var houseNo = endLoction.WareHouseNo;//鍙《浣嶇疆锛屽悗缁牴鎹綅缃叧鑱旀垨瀹氫箟锛屾潵鍒ゆ柇鍙《浣嶇疆鎵�灞炶溅闂�
var urlMes = "";//鍥炰紶MES鐨勬帴鍙e湴鍧�
- var noticeno = "0";//鍑哄叆搴撳崟鎹槑缁咺D
- var sql = "select PalletNo,LocatNo from DataStockDetail where Status = '0'";
+ 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"://鍙噣妗�
- sql += $"and WareHouseNo = '{house}' and (AreaNo like '%01' or AreaNo like '%11' or AreaNo like '%21' or AreaNo like '%31') and PalletStatus = '0' order by CreateTime desc";
- pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault();
+ pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "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("鏆傛棤鍑�妗跺彲鍒嗛厤");
}
-
+ taskMsg = "璁惧鍙噣妗朵换鍔�";
break;
case "1"://鍙枡妗讹紙娣锋枡锛�
//鍒ゆ柇鏄惁鏈夋壒娆″彿
@@ -64,43 +71,55 @@
throw new Exception("鎵规鍙蜂负绌猴紒");
}
//鏌ユ壘搴撳瓨涓槸鍚︽湁鍙敤鐨勬鎵规鐨勬贩鏂欐《
- sql= $@"select PalletNo,LocatNo from DataStockDetail where LotNo = '{model.LotNo}'and (AreaNo like '%02' or AreaNo like '%12' or AreaNo like '%22' or AreaNo like '%32')
- and WareHouseNo = '{house}' and status = '0' and PalletStatus = '1' order by CompleteTime desc";
- pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault();
+ pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "1" && 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.LotNo = model.LotNo;
+ //鏇存柊妗跺簱瀛樻槑缁嗙淮鎶ゆ壒娆″彿
+ Db.Updateable(pallet).ExecuteCommand();
+ taskMsg = "璁惧鍙枡妗舵贩鏂欎换鍔�";
break;
case "2"://鍙枡妗讹紙涓嬫枡锛�
- BllExportNoticeDetail bllSo = new BllExportNoticeDetail();
//鍒ゆ柇鏄惁鏈夋壒娆″彿
if (string.IsNullOrWhiteSpace(model.LotNo))
{
throw new Exception("鎵规鍙蜂负绌猴紒");
}
- //鏌ユ壘鏄惁鏈夋鎵规鍑哄簱鍗�
- sql = $"select * from BllExportNoticeDetail where LotNo = '{model.LotNo}' order by CreateTime desc";
- bllSo = Db.Ado.SqlQuery<BllExportNoticeDetail>(sql).FirstOrDefault();
- if (bllSo == null)
+ //鏌ユ壘鏄惁鏈夋鎵规鍑哄簱鍗曟槑缁�
+ 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("璇ユ壒娆℃病鏈夊搴旂殑鍑哄簱鍗�");
}
- noticeno = bllSo.Id.ToString();
+ soNotice.Status = "3";//姝e湪鎵ц
+ soNotice.UpdateTime = DateTime.Now;
+ //鏇存柊鍑哄簱鍗�
+ Db.Updateable(soNotice).ExecuteCommand();
+
//鏌ユ壘搴撳瓨涓槸鍚︽湁姝ゆ壒娆$殑鍚堟牸涓嬫枡妗�
- sql = $@"select PalletNo,LocatNo from DataStockDetail where LotNo = '{model.LotNo}'and (AreaNo like '%03' or AreaNo like '%13' or AreaNo like '%23' or AreaNo like '%33')
- and WareHouseNo = '{house}' and status = '0' and PalletStatus = '2' and InspectStatus = '1' order by CompleteTime desc";
- pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault();
+ pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "2" && 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("鏆傛棤涓嬫枡妗跺彲鍒嗛厤");
}
+ taskMsg = "璁惧鍙枡妗朵笅鏂欎换鍔�";
break;
case "3"://鍙剰妗�
- sql += $"and WareHouseNo = '{house}' and (AreaNo like '%04' or AreaNo like '%14' or AreaNo like '%24' or AreaNo like '%34') and PalletStatus='3' order by CreateTime desc";
- List<DataStockDetail> palletList = Db.Ado.SqlQuery<DataStockDetail>(sql).ToList();
+ List<DataStockDetail> palletList = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "3"
+ && (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("鏆傛棤鑴忔《鍙垎閰�");
@@ -141,43 +160,312 @@
//}
#endregion
- //涓嬪彂灏忚溅浠诲姟
+ //璧峰鍌ㄤ綅鍦板潃淇℃伅
+ 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 = "2",//鍗曟嵁绫诲瀷 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),
+ Noticedetailno = int.Parse(noticeNo),
};
- CreateLotTask(task2, url, out taskNo);
+ 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 = "2",//鍗曟嵁绫诲瀷 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,//妗跺彿
- Type = model.Type,//妗剁被鍨�
- Crtype = "1",
- Noticedetailno = int.Parse(noticeno),
+ Crtype = "1",//鍙《
+ Noticedetailno = int.Parse(noticeNo),
LotNo = model.LotNo,
};
- CreateLotTask(task, url, out taskNo);
- return;
+ //缁欎笅杞︿笅鍙戜换鍔�
+ 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.Ado.RollbackTran();
+ //鍥炴粴浜嬪姟
+ 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 = "2",//鍗曟嵁绫诲瀷 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涓嬪彂灏嗗噣妗舵敼涓鸿剰妗跺苟鎷夊埌鑴忔《鍖�
@@ -224,7 +512,7 @@
Noticedetailno = 0,
};
string taskNo = "";
- CreateLotTask(ztask, url, out taskNo);
+ CreateLotTask(ztask, url);
statrtLocat.Status = "3";//鍑哄簱涓�
//淇敼璧峰鍌ㄤ綅鐘舵��
@@ -269,104 +557,11 @@
LotNo = "",
};
string taskNo = "";
- CreateLotTask(task,url, out taskNo);
+ CreateLotTask(task,url);
}
catch (Exception ex)
{
throw ex;
- }
- }
-
- /// <summary>
- /// 鐢宠鍌ㄤ綅
- /// </summary>
- /// <param name="PalletNo"></param>
- /// <returns></returns>
- public void ApplyLocatNo(Pallnetmsg model,string url, out string taskNo)
- {
- var sql = $"select LocatNo from SysStorageLocat where status = '0'";
- var sql2 = "";
- var houseNo = "";//鐢宠鍌ㄤ綅璁惧鎵�鍦ㄨ溅闂寸紪鍙�
- var noticeno = "0";//鍑哄叆搴撳崟鎹槑缁咺D
- SysStorageLocat loction = new SysStorageLocat();//鐩爣鍌ㄤ綅淇℃伅
- BllArrivalNoticeDetail noticeDetail = new BllArrivalNoticeDetail();//鍏ュ簱鍗曟槑缁�
- try
- {
- //璁惧鎵�鍦ㄥ偍浣嶄俊鎭�
- var deviceLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LotNo);
- if (deviceLocatInfo == null)
- {
- throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}");
- }
- houseNo = deviceLocatInfo.WareHouseNo;//璁惧鎵�灞炶溅闂�
- switch (model.Type)
- {
- case "3"://娓呮礂璁惧鐢宠鍌ㄤ綅锛堝噣妗剁敵璇峰偍浣嶏級
- sql += $" and (AreaNo like '%01' or AreaNo like '%11' or AreaNo like '%21' or AreaNo like '%31') and WareHouseNo = '{houseNo}'";
- loction = Db.Ado.SqlQuery<SysStorageLocat>(sql).OrderByDescending(a => a.CreateTime).FirstOrDefault();
- if (loction == null)
- {
- throw new Exception("璇ヨ溅闂村噣妗跺尯鏆傛棤绌轰綑鍌ㄤ綅");
- }
- break;
- case "0"://鎺ユ枡璁惧鐢宠鍌ㄤ綅锛堥娣锋枡妗剁敵璇峰偍浣嶏級
- //鍒ゆ柇鏄惁鏈夋壒娆″彿
- if (string.IsNullOrWhiteSpace(model.LotNo))
- {
- throw new Exception("鎵规鍙蜂负绌猴紒");
- }
- sql += $" and (AreaNo like '%02' or AreaNo like '%12' or AreaNo like '%22' or AreaNo like '%32') and WareHouseNo = '{houseNo}'";
- loction = Db.Ado.SqlQuery<SysStorageLocat>(sql).OrderByDescending(a => a.CreateTime).FirstOrDefault();
- if (loction == null)
- {
- throw new Exception("璇ヨ溅闂撮娣峰尯鏆傛棤绌轰綑鍌ㄤ綅");
- }
- break;
- case "1"://娣锋枡璁惧鐢宠鍌ㄤ綅锛堝崐鎴愬搧妗剁敵璇峰偍浣嶏級
- //鍒ゆ柇鏄惁鏈夋壒娆″彿
- if (string.IsNullOrWhiteSpace(model.LotNo))
- {
- throw new Exception("鎵规鍙蜂负绌猴紒");
- }
- //鏍¢獙姝ゆ壒娆℃槸鍚︽湁鍏ュ簱鍗�
- sql2 = $"select * from BllArrivalNoticeDetail where LotNo = '{model.LotNo}' order by CreateTime desc";
- noticeDetail = Db.Ado.SqlQuery<BllArrivalNoticeDetail>(sql2).FirstOrDefault();
- if (noticeDetail == null)
- {
- throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍏ュ簱鍗�");
- }
- noticeno = noticeDetail.Id.ToString();
- sql += $" and (AreaNo like '%03' or AreaNo like '%13' or AreaNo like '%23' or AreaNo like '%33') and WareHouseNo = '{houseNo}'";
- loction = Db.Ado.SqlQuery<SysStorageLocat>(sql).OrderByDescending(a => a.CreateTime).FirstOrDefault();
- if (loction == null)
- {
- throw new Exception("璇ヨ溅闂村崐鎴愬搧鍖烘殏鏃犵┖浣欏偍浣�");
- }
- break;
- case "2"://涓嬫枡璁惧鐢宠鍌ㄤ綅锛堣剰妗剁敵璇峰偍浣嶏級
- sql += $" and (AreaNo like '%04' or AreaNo like '%14' or AreaNo like '%24' or AreaNo like '%34') and WareHouseNo = '{houseNo}'";
- loction = Db.Ado.SqlQuery<SysStorageLocat>(sql).OrderByDescending(a => a.CreateTime).FirstOrDefault();
- if (loction == null)
- {
- throw new Exception("璇ヨ溅闂磋剰妗跺尯鏆傛棤绌轰綑鍌ㄤ綅");
- }
- break;
- }
- 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,
- };
- CreateLotTask(task, url, out taskNo);
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
}
}
@@ -375,216 +570,234 @@
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
- public void CreateLotTask(TaskDetial taskDetial,string url,out string taskNo)
+ 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
{
- var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == taskDetial.Pallno);//妗跺簱瀛樻槑缁�
- if (stockDetail == null)
+ #region 鏉′欢鍒ゆ柇
+ var resultModel = new ErpModel() { Success = -1, Message = "" };
+ if (string.IsNullOrEmpty(TaskNo))
{
- throw new Exception($"璇ユ《鏈湪搴撳瓨涓紝妗跺彿锛歿taskDetial.Pallno}");
+ 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 typeDesc = "";
- switch (taskDetial.Crtype)
- {
- case "0":
- typeDesc = "鍏ュ簱";
- break;
- case "1":
- typeDesc = "鍑哄簱";
- break;
- case "2":
- typeDesc = "绉诲簱";
- break;
- }
- var msg = "";
- switch (taskDetial.Type)
- {
- case "0":
- msg = "鍑�妗�"+ typeDesc + "浠诲姟";
- break;
- case "1":
- msg = "棰勬贩鏂欐《" + typeDesc + "浠诲姟";
- break;
- case "2":
- msg = "鍗婃垚鍝佹枡妗�" + typeDesc + "浠诲姟";
- break;
- case "3":
- msg = "鑴忔《" + typeDesc + "浠诲姟";
- break;
- }
- #region 鍌ㄤ綅淇℃伅
- //璧峰鍌ㄤ綅鍦板潃淇℃伅
- var startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel=="0" && w.LocatNo == taskDetial.Startport);
- if (startLoction == null)
- {
- throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿taskDetial.Startport}");
- }
- //鐩爣鍌ㄤ綅鍦板潃淇℃伅
- var endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == taskDetial.Endport);
- if (endLoction == null)
- {
- throw new Exception($"鐩爣鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿taskDetial.Endport}");
- }
- #endregion
- var sql = "";
- var sql2 = "";
- var ordertype = "3";
- //娑夊強鍑哄叆搴撳崟鎹殑鐘舵�佷俊鎭敼鍙�
- if (taskDetial.Type == "2" && taskDetial.Crtype == "1")//鍗婃垚鍝佸嚭搴�
- {
- ordertype = "1";
- sql = $"UPDATE BllExportNotice SET Status ='1' " +
- $"where SoNO = (select SoNO from BllExportNoticeDetail where id = {taskDetial.Noticedetailno})";
- Db.Ado.ExecuteCommand(sql);
- }
- else if (taskDetial.Type == "0" && taskDetial.Crtype == "0")//鎺ユ枡璁惧鐢宠鍌ㄤ綅锛堟贩鏂欐《鐢宠鍌ㄤ綅锛�
- {
- stockDetail.LotNo = taskDetial.LotNo;//鎵规鍙�
- //鏇存柊妗跺簱瀛樻槑缁嗘壒娆″彿
- Db.Updateable(stockDetail).ExecuteCommand();
- }
- else if (taskDetial.Type == "1" && taskDetial.Crtype == "0")//娣锋枡璁惧鐢宠鍌ㄤ綅锛堝崐鎴愬搧妗剁敵璇峰偍浣嶏級
- {
- ordertype = "0";
- var ArrivalMsg = Db.Queryable<BllArrivalNoticeDetail>().First(it => it.Id == taskDetial.Noticedetailno);
- //淇敼鍏ュ簱鍗曟�昏〃涓崟鎹姸鎬佷负姝e湪鎵ц
- sql = $"UPDATE BllArrivalNotice SET Status ='1' where asnno = '{ArrivalMsg.ASNNo}'";
- Db.Ado.ExecuteCommand(sql);
- //搴撳瓨涓坊鍔犳鎵樼洏鐗╂枡缂栫爜鍜岀紪鐮佸悕绉�
- sql2 = $"UPDATE DataStockDetail SET SkuNo = '{ArrivalMsg.SkuNo}',SkuName = '{ArrivalMsg.SkuName}' " +
- $"where PalletNo = '{taskDetial.Pallno}'and LotNo = '{taskDetial.LotNo}'";
- Db.Ado.ExecuteCommand(sql2);
- }
-
- //鍒ゆ柇浠诲姟鏄惁涓烘柊浠诲姟
- if (string.IsNullOrWhiteSpace(taskDetial.Taskno))
- {
- taskDetial.Taskno = new Common().GetMaxNo("TK");
- }
- var logTaskEntry = new LogTask
- {
- TaskNo = taskDetial.Taskno,
- Sender = "WMS",
- Receiver = "RCS",
- //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
- SendDate = DateTime.Now, //鍙戦�佹椂闂�
- //BackDate = DateTime.Now, //杩斿洖鏃堕棿
- StartLocat = taskDetial.Startport,//璧峰浣嶇疆
- EndLocat = taskDetial.Endport,//鐩爣浣嶇疆
- PalletNo = taskDetial.Pallno,//鎵樼洏鐮�
- IsSend = 1,//鏄惁鍙啀娆′笅鍙�
- IsCancel = 1,//鏄惁鍙彇娑�
- IsFinish = 1,//鏄惁鍙畬鎴�
- Type = taskDetial.Crtype,//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
- OrderType = ordertype,//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3鍏朵粬
- Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
- NoticeDetailNo = int.Parse(taskDetial.Noticedetailno.ToString()),
- Msg = msg, //鍏抽敭淇℃伅
- };
- taskNo = logTaskEntry.TaskNo;
+ var comTime = DateTime.Now;
- #region 鍛煎彨灏忚溅浠g爜
- List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>();
+ if (Status == "0")
+ {
+ taskInfo.Status = "3";//寮傚父缁撴潫
+ //淇敼浠诲姟鐘舵��
+ Db.Updateable(taskInfo).ExecuteCommand();
- 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);
+ resultModel.Success = 0;
+ resultModel.Message = "鎴愬姛";
- //鐩爣浣嶇疆
- PositionCodePath path2 = new PositionCodePath();
- path2.positionCode = taskDetial.Endport;
- if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛�
- {
- path2.type = "05";
- }
- else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛�
- {
- path2.type = "05";
- }
- pahtList.Add(path2);
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
- //涓嬭溅浠诲姟鍗�
- AgvSchedulingTask agvTask = new AgvSchedulingTask();
- agvTask.reqCode = logTaskEntry.TaskNo;//浠诲姟鍙�
- 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
+ return;
}
- else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛�
+ //搴撳瓨鏄庣粏
+ var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == taskInfo.PalletNo);
+ if (stockDetail == null)
{
- agvTask.taskTyp = "Z4";//浠诲姟绫诲瀷 绾胯竟鍒版墭鐩樻敹闆嗗櫒 Z1锛� 鎵樼洏鍨涚敵璇峰叆搴� Z2
+ throw new Exception($"妗跺簱瀛樹俊鎭笉瀛樺湪");
}
- agvTaskList.Add(agvTask);
-
- // 姝e紡杩愯绋嬪簭鏀惧紑
- string str = "";
- 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 = "";
- try
+ //璧峰鍌ㄤ綅淇℃伅
+ var startLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.StartLocat && w.IsDel == "0");
+ if (startLocatInfo == null)
{
- logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂�
+ throw new Exception($"璧峰鍌ㄤ綅淇℃伅涓嶅瓨鍦�");
+ }
+ startLocatInfo.Status = "0";//绌哄偍浣�
+ //淇敼璧峰鍌ㄤ綅鐘舵��
+ Db.Updateable(startLocatInfo).ExecuteCommand();
- response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV");
- //瑙f瀽杩斿洖鏁版嵁
- var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
- if (agvModel.Code == "0")
+ //鐩爣鍌ㄤ綅淇℃伅
+ 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;//鍌ㄤ綅鍦板潃
+ stockDetail.Status = "0";
+ 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";
+ }
+ else if (endLocatInfo.AreaNo.Contains("03") || endLocatInfo.AreaNo.Contains("13") || endLocatInfo.AreaNo.Contains("23") || endLocatInfo.AreaNo.Contains("33"))//鍗婃垚鍝佸尯
+ {
+ stockDetail.PalletStatus = "2";
+ }
+ 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.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)
{
- str += "涓嬪彂鎴愬姛";
-
- //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬�
- 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();
- }
- if (agvModel.Code == "1")
- {
- logTaskEntry.IsSuccess = 0;
- Db.Insertable(logTaskEntry).ExecuteCommand();
- Db.CommitTran();
- throw new Exception("RCS浠诲姟涓嬪彂閿欒锛孯CS杩斿洖娑堟伅锛�" + agvModel.Message);
+ notice.Status = "2";//鎵ц瀹屾垚
+ notice.UpdateTime = DateTime.Now;
+ notice.CompleteTime = DateTime.Now;
+ //淇敼鍏ュ簱鍗曠姸鎬�
+ Db.Updateable(notice).ExecuteCommand();
}
}
- catch (Exception ex)
+ //鍑哄簱浠诲姟锛屽鐞嗗嚭搴撳崟
+ if (taskInfo.Type == "1" && taskInfo.NoticeDetailNo != 0)//鍏ュ簱
{
- throw new Exception(ex.Message);
+ 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 ex;
+ throw new Exception(ex.Message);
}
}
}
diff --git a/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs b/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs
index de12641..b892e4e 100644
--- a/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs
+++ b/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs
@@ -35,5 +35,12 @@
/// <param name="PalletNo"></param>
/// <returns></returns>
public void ApplyLocatNo(Pallnetmsg pallnetmsg, string url ,out string taskNo);
+
+ /// <summary>
+ /// RCS鍙嶉浠诲姟瀹屾垚
+ /// </summary>
+ /// <param name="TaskNo"></param>
+ /// <param name="Status"></param>
+ void RCSFinishTask(string TaskNo, string Status);
}
}
diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs
index 830a24a..7b635c8 100644
--- a/Wms/Wms/Controllers/DownApiController.cs
+++ b/Wms/Wms/Controllers/DownApiController.cs
@@ -18,6 +18,7 @@
using Model.ModelVm.BllTaskVm;
using static Model.InterFaceModel.RCSModel;
using WMS.IBLL.IBllTransServer;
+using Microsoft.Extensions.Logging;
namespace Wms.Controllers
{
@@ -682,6 +683,46 @@
return Ok(new AgvResultModel { code = "1", message = e.Message, data = "", reqCode = "" });
}
}
+
+ /// <summary>
+ /// RCS鐢宠鍌ㄤ綅
+ /// </summary>
+ /// <param name="pallmsg"></param>
+ /// <returns></returns>
+ [HttpPost]
+ public IActionResult ApplyLocatNo(Pallnetmsg pallmsg)
+ {
+ var logStr = $@".\log\AGV\AGV鐢宠鍌ㄤ綅" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+
+ try
+ {
+ var jsonData = JsonConvert.SerializeObject(pallmsg);
+ LogFile.SaveLogToFile($"AGV鐢宠鍌ㄤ綅锛�( {jsonData} ),", logStr);
+
+ if (string.IsNullOrWhiteSpace(pallmsg.Location))
+ {
+ return Ok(new AgvResultModel { code = "1", message = "鐢宠浣嶇疆涓虹┖锛�", data = "", reqCode = "" });
+ }
+ if (string.IsNullOrWhiteSpace(pallmsg.Type))
+ {
+ return Ok(new AgvResultModel { code = "1", message = "浠诲姟绫诲瀷涓虹┖锛�", data = "", reqCode = "" });
+ }
+ if (string.IsNullOrWhiteSpace(pallmsg.PalletNo))
+ {
+ return Ok(new AgvResultModel { code = "1", message = "鐢宠鎵樼洏鍙蜂负绌猴紒", data = "", reqCode = "" });
+ }
+ string taskNo = "";
+ _rcsserver.ApplyLocatNo(pallmsg, _config.AgvHost + _config.GenAgvSchedulingTask, out taskNo);
+
+ return Ok(new AgvResultModel { code = "0", message = "鐢宠鍌ㄤ綅鎴愬姛锛�", data = taskNo, reqCode = "" });
+ }
+ catch (Exception e)
+ {
+ LogFile.SaveLogToFile($"AGV鐢宠鍌ㄤ綅寮傚父锛�( {e.Message} ),", logStr);
+
+ return Ok(new AgvResultModel { code = "1", message = e.Message, data = "", reqCode = "" });
+ }
+ }
/// <summary>
/// 灏嗗噣妗舵敼涓鸿剰妗跺苟鎷夊埌鑴忔《鍖�
/// </summary>
@@ -744,46 +785,6 @@
}
/// <summary>
- /// RCS鐢宠鍌ㄤ綅
- /// </summary>
- /// <param name="pallmsg"></param>
- /// <returns></returns>
- [HttpPost]
- public IActionResult ApplyLocatNo(Pallnetmsg pallmsg)
- {
- var logStr = $@".\log\AGV\AGV鐢宠鍌ㄤ綅" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
-
- try
- {
- var jsonData = JsonConvert.SerializeObject(pallmsg);
- LogFile.SaveLogToFile($"AGV鐢宠鍌ㄤ綅锛�( {jsonData} ),", logStr);
-
- if (string.IsNullOrWhiteSpace(pallmsg.Location))
- {
- return Ok(new AgvResultModel { code = "1", message = "鐢宠浣嶇疆涓虹┖锛�", data = "", reqCode = "" });
- }
- if (string.IsNullOrWhiteSpace(pallmsg.Type))
- {
- return Ok(new AgvResultModel { code = "1", message = "浠诲姟绫诲瀷涓虹┖锛�", data = "", reqCode = "" });
- }
- if (string.IsNullOrWhiteSpace(pallmsg.PalletNo))
- {
- return Ok(new AgvResultModel { code = "1", message = "鐢宠鎵樼洏鍙蜂负绌猴紒", data = "", reqCode = "" });
- }
- string taskNo = "";
- _rcsserver.ApplyLocatNo(pallmsg, _config.AgvHost + _config.GenAgvSchedulingTask, out taskNo);
-
- return Ok(new AgvResultModel { code = "0", message = "鐢宠鍌ㄤ綅鎴愬姛锛�", data = taskNo, reqCode = "" });
- }
- catch (Exception e)
- {
- LogFile.SaveLogToFile($"AGV鐢宠鍌ㄤ綅寮傚父锛�( {e.Message} ),", logStr);
-
- return Ok(new AgvResultModel { code = "1", message = e.Message, data = "", reqCode = "" });
- }
- }
-
- /// <summary>
/// 鍏ュ簱鍗曟嵁涓嬪彂
/// </summary>
/// <param name="model">鍏ュ簱鍗曚俊鎭�</param>
@@ -825,11 +826,10 @@
[HttpPost]
public IActionResult agvCallBack(AgvTaskDto model)
{
- var result = new ErpModel { Success = -1, Message = "" };
+ //璁板綍log
+ var logStr = $@".\log\AGV\浠诲姟鎵ц閫氱煡" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
try
- {
- //璁板綍log
- var logStr = $@".\log\AGV\浠诲姟鎵ц閫氱煡" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+ {
var jsonData = JsonConvert.SerializeObject(model);
LogFile.SaveLogToFile($"浠诲姟鎵ц閫氱煡锛�( {jsonData} ),", logStr);
@@ -846,8 +846,8 @@
return Ok(new AgvResultModel { code = "0", message = "鎴愬姛", reqCode = model.reqCode });
case "end"://浠诲姟缁撴潫
- result = _noticeSvc.RCSFinishTask(model.reqCode, "1");
- return Ok(result);
+ _rcsserver.RCSFinishTask(model.reqCode, "1");
+ return Ok(new AgvResultModel { code = "0", message = "鎴愬姛", reqCode = model.reqCode });
case "cancel"://浠诲姟鍗曞彇娑�
return Ok(new AgvResultModel { code = "0", message = "鎴愬姛", reqCode = model.reqCode });
@@ -860,6 +860,7 @@
}
catch (Exception ex)
{
+ LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡寮傚父锛�( {ex.Message} ),", logStr);
return Ok(new AgvResultModel { code = "-1", message = ex.Message, reqCode = model.reqCode });
}
}
--
Gitblit v1.8.0