You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

229 lines
9.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.Entity.Migrations;
using System.Diagnostics;
using System.Linq;
using System.ServiceModel.Configuration;
using System.Text;
using System.Web;
using DSWeb.Areas.CommMng.Models;
using DSWeb.Common.DB;
using DSWeb.EntityDA;
using DSWeb.MvcShipping.Comm.Cookie;
using DSWeb.MvcShipping.Helper;
using HcUtility.Comm;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Newtonsoft.Json.Linq;
namespace DSWeb.Areas.CommMng.DAL
{
public class PubSysDAL
{
public static List<SysEnumValue> GetEnumValueList(decimal enumTypeId)
{
return GetEnumValueList(enumTypeId, String.Empty);
}
public static List<SysEnumValue> GetEnumValueList(decimal enumTypeId, string sCondition)
{
var strSql = new StringBuilder();
strSql.Append("Select LangId,EnumTypeId,EnumValueId,EnumValueName,EnumValueName_2,IsDefault,DispIndex,VerNo ");
strSql.Append(" from tSysEnumValue ");
strSql.Append(" where EnumTypeId=" + enumTypeId);
if (sCondition != String.Empty)
{
strSql.Append(" and " + sCondition);
}
strSql.Append(" order by EnumTypeID,dispindex,EnumValueID");
Database db = DatabaseFactory.CreateDatabase();
var evList = new List<SysEnumValue>();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
var evData = new SysEnumValue();
evData.LangId = Convert.ToDecimal(reader["LangId"]);
evData.EnumTypeId = Convert.ToDecimal(reader["EnumTypeId"]);
evData.EnumValueId = Convert.ToString(reader["EnumValueId"]);
evData.EnumValueName = Convert.ToString(reader["EnumValueName"]);
evData.EnumValueName_2 = Convert.ToString(reader["EnumValueName_2"]);
evData.IsDefault = Convert.ToString(reader["IsDefault"]);
evData.DispIndex = Convert.ToDecimal(reader["DispIndex"]);
evData.VerNo = Convert.ToString(reader["VerNo"]);
evData.EnumValueAndName = evData.EnumValueId + "-" + evData.EnumValueName;
evList.Add(evData);
}
reader.Close();
}
return evList;
}
public static string GetBillNo(string billType)
{
var cookies = new Cookies();
var orgCode = cookies.getCookie(CookieConstant.OrgCode);//登录组织
Database db = DatabaseFactory.CreateDatabase();
var cmd = db.GetStoredProcCommand("sSysGetBillNo");
db.AddInParameter(cmd, "@ps_BillType", DbType.String, billType);
db.AddInParameter(cmd, "@ps_OrgCode", DbType.String, orgCode);
db.AddOutParameter(cmd, "@ps_BillNo", DbType.String, 20);
db.AddInParameter(cmd, "@ps_RefBillNo", DbType.String, null);
db.ExecuteNonQuery(cmd);
return Convert.ToString(db.GetParameterValue(cmd, "@ps_BillNo"));
}
public static DBResult Account(string billno, string ywtype,
string userId, string userCode, string userName)
{
Database db = DatabaseFactory.CreateDatabase();
var cmd = db.GetStoredProcCommand("sMsSysAccount");
db.AddInParameter(cmd, "@ps_BillNo", DbType.String, billno);
db.AddInParameter(cmd, "@ps_YwType", DbType.String, ywtype);
db.AddInParameter(cmd, "@ps_UserId", DbType.String, userId);
db.AddInParameter(cmd, "@ps_UserCode", DbType.String, userCode);
db.AddInParameter(cmd, "@ps_UserName", DbType.String, userName);
db.AddOutParameter(cmd, "@pi_Result", DbType.Int32, 20);
db.AddOutParameter(cmd, "@ps_Message", DbType.String, 2000);
db.ExecuteNonQuery(cmd);
var result = new DBResult();
result.Success = Convert.ToInt32(db.GetParameterValue(cmd, "@pi_Result")) == 1;
result.Message = Convert.ToString(db.GetParameterValue(cmd, "@ps_Message"));
return result;
}
#region 调用存储过程返回数据集
/// <summary>
/// 根据存储过程返回DataSet
/// </summary>
/// <param name="prcName">存储过程名称</param>
/// <param name="dbparams">参数列表(不包含存储过程的返回游标)</param>
/// <param name="curnames">存储过程的返回游标名称列表</param>
/// <returns>DataSet</returns>
public static DBDataSetResult GetMsSqlPrcDataSet(string prcName, List<CustomDbParamter> dbparams,
List<string> curnames)
{
var dbrptResult = new DBDataSetResult();
dbrptResult.Success = false;
Debug.Assert(curnames != null, "参数curnames不能为空");
if (curnames.Count == 0)
{
dbrptResult.Message = "参数curnames长度不能为0";
}
int iResult = -1;
string sMessage = String.Empty;
var dataSet = new DataSet();
Database db = DatabaseFactory.CreateDatabase();
using (IDbConnection idbconn = db.CreateConnection())
{
using (DbCommand cmd = db.GetStoredProcCommand(prcName))
{
cmd.CommandTimeout = 120000; //要加这一句
idbconn.Open();
try
{
IDbTransaction idbtran = idbconn.BeginTransaction();
try
{
cmd.Transaction = (DbTransaction)idbtran;
foreach (DbParameter param in dbparams)
{
switch (param.Direction)
{
case ParameterDirection.Input:
db.AddInParameter(cmd, param.ParameterName, param.DbType, param.Value);
break;
case ParameterDirection.Output:
db.AddOutParameter(cmd, param.ParameterName, param.DbType, param.Size);
break;
case ParameterDirection.InputOutput:
case ParameterDirection.ReturnValue:
db.AddParameter(cmd, param.ParameterName, param.DbType, param.Direction,
param.SourceColumn, DataRowVersion.Default, param.Value);
break;
}
}
db.AddOutParameter(cmd, "@pi_result", DbType.Int32, 32);
db.AddOutParameter(cmd, "@ps_Message", DbType.String, 2000);
db.LoadDataSet(cmd, dataSet, curnames.ToArray(), (DbTransaction)idbtran);
iResult = Convert.ToInt32(db.GetParameterValue(cmd, "@pi_Result"));
sMessage = Convert.ToString(db.GetParameterValue(cmd, "@ps_Message"));
idbtran.Commit();
}
catch (Exception e)
{
idbtran.Rollback();
iResult = -1; // Convert.ToInt32(db.GetParameterValue(cmd, "pi_Result"));
sMessage = e.Message;//sMessage = Convert.ToString(db.GetParameterValue(cmd, "ps_Message"));
}
}
finally
{
idbconn.Close();
}
}
}
if (iResult == 1)
{
dbrptResult.Success = true;
dbrptResult.Message = "查询成功!";
dbrptResult.DataSet = dataSet;
}
else
{
dbrptResult.Success = false;
dbrptResult.Message = "查询失败:" + sMessage;
dbrptResult.Success = false;
}
return dbrptResult;
}
/// <summary>
/// 根据存储过程返回DataTable
/// </summary>
/// <param name="prcName">存储过程名称</param>
/// <param name="dbparams">参数列表(不包含存储过程的返回游标)</param>
/// <returns>DataSet</returns>
public static DBDataSetResult GetMsSqlPrcDataSet(string prcName, List<CustomDbParamter> dbparams, string curName)
{
var curnames = new List<string>();
curnames.Add(curName);
return GetMsSqlPrcDataSet(prcName, dbparams, curnames);
}
#endregion
public static string getGuid()
{
Guid guid = Guid.NewGuid();
return guid.ToString().Replace("-", "").ToUpper();
}
#region 直接执行sql命令
static public int ExecSql ( string StrSql )
{
Database db = DatabaseFactory.CreateDatabase();
var _count = db.ExecuteNonQuery(CommandType.Text, StrSql);
return _count;
}
#endregion
}
}