179 lines
6.2 KiB
C#
179 lines
6.2 KiB
C#
using BaseOUDAL;
|
|
using Org.BouncyCastle.Ocsp;
|
|
using Qdp.Foundation.Implementations;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using YLErp.Configuration;
|
|
using YLErp.Modules.EodFileModule.Dto;
|
|
using YLErp.Modules.EodFileModule.Enum;
|
|
using YLErp.Modules.MarketRiskMoudule.Dto;
|
|
using YLErp.Modules.TagModule.Dto;
|
|
using YLErp.Modules.TradeMsgOutputModule.Company;
|
|
|
|
namespace YLErp.Modules.EodFileModule
|
|
{
|
|
public class EodFileService : YLBaseService
|
|
{
|
|
protected static IYcLogger Log = LogFactory.GetLogger(typeof(EodFileService).FullName);
|
|
public EodFileService(OptUserInfo userInfo) : base(userInfo)
|
|
{
|
|
}
|
|
|
|
public SearchListResult<eod_file> Search(SearchFileRequest req)
|
|
{
|
|
var predicate = PredicateBuilder.True<eod_file>();
|
|
|
|
if (req.DateFromEodTime != null)
|
|
{
|
|
predicate = predicate.And(d => d.ValueDate >= req.DateFromEodTime);
|
|
}
|
|
if (req.DateToEodTime != null)
|
|
{
|
|
req.DateToEodTime = ((DateTime)req.DateToEodTime).AddDays(1);
|
|
predicate = predicate.And(d => d.ValueDate < req.DateToEodTime);
|
|
}
|
|
if (req.FileType > 0)
|
|
{
|
|
predicate = predicate.And(d => d.FileType == req.FileType);
|
|
}
|
|
if (string.IsNullOrEmpty(req.sidx))
|
|
{
|
|
req.sidx = "id";
|
|
req.sord = "desc";
|
|
}
|
|
|
|
return DbContext.eod_file.Where(predicate).ToSearchList<eod_file>(req);
|
|
|
|
}
|
|
|
|
public void RepeatGenerate(RepeatGenerateRequest req)
|
|
{
|
|
if (req == null || req.Id == 0)
|
|
{
|
|
throw new ServiceException("请选择要重新生成的文件记录");
|
|
}
|
|
var eodFile = DbContext.eod_file.FirstOrDefault(p => p.id == req.Id);
|
|
if (eodFile == null)
|
|
{
|
|
throw new ServiceException("未找到对应的文件记录");
|
|
}
|
|
if (eodFile.Status == (int)EodFileStatus.Generating)
|
|
{
|
|
throw new ServiceException("当前文件正在生成中,请等待生成完成后再操作");
|
|
}
|
|
|
|
GenerateFile(eodFile);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 收盘后生成文件
|
|
/// </summary>
|
|
/// <param name="valueDate"></param>
|
|
public void GenerateFileAfterEod(DateTime valueDate)
|
|
{
|
|
if (PS.Config.Company != CompanyEnum.东莞)
|
|
{
|
|
return;
|
|
}
|
|
var task = GenerateFileAfterEodSync(valueDate);
|
|
task.Start();
|
|
|
|
}
|
|
|
|
|
|
public Task GenerateFileAfterEodSync(DateTime valueDate)
|
|
{
|
|
return new Task(() =>
|
|
{
|
|
var eodFileList = DbContext.eod_file.Where(p => p.ValueDate == valueDate).ToList();
|
|
var pvEodFile = eodFileList.FirstOrDefault(p => p.FileType == (int)EodFileType.EodPvFile);
|
|
if (pvEodFile == null)
|
|
{
|
|
pvEodFile = new eod_file
|
|
{
|
|
ValueDate = valueDate,
|
|
FileName = "",
|
|
FileType = (int)EodFileType.EodPvFile,
|
|
Status = (int)EodFileStatus.WaitGenerate
|
|
};
|
|
SetDBModelOpt(pvEodFile);
|
|
DbContext.eod_file.Add(pvEodFile);
|
|
DbContext.SaveChanges();
|
|
}
|
|
var cashEodFile = eodFileList.FirstOrDefault(p => p.FileType == (int)EodFileType.EodCashFile);
|
|
if (cashEodFile == null)
|
|
{
|
|
cashEodFile = new eod_file
|
|
{
|
|
ValueDate = valueDate,
|
|
FileName = "",
|
|
FileType = (int)EodFileType.EodCashFile,
|
|
Status = (int)EodFileStatus.WaitGenerate
|
|
};
|
|
SetDBModelOpt(cashEodFile);
|
|
DbContext.eod_file.Add(cashEodFile);
|
|
DbContext.SaveChanges();
|
|
}
|
|
GenerateFile(pvEodFile);
|
|
GenerateFile(cashEodFile);
|
|
});
|
|
}
|
|
|
|
|
|
private void GenerateFile(eod_file eodFile)
|
|
{
|
|
BaseDongWanFileGenerateService service;
|
|
if (eodFile.FileType == (int)EodFileType.EodPvFile)
|
|
{
|
|
service = new DongWanPVPostionFileGenerateService();
|
|
}
|
|
else if (eodFile.FileType == (int)EodFileType.EodCashFile)
|
|
{
|
|
service = new DongWanCashLogFileGenerateService();
|
|
}
|
|
else
|
|
{
|
|
throw new ServiceException("未知文件类型");
|
|
}
|
|
eodFile.Status = (int)EodFileStatus.Generating;
|
|
eodFile.FilePath = "";
|
|
SetDBModelOpt(eodFile);
|
|
DbContext.SaveChanges();
|
|
try
|
|
{
|
|
var genResult = service.GenerateDbfFile(eodFile.ValueDate);
|
|
if (string.IsNullOrEmpty(genResult.FileName))
|
|
{
|
|
eodFile.Status = (int)EodFileStatus.GeneratFail;
|
|
eodFile.FailMsg = "没有可导出数据";
|
|
eodFile.FilePath = "";
|
|
SetDBModelOpt(eodFile);
|
|
DbContext.SaveChanges();
|
|
}
|
|
else
|
|
{
|
|
eodFile.Status = (int)EodFileStatus.GeneratComplete;
|
|
eodFile.FileName = genResult.FileName;
|
|
eodFile.FilePath = genResult.FilePath;
|
|
eodFile.FailMsg = "";
|
|
SetDBModelOpt(eodFile);
|
|
DbContext.SaveChanges();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
eodFile.Status = (int)EodFileStatus.GeneratFail;
|
|
eodFile.FailMsg = ex.Message;
|
|
eodFile.FilePath = "";
|
|
SetDBModelOpt(eodFile);
|
|
DbContext.SaveChanges();
|
|
Log.Error("生成dbf文件报错", ex);
|
|
}
|
|
}
|
|
}
|
|
}
|