677 lines
28 KiB
C#
677 lines
28 KiB
C#
using DataLinkMesWork;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data.SqlClient;
|
||
using System.Data;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using Robot.Common;
|
||
using NPOI.SS.UserModel;
|
||
|
||
namespace MesWork
|
||
{
|
||
public partial class publicCore
|
||
{
|
||
public static int partCount = 0;
|
||
public static string FSSRequestMsgId = "";
|
||
public static string Hello_You_All_Never_Know(string[] args)
|
||
{
|
||
return Guid.NewGuid().ToString();
|
||
}
|
||
/// <summary>
|
||
/// PLC事件变化委托
|
||
/// </summary>
|
||
public static Action<OpcData.CustomeEvetnArgs> MIS_Funtion_PLC_OP = null;
|
||
|
||
/// <summary>
|
||
/// 读取PLC正在装配第几个件
|
||
/// </summary>
|
||
/// <param name="opName"></param>
|
||
/// <returns></returns>
|
||
public static int Get_PartPosition(string opName)
|
||
{
|
||
// 当前装配第几个件 54
|
||
int PartPosition = -1;
|
||
PartPosition = Convert.ToInt32(MesWorkForm.ReadPLC(54, opName)) ;
|
||
return PartPosition;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 设备状态发生变化,处理完成之后,发给管控系统
|
||
/// 1工作中 2空闲(请求上料) 3完成(请求下料) 4 报警
|
||
/// </summary>
|
||
public static void SolveDeviceStatus(string opName)
|
||
{
|
||
// 空闲(请求上料) 51
|
||
string isFree = "0";
|
||
// 完成(请求下料) 52
|
||
string isWorkFinish = "0";
|
||
// 故障 53
|
||
string isAlarm = "0";
|
||
string finalStatus = "0";
|
||
|
||
isFree = MesWorkForm.ReadPLC(51, opName).ToString();
|
||
if (isFree.ToLower() == "true" || isFree.ToLower() == "1")
|
||
{
|
||
isFree = "1";
|
||
}
|
||
|
||
isWorkFinish = MesWorkForm.ReadPLC(52, opName).ToString();
|
||
if (isWorkFinish.ToLower() == "true" || isWorkFinish.ToLower() == "1")
|
||
{
|
||
isWorkFinish = "1";
|
||
}
|
||
isAlarm = MesWorkForm.ReadPLC(53, opName).ToString();
|
||
if (isAlarm.ToLower() == "true" || isAlarm.ToLower() == "1")
|
||
{
|
||
isAlarm = "1";
|
||
}
|
||
|
||
if (isAlarm == "1")
|
||
{
|
||
finalStatus = "4";
|
||
}
|
||
else if (isWorkFinish == "1")
|
||
{
|
||
finalStatus = "3";
|
||
}
|
||
else if (isFree == "1")
|
||
{
|
||
finalStatus = "2";
|
||
}
|
||
else
|
||
{
|
||
finalStatus = "1";
|
||
}
|
||
if (finalStatus == "3")
|
||
{
|
||
QualityData_Insert_Final(opName, out string errMag);
|
||
publicCore.LogInsert("Quality", "Info", "保存质量数据:" + errMag);
|
||
|
||
}
|
||
AnalysisMsg.DeviceStatus(opName, Convert.ToInt32(finalStatus));
|
||
}
|
||
|
||
/// <summary>
|
||
/// 设备状态发生变化,处理完成之后,发给管控系统
|
||
/// 1工作中 2空闲(请求上料) 3完成(请求下料) 4 报警
|
||
/// 接口用 不重复保存质量数据
|
||
/// </summary>
|
||
public static void SolveDeviceStatus_WebApi_Use(string opName)
|
||
{
|
||
// 空闲(请求上料) 51
|
||
string isFree = "0";
|
||
// 完成(请求下料) 52
|
||
string isWorkFinish = "0";
|
||
// 故障 53
|
||
string isAlarm = "0";
|
||
string finalStatus = "0";
|
||
|
||
isFree = MesWorkForm.ReadPLC(51, opName).ToString();
|
||
if (isFree.ToLower() == "true" || isFree.ToLower() == "1")
|
||
{
|
||
isFree = "1";
|
||
}
|
||
|
||
isWorkFinish = MesWorkForm.ReadPLC(52, opName).ToString();
|
||
if (isWorkFinish.ToLower() == "true" || isWorkFinish.ToLower() == "1")
|
||
{
|
||
isWorkFinish = "1";
|
||
}
|
||
isAlarm = MesWorkForm.ReadPLC(53, opName).ToString();
|
||
if (isAlarm.ToLower() == "true" || isAlarm.ToLower() == "1")
|
||
{
|
||
isAlarm = "1";
|
||
}
|
||
|
||
if (isAlarm == "1")
|
||
{
|
||
finalStatus = "4";
|
||
}
|
||
else if (isWorkFinish == "1")
|
||
{
|
||
finalStatus = "3";
|
||
}
|
||
else if (isFree == "1")
|
||
{
|
||
finalStatus = "2";
|
||
}
|
||
else
|
||
{
|
||
finalStatus = "1";
|
||
}
|
||
AnalysisMsg.DeviceStatus(opName, Convert.ToInt32(finalStatus));
|
||
}
|
||
|
||
/// <summary>
|
||
/// 设备状态发生变化,处理完成之后,发给管控系统
|
||
/// 1工作中 2空闲(请求上料) 3完成(请求下料) 4 报警
|
||
/// </summary>
|
||
public static string SolveDeviceStatus_Read(string opName)
|
||
{
|
||
// 空闲(请求上料) 51
|
||
string isFree = "0";
|
||
// 完成(请求下料) 52
|
||
string isWorkFinish = "0";
|
||
// 故障 53
|
||
string isAlarm = "0";
|
||
string finalStatus = "0";
|
||
|
||
isFree = MesWorkForm.ReadPLC(51, opName).ToString();
|
||
if(isFree.ToLower() == "true" || isFree.ToLower() == "1")
|
||
{
|
||
isFree = "1";
|
||
}
|
||
|
||
isWorkFinish = MesWorkForm.ReadPLC(52, opName).ToString();
|
||
if (isWorkFinish.ToLower() == "true" || isWorkFinish.ToLower() == "1")
|
||
{
|
||
isWorkFinish = "1";
|
||
}
|
||
isAlarm = MesWorkForm.ReadPLC(53, opName).ToString();
|
||
if (isAlarm.ToLower() == "true" || isAlarm.ToLower() == "1")
|
||
{
|
||
isAlarm = "1";
|
||
}
|
||
|
||
if (isAlarm == "1")
|
||
{
|
||
finalStatus = "4";
|
||
}
|
||
else if (isWorkFinish == "1")
|
||
{
|
||
finalStatus = "3";
|
||
}
|
||
else if (isFree == "1")
|
||
{
|
||
finalStatus = "2";
|
||
}
|
||
else
|
||
{
|
||
finalStatus = "1";
|
||
}
|
||
return finalStatus;
|
||
}
|
||
|
||
/// <summary>
|
||
/// AGV任务号
|
||
/// </summary>
|
||
public static void SolveAgvTaskNum(string OpName, string PLC_AgvTaskNum)
|
||
{
|
||
|
||
// 77 反馈AGV任务
|
||
switch (PLC_AgvTaskNum)
|
||
{
|
||
// AGV已呼叫成功正在去往上料区
|
||
case "10":
|
||
MesWorkForm.WritePLC(77, OpName, "10");
|
||
break;
|
||
// AGV已到达上料区_带货,申请进入上料位置
|
||
case "11":
|
||
string previousTaskValue = MesWorkForm.ReadPLC(77, OpName).ToString();
|
||
string AgvCanEnter = MesWorkForm.ReadPLC(50, OpName).ToString();
|
||
if (previousTaskValue == "10")
|
||
{
|
||
// 写任务--满AGV是达上料区
|
||
MesWorkForm.WritePLC(77, OpName, "1");
|
||
if (AgvCanEnter == "2")
|
||
{
|
||
// 1.调用FSS-接收允许进入或离开 (类型:允许进入)的接口
|
||
AnalysisMsg.ResponseEnterOrLeave(OpName, 1);
|
||
MesWorkForm.WritePLC(77, OpName, "20");
|
||
}
|
||
}
|
||
if (previousTaskValue == "30")
|
||
{
|
||
// 写任务--空AGV是达上料区
|
||
MesWorkForm.WritePLC(77, OpName, "3");
|
||
if (AgvCanEnter == "4")
|
||
{
|
||
// 1.调用FSS-接收允许进入或离开 (类型:允许进入)的接口
|
||
AnalysisMsg.ResponseEnterOrLeave(OpName, 1);
|
||
MesWorkForm.WritePLC(77, OpName, "40");
|
||
}
|
||
}
|
||
break;
|
||
// 允许AGV进行上料 --允许进入
|
||
case "2":
|
||
string FullAgvIsRequestEnter = MesWorkForm.ReadPLC(77, OpName).ToString();
|
||
// 需要判断前序任务是否完成-- 满AGV是否到达上料区
|
||
if (FullAgvIsRequestEnter == "1")
|
||
{
|
||
// 1.调用FSS-接收允许进入或离开 (类型:允许进入)的接口
|
||
AnalysisMsg.ResponseEnterOrLeave(OpName, 1);
|
||
MesWorkForm.WritePLC(77, OpName, "20");
|
||
}
|
||
break;
|
||
case "21":
|
||
// AGV 上料完成
|
||
string previousTaskValue1 = MesWorkForm.ReadPLC(77, OpName).ToString();
|
||
if(previousTaskValue1 == "20")
|
||
{
|
||
MesWorkForm.WritePLC(77, OpName, "2");
|
||
}
|
||
if (previousTaskValue1 == "40")
|
||
{
|
||
MesWorkForm.WritePLC(77, OpName, "4");
|
||
}
|
||
|
||
break;
|
||
// PLC呼叫AGV进行下料
|
||
case "3":
|
||
// 1.调用FSS-接收IPC下料请求的接口
|
||
AnalysisMsg.FinishCall(OpName);
|
||
// 2.反馈任务号:30 AGV已呼叫成功正在去往下料区
|
||
MesWorkForm.WritePLC(77, OpName, "30");
|
||
break;
|
||
// 允许AGV进行下料 --允许进入
|
||
case "4":
|
||
string EmptyAgvIsRequestEnter = MesWorkForm.ReadPLC(77, OpName).ToString();
|
||
// 需要判断前序任务是否完成-- 空AGV是否到达上料区
|
||
if (EmptyAgvIsRequestEnter == "3")
|
||
{
|
||
// 1.调用FSS-接收允许进入或离开 (类型:允许进入)的接口
|
||
AnalysisMsg.ResponseEnterOrLeave(OpName, 1);
|
||
MesWorkForm.WritePLC(77, OpName, "40");
|
||
}
|
||
break;
|
||
// 允许AGV离开
|
||
case "5":
|
||
string FullOrEmptyAgvIsRequestLeave = MesWorkForm.ReadPLC(77, OpName).ToString();
|
||
// 需要判断前序任务是否完成-- AGV上料完成或者下料完成
|
||
if(FullOrEmptyAgvIsRequestLeave == "2" || FullOrEmptyAgvIsRequestLeave == "4")
|
||
{
|
||
// 1.调用FSS-接收允许进入或离开 (类型:允许离开)的接口
|
||
AnalysisMsg.ResponseEnterOrLeave(OpName, 2);
|
||
MesWorkForm.WritePLC(77, OpName, "50");
|
||
}
|
||
break;
|
||
case "51":
|
||
// AGV 已离开 反馈任务号:5
|
||
MesWorkForm.WritePLC(77, OpName, "5");
|
||
break;
|
||
}
|
||
switch (OpName)
|
||
{
|
||
case "OP10":
|
||
if (DAS_OP10.AGV_Task_change != null)
|
||
{
|
||
DAS_OP10.AGV_Task_change(PLC_AgvTaskNum);
|
||
}
|
||
break;
|
||
case "OP20":
|
||
if (DAS_OP20.AGV_Task_change != null)
|
||
{
|
||
DAS_OP20.AGV_Task_change(PLC_AgvTaskNum);
|
||
}
|
||
break;
|
||
case "OP30":
|
||
if (DAS_OP30.AGV_Task_change != null)
|
||
{
|
||
DAS_OP30.AGV_Task_change(PLC_AgvTaskNum);
|
||
}
|
||
break;
|
||
case "OP40":
|
||
if (DAS_OP40.AGV_Task_change != null)
|
||
{
|
||
DAS_OP40.AGV_Task_change(PLC_AgvTaskNum);
|
||
}
|
||
break;
|
||
case "OP50":
|
||
if (DAS_OP50.AGV_Task_change != null)
|
||
{
|
||
DAS_OP50.AGV_Task_change(PLC_AgvTaskNum);
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 读取泄漏量的数据
|
||
/// </summary>
|
||
public static void ReadQualityData_LeakageRate(string opName)
|
||
{
|
||
string Pressure = MesWorkForm.ReadPLC(57, opName).ToString();
|
||
int partPosition = Convert.ToInt32(MesWorkForm.ReadPLC(54, opName));
|
||
int MeasurePosition = 9;
|
||
string IsOK = "1";
|
||
string NgStr = "";
|
||
//保存质量数
|
||
QualityData_MobyInsert(partPosition, MeasurePosition, opName, Pressure, IsOK, NgStr, out string errMsg);
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 拧紧数据的变化
|
||
/// </summary>
|
||
public static void MeasurePositionChange(string opName, int MeasureStatus)
|
||
{
|
||
int MeasurePosition = Convert.ToInt32(MesWorkForm.ReadPLC(55, opName));
|
||
int partPosition = Convert.ToInt32(MesWorkForm.ReadPLC(54, opName));
|
||
QualityData_MobyUpdate(partPosition, MeasurePosition, opName, MeasureStatus, out string errMsg);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 读压力的数据
|
||
/// </summary>
|
||
public static void ReadQualityData_Pressure(string opName)
|
||
{
|
||
string LeakageRate1 = MesWorkForm.ReadPLC(57, opName).ToString();
|
||
string LeakageRate2 = MesWorkForm.ReadPLC(58, opName).ToString();
|
||
int partPosition = Convert.ToInt32(MesWorkForm.ReadPLC(54, opName));
|
||
int MeasurePosition = 1;
|
||
string IsOK1 = "1";
|
||
string NgStr1 = "";
|
||
//保存质量数
|
||
QualityData_MobyInsert(partPosition, MeasurePosition, opName, LeakageRate1, IsOK1, NgStr1, out string errMsg);
|
||
MeasurePosition = 2;
|
||
string IsOK2 = "1";
|
||
string NgStr2 = "";
|
||
QualityData_MobyInsert(partPosition, MeasurePosition, opName, LeakageRate2, IsOK1, NgStr2, out string errMsg1);
|
||
}
|
||
/// <summary>
|
||
/// 质量数据的保存
|
||
/// </summary>
|
||
/// <param name="PartPosition"></param>
|
||
/// <param name="MeasurePosition"></param>
|
||
/// <param name="opName"></param>
|
||
/// <param name="TagValue"></param>
|
||
/// <param name="IsOK"></param>
|
||
/// <returns></returns>
|
||
public static bool QualityData_MobyUpdate(int PartPosition, int MeasurePosition, string opName, int MeasureStatus, out string errorMsg)
|
||
{
|
||
string procedureName;
|
||
procedureName = "测量数据合格_Moby_更新";
|
||
SqlParameter[] thisParms = new SqlParameter[4];
|
||
thisParms[0] = new System.Data.SqlClient.SqlParameter("@测量状态", MeasureStatus);
|
||
thisParms[1] = new System.Data.SqlClient.SqlParameter("@工位号", opName);
|
||
thisParms[2] = new System.Data.SqlClient.SqlParameter("@测量位置", MeasurePosition);
|
||
thisParms[3] = new System.Data.SqlClient.SqlParameter("@装配位置", PartPosition);
|
||
return ExecuteStoredProcedure(procedureName, MesWorkForm.ConnectionString, ref thisParms, out errorMsg);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 质量数据的保存
|
||
/// </summary>
|
||
/// <param name="PartPosition"></param>
|
||
/// <param name="MeasurePosition"></param>
|
||
/// <param name="opName"></param>
|
||
/// <param name="TagValue"></param>
|
||
/// <param name="IsOK"></param>
|
||
/// <returns></returns>
|
||
public static bool QualityData_MobyInsert(int PartPosition, int MeasurePosition, string opName, string TagValue, string IsOK, string NgStr, out string errorMsg)
|
||
{
|
||
string procedureName;
|
||
procedureName = "测量数据合格_Moby_增加";
|
||
SqlParameter[] thisParms = new SqlParameter[6];
|
||
thisParms[0] = new System.Data.SqlClient.SqlParameter("@TagValue", TagValue);
|
||
thisParms[1] = new System.Data.SqlClient.SqlParameter("@IsOK", IsOK);
|
||
thisParms[2] = new System.Data.SqlClient.SqlParameter("@工位号", opName);
|
||
thisParms[3] = new System.Data.SqlClient.SqlParameter("@测量位置", MeasurePosition);
|
||
thisParms[4] = new System.Data.SqlClient.SqlParameter("@装配位置", PartPosition);
|
||
thisParms[5] = new System.Data.SqlClient.SqlParameter("@不合格原因", NgStr);
|
||
return ExecuteStoredProcedure(procedureName, MesWorkForm.ConnectionString, ref thisParms, out errorMsg);
|
||
}
|
||
/// <summary>
|
||
/// 质量数据的保存
|
||
/// </summary>
|
||
/// <param name="PartPosition"></param>
|
||
/// <param name="MeasurePosition"></param>
|
||
/// <param name="opName"></param>
|
||
/// <param name="TagValue"></param>
|
||
/// <param name="IsOK"></param>
|
||
/// <returns></returns>
|
||
public static bool QualityData_Insert_Final(string opName, out string errorMsg)
|
||
{
|
||
string procedureName;
|
||
procedureName = "测量数据合格_增加";
|
||
SqlParameter[] thisParms = new SqlParameter[1];
|
||
thisParms[0] = new System.Data.SqlClient.SqlParameter("@工位号", opName);
|
||
return ExecuteStoredProcedure(procedureName, MesWorkForm.ConnectionString, ref thisParms, out errorMsg);
|
||
}
|
||
/// <summary>
|
||
/// 判断来料是否满托盘
|
||
/// </summary>
|
||
public static void JudgeMaterialFull(string opName, List<IPC_product_AssemblyInformation> product_AssemblyInformation)
|
||
{
|
||
int partCount = product_AssemblyInformation.Count;
|
||
if (publicCore.partCount == partCount)
|
||
{
|
||
MesWorkForm.WritePLC(78, opName, true);
|
||
}
|
||
else
|
||
{
|
||
MesWorkForm.WritePLC(78, opName, false);
|
||
}
|
||
MesWorkForm.WritePLC(79, opName, false);
|
||
MesWorkForm.WritePLC(80, opName, false);
|
||
MesWorkForm.WritePLC(81, opName, false);
|
||
MesWorkForm.WritePLC(82, opName, false);
|
||
foreach (var item in product_AssemblyInformation)
|
||
{
|
||
if(item.productPosition == 1)
|
||
{
|
||
MesWorkForm.WritePLC(79, opName, true);
|
||
}
|
||
if (item.productPosition == 2)
|
||
{
|
||
MesWorkForm.WritePLC(80, opName, true);
|
||
}
|
||
if (item.productPosition == 3)
|
||
{
|
||
MesWorkForm.WritePLC(81, opName, true);
|
||
}
|
||
if (item.productPosition == 4)
|
||
{
|
||
MesWorkForm.WritePLC(82, opName, true);
|
||
}
|
||
|
||
MesWorkForm.WritePLC(60, opName, false);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 是否允许工作
|
||
/// </summary>
|
||
/// <param name="opName"></param>
|
||
/// <param name="isAllowWork"></param>
|
||
public static void FixedAllow(string opName, object isAllowWork)
|
||
{
|
||
MesWorkForm.WritePLC(85, opName, isAllowWork);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 测量数据_测量信息_初始化查询
|
||
/// </summary>
|
||
/// <param name="PartPosition"></param>
|
||
/// <param name="MeasurePosition"></param>
|
||
/// <param name="opName"></param>
|
||
/// <param name="TagValue"></param>
|
||
/// <param name="IsOK"></param>
|
||
/// <returns></returns>
|
||
public static bool GetQualityInfo_Init(string opName, int PartPosition, out DataTable dt, out string errorMsg)
|
||
{
|
||
string procedureName;
|
||
procedureName = "测量数据_测量信息_初始化查询";
|
||
SqlParameter[] thisParms = new SqlParameter[2];
|
||
thisParms[0] = new System.Data.SqlClient.SqlParameter("@工位号", opName);
|
||
thisParms[1] = new System.Data.SqlClient.SqlParameter("@装配位置", PartPosition);
|
||
return ExecuteStoredProcedure(procedureName, MesWorkForm.ConnectionString, ref thisParms, out dt, out errorMsg);
|
||
}
|
||
|
||
public static bool GetProductInfo_Init(string opName, int PartPosition, out DataTable dt, out string errorMsg)
|
||
{
|
||
string procedureName;
|
||
procedureName = "装配信息_初始化查询";
|
||
SqlParameter[] thisParms = new SqlParameter[2];
|
||
thisParms[0] = new System.Data.SqlClient.SqlParameter("@工位号", opName);
|
||
thisParms[1] = new System.Data.SqlClient.SqlParameter("@装配位置", PartPosition);
|
||
return ExecuteStoredProcedure(procedureName, MesWorkForm.ConnectionString, ref thisParms, out dt, out errorMsg);
|
||
}
|
||
public static void LogInsert(string opName, string logType, string log)
|
||
{
|
||
string procedureName;
|
||
procedureName = "系统_操作日志_新增";
|
||
SqlParameter[] thisParms = new SqlParameter[5];
|
||
thisParms[0] = new System.Data.SqlClient.SqlParameter("@工位号", opName);
|
||
thisParms[1] = new System.Data.SqlClient.SqlParameter("@日志类型", logType);
|
||
thisParms[2] = new System.Data.SqlClient.SqlParameter("@日志内容", log);
|
||
thisParms[3] = new System.Data.SqlClient.SqlParameter("@操作日期", DateTime.Now.ToString("yyyy-MM-dd"));
|
||
thisParms[4] = new System.Data.SqlClient.SqlParameter("@操作时间", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
||
ExecuteStoredProcedure(procedureName, MesWorkForm.ConnectionString, ref thisParms, out string errorMsg);
|
||
}
|
||
#region 数据库操作
|
||
/// <summary>
|
||
/// 提供通用的调用存储过程的方法(需要返回查询的记录集的调用)
|
||
/// </summary>
|
||
/// <param name="procedureName">存储过程名称</param>
|
||
/// <param name="connectionString">连库字符串</param>
|
||
/// <param name="sqlParameters">存储过程参数数组</param>
|
||
/// <param name="ds">存储过程里面返回的记录集</param>
|
||
/// <param name="errorMessage">错误信息</param>
|
||
/// <returns>布尔值,true表示该执行成功,false表示执行失败</returns>
|
||
public static bool ExecuteStoredProcedure(string procedureName, string connectionString, ref SqlParameter[] sqlParameters, out DataSet ds, out string errorMessage)
|
||
{
|
||
bool result = false;
|
||
errorMessage = "";
|
||
ds = new DataSet();
|
||
if (connectionString.Length < 1) return false;
|
||
using (SqlConnection conn = new SqlConnection(connectionString))
|
||
{
|
||
try
|
||
{
|
||
//if (!SqlServerConnectionStatus) return false;
|
||
conn.Open();
|
||
using (SqlDataAdapter dsCommand = new SqlDataAdapter())
|
||
{
|
||
dsCommand.SelectCommand = new SqlCommand(procedureName, conn);
|
||
dsCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
|
||
for (int i = 0; i < sqlParameters.Length; i++)
|
||
{
|
||
dsCommand.SelectCommand.Parameters.Add(sqlParameters[i]);
|
||
}
|
||
dsCommand.Fill(ds);
|
||
}
|
||
// SqlServerConnectionStatus = true;
|
||
result = true;
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
errorMessage = e.ToString();
|
||
// TestConnection();
|
||
//ApplicationLog.WriteLog(e, "\r\nExecuteStoredProcedure\r\n存储过程:\r\n" + procedureName + "\r\n连接字符串:\r\n" + connectionString);
|
||
}
|
||
finally
|
||
{
|
||
if (conn.State == ConnectionState.Open)
|
||
conn.Close();
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
/// <summary>
|
||
/// 提供通用的调用存储过程的方法(需要返回查询的记录集的调用)
|
||
/// </summary>
|
||
/// <param name="procedureName">存储过程名称</param>
|
||
/// <param name="connectionString">连库字符串</param>
|
||
/// <param name="sqlParameters">存储过程参数数组</param>
|
||
/// <param name="dt">存储过程里面返回的记录表</param>
|
||
/// <param name="errorMessage">错误信息</param>
|
||
/// <returns>布尔值,true表示该执行成功,false表示执行失败</returns>
|
||
public static bool ExecuteStoredProcedure(string procedureName, string connectionString, ref SqlParameter[] sqlParameters, out DataTable dt, out string errorMessage)
|
||
{
|
||
bool result = false;
|
||
errorMessage = "";
|
||
dt = new DataTable();
|
||
DataSet ds = new DataSet();
|
||
if (connectionString.Length < 1) return false;
|
||
using (SqlConnection conn = new SqlConnection(connectionString))
|
||
{
|
||
try
|
||
{
|
||
//if (!SqlServerConnectionStatus) return false;
|
||
conn.Open();
|
||
using (SqlDataAdapter dsCommand = new SqlDataAdapter())
|
||
{
|
||
dsCommand.SelectCommand = new SqlCommand(procedureName, conn);
|
||
dsCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
|
||
for (int i = 0; i < sqlParameters.Length; i++)
|
||
{
|
||
dsCommand.SelectCommand.Parameters.Add(sqlParameters[i]);
|
||
}
|
||
dsCommand.Fill(ds);
|
||
}
|
||
if (ds.Tables.Count > 0)
|
||
{
|
||
dt = ds.Tables[0];
|
||
}
|
||
result = true;
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
errorMessage = e.ToString();
|
||
// TestConnection();
|
||
//ApplicationLog.WriteLog(e, "\r\nExecuteStoredProcedure\r\n存储过程:\r\n" + procedureName + "\r\n连接字符串:\r\n" + connectionString);
|
||
}
|
||
finally
|
||
{
|
||
if (conn.State == ConnectionState.Open)
|
||
conn.Close();
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
/// <summary>
|
||
/// 提供通用的调用存储过程的方法(需要返回查询的记录集的调用)
|
||
/// </summary>
|
||
/// <param name="procedureName">存储过程名称</param>
|
||
/// <param name="connectionString">连库字符串</param>
|
||
/// <param name="sqlParameters">存储过程参数数组</param>
|
||
/// <param name="dt">存储过程里面返回的记录表</param>
|
||
/// <param name="errorMessage">错误信息</param>
|
||
/// <returns>布尔值,true表示该执行成功,false表示执行失败</returns>
|
||
public static bool ExecuteStoredProcedure(string procedureName, string connectionString, ref SqlParameter[] sqlParameters, out string errorMessage)
|
||
{
|
||
bool result = false;
|
||
errorMessage = "";
|
||
DataSet ds = new DataSet();
|
||
if (connectionString.Length < 1) return false;
|
||
using (SqlConnection conn = new SqlConnection(connectionString))
|
||
{
|
||
try
|
||
{
|
||
//if (!SqlServerConnectionStatus) return false;
|
||
conn.Open();
|
||
using (SqlDataAdapter dsCommand = new SqlDataAdapter())
|
||
{
|
||
dsCommand.SelectCommand = new SqlCommand(procedureName, conn);
|
||
dsCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
|
||
for (int i = 0; i < sqlParameters.Length; i++)
|
||
{
|
||
dsCommand.SelectCommand.Parameters.Add(sqlParameters[i]);
|
||
}
|
||
dsCommand.Fill(ds);
|
||
}
|
||
result = true;
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
errorMessage = e.ToString();
|
||
// TestConnection();
|
||
//ApplicationLog.WriteLog(e, "\r\nExecuteStoredProcedure\r\n存储过程:\r\n" + procedureName + "\r\n连接字符串:\r\n" + connectionString);
|
||
}
|
||
finally
|
||
{
|
||
if (conn.State == ConnectionState.Open)
|
||
conn.Close();
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
#endregion
|
||
}
|
||
|
||
|
||
|
||
}
|