using AutoMapper;
using Cksoft.Data;
using Cksoft.Data.Repository;
using Cksoft.Unity;
using DllEapCommon.NPOI;
using DllEapDal.OFILM;
using DllEapEntity;
using DllEapEntity.Dtos;
using DllEapEntity.Dtos.Export;
using DllEapEntity.OFILM;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DllEapBll.OFILM
{
///
/// 机台上线维护
///
[Authorize]
[ApiController]
[Route("eap/api/[controller]/[action]")]
public class MacRecipeController : ControllerBase
{
private readonly string connStr = "eapslave";
private IMapper _mapper;
public MacRecipeController(IMapper mapper)
{
_mapper = mapper;
}
///
/// 列表
///
///
///
///
///
///
///
[HttpGet]
public LayuiModel Get(string filter, int pageIndex = 1, int pageSize = 10, string sortField = "macCode", string sortOrder = "ascend")
{
if (sortOrder == "descend")
{
sortOrder = "desc";
}
else
{
sortOrder = "asc";
}
int start, end;
start = (pageIndex - 1) * pageSize + 1;
end = start + pageSize;
int total;
using (IDatabase db = DbFactory.Base(connStr))
{
db.BeginTrans();
var dal = new MacRecipeDal(db);
string errorinfo = string.Empty;
var roles = dal.GetMacRecipeDtos(filter, start, pageSize, sortField, sortOrder, out total, ref errorinfo);
return new LayuiModel
{
code = 1,
count = total,
data = roles,
msg = ""
};
}
}
///
/// 列表
///
///
///
///
///
///
///
[HttpGet]
public LayuiModel GetMachineInfoes(string filter, int pageIndex = 1, int pageSize = 10, string sortField = "macCode", string sortOrder = "ascend")
{
if (sortOrder == "descend")
{
sortOrder = "desc";
}
else
{
sortOrder = "asc";
}
int start, end;
start = (pageIndex - 1) * pageSize + 1;
end = start + pageSize;
int total;
using (IDatabase db = DbFactory.Base(connStr))
{
db.BeginTrans();
var dal = new MacRecipeDal(db);
string errorinfo = string.Empty;
var roles = dal.GetMachineInfoes(filter, start, pageSize, sortField, sortOrder, out total, ref errorinfo);
return new LayuiModel
{
code = 1,
count = total,
data = roles,
msg = ""
};
}
}
///
/// 详情
///
///
///
[HttpGet]
public MacRecipeDto GetMachineInfoById(int macId)
{
int total;
using (IDatabase db = DbFactory.Base(connStr))
{
db.BeginTrans();
var dal = new MacRecipeDal(db);
string errorinfo = string.Empty;
var role = dal.GetMachineInfoes($" and a.id={macId}", 1, 1, "macid", "asc", out total, ref errorinfo)
.FirstOrDefault();
return role;
}
}
///
/// 获取机台运行历史
///
///
///
///
///
///
///
[HttpGet]
public LayuiModel GetMacStatus(string filter, int pageIndex = 1, int pageSize = 10, string sortField = "stime", string sortOrder = "descend")
{
if (sortOrder == "descend")
{
sortOrder = "desc";
}
else
{
sortOrder = "asc";
}
int start, end;
start = (pageIndex - 1) * pageSize + 1;
end = start + pageSize;
int total;
using (IDatabase db = DbFactory.Base(connStr))
{
db.BeginTrans();
var dal = new MacRecipeDal(db);
string errorinfo = string.Empty;
var roles = dal.GetMacStatusDtos(filter, start, pageSize, sortField, sortOrder, out total, ref errorinfo);
return new LayuiModel
{
code = 1,
count = total,
data = roles,
msg = ""
};
}
}
///
/// 机台运行历史导出
///
///
///
[HttpPost]
public async Task ExportMacStatus(IDictionary filterInfo)
{
string filter=string.Empty; int pageIndex = 1; int pageSize = 100000; string sortField = "stime"; string sortOrder = "descend";
if (filterInfo.ContainsKey("filter"))
{
filter = filterInfo["filter"];
}
if (filterInfo.ContainsKey("pageIndex"))
{
pageIndex =Convert.ToInt32( filterInfo["pageIndex"]);
}
if (filterInfo.ContainsKey("pageSize"))
{
pageSize = Convert.ToInt32(filterInfo["pageSize"]);
}
if (filterInfo.ContainsKey("sortField"))
{
sortField = filterInfo["sortField"];
}
if (filterInfo.ContainsKey("sortOrder"))
{
sortOrder = filterInfo["sortOrder"];
}
var dto = GetMacStatus(filter, pageIndex, pageSize, sortField, sortOrder).data;
var list = _mapper.Map>(dto).ToList();
var book = DataExportHelper.EntityToExcel(list);
MemoryStream ms = new MemoryStream();
ms.Position = 0;
book.Write(ms);
ms.Dispose();
ms.Close();
await Task.CompletedTask;
return File(ms.ToArray(), "application/octet-stream");
}
///
/// 导入数据
///
///
///
[HttpPost]
public EapResponse Import([FromBody] ImportDto importDto)
{
var res = new EapResponse { Code = 1, Msg = string.Empty };
if (importDto.MacInfoes == null || importDto.MacInfoes.Count() <= 0)
{
res.Code = -1;
res.Msg = "待导入的数据为空";
return res;
}
using (IDatabase db = DbFactory.Base("eap"))
{
string errorinfo = string.Empty;
var dal = new MacRecipeDal(db);
db.BeginTrans();
IList existCodes = new List();
if (dal.ImportMachines(importDto.MacInfoes.ToArray(), Request.Headers["usercode"], existCodes, ref errorinfo) < 0)
{
db.Rollback();
res.Code = -1;
res.Msg = errorinfo;
return res;
}
db.Commit();
if (existCodes != null && existCodes.Count > 0)
{
res.Data = existCodes;
res.Msg = $"机台[{string.Join(",", existCodes)}]在系统中已存在";
}
return res;
}
}
///
/// 导入数据
///
///
///
[HttpPost]
public EapResponse ImportRest([FromBody] ImportDto importDto)
{
var res = new EapResponse { Code = 1, Msg = string.Empty };
if (importDto.MacInfoes == null || importDto.MacInfoes.Count() <= 0)
{
res.Code = -1;
res.Msg = "待导入的数据为空";
return res;
}
using (IDatabase db = DbFactory.Base("eap"))
{
string errorinfo = string.Empty;
var dal = new MacRecipeDal(db);
db.BeginTrans();
if (dal.UpdateMachines(importDto.MacInfoes.ToArray(), Request.Headers["usercode"], ref errorinfo) < 0)
{
db.Rollback();
res.Code = -1;
res.Msg = errorinfo;
return res;
}
db.Commit();
return res;
}
}
///
/// 机台信息导出
///
///
///
[HttpPost]
public async Task Export(IDictionary filterInfo)
{
var filter = string.Empty;
if (filterInfo.ContainsKey("filter"))
filter = filterInfo["filter"];
using (IDatabase db = DbFactory.Base(connStr))
{
db.BeginTrans();
var dal = new MacRecipeDal(db);
string errorinfo = string.Empty;
int total;
var roles = dal.GetMachineInfoes(filter, 1, 100000, "MacId", "asc", out total, ref errorinfo);
var list = _mapper.Map>(roles).ToList();
var book = DataExportHelper.EntityToExcel(list);
MemoryStream ms = new MemoryStream();
ms.Position = 0;
book.Write(ms);
ms.Dispose();
ms.Close();
await Task.CompletedTask;
return File(ms.ToArray(), "application/octet-stream");
}
}
///
/// 机台IP软件版本导出
///
///
///
[HttpPost]
public async Task ExportIP(IDictionary filterInfo)
{
var filter = string.Empty;
if (filterInfo.ContainsKey("filter"))
filter = filterInfo["filter"];
var roles = Get(filter, 1, 10000).data;
var list = _mapper.Map>(roles).ToList();
var book = DataExportHelper.EntityToExcel(list);
MemoryStream ms = new MemoryStream();
ms.Position = 0;
book.Write(ms);
ms.Dispose();
ms.Close();
await Task.CompletedTask;
return File(ms.ToArray(), "application/octet-stream");
}
}
}