105 lines
5.0 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|