From e8c8ac8d23035dbf455901c3f67924d863fffb53 Mon Sep 17 00:00:00 2001 From: jackchenyang <874821510@qq.com> Date: Fri, 17 May 2024 15:28:32 +0800 Subject: [PATCH] 11212121 --- HJGL/.vs/HJGL/v17/.suo | Bin 1051136 -> 1052672 bytes HJGL/BLL/BLL.csproj | 1 + HJGL/BLL/Common/MailHelper.cs | 11 +- HJGL/BLL/Schedule/TaskScheduleService.cs | 78 +++++++++ .../SendEmail/Email_SendTemplateService.cs | 20 ++- .../Email_Send/Email_SendTemplate_Edit.aspx | 14 +- .../Email_SendTemplate_Edit.aspx.cs | 1 + .../Email_Send/Email_SendTemplate_List.aspx | 2 +- .../Email_Send/Email_Send_Edit.aspx.cs | 9 +- .../Email_Send/SelectUserControl.ascx.cs | 2 +- HJGL/FineUIPro.Web/Global.asax.cs | 8 +- HJGL/FineUIPro.Web/Web.config | 2 +- .../common/SysManage/UserListEdit.aspx.cs | 3 +- HJGL/WebApi/App_Start/WebApiConfig.cs | 4 - HJGL/WebApi/Controllers/BaseInfoController.cs | 156 ------------------ HJGL/WebApi/Controllers/CheckController.cs | 105 ------------ .../Controllers/FileUploadController.cs | 117 ------------- HJGL/WebApi/Controllers/HomeController.cs | 18 -- .../Controllers/MessagePushController.cs | 103 ------------ .../Controllers/PreWeldingDailyController.cs | 35 ---- .../Controllers/ReportQueryController.cs | 108 ------------ HJGL/WebApi/Controllers/TaskController.cs | 34 ++++ HJGL/WebApi/Controllers/UserController.cs | 130 --------------- HJGL/WebApi/Controllers/WelderController.cs | 58 ------- HJGL/WebApi/ErrLog.txt | 44 +++++ HJGL/WebApi/Filter/PermissionAttribute.cs | 61 ------- HJGL/WebApi/Web.config | 4 +- HJGL/WebApi/WebApi.csproj | 12 +- 28 files changed, 211 insertions(+), 929 deletions(-) create mode 100644 HJGL/BLL/Schedule/TaskScheduleService.cs delete mode 100644 HJGL/WebApi/Controllers/BaseInfoController.cs delete mode 100644 HJGL/WebApi/Controllers/CheckController.cs delete mode 100644 HJGL/WebApi/Controllers/FileUploadController.cs delete mode 100644 HJGL/WebApi/Controllers/HomeController.cs delete mode 100644 HJGL/WebApi/Controllers/MessagePushController.cs delete mode 100644 HJGL/WebApi/Controllers/PreWeldingDailyController.cs delete mode 100644 HJGL/WebApi/Controllers/ReportQueryController.cs create mode 100644 HJGL/WebApi/Controllers/TaskController.cs delete mode 100644 HJGL/WebApi/Controllers/UserController.cs delete mode 100644 HJGL/WebApi/Controllers/WelderController.cs create mode 100644 HJGL/WebApi/ErrLog.txt delete mode 100644 HJGL/WebApi/Filter/PermissionAttribute.cs diff --git a/HJGL/.vs/HJGL/v17/.suo b/HJGL/.vs/HJGL/v17/.suo index e1850e8ebd1ff8f72ff974e22e9c8c89ed7f967e..1bb5cea27fe292b62aad108a478379e5553599b4 100644 GIT binary patch delta 63714 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 Va<7s}qtGv%I@%qz`F~P;{|BTKDPsTt diff --git a/HJGL/BLL/BLL.csproj b/HJGL/BLL/BLL.csproj index d13a5a3..d3515ff 100644 --- a/HJGL/BLL/BLL.csproj +++ b/HJGL/BLL/BLL.csproj @@ -120,6 +120,7 @@ + diff --git a/HJGL/BLL/Common/MailHelper.cs b/HJGL/BLL/Common/MailHelper.cs index ad2dc72..50df84f 100644 --- a/HJGL/BLL/Common/MailHelper.cs +++ b/HJGL/BLL/Common/MailHelper.cs @@ -1,6 +1,8 @@ -using Model; +using BLL; +using Model; using System; using System.Collections.Generic; +using System.Linq; using System.Net.Mail; namespace FineUIPro.Web.common { @@ -170,12 +172,13 @@ namespace FineUIPro.Web.common } - public static Email_Pop getEmailPop(string EmailID) + public static Email_Pop getEmailPop() { - Email_Pop pp = new Email_Pop(); - pp = BLL.Email_Send.Email_PopService.GetEmail_Pop(EmailID); + var pp = Funs.DB.Email_Pop.FirstOrDefault(); return pp; + + } } diff --git a/HJGL/BLL/Schedule/TaskScheduleService.cs b/HJGL/BLL/Schedule/TaskScheduleService.cs new file mode 100644 index 0000000..248368c --- /dev/null +++ b/HJGL/BLL/Schedule/TaskScheduleService.cs @@ -0,0 +1,78 @@ +using FineUIPro.Web.common; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BLL +{ + public class TaskScheduleService + { + + //NDE点口未审核统计 + public static int NDEWeldPointNotAuditStatusTotal(int type) + { + if (type == 0) + return 0; + + StringBuilder strSql = new StringBuilder(); + strSql.Append(@"SELECT count(1) FROM dbo.View_Batch_PointBatchItem WHERE PointState IS NOT NULL "); + switch (type) + { + case 1: + strSql.Append(" AND JLAudit='未审核'"); + break; + case 2: + strSql.Append(" AND GLGSAudit='未审核' "); + break; + } + + int totalCount= SQLHelper.getIntValue(strSql.ToString()); + + return totalCount; + } + + public static void GetNDEAuditEmailTemplate(int type) + { + var pop = MailHelper.getEmailPop(); + if (pop == null) + { + BLL.ErrLogInfo.WriteLog($"未配置邮件服务器"); + return; + } + string templateContent = string.Empty; + List emailSend = new List(); //发送人 + List emailCC = new List(); //抄送给 + string mailSubject = string.Empty; + string typeStr = string.Empty; + if (type == 1) + typeStr = "监理"; + if (type == 2) + typeStr = "管理公司"; + + var emailTemplate = BLL.Email_Send.Email_SendTemplateService.GetEmailNotifier(typeStr); + if (emailTemplate == null) + { + BLL.ErrLogInfo.WriteLog($"不存在此邮件模版"); + return; + } + emailSend = BLL.Email_Send.Email_SendTemplateService.GetEmailByTemplateId(emailTemplate.EmailId, "0"); + emailCC = BLL.Email_Send.Email_SendTemplateService.GetEmailByTemplateId(emailTemplate.EmailId, "1"); + if (emailSend.Count == 0) + { + BLL.ErrLogInfo.WriteLog($"未检测到发送人邮箱,请先配置邮箱地址"); + return; + } + mailSubject = $"{typeStr}—{emailTemplate.EailTiaoJian}"; //发送主题 + templateContent = emailTemplate.EmailContext; + int totalCount = BLL.TaskScheduleService.NDEWeldPointNotAuditStatusTotal(type); + templateContent = templateContent.Replace("{{totalCount}}", totalCount.ToString()); + + string resultMessage = ""; + MailHelper.SendNetMail(pop, pop.EmailYx, emailSend.ToArray(), mailSubject, templateContent, string.Empty, string.Empty, string.Empty, emailCC.ToArray(), out resultMessage); + + } + } +} diff --git a/HJGL/BLL/SendEmail/Email_SendTemplateService.cs b/HJGL/BLL/SendEmail/Email_SendTemplateService.cs index 1bca1f2..ec65e4c 100644 --- a/HJGL/BLL/SendEmail/Email_SendTemplateService.cs +++ b/HJGL/BLL/SendEmail/Email_SendTemplateService.cs @@ -1,4 +1,5 @@ using Model; +using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; using System.Data.Common; @@ -79,7 +80,7 @@ namespace BLL.Email_Send } #endregion - #region 根据主键删除EProject + #region 根据主键删除 /// /// 根据主键删除EProject /// @@ -95,7 +96,7 @@ namespace BLL.Email_Send } #endregion - #region 根据EmailNotifier查询EProject + #region 根据EmailNotifier查询 /// /// 根据EmailNotifier查询EProject /// @@ -106,7 +107,7 @@ namespace BLL.Email_Send } #endregion - #region 根据EmailNotifier查询EProject + #region 根据EmailNotifier查询 /// /// 根据EmailNotifier查询EProject /// @@ -117,6 +118,19 @@ namespace BLL.Email_Send } #endregion + #region 根据模版ID获取发送人列表 + public static List GetEmailByTemplateId(string templateId,string isCc) + { + var result = (from a in Funs.DB.Email_ToPeople + join b in Funs.DB.Sys_User on a.EmuserID equals b.UserId + where b.IsPost.Value && b.Email!="" + && a.EMPeopleType==isCc && a.EmtempID==templateId + select b.Email + ).ToList(); + + return result; + } + #endregion #region 事务提交 新增 /// diff --git a/HJGL/FineUIPro.Web/Email_Send/Email_SendTemplate_Edit.aspx b/HJGL/FineUIPro.Web/Email_Send/Email_SendTemplate_Edit.aspx index fa51bb6..4857287 100644 --- a/HJGL/FineUIPro.Web/Email_Send/Email_SendTemplate_Edit.aspx +++ b/HJGL/FineUIPro.Web/Email_Send/Email_SendTemplate_Edit.aspx @@ -8,7 +8,7 @@ - + 编辑
@@ -17,7 +17,7 @@ - + @@ -25,7 +25,7 @@ - @@ -34,7 +34,7 @@ - @@ -53,8 +53,8 @@ - - + + @@ -63,7 +63,7 @@ - diff --git a/HJGL/FineUIPro.Web/Email_Send/Email_SendTemplate_Edit.aspx.cs b/HJGL/FineUIPro.Web/Email_Send/Email_SendTemplate_Edit.aspx.cs index 10403c9..7fdf4e4 100644 --- a/HJGL/FineUIPro.Web/Email_Send/Email_SendTemplate_Edit.aspx.cs +++ b/HJGL/FineUIPro.Web/Email_Send/Email_SendTemplate_Edit.aspx.cs @@ -107,6 +107,7 @@ namespace FineUIPro.Web.Email_Send ddlEmailParamsID.DataValueField = "MailClassID"; ddlEmailParamsID.DataSource = email_Params; ddlEmailParamsID.DataBind(); + ddlEmailParamsID.Items.Insert(0,new ListItem("","")); } #endregion diff --git a/HJGL/FineUIPro.Web/Email_Send/Email_SendTemplate_List.aspx b/HJGL/FineUIPro.Web/Email_Send/Email_SendTemplate_List.aspx index 15ae2a0..8f90836 100644 --- a/HJGL/FineUIPro.Web/Email_Send/Email_SendTemplate_List.aspx +++ b/HJGL/FineUIPro.Web/Email_Send/Email_SendTemplate_List.aspx @@ -97,7 +97,7 @@ - diff --git a/HJGL/FineUIPro.Web/Email_Send/Email_Send_Edit.aspx.cs b/HJGL/FineUIPro.Web/Email_Send/Email_Send_Edit.aspx.cs index 6c653f9..9b575d3 100644 --- a/HJGL/FineUIPro.Web/Email_Send/Email_Send_Edit.aspx.cs +++ b/HJGL/FineUIPro.Web/Email_Send/Email_Send_Edit.aspx.cs @@ -107,9 +107,12 @@ namespace FineUIPro.Web.Email_Send protected void btnSave_Click(object sender, EventArgs e) { //string mailFrom = MailHelper.MailServerFrom; - Email_Pop pop = new Email_Pop(); - pop = MailHelper.getEmailPop("7EC5E991-B7A0-495A-90ED-2BE15370C959"); - + var pop = MailHelper.getEmailPop(); + if (pop == null) + { + ShowNotify("未配置邮件服务器", MessageBoxIcon.Error); + return; + } string mailFrom = pop.EmailYx; diff --git a/HJGL/FineUIPro.Web/Email_Send/SelectUserControl.ascx.cs b/HJGL/FineUIPro.Web/Email_Send/SelectUserControl.ascx.cs index d2e0d36..1b74c08 100644 --- a/HJGL/FineUIPro.Web/Email_Send/SelectUserControl.ascx.cs +++ b/HJGL/FineUIPro.Web/Email_Send/SelectUserControl.ascx.cs @@ -94,7 +94,7 @@ namespace FineUIPro.Web.Email_Send string sortField = Grid1.SortField; string sortDirection = Grid1.SortDirection; - string strSql = @"select a.UserId,b.UnitId,b.UserName,c.UnitName from Project_User as a inner join Sys_User as b on a.UserId=b.UserId + string strSql = @"select a.UserId,b.UnitId,b.UserName,c.UnitName,b.Email from Project_User as a inner join Sys_User as b on a.UserId=b.UserId inner join Base_Unit as c on b.UnitId=c.UnitId where b.IsPost=1 order by c.UnitName "; List listStr = new List(); SqlParameter[] parameter = listStr.ToArray(); diff --git a/HJGL/FineUIPro.Web/Global.asax.cs b/HJGL/FineUIPro.Web/Global.asax.cs index 834db2a..a99c92b 100644 --- a/HJGL/FineUIPro.Web/Global.asax.cs +++ b/HJGL/FineUIPro.Web/Global.asax.cs @@ -14,6 +14,8 @@ using System.Data; using System.Data.SqlClient; using BLL; + using FineUIPro.Web.common; + using System.Threading.Tasks; public class Global : System.Web.HttpApplication { @@ -47,6 +49,8 @@ // 开启线程 System.Threading.Thread LoadServiceData = new System.Threading.Thread(new System.Threading.ThreadStart(ExpirePoint)); LoadServiceData.Start(); + + } private void ExpirePoint() @@ -60,6 +64,7 @@ ExpirePoint.Elapsed += new System.Timers.ElapsedEventHandler(ExpirePoint_Elapsed); } + void ExpirePoint_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { @@ -141,7 +146,8 @@ } } - + + protected void Session_Start(object sender, EventArgs e) { Session.Timeout = 36000; diff --git a/HJGL/FineUIPro.Web/Web.config b/HJGL/FineUIPro.Web/Web.config index 9ecdad1..96e7b3b 100644 --- a/HJGL/FineUIPro.Web/Web.config +++ b/HJGL/FineUIPro.Web/Web.config @@ -14,7 +14,7 @@ providerName="System.Data.SqlClient" />--> - + diff --git a/HJGL/FineUIPro.Web/common/SysManage/UserListEdit.aspx.cs b/HJGL/FineUIPro.Web/common/SysManage/UserListEdit.aspx.cs index d510e42..dc14f67 100644 --- a/HJGL/FineUIPro.Web/common/SysManage/UserListEdit.aspx.cs +++ b/HJGL/FineUIPro.Web/common/SysManage/UserListEdit.aspx.cs @@ -69,7 +69,8 @@ namespace FineUIPro.Web.common.SysManage this.txtUserName.Text = user.UserName; this.txtAccount.Text = user.Account; this.txtDepart.Text = user.Depart; - + this.txtEmail.Text = user.Email; + this.txtEmailPassword.Text = user.EmailPassword; if (user.IsPost.HasValue) { this.cbIsPost.Checked = user.IsPost.Value; diff --git a/HJGL/WebApi/App_Start/WebApiConfig.cs b/HJGL/WebApi/App_Start/WebApiConfig.cs index 2f808d1..f92be46 100644 --- a/HJGL/WebApi/App_Start/WebApiConfig.cs +++ b/HJGL/WebApi/App_Start/WebApiConfig.cs @@ -2,8 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Web.Http; -using WebAPI.Filter; - namespace WebApi { public static class WebApiConfig @@ -14,8 +12,6 @@ namespace WebApi GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); // Web API 路由 config.MapHttpAttributeRoutes(); - // - config.Filters.Add(new PermissionAttribute()); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", diff --git a/HJGL/WebApi/Controllers/BaseInfoController.cs b/HJGL/WebApi/Controllers/BaseInfoController.cs deleted file mode 100644 index d6bc745..0000000 --- a/HJGL/WebApi/Controllers/BaseInfoController.cs +++ /dev/null @@ -1,156 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using BLL; -using System.Web.Http; - -namespace WebApi.Controllers -{ - public class BaseInfoController : ApiController - { - #region 根据登陆的用户ID获取项目列表(对施工单位) - /// - /// 根据登陆的用户ID获取项目列表 - /// - /// 登陆的用户ID - /// 项目区域 - /// - public Model.ResponeData getProjectList(string userId, string projectArea) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIBaseInfoService.getProjectList(userId, projectArea); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 根据项目区域获取项目列表(对查询) - /// - /// 根据项目区域获取项目列表 - /// - /// 登陆的用户ID - /// 项目区域 - /// - public Model.ResponeData getProjectListByArea(string projectArea) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIBaseInfoService.getProjectListByArea(projectArea); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 根据项目ID和施工单位获取区域列表 - /// - /// 根据项目ID和施工单位获取区域列表 - /// - /// 项目ID - /// 施工单位ID - /// - public Model.ResponeData getWorkAreaList(string projectId, string unitId) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIBaseInfoService.getWorkAreaList(projectId, unitId); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 根据项目ID和施工区域获取管线列表信息 - /// - /// 根据项目ID和施工区域获取管线列表信息 - /// - /// 项目ID - /// 施工区域ID - /// - public Model.ResponeData getPipeLineList(string projectId, string wordAreaId) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIBaseInfoService.getPipeLineList(projectId, wordAreaId); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 根据管线ID获取焊口列表信息 - /// - /// 根据管线ID获取焊口列表信息 - /// - /// 管线ID - /// - public Model.ResponeData getWeldJointList(string pipelineId) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIBaseInfoService.getWeldJointList(pipelineId); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 根据企业ID获取装置列表信息 - /// - /// 根据管线ID获取焊口列表信息 - /// - /// 管线ID - /// - public Model.ResponeData getInstallationList(string projectId) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIBaseInfoService.getInstallationList(projectId); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - - } - #endregion - - - } -} \ No newline at end of file diff --git a/HJGL/WebApi/Controllers/CheckController.cs b/HJGL/WebApi/Controllers/CheckController.cs deleted file mode 100644 index c9b9dab..0000000 --- a/HJGL/WebApi/Controllers/CheckController.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web.Http; -using BLL; - -namespace WebApi.Controllers -{ - public class CheckController : ApiController - { - #region 保存检查(巡检)信息 - /// - /// 保存检查(巡检)信息 - /// - /// 检查信息 - /// - [HttpPost] - public Model.ResponeData SaveCheckInfo([FromBody] Model.CheckItem newItem) - { - var responeData = new Model.ResponeData(); - try - { - APICheckService.SaveCheckInfo(newItem); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 更新检查(巡检)信息 - /// - /// 保存检查(巡检)信息 - /// - /// 检查信息 - /// - [HttpPost] - public Model.ResponeData UpdateReCheckInfo([FromBody] Model.CheckItem newItem) - { - var responeData = new Model.ResponeData(); - try - { - APICheckService.UpdateReCheckInfo(newItem); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 获取项目区域的检查列表 - /// - /// 获取项目区域的检查列表 - /// - /// 项目区域 - /// - public Model.ResponeData GetCheckList(string projectArea) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APICheckService.GetCheckList(projectArea); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region - /// - /// 根据主建获取检查信息 - /// - /// 主建 - /// - public Model.ResponeData GetCheckInfo(string checkId) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APICheckService.GetCheckInfo(checkId); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - } -} \ No newline at end of file diff --git a/HJGL/WebApi/Controllers/FileUploadController.cs b/HJGL/WebApi/Controllers/FileUploadController.cs deleted file mode 100644 index 797bab3..0000000 --- a/HJGL/WebApi/Controllers/FileUploadController.cs +++ /dev/null @@ -1,117 +0,0 @@ -using BLL; -using System; -using System.Configuration; -using System.Drawing; -using System.IO; -using System.Text; -using System.Web; -using System.Web.Http; - - -namespace WebApi.Controllers -{ - public class FileUploadController : ApiController - { - #region 附件上传 - /// - /// 附件上传 - /// - /// - public IHttpActionResult Post() - { - HttpFileCollection files = HttpContext.Current.Request.Files; - string typeName = HttpContext.Current.Request["typeName"]; - if (string.IsNullOrEmpty(typeName)) - { - typeName = "WebApi"; - } - string reUrl = string.Empty; - if (files != null && files.Count > 0) - { - string folderUrl = "FileUpLoad/" + typeName + "/" + DateTime.Now.ToString("yyyy-MM") + "/"; - string localRoot = ConfigurationManager.AppSettings["localRoot"] + folderUrl; //物理路径 - if (!Directory.Exists(localRoot)) - { - Directory.CreateDirectory(localRoot); - } - // foreach (string key in files.AllKeys) - for(int i=0;i - /// 推送的热处理委托单 - ///
- /// 登陆的用户ID - /// - public Model.ResponeData GetPushHotTrust(string userId) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data =APIMessagePushService.GetPushHotTrust(userId); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 推送的NDE检测委托单 - /// - /// 推送的NDE检测委托单 - /// - /// 登陆的用户ID - /// - public Model.ResponeData GetPushNDTTrust(string userId) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIMessagePushService.GetPushNDTTrust(userId); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 焊工一次合格率低于96%预警 - /// - /// 焊工一次合格率低于96%预警 - /// - /// 项目区域 - /// - public Model.ResponeData GetWelderOnePassRateWarning(string projectArea) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIMessagePushService.GetWelderOnePassRateWarning(projectArea); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 施工单位一次合格率低于96%预警 - /// - /// 施工单位一次合格率低于96%预警 - /// - /// 项目区域 - /// - public Model.ResponeData GetUnitOnePassRateWarning(string projectArea) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIMessagePushService.GetUnitOnePassRateWarning(projectArea); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - } -} \ No newline at end of file diff --git a/HJGL/WebApi/Controllers/PreWeldingDailyController.cs b/HJGL/WebApi/Controllers/PreWeldingDailyController.cs deleted file mode 100644 index b0ce8a1..0000000 --- a/HJGL/WebApi/Controllers/PreWeldingDailyController.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web.Http; -using BLL; - -namespace WebApi.Controllers -{ - public class PreWeldingDailyController : ApiController - { - #region 保存焊接日报 - /// - /// 保存焊接日报 - /// - /// 焊口信息 - /// - [HttpPost] - public Model.ResponeData SavePreWeldingDaily([FromBody] List newItem) - { - var responeData = new Model.ResponeData(); - try - { - APIPreWeldingDailyService.SavePreWeldingDaily(newItem); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - } -} \ No newline at end of file diff --git a/HJGL/WebApi/Controllers/ReportQueryController.cs b/HJGL/WebApi/Controllers/ReportQueryController.cs deleted file mode 100644 index b40d643..0000000 --- a/HJGL/WebApi/Controllers/ReportQueryController.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using BLL; -using System.Web.Http; - -namespace WebApi.Controllers -{ - public class ReportQueryController : ApiController - { - #region 根据焊工号获取焊工业绩 - /// - /// 根据焊工号获取焊工业绩 - /// - /// - /// - /// - public Model.ResponeData GetWelderPerformanceByWelderCode(string projectId, string welderCode) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIReportQueryService.GetWelderPerformanceByWelderCode(projectId, welderCode); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 根据条件获取管线综合信息 - /// - /// 根据条件获取管线综合信息 - /// - /// 项目 - /// 区域 - /// 管线号 - /// - public Model.ResponeData GetPipeLineInfo(string projectId, string workAreaId, string pipelineCode) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIReportQueryService.GetPipeLineInfo(projectId, workAreaId, pipelineCode); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 焊接工作量查询 - /// - /// 焊接工作量查询 - /// - /// 项目区域 - /// 项目Id - /// - public Model.ResponeData GetWeldWorkload(string projectArea, string projectId) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIReportQueryService.GetWeldWorkload(projectArea, projectId); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 拍片工作量查询 - /// - /// 焊接工作量查询 - /// - /// 项目区域 - /// 项目Id - /// - public Model.ResponeData GetWeldNdtFilm(string projectArea, string projectId) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIReportQueryService.GetWeldNdtFilm(projectArea, projectId); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - } -} \ No newline at end of file diff --git a/HJGL/WebApi/Controllers/TaskController.cs b/HJGL/WebApi/Controllers/TaskController.cs new file mode 100644 index 0000000..35b69fa --- /dev/null +++ b/HJGL/WebApi/Controllers/TaskController.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Http; + +namespace WebApi.Controllers +{ + public class TaskController: ApiController + { + [HttpGet] + public Model.ResponeData GetNDEAuditEmailTemplate() + { + var model=new Model.ResponeData(); + + try + { + //定时任务跑 监理 未审核的点口邮件 + BLL.TaskScheduleService.GetNDEAuditEmailTemplate(1); + //定时任务跑 管理公司 未审核的点口邮件 + BLL.TaskScheduleService.GetNDEAuditEmailTemplate(2); + model.code = 200; + model.message = "OK"; + } + catch (Exception ex) + { + BLL.ErrLogInfo.WriteLog(ex, "The scheduled task failed to run the unaudited point-of-mail. Procedure"); + model.code=500; + model.message = "Error"; + } + return model; + } + } +} \ No newline at end of file diff --git a/HJGL/WebApi/Controllers/UserController.cs b/HJGL/WebApi/Controllers/UserController.cs deleted file mode 100644 index daeb7cd..0000000 --- a/HJGL/WebApi/Controllers/UserController.cs +++ /dev/null @@ -1,130 +0,0 @@ -using BLL; -using System; -using System.Linq; -using System.Web.Http; - -namespace WebAPI.Controllers -{ - /// - /// 用户 - /// - public class UserController : ApiController - { - #region 根据账号或手机号码登录方法 - /// - /// 登录方法 - /// - /// - /// - [HttpPost] - public Model.ResponeData postLoginOn([FromBody] Model.UserItem userInfo) - { - //登录方法 Model.UserItem - var responeData = new Model.ResponeData - { - message = "账号密码不匹配!" - }; - try - { - ////用户登录 - var user = APIUserService.UserLogOn(userInfo); - if (user != null) - { - responeData.message = "登录成功!"; - responeData.data = user; - } - //else 暂不用 - //{ - // // 焊工登录 - // var user1 = APIWelderService.PersonLogOn(userInfo); - // if (user1 != null) - // { - // responeData.message = "登录成功!"; - // responeData.code = 2; - // responeData.data = user1; - // } - //} - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 根据userid获取用户信息 - /// - /// 根据userid获取用户信息 - /// - /// - /// - public Model.ResponeData getUserByUserId(string userId) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIUserService.getUserByUserId(userId); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 根据登陆用户的单位ID和选择的项目获取单位类型(1、建设方,2、总承包商,3、监理,4、检测,5、施工) - /// - /// 根据登陆用户的单位ID和选择的项目获取单位类型(1、建设方,2、总承包商,3、监理,4、检测,5、施工) - /// - /// 项目ID - /// 单位ID - /// - public Model.ResponeData getUserInfo(string projectId, string unitId) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIUserService.getUserInfo(projectId, unitId); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 获取项目区域的用户列表 - /// - /// 获取项目区域的用户列表 - /// - /// 项目区域 - /// - public Model.ResponeData getUserListByProjectArea(string projectArea) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIUserService.getUserListByProjectArea(projectArea); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - - } -} diff --git a/HJGL/WebApi/Controllers/WelderController.cs b/HJGL/WebApi/Controllers/WelderController.cs deleted file mode 100644 index 3685980..0000000 --- a/HJGL/WebApi/Controllers/WelderController.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web.Http; -using BLL; - -namespace WebApi.Controllers -{ - public class WelderController : ApiController - { - #region 获取焊工登录信息 - /// - /// 获取焊工登录信息 - /// - /// 焊工登录信息 - /// - public Model.ResponeData WelderLogOn(Model.UserItem userInfo) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIWelderService.WelderLogOn(userInfo); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - - #region 根据项目ID和施工单位获取项目焊工列表信息 - /// - /// 根据项目ID和施工单位获取项目焊工列表信息 - /// - /// 项目ID - /// 施工单位ID - /// - public Model.ResponeData getWelderList(string projectId, string unitId) - { - var responeData = new Model.ResponeData(); - try - { - responeData.data = APIWelderService.getWelderList(projectId, unitId); - } - catch (Exception ex) - { - responeData.code = 0; - responeData.message = ex.Message; - } - - return responeData; - } - #endregion - } -} \ No newline at end of file diff --git a/HJGL/WebApi/ErrLog.txt b/HJGL/WebApi/ErrLog.txt new file mode 100644 index 0000000..ef9d8d6 --- /dev/null +++ b/HJGL/WebApi/ErrLog.txt @@ -0,0 +1,44 @@ + +错误信息开始=====> +错误类型:NotSupportedException +错误信息:方法“Boolean IsNullOrEmpty(System.String)”不支持转换为 SQL。 +错误堆栈: + 在 System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.TranslateStringStaticMethod(SqlMethodCall mc) + 在 System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitMethodCall(SqlMethodCall mc) + 在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) + 在 System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression exp) + 在 System.Data.Linq.SqlClient.SqlVisitor.VisitUnaryOperator(SqlUnary uo) + 在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) + 在 System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression exp) + 在 System.Data.Linq.SqlClient.SqlVisitor.VisitBinaryOperator(SqlBinary bo) + 在 System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitBinaryOperator(SqlBinary bo) + 在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) + 在 System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression exp) + 在 System.Data.Linq.SqlClient.SqlVisitor.VisitBinaryOperator(SqlBinary bo) + 在 System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitBinaryOperator(SqlBinary bo) + 在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) + 在 System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression exp) + 在 System.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(SqlSelect select) + 在 System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitSelect(SqlSelect select) + 在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) + 在 System.Data.Linq.SqlClient.SqlVisitor.VisitAlias(SqlAlias a) + 在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) + 在 System.Data.Linq.SqlClient.SqlVisitor.VisitSource(SqlSource source) + 在 System.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(SqlSelect select) + 在 System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitSelect(SqlSelect select) + 在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) + 在 System.Data.Linq.SqlClient.SqlProvider.BuildQuery(ResultShape resultShape, Type resultType, SqlNode node, ReadOnlyCollection`1 parentParameters, SqlNodeAnnotations annotations) + 在 System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations) + 在 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) + 在 System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator() + 在 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) + 在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) + 在 BLL.Email_Send.Email_SendTemplateService.GetEmailByTemplateId(String templateId, String isCc) 位置 E:\湛江巴斯夫\Basf_TCC7\HJGL\BLL\SendEmail\Email_SendTemplateService.cs:行号 124 + 在 BLL.TaskScheduleService.GetNDEAuditEmailTemplate(Int32 type) 位置 E:\湛江巴斯夫\Basf_TCC7\HJGL\BLL\Schedule\TaskScheduleService.cs:行号 51 + 在 WebApi.Controllers.TaskController.GetNDEAuditEmailTemplate() 位置 E:\湛江巴斯夫\Basf_TCC7\HJGL\WebApi\Controllers\TaskController.cs:行号 19 +出错时间:05/17/2024 11:16:43 +The scheduled task failed to run the unaudited point-of-mail. Procedure +出错时间:05/17/2024 11:16:43 + +未检测到发送人邮箱,请先配置邮箱地址 +未检测到发送人邮箱,请先配置邮箱地址 diff --git a/HJGL/WebApi/Filter/PermissionAttribute.cs b/HJGL/WebApi/Filter/PermissionAttribute.cs deleted file mode 100644 index fdb96cc..0000000 --- a/HJGL/WebApi/Filter/PermissionAttribute.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Net.Http; -using System.Web.Http.Controllers; -using System.Web.Http.Filters; - -namespace WebAPI.Filter -{ - /// - /// - /// - public class PermissionAttribute: ActionFilterAttribute - { - /// - /// - /// - /// - public override void OnActionExecuting(HttpActionContext actionContext) - { - bool isOk = false; - actionContext.Request.Headers.TryGetValues("token", out IEnumerable token); - string strValues = actionContext.ActionDescriptor.ControllerDescriptor.ControllerName + "*" + ((ReflectedHttpActionDescriptor)actionContext.ActionDescriptor).ActionName; - if (lists.FirstOrDefault(x => x == strValues) != null) - { - isOk = true; - } - - if (!isOk && token != null) - { - var getUser = BLL.Sys_UserService.GetUsersByUserId(token.FirstOrDefault()); - if (getUser != null) - { - isOk = true; - } - else - { - var getPerson = BLL.WelderService .GetWelderById(token.FirstOrDefault()); - if (getPerson != null) - { - isOk = true; - } - } - } - // base.OnActionExecuting(actionContext); - if (isOk) - { - base.OnActionExecuting(actionContext); - } - else - { - actionContext.Response = actionContext.Request.CreateResponse(System.Net.HttpStatusCode.OK, - new { code = "0", message = "您没有权限!" }, actionContext.ControllerContext.Configuration.Formatters.JsonFormatter); - } - } - - /// - /// - /// - public static List lists = new List { "User*postLoginOn" }; - } -} \ No newline at end of file diff --git a/HJGL/WebApi/Web.config b/HJGL/WebApi/Web.config index fa4b215..c767bb2 100644 --- a/HJGL/WebApi/Web.config +++ b/HJGL/WebApi/Web.config @@ -10,7 +10,7 @@ - + @@ -27,7 +27,7 @@ --> - + diff --git a/HJGL/WebApi/WebApi.csproj b/HJGL/WebApi/WebApi.csproj index 0e1a2d7..898a76b 100644 --- a/HJGL/WebApi/WebApi.csproj +++ b/HJGL/WebApi/WebApi.csproj @@ -157,16 +157,7 @@ - - - - - - - - - - + Global.asax @@ -228,6 +219,7 @@ +