using Cowain.Base.DBContext; using Cowain.Base.Models; using Cowain.Base.Services; using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; using Plugin.Cowain.Wcs.IServices; using Plugin.Cowain.Wcs.Models.Dto; using Plugin.Cowain.Wcs.ViewModels; namespace Plugin.Cowain.Wcs.Services; public class ProcessFlow6180Service : BaseService, IProcessFlow6180Service { public ProcessFlow6180Service(SqlDbContext dbContext) : base(dbContext) { } public async Task AddAsync(int processId, List flows) { if (flows == null || flows.Count == 0) return ResultModel.Error("流程数据不能为空"); try { var DbSet = _dBContext.GetDbSet(); var entities = new List(); foreach (var f in flows) { entities.Add(new ProcessFlow6180Dto { ProcessId = processId, Priority = f.Priority, FromStationId1 = f.FromStationId1, ToStationId1 = f.ToStationId1, FromStatus1 = f.FromStatus1, ToStatus1 = f.ToStatus1, FromStationId2 = f.FromStationId2, ToStationId2 = f.ToStationId2, FromStatus2 = f.FromStatus2, ToStatus2 = f.ToStatus2, Action = f.Action }); } await DbSet.AddRangeAsync(entities); var count = await _dBContext.SaveChangesAsync(); return count > 0 ? ResultModel.Success("流程数据添加成功") : ResultModel.Error("流程数据添加失败"); } catch (Exception ex) { return ResultModel.Error($"添加流程失败: {ex.Message}"); } } public async Task UpdateAsync(int processId, List flows) { if (flows == null || flows.Count == 0) return ResultModel.Error("流程数据不能为空"); try { var dbSet = _dBContext.GetDbSet(); foreach (var f in flows) { // 只根据Id和ProcessId查找 var entity = await dbSet.FirstOrDefaultAsync(x => x.Id == f.Id && x.ProcessId == processId); if (entity != null) { // 更新已有 entity.Priority = f.Priority; entity.FromStationId1 = f.FromStationId1; entity.ToStationId1 = f.ToStationId1; entity.FromStatus1 = f.FromStatus1; entity.ToStatus1 = f.ToStatus1; entity.FromStationId2 = f.FromStationId2; entity.ToStationId2 = f.ToStationId2; entity.FromStatus2 = f.FromStatus2; entity.ToStatus2 = f.ToStatus2; entity.Action = f.Action; } else { // 新增 var newEntity = new ProcessFlow6180Dto { ProcessId = processId, Priority = f.Priority, FromStationId1 = f.FromStationId1, ToStationId1 = f.ToStationId1, FromStatus1 = f.FromStatus1, ToStatus1 = f.ToStatus1, FromStationId2 = f.FromStationId2, ToStationId2 = f.ToStationId2, FromStatus2 = f.FromStatus2, ToStatus2 = f.ToStatus2, Action = f.Action }; await dbSet.AddAsync(newEntity); } } var count = await _dBContext.SaveChangesAsync(); return count >= 0 ? ResultModel.Success("流程更新成功") : ResultModel.Error("流程更新失败"); } catch (Exception ex) { return ResultModel.Error($"更新流程失败: {ex.Message}"); } } public async Task DeleteAsync(int processId) { try { var dbSet = _dBContext.GetDbSet(); var entitie = await dbSet.Where(x => x.Id == processId).FirstOrDefaultAsync(); if (entitie == null) { return ResultModel.Success("未找到要删除的流程数据"); } dbSet.Remove(entitie); var count = await _dBContext.SaveChangesAsync(); return count > 0 ? ResultModel.Success("流程数据删除成功") : ResultModel.Error("流程数据删除失败"); } catch (Exception ex) { return ResultModel.Error($"删除流程失败: {ex.Message}"); } } public async Task DeleteByIdAsync(int id) { try { var dbSet = _dBContext.GetDbSet(); var existingModel = await dbSet.FirstOrDefaultAsync(x => x.Id == id); if (existingModel == null) { return ResultModel.Error("process no exists"); } dbSet.Remove(existingModel); var count = await _dBContext.SaveChangesAsync(); return count > 0 ? ResultModel.Success("流程数据删除成功") : ResultModel.Error("流程数据删除失败"); } catch (Exception ex) { return ResultModel.Error($"删除流程失败: {ex.Message}"); } } public async Task> GetAllAsync() { var DbSet = _dBContext.GetDbSet(); var data = await DbSet.ToListAsync(); var result = new List(); foreach (var x in data) { // 1号流程 if (x.FromStationId1 != 0 || x.ToStationId1 != 0 || !string.IsNullOrEmpty(x.FromStatus1) || !string.IsNullOrEmpty(x.ToStatus1)) { result.Add(new ProcessFlow6180ViewModel { Id = x.Id, ProcessId = x.ProcessId, Priority = x.Priority, FromStationId1 = x.FromStationId1, ToStationId1 = x.ToStationId1, FromStatus1 = x.FromStatus1, ToStatus1 = x.ToStatus1, FromStationId2 = x.FromStationId2, ToStationId2 = x.ToStationId2, FromStatus2 = x.FromStatus2, ToStatus2 = x.ToStatus2, Action = x.Action }); } } return result; } public async Task<(List, int totals)> GetAllAsync(int pageIndex, int pageSize) { var DbSet = _dBContext.GetDbSet(); var data = await DbSet.ToListAsync(); var result = new List(); foreach (var x in data) { if (x.FromStationId1 != 0 || x.ToStationId1 != 0 || !string.IsNullOrEmpty(x.FromStatus1) || !string.IsNullOrEmpty(x.ToStatus1)) { result.Add(new ProcessFlow6180ViewModel { Id = x.Id, ProcessId = x.ProcessId, Priority = x.Priority, FromStationId1 = x.FromStationId1, ToStationId1 = x.ToStationId1, FromStatus1 = x.FromStatus1, ToStatus1 = x.ToStatus1, FromStationId2 = x.FromStationId2, ToStationId2 = x.ToStationId2, FromStatus2 = x.FromStatus2, ToStatus2 = x.ToStatus2, Action = x.Action }); } } var paged = result.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); return (paged, result.Count); } public async Task<(List, int totals)> GetAllAsync(int pageIndex, int pageSize, int? processId) { var DbSet = _dBContext.GetDbSet(); IQueryable query; if (processId.HasValue && await DbSet.AnyAsync(x => x.ProcessId == processId)) { query = DbSet.Where(x => x.ProcessId == processId); } else { query = DbSet; } var data = await query.OrderBy(x => x.Id).ToListAsync(); var result = new List(); foreach (var x in data) { if (x.FromStationId1 != 0 || x.ToStationId1 != 0 || !string.IsNullOrEmpty(x.FromStatus1) || !string.IsNullOrEmpty(x.ToStatus1)) { result.Add(new ProcessFlow6180ViewModel { Id = x.Id, ProcessId = x.ProcessId, Priority = x.Priority, FromStationId1 = x.FromStationId1, ToStationId1 = x.ToStationId1, FromStatus1 = x.FromStatus1, ToStatus1 = x.ToStatus1, FromStationId2 = x.FromStationId2, ToStationId2 = x.ToStationId2, FromStatus2 = x.FromStatus2, ToStatus2 = x.ToStatus2, Action = x.Action }); } } var paged = result.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); return (paged, result.Count); } }