瀏覽代碼

优化物资领用审核逻辑及相关通知功能

在 `PersonnelModuleController.cs` 中,添加了物资领用审核状态处理逻辑,简化了代码结构。
在 `SystemController.cs` 中,修改了 `CarDataSouceExcelTemp` 方法,简化参数。
在 `Library.cs` 中,更新了物资领用通知接收者说明,增强了通知灵活性,并增加了贵重物品审批消息通知的处理逻辑。
在 `GoodsRepository.cs` 中,优化了贵重物品审核信息的显示逻辑,移除了硬编码,提升了代码可维护性。
LEIYI 1 月之前
父節點
當前提交
0b16084aff

+ 11 - 2
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -2409,6 +2409,7 @@ WHERE
             if (dto.AuditEnum == GoodsAuditEnum.Approved) //审核通过
             {
                 view = await _goodsRep.GoodsReceiveApproveAsync(receiveId, currUserInfo.UserId);
+
             }
             else if (dto.AuditEnum == GoodsAuditEnum.UnApproved) //审核拒绝
             {
@@ -2417,11 +2418,19 @@ WHERE
 
             if (view.Code != StatusCodes.Status200OK) return Ok(view);
 
+            receiveInfo = await _sqlSugar.Queryable<Pm_GoodsReceive>().FirstAsync(x => x.IsDel == 0 && x.Id == receiveId);
+            var auditEnums = new List<GoodsAuditEnum>() { GoodsAuditEnum.OutConfirmed, GoodsAuditEnum.OutRejected };
+
+            if (receiveInfo.AuditStatus == GoodsAuditEnum.OutConfirming)
+            {
+                //物资领用通知
+                await AppNoticeLibrary.SendUserMsg_CompanyShare_ToHR(receiveId, receiveInfo.GroupId, receiveInfo.CreateUserId);
+            }
+
 
             //TODO:出库成功 并且是团组相关物资 向团组其他款项添加信息
             #region 出库成功并且是团组相关物资 向团组其他款项添加信息
-            receiveInfo = await _sqlSugar.Queryable<Pm_GoodsReceive>().FirstAsync(x => x.IsDel == 0 && x.Id == receiveId);
-            var auditEnums = new List<GoodsAuditEnum>() { GoodsAuditEnum.OutConfirmed, GoodsAuditEnum.OutRejected };
+
             //if (!auditEnums.Contains(receiveInfo.AuditStatus)) return Ok(view);
 
             var groupInfo = await _sqlSugar.Queryable<Grp_DelegationInfo>().FirstAsync(x => x.IsDel == 0 && x.Id == receiveInfo.GroupId);

+ 1 - 3
OASystem/OASystem.Api/Controllers/SystemController.cs

@@ -3407,12 +3407,10 @@ And u.UId = {0} And u.FId = 1 ", dto.UserId);
         /// <summary>
         /// excel导入 策划部供应商资料
         /// </summary>
-        /// <param name="file"></param>
-        /// <param name="currUserId">录入人userId</param>
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> CarDataSouceExcelTemp(IFormFile file, [FromQuery] int currUserId = 258)
+        public async Task<IActionResult> CarDataSouceExcelTemp()
         {
             var url = $"http://132.232.92.186:24/Office/Excel/CarDataSouceImportFile/op地接供应商资料收集模板.xlsx";
             return Ok(JsonView(true, url));

+ 78 - 5
OASystem/OASystem.Api/OAMethodLib/QiYeWeChatAPI/AppNotice/Library.cs

@@ -1188,7 +1188,7 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice
 
         /// <summary>
         /// 物资领用通知
-        /// 接收者:人事相关人员
+        /// 接收者:审核节点相关审核人
         /// </summary>
         /// <param name="dataId"></param>
         /// <param name="diId"></param>
@@ -1202,6 +1202,37 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice
                 "208", //雷怡
                 "374", //罗颖
             };
+
+            var isCheckValuable = false;
+            var valuableUserNames = new List<string>();
+
+            //根据审核节点的审核人,发送通知
+            var flow = _grpDeleRep._sqlSugar.Queryable<Sys_AuditFlow>().First(x => x.IsDel == 0 && x.BusinessType == 1 && x.BusinessId == dataId);
+            if (flow != null)
+            {
+                var auditNode = _grpDeleRep._sqlSugar
+                    .Queryable<Sys_AuditTemplateNode>()
+                    .First(x => x.IsDel == 0 && x.TemplateId == flow.TemplateId && x.Id == flow.CurrentNodeId);
+                if (auditNode != null)
+                { 
+                    var auditUserList = _grpDeleRep._sqlSugar.Queryable<Sys_AuditTemplateNodeUser>()
+                        .Where(x => x.IsDel == 0 && x.NodeId == auditNode.Id)
+                        .Select(x => new {
+                            x.UserId,
+                            x.UserName
+                        })
+                        .ToList();
+                    if (auditUserList.Any())
+                    {
+                        if (auditUserList.Count() > 1) isCheckValuable = true;
+
+                        userIds.AddRange(auditUserList.Select(x => x.UserId.ToString()).ToList());
+                        userIds = userIds.Distinct().ToList();
+                        valuableUserNames.AddRange( auditUserList.Select(x => x.UserName).ToList());
+                    }
+                }
+            }
+
             Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
             var operationName = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && s.Id == operationId).First()?.CnName ?? "Unknown";
 
@@ -1233,14 +1264,20 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice
             foreach (var info in receiveDetails)
             {
                 goodsMsg.AppendLine($">- {info.Name}:{info.Quantity:#0.00} {info.Unit}");
-            } 
+            }
 
+            var groupLabel = string.Empty;
+            if (string.IsNullOrEmpty(groupName) || !groupName.Equals("-"))
+            {
+                groupLabel = $">团组归属:<font color='info'>{groupName}</font>";
+            }
 
+            //普通物品审批消息通知
             string resMsg = string.Format(@" ` 物资领用申请通知 `  
 
 > ` {0} `提交物资领用申请: 
 
->团组归属:<font color='info'>{1}</font>
+{1}
 
 >**物资明细**   
 {2}
@@ -1249,11 +1286,47 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice
 
 [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/)   ",
 operationName,
-groupInfo?.TeamName ?? "-",
+groupLabel,
 goodsMsg,
 receiveInfo.Reason,
 DateTime.Now.ToString("yyyy-MM-dd HH:mm"));
 
+            //贵重物品审批消息通知
+            if (isCheckValuable)
+            {
+                var auditUserLabel = string.Empty;
+                foreach (var userName in valuableUserNames)
+                {
+                    auditUserLabel += $"@{userName} ";
+                }
+
+                resMsg = string.Format(@" ` 【或签审批】物资领用(任一人审批即可)通知 `  
+
+>{0}
+> ` {1} `提交物资领用申请,您被列为或签审批人: 
+
+**或签规则**  
+• 您与其他{2}人并行审批  
+• 任意一人通过即视为本环节通过  
+• 任意一人拒绝即视为终止流程  
+
+{3}
+
+>**物资明细**   
+{4}
+>用途:<font color='comment'>{5}</font> 
+>申请时间:<font color='comment'>{6}</font> 
+
+[详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/)   ",
+auditUserLabel,
+operationName,
+valuableUserNames.Count() - 1 ,
+groupLabel,
+goodsMsg,
+receiveInfo.Reason,
+DateTime.Now.ToString("yyyy-MM-dd HH:mm"));
+            }
+
             List<string> qwUserIdList = GetQiyeChatUserIdList(userIds);
             ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, resMsg);
             if (result.errcode != 0)
@@ -1272,7 +1345,7 @@ DateTime.Now.ToString("yyyy-MM-dd HH:mm"));
         {
             string result = origin;
 
-            if (Regex.Match(origin, @"\d+,?").Value.Length > 0)
+            if (Regex.Match(origin, @"\d +,?").Value.Length > 0)
             {
                 string[] temparr = origin.Split(',');
                 string fistrStr = temparr[0];

+ 12 - 3
OASystem/OASystem.Infrastructure/Repositories/PersonnelModule/GoodsRepository.cs

@@ -3053,8 +3053,14 @@ FROM
       gr.IsDel = 0
   ) Temp ");
 
+
+            var checkValuableUserIds = new List<int>() {
+                343 , //陈湘OAId
+                309 , //赖红燕AId
+            };
+
             var isValueable = false;
-            if (currUserId == 343) //陈湘OAId登录 只显示贵重物品审核信息
+            if (checkValuableUserIds.Contains(currUserId)) //陈湘OAId登录 只显示贵重物品审核信息
             {
                 isValueable = true;
             }
@@ -3165,7 +3171,11 @@ FROM
                             3 => "无需处理",
                             _ => "未知"
                         };
-                        var str = $"{x.NodeName}:状态:{statusText}  审核人:{x.AuditorName}  审核时间:{x.AuditTime:yyyy-MM-dd HH:mm:ss}<br/>";
+
+                        var auditTime = $"-";
+                        if (x.AuditResult == 1 || x.AuditResult == 2 || x.AuditResult == 3) auditTime = x.AuditTime.ToString("yyyy-MM-dd HH:mm:ss");
+
+                        var str = $"{x.NodeName}:状态:{statusText}  审核人:{x.AuditorName}  审核时间:{auditTime}<br/>";
                         text.Append(str);
                     });
                     item.StatusDesc = text.ToString();
@@ -3500,7 +3510,6 @@ FROM
             int currUserId = dto.CurrUserId;
             string goodsName = dto.GoodsName;
 
-
             var showAllPeopleIds = new List<int>() {
                 374, // 罗颖
                 233, // 刘华举