using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Text.RegularExpressions; using System.Web.Http; using Warehouse.DAL.PackOutput; using Warehouse.WebApi.Model; namespace Warehouse.WebApi { [RoutePrefix("api/PackOutputDetailNew")] public class PackOutputDetailNewController : BaseController { PackOutput Pot = new PackOutput(); [Route("QueryDetailInfoNew")] [HttpPost] public IHttpActionResult QueryDetailInfo(PackOutputDetailControllerModel model) { try { //序列号 var serialNum = ""; if (!string.IsNullOrEmpty(model.SerialNum)) { var serialNumGet = model.SerialNum.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); var serialNumList = serialNumGet.Select(x => x.Trim()).Distinct().Where(s => !string.IsNullOrEmpty(s)).ToList(); serialNum = string.Join("','", serialNumList); serialNum = "'" + serialNum + "'"; } //柜号 var containerNum = ""; if (!string.IsNullOrEmpty(model.ContainerNum)) { var containerNumGet = model.ContainerNum.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); var containerNumList = containerNumGet.Select(x => x.Trim()).Distinct().Where(s => !string.IsNullOrEmpty(s)).ToList(); containerNum = string.Join("','", containerNumList); containerNum = "'" + containerNum + "'"; } //托盘号 var palletNum = ""; if (!string.IsNullOrEmpty(model.PalletNum)) { var palletNumGet = model.PalletNum.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); var palletNumList = palletNumGet.Select(x => x.Trim()).Distinct().Where(s => !string.IsNullOrEmpty(s)).ToList(); palletNum = string.Join("','", palletNumList); palletNum = "'" + palletNum + "'"; } //获取数据 var res = Pot.QueryDetailInfo(model.WorkShop, model.TestTimeBegin, model.TestTimeEnd, serialNum, containerNum, palletNum, model.Checkno, model.WorkOrder); //处理数据 return Json(res); //return Json(new { AA = "aa", BB = "cc" }); } catch (Exception e) { //TODO 记录日志 } return Failure("查询异常"); } #region 下载 [HttpPost, Route("DownloadPackOutReportDetailGet")] public HttpResponseMessage DownloadPackOutReportDetailGet(PackOutputControllerModel model) { try { HSSFWorkbook hssfworkbook = new HSSFWorkbook(); hssfworkbook.CreateSheet("包装详细信息查询报表"); ICellStyle style = hssfworkbook.CreateCellStyle(); //设置单元格的样式:水平对齐居中 style.Alignment = HorizontalAlignment.Center; ISheet sheet = null; sheet = hssfworkbook.GetSheetAt(0); IRow row = null; #region 添加表头 var thList = new List { "托盘号", "组件序列号", "VOC", "ISC", "Pmax", "VPM", "IPM", "FF", "测试日期时间", }; //设置第一列列宽 // sheet.SetColumnWidth(0, 20 * 256); //设置第一列之后的列宽 for (int i = 1; i < thList.Count; i++) { sheet.SetColumnWidth(i, 10 * 256); } var rowCount = sheet.LastRowNum; row = sheet.CreateRow(rowCount); //添加表头并设置样式字体居中 for (int i = 0; i < thList.Count; i++) { row.CreateCell(i).SetCellValue(thList[i]); row.GetCell(i).CellStyle = style; } #endregion //序列号 var serialNum = ""; if (!string.IsNullOrEmpty(model.SerialNum)) { var serialNumGet = model.SerialNum.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); var serialNumList = serialNumGet.Select(x => x.Trim()).Distinct().Where(s => !string.IsNullOrEmpty(s)).ToList(); serialNum = string.Join("','", serialNumList); serialNum = "'" + serialNum + "'"; } //柜号 var containerNum = ""; if (!string.IsNullOrEmpty(model.ContainerNum)) { var containerNumGet = model.ContainerNum.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); var containerNumList = containerNumGet.Select(x => x.Trim()).Distinct().Where(s => !string.IsNullOrEmpty(s)).ToList(); containerNum = string.Join("','", containerNumList); containerNum = "'" + containerNum + "'"; } //托盘号 var palletNum = ""; if (!string.IsNullOrEmpty(model.PalletNum)) { var palletNumGet = model.PalletNum.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); var palletNumList = palletNumGet.Select(x => x.Trim()).Distinct().Where(s => !string.IsNullOrEmpty(s)).ToList(); palletNum = string.Join("','", palletNumList); palletNum = "'" + palletNum + "'"; } //获取数据 var res = Pot.QueryDetailInfo(model.WorkShop, model.TestTimeBegin, model.TestTimeEnd, serialNum, containerNum, palletNum, model.Checkno, model.WorkOrder); foreach (var item in res.ToList()) { var rowCount1 = sheet.LastRowNum + 1; row = sheet.CreateRow(rowCount1); row.CreateCell(0).SetCellValue(item.pallet_nbr.ToString()); row.GetCell(0).CellStyle = style; row.CreateCell(1).SetCellValue(item.serial_nbr.ToString()); row.GetCell(1).CellStyle = style; row.CreateCell(2).SetCellValue(string.IsNullOrEmpty(item.voc.ToString()) ? "" : item.voc.ToString("0")); row.GetCell(2).CellStyle = style; row.CreateCell(3).SetCellValue(string.IsNullOrEmpty(item.isc.ToString()) ? "" : item.ipm.ToString("0")); row.GetCell(3).CellStyle = style; row.CreateCell(4).SetCellValue(string.IsNullOrEmpty(item.pmax.ToString()) ? "" : item.pmax.ToString("0")); row.GetCell(4).CellStyle = style; row.CreateCell(5).SetCellValue(string.IsNullOrEmpty(item.vpm.ToString()) ? "" : item.vpm.ToString("0")); row.GetCell(5).CellStyle = style; row.CreateCell(6).SetCellValue(string.IsNullOrEmpty(item.ipm.ToString()) ? "" : item.ff.ToString("0")); row.GetCell(6).CellStyle = style; row.CreateCell(7).SetCellValue(string.IsNullOrEmpty(item.ff.ToString()) ? "" : item.isc.ToString("0")); row.GetCell(7).CellStyle = style; row.CreateCell(8).SetCellValue(string.IsNullOrEmpty(item.wks_visit_date.ToString()) ? "" : item.isc.ToString("0")); row.GetCell(8).CellStyle = style; } MemoryStream ms = new MemoryStream(); //创建内存流用于写入文件 hssfworkbook.Write(ms);//将Excel写入流 ms.Flush(); ms.Position = 0; HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); result.Content = new StreamContent(ms); result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "包装详细信息查询报表.xls" }; return result; } catch (Exception) { } return new HttpResponseMessage(HttpStatusCode.NoContent); } #endregion [Route("QueryStatus")] [HttpPost] public IHttpActionResult QueryStatus() { var res = Pot.QueryStatus(); return Json(res); } //[Route("QueryStatus")] //[HttpPost] //public FileResult tt() //{ // return FileResult(); //} } }