Browse Source

添加会务倒退表相关功能及字段逻辑修改

在 `GroupsController.cs` 中,添加了 `using OASystem.Domain.Attributes;` 引用,并添加了会务倒退表的初始化和文件下载的两个 API 方法 `InforRetrogressTableInit` 和 `InforRetrogressTableFileDownload`。
在 `ResourceController.cs` 中,添加了 `LastUpddateTime` 字段的查询。
在 `InforDtos.cs` 中,添加了 `InforRetrogressTableFileDownloadDto` 和其验证器 `InforRetrogressTableFileDownloadDtoValidator`。
在 `Crm_TableOperationRecord.cs` 中,更新了 `TableName` 字段的注释,添加了 "InforRetrogressTable" 会务倒退表的描述。
在 `Result.cs` 中,修改了 `DiId` 的错误消息提示。
在多个视图文件中(`NewClientDataView.cs`、`CarDataView.cs`、`InvitationOfficialActivityDataView.cs`、`TranslatorLibraryView.cs`),修改了 `LastUpdateDays` 属性的逻辑,当 `LastUpdateTime` 为 `DateTime.MinValue` 时,将其设置为 `CreateTime`。
LEIYI 3 months ago
parent
commit
6ee6a9da52

+ 96 - 0
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -20,6 +20,7 @@ using OASystem.API.OAMethodLib.Hub.Hubs;
 using OASystem.API.OAMethodLib.JuHeAPI;
 using OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice;
 using OASystem.Domain.AesEncryption;
+using OASystem.Domain.Attributes;
 using OASystem.Domain.Dtos.CRM;
 using OASystem.Domain.Dtos.FileDto;
 using OASystem.Domain.Dtos.Financial;
@@ -19212,6 +19213,101 @@ ORDER by  gctggrc.id DESC
         }
 
 
+        #endregion
+
+        #region 会务倒退表
+        /// <summary>
+        /// 会务倒退表
+        /// Init
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> InforRetrogressTableInit()
+        {
+            var groupData = await _groupRepository.PostShareGroupInfos(1);
+            if (groupData.Code == 0) return Ok(JsonView(groupData.Data));
+
+            return Ok(JsonView(false, groupData.Msg));
+        }
+
+        /// <summary>
+        /// 会务倒退表
+        /// ExcelDownload
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ApiLog("InforRetrogressTable", OperationEnum.Download)]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> InforRetrogressTableFileDownload(InforRetrogressTableFileDownloadDto dto)
+        {
+            var validator = new InforRetrogressTableFileDownloadDtoValidator();
+            var validatorRes = await validator.ValidateAsync(dto);
+            if (!validatorRes.IsValid)
+            {
+                StringBuilder sb = new StringBuilder();
+                foreach (var item in validatorRes.Errors)
+                {
+                    sb.AppendLine(item.ErrorMessage);
+                }
+                return Ok(JsonView(false, sb.ToString()));
+            }
+
+            var groupInfo = await _sqlSugar.Queryable<Grp_DelegationInfo>().FirstAsync(x => x.Id == dto.GroupId);
+            if (groupInfo == null) return Ok(JsonView(false,$"该团组信息未填写!"));
+
+            //时间根据团组出访日期-接团录入日期的天数来判断用哪个模板
+            var days = groupInfo.VisitDate.Subtract(groupInfo.CreateTime).Days;
+
+            #region Excel
+            var tempPath = AppSettingsHelper.Get("ExcelTempPath");
+            var servicePath = AppSettingsHelper.Get("GrpFileBaseUrl");
+            var savePath = AppSettingsHelper.Get("ExcelBasePath") + "InforRetrogressTable/";
+            var ftpPath = AppSettingsHelper.Get("ExcelFtpPath") + "InforRetrogressTable/";
+            var fileNamePrefix = string.Empty;
+
+            if (days >= 30)
+            {
+                tempPath += $"会务工作倒推进度表(30天).xlsx";
+                fileNamePrefix = $"{groupInfo.TeamName}_会务工作倒推进度表(30天)";
+            }
+            else if (days < 30 && days > 7)
+            {
+                tempPath += $"会务工作倒推进度表(15天).xlsx";
+                fileNamePrefix = $"{groupInfo.TeamName}_会务工作倒推进度表(15天)";
+
+            }
+            else if (days <= 7)
+            {
+                tempPath += $"会务工作倒推进度表(7天).xlsx";
+                fileNamePrefix = $"{groupInfo.TeamName}_会务工作倒推进度表(7天)";
+            }
+            var fileName = $"{fileNamePrefix}{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx";
+
+            fileName = CommonFun.ValidFileName(fileName);
+
+            //载入模板
+            WorkbookDesigner designer = new WorkbookDesigner();
+            designer.Workbook = new Workbook(tempPath);
+
+            designer.Process();
+
+            if (!Directory.Exists(savePath))
+            {
+                Directory.CreateDirectory(savePath);
+            }
+
+            string serverPath = $"{savePath}{fileName}";
+            designer.Workbook.Save(serverPath);
+            string rst = $"{servicePath}{ftpPath}{fileName}";
+
+            #endregion
+
+            return Ok(JsonView(new { url = rst }));
+        }
+
+
         #endregion
 
         #region 三公签证费用(签证费、代办费)

+ 1 - 0
OASystem/OASystem.Api/Controllers/ResourceController.cs

@@ -4162,6 +4162,7 @@ WHERE
                     Price = x.Price,
                     Currency = SqlFunc.Subqueryable<Sys_SetData>().Where(x1 => x1.Id == x.Currency).Select(x1 => x1.Name) ?? "-",
                     CreateUserName = SqlFunc.Subqueryable<Sys_Users>().Where(x1 => x1.Id == x.CreateUserId).Select(x1 => x1.CnName) ?? "-",
+                    LastUpddateTime = x.LastUpdateTime,
                     CreateTime = x.CreateTime,
                     Remark = x.Remark
                 })

+ 28 - 0
OASystem/OASystem.Domain/Dtos/Groups/InforDtos.cs

@@ -0,0 +1,28 @@
+using FluentValidation;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    public class InforDtos
+    {
+    }
+
+    public class InforRetrogressTableFileDownloadDto
+    {
+        public int GroupId { get; set; }
+        public int CurrUserId { get; set; }
+    }
+
+    public class InforRetrogressTableFileDownloadDtoValidator : AbstractValidator<InforRetrogressTableFileDownloadDto>
+    {
+        public InforRetrogressTableFileDownloadDtoValidator()
+        {
+            RuleFor(x => x.GroupId).GreaterThan(0).WithMessage(MsgTips.DiId);
+            RuleFor(x => x.CurrUserId).GreaterThan(0).WithMessage(MsgTips.DiId);
+        }
+    }
+}

+ 2 - 0
OASystem/OASystem.Domain/Entities/Customer/Crm_TableOperationRecord.cs

@@ -16,6 +16,8 @@ namespace OASystem.Domain.Entities.Customer
         /// <summary>
         /// 表名
         /// "Crm_NewClientData" 客户资料表
+        /// "Login" 登录
+        ///  "InforRetrogressTable"  会务倒退表
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string? TableName { get; set; }

+ 1 - 1
OASystem/OASystem.Domain/Result.cs

@@ -82,7 +82,7 @@ namespace OASystem.Domain
         /// <summary>
         /// 团组Id错误消息提示
         /// </summary>
-        public static string DiId = "请检查团组Id(diid)是否正确!";
+        public static string DiId = "请检查团组Id是否正确!";
         /// <summary>
         /// 数据Id错误消息提示
         /// </summary>

+ 5 - 1
OASystem/OASystem.Domain/ViewModels/CRM/NewClientDataView.cs

@@ -224,7 +224,11 @@ namespace OASystem.Domain.ViewModels.CRM
             get
             {
                 int days = 0;
-                if (LastUpdateTime == DateTime.MinValue) days = DateTime.Now.Subtract(CreateTime).Days;
+                if (LastUpdateTime == DateTime.MinValue)
+                {
+                    days = DateTime.Now.Subtract(CreateTime).Days;
+                    LastUpdateTime = CreateTime;
+                }
                 else days = DateTime.Now.Subtract(LastUpdateTime).Days;
                 return days;
             }

+ 5 - 1
OASystem/OASystem.Domain/ViewModels/Resource/CarDataView.cs

@@ -15,7 +15,11 @@ namespace OASystem.Domain.ViewModels.Resource
         {
             get
             {
-                if (LastUpdateTime == DateTime.MinValue) return DateTime.Now.Subtract(CreateTime).Days;
+                if (LastUpdateTime == DateTime.MinValue)
+                {
+                    LastUpdateTime = CreateTime;
+                    return DateTime.Now.Subtract(CreateTime).Days;
+                }
                 else return DateTime.Now.Subtract(LastUpdateTime).Days;
             }
         }

+ 5 - 1
OASystem/OASystem.Domain/ViewModels/Resource/InvitationOfficialActivityDataView.cs

@@ -27,7 +27,11 @@ namespace OASystem.Domain.ViewModels.Resource
             get
             {
                 int days = 0;
-                if (LastUpdateTime == DateTime.MinValue) days = DateTime.Now.Subtract(CreateTime).Days;
+                if (LastUpdateTime == DateTime.MinValue)
+                {
+                    days = DateTime.Now.Subtract(CreateTime).Days;
+                    LastUpdateTime = CreateTime;
+                }
                 else days = DateTime.Now.Subtract(LastUpdateTime).Days;
                 return days;
             }

+ 5 - 1
OASystem/OASystem.Domain/ViewModels/Resource/TranslatorLibraryView.cs

@@ -168,7 +168,11 @@ namespace OASystem.Domain.ViewModels.Resource
             get
             {
                 int days = 0;
-                if (LastUpddateTime == DateTime.MinValue) days = DateTime.Now.Subtract(CreateTime).Days;
+                if (LastUpddateTime == DateTime.MinValue)
+                {
+                    days = DateTime.Now.Subtract(CreateTime).Days;
+                    LastUpddateTime = CreateTime;
+                }
                 else days = DateTime.Now.Subtract(LastUpddateTime).Days;
                 return days;
             }