4586 lines
243 KiB
C#
4586 lines
243 KiB
C#
using Appointment.Entity;
|
||
using Appointment.Entity.Utility;
|
||
using Appointment.IRepository;
|
||
using Google.Protobuf.WellKnownTypes;
|
||
using Newtonsoft.Json;
|
||
using Newtonsoft.Json.Linq;
|
||
using SqlSugar;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace Appointment.Repository
|
||
{
|
||
/// <summary>
|
||
/// 江南春模式
|
||
/// 2025-05-12 现在使用的审核流程模式
|
||
/// </summary>
|
||
public class ApptRepoJNC : DbContext, IApptRepoJNC
|
||
{
|
||
private readonly log4net.ILog _logger = log4net.LogManager.GetLogger(typeof(ApptRepoJNC));
|
||
/// <summary>
|
||
/// "预定部", "销售经理", "财务经理", "财务总监", "总经理"
|
||
/// </summary>
|
||
static string[] JncAuditor = new string[] { "预定部", "销售经理", "财务经理", "财务总监", "总经理" };
|
||
// 销售 91-王应哲-123,预定部 92-曹青青-123,销售经理 TEST-123,财务经理 WJ-123,财务总监 LJJ-123
|
||
IApptLogRepo _ApptLog;
|
||
public ApptRepoJNC(IApptLogRepo apptLog)
|
||
{
|
||
_ApptLog = apptLog;
|
||
}
|
||
|
||
// ---- 增
|
||
|
||
/// <summary>
|
||
/// 创建暂订单
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
public ApiResult<int> AddApptSummary(AddSummaryJncReq req)
|
||
{
|
||
DateTime now = DateTime.Now;
|
||
req = req.Replace();
|
||
|
||
/* 数据校验 */
|
||
if (req == null) return ApiResult<int>.Failed(ApiResultMsg.NoParameter);
|
||
if (
|
||
(req.ApptRoomList == null || req.ApptRoomList.Count == 0)
|
||
&& (req.ApptMeetingList == null || req.ApptMeetingList.Count == 0)
|
||
&& (req.ApptCateringList == null || req.ApptCateringList.Count == 0)
|
||
&& (req.ApptSpringList == null || req.ApptSpringList.Count == 0)
|
||
)
|
||
{
|
||
return ApiResult<int>.Failed("操作无效,预订详情全为空!");
|
||
}
|
||
|
||
ApiResult<LoginUserRes> loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
|
||
if (!loginUserRes.IsSuccess) return ApiResult<int>.Failed(loginUserRes.Msg);
|
||
|
||
string ApptType = BaseConfig.App(new string[] { "ApptType" });
|
||
if (ApptType != "2") return ApiResult<int>.Failed("操作失败,预订类型不正确!");
|
||
|
||
var user = Db.Queryable<UcLogin>().Where(t => t.OpId == loginUserRes.Info.UserAccount).First();
|
||
|
||
/* 订单主体 */
|
||
ApptSummary appt = new ApptSummary
|
||
{
|
||
Guid = Guid.NewGuid().ToString(),
|
||
UserId = loginUserRes.Info.UserAccount,
|
||
CreateTime = DateTime.Now,
|
||
ApptTypeId = Convert.ToInt32(ApptType),
|
||
|
||
AuditorStatus = (int)EnumAuditorJncStatus.暂订单,
|
||
AuditorId = 0,
|
||
TransferAudit = "",
|
||
ApptType = 0,
|
||
No = "",
|
||
|
||
BuyerName = req.BuyerName,
|
||
BuyerAddress = req.BuyerAddress,
|
||
BuyerTitle = req.BuyerTitle,
|
||
LeaderName = req.LeaderName,
|
||
LeaderMobile = req.LeaderMobile,
|
||
|
||
LeaderRoom = req.LeaderRoom,
|
||
SaleName = loginUserRes.Info.UserName,
|
||
SaleMobile = user?.Mobile,
|
||
SaleDirector = req.SaleDirector,
|
||
RoomRemark = req.RoomRemark,
|
||
|
||
MeetingRemark = req.MeetingRemark,
|
||
CateringRemark = req.CateringRemark,
|
||
SpringRemark = req.SpringRemark,
|
||
Pid = 0,
|
||
GrpNo = "",
|
||
|
||
StartDay = DateTimeHelper.MSSQLMinValue,
|
||
EndDay = DateTimeHelper.MSSQLMinValue,
|
||
ApplyOA = 0,
|
||
};
|
||
|
||
/* 客房预订明细 */
|
||
var apptRoomList = new List<ApptRoom>();
|
||
if (req.ApptRoomList != null && req.ApptRoomList.Count > 0)
|
||
{
|
||
List<RoomType> roomTypeList = Db.Queryable<RoomType>().ToList().Replace();
|
||
|
||
foreach (var item in req.ApptRoomList)
|
||
{
|
||
if (item.RoomIn != null && item.RoomIn.Hour == 0) item.RoomIn = new DateTime(item.RoomIn.Year, item.RoomIn.Month, item.RoomIn.Day, 18, 0, 0);
|
||
if (item.RoomOut != null && item.RoomOut.Hour == 0) item.RoomOut = new DateTime(item.RoomOut.Year, item.RoomOut.Month, item.RoomOut.Day, 14, 0, 0);
|
||
|
||
if (!string.IsNullOrEmpty(item.RoomCode))
|
||
{
|
||
var room = roomTypeList.Where(t => t.Id == item.RoomCode).FirstOrDefault();
|
||
if (room == null) return ApiResult<int>.Failed("添加失败,房类代码不存在!");
|
||
if (item.RoomNum < 1) return ApiResult<int>.Failed("添加失败,房间数量无效!");
|
||
item.RoomGroup = room.Descript1;
|
||
}
|
||
|
||
if (appt.StartDay == DateTimeHelper.MSSQLMinValue || appt.StartDay > item.RoomIn)
|
||
{
|
||
appt.StartDay = new DateTime(item.RoomIn.Year, item.RoomIn.Month, item.RoomIn.Day);
|
||
}
|
||
if (appt.EndDay == DateTimeHelper.MSSQLMinValue || appt.EndDay < item.RoomOut)
|
||
{
|
||
appt.EndDay = new DateTime(item.RoomOut.Year, item.RoomOut.Month, item.RoomOut.Day);
|
||
}
|
||
|
||
apptRoomList.Add(new ApptRoom()
|
||
{
|
||
Guid = Guid.NewGuid().ToString(),
|
||
ApptId = 0,
|
||
RoomIn = item.RoomIn,
|
||
RoomOut = item.RoomOut,
|
||
|
||
RoomGroup = item.RoomGroup,
|
||
RoomCode = item.RoomCode,
|
||
RoomNum = item.RoomNum,
|
||
RoomPrice = item.RoomPrice,
|
||
BreakfastNum = item.BreakfastNum,
|
||
|
||
LongDistance = item.LongDistance,
|
||
MinShop = item.MinShop,
|
||
RoomRemark = item.RoomRemark
|
||
});
|
||
}
|
||
}
|
||
|
||
/* 会议室预订明细 */
|
||
var apptMeetingList = new List<ApptMeeting>();
|
||
if (req.ApptMeetingList != null && req.ApptMeetingList.Count > 0)
|
||
{
|
||
List<ResCode> resCodeList = Db.Queryable<ResCode>().Where(t => t.Sort == "A" && t.Sta == "T").ToList();
|
||
|
||
foreach (var item in req.ApptMeetingList)
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(item.MeetingCode))
|
||
{
|
||
var resCode = resCodeList.Where(t => t.Code == item.MeetingCode).FirstOrDefault();
|
||
if (resCode == null) return ApiResult<int>.Failed("添加失败,无效的会议厅代码!");
|
||
item.MeetingRoom = resCode.Descript1;
|
||
}
|
||
|
||
// 场次数据判断
|
||
if (string.IsNullOrEmpty(item.Groups)) return ApiResult<int>.Failed($"添加失败,会议室{item.MeetingRoom}未设置场次!");
|
||
List<int> groups = new List<int>();
|
||
try
|
||
{
|
||
groups = item.Groups.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
|
||
if (groups.Count < 1) throw new Exception("");
|
||
if (groups.Where(t => t != 1 && t != 2 && t != 3).Count() > 1) throw new Exception("");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return ApiResult<int>.Failed($"会议室{item.MeetingRoom}场次格式不正确!");
|
||
}
|
||
|
||
if (appt.StartDay == DateTimeHelper.MSSQLMinValue || appt.StartDay > item.MeetingTime)
|
||
{
|
||
appt.StartDay = new DateTime(item.MeetingTime.Year, item.MeetingTime.Month, item.MeetingTime.Day);
|
||
}
|
||
if (appt.EndDay == DateTimeHelper.MSSQLMinValue || appt.EndDay < item.MeetingTime)
|
||
{
|
||
appt.EndDay = new DateTime(item.MeetingTime.Year, item.MeetingTime.Month, item.MeetingTime.Day);
|
||
}
|
||
|
||
apptMeetingList.Add(new ApptMeeting()
|
||
{
|
||
Guid = Guid.NewGuid().ToString(),
|
||
ApptId = 0,
|
||
MeetingTime = item.MeetingTime,
|
||
Groups = string.Join(",", groups),
|
||
|
||
MeetingRoom = item.MeetingRoom,
|
||
MeetingCode = item.MeetingCode,
|
||
MeetingRostrum = item.MeetingRostrum,
|
||
MeetingShape = item.MeetingShape,
|
||
MeetingNum = item.MeetingNum,
|
||
|
||
MeetingPrice = item.MeetingPrice,
|
||
MeetingTitle = item.MeetingTitle,
|
||
Remark = item.Remark
|
||
});
|
||
}
|
||
}
|
||
|
||
/* 餐饮预订明细 */
|
||
var apptCateringList = new List<ApptCatering>();
|
||
if (req.ApptCateringList != null && req.ApptCateringList.Count > 0)
|
||
{
|
||
foreach (ApptCatering item in req.ApptCateringList)
|
||
{
|
||
if (item.CateringType != 0 && item.CateringType != 1) return ApiResult<int>.Failed($"用餐类型不正确!");
|
||
|
||
// 场次数据判断
|
||
if (string.IsNullOrEmpty(item.Groups)) return ApiResult<int>.Failed($"添加失败,餐厅{item.CateringRoom}未设置场次!");
|
||
List<int> groups = new List<int>();
|
||
try
|
||
{
|
||
groups = item.Groups.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
|
||
if (groups.Count < 1) throw new Exception("");
|
||
if (groups.Where(t => t != 1 && t != 2 && t != 3).Count() > 1) throw new Exception("");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return ApiResult<int>.Failed($"餐厅{item.CateringRoom}场次格式不正确!");
|
||
}
|
||
|
||
if (appt.StartDay == DateTimeHelper.MSSQLMinValue || appt.StartDay > item.CateringTime)
|
||
{
|
||
appt.StartDay = new DateTime(item.CateringTime.Year, item.CateringTime.Month, item.CateringTime.Day);
|
||
}
|
||
if (appt.EndDay == DateTimeHelper.MSSQLMinValue || appt.EndDay < item.CateringTime)
|
||
{
|
||
appt.EndDay = new DateTime(item.CateringTime.Year, item.CateringTime.Month, item.CateringTime.Day);
|
||
}
|
||
|
||
apptCateringList.Add(new ApptCatering()
|
||
{
|
||
Guid = Guid.NewGuid().ToString(),
|
||
ApptId = 0,
|
||
CateringTime = item.CateringTime,
|
||
Groups = string.Join(",", groups),
|
||
|
||
CateringRoom = item.CateringRoom,
|
||
CateringCode = item.CateringCode,
|
||
CateringType = item.CateringType,
|
||
CateringNum = item.CateringNum,
|
||
CateringPrice = item.CateringPrice,
|
||
|
||
CateringTable = item.CateringTable,
|
||
Wine = item.Wine,
|
||
Remark = item.Remark,
|
||
});
|
||
}
|
||
}
|
||
|
||
/* 温泉预订明细 */
|
||
var apptSpringList = new List<ApptSpring>();
|
||
if (req.ApptSpringList != null && req.ApptSpringList.Count > 0)
|
||
{
|
||
foreach (ApptSpring item in req.ApptSpringList)
|
||
{
|
||
if (appt.StartDay == DateTimeHelper.MSSQLMinValue || appt.StartDay > item.SpringTime)
|
||
{
|
||
appt.StartDay = new DateTime(item.SpringTime.Year, item.SpringTime.Month, item.SpringTime.Day);
|
||
}
|
||
if (appt.EndDay == DateTimeHelper.MSSQLMinValue || appt.EndDay < item.SpringTime)
|
||
{
|
||
appt.EndDay = new DateTime(item.SpringTime.Year, item.SpringTime.Month, item.SpringTime.Day);
|
||
}
|
||
|
||
apptSpringList.Add(new ApptSpring()
|
||
{
|
||
Guid = Guid.NewGuid().ToString(),
|
||
ApptId = 0,
|
||
SpringTime = item.SpringTime,
|
||
PeopleNum = item.PeopleNum,
|
||
|
||
SpringMen = item.SpringMen,
|
||
SpringWomen = item.SpringWomen,
|
||
Consume = item.Consume,
|
||
SpringPrice = item.SpringPrice,
|
||
Remark = item.Remark,
|
||
});
|
||
}
|
||
}
|
||
|
||
/* 自定义备注 */
|
||
var ApptRemarkList = new List<ApptRemark>();
|
||
if (req.ApptRemarks != null && req.ApptRemarks.Count > 0)
|
||
{
|
||
foreach (var item in req.ApptRemarks)
|
||
{
|
||
ApptRemarkList.Add(new ApptRemark
|
||
{
|
||
Guid = Guid.NewGuid().ToString(),
|
||
ApptId = 0,
|
||
Title = item.Title,
|
||
Info = item.Info,
|
||
});
|
||
}
|
||
}
|
||
|
||
try
|
||
{
|
||
Db.Ado.BeginTran();
|
||
var resultSummary = InsertReturnId(appt);
|
||
if (!resultSummary.IsSuccess) throw new Exception(resultSummary.Msg);
|
||
appt.Id = resultSummary.Info;
|
||
_ApptLog.SetLog("appt_summary", appt.Id.ToString(), null, JsonConvert.SerializeObject(appt), loginUserRes.Info.UserAccount, 1);
|
||
|
||
foreach (ApptRoom item in apptRoomList)
|
||
{
|
||
item.ApptId = appt.Id.Value;
|
||
var inR = InsertReturnId(item);
|
||
if (!inR.IsSuccess) throw new Exception(inR.Msg);
|
||
item.Id = inR.Info;
|
||
_ApptLog.SetLog("appt_room", item.Id.ToString(), null, JsonConvert.SerializeObject(item), loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
|
||
foreach (ApptMeeting item in apptMeetingList)
|
||
{
|
||
item.ApptId = appt.Id.Value;
|
||
var inR = InsertReturnId(item);
|
||
if (!inR.IsSuccess) throw new Exception(inR.Msg);
|
||
item.Id = inR.Info;
|
||
_ApptLog.SetLog("appt_meeting", item.Id.ToString(), null, JsonConvert.SerializeObject(item), loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
|
||
foreach (ApptCatering item in apptCateringList)
|
||
{
|
||
item.ApptId = appt.Id.Value;
|
||
var inR = InsertReturnId(item);
|
||
if (!inR.IsSuccess) throw new Exception(inR.Msg);
|
||
item.Id = inR.Info;
|
||
_ApptLog.SetLog("appt_catering", item.Id.ToString(), null, JsonConvert.SerializeObject(item), loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
|
||
foreach (ApptSpring item in apptSpringList)
|
||
{
|
||
item.ApptId = appt.Id.Value;
|
||
var inR = InsertReturnId(item);
|
||
if (!inR.IsSuccess) throw new Exception(inR.Msg);
|
||
item.Id = inR.Info;
|
||
_ApptLog.SetLog("appt_spring", item.Id.ToString(), null, JsonConvert.SerializeObject(item), loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
|
||
foreach (ApptRemark item in ApptRemarkList)
|
||
{
|
||
item.ApptId = appt.Id.Value;
|
||
var inR = InsertReturnId(item);
|
||
if (!inR.IsSuccess) throw new Exception(inR.Msg);
|
||
item.Id = inR.Info;
|
||
_ApptLog.SetLog("appt_remark", item.Id.ToString(), null, JsonConvert.SerializeObject(item), loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
|
||
InsertReturnId(new ApptAuditLog()
|
||
{
|
||
Type = 1,
|
||
CreateTime = now,
|
||
UserId = loginUserRes.Info.UserAccount,
|
||
ApptId = appt.Id.Value,
|
||
AuditorStatus = (int)EnumAuditorJncStatus.暂订单,
|
||
Remark = "",
|
||
});
|
||
|
||
Db.Ado.CommitTran();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Db.Ado.RollbackTran();
|
||
throw new Exception("提交预订失败,出现异常,异常信息:" + ex.Message);
|
||
}
|
||
|
||
return ApiResult<int>.Success("", appt.Id.Value);
|
||
}
|
||
|
||
|
||
// ---- 改
|
||
|
||
/// <summary>
|
||
/// 修改暂订单
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
public ApiResult<int> UpdateSummary(UpdateSummaryReq req)
|
||
{
|
||
DateTime now = DateTime.Now;
|
||
req = req.Replace();
|
||
if (
|
||
(req.ApptRoomList == null || req.ApptRoomList.Count == 0)
|
||
&& (req.ApptMeetingList == null || req.ApptMeetingList.Count == 0)
|
||
&& (req.ApptCateringList == null || req.ApptCateringList.Count == 0)
|
||
&& (req.ApptSpringList == null || req.ApptSpringList.Count == 0)
|
||
)
|
||
{
|
||
return ApiResult<int>.Failed("操作无效,预订详情全为空!");
|
||
}
|
||
|
||
var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
|
||
if (!loginUserRes.IsSuccess) return ApiResult<int>.Failed(loginUserRes.Msg);
|
||
|
||
var summaryM = Db.Queryable<ApptSummary>().Where(t => t.Id == req.Id).First();
|
||
if (summaryM == null || summaryM.ApptTypeId != 2) return ApiResult<int>.Failed("未获取订单数据!");
|
||
if (summaryM.UserId != loginUserRes.Info.UserAccount) return ApiResult<int>.Failed("只有创建人员具有操作权限!");
|
||
|
||
string oldData = "";
|
||
string newData = "";
|
||
try
|
||
{
|
||
Db.Ado.BeginTran();
|
||
|
||
if (summaryM.AuditorStatus == (int)EnumAuditorJncStatus.暂订单)
|
||
{
|
||
summaryM.BuyerName = req.BuyerName;
|
||
summaryM.BuyerAddress = req.BuyerAddress;
|
||
summaryM.BuyerTitle = req.BuyerTitle;
|
||
summaryM.LeaderName = req.LeaderName;
|
||
summaryM.LeaderMobile = req.LeaderMobile;
|
||
|
||
summaryM.LeaderRoom = req.LeaderRoom;
|
||
summaryM.SaleDirector = req.SaleDirector;
|
||
summaryM.RoomRemark = req.RoomRemark;
|
||
|
||
summaryM.MeetingRemark = req.MeetingRemark;
|
||
summaryM.CateringRemark = req.CateringRemark;
|
||
summaryM.SpringRemark = req.SpringRemark;
|
||
summaryM.AlterTime = now;
|
||
|
||
newData = JsonConvert.SerializeObject(summaryM);
|
||
if (oldData != newData)
|
||
{
|
||
Update(summaryM);
|
||
_ApptLog.SetLog("appt_summary", summaryM.Id.ToString(), oldData, newData, loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
}
|
||
else if (summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请
|
||
|| (summaryM.AuditorStatus == (int)EnumAuditorJncStatus.驳回单 && summaryM.ApplyOA == 0)
|
||
)
|
||
{
|
||
oldData = JsonConvert.SerializeObject(summaryM);
|
||
summaryM.AuditorStatus = (int)EnumAuditorJncStatus.暂订单;
|
||
|
||
summaryM.BuyerName = req.BuyerName;
|
||
summaryM.BuyerAddress = req.BuyerAddress;
|
||
summaryM.BuyerTitle = req.BuyerTitle;
|
||
summaryM.LeaderName = req.LeaderName;
|
||
summaryM.LeaderMobile = req.LeaderMobile;
|
||
|
||
summaryM.LeaderRoom = req.LeaderRoom;
|
||
summaryM.SaleDirector = req.SaleDirector;
|
||
summaryM.RoomRemark = req.RoomRemark;
|
||
|
||
summaryM.MeetingRemark = req.MeetingRemark;
|
||
summaryM.CateringRemark = req.CateringRemark;
|
||
summaryM.SpringRemark = req.SpringRemark;
|
||
summaryM.AlterTime = now;
|
||
|
||
newData = JsonConvert.SerializeObject(summaryM);
|
||
if (oldData != newData)
|
||
{
|
||
Update(summaryM);
|
||
_ApptLog.SetLog("appt_summary", summaryM.Id.ToString(), oldData, JsonConvert.SerializeObject(summaryM), loginUserRes.Info.UserAccount, 1);
|
||
|
||
InsertReturnId(new ApptAuditLog()
|
||
{
|
||
Type = 1,
|
||
CreateTime = now,
|
||
UserId = loginUserRes.Info.UserAccount,
|
||
ApptId = summaryM.Id.Value,
|
||
AuditorStatus = (int)EnumAuditorJncStatus.暂订单,
|
||
Remark = $"{loginUserRes.Info.UserName} 修改了内容,审核被自动撤回。",
|
||
});
|
||
}
|
||
}
|
||
else if (summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单预定部
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单销售经理
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务经理
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务总监
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.确定单
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.完成单
|
||
|| (summaryM.AuditorStatus == (int)EnumAuditorJncStatus.驳回单 && summaryM.ApplyOA == 1))
|
||
{
|
||
//throw new Exception("应该修改暂订单的数据,不应该修改确定单");
|
||
#region 调整到获取实体
|
||
summaryM.AuditorStatus = (int)EnumAuditorJncStatus.归档资源单;
|
||
Update(summaryM);
|
||
|
||
summaryM = Db.Queryable<ApptSummary>()
|
||
.Where(t => t.Guid == summaryM.Guid && t.AuditorStatus == (int)EnumAuditorJncStatus.归档暂定单)
|
||
.First();
|
||
if (summaryM == null)
|
||
{
|
||
throw new Exception("未获取到暂订单数据!");
|
||
}
|
||
|
||
oldData = JsonConvert.SerializeObject(summaryM);
|
||
|
||
summaryM.AuditorStatus = (int)EnumAuditorJncStatus.暂订单;
|
||
summaryM.BuyerName = req.BuyerName;
|
||
summaryM.BuyerAddress = req.BuyerAddress;
|
||
summaryM.BuyerTitle = req.BuyerTitle;
|
||
summaryM.LeaderName = req.LeaderName;
|
||
summaryM.LeaderMobile = req.LeaderMobile;
|
||
|
||
summaryM.LeaderRoom = req.LeaderRoom;
|
||
summaryM.SaleDirector = req.SaleDirector;
|
||
summaryM.RoomRemark = req.RoomRemark;
|
||
|
||
summaryM.MeetingRemark = req.MeetingRemark;
|
||
summaryM.CateringRemark = req.CateringRemark;
|
||
summaryM.SpringRemark = req.SpringRemark;
|
||
summaryM.AlterTime = now;
|
||
|
||
newData = JsonConvert.SerializeObject(summaryM);
|
||
if (newData != oldData)
|
||
{
|
||
Update(summaryM);
|
||
_ApptLog.SetLog("appt_summary", summaryM.Id.ToString(), oldData, JsonConvert.SerializeObject(summaryM), loginUserRes.Info.UserAccount, 1);
|
||
|
||
InsertReturnId(new ApptAuditLog()
|
||
{
|
||
Type = 1,
|
||
CreateTime = now,
|
||
UserId = loginUserRes.Info.UserAccount,
|
||
ApptId = summaryM.Id.Value,
|
||
AuditorStatus = (int)EnumAuditorJncStatus.暂订单,
|
||
Remark = $"{loginUserRes.Info.UserName} 修改了订单内容",
|
||
});
|
||
}
|
||
#endregion
|
||
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("不支持的操作!");
|
||
}
|
||
|
||
DateTime startDay = DateTimeHelper.MSSQLMinValue;
|
||
DateTime endDay = DateTimeHelper.MSSQLMinValue;
|
||
|
||
var roomList = Db.Queryable<ApptRoom>().Where(t => t.ApptId == summaryM.Id).ToList();
|
||
if (req.ApptRoomList == null || req.ApptRoomList.Count == 0)
|
||
{
|
||
if (roomList.Count > 0)
|
||
{
|
||
foreach (ApptRoom roomItem in roomList)
|
||
{
|
||
oldData = JsonConvert.SerializeObject(roomItem);
|
||
_ApptLog.SetLog("appt_room", roomItem.Id.ToString(), oldData, null, loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
DeleteRange<ApptRoom>(roomList.Select(t => t.Id.Value).ToList());
|
||
}
|
||
}
|
||
else
|
||
{
|
||
List<RoomType> roomTypeList = Db.Queryable<RoomType>().ToList().Replace();
|
||
|
||
// 删除不在提交列表中的旧预定客房
|
||
foreach (var oldRoom in roomList)
|
||
{
|
||
var OldM = req.ApptRoomList.Where(t => t.Guid == oldRoom.Guid).FirstOrDefault();
|
||
if (OldM == null)
|
||
{
|
||
oldData = JsonConvert.SerializeObject(oldRoom);
|
||
_ApptLog.SetLog("appt_room", oldRoom.Id.ToString(), oldData, null, loginUserRes.Info.UserAccount, 1);
|
||
Db.Deleteable<ApptRoom>().Where(t => t.ApptId == summaryM.Id && t.Guid == oldRoom.Guid).ExecuteCommand();
|
||
}
|
||
}
|
||
|
||
// 添加新增加的预定客房
|
||
var addList = req.ApptRoomList.Where(t => t.Id == null || t.Id == 0).ToList();
|
||
if (addList.Count > 0)
|
||
{
|
||
foreach (var item in addList)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.RoomCode))
|
||
{
|
||
var room = roomTypeList.Where(t => t.Id == item.RoomCode).FirstOrDefault();
|
||
if (room == null) throw new Exception($"操作失败,房类代码[{item.RoomCode}]不存在!");
|
||
if (item.RoomNum < 1) throw new Exception($"操作失败,房间{item.RoomGroup}数量无效!");
|
||
item.RoomGroup = room.Descript1;
|
||
}
|
||
var newM = new ApptRoom
|
||
{
|
||
Guid = Guid.NewGuid().ToString(),
|
||
ApptId = summaryM.Id,
|
||
RoomIn = item.RoomIn,
|
||
RoomOut = item.RoomOut,
|
||
|
||
RoomGroup = item.RoomGroup,
|
||
RoomCode = item.RoomCode,
|
||
RoomNum = item.RoomNum,
|
||
RoomPrice = item.RoomPrice,
|
||
BreakfastNum = item.BreakfastNum,
|
||
|
||
LongDistance = item.LongDistance,
|
||
MinShop = item.MinShop,
|
||
RoomRemark = item.RoomRemark,
|
||
};
|
||
|
||
var reR = InsertReturnId(newM);
|
||
if (!reR.IsSuccess) throw new Exception(reR.Msg);
|
||
newM.Id = reR.Info;
|
||
_ApptLog.SetLog("appt_room", newM.Id.ToString(), null, JsonConvert.SerializeObject(newM), loginUserRes.Info.UserAccount, 1);
|
||
|
||
if (startDay == DateTimeHelper.MSSQLMinValue || startDay > item.RoomIn)
|
||
{
|
||
startDay = new DateTime(item.RoomIn.Year, item.RoomIn.Month, item.RoomIn.Day);
|
||
}
|
||
if (endDay == DateTimeHelper.MSSQLMinValue || endDay < item.RoomOut)
|
||
{
|
||
endDay = new DateTime(item.RoomOut.Year, item.RoomOut.Month, item.RoomOut.Day);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 修改原来的数据
|
||
var upls = req.ApptRoomList.Where(t => !string.IsNullOrEmpty(t.Guid) && roomList.Select(r => r.Guid).Contains(t.Guid)).ToList();
|
||
var roomListUpdate = new List<ApptRoom>();
|
||
foreach (var item in upls)
|
||
{
|
||
var model = roomList.Where(t => t.Guid == item.Guid).FirstOrDefault();
|
||
|
||
if (model != null)
|
||
{
|
||
if (item.RoomIn.Hour == 0)
|
||
{
|
||
item.RoomIn = new DateTime(item.RoomIn.Year, item.RoomIn.Month, item.RoomIn.Day, 18, 0, 0);
|
||
}
|
||
if (item.RoomOut.Hour == 0)
|
||
{
|
||
item.RoomOut = new DateTime(item.RoomOut.Year, item.RoomOut.Month, item.RoomOut.Day, 14, 0, 0);
|
||
}
|
||
if (model.RoomPrice == item.RoomPrice) model.RoomPrice = item.RoomPrice;
|
||
oldData = JsonConvert.SerializeObject(model);
|
||
newData = JsonConvert.SerializeObject(item);
|
||
if (oldData != newData)
|
||
{
|
||
|
||
if (!string.IsNullOrEmpty(item.RoomCode))
|
||
{
|
||
var room = roomTypeList.Where(t => t.Id == item.RoomCode).FirstOrDefault();
|
||
if (room == null) throw new Exception($"操作失败,房类代码[{item.RoomCode}]不存在!");
|
||
if (item.RoomNum < 1) throw new Exception($"操作失败,房间{item.RoomGroup}数量无效!");
|
||
item.RoomGroup = room.Descript1;
|
||
}
|
||
|
||
model.RoomGroup = item.RoomGroup;
|
||
model.RoomCode = item.RoomCode;
|
||
model.RoomNum = item.RoomNum;
|
||
model.RoomPrice = item.RoomPrice;
|
||
model.BreakfastNum = item.BreakfastNum;
|
||
|
||
model.LongDistance = item.LongDistance;
|
||
model.MinShop = item.MinShop;
|
||
model.RoomRemark = item.RoomRemark;
|
||
|
||
roomListUpdate.Add(model);
|
||
_ApptLog.SetLog("appt_room", model.Id.ToString(), oldData, JsonConvert.SerializeObject(model), loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
if (startDay == DateTimeHelper.MSSQLMinValue || startDay > item.RoomIn)
|
||
{
|
||
startDay = new DateTime(item.RoomIn.Year, item.RoomIn.Month, item.RoomIn.Day);
|
||
}
|
||
if (endDay == DateTimeHelper.MSSQLMinValue || endDay < item.RoomOut)
|
||
{
|
||
endDay = new DateTime(item.RoomOut.Year, item.RoomOut.Month, item.RoomOut.Day);
|
||
}
|
||
}
|
||
}
|
||
if (roomListUpdate.Count > 0) UpdateRange(roomListUpdate);
|
||
}
|
||
|
||
var meetList = Db.Queryable<ApptMeeting>().Where(t => t.ApptId == summaryM.Id).ToList();
|
||
if (req.ApptMeetingList == null || req.ApptMeetingList.Count == 0)
|
||
{
|
||
if (meetList.Count > 0)
|
||
{
|
||
foreach (ApptMeeting item in meetList)
|
||
{
|
||
oldData = JsonConvert.SerializeObject(item);
|
||
_ApptLog.SetLog("appt_meeting", item.Id.ToString(), oldData, null, loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
DeleteRange<ApptMeeting>(meetList.Select(t => t.Id.Value).ToList());
|
||
}
|
||
}
|
||
else
|
||
{
|
||
List<ResCode> resCodeList = Db.Queryable<ResCode>().Where(t => t.Sort == "A" && t.Sta == "T").ToList();
|
||
|
||
// 删除不在提交列表中的旧预定会议室
|
||
foreach (var oldRoom in meetList)
|
||
{
|
||
var OldM = req.ApptMeetingList.Where(t => t.Guid == oldRoom.Guid).FirstOrDefault();
|
||
if (OldM == null)
|
||
{
|
||
oldData = JsonConvert.SerializeObject(oldRoom);
|
||
_ApptLog.SetLog("appt_meeting", oldRoom.Id.ToString(), oldData, null, loginUserRes.Info.UserAccount, 1);
|
||
Db.Deleteable<ApptMeeting>().Where(t => t.ApptId == summaryM.Id && t.Guid == oldRoom.Guid).ExecuteCommand();
|
||
}
|
||
}
|
||
|
||
// 添加新增加的预定会议室
|
||
var addList = req.ApptMeetingList.Where(t => t.Id == null || t.Id == 0).ToList();
|
||
if (addList.Count > 0)
|
||
{
|
||
var dataInList = new List<ApptMeeting>();
|
||
foreach (var item in addList)
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(item.MeetingCode))
|
||
{
|
||
var resCode = resCodeList.Where(t => t.Code == item.MeetingCode).FirstOrDefault();
|
||
if (resCode == null) throw new Exception("添加失败,无效的会议厅代码!");
|
||
item.MeetingRoom = resCode.Descript1;
|
||
}
|
||
|
||
// 场次数据判断
|
||
if (string.IsNullOrEmpty(item.Groups)) throw new Exception($"添加失败,会议室{item.MeetingRoom}未设置场次!");
|
||
List<int> groups = new List<int>();
|
||
try
|
||
{
|
||
groups = item.Groups.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
|
||
if (groups.Count < 1) throw new Exception("");
|
||
if (groups.Where(t => t != 1 && t != 2 && t != 3).Count() > 1) throw new Exception("");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
throw new Exception($"会议室{item.MeetingRoom}场次格式不正确!");
|
||
}
|
||
|
||
var newM = new ApptMeeting
|
||
{
|
||
Guid = Guid.NewGuid().ToString(),
|
||
ApptId = summaryM.Id,
|
||
MeetingTime = item.MeetingTime,
|
||
Groups = string.Join(",", groups),
|
||
|
||
MeetingRoom = item.MeetingRoom,
|
||
MeetingCode = item.MeetingCode,
|
||
MeetingRostrum = item.MeetingRostrum,
|
||
MeetingShape = item.MeetingShape,
|
||
MeetingNum = item.MeetingNum,
|
||
|
||
MeetingPrice = item.MeetingPrice,
|
||
MeetingTitle = item.MeetingTitle,
|
||
Remark = item.Remark,
|
||
};
|
||
var reR = InsertReturnId(newM);
|
||
if (!reR.IsSuccess) throw new Exception(reR.Msg);
|
||
newM.Id = reR.Info;
|
||
_ApptLog.SetLog("appt_meeting", newM.Id.ToString(), null, JsonConvert.SerializeObject(newM), loginUserRes.Info.UserAccount, 1);
|
||
|
||
if (startDay == DateTimeHelper.MSSQLMinValue || startDay > item.MeetingTime)
|
||
{
|
||
startDay = new DateTime(item.MeetingTime.Year, item.MeetingTime.Month, item.MeetingTime.Day);
|
||
}
|
||
if (endDay == DateTimeHelper.MSSQLMinValue || endDay < item.MeetingTime)
|
||
{
|
||
endDay = new DateTime(item.MeetingTime.Year, item.MeetingTime.Month, item.MeetingTime.Day);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 修改原来的数据
|
||
var upls = req.ApptMeetingList.Where(t => !string.IsNullOrEmpty(t.Guid) && meetList.Select(r => r.Guid).Contains(t.Guid)).ToList();
|
||
var update = new List<ApptMeeting>();
|
||
foreach (var item in upls)
|
||
{
|
||
var model = meetList.Where(t => t.Guid == item.Guid).FirstOrDefault();
|
||
if (model != null)
|
||
{
|
||
if (model.MeetingPrice == item.MeetingPrice) model.MeetingPrice = item.MeetingPrice;
|
||
oldData = JsonConvert.SerializeObject(model);
|
||
newData = JsonConvert.SerializeObject(item);
|
||
if (oldData != newData)
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(item.MeetingCode))
|
||
{
|
||
var resCode = resCodeList.Where(t => t.Code == item.MeetingCode).FirstOrDefault();
|
||
if (resCode == null) throw new Exception("添加失败,无效的会议厅代码!");
|
||
item.MeetingRoom = resCode.Descript1;
|
||
}
|
||
|
||
// 场次数据判断
|
||
if (string.IsNullOrEmpty(item.Groups)) throw new Exception($"添加失败,会议室{item.MeetingRoom}未设置场次!");
|
||
List<int> groups = new List<int>();
|
||
try
|
||
{
|
||
groups = item.Groups.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
|
||
if (groups.Count < 1) throw new Exception("");
|
||
if (groups.Where(t => t != 1 && t != 2 && t != 3).Count() > 1) throw new Exception("");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
throw new Exception($"会议室{item.MeetingRoom}场次格式不正确!");
|
||
}
|
||
|
||
|
||
model.MeetingTime = item.MeetingTime;
|
||
model.Groups = string.Join(",", groups);
|
||
|
||
model.MeetingRoom = item.MeetingRoom;
|
||
model.MeetingCode = item.MeetingCode;
|
||
model.MeetingRostrum = item.MeetingRostrum;
|
||
model.MeetingShape = item.MeetingShape;
|
||
model.MeetingNum = item.MeetingNum;
|
||
|
||
model.MeetingPrice = item.MeetingPrice;
|
||
model.MeetingTitle = item.MeetingTitle;
|
||
model.Remark = item.Remark;
|
||
|
||
update.Add(model);
|
||
_ApptLog.SetLog("appt_meeting", model.Id.ToString(), oldData, JsonConvert.SerializeObject(model), loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
|
||
if (startDay == DateTimeHelper.MSSQLMinValue || startDay > item.MeetingTime)
|
||
{
|
||
startDay = new DateTime(item.MeetingTime.Year, item.MeetingTime.Month, item.MeetingTime.Day);
|
||
}
|
||
if (endDay == DateTimeHelper.MSSQLMinValue || endDay < item.MeetingTime)
|
||
{
|
||
endDay = new DateTime(item.MeetingTime.Year, item.MeetingTime.Month, item.MeetingTime.Day);
|
||
}
|
||
}
|
||
}
|
||
if (update.Count > 0) UpdateRange(update);
|
||
}
|
||
|
||
var caterList = Db.Queryable<ApptCatering>().Where(t => t.ApptId == summaryM.Id).ToList();
|
||
if (req.ApptCateringList == null || req.ApptCateringList.Count == 0)
|
||
{
|
||
foreach (ApptCatering item in caterList)
|
||
{
|
||
oldData = JsonConvert.SerializeObject(item);
|
||
_ApptLog.SetLog("appt_catering", item.Id.ToString(), oldData, null, loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
if (caterList.Count > 0) DeleteRange<ApptCatering>(caterList.Select(t => t.Id.Value).ToList());
|
||
}
|
||
else
|
||
{
|
||
// 删除旧数据
|
||
foreach (var oldRoom in caterList)
|
||
{
|
||
var OldM = req.ApptCateringList.Where(t => t.Guid == oldRoom.Guid).FirstOrDefault();
|
||
if (OldM == null)
|
||
{
|
||
oldData = JsonConvert.SerializeObject(oldRoom);
|
||
_ApptLog.SetLog("appt_catering", oldRoom.Id.ToString(), oldData, null, loginUserRes.Info.UserAccount, 1);
|
||
Db.Deleteable<ApptCatering>().Where(t => t.ApptId == summaryM.Id && t.Guid == oldRoom.Guid).ExecuteCommand();
|
||
}
|
||
}
|
||
|
||
// 添加新数据
|
||
var addList = req.ApptCateringList.Where(t => t.Id == null || t.Id.Value == 0).ToList();
|
||
if (addList.Count > 0)
|
||
{
|
||
var dataInList = new List<ApptCatering>();
|
||
foreach (var item in addList)
|
||
{
|
||
if (item.CateringType != 0 && item.CateringType != 1) return ApiResult<int>.Failed($"用餐类型不正确!");
|
||
|
||
// 场次数据判断
|
||
if (string.IsNullOrEmpty(item.Groups)) return ApiResult<int>.Failed($"添加失败,餐厅{item.CateringRoom}未设置场次!");
|
||
List<int> groups = new List<int>();
|
||
try
|
||
{
|
||
groups = item.Groups.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
|
||
if (groups.Count < 1) throw new Exception("");
|
||
if (groups.Where(t => t != 1 && t != 2 && t != 3).Count() > 1) throw new Exception("");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return ApiResult<int>.Failed($"餐厅{item.CateringRoom}场次格式不正确!");
|
||
}
|
||
|
||
var newM = new ApptCatering
|
||
{
|
||
Guid = Guid.NewGuid().ToString(),
|
||
ApptId = summaryM.Id,
|
||
CateringTime = item.CateringTime,
|
||
Groups = string.Join(",", groups),
|
||
|
||
CateringRoom = item.CateringRoom,
|
||
CateringCode = item.CateringCode,
|
||
CateringType = item.CateringType,
|
||
CateringNum = item.CateringNum,
|
||
CateringPrice = item.CateringPrice,
|
||
|
||
CateringTable = item.CateringTable,
|
||
Wine = item.Wine,
|
||
Remark = item.Remark,
|
||
};
|
||
|
||
var reR = InsertReturnId(newM);
|
||
if (!reR.IsSuccess) throw new Exception(reR.Msg);
|
||
newM.Id = reR.Info;
|
||
_ApptLog.SetLog("appt_catering", newM.Id.ToString(), null, JsonConvert.SerializeObject(newM), loginUserRes.Info.UserAccount, 1);
|
||
|
||
if (startDay == DateTimeHelper.MSSQLMinValue || startDay > item.CateringTime)
|
||
{
|
||
startDay = new DateTime(item.CateringTime.Year, item.CateringTime.Month, item.CateringTime.Day);
|
||
}
|
||
if (endDay == DateTimeHelper.MSSQLMinValue || endDay < item.CateringTime)
|
||
{
|
||
endDay = new DateTime(item.CateringTime.Year, item.CateringTime.Month, item.CateringTime.Day);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 修改
|
||
var upls = req.ApptCateringList.Where(t => !string.IsNullOrEmpty(t.Guid) && caterList.Select(r => r.Guid).Contains(t.Guid)).ToList();
|
||
var update = new List<ApptCatering>();
|
||
foreach (var item in upls)
|
||
{
|
||
var model = caterList.Where(t => t.Guid == item.Guid).FirstOrDefault();
|
||
if (model != null)
|
||
{
|
||
if (model.CateringPrice == item.CateringPrice) model.CateringPrice = item.CateringPrice;
|
||
oldData = JsonConvert.SerializeObject(model);
|
||
newData = JsonConvert.SerializeObject(item);
|
||
if (oldData != newData)
|
||
{
|
||
|
||
if (item.CateringType != 0 && item.CateringType != 1) return ApiResult<int>.Failed($"用餐类型不正确!");
|
||
// 场次数据判断
|
||
if (string.IsNullOrEmpty(item.Groups)) return ApiResult<int>.Failed($"添加失败,餐厅{item.CateringRoom}未设置场次!");
|
||
List<int> groups = new List<int>();
|
||
try
|
||
{
|
||
groups = item.Groups.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
|
||
if (groups.Count < 1) throw new Exception("");
|
||
if (groups.Where(t => t != 1 && t != 2 && t != 3).Count() > 1) throw new Exception("");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return ApiResult<int>.Failed($"餐厅{item.CateringRoom}场次格式不正确!");
|
||
}
|
||
|
||
model.CateringTime = item.CateringTime;
|
||
model.Groups = string.Join(",", groups);
|
||
|
||
model.CateringRoom = item.CateringRoom;
|
||
model.CateringCode = item.CateringCode;
|
||
model.CateringType = item.CateringType;
|
||
model.CateringNum = item.CateringNum;
|
||
model.CateringPrice = item.CateringPrice;
|
||
|
||
model.CateringTable = item.CateringTable;
|
||
model.Wine = item.Wine;
|
||
model.Remark = item.Remark;
|
||
|
||
update.Add(model);
|
||
|
||
_ApptLog.SetLog("appt_catering", model.Id.ToString(), oldData, JsonConvert.SerializeObject(model), loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
}
|
||
if (startDay == DateTimeHelper.MSSQLMinValue || startDay > item.CateringTime)
|
||
{
|
||
startDay = new DateTime(item.CateringTime.Year, item.CateringTime.Month, item.CateringTime.Day);
|
||
}
|
||
if (endDay == DateTimeHelper.MSSQLMinValue || endDay < item.CateringTime)
|
||
{
|
||
endDay = new DateTime(item.CateringTime.Year, item.CateringTime.Month, item.CateringTime.Day);
|
||
}
|
||
}
|
||
if (update.Count > 0) UpdateRange(update);
|
||
}
|
||
|
||
var springList = Db.Queryable<ApptSpring>().Where(t => t.ApptId == summaryM.Id).ToList();
|
||
if (req.ApptSpringList == null || req.ApptSpringList.Count == 0)
|
||
{
|
||
if (springList.Count > 0)
|
||
{
|
||
foreach (ApptSpring item in springList)
|
||
{
|
||
oldData = JsonConvert.SerializeObject(item);
|
||
_ApptLog.SetLog("appt_spring", item.Id.ToString(), oldData, null, loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
DeleteRange<ApptSpring>(springList.Select(t => t.Id.Value).ToList());
|
||
}
|
||
}
|
||
else
|
||
{
|
||
// 删除旧数据
|
||
foreach (var oldRoom in springList)
|
||
{
|
||
var OldM = req.ApptSpringList.Where(t => t.Guid == oldRoom.Guid).FirstOrDefault();
|
||
if (OldM == null)
|
||
{
|
||
oldData = JsonConvert.SerializeObject(oldRoom);
|
||
_ApptLog.SetLog("appt_spring", oldRoom.Id.ToString(), oldData, null, loginUserRes.Info.UserAccount, 1);
|
||
Db.Deleteable<ApptSpring>().Where(t => t.ApptId == summaryM.Id && t.Guid == oldRoom.Guid).ExecuteCommand();
|
||
}
|
||
}
|
||
|
||
// 添加新数据
|
||
var addList = req.ApptSpringList.Where(t => t.Id == null || t.Id == 0).ToList();
|
||
if (addList.Count > 0)
|
||
{
|
||
var dataInList = new List<ApptSpring>();
|
||
foreach (var item in addList)
|
||
{
|
||
var newM = new ApptSpring
|
||
{
|
||
Guid = Guid.NewGuid().ToString(),
|
||
ApptId = summaryM.Id,
|
||
SpringTime = item.SpringTime,
|
||
PeopleNum = item.PeopleNum,
|
||
|
||
SpringMen = item.SpringMen,
|
||
SpringWomen = item.SpringWomen,
|
||
Consume = item.Consume,
|
||
SpringPrice = item.SpringPrice,
|
||
Remark = item.Remark,
|
||
};
|
||
var reR = InsertReturnId(newM);
|
||
if (!reR.IsSuccess) throw new Exception(reR.Msg);
|
||
newM.Id = reR.Info;
|
||
_ApptLog.SetLog("appt_spring", newM.Id.ToString(), null, JsonConvert.SerializeObject(newM), loginUserRes.Info.UserAccount, 1);
|
||
|
||
if (startDay == DateTimeHelper.MSSQLMinValue || startDay > item.SpringTime)
|
||
{
|
||
startDay = new DateTime(item.SpringTime.Year, item.SpringTime.Month, item.SpringTime.Day);
|
||
}
|
||
if (endDay == DateTimeHelper.MSSQLMinValue || endDay < item.SpringTime)
|
||
{
|
||
endDay = new DateTime(item.SpringTime.Year, item.SpringTime.Month, item.SpringTime.Day);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 修改
|
||
var upls = req.ApptSpringList.Where(t => !string.IsNullOrEmpty(t.Guid) && springList.Select(r => r.Guid).Contains(t.Guid)).ToList();
|
||
var update = new List<ApptSpring>();
|
||
foreach (var item in upls)
|
||
{
|
||
var model = springList.Where(t => t.Guid == item.Guid).FirstOrDefault();
|
||
if (model != null)
|
||
{
|
||
if (model.SpringPrice == item.SpringPrice) model.SpringPrice = item.SpringPrice;
|
||
oldData = JsonConvert.SerializeObject(model);
|
||
newData = JsonConvert.SerializeObject(item);
|
||
if (oldData != newData)
|
||
{
|
||
model.SpringTime = item.SpringTime;
|
||
model.PeopleNum = item.PeopleNum;
|
||
|
||
model.SpringMen = item.SpringMen;
|
||
model.SpringWomen = item.SpringWomen;
|
||
model.Consume = item.Consume;
|
||
model.SpringPrice = item.SpringPrice;
|
||
model.Remark = item.Remark;
|
||
|
||
update.Add(model);
|
||
|
||
_ApptLog.SetLog("appt_spring", item.Id.ToString(), oldData, JsonConvert.SerializeObject(model), loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
if (startDay == DateTimeHelper.MSSQLMinValue || startDay > item.SpringTime)
|
||
{
|
||
startDay = new DateTime(item.SpringTime.Year, item.SpringTime.Month, item.SpringTime.Day);
|
||
}
|
||
if (endDay == DateTimeHelper.MSSQLMinValue || endDay < item.SpringTime)
|
||
{
|
||
endDay = new DateTime(item.SpringTime.Year, item.SpringTime.Month, item.SpringTime.Day);
|
||
}
|
||
}
|
||
}
|
||
if (update.Count > 0) UpdateRange(update);
|
||
}
|
||
|
||
var remarkList = Db.Queryable<ApptRemark>().Where(t => t.ApptId == summaryM.Id).ToList();
|
||
if (req.ApptRemarks == null || req.ApptRemarks.Count == 0)
|
||
{
|
||
if (remarkList.Count > 0)
|
||
{
|
||
foreach (ApptRemark item in remarkList)
|
||
{
|
||
oldData = JsonConvert.SerializeObject(item);
|
||
_ApptLog.SetLog("appt_remark", item.Id.ToString(), oldData, null, loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
DeleteRange<ApptRemark>(remarkList.Select(t => t.Id.Value).ToList());
|
||
}
|
||
}
|
||
else
|
||
{
|
||
// 删除旧数据
|
||
foreach (var oldRoom in remarkList)
|
||
{
|
||
var OldM = req.ApptRemarks.Where(t => t.Guid == oldRoom.Guid).FirstOrDefault();
|
||
if (OldM == null)
|
||
{
|
||
oldData = JsonConvert.SerializeObject(oldRoom);
|
||
_ApptLog.SetLog("appt_remark", oldRoom.Id.ToString(), oldData, null, loginUserRes.Info.UserAccount, 1);
|
||
Db.Deleteable<ApptRemark>().Where(t => t.ApptId == summaryM.Id && t.Guid == oldRoom.Guid).ExecuteCommand();
|
||
}
|
||
}
|
||
|
||
// 添加新数据
|
||
var addList = req.ApptRemarks.Where(t => t.Id == null || t.Id.Value == 0).ToList();
|
||
if (addList.Count > 0)
|
||
{
|
||
var dataInList = new List<ApptRemark>();
|
||
foreach (var item in addList)
|
||
{
|
||
var newM = new ApptRemark
|
||
{
|
||
Guid = Guid.NewGuid().ToString(),
|
||
ApptId = summaryM.Id,
|
||
Title = item.Title,
|
||
Info = item.Info,
|
||
};
|
||
var reR = InsertReturnId(newM);
|
||
if (!reR.IsSuccess) throw new Exception(reR.Msg);
|
||
newM.Id = reR.Info;
|
||
_ApptLog.SetLog("appt_remark", newM.Id.ToString(), null, JsonConvert.SerializeObject(newM), loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
}
|
||
|
||
// 修改
|
||
var upls = req.ApptRemarks.Where(t => !string.IsNullOrEmpty(t.Guid) && remarkList.Select(r => r.Guid).Contains(t.Guid)).ToList();
|
||
var update = new List<ApptRemark>();
|
||
foreach (var item in upls)
|
||
{
|
||
var model = remarkList.Where(t => t.Guid == item.Guid).FirstOrDefault();
|
||
if (model != null)
|
||
{
|
||
oldData = JsonConvert.SerializeObject(model);
|
||
if (oldData != JsonConvert.SerializeObject(item))
|
||
{
|
||
model.Title = item.Title;
|
||
model.Info = item.Info;
|
||
|
||
update.Add(model);
|
||
|
||
_ApptLog.SetLog("appt_remark", item.Id.ToString(), oldData, JsonConvert.SerializeObject(model), loginUserRes.Info.UserAccount, 1);
|
||
}
|
||
}
|
||
}
|
||
if (update.Count > 0) UpdateRange(update);
|
||
}
|
||
|
||
if (summaryM.StartDay != startDay || summaryM.EndDay != endDay)
|
||
{
|
||
summaryM.StartDay = startDay;
|
||
summaryM.EndDay = endDay;
|
||
Update(summaryM);
|
||
}
|
||
|
||
Db.Ado.CommitTran();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Db.Ado.RollbackTran();
|
||
return ApiResult<int>.Failed(ex.Message);
|
||
}
|
||
return ApiResult<int>.Success(info: summaryM.Id.Value);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 申请审核单
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
public async Task<ApiResult> ApplyOrder(ApplyOrderReq req)
|
||
{
|
||
DateTime now = DateTime.Now;
|
||
req = req.Replace();
|
||
if (req.RemarkPics != null && req.RemarkPics.Count > 10)
|
||
{
|
||
return ApiResult.Failed("操作失败,最多只可上传10张图片!");
|
||
}
|
||
|
||
var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
|
||
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
|
||
|
||
var summaryM = await Db.Queryable<ApptSummary>().Where(t => t.Id == req.Id).FirstAsync();
|
||
if (summaryM == null || summaryM.ApptTypeId != 2) return ApiResult.Failed("未获取订单数据!");
|
||
if (summaryM.UserId != loginUserRes.Info.UserAccount) return ApiResult.Failed("只有创建人具有操作权限!");
|
||
//if (summaryM.AuditorStatus != (int)EnumAuditorStatus.江南春模式暂订单
|
||
// && summaryM.AuditorStatus != (int)EnumAuditorStatus.江南春模式确定单
|
||
// && summaryM.AuditorStatus != (int)EnumAuditorStatus.江南春模式暂订单驳回
|
||
// && summaryM.AuditorStatus != (int)EnumAuditorStatus.江南春模式确定单驳回)
|
||
if (summaryM.AuditorStatus != (int)EnumAuditorJncStatus.暂订单) return ApiResult.Failed("该订单类型不可提交!");
|
||
|
||
string oldData = JsonConvert.SerializeObject(summaryM);
|
||
|
||
//int status = 0; // 1-已经申请为确定单,销售申请OA
|
||
var audits = Db.Queryable<ApptSummary>()
|
||
.Where(t => t.Guid == summaryM.Guid && summaryM.AuditorStatus == (int)EnumAuditorJncStatus.归档资源单)
|
||
.ToList();
|
||
if (audits != null && audits.Count > 0)
|
||
{
|
||
summaryM.ApplyOA = 1;
|
||
}
|
||
summaryM.AuditorStatus = (int)EnumAuditorJncStatus.审核单申请;
|
||
Update(summaryM);
|
||
|
||
_ApptLog.SetLog("appt_summary", summaryM.Id.ToString(), oldData, JsonConvert.SerializeObject(summaryM), loginUserRes.Info.UserAccount, 1);
|
||
|
||
|
||
var apptAuditLog = new ApptAuditLog()
|
||
{
|
||
Type = 1,
|
||
CreateTime = now,
|
||
UserId = loginUserRes.Info.UserAccount,
|
||
ApptId = summaryM.Id.Value,
|
||
|
||
AuditorStatus = summaryM.AuditorStatus.Value,
|
||
Remark = req.Remark,
|
||
};
|
||
if (req.RemarkPics != null)
|
||
{
|
||
if (req.RemarkPics.Count > 0) apptAuditLog.Pic0 = req.RemarkPics[0];
|
||
if (req.RemarkPics.Count > 1) apptAuditLog.Pic1 = req.RemarkPics[1];
|
||
if (req.RemarkPics.Count > 2) apptAuditLog.Pic2 = req.RemarkPics[2];
|
||
if (req.RemarkPics.Count > 3) apptAuditLog.Pic3 = req.RemarkPics[3];
|
||
if (req.RemarkPics.Count > 4) apptAuditLog.Pic4 = req.RemarkPics[4];
|
||
//if (req.RemarkPics.Count > 5) apptAuditLog.Pic5 = req.RemarkPics[5];
|
||
//if (req.RemarkPics.Count > 6) apptAuditLog.Pic6 = req.RemarkPics[6];
|
||
//if (req.RemarkPics.Count > 7) apptAuditLog.Pic7 = req.RemarkPics[7];
|
||
//if (req.RemarkPics.Count > 8) apptAuditLog.Pic8 = req.RemarkPics[8];
|
||
//if (req.RemarkPics.Count > 9) apptAuditLog.Pic9 = req.RemarkPics[9];
|
||
}
|
||
InsertReturnId(apptAuditLog);
|
||
|
||
_ = await PostMsg(summaryM);
|
||
|
||
return ApiResult.Success();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 取消OA单
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
/// <remarks>
|
||
/// 未占用资源时,只有发起人可以取消;
|
||
/// 未用资源后,只有预定部可以取消;
|
||
/// </remarks>
|
||
public ApiResult Cancel(ApplyOrderReq req)
|
||
{
|
||
DateTime now = DateTime.Now;
|
||
req = req.Replace();
|
||
|
||
var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
|
||
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
|
||
|
||
var summaryM = Db.Queryable<ApptSummary>().Where(t => t.Id == req.Id).First();
|
||
if (summaryM == null || summaryM.ApptTypeId != 2) return ApiResult.Failed("未获取订单数据!");
|
||
if (summaryM.AuditorStatus == (int)EnumAuditorJncStatus.取消单) return ApiResult.Success();
|
||
|
||
if (string.IsNullOrEmpty(req.Remark)) return ApiResult.Failed("取消订单内容不能为空!");
|
||
|
||
if (summaryM.ApplyOA == 0 && summaryM.UserId == loginUserRes.Info.UserAccount) // 发起人
|
||
{
|
||
summaryM.AuditorStatus = (int)EnumAuditorJncStatus.取消单;
|
||
Update(summaryM);
|
||
|
||
var apptAuditLog = new ApptAuditLog()
|
||
{
|
||
Type = 1,
|
||
CreateTime = now,
|
||
UserId = loginUserRes.Info.UserAccount,
|
||
ApptId = summaryM.Id.Value,
|
||
|
||
AuditorStatus = (int)EnumAuditorJncStatus.取消单,
|
||
Remark = req.Remark,
|
||
};
|
||
if (req.RemarkPics != null)
|
||
{
|
||
if (req.RemarkPics.Count > 0) apptAuditLog.Pic0 = req.RemarkPics[0];
|
||
if (req.RemarkPics.Count > 1) apptAuditLog.Pic1 = req.RemarkPics[1];
|
||
if (req.RemarkPics.Count > 2) apptAuditLog.Pic2 = req.RemarkPics[2];
|
||
if (req.RemarkPics.Count > 3) apptAuditLog.Pic3 = req.RemarkPics[3];
|
||
if (req.RemarkPics.Count > 4) apptAuditLog.Pic4 = req.RemarkPics[4];
|
||
//if (req.RemarkPics.Count > 5) apptAuditLog.Pic5 = req.RemarkPics[5];
|
||
//if (req.RemarkPics.Count > 6) apptAuditLog.Pic6 = req.RemarkPics[6];
|
||
//if (req.RemarkPics.Count > 7) apptAuditLog.Pic7 = req.RemarkPics[7];
|
||
//if (req.RemarkPics.Count > 8) apptAuditLog.Pic8 = req.RemarkPics[8];
|
||
//if (req.RemarkPics.Count > 9) apptAuditLog.Pic9 = req.RemarkPics[9];
|
||
}
|
||
InsertReturnId(apptAuditLog);
|
||
}
|
||
else if (summaryM.ApplyOA == 1)
|
||
{
|
||
string jncAuditor = JncAuditor[0];
|
||
string group = Db.Queryable<ApptAuditor>().Where(t => t.OpDescript == jncAuditor).First()?.OpGroup;
|
||
if (loginUserRes.Info.UserGroup == group) // 预定部
|
||
{
|
||
if (!string.IsNullOrEmpty(summaryM.GrpNo))
|
||
{
|
||
string accnt = summaryM.GrpNo;
|
||
string op_id = "xx";
|
||
var dt1 = Db.Ado.UseStoredProcedure().GetDataTable("p_yyj_gblock_cancel", new { accnt, op_id });
|
||
if (dt1.Rows.Count > 0 && dt1.Rows[0][0] != null && dt1.Rows[0][0].ToString() != "0")
|
||
{
|
||
string msg = $"取消团队失败,失败原因:{dt1.Rows[0][1]}";
|
||
_logger.Error(msg);
|
||
throw new Exception(msg);
|
||
}
|
||
var result = Db.Updateable<GrpInfo>()
|
||
.SetColumns(t => new GrpInfo { Sta = "C" })
|
||
.Where(t => t.Accnt == summaryM.GrpNo)
|
||
.ExecuteCommand();
|
||
}
|
||
|
||
summaryM.AuditorStatus = (int)EnumAuditorJncStatus.归档资源单;
|
||
Update(summaryM);
|
||
var sm = Db.Queryable<ApptSummary>().Where(t => t.Guid == summaryM.Guid && t.AuditorStatus == (int)EnumAuditorJncStatus.归档暂定单).First();
|
||
if (sm == null) return ApiResult.Failed("未找到归档暂定单!");
|
||
sm.AuditorStatus = (int)EnumAuditorJncStatus.取消单;
|
||
Update(sm);
|
||
|
||
var apptAuditLog = new ApptAuditLog()
|
||
{
|
||
Type = 1,
|
||
CreateTime = now,
|
||
UserId = loginUserRes.Info.UserAccount,
|
||
ApptId = sm.Id.Value,
|
||
|
||
AuditorStatus = (int)EnumAuditorJncStatus.取消单,
|
||
Remark = req.Remark,
|
||
};
|
||
if (req.RemarkPics != null)
|
||
{
|
||
if (req.RemarkPics.Count > 0) apptAuditLog.Pic0 = req.RemarkPics[0];
|
||
if (req.RemarkPics.Count > 1) apptAuditLog.Pic1 = req.RemarkPics[1];
|
||
if (req.RemarkPics.Count > 2) apptAuditLog.Pic2 = req.RemarkPics[2];
|
||
if (req.RemarkPics.Count > 3) apptAuditLog.Pic3 = req.RemarkPics[3];
|
||
if (req.RemarkPics.Count > 4) apptAuditLog.Pic4 = req.RemarkPics[4];
|
||
//if (req.RemarkPics.Count > 5) apptAuditLog.Pic5 = req.RemarkPics[5];
|
||
//if (req.RemarkPics.Count > 6) apptAuditLog.Pic6 = req.RemarkPics[6];
|
||
//if (req.RemarkPics.Count > 7) apptAuditLog.Pic7 = req.RemarkPics[7];
|
||
//if (req.RemarkPics.Count > 8) apptAuditLog.Pic8 = req.RemarkPics[8];
|
||
//if (req.RemarkPics.Count > 9) apptAuditLog.Pic9 = req.RemarkPics[9];
|
||
}
|
||
InsertReturnId(apptAuditLog);
|
||
|
||
var userWxServiceId = Db.Queryable<UcLogin>().Where(t => t.OpId == summaryM.UserId).First()?.WxServiceId;
|
||
if (!string.IsNullOrEmpty(userWxServiceId))
|
||
{
|
||
string AppId = BaseConfig.App(new string[] { "WeChatService", "AppId" });
|
||
string Hotelid = BaseConfig.App(new string[] { "Hotelid" });
|
||
if (AppId == "wx3f193488e04b2ed8") // 江南春
|
||
{
|
||
// 80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8 内容示例
|
||
|
||
// 审核提醒
|
||
//===========================
|
||
// 资料已提交,请尽快审核 {{first.DATA}}
|
||
// 审核内容:XX资料 审核内容:{{keyword1.DATA}} [建议标题]
|
||
// 时间:2015-06-22 {{keyword2.DATA}}
|
||
// 请尽快审核 {{remark.DATA}}
|
||
//-----------------------------
|
||
// 详情
|
||
//===========================
|
||
string first = $"预定部 {loginUserRes.Info.UserName}取消了您的订单";
|
||
var keyword = new[] { $"{summaryM.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
string remark = "请注意查看";
|
||
AizhuhotelHelper.SendTemplateMsg(userWxServiceId, "80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8", $"pages/index/index?hotelid={Hotelid}&status=5", first, remark, keyword);
|
||
}
|
||
else if (AppId == "wx2b6e92e9e0c6025f") // 香堤湾
|
||
{
|
||
//---------------
|
||
// {{first.DATA}}
|
||
// 订单编号:{{OrderSn.DATA}}
|
||
// 订单状态:{{OrderStatus.DATA}}
|
||
// {{remark.DATA}}
|
||
//-----------
|
||
// 详情 >
|
||
//---------------
|
||
// 2024-09-12
|
||
string appId = BaseConfig.App(new string[] { "WeChat", "AppId" });
|
||
if (string.IsNullOrWhiteSpace(appId)) ApiResult<WeChatLoginRes>.Failed("缺少配置参数 [AppId]!");
|
||
var first = $"预定部 {loginUserRes.Info.UserName}取消了您的订单";
|
||
var json = new
|
||
{
|
||
touser = userWxServiceId,
|
||
template_id = "21Qr9bf5k3UlxD3K6EBKjEnxrz8Djiw6TIu6yExMGLg",
|
||
miniprogram = new
|
||
{
|
||
appid = appId, // 小程序appId
|
||
pagepath = $"pages/index/index?hotelid={Hotelid}&status=5" // 跳转到小程序中的地址
|
||
},
|
||
topcolor = "#FF0000",
|
||
data = new
|
||
{
|
||
first = new { value = first },
|
||
keyword1 = new { value = summaryM.No },
|
||
keyword2 = new { value = first },
|
||
remark = new { value = "请注意查看" }
|
||
}
|
||
};
|
||
var msg = JsonConvert.SerializeObject(json);
|
||
AizhuhotelHelper.SendTempMsg(msg);
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("消息模板未配置");
|
||
}
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
return ApiResult.Failed("没有操作权限!");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return ApiResult.Failed("没有操作权限!");
|
||
}
|
||
|
||
return ApiResult.Success();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 审核通过
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
public async Task<ApiResult> AuditorSummary(ApplyOrderReq req)
|
||
{
|
||
req = req.Replace();
|
||
if (req.RemarkPics != null && req.RemarkPics.Count > 5)
|
||
{
|
||
return ApiResult.Failed("操作失败,最多只可上传5张图片!");
|
||
}
|
||
ApptSummary summaryM = await Db.Queryable<ApptSummary>()
|
||
.Where(t => t.Id == req.Id && t.ApptTypeId == 2).FirstAsync();
|
||
if (summaryM == null) return ApiResult.Failed("订单不存在");
|
||
if (summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请)
|
||
{
|
||
return await ApprovedByAuditor(req);
|
||
}
|
||
|
||
DateTime now = DateTime.Now;
|
||
if (JncAuditor.Length != 5) return ApiResult.Failed("审核配置无效!");
|
||
|
||
ApiResult<LoginUserRes> loginUserRes = null;
|
||
if (req.AccountDes == "@@@自动@@@") // 2025-05-14 总经理审核通过后,自动完成发起人的 生成完成单操作流程
|
||
{
|
||
loginUserRes = ApiResult<LoginUserRes>.Success();
|
||
loginUserRes.Info = new LoginUserRes
|
||
{
|
||
UserAccount = "自动"
|
||
};
|
||
}
|
||
else
|
||
{
|
||
loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
|
||
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
|
||
}
|
||
|
||
|
||
// 判断权限
|
||
EnumAuditorJncStatus nextStatus = EnumAuditorJncStatus.全部;// 下一级审核枚举
|
||
string descript = "";// 下一级审核角色名称
|
||
switch ((EnumAuditorJncStatus)summaryM.AuditorStatus) // 本次审批前的订单状态
|
||
{
|
||
case EnumAuditorJncStatus.审核单预定部:
|
||
descript = JncAuditor[1];
|
||
nextStatus = EnumAuditorJncStatus.审核单销售经理;
|
||
break;
|
||
case EnumAuditorJncStatus.审核单销售经理:
|
||
descript = JncAuditor[2];
|
||
nextStatus = EnumAuditorJncStatus.审核单财务经理;
|
||
break;
|
||
case EnumAuditorJncStatus.审核单财务经理:
|
||
descript = JncAuditor[3];
|
||
nextStatus = EnumAuditorJncStatus.审核单财务总监;
|
||
break;
|
||
case EnumAuditorJncStatus.审核单财务总监:
|
||
descript = JncAuditor[4];
|
||
nextStatus = EnumAuditorJncStatus.确定单;
|
||
break;
|
||
case EnumAuditorJncStatus.确定单:
|
||
//if (summaryM.UserId != loginUserRes.Info.UserAccount) // 2025-05-14 屏蔽
|
||
//{
|
||
// return ApiResult.Failed("没有操作权限!");
|
||
//}
|
||
descript = "本人";
|
||
nextStatus = EnumAuditorJncStatus.完成单;
|
||
break;
|
||
default:
|
||
return ApiResult.Failed("审核状态不正确!");
|
||
}
|
||
if (descript != "本人")
|
||
{
|
||
var userGroup = Db.Queryable<UcLogin, ApptAuditor>((u, a) => new JoinQueryInfos(
|
||
JoinType.Left, u.OpGroup == a.OpGroup
|
||
))
|
||
.Where((u, a) => u.OpId.Trim() == loginUserRes.Info.UserAccount && a.ApptTypeId == 2 && a.OpDescript == descript)
|
||
.ToList();
|
||
if (userGroup == null || userGroup.Count < 1) return ApiResult.Failed("没有操作权限!");
|
||
}
|
||
string oldData = JsonConvert.SerializeObject(summaryM);
|
||
summaryM.AuditorStatus = (int)nextStatus;
|
||
var upRe = Update(summaryM);
|
||
if (!upRe.IsSuccess) return upRe;
|
||
_ApptLog.SetLog("appt_summary", req.Id.ToString(), oldData, JsonConvert.SerializeObject(summaryM), loginUserRes.Info.UserAccount, 1);
|
||
|
||
|
||
ApptAuditLog apptAuditLog = new ApptAuditLog
|
||
{
|
||
Type = 1,
|
||
CreateTime = now,
|
||
UserId = loginUserRes.Info.UserAccount,
|
||
ApptId = summaryM.Id.Value,
|
||
|
||
AuditorStatus = (int)nextStatus,
|
||
Remark = req.Remark,
|
||
Source = "",
|
||
};
|
||
if (req.RemarkPics != null)
|
||
{
|
||
if (req.RemarkPics.Count > 0) apptAuditLog.Pic0 = req.RemarkPics[0];
|
||
if (req.RemarkPics.Count > 1) apptAuditLog.Pic1 = req.RemarkPics[1];
|
||
if (req.RemarkPics.Count > 2) apptAuditLog.Pic2 = req.RemarkPics[2];
|
||
if (req.RemarkPics.Count > 3) apptAuditLog.Pic3 = req.RemarkPics[3];
|
||
if (req.RemarkPics.Count > 4) apptAuditLog.Pic4 = req.RemarkPics[4];
|
||
//if (req.RemarkPics.Count > 5) apptAuditLog.Pic5 = req.RemarkPics[5];
|
||
//if (req.RemarkPics.Count > 6) apptAuditLog.Pic6 = req.RemarkPics[6];
|
||
//if (req.RemarkPics.Count > 7) apptAuditLog.Pic7 = req.RemarkPics[7];
|
||
//if (req.RemarkPics.Count > 8) apptAuditLog.Pic8 = req.RemarkPics[8];
|
||
//if (req.RemarkPics.Count > 9) apptAuditLog.Pic9 = req.RemarkPics[9];
|
||
}
|
||
InsertReturnId(apptAuditLog);
|
||
|
||
if (nextStatus == EnumAuditorJncStatus.完成单)
|
||
{
|
||
_ = await AotoCopy(summaryM.Id.Value);
|
||
}
|
||
|
||
_ = await PostMsg(summaryM);
|
||
|
||
//2025-05-14 确定单(总经理审核通过)后 直接变成完成单(销售员已确定完成,已群发,自动抄送) 省去 销售员再次 确定
|
||
if (nextStatus == EnumAuditorJncStatus.确定单)
|
||
{
|
||
await AuditorSummary(new ApplyOrderReq
|
||
{
|
||
AccountDes = "@@@自动@@@",
|
||
Id = summaryM.Id.Value,
|
||
Remark = null,
|
||
RemarkPics = new List<string>()
|
||
});
|
||
}
|
||
|
||
return ApiResult.Success();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 被驳回
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
public async Task<ApiResult> RejectSummary(ApplyOrderReq req)
|
||
{
|
||
DateTime now = DateTime.Now;
|
||
|
||
req = req.Replace();
|
||
if (req.RemarkPics != null && req.RemarkPics.Count > 5)
|
||
{
|
||
return ApiResult.Failed("操作失败,最多只可上传5张图片!");
|
||
}
|
||
if (string.IsNullOrEmpty(req.Remark)) return ApiResult.Failed("驳回时内容不能为空!");
|
||
|
||
var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
|
||
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
|
||
|
||
if (JncAuditor.Length != 5) return ApiResult.Failed("审核配置无效!");
|
||
|
||
ApptSummary summaryM = await Db.Queryable<ApptSummary>()
|
||
.Where(t => t.Id == req.Id && t.ApptTypeId == 2).FirstAsync();
|
||
if (summaryM == null) return ApiResult.Failed("订单不存在");
|
||
|
||
// 判断权限
|
||
string descript = "";
|
||
switch ((EnumAuditorJncStatus)summaryM.AuditorStatus)
|
||
{
|
||
case EnumAuditorJncStatus.审核单申请:
|
||
descript = JncAuditor[0];
|
||
break;
|
||
case EnumAuditorJncStatus.审核单预定部:
|
||
descript = JncAuditor[1];
|
||
break;
|
||
case EnumAuditorJncStatus.审核单销售经理:
|
||
descript = JncAuditor[2];
|
||
break;
|
||
case EnumAuditorJncStatus.审核单财务经理:
|
||
descript = JncAuditor[3];
|
||
break;
|
||
case EnumAuditorJncStatus.审核单财务总监:
|
||
descript = JncAuditor[4];
|
||
break;
|
||
default:
|
||
return ApiResult.Failed("审核状态不正确!");
|
||
}
|
||
var userGroup = Db.Queryable<UcLogin, ApptAuditor>((u, a) => new JoinQueryInfos(
|
||
JoinType.Left, u.OpGroup == a.OpGroup
|
||
))
|
||
.Where((u, a) => u.OpId.Trim() == loginUserRes.Info.UserAccount && a.ApptTypeId == 2 && a.OpDescript == descript)
|
||
.ToList();
|
||
if (userGroup == null || userGroup.Count < 1) return ApiResult.Failed("没有操作权限!");
|
||
|
||
string oldData = JsonConvert.SerializeObject(summaryM);
|
||
summaryM.AuditorStatus = (int)EnumAuditorJncStatus.驳回单;
|
||
var upRe = Update(summaryM);
|
||
if (!upRe.IsSuccess) return upRe;
|
||
ApptAuditLog apptAuditLog = new ApptAuditLog
|
||
{
|
||
Type = 1,
|
||
CreateTime = now,
|
||
UserId = loginUserRes.Info.UserAccount,
|
||
ApptId = summaryM.Id.Value,
|
||
|
||
AuditorStatus = (int)EnumAuditorJncStatus.驳回单,
|
||
Remark = req.Remark,
|
||
Source = "",
|
||
};
|
||
if (req.RemarkPics != null)
|
||
{
|
||
if (req.RemarkPics.Count > 0) apptAuditLog.Pic0 = req.RemarkPics[0];
|
||
if (req.RemarkPics.Count > 1) apptAuditLog.Pic1 = req.RemarkPics[1];
|
||
if (req.RemarkPics.Count > 2) apptAuditLog.Pic2 = req.RemarkPics[2];
|
||
if (req.RemarkPics.Count > 3) apptAuditLog.Pic3 = req.RemarkPics[3];
|
||
if (req.RemarkPics.Count > 4) apptAuditLog.Pic4 = req.RemarkPics[4];
|
||
//if (req.RemarkPics.Count > 5) apptAuditLog.Pic5 = req.RemarkPics[5];
|
||
//if (req.RemarkPics.Count > 6) apptAuditLog.Pic6 = req.RemarkPics[6];
|
||
//if (req.RemarkPics.Count > 7) apptAuditLog.Pic7 = req.RemarkPics[7];
|
||
//if (req.RemarkPics.Count > 8) apptAuditLog.Pic8 = req.RemarkPics[8];
|
||
//if (req.RemarkPics.Count > 9) apptAuditLog.Pic9 = req.RemarkPics[9];
|
||
}
|
||
|
||
var inRe = InsertReturnId(apptAuditLog);
|
||
if (!inRe.IsSuccess) return ApiResult.Failed(inRe.Msg);
|
||
_ApptLog.SetLog("appt_summary", req.Id.ToString(), oldData, JsonConvert.SerializeObject(summaryM), loginUserRes.Info.UserAccount, 1);
|
||
|
||
_ = await PostMsg(summaryM);
|
||
return ApiResult.Success();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 手动抄送
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
public async Task<ApiResult> ManualCopy(ApptSendReq req)
|
||
{
|
||
DateTime now = DateTime.Now;
|
||
|
||
var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDES);
|
||
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
|
||
|
||
var summaryM = GetById<ApptSummary>(req.ApptId);
|
||
if (summaryM == null) return ApiResult.Failed("订单不存在!");
|
||
|
||
|
||
if (req.ToUserAccounts == null || req.ToUserAccounts.Length <= 0) return ApiResult.Failed("操作失败,未选择抄送人!");
|
||
|
||
var userList = await Db.Queryable<UcLogin>().Where(t => t.Locked == "F").In(t => t.OpId, req.ToUserAccounts).ToListAsync();
|
||
userList = userList.Replace();
|
||
if (userList.Count != req.ToUserAccounts.Length)
|
||
{
|
||
List<string> notUser = new List<string>();
|
||
for (int i = 0; i < req.ToUserAccounts.Length; i++)
|
||
{
|
||
var _userList = userList.Select(t => t.OpId).ToList();
|
||
if (!_userList.Contains(req.ToUserAccounts[i]))
|
||
{
|
||
notUser.Add(req.ToUserAccounts[i]);
|
||
}
|
||
}
|
||
if (notUser.Count > 0) return ApiResult.Failed($"操作失败,用户[{string.Join(",", notUser)}]不存在!");
|
||
}
|
||
|
||
List<ApptAuditLog> ls = new List<ApptAuditLog>();
|
||
for (int i = 0; i < req.ToUserAccounts.Length; i++)
|
||
{
|
||
ls.Add(new ApptAuditLog()
|
||
{
|
||
Type = 2,
|
||
CreateTime = now,
|
||
UserId = req.ToUserAccounts[i],
|
||
ApptId = req.ApptId,
|
||
AuditorStatus = 3,
|
||
Remark = string.IsNullOrEmpty(req.Remark) ? "" : req.Remark,
|
||
Source = loginUserRes.Info.UserAccount
|
||
});
|
||
}
|
||
if (ls.Count > 0) InsertRange(ls);
|
||
|
||
foreach (var item in userList)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.WxServiceId))
|
||
{
|
||
await SetCopyMsg(loginUserRes.Info.UserName, summaryM.BuyerTitle, item.WxServiceId, false, req.Remark);
|
||
}
|
||
}
|
||
|
||
return ApiResult.Success();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 信息回复
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
public ApiResult AddReply(AddMsgReq req)
|
||
{
|
||
DateTime now = DateTime.Now;
|
||
if (string.IsNullOrEmpty(req.Remark)) return ApiResult.Failed("信息回复时内容不能为空!");
|
||
var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
|
||
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
|
||
|
||
var apptAuditLogM = Db.Queryable<ApptAuditLog>().Where(t => t.Id == req.Id).First();
|
||
if (apptAuditLogM == null) return ApiResult.Failed("信息不存在,无法回复");
|
||
|
||
var apptAuditLog = new ApptAuditLog()
|
||
{
|
||
Type = 3,
|
||
CreateTime = now,
|
||
UserId = loginUserRes.Info.UserAccount,
|
||
ApptId = 0,
|
||
|
||
AuditorStatus = 0,
|
||
Remark = req.Remark,
|
||
Source = null,
|
||
PId = req.Id,
|
||
};
|
||
if (req.PicList != null)
|
||
{
|
||
if (req.PicList.Count > 0) apptAuditLog.Pic0 = req.PicList[0];
|
||
if (req.PicList.Count > 1) apptAuditLog.Pic1 = req.PicList[1];
|
||
if (req.PicList.Count > 2) apptAuditLog.Pic2 = req.PicList[2];
|
||
if (req.PicList.Count > 3) apptAuditLog.Pic3 = req.PicList[3];
|
||
if (req.PicList.Count > 4) apptAuditLog.Pic4 = req.PicList[4];
|
||
//if (req.PicList.Count > 5) apptAuditLog.Pic5 = req.PicList[5];
|
||
//if (req.PicList.Count > 6) apptAuditLog.Pic6 = req.PicList[6];
|
||
//if (req.PicList.Count > 7) apptAuditLog.Pic7 = req.PicList[7];
|
||
//if (req.PicList.Count > 8) apptAuditLog.Pic8 = req.PicList[8];
|
||
//if (req.PicList.Count > 9) apptAuditLog.Pic9 = req.PicList[9];
|
||
}
|
||
|
||
var inRe = InsertReturnId(apptAuditLog);
|
||
if (!inRe.IsSuccess)
|
||
{
|
||
return ApiResult.Failed(inRe.Msg);
|
||
}
|
||
else
|
||
{
|
||
return ApiResult.Success();
|
||
}
|
||
}
|
||
|
||
// ---- 查
|
||
|
||
/// <summary>
|
||
/// 根据订单主键获取实体
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
public ApiResult<SummaryJncDetailRep> GetSummaryModel(SummaryJncModelReq req)
|
||
{
|
||
ApiResult<LoginUserRes> loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
|
||
if (!loginUserRes.IsSuccess) return ApiResult<SummaryJncDetailRep>.Failed(loginUserRes.Msg);
|
||
|
||
ApptSummary summaryM = Db.Queryable<ApptSummary>()
|
||
.Mapper(t => t.ApptRoomList, t => t.ApptRoomList.First().ApptId)
|
||
.Mapper(t => t.ApptMeetingList, t => t.ApptMeetingList.First().ApptId)
|
||
.Mapper(t => t.ApptCateringList, t => t.ApptCateringList.First().ApptId)
|
||
.Mapper(t => t.ApptSpringList, t => t.ApptSpringList.First().ApptId)
|
||
.Mapper(t => t.ApptRemarks, t => t.ApptRemarks.First().ApptId)
|
||
.Where(t => t.Id == req.Id && t.ApptTypeId == 2).First();
|
||
if (summaryM == null) return ApiResult<SummaryJncDetailRep>.Success(string.Empty, null);
|
||
|
||
// 如果不是正常单子返回 暂定单
|
||
if (summaryM.AuditorStatus == (int)EnumAuditorJncStatus.归档暂定单 || summaryM.AuditorStatus == (int)EnumAuditorJncStatus.归档资源单)
|
||
{
|
||
summaryM = Db.Queryable<ApptSummary>()
|
||
.Mapper(t => t.ApptRoomList, t => t.ApptRoomList.First().ApptId)
|
||
.Mapper(t => t.ApptMeetingList, t => t.ApptMeetingList.First().ApptId)
|
||
.Mapper(t => t.ApptCateringList, t => t.ApptCateringList.First().ApptId)
|
||
.Mapper(t => t.ApptSpringList, t => t.ApptSpringList.First().ApptId)
|
||
.Mapper(t => t.ApptRemarks, t => t.ApptRemarks.First().ApptId)
|
||
.Where(t => t.Guid == summaryM.Guid && (t.AuditorStatus == (int)EnumAuditorJncStatus.归档暂定单 || summaryM.AuditorStatus == (int)EnumAuditorJncStatus.归档资源单)).First();
|
||
}
|
||
|
||
|
||
SummaryJncDetailRep re = RegexHelper.AutoCopy<ApptSummary, SummaryJncDetailRep>(summaryM);
|
||
|
||
|
||
|
||
var user = Db.Queryable<UcLogin>().Where(t => t.OpId == re.UserId).First();
|
||
re.UserName = user?.OpName;
|
||
|
||
return ApiResult<SummaryJncDetailRep>.Success(string.Empty, re);
|
||
}
|
||
|
||
public ApiResult<PagerData<SummaryJncDetailRep>> ApptSummaryPager(SummaryJNCPageReq req)
|
||
{
|
||
int total = 0;
|
||
DateTime now = DateTime.Now;
|
||
|
||
if (req.PageIndex < 1) req.PageIndex = 1;
|
||
if (req.PageSize < 1) req.PageSize = 10;
|
||
|
||
var reList = new PagerData<SummaryJncDetailRep>()
|
||
{
|
||
PageIndex = req.PageIndex,
|
||
PageSize = req.PageSize,
|
||
Total = total,
|
||
Data = new List<SummaryJncDetailRep>()
|
||
};
|
||
|
||
var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDES);
|
||
if (!loginUserRes.IsSuccess) return ApiResult<PagerData<SummaryJncDetailRep>>.Failed(loginUserRes.Msg);
|
||
|
||
var _summarys = Db.Queryable<ApptSummary>().Where(t => t.ApptTypeId == 2);
|
||
|
||
// 查询标签
|
||
if (req.Menu == 21) // 暂定单 我的
|
||
{
|
||
_summarys = _summarys.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.暂订单 && t.UserId == loginUserRes.Info.UserAccount);
|
||
}
|
||
else if (req.Menu == 22 || req.Menu == 3) // 暂定单 全部
|
||
{
|
||
_summarys = _summarys.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.暂订单);
|
||
}
|
||
else if (req.Menu == 31) // 审核单 我的
|
||
{
|
||
_summarys = _summarys.Where(t => t.UserId == loginUserRes.Info.UserAccount &&
|
||
(
|
||
t.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单预定部
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单销售经理
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务经理
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务总监
|
||
)
|
||
);
|
||
}
|
||
else if (req.Menu == 32 || req.Menu == 4) // 审核单 全部
|
||
{
|
||
_summarys = _summarys.Where(t =>
|
||
t.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单预定部
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单销售经理
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务经理
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务总监
|
||
);
|
||
}
|
||
else if (req.Menu == 41) // 确定单 我的
|
||
{
|
||
_summarys = _summarys.Where(t => t.UserId == loginUserRes.Info.UserAccount && t.AuditorStatus == (int)EnumAuditorJncStatus.确定单);
|
||
}
|
||
else if (req.Menu == 42) // 确定单 全部
|
||
{
|
||
_summarys = _summarys.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.确定单);
|
||
}
|
||
else if (req.Menu == 51) // 完成单 我的
|
||
{
|
||
_summarys = _summarys.Where(t => t.UserId == loginUserRes.Info.UserAccount && t.AuditorStatus == (int)EnumAuditorJncStatus.完成单);
|
||
}
|
||
else if (req.Menu == 52) // 完成单 全部
|
||
{
|
||
_summarys = _summarys.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.完成单);
|
||
}
|
||
else if (req.Menu == 61) // 取消单 我的
|
||
{
|
||
_summarys = _summarys.Where(t => t.UserId == loginUserRes.Info.UserAccount && t.AuditorStatus == (int)EnumAuditorJncStatus.取消单);
|
||
}
|
||
else if (req.Menu == 62) // 取消单 全部
|
||
{
|
||
_summarys = _summarys.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.取消单);
|
||
}
|
||
else if (req.Menu == 11) // 驳回单 我的
|
||
{
|
||
_summarys = _summarys.Where(t => t.UserId == loginUserRes.Info.UserAccount && t.AuditorStatus == (int)EnumAuditorJncStatus.驳回单);
|
||
}
|
||
else if (req.Menu == 12) // 驳回单 全部
|
||
{
|
||
_summarys = _summarys.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.驳回单);
|
||
}
|
||
//else if (req.Menu == 72) // 前端销售角色多写的。。。。
|
||
//{
|
||
// return ApiResult<PagerData<SummaryJncDetailRep>>.Success(info: reList);
|
||
//}
|
||
|
||
// 审核员
|
||
List<int> apptIdShList = new List<int>();
|
||
if (req.Menu == 1) // 待我审核的
|
||
{
|
||
var myGroupM = Db.Queryable<ApptAuditor>().Where(t => t.OpGroup == loginUserRes.Info.UserGroup).First();
|
||
if (myGroupM == null) return ApiResult<PagerData<SummaryJncDetailRep>>.Success(info: reList);
|
||
|
||
if (myGroupM.OpDescript == JncAuditor[0]) // 当前审核员是 预定部
|
||
{
|
||
apptIdShList = Db.Queryable<ApptSummary>()
|
||
.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请).Select(t => t.Id.Value).ToList();
|
||
}
|
||
else if (myGroupM.OpDescript == JncAuditor[1])
|
||
{
|
||
apptIdShList = Db.Queryable<ApptSummary>()
|
||
.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.审核单预定部).Select(t => t.Id.Value).ToList();
|
||
}
|
||
else if (myGroupM.OpDescript == JncAuditor[2])
|
||
{
|
||
apptIdShList = Db.Queryable<ApptSummary>()
|
||
.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.审核单销售经理).Select(t => t.Id.Value).ToList();
|
||
}
|
||
else if (myGroupM.OpDescript == JncAuditor[3])
|
||
{
|
||
apptIdShList = Db.Queryable<ApptSummary>()
|
||
.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务经理).Select(t => t.Id.Value).ToList();
|
||
}
|
||
else if (myGroupM.OpDescript == JncAuditor[4])
|
||
{
|
||
apptIdShList = Db.Queryable<ApptSummary>()
|
||
.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务总监).Select(t => t.Id.Value).ToList();
|
||
}
|
||
_summarys = _summarys.In(t => t.Id, apptIdShList);
|
||
}
|
||
else if (req.Menu == 2) // 我审核过的
|
||
{
|
||
var auditorLogs = Db.Queryable<ApptAuditLog>()
|
||
.Where(t => t.Type == 1 && t.UserId == loginUserRes.Info.UserAccount && (
|
||
t.AuditorStatus == (int)EnumAuditorJncStatus.驳回单
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单预定部
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单销售经理
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务经理
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务总监
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.确定单
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.取消单
|
||
))
|
||
.Select(t => t.ApptId).ToList();
|
||
if (auditorLogs.Count > 0) apptIdShList.AddRange(auditorLogs);
|
||
_summarys = _summarys.In(t => t.Id, apptIdShList);
|
||
_summarys = _summarys.Where(t => t.AuditorStatus != (int)EnumAuditorJncStatus.归档暂定单 && t.AuditorStatus != (int)EnumAuditorJncStatus.归档资源单);
|
||
}
|
||
//else if (req.Menu == 5) // 审核员 全部订单 2021-10-10 去除了菜单
|
||
//{
|
||
// _summarys = _summarys.Where(t => t.AuditorStatus != (int)EnumAuditorJncStatus.归档暂定单 && t.AuditorStatus == (int)EnumAuditorJncStatus.归档资源单);
|
||
//}
|
||
else if (req.Menu == 6) // 抄送给我的
|
||
{
|
||
var auditorLogs = Db.Queryable<ApptAuditLog>()
|
||
.Where(t => t.Type == 2 && t.UserId == loginUserRes.Info.UserAccount && t.AuditorStatus != (int)EnumAuditorJncStatus.归档暂定单 && t.AuditorStatus != (int)EnumAuditorJncStatus.归档资源单)
|
||
.Select(t => t.ApptId).ToList();
|
||
if (auditorLogs.Count > 0) apptIdShList.AddRange(auditorLogs);
|
||
_summarys = _summarys.In(t => t.Id, apptIdShList);
|
||
}
|
||
|
||
// 日期跨度
|
||
if (!string.IsNullOrEmpty(req.StartDay))
|
||
{
|
||
if (!DateTime.TryParse(req.StartDay, out DateTime day))
|
||
{
|
||
return ApiResult<PagerData<SummaryJncDetailRep>>.Failed("日期格式无效!");
|
||
}
|
||
_summarys = _summarys.Where(t => t.StartDay <= day && t.EndDay >= day);
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.KeyWord))
|
||
{
|
||
_summarys = _summarys.Where(t => t.BuyerName.Contains(req.KeyWord) || t.BuyerTitle.Contains(req.KeyWord) || t.LeaderName.Contains(req.KeyWord));
|
||
}
|
||
|
||
|
||
var summarys = _summarys
|
||
.WhereIF(!string.IsNullOrEmpty(req.No), t => t.No.Contains(req.No))
|
||
.OrderBy(t => t.Id, OrderByType.Desc)
|
||
.ToPageList(req.PageIndex, req.PageSize, ref total);
|
||
|
||
List<SummaryJncDetailRep> detailList = new List<SummaryJncDetailRep>();
|
||
if (summarys != null && summarys.Count > 0)
|
||
{
|
||
List<UcLogin> users = Db.Queryable<UcLogin>().ToList();
|
||
foreach (var item in summarys)
|
||
{
|
||
var model = RegexHelper.AutoCopy<ApptSummary, SummaryJncDetailRep>(item);
|
||
model.UserName = users.Where(t => t.OpId.Trim() == item.UserId).FirstOrDefault()?.OpName;
|
||
if (item.AuditorStatus == (int)EnumAuditorJncStatus.暂订单)
|
||
{
|
||
model.IconStatus = 0;
|
||
}
|
||
else if (item.AuditorStatus == (int)EnumAuditorJncStatus.完成单)
|
||
{
|
||
model.IconStatus = 2;
|
||
}
|
||
else if (item.AuditorStatus == (int)EnumAuditorJncStatus.驳回单)
|
||
{
|
||
model.IconStatus = 3;
|
||
}
|
||
else if (item.AuditorStatus == (int)EnumAuditorJncStatus.取消单
|
||
|| item.AuditorStatus == (int)EnumAuditorJncStatus.归档暂定单
|
||
|| item.AuditorStatus == (int)EnumAuditorJncStatus.归档资源单)
|
||
{
|
||
model.IconStatus = 4;
|
||
}
|
||
else
|
||
{
|
||
model.IconStatus = 1;
|
||
}
|
||
|
||
detailList.Add(model);
|
||
}
|
||
}
|
||
reList.Total = total;
|
||
reList.Data = detailList;
|
||
|
||
// 打日志
|
||
if (detailList == null && detailList.Count == 0)
|
||
{
|
||
_logger.Info("未获取到列表数据,入参:" + JsonConvert.SerializeObject(req));
|
||
}
|
||
|
||
return ApiResult<PagerData<SummaryJncDetailRep>>.Success(string.Empty, reList);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取审批流程
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
public ApiResult<AuditorLogReq> AuditorLogTree(SummaryJncModelReq req)
|
||
{
|
||
if (JncAuditor.Length != 5) return ApiResult<AuditorLogReq>.Failed("审核配置无效!");
|
||
AuditorLogReq logRe = new AuditorLogReq
|
||
{
|
||
Authority = 0,
|
||
UpdateStatus = 0,
|
||
SubmitStatus = 0,
|
||
SumbitFinish = 0,
|
||
SumbitCancel = 0,
|
||
AuditorLog = new List<AuditorLogDataReq>(),
|
||
};
|
||
|
||
ApiResult<LoginUserRes> loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
|
||
if (!loginUserRes.IsSuccess) return ApiResult<AuditorLogReq>.Failed(loginUserRes.Msg);
|
||
|
||
try
|
||
{
|
||
ApptSummary summaryM = Db.Queryable<ApptSummary>()
|
||
.Where(t => t.Id == req.Id && t.ApptTypeId == 2).First(); // 当前订单实体
|
||
|
||
var idList = Db.Queryable<ApptSummary>()
|
||
.Where(t => t.Guid == summaryM.Guid).Select(t => t.Id.Value).ToList(); // 当前订单的所有副本
|
||
|
||
var logL = Db.Queryable<ApptAuditLog>()
|
||
.Where(t => idList.Contains(t.ApptId)).OrderBy(t => t.Id, OrderByType.Asc).ToList(); // 当前订单副本的所有日志记录
|
||
|
||
var audotorL = Db.Queryable<ApptAuditor>().ToList(); // 审核权限表
|
||
|
||
if (summaryM.UserId == loginUserRes.Info.UserAccount)
|
||
{
|
||
logRe.UpdateStatus = 1; // 发起人具有修改权限
|
||
|
||
if (summaryM.ApplyOA == 0 && (
|
||
summaryM.AuditorStatus == (int)EnumAuditorJncStatus.暂订单
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请)
|
||
)
|
||
{
|
||
logRe.SumbitCancel = 1; // 当占用资源前,发起人具有取消权限
|
||
}
|
||
}
|
||
|
||
// 预定部取消权限判断
|
||
if (summaryM.ApplyOA == 1 && (
|
||
summaryM.AuditorStatus == (int)EnumAuditorJncStatus.暂订单
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单预定部
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单销售经理
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务经理
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务总监
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.确定单
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.完成单
|
||
|| summaryM.AuditorStatus == (int)EnumAuditorJncStatus.驳回单)
|
||
)
|
||
{
|
||
string jncAuditor = JncAuditor[0];
|
||
string roup = audotorL.Where(t => t.OpDescript == jncAuditor).FirstOrDefault()?.OpGroup;
|
||
if (loginUserRes.Info.UserGroup == roup) logRe.SumbitCancel = 1;
|
||
}
|
||
|
||
|
||
if (logL != null && logL.Count > 0)
|
||
{
|
||
var userL = Db.Queryable<UcLogin>().ToList().Replace(); // 所人有员信息
|
||
var createUserM = userL.Where(t => t.OpId == summaryM.UserId).FirstOrDefault(); // 发起人
|
||
if (createUserM == null) return ApiResult<AuditorLogReq>.Failed("获取发起人失败!");
|
||
|
||
// var allReplys = Db.Queryable<ApptAuditLog>().Where(t => t.Type == 3).ToList(); // 所有回复的内容 [包含图片,查询很慢]
|
||
|
||
// 已操作的流程日志
|
||
List<int> statusList = new List<int>();
|
||
foreach (var item in logL)
|
||
{
|
||
var opNameM = userL.Where(t => t.OpId == item.UserId).FirstOrDefault(); // 审核人实体
|
||
var OpName = opNameM?.OpName;
|
||
var info = new List<string>()
|
||
{
|
||
$"操作时间:{item.CreateTime:yyyy-MM-dd HH:mm:ss}"
|
||
};
|
||
if (!string.IsNullOrEmpty(item.Remark))
|
||
{
|
||
if (item.UserId == summaryM.UserId)
|
||
{
|
||
info.Add($"提交备注:{item.Remark}");
|
||
}
|
||
else
|
||
{
|
||
info.Add($"审批备注:{item.Remark}");
|
||
}
|
||
}
|
||
List<string> picList = new List<string>();
|
||
if (!string.IsNullOrEmpty(item.Pic0)) picList.Add(item.Pic0);
|
||
if (!string.IsNullOrEmpty(item.Pic1)) picList.Add(item.Pic1);
|
||
if (!string.IsNullOrEmpty(item.Pic2)) picList.Add(item.Pic2);
|
||
if (!string.IsNullOrEmpty(item.Pic3)) picList.Add(item.Pic3);
|
||
if (!string.IsNullOrEmpty(item.Pic4)) picList.Add(item.Pic4);
|
||
//if (!string.IsNullOrEmpty(item.Pic5)) picList.Add(item.Pic5);
|
||
//if (!string.IsNullOrEmpty(item.Pic6)) picList.Add(item.Pic6);
|
||
//if (!string.IsNullOrEmpty(item.Pic7)) picList.Add(item.Pic7);
|
||
//if (!string.IsNullOrEmpty(item.Pic8)) picList.Add(item.Pic8);
|
||
//if (!string.IsNullOrEmpty(item.Pic9)) picList.Add(item.Pic9);
|
||
|
||
// 组装回复贪睡
|
||
List<ReplyResp> replyList = GetReplyList(userL, item.Id);
|
||
if (replyList == null || replyList.Count == 0) replyList = null;
|
||
|
||
if (item.AuditorStatus == (int)EnumAuditorJncStatus.暂订单)
|
||
{
|
||
if (statusList.Where(t => t == (int)EnumAuditorJncStatus.暂订单).Count() == 0)
|
||
{
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = item.Id,
|
||
Title = $"{OpName}发起",
|
||
Status = 1,
|
||
Info = info,
|
||
PicList = picList,
|
||
ReplyList = replyList,
|
||
});
|
||
statusList.Add((int)EnumAuditorJncStatus.暂订单);
|
||
}
|
||
}
|
||
else if (item.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请)
|
||
{
|
||
int num = statusList.Where(t => t == (int)EnumAuditorJncStatus.审核单申请).Count();
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = item.Id,
|
||
Title = num == 0 ? $"{OpName}提交申请确定单" : $"{OpName}重新提交申请确定单",
|
||
Status = 1,
|
||
Info = info,
|
||
PicList = picList,
|
||
ReplyList = replyList,
|
||
});
|
||
statusList.Add((int)EnumAuditorJncStatus.审核单申请);
|
||
}
|
||
else if (item.AuditorStatus == (int)EnumAuditorJncStatus.审核单预定部)
|
||
{
|
||
int num = statusList.Where(t => t == (int)EnumAuditorJncStatus.审核单预定部).Count();
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = item.Id,
|
||
Title = num == 0 ? $"预定部{OpName}审核通过" : $"预定部{OpName}审核通过",
|
||
Status = 1,
|
||
Info = info,
|
||
PicList = picList,
|
||
ReplyList = replyList,
|
||
});
|
||
statusList.Add((int)EnumAuditorJncStatus.审核单预定部);
|
||
}
|
||
else if (item.AuditorStatus == (int)EnumAuditorJncStatus.审核单销售经理)
|
||
{
|
||
int num = statusList.Where(t => t == (int)EnumAuditorJncStatus.审核单销售经理).Count();
|
||
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = item.Id,
|
||
Title = num == 0 ? $"销售经理{OpName}审核通过" : $"销售经理{OpName}重新审核通过",
|
||
Status = 1,
|
||
Info = info,
|
||
PicList = picList,
|
||
ReplyList = replyList,
|
||
});
|
||
statusList.Add((int)EnumAuditorJncStatus.审核单销售经理);
|
||
}
|
||
else if (item.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务经理)
|
||
{
|
||
int num = statusList.Where(t => t == (int)EnumAuditorJncStatus.审核单财务经理).Count();
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = item.Id,
|
||
Title = num == 0 ? $"财务经理{OpName}审核通过" : $"财务经理{OpName}重新审核通过",
|
||
Status = 1,
|
||
Info = info,
|
||
PicList = picList,
|
||
ReplyList = replyList,
|
||
});
|
||
statusList.Add((int)EnumAuditorJncStatus.审核单财务经理);
|
||
}
|
||
else if (item.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务总监)
|
||
{
|
||
int num = statusList.Where(t => t == (int)EnumAuditorJncStatus.审核单财务总监).Count();
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = item.Id,
|
||
Title = num == 0 ? $"财务总监{OpName}审核通过" : $"财务总监{OpName}重新审核通过",
|
||
Status = 1,
|
||
Info = info,
|
||
PicList = picList,
|
||
ReplyList = replyList,
|
||
});
|
||
statusList.Add((int)EnumAuditorJncStatus.审核单财务总监);
|
||
}
|
||
else if (item.AuditorStatus == (int)EnumAuditorJncStatus.确定单)
|
||
{
|
||
int num = statusList.Where(t => t == (int)EnumAuditorJncStatus.确定单).Count();
|
||
info.Add("订单状态:审批完成");
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = item.Id,
|
||
Title = num == 0 ? $"总经理{OpName}审核通过" : $"总经理{OpName}重新审核通过",
|
||
Status = 1,
|
||
Info = info,
|
||
PicList = picList,
|
||
ReplyList = replyList,
|
||
});
|
||
statusList.Add((int)EnumAuditorJncStatus.确定单);
|
||
}
|
||
else if (item.AuditorStatus == (int)EnumAuditorJncStatus.完成单)
|
||
{
|
||
int num = statusList.Where(t => t == (int)EnumAuditorJncStatus.完成单).Count();
|
||
info.Add("订单状态:订单流程结束");
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = item.Id,
|
||
Title = num == 0 ? $"{createUserM.OpName}发起完成单,订单流程结束" : $"{createUserM.OpName}发起完成单,订单流程再次结束",
|
||
Status = 1,
|
||
Info = info,
|
||
PicList = picList,
|
||
ReplyList = replyList,
|
||
});
|
||
statusList.Add((int)EnumAuditorJncStatus.完成单);
|
||
}
|
||
else if (item.AuditorStatus == (int)EnumAuditorJncStatus.驳回单)
|
||
{
|
||
string opGroup = "";
|
||
if (opNameM != null)
|
||
{
|
||
opGroup = audotorL.Where(t => t.OpGroup == opNameM.OpGroup).FirstOrDefault()?.OpDescript;
|
||
}
|
||
int num = statusList.Where(t => t == (int)EnumAuditorJncStatus.驳回单).Count();
|
||
info.Add("订单状态:订单被驳回,请调整订单重新提交或取消订单。");
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = item.Id,
|
||
Title = num == 0 ? $"{opGroup}{OpName}驳回了订单" : $"{opGroup}{OpName}再次驳回了订单",
|
||
Status = 1,
|
||
Info = info,
|
||
PicList = picList,
|
||
ReplyList = replyList,
|
||
});
|
||
statusList.Add((int)EnumAuditorJncStatus.驳回单);
|
||
}
|
||
else if (item.AuditorStatus == (int)EnumAuditorJncStatus.取消单)
|
||
{
|
||
int num = statusList.Where(t => t == (int)EnumAuditorJncStatus.取消单).Count();
|
||
info.Add("订单状态:订单被取消");
|
||
string goupName = "";
|
||
if (summaryM.UserId != item.UserId)
|
||
{
|
||
goupName = audotorL.Where(t => t.OpGroup == opNameM.OpGroup).FirstOrDefault()?.OpDescript;
|
||
}
|
||
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = item.Id,
|
||
Title = num == 0 ? $"{goupName}{OpName}取消了订单,订单流程结束" : $"{goupName}{OpName}取消了订单,订单流程再次结束",
|
||
Status = 1,
|
||
Info = info,
|
||
PicList = picList,
|
||
ReplyList = replyList,
|
||
});
|
||
statusList.Add((int)EnumAuditorJncStatus.取消单);
|
||
}
|
||
else if (item.AuditorStatus == 3)
|
||
{
|
||
string _rem = string.IsNullOrEmpty(item.Remark) ? "无" : item.Remark;
|
||
if (string.IsNullOrEmpty(item.Source))
|
||
{
|
||
if (item.UserId == loginUserRes.Info.UserAccount)
|
||
{
|
||
// 我收到的自动抄送
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = item.Id,
|
||
Title = $"自动抄送",
|
||
Status = 1,
|
||
Info = new List<string>
|
||
{
|
||
$"操作时间:{item.CreateTime:yyyy-MM-dd HH:mm:ss}",
|
||
$"抄送备注:{_rem}"
|
||
},
|
||
PicList = picList,
|
||
ReplyList = replyList,
|
||
});
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (item.UserId == loginUserRes.Info.UserAccount)
|
||
{
|
||
// 手动抄送给我的
|
||
int num = statusList.Where(t => t == 3).Count();
|
||
var sourceN = userL.Where(t => t.OpId == item.Source).FirstOrDefault()?.OpName;
|
||
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = item.Id,
|
||
Title = num == 0 ? $"{sourceN}抄送给我" : $"{sourceN}再次抄送给我",
|
||
Status = 1,
|
||
Info = new List<string>
|
||
{
|
||
$"操作时间:{item.CreateTime:yyyy-MM-dd HH:mm:ss}",
|
||
$"抄送备注:{_rem}"
|
||
},
|
||
PicList = picList,
|
||
ReplyList = replyList,
|
||
});
|
||
|
||
statusList.Add(3);
|
||
}
|
||
else if (item.Source == loginUserRes.Info.UserAccount)
|
||
{
|
||
int num = statusList.Where(t => t == 4).Count();
|
||
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = item.Id,
|
||
Title = num == 0 ? $"我抄送给{OpName}" : $"我再次抄送给{OpName}",
|
||
Status = 1,
|
||
Info = new List<string>
|
||
{
|
||
$"操作时间:{item.CreateTime:yyyy-MM-dd HH:mm:ss}",
|
||
$"抄送备注:{_rem}"
|
||
},
|
||
PicList = picList,
|
||
ReplyList = replyList,
|
||
});
|
||
|
||
statusList.Add(4);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// 待操作的流程
|
||
var next = logL.Where(t => t.AuditorStatus != 3).LastOrDefault();
|
||
if (next != null)
|
||
{
|
||
int num = 0;
|
||
if (next.AuditorStatus == (int)EnumAuditorJncStatus.暂订单)
|
||
{
|
||
var newLog = new AuditorLogDataReq
|
||
{
|
||
Id = 0,
|
||
Title = $"{createUserM.OpName}待提交申请确定单",
|
||
Status = 2,
|
||
Info = new List<string>(),
|
||
PicList = new List<string>(),
|
||
};
|
||
|
||
num = statusList.Where(t =>
|
||
t == (int)EnumAuditorJncStatus.审核单申请
|
||
|| t == (int)EnumAuditorJncStatus.审核单预定部
|
||
|| t == (int)EnumAuditorJncStatus.审核单销售经理
|
||
|| t == (int)EnumAuditorJncStatus.审核单财务经理
|
||
|| t == (int)EnumAuditorJncStatus.审核单财务总监
|
||
|| t == (int)EnumAuditorJncStatus.确定单
|
||
).Count();
|
||
if (num > 0) newLog.Title = $"{createUserM.OpName}撤回订单重新发起";
|
||
|
||
logRe.AuditorLog.Add(newLog);
|
||
if (createUserM.OpId == loginUserRes.Info.UserAccount)
|
||
{
|
||
logRe.SubmitStatus = 1;
|
||
}
|
||
}
|
||
else if (next.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请)
|
||
{
|
||
var OpGroup = audotorL.Where(t => t.OpDescript == JncAuditor[0]).FirstOrDefault()?.OpGroup;
|
||
var userSH = string.Join(",", userL.Where(t => t.OpGroup.Trim() == OpGroup).Select(t => t.OpName).ToList());
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = 0,
|
||
Title = $"待生成确定单",
|
||
Status = 2,
|
||
Info = new List<string>() { $"可操作人员:{userSH}", },
|
||
PicList = new List<string>(),
|
||
});
|
||
if (loginUserRes.Info.UserGroup == OpGroup)
|
||
{
|
||
logRe.Authority = 1;
|
||
}
|
||
}
|
||
else if (next.AuditorStatus == (int)EnumAuditorJncStatus.审核单预定部)
|
||
{
|
||
var OpGroup = audotorL.Where(t => t.OpDescript == JncAuditor[1]).FirstOrDefault()?.OpGroup;
|
||
var userSH = string.Join(",", userL.Where(t => t.OpGroup.Trim() == OpGroup).Select(t => t.OpName).ToList());
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = 0,
|
||
Title = $"销售经理审核中",
|
||
Status = 2,
|
||
Info = new List<string>() { $"可操作人员:{userSH}", },
|
||
PicList = new List<string>(),
|
||
});
|
||
if (loginUserRes.Info.UserGroup == OpGroup)
|
||
{
|
||
logRe.Authority = 1;
|
||
}
|
||
}
|
||
else if (next.AuditorStatus == (int)EnumAuditorJncStatus.审核单销售经理)
|
||
{
|
||
var OpGroup = audotorL.Where(t => t.OpDescript == JncAuditor[2]).FirstOrDefault()?.OpGroup;
|
||
var userSH = string.Join(",", userL.Where(t => t.OpGroup.Trim() == OpGroup).Select(t => t.OpName).ToList());
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = 0,
|
||
Title = $"财务经理审核中",
|
||
Status = 2,
|
||
Info = new List<string>() { $"可操作人员:{userSH}", },
|
||
PicList = new List<string>(),
|
||
});
|
||
if (loginUserRes.Info.UserGroup == OpGroup)
|
||
{
|
||
logRe.Authority = 1;
|
||
}
|
||
}
|
||
else if (next.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务经理)
|
||
{
|
||
var OpGroup = audotorL.Where(t => t.OpDescript == JncAuditor[3]).FirstOrDefault()?.OpGroup;
|
||
var userSH = string.Join(",", userL.Where(t => t.OpGroup.Trim() == OpGroup).Select(t => t.OpName).ToList());
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = 0,
|
||
Title = $"财务总监审核中",
|
||
Status = 2,
|
||
Info = new List<string>() { $"可操作人员:{userSH}", },
|
||
PicList = new List<string>(),
|
||
});
|
||
if (loginUserRes.Info.UserGroup == OpGroup)
|
||
{
|
||
logRe.Authority = 1;
|
||
}
|
||
}
|
||
else if (next.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务总监)
|
||
{
|
||
var OpGroup = audotorL.Where(t => t.OpDescript == JncAuditor[4]).FirstOrDefault()?.OpGroup;
|
||
var userSH = string.Join(",", userL.Where(t => t.OpGroup.Trim() == OpGroup).Select(t => t.OpName).ToList());
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = 0,
|
||
Title = $"总经理审核中",
|
||
Status = 2,
|
||
Info = new List<string>() { $"可操作人员:{userSH}", },
|
||
PicList = new List<string>(),
|
||
});
|
||
if (loginUserRes.Info.UserGroup == OpGroup)
|
||
{
|
||
logRe.Authority = 1;
|
||
}
|
||
}
|
||
else if (next.AuditorStatus == (int)EnumAuditorJncStatus.确定单)
|
||
{
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = 0,
|
||
Title = $"审核完成",
|
||
Status = 2,
|
||
Info = new List<string>() { $"可操作人员:{createUserM.OpName}", "操作提示:请在时间来临时,与客户确定后点击完成,以便将该OA信息推送给相关人员。" },
|
||
PicList = new List<string>(),
|
||
});
|
||
if (createUserM.OpId == loginUserRes.Info.UserAccount)
|
||
{
|
||
logRe.SumbitFinish = 1;
|
||
}
|
||
}
|
||
else if (next.AuditorStatus == (int)EnumAuditorJncStatus.驳回单)
|
||
{
|
||
logRe.AuditorLog.Add(new AuditorLogDataReq
|
||
{
|
||
Id = 0,
|
||
Title = $"编辑或取消订单",
|
||
Status = 2,
|
||
Info = new List<string>() { $"可操作人员:{createUserM.OpName}", "操作提示:请编辑重新提交或取消订单。" },
|
||
PicList = new List<string>(),
|
||
});
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
return ApiResult<AuditorLogReq>.Success(info: logRe);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return ApiResult<AuditorLogReq>.Failed(ex.Message);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 订单数据差异
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
/// <remarks>
|
||
/// </remarks>
|
||
public ApiResult<List<DisparityReq>> Disparity(SummaryJncModelReq req)
|
||
{
|
||
List<DisparityReq> list = new List<DisparityReq>();
|
||
|
||
ApiResult<LoginUserRes> loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
|
||
if (!loginUserRes.IsSuccess) return ApiResult<List<DisparityReq>>.Failed(loginUserRes.Msg);
|
||
|
||
string summaryGuid = Db.Queryable<ApptSummary>().Where(t => t.Id == req.Id && t.ApptTypeId == 2).First()?.Guid;
|
||
if (string.IsNullOrEmpty(summaryGuid)) return ApiResult<List<DisparityReq>>.Failed("订单不存在");
|
||
|
||
List<ApptSummary> summaryAll = Db.Queryable<ApptSummary>().Where(t => t.Guid == summaryGuid).ToList();
|
||
if (summaryAll.Count <= 0)
|
||
{
|
||
return ApiResult<List<DisparityReq>>.Failed("订单不存在");
|
||
}
|
||
else if (summaryAll.Count == 1)
|
||
{
|
||
list.Add(new DisparityReq
|
||
{
|
||
Title = "创建新的暂订单",
|
||
Time = summaryAll[0].CreateTime.Value,
|
||
Info = new List<string>(),
|
||
});
|
||
return ApiResult<List<DisparityReq>>.Success(info: list);
|
||
}
|
||
|
||
// 获取归档资源单列表
|
||
var summaryL2 = summaryAll.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.归档资源单).OrderBy(t => t.Id).ToList();
|
||
|
||
// 获取最新的数据
|
||
var summaryM1 = summaryAll.Where(
|
||
t => t.AuditorStatus == (int)EnumAuditorJncStatus.暂订单
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单预定部
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单销售经理
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务经理
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务总监
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.确定单
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.完成单
|
||
|| t.AuditorStatus == (int)EnumAuditorJncStatus.驳回单
|
||
).FirstOrDefault();
|
||
if (summaryM1 != null) summaryL2.Add(summaryM1);
|
||
|
||
|
||
// 对比源对象
|
||
ApptSummary baseSummary = null;
|
||
List<string> equalStr = new List<string>();
|
||
foreach (var curSum in summaryL2)
|
||
{
|
||
if (baseSummary == null)
|
||
{
|
||
list.Add(new DisparityReq
|
||
{
|
||
Title = "首次生成确认单",
|
||
Time = curSum.CreateTime.Value,
|
||
Info = new List<string>(),
|
||
});
|
||
baseSummary = curSum;
|
||
continue;
|
||
}
|
||
List<string> infoList = new List<string>();
|
||
|
||
#region 主体对比
|
||
equalStr = new List<string>();
|
||
if (baseSummary.BuyerName != curSum.BuyerName)
|
||
{
|
||
if (string.IsNullOrEmpty(baseSummary.BuyerName)) baseSummary.BuyerName = "空";
|
||
if (string.IsNullOrEmpty(curSum.BuyerName)) curSum.BuyerName = "空";
|
||
equalStr.Add($"组织单位从“{baseSummary.BuyerName}”更改为“{curSum.BuyerName}”");
|
||
}
|
||
if (baseSummary.BuyerAddress != curSum.BuyerAddress)
|
||
{
|
||
if (string.IsNullOrEmpty(baseSummary.BuyerAddress)) baseSummary.BuyerAddress = "空";
|
||
if (string.IsNullOrEmpty(curSum.BuyerAddress)) curSum.BuyerAddress = "空";
|
||
equalStr.Add($"公司地址从“{baseSummary.BuyerAddress}”更改为“{curSum.BuyerAddress}”");
|
||
}
|
||
if (baseSummary.BuyerTitle != curSum.BuyerTitle)
|
||
{
|
||
if (string.IsNullOrEmpty(baseSummary.BuyerTitle)) baseSummary.BuyerTitle = "空";
|
||
if (string.IsNullOrEmpty(curSum.BuyerTitle)) curSum.BuyerTitle = "空";
|
||
equalStr.Add($"会议名称从“{baseSummary.BuyerTitle}”更改为“{curSum.BuyerTitle}”");
|
||
}
|
||
if (baseSummary.LeaderName != curSum.LeaderName)
|
||
{
|
||
if (string.IsNullOrEmpty(baseSummary.LeaderName)) baseSummary.LeaderName = "空";
|
||
if (string.IsNullOrEmpty(curSum.LeaderName)) curSum.LeaderName = "空";
|
||
equalStr.Add($"组织负责人从“{baseSummary.LeaderName}”更改为“{curSum.LeaderName}”");
|
||
}
|
||
if (baseSummary.LeaderMobile != curSum.LeaderMobile)
|
||
{
|
||
if (string.IsNullOrEmpty(baseSummary.LeaderMobile)) baseSummary.LeaderMobile = "空";
|
||
if (string.IsNullOrEmpty(curSum.LeaderMobile)) curSum.LeaderMobile = "空";
|
||
equalStr.Add($"负责人电话从“{baseSummary.LeaderMobile}”更改为“{curSum.LeaderMobile}”");
|
||
}
|
||
if (baseSummary.LeaderRoom != curSum.LeaderRoom)
|
||
{
|
||
if (string.IsNullOrEmpty(baseSummary.LeaderRoom)) baseSummary.LeaderRoom = "空";
|
||
if (string.IsNullOrEmpty(curSum.LeaderRoom)) curSum.LeaderRoom = "空";
|
||
equalStr.Add($"会议组房号从“{baseSummary.LeaderRoom}”更改为“{curSum.LeaderRoom}”");
|
||
}
|
||
if (baseSummary.RoomRemark != curSum.RoomRemark)
|
||
{
|
||
if (string.IsNullOrEmpty(baseSummary.RoomRemark)) baseSummary.RoomRemark = "空";
|
||
if (string.IsNullOrEmpty(curSum.RoomRemark)) curSum.RoomRemark = "空";
|
||
equalStr.Add($"客房总备注从“{baseSummary.RoomRemark}”更改为“{curSum.RoomRemark}”");
|
||
}
|
||
if (baseSummary.MeetingRemark != curSum.MeetingRemark)
|
||
{
|
||
if (string.IsNullOrEmpty(baseSummary.MeetingRemark)) baseSummary.MeetingRemark = "空";
|
||
if (string.IsNullOrEmpty(curSum.MeetingRemark)) curSum.MeetingRemark = "空";
|
||
equalStr.Add($"会议室总备注从“{baseSummary.MeetingRemark}”更改为“{curSum.MeetingRemark}”");
|
||
}
|
||
if (baseSummary.CateringRemark != curSum.CateringRemark)
|
||
{
|
||
if (string.IsNullOrEmpty(baseSummary.CateringRemark)) baseSummary.CateringRemark = "空";
|
||
if (string.IsNullOrEmpty(curSum.CateringRemark)) curSum.CateringRemark = "空";
|
||
equalStr.Add($"餐饮总备注从“{baseSummary.CateringRemark}”更改为“{curSum.CateringRemark}”");
|
||
}
|
||
if (baseSummary.SpringRemark != curSum.SpringRemark)
|
||
{
|
||
if (string.IsNullOrEmpty(baseSummary.SpringRemark)) baseSummary.SpringRemark = "空";
|
||
if (string.IsNullOrEmpty(curSum.SpringRemark)) curSum.SpringRemark = "空";
|
||
equalStr.Add($"温泉总备注从“{baseSummary.SpringRemark}”更改为“{curSum.SpringRemark}”");
|
||
}
|
||
if (equalStr.Count > 0)
|
||
{
|
||
infoList.Add($"订单主体:{string.Join(",", equalStr)}");
|
||
}
|
||
#endregion
|
||
|
||
#region 客房对比
|
||
equalStr = new List<string>();
|
||
var baseRoomList = Db.Queryable<ApptRoom>().Where(t => t.ApptId == baseSummary.Id).ToList();
|
||
var curRoomList = Db.Queryable<ApptRoom>().Where(t => t.ApptId == curSum.Id).ToList();
|
||
|
||
// 原数据遍历与新列表对比 如果存在对比实体差异,如果不存在是删除的
|
||
if (baseRoomList.Count > 0)
|
||
{
|
||
foreach (var baseRoom in baseRoomList)
|
||
{
|
||
var curRoom = curRoomList.Where(t => t.Guid == baseRoom.Guid).FirstOrDefault();
|
||
if (curRoom == null)
|
||
{ // 删除的
|
||
equalStr.Add($"删除了{baseRoom.RoomIn:yyyy-MM-dd}~{baseRoom.RoomOut:yyyy-MM-dd}预订客房{baseRoom.RoomGroup}{baseRoom.RoomNum}套");
|
||
}
|
||
else
|
||
{
|
||
if (baseRoom.RoomIn != curRoom.RoomIn)
|
||
{
|
||
equalStr.Add($"抵达时间从“{baseRoom.RoomIn:yyyy-MM-dd}”更改为“{curRoom.RoomIn:yyyy-MM-dd}”");
|
||
}
|
||
if (baseRoom.RoomOut != curRoom.RoomOut)
|
||
{
|
||
equalStr.Add($"离开时间从“{baseRoom.RoomOut:yyyy-MM-dd}”更改为“{curRoom.RoomOut:yyyy-MM-dd}”");
|
||
}
|
||
if (baseRoom.RoomGroup != curRoom.RoomGroup)
|
||
{
|
||
equalStr.Add($"房型从“{baseRoom.RoomGroup}”更改为“{curRoom.RoomGroup}”");
|
||
}
|
||
if (baseRoom.RoomNum != curRoom.RoomNum)
|
||
{
|
||
equalStr.Add($"房间数量从“{baseRoom.RoomNum}”更改为“{curRoom.RoomNum}”");
|
||
}
|
||
if (baseRoom.RoomPrice != curRoom.RoomPrice)
|
||
{
|
||
equalStr.Add($"单价从“{baseRoom.RoomPrice:#.##}”更改为“{curRoom.RoomPrice:#.##}”");
|
||
}
|
||
if (baseRoom.BreakfastNum != curRoom.BreakfastNum)
|
||
{
|
||
string baseRoomNum = baseRoom.BreakfastNum == 0 ? "无" : baseRoom.BreakfastNum.ToString();
|
||
string curRoomNum = curRoom.BreakfastNum == 0 ? "无" : curRoom.BreakfastNum.ToString();
|
||
equalStr.Add($"早餐数从“{baseRoomNum}”更改为“{curRoomNum}”");
|
||
}
|
||
if (baseRoom.LongDistance != curRoom.LongDistance)
|
||
{
|
||
string baseRoomNum = baseRoom.LongDistance == 0 ? "关" : "开";
|
||
string curRoomNum = curRoom.LongDistance == 0 ? "关" : "开";
|
||
equalStr.Add($"长途电话从“{baseRoomNum}”更改为“{curRoomNum}”");
|
||
}
|
||
if (baseRoom.MinShop != curRoom.MinShop)
|
||
{
|
||
string baseRoomNum = baseRoom.MinShop == 0 ? "关" : "开";
|
||
string curRoomNum = curRoom.MinShop == 0 ? "关" : "开";
|
||
equalStr.Add($"客房吧从“{baseRoomNum}”更改为“{curRoomNum}”");
|
||
}
|
||
if (baseRoom.RoomRemark != curRoom.RoomRemark)
|
||
{
|
||
if (string.IsNullOrEmpty(baseRoom.RoomRemark)) baseRoom.RoomRemark = "无";
|
||
if (string.IsNullOrEmpty(curRoom.RoomRemark)) curRoom.RoomRemark = "无";
|
||
equalStr.Add($"客房备注从“{baseRoom.RoomRemark}”更改为“{curRoom.RoomRemark}”");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// 新数据遍历与原列表对比,如果不存在是新增的
|
||
if (curRoomList.Count > 0)
|
||
{
|
||
foreach (var curRoom in curRoomList)
|
||
{
|
||
var baseRoom = baseRoomList.Where(t => t.Guid == curRoom.Guid).FirstOrDefault();
|
||
if (baseRoom == null)
|
||
{ // 新增的
|
||
equalStr.Add($"新增了{curRoom.RoomIn:yyyy-MM-dd}~{curRoom.RoomOut:yyyy-MM-dd}预订客房{curRoom.RoomGroup} {curRoom.RoomNum}套");
|
||
}
|
||
}
|
||
}
|
||
if (equalStr.Count > 0)
|
||
{
|
||
infoList.Add($"客房:{string.Join(",", equalStr)}");
|
||
}
|
||
#endregion
|
||
|
||
#region 会议厅
|
||
equalStr = new List<string>();
|
||
var baseMeetList = Db.Queryable<ApptMeeting>().Where(t => t.ApptId == baseSummary.Id).ToList();
|
||
var curMeetList = Db.Queryable<ApptMeeting>().Where(t => t.ApptId == curSum.Id).ToList();
|
||
if (baseMeetList.Count > 0)
|
||
{
|
||
foreach (var baseMeet in baseMeetList)
|
||
{
|
||
var curMeet = curMeetList.Where(t => t.Guid == baseMeet.Guid).FirstOrDefault();
|
||
if (curMeet == null)
|
||
{
|
||
var groups = "";
|
||
if (baseMeet.Groups.IndexOf("1") != -1) groups += "早";
|
||
if (baseMeet.Groups.IndexOf("2") != -1) groups += "中";
|
||
if (baseMeet.Groups.IndexOf("3") != -1) groups += "晚";
|
||
equalStr.Add($"删除了{baseMeet.MeetingTime:yyyy-MM-dd}预订会议厅{baseMeet.MeetingRoom}{groups}");
|
||
}
|
||
else
|
||
{
|
||
if (baseMeet.MeetingTime != curMeet.MeetingTime)
|
||
{
|
||
equalStr.Add($"会议入场时间从“{baseMeet.MeetingTime:yyyy-MM-dd}”更改为“{curMeet.MeetingTime:yyyy-MM-dd}”");
|
||
}
|
||
if (baseMeet.Groups != curMeet.Groups)
|
||
{
|
||
var baseGroups = "";
|
||
if (baseMeet.Groups.IndexOf("1") != -1) baseGroups += "早";
|
||
if (baseMeet.Groups.IndexOf("2") != -1) baseGroups += "中";
|
||
if (baseMeet.Groups.IndexOf("3") != -1) baseGroups += "晚";
|
||
var curMeetGroups = "";
|
||
if (curMeet.Groups.IndexOf("1") != -1) curMeetGroups += "早";
|
||
if (curMeet.Groups.IndexOf("2") != -1) curMeetGroups += "中";
|
||
if (curMeet.Groups.IndexOf("3") != -1) curMeetGroups += "晚";
|
||
equalStr.Add($"会议场次从“{baseGroups}”更改为“{curMeetGroups}”");
|
||
}
|
||
if (baseMeet.MeetingRoom != curMeet.MeetingRoom)
|
||
{
|
||
equalStr.Add($"会议厅名称从“{baseMeet.MeetingRoom}”更改为“{curMeet.MeetingRoom}”");
|
||
}
|
||
if (baseMeet.MeetingRostrum != curMeet.MeetingRostrum)
|
||
{
|
||
equalStr.Add($"主席台位从“{baseMeet.MeetingRostrum}”更改为“{curMeet.MeetingRostrum}”");
|
||
}
|
||
if (baseMeet.MeetingShape != curMeet.MeetingShape)
|
||
{
|
||
equalStr.Add($"台型从“{baseMeet.MeetingShape}”更改为“{curMeet.MeetingShape}”");
|
||
}
|
||
if (baseMeet.MeetingNum != curMeet.MeetingNum)
|
||
{
|
||
string baseMeetMeetingNum = baseMeet.MeetingNum == 0 ? "待定" : baseMeet.MeetingNum.ToString();
|
||
string curMeetMeetingNum = curMeet.MeetingNum == 0 ? "待定" : curMeet.MeetingNum.ToString();
|
||
equalStr.Add($"人数从“{baseMeetMeetingNum}”更改为“{curMeetMeetingNum}”");
|
||
}
|
||
if (baseMeet.MeetingPrice != curMeet.MeetingPrice)
|
||
{
|
||
equalStr.Add($"单价从“{baseMeet.MeetingPrice:#.##}”更改为“{curMeet.MeetingPrice:#.##}”");
|
||
}
|
||
if (baseMeet.MeetingTitle != curMeet.MeetingTitle)
|
||
{
|
||
string baseMeetMeetingTitle = string.IsNullOrEmpty(baseMeet.MeetingTitle) ? "无" : baseMeet.MeetingTitle;
|
||
string curMeetMeetingTitle = string.IsNullOrEmpty(curMeet.MeetingTitle) ? "无" : curMeet.MeetingTitle;
|
||
equalStr.Add($"横幅从“{baseMeetMeetingTitle}”更改为“{curMeetMeetingTitle}”");
|
||
}
|
||
if (baseMeet.Remark != curMeet.Remark)
|
||
{
|
||
string baseMeetRemark = string.IsNullOrEmpty(baseMeet.Remark) ? "无" : baseMeet.Remark;
|
||
string curMeetRemark = string.IsNullOrEmpty(curMeet.Remark) ? "无" : curMeet.Remark;
|
||
equalStr.Add($"横幅从“{baseMeetRemark}”更改为“{curMeetRemark}”");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (curMeetList.Count > 0)
|
||
{
|
||
foreach (var curMeet in curMeetList)
|
||
{
|
||
var baseMeet = baseMeetList.Where(t => t.Guid == curMeet.Guid).FirstOrDefault();
|
||
if (baseMeet == null)
|
||
{
|
||
var groups = "";
|
||
if (curMeet.Groups.IndexOf("1") != -1) groups += "早";
|
||
if (curMeet.Groups.IndexOf("2") != -1) groups += "中";
|
||
if (curMeet.Groups.IndexOf("3") != -1) groups += "晚";
|
||
equalStr.Add($"新增了{curMeet.MeetingTime:yyyy-MM-dd}预订会议厅{curMeet.MeetingRoom} {groups}");
|
||
}
|
||
}
|
||
}
|
||
if (equalStr.Count > 0)
|
||
{
|
||
infoList.Add($"会议厅:{string.Join(",", equalStr)}");
|
||
}
|
||
#endregion
|
||
|
||
#region 餐饮
|
||
equalStr = new List<string>();
|
||
var baseCaterList = Db.Queryable<ApptCatering>().Where(t => t.ApptId == baseSummary.Id).ToList();
|
||
var curCaterList = Db.Queryable<ApptCatering>().Where(t => t.ApptId == curSum.Id).ToList();
|
||
if (baseCaterList.Count > 0)
|
||
{
|
||
foreach (var baseCater in baseCaterList)
|
||
{
|
||
var curCater = curCaterList.Where(t => t.Guid == baseCater.Guid).FirstOrDefault();
|
||
if (curCater == null)
|
||
{
|
||
var groups = "";
|
||
if (baseCater.Groups.IndexOf("1") != -1) groups += "早";
|
||
if (baseCater.Groups.IndexOf("2") != -1) groups += "中";
|
||
if (baseCater.Groups.IndexOf("3") != -1) groups += "晚";
|
||
equalStr.Add($"删除了{baseCater.CateringTime:yyyy-MM-dd}预订餐饮{baseCater.CateringRoom}{groups}");
|
||
}
|
||
else
|
||
{
|
||
if (baseCater.CateringTime != curCater.CateringTime)
|
||
{
|
||
equalStr.Add($"餐饮入场日期从“{baseCater.CateringTime:yyyy-MM-dd}”更改为“{curCater.CateringTime:yyyy-MM-dd}”");
|
||
}
|
||
if (baseCater.Groups != curCater.Groups)
|
||
{
|
||
var baseGroups = "";
|
||
if (baseCater.Groups.IndexOf("1") != -1) baseGroups += "早";
|
||
if (baseCater.Groups.IndexOf("2") != -1) baseGroups += "中";
|
||
if (baseCater.Groups.IndexOf("3") != -1) baseGroups += "晚";
|
||
var curMeetGroups = "";
|
||
if (curCater.Groups.IndexOf("1") != -1) curMeetGroups += "早";
|
||
if (curCater.Groups.IndexOf("2") != -1) curMeetGroups += "中";
|
||
if (curCater.Groups.IndexOf("3") != -1) curMeetGroups += "晚";
|
||
equalStr.Add($"场次从“{baseGroups}”更改为“{curMeetGroups}”");
|
||
}
|
||
if (baseCater.CateringRoom != curCater.CateringRoom)
|
||
{
|
||
equalStr.Add($"餐厅名称从“{baseCater.CateringRoom}”更改为“{curCater.CateringRoom}”");
|
||
}
|
||
if (baseCater.CateringType != curCater.CateringType)
|
||
{
|
||
string baseCaterCateringType = baseCater.CateringType == 0 ? "桌数" : "人数";
|
||
string curCaterCateringType = curCater.CateringType == 0 ? "桌数" : "人数";
|
||
equalStr.Add($"用餐类型从“{baseCaterCateringType}”更改为“{curCaterCateringType}”");
|
||
}
|
||
if (baseCater.CateringNum != curCater.CateringNum)
|
||
{
|
||
string baseCaterNum = baseCater.CateringNum == 0 ? "待定" : baseCater.CateringNum.ToString();
|
||
string curCaterNum = curCater.CateringNum == 0 ? "桌数" : curCater.CateringNum.ToString();
|
||
equalStr.Add($"桌数或人数从“{baseCaterNum}”更改为“{curCaterNum}”");
|
||
}
|
||
if (baseCater.CateringPrice != curCater.CateringPrice)
|
||
{
|
||
equalStr.Add($"每桌或每人单价从“{baseCater.CateringPrice:#.##}”更改为“{curCater.CateringPrice:#.##}”");
|
||
}
|
||
if (baseCater.CateringTable != curCater.CateringTable)
|
||
{
|
||
equalStr.Add($"桌型从“{baseCater.CateringTable}”更改为“{curCater.CateringTable}”");
|
||
}
|
||
if (baseCater.Wine != curCater.Wine)
|
||
{
|
||
equalStr.Add($"酒水从“{baseCater.Wine}”更改为“{curCater.Wine}”");
|
||
}
|
||
if (baseCater.Remark != curCater.Remark)
|
||
{
|
||
equalStr.Add($"备注从“{baseCater.Remark}”更改为“{curCater.Remark}”");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (curCaterList.Count > 0)
|
||
{
|
||
foreach (var curCater in curCaterList)
|
||
{
|
||
var baseCater = baseCaterList.Where(t => t.Guid == curCater.Guid).FirstOrDefault();
|
||
if (baseCater == null)
|
||
{
|
||
var groups = "";
|
||
if (curCater.Groups.IndexOf("1") != -1) groups += "早";
|
||
if (curCater.Groups.IndexOf("2") != -1) groups += "中";
|
||
if (curCater.Groups.IndexOf("3") != -1) groups += "晚";
|
||
equalStr.Add($"新增了{curCater.CateringTime:yyyy-MM-dd}预订餐饮{curCater.CateringCode} {groups}");
|
||
}
|
||
}
|
||
}
|
||
if (equalStr.Count > 0)
|
||
{
|
||
infoList.Add($"餐饮:{string.Join(",", equalStr)}");
|
||
}
|
||
#endregion
|
||
|
||
#region 温泉
|
||
equalStr = new List<string>();
|
||
var baseSpringList = Db.Queryable<ApptSpring>().Where(t => t.ApptId == baseSummary.Id).ToList();
|
||
var curSpringList = Db.Queryable<ApptSpring>().Where(t => t.ApptId == curSum.Id).ToList();
|
||
if (baseSpringList.Count > 0)
|
||
{
|
||
foreach (var baseSpring in baseSpringList)
|
||
{
|
||
var curSpring = curSpringList.Where(t => t.Guid == baseSpring.Guid).FirstOrDefault();
|
||
if (curSpring == null)
|
||
{
|
||
equalStr.Add($"删除了{baseSpring.SpringTime:yyyy-MM-dd}预订温泉{baseSpring.PeopleNum}人");
|
||
}
|
||
else
|
||
{
|
||
if (baseSpring.SpringTime != curSpring.SpringTime)
|
||
{
|
||
equalStr.Add($"入场日期从“{baseSpring.SpringTime:yyyy-MM-dd}”更改为“{curSpring.SpringTime:yyyy-MM-dd}”");
|
||
}
|
||
if (baseSpring.PeopleNum != curSpring.PeopleNum)
|
||
{
|
||
equalStr.Add($"总人数从“{baseSpring.PeopleNum}”更改为“{curSpring.PeopleNum}”");
|
||
}
|
||
if (baseSpring.SpringMen != curSpring.SpringMen)
|
||
{
|
||
equalStr.Add($"男士人数从“{baseSpring.SpringMen}”更改为“{curSpring.SpringMen}”");
|
||
}
|
||
if (baseSpring.SpringWomen != curSpring.SpringWomen)
|
||
{
|
||
equalStr.Add($"女士人数从“{baseSpring.SpringWomen}”更改为“{curSpring.SpringWomen}”");
|
||
}
|
||
if (baseSpring.Consume != curSpring.Consume)
|
||
{
|
||
equalStr.Add($"二次消费从“{baseSpring.Consume}”更改为“{curSpring.Consume}”");
|
||
}
|
||
if (baseSpring.SpringPrice != curSpring.SpringPrice)
|
||
{
|
||
equalStr.Add($"单价从“{baseSpring.SpringPrice}”更改为“{curSpring.SpringPrice}”");
|
||
}
|
||
if (baseSpring.Remark != curSpring.Remark)
|
||
{
|
||
equalStr.Add($"备注从“{baseSpring.Remark}”更改为“{curSpring.Remark}”");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (curSpringList.Count > 0)
|
||
{
|
||
foreach (var curSpring in curSpringList)
|
||
{
|
||
var baseSpring = baseSpringList.Where(t => t.Guid == curSpring.Guid).FirstOrDefault();
|
||
if (baseSpring == null)
|
||
{
|
||
equalStr.Add($"新增了{curSpring.SpringTime:yyyy-MM-dd}预订温泉{curSpring.PeopleNum}人");
|
||
}
|
||
}
|
||
}
|
||
if (equalStr.Count > 0)
|
||
{
|
||
infoList.Add($"温泉:{string.Join(",", equalStr)}");
|
||
}
|
||
#endregion
|
||
|
||
#region 备注
|
||
equalStr = new List<string>();
|
||
var baseRemarkList = Db.Queryable<ApptRemark>().Where(t => t.ApptId == baseSummary.Id).ToList();
|
||
var curRemarkList = Db.Queryable<ApptRemark>().Where(t => t.ApptId == curSum.Id).ToList();
|
||
if (baseRemarkList.Count > 0)
|
||
{
|
||
foreach (var baseRemark in baseRemarkList)
|
||
{
|
||
var curRemark = curRemarkList.Where(t => t.Guid == baseRemark.Guid).FirstOrDefault();
|
||
if (curRemark == null)
|
||
{
|
||
equalStr.Add($"删除了备注{curRemark.Title} {curRemark.Info}");
|
||
}
|
||
else
|
||
{
|
||
equalStr = new List<string>();
|
||
if (baseRemark.Title != curRemark.Title)
|
||
{
|
||
equalStr.Add($"备注分类从“{baseRemark.Title}”更改为“{curRemark.Title}”");
|
||
}
|
||
if (baseRemark.Info != curRemark.Info)
|
||
{
|
||
equalStr.Add($"备注内容从“{baseRemark.Info}”更改为“{curRemark.Info}”");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (curRemarkList.Count > 0)
|
||
{
|
||
foreach (var curRemark in curRemarkList)
|
||
{
|
||
var baseRemark = baseRemarkList.Where(t => t.Guid == curRemark.Guid).FirstOrDefault();
|
||
if (baseRemark == null)
|
||
{
|
||
equalStr.Add($"新增了备注{baseRemark.Title} {baseRemark.Info}");
|
||
}
|
||
}
|
||
}
|
||
if (equalStr.Count > 0)
|
||
{
|
||
infoList.Add($"备注:{string.Join(",", equalStr)}");
|
||
}
|
||
#endregion
|
||
|
||
if (infoList.Count > 0)
|
||
{
|
||
var title = "修改订单";
|
||
if (curSum.AuditorStatus == (int)EnumAuditorJncStatus.暂订单)
|
||
{
|
||
title = "新提交更改";
|
||
}
|
||
list.Add(new DisparityReq
|
||
{
|
||
Title = title,
|
||
Time = curSum.AlterTime,
|
||
Info = infoList,
|
||
});
|
||
}
|
||
|
||
baseSummary = curSum;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
return ApiResult<List<DisparityReq>>.Success(info: list);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 返回回复中的图片列表
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public ApiResult<List<string>> GetReplyPicList(SummaryJncModelReq req)
|
||
{
|
||
ApiResult<LoginUserRes> loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
|
||
if (!loginUserRes.IsSuccess) return ApiResult<List<string>>.Failed(loginUserRes.Msg);
|
||
|
||
var apptAuditLogM = Db.Queryable<ApptAuditLog>().Where(t => t.Id == req.Id).First();
|
||
if (apptAuditLogM == null) return ApiResult<List<string>>.Success();
|
||
|
||
List<string> list = new List<string>();
|
||
if (!string.IsNullOrEmpty(apptAuditLogM.Pic0)) list.Add(apptAuditLogM.Pic0);
|
||
if (!string.IsNullOrEmpty(apptAuditLogM.Pic1)) list.Add(apptAuditLogM.Pic1);
|
||
if (!string.IsNullOrEmpty(apptAuditLogM.Pic2)) list.Add(apptAuditLogM.Pic2);
|
||
if (!string.IsNullOrEmpty(apptAuditLogM.Pic3)) list.Add(apptAuditLogM.Pic3);
|
||
if (!string.IsNullOrEmpty(apptAuditLogM.Pic4)) list.Add(apptAuditLogM.Pic4);
|
||
//if (!string.IsNullOrEmpty(apptAuditLogM.Pic5)) list.Add(apptAuditLogM.Pic5);
|
||
//if (!string.IsNullOrEmpty(apptAuditLogM.Pic6)) list.Add(apptAuditLogM.Pic6);
|
||
//if (!string.IsNullOrEmpty(apptAuditLogM.Pic7)) list.Add(apptAuditLogM.Pic7);
|
||
//if (!string.IsNullOrEmpty(apptAuditLogM.Pic8)) list.Add(apptAuditLogM.Pic8);
|
||
//if (!string.IsNullOrEmpty(apptAuditLogM.Pic9)) list.Add(apptAuditLogM.Pic9);
|
||
|
||
return ApiResult<List<string>>.Success(info: list);
|
||
}
|
||
|
||
// ---- 私有
|
||
|
||
/// <summary>
|
||
/// 预定部对预定单进行审批通过 【新的订单替换原来的订单】
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private async Task<ApiResult> ApprovedByAuditor(ApplyOrderReq req)
|
||
{
|
||
DateTime now = DateTime.Now;
|
||
|
||
var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
|
||
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
|
||
if (JncAuditor.Length != 5) return ApiResult.Failed("审核配置无效!");
|
||
|
||
var summaryM = await Db.Queryable<ApptSummary>()
|
||
.Mapper(t => t.ApptRoomList, t => t.ApptRoomList.First().ApptId)
|
||
.Mapper(t => t.ApptMeetingList, t => t.ApptMeetingList.First().ApptId)
|
||
.Mapper(t => t.ApptCateringList, t => t.ApptCateringList.First().ApptId)
|
||
.Mapper(t => t.ApptSpringList, t => t.ApptSpringList.First().ApptId)
|
||
.Mapper(t => t.ApptRemarks, t => t.ApptRemarks.First().ApptId)
|
||
.Where(t => t.Id == req.Id).FirstAsync();
|
||
if (summaryM == null || summaryM.ApptTypeId != 2) return ApiResult.Failed("未获取订单数据!");
|
||
if (summaryM.AuditorStatus != (int)EnumAuditorJncStatus.审核单申请) return ApiResult.Failed("非待确定状态不可提交!");
|
||
|
||
string jncAuditor = JncAuditor[0];
|
||
var userGroup = await Db.Queryable<UcLogin, ApptAuditor>((u, a) => new JoinQueryInfos(
|
||
JoinType.Left, u.OpGroup == a.OpGroup
|
||
))
|
||
.Where((u, a) => u.OpId.Trim() == loginUserRes.Info.UserAccount && a.ApptTypeId == 2 && a.OpDescript == jncAuditor)
|
||
.ToListAsync();
|
||
if (userGroup == null || userGroup.Count < 1) return ApiResult.Failed("没有操作权限!");
|
||
|
||
var auditM = Db.Queryable<ApptSummary>()
|
||
.Where(t => t.Guid == summaryM.Guid && t.AuditorStatus == (int)EnumAuditorJncStatus.归档资源单)
|
||
.ToList();
|
||
|
||
if (auditM == null || auditM.Count == 0) // 首次生成审核单-预定部(占用资源)
|
||
{
|
||
try
|
||
{
|
||
Db.Ado.BeginTran();
|
||
|
||
summaryM.AuditorStatus = (int)EnumAuditorJncStatus.归档暂定单;
|
||
summaryM.ApplyOA = 1;
|
||
var upR = Update(summaryM);
|
||
if (!upR.IsSuccess) throw new Exception(upR.Msg);
|
||
|
||
summaryM.AuditorStatus = (int)EnumAuditorJncStatus.审核单预定部;
|
||
|
||
string no = "";
|
||
while (true)
|
||
{
|
||
string NoPrefix = BaseConfig.App(new string[] { "NoPrefix" });
|
||
if (!string.IsNullOrWhiteSpace(NoPrefix))
|
||
{
|
||
no += $"{NoPrefix}-";
|
||
}
|
||
no += $"{now:yyyy}-{now:MM}-{now:dd}-{now:fff}";
|
||
var any = Db.Queryable<ApptSummary>()
|
||
.Where(t => t.No == no).Any();
|
||
if (!any) break;
|
||
}
|
||
summaryM.No = no.ToString();
|
||
|
||
// 客房资源判断
|
||
if (summaryM.ApptRoomList != null)
|
||
{
|
||
foreach (ApptRoom item in summaryM.ApptRoomList)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.RoomCode))
|
||
{
|
||
string rm_type = item.RoomCode;
|
||
if (string.IsNullOrEmpty(rm_type)) rm_type = "%";
|
||
rm_type = rm_type.PadRight(3, ' ');
|
||
var _dt = Db.Ado.UseStoredProcedure().GetDataTable("p_yyj_ota_type_rsv_tend", new { rm_type, s_time = item.RoomIn, e_time = item.RoomOut.AddDays(-1) });
|
||
if (_dt == null || _dt.Rows.Count == 0) throw new Exception("已没有空的客房");
|
||
for (int i = 0; i < _dt.Rows.Count; i++)
|
||
{
|
||
int quan = Convert.ToInt32(_dt.Rows[i]["quan"]);
|
||
string type = _dt.Rows[i]["type"].ToString();
|
||
if (quan < item.RoomNum)
|
||
{
|
||
throw new Exception($"操作失败,[{item.RoomIn:yyyy-MM-dd}]房类[{type}]只剩{quan}套!");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// 会议室资源判断
|
||
if (summaryM.ApptMeetingList != null)
|
||
{
|
||
foreach (ApptMeeting item in summaryM.ApptMeetingList)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.MeetingCode))
|
||
{
|
||
List<int> groups = item.Groups.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
|
||
|
||
var any = Db.Queryable<ResInfo>().Where(t => t.Rescode == item.MeetingCode && t.Stime == item.MeetingTime && t.Sta != "C")
|
||
.In(t => t.Sfield, groups).Any();
|
||
if (any) throw new Exception($"会议室{item.MeetingTime:yyyy-MM-dd} {item.MeetingRoom}已被占用!");
|
||
}
|
||
}
|
||
}
|
||
var user = Db.Queryable<UcLogin>().Where(t => t.OpId.Trim() == summaryM.UserId).First(); //提交人
|
||
|
||
|
||
// 创建团队
|
||
string gname = $"{summaryM.BuyerName}"; // 团队名称
|
||
if (gname.Length > 10) gname = gname.Substring(0, 10);
|
||
string leader = summaryM.LeaderName; //领队或导游或联系人
|
||
string phone = summaryM.LeaderMobile; //领队电话
|
||
// 抵达时间 日期和时间,如2019-01-17 18:00:00
|
||
DateTime arr = new DateTime(summaryM.StartDay.Year, summaryM.StartDay.Month, summaryM.StartDay.Day, 18, 0, 0);
|
||
// 离开时间 日期和时间,如2019-01-18 14:00:00
|
||
DateTime dep = new DateTime(summaryM.EndDay.Year, summaryM.EndDay.Month, summaryM.EndDay.Day, 14, 0, 0);
|
||
if (summaryM.StartDay == summaryM.EndDay) dep = dep.AddDays(1);
|
||
int rooms = 0; // 团队总共的房间数备注(只是备注,不占用房间)
|
||
int guests = 0; //团队的总人数备注(只是备注,不占用房间)
|
||
string remark = user?.OpName + "预订"; //团队主单备注
|
||
string log_id = summaryM.UserId; // 操作员工号(如果操作员没有软件的工号,第三方可以在迪联软件中创建一个通用的工号
|
||
string log_ip = ""; //操作电脑或者接口电脑的IP,可以用空字符串或者任意字符串
|
||
string saleid = user.Saleid; // 销售员工号,在迪联软件销售菜单下可以打开销售员设置,查看销售员的工号,可以为空字符换
|
||
|
||
|
||
DateTime minTime = DateTime.MinValue;
|
||
if (summaryM.ApptRoomList != null && summaryM.ApptRoomList.Count > 0)
|
||
{
|
||
rooms = summaryM.ApptRoomList.Sum(t => t.RoomNum);
|
||
int breakfastNum = summaryM.ApptRoomList.Sum(t => t.BreakfastNum);
|
||
guests = breakfastNum > 0 ? breakfastNum : rooms;
|
||
}
|
||
else if (summaryM.ApptMeetingList != null && summaryM.ApptMeetingList.Count > 0)
|
||
{
|
||
guests = summaryM.ApptMeetingList.Sum(t => t.MeetingNum);
|
||
}
|
||
|
||
// 创建团队
|
||
string grpno = string.Empty;
|
||
var dt = Db.Ado.UseStoredProcedure().GetDataTable("p_yyj_grpadd_inter", new { gname, leader, phone, arr, dep, rooms, guests, remark, log_id, log_ip, saleid });
|
||
|
||
if (dt.Rows.Count > 0 && dt.Rows[0][0] != null && dt.Rows[0][0].ToString() == "1")
|
||
{
|
||
string msg = $"创建团队失败,失败原因:{dt.Rows[0][1]}";
|
||
_logger.Error(msg);
|
||
throw new Exception(msg);
|
||
}
|
||
else if (dt.Rows.Count > 0 && dt.Rows[0][0] != null && dt.Rows[0][0].ToString() == "0")
|
||
{ }
|
||
else
|
||
{
|
||
throw new Exception("创建团队失败");
|
||
}
|
||
|
||
grpno = dt.Rows[0][1].ToString().Trim();
|
||
|
||
if (summaryM.ApptRoomList != null && summaryM.ApptRoomList.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptRoomList)
|
||
{
|
||
log_id = summaryM.UserId; // 操作员工号(如果操作员没有软件的工号,第三方可以在迪联软件中创建一个通用的工号)
|
||
log_ip = ""; // 操作电脑或者接口电脑的IP,可以用空字符串或者任意字符串
|
||
arr = new DateTime(item.RoomIn.Year, item.RoomIn.Month, item.RoomIn.Day); // 抵达日期 只要日期不需要时分秒
|
||
|
||
dep = new DateTime(item.RoomOut.Year, item.RoomOut.Month, item.RoomOut.Day); // 离开日期 只要日期不需要时分秒
|
||
|
||
if (string.IsNullOrWhiteSpace(item.RoomCode)) continue;
|
||
string type = item.RoomCode; // 房类代码,如BJ,请查看迪联酒店系统中房类的设置
|
||
rooms = item.RoomNum; // 预留的数量,此为真实数量,如果超过酒店可用数会返回错误信息
|
||
decimal price = item.RoomPrice; // 房价
|
||
guests = 1; // 一个房间住几个人,默认为1
|
||
remark = item.RoomRemark; // 该预留的备注,排房时可以看到此备注
|
||
string rmcode = "RACK"; // 请按照默认的RACK填写,此为房价码
|
||
|
||
dt = Db.Ado.UseStoredProcedure().GetDataTable("p_yyj_gblock_inter", new { log_id, log_ip, grpno, arr, dep, type, rooms, price, guests, remark, rmcode });
|
||
|
||
if (dt.Rows.Count > 0 && dt.Rows[0][0] != null && dt.Rows[0][0].ToString() == "1")
|
||
{
|
||
string msg = $"创建团队失败,失败原因:{dt.Rows[0][1]}";
|
||
_logger.Error(msg);
|
||
throw new Exception(msg);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (summaryM.ApptMeetingList != null && summaryM.ApptMeetingList.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptMeetingList)
|
||
{
|
||
string accnt = grpno; // 团队账号(创建团队时获得)
|
||
// 会议预订的日期 只要日期不需要时分秒
|
||
DateTime date = new DateTime(item.MeetingTime.Year, item.MeetingTime.Month, item.MeetingTime.Day);
|
||
|
||
if (string.IsNullOrWhiteSpace(item.MeetingCode)) continue;
|
||
string rescode = item.MeetingCode; // 会议室编号,可以从迪联软件查看,或者res_code表取对照code字段
|
||
|
||
decimal price = item.MeetingPrice; // 价格。可以从迪联软件查看,或者res_code表取price字段,该字段为预设参考价,具体订单价格以该参数为准。
|
||
|
||
string op_id = summaryM.UserId; // 操作员工号(如果操作员没有软件的工号,第三方可以在迪联软件中创建一个通用的工号
|
||
|
||
if (string.IsNullOrEmpty(item.Groups)) throw new Exception("场次不能为空"); // 场次
|
||
List<int> groupList = item.Groups.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
|
||
if (groupList.Count < 1) throw new Exception("场次不能为空");
|
||
foreach (var sfield in groupList)
|
||
{
|
||
dt = Db.Ado.UseStoredProcedure().GetDataTable("p_yyj_grpmeet_inter", new { accnt, date, rescode, sfield, price, op_id });
|
||
if (dt.Rows.Count > 0 && dt.Rows[0][0] != null && dt.Rows[0][0].ToString() == "1")
|
||
{
|
||
string msg = $"创建团队失败,失败原因:{dt.Rows[0][1]}";
|
||
_logger.Error(msg);
|
||
throw new Exception(msg);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
summaryM.GrpNo = grpno; //... 保存错了,应该是预定号,保存了团队号
|
||
var inR = InsertReturnId(summaryM);
|
||
if (!inR.IsSuccess) throw new Exception(inR.Msg);
|
||
summaryM.Id = inR.Info;
|
||
|
||
if (summaryM.ApptRoomList != null && summaryM.ApptRoomList.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptRoomList)
|
||
{
|
||
item.Guid = item.Guid;
|
||
item.ApptId = summaryM.Id;
|
||
}
|
||
var irR = InsertRange(summaryM.ApptRoomList);
|
||
if (!irR.IsSuccess) throw new Exception(irR.Msg);
|
||
}
|
||
if (summaryM.ApptMeetingList != null && summaryM.ApptMeetingList.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptMeetingList)
|
||
{
|
||
item.Guid = item.Guid;
|
||
item.ApptId = summaryM.Id;
|
||
}
|
||
var irR = InsertRange(summaryM.ApptMeetingList);
|
||
if (!irR.IsSuccess) throw new Exception(irR.Msg);
|
||
}
|
||
if (summaryM.ApptCateringList != null && summaryM.ApptCateringList.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptCateringList)
|
||
{
|
||
item.Guid = item.Guid;
|
||
item.ApptId = summaryM.Id;
|
||
}
|
||
var irR = InsertRange(summaryM.ApptCateringList);
|
||
if (!irR.IsSuccess) throw new Exception(irR.Msg);
|
||
}
|
||
if (summaryM.ApptSpringList != null && summaryM.ApptSpringList.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptSpringList)
|
||
{
|
||
item.Guid = item.Guid;
|
||
item.ApptId = summaryM.Id;
|
||
}
|
||
var irR = InsertRange(summaryM.ApptSpringList);
|
||
if (!irR.IsSuccess) throw new Exception(irR.Msg);
|
||
}
|
||
if (summaryM.ApptRemarks != null && summaryM.ApptRemarks.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptRemarks)
|
||
{
|
||
item.Guid = item.Guid;
|
||
item.ApptId = summaryM.Id;
|
||
}
|
||
var irR = InsertRange(summaryM.ApptRemarks);
|
||
if (!irR.IsSuccess) throw new Exception(irR.Msg);
|
||
}
|
||
|
||
var apptAuditLog = new ApptAuditLog()
|
||
{
|
||
Type = 1,
|
||
CreateTime = now,
|
||
UserId = loginUserRes.Info.UserAccount,
|
||
ApptId = summaryM.Id.Value,
|
||
AuditorStatus = (int)EnumAuditorJncStatus.审核单预定部,
|
||
Remark = req.Remark,
|
||
};
|
||
if (req.RemarkPics != null)
|
||
{
|
||
if (req.RemarkPics.Count > 0) apptAuditLog.Pic0 = req.RemarkPics[0];
|
||
if (req.RemarkPics.Count > 1) apptAuditLog.Pic1 = req.RemarkPics[1];
|
||
if (req.RemarkPics.Count > 2) apptAuditLog.Pic2 = req.RemarkPics[2];
|
||
if (req.RemarkPics.Count > 3) apptAuditLog.Pic3 = req.RemarkPics[3];
|
||
if (req.RemarkPics.Count > 4) apptAuditLog.Pic4 = req.RemarkPics[4];
|
||
//if (req.RemarkPics.Count > 5) apptAuditLog.Pic5 = req.RemarkPics[5];
|
||
//if (req.RemarkPics.Count > 6) apptAuditLog.Pic6 = req.RemarkPics[6];
|
||
//if (req.RemarkPics.Count > 7) apptAuditLog.Pic7 = req.RemarkPics[7];
|
||
//if (req.RemarkPics.Count > 8) apptAuditLog.Pic8 = req.RemarkPics[8];
|
||
//if (req.RemarkPics.Count > 9) apptAuditLog.Pic9 = req.RemarkPics[9];
|
||
}
|
||
InsertReturnId(apptAuditLog);
|
||
|
||
Db.Ado.CommitTran();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Db.Ado.RollbackTran();
|
||
_logger.Error(ex.ToString());
|
||
return ApiResult.Failed(ex.Message);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
try
|
||
{
|
||
Db.Ado.BeginTran();
|
||
|
||
// 查看是否有确定单,如果有 改为过期确定单,并释放资源
|
||
var auditLastM = auditM.OrderByDescending(t => t.Id).First();
|
||
if (auditLastM != null)
|
||
{
|
||
string accnt = auditLastM.GrpNo;
|
||
string op_id = "xx";
|
||
var dt1 = Db.Ado.UseStoredProcedure().GetDataTable("p_yyj_gblock_cancel", new { accnt, op_id });
|
||
if (dt1.Rows.Count > 0 && dt1.Rows[0][0] != null && dt1.Rows[0][0].ToString() != "0")
|
||
{
|
||
string msg = $"创建团队失败,失败原因:{dt1.Rows[0][1]}";
|
||
_logger.Error(msg);
|
||
throw new Exception(msg);
|
||
}
|
||
}
|
||
|
||
summaryM.AuditorStatus = (int)EnumAuditorJncStatus.归档暂定单;
|
||
var upR = Update(summaryM);
|
||
if (!upR.IsSuccess) throw new Exception(upR.Msg);
|
||
|
||
// 将该订单复制一份,生成确定单,占用资料
|
||
//summaryM.CreateTime = now; // 创建时间调整为生成确定单时间,
|
||
summaryM.AuditorStatus = (int)EnumAuditorJncStatus.审核单预定部;
|
||
|
||
// 客房资源判断
|
||
if (summaryM.ApptRoomList != null)
|
||
{
|
||
foreach (ApptRoom item in summaryM.ApptRoomList)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.RoomCode))
|
||
{
|
||
string rm_type = item.RoomCode;
|
||
if (string.IsNullOrEmpty(rm_type)) rm_type = "%";
|
||
rm_type = rm_type.PadRight(3, ' ');
|
||
var _dt = Db.Ado.UseStoredProcedure().GetDataTable("p_yyj_ota_type_rsv_tend", new { rm_type, s_time = item.RoomIn, e_time = item.RoomOut.AddDays(-1) });
|
||
if (_dt == null || _dt.Rows.Count == 0) throw new Exception("已没有空的客房");
|
||
for (int i = 0; i < _dt.Rows.Count; i++)
|
||
{
|
||
int quan = Convert.ToInt32(_dt.Rows[i]["quan"]);
|
||
string type = _dt.Rows[i]["type"].ToString();
|
||
if (quan < item.RoomNum)
|
||
{
|
||
throw new Exception($"操作失败,[{item.RoomIn:yyyy-MM-dd}]房类[{type}]只剩{quan}套!");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// 会议室资源判断
|
||
if (summaryM.ApptMeetingList != null)
|
||
{
|
||
foreach (ApptMeeting item in summaryM.ApptMeetingList)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.MeetingCode))
|
||
{
|
||
List<int> groups = item.Groups.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
|
||
|
||
var any = Db.Queryable<ResInfo>().Where(t => t.Sta != "C" && t.Rescode == item.MeetingCode && t.Stime == item.MeetingTime)
|
||
.In(t => t.Sfield, groups).Any();
|
||
if (any) throw new Exception($"会议室{item.MeetingTime:yyyy-MM-dd} {item.MeetingRoom}已被占用!");
|
||
}
|
||
}
|
||
}
|
||
var user = Db.Queryable<UcLogin>().Where(t => t.OpId.Trim() == summaryM.UserId).First();
|
||
|
||
if (summaryM.ApptRoomList != null && summaryM.ApptRoomList.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptRoomList)
|
||
{
|
||
var grpno = auditLastM.GrpNo;
|
||
|
||
var log_id = summaryM.UserId; // 操作员工号(如果操作员没有软件的工号,第三方可以在迪联软件中创建一个通用的工号)
|
||
var log_ip = ""; // 操作电脑或者接口电脑的IP,可以用空字符串或者任意字符串
|
||
var arr = new DateTime(item.RoomIn.Year, item.RoomIn.Month, item.RoomIn.Day); // 抵达日期 只要日期不需要时分秒
|
||
|
||
var dep = new DateTime(item.RoomOut.Year, item.RoomOut.Month, item.RoomOut.Day); // 离开日期 只要日期不需要时分秒
|
||
|
||
if (string.IsNullOrWhiteSpace(item.RoomCode)) continue;
|
||
string type = item.RoomCode; // 房类代码,如BJ,请查看迪联酒店系统中房类的设置
|
||
var rooms = item.RoomNum; // 预留的数量,此为真实数量,如果超过酒店可用数会返回错误信息
|
||
decimal price = item.RoomPrice; // 房价
|
||
var guests = 1; // 一个房间住几个人,默认为1
|
||
var remark = item.RoomRemark; // 该预留的备注,排房时可以看到此备注
|
||
string rmcode = "RACK"; // 请按照默认的RACK填写,此为房价码
|
||
|
||
var dt = Db.Ado.UseStoredProcedure().GetDataTable("p_yyj_gblock_inter", new { log_id, log_ip, grpno, arr, dep, type, rooms, price, guests, remark, rmcode });
|
||
|
||
if (dt.Rows.Count > 0 && dt.Rows[0][0] != null && dt.Rows[0][0].ToString() == "1")
|
||
{
|
||
string msg = $"创建团队失败,失败原因:{dt.Rows[0][1]}";
|
||
_logger.Error(msg);
|
||
throw new Exception(msg);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (summaryM.ApptMeetingList != null && summaryM.ApptMeetingList.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptMeetingList)
|
||
{
|
||
string accnt = auditLastM.GrpNo; // 团队账号(创建团队时获得)
|
||
// 会议预订的日期 只要日期不需要时分秒
|
||
DateTime date = new DateTime(item.MeetingTime.Year, item.MeetingTime.Month, item.MeetingTime.Day);
|
||
|
||
if (string.IsNullOrWhiteSpace(item.MeetingCode)) continue;
|
||
string rescode = item.MeetingCode; // 会议室编号,可以从迪联软件查看,或者res_code表取对照code字段
|
||
|
||
decimal price = item.MeetingPrice; // 价格。可以从迪联软件查看,或者res_code表取price字段,该字段为预设参考价,具体订单价格以该参数为准。
|
||
|
||
string op_id = summaryM.UserId; // 操作员工号(如果操作员没有软件的工号,第三方可以在迪联软件中创建一个通用的工号
|
||
|
||
if (string.IsNullOrEmpty(item.Groups)) throw new Exception("场次不能为空"); // 场次
|
||
List<int> groupList = item.Groups.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
|
||
if (groupList.Count < 1) throw new Exception("场次不能为空");
|
||
foreach (var sfield in groupList)
|
||
{
|
||
var dt = Db.Ado.UseStoredProcedure().GetDataTable("p_yyj_grpmeet_inter", new { accnt, date, rescode, sfield, price, op_id });
|
||
if (dt.Rows.Count > 0 && dt.Rows[0][0] != null && dt.Rows[0][0].ToString() == "1")
|
||
{
|
||
string msg = $"创建团队失败,失败原因:{dt.Rows[0][1]}";
|
||
_logger.Error(msg);
|
||
throw new Exception(msg);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
summaryM.GrpNo = auditLastM.GrpNo;
|
||
var inR = InsertReturnId(summaryM);
|
||
if (!inR.IsSuccess) throw new Exception(inR.Msg);
|
||
summaryM.Id = inR.Info;
|
||
|
||
if (summaryM.ApptRoomList != null && summaryM.ApptRoomList.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptRoomList)
|
||
{
|
||
item.Guid = item.Guid;
|
||
item.ApptId = summaryM.Id;
|
||
}
|
||
var irR = InsertRange(summaryM.ApptRoomList);
|
||
if (!irR.IsSuccess) throw new Exception(irR.Msg);
|
||
}
|
||
if (summaryM.ApptMeetingList != null && summaryM.ApptMeetingList.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptMeetingList)
|
||
{
|
||
item.Guid = item.Guid;
|
||
item.ApptId = summaryM.Id;
|
||
}
|
||
var irR = InsertRange(summaryM.ApptMeetingList);
|
||
if (!irR.IsSuccess) throw new Exception(irR.Msg);
|
||
}
|
||
if (summaryM.ApptCateringList != null && summaryM.ApptCateringList.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptCateringList)
|
||
{
|
||
item.Guid = item.Guid;
|
||
item.ApptId = summaryM.Id;
|
||
}
|
||
var irR = InsertRange(summaryM.ApptCateringList);
|
||
if (!irR.IsSuccess) throw new Exception(irR.Msg);
|
||
}
|
||
if (summaryM.ApptSpringList != null && summaryM.ApptSpringList.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptSpringList)
|
||
{
|
||
item.Guid = item.Guid;
|
||
item.ApptId = summaryM.Id;
|
||
}
|
||
var irR = InsertRange(summaryM.ApptSpringList);
|
||
if (!irR.IsSuccess) throw new Exception(irR.Msg);
|
||
}
|
||
if (summaryM.ApptRemarks != null && summaryM.ApptRemarks.Count > 0)
|
||
{
|
||
foreach (var item in summaryM.ApptRemarks)
|
||
{
|
||
item.Guid = item.Guid;
|
||
item.ApptId = summaryM.Id;
|
||
}
|
||
var irR = InsertRange(summaryM.ApptRemarks);
|
||
if (!irR.IsSuccess) throw new Exception(irR.Msg);
|
||
}
|
||
|
||
var apptAuditLog = new ApptAuditLog()
|
||
{
|
||
Type = 1,
|
||
CreateTime = now,
|
||
UserId = loginUserRes.Info.UserAccount,
|
||
ApptId = summaryM.Id.Value,
|
||
AuditorStatus = (int)EnumAuditorJncStatus.审核单预定部,
|
||
Remark = req.Remark,
|
||
};
|
||
if (req.RemarkPics != null)
|
||
{
|
||
if (req.RemarkPics.Count > 0) apptAuditLog.Pic0 = req.RemarkPics[0];
|
||
if (req.RemarkPics.Count > 1) apptAuditLog.Pic1 = req.RemarkPics[1];
|
||
if (req.RemarkPics.Count > 2) apptAuditLog.Pic2 = req.RemarkPics[2];
|
||
if (req.RemarkPics.Count > 3) apptAuditLog.Pic3 = req.RemarkPics[3];
|
||
if (req.RemarkPics.Count > 4) apptAuditLog.Pic4 = req.RemarkPics[4];
|
||
//if (req.RemarkPics.Count > 5) apptAuditLog.Pic5 = req.RemarkPics[5];
|
||
//if (req.RemarkPics.Count > 6) apptAuditLog.Pic6 = req.RemarkPics[6];
|
||
//if (req.RemarkPics.Count > 7) apptAuditLog.Pic7 = req.RemarkPics[7];
|
||
//if (req.RemarkPics.Count > 8) apptAuditLog.Pic8 = req.RemarkPics[8];
|
||
//if (req.RemarkPics.Count > 9) apptAuditLog.Pic9 = req.RemarkPics[9];
|
||
}
|
||
InsertReturnId(apptAuditLog);
|
||
|
||
Db.Ado.CommitTran();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Db.Ado.RollbackTran();
|
||
_logger.Error(ex.ToString());
|
||
return ApiResult.Failed(ex.Message);
|
||
}
|
||
}
|
||
_ = await PostMsg(summaryM);
|
||
return ApiResult.Success();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 实时计算机发送消息模板
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private async Task<ApiResult> PostMsg(ApptSummary summary)
|
||
{
|
||
try
|
||
{
|
||
DateTime now = DateTime.Now;
|
||
string AppId = BaseConfig.App(new string[] { "WeChatService", "AppId" });
|
||
string Hotelid = BaseConfig.App(new string[] { "Hotelid" });
|
||
string appId = BaseConfig.App(new string[] { "WeChat", "AppId" });// 小程序的appid
|
||
var userAll = await Db.Queryable<UcLogin>().ToListAsync();
|
||
userAll = userAll.Replace();
|
||
var userCreate = userAll.Where(t => t.OpId == summary.UserId).FirstOrDefault();
|
||
if (userCreate == null) return new ApiResult { Code = 500, Msg = "用户信息不存在" };
|
||
List<string> createUserOpenid = new List<string>() { userCreate.WxServiceId };
|
||
|
||
var audimM = await Db.Queryable<ApptAuditLog>().Where(t => t.ApptId == summary.Id).OrderBy(t => t.Id, OrderByType.Desc).FirstAsync();
|
||
|
||
if (summary.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请)
|
||
{
|
||
// 发送给预定部审核人员
|
||
string jncAuditor = JncAuditor[0];
|
||
var auditorS = await Db.Queryable<ApptAuditor>().Where(t => t.OpDescript == jncAuditor).FirstAsync();
|
||
if (auditorS != null)
|
||
{
|
||
var usersPost = await Db.Queryable<UcLogin>().Where(t => t.OpGroup == auditorS.OpGroup && !string.IsNullOrEmpty(t.WxServiceId)).ToListAsync();
|
||
if (usersPost != null && usersPost.Count > 0)
|
||
{
|
||
if (AppId == "wx3f193488e04b2ed8") // 江南春
|
||
{
|
||
// 80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8 内容示例
|
||
|
||
// 审核提醒
|
||
//===========================
|
||
// 资料已提交,请尽快审核 {{first.DATA}}
|
||
// 审核内容:XX资料 审核内容:{{keyword1.DATA}} [建议标题]
|
||
// 时间:2015-06-22 {{keyword2.DATA}}
|
||
// 请尽快审核 {{remark.DATA}}
|
||
//-----------------------------
|
||
// 详情
|
||
//===========================
|
||
string first = $"{userCreate.OpName}提交了新的预订申请";
|
||
var keyword = new[] { $"{summary.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
string remark = "请尽快审核";
|
||
AizhuhotelHelper.SendTemplateMsg(usersPost.Select(t => t.WxServiceId).ToList(), "80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8", $"pages/index/index?hotelid={Hotelid}&status=2", first, remark, keyword);
|
||
}
|
||
else if (AppId == "wx2b6e92e9e0c6025f") // 香堤湾
|
||
{
|
||
string first = $"{userCreate.OpName}提交了新的预订申请";
|
||
string remark = "请尽快审核";
|
||
var tousers = usersPost.Select(t => t.WxServiceId).ToList();
|
||
|
||
if (tousers != null && tousers.Count > 0)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(appId)) return new ApiResult { Code = 500, Msg = "缺少配置参数 [AppId]!" };
|
||
|
||
foreach (var touser in tousers)
|
||
{
|
||
var json = new
|
||
{
|
||
touser = touser,
|
||
template_id = "21Qr9bf5k3UlxD3K6EBKjEnxrz8Djiw6TIu6yExMGLg",
|
||
miniprogram = new
|
||
{
|
||
appid = appId, // 小程序appId
|
||
pagepath = $"pages/index/index?hotelid={Hotelid}&status=2" // 跳转到小程序中的地址
|
||
},
|
||
topcolor = "#FF0000",
|
||
data = new
|
||
{
|
||
first = new { value = first },
|
||
keyword1 = new { value = $"{summary.BuyerTitle}" },
|
||
keyword2 = new { value = first },
|
||
remark = new { value = remark }
|
||
}
|
||
};
|
||
var msg = JsonConvert.SerializeObject(json);
|
||
AizhuhotelHelper.SendTempMsg(msg);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("消息模板未配置");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (summary.AuditorStatus == (int)EnumAuditorJncStatus.审核单预定部)
|
||
{
|
||
// 生成确定单 发消息给申请人
|
||
if (AppId == "wx3f193488e04b2ed8") // 江南春
|
||
{
|
||
string audoter = userAll.Where(t => t.OpId == audimM.UserId).FirstOrDefault()?.OpName;
|
||
string first = $"预定部{audoter}审核通过了您的预定申请";
|
||
|
||
var keyword = new[] { $"{summary.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
|
||
string remark = "";
|
||
if (!string.IsNullOrEmpty(audimM.Remark)) remark += $"审核评语[{audimM.Remark}],";
|
||
remark += "后续流程:请等待销售经理审核";
|
||
|
||
AizhuhotelHelper.SendTemplateMsg(createUserOpenid, "80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8", $"pages/index/index?hotelid={Hotelid}&status=7", first, remark, keyword);
|
||
}
|
||
else if (AppId == "wx2b6e92e9e0c6025f") // 香堤湾
|
||
{
|
||
if (createUserOpenid != null && createUserOpenid.Count > 0)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(appId)) ApiResult<WeChatLoginRes>.Failed("缺少配置参数 [AppId]!");
|
||
|
||
string audoter = userAll.Where(t => t.OpId == audimM.UserId).FirstOrDefault()?.OpName;
|
||
string first = $"预定部{audoter}审核通过了您的预定申请";
|
||
|
||
string remark = "";
|
||
if (!string.IsNullOrEmpty(audimM.Remark)) remark += $"审核评语[{audimM.Remark}],";
|
||
remark += "后续流程:请等待销售经理审核";
|
||
|
||
foreach (var createUserOpenidItem in createUserOpenid)
|
||
{
|
||
var json = new
|
||
{
|
||
touser = createUserOpenidItem,
|
||
template_id = "21Qr9bf5k3UlxD3K6EBKjEnxrz8Djiw6TIu6yExMGLg",
|
||
miniprogram = new
|
||
{
|
||
appid = appId, // 小程序appId
|
||
pagepath = $"pages/index/index?hotelid={Hotelid}&status=7" // 跳转到小程序中的地址
|
||
},
|
||
topcolor = "#FF0000",
|
||
data = new
|
||
{
|
||
first = new { value = first },
|
||
keyword1 = new { value = $"{summary.BuyerTitle}" },
|
||
keyword2 = new { value = first },
|
||
remark = new { value = remark }
|
||
}
|
||
};
|
||
var msg = JsonConvert.SerializeObject(json);
|
||
AizhuhotelHelper.SendTempMsg(msg);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("消息模板未配置");
|
||
}
|
||
|
||
// 2.向销售经理发送审核消息;
|
||
string jncAuditor = JncAuditor[1];
|
||
var auditorS = Db.Queryable<ApptAuditor>().Where(t => t.OpDescript == jncAuditor).First();
|
||
if (auditorS != null)
|
||
{
|
||
var usersPost = Db.Queryable<UcLogin>().Where(t => t.OpGroup == auditorS.OpGroup && !string.IsNullOrEmpty(t.WxServiceId)).ToList();
|
||
if (usersPost != null && usersPost.Count > 0)
|
||
{
|
||
if (AppId == "wx3f193488e04b2ed8") // 江南春
|
||
{
|
||
string first = $"{userCreate.OpName}提交了预订申请";
|
||
var keyword = new[] { $"{summary.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
string remark = "请尽快审核";
|
||
AizhuhotelHelper.SendTemplateMsg(usersPost.Select(t => t.WxServiceId).ToList(), "80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8", $"pages/index/index?hotelid={Hotelid}&status=2", first, remark, keyword);
|
||
}
|
||
else if (AppId == "wx2b6e92e9e0c6025f") // 香堤湾
|
||
{
|
||
string first = $"{userCreate.OpName}提交了预订申请";
|
||
string remark = "请尽快审核";
|
||
|
||
var tousers = usersPost.Select(t => t.WxServiceId).ToList();
|
||
if (tousers != null && tousers.Count > 0)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(appId)) ApiResult<WeChatLoginRes>.Failed("缺少配置参数 [AppId]!");
|
||
foreach (var touser in tousers)
|
||
{
|
||
var json = new
|
||
{
|
||
touser = touser,
|
||
template_id = "21Qr9bf5k3UlxD3K6EBKjEnxrz8Djiw6TIu6yExMGLg",
|
||
miniprogram = new
|
||
{
|
||
appid = appId, // 小程序appId
|
||
pagepath = $"pages/index/index?hotelid={Hotelid}&status=2" // 跳转到小程序中的地址
|
||
},
|
||
topcolor = "#FF0000",
|
||
data = new
|
||
{
|
||
first = new { value = first },
|
||
keyword1 = new { value = summary.BuyerTitle },
|
||
keyword2 = new { value = first },
|
||
remark = new { value = remark }
|
||
}
|
||
};
|
||
var msg = JsonConvert.SerializeObject(json);
|
||
AizhuhotelHelper.SendTempMsg(msg);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("消息模板未配置");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (summary.AuditorStatus == (int)EnumAuditorJncStatus.审核单销售经理)
|
||
{
|
||
// 1.向发起人发送
|
||
if (AppId == "wx3f193488e04b2ed8") // 江南春
|
||
{
|
||
string audoter = userAll.Where(t => t.OpId == audimM.UserId).FirstOrDefault()?.OpName;
|
||
string first = $"销售经理{audoter}审核通过了您的预订申请";
|
||
|
||
var keyword = new[] { $"{summary.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
|
||
string remark = "";
|
||
if (!string.IsNullOrEmpty(audimM.Remark)) remark += $"审核评语[{audimM.Remark}],";
|
||
remark += "后续流程:请等待财务经理审核";
|
||
|
||
AizhuhotelHelper.SendTemplateMsg(createUserOpenid, "80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8", $"pages/index/index?hotelid={Hotelid}&status=7", first, remark, keyword);
|
||
}
|
||
else if (AppId == "wx2b6e92e9e0c6025f") // 香堤湾
|
||
{
|
||
if (createUserOpenid != null && createUserOpenid.Count > 0)
|
||
{
|
||
string audoter = userAll.Where(t => t.OpId == audimM.UserId).FirstOrDefault()?.OpName;
|
||
string first = $"销售经理{audoter}审核通过了您的预订申请";
|
||
|
||
string remark = "";
|
||
if (!string.IsNullOrEmpty(audimM.Remark)) remark += $"审核评语[{audimM.Remark}],";
|
||
remark += "后续流程:请等待财务经理审核";
|
||
foreach (var item in createUserOpenid)
|
||
{
|
||
var json = new
|
||
{
|
||
touser = item,
|
||
template_id = "21Qr9bf5k3UlxD3K6EBKjEnxrz8Djiw6TIu6yExMGLg",
|
||
miniprogram = new
|
||
{
|
||
appid = appId, // 小程序appId
|
||
pagepath = $"pages/index/index?hotelid={Hotelid}&status=7" // 跳转到小程序中的地址
|
||
},
|
||
topcolor = "#FF0000",
|
||
data = new
|
||
{
|
||
first = new { value = first },
|
||
keyword1 = new { value = summary.BuyerTitle },
|
||
keyword2 = new { value = first },
|
||
remark = new { value = remark }
|
||
}
|
||
};
|
||
var msg = JsonConvert.SerializeObject(json);
|
||
AizhuhotelHelper.SendTempMsg(msg);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("消息模板未配置");
|
||
}
|
||
|
||
// 2.向财务经理发送审核消息;
|
||
string jncAuditor = JncAuditor[2];
|
||
var auditorS = Db.Queryable<ApptAuditor>().Where(t => t.OpDescript == jncAuditor).First();
|
||
if (auditorS != null)
|
||
{
|
||
var usersPost = Db.Queryable<UcLogin>().Where(t => t.OpGroup == auditorS.OpGroup && !string.IsNullOrEmpty(t.WxServiceId)).ToList();
|
||
if (usersPost != null && usersPost.Count > 0)
|
||
{
|
||
if (AppId == "wx3f193488e04b2ed8") // 江南春
|
||
{
|
||
string first = $"{userCreate.OpName}提交了预订申请";
|
||
var keyword = new[] { $"{summary.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
string remark = "请尽快审核";
|
||
AizhuhotelHelper.SendTemplateMsg(usersPost.Select(t => t.WxServiceId).ToList(), "80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8", $"pages/index/index?hotelid={Hotelid}&status=2", first, remark, keyword);
|
||
}
|
||
else if (AppId == "wx2b6e92e9e0c6025f") // 香堤湾
|
||
{
|
||
var tousers = usersPost.Select(t => t.WxServiceId).ToList();
|
||
if (tousers != null && tousers.Count > 0)
|
||
{
|
||
string first = $"{userCreate.OpName}提交了预订申请";
|
||
var keyword = new[] { $"{summary.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
string remark = "请尽快审核";
|
||
foreach (var touser in tousers)
|
||
{
|
||
var json = new
|
||
{
|
||
touser = touser,
|
||
template_id = "21Qr9bf5k3UlxD3K6EBKjEnxrz8Djiw6TIu6yExMGLg",
|
||
miniprogram = new
|
||
{
|
||
appid = appId, // 小程序appId
|
||
pagepath = $"pages/index/index?hotelid={Hotelid}&status=2" // 跳转到小程序中的地址
|
||
},
|
||
topcolor = "#FF0000",
|
||
data = new
|
||
{
|
||
first = new { value = first },
|
||
keyword1 = new { value = summary.BuyerTitle },
|
||
keyword2 = new { value = first },
|
||
remark = new { value = remark }
|
||
}
|
||
};
|
||
var msg = JsonConvert.SerializeObject(json);
|
||
AizhuhotelHelper.SendTempMsg(msg);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("消息模板未配置");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (summary.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务经理)
|
||
{
|
||
// 1.向发起人发送
|
||
if (AppId == "wx3f193488e04b2ed8") // 江南春
|
||
{
|
||
string audoter = userAll.Where(t => t.OpId == audimM.UserId).FirstOrDefault()?.OpName;
|
||
string first = $"财务经理{audoter}审核通过了您的预订申请";
|
||
|
||
var keyword = new[] { $"{summary.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
|
||
string remark = "";
|
||
if (!string.IsNullOrEmpty(audimM.Remark)) remark += $"审核评语[{audimM.Remark}],";
|
||
remark += "后续流程:请等待财务总监审核";
|
||
|
||
AizhuhotelHelper.SendTemplateMsg(createUserOpenid, "80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8", $"pages/index/index?hotelid={Hotelid}&status=7", first, remark, keyword);
|
||
}
|
||
else if (AppId == "wx2b6e92e9e0c6025f") // 香堤湾
|
||
{
|
||
if (createUserOpenid != null && createUserOpenid.Count > 0)
|
||
{
|
||
string audoter = userAll.Where(t => t.OpId == audimM.UserId).FirstOrDefault()?.OpName;
|
||
string first = $"财务经理{audoter}审核通过了您的预订申请";
|
||
|
||
string remark = "";
|
||
if (!string.IsNullOrEmpty(audimM.Remark)) remark += $"审核评语[{audimM.Remark}],";
|
||
remark += "后续流程:请等待财务总监审核";
|
||
foreach (var item in createUserOpenid)
|
||
{
|
||
var json = new
|
||
{
|
||
touser = item,
|
||
template_id = "21Qr9bf5k3UlxD3K6EBKjEnxrz8Djiw6TIu6yExMGLg",
|
||
miniprogram = new
|
||
{
|
||
appid = appId, // 小程序appId
|
||
pagepath = $"pages/index/index?hotelid={Hotelid}&status=7" // 跳转到小程序中的地址
|
||
},
|
||
topcolor = "#FF0000",
|
||
data = new
|
||
{
|
||
first = new { value = first },
|
||
keyword1 = new { value = summary.BuyerTitle },
|
||
keyword2 = new { value = first },
|
||
remark = new { value = remark }
|
||
}
|
||
};
|
||
var msg = JsonConvert.SerializeObject(json);
|
||
AizhuhotelHelper.SendTempMsg(msg);
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("消息模板未配置");
|
||
}
|
||
|
||
// 2.向财务总监发送审核消息;
|
||
string jncAuditor = JncAuditor[3];
|
||
var auditorS = Db.Queryable<ApptAuditor>().Where(t => t.OpDescript == jncAuditor).First();
|
||
if (auditorS != null)
|
||
{
|
||
var usersPost = Db.Queryable<UcLogin>().Where(t => t.OpGroup == auditorS.OpGroup && !string.IsNullOrEmpty(t.WxServiceId)).ToList();
|
||
if (usersPost != null && usersPost.Count > 0)
|
||
{
|
||
if (AppId == "wx3f193488e04b2ed8") // 江南春
|
||
{
|
||
string first = $"{userCreate.OpName}提交了预订申请";
|
||
var keyword = new[] { $"{summary.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
string remark = "请尽快审核";
|
||
AizhuhotelHelper.SendTemplateMsg(usersPost.Select(t => t.WxServiceId).ToList(), "80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8", $"pages/index/index?hotelid={Hotelid}&status=2", first, remark, keyword);
|
||
}
|
||
else if (AppId == "wx2b6e92e9e0c6025f") // 香堤湾
|
||
{
|
||
|
||
var tousers = usersPost.Select(t => t.WxServiceId).ToList();
|
||
if (tousers != null && tousers.Count > 0)
|
||
{
|
||
string first = $"{userCreate.OpName}提交了预订申请";
|
||
string remark = "请尽快审核";
|
||
foreach (var touser in tousers)
|
||
{
|
||
var json = new
|
||
{
|
||
touser = touser,
|
||
template_id = "21Qr9bf5k3UlxD3K6EBKjEnxrz8Djiw6TIu6yExMGLg",
|
||
miniprogram = new
|
||
{
|
||
appid = appId, // 小程序appId
|
||
pagepath = $"pages/index/index?hotelid={Hotelid}&status=2" // 跳转到小程序中的地址
|
||
},
|
||
topcolor = "#FF0000",
|
||
data = new
|
||
{
|
||
first = new { value = first },
|
||
keyword1 = new { value = summary.BuyerTitle },
|
||
keyword2 = new { value = first },
|
||
remark = new { value = remark }
|
||
}
|
||
};
|
||
var msg = JsonConvert.SerializeObject(json);
|
||
AizhuhotelHelper.SendTempMsg(msg);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("消息模板未配置");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (summary.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务总监)
|
||
{
|
||
// 1.向发起人发送
|
||
if (AppId == "wx3f193488e04b2ed8") // 江南春
|
||
{
|
||
string audoter = userAll.Where(t => t.OpId == audimM.UserId).FirstOrDefault()?.OpName;
|
||
string first = $"财务总监{audoter}审核通过了您的预订申请";
|
||
|
||
var keyword = new[] { $"{summary.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
|
||
string remark = "";
|
||
if (!string.IsNullOrEmpty(audimM.Remark)) remark += $"审核评语[{audimM.Remark}],";
|
||
remark += "后续流程:请等待总经理审核";
|
||
|
||
AizhuhotelHelper.SendTemplateMsg(createUserOpenid, "80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8", $"pages/index/index?hotelid={Hotelid}&status=7", first, remark, keyword);
|
||
}
|
||
else if (AppId == "wx2b6e92e9e0c6025f") // 香堤湾
|
||
{
|
||
if (createUserOpenid != null && createUserOpenid.Count > 0)
|
||
{
|
||
string audoter = userAll.Where(t => t.OpId == audimM.UserId).FirstOrDefault()?.OpName;
|
||
string first = $"财务总监{audoter}审核通过了您的预订申请";
|
||
|
||
string remark = "";
|
||
if (!string.IsNullOrEmpty(audimM.Remark)) remark += $"审核评语[{audimM.Remark}],";
|
||
remark += "后续流程:请等待总经理审核";
|
||
|
||
foreach (var item in createUserOpenid)
|
||
{
|
||
var json = new
|
||
{
|
||
touser = item,
|
||
template_id = "21Qr9bf5k3UlxD3K6EBKjEnxrz8Djiw6TIu6yExMGLg",
|
||
miniprogram = new
|
||
{
|
||
appid = appId, // 小程序appId
|
||
pagepath = $"pages/index/index?hotelid={Hotelid}&status=7" // 跳转到小程序中的地址
|
||
},
|
||
topcolor = "#FF0000",
|
||
data = new
|
||
{
|
||
first = new { value = first },
|
||
keyword1 = new { value = summary.BuyerTitle },
|
||
keyword2 = new { value = first },
|
||
remark = new { value = remark }
|
||
}
|
||
};
|
||
var msg = JsonConvert.SerializeObject(json);
|
||
AizhuhotelHelper.SendTempMsg(msg);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("消息模板未配置");
|
||
}
|
||
|
||
// 2.向总经理发送审核消息;
|
||
string jncAuditor = JncAuditor[4];
|
||
var auditorS = Db.Queryable<ApptAuditor>().Where(t => t.OpDescript == jncAuditor).First();
|
||
if (auditorS != null)
|
||
{
|
||
var usersPost = Db.Queryable<UcLogin>().Where(t => t.OpGroup == auditorS.OpGroup && !string.IsNullOrEmpty(t.WxServiceId)).ToList();
|
||
if (usersPost != null && usersPost.Count > 0)
|
||
{
|
||
if (AppId == "wx3f193488e04b2ed8") // 江南春
|
||
{
|
||
string first = $"{userCreate.OpName}提交了预订申请";
|
||
var keyword = new[] { $"{summary.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
string remark = "请尽快审核";
|
||
AizhuhotelHelper.SendTemplateMsg(usersPost.Select(t => t.WxServiceId).ToList(), "80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8", $"pages/index/index?hotelid={Hotelid}&status=2", first, remark, keyword);
|
||
}
|
||
else if (AppId == "wx2b6e92e9e0c6025f") // 香堤湾
|
||
{
|
||
var tousers = usersPost.Select(t => t.WxServiceId).ToList();
|
||
if (tousers != null && tousers.Count > 0)
|
||
{
|
||
string first = $"{userCreate.OpName}提交了预订申请";
|
||
var keyword = new[] { $"{summary.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
string remark = "请尽快审核";
|
||
|
||
foreach (var touser in tousers)
|
||
{
|
||
var json = new
|
||
{
|
||
touser = touser,
|
||
template_id = "21Qr9bf5k3UlxD3K6EBKjEnxrz8Djiw6TIu6yExMGLg",
|
||
miniprogram = new
|
||
{
|
||
appid = appId, // 小程序appId
|
||
pagepath = $"pages/index/index?hotelid={Hotelid}&status=2" // 跳转到小程序中的地址
|
||
},
|
||
topcolor = "#FF0000",
|
||
data = new
|
||
{
|
||
first = new { value = first },
|
||
keyword1 = new { value = summary.BuyerTitle },
|
||
keyword2 = new { value = first },
|
||
remark = new { value = remark }
|
||
}
|
||
};
|
||
var msg = JsonConvert.SerializeObject(json);
|
||
AizhuhotelHelper.SendTempMsg(msg);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("消息模板未配置");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (summary.AuditorStatus == (int)EnumAuditorJncStatus.确定单)
|
||
{
|
||
// 1.向发起人发送
|
||
if (AppId == "wx3f193488e04b2ed8") // 江南春
|
||
{
|
||
string audoter = userAll.Where(t => t.OpId == audimM.UserId).FirstOrDefault()?.OpName;
|
||
string first = $"总经理{audoter}审核通过了您的预订申请";
|
||
|
||
var keyword = new[] { $"{summary.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
|
||
string remark = "";
|
||
if (!string.IsNullOrEmpty(audimM.Remark)) remark += $"审核评语[{audimM.Remark}],";
|
||
remark += "后续流程:请团队来临前生成完成单,以便触发消息推送给相关人员";
|
||
|
||
AizhuhotelHelper.SendTemplateMsg(createUserOpenid, "80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8", $"pages/index/index?hotelid={Hotelid}&status=8", first, remark, keyword);
|
||
}
|
||
else if (AppId == "wx2b6e92e9e0c6025f") // 香堤湾
|
||
{
|
||
if (createUserOpenid != null && createUserOpenid.Count > 0)
|
||
{
|
||
string audoter = userAll.Where(t => t.OpId == audimM.UserId).FirstOrDefault()?.OpName;
|
||
string first = $"总经理{audoter}审核通过了您的预订申请";
|
||
string remark = "";
|
||
if (!string.IsNullOrEmpty(audimM.Remark)) remark += $"审核评语[{audimM.Remark}],";
|
||
remark += "后续流程:请团队来临前生成完成单,以便触发消息推送给相关人员";
|
||
|
||
foreach (var item in createUserOpenid)
|
||
{
|
||
var json = new
|
||
{
|
||
touser = item,
|
||
template_id = "21Qr9bf5k3UlxD3K6EBKjEnxrz8Djiw6TIu6yExMGLg",
|
||
miniprogram = new
|
||
{
|
||
appid = appId, // 小程序appId
|
||
pagepath = $"pages/index/index?hotelid={Hotelid}&status=8" // 跳转到小程序中的地址
|
||
},
|
||
topcolor = "#FF0000",
|
||
data = new
|
||
{
|
||
first = new { value = first },
|
||
keyword1 = new { value = summary.BuyerTitle },
|
||
keyword2 = new { value = first },
|
||
remark = new { value = remark }
|
||
}
|
||
};
|
||
var msg = JsonConvert.SerializeObject(json);
|
||
AizhuhotelHelper.SendTempMsg(msg);
|
||
}
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("消息模板未配置");
|
||
}
|
||
}
|
||
else if (summary.AuditorStatus == (int)EnumAuditorJncStatus.驳回单)
|
||
{
|
||
// 1.向发起人发送
|
||
if (AppId == "wx3f193488e04b2ed8") // 江南春
|
||
{
|
||
// 获取驳回前最后一条审核记录以推理驳回人的角色
|
||
// 因为驳回即发送信息,不做严谨判断了
|
||
var _audimM = Db.Queryable<ApptAuditLog>().Where(t => t.ApptId == summary.Id && t.Type == 1 && t.Id != audimM.Id).OrderBy(t => t.Id, OrderByType.Desc).First();
|
||
string zw = "";
|
||
|
||
switch ((EnumAuditorJncStatus)_audimM.AuditorStatus)
|
||
{
|
||
case EnumAuditorJncStatus.审核单申请:
|
||
zw = "预定部";
|
||
break;
|
||
case EnumAuditorJncStatus.审核单预定部:
|
||
zw = "销售经理";
|
||
break;
|
||
case EnumAuditorJncStatus.审核单销售经理:
|
||
zw = "财务经理";
|
||
break;
|
||
case EnumAuditorJncStatus.审核单财务经理:
|
||
zw = "财务总监";
|
||
break;
|
||
case EnumAuditorJncStatus.审核单财务总监:
|
||
zw = "总经理";
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
string audoter = userAll.Where(t => t.OpId == audimM.UserId).FirstOrDefault()?.OpName;
|
||
var first = $"{zw}{audoter}驳回了您的预订申请";
|
||
|
||
|
||
var keyword = new[] { $"{summary.BuyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
|
||
string remark = "";
|
||
if (!string.IsNullOrEmpty(audimM.Remark)) remark += $"驳回评语[{audimM.Remark}],";
|
||
remark += "后续流程:请核对信息进行修改后重新提交";
|
||
|
||
AizhuhotelHelper.SendTemplateMsg(createUserOpenid, "80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8", $"pages/index/index?hotelid={Hotelid}&status=4", first, remark, keyword);
|
||
}
|
||
else if (AppId == "wx2b6e92e9e0c6025f") // 香堤湾
|
||
{
|
||
if (createUserOpenid != null && createUserOpenid.Count > 0)
|
||
{
|
||
// 获取驳回前最后一条审核记录以推理驳回人的角色
|
||
// 因为驳回即发送信息,不做严谨判断了
|
||
var _audimM = Db.Queryable<ApptAuditLog>().Where(t => t.ApptId == summary.Id && t.Type == 1 && t.Id != audimM.Id).OrderBy(t => t.Id, OrderByType.Desc).First();
|
||
string zw = "";
|
||
|
||
switch ((EnumAuditorJncStatus)_audimM.AuditorStatus)
|
||
{
|
||
case EnumAuditorJncStatus.审核单申请:
|
||
zw = "预定部";
|
||
break;
|
||
case EnumAuditorJncStatus.审核单预定部:
|
||
zw = "销售经理";
|
||
break;
|
||
case EnumAuditorJncStatus.审核单销售经理:
|
||
zw = "财务经理";
|
||
break;
|
||
case EnumAuditorJncStatus.审核单财务经理:
|
||
zw = "财务总监";
|
||
break;
|
||
case EnumAuditorJncStatus.审核单财务总监:
|
||
zw = "总经理";
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
string audoter = userAll.Where(t => t.OpId == audimM.UserId).FirstOrDefault()?.OpName;
|
||
var first = $"{zw}{audoter}驳回了您的预订申请";
|
||
string remark = "";
|
||
if (!string.IsNullOrEmpty(audimM.Remark)) remark += $"驳回评语[{audimM.Remark}],";
|
||
remark += "后续流程:请核对信息进行修改后重新提交";
|
||
|
||
foreach (var item in createUserOpenid)
|
||
{
|
||
var json = new
|
||
{
|
||
touser = item,
|
||
template_id = "21Qr9bf5k3UlxD3K6EBKjEnxrz8Djiw6TIu6yExMGLg",
|
||
miniprogram = new
|
||
{
|
||
appid = appId, // 小程序appId
|
||
pagepath = $"pages/index/index?hotelid={Hotelid}&status=4" // 跳转到小程序中的地址
|
||
},
|
||
topcolor = "#FF0000",
|
||
data = new
|
||
{
|
||
first = new { value = first },
|
||
keyword1 = new { value = summary.BuyerTitle },
|
||
keyword2 = new { value = first },
|
||
remark = new { value = remark }
|
||
}
|
||
};
|
||
var msg = JsonConvert.SerializeObject(json);
|
||
AizhuhotelHelper.SendTempMsg(msg);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("消息模板未配置");
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
_logger.Error(ex.Message);
|
||
}
|
||
|
||
return ApiResult.Success();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 抄送消息推送
|
||
/// </summary>
|
||
/// <param name="createUserName">发起人姓名</param>
|
||
/// <param name="buyerTitle">订单标题</param>
|
||
/// <param name="wxSericeOpenId">接收人程序openid</param>
|
||
/// <param name="autoCopy">自动手动,true-自动,false-手动</param>
|
||
/// <param name="remark">手动自动备注</param>
|
||
private async Task<ApiResult> SetCopyMsg(string createUserName, string buyerTitle, string wxSericeOpenId, bool autoCopy, string remark)
|
||
{
|
||
// 收到的自动抄送的消息
|
||
try
|
||
{
|
||
await Task.Delay(1);
|
||
DateTime now = DateTime.Now;
|
||
string AppId = BaseConfig.App(new string[] { "WeChatService", "AppId" });
|
||
string Hotelid = BaseConfig.App(new string[] { "Hotelid" });
|
||
string appId = BaseConfig.App(new string[] { "WeChat", "AppId" });
|
||
if (string.IsNullOrWhiteSpace(appId)) ApiResult<WeChatLoginRes>.Failed("缺少配置参数 [AppId]!");
|
||
if (AppId == "wx3f193488e04b2ed8")
|
||
{
|
||
string first = "";
|
||
string msgremark = "";
|
||
if (autoCopy)
|
||
{
|
||
first = $"您收到一条来自{createUserName}的自动抄送预订单";
|
||
}
|
||
else
|
||
{
|
||
first = $"您收到一条来自{createUserName}的手工抄送预订单";
|
||
if (string.IsNullOrEmpty(remark))
|
||
{
|
||
msgremark += $"抄送备注[无],";
|
||
}
|
||
else
|
||
{
|
||
msgremark += $"抄送备注[{remark}],";
|
||
}
|
||
}
|
||
msgremark += "请关注订单信息";
|
||
|
||
var keyword = new[] { $"{buyerTitle}", now.ToString("yyyy-MM-dd HH:mm") };
|
||
|
||
|
||
AizhuhotelHelper.SendTemplateMsg(wxSericeOpenId, "80CnTAF5tLIPJgi6GPS2eEit-bDqFZ_IjYEeGjarQx8", $"pages/index/index?hotelid={Hotelid}&status=6", first, msgremark, keyword);
|
||
}
|
||
else if (AppId == "wx2b6e92e9e0c6025f") // 香堤湾
|
||
{
|
||
string first = "";
|
||
string msgremark = "";
|
||
if (autoCopy)
|
||
{
|
||
first = $"您收到一条来自{createUserName}的自动抄送预订单";
|
||
}
|
||
else
|
||
{
|
||
first = $"您收到一条来自{createUserName}的手工抄送预订单";
|
||
if (string.IsNullOrEmpty(remark))
|
||
{
|
||
msgremark += $"抄送备注[无],";
|
||
}
|
||
else
|
||
{
|
||
msgremark += $"抄送备注[{remark}],";
|
||
}
|
||
}
|
||
msgremark += "请关注订单信息";
|
||
var json = new
|
||
{
|
||
touser = wxSericeOpenId,
|
||
template_id = "21Qr9bf5k3UlxD3K6EBKjEnxrz8Djiw6TIu6yExMGLg",
|
||
miniprogram = new
|
||
{
|
||
appid = appId, // 小程序appId
|
||
pagepath = $"pages/index/index?hotelid={Hotelid}&status=6" // 跳转到小程序中的地址
|
||
},
|
||
topcolor = "#FF0000",
|
||
data = new
|
||
{
|
||
first = new { value = first },
|
||
keyword1 = new { value = buyerTitle },
|
||
keyword2 = new { value = first },
|
||
remark = new { value = msgremark }
|
||
}
|
||
};
|
||
var msg = JsonConvert.SerializeObject(json);
|
||
AizhuhotelHelper.SendTempMsg(msg);
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("消息模板未配置");
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
_logger.Error(ex.ToString());
|
||
}
|
||
|
||
return ApiResult.Success();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 自动抄送
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
private async Task<ApiResult> AotoCopy(int id)
|
||
{
|
||
DateTime now = DateTime.Now;
|
||
|
||
ApptSummary summary = await Db.Queryable<ApptSummary>()
|
||
.Mapper(t => t.ApptRoomList, t => t.ApptRoomList.First().ApptId)
|
||
.Mapper(t => t.ApptMeetingList, t => t.ApptMeetingList.First().ApptId)
|
||
.Mapper(t => t.ApptCateringList, t => t.ApptCateringList.First().ApptId)
|
||
.Mapper(t => t.ApptSpringList, t => t.ApptSpringList.First().ApptId)
|
||
.Mapper(t => t.ApptRemarks, t => t.ApptRemarks.First().ApptId)
|
||
.Where(t => t.Id == id && t.ApptTypeId == 2).FirstAsync();
|
||
if (summary.AuditorStatus != (int)EnumAuditorJncStatus.完成单) return new ApiResult { Code = 500, Msg = "不符合自动抄送条件" };
|
||
|
||
try
|
||
{
|
||
var userList = Db.Queryable<UcLogin>().ToList().Replace();
|
||
|
||
List<UcLogin> toSend = userList.Where(t => !SqlFunc.IsNullOrEmpty(t.Autosendcond) && t.Autosendcond.Contains("#所有部门#")).ToList();
|
||
if (summary.ApptRoomList != null && summary.ApptRoomList.Count > 0)
|
||
{
|
||
var sendTemp = userList.Where(t => !SqlFunc.IsNullOrEmpty(t.Autosendcond) && t.Autosendcond.Contains("#客房#")).ToList();
|
||
foreach (var item in sendTemp)
|
||
{
|
||
if (toSend.Where(t => t.OpId == item.OpId).Count() == 0)
|
||
{
|
||
toSend.Add(item);
|
||
}
|
||
}
|
||
}
|
||
if (summary.ApptMeetingList != null && summary.ApptMeetingList.Count > 0)
|
||
{
|
||
var sendTemp = userList.Where(t => !SqlFunc.IsNullOrEmpty(t.Autosendcond) && t.Autosendcond.Contains("#会议#")).ToList();
|
||
foreach (var item in sendTemp)
|
||
{
|
||
if (toSend.Where(t => t.OpId == item.OpId).Count() == 0)
|
||
{
|
||
toSend.Add(item);
|
||
}
|
||
}
|
||
}
|
||
if (summary.ApptCateringList != null && summary.ApptCateringList.Count > 0)
|
||
{
|
||
var sendTemp = userList.Where(t => !SqlFunc.IsNullOrEmpty(t.Autosendcond) && t.Autosendcond.Contains("#餐饮#")).ToList();
|
||
foreach (var item in sendTemp)
|
||
{
|
||
if (toSend.Where(t => t.OpId == item.OpId).Count() == 0)
|
||
{
|
||
toSend.Add(item);
|
||
}
|
||
}
|
||
}
|
||
if (summary.ApptSpringList != null && summary.ApptSpringList.Count > 0)
|
||
{
|
||
var sendTemp = userList.Where(t => !SqlFunc.IsNullOrEmpty(t.Autosendcond) && t.Autosendcond.Contains("#温泉#")).ToList();
|
||
foreach (var item in sendTemp)
|
||
{
|
||
if (toSend.Where(t => t.OpId == item.OpId).Count() == 0)
|
||
{
|
||
toSend.Add(item);
|
||
}
|
||
}
|
||
}
|
||
if (summary.ApptRemarks != null && summary.ApptRemarks.Count > 0)
|
||
{
|
||
foreach (var item in summary.ApptRemarks)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.Info))
|
||
{
|
||
var sendTemp = userList.Where(t => !SqlFunc.IsNullOrEmpty(t.Autosendcond) && t.Autosendcond.Contains($"#{item.Title}#")).ToList();
|
||
foreach (var _item in sendTemp)
|
||
{
|
||
if (toSend.Where(t => t.OpId == _item.OpId).Count() == 0)
|
||
{
|
||
toSend.Add(_item);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
if (toSend.Count > 0)
|
||
{
|
||
List<ApptAuditLog> apptAuditLogs = new List<ApptAuditLog>();
|
||
string createUserName = userList.Where(t => t.OpId == summary.UserId).FirstOrDefault()?.OpName;
|
||
foreach (var item in toSend)
|
||
{
|
||
apptAuditLogs.Add(new ApptAuditLog()
|
||
{
|
||
Type = 2,
|
||
CreateTime = now,
|
||
UserId = item.OpId,
|
||
ApptId = summary.Id.Value,
|
||
AuditorStatus = 3,
|
||
Remark = string.Empty,
|
||
Source = string.Empty
|
||
});
|
||
if (!string.IsNullOrEmpty(item.WxServiceId))
|
||
{
|
||
_ = SetCopyMsg(createUserName, summary.BuyerTitle, item.WxServiceId, true, "");
|
||
}
|
||
}
|
||
InsertRange(apptAuditLogs);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
_logger.Error(ex.Message);
|
||
}
|
||
|
||
return new ApiResult { Code = 200, Msg = "自动抄送成功" };
|
||
}
|
||
|
||
/// <summary>
|
||
/// 封装手工回复信息
|
||
/// </summary>
|
||
/// <param name="allUser">所有人员</param>
|
||
/// <param name="id">要查看的回复的主键</param>
|
||
/// <returns></returns>
|
||
private List<ReplyResp> GetReplyList(List<UcLogin> allUser, int id)
|
||
{
|
||
List<ApptAuditLog> ls = Db.Queryable<ApptAuditLog>().Where(t => t.PId == id).OrderBy(t => t.Id, OrderByType.Asc).ToList();
|
||
if (ls == null || ls.Count == 0) return null;
|
||
|
||
List<ReplyResp> list = new List<ReplyResp>();
|
||
foreach (var item in ls)
|
||
{
|
||
var userName = allUser.Where(t => t.OpId == item.UserId).FirstOrDefault()?.OpName;
|
||
int picNum = 0;
|
||
if (!string.IsNullOrEmpty(item.Pic0)) picNum += 1;
|
||
if (!string.IsNullOrEmpty(item.Pic1)) picNum += 1;
|
||
if (!string.IsNullOrEmpty(item.Pic2)) picNum += 1;
|
||
if (!string.IsNullOrEmpty(item.Pic3)) picNum += 1;
|
||
if (!string.IsNullOrEmpty(item.Pic4)) picNum += 1;
|
||
//if (!string.IsNullOrEmpty(item.Pic5)) picNum += 1;
|
||
//if (!string.IsNullOrEmpty(item.Pic6)) picNum += 1;
|
||
//if (!string.IsNullOrEmpty(item.Pic7)) picNum += 1;
|
||
//if (!string.IsNullOrEmpty(item.Pic8)) picNum += 1;
|
||
//if (!string.IsNullOrEmpty(item.Pic9)) picNum += 1;
|
||
|
||
list.Add(new ReplyResp()
|
||
{
|
||
CreateTime = item.CreateTime,
|
||
UserName = userName,
|
||
Id = item.Id,
|
||
Remark = item.Remark,
|
||
PicNum = picNum,
|
||
});
|
||
}
|
||
|
||
return list;
|
||
}
|
||
}
|
||
}
|