using AutoMapper; using LinqKit; using Ropin.Inspection.Common.Accessor.Interface; using Ropin.Inspection.Model; using Ropin.Inspection.Model.Entities; using Ropin.Inspection.Repository; using Ropin.Inspection.Repository.Interface; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using Ropin.Inspection.Model.ViewModel; namespace Ropin.Inspection.Service { public class TmtnDevOpsService : ITmtnDevOpsService { private readonly ITmtnDevOpsRepository _repository; private readonly ITmtnDevOpsRecordAppRepository _tmtnDevOpsAppRepository; private readonly ITmtnDevOpsRecordRepository _tmtnDevOpsRecordRepository; private readonly IMapper _mapper; private readonly IClaimsAccessor _claims; public TmtnDevOpsService(IClaimsAccessor claims, ITmtnDevOpsRecordRepository tmtnDevOpsRecordRepository, ITmtnDevOpsRepository repository, ITmtnDevOpsRecordAppRepository tmtnDevOpsAppRepository, IMapper mapper) { _repository = repository; _mapper = mapper; _claims = claims; _tmtnDevOpsAppRepository = tmtnDevOpsAppRepository; _tmtnDevOpsRecordRepository = tmtnDevOpsRecordRepository; } public async Task GetRecords30DaysStatisticsAsync(string storeCode) { var pagedList = await _repository.GetRecords30DaysStatisticsAsync(storeCode); TispRecord30DaysStatisticsViewModel model = new TispRecord30DaysStatisticsViewModel(); object[] normal = pagedList.Select(d => d.Normal).ToArray(); object[] abnormal = pagedList.Select(d => d.Abnormal).ToArray();//.ForEach(a => empIds += a.Id + ","); string[] specificDay = pagedList.Select(d => d.SpecificDay).ToArray(); model.AbnormalArray = abnormal; model.NormalArray = normal; model.SpecificDayArray = specificDay; return model; } public async Task> GetRecords30DaysStatisticsFullScreenAsync(string storeCode) { var pagedList = await _repository.GetRecords30DaysStatisticsAsync(storeCode); if (null == pagedList || !pagedList.Any()) { IEnumerable recordItemDetail = null; return await Task.FromResult(recordItemDetail); } var q = from b in pagedList select new FullScreenRecordItem { x = b.SpecificDay, y = Convert.ToString(b.Total) }; return q; } public async Task> GetDevOpsFullScreenByDevIdAsync(DevOpsItemSearchModel searchModel) { var pagedList = await _repository.GetDevOpsFullScreenByDevIdAsync(searchModel); if (null == pagedList || pagedList.First() == null) { IEnumerable recordItemDetail = null; return await Task.FromResult(recordItemDetail); } return pagedList; } public async Task> GetDevRepairFullScreenByDevIdAsync(DevOpsItemSearchModel searchModel) { var pagedList = await _repository.GetDevRepairFullScreenByDevIdAsync(searchModel); if (null == pagedList || pagedList.First() == null) { IEnumerable recordItemDetail = null; return await Task.FromResult(recordItemDetail); } return pagedList; } /// /// 大屏维保记录添加点检记录 /// /// /// public async Task> GetISPRecordAsync(DevOpsItemSearchModel searchModel) { var pagedList = await _repository.GetISPRecordAsync(searchModel); if (null == pagedList || pagedList.First() == null) { IEnumerable recordItemDetail = null; return await Task.FromResult(recordItemDetail); } return pagedList; } public async Task GetDevOpsCountFullScreenByDevIdAsync(DevOpsItemSearchModel searchModel) { var pagedList = await _repository.GetDevOpsFullScreenByDevIdAsync(searchModel); if (null == pagedList || pagedList.First() == null) { return new RepairStatistics() { Approval = 0, Confirm = 0, RepairOn = 0, Complete = 0, Cancel = 0, RepairRework = 0, RepairCompleted =0, }; } return new RepairStatistics() { Approval = pagedList.Where(x => x.Status == 1)?.Count(), Confirm = pagedList.Where(x => x.Status == 2)?.Count(), RepairOn = pagedList.Where(x => x.Status == 3)?.Count(), Complete = pagedList.Where(x => x.Status == 4)?.Count(), Cancel = pagedList.Where(x => x.Status == 5)?.Count(), RepairRework = pagedList.Where(x => x.Status == 6)?.Count(), RepairCompleted = pagedList.Where(x => x.Status == 7)?.Count(), }; //List devOpsPic = new List //{ // new DevOpsPic { Name = "approval", pagedList.Where(x => x.C_Status == "审批中")?.Count() }, // new DevOpsPic { "confirm", pagedList.Where(x => x.C_Status == "确认运维")?.Count() }, // new DevOpsPic { "repairOn", pagedList.Where(x => x.C_Status == "运维中")?.Count() }, // new DevOpsPic { "complete", pagedList.Where(x => x.C_Status == "完成运维")?.Count() }, // new DevOpsPic { "cancel", pagedList.Where(x => x.C_Status == "取消运维")?.Count() }, // new DevOpsPic { "repairRework", pagedList.Where(x => x.C_Status == "维保返工")?.Count() }, // new DevOpsPic { "complete", pagedList.Where(x => x.C_Status == "维保完成确认")?.Count() } //}; } public async Task GetDevRepairCountFullScreenByDevIdAsync(DevOpsItemSearchModel searchModel) { var pagedList = await _repository.GetDevRepairFullScreenByDevIdAsync(searchModel); if (null == pagedList || pagedList.First() == null) { return new RepairStatistics() { Approval = 0, Confirm = 0, RepairOn = 0, Complete = 0, Cancel = 0, RepairRework = 0, RepairCompleted = 0, }; } return new RepairStatistics() { Approval = pagedList.Where(x => x.Status == 1)?.Count(), Confirm = pagedList.Where(x => x.Status == 2)?.Count(), RepairOn = pagedList.Where(x => x.Status == 3)?.Count(), Complete = pagedList.Where(x => x.Status == 4)?.Count(), Cancel = pagedList.Where(x => x.Status == 5)?.Count(), RepairRework = pagedList.Where(x => x.Status == 6)?.Count(), RepairCompleted = pagedList.Where(x => x.Status == 7)?.Count(), }; } public async Task CreateOneAsync(TmtnDevOpsViewModel viewModel) { var content = _mapper.Map(viewModel); content.C_ID = Guid.NewGuid().ToString(); content.C_CreateBy = _claims.ApiUserId; content.D_CreateOn = DateTime.Now; content.C_Status = "1"; _repository.Create(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("创建失败"); } } public async Task CreateDevOpsAsync(TmtnDevOpsViewModel content) { TMTN_DevOps record = new TMTN_DevOps(); record.C_Name = content.C_Name; record.C_SpotCode = content.C_SpotCode; record.C_Remark = content.C_Remark; record.C_ID = Guid.NewGuid().ToString(); record.C_CreateBy = _claims.ApiUserId; record.D_CreateOn = DateTime.Now; record.C_Status = "1"; //string itemId = Guid.NewGuid().ToString(); //await _tmtnDevOpsRecordRepository.CreateOneAsync(new TMTN_DevOpsRecord //{ // C_ID = itemId, // C_RepairCode = record.C_ID, // C_RepairRecord = content.C_RepairContent, // C_Remark = content.C_Remark, // C_CreateBy = _claims.ApiUserId, // D_CreateOn = DateTime.Now, // C_Status = "1" //}); //await _tmtnDevOpsAppRepository.SaveAsync(); //if (null != content.FilePaths && content.FilePaths.Any()) //{ // foreach (string imgPath in content.FilePaths) // { // await _tmtnDevOpsAppRepository.CreateRangeAsync(new List{ new TMTN_RepairOrderItemApp // { // C_ID = Guid.NewGuid().ToString(), // C_RepairOrderItemCode = record.C_ID, //record.C_ID后期调整,itemId // C_Name = "故障上报记录图片", // C_Url = imgPath, // //C_Type = "1", // C_Remark = "", // C_CreateBy = _claims.ApiUserId, // D_CreateOn = DateTime.Now, // C_Status = "1" // }, new TMTN_RepairOrderItemApp // { // C_ID = Guid.NewGuid().ToString(), // C_RepairOrderItemCode = itemId, //record.C_ID后期调整,itemId // C_Name = "故障上报记录图片", // C_Url = imgPath, // //C_Type = "1", // C_Remark = "", // C_CreateBy = _claims.ApiUserId, // D_CreateOn = DateTime.Now, // C_Status = "1" // }}); // } //} //_repository.Create(record); //var result = await _repository.SaveAsync(); //if (!result) //{ // throw new Exception("创建失败"); //} if (null != content.FilePaths && content.FilePaths.Any()) { foreach (string imgPath in content.FilePaths) { await _tmtnDevOpsAppRepository.CreateOneAsync(new TMTN_DevOpsRecordApp { C_ID = Guid.NewGuid().ToString(), C_DevOpsContentCode = record.C_ID, C_Name = "运维工单记录", C_Url = imgPath, C_Type = "1", C_Remark = "", C_CreateBy = _claims.ApiUserId, D_CreateOn = DateTime.Now, C_Status = "1" }); var resultItemImage = await _tmtnDevOpsAppRepository.SaveAsync(); if (!resultItemImage) { throw new Exception("创建失败"); } } } _repository.Create(record); var result = await _repository.SaveAsync(); if (!result) { record = null; throw new Exception("创建失败"); } return record; } public async Task DeleteAsync(Guid id) { var content = await _repository.GetByIdAsync(id.ToString()); if (content == null) { throw new Exception("数据库中没有此数据"); } //_repository.Delete(content); //var result = await _repository.SaveAsync(); content.C_LastUpdatedBy = _claims.ApiUserId; content.D_LastUpdatedOn = DateTime.Now; content.C_Status = "0"; _repository.Update(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("删除失败"); } } public async Task DeleteAsync(string code) { var items = await _repository.GetByConditionAsync(C => C.C_ID == code); var content = items.FirstOrDefault(); if (content == null) { throw new Exception("没有此数据"); } content.C_LastUpdatedBy = _claims.ApiUserId; content.D_LastUpdatedOn = DateTime.Now; content.C_Status = "0"; _repository.Update(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("删除失败"); } } public async Task> GetAllAsync() { var pagedList = await _repository.GetAllAsync(); var contentDtoList = _mapper.Map>(pagedList.Where(i => i.C_Status == "1").ToList()); return contentDtoList.ToList(); } public async Task> GetConditionAsync(TmtnDevOpsSearchModel searchModel) { var predicate = PredicateBuilder.New(true);//查询条件,推荐后台使用这种方式灵活筛选 #region 添加条件查询 //predicate = predicate.And(i => i.C_Status.Equals("1")); if (!string.IsNullOrEmpty(searchModel.C_Status)) { predicate = predicate.And(i => i.C_Status.Equals(searchModel.C_Status)); } if (!string.IsNullOrEmpty(searchModel.C_SpotCode)) { predicate = predicate.And(i => i.C_SpotCode.Equals(searchModel.C_SpotCode)); } if (!string.IsNullOrEmpty(searchModel.C_ID)) { predicate = predicate.And(i => i.C_ID.Equals(searchModel.C_ID)); } if (!string.IsNullOrEmpty(searchModel.C_Name)) { predicate = predicate.And(i => i.C_Name.Contains(searchModel.C_Name)); } #endregion var list = await _repository.GetPageAsync(predicate, "C_Name,-D_CreateOn", searchModel.IsPagination, searchModel.PageIndex, searchModel.PageSize); searchModel.TotalCount = list.Totals; var dtoList = _mapper.Map, List>(list.Rows); foreach (var item in dtoList) { var devStoreList = await _tmtnDevOpsAppRepository.GetByConditionAsync(x => x.C_DevOpsContentCode == item.C_ID); item.FilePaths = devStoreList.Select(x => x.C_Url).ToList(); } return dtoList; } public async Task> GetDevOpsWithImageAsync(TmtnDevOpsOrderSearchModel searchModel) { var content = await _repository.GetDevOpsWithImageAsync(searchModel); return content; } public async Task GetByIdAsync(Guid id) { var content = await _repository.GetByIdAsync(id.ToString()); var contentDto = _mapper.Map(content); return contentDto; } public async Task GetByIdAsync(string id) { var content = await _repository.GetByIdAsync(id.ToString()); return content; } public async Task UpdateAsync(string code, TmtnDevOpsUpdateModel updateModel) { var items = await _repository.GetByConditionAsync(C => C.C_ID == code); var content = items.FirstOrDefault(); if (content == null) { throw new Exception("没有此数据"); } content.C_ExamineBy = _claims.ApiUserId; content.C_ExamineOn = DateTime.Now; content.C_LastUpdatedBy = _claims.ApiUserId; content.D_LastUpdatedOn = DateTime.Now; content.C_Status = updateModel.C_Status; //_mapper.Map(updateModel, content, typeof(TmtnDevOpsUpdateModel), typeof(TMTN_DevOps)); _repository.Update(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("更新失败"); } } public Task UpdateOneAsync(TmtnDevOpsViewModel viewModel, params string[] fields) { throw new NotImplementedException(); } public Task IsExistAsync(Guid id) { throw new NotImplementedException(); } public Task> GetByConditionAsync(Expression> expression) { throw new NotImplementedException(); } public Task UpdateAsync(string code, TpntAreaUpdateModel updateModel) { throw new NotImplementedException(); } public Task> GetConditionAsync(TpntAreaSearchModel searchModel) { throw new NotImplementedException(); } } }