旧版报表、仓库
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.

186 lines
7.7 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.Web.Http;
using Warehouse.DAL.Report;
using Warehouse.WebApi.Model;
namespace Warehouse.WebApi
{
public class SuppliesConsumedNewController : BaseController
{
SuppliesConsumedDal DT = new SuppliesConsumedDal();
[Route("api/SuppliesConsumedNew/SuppliesConsumedNew")]
[HttpPost]
public IHttpActionResult Repair(SuppliesConsumedModel model)
{
try
{
var res = DT.SuppliesConsumed(model.Sales, model.WorkOrder, model.WorkShop);
var list = new List<dynamic>();
res.ForEach(x => {
list.Add(new
{
workshop = x.workshop.ToString() ?? "-",
OEMcustomer = x.OEMcustomer.ToString() ?? "-",
workorder = x.workorder.ToString() ?? "-",
part_nbr = x.part_nbr.ToString() ?? "-",
part_type = x.part_type.ToString() ?? "-",
descriptions = x.descriptions.ToString() ?? "-",
is_primary = x.is_primary.ToString() ?? "-",
primary_part = x.primary_part.ToString() ?? "-",
serial_requirement = x.serial_requirement.ToString() ?? "-",
uom = x.uom.ToString() ?? "-",
orig_batch_nbr = x.orig_batch_nbr.ToString() ?? "-",
SQJC = x.SQJC.ToString() ?? "-",
real_nbr = x.real_nbr.ToString() ?? "-",
consume = x.consume.ToString() ?? "-",
LLBL = x.LLBL.ToString() ?? "-",
ZCBL = x.ZCBL.ToString() ?? "-",
BF = x.BF.ToString() ?? "-",
JY = x.JY.ToString() ?? "-"
});
});
return Success(new
{
data = list
});
}
catch (Exception e)
{
}
return Failure("查询异常");
}
#region 下载
[Route("api/SuppliesConsumedNew/SuppliesConsumedReportGet")]
[HttpPost]
public HttpResponseMessage DownloadBatchReportGet(BatchRateModel 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> {
"车间",
"OEM客户",
"工单",
"料号",
"物料类别",
"描述",
"是否主料",
"主料号",
"单耗",
"单位",
"来料批号",
"上期结存",
"实发数量",
"工序消耗量",
"来料不良",
"制程不良",
"报废不良",
"现场结余",
};
//设置第一列列宽
// sheet.SetColumnWidth(0, 20 * 256);
//设置第一列之后的列宽
for (int i = 1; i < thList.Count; i++)
{
sheet.SetColumnWidth(i, 10 * 500);
}
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 res = DT.SuppliesConsumed(model.Sales, model.WorkOrder, model.WorkShop);
foreach (var item in res.ToList())
{
var rowCount1 = sheet.LastRowNum + 1;
row = sheet.CreateRow(rowCount1);
row.CreateCell(0).SetCellValue(item.workshop.ToString());
row.GetCell(0).CellStyle = style;
row.CreateCell(1).SetCellValue(item.OEMcustomer.ToString());
row.GetCell(1).CellStyle = style;
row.CreateCell(2).SetCellValue(item.workorder.ToString());
row.GetCell(2).CellStyle = style;
row.CreateCell(3).SetCellValue(item.part_nbr.ToString());
row.GetCell(3).CellStyle = style;
row.CreateCell(4).SetCellValue(item.part_type.ToString());
row.GetCell(4).CellStyle = style;
row.CreateCell(5).SetCellValue(item.descriptions.ToString());
row.GetCell(5).CellStyle = style;
row.CreateCell(6).SetCellValue(item.is_primary.ToString());
row.GetCell(6).CellStyle = style;
row.CreateCell(7).SetCellValue(item.primary_part.ToString());
row.GetCell(7).CellStyle = style;
row.CreateCell(8).SetCellValue(item.serial_requirement.ToString());
row.GetCell(8).CellStyle = style;
row.CreateCell(9).SetCellValue(item.uom.ToString());
row.GetCell(9).CellStyle = style;
row.CreateCell(10).SetCellValue(item.SQJC.ToString());
row.GetCell(10).CellStyle = style;
row.CreateCell(11).SetCellValue(item.real_nbr.ToString());
row.GetCell(11).CellStyle = style;
row.CreateCell(12).SetCellValue(item.consume.ToString());
row.GetCell(12).CellStyle = style;
row.CreateCell(13).SetCellValue(item.LLBL.ToString());
row.GetCell(13).CellStyle = style;
row.CreateCell(14).SetCellValue(item.ZCBL.ToString());
row.GetCell(14).CellStyle = style;
row.CreateCell(15).SetCellValue(item.BF.ToString());
row.GetCell(15).CellStyle = style;
row.CreateCell(16).SetCellValue(item.JY.ToString());
row.GetCell(16).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
}
}