互换平仓审批流程逻辑
This commit is contained in:
@@ -1763,6 +1763,19 @@ namespace YLErp.Modules.SwapModule
|
||||
CloseReCheckSetTrade(unwindData.SwapTradeId, eventType == (int)SwapEventTypeEnum.互换, true);
|
||||
SaveSwapDeal(unwindData, eventType, 0, action, true);
|
||||
SaveAllChanges();
|
||||
// 需求①:若触发条件判定无需审批(CloseReCheck_SetTrade 已将 ProcessOrderId 设为审批通过),
|
||||
// 在 swap_event 记录创建完成后再执行审批通过流程。
|
||||
td = FindTrade(unwindData.SwapTradeId);
|
||||
if (td.ProcessOrderId == ProcessTradeLog.审批通过)
|
||||
{
|
||||
new TradeOpenService(this).UpdateTradeProcessLog(new TradeOpenReqModel
|
||||
{
|
||||
tradeId = td.id,
|
||||
status = "pass",
|
||||
comments = "触发条件未满足,自动跳过审批",
|
||||
notNeedOperationHistory = false
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
private void ValidateIncomeValueDate(UnwindData unwindData, trade td)
|
||||
|
||||
@@ -224,7 +224,7 @@ namespace YLErp.Modules.TradeModule.DealModule
|
||||
|
||||
#endregion
|
||||
|
||||
//审批流程
|
||||
//审批流程(需求②:按交易状态查对应流程)
|
||||
if (!req.SkipWorkflow && HasTradeProcess())
|
||||
{
|
||||
var isUnwind = tradeCash.Action.Contains("平仓");
|
||||
@@ -235,14 +235,33 @@ namespace YLErp.Modules.TradeModule.DealModule
|
||||
|
||||
dbTrade.CheckStatus = Convert.ToInt32(TradeCheckEnum.StatusOfOld);
|
||||
|
||||
//检查是否有交易审批流程
|
||||
if (valuedateBLL.SystemDate.CloseReApprove == 1)
|
||||
//检查是否有交易审批流程(需求②:按交易状态查对应流程,而非只查开仓流程)
|
||||
var needApproval = valuedateBLL.SystemDate.CloseReApprove == 1 && TradeProcessCountByCategory(dbTrade) > 0;
|
||||
if (needApproval)
|
||||
{
|
||||
// 如果有审批组
|
||||
InitTradeProcessOrder(dbTrade, UserId);
|
||||
// 需求①:进入审批前先判断触发条件——若所有节点都不满足触发条件,跳过审批。
|
||||
needApproval = NeedApprovalByTrigger(dbTrade);
|
||||
}
|
||||
|
||||
AddTradeOperationHistoryAndSetParentTradeInfo(false, dbTrade, optType: isUnwind ? "平仓审核提交" : "行权审核提交", comments: req.ImportFlag);
|
||||
if (needApproval)
|
||||
{
|
||||
// 需要审批:进入审批流程等待人工审批
|
||||
InitTradeProcessOrder(dbTrade, UserId);
|
||||
AddTradeOperationHistoryAndSetParentTradeInfo(false, dbTrade, optType: isUnwind ? "平仓审核提交" : "行权审核提交", comments: req.ImportFlag);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 不需要审批:设 ProcessOrderId=审批通过,再调 UpdateTradeProcessLog(pass) 执行审批通过流程
|
||||
dbTrade.ProcessOrderId = ProcessTradeLog.审批通过;
|
||||
DbContext.SaveChanges();
|
||||
new TradeOpenService(this).UpdateTradeProcessLog(new TradeOpenReqModel
|
||||
{
|
||||
tradeId = dbTrade.id,
|
||||
status = "pass",
|
||||
comments = "触发条件未满足,自动跳过审批",
|
||||
notNeedOperationHistory = false
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -138,12 +138,17 @@ namespace YLErp.Modules.TradeModule.DealModule
|
||||
}
|
||||
else
|
||||
{
|
||||
// 不需要审批:直接走平仓完成流程(与审批通过一致)
|
||||
// 不需要审批:设 ProcessOrderId=审批通过,再调 UpdateTradeProcessLog(pass) 执行审批通过流程
|
||||
// (SetTradeOpen 会完成平仓、改状态、写日志,与人工审批通过完全一致)
|
||||
td.ProcessOrderId = ProcessTradeLog.审批通过;
|
||||
td.ProcessStatus = ProcessTradeStatus.通过审批.ToString();
|
||||
td.ProcessOptDate = DateTime.Now;
|
||||
// 直接完成平仓
|
||||
new TradeUnwindService(this).UnwindTrade(td, null, true, isFromExercise);
|
||||
DbContext.SaveChanges();
|
||||
new TradeOpenService(this).UpdateTradeProcessLog(new TradeOpenReqModel
|
||||
{
|
||||
tradeId = td.id,
|
||||
status = "pass",
|
||||
comments = "触发条件未满足,自动跳过审批",
|
||||
notNeedOperationHistory = false
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,12 +126,16 @@ namespace YLErp.Modules.TradeModule.DealModule
|
||||
}
|
||||
else
|
||||
{
|
||||
// 不需要审批:直接完成行权
|
||||
// 不需要审批:设 ProcessOrderId=审批通过,再调 UpdateTradeProcessLog(pass) 执行审批通过流程
|
||||
td.ProcessOrderId = ProcessTradeLog.审批通过;
|
||||
td.ProcessStatus = ProcessTradeStatus.通过审批.ToString();
|
||||
td.ProcessOptDate = DateTime.Now;
|
||||
DbContext.SaveChanges();
|
||||
new TradeUnwindService(this).UnwindTrade(td, null, true, true);
|
||||
new TradeOpenService(this).UpdateTradeProcessLog(new TradeOpenReqModel
|
||||
{
|
||||
tradeId = td.id,
|
||||
status = "pass",
|
||||
comments = "触发条件未满足,自动跳过审批",
|
||||
notNeedOperationHistory = false
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1848,14 +1848,28 @@ namespace YLErp.Modules.TradeModule.DealModule
|
||||
|
||||
td.CheckStatus = Convert.ToInt32(TradeCheckEnum.StatusOfOld);
|
||||
|
||||
//检查是否有交易审批流程
|
||||
if ((valuedateBLL.SystemDate.CloseReApprove == 1 || isSwap) && hasTradeProcess)
|
||||
//检查是否有交易审批流程(需求②:按交易状态查对应流程,而非只查开仓流程)
|
||||
var needApproval = (valuedateBLL.SystemDate.CloseReApprove == 1 || isSwap) && TradeProcessCountByCategory(td) > 0;
|
||||
if (needApproval)
|
||||
{
|
||||
//如果有审批组
|
||||
InitTradeProcessOrder(td, UserId);
|
||||
// 需求①:进入审批前先判断触发条件——若所有节点都不满足触发条件,跳过审批。
|
||||
needApproval = NeedApprovalByTrigger(td);
|
||||
}
|
||||
|
||||
AddTradeOperationHistoryAndSetParentTradeInfo(false, td, isSwap ? "互换审核提交" : "平仓审核提交");
|
||||
if (needApproval)
|
||||
{
|
||||
// 需要审批:进入审批流程等待人工审批
|
||||
InitTradeProcessOrder(td, UserId);
|
||||
AddTradeOperationHistoryAndSetParentTradeInfo(false, td, isSwap ? "互换审核提交" : "平仓审核提交");
|
||||
}
|
||||
else
|
||||
{
|
||||
// 不需要审批:只标记 ProcessOrderId=审批通过。
|
||||
// 互换的 swap_event 记录要等调用方 ApplySwapTrade 的 SaveSwapDeal 执行后才创建,
|
||||
// 所以互换不在这里调 UpdateTradeProcessLog(否则 FindSwapEvent 找不到记录),
|
||||
// 由 ApplySwapTrade 在 SaveSwapDeal 之后判断并触发审批通过流程。
|
||||
td.ProcessOrderId = ProcessTradeLog.审批通过;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user