IncoiceSpController.cs 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. using JCSoft.WX.Framework.Api;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.AspNetCore.Http;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Threading.Tasks;
  8. using Common.Wechat;
  9. using Common;
  10. using System.Data;
  11. using Common.Model;
  12. using ZcPeng.PublicLibrary;
  13. using CoreEntity.Entity;
  14. using CoreEntity.DAL;
  15. using System.Collections.Concurrent;
  16. using Newtonsoft.Json.Converters;
  17. using Newtonsoft.Json;
  18. using System.Data.SqlClient;
  19. using Microsoft.Extensions.Primitives;
  20. using Microsoft.Extensions.Caching.Memory;
  21. using Jwt;
  22. using PublicLibrary.Model;
  23. using Newtonsoft.Json.Linq;
  24. using SupplierWeb.Codes.mvc;
  25. using SupplierWeb.Codes.Auth;
  26. using Microsoft.AspNetCore.Hosting;
  27. using Npoi.Mapper;
  28. using System.IO;
  29. using LigerRM.Common;
  30. namespace SupplierWeb.Controllers
  31. {
  32. /// <summary>
  33. /// 供应商查询采购明细
  34. /// </summary>
  35. [AuthPermission]
  36. [Route("web/invoicesp")]
  37. public class IncoiceSpController : BaseController
  38. {
  39. public IncoiceSpController(IMemoryCache cache, IApiClient client) : base(cache, client)
  40. {
  41. }
  42. private ConcurrentDictionary<int, Role> roleMap = new ConcurrentDictionary<int, Role>();
  43. /// 查询发票订单
  44. [AuthPermission]
  45. [HttpPost, Route("bill")]
  46. public JsonResult bill(QueryFilter[] filters, Int32 pageIndex, Int32 pageSize,
  47. string sortField, Int32 sortDirection, string[] sumFields, [FromBody]dynamic data)
  48. {
  49. string LoginAccountId = getStaff("userid");
  50. string RoleId = getStaff("roleid");
  51. //判断参数是否合法
  52. if (string.IsNullOrEmpty(LoginAccountId))
  53. {
  54. return Json(new
  55. {
  56. items = new string[] { },
  57. sum = new { },
  58. totalCount = 0
  59. });
  60. }
  61. //string StaffDocId = StaffDocDAL.GetStaffId(LoginAccountId);
  62. if (data != null)
  63. {
  64. //Newtonsoft.Json.Linq.JArray
  65. filters = data.filters.ToObject<QueryFilter[]>();
  66. pageIndex = data.pageIndex;
  67. pageSize = data.pageSize;
  68. sortField = data.sortField;
  69. sortDirection = data.sortDirection;
  70. sumFields = data.sumFields.ToObject<string[]>();
  71. }
  72. #region 获取发票订单关联
  73. DataTable dt = new DataTable();
  74. string result;
  75. IList<InvoiceBill> permss = new List<InvoiceBill>(0);
  76. List<SqlParameter> parameters = new List<SqlParameter>();
  77. string filterstr = QueryFilter.getFilterSqlParam(filters, out parameters, new InvoiceMT(), "A.");
  78. filterstr = filterstr.Replace("A.K_BillCode", "C.K_BillCode");
  79. filterstr = filterstr.Replace("A.Contact", "D.Contact");
  80. filterstr = filterstr.Replace("A.StaffName", "E.StaffName");
  81. sortField = sortField.Replace("Pk","BillNo");
  82. if(!parameters.Exists(v1 => v1.ParameterName == "@BillNo"))
  83. parameters.Add(new SqlParameter("@BillNo", ""));
  84. string direct = " desc ";
  85. if (sortDirection != 1)
  86. direct = " asc";
  87. int start = (pageIndex - 1) * pageSize;
  88. int end = (start + 1 + pageSize);
  89. string filter = FilterTranslator.ruleSql(ref parameters);
  90. string commandText0 = "select * from ";
  91. string commandText1 = "(" +
  92. "select concat(A.BillNo,A.BillSn) as Pk,A.*,C.K_BillCode,C.OppContId,C1.K_ContactId,D.Contact,E.StaffName,row_number() over" +
  93. "( order by A." + sortField + " " + direct + " ) as rownum" +
  94. " from InvoiceBill A " +
  95. " left join PURINMT C on C.BillNo = A.rfBillNo " +
  96. " left join PurOrderMt C1 on C1.BillCode = C.K_BillCode " +
  97. " left join ContactDoc D on D.ContactId = C1.K_ContactId " +
  98. //" left join ContactDoc D1 on D1.ContactId = C.OppContId " +
  99. " left join StaffDoc E on A.SaleManId = E.StaffId " +
  100. " WHERE 1=1 " +
  101. filterstr +
  102. filter +
  103. ")AAA ";
  104. string commandText2 = " where AAA.rownum>" + start + " and AAA.rownum<" + end;
  105. bool success = DataAccess.GetValues(commandText0 + commandText1 + commandText2, ref dt, parameters.ToArray(), out result);
  106. #endregion
  107. if (dt != null && dt.Rows.Count > 0)
  108. {
  109. // 把DataTable转换为IList
  110. permss = ModelConvertHelper<InvoiceBill>.ConvertToModel(dt);
  111. }
  112. string result1;
  113. long totalcount = DataAccess.GetRowCountDefine("select count(1) from " + commandText1, parameters.ToArray(), out result1);
  114. IsoDateTimeConverter timejson = new IsoDateTimeConverter
  115. {
  116. DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss"
  117. };
  118. var jsonData = JsonConvert.SerializeObject(permss, timejson);
  119. return Json(new
  120. {
  121. items = JsonConvert.DeserializeObject(jsonData),
  122. sum = new { },
  123. totalCount = totalcount
  124. });
  125. }
  126. ///
  127. /// 查询发票明细
  128. [AuthPermission]
  129. [HttpPost, Route("index")]
  130. public JsonResult index(QueryFilter[] filters, Int32 pageIndex, Int32 pageSize,
  131. string sortField, Int32 sortDirection, string[] sumFields, [FromBody]dynamic data)
  132. {
  133. string LoginAccountId = getStaff("userid");
  134. string RoleId = getStaff("roleid");
  135. //判断参数是否合法
  136. if (string.IsNullOrEmpty(LoginAccountId))
  137. {
  138. return Json(new
  139. {
  140. items = new string[] { },
  141. sum = new { },
  142. totalCount = 0
  143. });
  144. }
  145. //string StaffDocId = StaffDocDAL.GetStaffId(LoginAccountId);
  146. if (data != null)
  147. {
  148. //Newtonsoft.Json.Linq.JArray
  149. filters = data.filters.ToObject<QueryFilter[]>();
  150. pageIndex = data.pageIndex;
  151. pageSize = data.pageSize;
  152. sortField = data.sortField;
  153. sortDirection = data.sortDirection;
  154. sumFields = data.sumFields.ToObject<string[]>();
  155. }
  156. #region 发票明细
  157. DataTable dt = new DataTable();
  158. string result;
  159. IList<InvoiceDT> permss = new List<InvoiceDT>(0);
  160. List<SqlParameter> parameters = new List<SqlParameter>();
  161. string filterstr = QueryFilter.getFilterSqlParam(filters, out parameters, new InvoiceMT(),"A.");
  162. sortField = sortField.Replace("Pk", "BillNo");
  163. //parameters.Add(new SqlParameter("@userids", LoginAccountId));
  164. string direct = " desc ";
  165. if (sortDirection != 1)
  166. direct = " asc";
  167. int start = (pageIndex - 1) * pageSize;
  168. int end = (start + 1 + pageSize);
  169. string rulefilter = FilterTranslator.ruleSql(ref parameters);
  170. string commandText0 = "select * from ";
  171. string commandText1 = "(" +
  172. "select concat(A.BillNo,'_',A.BillSn) as Pk,A.*,row_number() over" +
  173. "( order by A." + sortField + " " + direct + " ) as rownum" +
  174. " from InvoiceDT A " +
  175. " where 1=1 " +
  176. " and A.BillNo in (select B.BillNo FROM INVOICEBILL B " +
  177. " left join PURINMT C on C.BillNo = B.rfBillNo " +
  178. " left join PurOrderMt C1 on C1.BillCode = C.K_BillCode " + rulefilter +
  179. " WHERE 1=1 " + rulefilter +
  180. filterstr +
  181. ")" +
  182. ")AAA ";
  183. string commandText2 = " where AAA.rownum>" + start + " and AAA.rownum<" + end;
  184. bool success = DataAccess.GetValues(commandText0 + commandText1 + commandText2, ref dt, parameters.ToArray(), out result);
  185. #endregion
  186. if (dt != null && dt.Rows.Count > 0)
  187. {
  188. // 把DataTable转换为IList<K_Contactsp>
  189. permss = ModelConvertHelper<InvoiceDT>.ConvertToModel(dt);
  190. }
  191. string result1;
  192. long totalcount = DataAccess.GetRowCountDefine("select count(1) from " + commandText1, parameters.ToArray(), out result1);
  193. IsoDateTimeConverter timejson = new IsoDateTimeConverter
  194. {
  195. DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss"
  196. };
  197. //IList<Menu> menus = K_Contactsp.Convert(permss);
  198. var jsonData = JsonConvert.SerializeObject(permss, timejson);
  199. return Json(new
  200. {
  201. items = JsonConvert.DeserializeObject(jsonData),
  202. sum = new { },
  203. totalCount = totalcount
  204. });
  205. }
  206. }
  207. }