namespace Yw.DAL.PostgreSql
{
///
/// RepairTaskForm
///
public partial class RepairTaskForm : BaseTraceDAL, IRepairTaskForm
{
///
///
///
public override ConnectionConfig ConnectionConfig
{
get
{
return ConfigHelper.PostgreSqlConnectionConfig;
}
}
///
/// 通过 RequestID 获取
///
public List GetByRequestID(long RequestID)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => x.RequestID != null && x.RequestID.Value == RequestID)
.OrderBy(x => x.CreateTime, OrderByType.Desc)
.ToList();
}
}
///
/// 通过 RequestIds 获取
///
public List GetByRequestIds(List RequestIds)
{
if (RequestIds == null || RequestIds.Count < 1)
return default;
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => x.RequestID != null && RequestIds.Contains(x.RequestID.Value))
.OrderBy(x => x.CreateTime, OrderByType.Desc)
.ToList();
}
}
///
/// 获取数量
///
public int GetCount()
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable().Count();
}
}
///
/// 获取所有未验收的数据
///
public List GetUnCheckedList()
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => x.FormStatus < (int)eTaskStatus.Succeed)
.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)
.ExecuteCommand() > 0;
}
}
///
/// 派单
///
public bool Assign(long ID, long RepairUserID, string RepairUserName, string Note)
{
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
{
try
{
var dt = DateTime.Now;
db.BeginTran();
var bol = db.Updateable()
.SetColumns(x => x.FormStatus == (int)eTaskStatus.Assigned)
.SetColumns(x => x.RepairUserID == RepairUserID)
.SetColumns(x => x.RepairUserName == RepairUserName)
.SetColumns(x => x.UpdateUserID == UserRegister.UserID)
.SetColumns(x => x.UpdateTime == dt)
.SetColumns(x => x.UpdateUserName == UserRegister.UserName)
.Where(x => x.ID == ID)
.ExecuteCommand() > 0;
if (!bol)
{
db.RollbackTran();
return false;
}
var entity4Log = new Entity.RepairTaskLog();
entity4Log.FormID = ID;
entity4Log.OperateType = (int)eTaskOperation.Assign;
entity4Log.OperateContent = "派单";
entity4Log.OperateTime = dt;
entity4Log.OperateUserID = UserRegister.UserID;
entity4Log.OperateUserName = UserRegister.UserName;
entity4Log.OperateNote = Note;
var logId = db.Insertable(entity4Log).ExecuteReturnSnowflakeId();
if (logId < 1)
{
db.RollbackTran();
return false;
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 接单
///
public bool Receive(long ID, string Note)
{
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
{
try
{
var dtNow = DateTime.Now;
db.BeginTran();
var bol = db.Updateable()
.SetColumns(x => x.FormStatus == (int)eTaskStatus.Received)
.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.RepairTaskLog();
entity4Log.FormID = ID;
entity4Log.OperateType = (int)eTaskOperation.Receive;
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;
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 开工
///
public bool Start(long ID, string Note, List entity4FileList)
{
using (var 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)eTaskStatus.Received)
{
db.RollbackTran();
return false;
}
var bol = db.Updateable()
.SetColumns(x => x.FormStatus == (int)eTaskStatus.Started)
.SetColumns(x => x.UpdateUserID == UserRegister.UserID)
.SetColumns(x => x.UpdateTime == dtNow)
.SetColumns(x => x.UpdateUserName == UserRegister.UserName)
.Where(x => x.ID == ID)
.ExecuteCommand() > 0;
if (!bol)
{
db.RollbackTran();
return false;
}
var entity4Log = new Entity.RepairTaskLog();
entity4Log.FormID = ID;
entity4Log.OperateType = (int)eTaskOperation.Start;
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;
}
if (entity4FileList != null && entity4FileList.Count > 0)
{
entity4FileList.ForEach(x =>
{
x.FormID = ID;
x.LogID = logId;
});
var fileIds = db.Insertable(entity4FileList).ExecuteReturnSnowflakeIdList();
if (fileIds == null || fileIds.Count != entity4FileList.Count)
{
db.RollbackTran();
return false;
}
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 暂停
///
public bool Pause(long ID, string Note, List entity4FileList)
{
using (var 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)eTaskStatus.Paused)
{
db.RollbackTran();
return false;
}
if (entity.FormStatus < (int)eTaskStatus.Started)
{
db.RollbackTran();
return false;
}
if (entity.FormStatus >= (int)eTaskStatus.Finished)
{
db.RollbackTran();
return false;
}
var bol = db.Updateable()
.SetColumns(x => x.FormStatus == (int)eTaskStatus.Paused)
.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.RepairTaskLog();
entity4Log.FormID = ID;
entity4Log.OperateType = (int)eTaskOperation.Pause;
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;
}
if (entity4FileList != null && entity4FileList.Count > 0)
{
entity4FileList.ForEach(x =>
{
x.FormID = ID;
x.LogID = logId;
});
var fileIds = db.Insertable(entity4FileList).ExecuteReturnSnowflakeIdList();
if (fileIds == null || fileIds.Count != entity4FileList.Count)
{
db.RollbackTran();
return false;
}
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 重新开工
///
public bool Restart(long ID, string Note, List entity4FileList)
{
using (var 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)eTaskStatus.Paused)
{
db.RollbackTran();
return false;
}
var bol = db.Updateable()
.SetColumns(x => x.FormStatus == (int)eTaskStatus.Restarted)
.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.RepairTaskLog();
entity4Log.FormID = ID;
entity4Log.OperateType = (int)eTaskOperation.Restart;
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;
}
if (entity4FileList != null && entity4FileList.Count > 0)
{
entity4FileList.ForEach(x =>
{
x.FormID = ID;
x.LogID = logId;
});
var fileIds = db.Insertable(entity4FileList).ExecuteReturnSnowflakeIdList();
if (fileIds == null || fileIds.Count != entity4FileList.Count)
{
db.RollbackTran();
return false;
}
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 完工
///
public bool Finish(long ID, string Note, List entity4FileList)
{
using (var 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)eTaskStatus.Started && entity.FormStatus != (int)eTaskStatus.Restarted)
{
db.RollbackTran();
return false;
}
var bol = db.Updateable()
.SetColumns(x => x.FormStatus == (int)eTaskStatus.Finished)
.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.RepairTaskLog();
entity4Log.FormID = ID;
entity4Log.OperateType = (int)eTaskOperation.Finish;
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;
}
if (entity4FileList != null && entity4FileList.Count > 0)
{
entity4FileList.ForEach(x =>
{
x.FormID = ID;
x.LogID = logId;
});
var fileIds = db.Insertable(entity4FileList).ExecuteReturnSnowflakeIdList();
if (fileIds == null || fileIds.Count != entity4FileList.Count)
{
db.RollbackTran();
return false;
}
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 验收通过
///
public bool Success(long ID, string Note)
{
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
{
try
{
var dtNow = DateTime.Now;
db.BeginTran();
var bol = db.Updateable()
.SetColumns(x => x.FormStatus == (int)eTaskStatus.Succeed)
.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.RepairTaskLog();
entity4Log.FormID = ID;
entity4Log.OperateType = (int)eTaskOperation.Success;
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;
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 获取模糊列表
///
public List> GetFluzzyList
(
List EquipmentIds,
long? RepairUserID,
int? FormStatus,
int? Urgency,
string FormNo,
DateTime? StartTime,
DateTime? EndTime
)
{
var exp = Expressionable.Create();
exp.AndIF(EquipmentIds != null && EquipmentIds.Count > 0, (x, y) => EquipmentIds.Contains(x.EquipmentID));
exp.AndIF(RepairUserID.HasValue, (x, y) => x.RepairUserID.Value == RepairUserID.Value);
exp.AndIF(FormStatus.HasValue, (x, y) => x.FormStatus == FormStatus.Value);
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);
using (var db = new SqlSugarClient(ConnectionConfig))
{
var list = db.Queryable()
.LeftJoin((x, y) => x.RequestID == y.ID)
.Where(exp.ToExpression())
.OrderBy(x => x.CreateTime, OrderByType.Desc)
.Select((x, y) => new { x, y })
.ToList();
return list?.Select(x => new Tuple(x.x, x.y)).ToList();
}
}
///
/// 获取分页列表
///
public List> GetPageList
(
List EquipmentIds,
long? RepairUserID,
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, y) => EquipmentIds.Contains(x.EquipmentID));
exp.AndIF(RepairUserID.HasValue, (x, y) => x.RepairUserID.Value == RepairUserID.Value);
exp.AndIF(FormStatus.HasValue, (x, y) => x.FormStatus == FormStatus.Value);
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);
using (var db = new SqlSugarClient(ConnectionConfig))
{
var list = db.Queryable()
.LeftJoin((x, y) => x.RequestID == y.ID)
.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();
}
}
///
/// 获取进行中的分页列表
///
public List> GetProgressPageList
(
List EquipmentIds,
long? RepairUserID,
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(RepairUserID.HasValue, (x, y) => x.RepairUserID.Value == RepairUserID.Value);
exp.And((x, y) => x.FormStatus >= (int)eTaskStatus.Received && x.FormStatus < (int)eTaskStatus.Finished);
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);
using (var db = new SqlSugarClient(ConnectionConfig))
{
var list = db.Queryable()
.LeftJoin((x, y) => x.RequestID == y.ID)
.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();
}
}
///
/// 获取已完成的分页列表
///
public List> GetHasFinishedPageList
(
List EquipmentIds,
long? RepairUserID,
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(RepairUserID.HasValue, (x, y) => x.RepairUserID.Value == RepairUserID.Value);
exp.And((x, y) => x.FormStatus >= (int)eTaskStatus.Finished);
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);
using (var db = new SqlSugarClient(ConnectionConfig))
{
var list = db.Queryable()
.LeftJoin((x, y) => x.RequestID == y.ID)
.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();
}
}
}
}