CgsbManager.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. using QM.KJGH.CGGL.IRepository;
  2. using QM.KJGH.Gis.PyServer;
  3. using QM.KJGH.Model.KJGH;
  4. using QM.KJGH.Model.KJGH.CGHJ;
  5. using QM.OrmSqlSugar;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Threading;
  9. using System.Threading.Tasks;
  10. using WS;
  11. using WS.Helper;
  12. using WS.Log;
  13. namespace QM.KJGH.CgglService.Managers
  14. {
  15. /// <summary>
  16. /// 成果上报
  17. /// </summary>
  18. public class CgsbManager : SqlSugarRepository<CghjCgsbrw>, ICgsbManager
  19. {
  20. public string PyExe;
  21. public string RootPath;
  22. public string PythonFile;
  23. public CgsbManager()
  24. {
  25. PyExe = ConfigHelper.Configuration["Path:PyExe"];
  26. PythonFile = ConfigHelper.Configuration["Path:PythonFile"];
  27. RootPath = ConfigHelper.Configuration["Path:Root"];
  28. }
  29. #region 任务
  30. /// <summary>
  31. /// 获取新任务
  32. /// </summary>
  33. /// <returns></returns>
  34. public CghjCgsbrw NewTask()
  35. {
  36. return Get(t => t.STATUS == Model.Enums.EnumCgsbrwToTing.未上报);
  37. }
  38. /// <summary>
  39. /// 任务完成
  40. /// </summary>
  41. /// <returns></returns>
  42. public void TaskComplete(string bsm)
  43. {
  44. try
  45. {
  46. Db.BeginTran();
  47. Db.CommitTran();
  48. }
  49. catch (Exception ex)
  50. {
  51. WS.Log.RunLog.Error(ex);
  52. Db.RollbackTran();
  53. }
  54. }
  55. /// <summary>
  56. /// 任务错误
  57. /// </summary>
  58. /// <param name="msg">错误信息</param>
  59. /// <returns></returns>
  60. public void TaskError(string bsm, string msg)
  61. {
  62. try
  63. {
  64. Db.BeginTran();
  65. Db.CommitTran();
  66. }
  67. catch (Exception ex)
  68. {
  69. WS.Log.RunLog.Error(ex);
  70. Db.RollbackTran();
  71. }
  72. }
  73. #endregion
  74. /// <summary>
  75. /// 任务解析
  76. /// </summary>
  77. public void Monitor() {
  78. var task = NewTask();
  79. if (task != null)
  80. {
  81. //本地上传
  82. //旗县上报
  83. Thread thread = new Thread(() =>
  84. {
  85. //WS.Log.RunLog.Debug($"开始上传成果(市-->省/自治区):{cgglCg.XMMC}");
  86. //try
  87. //{
  88. // var md5Data = ZZQApi.Md5(new NmCgMd5Io()
  89. // {
  90. // fileMd5 = cgglCg.BSM,
  91. // fileSize = 10 * 1024 * 1024,
  92. // fileName = Path.GetFileName(cgglCg.CGB),
  93. // totalSliceNum = cgglCg.CGFPS,
  94. // curSliceOrder = 0,
  95. // resetSliceOrder2Zero = true
  96. // });
  97. // //分片上传
  98. // var index = 1;
  99. // var chazhi = fileList.Keys.First() == 0 ? 0 : 1;
  100. // foreach (var chunk in fileList.Keys)
  101. // {
  102. // WS.Log.RunLog.Debug($"分片上传:【{chunk}】{fileList[chunk]}");
  103. // FileInfo fileInfo = new FileInfo(fileList[chunk]);
  104. // NmCgUploadSplitIo inputU = new NmCgUploadSplitIo()
  105. // {
  106. // xmmc = cgglCg.XMMC,
  107. // XZQDM = cityCghjCgsbrw.XZQDM,
  108. // XZQMC = cityCghjCgsbrw.XZQMC,
  109. // token = md5Data.token,
  110. // ghlx = cityCghjCgsbrw.GHLX,
  111. // year = cityCghjCgsbrw.SBNF,
  112. // name = cityCghjCgsbrw.FILENAME,
  113. // zipMd5 = cgglCg.BSM,
  114. // totalSliceNum = cityCghjCgsbrw.TOTALSLICENUM,
  115. // curSliceOrder = chunk - chazhi,
  116. // curSliceSize = 10 * 1024 * 1024,
  117. // resetSliceOrder2Zero = true,
  118. // };
  119. // WS.Log.RunLog.Debug($"分片上传参数:{inputU.ToJson()}");
  120. // bool res = false;
  121. // switch (inputU.ghlx)
  122. // {
  123. // case EnumGHLX.总体规划:
  124. // case EnumGHLX.专项规划:
  125. // res = ZZQApi.Upload(inputU, fileList[chunk]);
  126. // break;
  127. // case EnumGHLX.村庄规划:
  128. // case EnumGHLX.乡镇规划:
  129. // res = ZZQApi.TownUpload(inputU, fileList[chunk]);
  130. // break;
  131. // default:
  132. // throw new UseMassageException($"暂未实现{inputU.ghlx}成果数据的上传");
  133. // }
  134. // WS.Log.RunLog.Debug($"分片上传:【{chunk}】{res}");
  135. // //更新进度
  136. // Db.Updateable<CityCghjCgsbrw>().SetColumns(it => it.SBJD == $"{index}/{cityCghjCgsbrw.TOTALSLICENUM}").Where(it => it.ID == cgglCg.BSM).ExecuteCommand();
  137. // index++;
  138. // Thread.Sleep(1000);
  139. // }
  140. // Db.BeginTran();
  141. // Db.Updateable<CgglCg>().SetColumns(it => new CgglCg() { ZT_CGSB = EnumCgsbZT.已上报 }).Where(it => it.BSM == cgglCg.BSM).ExecuteCommand();
  142. // Db.Updateable<CityCghjCgsbrw>().SetColumns(it => new CityCghjCgsbrw() { SBJD = $"{cityCghjCgsbrw.TOTALSLICENUM}/{cityCghjCgsbrw.TOTALSLICENUM}", RWZT = EnumCgsbrw.待审批 }).Where(it => it.ID == cgglCg.BSM).ExecuteCommand();
  143. // Db.CommitTran();
  144. // WS.Log.RunLog.Debug($"上传完成:{cgglCg.XMMC}");
  145. //}
  146. //catch (Exception ex)
  147. //{
  148. // Db.Updateable<CgglCg>().SetColumns(it => new CgglCg() { ZT_CGSB = EnumCgsbZT.上报失败 }).Where(it => it.BSM == cgglCg.BSM).ExecuteCommand();
  149. // Db.Updateable<CityCghjCgsbrw>().SetColumns(it => new CityCghjCgsbrw() { SBSBYY = ex.Message, RWZT = EnumCgsbrw.上报失败 }).Where(it => it.ID == cgglCg.BSM).ExecuteCommand();
  150. // Db.RollbackTran();
  151. // WS.Log.RunLog.Error(ex);
  152. //}
  153. //WS.Log.RunLog.Debug($"结束上传成果:{cgglCg.XMMC}");
  154. });
  155. thread.Start(); //启动线程
  156. }
  157. }
  158. }
  159. }