SGGL_JT/SUBQHSE/BLL/Common/CommonService.cs

1138 lines
45 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Model;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
namespace BLL
{
public static class CommonService
{
#region
/// <summary>
/// 获取当前人系统集合
/// </summary>
/// <param name="userId">用户id</param>
/// <returns>是否具有权限</returns>
public static List<string> GetSystemPowerList(string userId)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(Funs.ConnString))
{
var getUser = db.Sys_User.FirstOrDefault(x => x.UserId == userId);
if (getUser != null)
{
if (userId == Const.sysglyId || userId == Const.hfnbdId) ////|| getUser.DepartId == Const.Depart_constructionId
{
return new List<string>() { Const.Menu_Server, Const.Menu_HSSE, Const.Menu_CQMS, Const.Menu_HJGL };
}
else if (userId == Const.sedinId)
{
return new List<string>() { Const.Menu_CQMS };
}
else
{
List<string> returnList = new List<string>();
string rolesStr = string.Empty;
if (!string.IsNullOrEmpty(getUser.RoleId))
{
rolesStr = getUser.RoleId;
var getOffice = db.Sys_RolePower.FirstOrDefault(x => x.RoleId == getUser.RoleId && x.IsOffice == true);
if (getOffice != null)
{
returnList.Add(Const.Menu_Server);
}
}
////获取项目角色的集合
var getPRoles = (from x in db.Project_ProjectUser
join y in db.Base_Project on x.ProjectId equals y.ProjectId
where (y.ProjectState == Const.ProjectState_1 || y.ProjectState == null) && x.UserId == userId && x.RoleId != null
&& (y.IsDelete == null || y.IsDelete == false)
select x.RoleId).ToList();
foreach (var item in getPRoles)
{
if (string.IsNullOrEmpty(rolesStr))
{
rolesStr = item;
}
else
{
if (!rolesStr.Contains(item))
{
rolesStr += "," + item;
}
}
}
////项目角色集合list
List<string> roleIdList = Funs.GetStrListByStr(rolesStr, ',').Distinct().ToList();
var getProjectRolePowers = (from x in db.Sys_RolePower
where roleIdList.Contains(x.RoleId)
select x).ToList();
if (getProjectRolePowers.FirstOrDefault(x => x.MenuType == Const.Menu_HSSE) != null)
{
returnList.Add(Const.Menu_HSSE);
}
if (getProjectRolePowers.FirstOrDefault(x => x.MenuType == Const.Menu_CQMS) != null)
{
returnList.Add(Const.Menu_CQMS);
}
if (getProjectRolePowers.FirstOrDefault(x => x.MenuType == Const.Menu_HJGL) != null)
{
returnList.Add(Const.Menu_HJGL);
}
return returnList.Distinct().ToList();
}
}
else
{
return null;
}
}
}
#endregion
#region
/// <summary>
/// 获取当前人菜单集合
/// </summary>
/// <param name="projectId">项目ID</param>
/// <param name="userId">用户id</param>
/// <returns>是否具有权限</returns>
public static List<string> GetAllMenuList(string projectId, string userId)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(Funs.ConnString))
{
/// 启用且末级菜单
var getMenus = from x in db.Sys_Menu
where x.IsUsed == true
&& (x.MenuType == Const.Menu_Server ||
x.MenuType == Const.Menu_HSSE || x.MenuType == Const.Menu_CQMS || x.MenuType == Const.Menu_HJGL)
select x;
List<Model.Sys_Menu> menus = new List<Model.Sys_Menu>();
if (userId == Const.sysglyId || userId == Const.hfnbdId || userId == Const.sedinId)
{
menus = getMenus.ToList();
}
else
{
var getUser = UserService.GetUserByUserId(userId); ////用户
if (getUser != null)
{
List<string> roleIdList = UserService.GetRoleListByProjectIdUserId(projectId, userId);
menus = (from x in db.Sys_RolePower
join y in getMenus on x.MenuId equals y.MenuId
where roleIdList.Contains(x.RoleId)
select y).ToList();
}
}
return menus.Select(x => x.MenuId).Distinct().ToList();
}
}
public static List<string> GetZJAllMenuList(string projectId, string userId)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(Funs.ConnString))
{
/// 启用且末级菜单
var getMenus = from x in db.Sys_Menu
where x.IsUsed == true
&& (x.MenuType == Const.Menu_Server ||
x.MenuType == Const.ZJ_Menu_P_HSSE || x.MenuType == Const.ZJ_Menu_P_CQMS || x.MenuType == Const.ZJ_Menu_P_Person || x.MenuType == Const.ZJ_Menu_P_Device)
select x;
List<Model.Sys_Menu> menus = new List<Model.Sys_Menu>();
if (userId == Const.sysglyId || userId == Const.hfnbdId || userId == Const.sedinId)
{
menus = getMenus.ToList();
}
else
{
var getUser = UserService.GetUserByUserId(userId); ////用户
if (getUser != null)
{
List<string> roleIdList = UserService.GetRoleListByProjectIdUserId(projectId, userId);
menus = (from x in db.Sys_RolePower
join y in getMenus on x.MenuId equals y.MenuId
where roleIdList.Contains(x.RoleId)
select y).ToList();
}
}
return menus.Select(x => x.MenuId).Distinct().ToList();
}
}
#endregion
#region
/// <summary>
/// 得到本单位信息
/// </summary>
/// <returns></returns>
public static Model.Base_Unit GetIsThisUnit()
{
return (Funs.DB.Base_Unit.FirstOrDefault(e => e.IsThisUnit == true)); //本单位
}
/// <summary>
/// 得到本单位Id
/// </summary>
/// <returns></returns>
public static string GetThisUnitId()
{
string unitId = string.Empty;
var thisUnit = Funs.DB.Base_Unit.FirstOrDefault(e => e.IsThisUnit == true); //本单位
if (thisUnit != null)
{
unitId = thisUnit.UnitId;
}
return unitId;
}
/// <summary>
/// 获取本单位名称
/// </summary>
/// <returns></returns>
public static string GetThisUnitName()
{
string unitName = string.Empty;
var thisUnit = Funs.DB.Base_Unit.FirstOrDefault(e => e.IsThisUnit == true); //本单位
if (thisUnit != null)
{
unitName = thisUnit.UnitName;
}
return unitName;
}
#endregion
#region id获取单位类型
/// <summary>
/// 得到本单位Id
/// </summary>
/// <returns></returns>
public static string GetProjectUnitType(string projectId, string unitId)
{
string unitType = string.Empty;
var projectUnit = Funs.DB.Project_ProjectUnit.FirstOrDefault(e => e.ProjectId == projectId && e.UnitId == unitId);
if (projectUnit != null)
{
unitType = projectUnit.UnitType;
}
return unitType;
}
#endregion
#region id获取项目总包单位Id
/// <summary>
/// 得到本单位Id
/// </summary>
/// <returns></returns>
public static string GetMainProjectUnitId(string projectId)
{
string unitId = string.Empty;
var projectUnit = Funs.DB.Project_ProjectUnit.FirstOrDefault(e => e.ProjectId == projectId && e.UnitType == BLL.Const.ProjectUnitType_1);
if (projectUnit != null)
{
unitId = projectUnit.UnitId;
}
return unitId;
}
#endregion
#region id菜单id判断是否有权限
/// <summary>
/// 根据登陆id菜单id判断是否有权限
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public static bool ReturnMenuByUserIdMenuId(string userId, string menuId, string projectId)
{
bool returnValue = false;
var menu = Funs.DB.Sys_Menu.FirstOrDefault(x => x.MenuId == menuId);
var getUser = Funs.DB.Sys_User.FirstOrDefault(x => x.UserId == userId); ////用户
if (menu != null && getUser != null)
{
///1、当前用户是管理员
///2、当前菜单是个人设置
if (userId == Const.sysglyId || userId == Const.hfnbdId || userId == Const.sedinId)
{
returnValue = true;
}
else if (userId == Const.sedinId)
{
returnValue = true;
}
else if (menu.MenuType == Const.Menu_Personal)
{
returnValue = true;
}
else if (string.IsNullOrEmpty(projectId)) ///本部、系统设置
{
if (!string.IsNullOrEmpty(getUser.RoleId))
{
var power = Funs.DB.Sys_RolePower.FirstOrDefault(x => x.MenuId == menuId && x.RoleId == getUser.RoleId);
if (power != null)
{
returnValue = true;
}
}
}
else
{
List<string> roleIdList = UserService.GetRoleListByProjectIdUserId(projectId, userId);
var power = Funs.DB.Sys_RolePower.FirstOrDefault(x => x.MenuId == menuId && roleIdList.Contains(x.RoleId));
if (power != null)
{
returnValue = true;
}
}
}
return returnValue;
}
#endregion
#region
/// <summary>
/// 获取当前人按钮集合
/// </summary>
/// <param name="userId">用户id</param>
/// <param name="menuId">按钮id</param>
/// <returns>是否具有权限</returns>
public static List<string> GetAllButtonList(string projectId, string userId, string menuId)
{
Model.SUBQHSEDB db = Funs.DB;
List<string> buttonList = new List<string>();
List<Model.Sys_ButtonToMenu> buttons = new List<Model.Sys_ButtonToMenu>();
if (userId == Const.sedinId)
{
return buttonList;
}
var getMenu = Funs.DB.Sys_Menu.FirstOrDefault(x => x.MenuId == menuId);
var user = BLL.UserService.GetUserByUserId(userId); ////用户
if (getMenu != null && user != null)
{
if (userId == Const.sysglyId || userId == Const.hfnbdId || getMenu.MenuType == Const.Menu_Personal)
{
buttons = (from x in db.Sys_ButtonToMenu
where x.MenuId == menuId
select x).ToList();
}
else
{
if (string.IsNullOrEmpty(projectId))
{
buttons = (from x in db.Sys_ButtonToMenu
join y in db.Sys_ButtonPower on x.ButtonToMenuId equals y.ButtonToMenuId
where y.RoleId == user.RoleId && y.MenuId == menuId && x.MenuId == menuId
select x).ToList();
}
else
{
List<string> roleIdList = UserService.GetRoleListByProjectIdUserId(projectId, userId);
buttons = (from x in db.Sys_ButtonToMenu
join y in db.Sys_ButtonPower on x.ButtonToMenuId equals y.ButtonToMenuId
where roleIdList.Contains(y.RoleId) && y.MenuId == menuId && x.MenuId == menuId
select x).ToList();
}
}
}
if (buttons.Count() > 0)
{
buttonList = buttons.Select(x => x.ButtonName).ToList();
}
if (!String.IsNullOrEmpty(projectId) && menuId != BLL.Const.ProjectShutdownMenuId)
{
var porject = BLL.ProjectService.GetProjectByProjectId(projectId);
if (porject != null && (porject.ProjectState == BLL.Const.ProjectState_2 || porject.ProjectState == BLL.Const.ProjectState_3))
{
buttonList.Clear();
}
}
return buttonList;
}
#endregion
#region
/// <summary>
/// 获取当前人是否具有按钮操作权限
/// </summary>
/// <param name="userId">用户id</param>
/// <param name="menuId">按钮id</param>
/// <param name="buttonName">按钮名称</param>
/// <returns>是否具有权限</returns>
public static bool GetAllButtonPowerList(string projectId, string userId, string menuId, string buttonName)
{
Model.SUBQHSEDB db = Funs.DB;
bool isPower = false; ////定义是否具备按钮权限
if (userId == Const.sedinId)
{
return isPower;
}
if (!isPower && (userId == Const.sysglyId || userId == Const.hfnbdId))
{
isPower = true;
}
// 根据角色判断是否有按钮权限
if (!isPower)
{
var user = UserService.GetUserByUserId(userId); ////用户
if (user != null)
{
if (string.IsNullOrEmpty(projectId))
{
if (!string.IsNullOrEmpty(user.RoleId))
{
var buttonToMenu = from x in db.Sys_ButtonToMenu
join y in db.Sys_ButtonPower on x.ButtonToMenuId equals y.ButtonToMenuId
join z in db.Sys_Menu on x.MenuId equals z.MenuId
where y.RoleId == user.RoleId && y.MenuId == menuId
&& x.ButtonName == buttonName && x.MenuId == menuId
select x;
if (buttonToMenu.Count() > 0)
{
isPower = true;
}
}
}
else
{
List<string> roleIdList = UserService.GetRoleListByProjectIdUserId(projectId, userId);
var buttonToMenu = from x in db.Sys_ButtonToMenu
join y in db.Sys_ButtonPower on x.ButtonToMenuId equals y.ButtonToMenuId
join z in db.Sys_Menu on x.MenuId equals z.MenuId
where roleIdList.Contains(y.RoleId) && y.MenuId == menuId
&& x.ButtonName == buttonName && x.MenuId == menuId
select x;
if (buttonToMenu.Count() > 0)
{
isPower = true;
}
}
}
}
if (isPower && !String.IsNullOrEmpty(projectId) && menuId != BLL.Const.ProjectShutdownMenuId)
{
var porject = BLL.ProjectService.GetProjectByProjectId(projectId);
if (porject != null && (porject.ProjectState == BLL.Const.ProjectState_2 || porject.ProjectState == BLL.Const.ProjectState_3))
{
isPower = false;
}
}
return isPower;
}
public static bool GetAllButtonPowerList(string projectId, string userId, string menuId, string buttonName,string type)
{
Model.SUBQHSEDB db = Funs.DB;
bool isPower = false; ////定义是否具备按钮权限
if (userId == Const.sedinId)
{
return isPower;
}
if (!isPower && (userId == Const.sysglyId || userId == Const.hfnbdId))
{
isPower = true;
}
// 根据角色判断是否有按钮权限
if (!isPower)
{
var user = UserService.GetUserByUserId(userId); ////用户
if (user != null)
{
if (string.IsNullOrEmpty(projectId))
{
if (!string.IsNullOrEmpty(user.RoleId))
{
var buttonToMenu = from x in db.Sys_ButtonToMenu
join y in db.Sys_ButtonPower on x.ButtonToMenuId equals y.ButtonToMenuId
join z in db.Sys_Menu on x.MenuId equals z.MenuId
where y.RoleId == user.RoleId && y.MenuId == menuId
&& x.ButtonName == buttonName && x.MenuId == menuId
select x;
if (buttonToMenu.Count() > 0)
{
isPower = true;
}
}
}
else
{
List<string> roleIdList = UserService.GetRoleListByProjectIdUserId(projectId, userId);
var buttonToMenu = from x in db.Sys_ButtonToMenu
join y in db.Sys_ButtonPower on x.ButtonToMenuId equals y.ButtonToMenuId
join z in db.Sys_Menu on x.MenuId equals z.MenuId
where roleIdList.Contains(y.RoleId) && y.MenuId == menuId
&& x.ButtonName == buttonName && x.MenuId == menuId
select x;
if (buttonToMenu.Count() > 0)
{
isPower = true;
}
}
}
}
if (isPower && type !="shiye"&&!String.IsNullOrEmpty(projectId) && menuId != BLL.Const.ProjectShutdownMenuId)
{
var porject = BLL.ProjectService.GetProjectByProjectId(projectId);
if (porject != null && (porject.ProjectState == BLL.Const.ProjectState_2 || porject.ProjectState == BLL.Const.ProjectState_3))
{
isPower = false;
}
}
return isPower;
}
#endregion
#region Id判断是否为本单位()
/// <summary>
/// 根据用户UnitId判断是否为本单位用户或管理员
/// </summary>
/// <returns></returns>
public static bool IsMainOrSubUnitOrAdmin(string userId)
{
bool result = false;
if (userId == Const.sysglyId || userId == Const.hfnbdId)
{
result = true;
}
else
{
var user = UserService.GetUserByUserId(userId);
if (user != null && user.IsOffice == true)
{
if (user.UnitId == GetThisUnitId())
{
result = true;
}
else
{
var getUnit = UnitService.GetUnitByUnitId(user.UnitId);
if (getUnit != null && getUnit.IsBranch == true)
{
result = true;
}
}
}
}
return result;
}
#endregion
/// <summary>
///根据userid获取当前人的单位类型0总公司1分公司2其他
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public static int GetUnitTypeByUserId(string userId)
{
int result = 0;
var user = UserService.GetUserByUserId(userId);
if ((userId == Const.hfnbdId || userId == Const.sysglyId)||(!string.IsNullOrEmpty(user.UnitId) && user.UnitId == CommonService.GetThisUnitId()))//公司级别
{
result = 0;
}
else if (!string.IsNullOrEmpty(user.UnitId) && UnitService.GetUnitByUnitId(user.UnitId).IsBranch == true && user.IsOffice == true) //子公司级数据
{
result = 1;
}
else //外来账户
{
result = 2;
}
return result;
}
#region Id判断是否为本单位用户或管理员
/// <summary>
/// 根据用户UnitId判断是否为本单位用户或管理员
/// </summary>
/// <returns></returns>
public static bool IsMainUnitOrAdmin(string userId)
{
bool result = false;
if (userId == Const.sysglyId || userId == Const.hfnbdId)
{
result = true;
}
else
{
var user = UserService.GetUserByUserId(userId);
string thisUnitId = string.Empty;
var thisUnit = CommonService.GetIsThisUnit();
if (thisUnit != null)
{
thisUnitId = thisUnit.UnitId;
}
if (user != null && user.UnitId == thisUnitId)
{
result = true;
}
var unit = BLL.UnitService.GetUnitByUnitId(user.UnitId);
if (unit != null && unit.IsBranch == true)
{
result = true;
}
}
return result;
}
#endregion
#region ID判断是否
/// <summary>
/// 根据用户UnitId判断是否为本单位用户或管理员
/// </summary>
/// <returns></returns>
public static bool IsThisUnitLeaderOfficeOrManage(string userId)
{
bool result = false;
if (userId == Const.sysglyId || userId == Const.hfnbdId || userId == Const.sedinId)
{
result = true;
}
else
{
var user = BLL.UserService.GetUserByUserId(userId);
if (user != null && user.IsOffice == true)
{
result = true;
}
}
return result;
}
#endregion
#region ID
/// <summary>
/// 根据当前人ID、系统类型判断是否有进入权限
/// </summary>
/// <param name="userId"></param>
/// <param name="menuType"></param>
/// <returns></returns>
public static bool IsHaveSystemPower(string userId, string menuType, string projectId)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(Funs.ConnString))
{
bool isHave = false;
var getUser = db.Sys_User.FirstOrDefault(x => x.UserId == userId);
if (getUser != null)
{
if (userId == Const.sysglyId || userId == Const.hfnbdId || userId == Const.sedinId)
{
isHave = true;
}
else
{
if (string.IsNullOrEmpty(projectId))
{
var getOffice = db.Sys_RolePower.FirstOrDefault(x => x.MenuType == menuType);
if (getOffice != null)
{
isHave = true;
}
}
else
{
List<string> roleIdList = UserService.GetRoleListByProjectIdUserId(projectId, userId);
var pPower = db.Sys_RolePower.FirstOrDefault(x => roleIdList.Contains(x.RoleId) && x.MenuType == menuType);
if (pPower != null)
{
isHave = true;
}
}
}
}
return isHave;
}
}
#endregion
#region
/// <summary>
///根据主键删除附件
/// </summary>
/// <param name="lawRegulationId"></param>
public static void DeleteAttachFileById(string id)
{
Model.AttachFile attachFile = Funs.DB.AttachFile.FirstOrDefault(e => e.ToKeyId == id);
if (attachFile != null)
{
if (!string.IsNullOrEmpty(attachFile.AttachUrl))
{
UploadFileService.DeleteFile(Funs.RootPath, attachFile.AttachUrl);
}
Funs.DB.AttachFile.DeleteOnSubmit(attachFile);
Funs.DB.SubmitChanges();
}
}
/// <summary>
///根据主键删除附件
/// </summary>
/// <param name="lawRegulationId"></param>
public static void DeleteAttachFileById(string menuId, string id)
{
Model.SUBQHSEDB db = Funs.DB;
Model.AttachFile attachFile = db.AttachFile.FirstOrDefault(e => e.MenuId == menuId && e.ToKeyId == id);
if (attachFile != null)
{
if (!string.IsNullOrEmpty(attachFile.AttachUrl))
{
BLL.UploadFileService.DeleteFile(Funs.RootPath, attachFile.AttachUrl);
}
db.AttachFile.DeleteOnSubmit(attachFile);
db.SubmitChanges();
}
}
#endregion
#region
/// <summary>
///根据主键删除流程
/// </summary>
/// <param name="lawRegulationId"></param>
public static void DeleteFlowOperateByID(string id)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(Funs.ConnString))
{
var flowOperateList = from x in db.Sys_FlowOperate where x.DataId == id select x;
if (flowOperateList.Count() > 0)
{
db.Sys_FlowOperate.DeleteAllOnSubmit(flowOperateList);
db.SubmitChanges();
}
}
}
#endregion
#region
/// <summary>
/// 保存数据
/// </summary>
/// <param name="menuId">菜单id</param>
/// <param name="dataId">主键id</param>
/// <param name="isClosed">是否关闭这步流程</param>
/// <param name="content">单据内容</param>
/// <param name="url">路径</param>
public static void btnSaveData(string projectId, string menuId, string dataId, string userId, bool isClosed, string content, string url)
{
Model.Sys_FlowOperate newFlowOperate = new Model.Sys_FlowOperate
{
MenuId = menuId,
DataId = dataId,
OperaterId = userId,
State = Const.State_2,
IsClosed = isClosed,
Opinion = "系统自动关闭流程",
ProjectId = projectId,
Url = url
};
var user = UserService.GetUserByUserId(newFlowOperate.OperaterId);
if (user != null)
{
var roles = RoleService.GetRoleByRoleId(user.RoleId);
if (roles != null && !string.IsNullOrEmpty(roles.RoleName))
{
newFlowOperate.AuditFlowName = "[" + roles.RoleName + "]";
}
else
{
newFlowOperate.AuditFlowName = "[" + user.UserName + "]";
}
newFlowOperate.AuditFlowName += "系统审核完成";
}
var updateFlowOperate = from x in Funs.DB.Sys_FlowOperate
where x.DataId == newFlowOperate.DataId && (x.IsClosed == false || !x.IsClosed.HasValue)
select x;
if (updateFlowOperate.Count() > 0)
{
foreach (var item in updateFlowOperate)
{
item.OperaterId = newFlowOperate.OperaterId;
item.OperaterTime = System.DateTime.Now;
item.State = newFlowOperate.State;
item.Opinion = newFlowOperate.Opinion;
item.AuditFlowName = "系统审核完成";
item.IsClosed = newFlowOperate.IsClosed;
Funs.DB.SubmitChanges();
}
}
else
{
int maxSortIndex = 1;
var flowSet = Funs.DB.Sys_FlowOperate.Where(x => x.DataId == newFlowOperate.DataId);
var sortIndex = flowSet.Select(x => x.SortIndex).Max();
if (sortIndex.HasValue)
{
maxSortIndex = sortIndex.Value + 1;
}
newFlowOperate.FlowOperateId = SQLHelper.GetNewID(typeof(Model.Sys_FlowOperate));
newFlowOperate.SortIndex = maxSortIndex;
newFlowOperate.OperaterTime = System.DateTime.Now;
newFlowOperate.AuditFlowName = "系统审核完成";
Funs.DB.Sys_FlowOperate.InsertOnSubmit(newFlowOperate);
Funs.DB.SubmitChanges();
}
if (newFlowOperate.IsClosed == true)
{
var updateNoClosedFlowOperate = from x in Funs.DB.Sys_FlowOperate
where x.DataId == newFlowOperate.DataId && (x.IsClosed == false || !x.IsClosed.HasValue)
select x;
if (updateNoClosedFlowOperate.Count() > 0)
{
foreach (var itemClosed in updateNoClosedFlowOperate)
{
itemClosed.IsClosed = true;
Funs.DB.SubmitChanges();
}
}
}
}
#endregion
#region http post请求
/// 接收http post请求
/// </summary>
/// <param name="url">地址</param>
/// <param name="parameters">查询参数集合</param>
/// <returns></returns>
public static string CreateGetHttpResponse(string url)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;//创建请求对象
request.Method = "Get";//请求方式
request.ContentType = "application/json;charset=utf-8";//链接类型
try
{
HttpWebResponse webresponse = request.GetResponse() as HttpWebResponse;
using (Stream s = webresponse.GetResponseStream())
{
StreamReader reader = new StreamReader(s, Encoding.UTF8);
return reader.ReadToEnd();
}
}
catch (Exception ex)
{
return ex.Message;
}
}
#endregion
/// <summary>
/// Http (GET/POST)
/// </summary>
/// <param name="url">请求URL</param>
/// <param name="parameters">请求参数</param>
/// <param name="method">请求方法</param>
/// <returns>响应内容</returns>
public static string sendHttp(string url, string data, string method)
{
if (method.ToLower() == "post")
{
HttpWebRequest req = null;
HttpWebResponse rsp = null;
System.IO.Stream reqStream = null;
try
{
req = (HttpWebRequest)WebRequest.Create(url);
req.Method = method;
req.KeepAlive = false;
req.ProtocolVersion = HttpVersion.Version10;
req.Timeout = 5000;
req.ContentType = "application/json;charset=utf-8";
byte[] bytes = Encoding.UTF8.GetBytes(data);
reqStream = req.GetRequestStream();
reqStream.Write(bytes, 0, bytes.Length);
reqStream = req.GetRequestStream();
rsp = (HttpWebResponse)req.GetResponse();
Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
return GetResponseAsString(rsp, encoding);
}
catch (Exception ex)
{
return ex.Message;
}
finally
{
if (reqStream != null) reqStream.Close();
if (rsp != null) rsp.Close();
}
}
else
{
//创建请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
//GET请求
request.Method = "GET";
request.ReadWriteTimeout = 5000;
request.ContentType = "text/html;charset=UTF-8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
//返回内容
string retString = myStreamReader.ReadToEnd();
return retString;
}
}
/// <summary>
/// 组装普通文本请求参数。
/// </summary>
/// <param name="parameters">Key-Value形式请求参数字典</param>
/// <returns>URL编码后的请求数据</returns>
static string BuildQuery(IDictionary<string, string> parameters, string encode)
{
StringBuilder postData = new StringBuilder();
bool hasParam = false;
IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();
while (dem.MoveNext())
{
string name = dem.Current.Key;
string value = dem.Current.Value;
// 忽略参数名或参数值为空的参数
if (!string.IsNullOrEmpty(name))//&& !string.IsNullOrEmpty(value)
{
if (hasParam)
{
postData.Append("&");
}
postData.Append(name);
postData.Append("=");
if (encode == "gb2312")
{
postData.Append(HttpUtility.UrlEncode(value, Encoding.GetEncoding("gb2312")));
}
else if (encode == "utf8")
{
postData.Append(HttpUtility.UrlEncode(value, Encoding.UTF8));
}
else
{
postData.Append(value);
}
hasParam = true;
}
}
return postData.ToString();
}
/// <summary>
/// 把响应流转换为文本。
/// </summary>
/// <param name="rsp">响应流对象</param>
/// <param name="encoding">编码方式</param>
/// <returns>响应文本</returns>
static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
{
System.IO.Stream stream = null;
StreamReader reader = null;
try
{
// 以字符流的方式读取HTTP响应
stream = rsp.GetResponseStream();
reader = new StreamReader(stream, encoding);
return reader.ReadToEnd();
}
finally
{
// 释放资源
if (reader != null) reader.Close();
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
}
}
/// <summary>
/// 计算两个字符串相似度
/// </summary>
/// <param name="oldStr"></param>
/// <param name="newStr"></param>
/// <returns></returns>
public static decimal GetLikeRate(string oldStr, string newStr)
{
//decimal Kq = 2;
//decimal Kr = 1;
//decimal Ks = 1;
//char[] ss = oldStr.ToCharArray();
//char[] st = newStr.ToCharArray();
////获取交集数量
//int q = 0;
//foreach (var s in ss)
//{
// if (st.Contains(s))
// {
// q++;
// }
//}
////int q = ss.Intersect(st).Count();
//int s1 = ss.Length - q;
//int r = st.Length - q;
//return Kq * q / (Kq * q + Kr * r + Ks * s1);
if (!string.IsNullOrEmpty(oldStr) && !string.IsNullOrEmpty(newStr))
{
char[] ss = oldStr.ToCharArray();
char[] st = newStr.ToCharArray();
//获取交集数量
decimal q = 0;
foreach (var s in st)
{
if (ss.Contains(s))
{
q++;
}
}
return q / st.Length;
}
else
{
return 0;
}
}
/// <summary>
/// 获取年龄
/// </summary>
/// <param name="birthDate"></param>
/// <param name="now"></param>
/// <returns></returns>
public static int CalculateAgeCorrect(DateTime birthDate)
{
DateTime now = DateTime.Now;
int age = now.Year - birthDate.Year;
if (now.Month < birthDate.Month || (now.Month == birthDate.Month && now.Day < birthDate.Day)) age--;
return age;
}
#region
/// <summary>
/// 获取比例
/// </summary>
public static string getRate(int A, int B)
{
if (A > 0 && B > 0)
{
var a = Convert.ToDouble(A);
var b = Convert.ToDouble(B);
return Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 1)).ToString() + "%";
}
else
{
return "0%";
}
}
#endregion
#region
/// <summary>
/// 获取比例值
/// </summary>
public static double getRateValue(int A, int B)
{
if (A > 0 && B > 0)
{
var a = Convert.ToDouble(A);
var b = Convert.ToDouble(B);
return Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 1));
}
else
{
return 0;
}
}
#endregion
#region -
/// <summary>
/// 绑定本部 单位-项目树
/// </summary>
/// <param name="tvProjectAndUnit"></param>
/// <param name="CurrUser"></param>
public static void SetUnitProjectTree(FineUIPro.Tree tvProjectAndUnit, Model.Sys_User CurrUser)
{
tvProjectAndUnit.Nodes.Clear();
string unitId = CurrUser.UnitId ?? GetThisUnitId();
var unit = UnitService.GetUnitByUnitId(unitId);
if (unit != null)
{
FineUIPro.TreeNode rootNode = new FineUIPro.TreeNode
{
Text = unit.UnitName,
ToolTip = "分公司机关",
NodeID = unitId,
EnableClickEvent = true
};
if (unitId == GetThisUnitId())
{
rootNode.ToolTip = "公司机关";
}
tvProjectAndUnit.Nodes.Add(rootNode);
var getProjects = ProjectService.GetProjectWorkList(unitId);
foreach (var item in getProjects)
{
FineUIPro.TreeNode drootNode = new FineUIPro.TreeNode
{
Text = item.ProjectName,
NodeID = item.ProjectId,
ToolTip = "分公司项目",
EnableClickEvent = true
};
if (unitId == GetThisUnitId())
{
rootNode.ToolTip = "直属项目";
}
rootNode.Nodes.Add(drootNode);
}
var getSubUnit = from x in Funs.DB.Base_Unit where x.IsBranch == true select x;
foreach (var subitem in getSubUnit)
{
FineUIPro.TreeNode crootNode = new FineUIPro.TreeNode
{
Text = subitem.UnitName,
ToolTip = "分公司机关",
NodeID = subitem.UnitId,
EnableClickEvent = true
};
tvProjectAndUnit.Nodes.Add(crootNode);
var getSProjects = ProjectService.GetProjectWorkList(subitem.UnitId);
foreach (var sitem in getSProjects)
{
FineUIPro.TreeNode scrootNode = new FineUIPro.TreeNode
{
Text = sitem.ProjectName,
ToolTip = "分公司项目",
NodeID = sitem.ProjectId,
EnableClickEvent = true
};
crootNode.Nodes.Add(scrootNode);
}
}
}
}
#endregion
}
}