最后一步审核 慢

This commit is contained in:
2026-09-17 10:51:15 +08:00
parent 1b885cc350
commit e8fb79e36a
3 changed files with 57 additions and 48 deletions

View File

@@ -51,9 +51,9 @@ namespace Appointment.Api.Controllers
/// <param name="req"></param> /// <param name="req"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public ApiResult ApplyOrder(ApplyOrderReq req) public async Task<ApiResult> ApplyOrder(ApplyOrderReq req)
{ {
return apptRepoJNC.ApplyOrder(req); return await apptRepoJNC.ApplyOrder(req);
} }
/// <summary> /// <summary>
@@ -73,9 +73,9 @@ namespace Appointment.Api.Controllers
/// <param name="req"></param> /// <param name="req"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public ApiResult AuditorSummary(ApplyOrderReq req) public async Task<ApiResult> AuditorSummary(ApplyOrderReq req)
{ {
return apptRepoJNC.AuditorSummary(req); return await apptRepoJNC.AuditorSummary(req);
} }
/// <summary> /// <summary>
@@ -84,9 +84,9 @@ namespace Appointment.Api.Controllers
/// <param name="req"></param> /// <param name="req"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public ApiResult RejectSummary(ApplyOrderReq req) public async Task<ApiResult> RejectSummary(ApplyOrderReq req)
{ {
return apptRepoJNC.RejectSummary(req); return await apptRepoJNC.RejectSummary(req);
} }
/// <summary> /// <summary>
@@ -95,9 +95,9 @@ namespace Appointment.Api.Controllers
/// <param name="req"></param> /// <param name="req"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public ApiResult ManualCopy(ApptSendReq req) public async Task<ApiResult> ManualCopy(ApptSendReq req)
{ {
return apptRepoJNC.ManualCopy(req); return await apptRepoJNC.ManualCopy(req);
} }
/// <summary> /// <summary>

View File

@@ -2,6 +2,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using System.Threading.Tasks;
namespace Appointment.IRepository namespace Appointment.IRepository
{ {
@@ -27,7 +28,7 @@ namespace Appointment.IRepository
/// </summary> /// </summary>
/// <param name="req"></param> /// <param name="req"></param>
/// <returns></returns> /// <returns></returns>
public ApiResult ApplyOrder(ApplyOrderReq req); Task<ApiResult> ApplyOrder(ApplyOrderReq req);
/// <summary> /// <summary>
/// 取消OA单 /// 取消OA单
@@ -41,21 +42,21 @@ namespace Appointment.IRepository
/// </summary> /// </summary>
/// <param name="req"></param> /// <param name="req"></param>
/// <returns></returns> /// <returns></returns>
public ApiResult AuditorSummary(ApplyOrderReq req); Task<ApiResult> AuditorSummary(ApplyOrderReq req);
/// <summary> /// <summary>
/// 被驳回 /// 被驳回
/// </summary> /// </summary>
/// <param name="req"></param> /// <param name="req"></param>
/// <returns></returns> /// <returns></returns>
public ApiResult RejectSummary(ApplyOrderReq req); Task<ApiResult> RejectSummary(ApplyOrderReq req);
/// <summary> /// <summary>
/// 手动抄送 /// 手动抄送
/// </summary> /// </summary>
/// <param name="req"></param> /// <param name="req"></param>
/// <returns></returns> /// <returns></returns>
public ApiResult ManualCopy(ApptSendReq req); Task<ApiResult> ManualCopy(ApptSendReq req);
/// <summary> /// <summary>
/// 信息回复 /// 信息回复

View File

@@ -9,6 +9,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks;
namespace Appointment.Repository namespace Appointment.Repository
{ {
@@ -1164,7 +1165,7 @@ namespace Appointment.Repository
/// </summary> /// </summary>
/// <param name="req"></param> /// <param name="req"></param>
/// <returns></returns> /// <returns></returns>
public ApiResult ApplyOrder(ApplyOrderReq req) public async Task<ApiResult> ApplyOrder(ApplyOrderReq req)
{ {
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
req = req.Replace(); req = req.Replace();
@@ -1176,7 +1177,7 @@ namespace Appointment.Repository
var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes); var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg); if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
var summaryM = Db.Queryable<ApptSummary>().Where(t => t.Id == req.Id).First(); var summaryM = await Db.Queryable<ApptSummary>().Where(t => t.Id == req.Id).FirstAsync();
if (summaryM == null || summaryM.ApptTypeId != 2) return ApiResult.Failed("未获取订单数据!"); if (summaryM == null || summaryM.ApptTypeId != 2) return ApiResult.Failed("未获取订单数据!");
if (summaryM.UserId != loginUserRes.Info.UserAccount) return ApiResult.Failed("只有创建人具有操作权限!"); if (summaryM.UserId != loginUserRes.Info.UserAccount) return ApiResult.Failed("只有创建人具有操作权限!");
//if (summaryM.AuditorStatus != (int)EnumAuditorStatus.江南春模式暂订单 //if (summaryM.AuditorStatus != (int)EnumAuditorStatus.江南春模式暂订单
@@ -1226,7 +1227,7 @@ namespace Appointment.Repository
} }
InsertReturnId(apptAuditLog); InsertReturnId(apptAuditLog);
PostMsg(summaryM); _ = await PostMsg(summaryM);
return ApiResult.Success(); return ApiResult.Success();
} }
@@ -1422,19 +1423,19 @@ namespace Appointment.Repository
/// </summary> /// </summary>
/// <param name="req"></param> /// <param name="req"></param>
/// <returns></returns> /// <returns></returns>
public ApiResult AuditorSummary(ApplyOrderReq req) public async Task<ApiResult> AuditorSummary(ApplyOrderReq req)
{ {
req = req.Replace(); req = req.Replace();
if (req.RemarkPics != null && req.RemarkPics.Count > 5) if (req.RemarkPics != null && req.RemarkPics.Count > 5)
{ {
return ApiResult.Failed("操作失败,最多只可上传5张图片!"); return ApiResult.Failed("操作失败,最多只可上传5张图片!");
} }
ApptSummary summaryM = Db.Queryable<ApptSummary>() ApptSummary summaryM = await Db.Queryable<ApptSummary>()
.Where(t => t.Id == req.Id && t.ApptTypeId == 2).First(); .Where(t => t.Id == req.Id && t.ApptTypeId == 2).FirstAsync();
if (summaryM == null) return ApiResult.Failed("订单不存在"); if (summaryM == null) return ApiResult.Failed("订单不存在");
if (summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请) if (summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请)
{ {
return ApprovedByAuditor(req); return await ApprovedByAuditor(req);
} }
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
@@ -1532,15 +1533,15 @@ namespace Appointment.Repository
if (nextStatus == EnumAuditorJncStatus.完成单) if (nextStatus == EnumAuditorJncStatus.完成单)
{ {
AotoCopy(summaryM.Id.Value); _ = await AotoCopy(summaryM.Id.Value);
} }
PostMsg(summaryM); _ = await PostMsg(summaryM);
//2025-05-14 确定单(总经理审核通过)后 直接变成完成单(销售员已确定完成,已群发,自动抄送) 省去 销售员再次 确定 //2025-05-14 确定单(总经理审核通过)后 直接变成完成单(销售员已确定完成,已群发,自动抄送) 省去 销售员再次 确定
if (nextStatus == EnumAuditorJncStatus.确定单) if (nextStatus == EnumAuditorJncStatus.确定单)
{ {
AuditorSummary(new ApplyOrderReq await AuditorSummary(new ApplyOrderReq
{ {
AccountDes = "@@@自动@@@", AccountDes = "@@@自动@@@",
Id = summaryM.Id.Value, Id = summaryM.Id.Value,
@@ -1557,7 +1558,7 @@ namespace Appointment.Repository
/// </summary> /// </summary>
/// <param name="req"></param> /// <param name="req"></param>
/// <returns></returns> /// <returns></returns>
public ApiResult RejectSummary(ApplyOrderReq req) public async Task<ApiResult> RejectSummary(ApplyOrderReq req)
{ {
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
@@ -1573,8 +1574,8 @@ namespace Appointment.Repository
if (JncAuditor.Length != 5) return ApiResult.Failed("审核配置无效!"); if (JncAuditor.Length != 5) return ApiResult.Failed("审核配置无效!");
ApptSummary summaryM = Db.Queryable<ApptSummary>() ApptSummary summaryM = await Db.Queryable<ApptSummary>()
.Where(t => t.Id == req.Id && t.ApptTypeId == 2).First(); .Where(t => t.Id == req.Id && t.ApptTypeId == 2).FirstAsync();
if (summaryM == null) return ApiResult.Failed("订单不存在"); if (summaryM == null) return ApiResult.Failed("订单不存在");
// 判断权限 // 判断权限
@@ -1639,7 +1640,7 @@ namespace Appointment.Repository
if (!inRe.IsSuccess) return ApiResult.Failed(inRe.Msg); if (!inRe.IsSuccess) return ApiResult.Failed(inRe.Msg);
_ApptLog.SetLog("appt_summary", req.Id.ToString(), oldData, JsonConvert.SerializeObject(summaryM), loginUserRes.Info.UserAccount, 1); _ApptLog.SetLog("appt_summary", req.Id.ToString(), oldData, JsonConvert.SerializeObject(summaryM), loginUserRes.Info.UserAccount, 1);
PostMsg(summaryM); _ = await PostMsg(summaryM);
return ApiResult.Success(); return ApiResult.Success();
} }
@@ -1648,7 +1649,7 @@ namespace Appointment.Repository
/// </summary> /// </summary>
/// <param name="req"></param> /// <param name="req"></param>
/// <returns></returns> /// <returns></returns>
public ApiResult ManualCopy(ApptSendReq req) public async Task<ApiResult> ManualCopy(ApptSendReq req)
{ {
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
@@ -1661,7 +1662,7 @@ namespace Appointment.Repository
if (req.ToUserAccounts == null || req.ToUserAccounts.Length <= 0) return ApiResult.Failed("操作失败,未选择抄送人!"); if (req.ToUserAccounts == null || req.ToUserAccounts.Length <= 0) return ApiResult.Failed("操作失败,未选择抄送人!");
var userList = Db.Queryable<UcLogin>().Where(t => t.Locked == "F").In(t => t.OpId, req.ToUserAccounts).ToList().Replace(); var userList = await Db.Queryable<UcLogin>().Where(t => t.Locked == "F").In(t => t.OpId, req.ToUserAccounts).ToListAsync().Replace();
if (userList.Count != req.ToUserAccounts.Length) if (userList.Count != req.ToUserAccounts.Length)
{ {
List<string> notUser = new List<string>(); List<string> notUser = new List<string>();
@@ -1696,7 +1697,7 @@ namespace Appointment.Repository
{ {
if (!string.IsNullOrEmpty(item.WxServiceId)) if (!string.IsNullOrEmpty(item.WxServiceId))
{ {
SetCopyMsg(loginUserRes.Info.UserName, summaryM.BuyerTitle, item.WxServiceId, false, req.Remark); await SetCopyMsg(loginUserRes.Info.UserName, summaryM.BuyerTitle, item.WxServiceId, false, req.Remark);
} }
} }
@@ -3083,7 +3084,7 @@ namespace Appointment.Repository
/// 预定部对预定单进行审批通过 【新的订单替换原来的订单】 /// 预定部对预定单进行审批通过 【新的订单替换原来的订单】
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
private ApiResult ApprovedByAuditor(ApplyOrderReq req) private async Task<ApiResult> ApprovedByAuditor(ApplyOrderReq req)
{ {
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
@@ -3091,22 +3092,22 @@ namespace Appointment.Repository
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg); if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
if (JncAuditor.Length != 5) return ApiResult.Failed("审核配置无效!"); if (JncAuditor.Length != 5) return ApiResult.Failed("审核配置无效!");
var summaryM = Db.Queryable<ApptSummary>() var summaryM = await Db.Queryable<ApptSummary>()
.Mapper(t => t.ApptRoomList, t => t.ApptRoomList.First().ApptId) .Mapper(t => t.ApptRoomList, t => t.ApptRoomList.First().ApptId)
.Mapper(t => t.ApptMeetingList, t => t.ApptMeetingList.First().ApptId) .Mapper(t => t.ApptMeetingList, t => t.ApptMeetingList.First().ApptId)
.Mapper(t => t.ApptCateringList, t => t.ApptCateringList.First().ApptId) .Mapper(t => t.ApptCateringList, t => t.ApptCateringList.First().ApptId)
.Mapper(t => t.ApptSpringList, t => t.ApptSpringList.First().ApptId) .Mapper(t => t.ApptSpringList, t => t.ApptSpringList.First().ApptId)
.Mapper(t => t.ApptRemarks, t => t.ApptRemarks.First().ApptId) .Mapper(t => t.ApptRemarks, t => t.ApptRemarks.First().ApptId)
.Where(t => t.Id == req.Id).First(); .Where(t => t.Id == req.Id).FirstAsync();
if (summaryM == null || summaryM.ApptTypeId != 2) return ApiResult.Failed("未获取订单数据!"); if (summaryM == null || summaryM.ApptTypeId != 2) return ApiResult.Failed("未获取订单数据!");
if (summaryM.AuditorStatus != (int)EnumAuditorJncStatus.审核单申请) return ApiResult.Failed("非待确定状态不可提交!"); if (summaryM.AuditorStatus != (int)EnumAuditorJncStatus.审核单申请) return ApiResult.Failed("非待确定状态不可提交!");
string jncAuditor = JncAuditor[0]; string jncAuditor = JncAuditor[0];
var userGroup = Db.Queryable<UcLogin, ApptAuditor>((u, a) => new JoinQueryInfos( var userGroup = await Db.Queryable<UcLogin, ApptAuditor>((u, a) => new JoinQueryInfos(
JoinType.Left, u.OpGroup == a.OpGroup JoinType.Left, u.OpGroup == a.OpGroup
)) ))
.Where((u, a) => u.OpId.Trim() == loginUserRes.Info.UserAccount && a.ApptTypeId == 2 && a.OpDescript == jncAuditor) .Where((u, a) => u.OpId.Trim() == loginUserRes.Info.UserAccount && a.ApptTypeId == 2 && a.OpDescript == jncAuditor)
.ToList(); .ToListAsync();
if (userGroup == null || userGroup.Count < 1) return ApiResult.Failed("没有操作权限!"); if (userGroup == null || userGroup.Count < 1) return ApiResult.Failed("没有操作权限!");
var auditM = Db.Queryable<ApptSummary>() var auditM = Db.Queryable<ApptSummary>()
@@ -3602,7 +3603,7 @@ namespace Appointment.Repository
return ApiResult.Failed(ex.Message); return ApiResult.Failed(ex.Message);
} }
} }
PostMsg(summaryM); _ = await PostMsg(summaryM);
return ApiResult.Success(); return ApiResult.Success();
} }
@@ -3610,7 +3611,7 @@ namespace Appointment.Repository
/// 实时计算机发送消息模板 /// 实时计算机发送消息模板
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
private void PostMsg(ApptSummary summary) private async Task<ApiResult> PostMsg(ApptSummary summary)
{ {
try try
{ {
@@ -3618,21 +3619,21 @@ namespace Appointment.Repository
string AppId = BaseConfig.App(new string[] { "WeChatService", "AppId" }); string AppId = BaseConfig.App(new string[] { "WeChatService", "AppId" });
string Hotelid = BaseConfig.App(new string[] { "Hotelid" }); string Hotelid = BaseConfig.App(new string[] { "Hotelid" });
string appId = BaseConfig.App(new string[] { "WeChat", "AppId" });// 小程序的appid string appId = BaseConfig.App(new string[] { "WeChat", "AppId" });// 小程序的appid
var userAll = Db.Queryable<UcLogin>().ToList().Replace(); var userAll = await Db.Queryable<UcLogin>().ToListAsync().Replace();
var userCreate = userAll.Where(t => t.OpId == summary.UserId).FirstOrDefault(); var userCreate = userAll.Where(t => t.OpId == summary.UserId).FirstOrDefault();
if (userCreate == null) return; if (userCreate == null) return new ApiResult { Code = 500, Msg = "用户信息不存在" };
List<string> createUserOpenid = new List<string>() { userCreate.WxServiceId }; List<string> createUserOpenid = new List<string>() { userCreate.WxServiceId };
var audimM = Db.Queryable<ApptAuditLog>().Where(t => t.ApptId == summary.Id).OrderBy(t => t.Id, OrderByType.Desc).First(); var audimM = await Db.Queryable<ApptAuditLog>().Where(t => t.ApptId == summary.Id).OrderBy(t => t.Id, OrderByType.Desc).FirstAsync();
if (summary.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请) if (summary.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请)
{ {
// 发送给预定部审核人员 // 发送给预定部审核人员
string jncAuditor = JncAuditor[0]; string jncAuditor = JncAuditor[0];
var auditorS = Db.Queryable<ApptAuditor>().Where(t => t.OpDescript == jncAuditor).First(); var auditorS = await Db.Queryable<ApptAuditor>().Where(t => t.OpDescript == jncAuditor).FirstAsync();
if (auditorS != null) if (auditorS != null)
{ {
var usersPost = Db.Queryable<UcLogin>().Where(t => t.OpGroup == auditorS.OpGroup && !string.IsNullOrEmpty(t.WxServiceId)).ToList(); var usersPost = await Db.Queryable<UcLogin>().Where(t => t.OpGroup == auditorS.OpGroup && !string.IsNullOrEmpty(t.WxServiceId)).ToListAsync();
if (usersPost != null && usersPost.Count > 0) if (usersPost != null && usersPost.Count > 0)
{ {
if (AppId == "wx3f193488e04b2ed8") // 江南春 if (AppId == "wx3f193488e04b2ed8") // 江南春
@@ -3661,7 +3662,7 @@ namespace Appointment.Repository
if (tousers != null && tousers.Count > 0) if (tousers != null && tousers.Count > 0)
{ {
if (string.IsNullOrWhiteSpace(appId)) ApiResult<WeChatLoginRes>.Failed("缺少配置参数 [AppId]!"); if (string.IsNullOrWhiteSpace(appId)) return new ApiResult { Code = 500, Msg = "缺少配置参数 [AppId]!" };
foreach (var touser in tousers) foreach (var touser in tousers)
{ {
@@ -4318,6 +4319,8 @@ namespace Appointment.Repository
{ {
_logger.Error(ex.Message); _logger.Error(ex.Message);
} }
return ApiResult.Success();
} }
/// <summary> /// <summary>
@@ -4328,11 +4331,12 @@ namespace Appointment.Repository
/// <param name="wxSericeOpenId">接收人程序openid</param> /// <param name="wxSericeOpenId">接收人程序openid</param>
/// <param name="autoCopy">自动手动,true-自动,false-手动</param> /// <param name="autoCopy">自动手动,true-自动,false-手动</param>
/// <param name="remark">手动自动备注</param> /// <param name="remark">手动自动备注</param>
private void SetCopyMsg(string createUserName, string buyerTitle, string wxSericeOpenId, bool autoCopy, string remark) private async Task<ApiResult> SetCopyMsg(string createUserName, string buyerTitle, string wxSericeOpenId, bool autoCopy, string remark)
{ {
// 收到的自动抄送的消息 // 收到的自动抄送的消息
try try
{ {
await Task.Delay(1);
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
string AppId = BaseConfig.App(new string[] { "WeChatService", "AppId" }); string AppId = BaseConfig.App(new string[] { "WeChatService", "AppId" });
string Hotelid = BaseConfig.App(new string[] { "Hotelid" }); string Hotelid = BaseConfig.App(new string[] { "Hotelid" });
@@ -4416,24 +4420,26 @@ namespace Appointment.Repository
{ {
_logger.Error(ex.ToString()); _logger.Error(ex.ToString());
} }
return ApiResult.Success();
} }
/// <summary> /// <summary>
/// 自动抄送 /// 自动抄送
/// </summary> /// </summary>
/// <param name="id"></param> /// <param name="id"></param>
private void AotoCopy(int id) private async Task<ApiResult> AotoCopy(int id)
{ {
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
ApptSummary summary = Db.Queryable<ApptSummary>() ApptSummary summary = await Db.Queryable<ApptSummary>()
.Mapper(t => t.ApptRoomList, t => t.ApptRoomList.First().ApptId) .Mapper(t => t.ApptRoomList, t => t.ApptRoomList.First().ApptId)
.Mapper(t => t.ApptMeetingList, t => t.ApptMeetingList.First().ApptId) .Mapper(t => t.ApptMeetingList, t => t.ApptMeetingList.First().ApptId)
.Mapper(t => t.ApptCateringList, t => t.ApptCateringList.First().ApptId) .Mapper(t => t.ApptCateringList, t => t.ApptCateringList.First().ApptId)
.Mapper(t => t.ApptSpringList, t => t.ApptSpringList.First().ApptId) .Mapper(t => t.ApptSpringList, t => t.ApptSpringList.First().ApptId)
.Mapper(t => t.ApptRemarks, t => t.ApptRemarks.First().ApptId) .Mapper(t => t.ApptRemarks, t => t.ApptRemarks.First().ApptId)
.Where(t => t.Id == id && t.ApptTypeId == 2).First(); .Where(t => t.Id == id && t.ApptTypeId == 2).FirstAsync();
if (summary.AuditorStatus != (int)EnumAuditorJncStatus.完成单) return; if (summary.AuditorStatus != (int)EnumAuditorJncStatus.完成单) return new ApiResult { Code = 500, Msg = "不符合自动抄送条件" };
try try
{ {
@@ -4520,7 +4526,7 @@ namespace Appointment.Repository
}); });
if (!string.IsNullOrEmpty(item.WxServiceId)) if (!string.IsNullOrEmpty(item.WxServiceId))
{ {
SetCopyMsg(createUserName, summary.BuyerTitle, item.WxServiceId, true, ""); _ = await SetCopyMsg(createUserName, summary.BuyerTitle, item.WxServiceId, true, "");
} }
} }
InsertRange(apptAuditLogs); InsertRange(apptAuditLogs);
@@ -4530,6 +4536,8 @@ namespace Appointment.Repository
{ {
_logger.Error(ex.Message); _logger.Error(ex.Message);
} }
return new ApiResult { Code = 200, Msg = "自动抄送成功" };
} }
/// <summary> /// <summary>