CmkController.cs 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695
  1. using AutoMapper;
  2. using Cksoft.Data;
  3. using Cksoft.Data.Repository;
  4. using Cksoft.Unity;
  5. using Cksoft.Unity.Log4NetConfig;
  6. using DllEapCommon.NPOI;
  7. using DllEapDal.OFILM;
  8. using DllEapEntity;
  9. using DllEapEntity.Dtos;
  10. using DllEapEntity.OFILM;
  11. using Microsoft.AspNetCore.Authorization;
  12. using Microsoft.AspNetCore.Hosting;
  13. using Microsoft.AspNetCore.Http;
  14. using Microsoft.AspNetCore.Mvc;
  15. using Newtonsoft.Json;
  16. using System;
  17. using System.Collections.Generic;
  18. using System.IO;
  19. using System.Linq;
  20. using System.Text;
  21. using System.Threading.Tasks;
  22. namespace DllEapBll.OFILM
  23. {
  24. /// <summary>
  25. /// CMK
  26. /// </summary>
  27. [Route("eap/api/[controller]/[action]")]
  28. [ApiController]
  29. [Authorize]
  30. public class CmkController : ControllerBase
  31. {
  32. private readonly IHostingEnvironment _hostingEnvironment;
  33. private IMapper _mapper;
  34. public CmkController(IHostingEnvironment hostingEnvironment,IMapper mapper)
  35. {
  36. _hostingEnvironment = hostingEnvironment;
  37. _mapper = mapper;
  38. }
  39. /// <summary>
  40. /// cmk 报表查询
  41. /// </summary>
  42. /// <param name="filter"></param>
  43. /// <param name="pageIndex"></param>
  44. /// <param name="pageSize"></param>
  45. /// <param name="sortField"></param>
  46. /// <param name="sortOrder"></param>
  47. /// <returns></returns>
  48. [HttpGet]
  49. public LayuiModel<Ofilmcmk> Get(string filter, int pageIndex = 1, int pageSize = 10, string sortField = "Classes", string sortOrder = "ascend")
  50. {
  51. if (sortOrder == "descend")
  52. {
  53. sortOrder = "desc";
  54. }
  55. else
  56. {
  57. sortOrder = "asc";
  58. }
  59. int start, end;
  60. start = (pageIndex - 1) * pageSize + 1;
  61. end = start + pageSize;
  62. using (IDatabase db = DbFactory.Base("eapslave"))
  63. {
  64. db.BeginTrans();
  65. var dal = new CmkDal(db);
  66. string errorinfo = string.Empty;
  67. var roles = dal.Get(start, pageSize, sortOrder, sortField, filter, errorinfo);
  68. var total = dal.GetCount(filter);
  69. string upLoadDir = AppConfigurtaionServices.Configuration["upload"];
  70. return new LayuiModel<Ofilmcmk>
  71. {
  72. code = 1,
  73. count = total,
  74. data = roles,
  75. msg = upLoadDir
  76. };
  77. }
  78. }
  79. [HttpPost]
  80. public async Task<IActionResult> Export(IDictionary<string, string> filterInfo)
  81. {
  82. string filter = string.Empty; int pageIndex = 1, pageSize = 100000; string sortField = "Classes", sortOrder = "ascend";
  83. if (filterInfo.ContainsKey("filter"))
  84. {
  85. filter = filterInfo["filter"];
  86. }
  87. if (filterInfo.ContainsKey("sortField"))
  88. {
  89. sortField = filterInfo["sortField"];
  90. }
  91. if (filterInfo.ContainsKey("sortOrder"))
  92. {
  93. sortOrder = filterInfo["sortOrder"];
  94. }
  95. if (filterInfo.ContainsKey("pageSize") && !string.IsNullOrEmpty(filterInfo["pageSize"]))
  96. {
  97. pageSize = Convert.ToInt32(filterInfo["pageSize"]) > 0 ? Convert.ToInt32(filterInfo["pageSize"]) : pageSize;
  98. }
  99. if (filterInfo.ContainsKey("pageIndex") && !string.IsNullOrEmpty(filterInfo["pageIndex"]))
  100. {
  101. pageIndex = Convert.ToInt32(filterInfo["pageIndex"]) > 0 ? Convert.ToInt32(filterInfo["pageIndex"]) : pageIndex;
  102. }
  103. List<string> str = new List<string>() {"课别","楼层","客户","设备ID","位置","CMK","Y","T","P值","Y","T","附件","维护人","维护日期","下次取值日期" };
  104. List<int> index = new List<int>() { 5, 7, 8, 10 };
  105. var roles = Get(filter, pageIndex, pageSize, sortField, sortOrder).data;
  106. var list = _mapper.Map<IEnumerable<ExportOfilmcmk>>(roles).ToList();
  107. var book = DataExportHelper.EntityToExcel(list,str,index);
  108. MemoryStream ms = new MemoryStream();
  109. ms.Position = 0;
  110. book.Write(ms);
  111. ms.Dispose();
  112. ms.Close();
  113. await Task.CompletedTask;
  114. return File(ms.ToArray(), "application/octet-stream");
  115. }
  116. [HttpGet]
  117. public EapResponse GetSingle(int id)
  118. {
  119. using (IDatabase db = DbFactory.Base("eapslave"))
  120. {
  121. var response = new EapResponse() { Code = 1, Msg = string.Empty };
  122. string upLoadDir = AppConfigurtaionServices.Configuration["upload"];
  123. var dal = new CmkDal(db);
  124. var model = dal.Get(id);
  125. if(model!=null)
  126. {
  127. // string errorinof = "";
  128. // Dictionary<string, string> dic = new Dictionary<string, string>();
  129. // dic.Add("filename", model.XCmkImg);
  130. //model.XCmkImgBase = HttpRequestHelper<string>.Get(upLoadDir + $@"/eap/api/Upload/Getfile", dic,ref errorinof,null);
  131. // dic = new Dictionary<string, string>();
  132. // dic.Add("filename", model.YCmkImg);
  133. // model.YCmkImgBase = HttpRequestHelper<string>.Get(upLoadDir + $@"/eap/api/Upload/Getfile", dic, ref errorinof, null);
  134. }
  135. response.Data = model;
  136. response.Msg = upLoadDir;
  137. return response;
  138. }
  139. }
  140. [HttpPost]
  141. public EapResponse Add([FromBody] Ofilmcmk programMst)
  142. {
  143. string usercode = Request.Headers["usercode"];
  144. using (IDatabase db = DbFactory.Base("eap"))
  145. {
  146. db.BeginTrans();
  147. var dal = new CmkDal(db);
  148. string errorinfo = string.Empty;
  149. var response = new EapResponse() { Code = 1, Msg = string.Empty };
  150. int id = -1;
  151. if (programMst.ID == 0)
  152. {
  153. id = dal.Add(programMst, usercode, ref errorinfo);
  154. }
  155. else
  156. {
  157. id = dal.Update(programMst, usercode, ref errorinfo);
  158. }
  159. if (id < 0)
  160. {
  161. db.Rollback();
  162. response.Code = -1;
  163. response.Msg = errorinfo;
  164. }
  165. else
  166. {
  167. db.Commit();
  168. if (programMst.ID == 0)
  169. {
  170. LogHelper<WorkingProcedure>.LogFatal("新增WorkProcedure-->" + Json.ToJson(programMst), "用户操作", usercode);
  171. }
  172. else
  173. LogHelper<WorkingProcedure>.LogFatal("修改WorkProcedure-->" + Json.ToJson(programMst), "用户操作", usercode);
  174. }
  175. response.Id = id;
  176. return response;
  177. }
  178. }
  179. [HttpPost]
  180. public EapResponse Delete([FromBody] int id)
  181. {
  182. IDatabase db = null;
  183. string errormsg = string.Empty;
  184. try
  185. {
  186. using (db = DbFactory.Base("eap"))
  187. {
  188. var dal = new CmkDal(db);
  189. var model = dal.getWorkingProcedure(id);
  190. var modelsec = dal.Get(id);
  191. //db.BeginTrans();
  192. var res = dal.Delete(id, ref errormsg);
  193. if (res < 0)
  194. {
  195. // db.Rollback();
  196. return new EapResponse()
  197. {
  198. Code = -1,
  199. Msg = errormsg
  200. };
  201. }
  202. //db.Commit();
  203. LogHelper<WorkingProcedure>.LogFatal("删除WorkProcedure-->:" + Json.ToJson(modelsec) + ";apappservermac" + Json.ToJson(model), "用户操作", Request.Headers["usercode"]);
  204. return new EapResponse()
  205. {
  206. Code = 1,
  207. Msg = ""
  208. };
  209. }
  210. }
  211. catch (Exception e)
  212. {
  213. errormsg = e.Message;
  214. return new EapResponse
  215. {
  216. Code = -1,
  217. Msg = errormsg
  218. };
  219. }
  220. finally
  221. {
  222. if (db != null)
  223. db.Close();
  224. }
  225. }
  226. [HttpPost]
  227. public EapResponse DeleteAll([FromBody] dynamic filter)
  228. {
  229. IDatabase db = null;
  230. string errormsg = string.Empty;
  231. string ff = filter["filter"];
  232. try
  233. {
  234. using (db = DbFactory.Base("eap"))
  235. {
  236. var dal = new CmkDal(db);
  237. //var model = dal.getWorkingProcedure(id);
  238. //var modelsec = dal.Get(id);
  239. //db.BeginTrans();
  240. var res = dal.DeleteAll(ff, ref errormsg);
  241. if (res < 0)
  242. {
  243. // db.Rollback();
  244. return new EapResponse()
  245. {
  246. Code = -1,
  247. Msg = errormsg
  248. };
  249. }
  250. //db.Commit();
  251. //LogHelper<WorkingProcedure>.LogFatal("删除WorkProcedure-->:" + Json.ToJson(modelsec) + ";apappservermac" + Json.ToJson(model), "用户操作", Request.Headers["usercode"]);
  252. return new EapResponse()
  253. {
  254. Code = 1,
  255. Msg = ""
  256. };
  257. }
  258. }
  259. catch (Exception e)
  260. {
  261. errormsg = e.Message;
  262. return new EapResponse
  263. {
  264. Code = -1,
  265. Msg = errormsg
  266. };
  267. }
  268. finally
  269. {
  270. if (db != null)
  271. db.Close();
  272. }
  273. }
  274. //[HttpPost]
  275. //public EapResponse Upload([FromBody] WorkingProcedureDto str)
  276. //{
  277. // string usercode = Request.Headers["usercode"];
  278. // List<WorkingProcedure> wps = new List<WorkingProcedure>();
  279. // foreach (List<string> it in str.Sheet1)
  280. // {
  281. // if (it.Count > 7 && it[0] != "园区")
  282. // {
  283. // WorkingProcedure workingProcedure = new WorkingProcedure();
  284. // workingProcedure.Park = it[0]?.Trim();
  285. // workingProcedure.Floor = it[1]?.Trim();
  286. // workingProcedure.MachineType = it[2]?.Trim();
  287. // workingProcedure.WorkshopSection = it[3]?.Trim();
  288. // workingProcedure.AssignmentContent = it[4]?.Trim();
  289. // workingProcedure.EquipmentName = it[5]?.Trim();
  290. // workingProcedure.EquipmentModel = it[6]?.Trim();
  291. // workingProcedure.EropTurnoverRate = it[7]?.Trim();
  292. // workingProcedure.UPH = it[8]?.Trim().Replace(",", "");
  293. // workingProcedure.RecCode = usercode;
  294. // workingProcedure.ModCode = usercode;
  295. // workingProcedure.RecTime = DateTime.Now;
  296. // workingProcedure.ModTime = DateTime.Now;
  297. // wps.Add(workingProcedure);
  298. // }
  299. // }
  300. // IDatabase db = null;
  301. // string errormsg = string.Empty;
  302. // Object er = null;
  303. // try
  304. // {
  305. // db = DbFactory.Base("eap");
  306. // var dal = new CmkDal(db);
  307. // db.BeginTrans();
  308. // int ck = dal.CheckSame(wps, ref er);
  309. // if (ck < 0)
  310. // {
  311. // db.Rollback();
  312. // return new EapResponse()
  313. // {
  314. // Code = -2,
  315. // //Msg = er,
  316. // Data = er
  317. // };
  318. // }
  319. // var res = dal.Adds(wps, usercode, ref errormsg); ;
  320. // if (res < 0)
  321. // {
  322. // db.Rollback();
  323. // return new EapResponse()
  324. // {
  325. // Code = -1,
  326. // Msg = errormsg
  327. // };
  328. // }
  329. // db.Commit();
  330. // //LogHelper<WorkingProcedure>.LogFatal("删除WorkProcedure-->:" + Json.ToJson(modelsec) + ";apappservermac" + Json.ToJson(model), "用户操作", Request.Headers["usercode"]);
  331. // return new EapResponse()
  332. // {
  333. // Code = 1,
  334. // Msg = ""
  335. // };
  336. // }
  337. // catch (Exception e)
  338. // {
  339. // errormsg = e.Message;
  340. // return new EapResponse
  341. // {
  342. // Code = -1,
  343. // Msg = errormsg
  344. // };
  345. // }
  346. // finally
  347. // {
  348. // if (db != null)
  349. // db.Close();
  350. // }
  351. //}
  352. [HttpGet]
  353. public IEnumerable<Ofilmcmk> GetEquipmentnumberExprort(string filter, string sortField = "count", string sortOrder = "ascend", int take = 10)
  354. {
  355. if (sortOrder == "descend")
  356. {
  357. sortOrder = "desc";
  358. }
  359. else
  360. {
  361. sortOrder = "asc";
  362. }
  363. using (IDatabase db = DbFactory.Base("eapslave"))
  364. {
  365. var dal = new CmkDal(db);
  366. var dtos = dal.GetWorkingProcedureExprort(filter, sortField, sortOrder, take);
  367. return dtos;
  368. }
  369. }
  370. /// <summary>
  371. /// 上传图片
  372. /// </summary>
  373. /// <returns></returns>
  374. [HttpPost]
  375. public EapResponse Upload()
  376. {
  377. string upLoadDir = AppConfigurtaionServices.Configuration["upload"];
  378. CmkFile cmkFile = new CmkFile();
  379. var request = Request;
  380. var file = request.Form.Files["file"];
  381. var extension = this.GetFileAExtension(file.FileName);
  382. var fileNewName = "";
  383. fileNewName = file.FileName;
  384. cmkFile.Extension = extension;
  385. cmkFile.FileName = fileNewName;
  386. Stream stream = new MemoryStream();
  387. try
  388. {
  389. stream = file.OpenReadStream();
  390. byte[] bs = new byte[file.Length];
  391. stream.Read(bs, 0, bs.Length);
  392. cmkFile.Bt = bs;
  393. string json = JsonConvert.SerializeObject(cmkFile);
  394. var model = HttpRequestHelper<EapResponse>.HttpPost(upLoadDir + $@"/eap/api/Upload/Uploadfile", json);
  395. model.Msg = file.FileName + "," + upLoadDir;
  396. return model;
  397. }
  398. catch (Exception e)
  399. {
  400. return new EapResponse
  401. {
  402. Code = -1,
  403. Data = e.Message
  404. };
  405. }
  406. finally
  407. {
  408. stream.Close();
  409. stream.Dispose();
  410. }
  411. //**********************************************************
  412. #region
  413. //var request = Request;
  414. //var file = request.Form.Files["file"];
  415. //var dateNow = DateTime.Now;
  416. //var extension = this.GetFileAExtension(file.FileName);
  417. //var fileNewName = "";
  418. ////fileNewName = file.FileName;
  419. //if (file.FileName.Contains("xls") || file.FileName.Contains("xlsx"))
  420. //{
  421. // fileNewName = file.FileName;
  422. //}
  423. //else
  424. //{
  425. // fileNewName = Guid.NewGuid().ToString() + "." + extension;
  426. //}
  427. //Stream stream = new MemoryStream();
  428. //try
  429. //{
  430. // string path = $"/Upload/{dateNow.Year}/{dateNow.Month}/{dateNow.Day}/";
  431. // string phyicPath = _hostingEnvironment.WebRootPath + path;
  432. // string savedPath = phyicPath + fileNewName;
  433. // this.CreateDirectory(phyicPath);
  434. // stream = file.OpenReadStream();
  435. // byte[] bs = new byte[file.Length];
  436. // stream.Read(bs, 0, bs.Length);
  437. // using (FileStream fs = new FileStream(savedPath, FileMode.Create))
  438. // {
  439. // fs.Write(bs, 0, bs.Length);
  440. // return new EapResponse
  441. // {
  442. // Code = 1,
  443. // Data = path + fileNewName,
  444. // Msg = file.FileName + "," + upLoadDir
  445. // };
  446. // }
  447. //}
  448. //catch (Exception e)
  449. //{
  450. // return new EapResponse
  451. // {
  452. // Code = -1,
  453. // Data = e.Message
  454. // };
  455. //}
  456. //finally
  457. //{
  458. // stream.Close();
  459. // stream.Dispose();
  460. //}
  461. #endregion
  462. }
  463. [HttpPost]
  464. public EapResponse Uploadfile([FromBody] CmkFile json)
  465. {
  466. byte[] byteArray = json.Bt;
  467. string upLoadDir = AppConfigurtaionServices.Configuration["upload"];
  468. var dateNow = DateTime.Now;
  469. var fileNewName = "";
  470. if (json.Extension.Contains("xls") || json.Extension.Contains("xlsx"))
  471. {
  472. fileNewName = json.FileName + "." + json.Extension;
  473. }
  474. else
  475. {
  476. fileNewName = Guid.NewGuid().ToString() + "." + json.Extension;
  477. }
  478. Stream stream = new MemoryStream();
  479. try
  480. {
  481. string path = $"/Upload/{dateNow.Year}/{dateNow.Month}/{dateNow.Day}/";
  482. string phyicPath = _hostingEnvironment.WebRootPath + path;
  483. string savedPath = phyicPath + fileNewName;
  484. this.CreateDirectory(phyicPath);
  485. byte[] bs = byteArray;
  486. stream.Read(bs, 0, bs.Length);
  487. using (FileStream fs = new FileStream(savedPath, FileMode.Create))
  488. {
  489. fs.Write(bs, 0, bs.Length);
  490. return new EapResponse
  491. {
  492. Code = 1,
  493. Data = path + fileNewName,
  494. Msg = json.FileName + "," + upLoadDir
  495. };
  496. }
  497. }
  498. catch (Exception e)
  499. {
  500. return new EapResponse
  501. {
  502. Code = -1,
  503. Data = e.Message
  504. };
  505. }
  506. finally
  507. {
  508. stream.Close();
  509. stream.Dispose();
  510. }
  511. }
  512. /// <summary>
  513. /// 上传excel
  514. /// </summary>
  515. /// <param name="str"></param>
  516. /// <returns></returns>
  517. public EapResponse UploadXml([FromBody] List<List<string>> str)
  518. {
  519. string usercode = Request.Headers["usercode"];
  520. List<Ofilmcmk> wps = new List<Ofilmcmk>();
  521. foreach (List<string> it in str)
  522. {
  523. if (it.Count > 7 && it[0] != "课别")
  524. {
  525. Ofilmcmk workingProcedure = new Ofilmcmk();
  526. workingProcedure.Classes = it[0]?.Trim();
  527. workingProcedure.floor = it[1]?.Trim();
  528. workingProcedure.customer = it[2]?.Trim();
  529. workingProcedure.macID = it[3]?.Trim();
  530. workingProcedure.position = it[4]?.Trim();
  531. workingProcedure.XCmk = it[5]?.Trim();
  532. workingProcedure.YCmk = it[6]?.Trim();
  533. workingProcedure.TCmk = it[7]?.Trim();
  534. workingProcedure.XP = it[8]?.Trim();
  535. workingProcedure.YP = it[9]?.Trim();
  536. workingProcedure.TP = it[10]?.Trim();
  537. workingProcedure.NextTime = DateTime.Parse(it[11]);// Convert.ToDateTime(it[11].ToString());
  538. workingProcedure.ThisTime = Convert.ToDateTime(it[12].ToString());
  539. workingProcedure.RecCode = usercode;
  540. workingProcedure.ModCode = usercode;
  541. workingProcedure.RecTime = DateTime.Now;
  542. workingProcedure.ModTime = DateTime.Now;
  543. wps.Add(workingProcedure);
  544. }
  545. }
  546. IDatabase db = null;
  547. string errormsg = string.Empty;
  548. Object er = null;
  549. try
  550. {
  551. using (db = DbFactory.Base("eap"))
  552. {
  553. var dal = new CmkDal(db);
  554. db.BeginTrans();
  555. foreach (var item in wps)
  556. {
  557. var res = dal.Add(item, usercode, ref errormsg);
  558. if (res < 0)
  559. {
  560. db.Rollback();
  561. return new EapResponse()
  562. {
  563. Code = -1,
  564. Msg = errormsg
  565. };
  566. }
  567. }
  568. db.Commit();
  569. LogHelper<Ofilmcmk>.LogFatal("批量新增CMK-->:" + Json.ToJson(wps), "用户操作", Request.Headers["usercode"]);
  570. return new EapResponse()
  571. {
  572. Code = 1,
  573. Msg = ""
  574. };
  575. }
  576. }
  577. catch (Exception e)
  578. {
  579. errormsg = e.Message;
  580. return new EapResponse
  581. {
  582. Code = -1,
  583. Msg = errormsg
  584. };
  585. }
  586. finally
  587. {
  588. if (db != null)
  589. db.Close();
  590. }
  591. }
  592. private void CreateDirectory(string path)
  593. {
  594. if (!Directory.Exists(path))
  595. {
  596. Directory.CreateDirectory(path);
  597. }
  598. }
  599. private string GetFileAExtension(string fileName)
  600. {
  601. var arr = fileName.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
  602. if (arr == null || arr.Length <= 0)
  603. {
  604. return null;
  605. }
  606. return arr[arr.Length - 1];
  607. }
  608. public IEnumerable<SelectDto<string>> GetMultipleClassSelects(string filter)
  609. {
  610. using (IDatabase db = DbFactory.Base("eapslave"))
  611. {
  612. var dal = new CmkDal(db);
  613. return dal.GetMultipleClassSelects(filter).OrderBy(c => c.Label);
  614. }
  615. }
  616. public IEnumerable<SelectDto<string>> GetMultipleFloorSelects(string filter)
  617. {
  618. using (IDatabase db = DbFactory.Base("eapslave"))
  619. {
  620. var dal = new CmkDal(db);
  621. return dal.GetMultipleFloorSelects(filter).OrderBy(c => c.Label);
  622. }
  623. }
  624. public IEnumerable<SelectDto<string>> GetMultipleCustomerSelects(string filter)
  625. {
  626. using (IDatabase db = DbFactory.Base("eapslave"))
  627. {
  628. var dal = new CmkDal(db);
  629. return dal.GetMultipleCustomerSelects(filter).OrderBy(c => c.Label);
  630. }
  631. }
  632. public IEnumerable<SelectDto<string>> GetMultipleMacIDSelects(string filter)
  633. {
  634. using (IDatabase db = DbFactory.Base("eapslave"))
  635. {
  636. var dal = new CmkDal(db);
  637. return dal.GetMultipleMacIDSelects(filter).OrderBy(c => c.Label);
  638. }
  639. }
  640. public IEnumerable<SelectDto<string>> GetMultiplePositionSelects(string filter)
  641. {
  642. using (IDatabase db = DbFactory.Base("eapslave"))
  643. {
  644. var dal = new CmkDal(db);
  645. return dal.GetMultiplePositionSelects(filter).OrderBy(c => c.Label);
  646. }
  647. }
  648. public IEnumerable<SelectDto<string>> GetMultipleRecCodeSelects(string filter)
  649. {
  650. using (IDatabase db = DbFactory.Base("eapslave"))
  651. {
  652. var dal = new CmkDal(db);
  653. return dal.GetMultipleRecCodeSelects(filter).OrderBy(c => c.Label);
  654. }
  655. }
  656. }
  657. public class CmkFile
  658. {
  659. /// <summary>
  660. /// 文件
  661. /// </summary>
  662. public byte[] Bt { get; set; }
  663. /// <summary>
  664. /// 扩展名
  665. /// </summary>
  666. public string Extension { get; set; }
  667. /// <summary>
  668. /// 文件名
  669. /// </summary>
  670. public string FileName { get; set; }
  671. }
  672. }