天津投入产出系统后端
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.

269 lines
11 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using QMAPP.Common.Web.Controllers;
using QMFrameWork.WebUI.Attribute;
using QMAPP.FJC.Web.Models.Operation;
using QMFrameWork.Data;
using QMAPP.ServicesAgent;
using QMAPP.FJC.Entity.Operation;
using QMAPP.Entity;
using QMFrameWork.WebUI.DataSource;
using QMFrameWork.Common.Serialization;
using NPOI.SS.UserModel;
namespace QMAPP.FJC.Web.Controllers
{
/// <summary>
/// 抽检
/// 20180610
/// </summary>
public class ProductCheckController : QController
{
#region 获取列表
/// <summary>
/// 加载列表
/// </summary>
/// <returns>结果</returns>
[HandleException]
public ActionResult List(bool? callBack)
{
ProductCheckModel seachModel = new ProductCheckModel();
seachModel.CREATEDATESTART = DateTime.Now.Date.AddDays(-10).ToString("yyyy-MM-dd HH:mm:ss");
seachModel.CREATEDATEEND = DateTime.Now.Date.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss");
if (callBack == true)
TryGetSelectBuffer<ProductCheckModel>(out seachModel);
seachModel.rownumbers = false;
seachModel.url = "/ProductCheck/GetList";
return View("ProductCheckList", seachModel);
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="callBack">是否回调</param>
/// <returns>列表</returns>
[HandleException]
public ActionResult GetList(bool? callBack)
{
ProductCheckModel seachModel = null;
DataPage page = null;
ServiceAgent wcfAgent = this.GetServiceAgent();
ProductCheck condition = null;
DataResult<DataPage> pageResult = new DataResult<DataPage>();
try
{
//获取查询对象
seachModel = GetModel<ProductCheckModel>();
#region 获取缓存值
if (callBack != null)
{
TryGetSelectBuffer<ProductCheckModel>(out seachModel);
}
else
{
//保存搜索条件
SetSelectBuffer<ProductCheckModel>(seachModel);
}
#endregion
//获取前台分页设置信息
page = this.GetDataPage(seachModel);
condition = CopyToModel<ProductCheck, ProductCheckModel>(seachModel);
#region wcf服务统一接口
pageResult = wcfAgent.InvokeServiceFunction<DataResult<DataPage>>("ProductCheckBLL_GetList", condition, page);
if (pageResult.IsSuccess == false)
{
SetMessage(pageResult.Msg);
return List(true);
}
DateGridResult<ProductCheck> result = new DateGridResult<ProductCheck>();
result.Total = pageResult.Result.RecordCount;
result.Rows = JsonConvertHelper.GetDeserialize<List<ProductCheck>>(pageResult.Result.Result.ToString());
#endregion
return Content(result.GetJsonSource());
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 加载详细信息
/// <summary>
/// 加载详细信息
/// </summary>
/// <returns>结果</returns>
[HandleException]
public ActionResult GetProductCheckItemList()
{
ServiceAgent wcfAgent = this.GetServiceAgent();
string pid = Request.Params["PID"];
ProductCheck pc = wcfAgent.InvokeServiceFunction<ProductCheck>("ProductCheckBLL_Get", new ProductCheck { PID = pid });
List<CheckWithMaterial> list = new List<CheckWithMaterial>();
CheckWithMaterial condition = new CheckWithMaterial();
condition.PRODUCTCHECK_PID = pid;
condition.MATERIAL_CODE = pc.MATERIAL_CODE;
#region wcf服务统一接口
var dataResult = wcfAgent.InvokeServiceFunction<DataResult<List<CheckWithMaterial>>>("ProductCheckBLL_GetProductCheckItemList", condition);
//通过返回dataResult判断
if (dataResult.Ex != null)
{
throw dataResult.Ex;
}
else if (dataResult.IsSuccess)
{
list = dataResult.Result;
}
List<object> objlist = new List<object>();
foreach (var o in list)
{
objlist.Add(new
{
PID = o.PID,
PRODUCTCHECK_PID = o.PRODUCTCHECK_PID,
CHECKITEMCODE = o.CHECKITEMCODE,
CHECKITEMNAME=o.CHECKITEMNAME,
INPUTVALUE = o.INPUTVALUE,
STANDERDVALUE_UPPER=o.STANDERDVALUE_UPPER,
STANDERDVALUE_DOWN = o.STANDERDVALUE_DOWN,
CREATEUSERNAME = o.CREATEUSERNAME,
CREATEDATE = o.CREATEDATE.ToString()
});
}
return Content(JsonConvertHelper.GetSerializes(objlist));
#endregion
}
#endregion
/// <summary>
/// 导出EXCEL
/// </summary>
/// <param name="Ids"></param>
/// <returns></returns>
[HandleException]
public ActionResult ExportExcel()
{
string ids = Request.Params["selectKey"] + "";
string[] idarray = ids.Split(':');
if (idarray.Length > 8 || idarray.Length < 1)
{
SetMessage("请选择1至8条抽检记录进行导出操作");
return List(true);
}
ServiceAgent wcfAgent = this.GetServiceAgent();
string pid = Request.Params["PID"];
var result = wcfAgent.InvokeServiceFunction<DataResult<ProductCheckExport>>("ProductCheckBLL_GetExportData", (object)idarray);
if (!result.IsSuccess)
{
SetMessage(result.Msg);
return List(true);
}
string tempfile = Server.MapPath(string.Format("~/Temp/{0}.xlsx", Guid.NewGuid().ToString()));
try
{
GenarateExcel(result.Result, tempfile);
return File(System.IO.File.Open(tempfile,System.IO.FileMode.Open), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", string.Format("注塑首件记录表-{0:yyyy-MM-dd}.xlsx", DateTime.Now));
}
catch (Exception ex)
{
SetMessage(ex.Message);
return List(true);
}
finally
{
if (System.IO.File.Exists(tempfile))
{
//System.IO.File.Delete(tempfile);
}
}
}
/// <summary>
/// 生成EXCEL
/// </summary>
/// <param name="data"></param>
/// <param name="filestream"></param>
private void GenarateExcel(ProductCheckExport data, string filename)
{
System.IO.FileStream fs = new System.IO.FileStream(Server.MapPath("~/App_Data/Excel/ProductCheck.xlsx"), System.IO.FileMode.Open);
IWorkbook workbook = new NPOI.XSSF.UserModel.XSSFWorkbook(fs);
fs.Close();
var sheet = workbook.GetSheet("首件检查记录表");
//var s= sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(17,19,0,0));
//for (int i = 0; i < 10; i++)
//{
// var row = sheet.GetRow(i + 6);
// var cell1 = row.GetCell(0, MissingCellPolicy.CREATE_NULL_AS_BLANK);
// var cell2 = row.GetCell(1, MissingCellPolicy.CREATE_NULL_AS_BLANK);
// cell1.SetCellValue("A" + i);
// cell2.SetCellValue("B" + i);
//}
int itemstartcolumn = 2;
int rowindex = 2;
#region 标题行
var titlerow = sheet.GetRow(rowindex);
var materilaNameCell = titlerow.GetCell(3, MissingCellPolicy.CREATE_NULL_AS_BLANK);
materilaNameCell.SetCellValue(data.MaterialInfo.MATERIAL_NAME);
var materilaCodeCell = titlerow.GetCell(6, MissingCellPolicy.CREATE_NULL_AS_BLANK);
materilaCodeCell.SetCellValue(data.MaterialInfo.MATERIAL_CODE);
var datecell = titlerow.GetCell(9, MissingCellPolicy.CREATE_NULL_AS_BLANK);
datecell.SetCellValue(DateTime.Now);
#endregion
rowindex = 5;
#region 抽检时间行
var checktimerow = sheet.GetRow(rowindex);
for (int i = 0; i < data.CheckRecords.Count; i++)
{
var timecell = checktimerow.GetCell(itemstartcolumn + (i * 2), MissingCellPolicy.CREATE_NULL_AS_BLANK);
timecell.SetCellValue(data.CheckRecords[i].CREATEDATE);
}
#endregion
rowindex = 6;
#region 循环检查记录行
foreach (var checkGroup in data.CheckItems.GroupBy(p => p.CHECKITEMTYPE))
{
if (checkGroup.Count() > 1)
{
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(rowindex, rowindex + checkGroup.Count() - 1, 0, 0));
}
var typerow = sheet.GetRow(rowindex);
var typecell = typerow.GetCell(0, MissingCellPolicy.CREATE_NULL_AS_BLANK);
typecell.SetCellValue(checkGroup.Key);
foreach (var checkitem in checkGroup)
{
var checkvaluerow = sheet.GetRow(rowindex);
var checkitemcell = checkvaluerow.GetCell(1, MissingCellPolicy.CREATE_NULL_AS_BLANK);
checkitemcell.SetCellValue(checkitem.CHECKITEMNAME);
for (int i = 0; i < data.CheckRecords.Count; i++)
{
var valuecell=checkvaluerow.GetCell(itemstartcolumn + (i*2), MissingCellPolicy.CREATE_NULL_AS_BLANK);
var value = data.CheckValueItems.FirstOrDefault(p => p.CHECKITEMCODE == checkitem.CHECKITEMCODE && p.PRODUCTCHECK_PID == data.CheckRecords[i].PID);
valuecell.SetCellValue(value != null ? value.INPUTVALUE : "");
}
rowindex++;
}
}
#endregion
using (System.IO.Stream filestream = System.IO.File.Create(filename))
{
workbook.Write(filestream);
filestream.Close();
}
}
}
}