namespace Yw.DAL.PostgreSql
{
///
/// RepairRequestForm
///
public partial class RepairRequestForm : BaseTraceDAL, IRepairRequestForm
{
///
///
///
public override ConnectionConfig ConnectionConfig
{
get
{
return ConfigHelper.PostgreSqlConnectionConfig;
}
}
///
/// 获取最近列表
///
public List GetLastList(int Number = 1)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.OrderBy(x => x.CreateTime, OrderByType.Desc)
.Take(Number).ToList();
}
}
///
/// 获取所有待受理的数据
///
public List GetPendingList()
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => x.FormStatus == (int)eRequestStatus.Pending).ToList();
}
}
///
/// 获取待受理的数量
///
public int GetPendingCount()
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => x.FormStatus == (int)eRequestStatus.Pending).Count();
}
}
///
/// 通过 FormStatus 获取
///
public List GetByFormStatus(int FormStatus)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => x.FormStatus == FormStatus).ToList();
}
}
///
/// 通过 FormStatus 获取数量
///
public int GetCountByFormStatus(int FormStatus)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => x.FormStatus == FormStatus).Count();
}
}
///
/// 通过 EquipmentID 获取
///
public List GetByEquipmentID(long EquipmentID)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => x.EquipmentID == EquipmentID)
.OrderBy(x => x.CreateTime, OrderByType.Desc).ToList();
}
}
///
/// 通过 EquipmentIds 获取
///
public List GetByEquipmentIds(List EquipmentIds)
{
if (EquipmentIds == null || EquipmentIds.Count < 1)
{
return default;
}
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => EquipmentIds.Contains(x.EquipmentID))
.OrderBy(x => x.CreateTime, OrderByType.Desc).ToList();
}
}
///
/// 获取某日的数量
///
public int GetCountOfDay(DateTime Day)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => x.CreateTime >= Day.Date && x.CreateTime < Day.Date.AddDays(1)).Count();
}
}
///
/// 更新 FormStatus
///
public bool UpdateFormStatus(long ID, int FormStatus)
{
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
{
return db.Updateable()
.SetColumns(x => x.FormStatus == FormStatus)
.SetColumns(x => x.UpdateUserID == UserRegister.UserID)
.SetColumns(x => x.UpdateTime == DateTime.Now)
.SetColumns(x => x.UpdateUserName == UserRegister.UserName)
.Where(x => x.ID == ID)
.ExecuteCommandHasChange();
}
}
///
/// 插入一条
///
public override long Insert(Entity.RepairRequestForm entity)
{
if (string.IsNullOrEmpty(entity.FormNo))
{
var count = GetCountOfDay(entity.CreateTime) + 1;
entity.FormNo = $"R{entity.CreateTime.ToString("yyyyMMdd")}{count.ToString("000000")}";
}
entity.CreateUserID = UserRegister.UserID;
entity.CreateUserName = UserRegister.UserName;
entity.CreateTime = DateTime.Now;
using (var db = new SqlSugarClient(ConnectionConfig))
{
try
{
db.BeginTran();
var formId = db.Insertable(entity).ExecuteReturnSnowflakeId();
if (formId < 1)
{
db.RollbackTran();
return default;
}
var entity4Log = new Entity.RepairRequestLog();
entity4Log.FormID = formId;
entity4Log.OperateType = (int)eRequestOperation.Create;
entity4Log.OperateContent = "创建";
entity4Log.OperateTime = entity.CreateTime;
entity4Log.OperateUserID = entity.CreateUserID;
entity4Log.OperateUserName = entity.CreateUserName;
entity4Log.OperateNote = "创建";
var logId = db.Insertable(entity4Log).ExecuteReturnSnowflakeId();
if (logId < 1)
{
db.RollbackTran();
return default;
}
db.CommitTran();
return formId;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 插入
///
public long Insert(Entity.RepairRequestForm entity, List entity4FileList)
{
if (string.IsNullOrEmpty(entity.FormNo))
{
var count = GetCountOfDay(entity.CreateTime) + 1;
entity.FormNo = $"R{entity.CreateTime.ToString("yyyyMMdd")}{count.ToString("000000")}";
}
entity.CreateUserID = UserRegister.UserID;
entity.CreateUserName = UserRegister.UserName;
entity.CreateTime = DateTime.Now;
using (var db = new SqlSugarClient(ConnectionConfig))
{
try
{
db.BeginTran();
var formId = db.Insertable(entity).ExecuteReturnSnowflakeId();
if (formId < 1)
{
db.RollbackTran();
return default;
}
var entity4Log = new Entity.RepairRequestLog();
entity4Log.FormID = formId;
entity4Log.OperateType = (int)eRequestOperation.Create;
entity4Log.OperateContent = "创建";
entity4Log.OperateTime = entity.CreateTime;
entity4Log.OperateUserID = entity.CreateUserID;
entity4Log.OperateUserName = entity.CreateUserName;
entity4Log.OperateNote = "创建";
var logId = db.Insertable(entity4Log).ExecuteReturnSnowflakeId();
if (logId < 1)
{
db.RollbackTran();
return default;
}
if (entity4FileList != null && entity4FileList.Count > 0)
{
entity4FileList.ForEach(x => x.FormID = formId);
var fileIds = db.Insertable(entity4FileList).ExecuteReturnSnowflakeIdList();
if (fileIds == null || fileIds.Count != entity4FileList.Count)
{
db.RollbackTran();
return default;
}
}
db.CommitTran();
return formId;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 驳回
///
public bool Reject(long ID, string Reason)
{
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
{
try
{
var dtNow = DateTime.Now;
db.BeginTran();
var bol = db.Updateable()
.SetColumns(x => x.FormStatus == (int)eRequestStatus.Rejected)
.SetColumns(x => x.UpdateUserID == UserRegister.UserID)
.SetColumns(x => x.UpdateTime == dtNow)
.SetColumns(x => x.UpdateUserName == UserRegister.UserName)
.Where(x => x.ID == ID)
.ExecuteCommandHasChange();
if (!bol)
{
db.RollbackTran();
return false;
}
var entity4Log = new Entity.RepairRequestLog();
entity4Log.FormID = ID;
entity4Log.OperateType = (int)eRequestOperation.Reject;
entity4Log.OperateContent = "驳回";
entity4Log.OperateTime = dtNow;
entity4Log.OperateUserID = UserRegister.UserID;
entity4Log.OperateUserName = UserRegister.UserName;
entity4Log.OperateNote = Reason;
var logId = db.Insertable(entity4Log).ExecuteReturnSnowflakeId();
if (logId < 1)
{
db.RollbackTran();
return false;
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 受理
///
public bool Accept(long ID, string Note)
{
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
{
try
{
var dtNow = DateTime.Now;
db.BeginTran();
var entity = db.Queryable().Where(x => x.ID == ID).First();
if (entity == null)
{
db.RollbackTran();
return false;
}
if (entity.FormStatus != (int)eRequestStatus.Pending)
{
db.RollbackTran();
return false;
}
#region 更新报修单
var bol = db.Updateable()
.SetColumns(x => x.FormStatus == (int)eRequestStatus.Accepted)
.SetColumns(x => x.UpdateUserID == UserRegister.UserID)
.SetColumns(x => x.UpdateTime == dtNow)
.SetColumns(x => x.UpdateUserName == UserRegister.UserName)
.Where(x => x.ID == ID)
.ExecuteCommandHasChange();
if (!bol)
{
db.RollbackTran();
return false;
}
#endregion
#region 生成报修日志
var entity4Log = new Entity.RepairRequestLog();
entity4Log.FormID = ID;
entity4Log.OperateType = (int)eRequestOperation.Accept;
entity4Log.OperateContent = "受理";
entity4Log.OperateTime = dtNow;
entity4Log.OperateUserID = UserRegister.UserID;
entity4Log.OperateUserName = UserRegister.UserName;
entity4Log.OperateNote = Note;
var logId = db.Insertable(entity4Log).ExecuteReturnSnowflakeId();
if (logId < 1)
{
db.RollbackTran();
return false;
}
#endregion
#region 生成维修单
var taskCount = db.Queryable()
.Where(x => x.CreateTime >= dtNow.Date && x.CreateTime < dtNow.Date.AddDays(1)).Count();
var entity4Task = new Entity.RepairTaskForm();
entity4Task.EquipmentID = entity.EquipmentID;
entity4Task.RequestID = entity.ID;
entity4Task.FormNo = $"T{dtNow.ToString("yyyyMMdd")}{taskCount.ToString("000000")}";
entity4Task.FormName = entity.FormName;
entity4Task.FormStatus = (int)eTaskStatus.Accepted;
entity4Task.Faq = entity.Faq;
entity4Task.Question = entity.Question;
entity4Task.Urgency = entity.Urgency;
entity4Task.Address = entity.Address;
entity4Task.Location = entity.Location;
entity4Task.CreateUserID = UserRegister.UserID;
entity4Task.CreateTime = dtNow;
entity4Task.CreateUserName = UserRegister.UserName;
var taskId = db.Insertable(entity4Task).ExecuteReturnSnowflakeId();
if (taskId < 1)
{
db.RollbackTran();
return false;
}
#endregion
#region 生成维修单日志
var entity4TaskLog = new Entity.RepairTaskLog();
entity4TaskLog.FormID = taskId;
entity4TaskLog.OperateType = (int)eTaskOperation.Accept;
entity4TaskLog.OperateContent = "受理";
entity4TaskLog.OperateTime = dtNow;
entity4TaskLog.OperateUserID = UserRegister.UserID;
entity4TaskLog.OperateUserName = UserRegister.UserName;
entity4TaskLog.OperateNote = Note;
var taskLogId = db.Insertable(entity4TaskLog).ExecuteReturnSnowflakeId();
if (taskLogId < 1)
{
db.RollbackTran();
return false;
}
#endregion
#region 生成维修文件
var requestFileList = db.Queryable().Where(x => x.FormID == ID).ToList();
if (requestFileList != null && requestFileList.Count > 0)
{
var entity4LogFileList = new List();
foreach (var requestFile in requestFileList)
{
var entity4LogFile = new Entity.RepairTaskLogFile();
entity4LogFile.FormID = taskId;
entity4LogFile.LogID = taskLogId;
entity4LogFile.FileName = requestFile.FileName;
entity4LogFile.FileSuffix = requestFile.FileSuffix;
entity4LogFile.StorageHouse = requestFile.StorageHouse;
entity4LogFile.StorageCode = requestFile.StorageCode;
entity4LogFile.SortCode = requestFile.SortCode;
entity4LogFile.Description = requestFile.Description;
entity4LogFileList.Add(entity4LogFile);
}
var logFileIdList = db.Insertable(entity4LogFileList).ExecuteReturnSnowflakeIdList();
if (logFileIdList == null || logFileIdList.Count != entity4LogFileList.Count)
{
db.RollbackTran();
return false;
}
}
#endregion
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 获取我的模糊分页列表
///
public List GetMyFluzzyPageList
(
long CreateUserID,
int? FormStatus,
int? Urgency,
DateTime? StartTime,
DateTime? EndTime,
int PageIndex,
int PageSize,
ref int Total
)
{
if (PageIndex < 1)
PageIndex = 1;
if (PageSize < 1)
PageSize = 1;
var exp = Expressionable.Create();
exp.And(x => x.CreateUserID == CreateUserID);
exp.AndIF(FormStatus.HasValue, x => x.FormStatus == FormStatus.Value);
exp.AndIF(Urgency.HasValue, x => x.Urgency == Urgency.Value);
exp.AndIF(StartTime.HasValue, x => x.CreateTime >= StartTime.Value);
exp.AndIF(EndTime.HasValue, x => x.CreateTime <= EndTime.Value);
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(exp.ToExpression())
.OrderBy(x => x.CreateTime, OrderByType.Desc)
.ToPageList(PageIndex, PageSize, ref Total); ;
}
}
///
/// 获取模糊分页列表
///
public List GetFluzzyPageList
(
List EquipmentIds,
long? CreateUserID,
int? FormStatus,
int? Urgency,
string FormNo,
DateTime? StartTime,
DateTime? EndTime,
int PageIndex,
int PageSize,
ref int Total
)
{
if (PageIndex < 1)
PageIndex = 1;
if (PageSize < 1)
PageSize = 1;
var exp = Expressionable.Create();
exp.AndIF(EquipmentIds != null && EquipmentIds.Count > 0, x => EquipmentIds.Contains(x.EquipmentID));
exp.AndIF(CreateUserID.HasValue, x => x.CreateUserID == CreateUserID);
exp.AndIF(FormStatus.HasValue, x => x.FormStatus == FormStatus.Value);
exp.AndIF(Urgency.HasValue, x => x.Urgency == Urgency.Value);
exp.AndIF(!string.IsNullOrEmpty(FormNo), x => x.FormNo.Contains(FormNo));
exp.AndIF(StartTime.HasValue, x => x.CreateTime >= StartTime.Value);
exp.AndIF(EndTime.HasValue, x => x.CreateTime <= EndTime.Value);
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(exp.ToExpression())
.OrderBy(x => x.CreateTime, OrderByType.Desc)
.ToPageList(PageIndex, PageSize, ref Total); ;
}
}
///
/// 获取待派单分页列表
///
public List> GetJustAccepedPageList
(
List EquipmentIds,
long? CreateUserID,
int? Urgency,
string FormNo,
DateTime? StartTime,
DateTime? EndTime,
int PageIndex,
int PageSize,
ref int Total
)
{
if (PageIndex < 1)
PageIndex = 1;
if (PageSize < 1)
PageSize = 1;
var exp = Expressionable.Create();
exp.AndIF(EquipmentIds != null && EquipmentIds.Count > 0, (x, y) => EquipmentIds.Contains(x.EquipmentID));
exp.AndIF(CreateUserID.HasValue, (x, y) => x.CreateUserID == CreateUserID);
exp.And((x, y) => x.FormStatus == (int)eRequestStatus.Accepted);
exp.AndIF(Urgency.HasValue, (x, y) => x.Urgency == Urgency.Value);
exp.AndIF(!string.IsNullOrEmpty(FormNo), (x, y) => x.FormNo.Contains(FormNo));
exp.AndIF(StartTime.HasValue, (x, y) => x.CreateTime >= StartTime.Value);
exp.AndIF(EndTime.HasValue, (x, y) => x.CreateTime <= EndTime.Value);
exp.And((x, y) => y.FormStatus == (int)eTaskStatus.Accepted);
using (var db = new SqlSugarClient(ConnectionConfig))
{
var list = db.Queryable()
.InnerJoin((x, y) => y.RequestID != null && x.ID == y.RequestID.Value)
.Where(exp.ToExpression())
.OrderBy(x => x.CreateTime, OrderByType.Desc)
.Select((x, y) => new { x, y })
.ToPageList(PageIndex, PageSize, ref Total);
return list?.Select(x => new Tuple(x.x, x.y)).ToList();
}
}
}
}