using EnumType;
using IWareDataAccess.EF;
using IWareDataAccess.Entity.Base;
using IWareDataAccess.Entity.Order;
using IWareDataAccess.Helper;
using IWareDataAccess.ReturnEntity;
using IWareDataAccess.ReturnEntity.Order;
using Models.Input;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
namespace WebApi_QQJF.Controllers
{
///
/// 送签单
///
public class InOrderController : ApiController
{
///
/// 统一对象,读取值
///
///
private InOrderWebEntity GetEntity()
{
InOrderWebEntity model = new InOrderWebEntity();
HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获取传统context
HttpRequestBase request = context.Request;//定义传统request对象
WebHelper.WebHelper.GetRequest(request, model);
return model;
}
[HttpPost, Route("InOrder/Search")]
public IHttpActionResult Search(int page)
{
int onePageNum = 20;
return SearchFunc(page, onePageNum);
}
[HttpPost, Route("InOrder/Search")]
public IHttpActionResult Search(int page, int onePageNum)
{
return SearchFunc(page, onePageNum);
}
private static Expression> GetFilter(InOrderWebEntity webEntity)
{
var f = PredicateBuilder.GetFilterExpression(webEntity);
if (webEntity.InOrderPageType != null)
{//说明是要分页面查询 【EditBy shaocx,2022-11-01】
Expression> newExpress = null;
InOrderPageTypeEnum inorderPageEnum = (InOrderPageTypeEnum)Enum.Parse(typeof(InOrderPageTypeEnum), webEntity.InOrderPageType.ToString());
switch (inorderPageEnum)
{
case InOrderPageTypeEnum.完工品输入页面:
newExpress = a => a.OrderStatusId != (int)InOrderStatusEnum.完工;
break;
}
if (newExpress != null)
{
f = f.And(newExpress);
}
}
return f;
}
private IHttpActionResult SearchFunc(int page, int onePageNum)
{
string msg = "";
InOrderWebEntity model = new InOrderWebEntity();
model = GetEntity();
//调用查询方法
var f = GetFilter(model);
ReturnSearchInOrderView returnData = new ReturnSearchInOrderView();
returnData.data = IWareDataAccess.Order.INORDER.InOrderSqlFunc.SearchView(f, page, onePageNum, out msg);
returnData.code = 0;
returnData.num = IWareDataAccess.Order.INORDER.InOrderSqlFunc.SearchViewNum(f);
returnData.page = page;
returnData.pageNum = (returnData.num - 1) / 20 + 1;
returnData.msg = msg;
//返回JSON结果
return Json(returnData);
}
///
/// 导出冲压计划数据
///
///
[HttpPost, Route("InOrder/ExportInOrder")]
public IHttpActionResult ExportInOrder(int page, int onePageNum)
{
string msg = "";
InOrderWebEntity model = new InOrderWebEntity();
model = GetEntity();
//调用查询方法
var f = GetFilter(model);
var data = IWareDataAccess.Order.INORDER.InOrderSqlFunc.ExportInOrder(f, page, onePageNum, out msg);
//返回JSON结果
return Json(data);
}
///
/// 新建或修改送签单
///
///
[HttpPost, Route("InOrder/AddOrUpdate")]
public IHttpActionResult AddOrUpdate()
{
string msg = "";
InOrderWebEntity model = new InOrderWebEntity();
model = GetEntity();
//调用查询方法
bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.AddOrUpdate(model, out msg);
ReturnResultAndMsg returnData = new ReturnResultAndMsg();
returnData.code = result ? 0 : 1;
returnData.msg = msg;
//返回JSON结果
return Json(returnData);
}
[HttpPost, Route("InOrder/Add")]
public IHttpActionResult Add()
{
string msg = "";
InOrderWebEntity model = new InOrderWebEntity();
model = GetEntity();
model.orderStatus = "新建";
//调用查询方法
bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.AddOrUpdate(model, out msg);
ReturnResultAndMsg returnData = new ReturnResultAndMsg();
returnData.code = result ? 0 : 1;
returnData.msg = msg;
//返回JSON结果
return Json(returnData);
}
[HttpPost, Route("InOrder/Update")]
public IHttpActionResult Update()
{
string msg = "";
InOrderWebEntity model = new InOrderWebEntity();
model = GetEntity();
//调用查询方法
bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.AddOrUpdate(model, out msg);
ReturnResultAndMsg returnData = new ReturnResultAndMsg();
returnData.code = result ? 0 : 1;
returnData.msg = msg;
//返回JSON结果
return Json(returnData);
}
///
/// 修改线下交付数量
///
///
///
[HttpPost, Route("InOrder/UpdateUnlineNum")]
public IHttpActionResult UpdateUnlineNum(InOrderUnlineNumInput input)
{
if (string.IsNullOrEmpty(input.InOrderCode))
{
return Json(ReturnResultAndMsg.Fail("计划单号不能为空!"));
}
string msg = "";
//调用查询方法
bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.UpdateUnlineNum(input, out msg);
ReturnResultAndMsg returnData = new ReturnResultAndMsg();
returnData.code = result ? 0 : 1;
returnData.msg = msg;
//返回JSON结果
return Json(returnData);
}
///
/// 提交审核
///
///
///
[HttpPost, Route("InOrder/Send")]
public IHttpActionResult Send(InOrderAuditInput input)
{
string msg = "";
string type = "提交审核";
if (string.IsNullOrEmpty(input.InOrderCode))
{
return Json(ReturnResultAndMsg.Fail("计划单号不能为空!"));
}
if (input.AuditUserId == null || input.AuditUserId == 0)
{
return Json(ReturnResultAndMsg.Fail("审核人不能为空!"));
}
//调用查询方法
bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.UpdateStatus(input, type, out msg);
ReturnResultAndMsg returnData = new ReturnResultAndMsg();
returnData.code = result ? 0 : 1;
returnData.msg = msg;
//返回JSON结果
return Json(returnData);
}
[HttpPost, Route("InOrder/Check")]
public IHttpActionResult Check(InOrderAuditInput input)
{
if (string.IsNullOrEmpty(input.InOrderCode))
{
return Json(ReturnResultAndMsg.Fail("计划单号不能为空!"));
}
string msg = "";
string type = "审核通过";
//调用查询方法
bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.UpdateStatus(input, type, out msg);
ReturnResultAndMsg returnData = new ReturnResultAndMsg();
returnData.code = result ? 0 : 1;
returnData.msg = msg;
//返回JSON结果
return Json(returnData);
}
[HttpPost, Route("InOrder/Reject")]
public IHttpActionResult Reject(InOrderAuditInput input)
{
if (string.IsNullOrEmpty(input.InOrderCode))
{
return Json(ReturnResultAndMsg.Fail("计划单号不能为空!"));
}
string msg = "";
string type = "驳回";
//调用查询方法
bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.UpdateStatus(input, type, out msg);
ReturnResultAndMsg returnData = new ReturnResultAndMsg();
returnData.code = result ? 0 : 1;
returnData.msg = msg;
//返回JSON结果
return Json(returnData);
}
[HttpPost, Route("InOrder/Delete")]
public IHttpActionResult Delete()
{
string msg = "";
InOrderWebEntity model = new InOrderWebEntity();
model = GetEntity();
//调用查询方法
bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.Delete(model, out msg);
ReturnResultAndMsg returnData = new ReturnResultAndMsg();
returnData.code = result ? 0 : 1;
returnData.msg = msg;
//返回JSON结果
return Json(returnData);
}
[HttpPost, Route("InOrder/GetCode")]
public IHttpActionResult GetCode()
{
string msg = "";
InOrderWebEntity model = new InOrderWebEntity();
model = GetEntity();
//调用查询方法
string result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.GetCode();
//返回JSON结果
return Json(result);
}
///
/// 导入冲压计划数据
///
///
[HttpPost, Route("InOrder/ImportInOrder")]
public IHttpActionResult ImportInOrder()
{
string msg = "";
List model = new List();
HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获取传统context
HttpRequestBase request = context.Request;//定义传统request对象
string Items = request.Form["items"];
string userName = request.Form["userName"];
model = JsonConvert.DeserializeObject>(Items);
//model = JsonConvert.DeserializeObject>(Items);
//string path = HttpContext.Current.Request.MapPath("~/");
//HttpPostedFile file = HttpContext.Current.Request.Files[0];
//bool bl = IWareDataAccess.Helper.ExcelHelper.UploadFiles(file, path, out msg); ;
//调用查询方法
bool bl = IWareDataAccess.Order.INORDER.InOrderSqlFunc.ImportInOrder(model, userName, out msg);
ReturnResultAndMsg returnData = new ReturnResultAndMsg();
returnData.code = bl ? 0 : 1;
returnData.msg = msg;
//返回JSON结果
return Json(returnData);
}
[HttpPost, Route("InOrder/ExcelTest")]
public IHttpActionResult ExcelTest()
{
string msg = "";
;
InOrderExcelEntity ent = new InOrderExcelEntity();
string path = HttpContext.Current.Request.MapPath("~/");
var file = HttpContext.Current.Request.Files[0].InputStream;
HttpPostedFile pf = HttpContext.Current.Request.Files[0];
string datetime = Helper.GetTimeStamp();
string strPath = @"c:\ImportExcel\" + datetime + "\\";//这里要注意的是先要建立File文件夹,不然会报错,也可以自己写一个检测文件夹,这里就先不赘述
if (!Directory.Exists(strPath))
{
Directory.CreateDirectory(strPath);
}
strPath += pf.FileName;
pf.SaveAs(strPath);
//Helper.StreamToFile(file, strPath);//需要用到下一步的帮助类将其保存为文件
bool bl = IWareDataAccess.Order.INORDER.InOrderSqlFunc.ImportExcel(strPath, ent, out msg);
ReturnResultAndMsg returnData = new ReturnResultAndMsg();
returnData.code = bl ? 0 : 1;
returnData.msg = msg;
//返回JSON结果
return Json(returnData);
}
}
}