using System; using System.Data; using System.Text; using System.Collections.Generic; using System.Linq; using QMFrameWork.Data; using QMAPP.Entity.Sys; using QMAPP.Entity.Sys.Entity; using QMAPP.DAL.Sys; namespace QMAPP.DAL.Sys { /// /// 用户委托授权 /// 作 者:李炳海 /// 编写日期:2015年01月07日 /// public class UserEntrustDAL:BaseDAL { #region 获取信息 /// /// 获取信息 /// /// 条件 /// *信息 public UserEntrust Get(UserEntrust info) { string sql = null; List parameters=new List(); StringBuilder sqlBuilder = new System.Text.StringBuilder(); try { using (IDataSession session = AppDataFactory.CreateMainSession()) { //获取信息 sql = @"SELECT T1.*,T2.LOGINUSERID AS ENTRUSTUSER,T2.USERNAME AS ENTRUSTUSERNAME,T3.LOGINUSERID AS AGENTUSER,T3.USERNAME AS AGENTUSERNAME FROM T_QM_USERENTRUST T1,T_QM_USER T2,T_QM_USER T3 WHERE T1.ENTRUSTUSERID = T2.USERID AND T1.AGENTUSERID = T3.USERID AND T1.PID = @ENTRUSTPID "; sql = this.ChangeSqlByDB(sql, session); info = session.Get(sql,new DataParameter("ENTRUSTPID",info.PID)); if (string.IsNullOrEmpty(info.ENTRUSTUSERID) == false) { //获取系统权限信息 sql = @"SELECT T1.* FROM T_QM_ENTRUSTAUTHORITY T1 WHERE T1.ENTRUSTPID = @ENTRUSTPID"; sql = this.ChangeSqlByDB(sql, session); parameters.Add(new DataParameter("ENTRUSTPID", info.PID)); info.Authoritys = session.GetList(sql, parameters.ToArray()).ToList(); //获取委托用户权限 parameters = new List(); sqlBuilder.Append("SELECT AUTHORITYID FROM T_QM_USERAUTHORITY WHERE USERID=@USERID "); sqlBuilder.Append(" union "); sqlBuilder.Append(" SELECT AUTHORITYID FROM T_QM_ROLEAUTHORITY "); sqlBuilder.Append(" where exists (select * from T_QM_USERROLE where T_QM_ROLEAUTHORITY.ROLEID "); sqlBuilder.Append(" =T_QM_USERROLE.ROLEID and T_QM_USERROLE.USERID =@USERID)"); sqlBuilder.Append(" union "); sqlBuilder.Append("SELECT AUTHORITYID FROM T_QM_ORGAIZATIONAUTHORITY "); sqlBuilder.Append(" where exists (select * from T_QM_USERORGAIZATION where T_QM_ORGAIZATIONAUTHORITY.ORGAID "); sqlBuilder.Append(" =T_QM_USERORGAIZATION.ORGAID and T_QM_USERORGAIZATION.USERID =@USERID)"); parameters.Add(new DataParameter { ParameterName = "USERID", DataType = DbType.String, Value = info.ENTRUSTUSERID }); sql = sqlBuilder.ToString(); sql = this.ChangeSqlByDB(sql, session); info.EUAuthoritys = session.GetList(sql, parameters.ToArray()).ToList(); } } return info; } catch (Exception ex) { throw; } } #endregion #region 获取业务权限信息 /// /// 获取业务权限信息 /// /// 获取条件 /// 业务权限信息 public UserEntrustBusiPower GetBusiInfo(UserEntrustBusiPower info) { string sql = null; List parameters = new List(); try { using (IDataSession session = AppDataFactory.CreateMainSession()) { //获取信息 sql = @"SELECT T1.*,T2.USERNAME AS ENTRUSTUSER,T3.USERNAME AS AGENTUSER FROM T_QM_USERENTRUST T1,T_QM_USER T2,T_QM_USER T3 WHERE T1.ENTRUSTUSERID = T2.USERID AND T1.AGENTUSERID = T3.USERID AND T1.PID = @ENTRUSTPID "; sql = this.ChangeSqlByDB(sql, session); info = session.Get(sql, new DataParameter("ENTRUSTPID", info.PID)); //获取仓库权限 sql = "SELECT T1.PID AS ID,T2.CORPID,T2.CORPCODE,T2.CORPNAME FROM T_QM_PARAPOWER T1 " + "INNER JOIN T_BD_CORP T2 ON T1.PARAVALUE=T2.CORPID " + "WHERE T1.RELATIONID = @RELATIONID AND T1.PARATYPE = '1'"; parameters.Clear(); parameters.Add(new DataParameter("RELATIONID", info.PID)); sql = this.ChangeSqlByDB(sql, session); info.CorpPowers = session.GetList(sql, parameters.ToArray()).ToList(); //获取路线权限 sql = "SELECT T1.PID AS ID,T2.LINEID,T2.LINENO,T2.LINENAME,T2.CORPID,T3.CORPNAME FROM T_QM_PARAPOWER T1 " + "INNER JOIN T_BD_LINE T2 ON T1.PARAVALUE=T2.LINEID " + "INNER JOIN T_BD_CORP T3 ON T2.CORPID=T3.CORPID " + "WHERE T1.RELATIONID = @RELATIONID AND T1.PARATYPE = '2'"; parameters.Clear(); parameters.Add(new DataParameter("RELATIONID", info.PID)); sql = this.ChangeSqlByDB(sql, session); info.LinePowers = session.GetList(sql, parameters.ToArray()).ToList(); //获取零件类别权限 sql = "SELECT T1.PID AS ID,T2.MATSORTID,T2.MATSORTNO,T2.SORTNAME AS MATSORTNAME FROM T_QM_PARAPOWER T1 " + "INNER JOIN T_BD_MATERIALSORT T2 ON T1.PARAVALUE=T2.MATSORTID " + "WHERE T1.RELATIONID = @RELATIONID AND T1.PARATYPE = '3'"; parameters.Clear(); parameters.Add(new DataParameter("RELATIONID", info.PID)); sql = this.ChangeSqlByDB(sql, session); info.MatSortPowers = session.GetList(sql, parameters.ToArray()).ToList(); //获取要货地权限 sql = "SELECT T1.PID AS ID,T2.PLACEDISID,T2.PLACEDISNO,T2.DESCRIBE_SITE AS DESCRIBE_SITE FROM T_QM_PARAPOWER T1 " + "INNER JOIN T_BD_PLACEDISCHARGE T2 ON T1.PARAVALUE=T2.PLACEDISID " + "WHERE T1.RELATIONID = @RELATIONID AND T1.PARATYPE = '4'"; parameters.Clear(); parameters.Add(new DataParameter("RELATIONID", info.PID)); sql = this.ChangeSqlByDB(sql, session); info.ReqPlacePowers = session.GetList(sql, parameters.ToArray()).ToList(); //获发要货地权限 sql = "SELECT T1.PID AS ID,T2.SENDPLACEID,T2.SENDPLACENO,T2.SENDPLACENAME AS SENDPLACENAME FROM T_QM_PARAPOWER T1 " + "INNER JOIN T_BD_HMATSENDPLACE T2 ON T1.PARAVALUE=T2.SENDPLACEID " + "WHERE T1.RELATIONID = @RELATIONID AND T1.PARATYPE = '5'"; parameters.Clear(); parameters.Add(new DataParameter("RELATIONID", info.PID)); sql = this.ChangeSqlByDB(sql, session); info.SendPlacePowers = session.GetList(sql, parameters.ToArray()).ToList(); } return info; } catch (Exception ex) { throw ex; } } #endregion #region 获取列表 /// /// 获取列表 /// /// 条件 /// 数据页 /// 数据页 public DataPage GetList(UserEntrust condition, DataPage page) { string sql = null; List parameters = new List(); try { sql = this.GetQuerySql(condition,parameters); //分页关键字段及排序 page.KeyName = "PID"; if (string.IsNullOrEmpty(page.SortExpression)) { page.SortExpression = "UPDATEDATE DESC"; } using (IDataSession session = AppDataFactory.CreateMainSession()) { sql = this.ChangeSqlByDB(sql, session); page = session.GetDataPage(sql, parameters.ToArray(), page); } return page; } catch (Exception ex) { throw; } } #endregion #region 获取查询语句 /// /// 获取查询语句 /// /// 查询条件 /// 参数 /// 查询语句 private string GetQuerySql(UserEntrust condition,List parameters) { string sql = ""; StringBuilder whereBuilder = new StringBuilder(); try { //构成查询语句 sql = @"SELECT T1.PID,(SELECT USERNAME FROM T_QM_USER WHERE USERID = T1.ENTRUSTUSERID) AS ENTRUSTUSERID ,(SELECT USERNAME FROM T_QM_USER WHERE USERID = T1.AGENTUSERID) AS AGENTUSERID,T1.STARTTIME,T1.ENDTIME,T1.ENTRUSTREASON ,T1.VALIDFLG,(SELECT USERNAME FROM T_QM_USER WHERE USERID = T1.CREATEUSER) AS CREATEUSER ,T1.CREATEDATE,(SELECT USERNAME FROM T_QM_USER WHERE USERID = T1.UPDATEUSER) AS UPDATEUSER,T1.UPDATEDATE FROM T_QM_USERENTRUST T1 WHERE FLGDEL<>1"; //查询条件 if (string.IsNullOrEmpty(condition.ENTRUSTUSERID) == false) { whereBuilder.Append(" AND T1.ENTRUSTUSERID = @ENTRUSTUSERID"); parameters.Add(new DataParameter { ParameterName = "ENTRUSTUSERID", DataType = DbType.String, Value = condition.ENTRUSTUSERID }); } if (string.IsNullOrEmpty(condition.AGENTUSERID) == false) { whereBuilder.Append(" AND T1.AGENTUSERID LIKE @AGENTUSERID"); parameters.Add(new DataParameter { ParameterName = "AGENTUSERID", DataType = DbType.String, Value = condition.AGENTUSERID }); } if (condition.STARTTIME != new DateTime()) { whereBuilder.Append(" AND T1.STARTTIME >= @STARTTIME"); parameters.Add(new DataParameter { ParameterName = "STARTTIME", DataType = DbType.DateTime, Value = condition.STARTTIME }); } if (condition.ENDTIME != new DateTime()) { whereBuilder.Append(" AND T1.STARTTIME <= @ENDTIME"); parameters.Add(new DataParameter { ParameterName = "ENDTIME", DataType = DbType.DateTime, Value = condition.ENDTIME }); } if (whereBuilder.Length > 0) { sql+=" AND " + whereBuilder.ToString().Substring(4); } return sql; } catch (Exception ex) { throw ex; } } #endregion #region 获取导出的数据 /// /// 获取导出的数据 /// /// 查询条件 /// 数据 public DataTable GetExportData(UserEntrust info) { DataTable dt = null; string sql = null; List parameters = new List(); try { //构成查询语句 sql = this.GetQuerySql(info,parameters); sql += " ORDER BY UPDATEDATE DESC "; using (IDataSession session = AppDataFactory.CreateMainSession()) { sql = this.ChangeSqlByDB(sql, session); dt = session.GetTable(sql, parameters.ToArray()); dt.TableName = "T_QM_USERENTRUST"; } return dt; } catch (Exception ex) { throw; } } #endregion #region 插入信息 /// /// 插入信息(单表) /// /// 信息 /// 插入行数 public int Insert(UserEntrust info) { int count = 0; try { using (IDataSession session = AppDataFactory.CreateMainSession()) { this.BaseSession = session; session.OpenTs(); //插入基本信息 count = this.InsertWithMark(info); //插入系统权限信息 if (info.Authoritys!=null) session.Insert(info.Authoritys); ////插入业务权限信息 //if (info.BusinessPowers != null) //{ // session.Insert(info.BusinessPowers); //} session.CommitTs(); } return count; } catch (Exception ex) { throw; } } #endregion #region 更新信息 /// /// 更新信息 /// /// /// 更新行数 public int Update(UserEntrust info) { int count = 0; string sql = null; try { using (IDataSession session = AppDataFactory.CreateMainSession()) { session.OpenTs(); this.BaseSession = session; //更新基本信息 count = this.UpdateWithMark(info); //删除原系统权限信息 sql = "DELETE FROM T_QM_ENTRUSTAUTHORITY WHERE ENTRUSTPID = @ENTRUSTPID"; sql = this.ChangeSqlByDB(sql, session); session.ExecuteSql(sql, new DataParameter("ENTRUSTPID",info.PID)); //插入系统权限信息 session.Insert(info.Authoritys); ////删除原业务权限信息 //sql = "DELETE FROM T_QM_PARAPOWER WHERE RELATIONID = @ENTRUSTPID"; //sql = this.ChangeSqlByDB(sql, session); //session.ExecuteSql(sql, new DataParameter("ENTRUSTPID", info.PID)); ////插入业务权限信息 //session.Insert(info.BusinessPowers); session.CommitTs(); } return count; } catch (Exception ex) { throw; } } #endregion #region 删除 /// /// 删除信息 /// /// /// 删除个数 public int Delete(UserEntrust info) { string sql = null; List parameters = new List(); int count = 0; try { using (IDataSession session = AppDataFactory.CreateMainSession()) { session.OpenTs(); this.BaseSession = session; //删除基本信息 count=this.DeleteWithMark(info); //删除系统权限信息 sql = "DELETE FROM T_QM_ENTRUSTAUTHORITY WHERE ENTRUSTPID = @ENTRUSTPID"; sql = this.ChangeSqlByDB(sql, session); session.ExecuteSql(sql, new DataParameter("ENTRUSTPID", info.PID)); ////删除原业务权限信息 //sql = "DELETE FROM T_QM_PARAPOWER WHERE RELATIONID = @ENTRUSTPID"; //sql = this.ChangeSqlByDB(sql, session); //session.ExecuteSql(sql, new DataParameter("ENTRUSTPID", info.PID)); session.CommitTs(); } return count; } catch (Exception ex) { throw; } } #endregion #region 保存业务数据权限 /// /// 保存业务数据权限 /// /// 业务数据权限 public void SaveBusinessPower(UserEntrustBusiPower info) { string sql = null; try { using (IDataSession session = AppDataFactory.CreateMainSession()) { session.OpenTs(); ////保存基本信息 //session.Update(info); //保存业务权限信息 sql = "DELETE FROM T_QM_PARAPOWER WHERE RELATIONID = :RELATIONID"; session.ExecuteSql(sql, new DataParameter("RELATIONID", info.PID)); session.Insert(info.BusinessPowers); session.CommitTs(); } } catch (Exception ex) { throw ex; } } #endregion } }