/** * EC_QuoteDemandDAL.cs * * 功 能: 报价需求数据访问实现 * 类 名: EC_QuoteDemandDAL * * Ver 变更日期 负责人 变更内容 * ─────────────────────────────────── * V0.01 2013-4-12 9:23 吴崎均 更改InsertModel以及UpdateModel以与存储相匹配 * V0.02 吴崎均 新增分页实现、获取单个实体实现 * V0.03 2013-4-18 16:00 吴崎均 新增批量删除 * V0.04 2013-5-3 10:15 吴崎均 变更字典表关联数据为DicType + MeanValue * V0.05 2013-5-22 17:32 吴崎均 修改方法“根据编号获取实体信息”实现为调用存储sp_EC_QuoteDemand_SelectRow * V0.06 2013-5-28 13:43 吴崎均 修改批量删除方法定义及实现 * V0.07 2013-6-2 10:42 吴崎均 增加修改状态方法 * V0.07 2013-6-16 18:32 吴崎均 修改分页查询方法,增加查询条件 * * * * * */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using CY.IDAL; using System.Data.SqlClient; using System.Data; using CY.Model; using CY.Infrastructure.Query; using System.Transactions; namespace CY.SQLDAL { /// /// 报价需求数据访问实现 /// public class EC_QuoteDemandDAL : IEC_QuoteDemandDAL { private Database _dataBase = null; #region 常量 /// /// 查询目标 /// const string SELECTTARGET = @" q.*, (case when p.PrintName is null then '其他需求' else p.PrintName end) as PrintTypeName, d_state.Name as StateName, m.Name as MemberName, d_calltype.Name as CallTypeName"; /// /// 查询来源 /// const string FROMSOUCEBEFORE = " EC_QuoteDemand as q Inner Join EC_MemberBasic as m On(q.MemberId=m.MemberId "; const string FROMSOUCEEND = " ) " + "left join SysInquiry_PrintingType as p On(q.PrintTypeId=p.Keyid) " + "Left Join Sys_Dictionary as d_state On(d_state.DicType='用户需求状态' And q.[State]=d_state.MeanValue) " + "Left Join Sys_Dictionary as d_calltype On(d_calltype.DicType='通知类型' And q.[CallTypeId]=d_calltype.MeanValue) " + ""; /// /// 分页默认排序字段 /// const string ORDERBY = "q.Keyid desc"; #endregion public EC_QuoteDemandDAL() { _dataBase = new Database(); } /// /// 原本的添加需求业务方法 /// /// /// public bool OldInsert(EC_QuoteDemand model) { EC_QuoteDemand trueModel = model as EC_QuoteDemand; if (trueModel == null) { return false; } else { } IList sqlParms = new List() { new SqlParameter(){ParameterName="@Keyid",Direction=ParameterDirection.Output,SqlDbType=SqlDbType.Int}, new SqlParameter("@MemberId",trueModel.MemberId), new SqlParameter("@PrintTypeId",trueModel.PrintTypeId), new SqlParameter("@DemandName",trueModel.DemandName), new SqlParameter("@DemandDemand",trueModel.DemandDemand), new SqlParameter("@EndTime",trueModel.EndTime), new SqlParameter("@CallTypeId",trueModel.CallTypeId), new SqlParameter("@State",trueModel.State), new SqlParameter("@Operator",trueModel.Operator), new SqlParameter("@ContactPhone",trueModel.ContactPhone), new SqlParameter("@QQ",trueModel.QQ), new SqlParameter("@Remark",trueModel.Remark) }; _dataBase.Query("sp_EC_QuoteDemand_Insert", CommandType.StoredProcedure, sqlParms.ToArray()); model.Keyid = (int)sqlParms[0].Value; return true; } /// /// 新增 /// /// /// public bool InserModel(Infrastructure.Domain.IAggregateRoot model) { EC_QuoteDemand trueModel = model as EC_QuoteDemand; if (trueModel == null) { return false; } else { } EC_DemandPrintParameterDAL printParameterDAL = new EC_DemandPrintParameterDAL(_dataBase); using (TransactionScope tran = new TransactionScope()) { bool isWin = false; isWin = OldInsert(trueModel); if (!isWin) { return false; } else ; if (trueModel.PrintTypeId != -1) { trueModel.PrintParameter().TargetId = trueModel.Keyid; isWin = printParameterDAL.InserModel(trueModel.PrintParameter()); if (!isWin) { return false; } else ; } tran.Complete(); } return true; } /// /// 修改 /// /// /// public bool OldUpdate(Infrastructure.Domain.IAggregateRoot model) { EC_QuoteDemand trueModel = model as EC_QuoteDemand; if (trueModel == null) { return false; } else { } IList sqlParms = new List() { new SqlParameter("@Keyid",trueModel.Keyid), new SqlParameter("@MemberId",trueModel.MemberId), new SqlParameter("@PrintTypeId",trueModel.PrintTypeId), new SqlParameter("@DemandName",trueModel.DemandName), new SqlParameter("@DemandDemand",trueModel.DemandDemand), new SqlParameter("@EndTime",trueModel.EndTime), new SqlParameter("@CallTypeId",trueModel.CallTypeId), new SqlParameter("@State","0"), new SqlParameter("@Operator",trueModel.Operator), new SqlParameter("@ContactPhone",trueModel.ContactPhone), new SqlParameter("@QQ",trueModel.QQ), new SqlParameter("@Remark",trueModel.Remark) }; try { _dataBase.Query("sp_EC_QuoteDemand_Update", CommandType.StoredProcedure, sqlParms.ToArray()); } catch (Exception ex) { throw ex; } return true; } /// /// 修改 /// /// /// public bool UpdateModel(Infrastructure.Domain.IAggregateRoot model) { EC_QuoteDemand trueModel = model as EC_QuoteDemand; if (trueModel == null) { return false; } else { } EC_DemandPrintParameterDAL eC_DemandPrintParameterDAL = new EC_DemandPrintParameterDAL(_dataBase); using (TransactionScope tran = new TransactionScope()) { //if (eC_DemandPrintParameterDAL.UpdateModel(trueModel.PrintParameter())) return false; if (!this.OldUpdate(trueModel)) { return false; } tran.Complete(); } return true; } /// /// 删除 /// /// /// public bool DeleteModel(Infrastructure.Domain.IAggregateRoot model) { EC_QuoteDemand trueModel = model as EC_QuoteDemand; if (trueModel == null) { return false; } else { } IList sqlParms = new List() { new SqlParameter("@Keyid",trueModel.Keyid) }; try { _dataBase.Query("sp_EC_QuoteDemand_DeleteRow", CommandType.StoredProcedure, sqlParms.ToArray()); } catch (Exception ex) { throw ex; } return true; } /// /// 删除需求 /// /// /// public bool DelModel(int keyId) { string sqlStr = "delete from EC_QuoteDemand where keyId=@keyId"; SqlParameter par = new SqlParameter("@keyId", keyId); SqlParameter[] pars = new SqlParameter[]{ par }; try { _dataBase.ExecuteSql(sqlStr, pars); } catch (Exception ex) { throw ex; } return true; } /// /// 分页查询 /// /// 查询对象 /// 分页对象 /// public IEnumerable SelectModelPage(Infrastructure.Query.Query query, Infrastructure.Query.Pagination pagination) { if (null == pagination || null == query || null == query.Criteria || 1 > query.Criteria.Count) return null; else { } //query.Criteria 首个元素必须是排序字段,其值为结果排序字段 int maxParamIndex = query.Criteria.Count - 1;//最大索引 string[] orderbys = new string[] { ORDERBY }; string resultOrderBy = "";//结果集排序方式 if ("@orderBy".Equals(query.Criteria[maxParamIndex].PropertyName)) { orderbys = string.Format("{0}", query.Criteria[maxParamIndex].Value).Split(','); resultOrderBy = 1 == orderbys.Length ? resultOrderBy : orderbys[1]; } string fromSouce = string.Format("{0}{1}{2}", FROMSOUCEBEFORE, query.Criteria[0].Value, FROMSOUCEEND);//拼装条件 return _dataBase.SelectModelPage(pagination, SELECTTARGET, fromSouce, orderbys[0], resultOrderBy); } /// /// 分页查询(前台用) /// /// 分页对象 /// 省 /// 市 /// 印刷类型 /// public IEnumerable SelectModelPage(Infrastructure.Query.Pagination pagination, string province = "", string city = "", int printTypeId = -1) { string stateId = "0";//获取有效类型编号 //using (IDataReader reader = _dataBase.QueryDataReader("Select Keyid From Sys_Dictionary Where DicType='用户需求状态' And MeanValue=0", CommandType.Text)) //{ // if (reader.Read()) // { // stateId = reader[0].ToString(); // } //} string condition = string.Format(" And q.State = {0}", stateId); condition += " And EndTime >= Getdate()"; if (!string.IsNullOrEmpty(province)) { condition += string.Format(" And m.Province='{0}'", province); } else { } if (!string.IsNullOrEmpty(city)) { condition += string.Format(" And m.City='{0}'", city); } else { } if (-1 != printTypeId) { condition += string.Format(" And d.PrintTypeId={0}", printTypeId); } else { } Query query = new Query(true); query.Criteria.Add(new Criterion("condition", condition)); //query.Criteria.Add(new Criterion("orderBy", "CreateTime,CreateTime")); return SelectModelPage(query, pagination); } /// /// 分页查询(后台用) /// /// 分页对象 /// 会员编号 /// 名称 /// 开始时间 /// 结束时间 /// 印刷类型 /// 状态 /// public IEnumerable SelectModelPage(Infrastructure.Query.Pagination pagination, Guid memberId,string name, DateTime? beginDate, DateTime? endDate, int printTypeId = -1, int? state = null) { //string stateId = "";//获取有效类型编号 //using (IDataReader reader = _dataBase.QueryDataReader("Select Keyid From Sys_Dictionary Where DicType='用户需求状态' And MeanValue=0", CommandType.Text)) //{ // if (reader.Read()) // { // stateId = reader[0].ToString(); // } //} string condition = "";// string.Format(" And q.State = {0}", stateId); if (state.HasValue && -1 != state) { condition += state == 0 ? " And q.EndTime > Getdate() And q.State=0 " : " And ( q.EndTime < Getdate() Or q.State <> 0 )"; // 0为未结束 1为已结束 -1为不限 } if (Guid.Empty != memberId) { condition += string.Format(" And q.MemberId='{0}'", memberId); } else { } if (string.IsNullOrEmpty(name)) { condition += string.Format(" And q.DemandName like '%{0}%'", name); } if (beginDate.HasValue) { condition += string.Format(" And q.CreateTime >= '{0}'", beginDate.Value.ToString("yyyy-MM-dd")); } else { } if (endDate.HasValue) { condition += string.Format(" And q.CreateTime <= '{0}'", endDate.Value.ToString("yyyy-MM-dd")); } else { } if (-1 != printTypeId) { condition += string.Format(" And q.PrintTypeId={0}", printTypeId); } else { } Query query = new Query(true); query.Criteria.Add(new Criterion("condition", condition)); //query.Criteria.Add(new Criterion("orderBy", "CreateTime,CreateTime")); return SelectModelPage(query, pagination); } /// /// 单个查询 /// /// /// public IEnumerable SelectAllModel(Infrastructure.Query.Query query) { throw new NotImplementedException(); } /// /// 根据编号获取实体信息 /// /// 主键编号 /// public EC_QuoteDemand SelectModleById(int id) { if (id < 1) return null;//错误数据返会空 else { } IList result = null; using (IDataReader reader = _dataBase.QueryDataReader("sp_EC_QuoteDemand_SelectRow", CommandType.StoredProcedure, new SqlParameter("@keyid", id))) { result = _dataBase.ReadDataToModel(reader); } return null == result || result.Count == 0 ? null : result[0];//返回结果 } /// /// 根据编号批量删除数据 /// /// 当前操作人 /// 编号集合 /// public bool DeleteDataByIds(string currentOperator, params int[] ids) { return Database.DeleteDataByIds(this, currentOperator, ids); } /// /// 改变需求业务状态 /// /// 数据编号 /// 状态 /// public bool ChangeState(int id, int state) { IList sqlParms = new List() { new SqlParameter("@Keyid",id), new SqlParameter("@State",state) }; try { _dataBase.Query("sp_EC_QuoteDemand_ChangeState", CommandType.StoredProcedure, sqlParms.ToArray()); } catch (Exception ex) { throw ex; } return true; } /// /// 检测是否第一次发布需求 /// /// /// public bool IsTodayHasValue(Guid MemberId) { try { if (MemberId == Guid.Empty) return false;//错误数据返会空 DateTime NowTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); IList result = _dataBase.SelectModel(" * ", "EC_QuoteDemand", string.Format(" MemberId='{0}' and CreateTime >= '{1}' and CreateTime <='{2}'", MemberId, NowTime, NowTime.AddDays(1))) as IList;//执行查询 return result == null || result.Count < 2;//返回结果 } catch (Exception ex) { throw ex; } } /// /// 判断能不能发布相同需求 /// /// /// /// public bool CanInsertModel(Guid MemberId, string demand) { bool canInsertModel = true; string nowDateStr = DateTime.Now.ToString("yyyy-MM-dd"); string condition = string.Empty; condition = " State=0 AND MemberId='{0}' and DemandDemand='{1}' and CAST(CreateTime AS DATE)='{2}'"; condition = string.Format(condition, MemberId.ToString(), demand, nowDateStr); IList result = _dataBase.SelectModel(" * ", "EC_QuoteDemand", condition) as IList;//执行查询 if (result != null && result.Count > 0) { canInsertModel = false; } return canInsertModel; } /// /// 获取当天发布的发布状态下的需求与下单要求一致的需求信息 /// /// /// /// public EC_QuoteDemand GetModelByCanDel(Guid MemberId, string demand) { EC_QuoteDemand demandModel = null; string nowDateStr = DateTime.Now.ToString("yyyy-MM-dd"); string condition = string.Empty; condition = " State=0 AND MemberId='{0}' and DemandDemand='{1}' and CAST(CreateTime AS DATE)='{2}'"; condition = string.Format(condition, MemberId.ToString(), demand, nowDateStr); IList result = _dataBase.SelectModel(" * ", "EC_QuoteDemand", condition) as IList;//执行查询 if (result != null && result.Count > 0) { demandModel = result[0]; } return demandModel; } } }