PayController.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.SqlClient;
  5. using System.Linq;
  6. using System.Threading.Tasks;
  7. using Common.Model;
  8. using CoreEntity.Entity;
  9. using JCSoft.WX.Framework.Api;
  10. using LigerRM.Common;
  11. using Microsoft.AspNetCore.Http;
  12. using Microsoft.AspNetCore.Mvc;
  13. using Microsoft.Extensions.Caching.Memory;
  14. using Newtonsoft.Json;
  15. using Newtonsoft.Json.Converters;
  16. using Newtonsoft.Json.Serialization;
  17. using PublicLibrary.Json;
  18. using PublicLibrary.Model;
  19. using SupplierWeb.Codes.mvc;
  20. using ZcPeng.PublicLibrary;
  21. namespace SupplierWeb.Controllers
  22. {
  23. [Route("web/pay")]
  24. [ApiController]
  25. public class PayController : BaseController
  26. {
  27. public PayController(IMemoryCache cache, IApiClient client) : base(cache, client)
  28. {
  29. }
  30. [AuthPermission]
  31. [HttpPost]
  32. [Route("getapplygoods")]
  33. public JsonResult ApplyGoods(string[] filters, Int32 pageIndex, Int32 pageSize,
  34. string sortField, Int32 sortDirection, string[] sumFields, [FromBody] dynamic data)
  35. {
  36. List<QueryFilter> filterList = new List<QueryFilter>();
  37. if (data != null)
  38. {
  39. if (data.filters.Count > 0)
  40. {
  41. var list = JsonConvert.SerializeObject(data.filters);
  42. filterList = JsonConvert.DeserializeObject<List<QueryFilter>>(list);
  43. }
  44. pageIndex = data.pageIndex;
  45. pageSize = data.pageSize;
  46. sortField = data.sortField;
  47. sortDirection = data.sortDirection;
  48. sumFields = data.sumFields.ToObject<string[]>();
  49. }
  50. var isAce = sortDirection == 0;
  51. var direct = isAce ? " asc" : " desc";
  52. var queryCondition = string.Empty;
  53. var param = new List<SqlParameter>(0);
  54. var start = (pageIndex - 1) * pageSize;
  55. var end = (start + 1 + pageSize);
  56. var dt = new DataTable();
  57. if (filterList != null)
  58. {
  59. queryCondition = QueryFilter.getFilterSqlParam(filterList.ToArray(), out param, new APGoodsMT(), "A.");
  60. }
  61. queryCondition = queryCondition.Replace("A.StaffName", "C.StaffName");
  62. queryCondition = queryCondition.Replace("A.Contact", "D.Contact");
  63. queryCondition = queryCondition.Replace("A.K_djpjzt", "C1.K_djpjzt");
  64. queryCondition = queryCondition.Replace("A.IsPrepay", "B.IsPrepay");
  65. queryCondition = queryCondition.Replace("A.PrepayAmt", "B.PrepayAmt");
  66. queryCondition = queryCondition.Replace("A.BusinessName", "E.BusinessName");
  67. queryCondition = queryCondition.Replace("A.K_IsApplyP", "IsNull(K_IsApplyP,'N')");
  68. if (sortField.IndexOf(",") > 0)
  69. ;
  70. else
  71. sortField = "A."+sortField;
  72. sortField = sortField.Replace("A.StaffName", "C.StaffName");
  73. sortField = sortField.Replace("A.Contact", "D.Contact");
  74. sortField = sortField.Replace("A.K_djpjzt", "C1.K_djpjzt");
  75. sortField = sortField.Replace("A.IsPrepay", "B.IsPrepay");
  76. sortField = sortField.Replace("A.PrepayAmt", "B.PrepayAmt");
  77. sortField = sortField.Replace("A.BusinessName", "E.BusinessName");
  78. var filter = FilterTranslator.ruleSql(ref param);
  79. var sql0 =
  80. $" select * from ";
  81. var sql1 = $" (select A.*," +
  82. $"B2.K_ContactId,B.OppContId,B.PayType,B.K_BillCode,B2.Source,B.IsPrepay,B.PrepayAmt," +
  83. $"B31.BillNo PBillNo,B4.BillCode as PBillCode,E.BusinessName," +
  84. $" C1.K_djpjzt as K_djpjzt,C.StaffName,D.Contact,row_number() over (order by " + sortField + " " + direct + ") as rowNum " +
  85. $" from APGoodsMT A " +
  86. $" left join PurInMT B on A.BillNo = B.BillNo and A.entid = B.entid " +
  87. $" left join PurOrderMT B2 on B.K_BillCode = B2.BillCode and B.entid = B2.entid " +
  88. $" left join (select distinct RfBillNo,K_djpjzt,a1.EntId from K_PurFP a1 " +
  89. $" left join InvoiceBill b1 on a1.billno = b1.billno and a1.entid = b1.entid " +
  90. $" where a1.K_djpjzt='已签收')C1 on B.BillNo = C1.RfBillNo and B.entid = C1.entid " +
  91. $" left join(select B3.entid, B3.RfBillNo, min(b3.BillNo) as BillNo from PlanBillDT B3 " +
  92. $" group by B3.entid,B3.RfBillNo " +
  93. $") B31 on B31.RfBillNo = A.BillNo and B31.entid = A.entid " +
  94. $" left join PlanMT B4 on B4.BillNo = B31.BillNo and B4.entid = B31.entid " +
  95. //$" left join PlanBillDT B3 on B3.RfBillNo = A.BillNo and B3.entid = A.entid " +
  96. //$" left join PlanMT B4 on B4.BillNo = B3.BillNo and B4.entid = B3.entid " +
  97. $" left join StaffDoc C on A.SaleManId = C.StaffId and A.entid = C.entid " +
  98. $" left join ContactDoc D on D.ContactId = B2.K_ContactId and D.entid = B2.entid " +
  99. //$" left join ContactDoc D1 on B.OppContId = D1.ContactId and A.entid = D.entid " +
  100. $" left join BusinessDoc E on A.RfId = E.BusinessId and A.entid = E.entid " +
  101. $" where 1 = 1 {queryCondition}" +
  102. $"" + filter +
  103. $" ) R";
  104. var sql2 = $" where rowNum > {start} and rowNum < {end}";
  105. DataAccess.GetValues(sql0 + sql1 + sql2, ref dt, param.ToArray(), out var resultstr);
  106. IList<APGoodsMT> result = new List<APGoodsMT>();
  107. if (dt != null && dt.Rows.Count > 0)
  108. {
  109. result = ModelConvertHelper<APGoodsMT>.ConvertToModel(dt);
  110. }
  111. //var setting = new JsonSerializerSettings
  112. //{
  113. // ContractResolver = new DefaultContractResolver()
  114. //};
  115. //JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() =>
  116. //{
  117. // //日期类型默认格式化处理
  118. // //setting.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat;
  119. // //setting.DateFormatString = "yyyy-MM-dd HH:mm:ss";
  120. // //空值处理
  121. // //setting.NullValueHandling = NullValueHandling.Ignore;
  122. // //高级用法九中的Bool类型转换 设置
  123. // //setting.Converters.Add(new BoolConvert("是,否"));
  124. // IsoDateTimeConverter timejson = new IsoDateTimeConverter
  125. // {
  126. // DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss"
  127. // };
  128. // setting.Converters.Add(timejson);
  129. // return setting;
  130. //});
  131. var jsonData = JsonConvert.SerializeObject(result);
  132. var countSql =
  133. $"select count(1) from " + sql1;
  134. var count = DataAccess.GetRowCountDefine(countSql, param.ToArray(), out var msg);
  135. return Json(new
  136. {
  137. items = JsonConvert.DeserializeObject(jsonData),
  138. sum = new { },
  139. totalCount = count,
  140. msg
  141. });
  142. }
  143. [AuthPermission]
  144. [HttpPost]
  145. [Route("getapplygoodsdt")]
  146. public JsonResult ApplyGoodsDT(string[] filters, Int32 pageIndex, Int32 pageSize,
  147. string sortField, Int32 sortDirection, string[] sumFields, [FromBody] dynamic data)
  148. {
  149. List<QueryFilter> filterList = new List<QueryFilter>();
  150. if (data != null)
  151. {
  152. if (data.filters.Count > 0)
  153. {
  154. var list = JsonConvert.SerializeObject(data.filters);
  155. filterList = JsonConvert.DeserializeObject<List<QueryFilter>>(list);
  156. }
  157. pageIndex = data.pageIndex;
  158. pageSize = data.pageSize;
  159. sortField = data.sortField;
  160. sortDirection = data.sortDirection;
  161. sumFields = data.sumFields.ToObject<string[]>();
  162. }
  163. var isAce = sortDirection == 1;
  164. var direct = isAce ? " asc" : " desc";
  165. var queryCondition = string.Empty;
  166. var param = new List<SqlParameter>(0);
  167. var start = (pageIndex - 1) * pageSize;
  168. var end = (start + 1 + pageSize);
  169. var dt = new DataTable();
  170. if (filterList != null)
  171. {
  172. queryCondition = QueryFilter.getFilterSqlParam(filterList.ToArray(), out param, new APGoodsDT(), "A.");
  173. }
  174. queryCondition = queryCondition.Replace("A.PK", "Concat(A.BillNo,'_',A.BillSn)");
  175. queryCondition = queryCondition.Replace("A.GoodsName", "C.GoodsName");
  176. queryCondition = queryCondition.Replace("A.GoodsCode", "C.GoodsCode");
  177. sortField = "A." + sortField;
  178. sortField = sortField.Replace("A.PK", "Concat(A.BillNo,'_',A.BillSn)");
  179. sortField = sortField.Replace("A.GoodsName", "C.GoodsName");
  180. sortField = sortField.Replace("A.GoodsCode", "C.GoodsCode");
  181. var filter = FilterTranslator.ruleSql(ref param);
  182. var sql0 =
  183. $" select * from ";
  184. var sql1 = $" (select Concat(A.BillNo,'_',A.BillSn) as PK,A.*,B.Unit,C.GoodsName,C.GoodsCode," +
  185. $" row_number() over (order by " + sortField + " " + direct + ") as rowNum " +
  186. $" from APGoodsDT A " +
  187. $" left join PurInDT B on A.BillNo = B.BillNo and A.BillSn = B.BillSn and A.entid = B.entid " +
  188. $" left join PurInMT B0 on B.BillNo = B0.BillNo and B.entid = B0.entid " +
  189. $" left join PurOrderMT B2 on B0.K_BillCode = B2.BillCode and B0.entid = B2.entid " + filter +
  190. $" left join GoodsDoc C on C.GoodsId = B.GoodsId and C.entid = B.entid " +
  191. $" where 1 = 1 {queryCondition}" +
  192. $"" + filter +
  193. $" ) R";
  194. var sql2 = $" where rowNum > {start} and rowNum < {end}";
  195. DataAccess.GetValues(sql0 +sql1 + sql2, ref dt, param.ToArray(), out var msg);
  196. IList<APGoodsDT> result = new List<APGoodsDT>();
  197. if (dt != null && dt.Rows.Count > 0)
  198. {
  199. result = ModelConvertHelper<APGoodsDT>.ConvertToModel(dt);
  200. }
  201. //var setting = new JsonSerializerSettings
  202. //{
  203. // ContractResolver = new DefaultContractResolver()
  204. //};
  205. //JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() =>
  206. //{
  207. // //日期类型默认格式化处理
  208. // //setting.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat;
  209. // //setting.DateFormatString = "yyyy-MM-dd HH:mm:ss";
  210. // //空值处理
  211. // //setting.NullValueHandling = NullValueHandling.Ignore;
  212. // //高级用法九中的Bool类型转换 设置
  213. // //setting.Converters.Add(new BoolConvert("是,否"));
  214. // IsoDateTimeConverter timejson = new IsoDateTimeConverter
  215. // {
  216. // DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss"
  217. // };
  218. // setting.Converters.Add(timejson);
  219. // return setting;
  220. //});
  221. var jsonData = JsonConvert.SerializeObject(result);
  222. var countSql =
  223. $"select count(1) from " +
  224. sql1;
  225. var count = DataAccess.GetRowCountDefine(countSql, param.ToArray(), out var msg1);
  226. return Json(new
  227. {
  228. items = JsonConvert.DeserializeObject(jsonData),
  229. sum = new { },
  230. totalCount = count,
  231. msg
  232. });
  233. }
  234. }
  235. }