You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
4.9 KiB
C#

using Aspose.Cells;
using AutoMapper;
5 months ago
using Microsoft.Extensions.Caching.Memory;
using SqlSugar;
using System;
using System.Collections.Generic;
5 months ago
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Txgy.RBS.DbModel.Models;
using Txgy.RBS.DTO;
5 months ago
using Txgy.RBS.Framework;
using Txgy.RBS.Framework.Api;
using Txgy.RBS.IServices;
namespace Txgy.RBS.Services
{
public class ProjectInfoService : BaseService, IProjectInfoService
{
private readonly IMapper _iMapper;
5 months ago
private readonly ProcessManagerService _processManager;
private readonly IMemoryCache _cache;
5 months ago
public ProjectInfoService(ISqlSugarClient client, IMapper iMapper, ProcessManagerService processManager) : base(client)
{
this._iMapper = iMapper;
5 months ago
this._processManager = processManager;
}
public ApiResult AddProjectInfo(ProjectInfoDTO project)
{
try
{
_Client.Ado.BeginTran();
var projectInfo = _iMapper.Map<project_info>(project);
//project_id要手动赋值
projectInfo.project_id= _Client.Queryable<project_info>().Max(p=>p.project_id)+1;
projectInfo.station_file.project_id= projectInfo.project_id;
projectInfo.time_tab.project_id = projectInfo.project_id;
var pro = _Client.InsertNav(projectInfo).Include(p => p.station_file).ThenInclude(t => t.stations)
.Include(time => time.time_tab).ExecuteCommand();
_Client.Ado.CommitTran();
}
catch (Exception ex)
{
_Client.Ado.RollbackTran();
return new ApiResult() { Message = $"添加失败,{ex}" };
}
return new ApiResult();
}
public ApiResult DeleteProjectInfo(int id)
{
var res = _Client.DeleteNav<project_info>(p => p.id == id).Include(p => p.station_file).ThenInclude(t => t.stations)
5 months ago
.Include(time => time.time_tab).ExecuteCommand();
if (res)
{
return new ApiResult();
}
return new ApiResult() { Message = "删除失败" };
}
public List<ProjectInfoDTO> GetAllProjectInfo()
{
var projects = _Client.Queryable<project_info>().Includes(x => x.station_file, t=>t.stations)
5 months ago
.Includes(ti=>ti.time_tab).ToList();
var projectDTOs= _iMapper.Map<List<ProjectInfoDTO>>(projects);
return projectDTOs;
}
public ProjectUsedDTO GetCurrentProjectUsed()
{
var curProject = _Client.Queryable<project_used>().First();
var projectUse=_iMapper.Map<ProjectUsedDTO>(curProject);
return projectUse;
}
5 months ago
public ApiResult UpdateProjectInfo(ProjectInfoDTO project)
{
project_info projectInfo = _iMapper.Map<project_info>(project);
var res = _Client.UpdateNav(projectInfo).Include(p => p.station_file).ThenInclude(t => t.stations)
5 months ago
.Include(time => time.time_tab).ExecuteCommand();
if (res)
{
return new ApiResult();
}
return new ApiResult() { Message = "更新失败" };
}
public ProjectInfoDTO GetProjectInfo(int id)
{
var projectInfo = _Client.Queryable<project_info>().Where(p => p.project_id == id).Includes(p=>p.station_file, s=>s.stations).Includes(p=>p.time_tab).ToList();
ProjectInfoDTO projectInfoDTO = _iMapper.Map<project_info, ProjectInfoDTO>(projectInfo[0]);
return projectInfoDTO;
}
5 months ago
public ApiResult UpdateCurrentProjectUsed(ProjectUsedDTO projectUsed)
{
var pro=_iMapper.Map<project_used>(projectUsed);
var res= _Client.Updateable<project_used>(pro).ExecuteCommand();
if (res>0)
{
return new ApiResult();
}
return new ApiResult() { Message = "更新失败" };
5 months ago
}
5 months ago
public ApiResult StartProject(string projectName, ProcessConfig processConfig)
{
var res = _processManager.StartProject(projectName, processConfig);
return res;
}
public ApiResult StopProject(string projectName)
{
var res = _processManager.StopProject(projectName);
return res;
}
5 months ago
public ApiResult GetState(string projectName, int id)
{
return _processManager.GetState(projectName, id);
}
public ApiResult ExportCSV(string fileName, List<StationDTO> stations)
{
5 months ago
return _processManager.ExportCSV(fileName, stations);
}
5 months ago
}
}