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 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 SetData(StringBuilder strSql) { var headList = new List(); 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 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 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 SetInvData(StringBuilder strSql) { var headList = new List(); 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 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 } }