Lyyyi пре 1 недеља
родитељ
комит
88fdc47a39

+ 1 - 56
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -4275,61 +4275,6 @@ FROM
             return Ok(JsonView(true));
         }
 
-        /// <summary>
-        /// 签证表构建sql语句
-        /// 只更新null或者“”的逐句
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns>修改sql语句</returns>
-        public static string UpdateEntityIfNullOrEmpty(Crm_DeleClient entity) 
-        {
-            string updateSql = string.Empty;
-            var type = typeof(T);
-            var properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
-            var tableName = type.Name; // 默认表名与类名相同
-            var updateList = new List<string>();
-
-            foreach (var property in properties)
-            {
-                var value = property.GetValue(entity);
-                if (value == null || value.ToString() == "")
-                {
-                    var columnName = property.Name;
-                    var defaultValue = GetDefaultValue(property.PropertyType);
-
-                    updateList.Add($"[{columnName}] = {defaultValue}");
-                }
-            }
-
-            if (updateList.Count > 0)
-            {
-                updateSql = $"UPDATE [{tableName}] SET {string.Join(", ", updateList)} WHERE Id = {entity.GetType().GetProperty("Id").GetValue(entity)}";
-            }
-
-            return updateSql;
-        }
-
-        // 获取字段的默认值
-        private static string GetDefaultValue(Type propertyType)
-        {
-            if (propertyType == typeof(int) || propertyType == typeof(int?))
-            {
-                return "0";
-            }
-            else if (propertyType == typeof(string))
-            {
-                return "NULL";
-            }
-            else if (propertyType == typeof(DateTime) || propertyType == typeof(DateTime?))
-            {
-                return "NULL";
-            }
-            else
-            {
-                return "NULL";
-            }
-        }
-
         private static bool TryGetNonEmptyStringProperty(JsonElement root, string propertyName, out string value)
         {
             value = null;
@@ -6565,7 +6510,7 @@ FROM
         {
             var data = await _groupRepository.GetCrmByGroupId(dto);
 
-            return Ok(JsonView(true, data.Code != 0 ? "暂无信息" : "操作成功", data.Data));
+            return Ok(JsonView(data.Code == 0 , data.Code != 0 ? "暂无信息" : "操作成功", data.Data));
         }
 
 

+ 39 - 13
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -1,5 +1,6 @@
 using Aspose.Cells;
 using Dm.util;
+using EyeSoft.Runtime.InteropServices;
 using FluentValidation;
 using k8s.KubeConfigModels;
 using Markdig;
@@ -1052,6 +1053,9 @@ namespace OASystem.API.Controllers
                 groupArr = groupNames.Split(',').Select(part => part.Trim()).ToArray();
             }
 
+            var taskUserId1 = await _sqlSugar.Queryable<Pm_TaskJobRelevancy>().Where(it => it.IsDel == 0 && it.SubUserId == dto.UserId).Select(x => x.PrimaryUserId).FirstAsync();
+            var taskUserIds1 = await _sqlSugar.Queryable<Pm_TaskJobRelevancy>().Where(it => it.IsDel == 0 && it.PrimaryUserId == taskUserId1).Select(x => x.SubUserId).ToListAsync();
+
             //任务人员限定 发布者可看范围内的人员,接受者只能看自己的任务
             var taskPublisher = await _taskAllocationRep.ValidateTaskPublisher(dto.UserId);
             var taskUserIds = new List<int>();
@@ -1068,7 +1072,7 @@ namespace OASystem.API.Controllers
 
             RefAsync<int> total = 0;
             var view = await _sqlSugar.Queryable<Pm_TaskAllocation>()
-                .LeftJoin<Sys_Department>((ta, d) => ta.DepId == d.Id)
+                .LeftJoin<Sys_SetData>((ta, d) => ta.DepId == d.Id)
                 .LeftJoin<Grp_DelegationInfo>((ta, d, di) => ta.DiId == di.Id)
                 .LeftJoin<Sys_Users>((ta, d, di, u) => ta.CreateUserId == u.Id)
                 .LeftJoin<Sys_SetData>((ta, d, di, u, sd) => ta.TaskType == sd.Id)
@@ -1092,7 +1096,7 @@ namespace OASystem.API.Controllers
                     TaskContent = ta.TaskContent,
                     TaskTypeName = sd.Name,
                     TaskPriority = ta.TaskPriority,
-                    DepName = d.DepName,
+                    DepName = d.Name,
                     TeamName = di.TeamName,
                     Status = (int)ta.Status,
                     PredictBeginTime = ta.PredictBeginTime,
@@ -1106,29 +1110,51 @@ namespace OASystem.API.Controllers
                 .ToPageListAsync(dto.PageIndex, dto.PageSize, total);
 
             int index = 1;
+            var taskCompletedPerm = _sqlSugar.Queryable<Pm_TaskJobRelevancy>().Where(x => x.IsDel == 0 && x.PrimaryUserId == dto.UserId).Any(); 
             foreach (var item in view)
             {
                 item.RowNumber = index;
                 //设置参与人
-                var userNames = await _sqlSugar.Queryable<Pm_TaskRelevanceUser>()
+                var userNames = _sqlSugar.Queryable<Pm_TaskRelevanceUser>()
                     .LeftJoin<Sys_Users>((tru, u) => tru.UserId == u.Id)
                     .Where((tru, u) => tru.IsDel == 0 && tru.TAId == item.Id)
                     .Select((tru, u) => u.CnName)
-                    .ToListAsync();
+                    .ToList();
                 item.Participant = string.Join("、", userNames);
 
-                //设置编辑权限
-                (bool editPerm, string msg1) = _taskAllocationRep.EditPerm(item.Id, dto.UserId);
-                item.EditPerm = editPerm;
                 //设置任务确认权限
-                if (item.CreateUserId == dto.UserId) item.TaskCompletedPerm = true;
+                item.TaskCompletedPerm = taskCompletedPerm;
+
+                //设置编辑权限
+                if (item.TaskCompletedPerm || item.CreateUserId == dto.UserId)
+                {
+                    item.EditPerm = true;
+                }
+
+                if (item.Status == (int)TaskEnum.Finished && taskUserIds1.Contains(dto.UserId))
+                {
+                    item.EditPerm = false;
+                }
+
                 //设置已知晓权限
-                (bool havePerm, string msg3) = _taskAllocationRep.TaskHavePerm(item.Id, dto.UserId);
-                item.TaskHavePerm = havePerm;
+                if (item.Status == (int)TaskEnum.NotStarted || userNames.Count > 1)
+                {
+                    item.TaskHavePerm = true;
+                }
+
+                if (taskCompletedPerm)
+                {
+                    item.TaskHavePerm = false;
+                }
+
                 //设置详情权限
-                item.TaskDetailsPerm = _sqlSugar.Queryable<Pm_TaskRelevanceUser>()
-                    .Where(it => it.IsDel == 0 && it.TAId == item.Id && (it.UserId == dto.UserId || it.CreateUserId == dto.UserId))
-                    .Any();
+                if (item.TaskCompletedPerm) item.TaskDetailsPerm = true;
+                else
+                {
+                    item.TaskDetailsPerm = _sqlSugar.Queryable<Pm_TaskRelevanceUser>()
+                        .Where(it => it.IsDel == 0 && it.TAId == item.Id && (it.UserId == dto.UserId || it.CreateUserId == dto.UserId))
+                        .Any();
+                }
 
                 index++;
             }

+ 24 - 0
OASystem/OASystem.Api/OAMethodLib/Quartz/Business/GrpNodeAlert.cs

@@ -0,0 +1,24 @@
+using OASystem.API.OAMethodLib.QiYeWeChatAPI;
+using OASystem.Infrastructure.Repositories.Groups;
+
+namespace OASystem.API.OAMethodLib.Quartz.Business
+{
+    /// <summary>
+    /// 团组流程节点预警
+    /// </summary>
+    public static class GrpNodeAlert
+    {
+        private readonly static DelegationInfoRepository _grpDeleRep = AutofacIocManager.Instance.GetService<DelegationInfoRepository>();
+        private static readonly IQiYeWeChatApiService _qiYeWeChatApiService = AutofacIocManager.Instance.GetService<IQiYeWeChatApiService>();
+
+        /// <summary>
+        /// 商邀流程节点预警消息推送
+        /// 
+        /// </summary>
+        public static async void PostMessage() 
+        {
+
+        }
+
+    }
+}

+ 2 - 1
OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationInfoRepository.cs

@@ -6,6 +6,7 @@ using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.Entities.Customer;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.ViewModels.Groups;
+using OASystem.Domain.ViewModels.JuHeExchangeRate;
 using OASystem.Infrastructure.Repositories.System;
 using OASystem.Infrastructure.Tools;
 using System.Diagnostics;
@@ -1326,12 +1327,12 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
                 if (view.Count > 0)
                 {
-
                     result.Msg = "成功!";
                     result.Data = view;
                 }
                 else
                 {
+                    result.Code = 1;
                     result.Msg = "暂无数据!";
                 }
                 result.Code = 0;

+ 49 - 32
OASystem/OASystem.Infrastructure/Repositories/PersonnelModule/TaskAllocationRepository.cs

@@ -106,9 +106,12 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 groupNameInfos.Insert(0, new ValueInfo() { Id = -1, Name = "未选择" });
 
                 //部门名称
-                var departmentNameInfos = _sqlSugar.Queryable<Sys_Users, Sys_Department>((u, d) => new JoinQueryInfos(JoinType.Left, u.DepId == d.Id))
+                var depName = _sqlSugar.Queryable<Sys_Users, Sys_Department>((u, d) => new JoinQueryInfos(JoinType.Left, u.DepId == d.Id))
                     .Where((u, d) => u.Id == userId)
-                    .Select((u, d) => new ValueInfo() { Id = d.Id, Name = d.DepName })
+                    .Select((u, d) => d.DepName)
+                    .First();
+                var departmentNameInfos = _sqlSugar.Queryable<Sys_SetData>().Where(x => x.IsDel == 0 && x.STid == 135 && x.Name.Equals(depName))
+                    .Select(x => new ValueInfo() { Id = x.Id, Name = x.Name })
                     .First();
 
                 //执行任务人员信息 1 公司总经理/副总 可分配 所有人的任务 2 公司 部门经理/主管 可分配 部门下的人员的任务
@@ -136,7 +139,16 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                         taskOpertionAudit.IsStopPerm = true;
                     //}
 
-                    var userIds = taskAudits.Select(it => it.SubUserId).ToList();
+                    List<int> userIds = new List<int>();
+                    if (taskAudits.Where(x => x.PrimaryUserId == userId).Any())
+                    {
+                        userIds = taskAudits.Select(it => it.SubUserId).ToList();
+                    }
+                    else
+                    {
+                        userIds = taskAudits.Where(x => x.SubUserId == userId).Select(it => it.SubUserId).ToList();
+                    }
+
                     string userSql = string.Format(@"Select u.Id,u.CnName As Name,c.CompanyName,
                                                          d.DepName As DepartmentName,jp.JobName
                                                          From Sys_Users u
@@ -166,7 +178,7 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
         }
 
         /// <summary>
-        /// 任务发布者验证
+        /// 任务发布者/分管UserId验证
         /// </summary>
         /// <returns></returns>
         public async Task<(bool isTaskPublisher, List<int> userIds)> ValidateTaskPublisher(int userId)
@@ -278,23 +290,23 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
             if (taskInfo.CreateUserId != currentUserId)
                 return (false, "当前任务仅创建人可编辑!");
 
-            // 定义结束状态集合
-            var UneditableStatuses = new List<TaskEnum>
-            {
-                TaskEnum.UnFinished,
-                TaskEnum.Finished,
-                TaskEnum.TaskStop
-            };
-
-            if (UneditableStatuses.Contains(taskInfo.Status))
-                return (false,
-                    taskInfo.Status switch
-                    {
-                        TaskEnum.UnFinished => "当前任务状态为“未完成”结束状态,不可编辑!",
-                        TaskEnum.Finished => "当前任务状态为“已完成”结束状态,不可编辑!",
-                        TaskEnum.TaskStop => "当前任务状态为“任务终止”结束状态,不可编辑!",
-                        _ => "当前任务状态不可编辑!"
-                    });
+            //// 定义结束状态集合
+            //var UneditableStatuses = new List<TaskEnum>
+            //{
+            //    TaskEnum.UnFinished,
+            //    TaskEnum.Finished,
+            //    TaskEnum.TaskStop
+            //};
+
+            //if (UneditableStatuses.Contains(taskInfo.Status))
+            //    return (false,
+            //        taskInfo.Status switch
+            //        {
+            //            TaskEnum.UnFinished => "当前任务状态为“未完成”结束状态,不可编辑!",
+            //            TaskEnum.Finished => "当前任务状态为“已完成”结束状态,不可编辑!",
+            //            TaskEnum.TaskStop => "当前任务状态为“任务终止”结束状态,不可编辑!",
+            //            _ => "当前任务状态不可编辑!"
+            //        });
 
             return (true, string.Empty);
         }
@@ -375,10 +387,10 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 return (false, "只有任务归属者可设置“已知晓”状态!");
 
             // 检查当前状态是否设置已知晓
-            //if (taskerInfo.TaskStatus == TaskerEnum.HaveKnown)
-            //{
-            //    return (false, "当前状态已设置,无需重复操作!");
-            //}
+            if (taskerInfo.TaskStatus == TaskEnum.UnderWay)
+            {
+                return (false, "当前状态已设置,无需重复操作!");
+            }
 
             //if (taskInfo.Status == TaskEnum.UnFinished)
             //{
@@ -439,6 +451,12 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
 
                 #endregion
 
+                //任务参与这包含创建者本人 则状态为 进行中
+                if (dto.UserIds.Contains(dto.UserId) && _TaskAllocation.Status == TaskEnum.NotStarted)
+                {
+                    _TaskAllocation.Status = TaskEnum.UnderWay;
+                }
+
                 var createUserName = _sqlSugar.Queryable<Sys_Users>().Where(x => x.Id == dto.UserId).First()?.CnName ?? "-";
 
                 if (dto.Id == 0) //添加
@@ -487,8 +505,7 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 {
                     _sqlSugar.BeginTran();
 
-                   
-                    #region 编辑验证 1. 仅创建者可以修改 
+                    #region 编辑验证 1. 仅创建者可以修改 2.分管人员领导可修改
 
                     var taskInfo = await _sqlSugar
                         .Queryable<Pm_TaskAllocation>()
@@ -712,7 +729,6 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
             _result.Code = 0;
             _sqlSugar.CommitTran();
 
-
             return _result;
         }
 
@@ -854,6 +870,7 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
             _sqlSugar.BeginTran();
             var taskName = await _sqlSugar.Queryable<Pm_TaskAllocation>().Where(it => it.IsDel == 0 && it.Id == id).Select(it => it.TaskName).FirstAsync();
             var operatorName = await _sqlSugar.Queryable<Sys_Users>().Where(it => it.IsDel == 0 && it.Id == userId).Select(it => it.CnName).FirstAsync();
+            
             var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
                 .SetColumns(it => it.TaskStatus == TaskEnum.UnderWay)
                 .Where(it => it.TAId == id && it.UserId == userId)
@@ -935,10 +952,10 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 int mainTaskId = subTaskInfo.TAId;
                 int taskerId = subTaskInfo.Id;
 
-                //只有创建人可以审批完成状态
-                if (subTaskInfo.CreateUserId != userId)
+                //只有分管人员可以审批完成状态
+                if (!_sqlSugar.Queryable<Pm_TaskJobRelevancy>().Where(x => x.IsDel == 0 && x.PrimaryUserId == userId).Any() )
                 {
-                    _result.Msg = string.Format("只有任务创建者可审批'已完成'状态!");
+                    _result.Msg = string.Format("只有任务分管者可审批'已完成'状态!");
                     _taskTextFileLogger.LogInformation("任务完成设置[尝试审批],任务名称:{TaskName},操作者:{OperatorName}", taskName, operatorName);
                     return _result;
                 }
@@ -1004,7 +1021,7 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                         .Select(x => x.CnName)
                         .ToList();
 
-                    string userLabel = string.Join("、",names);
+                    string userLabel = string.Join("、", names);
 
                     _result.Msg = string.Format($"{userLabel} 未点击已知晓,不可设置任务完成。");
                     _sqlSugar.RollbackTran();