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.

563 lines
26 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Data;
using System.Collections.Generic;
using System.Text;
using DSWeb.MvcShipping.Models.CurrencyExchange;
using Microsoft.Practices.EnterpriseLibrary.Data;
using DSWeb.Areas.CommMng.Models;
using HcUtility.Comm;
namespace DSWeb.MvcShipping.DAL.MsCurrencyExchange
{
public class MsCurrencyExchangeDAL
{
#region Inquery DataList
static public List<CurrencyExchange> GetDataList(string strCondition, string companyid, string sort = null)
{
var strSql = new StringBuilder();
strSql.Append("SELECT GID,CURRENCYID,VALUE,[TYPE],CRVALUE,[STARTTIME],[ENDTIME],[CREATEUSER]");
strSql.Append(",[CREATETIME],[MODIFIEDUSER],[MODIFIEDTIME],[COMPANYID],LOCALCURR");
strSql.Append(",(select ShowName from [user] where GID=currency_exchange.CREATEUSER) as CREATEUSERREF");
strSql.Append(",(select CODENAME from [code_currency] where GID=currency_exchange.CURRENCYID) as CURRENCY");
strSql.Append(" from currency_exchange where COMPANYID='" + companyid + "'");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition);
}
var sortstring = DatasetSort.Getsortstring(sort);
if (!string.IsNullOrEmpty(sortstring))
{
strSql.Append(" order by " + sortstring);
}
else {
strSql.Append(" order by CURRENCYID,STARTTIME");
}
return SetData(strSql);
}
static public CurrencyExchange GetData(string condition, string companyid)
{
CurrencyExchange data = null;
var list = GetDataList(condition,companyid);
if (list.Count > 0)
data = list[0];
if (data == null)
{
data = new CurrencyExchange();
}
return data;
}
private static List<CurrencyExchange> SetData(StringBuilder strSql)
{
var headList = new List<CurrencyExchange>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
CurrencyExchange data = new CurrencyExchange();
#region Set DB data to Object
data.GID = Convert.ToString(reader["GID"]);
data.CURRENCYID = Convert.ToString(reader["CURRENCYID"]);
data.CURRENCY = Convert.ToString(reader["CURRENCY"]);
if (reader["VALUE"] != DBNull.Value)
data.VALUE = Convert.ToString(reader["VALUE"]);
if (reader["CRVALUE"] != DBNull.Value)
data.CRVALUE = Convert.ToString(reader["CRVALUE"]);
data.TYPE = Convert.ToString(reader["TYPE"]);
if (reader["STARTTIME"] != DBNull.Value)
data.STARTTIME = Convert.ToDateTime(reader["STARTTIME"]).ToString("yyyy-MM-dd");
if (reader["ENDTIME"] != DBNull.Value)
data.ENDTIME = Convert.ToDateTime(reader["ENDTIME"]).ToString("yyyy-MM-dd");
data.CREATEUSER = Convert.ToString(reader["CREATEUSER"]);
data.CREATEUSERREF = Convert.ToString(reader["CREATEUSERREF"]);
if (reader["CREATETIME"] != DBNull.Value)
data.CREATETIME = Convert.ToDateTime(reader["CREATETIME"]).ToString("yyyy-MM-dd HH:mm:ss");
data.COMPANYID = Convert.ToString(reader["COMPANYID"]);
data.LOCALCURR = Convert.ToString(reader["LOCALCURR"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
public static DBResult SaveDetail(List<CurrencyExchange> bodyList, string companyid,string userid,string LOCALCURR)
{
var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmdInsert =
db.GetSqlStringCommand(
@"insert into currency_exchange (GID,CURRENCYID,VALUE,CRVALUE,TYPE,STARTTIME,ENDTIME,COMPANYID,CREATEUSER,CREATETIME,LOCALCURR)
values (@GID,@CURRENCYID,@VALUE,@CRVALUE,@TYPE,@STARTTIME,@ENDTIME,@COMPANYID,@CREATEUSER,@CREATETIME,@LOCALCURR) ");
var cmdUpdate =
db.GetSqlStringCommand(
@"update currency_exchange set CURRENCYID=@CURRENCYID,VALUE=@VALUE,CRVALUE=@CRVALUE,TYPE=@TYPE,STARTTIME=@STARTTIME,ENDTIME=@ENDTIME,MODIFIEDUSER=@MODIFIEDUSER,MODIFIEDTIME=@MODIFIEDTIME,LOCALCURR=@LOCALCURR where GID=@GID ");
if (bodyList != null)
{
foreach (var enumValue in bodyList)
{
if (enumValue.STARTTIME == "") enumValue.STARTTIME = null;
else
{
enumValue.STARTTIME = Convert.ToDateTime(enumValue.STARTTIME.Replace("GMT+0800 (中国标准时间)", "")).ToString("yyyy-MM-dd");
}
if (enumValue.ENDTIME == "") enumValue.ENDTIME = null;
else
{
enumValue.ENDTIME = Convert.ToDateTime(enumValue.ENDTIME.Replace("GMT+0800 (中国标准时间)", "")).ToString("yyyy-MM-dd");
}
if (enumValue.GID == "*" || enumValue.GID == "")
{
cmdInsert.Parameters.Clear();
db.AddInParameter(cmdInsert, "@GID", DbType.String, Guid.NewGuid().ToString());
db.AddInParameter(cmdInsert, "@CURRENCYID", DbType.String, enumValue.CURRENCYID);
db.AddInParameter(cmdInsert, "@VALUE", DbType.String, enumValue.VALUE);
db.AddInParameter(cmdInsert, "@CRVALUE", DbType.String, enumValue.CRVALUE);
db.AddInParameter(cmdInsert, "@TYPE", DbType.String, enumValue.TYPE);
db.AddInParameter(cmdInsert, "@STARTTIME", DbType.String, enumValue.STARTTIME);
db.AddInParameter(cmdInsert, "@ENDTIME", DbType.String, enumValue.ENDTIME);
db.AddInParameter(cmdInsert, "@CREATETIME", DbType.String, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
db.AddInParameter(cmdInsert, "@CREATEUSER", DbType.String, userid);
db.AddInParameter(cmdInsert, "@COMPANYID", DbType.String, companyid);
db.AddInParameter(cmdInsert, "@LOCALCURR", DbType.String, LOCALCURR);
db.ExecuteNonQuery(cmdInsert, tran);
}
else
{
cmdUpdate.Parameters.Clear();
db.AddInParameter(cmdUpdate, "@CURRENCYID", DbType.String, enumValue.CURRENCYID);
db.AddInParameter(cmdUpdate, "@VALUE", DbType.String, enumValue.VALUE);
db.AddInParameter(cmdUpdate, "@CRVALUE", DbType.String, enumValue.CRVALUE);
db.AddInParameter(cmdUpdate, "@TYPE", DbType.String, enumValue.TYPE);
db.AddInParameter(cmdUpdate, "@STARTTIME", DbType.String, enumValue.STARTTIME);
db.AddInParameter(cmdUpdate, "@ENDTIME", DbType.String, enumValue.ENDTIME);
db.AddInParameter(cmdUpdate, "@MODIFIEDTIME", DbType.String, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
db.AddInParameter(cmdUpdate, "@MODIFIEDUSER", DbType.String, userid);
db.AddInParameter(cmdUpdate, "@GID", DbType.String, enumValue.GID);
db.AddInParameter(cmdUpdate, "@LOCALCURR", DbType.String, LOCALCURR);
db.ExecuteNonQuery(cmdUpdate, tran);
}
}
}
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "保存出现错误,请重试或联系系统管理员";
return result;
}
}
result.Success = true;
result.Message = "保存成功" + result.Message;
return result;
}
public static DBResult UpBsExchange(CurrencyExchange bodyList, string type,string userid,string companyid)
{
var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var sqlstr = " CORPID='" + companyid + "' ";
if (type == "业务日期")
{
var startstr = Convert.ToDateTime(bodyList.STARTTIME.Replace("GMT+0800 (中国标准时间)", "")).ToString("yyyy-MM-dd");
var endstr = Convert.ToDateTime(bodyList.ENDTIME.Replace("GMT+0800 (中国标准时间)", "")).ToString("yyyy-MM-dd");
sqlstr =sqlstr+ " AND ETD>='" + startstr + "' AND ETD<='" + endstr + "'";
}
else if (type == "更改单建单日期")
{
var startstr = Convert.ToDateTime(bodyList.STARTTIME.Replace("GMT+0800 (中国标准时间)", "")).ToString("yyyy-MM-dd");
var endstr = Convert.ToDateTime(bodyList.ENDTIME.Replace("GMT+0800 (中国标准时间)", "")).ToString("yyyy-MM-dd");
sqlstr =sqlstr+ " AND CREATETIME>='" + startstr + "' AND CREATETIME<='" + endstr + "'";
}
else if (type == "更改单业务日期")
{
var startstr = Convert.ToDateTime(bodyList.STARTTIME.Replace("GMT+0800 (中国标准时间)", "")).ToString("yyyy-MM-dd");
var endstr = Convert.ToDateTime(bodyList.ENDTIME.Replace("GMT+0800 (中国标准时间)", "")).ToString("yyyy-MM-dd");
sqlstr = sqlstr + " AND ETD>='" + startstr + "' AND ETD<='" + endstr + "'";
}
else
{
var startstr = Convert.ToDateTime(bodyList.STARTTIME.Replace("GMT+0800 (中国标准时间)", "")).ToString("yyyy-MM");
var endstr = Convert.ToDateTime(bodyList.ENDTIME.Replace("GMT+0800 (中国标准时间)", "")).ToString("yyyy-MM");
sqlstr =sqlstr+ " AND ACCDATE>='" + startstr + "' AND ACCDATE<='" + endstr + "'";
}
var cmdUpdate =
db.GetSqlStringCommand(
@"update ch_fee set EXCHANGERATE=@EXCHANGERATE where CURRENCY=@CURRENCY and feetype=1 and BSNO IN (SELECT BSNO FROM V_OP_BILL WHERE FEESTATUS=0 AND OPTYPE='普通货' and " + sqlstr + ")");
var cmdUpdateCr =
db.GetSqlStringCommand(
@"update ch_fee set EXCHANGERATE=@EXCHANGERATE where CURRENCY=@CURRENCY and feetype=2 and BSNO IN (SELECT BSNO FROM V_OP_BILL WHERE FEESTATUS=0 AND OPTYPE='普通货' and " + sqlstr + ")");
if (type == "更改单")
{
cmdUpdate =
db.GetSqlStringCommand(
@"update ch_fee set EXCHANGERATE=@EXCHANGERATE where CURRENCY=@CURRENCY and feetype=1 and BSNO IN (SELECT BSNO FROM V_OP_BILL WHERE FEESTATUS=0 AND OPTYPE='更改单' and " + sqlstr + ")");
cmdUpdateCr =
db.GetSqlStringCommand(
@"update ch_fee set EXCHANGERATE=@EXCHANGERATE where CURRENCY=@CURRENCY and feetype=2 and BSNO IN (SELECT BSNO FROM V_OP_BILL WHERE FEESTATUS=0 AND OPTYPE='更改单' and " + sqlstr + ")");
}
else if (type == "更改单建单日期" || type == "更改单业务日期")
{
cmdUpdate =
db.GetSqlStringCommand(
@"update ch_fee set EXCHANGERATE=@EXCHANGERATE where CURRENCY=@CURRENCY and feetype=1 and BSNO IN (SELECT BSNO FROM V_OP_BILL WHERE FEESTATUS=0 AND OPTYPE='更改单' and " + sqlstr + ")");
cmdUpdateCr =
db.GetSqlStringCommand(
@"update ch_fee set EXCHANGERATE=@EXCHANGERATE where CURRENCY=@CURRENCY and feetype=2 and BSNO IN (SELECT BSNO FROM V_OP_BILL WHERE FEESTATUS=0 AND OPTYPE='更改单' and " + sqlstr + ")");
}
var cmdInsertlog =
db.GetSqlStringCommand(
@"insert into sys_log (GID,NAME,LOGTYPE,LOGTIME,LOGCONTENT,CREATEUSER)
values (@GID,@NAME,@LOGTYPE,@LOGTIME,@LOGCONTENT,@CREATEUSER) ");
cmdUpdate.Parameters.Clear();
db.AddInParameter(cmdUpdate, "@CURRENCY", DbType.String, bodyList.CURRENCY);
db.AddInParameter(cmdUpdate, "@EXCHANGERATE", DbType.String, bodyList.VALUE);
db.ExecuteNonQuery(cmdUpdate, tran);
cmdUpdateCr.Parameters.Clear();
db.AddInParameter(cmdUpdateCr, "@CURRENCY", DbType.String, bodyList.CURRENCY);
db.AddInParameter(cmdUpdateCr, "@EXCHANGERATE", DbType.String, bodyList.CRVALUE);
db.ExecuteNonQuery(cmdUpdateCr, tran);
cmdInsertlog.Parameters.Clear();
db.AddInParameter(cmdInsertlog, "@GID", DbType.String, Guid.NewGuid().ToString());
db.AddInParameter(cmdInsertlog, "@NAME", DbType.String,"同步本期汇率");
db.AddInParameter(cmdInsertlog, "@LOGTYPE", DbType.String, "UPDATE 更新操作");
db.AddInParameter(cmdInsertlog, "@LOGTIME", DbType.String, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
db.AddInParameter(cmdInsertlog, "@LOGCONTENT", DbType.String, "按照" + type + "更新费用汇率,更新条件:" + sqlstr+";应收汇率更新为:"+bodyList.VALUE.ToString()+";应付汇率更新为:"+bodyList.CRVALUE.ToString());
db.AddInParameter(cmdInsertlog, "@CREATEUSER", DbType.String, userid);
db.ExecuteNonQuery(cmdInsertlog, tran);
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "保存出现错误,请重试或联系系统管理员";
return result;
}
}
result.Success = true;
result.Message = "保存成功" + result.Message;
return result;
}
#region Inquery INV DataList
static public List<CurrencyExchange> GetDataInvList(string strCondition, string companyid, string sort = null)
{
var strSql = new StringBuilder();
strSql.Append("SELECT GID,CURRENCYID,VALUE,[TYPE],[STARTTIME],[ENDTIME],[CREATEUSER]");
strSql.Append(",[CREATETIME],[MODIFIEDUSER],[MODIFIEDTIME],[COMPANYID]");
strSql.Append(",(select ShowName from [user] where GID=currency_exchange_inv.CREATEUSER) as CREATEUSERREF");
strSql.Append(",(select CODENAME from [code_currency] where GID=currency_exchange_inv.CURRENCYID) as CURRENCY");
//2021-1-15改为按当前用户注册公司查询而不是代理公司
strSql.Append(" from currency_exchange_inv where compid='" + companyid + "'");
//strSql.Append(" from currency_exchange_inv where COMPANYID='" + companyid + "'");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition);
}
var sortstring = DatasetSort.Getsortstring(sort);
if (!string.IsNullOrEmpty(sortstring))
{
strSql.Append(" order by " + sortstring);
}
else
{
strSql.Append(" order by CURRENCYID,STARTTIME");
}
return SetInvData(strSql);
}
static public CurrencyExchange GetInvData(string condition, string companyid)
{
CurrencyExchange data = null;
var list = GetDataInvList(condition, companyid);
if (list.Count > 0)
data = list[0];
if (data == null)
{
data = new CurrencyExchange();
}
return data;
}
private static List<CurrencyExchange> SetInvData(StringBuilder strSql)
{
var headList = new List<CurrencyExchange>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
CurrencyExchange data = new CurrencyExchange();
#region Set DB data to Object
data.GID = Convert.ToString(reader["GID"]);
data.CURRENCYID = Convert.ToString(reader["CURRENCYID"]);
data.CURRENCY = Convert.ToString(reader["CURRENCY"]);
if (reader["VALUE"] != DBNull.Value)
data.VALUE = Convert.ToString(reader["VALUE"]);
data.TYPE = Convert.ToString(reader["TYPE"]);
if (reader["STARTTIME"] != DBNull.Value)
data.STARTTIME = Convert.ToDateTime(reader["STARTTIME"]).ToString("yyyy-MM-dd");
if (reader["ENDTIME"] != DBNull.Value)
data.ENDTIME = Convert.ToDateTime(reader["ENDTIME"]).ToString("yyyy-MM-dd");
data.CREATEUSER = Convert.ToString(reader["CREATEUSER"]);
data.CREATEUSERREF = Convert.ToString(reader["CREATEUSERREF"]);
if (reader["CREATETIME"] != DBNull.Value)
data.CREATETIME = Convert.ToDateTime(reader["CREATETIME"]).ToString("yyyy-MM-dd HH:mm:ss");
data.COMPANYID = Convert.ToString(reader["COMPANYID"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
public static DBResult DeleteInv(CurrencyExchange headdata)
{
var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmdDelete =
db.GetSqlStringCommand(
@"delete from currency_exchange_inv where GID=@GID ");
cmdDelete.Parameters.Clear();
db.AddInParameter(cmdDelete, "@GID", DbType.String, headdata.GID);
db.ExecuteNonQuery(cmdDelete, tran);
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "删除出现错误,请重试或联系系统管理员";
return result;
}
}
result.Success = true;
result.Message = "删除成功" + result.Message;
return result;
}
#endregion
public static DBResult SaveInvDetail(List<CurrencyExchange> bodyList, string companyid, string userid)
{
var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
//查询用户公司ID
var dbCompId = db.ExecuteScalar(CommandType.Text, $"select compid from [user] where gid='{userid}'");
var compId = string.Empty;
if(dbCompId!=null&&dbCompId!=DBNull.Value)
{
compId = dbCompId.ToString();
}
try
{
var cmdInsert =
db.GetSqlStringCommand(
@"insert into currency_exchange_inv (GID,CURRENCYID,VALUE,TYPE,STARTTIME,ENDTIME,COMPANYID,CREATEUSER,CREATETIME,CompId)
values (@GID,@CURRENCYID,@VALUE,@TYPE,@STARTTIME,@ENDTIME,@COMPANYID,@CREATEUSER,@CREATETIME,@CompId) ");
var cmdUpdate =
db.GetSqlStringCommand(
@"update currency_exchange_inv set CURRENCYID=@CURRENCYID,VALUE=@VALUE,TYPE=@TYPE,STARTTIME=@STARTTIME,ENDTIME=@ENDTIME,MODIFIEDUSER=@MODIFIEDUSER,MODIFIEDTIME=@MODIFIEDTIME,CompId=@CompId where GID=@GID ");
if (bodyList != null)
{
foreach (var enumValue in bodyList)
{
if (enumValue.STARTTIME == "") enumValue.STARTTIME = null;
else
{
enumValue.STARTTIME = Convert.ToDateTime(enumValue.STARTTIME.Replace("GMT+0800 (中国标准时间)", "")).ToString("yyyy-MM-dd");
}
if (enumValue.ENDTIME == "") enumValue.ENDTIME = null;
else
{
enumValue.ENDTIME = Convert.ToDateTime(enumValue.ENDTIME.Replace("GMT+0800 (中国标准时间)", "")).ToString("yyyy-MM-dd");
}
if (enumValue.GID == "*" || enumValue.GID == "")
{
cmdInsert.Parameters.Clear();
db.AddInParameter(cmdInsert, "@GID", DbType.String, Guid.NewGuid().ToString());
db.AddInParameter(cmdInsert, "@CURRENCYID", DbType.String, enumValue.CURRENCYID);
db.AddInParameter(cmdInsert, "@VALUE", DbType.String, enumValue.VALUE);
db.AddInParameter(cmdInsert, "@TYPE", DbType.String, enumValue.TYPE);
db.AddInParameter(cmdInsert, "@STARTTIME", DbType.String, enumValue.STARTTIME);
db.AddInParameter(cmdInsert, "@ENDTIME", DbType.String, enumValue.ENDTIME);
db.AddInParameter(cmdInsert, "@CREATETIME", DbType.String, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
db.AddInParameter(cmdInsert, "@CREATEUSER", DbType.String, userid);
db.AddInParameter(cmdInsert, "@COMPANYID", DbType.String, companyid);
db.AddInParameter(cmdInsert, "@CompId", DbType.String, compId);
db.ExecuteNonQuery(cmdInsert, tran);
}
else
{
cmdUpdate.Parameters.Clear();
db.AddInParameter(cmdUpdate, "@CURRENCYID", DbType.String, enumValue.CURRENCYID);
db.AddInParameter(cmdUpdate, "@VALUE", DbType.String, enumValue.VALUE);
db.AddInParameter(cmdUpdate, "@TYPE", DbType.String, enumValue.TYPE);
db.AddInParameter(cmdUpdate, "@STARTTIME", DbType.String, enumValue.STARTTIME);
db.AddInParameter(cmdUpdate, "@ENDTIME", DbType.String, enumValue.ENDTIME);
db.AddInParameter(cmdUpdate, "@MODIFIEDTIME", DbType.String, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
db.AddInParameter(cmdUpdate, "@MODIFIEDUSER", DbType.String, userid);
db.AddInParameter(cmdUpdate, "@GID", DbType.String, enumValue.GID);
db.AddInParameter(cmdUpdate, "@CompId", DbType.String, compId);
db.ExecuteNonQuery(cmdUpdate, tran);
}
}
}
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "保存出现错误,请重试或联系系统管理员";
return result;
}
}
result.Success = true;
result.Message = "保存成功" + result.Message;
return result;
}
#region 参照部分
#endregion
}
}