using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using CoreFS.CA06; using DbHelp = Core.StlMes.Client.Sale.DbHelp; namespace Core.StlMes.Client.Sale.SaleFundMgt.FundDAL.FundPactAccountDAL { /// /// 合同账户和二级账户关系管理类 /// public class FundPactAccountRelationDAL:BaseDAL.BaseDAL { public FundPactAccountRelationDAL(OpeBase ob) : base(ob) { } private const string SQL_QUERY = @" select relation, pact_rea_name, pact_rea_name_show, secondaccount, priority, importtime, importor, isvalid, deleteor, deletetime, lastupdatetime from sel_fund_acct_relation where 1 = 1 {0}"; private const string SQL_INSERT = @"insert into sel_fund_acct_relation( relation, pact_rea_name, secondaccount, priority, importtime, importor, isvalid, deleteor, deletetime, lastupdatetime,pact_rea_name_show) values('{0}','{1}','{2}','{3}',sysdate,'{4}','{5}','{6}',sysdate,sysdate,'{7}') "; private string GetSqlCondition(string pact_rea_name) { string sqlCondition = string.Format(" and pact_rea_name = '{0}' ",pact_rea_name); return sqlCondition; } /// /// 返回数据集 /// /// /// public DataSet GetSelFundPactAccountRelation(string sqlCondition) { string sqlStr = string.Format(SQL_QUERY, sqlCondition); DataSet ds = base.ExecuteReaderForSaleFund(sqlStr); // 设置标题 base.SetDataSetCaption(ref ds, base.GetColumnNameAndCaption()); return ds; } /// /// 根据规则返回数据集,如产线名称4001HB1等 /// /// /// public DataSet GetSelFundPactAccountRelationByRelName(string pact_rea_name) { return GetSelFundPactAccountRelation(GetSqlCondition(pact_rea_name)); } public List GetSelFundPactAccountRelationModel(string pact_rea_name) { DataSet ds = GetSelFundPactAccountRelationByRelName(pact_rea_name); if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) return null; List list = Model.SEL_FUND_ACCT_RELATION.GetSelFundAcctRelationList(ds); return list; } /// /// 通过规则返回优先级最高的记录 /// /// /// public Model.SEL_FUND_ACCT_RELATION GetSelFundPactAccountRelationModelByRelName(string pact_rea_name) { DataSet ds = GetSelFundPactAccountRelationByRelName(pact_rea_name); if (Util.DataSetUtil.Count(ds) == 0) return null; ds = Util.DataSetUtil.ReturnDsByDescOrderFromSourceDataSet(ds, _priority); return Model.SEL_FUND_ACCT_RELATION.GetSelFundAcctRelation(ds.Tables[0].Rows[0]); } // 映射优先级 private string _priority = "PRIORITY"; /// /// 通过名称寻找优先级最高的一个账户名称,最高优先级产线名称 /// /// /// public string GetHighestPriorRealationByRelName(string pact_rea_name) { List list = GetSelFundPactAccountRelationModel(pact_rea_name); if (list == null) return ""; if (list.Count == 0) return ""; Model.SEL_FUND_ACCT_RELATION real = null; foreach (Model.SEL_FUND_ACCT_RELATION re in list) { // 无效的,继续 if (re.ISVALID == "1") continue; if (re.ISVALID == "0") real = re; if (Convert.ToInt16(re.PRIORITY) < Convert.ToInt16(real.PRIORITY)) { real = re; } } try { return real.SECONDACCOUNT; } catch { return ""; } } /// /// 通过映射名,实际映射名,二级账户名,优先级查找是否存在同样的 /// /// /// /// /// /// public DataSet GetSelFundAcctRelationByRelAndRelNameAndSecondActAndPriority(string relation, string pactrealname, string secondaccount, string priority) { string sqlCondition = string.Format(" and relation = '{0}' and pact_rea_name = '{1}' and secondaccount = '{2}' and priority = '{3}' ", relation, pactrealname, secondaccount, priority); DataSet ds = GetSelFundAcctRealtionValid(sqlCondition, false); if (Util.DataSetUtil.Count(ds) == 0) return null; return ds; } public DataSet GetSelFundAcctRealtion(string sqlCondition) { return base.ExecuteReaderForSaleFund(string.Format(SQL_QUERY, sqlCondition)); } public DataSet GetSelFundAcctRealtion(string sqlCondition, Boolean isSetCaption) { DataSet ds = GetSelFundAcctRealtion(sqlCondition); if (isSetCaption) { base.SetDataSetCaption(ref ds, base.GetColumnNameAndCaption()); } return ds; } public DataSet GetSelFundAcctRealtionValid(string sqlCondition, Boolean isSetCaption) { DataSet ds = GetSelFundAcctRealtion(sqlCondition + " and isvalid = '0' "); if (isSetCaption) { base.SetDataSetCaption(ref ds, base.GetColumnNameAndCaption()); } return ds; } public void Insert(Model.SEL_FUND_ACCT_RELATION realtion, out string errMsg) { errMsg = ""; string sqlStr = string.Format(SQL_INSERT, realtion.RELATION, realtion.PACT_REA_NAME, realtion.SECONDACCOUNT, realtion.PRIORITY, realtion.IMPORTOR, realtion.ISVALID, realtion.DELETEOR, realtion.PACT_REA_NAME_SHOW); base.ExecuteNoReaderForSaleFund(sqlStr, out errMsg); } /// /// 删除一个映射关系 /// /// 名称 /// 合同属性,如产线等 /// 二级账户名称 /// 优先级 /// 删除人 /// public void Delete(string relation, string pactrealname, string secondaccount, string priority, string deletor, out string errMsg) { string SQL_DELETE = string.Format(@" update sel_fund_acct_relation a set ISVALID = '1' ,DELETEOR = '{4}',DELETETIME =sysdate where a.relation = '{0}' and a.pact_rea_name = '{1}' and secondaccount = '{2}' and priority = '{3}' ", relation, pactrealname, secondaccount, priority, deletor); base.ExecuteNoReaderForSaleFund(SQL_DELETE, out errMsg); } } }