Ver código fonte

会务流程更换节点模板调整

Lyyyi 4 dias atrás
pai
commit
428406bad7

+ 8 - 4
OASystem/OASystem.Api/Controllers/FinancialController.cs

@@ -2637,16 +2637,20 @@ namespace OASystem.API.Controllers
                     item_rst.receivableTotal = (sum_fr + sum_extra).ToString("#0.00");
                     item_rst.prPrice = sum_pr.ToString("#0.00");
                     item_rst.refundAmount = sum_refund.ToString("#0.00");
-                    item_rst.receivedTotal = (sum_pr - sum_refund).ToString("#0.00");
-                    item_rst.balPrice = ((sum_fr + sum_extra) - (sum_pr - sum_refund)).ToString("#0.00");
+                    //item_rst.receivedTotal = (sum_pr - sum_refund).ToString("#0.00"); 
+                    item_rst.receivedTotal = sum_pr.ToString("#0.00");
+                    //item_rst.balPrice = ((sum_fr + sum_extra) - (sum_pr - sum_refund)).ToString("#0.00");
+                    item_rst.balPrice = ((sum_fr + sum_extra) - sum_pr).ToString("#0.00");
                     item_rst.prClient = str_client;
                     item_rst.schedule = str_schedule;
 
                     string tempVisitDate = Convert.ToDateTime(item_rst.visitDate).ToString("yyyy-MM-dd");
 
                     sumAll_fr += (sum_fr + sum_extra);
-                    sumAll_pr += (sum_pr - sum_refund);
-                    sumAll_balance += ((sum_fr + sum_extra) - (sum_pr - sum_refund));
+                    //sumAll_pr += (sum_pr - sum_refund);
+                    sumAll_pr += sum_pr;
+                    //sumAll_balance += ((sum_fr + sum_extra) - (sum_pr - sum_refund));
+                    sumAll_balance += ((sum_fr + sum_extra) - sum_pr);
 
                     //应收、已收、收款退还、余款 都为零 且 团组费用有值时 变色
                     if (sum_fr <= 0m && (sum_fr + sum_extra) <= 0m && sum_refund <= 0m && ((sum_fr + sum_extra) - (sum_pr - sum_refund)) <= 0m)

+ 51 - 16
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -31452,16 +31452,15 @@ WHERE
         public async Task<IActionResult> ConfProcessInitTest(int groupId, int currUserId)
         {
             return Ok(await _processOverviewRep.ProcessInitAsync(groupId, currUserId));
-
         }
 
         /// <summary>
-        /// 团组会务总览进程 - 基础信息集合(团组名称、节点模板信息、参与人信息)
+        /// 团组会务总览进程 - 基础信息集合(团组名称、参与人信息)
         /// </summary>
         /// <returns></returns>
         [HttpGet]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> ConfProcessGroupNames(int groupId,int currUserId)
+        public async Task<IActionResult> ConfProcessGroupNames()
         {
             var groupNames = await _sqlSugar.Queryable<Grp_DelegationInfo>()
                 .Where(x => x.IsDel == 0)
@@ -31476,15 +31475,7 @@ WHERE
                 })
                 .ToListAsync();
 
-            var nodeTemps1 = await _processOverviewRep.DefaultConfProcessTemps(groupId, currUserId);
-
-            var nodeTemps = nodeTemps1.Select(x => new
-            {
-                Id = x.ProcessOrder,
-                Name = $"情况{x.ProcessOrder}",
-                Nodes = x.Nodes
-            }).ToList();
-
+            
             var participators = await _sqlSugar.Queryable<Sys_Users>()
                 .Where(x => x.IsDel == 0 && x.DepId == 5)
                 .Select(x => new ParticipatorInfo()
@@ -31494,20 +31485,64 @@ WHERE
                 })
                 .ToListAsync();
 
-            var view = new { groupNames, nodeTemps, participators };
+            var view = new { groupNames, participators };
             return Ok(JsonView(view));
 
         }
 
         /// <summary>
-        /// 团组会务总览进程 - 流程详情
+        /// 团组会务总览进程 - 获取节点模板信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> ConfProcessNodeTempInfos(int groupId, int currUserId)
+        {
+            var nodeTemps1 = await _processOverviewRep.DefaultConfProcessTemps(groupId, currUserId);
+
+            var nodeTemps = nodeTemps1.Select(x => new
+            {
+                TempId = x.ProcessOrder,
+                TempName = $"情况{x.ProcessOrder}",
+                //TempNodes = x.Nodes
+            }).ToList();
+
+            return Ok(JsonView(nodeTemps));
+
+        }
+
+        /// <summary>
+        /// 团组会务总览进程 - 更新节点模板
+        /// </summary>
+        /// <param name="groupId">团组Id</param>
+        /// <param name="nodeTempId">节点模板Id</param>
+        /// <param name="currUserId">当前用户Id</param>
+        /// <returns></returns>
+        [HttpGet]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> ConfProcessChangeNodeTempSave(int groupId,int nodeTempId,int currUserId)
+        {
+            var res = await _processOverviewRep.ConfProcessChangeNodeTempSaveAsync(groupId, nodeTempId,currUserId);
+
+            if (res.Code == StatusCodes.Status200OK)
+            {
+                return Ok(JsonView(res.Data));
+            }
+
+            return Ok(JsonView(false, res.Msg));
+        }
+
+        /// <summary>
+        ///  团组会务总览进程 - 流程详情
         /// </summary>
+        /// <param name="groupId">团组Id</param>
+        /// <param name="currUserId">当前userId</param>
         /// <returns></returns>
         [HttpGet]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> ConfProcessDetails(int groupId)
+        public async Task<IActionResult> ConfProcessDetails(int groupId,int currUserId)
         {
-            var res = await _processOverviewRep.ConfProcessesDetailsAsync(groupId);
+            var res = await _processOverviewRep.ConfProcessesDetailsAsync(groupId,currUserId);
 
             if (res.Code == StatusCodes.Status200OK)
             {

+ 5 - 0
OASystem/OASystem.Domain/Dtos/Groups/VisaProcessDtos.cs

@@ -146,4 +146,9 @@ namespace OASystem.Domain.Dtos.Groups
         /// </summary>
         public int CurrUserId { get; set; }
     }
+
+    public class ConfProcessChangeNodeTempSaveDto : ConfProcessOverInfoView
+    {
+        public int CurrUserId { get; set; }
+    }
 }

+ 40 - 0
OASystem/OASystem.Domain/ViewModels/Groups/ProcessOverView.cs

@@ -0,0 +1,40 @@
+using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Groups
+{
+    public class ProcessOverView
+    {
+    }
+
+    public class ConfProcessOverInfoView
+    { 
+        public int Id { get; set; }
+        public int GroupId { get; set; }
+        public ConfProcessType ProcessType { get; set; }
+        public string ProcessName { get; set; }
+        public List<ConfProcessNodeInfoView> Nodes { get; set; }
+    }
+    public class ConfProcessNodeInfoView
+    {
+        public int Id { get; set; }
+        public int ProcessId { get; set; }
+        public int NodeOrder { get; set; }
+        public string NodeName { get; set; }
+        public string NodeDescTips { get; set; }
+        public ProcessStatus OverallStatus { get; set; }
+        public List<ParticipatorInfo> Participators { get; set; }
+        public string StatusText { get; set; }
+        public string Operator { get; set; }
+        public string OpeateTime { get; set; }
+        public string ActualDone { get; set; }
+
+        public bool IsEnaFileUpBtn { get; set; }
+        public bool IsFileUp { get; set; }
+    }
+}

+ 107 - 25
OASystem/OASystem.Infrastructure/Repositories/Groups/ProcessOverviewRepository.cs

@@ -4,7 +4,11 @@ using OASystem.Domain;
 using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.Entities.Resource;
+using OASystem.Domain.ViewModels.Groups;
+using Org.BouncyCastle.Asn1.X500;
 using System.Reflection;
+using System.Runtime.Intrinsics.Arm;
+using System.Text.RegularExpressions;
 
 namespace OASystem.Infrastructure.Repositories.Groups
 {
@@ -841,11 +845,11 @@ namespace OASystem.Infrastructure.Repositories.Groups
             var groupInfo = await _sqlSugar.Queryable<Grp_DelegationInfo>().FirstAsync(g => g.Id == groupId);
             if (groupInfo == null) return temps;
 
-            // 检查是否已存在流程
-            var existingProcesses = await _sqlSugar.Queryable<Grp_ConfProcessOverview>()
-                .Where(p => p.IsDel == 0 && p.GroupId == groupId)
-                .ToListAsync();
-            if (existingProcesses.Any()) return temps;
+            //// 检查是否已存在流程
+            //var existingProcesses = await _sqlSugar.Queryable<Grp_ConfProcessOverview>()
+            //    .Where(p => p.IsDel == 0 && p.GroupId == groupId)
+            //    .ToListAsync();
+            //if (existingProcesses.Any()) return temps;
 
             #region 会务流程
             //参与人 participators
@@ -882,9 +886,11 @@ namespace OASystem.Infrastructure.Repositories.Groups
         /// <summary>
         /// 团组会务流程初始化
         /// </summary>
-        /// <param name="request">创建流程请求参数</param>
+        /// <param name="groupId">团组Id</param>
+        /// <param name="currUserId">当前用户Id</param>
+        /// <param name="nodeTempId">节点模板Id</param>
         /// <returns>创建的流程信息</returns>
-        public async Task<Result> ConfProcessInitAsync(int groupId, int currUserId)
+        public async Task<Result> ConfProcessInitAsync(int groupId, int currUserId,int nodeTempId = 1)
         {
             //团组验证
             var groupInfo = await _sqlSugar.Queryable<Grp_DelegationInfo>().FirstAsync(g => g.Id == groupId);
@@ -907,7 +913,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
             if (temps == null || temps.Count < 1)
                 return new Result { Code = 400, Msg = "团组会务默认流程不存在" };
 
-            var process = temps.FirstOrDefault(x => x.ProcessOrder == 1);
+            var process = temps.FirstOrDefault(x => x.ProcessOrder == nodeTempId);
             process.CreateUserId = currUserId;
             _sqlSugar.BeginTran();
 
@@ -968,9 +974,10 @@ namespace OASystem.Infrastructure.Repositories.Groups
         /// <summary>
         /// 获取团组会务流程及节点详情
         /// </summary>
-        /// <param name="request">创建流程请求参数</param>
-        /// <returns>创建的流程信息</returns>
-        public async Task<Result> ConfProcessesDetailsAsync(int groupId)
+        /// <param name="groupId">团组Id</param>
+        /// <param name="currUserId">当前用户Id</param>
+        /// <returns></returns>
+        public async Task<Result> ConfProcessesDetailsAsync(int groupId, int currUserId = 4)
         {
             //团组验证
             var groupInfo = await _sqlSugar.Queryable<Grp_DelegationInfo>().FirstAsync(g => g.Id == groupId);
@@ -986,7 +993,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
             if (!existingProcesses.Any())
             {
                 //新建团组流程
-                var res = await ConfProcessInitAsync(groupId, 4);
+                var res = await ConfProcessInitAsync(groupId, currUserId);
                 if (res.Code != 200)
                 {
                     return res;
@@ -1008,11 +1015,11 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 var orderedNodes = p.Nodes.OrderBy(n => n.NodeOrder).ToList();
                 var totalNodes = orderedNodes.Count;
 
-                return new
+                return new ConfProcessOverInfoView()
                 {
-                    p.Id,
-                    p.GroupId,
-                    p.ProcessType,
+                    Id = p.Id,
+                    GroupId = p.GroupId,
+                    ProcessType = p.ProcessType,
                     ProcessName = p.ProcessType.GetEnumDescription(),
                     Nodes = orderedNodes.Select((n, index) =>
                     {
@@ -1049,20 +1056,20 @@ namespace OASystem.Infrastructure.Repositories.Groups
                             operatorName = name;
                         }
 
-                        return new
+                        return new ConfProcessNodeInfoView()
                         {
-                            n.Id,
-                            n.ProcessId,
-                            n.NodeOrder,
-                            n.NodeName,
-                            n.NodeDescTips,
-                            n.OverallStatus,
-                            participators,
+                            Id = n.Id,
+                            ProcessId = n.ProcessId,
+                            NodeOrder = n.NodeOrder,
+                            NodeName = n.NodeName,
+                            NodeDescTips = n.NodeDescTips,
+                            OverallStatus = n.OverallStatus,
+                            Participators = participators,
                             StatusText = n.OverallStatus.GetEnumDescription(),
                             Operator = operatorName,
                             OpeateTime = n.OperationTime?.ToString("yyyy-MM-dd HH:mm:ss") ?? "-",
                             ActualDone = n.ActualDone?.ToString("yyyy-MM-dd HH:mm:ss") ?? "",
-                            n.IsFileUp,      // 票据上传节点 存储值
+                            IsFileUp = n.IsFileUp,      // 票据上传节点 存储值
                         };
                     }).ToList()
                 };
@@ -1071,6 +1078,81 @@ namespace OASystem.Infrastructure.Repositories.Groups
             return new Result { Code = 200, Data = processes, Msg = "查询成功!" };
         }
 
+
+        /// <summary>
+        /// 更新节点模板
+        /// </summary>
+        /// <param name="groupId">团组Id</param>
+        /// <param name="nodeTempId">节点模板Id</param>
+        /// <param name="currUserId">当前用户Id</param>
+        /// <returns></returns>
+        public async Task<Result> ConfProcessChangeNodeTempSaveAsync(int groupId, int nodeTempId, int currUserId)
+        {
+            //节点模板id验证
+            var nodeTempIds = new List<int>() { 1, 2 };
+            if (!nodeTempIds.Contains(nodeTempId))
+            {
+                return new Result { Code = 400, Msg = "请传入有效的节点模板Id" };
+            }
+
+            //团组验证
+            var groupInfo = await _sqlSugar.Queryable<Grp_DelegationInfo>().FirstAsync(g => g.Id == groupId);
+            if (groupInfo == null)
+            {
+                return new Result { Code = 400, Msg = "团组不存在" };
+            }
+
+            _sqlSugar.BeginTran();
+            try
+            {
+                // 检查是否已存在流程
+                var existingProcesses = await _sqlSugar.Queryable<Grp_ConfProcessOverview>()
+                    .Where(p => p.IsDel == 0 && p.GroupId == groupId)
+                    .ToListAsync();
+                if (existingProcesses.Any())
+                {
+                    //删除 原有的节点模板
+                    var parentIds = existingProcesses.Select(x => x.Id).ToList();
+                    var updProcesses = await _sqlSugar.Updateable<Grp_ConfProcessOverview>()
+                        .SetColumns(x => x.DeleteUserId == currUserId)
+                        .SetColumns(x => x.DeleteTime == DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
+                        .SetColumns(x => x.IsDel == 1)
+                        .Where(x => parentIds.Contains(x.Id))
+                        .ExecuteCommandAsync();
+
+                    var updProcessNodes = await _sqlSugar.Updateable<Grp_ConfProcessNode>()
+                        .SetColumns(x => x.DeleteUserId == currUserId)
+                        .SetColumns(x => x.DeleteTime == DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
+                        .SetColumns(x => x.IsDel == 1)
+                        .Where(x => parentIds.Contains(x.ProcessId))
+                        .ExecuteCommandAsync();
+                }
+
+                //更新模板节点信息
+                var result = await ConfProcessInitAsync(groupId,currUserId,nodeTempId);
+
+                if (result.Code == 200)
+                {
+
+                    var infoResult = await ConfProcessesDetailsAsync(groupId, currUserId);
+
+                    if (infoResult.Code == 200)
+                    {
+                        _sqlSugar.CommitTran();
+                        return infoResult;
+                    }
+
+                }
+                _sqlSugar.RollbackTran();
+                return new Result { Code = 500, Msg = $"操作失败!Msg:{result.Msg}" };
+            }
+            catch (Exception ex)
+            {
+                _sqlSugar.RollbackTran();
+                return new Result { Code = 500, Msg = $"操作失败!Msg:{ex.Message}" };
+            }
+        }
+
         /// <summary>
         /// 更新团组会务流程节点状态
         /// </summary>