using QM.KJGH.CGGL.IRepository; using QM.KJGH.Gis.PyServer; using QM.KJGH.Model.KJGH; using QM.KJGH.Model.KJGH.CGHJ; using QM.OrmSqlSugar; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using WS; using WS.Helper; using WS.Log; namespace QM.KJGH.CgglService.Managers { /// /// 成果上报 /// public class CgsbManager : SqlSugarRepository, ICgsbManager { public string PyExe; public string RootPath; public string PythonFile; public CgsbManager() { PyExe = ConfigHelper.Configuration["Path:PyExe"]; PythonFile = ConfigHelper.Configuration["Path:PythonFile"]; RootPath = ConfigHelper.Configuration["Path:Root"]; } #region 任务 /// /// 获取新任务 /// /// public CghjCgsbrw NewTask() { return Get(t => t.STATUS == Model.Enums.EnumCgsbrwToTing.未上报); } /// /// 任务完成 /// /// public void TaskComplete(string bsm) { try { Db.BeginTran(); Db.CommitTran(); } catch (Exception ex) { WS.Log.RunLog.Error(ex); Db.RollbackTran(); } } /// /// 任务错误 /// /// 错误信息 /// public void TaskError(string bsm, string msg) { try { Db.BeginTran(); Db.CommitTran(); } catch (Exception ex) { WS.Log.RunLog.Error(ex); Db.RollbackTran(); } } #endregion /// /// 任务解析 /// public void Monitor() { var task = NewTask(); if (task != null) { //本地上传 //旗县上报 Thread thread = new Thread(() => { //WS.Log.RunLog.Debug($"开始上传成果(市-->省/自治区):{cgglCg.XMMC}"); //try //{ // var md5Data = ZZQApi.Md5(new NmCgMd5Io() // { // fileMd5 = cgglCg.BSM, // fileSize = 10 * 1024 * 1024, // fileName = Path.GetFileName(cgglCg.CGB), // totalSliceNum = cgglCg.CGFPS, // curSliceOrder = 0, // resetSliceOrder2Zero = true // }); // //分片上传 // var index = 1; // var chazhi = fileList.Keys.First() == 0 ? 0 : 1; // foreach (var chunk in fileList.Keys) // { // WS.Log.RunLog.Debug($"分片上传:【{chunk}】{fileList[chunk]}"); // FileInfo fileInfo = new FileInfo(fileList[chunk]); // NmCgUploadSplitIo inputU = new NmCgUploadSplitIo() // { // xmmc = cgglCg.XMMC, // XZQDM = cityCghjCgsbrw.XZQDM, // XZQMC = cityCghjCgsbrw.XZQMC, // token = md5Data.token, // ghlx = cityCghjCgsbrw.GHLX, // year = cityCghjCgsbrw.SBNF, // name = cityCghjCgsbrw.FILENAME, // zipMd5 = cgglCg.BSM, // totalSliceNum = cityCghjCgsbrw.TOTALSLICENUM, // curSliceOrder = chunk - chazhi, // curSliceSize = 10 * 1024 * 1024, // resetSliceOrder2Zero = true, // }; // WS.Log.RunLog.Debug($"分片上传参数:{inputU.ToJson()}"); // bool res = false; // switch (inputU.ghlx) // { // case EnumGHLX.总体规划: // case EnumGHLX.专项规划: // res = ZZQApi.Upload(inputU, fileList[chunk]); // break; // case EnumGHLX.村庄规划: // case EnumGHLX.乡镇规划: // res = ZZQApi.TownUpload(inputU, fileList[chunk]); // break; // default: // throw new UseMassageException($"暂未实现{inputU.ghlx}成果数据的上传"); // } // WS.Log.RunLog.Debug($"分片上传:【{chunk}】{res}"); // //更新进度 // Db.Updateable().SetColumns(it => it.SBJD == $"{index}/{cityCghjCgsbrw.TOTALSLICENUM}").Where(it => it.ID == cgglCg.BSM).ExecuteCommand(); // index++; // Thread.Sleep(1000); // } // Db.BeginTran(); // Db.Updateable().SetColumns(it => new CgglCg() { ZT_CGSB = EnumCgsbZT.已上报 }).Where(it => it.BSM == cgglCg.BSM).ExecuteCommand(); // Db.Updateable().SetColumns(it => new CityCghjCgsbrw() { SBJD = $"{cityCghjCgsbrw.TOTALSLICENUM}/{cityCghjCgsbrw.TOTALSLICENUM}", RWZT = EnumCgsbrw.待审批 }).Where(it => it.ID == cgglCg.BSM).ExecuteCommand(); // Db.CommitTran(); // WS.Log.RunLog.Debug($"上传完成:{cgglCg.XMMC}"); //} //catch (Exception ex) //{ // Db.Updateable().SetColumns(it => new CgglCg() { ZT_CGSB = EnumCgsbZT.上报失败 }).Where(it => it.BSM == cgglCg.BSM).ExecuteCommand(); // Db.Updateable().SetColumns(it => new CityCghjCgsbrw() { SBSBYY = ex.Message, RWZT = EnumCgsbrw.上报失败 }).Where(it => it.ID == cgglCg.BSM).ExecuteCommand(); // Db.RollbackTran(); // WS.Log.RunLog.Error(ex); //} //WS.Log.RunLog.Debug($"结束上传成果:{cgglCg.XMMC}"); }); thread.Start(); //启动线程 } } } }