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.
DS7/DSWeb/Areas/SysMng/DAL/SysRoleTaskQueryDAL.cs

227 lines
7.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.Entity.Migrations;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using DSWeb.Areas.CommMng.DAL;
using DSWeb.Areas.CommMng.Models;
using DSWeb.Areas.MvcShipping.Helper;
using DSWeb.Common.DB;
using DSWeb.EntityDA;
using DSWeb.MvcShipping.DAL.MsBaseInfoDAL;
using DSWeb.MvcShipping.Helper;
using DSWeb.TruckMng.Comm.Cookie;
using HcUtility.Comm;
using java.net;
using Microsoft.Practices.EnterpriseLibrary.Data;
namespace DSWeb.SysMng.DAL.SysRoleTaskQuery
{
public class SysRoleTaskQueryDAL
{
public static List<Sys_Role_Task_Query_md> GetDataList(int start, int limit, string sort, string condition, ref int count)
{
var cdc = new CommonDataContext();
var Condition = new Condition_RoleTaskQuery();
try
{
Condition = JsonConvert.Deserialize<Condition_RoleTaskQuery>(condition);
}
catch {
}
//QueryCollection queries = new QueryCollection();
if (Condition != null)//&&
{
QueryCollection queries = new QueryCollection();
//queries.Add(new Query { Name = "GID", Operator = Query.Operators.Equal, Value = Guid.Empty });
if (Condition.GID != null)
queries.Add(new Query { Name = "GID", Operator = Query.Operators.Equal, Value = Condition.GID });
if (Condition.RoleId != null)
queries.Add(new Query { Name = "RoleId", Operator = Query.Operators.Equal, Value = Condition.RoleId });
if (!string.IsNullOrWhiteSpace(Condition.MODECNNAME))
queries.Add(new Query { Name = "MODECNNAME", Operator = Query.Operators.Contains, Value = Condition.MODECNNAME });
if (!string.IsNullOrWhiteSpace(Condition.BSTYPE))
queries.Add(new Query { Name = "BSTYPE", Operator = Query.Operators.Contains, Value = Condition.BSTYPE });
//var dataList = cdc.Sys_Role_Task_Query.Where(queries.AsExpression<Sys_Role_Task_Query_md>(Query.Condition.AndAlso)).ToList();
var result = new List<Sys_Role_Task_Query_md>();
if (queries == null || queries.Count == 0)
{
result=cdc.Sys_Role_Task_Query.Where(x=>1==1).ToList();
}
else
{
result=cdc.Sys_Role_Task_Query.Where(queries.AsExpression<Sys_Role_Task_Query_md>(Query.Condition.AndAlso))
//.Where(queries2.AsExpression<OP_SEAE_CLIENT>(Query.Condition.AndAlso))
.ToList();
}
count = result.Count();
var list0 = result.Skip(start).Take(limit).ToList();
return list0;
}
else
{
var AllList = cdc.Sys_Role_Task_Query.Where(x => 1 == 1).ToList();
if (AllList != null && AllList.Count > 0)
{
count = AllList.Count();
AllList = AllList.Skip(start).Take(limit).ToList();
return AllList;
}
else
{
count = 0;
return new List<Sys_Role_Task_Query_md>();
}
}
}
public static System.Web.Mvc.ContentResult SaveQuery(string USERID,string ModName,string formName, string sqlcontext) {
var jsonRespose = new JsonResponse
{
Success = true,
Message = "",
Data = null
};
var cdc = new CommonDataContext();
var rec = cdc.Sys_Role_Task_Query.Where(x => x.MODNAME == ModName && x.SQLCONTEXT == "").ToList();
if (rec == null || rec.Count == 0)
{
jsonRespose.AddError("无可录制的项目");
}
else {
var record = rec[0];
record.SQLCONTEXT=sqlcontext;
record.FormName = formName + "Search";
var user_query_setting= MsBaseInfoDAL.GetUserQuerySetting(USERID, record.FormName);
if (user_query_setting != null && user_query_setting.FIELDVALUES != "")
{
record.FIELDVALUES = user_query_setting.FIELDVALUES;
}
//cdc.Sys_Role_Task_Query.AddOrUpdate(record);
cdc.SaveChanges();
}
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public static string GetUserRoleTaskQueryList(string USERID) {
var result = new List<TaskListItem>();
var cdc = new CommonDataContext();
var _userlist = cdc.VW_user.Where(x => x.USERID == USERID).ToList();
if (_userlist == null || _userlist.Count == 0) {
return JsonConvert.Serialize(new { success = true, message = "查询失败", total = 0 });
}
var user = _userlist[0];
var userrolelist = cdc.user_role.Where(x => x.USERID == USERID).ToList();
var querylist = cdc.Sys_Role_Task_Query.Where(x => x.ISSTOP==false).ToList();
bool ( Sys_Role_Task_Query_md item)
{
var r = false;
if (item.RoleId != null)
{
if (userrolelist.Exists(x => x.ROLEID == item.RoleId.ToString()))
{
return true;
}
}
else if(!string.IsNullOrWhiteSpace( item.SQLSTR)) {
//下面为测试用
//item.SQLSTR = " select count(*) _count from user_action where ACTIONID in(select gid from [action] where MODULEID in( select gid From sys_module where [NAME]='modExchangesUnit')) and USERID='#USERID#' ";//1BEC90E1-9780-472F-90C2-0C6390C044A4
var strSql = item.SQLSTR.Replace("#USERID#", USERID);
var _count = 0;
try {
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
_count = reader["_count"] == null ? 0 : Convert.ToInt32(reader["_count"]);
}
reader.Close();
}
if (_count > 0) return true;
}
catch (Exception e) {
return false;
}
}
return r;
}
foreach (var rec in querylist)
{
if ((rec)) {
var newrec = new TaskListItem();
newrec.BSTYPE = rec.BSTYPE;
var _condition = rec.GetCondition(user.USERID);
newrec.CT = BasicDataRefDAL.GetTotalCount(rec.FormName, _condition, user.USERID, user.SHOWNAME, user.COMPANYID);
newrec.CONDITION = HttpUtility.UrlEncode(_condition).Replace("+", "%20");
newrec.URL=rec.URL;
newrec.MODCNAME = rec.BSTYPE;
newrec.MODNAME = rec.MODNAME;
newrec.BSMSG = $"当前有[{newrec.CT}]条数据";
newrec.GID = rec.GID.ToString();
result.Add(newrec);
}
}
return JsonConvert.Serialize(new { success = true, message = "查询成功", total = result.Count, rows = result.ToArray() });
}
}
}