public override void BuildCompressFile() { Action <TaskEntity> action = t8Task => { try { if (!File.Exists(t8Task.FileInfo.NormalFilePath)) { throw new Exception($"开始压缩操作,发现数据文件:[{t8Task.FileInfo.NormalFilePath}]不存在"); } AFileName fileNameStragety = new BuildInstanceObject().GetGenerateFileNameStragety(4); t8Task.FileInfo.CompressFileName = fileNameStragety.FileName(t8Task); t8Task.FileInfo.CompressFilePath = fileNameStragety.FileFullName(t8Task); //重命名一般文件 string newNormalFilePath = Path.Combine(FileHelper.GetDirectoryName(t8Task.FileInfo.NormalFilePath), FileHelper.GetFileNameWithoutExtension(t8Task.FileInfo.CompressFilePath)); if (!FileHelper.MoveFile(t8Task.FileInfo.NormalFilePath, newNormalFilePath)) { throw new Exception($"开始压缩操作,重命名文件操作异常,源文件[{t8Task.FileInfo.NormalFilePath}],目标文件[{newNormalFilePath}]"); } Thread.Sleep(300); FileHelper.ZipFile(newNormalFilePath, t8Task.FileInfo.CompressFilePath, Common.GetEncryptKey()); Thread.Sleep(300); try { //删除一般文件出错不影响整体,这里进行容错处理 File.Delete(newNormalFilePath); } catch (Exception ex) { LogUtil.WriteLog($"压缩数据操作完成,清理没有用处一般数据文件[{newNormalFilePath}]时出错,异常信息:[{ex.Message}]"); } LogUtil.WriteLog($"压缩数据文件[{t8Task.FileInfo.CompressFilePath}]完成"); } catch (Exception ex) { LogUtil.WriteLog(ex); throw new Exception(ex.Message); } }; product.AddPart(action); }
public override void BuildDbFile() { Action <TaskEntity> action = t8Task => { try { BuildInstanceObject buildInstanceService = new BuildInstanceObject(); //1得到数据库文件路径 AFileName fileNameStragety = buildInstanceService.GetGenerateFileNameStragety(3); ISqlQueryTime SqlQueryTimeStragety = buildInstanceService.GetSqlQueryTimeStragety(t8Task.CycleType); FileInfoEntity fileInfoEntity = new FileInfoEntity(); fileInfoEntity.NormalFileName = fileNameStragety.FileName(t8Task); fileInfoEntity.NormalFilePath = fileNameStragety.FileFullName(t8Task); fileInfoEntity.SqlStartTime = SqlQueryTimeStragety.StartTime(DateTime.Now); fileInfoEntity.SqlEndTime = SqlQueryTimeStragety.EndTime(DateTime.Now); t8Task.FileInfo = fileInfoEntity; //2创建数据库文件并添加数据 IDataHandler handler = DataHandlerFactory.GetHandler(t8Task.DataHandler); handler.DBConnectStr = Common.DecryptData(t8Task.DBConnectString_Hashed); string sql = t8Task.SQL; bool isSuccess = handler.OutputDataToSQLite(sql, fileInfoEntity.SqlStartTime, fileInfoEntity.SqlEndTime, fileInfoEntity.NormalFilePath); Thread.Sleep(300); if (!isSuccess) { LogUtil.WriteLog($"从数据库向数据文件[{fileInfoEntity.NormalFilePath}]导入数据出现错误"); throw new Exception($"从数据库向数据文件[{fileInfoEntity.NormalFilePath}]导入数据出现错误"); } LogUtil.WriteLog($"数据文件[{fileInfoEntity.NormalFilePath}]创建并添加数据完成"); } catch (Exception ex) { LogUtil.WriteLog(ex); throw new Exception(ex.Message); } }; product.AddPart(action); }
public override string FileName(TaskEntity taskEntity) { //周 t8sjzch_20051226_20060101_W.db //周在架 t8sjzch_20051226_20060101_WS.db //月 t8sjzch_20160601_20160630_M.db //月在架 t8sjzch_20160525_20160525_S.db if (string.IsNullOrEmpty(fileName)) { string startTime = ""; string endTime = ""; string cycleType = ""; ISqlQueryTime sqlQueryTime = new BuildInstanceObject().GetSqlQueryTimeStragety(taskEntity.CycleType); switch (taskEntity.DataType) { case DataTypes.Sale: switch (taskEntity.CycleType) { case CycleTypes.W: cycleType = $"{CycleTypes.W}"; break; case CycleTypes.M: cycleType = $"{CycleTypes.M}"; break; default: throw new Exception($"传8任务[{taskEntity.TaskID}]日期类型[{taskEntity.CycleType}]设置有误,必须设置日期类型为周或月"); } startTime = sqlQueryTime.StartTime(DateTime.Now).ToString("yyyyMMdd"); endTime = sqlQueryTime.EndTime(DateTime.Now).ToString("yyyyMMdd"); break; case DataTypes.Stock: switch (taskEntity.CycleType) { case CycleTypes.W: cycleType = $"{CycleTypes.W}S"; startTime = sqlQueryTime.StartTime(DateTime.Now).ToString("yyyyMMdd"); endTime = sqlQueryTime.EndTime(DateTime.Now).ToString("yyyyMMdd"); break; case CycleTypes.M: cycleType = "S"; startTime = DateTime.Now.ToString("yyyyMMdd"); endTime = DateTime.Now.ToString("yyyyMMdd"); break; default: throw new Exception($"传8任务[{taskEntity.TaskID}]日期类型[{taskEntity.CycleType}]设置有误,必须设置日期类型为周或月"); } break; default: throw new Exception($"传8任务[{taskEntity.TaskID}]数据类型[{taskEntity.DataType}]设置有误,必须设置销售或在架"); } fileName = string.Format("{0}_{1}_{2}_{3}.db", taskEntity.FtpConfig.UserName, startTime, endTime, cycleType); } return(fileName); }