SupDemandController.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.SqlClient;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Threading.Tasks;
  8. using Common.Model;
  9. using CoreEntity.DAL;
  10. using JCSoft.WX.Framework.Api;
  11. using log4net;
  12. using Microsoft.AspNetCore.Hosting;
  13. using Microsoft.AspNetCore.Http;
  14. using Microsoft.AspNetCore.Mvc;
  15. using Microsoft.Extensions.Caching.Memory;
  16. using Newtonsoft.Json;
  17. using Newtonsoft.Json.Linq;
  18. using PublicLibrary.Model;
  19. using SupplierWeb.Codes.mvc;
  20. using ZcPeng.PublicLibrary;
  21. namespace SupplierWeb.Controllers
  22. {
  23. [Route("web/supdemand")]
  24. [ApiController]
  25. public class SupDemandController : BaseController
  26. {
  27. private readonly IHostingEnvironment _hostingEnvironment;
  28. public SupDemandController(IHostingEnvironment hostingEnvironment, IMemoryCache cache, IApiClient client) : base(cache, client)
  29. {
  30. _hostingEnvironment = hostingEnvironment;
  31. }
  32. [AuthPermission]
  33. [HttpPost]
  34. [Route("getdata")]
  35. public JsonResult GetData(string staffid, [FromBody] dynamic data)
  36. {
  37. var userid = getStaffUserid(staffid);
  38. //判断参数是否合法
  39. if (string.IsNullOrEmpty(userid))
  40. {
  41. return Json(new
  42. {
  43. success = 0,
  44. msg = "没有登陆",
  45. timeout = 1
  46. });
  47. }
  48. List<QueryFilter> filterList = new List<QueryFilter>();
  49. int pageIndex = 1;
  50. int pageSize = 15;
  51. string sortField;
  52. int sortDirection = 0;
  53. string[] sumFields;
  54. if (data != null)
  55. {
  56. if (data.filters.Count > 0)
  57. {
  58. var list = JsonConvert.SerializeObject(data.filters);
  59. filterList = JsonConvert.DeserializeObject<List<QueryFilter>>(list);
  60. }
  61. pageIndex = data.pageIndex;
  62. pageSize = data.pageSize;
  63. sortField = data.sortField;
  64. sortDirection = data.sortDirection;
  65. sumFields = data.sumFields.ToObject<string[]>();
  66. }
  67. var isAce = sortDirection == 0;
  68. var queryCondition = string.Empty;
  69. var param = new List<SqlParameter>();
  70. var start = (pageIndex - 1) * pageSize;
  71. var end = (start + 1 + pageSize);
  72. var dt = new DataTable();
  73. if (filterList != null)
  74. {
  75. foreach (var item in filterList)
  76. {
  77. if (!string.IsNullOrEmpty(item.value))
  78. {
  79. switch (item.operate)
  80. {
  81. case "equal":
  82. queryCondition += $" and {item.field}=@{item.field} ";
  83. param.Add(new SqlParameter(item.field, item.value));
  84. break;
  85. case "notequal":
  86. queryCondition += $" and {item.field}<>@{item.field} ";
  87. param.Add(new SqlParameter(item.field, item.value));
  88. break;
  89. case "less":
  90. queryCondition += $" and {item.field}<@{item.field} ";
  91. param.Add(new SqlParameter(item.field, item.value));
  92. break;
  93. case "lessorequal":
  94. queryCondition += $" and {item.field}<=@{item.field} ";
  95. param.Add(new SqlParameter(item.field, item.value));
  96. break;
  97. case "greater":
  98. queryCondition += $" and {item.field}>@{item.field} ";
  99. param.Add(new SqlParameter(item.field, item.value));
  100. break;
  101. case "greateroreeuqal":
  102. queryCondition += $" and {item.field}>=@{item.field} ";
  103. param.Add(new SqlParameter(item.field, item.value));
  104. break;
  105. case "contains":
  106. queryCondition += $" and {item.field} like @{item.field} ";
  107. param.Add(new SqlParameter("@" + item.field, "%" + item.value + "%"));
  108. break;
  109. case "startswith":
  110. queryCondition += $" and {item.field} like @{item.field} ";
  111. param.Add(new SqlParameter("@" + item.field, item.value + "%"));
  112. break;
  113. case "endswith":
  114. queryCondition += $" and {item.field} like @{item.field} ";
  115. param.Add(new SqlParameter("@" + item.field, "%" + item.value));
  116. break;
  117. }
  118. }
  119. }
  120. }
  121. var sql =
  122. $"select * from (select *,row_number() over (order by ID desc) as rowNum,(stuff((select ',' + path from sup_UPLOADFILES where RelativeId = c.id and RelativeTable = 'sup_PurchaseDemand' and InUse = 1 FOR xml PATH('')), 1, 1, '')) as files from sup_PurchaseDemand C where 1=1 {queryCondition}) R where rowNum > {start} and rowNum < {end}";
  123. DataAccess.GetValues(sql, ref dt, param.ToArray(), out _);
  124. IList<Temp> result = new List<Temp>();
  125. if (dt != null && dt.Rows.Count > 0)
  126. {
  127. result = ModelConvertHelper<Temp>.ConvertToModel(dt);
  128. }
  129. var jsonData = JsonConvert.SerializeObject(result);
  130. var countSql =
  131. $"select count(1) from (select * from sup_PurchaseDemand C where 1=1 {queryCondition}) R";
  132. var count = DataAccess.GetRowCountDefine(countSql, param.ToArray(), out _);
  133. return Json(new
  134. {
  135. items = result,
  136. sum = new { },
  137. totalCount = count
  138. });
  139. }
  140. [AuthPermission]
  141. [HttpPost]
  142. [Route("add")]
  143. public JsonResult Add(string staffid, [FromBody] dynamic entity)
  144. {
  145. var userid = getStaffUserid(staffid);
  146. //判断参数是否合法
  147. if (string.IsNullOrEmpty(userid))
  148. {
  149. return Json(new
  150. {
  151. success = 0,
  152. msg = "没有登陆"
  153. });
  154. }
  155. string state = "0";
  156. if(entity != null)
  157. {
  158. if(entity.state != null )
  159. state = entity.state.ToString();
  160. }
  161. var sql0 = "select * from sup_Account where id = @userid";
  162. var param0 = new List<SqlParameter>();
  163. param0.Add(new SqlParameter("userid", int.Parse(userid)));
  164. var dt0 = new DataTable();
  165. DataAccess.GetValues(sql0, ref dt0, param0.ToArray(), out _);
  166. var userName = string.Empty;
  167. if (dt0 != null && dt0.Rows.Count > 0)
  168. {
  169. userName = dt0.Rows[0]["AccountRealName"].ToString();
  170. }
  171. var sql =
  172. $"insert into sup_PurchaseDemand (Title, Content, CreatorID, CreatorName, CreateDate, State, LastModifier, LastModifierID, LastModifyDate) values (@Title, @Content, @CreatorID, @CreatorName, @CreateDate, @State, @LastModifier, @LastModifierID, @LastModifyDate);" +
  173. $"SELECT IDENT_CURRENT('sup_PurchaseDemand') as newid";
  174. var param = new List<SqlParameter>();
  175. param.Add(new SqlParameter("Title", entity.title.ToString()));
  176. param.Add(new SqlParameter("Content", entity.content.ToString()));
  177. param.Add(new SqlParameter("CreatorID", userid));
  178. param.Add(new SqlParameter("CreatorName", userName));
  179. param.Add(new SqlParameter("CreateDate", DateTime.Now));
  180. param.Add(new SqlParameter("State", state));
  181. param.Add(new SqlParameter("LastModifier", userName));
  182. param.Add(new SqlParameter("LastModifierID", userid));
  183. param.Add(new SqlParameter("LastModifyDate", DateTime.Now));
  184. //DataAccess.ExecuteCommand(sql, param, out var msg);
  185. DataAccess.GetOneValue(sql, param.ToArray(), out var result, out var msg);
  186. JObject obj = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeObject(entity));
  187. //int id = BaseDAL.GetId("sup_PurchaseDemand");
  188. int id = Decimal.ToInt32((decimal)result);
  189. var flag = true;
  190. if (obj.TryGetValue("files", out var value))
  191. {
  192. var l = value.ToString().Split(',');
  193. var param1 = new List<SqlParameter>();
  194. var s = "update sup_UPLOADFILES set InUse =0 where RelativeId= @RelativeId and RelativeTable='sup_PurchaseDemand';";
  195. param1.Add(new SqlParameter("RelativeId", id));
  196. if (DataAccess.ExecuteCommand(s, param1.ToArray(), out _) < 1)
  197. {
  198. flag = false;
  199. }
  200. foreach (var item in l)
  201. {
  202. var param2 = new List<SqlParameter>();
  203. var sql2 = $"update sup_UPLOADFILES set RelativeTable='sup_PurchaseDemand' ,RelativeId= @RelativeId,InUse=1 where path=@path";
  204. param2.Add(new SqlParameter("RelativeId", id));
  205. var path = item.Replace("\\", "/");
  206. param2.Add(new SqlParameter("path", path));
  207. if (DataAccess.ExecuteCommand(sql2, param2.ToArray(), out _) < 1)
  208. {
  209. flag = false;
  210. }
  211. }
  212. }
  213. return Json(new
  214. {
  215. success = true,
  216. msg
  217. });
  218. }
  219. private ILog log = LogManager.GetLogger(Startup.Repository.Name, typeof(SupDemandController));
  220. [AuthPermission]
  221. [HttpPost]
  222. [Route("delete")]
  223. public JsonResult Delete([FromServices]IHostingEnvironment env, int id)
  224. {
  225. //var userid = getStaffUserid(staffid);
  226. ////判断参数是否合法
  227. //if (string.IsNullOrEmpty(userid))
  228. //{
  229. // return Json(new
  230. // {
  231. // success = 0,
  232. // msg = "没有登陆"
  233. // });
  234. //}
  235. List<DataAccessCommand> list = new List<DataAccessCommand>(2);
  236. //删除文件
  237. var sql0 = "select Path from sup_UPLOADFILES where RelativeId = @RelativeId and RelativeTable='sup_PurchaseDemand';";
  238. var param0 = new List<SqlParameter>();
  239. param0.Add(new SqlParameter("RelativeId", id));
  240. var dt0 = new DataTable();
  241. DataAccess.GetValues(sql0, ref dt0, param0.ToArray(), out _);
  242. var filePath = string.Empty;
  243. if (dt0 != null && dt0.Rows.Count > 0)
  244. {
  245. for(int i = 0; i< dt0.Rows.Count; i=i+1) {
  246. filePath = dt0.Rows[i]["Path"].ToString();
  247. log.Info("env.WebRootPath:" + env.WebRootPath);
  248. System.IO.File.Delete(Path.Combine(env.WebRootPath, filePath.Replace('/', Path.DirectorySeparatorChar)));
  249. }
  250. }
  251. //删除记录
  252. var sql = $"delete sup_PurchaseDemand where ID = @ID";
  253. var param = new List<SqlParameter>();
  254. param.Add(new SqlParameter("ID", id));
  255. //DataAccess.ExecuteCommand(sql, param, out var msg);
  256. list.Add(new DataAccessCommand(sql, param,CommandType.Text,true));
  257. var param1 = new List<SqlParameter>();
  258. var sql1 = "delete sup_UPLOADFILES where RelativeId= @RelativeId and RelativeTable='sup_PurchaseDemand';";
  259. param1.Add(new SqlParameter("RelativeId", id));
  260. //DataAccess.ExecuteCommand(sqlFil, paramFile, out var msgFile);
  261. list.Add(new DataAccessCommand(sql1, param1, CommandType.Text, false));
  262. bool success = DataAccess.ExecuteBatchCommands(list,out var result);
  263. return Json(new
  264. {
  265. success = success,
  266. msg = result
  267. });
  268. }
  269. [AuthPermission]
  270. [HttpPost]
  271. [Route("edit")]
  272. public JsonResult Edit(string staffid, [FromBody] dynamic entity)
  273. {
  274. var userid = getStaffUserid(staffid);
  275. //判断参数是否合法
  276. if (string.IsNullOrEmpty(userid))
  277. {
  278. return Json(new
  279. {
  280. success = 0,
  281. msg = "没有登陆"
  282. });
  283. }
  284. var sql0 = "select * from sup_Account where id = @userid";
  285. var param0 = new List<SqlParameter>();
  286. param0.Add(new SqlParameter("userid", int.Parse(userid)));
  287. var dt0 = new DataTable();
  288. DataAccess.GetValues(sql0, ref dt0, param0.ToArray(), out _);
  289. var userName = string.Empty;
  290. if (dt0 != null && dt0.Rows.Count > 0)
  291. {
  292. userName = dt0.Rows[0]["AccountRealName"].ToString();
  293. }
  294. var sql =
  295. $"update sup_PurchaseDemand set Title=@Title, Content=@Content,Comment=@Comment, State=@State ,LastModifier=@LastModifier, LastModifierID=@LastModifierID, LastModifyDate=@LastModifyDate where ID = @ID";
  296. var param = new List<SqlParameter>();
  297. param.Add(new SqlParameter("Title", entity.title.ToString()));
  298. param.Add(new SqlParameter("Content", entity.content.ToString()));
  299. param.Add(new SqlParameter("Comment", entity.comment.ToString()));
  300. param.Add(new SqlParameter("State", entity.state.ToString()));
  301. param.Add(new SqlParameter("ID", entity.id.ToString()));
  302. param.Add(new SqlParameter("LastModifier", userName));
  303. param.Add(new SqlParameter("LastModifierID", userid));
  304. param.Add(new SqlParameter("LastModifyDate", DateTime.Now));
  305. DataAccess.ExecuteCommand(sql, param, out var msg);
  306. JObject obj = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeObject(entity));
  307. var flag = true;
  308. if (obj.TryGetValue("files", out var value))
  309. {
  310. var l = value.ToString().Split(',');
  311. var param1 = new List<SqlParameter>();
  312. var s = "update sup_UPLOADFILES set InUse =0 where RelativeId= @RelativeId and RelativeTable='sup_PurchaseDemand';";
  313. param1.Add(new SqlParameter("RelativeId", (int)entity.id));
  314. if (DataAccess.ExecuteCommand(s, param1.ToArray(), out _) < 1)
  315. {
  316. flag = false;
  317. }
  318. foreach (var item in l)
  319. {
  320. var param2 = new List<SqlParameter>();
  321. var sql2 = $"update sup_UPLOADFILES set RelativeTable='sup_PurchaseDemand' ,RelativeId= @RelativeId,InUse=1 where path=@path";
  322. param2.Add(new SqlParameter("RelativeId", (int)entity.id));
  323. var path = item.Replace("\\", "/");
  324. param2.Add(new SqlParameter("path", path));
  325. if (DataAccess.ExecuteCommand(sql2, param2.ToArray(), out _) < 1)
  326. {
  327. flag = false;
  328. }
  329. }
  330. }
  331. return Json(new
  332. {
  333. success = true,
  334. msg
  335. });
  336. }
  337. [AuthPermission]
  338. [HttpGet]
  339. [Route("getlatestdata")]
  340. public JsonResult GetLatestData()
  341. {
  342. var sql = $"select top 5 * from sup_PurchaseDemand where State =1 order by LastModifyDate desc ";
  343. var param = new List<SqlParameter>();
  344. var dt = new DataTable();
  345. DataAccess.GetValues(sql, ref dt, param.ToArray(), out _);
  346. IList<Temp> result = new List<Temp>();
  347. if (dt != null && dt.Rows.Count > 0)
  348. {
  349. result = ModelConvertHelper<Temp>.ConvertToModel(dt);
  350. }
  351. var jsonData = JsonConvert.SerializeObject(result);
  352. return Json(new
  353. {
  354. items = result,
  355. success = true
  356. });
  357. }
  358. public class Temp
  359. {
  360. private string files;
  361. public int ID { get; set; }
  362. public string GoodsName { get; set; }
  363. public int Number { get; set; }
  364. public int CreatorID { get; set; }
  365. public string CreatorName { get; set; }
  366. public DateTime CreateDate { get; set; }
  367. public string Comment { get; set; }
  368. public bool State { get; set; }
  369. public DateTime LastModifyDate { get; set; }
  370. public int LastModifierID { get; set; }
  371. public string LastModifier { get; set; }
  372. public string Title { get; set; }
  373. public string Content { get; set; }
  374. public string Files
  375. {
  376. get
  377. {
  378. if (string.IsNullOrEmpty(files))
  379. return "";
  380. return files;
  381. }
  382. set { files = value; }
  383. }
  384. }
  385. }
  386. }