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
{
///
/// 江南春模式
/// 2025-05-12 现在使用的审核流程模式
///
public class ApptRepoJNC : DbContext, IApptRepoJNC
{
private readonly log4net.ILog _logger = log4net.LogManager.GetLogger(typeof(ApptRepoJNC));
///
/// "预定部", "销售经理", "财务经理", "财务总监", "总经理"
///
static string[] JncAuditor = new string[] { "预定部", "销售经理", "财务经理", "财务总监", "总经理" };
// 销售 91-王应哲-123,预定部 92-曹青青-123,销售经理 TEST-123,财务经理 WJ-123,财务总监 LJJ-123
IApptLogRepo _ApptLog;
public ApptRepoJNC(IApptLogRepo apptLog)
{
_ApptLog = apptLog;
}
// ---- 增
///
/// 创建暂订单
///
///
///
public ApiResult AddApptSummary(AddSummaryJncReq req)
{
DateTime now = DateTime.Now;
req = req.Replace();
/* 数据校验 */
if (req == null) return ApiResult.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.Failed("操作无效,预订详情全为空!");
}
ApiResult loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
string ApptType = BaseConfig.App(new string[] { "ApptType" });
if (ApptType != "2") return ApiResult.Failed("操作失败,预订类型不正确!");
var user = Db.Queryable().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();
if (req.ApptRoomList != null && req.ApptRoomList.Count > 0)
{
List roomTypeList = Db.Queryable().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.Failed("添加失败,房类代码不存在!");
if (item.RoomNum < 1) return ApiResult.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();
if (req.ApptMeetingList != null && req.ApptMeetingList.Count > 0)
{
List resCodeList = Db.Queryable().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.Failed("添加失败,无效的会议厅代码!");
item.MeetingRoom = resCode.Descript1;
}
// 场次数据判断
if (string.IsNullOrEmpty(item.Groups)) return ApiResult.Failed($"添加失败,会议室{item.MeetingRoom}未设置场次!");
List groups = new List();
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.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();
if (req.ApptCateringList != null && req.ApptCateringList.Count > 0)
{
foreach (ApptCatering item in req.ApptCateringList)
{
if (item.CateringType != 0 && item.CateringType != 1) return ApiResult.Failed($"用餐类型不正确!");
// 场次数据判断
if (string.IsNullOrEmpty(item.Groups)) return ApiResult.Failed($"添加失败,餐厅{item.CateringRoom}未设置场次!");
List groups = new List();
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.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();
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();
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.Success("", appt.Id.Value);
}
// ---- 改
///
/// 修改暂订单
///
///
///
public ApiResult 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.Failed("操作无效,预订详情全为空!");
}
var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
var summaryM = Db.Queryable().Where(t => t.Id == req.Id).First();
if (summaryM == null || summaryM.ApptTypeId != 2) return ApiResult.Failed("未获取订单数据!");
if (summaryM.UserId != loginUserRes.Info.UserAccount) return ApiResult.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()
.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().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(roomList.Select(t => t.Id.Value).ToList());
}
}
else
{
List roomTypeList = Db.Queryable().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().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();
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().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(meetList.Select(t => t.Id.Value).ToList());
}
}
else
{
List resCodeList = Db.Queryable().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().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();
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 groups = new List();
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();
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 groups = new List();
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().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(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().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();
foreach (var item in addList)
{
if (item.CateringType != 0 && item.CateringType != 1) return ApiResult.Failed($"用餐类型不正确!");
// 场次数据判断
if (string.IsNullOrEmpty(item.Groups)) return ApiResult.Failed($"添加失败,餐厅{item.CateringRoom}未设置场次!");
List groups = new List();
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.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();
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.Failed($"用餐类型不正确!");
// 场次数据判断
if (string.IsNullOrEmpty(item.Groups)) return ApiResult.Failed($"添加失败,餐厅{item.CateringRoom}未设置场次!");
List groups = new List();
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.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().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(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().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();
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();
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().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(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().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();
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();
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.Failed(ex.Message);
}
return ApiResult.Success(info: summaryM.Id.Value);
}
///
/// 申请审核单
///
///
///
public async Task 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().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()
.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();
}
///
/// 取消OA单
///
///
///
///
/// 未占用资源时,只有发起人可以取消;
/// 未用资源后,只有预定部可以取消;
///
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().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().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()
.SetColumns(t => new GrpInfo { Sta = "C" })
.Where(t => t.Accnt == summaryM.GrpNo)
.ExecuteCommand();
}
summaryM.AuditorStatus = (int)EnumAuditorJncStatus.归档资源单;
Update(summaryM);
var sm = Db.Queryable().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().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.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();
}
///
/// 审核通过
///
///
///
public async Task AuditorSummary(ApplyOrderReq req)
{
req = req.Replace();
if (req.RemarkPics != null && req.RemarkPics.Count > 5)
{
return ApiResult.Failed("操作失败,最多只可上传5张图片!");
}
ApptSummary summaryM = await Db.Queryable()
.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 = null;
if (req.AccountDes == "@@@自动@@@") // 2025-05-14 总经理审核通过后,自动完成发起人的 生成完成单操作流程
{
loginUserRes = ApiResult.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((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()
});
}
return ApiResult.Success();
}
///
/// 被驳回
///
///
///
public async Task 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()
.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((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();
}
///
/// 手动抄送
///
///
///
public async Task ManualCopy(ApptSendReq req)
{
DateTime now = DateTime.Now;
var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDES);
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
var summaryM = GetById(req.ApptId);
if (summaryM == null) return ApiResult.Failed("订单不存在!");
if (req.ToUserAccounts == null || req.ToUserAccounts.Length <= 0) return ApiResult.Failed("操作失败,未选择抄送人!");
var userList = await Db.Queryable().Where(t => t.Locked == "F").In(t => t.OpId, req.ToUserAccounts).ToListAsync().Replace();
if (userList.Count != req.ToUserAccounts.Length)
{
List notUser = new List();
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 ls = new List();
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();
}
///
/// 信息回复
///
///
///
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().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();
}
}
// ---- 查
///
/// 根据订单主键获取实体
///
///
///
public ApiResult GetSummaryModel(SummaryJncModelReq req)
{
ApiResult loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
ApptSummary summaryM = Db.Queryable()
.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.Success(string.Empty, null);
// 如果不是正常单子返回 暂定单
if (summaryM.AuditorStatus == (int)EnumAuditorJncStatus.归档暂定单 || summaryM.AuditorStatus == (int)EnumAuditorJncStatus.归档资源单)
{
summaryM = Db.Queryable()
.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(summaryM);
var user = Db.Queryable().Where(t => t.OpId == re.UserId).First();
re.UserName = user?.OpName;
return ApiResult.Success(string.Empty, re);
}
public ApiResult> 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()
{
PageIndex = req.PageIndex,
PageSize = req.PageSize,
Total = total,
Data = new List()
};
var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDES);
if (!loginUserRes.IsSuccess) return ApiResult>.Failed(loginUserRes.Msg);
var _summarys = Db.Queryable().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>.Success(info: reList);
//}
// 审核员
List apptIdShList = new List();
if (req.Menu == 1) // 待我审核的
{
var myGroupM = Db.Queryable().Where(t => t.OpGroup == loginUserRes.Info.UserGroup).First();
if (myGroupM == null) return ApiResult>.Success(info: reList);
if (myGroupM.OpDescript == JncAuditor[0]) // 当前审核员是 预定部
{
apptIdShList = Db.Queryable()
.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.审核单申请).Select(t => t.Id.Value).ToList();
}
else if (myGroupM.OpDescript == JncAuditor[1])
{
apptIdShList = Db.Queryable()
.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.审核单预定部).Select(t => t.Id.Value).ToList();
}
else if (myGroupM.OpDescript == JncAuditor[2])
{
apptIdShList = Db.Queryable()
.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.审核单销售经理).Select(t => t.Id.Value).ToList();
}
else if (myGroupM.OpDescript == JncAuditor[3])
{
apptIdShList = Db.Queryable()
.Where(t => t.AuditorStatus == (int)EnumAuditorJncStatus.审核单财务经理).Select(t => t.Id.Value).ToList();
}
else if (myGroupM.OpDescript == JncAuditor[4])
{
apptIdShList = Db.Queryable()
.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()
.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()
.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>.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 detailList = new List();
if (summarys != null && summarys.Count > 0)
{
List users = Db.Queryable().ToList();
foreach (var item in summarys)
{
var model = RegexHelper.AutoCopy(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>.Success(string.Empty, reList);
}
///
/// 获取审批流程
///
///
///
public ApiResult AuditorLogTree(SummaryJncModelReq req)
{
if (JncAuditor.Length != 5) return ApiResult.Failed("审核配置无效!");
AuditorLogReq logRe = new AuditorLogReq
{
Authority = 0,
UpdateStatus = 0,
SubmitStatus = 0,
SumbitFinish = 0,
SumbitCancel = 0,
AuditorLog = new List(),
};
ApiResult loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
if (!loginUserRes.IsSuccess) return ApiResult.Failed(loginUserRes.Msg);
try
{
ApptSummary summaryM = Db.Queryable()
.Where(t => t.Id == req.Id && t.ApptTypeId == 2).First(); // 当前订单实体
var idList = Db.Queryable()
.Where(t => t.Guid == summaryM.Guid).Select(t => t.Id.Value).ToList(); // 当前订单的所有副本
var logL = Db.Queryable()
.Where(t => idList.Contains(t.ApptId)).OrderBy(t => t.Id, OrderByType.Asc).ToList(); // 当前订单副本的所有日志记录
var audotorL = Db.Queryable().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().ToList().Replace(); // 所人有员信息
var createUserM = userL.Where(t => t.OpId == summaryM.UserId).FirstOrDefault(); // 发起人
if (createUserM == null) return ApiResult.Failed("获取发起人失败!");
// var allReplys = Db.Queryable().Where(t => t.Type == 3).ToList(); // 所有回复的内容 [包含图片,查询很慢]
// 已操作的流程日志
List statusList = new List();
foreach (var item in logL)
{
var opNameM = userL.Where(t => t.OpId == item.UserId).FirstOrDefault(); // 审核人实体
var OpName = opNameM?.OpName;
var info = new List()
{
$"操作时间:{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 picList = new List();
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 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
{
$"操作时间:{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
{
$"操作时间:{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
{
$"操作时间:{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(),
PicList = new List(),
};
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() { $"可操作人员:{userSH}", },
PicList = new List(),
});
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() { $"可操作人员:{userSH}", },
PicList = new List(),
});
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() { $"可操作人员:{userSH}", },
PicList = new List(),
});
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() { $"可操作人员:{userSH}", },
PicList = new List(),
});
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() { $"可操作人员:{userSH}", },
PicList = new List(),
});
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() { $"可操作人员:{createUserM.OpName}", "操作提示:请在时间来临时,与客户确定后点击完成,以便将该OA信息推送给相关人员。" },
PicList = new List(),
});
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() { $"可操作人员:{createUserM.OpName}", "操作提示:请编辑重新提交或取消订单。" },
PicList = new List(),
});
}
}
}
return ApiResult.Success(info: logRe);
}
catch (Exception ex)
{
return ApiResult.Failed(ex.Message);
}
}
///
/// 订单数据差异
///
///
///
///
///
public ApiResult> Disparity(SummaryJncModelReq req)
{
List list = new List();
ApiResult loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
if (!loginUserRes.IsSuccess) return ApiResult>.Failed(loginUserRes.Msg);
string summaryGuid = Db.Queryable().Where(t => t.Id == req.Id && t.ApptTypeId == 2).First()?.Guid;
if (string.IsNullOrEmpty(summaryGuid)) return ApiResult>.Failed("订单不存在");
List summaryAll = Db.Queryable().Where(t => t.Guid == summaryGuid).ToList();
if (summaryAll.Count <= 0)
{
return ApiResult>.Failed("订单不存在");
}
else if (summaryAll.Count == 1)
{
list.Add(new DisparityReq
{
Title = "创建新的暂订单",
Time = summaryAll[0].CreateTime.Value,
Info = new List(),
});
return ApiResult>.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 equalStr = new List();
foreach (var curSum in summaryL2)
{
if (baseSummary == null)
{
list.Add(new DisparityReq
{
Title = "首次生成确认单",
Time = curSum.CreateTime.Value,
Info = new List(),
});
baseSummary = curSum;
continue;
}
List infoList = new List();
#region 主体对比
equalStr = new List();
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();
var baseRoomList = Db.Queryable().Where(t => t.ApptId == baseSummary.Id).ToList();
var curRoomList = Db.Queryable().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();
var baseMeetList = Db.Queryable().Where(t => t.ApptId == baseSummary.Id).ToList();
var curMeetList = Db.Queryable().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();
var baseCaterList = Db.Queryable().Where(t => t.ApptId == baseSummary.Id).ToList();
var curCaterList = Db.Queryable().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();
var baseSpringList = Db.Queryable().Where(t => t.ApptId == baseSummary.Id).ToList();
var curSpringList = Db.Queryable().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();
var baseRemarkList = Db.Queryable().Where(t => t.ApptId == baseSummary.Id).ToList();
var curRemarkList = Db.Queryable().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();
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>.Success(info: list);
}
///
/// 返回回复中的图片列表
///
///
public ApiResult> GetReplyPicList(SummaryJncModelReq req)
{
ApiResult loginUserRes = BaseRepo.DECLoginInfo(req.AccountDes);
if (!loginUserRes.IsSuccess) return ApiResult>.Failed(loginUserRes.Msg);
var apptAuditLogM = Db.Queryable().Where(t => t.Id == req.Id).First();
if (apptAuditLogM == null) return ApiResult>.Success();
List list = new List();
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>.Success(info: list);
}
// ---- 私有
///
/// 预定部对预定单进行审批通过 【新的订单替换原来的订单】
///
///
private async Task 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()
.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((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()
.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()
.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 groups = item.Groups.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
var any = Db.Queryable().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().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 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 groups = item.Groups.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
var any = Db.Queryable().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().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 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();
}
///
/// 实时计算机发送消息模板
///
///
private async Task 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().ToListAsync().Replace();
var userCreate = userAll.Where(t => t.OpId == summary.UserId).FirstOrDefault();
if (userCreate == null) return new ApiResult { Code = 500, Msg = "用户信息不存在" };
List createUserOpenid = new List() { userCreate.WxServiceId };
var audimM = await Db.Queryable().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().Where(t => t.OpDescript == jncAuditor).FirstAsync();
if (auditorS != null)
{
var usersPost = await Db.Queryable().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.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().Where(t => t.OpDescript == jncAuditor).First();
if (auditorS != null)
{
var usersPost = Db.Queryable().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.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().Where(t => t.OpDescript == jncAuditor).First();
if (auditorS != null)
{
var usersPost = Db.Queryable().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().Where(t => t.OpDescript == jncAuditor).First();
if (auditorS != null)
{
var usersPost = Db.Queryable().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().Where(t => t.OpDescript == jncAuditor).First();
if (auditorS != null)
{
var usersPost = Db.Queryable().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().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().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();
}
///
/// 抄送消息推送
///
/// 发起人姓名
/// 订单标题
/// 接收人程序openid
/// 自动手动,true-自动,false-手动
/// 手动自动备注
private async Task 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