Files
zszq-trs/YLErpDAL/Modules/TradeModule/DocGenerateModule/BatchTradeDocGeneratorContext.cs
T

105 lines
5.0 KiB
C#

using YLErp.DBModels.Consts;
using YLErp.Modules.TradeDalModule;
using YLErp.Plugins.TradeDocGenerator.Abstracts;
namespace YLErp.Modules.TradeModule.DocGenerateModule
{
public class BatchTradeDocGeneratorContext : YLBaseService, IBatchTradeDocGeneratorContext
{
public string ContractType { get; set; }
public Client Broker { get; set; }
public ServiceRepresentativeConfig Spc0 { get; set; }
public valuedate Valuedate { get; set; }
public string TemplateDir { get; set; }
public BatchTradeDocGeneratorContext(string contractType, OptUserInfo userInfo, Client broker, ServiceRepresentativeConfig spc0, valuedate valuedate, string templateDir)
: base(userInfo)
{
ContractType = contractType ?? throw new ArgumentNullException(nameof(contractType));
Broker = broker;
Spc0 = spc0;
Valuedate = valuedate;
TemplateDir = templateDir;
}
public ITradeConfirmationGeneratotContext CreateContext(OtcTradeBase trade, int tradeCashId)
{
return new ConfirmationGenerateContext(tradeCashId, (trade)trade, ContractType, OptUser);
}
public IEnumerable<trade_contract_r> GetContractRs(IEnumerable<int> tradeIds)
{
return DbContext.trade_contract_r.Where(t => tradeIds.Contains(t.TradeId) && t.Type == ContractTypeEnum.Trade && t.IsValid).ToList();
}
public files_template GetFilesTemplate(string contractVersion)
{
return DbContext.files_template.FirstOrDefault(x => x.Code == contractVersion);
}
public void SaveData(string fileName, string tradeCodePrefix, string outPath, string contractVersion, IList<OtcTradeBase> trades)
{
trade_contract_document contractRecord = DbContext.trade_contract_document.FirstOrDefault(x => x.Code == tradeCodePrefix && x.Type == ContractTypeEnum.Trade);
if (contractRecord == null)
{
contractRecord = new trade_contract_document();
DbContext.trade_contract_document.Add(contractRecord);
}
contractRecord.Code = tradeCodePrefix;
contractRecord.ValueDate = Valuedate.ValueDate;
contractRecord.BuyerId = trades[0].BuySell == "买入" ? Broker.id : trades[0].ClientId;
contractRecord.BuyerName = trades[0].BuySell == "买入" ? Broker.Name : trades[0].ClientName;
contractRecord.SellerId = trades[0].BuySell == "卖出" ? Broker.id : trades[0].ClientId;
contractRecord.SellerName = trades[0].BuySell == "卖出" ? Broker.Name : trades[0].ClientName;
contractRecord.ContractVersion = contractVersion;
contractRecord.FileType = FileTypeEnum.Pdf;
contractRecord.Status = ContractStatusEnum.Draft;
contractRecord.SourceType = 1; // 系统生成
contractRecord.Paths = outPath;
contractRecord.FileName = outPath.Replace(".xlsx", ".pdf");
contractRecord.Type = ContractTypeEnum.Trade;
contractRecord.OptId = UserId;
contractRecord.OptName = UserName;
contractRecord.OptDate = DateTime.Now;
var tradeIds = trades.Select(x => x.id).ToList();
//var childs = DbContext.trade.Where(x => tradeIds.Contains(x.ParentTradeId ?? 0));
TradeDalService service = new TradeDalService(this);
var childs = service.GetStructTradeFromTradeOrEodTrade(tradeIds, SystemValueDate, true);
foreach (var trade in trades)
{
trade_contract_r contractTradeRelation = DbContext.trade_contract_r.Where(t => t.Type == ContractTypeEnum.Trade && t.IsValid).FirstOrDefault(x => x.TradeId == trade.id);
if (contractTradeRelation == null)
{
contractTradeRelation = new trade_contract_r();
DbContext.trade_contract_r.Add(contractTradeRelation);
}
contractTradeRelation.TradeId = trade.id;
contractTradeRelation.TradeNumber = trade.TradeNumber;
contractTradeRelation.ContractCode = tradeCodePrefix;
contractTradeRelation.OptId = UserId;
contractTradeRelation.OptName = UserName;
contractTradeRelation.OptDate = DateTime.Now;
contractTradeRelation.Type = ContractTypeEnum.Trade;
contractTradeRelation.IsValid = true;
//var td = DbContext.trade.Find(trade.id);
//var td = service.GetTradeOrEodTrade(new[] { trade.id }, ValueDate, true).FirstOrDefault();
//var childTds = childs.Where(x => x.ParentTradeId == td.id);
//if (td != null)
//{
// td.HasGeneratedConfirmBook = 1;
// foreach (var child in childTds)
// {
// child.HasGeneratedConfirmBook = 1;
// }
//}
}
DbContext.SaveChanges();
}
}
}