153 lines
6.0 KiB
C#
153 lines
6.0 KiB
C#
using com.itextpdf.text.pdf;
|
|
using Model;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using NPOI.Util.Optional;
|
|
using PagedList;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Data.Entity;
|
|
using System.Data.SqlClient;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Web.Http;
|
|
using static TreeView;
|
|
|
|
/// <summary>
|
|
/// orderdetail 的摘要说明
|
|
/// </summary>
|
|
public class orderdetailController:ApiController
|
|
{
|
|
private Model.ezEntities _db = new Model.ezEntities();
|
|
|
|
[HttpPost]
|
|
[Route("api/orderdetail/GetList")]
|
|
public IHttpActionResult GetList([FromBody] Model.ViewModel.pro_order q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false)
|
|
{
|
|
int activity_num = Convert.ToInt32(q.activity_num);
|
|
//現在的牌位預覽只會出現功德主,修改為所有人都會出現
|
|
//var aIDt = _db.actItems.AsEnumerable().Where(f => f.subject.Contains(q.actItemTxt.Trim())).Select(f => f.num);//品項
|
|
//var OrderList = _db.pro_order.Where(u => u.activity_num == activity_num).Select(j => j.order_no).ToList();
|
|
//var gdzOrderList = _db.pro_order_detail.Where(o => OrderList.Contains(o.order_no) && o.print_id.Contains("主")).Select(o => o.order_no).Distinct().ToList();
|
|
//var qry = _db.pro_order.Where(u => gdzOrderList.Contains(u.order_no)).AsEnumerable();
|
|
var qry = _db.pro_order.Where( u => u.activity_num == activity_num).OrderByDescending(o => o.reg_time);
|
|
|
|
var count = qry.Count(); //pageSize = count;//一次取回??
|
|
var qryList = (pageSize > 0) ? qry.ToPagedList(page, pageSize).ToList() : qry.ToList();
|
|
|
|
var ret = new
|
|
{
|
|
list = qryList.Select(x => new
|
|
{
|
|
order_no = x.order_no,
|
|
f_num = x.f_num,
|
|
u_name = x.f_num.HasValue ? x.follower.u_name : "",
|
|
activity_num = x.activity_num,
|
|
subject = x.activity_num.HasValue ? x.activity.subject : "",
|
|
keyin1 = x.keyin1,
|
|
up_time = x.up_time,
|
|
keyin1_txt = Model.pro_order.keyin1_value_to_text(x.keyin1),
|
|
//detail = x.pro_order_detail.Where(u => u.printed_files != null)
|
|
detail = new { count = x.pro_order_detail
|
|
.Where(u => (u.parent_num != null)
|
|
|| u.actItem.subject.Contains("牌")
|
|
|| !string.IsNullOrEmpty(u.f_num_tablet))
|
|
.Count(),
|
|
actItem = x.pro_order_detail.Where(u => u.printed_files != null).Select(u => u.print_id).FirstOrDefault() }
|
|
}),
|
|
count = count
|
|
};
|
|
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/orderdetail/GetDetailToPrint")]
|
|
public IHttpActionResult GetDetailToPrint([FromBody] dynamic data)
|
|
{
|
|
if (data.param is Newtonsoft.Json.Linq.JArray items)
|
|
{
|
|
string[] details = new string[items.Count];
|
|
int i = 0;
|
|
foreach (var item in items)
|
|
{
|
|
details[i] = item["order_no"] + item["num"].ToString();
|
|
i++;
|
|
}
|
|
|
|
var parameters = details.Select((s,j)=>"@p"+j).ToArray();
|
|
string sql = $"select * from pro_order_detail where order_no+convert(varchar,num) in ({string.Join(",",parameters)}) ";
|
|
|
|
int l =0;
|
|
List<SqlParameter> sqlList = new List<SqlParameter>();
|
|
foreach (var item in details)
|
|
{
|
|
sqlList.Add( new SqlParameter("@p" + l, item));
|
|
l++;
|
|
}
|
|
SqlParameter[] p = sqlList.ToArray();
|
|
var ret = _db.Database.SqlQuery<pro_order_detail>(sql, p).ToList();
|
|
if (ret == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
}
|
|
else
|
|
{
|
|
throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
}
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/orderdetail/GetShuwenData")]
|
|
public IHttpActionResult GetShuwenData([FromBody] dynamic data)
|
|
{
|
|
var json = data;
|
|
var num = (json.activity_num == null ? 0 : (int)json.activity_num);
|
|
var query = _db.pro_order_detail.AsQueryable();
|
|
query=query.Where(x => (_db.act_bom.AsQueryable().Where(y => y.package_num == null).Select(y => y.item_num).ToList()).
|
|
Contains(x.actItem_num));
|
|
query = query.Where(x => (_db.pro_order.AsQueryable().
|
|
Where(w => w.activity_num ==num ).Select(w => w.order_no)).ToList().Contains(x.order_no));
|
|
//這些是功德主
|
|
var list = query.OrderByDescending(x=>x.price).Select(x => new
|
|
{
|
|
x.num,x.order_no,x.actItem_num,x.parent_num,x.print_id,x.f_num_tablet,x.price,
|
|
childs=_db.pro_order_detail.Where(z=>z.order_no==x.order_no&&x.parent_num==x.actItem_num).Select(z=>new
|
|
{
|
|
x.num,
|
|
x.order_no,
|
|
x.actItem_num,
|
|
x.parent_num,
|
|
x.print_id,
|
|
x.f_num_tablet,
|
|
x.price
|
|
}).ToList()
|
|
}).ToList();
|
|
|
|
|
|
|
|
var query1 = _db.pro_order_detail.AsQueryable();
|
|
query1 = query1.Where(x => !(_db.act_bom.AsQueryable().Where(y => y.package_num == null).Select(y => y.item_num).ToList()).
|
|
Contains(x.actItem_num));
|
|
query1 = query1.Where(x => x.parent_num == null);
|
|
query1 = query1.Where(x => (_db.pro_order.AsQueryable().
|
|
Where(w => w.activity_num == num).Select(w => w.order_no)).ToList().Contains(x.order_no));
|
|
//這些是非功德主
|
|
var list1 = query1.OrderByDescending(x => x.price).Select(x => new
|
|
{
|
|
x.num,
|
|
x.order_no,
|
|
x.actItem_num,
|
|
x.parent_num,
|
|
x.print_id,
|
|
x.f_num_tablet,
|
|
x.price
|
|
}).ToList();
|
|
|
|
return Ok(new {result="Y",data=new { list=list,list1=list1 } });
|
|
|
|
}
|
|
} |