namespace Yw.DAL.SQLite { /// /// RepairTaskForm /// public partial class RepairTaskForm : BaseTraceDAL, IRepairTaskForm { /// /// /// public override ConnectionConfig ConnectionConfig { get { return ConfigHelper.SQLiteConnectionConfig; } } /// /// 通过 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(); } } } }