旧版报表、仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

212 lines
9.3 KiB

2 years ago
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<dynamic>(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<string> {
"托盘号",
"组件序列号",
"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();
//}
}
}