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"); } } }