From 6be6a1e453861fa0beb818236fdd8183024074c4 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期二, 04 十一月 2025 08:21:40 +0800
Subject: [PATCH] 增加和MES对接接口
---
Wms/WMS.BLL/BllTransServer/RcsServer.cs | 195 +++++++++++++++++++++++++++++++++---------------
Wms/Model/InterFaceModel/RCSModel.cs | 6
Wms/Wms/appsettings.json | 4
Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs | 2
Wms/Wms/Tools/ApiUrlConfig.cs | 8 ++
Wms/Wms/Controllers/DownApiController.cs | 20 ++++-
6 files changed, 166 insertions(+), 69 deletions(-)
diff --git a/Wms/Model/InterFaceModel/RCSModel.cs b/Wms/Model/InterFaceModel/RCSModel.cs
index a210cb3..4f75247 100644
--- a/Wms/Model/InterFaceModel/RCSModel.cs
+++ b/Wms/Model/InterFaceModel/RCSModel.cs
@@ -54,9 +54,9 @@
public class ReMes
{
- public string Success { get; set; }
- public string Result { get; set; }
- public string Message { get; set; }
+ public string state { get; set; }
+ public string message { get; set; }
+ public string data { get; set; }
}
public class TaskDetial
diff --git a/Wms/WMS.BLL/BllTransServer/RcsServer.cs b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
index 1245029..a00753c 100644
--- a/Wms/WMS.BLL/BllTransServer/RcsServer.cs
+++ b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
@@ -38,7 +38,7 @@
/// <param name="url"></param>
/// <param name="taskNo"></param>
/// <exception cref="Exception"></exception>
- public void GetPalletNo(Pallnetmsg model, string url, out string taskNo)
+ public void GetPalletNo(Pallnetmsg model, string url,string urlMes, out string taskNo)
{
lock (GetPalleLock)
{
@@ -60,7 +60,6 @@
//鍙《璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙鐩爣鍌ㄤ綅锛�
var endLoction = new SysStorageLocat();
- var urlMes = "";//鍥炰紶MES鐨勬帴鍙e湴鍧�
var noticeNo = "0";//鍑哄叆搴撳崟鎹槑缁咺D
//鎵�鏈夊緟鍒嗛厤鐨勬《
@@ -252,36 +251,28 @@
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();
+ var reObj = new
+ {
+ devive = item.PackagNo
+ };
+ string jsonReq = JsonConvert.SerializeObject(reObj);
+ var response = HttpHelper.DoPost(urlMes, jsonReq, "鍥炰紶MES鑴忔《缂栧彿鍒ゆ柇鏄惁鍙竻娲�", "MES").ToString();
+ var obj = JsonConvert.DeserializeObject<ReMes>(response);//瑙f瀽杩斿洖鏁版嵁
+ if (obj.state == "200")
+ {
+ if (obj.data != "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鍑�妗剁紪鍙峰け璐ワ紒");
- //}
+ continue;
+ }
+ }
+ else
+ {
+ throw new Exception("鍙剰妗跺洖浼燤ES鍒ゆ柇澶辫触锛�");
+ }
#endregion
item.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰�
@@ -783,7 +774,7 @@
Db.BeginTran();
//鏌ユ壘鏄惁鏈夌┖浣欒剰妗朵綅
- var endLocat = Db.Queryable<SysStorageLocat>().First(w => w.WareHouseNo == detail.WareHouseNo && w.AreaNo.Contains("04") && w.Status == "0" && w.Flag=="0");
+ 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";//寮傚父閿佸畾
@@ -831,22 +822,97 @@
{
try
{
+ //妗朵俊鎭�
var detail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == pallnetmsg.PalletNo && w.PalletStatus == "3");
if (detail == null)
{
throw new Exception($"搴撳瓨涓笉瀛樺湪妗跺彿涓猴細{pallnetmsg.PalletNo}鐨勫簱瀛�!");
}
- //涓嬪彂灏忚溅浠诲姟
+ //璁惧淇℃伅
+ var deviceInfo = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode.Contains(pallnetmsg.Location));
+ if (deviceInfo == null)
+ {
+ throw new Exception($"涓嶅瓨鍦ㄨ澶囧彿涓猴細{pallnetmsg.Location}鐨勮澶�!");
+ }
+ //鐩爣鍌ㄤ綅淇℃伅
+ var endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == deviceInfo.WareHouseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);// Column=1 娓呮礂鍌ㄤ綅锛孋olumn=2 娓呮礂瀹屾枡鍌ㄤ綅
+ if (endLoction == null)
+ {
+ throw new Exception("鍙《璁惧鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�");
+ }
+
+ detail.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰�
+ //鏇存柊妗跺簱瀛樻槑缁�
+ Db.Updateable(detail).ExecuteCommand();
+
+ //璧峰鍌ㄤ綅鍦板潃淇℃伅
+ var startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == detail.LocatNo);
+ if (startLoction == null)
+ {
+ throw new Exception($"妗跺彿锛歿detail.PalletNo}鍌ㄤ綅淇℃伅{detail.LocatNo}涓嶅瓨鍦�");
+ }
+
+ var taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙�
+ var logTaskEntry = new LogTask
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "RCS",
+ //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+ SendDate = DateTime.Now, //鍙戦�佹椂闂�
+ //BackDate = DateTime.Now, //杩斿洖鏃堕棿
+ StartLocat = startLoction.LocatNo,//璧峰浣嶇疆
+ EndLocat = endLoction.LocatNo,//鐩爣浣嶇疆
+ PalletNo = detail.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3 绉诲簱
+ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ NoticeDetailNo = 0,
+ Msg = $"MES涓嬪彂娓呮礂鎸囧畾鑴忔《锛屾《鍙�:{pallnetmsg.PalletNo},璁惧鍙凤細{pallnetmsg.Location}", //鍏抽敭淇℃伅
+ LotNo = ""//鎵规鍙�
+ };
+ //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅
var task = new TaskDetial
{
- Startport = detail.LocatNo,
- Endport = pallnetmsg.Location,
- Pallno = detail.PalletNo,
- Crtype = "1",
+ Taskno = taskNo,//浠诲姟鍙�
+ Startport = startLoction.LocatNo,//璧峰浣嶇疆
+ Endport = endLoction.LocatNo,//鐩爣浣嶇疆
+ Pallno = detail.PalletNo,//妗跺彿
+ Crtype = "1",//鍙《
+ WareHouseNo = detail.WareHouseNo//杞﹂棿缂栫爜
};
- string taskNo = "";
- string agvMsg = string.Empty;
- CreateTaskForAgv(task, url, out agvMsg);
+ //缁欎笅杞︿笅鍙戜换鍔�
+ logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂�
+ string agvMsg=string.Empty;
+ var agvResult = CreateTaskForAgv(task, url, out agvMsg);
+ if (agvResult)//鎴愬姛
+ {
+ //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬�
+ logTaskEntry.IsSuccess = 1;
+ logTaskEntry.IsSend = 0;
+ //logTaskEntry.IsCancel = 0;
+ logTaskEntry.BackDate = DateTime.Now;
+ logTaskEntry.Status = "1";//姝e湪鎵ц
+ Db.Insertable(logTaskEntry).ExecuteCommand();
+
+ startLoction.Status = "3";//鍑哄簱涓�
+ Db.Updateable(startLoction).ExecuteCommand();
+
+ endLoction.Status = "2";//鍏ュ簱涓�
+ Db.Updateable(endLoction).ExecuteCommand();
+ }
+ else//澶辫触
+ {
+ logTaskEntry.IsSuccess = 0;
+ logTaskEntry.Information = agvMsg;
+ Db.Insertable(logTaskEntry).ExecuteCommand();
+
+ }
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
}
catch (Exception ex)
{
@@ -1294,33 +1360,42 @@
agvTask.taskTyp = "Z5";
}
- // 姝e紡杩愯绋嬪簭鏀惧紑
- var jsonData = JsonConvert.SerializeObject(agvTask);
- string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV");
- //瑙f瀽杩斿洖鏁版嵁
- var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
- if (agvModel.Code == "0")
+
+ if (string.IsNullOrEmpty(url))//娴嬭瘯绯荤粺
{
- result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔�
-
+ result = true;
agvMsg = "";
}
- else
+ else//姝e紡绯荤粺
{
- string logMsg = "";
- if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛�
+ var jsonData = JsonConvert.SerializeObject(agvTask);
+ string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV");
+ //瑙f瀽杩斿洖鏁版嵁
+ var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
+ if (agvModel.Code == "0")
{
- 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);
+ result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔�
- agvMsg = agvModel.Message;
+ agvMsg = "";
+ }
+ 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);
+
+ agvMsg = agvModel.Message;
+ }
}
+
return result;
#endregion
}
diff --git a/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs b/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs
index 66235fe..f90d43e 100644
--- a/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs
+++ b/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs
@@ -14,7 +14,7 @@
/// <param name="warehouseno">搴撳尯</param>
/// <param name="type">鍙枡绫诲瀷</param>
/// <returns></returns>
- public void GetPalletNo(Pallnetmsg pallnetmsg, string url, out string taskNo);
+ public void GetPalletNo(Pallnetmsg pallnetmsg, string url, string urlMes, out string taskNo);
/// <summary>
/// 灏嗗噣妗舵敼涓鸿剰妗跺苟鎷夊埌鑴忔《鍖�
diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs
index a4e3fb8..b11c7f2 100644
--- a/Wms/Wms/Controllers/DownApiController.cs
+++ b/Wms/Wms/Controllers/DownApiController.cs
@@ -21,6 +21,7 @@
using Microsoft.Extensions.Logging;
using ZXing.QrCode.Internal;
using Model.ModelVm.BllCheckVm;
+using System.DirectoryServices.Protocols;
namespace Wms.Controllers
{
@@ -683,7 +684,7 @@
}
string taskNo = "";
//鍏蜂綋澶勭悊鏂规硶
- _rcsserver.GetPalletNo(pallmsg, _config.AgvHost + _config.GenAgvSchedulingTask, out taskNo);
+ _rcsserver.GetPalletNo(pallmsg, _config.AgvHost + _config.GenAgvSchedulingTask, _config.MesHost + _config.MesPanClearPallet, out taskNo);
resultModel = new AgvResultModel { code = "0", message = "鍙《鎴愬姛!", data = taskNo, reqCode = "" };
var jsonData2 = JsonConvert.SerializeObject(resultModel);
@@ -757,16 +758,20 @@
}
}
/// <summary>
- /// 灏嗗噣妗舵敼涓鸿剰妗跺苟鎷夊埌鑴忔《鍖�
+ /// MES灏嗗噣妗舵敼涓鸿剰妗跺苟鎷夊埌鑴忔《鍖�
/// </summary>
/// <param name="pallmsg"></param>
/// <returns></returns>
[HttpPost]
public IActionResult ChangePalletStatus(Pallnetmsg pallmsg)
{
+ var logStr = $@".\log\MES\MES灏嗗噣妗舵敼涓鸿剰妗跺苟鎷夊埌鑴忔《鍖�" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
var result = new ErpModel { Success = -1, Message = "", };
try
{
+ var jsonData = JsonConvert.SerializeObject(pallmsg);
+ LogFile.SaveLogToFile($"MES灏嗗噣妗舵敼涓鸿剰妗跺苟鎷夊埌鑴忔《鍖�-璇锋眰鎶ユ枃锛�( {jsonData} ),", logStr);
+
if (string.IsNullOrWhiteSpace(pallmsg.PalletNo))
{
result.Message = "妗剁紪鍙蜂笉鑳戒负绌猴紒";
@@ -779,22 +784,28 @@
}
catch (Exception e)
{
+ LogFile.SaveLogToFile($"MES灏嗗噣妗舵敼涓鸿剰妗跺苟鎷夊埌鑴忔《鍖哄紓甯革細( {e.Message} ),", logStr);
+
result.Message = e.Message;
return Ok(result);
}
}
/// <summary>
- /// MES涓嬪彂娓呮礂閿佸畾鑴忔《
+ /// MES涓嬪彂娓呮礂鎸囧畾鑴忔《
/// </summary>
/// <param name="pallmsg"></param>
/// <returns></returns>
[HttpPost]
public IActionResult CleanPallet(Pallnetmsg pallmsg)
{
- var result = new ErpModel { Success = -1, Message = "", };
+ var logStr = $@".\log\MES\MES涓嬪彂娓呮礂鎸囧畾鑴忔《" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+ ErpModel result = new ErpModel { Success = -1, Message = "" };
try
{
+ var jsonData = JsonConvert.SerializeObject(pallmsg);
+ LogFile.SaveLogToFile($"MES涓嬪彂娓呮礂鎸囧畾鑴忔《-璇锋眰鎶ユ枃锛�( {jsonData} ),", logStr);
+
if (string.IsNullOrWhiteSpace(pallmsg.Location))
{
result.Message = "鍙枡浣嶇疆涓虹┖锛�";
@@ -812,6 +823,7 @@
}
catch (Exception e)
{
+ LogFile.SaveLogToFile($"MES涓嬪彂娓呮礂鎸囧畾鑴忔《寮傚父锛�( {e.Message} ),", logStr);
result.Message = e.Message;
return Ok(result);
}
diff --git a/Wms/Wms/Tools/ApiUrlConfig.cs b/Wms/Wms/Tools/ApiUrlConfig.cs
index fe5f1ff..5f31817 100644
--- a/Wms/Wms/Tools/ApiUrlConfig.cs
+++ b/Wms/Wms/Tools/ApiUrlConfig.cs
@@ -19,6 +19,10 @@
/// 杩芥函鎴栬祴鐮佺殑IP
/// </summary>
public string BoxHost { get; set; }
+ /// <summary>
+ /// MES鐨処P
+ /// </summary>
+ public string MesHost { get; set; }
/// <summary>
/// Agv鐨処P
@@ -46,6 +50,10 @@
/// 鑾峰彇绠辩爜淇℃伅--浠庤拷婧垨璧嬬爜绯荤粺
/// </summary>
public string GetBoxUrl { get; set; }
+ /// <summary>
+ /// MES鍒ゆ柇鑴忔《鏄惁鍙竻娲�
+ /// </summary>
+ public string MesPanClearPallet { get; set; }
#endregion
diff --git a/Wms/Wms/appsettings.json b/Wms/Wms/appsettings.json
index a5363d4..2b95ac2 100644
--- a/Wms/Wms/appsettings.json
+++ b/Wms/Wms/appsettings.json
@@ -30,6 +30,7 @@
"WcsHost": "http://localhost:57061", //wcsIPhttp://localhost:57061/
"BoxHost": "http://10.110.24.30:8081", //boxIP
"AgvHost": "http://172.15.1.74:8182", //agvIP
+ "MesHost": "http://172.16.106.200:5100", //mesIP
"IssueComApiUrl": "/api/WCSApi/AddTasks", //涓嬪彂鍛戒护(鍑哄簱銆佺Щ搴�)
"IssueComApiUrl2": "/api/WCSApi/AddTask", //閲嶆柊涓嬪彂鍛戒护(鍑哄簱銆佺Щ搴�)
@@ -41,7 +42,8 @@
"EditLocateUrl": "/api/WCSApi/EditLocatStatus", //鍚屾淇敼鍌ㄤ綅淇℃伅
-
+ //MES
+ "MesPanClearPallet": "/ibps/mes/v3/webservice/mes-si/interfaceListener/CHECK_DEVICE_CLEAN_METHOD",
// AGV
"GenAgvSchedulingTask": "/rcms/services/rest/hikRpcService/genAgvSchedulingTask", //鐢熸垚浠诲姟鍗曟帴鍙�
"ContinueTask": "/rcms/services/rest/hikRpcService/continueTask", //缁х画鎵ц浠诲姟鎺ュ彛
--
Gitblit v1.8.0