MacProgramController.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461
  1. using DllEapEntity.Dtos;
  2. using DllEapEntity;
  3. using Microsoft.AspNetCore.Mvc;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Text;
  7. using Cksoft.Data;
  8. using Cksoft.Data.Repository;
  9. using DllEapDal;
  10. using System.Linq;
  11. using DllUfpDal;
  12. using Cksoft.Unity;
  13. using Cksoft.Unity.Log4NetConfig;
  14. using Microsoft.AspNetCore.Authorization;
  15. using System.Threading.Tasks;
  16. using DllEapCommon.NPOI;
  17. using System.IO;
  18. using AutoMapper;
  19. namespace DllEapBll.Controllers
  20. {
  21. /// <summary>
  22. /// 机台程序
  23. /// </summary>
  24. [Authorize]
  25. [ApiController]
  26. [Route("eap/api/[controller]/[action]")]
  27. public class MacProgramController : ControllerBase
  28. {
  29. private IMapper _mapper;
  30. public MacProgramController(IMapper mapper)
  31. {
  32. _mapper = mapper;
  33. }
  34. /// <summary>
  35. /// 机台程序列表
  36. /// </summary>
  37. /// <param name="filter"></param>
  38. /// <param name="sort"></param>
  39. /// <param name="pageIndex"></param>
  40. /// <param name="pageSize"></param>
  41. /// <param name="sortField"></param>
  42. /// <param name="sortOrder"></param>
  43. /// <returns></returns>
  44. [HttpGet]
  45. public LayuiModel<MacProgram> Get(string filter, string sort, int pageIndex = 1, int pageSize = 10, string sortField = "a.version", string sortOrder = "ascend")
  46. {
  47. string userCode = Request.Headers["usercode"];
  48. if (!string.IsNullOrEmpty(sort))
  49. {
  50. var arr = sort.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  51. if (arr != null && arr.Length > 0)
  52. {
  53. sortField = arr[0];
  54. sortOrder = arr[1];
  55. }
  56. }
  57. if (sortOrder == "descend")
  58. {
  59. sortOrder = "desc";
  60. }
  61. else
  62. {
  63. sortOrder = "asc";
  64. }
  65. int start, end;
  66. start = (pageIndex - 1) * pageSize + 1;
  67. end = start + pageSize;
  68. using (IDatabase db = DbFactory.Base("eapslave"))
  69. {
  70. db.BeginTrans();
  71. var dal = new MacProgramDal(db, userCode);
  72. var total = dal.GetVersionCount(filter);
  73. string errorinfo = string.Empty;
  74. var roles = dal.Get(start, pageSize, sortOrder, sortField, filter, errorinfo);
  75. return new LayuiModel<MacProgram>
  76. {
  77. code = 1,
  78. count = total,
  79. data = roles,
  80. msg = ""
  81. };
  82. }
  83. }
  84. /// <summary>
  85. /// 删除程序
  86. /// </summary>
  87. /// <param name="id"></param>
  88. /// <returns></returns>
  89. [HttpPost]
  90. public EapResponse Delete([FromBody] int id)
  91. {
  92. IDatabase db = null;
  93. string errormsg = string.Empty;
  94. try
  95. {
  96. db = DbFactory.Base("eap");
  97. var dal = new MacProgramDal(db);
  98. db.BeginTrans();
  99. var model = dal.getBusinessFile(id);
  100. var res = dal.Delete(id, ref errormsg);
  101. if (res < 0)
  102. {
  103. db.Rollback();
  104. return new EapResponse()
  105. {
  106. Code = -1,
  107. Msg = errormsg
  108. };
  109. }
  110. db.Commit();
  111. LogHelper<MacProgram>.LogFatal("删除MacProgram-->id:" + Json.ToJson(model), "用户操作", Request.Headers["usercode"]);
  112. return new EapResponse()
  113. {
  114. Code = 1,
  115. Msg = ""
  116. };
  117. }
  118. catch (Exception e)
  119. {
  120. errormsg = e.Message;
  121. return new EapResponse
  122. {
  123. Code = -1,
  124. Msg = errormsg
  125. };
  126. }
  127. finally
  128. {
  129. if (db != null)
  130. db.Close();
  131. }
  132. }
  133. /// <summary>
  134. /// 获取机台程序列表
  135. /// </summary>
  136. /// <param name="filter"></param>
  137. /// <param name="sort"></param>
  138. /// <param name="pageIndex"></param>
  139. /// <param name="pageSize"></param>
  140. /// <param name="sortField"></param>
  141. /// <param name="sortOrder"></param>
  142. /// <returns></returns>
  143. [HttpGet]
  144. public LayuiModel<MacProgramDto> GetProgramsNew(string filter, string sort, int pageIndex = 1, int pageSize = 10, string sortField = "b.FCode,programName", string sortOrder = "ascend")
  145. {
  146. string userCode = Request.Headers["usercode"];
  147. if (!string.IsNullOrEmpty(sort))
  148. {
  149. var arr = sort.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  150. if (arr != null && arr.Length > 0)
  151. {
  152. sortField = arr[0];
  153. sortOrder = arr[1];
  154. }
  155. }
  156. if (sortOrder == "descend")
  157. {
  158. sortOrder = "desc";
  159. }
  160. else
  161. {
  162. sortOrder = "asc";
  163. }
  164. int start, end;
  165. start = (pageIndex - 1) * pageSize + 1;
  166. end = start + pageSize;
  167. using (IDatabase db = DbFactory.Base("eapslave"))
  168. {
  169. db.BeginTrans();
  170. var dal = new MacProgramDal(db, userCode);
  171. var total = dal.GetGroupedCount(filter);
  172. string errorinfo = string.Empty;
  173. var roles = dal.GetGrouped(start, pageSize, sortOrder, sortField, filter, errorinfo);
  174. return new LayuiModel<MacProgramDto>
  175. {
  176. code = 1,
  177. count = total,
  178. data = roles,
  179. msg = ""
  180. };
  181. }
  182. }
  183. /// <summary>
  184. /// 导出机台程序列表
  185. /// </summary>
  186. /// <param name="filterInfo"></param>
  187. /// <returns></returns>
  188. [HttpPost]
  189. public async Task<IActionResult> ExportProgramsNew(IDictionary<string, string> filterInfo)
  190. {
  191. string filter = string.Empty, sort = string.Empty, sortField = "b.FCode,programName", sortOrder = "ascend";
  192. int pageIndex = 1, pageSize = 100000;
  193. if (filterInfo.ContainsKey("filter"))
  194. {
  195. filter = filterInfo["filter"];
  196. }
  197. if (filterInfo.ContainsKey("sortField"))
  198. {
  199. sortField = filterInfo["sortField"];
  200. }
  201. if (filterInfo.ContainsKey("sortOrder"))
  202. {
  203. sortOrder = filterInfo["sortOrder"];
  204. }
  205. if (filterInfo.ContainsKey("sort"))
  206. {
  207. sortOrder = filterInfo["sort"];
  208. }
  209. if (filterInfo.ContainsKey("pageSize") && !string.IsNullOrEmpty(filterInfo["pageSize"]))
  210. {
  211. pageSize = Convert.ToInt32(filterInfo["pageSize"]) > 0 ? Convert.ToInt32(filterInfo["pageSize"]) : pageSize;
  212. }
  213. if (filterInfo.ContainsKey("pageIndex") && !string.IsNullOrEmpty(filterInfo["pageIndex"]))
  214. {
  215. pageIndex = Convert.ToInt32(filterInfo["pageIndex"]) > 0 ? Convert.ToInt32(filterInfo["pageIndex"]) : pageIndex;
  216. }
  217. var roles = GetProgramsNew(filter, sort, pageIndex, pageSize, sortField, sortOrder).data;
  218. var list = _mapper.Map<IEnumerable<ExportMacProgramDto>>(roles).ToList();
  219. var book = DataExportHelper.EntityToExcel(list);
  220. MemoryStream ms = new MemoryStream();
  221. ms.Position = 0;
  222. book.Write(ms);
  223. ms.Dispose();
  224. ms.Close();
  225. await Task.CompletedTask;
  226. return File(ms.ToArray(), "application/octet-stream");
  227. }
  228. /// <summary>
  229. /// 获取程序文件名称
  230. /// </summary>
  231. /// <param name="macCode"></param>
  232. /// <param name="programName"></param>
  233. /// <returns></returns>
  234. [HttpGet]
  235. public LayuiModel<string> GetProgramFiles(string macCode, string programName)
  236. {
  237. string errorinfo = string.Empty;
  238. using (IDatabase db = DbFactory.Base("eapslave"))
  239. {
  240. var programdal = new MacProgramDal(db);
  241. var dirs = programdal.GetProgramFiles(macCode, programName, ref errorinfo);
  242. if (dirs != null)
  243. {
  244. return new LayuiModel<string>()
  245. {
  246. code = 1,
  247. count = dirs.Count(),
  248. data = dirs,
  249. msg = string.Empty
  250. };
  251. }
  252. return new LayuiModel<string>()
  253. {
  254. code = -1,
  255. data = null,
  256. msg = errorinfo
  257. };
  258. }
  259. }
  260. /// <summary>
  261. /// 设置默认程序
  262. /// </summary>
  263. /// <param name="valuePairs"></param>
  264. /// <returns></returns>
  265. [HttpPost]
  266. public EapResponse SetDefault([FromBody] IDictionary<string, string> valuePairs)
  267. {
  268. string errorinfo = string.Empty;
  269. string userCode = Request.Headers["usercode"];
  270. string btnCode = "SetDefaultProgram";
  271. using (IDatabase ufpDb = DbFactory.Base("ufp"))
  272. {
  273. var btnFuncDal = new BtnFuncDal(ufpDb);
  274. var res = btnFuncDal.IsPermitted(userCode, btnCode, ref errorinfo);
  275. if (!res)
  276. {
  277. return new EapResponse
  278. {
  279. Code = -1,
  280. Msg = errorinfo
  281. };
  282. }
  283. }
  284. var id = Convert.ToInt32(valuePairs["id"]);
  285. var isDefault = Convert.ToInt32(valuePairs["isDefault"]);
  286. var macId = Convert.ToInt32(valuePairs["macId"]);
  287. var programName = valuePairs["programName"];
  288. using (IDatabase db = DbFactory.Base("eap"))
  289. {
  290. var dal = new MacProgramDal(db);
  291. var res = dal.UpdateField(id, isDefault, macId, programName, ref errorinfo);
  292. if (res > 0)
  293. {
  294. LogHelper<MacProgram>.LogFatal("修改BusinessFileRelation-->" + "isDefault" + isDefault + ";id" + id, "用户操作", userCode);
  295. }
  296. var response = new EapResponse
  297. {
  298. Code = res,
  299. Msg = errorinfo
  300. };
  301. return response;
  302. }
  303. }
  304. /// <summary>
  305. /// 修改程序名
  306. /// </summary>
  307. /// <param name="valuePairs"></param>
  308. /// <returns></returns>
  309. [HttpPost]
  310. public EapResponse ChangeProName([FromBody] IDictionary<string, string> valuePairs)
  311. {
  312. if (valuePairs == null || valuePairs.Keys.Count == 0)
  313. return null;
  314. var macCode = valuePairs["macCode"];
  315. var oldName = valuePairs["oldName"];
  316. var newName = valuePairs["newName"];
  317. newName = newName.TrimStart().TrimEnd(); // 去除新程序名的前后空格
  318. var bll = new EapBll("eap");
  319. string errorinfo = string.Empty;
  320. var res = bll.ModifyProgramName(macCode, oldName, newName.Trim(), ref errorinfo);
  321. if (res > 0)
  322. {
  323. LogHelper<MacProgram>.LogFatal("ModifyProgramName-->macCode" + macCode + ";oldName" + oldName + ";newName" + newName, "用户操作", "none");
  324. return new EapResponse { Code = 1, Msg = string.Empty };
  325. }
  326. return new EapResponse { Code = -1, Msg = errorinfo };
  327. }
  328. /// <summary>
  329. /// 复制单个程序
  330. /// </summary>
  331. /// <param name="valuePairs"></param>
  332. /// <returns></returns>
  333. [HttpPost]
  334. public EapResponse CopySingleProgram([FromBody] IDictionary<string, string> valuePairs)
  335. {
  336. if (valuePairs == null || valuePairs.Keys.Count == 0)
  337. return null;
  338. string errorinfo = string.Empty;
  339. var macCodes = valuePairs["macCodes"];
  340. var proid = Convert.ToInt32(valuePairs["proId"]);
  341. var macCodeArr = macCodes.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  342. string usercode = Request.Headers["usercode"];
  343. using (IDatabase db = DbFactory.Base("eap"))
  344. {
  345. var dal = new MacProgramDal(db);
  346. var res = dal.CopyProgramVersion(macCodeArr, proid, usercode, ref errorinfo);
  347. if (res > 0)
  348. LogHelper<MacProgram>.LogFatal("CopyProgramVersion-->macCodeArr" + macCodeArr + ";proid" + proid, "用户操作", usercode);
  349. return new EapResponse { Code = 1, Msg = errorinfo };
  350. }
  351. }
  352. /// <summary>
  353. /// 复制全部程序
  354. /// </summary>
  355. /// <param name="valuePairs"></param>
  356. /// <returns></returns>
  357. [HttpPost]
  358. public EapResponse CopyWholeProgram([FromBody] IDictionary<string, string> valuePairs)
  359. {
  360. if (valuePairs == null || valuePairs.Keys.Count == 0)
  361. return null;
  362. string errorinfo = string.Empty;
  363. var macCodes = valuePairs["macCodes"];
  364. var oriMacCode = valuePairs["oriMacCode"];
  365. var macCodeArr = macCodes.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  366. string usercode = Request.Headers["usercode"];
  367. using (IDatabase db = DbFactory.Base("eap"))
  368. {
  369. var dal = new MacProgramDal(db);
  370. var res = dal.CopyWholePrograms(macCodeArr, oriMacCode, usercode, ref errorinfo);
  371. if (res > 0)
  372. LogHelper<MacProgram>.LogFatal("CopyWholePrograms-->macCodeArr" + macCodeArr + ";oriMacCode" + oriMacCode, "用户操作", usercode);
  373. return new EapResponse { Code = 1, Msg = errorinfo };
  374. }
  375. }
  376. /// <summary>
  377. /// 删除版本
  378. /// </summary>
  379. /// <param name="valuePairs"></param>
  380. /// <returns></returns>
  381. [HttpPost]
  382. public EapResponse DeleteVersion([FromBody] IDictionary<string, string> valuePairs)
  383. {
  384. if (valuePairs == null || valuePairs.Keys.Count == 0)
  385. return null;
  386. string errorinfo = string.Empty;
  387. var macCode = valuePairs["macCode"];
  388. var id = Convert.ToInt32(valuePairs["id"]);
  389. string usercode = Request.Headers["usercode"];
  390. using (IDatabase db = DbFactory.Base("eap"))
  391. {
  392. var dal = new MacProgramDal(db);
  393. db.BeginTrans();
  394. var model = dal.getBusinessFileRelation(id);
  395. var modelsec = dal.getBusinessFile(model);
  396. var res = dal.DeleteSingVersion(id, macCode, ref errorinfo);
  397. var eapRes = new EapResponse() { Code = 1, Msg = string.Empty };
  398. if (res < 0)
  399. {
  400. db.Rollback();
  401. eapRes.Code = -1;
  402. eapRes.Msg = errorinfo;
  403. }
  404. db.Commit();
  405. LogHelper<MacProgram>.LogFatal("删除MacProgram-->BusinessFileRelation:" + Json.ToJson(model) + ";BusinessFile-->" + Json.ToJson(modelsec), "用户操作", usercode);
  406. return eapRes;
  407. }
  408. }
  409. /// <summary>
  410. /// 删除单个程序
  411. /// </summary>
  412. /// <param name="valuePairs"></param>
  413. /// <returns></returns>
  414. [HttpPost]
  415. public EapResponse DeleteSingleWholeProgram([FromBody] IDictionary<string, string> valuePairs)
  416. {
  417. if (valuePairs == null || valuePairs.Keys.Count == 0)
  418. return null;
  419. string errorinfo = string.Empty;
  420. var macCode = valuePairs["macCode"];
  421. var proName = valuePairs["proName"];
  422. string usercode = Request.Headers["usercode"];
  423. using (IDatabase db = DbFactory.Base("eap"))
  424. {
  425. var dal = new MacProgramDal(db);
  426. db.BeginTrans();
  427. var model = dal.getbusinessfilerelation(proName, macCode, ref errorinfo);
  428. var modelsec = dal.getBusinessFile(proName, macCode, ref errorinfo);
  429. var res = dal.DeleteWholeProgram(proName, macCode, ref errorinfo);
  430. var eapRes = new EapResponse() { Code = 1, Msg = string.Empty };
  431. if (res < 0)
  432. {
  433. db.Rollback();
  434. eapRes.Code = -1;
  435. eapRes.Msg = errorinfo;
  436. }
  437. db.Commit();
  438. LogHelper<MacProgram>.LogFatal("businessfilerelation-->:" + Json.ToJson(model) + ";BusinessFile" + Json.ToJson(modelsec) + "; macCode" + macCode, "用户操作", usercode);
  439. return eapRes;
  440. }
  441. }
  442. }
  443. }