从山证v2.3.0拷贝
This commit is contained in:
@@ -0,0 +1,178 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user