Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }