using Learun.Application.AppMagager; using Learun.Util; using Nancy; using System.Collections.Generic; using System.Linq; using Learun.Application.Base.SystemModule; using Learun.Application.TwoDevelopment.LR_Desktop; using System.Text; using System.Data; using Learun.Application.WorkFlow; namespace Learun.Application.WebApi.Modules { public class DesktopApi : BaseApi { public DesktopApi() : base("/learun/adms/desktop") { Get["/setting"] = GetList; Get["/data"] = GetData; Get["/imgid"] = GetImgIds; Get["/img"] = GetImg; } private FunctionIBLL functionIBLL = new FunctionBLL(); private DTTargetIBLL dTTargetIBLL = new DTTargetBLL(); private DTListIBLL dTListIBLL = new DTListBLL(); private DatabaseLinkIBLL databaseLinkIbll = new DatabaseLinkBLL(); private DTChartIBLL dTChartIBLL = new DTChartBLL(); private DTImgIBLL dTImgIBLL = new DTImgBLL(); private NWFProcessIBLL nWFProcessIBLL = new NWFProcessBLL(); public Response GetList(dynamic _) { string ver = this.GetReqData();// 获取模板请求数据 var targetData = functionIBLL.GetDesktopList("1").OrderBy(m => m.F_Sort); var listData = functionIBLL.GetDesktopList("2").OrderBy(m => m.F_Sort); var chartData = functionIBLL.GetDesktopList("3").OrderBy(m => m.F_Sort); var data = new { target = targetData, list = listData, chart = chartData }; string md5 = Md5Helper.Encrypt(data.ToJson(), 32); if (md5 == ver) { return Success(""); } var data1 = new { data = new { target = targetData, list = listData, chart = chartData }, ver = md5 }; return Success(data1); } public Response GetData(dynamic _) { object jsonData = null; DesktopParam param = this.GetReqData(); switch (param.type) { case "Target": double valueRet = dTTargetIBLL.GetSqlData(param.id); jsonData = new { Id = param.id, value = valueRet, }; break; case "list": DataTable dtnew = null; var loginUserInfo = LoginUserInfo.Get(); string userId = loginUserInfo.userId; string postIds = "'" + loginUserInfo.postIds.Replace(",", "','") + "'"; string roleIds = "'" + loginUserInfo.roleIds.Replace(",", "','") + "'"; string companyId = loginUserInfo.companyId; string departmentId = loginUserInfo.departmentId; var dtListEntity = dTListIBLL.GetLR_DT_ListEntity(param.id); if (dtListEntity.F_Id == "33d50f1a-a64d-4b86-a6d4-2d937226de95") //待办 { //审核者判断 var strSql = new StringBuilder(); // 添加委托信息 List delegateList = nWFProcessIBLL.GetDelegateProcess(userId); strSql.Append(" AND 1=1"); strSql.Append($" AND r1.F_UserId ='{userId}' "); foreach (var item in delegateList) { string processId = "'" + item.wfProcessId.Replace(",", "','") + "'"; string userI2 = "'" + item.userId + "'"; strSql.Append(" OR (r1.F_UserId =" + userI2 + " AND t1.F_ProcessId in (" + processId + ") AND t1.F_Type != 2 )"); } //strSql.Append(" AND ( t.F_AuditorId = '1' OR "); //strSql.Append(" t.F_AuditorId = '" + userId + "' "); //if (!string.IsNullOrEmpty(loginUserInfo.postIds)) //{ // strSql.Append(" OR (t.F_AuditorId in (" + postIds + ") AND t.F_CompanyId = '1' AND t.F_DepartmentId = '1' ) "); // strSql.Append(" OR (t.F_AuditorId in (" + postIds + ") AND t.F_CompanyId = '" + companyId + "' ) "); // strSql.Append(" OR (t.F_AuditorId in (" + postIds + ") AND t.F_DepartmentId = '" + departmentId + "' ) "); //} //if (!string.IsNullOrEmpty(loginUserInfo.roleIds)) //{ // strSql.Append(" OR (t.F_AuditorId in (" + roleIds + ") AND t.F_CompanyId = '1' AND t.F_DepartmentId = '1' ) "); // strSql.Append(" OR (t.F_AuditorId in (" + roleIds + ") AND t.F_CompanyId = '" + companyId + "' ) "); // strSql.Append(" OR (t.F_AuditorId in (" + roleIds + ") AND t.F_DepartmentId = '" + departmentId + "') "); //} //strSql.Append(" ) order by t.F_CreateDate "); dtListEntity.F_Sql = dtListEntity.F_Sql.Replace("MMM", strSql.ToString()); } var reqDataTable = databaseLinkIbll.FindTable(dtListEntity.F_DataSourceId.Trim(), dtListEntity.F_Sql); if (dtListEntity.F_Id == "88f94781-acb8-47ca-864b-f96e3d9b5587") { dtnew = reqDataTable.Clone(); for (int i = 0; i < reqDataTable.Rows.Count; i++) { if (reqDataTable.Rows[i]["F_SendPostId"] != null && reqDataTable.Rows[i]["F_SendPostId"].ToString() != "") { if (!string.IsNullOrEmpty(loginUserInfo.postIds)) { if (loginUserInfo.postIds.Contains(",")) { foreach (var postid in loginUserInfo.postIds.Split(',')) { if (reqDataTable.Rows[i]["F_SendPostId"].ToString().Contains(postid)) { dtnew.Rows.Add(reqDataTable.Rows[i].ItemArray); break; } } } else { if (reqDataTable.Rows[i]["F_SendPostId"].ToString().Contains(loginUserInfo.postIds)) { dtnew.Rows.Add(reqDataTable.Rows[i].ItemArray); } } } } else { if (reqDataTable.Rows[i]["F_SendDeptId"] != null && reqDataTable.Rows[i]["F_SendDeptId"].ToString() != "") { if (reqDataTable.Rows[i]["F_SendDeptId"].ToString().Contains(loginUserInfo.departmentId)) { dtnew.Rows.Add(reqDataTable.Rows[i].ItemArray); } } else { dtnew.Rows.Add(reqDataTable.Rows[i].ItemArray); } } } jsonData = new { Id = param.id, value = dtnew }; } else { jsonData = new { Id = param.id, value = reqDataTable }; } break; case "chart": var dtListEntity1 = dTChartIBLL.GetLR_DT_ChartEntity(param.id); var reqDataTable1 = databaseLinkIbll.FindTable(dtListEntity1.F_DataSourceId.Trim(), dtListEntity1.F_Sql); jsonData = new { Id = param.id, value = reqDataTable1, }; break; } return Success(jsonData); } public Response GetImgIds(dynamic _) { //分布式部署 if (string.IsNullOrEmpty(Request.Query["isDistributed"])) { var data = dTImgIBLL.GetList().Where(m => m.F_EnabledMark == 1).Select(m => m.F_Id); return Success(data); } else { var data = dTImgIBLL.GetList().Where(m => m.F_EnabledMark == 1); //分布式部署 if (!string.IsNullOrEmpty(Request.Query["isDistributed"])) { //主站地址 string webrootpath = Config.GetValue("webrootpath"); string fileAppDTImg = Config.GetValue("fileAppDTImg"); foreach (var imgitem in data) { if (fileAppDTImg.Contains("Resource")) { imgitem.DistributedUrl = string.Format("{0}/{1}/{2}{3}", webrootpath, fileAppDTImg.Substring(fileAppDTImg.LastIndexOf("Resource")), imgitem.F_Id, imgitem.F_FileName); } } } return Success(data.Select(m=>m.DistributedUrl)); } } public Response GetImg(dynamic _) { string param = this.GetReqData(); dTImgIBLL.GetImg(param); return Success(""); } } public class DesktopParam { public string type { get; set; } public string id { get; set; } } }