Selaa lähdekoodia

mxg:添加上传时 删除模型 发送邮件功能

mengxiangge 5 vuotta sitten
vanhempi
commit
0dafa873d6

+ 4 - 0
MBI/SAGA.MBI/Common/MailLog.cs

@@ -25,6 +25,10 @@ namespace SAGA.MBI.Common
             builder.Append(info);
            SmtpMailUtil.Send(m_UseMail, title, builder.ToString());
         }
+        public static void Log(string mailAddress,string title, string info)
+        {
+            SmtpMailUtil.Send(mailAddress, title, info);
+        }
 
         public static string BuildProjectInfo()
         {

+ 1 - 0
MBI/SAGA.MBI/DataArrange/DalUploadFloor.cs

@@ -767,6 +767,7 @@ namespace SAGA.MBI.DataArrange
             WrapperContext(serviceContext, localContext);
             LoadingOperation.Update();
             serviceContext.Upload();
+            UploadReportUtil.SendReport(serviceContext);
             LoadingOperation.Update();
             localContext.Upload();
         }

+ 4 - 0
MBI/SAGA.MBI/Model/ManageInfo.cs

@@ -21,5 +21,9 @@ namespace SAGA.MBI.Model
         /// </summary>
         public string  Phone_Num { get;  set; }
         public string Person_Id { get; set; }
+        /// <summary>
+        /// 用户名
+        /// </summary>
+        public string Person_Name { get; set; }
     }
 }

+ 2 - 1
MBI/SAGA.MBI/RequestData/LoginRequest.cs

@@ -89,7 +89,8 @@ namespace SAGA.MBI.RequestData
             ManageInfo mode = new ManageInfo();
             JObject jObject = JObject.Parse(json);
             mode.Phone_Num = (string)jObject["person"]["phone"];
-            mode.Person_Id = (string)jObject["person"]["phone"];
+            mode.Person_Id = (string)jObject["person"]["personId"];
+            mode.Person_Name= (string)jObject["person"]["name"];
             return mode;
         }
 

+ 1 - 0
MBI/SAGA.MBI/SAGA.MBI.csproj

@@ -731,6 +731,7 @@
     <Compile Include="WinView\Upload\LoadingOperation.cs" />
     <Compile Include="WinView\Upload\UploadFilesSelectConverter.cs" />
     <Compile Include="WinView\Upload\UploadFloor.cs" />
+    <Compile Include="WinView\Upload\UploadReportUtil.cs" />
     <Compile Include="WinView\Upload\VMUploadModeManage.cs" />
     <Compile Include="WinView\Upload\WinLoading.xaml.cs">
       <DependentUpon>WinLoading.xaml</DependentUpon>

+ 138 - 0
MBI/SAGA.MBI/WinView/Upload/UploadReportUtil.cs

@@ -0,0 +1,138 @@
+/* ==============================================================================
+ * 功能描述:UploadReportUtil  
+ * 创 建 者:Garrett
+ * 创建日期:2019/9/19 17:46:20
+ * ==============================================================================*/
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using FWindSoft.Data;
+using SAGA.DotNetUtils.Extend;
+using SAGA.DotNetUtils.Logger;
+using SAGA.MBI.Calc;
+using SAGA.MBI.Common;
+using SAGA.MBI.DataArrange;
+using SAGA.MBI.Model;
+
+namespace SAGA.MBI.WinView.Upload
+{
+    /// <summary>
+    /// UploadReportUtil
+    /// </summary>
+    public static class UploadReportUtil
+    {
+        private static List<string> m_ReportArray;
+        /// <summary>
+        /// 接收邮件人列表
+        /// </summary>
+        private static void InitReportArray()
+        {
+            m_ReportArray = new List<string>();
+            m_ReportArray.Add("nixiangzhaosia@163.com");
+        }
+        /// <summary>
+        /// 发送反馈
+        /// </summary>
+        /// <param name="context"></param>
+        public static void SendReport(CalcContext context)
+        {
+            InitReportArray();
+            if (!IsNeedReport(context)) return;
+            foreach (string mail in m_ReportArray)
+            {
+                string title = GetReportTitle();
+                string content = GetReportContent(context).ToString();
+                MailLog.Log(mail,title,content);
+            }
+        }
+        /// <summary>
+        /// 邮件内容
+        /// </summary>
+        /// <returns></returns>
+        private static string GetReportTitle()
+        {
+            string title = $"{MBIControl.ProjectCur} 项目-因模型上传删除设备实例通知";
+            return title;
+        }
+        /// <summary>
+        /// 邮件换行需要在每行后加"."
+        /// </summary>
+        /// <param name="sb"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        private static StringBuilder AppendLine2(this StringBuilder sb,string value)
+        {
+            sb.AppendLine(value);
+            sb.Append("<br/>");
+            return sb;
+        }
+        /// <summary>
+        /// 转化为邮件内容
+        /// </summary>
+        /// <returns></returns>
+        private static StringBuilder GetReportContent(CalcContext context)
+        {
+            StringBuilder sb = new StringBuilder();
+            sb.AppendLine2($"用户: {MBIControl.ManageInfo.Person_Name}");//获取用户名
+            sb.AppendLine2($"手机号: {MBIControl.ManageInfo.Phone_Num}");
+            sb.AppendLine2("——————————概要内容————————————");
+            sb.AppendLine2($"于{DateTime.Now.ToString("yyyy-MM-dd HH:mm")}上传模型文件,删除如下设备实例:");
+            var facilitys = new List<MRevitEquipBase>();
+            facilitys.AddRange(context.MEquipments.Where(t=>t.Operator==DocumentChangedOperator.Delete));
+            facilitys.AddRange(context.MEquipmentParts.Where(t => t.Operator == DocumentChangedOperator.Delete));
+            var groups = facilitys.GroupBy(t => t.EquipClassName);
+            foreach (IGrouping<string, MRevitEquipBase> grouping in groups)
+            {
+                sb.AppendLine2($"{grouping.Key}:{grouping.Count()}个");
+            }
+
+            int num = 0;
+            string floor = context.MFloor.ToString();
+            string building = DalProjectTree.GetBuildingFloorName(context.FloorId);
+            sb.AppendLine2("——————————详细内容————————————");
+            foreach (IGrouping<string, MRevitEquipBase> grouping in groups)
+            {
+                sb.AppendLine2($"{grouping.Key}");
+                foreach (MRevitEquipBase equipBase in grouping)
+                {
+                    num++;
+                    string name = "";
+                    string code = "";
+                    string cadid = "";
+                    if (equipBase is MEquipment equip)
+                    {
+                        name = equip.LocalName;
+                        code = equip.LocalId;
+                        cadid = equip.CADID;
+                    }
+
+                    if (equipBase is MEquipmentPart part)
+                    {
+                        name = part.LocalName;
+                        code = part.LocalId;
+                        cadid = part.CADID;
+                    }
+
+                    sb.AppendLine2(
+                        $"{num}、建筑:{building};楼层:{floor};设备全局id:{equipBase.Id};BIMID:{equipBase.BimID};设备本地编码:{code};设备本地名称:{name};CADID:{cadid};");
+                }
+            }
+
+            return sb;
+        }
+
+        /// <summary>
+        /// 检查是否需要反馈
+        /// </summary>
+        /// <returns></returns>
+        private static bool IsNeedReport(CalcContext context)
+        {
+            bool result =(context.MEquipments.Any(t=>t.Operator==DocumentChangedOperator.Delete)||context.MEquipmentParts.Any(t=>t.Operator==DocumentChangedOperator.Delete)) ;
+            return result;
+        }
+
+
+    }
+}