Files
WCS/Plugins/Wcs/Plugin.Cowain.Wcs/Services/6180/ProcessFlow6180Service.cs
2026-03-02 09:13:29 +08:00

258 lines
9.5 KiB
C#

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<ResultModel> AddAsync(int processId, List<ProcessFlow6180ViewModel> flows)
{
if (flows == null || flows.Count == 0)
return ResultModel.Error("流程数据不能为空");
try
{
var DbSet = _dBContext.GetDbSet<ProcessFlow6180Dto>();
var entities = new List<ProcessFlow6180Dto>();
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<ResultModel> UpdateAsync(int processId, List<ProcessFlow6180ViewModel> flows)
{
if (flows == null || flows.Count == 0)
return ResultModel.Error("流程数据不能为空");
try
{
var dbSet = _dBContext.GetDbSet<ProcessFlow6180Dto>();
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<ResultModel> DeleteAsync(int processId)
{
try
{
var dbSet = _dBContext.GetDbSet<ProcessFlow6180Dto>();
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<ResultModel> DeleteByIdAsync(int id)
{
try
{
var dbSet = _dBContext.GetDbSet<ProcessFlow6180Dto>();
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<List<ProcessFlow6180ViewModel>> GetAllAsync()
{
var DbSet = _dBContext.GetDbSet<ProcessFlow6180Dto>();
var data = await DbSet.ToListAsync();
var result = new List<ProcessFlow6180ViewModel>();
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<ProcessFlow6180ViewModel>, int totals)> GetAllAsync(int pageIndex, int pageSize)
{
var DbSet = _dBContext.GetDbSet<ProcessFlow6180Dto>();
var data = await DbSet.ToListAsync();
var result = new List<ProcessFlow6180ViewModel>();
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<ProcessFlow6180ViewModel>, int totals)> GetAllAsync(int pageIndex, int pageSize, int? processId)
{
var DbSet = _dBContext.GetDbSet<ProcessFlow6180Dto>();
IQueryable<ProcessFlow6180Dto> 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<ProcessFlow6180ViewModel>();
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);
}
}