ztl пре 2 година
родитељ
комит
d7cf96d4e8

+ 135 - 0
DK.Service/SystemModuleLogic/SystemModuleLogic.cs

@@ -20,6 +20,8 @@ using Dongke.IBOSS.PRD.WCF.DataModels;
 using Oracle.ManagedDataAccess.Client;
 using System.Collections.Generic;
 using Dongke.IBOSS.PRD.Service.BarcodePrintService;
+using Curtain.Net.Sockets.PLC;
+using Curtain.Net.Sockets.PLC.Model.Siemens;
 
 namespace Dongke.IBOSS.PRD.Service.SystemModuleLogic
 {
@@ -3687,6 +3689,139 @@ namespace Dongke.IBOSS.PRD.Service.SystemModuleLogic
 			}
 		}
 
+		public static DataSet GetPLCParameter(string PlcName) 
+		{
+			IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
+			try
+			{
+				string sqlString = "SELECT PLCID,IP,PORT FROM TP_MST_PLC WHERE PLCNAME = :PLCNAME";
+
+				Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
+				   {
+					new Oracle.ManagedDataAccess.Client.OracleParameter(":PLCNAME",PlcName)
+				   };
+				oracleConn.Open();
+				DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
+				oracleConn.Close();
+				return result;
+			}
+			catch (Exception ex)
+			{
+				if (oracleConn.ConnState == ConnectionState.Open)
+				{
+					oracleConn.Close();
+				}
+				throw ex;
+			}
+		}
+
+		public static DataSet GetGodsParameter(string BarCode)
+		{
+			IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
+			try
+			{
+				string sqlString = @"SELECT TPGL.GROUTINGLINECODE,GOODSMODEL,TMGT.GOODSTYPENAME,GOODSSPECIFICATION  FROM TP_PM_GROUTINGDAILYDETAIL TPGL 
+									LEFT JOIN TP_MST_GOODS TMG ON TPGL.GOODSCODE = TMG.GOODSCODE
+									LEFT JOIN TP_MST_GOODSTYPE TMGT ON TMGT.GOODSTYPEID = TMG.GOODSTYPEID
+									WHERE TPGL.BARCODE = :BARCODE";
+
+				Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
+				   {
+					new Oracle.ManagedDataAccess.Client.OracleParameter(":BARCODE",BarCode)
+				   };
+				oracleConn.Open();
+				DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
+				oracleConn.Close();
+				return result;
+			}
+			catch (Exception ex)
+			{
+				if (oracleConn.ConnState == ConnectionState.Open)
+				{
+					oracleConn.Close();
+				}
+				throw ex;
+			}
+		}
+
+		public static ServiceResultEntity AddPlcGood(string Plcid,string BarCode)
+		{
+			IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
+			try
+			{
+				//获取plc信息
+				string sqlString = @"SELECT IP,PORT FROM TP_MST_PLC WHERE PLCID = :PLCID";
+
+				Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
+				   {
+					new Oracle.ManagedDataAccess.Client.OracleParameter(":PLCID",Plcid)
+				   };
+				oracleConn.Open();
+				DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
+
+				if (result.Tables[0] == null || result.Tables[0].Rows.Count == 0)
+				{
+					return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Other, Message = "PLC传输错误" };
+				}
+				//获取产品信息
+				string sqlString1 = @"SELECT TPGL.GROUTINGLINECODE,GOODSMODEL,TMGT.GOODSTYPENAME,GOODSSPECIFICATION  FROM TP_PM_GROUTINGDAILYDETAIL TPGL 
+									LEFT JOIN TP_MST_GOODS TMG ON TPGL.GOODSCODE = TMG.GOODSCODE
+									LEFT JOIN TP_MST_GOODSTYPE TMGT ON TMGT.GOODSTYPEID = TMG.GOODSTYPEID
+									WHERE TPGL.BARCODE = :BARCODE";
+
+				Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter1 = new Oracle.ManagedDataAccess.Client.OracleParameter[]
+				   {
+					new Oracle.ManagedDataAccess.Client.OracleParameter(":BARCODE",BarCode)
+				   };
+
+				DataSet result1 = oracleConn.GetSqlResultToDs(sqlString1, oracleParameter1);
+				string ip = result.Tables[0].Rows[0]["IP"].ToString();
+				int port = Convert.ToInt32(result.Tables[0].Rows[0]["PORT"]);
+				string GROUTINGLINECODE = result1.Tables[0].Rows[0]["GROUTINGLINECODE"].ToString();
+				string GOODSMODEL = result1.Tables[0].Rows[0]["GOODSMODEL"].ToString();
+				string GOODSTYPENAME = result1.Tables[0].Rows[0]["GOODSTYPENAME"].ToString();
+				string GOODSSPECIFICATION = result1.Tables[0].Rows[0]["GOODSSPECIFICATION"].ToString();
+				//写入PLC
+				using (SocketClient<SiemensS7_1200Model> plc = new SocketClient<SiemensS7_1200Model>())
+				{
+					//测试静态数据 测试成功
+					//plc.Connect(ip, port);
+					//plc.Write<string>("D", "102.2", "2020070101");
+					//plc.Write<short>("D", "102.14", Convert.ToInt16(10));
+
+					//手动写
+					plc.Connect(ip, port);
+					plc.Write<string>("D", "102.2", GROUTINGLINECODE);
+					plc.Write<string>("D", "102.4", GOODSMODEL);
+					plc.Write<string>("D", "102.6", GOODSTYPENAME);
+					plc.Write<string>("D", "102.8", GOODSSPECIFICATION);
+
+				}
+
+				//写入操作成功日志
+				string plcParaStr = "BarCode:"+ BarCode+ " GROUTINGLINECODE:"+ GROUTINGLINECODE + " GOODSMODEL:" + GOODSMODEL +
+									" GOODSTYPENAME:" + GOODSTYPENAME + " GOODSSPECIFICATION:"+ GOODSSPECIFICATION;
+
+				Curtain.Log.Logger.Debug("PLC写入成功!" + plcParaStr);
+
+				//PLC操作成功
+				return new ServiceResultEntity()
+				{
+					Status = Constant.ServiceResultStatus.Success,
+					Message = "" //一定不可以有值,为空时才是提交成功
+				};
+				oracleConn.Close();
+			}
+			catch (Exception ex)
+			{
+				if (oracleConn.ConnState == ConnectionState.Open)
+				{
+					oracleConn.Close();
+				}
+				throw ex;
+			}
+		}
+
 		/// <summary>
 		/// 获取半成品缺陷位置管理的全部数据
 		/// </summary>

+ 3 - 0
DK.Service/SystemModuleLogic/SystemModuleLogic.csproj

@@ -80,6 +80,9 @@
     <Compile Include="SystemModuleLogicPartial.cs" />
   </ItemGroup>
   <ItemGroup>
+    <Reference Include="Curtain.Net.Sockets.net4">
+      <HintPath>..\..\DLL\Curtain.Net.Sockets.net4.dll</HintPath>
+    </Reference>
     <Reference Include="Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\DLL\Oracle.ManagedDataAccess.dll</HintPath>

+ 42 - 0
WCF.Service/WCF.Contracts/IPDAModule.cs

@@ -1999,6 +1999,48 @@ namespace Dongke.IBOSS.PRD.WCF.Contracts
         ActionResult GetAllSemicheckDefect(string accountCode, string userCode, string userPassword, string sessionKey);
 
         /// <summary>
+        /// 获取PLC参数
+        /// </summary>
+        /// <param name="accountCode"></param>
+        /// <param name="userCode"></param>
+        /// <param name="userPassword"></param>
+        /// <param name="sessionKey"></param>
+        /// <returns></returns>
+        [OperationContract]
+        [WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest
+            , ResponseFormat = WebMessageFormat.Json
+            , RequestFormat = WebMessageFormat.Json)]
+        ActionResult GetPLCParameter(string accountCode, string userCode, string userPassword, string sessionKey,string PlcName);
+
+        /// <summary>
+        /// 获取产品信息
+        /// </summary>
+        /// <param name="accountCode"></param>
+        /// <param name="userCode"></param>
+        /// <param name="userPassword"></param>
+        /// <param name="sessionKey"></param>
+        /// <returns></returns>
+        [OperationContract]
+        [WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest
+            , ResponseFormat = WebMessageFormat.Json
+            , RequestFormat = WebMessageFormat.Json)]
+        ActionResult GetGodsParameter(string accountCode, string userCode, string userPassword, string sessionKey,string BarCode);
+
+        /// <summary>
+        /// plc传输产品信息
+        /// </summary>
+        /// <param name="accountCode"></param>
+        /// <param name="userCode"></param>
+        /// <param name="userPassword"></param>
+        /// <param name="sessionKey"></param>
+        /// <returns></returns>
+        [OperationContract]
+        [WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest
+            , ResponseFormat = WebMessageFormat.Json
+            , RequestFormat = WebMessageFormat.Json)]
+        ActionResult AddPlcGood(string accountCode, string userCode, string userPassword, string sessionKey, string Plcid, string BarCode);
+
+        /// <summary>
         /// 获取半成品缺陷位置管理的全部数据
         /// </summary>
         /// <param name="accountCode"></param>

+ 117 - 0
WCF.Service/WCF.Services/PDAModuleService.cs

@@ -7547,6 +7547,123 @@ namespace Dongke.IBOSS.PRD.WCF.Services
         }
 
         /// <summary>
+        /// 获取PLC参数
+        /// </summary>
+        /// <param name="sUserInfo"></param>
+        /// <returns></returns>
+        public ActionResult GetPLCParameter(string accountCode, string userCode, string userPassword, string sessionKey,string PlcName)
+        {
+            ActionResult actionResult = new ActionResult();
+            try
+            {
+                // 验证请求头信息
+                actionResult = this.DoPDACheck(accountCode, userCode, userPassword, sessionKey);
+
+                // 验证失败
+                if (actionResult.Status != (int)Constant.PDAResult.Success)
+                {
+                    return actionResult;
+                }
+
+                DataSet resultEntity = ServiceInvoker.Invoke<DataSet>(this,
+                   () => SystemModuleLogic.GetPLCParameter(PlcName));
+
+                actionResult.Result = JsonHelper.ToJson(resultEntity.Tables[0]);
+                actionResult.Status = (int)Constant.PDAResult.Success;
+            }
+            catch (Exception ex)
+            {
+                //LogFileOperation.Error(DataManager.LogFileName, ex.Message);
+                OutputLog.TraceLog(LogPriority.Error,
+                                this.ToString(),
+                                System.Reflection.MethodBase.GetCurrentMethod().Name,
+                                ex.ToString(),
+                                LocalPath.LogExePath);
+                actionResult.Status = (int)Constant.PDAResult.Exception;
+                actionResult.Message = Constant.PDA_RESULT_EXCEPTION;
+            }
+            return actionResult;
+        }
+
+        /// <summary>
+        /// 获取产品信息
+        /// </summary>
+        /// <param name="sUserInfo"></param>
+        /// <returns></returns>
+        public ActionResult GetGodsParameter(string accountCode, string userCode, string userPassword, string sessionKey, string BarCode)
+        {
+            ActionResult actionResult = new ActionResult();
+            try
+            {
+                // 验证请求头信息
+                actionResult = this.DoPDACheck(accountCode, userCode, userPassword, sessionKey);
+
+                // 验证失败
+                if (actionResult.Status != (int)Constant.PDAResult.Success)
+                {
+                    return actionResult;
+                }
+
+                DataSet resultEntity = ServiceInvoker.Invoke<DataSet>(this,
+                   () => SystemModuleLogic.GetGodsParameter(BarCode));
+
+                actionResult.Result = JsonHelper.ToJson(resultEntity.Tables[0]);
+                actionResult.Status = (int)Constant.PDAResult.Success;
+            }
+            catch (Exception ex)
+            {
+                //LogFileOperation.Error(DataManager.LogFileName, ex.Message);
+                OutputLog.TraceLog(LogPriority.Error,
+                                this.ToString(),
+                                System.Reflection.MethodBase.GetCurrentMethod().Name,
+                                ex.ToString(),
+                                LocalPath.LogExePath);
+                actionResult.Status = (int)Constant.PDAResult.Exception;
+                actionResult.Message = Constant.PDA_RESULT_EXCEPTION;
+            }
+            return actionResult;
+        }
+
+        /// <summary>
+        /// 传输PLC产品信息
+        /// </summary>
+        /// <param name="sUserInfo"></param>
+        /// <returns></returns>
+        public ActionResult AddPlcGood(string accountCode, string userCode, string userPassword, string sessionKey,string Plcid, string BarCode)
+        {
+            ActionResult actionResult = new ActionResult();
+            try
+            {
+                // 验证请求头信息
+                actionResult = this.DoPDACheck(accountCode, userCode, userPassword, sessionKey);
+
+                // 验证失败
+                if (actionResult.Status != (int)Constant.PDAResult.Success)
+                {
+                    return actionResult;
+                }
+
+                ServiceResultEntity resultEntity = ServiceInvoker.Invoke<ServiceResultEntity>(this,
+				   () => SystemModuleLogic.AddPlcGood(Plcid, BarCode));
+
+                actionResult.Result = JsonHelper.ToJson(resultEntity);
+                actionResult.Status = (int)Constant.PDAResult.Success;
+            }
+            catch (Exception ex)
+            {
+                //LogFileOperation.Error(DataManager.LogFileName, ex.Message);
+                OutputLog.TraceLog(LogPriority.Error,
+                                this.ToString(),
+                                System.Reflection.MethodBase.GetCurrentMethod().Name,
+                                ex.ToString(),
+                                LocalPath.LogExePath);
+                actionResult.Status = (int)Constant.PDAResult.Exception;
+                actionResult.Message = Constant.PDA_RESULT_EXCEPTION;
+            }
+            return actionResult;
+        }
+
+        /// <summary>
         /// 获取半成品缺陷位置管理的全部数据
         /// </summary>
         /// <param name="sUserInfo"></param>