using JCSoft.WX.Framework.Api; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Common.Wechat; using Common; using System.Data; using Common.Model; using ZcPeng.PublicLibrary; using CoreEntity.Entity; using CoreEntity.DAL; using System.Collections.Concurrent; using Newtonsoft.Json.Converters; using Newtonsoft.Json; using System.Data.SqlClient; using Microsoft.Extensions.Primitives; using Microsoft.Extensions.Caching.Memory; using Jwt; using PublicLibrary.Model; using Newtonsoft.Json.Linq; using SupplierWeb.Codes.mvc; using SupplierWeb.Codes.Auth; using Microsoft.AspNetCore.Hosting; using Npoi.Mapper; using System.IO; using LigerRM.Common; namespace SupplierWeb.Controllers { /// /// 供应商查询采购明细 /// [AuthPermission] [Route("web/invoicesp")] public class IncoiceSpController : BaseController { public IncoiceSpController(IMemoryCache cache, IApiClient client) : base(cache, client) { } private ConcurrentDictionary roleMap = new ConcurrentDictionary(); /// 查询发票订单 [AuthPermission] [HttpPost, Route("bill")] public JsonResult bill(QueryFilter[] filters, Int32 pageIndex, Int32 pageSize, string sortField, Int32 sortDirection, string[] sumFields, [FromBody]dynamic data) { string LoginAccountId = getStaff("userid"); string RoleId = getStaff("roleid"); //判断参数是否合法 if (string.IsNullOrEmpty(LoginAccountId)) { return Json(new { items = new string[] { }, sum = new { }, totalCount = 0 }); } //string StaffDocId = StaffDocDAL.GetStaffId(LoginAccountId); if (data != null) { //Newtonsoft.Json.Linq.JArray filters = data.filters.ToObject(); pageIndex = data.pageIndex; pageSize = data.pageSize; sortField = data.sortField; sortDirection = data.sortDirection; sumFields = data.sumFields.ToObject(); } #region 获取发票订单关联 DataTable dt = new DataTable(); string result; IList permss = new List(0); List parameters = new List(); string filterstr = QueryFilter.getFilterSqlParam(filters, out parameters, new InvoiceMT(), "A."); filterstr = filterstr.Replace("A.K_BillCode", "C.K_BillCode"); filterstr = filterstr.Replace("A.Contact", "D.Contact"); filterstr = filterstr.Replace("A.StaffName", "E.StaffName"); sortField = sortField.Replace("Pk","BillNo"); if(!parameters.Exists(v1 => v1.ParameterName == "@BillNo")) parameters.Add(new SqlParameter("@BillNo", "")); string direct = " desc "; if (sortDirection != 1) direct = " asc"; int start = (pageIndex - 1) * pageSize; int end = (start + 1 + pageSize); string filter = FilterTranslator.ruleSql(ref parameters); string commandText0 = "select * from "; string commandText1 = "(" + "select concat(A.BillNo,A.BillSn) as Pk,A.*,C.K_BillCode,C.OppContId,C1.K_ContactId,D.Contact,E.StaffName,row_number() over" + "( order by A." + sortField + " " + direct + " ) as rownum" + " from InvoiceBill A " + " left join PURINMT C on C.BillNo = A.rfBillNo " + " left join PurOrderMt C1 on C1.BillCode = C.K_BillCode " + " left join ContactDoc D on D.ContactId = C1.K_ContactId " + //" left join ContactDoc D1 on D1.ContactId = C.OppContId " + " left join StaffDoc E on A.SaleManId = E.StaffId " + " WHERE 1=1 " + filterstr + filter + ")AAA "; string commandText2 = " where AAA.rownum>" + start + " and AAA.rownum<" + end; bool success = DataAccess.GetValues(commandText0 + commandText1 + commandText2, ref dt, parameters.ToArray(), out result); #endregion if (dt != null && dt.Rows.Count > 0) { // 把DataTable转换为IList permss = ModelConvertHelper.ConvertToModel(dt); } string result1; long totalcount = DataAccess.GetRowCountDefine("select count(1) from " + commandText1, parameters.ToArray(), out result1); IsoDateTimeConverter timejson = new IsoDateTimeConverter { DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss" }; var jsonData = JsonConvert.SerializeObject(permss, timejson); return Json(new { items = JsonConvert.DeserializeObject(jsonData), sum = new { }, totalCount = totalcount }); } /// /// 查询发票明细 [AuthPermission] [HttpPost, Route("index")] public JsonResult index(QueryFilter[] filters, Int32 pageIndex, Int32 pageSize, string sortField, Int32 sortDirection, string[] sumFields, [FromBody]dynamic data) { string LoginAccountId = getStaff("userid"); string RoleId = getStaff("roleid"); //判断参数是否合法 if (string.IsNullOrEmpty(LoginAccountId)) { return Json(new { items = new string[] { }, sum = new { }, totalCount = 0 }); } //string StaffDocId = StaffDocDAL.GetStaffId(LoginAccountId); if (data != null) { //Newtonsoft.Json.Linq.JArray filters = data.filters.ToObject(); pageIndex = data.pageIndex; pageSize = data.pageSize; sortField = data.sortField; sortDirection = data.sortDirection; sumFields = data.sumFields.ToObject(); } #region 发票明细 DataTable dt = new DataTable(); string result; IList permss = new List(0); List parameters = new List(); string filterstr = QueryFilter.getFilterSqlParam(filters, out parameters, new InvoiceMT(),"A."); sortField = sortField.Replace("Pk", "BillNo"); //parameters.Add(new SqlParameter("@userids", LoginAccountId)); string direct = " desc "; if (sortDirection != 1) direct = " asc"; int start = (pageIndex - 1) * pageSize; int end = (start + 1 + pageSize); string rulefilter = FilterTranslator.ruleSql(ref parameters); string commandText0 = "select * from "; string commandText1 = "(" + "select concat(A.BillNo,'_',A.BillSn) as Pk,A.*,row_number() over" + "( order by A." + sortField + " " + direct + " ) as rownum" + " from InvoiceDT A " + " where 1=1 " + " and A.BillNo in (select B.BillNo FROM INVOICEBILL B " + " left join PURINMT C on C.BillNo = B.rfBillNo " + " left join PurOrderMt C1 on C1.BillCode = C.K_BillCode " + rulefilter + " WHERE 1=1 " + rulefilter + filterstr + ")" + ")AAA "; string commandText2 = " where AAA.rownum>" + start + " and AAA.rownum<" + end; bool success = DataAccess.GetValues(commandText0 + commandText1 + commandText2, ref dt, parameters.ToArray(), out result); #endregion if (dt != null && dt.Rows.Count > 0) { // 把DataTable转换为IList permss = ModelConvertHelper.ConvertToModel(dt); } string result1; long totalcount = DataAccess.GetRowCountDefine("select count(1) from " + commandText1, parameters.ToArray(), out result1); IsoDateTimeConverter timejson = new IsoDateTimeConverter { DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss" }; //IList menus = K_Contactsp.Convert(permss); var jsonData = JsonConvert.SerializeObject(permss, timejson); return Json(new { items = JsonConvert.DeserializeObject(jsonData), sum = new { }, totalCount = totalcount }); } } }