|
|
@@ -47,6 +47,23 @@ namespace OASystem.Infrastructure.Repositories.Groups
|
|
|
.ToListAsync();
|
|
|
if (existingProcesses.Any()) return processs;
|
|
|
|
|
|
+ var users = await _sqlSugar.Queryable<Sys_Users>()
|
|
|
+ .LeftJoin<Sys_Company>((u, c) => u.CompanyId == c.Id)
|
|
|
+ .LeftJoin<Sys_Department>((u, c, d) => u.DepId == d.Id)
|
|
|
+ .LeftJoin<Sys_JobPost>((u, c, d, jp) => u.JobPostId == jp.Id)
|
|
|
+ .Where((u, c, d, jp) => u.IsDel == 0)
|
|
|
+ .Select((u, c, d, jp) => new {
|
|
|
+ u.Id,
|
|
|
+ u.CnName,
|
|
|
+ u.CompanyId,
|
|
|
+ c.CompanyName,
|
|
|
+ u.DepId,
|
|
|
+ d.DepName,
|
|
|
+ u.JobPostId,
|
|
|
+ jp.JobName,
|
|
|
+ })
|
|
|
+ .ToListAsync();
|
|
|
+
|
|
|
#region 商邀报批流程
|
|
|
var custInfo = await _sqlSugar.Queryable<Grp_TourClientList>()
|
|
|
.Where(c => c.DiId == groupId && c.IsDel == 0)
|
|
|
@@ -60,22 +77,33 @@ namespace OASystem.Infrastructure.Repositories.Groups
|
|
|
|
|
|
var oaNode4Tips = $"请于{groupInfo.VisitDate.AddDays(-5):yyyy年MM月dd日}内完成该项工作(按进度实际公务活动落实情况,出发前5日落实公务)";
|
|
|
var oaNode7Tips = $"请于{groupInfo.VisitEndDate.AddDays(-5):yyyy年MM月dd日}内完成该项工作(团组结束前完成)";
|
|
|
+
|
|
|
+ //节点可操作用户列表
|
|
|
+ var oaNodeOpUsers = users.Where(u =>
|
|
|
+ u.JobName != null && u.JobName.Contains("商邀主管")
|
|
|
+ ).Select(u => u.Id).ToList();
|
|
|
+
|
|
|
processs.Add(
|
|
|
Grp_ProcessOverview.Create(groupId, 1, GroupProcessType.Invitation, ProcessStatus.InProgress, currUserId,
|
|
|
new List<Grp_ProcessNode>()
|
|
|
{
|
|
|
- Grp_ProcessNode.Create(1, "报批基础资料准备","更新报批行程和请示,提供其他报批所需材料,4个工作日内完成。",ProcessStatus.InProgress, true,false,false,false,currUserId),
|
|
|
- Grp_ProcessNode.Create(2, "报批邀请函资料准备",oaNode2Tips, ProcessStatus.InProgress, false,false,false,false,currUserId),
|
|
|
- Grp_ProcessNode.Create(3, "获得批件","提供完整的报批全套资源。",ProcessStatus.InProgress, false,false,false,false, currUserId ),
|
|
|
- Grp_ProcessNode.Create(4, "对接公务",oaNode4Tips,ProcessStatus.InProgress, false,false,false,false, currUserId),
|
|
|
- Grp_ProcessNode.Create(5, "参与翻译对接","",ProcessStatus.InProgress, false,false,false,true, currUserId),
|
|
|
- Grp_ProcessNode.Create(6, "商邀文案配合","",ProcessStatus.InProgress, false,false,false,false, currUserId),
|
|
|
- Grp_ProcessNode.Create(7, "票据上传(相关票据)",oaNode7Tips,ProcessStatus.InProgress, false,false,true,false, currUserId),
|
|
|
+ Grp_ProcessNode.Create(1, "报批基础资料准备","更新报批行程和请示,提供其他报批所需材料,4个工作日内完成。",ProcessStatus.InProgress, true,false,false,false,currUserId,oaNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(2, "报批邀请函资料准备",oaNode2Tips, ProcessStatus.InProgress, false,false,false,false,currUserId,oaNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(3, "获得批件","提供完整的报批全套资源。",ProcessStatus.InProgress, false,false,false,false, currUserId ,oaNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(4, "对接公务",oaNode4Tips,ProcessStatus.InProgress, false,false,false,false, currUserId,oaNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(5, "参与翻译对接","",ProcessStatus.InProgress, false,false,false,true, currUserId,oaNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(6, "商邀文案配合","",ProcessStatus.InProgress, false,false,false,false, currUserId,oaNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(7, "票据上传(相关票据)",oaNode7Tips,ProcessStatus.InProgress, false,false,true,false, currUserId,oaNodeOpUsers),
|
|
|
}));
|
|
|
#endregion
|
|
|
|
|
|
#region 签证流程
|
|
|
|
|
|
+ //节点可操作用户列表
|
|
|
+ var visaNodeOpUsers = users.Where(u =>
|
|
|
+ u.JobName != null && u.JobName.Contains("签证")
|
|
|
+ ).Select(u => u.Id).ToList();
|
|
|
+
|
|
|
//单独处理签证流程节点
|
|
|
var visaNodes = new List<Grp_ProcessNode>();
|
|
|
|
|
|
@@ -88,8 +116,8 @@ namespace OASystem.Infrastructure.Repositories.Groups
|
|
|
}
|
|
|
|
|
|
var visaNode2Tips = $"请于{groupInfo.VisitDate:yyyy年MM月dd日}内完成该项工作(按进度实际签证办理落实情况,团组出发前上传票据。)";
|
|
|
- visaNodes.Add(Grp_ProcessNode.Create(1, "签证信息", "", ProcessStatus.InProgress, true, false, false, false, currUserId, JsonConvert.SerializeObject(visaDefualtNodes)));
|
|
|
- visaNodes.Add(Grp_ProcessNode.Create(2, "票据上传(明细表、费用票据、保单及超支费用账单)", visaNode2Tips, ProcessStatus.InProgress, false, false, true, false, currUserId));
|
|
|
+ visaNodes.Add(Grp_ProcessNode.Create(1, "签证信息", "", ProcessStatus.InProgress, true, false, false, false, currUserId, visaNodeOpUsers, JsonConvert.SerializeObject(visaDefualtNodes)));
|
|
|
+ visaNodes.Add(Grp_ProcessNode.Create(2, "票据上传(明细表、费用票据、保单及超支费用账单)", visaNode2Tips, ProcessStatus.InProgress, false, false, true, false, currUserId, oaNodeOpUsers));
|
|
|
}
|
|
|
|
|
|
processs.Add(Grp_ProcessOverview.Create(groupId, 2, GroupProcessType.Visa, ProcessStatus.UnStarted, currUserId, visaNodes));
|
|
|
@@ -110,18 +138,23 @@ namespace OASystem.Infrastructure.Repositories.Groups
|
|
|
var airNode7Tips = $"请于{groupInfo.VisitEndDate.AddDays(5):yyyy年MM月dd日}内完成该项工作(团组归国后5个工作日内)";
|
|
|
var airNode8Tips = $"1. 票据上传(机票报销蓝联、行程单及机票说明) \r\n 2. 请于{groupInfo.VisitEndDate.AddDays(10):yyyy年MM月dd日}内完成该项工作(团组归国后10个工作日内) *按机票报价*0.999折扣出具机票报销蓝联、行程单及机票说明";
|
|
|
|
|
|
+ //节点可操作用户列表
|
|
|
+ var airNodeOpUsers = users.Where(u =>
|
|
|
+ u.JobName != null && u.JobName.Contains("机票")
|
|
|
+ ).Select(u => u.Id).ToList();
|
|
|
+
|
|
|
processs.Add(
|
|
|
Grp_ProcessOverview.Create(groupId, 3, GroupProcessType.AirTicket, ProcessStatus.InProgress, currUserId,
|
|
|
new List<Grp_ProcessNode>()
|
|
|
{
|
|
|
- Grp_ProcessNode.Create(1, "初步拟定航程方案及价格", airNode1Tips, ProcessStatus.InProgress, true,false,false,false, currUserId ),
|
|
|
- Grp_ProcessNode.Create(2, "机票占位、续位", "", ProcessStatus.UnStarted, false,false,false,false,currUserId ),
|
|
|
- Grp_ProcessNode.Create(3, "完成机票采购确认", airNode3Tips, ProcessStatus.UnStarted,false,false,false,false, currUserId),
|
|
|
- Grp_ProcessNode.Create(4, "进行出票操作并核查信息", "", ProcessStatus.UnStarted, false,false,false,false, currUserId),
|
|
|
- Grp_ProcessNode.Create(5, "机票已出", airNode5Tips, ProcessStatus.UnStarted, false,false,false,false, currUserId),
|
|
|
- Grp_ProcessNode.Create(6, "完成机票选座", "", ProcessStatus.UnStarted, false,false,false,false,currUserId),
|
|
|
- Grp_ProcessNode.Create(7, "票据上传(机票超支费用账单)", airNode7Tips, ProcessStatus.UnStarted, false,false,true,false, currUserId),
|
|
|
- Grp_ProcessNode.Create(8, "票据上传", airNode8Tips, ProcessStatus.UnStarted, false,false,true,false, currUserId)
|
|
|
+ Grp_ProcessNode.Create(1, "初步拟定航程方案及价格", airNode1Tips, ProcessStatus.InProgress, true,false,false,false, currUserId ,airNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(2, "机票占位、续位", "", ProcessStatus.UnStarted, false,false,false,false,currUserId,airNodeOpUsers ),
|
|
|
+ Grp_ProcessNode.Create(3, "完成机票采购确认", airNode3Tips, ProcessStatus.UnStarted,false,false,false,false, currUserId, airNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(4, "进行出票操作并核查信息", "", ProcessStatus.UnStarted, false,false,false,false, currUserId, airNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(5, "机票已出", airNode5Tips, ProcessStatus.UnStarted, false,false,false,false, currUserId, airNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(6, "完成机票选座", "", ProcessStatus.UnStarted, false,false,false,false,currUserId, airNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(7, "票据上传(机票超支费用账单)", airNode7Tips, ProcessStatus.UnStarted, false,false,true,false, currUserId,airNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(8, "票据上传", airNode8Tips, ProcessStatus.UnStarted, false,false,true,false, currUserId, airNodeOpUsers)
|
|
|
}
|
|
|
)
|
|
|
);
|
|
|
@@ -141,15 +174,20 @@ namespace OASystem.Infrastructure.Repositories.Groups
|
|
|
var hotelNode4Tips = $"1.行前再次确认酒店订单、付款状态及入住安排 \r\n 2.请于{groupInfo.VisitDate.AddDays(-5):yyyy年MM月dd日}内完成该项工作(团组出发前5天)";
|
|
|
var hotelNode5Tips = $"1.行程结束后整理酒店发票(含超支费用发票)与结算 \r\n 2.请于{groupInfo.VisitEndDate.AddDays(5):yyyy年MM月dd日}内完成该项工作(团组结束后5天内)";
|
|
|
|
|
|
+ //节点可操作用户列表
|
|
|
+ var hotelNodeOpUsers = users.Where(u =>
|
|
|
+ u.JobName != null && u.JobName.Contains("酒店")
|
|
|
+ ).Select(u => u.Id).ToList();
|
|
|
+
|
|
|
processs.Add(
|
|
|
Grp_ProcessOverview.Create(groupId, 4, GroupProcessType.Hotel, ProcessStatus.InProgress, currUserId,
|
|
|
new List<Grp_ProcessNode>()
|
|
|
{
|
|
|
- Grp_ProcessNode.Create(1, "按照预算,询价、比价、谈价", hotelNode1Tips, ProcessStatus.InProgress, true, false, false, false, currUserId),
|
|
|
- Grp_ProcessNode.Create(2, "获取酒店确认函与入住名单核对", "", ProcessStatus.UnStarted, false, false, false,false, currUserId ),
|
|
|
- Grp_ProcessNode.Create(3, "预订酒店并录入OA", "", ProcessStatus.UnStarted,false, false, false,false,currUserId ),
|
|
|
- Grp_ProcessNode.Create(4, "行前再次确认酒店相关情况", hotelNode4Tips,ProcessStatus.UnStarted, false, false, false,false,currUserId ),
|
|
|
- Grp_ProcessNode.Create(5, "行程结束后整理酒店发票与结算", hotelNode5Tips, ProcessStatus.UnStarted, false, false, true,false, currUserId ),
|
|
|
+ Grp_ProcessNode.Create(1, "按照预算,询价、比价、谈价", hotelNode1Tips, ProcessStatus.InProgress, true, false, false, false, currUserId, hotelNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(2, "获取酒店确认函与入住名单核对", "", ProcessStatus.UnStarted, false, false, false,false, currUserId , hotelNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(3, "预订酒店并录入OA", "", ProcessStatus.UnStarted,false, false, false,false,currUserId , hotelNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(4, "行前再次确认酒店相关情况", hotelNode4Tips,ProcessStatus.UnStarted, false, false, false,false,currUserId , hotelNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(5, "行程结束后整理酒店发票与结算", hotelNode5Tips, ProcessStatus.UnStarted, false, false, true,false, currUserId ,hotelNodeOpUsers),
|
|
|
}
|
|
|
)
|
|
|
);
|
|
|
@@ -166,7 +204,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
|
|
|
opNode1Tips = $"请于{airTripCodeInfo.CreateTime.AddDays(1):yyyy年MM月dd日}内完成该项工作(机票行程代码最后一段录入后1个工作日内)";
|
|
|
}
|
|
|
|
|
|
-
|
|
|
string opNode2Tips = $"1.联系并询价地接、餐厅、用车、景点等供应商 \r\n 2. 请于{groupInfo.CreateTime.AddDays(7):yyyy年MM月dd日}内完成该项工作(建团完成后7个工作日内)";
|
|
|
string opNode3Tips = $"请于{groupInfo.CreateTime.AddDays(10):yyyy年MM月dd日}内完成该项工作(上一步往后3个工作日内)";
|
|
|
string opNode4Tips = $"请于{groupInfo.CreateTime.AddDays(12):yyyy年MM月dd日}内完成该项工作(上一步往后2个工作日内)";
|
|
|
@@ -183,17 +220,23 @@ namespace OASystem.Infrastructure.Repositories.Groups
|
|
|
}
|
|
|
|
|
|
string opNode7Tips = $"请于{groupInfo.VisitEndDate.AddDays(5):yyyy年MM月dd日}内完成该项工作(团组归国后5个工作日内) *上传最终报批行程,确定城市间交通最终版报价分配;地接账单(清楚标注超时及其他项超支费用)、地接交通费用原始票据、城市间交通明细表;";
|
|
|
+
|
|
|
+ //节点可操作用户列表
|
|
|
+ var opNodeOpUsers = users.Where(u =>
|
|
|
+ u.JobName != null && u.JobName.Equals("OP")
|
|
|
+ ).Select(u => u.Id).ToList();
|
|
|
+
|
|
|
processs.Add(
|
|
|
Grp_ProcessOverview.Create(groupId, 5, GroupProcessType.LocalGuide, ProcessStatus.InProgress, currUserId,
|
|
|
new List<Grp_ProcessNode>()
|
|
|
{
|
|
|
- Grp_ProcessNode.Create(1,"根据机票方案出框架行程", opNode1Tips,ProcessStatus.InProgress, true, false, false,false,currUserId ),
|
|
|
- Grp_ProcessNode.Create(2,"联系并询价地接相关的供应商", opNode2Tips,ProcessStatus.UnStarted, false, false, false,false, currUserId ),
|
|
|
- Grp_ProcessNode.Create(3,"提交供应商报价及比价表", opNode3Tips, ProcessStatus.UnStarted, false, false, false, false,currUserId),
|
|
|
- Grp_ProcessNode.Create(4,"执行采购流程", opNode4Tips, ProcessStatus.UnStarted, false, false, false,false, currUserId),
|
|
|
- Grp_ProcessNode.Create(5,"制定最终行程单及出行手册", opNode5Tips, ProcessStatus.UnStarted, false, false, false,false, currUserId ),
|
|
|
- Grp_ProcessNode.Create(6,"送机", "", ProcessStatus.UnStarted, false, false, false,false, currUserId ),
|
|
|
- Grp_ProcessNode.Create(7,"最终版报批行程、票据上传", opNode7Tips, ProcessStatus.UnStarted, false, false, true, false,currUserId )
|
|
|
+ Grp_ProcessNode.Create(1,"根据机票方案出框架行程", opNode1Tips,ProcessStatus.InProgress, true, false, false,false,currUserId,opNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(2,"联系并询价地接相关的供应商", opNode2Tips,ProcessStatus.UnStarted, false, false, false,false, currUserId,opNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(3,"提交供应商报价及比价表", opNode3Tips, ProcessStatus.UnStarted, false, false, false, false,currUserId,opNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(4,"执行采购流程", opNode4Tips, ProcessStatus.UnStarted, false, false, false,false, currUserId,opNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(5,"制定最终行程单及出行手册", opNode5Tips, ProcessStatus.UnStarted, false, false, false,false, currUserId ,opNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(6,"送机", "", ProcessStatus.UnStarted, false, false, false,false, currUserId,opNodeOpUsers ),
|
|
|
+ Grp_ProcessNode.Create(7,"最终版报批行程、票据上传", opNode7Tips, ProcessStatus.UnStarted, false, false, true, false,currUserId,opNodeOpUsers )
|
|
|
}
|
|
|
)
|
|
|
);
|
|
|
@@ -202,14 +245,20 @@ namespace OASystem.Infrastructure.Repositories.Groups
|
|
|
|
|
|
#region 费用结算流程
|
|
|
var feeNode3Tips = $"1.整理统计团组超支费用、三公报销资料给到各单位 \r\n 2. 请于{groupInfo.VisitEndDate.AddDays(12):yyyy年MM月dd日}内完成该项工作(团组归国后12个工作日内)";
|
|
|
+
|
|
|
+ //节点可操作用户列表
|
|
|
+ var feeNodeOpUsers = users.Where(u =>
|
|
|
+ u.JobName != null && u.JobName.Contains("会计") && u.CnName.Equals("曾艳")
|
|
|
+ ).Select(u => u.Id).ToList();
|
|
|
+
|
|
|
processs.Add(
|
|
|
Grp_ProcessOverview.Create(groupId, 6, GroupProcessType.FeeSettle, ProcessStatus.InProgress, currUserId,
|
|
|
new List<Grp_ProcessNode>()
|
|
|
{
|
|
|
- Grp_ProcessNode.Create(1, "城市间交通报批金额核定", "团组报批前", ProcessStatus.InProgress, true, true, false,false,currUserId ),
|
|
|
- Grp_ProcessNode.Create(2, "团组全程各段机票打票金额的核定", "团组报批后、订票前", ProcessStatus.UnStarted, false, false, false,false,currUserId ),
|
|
|
- Grp_ProcessNode.Create(3, "整理统计相关财务资料给到各单位", feeNode3Tips, ProcessStatus.UnStarted, false, false, false,false,currUserId ),
|
|
|
- Grp_ProcessNode.Create(4, "费用结算完毕", "", ProcessStatus.UnStarted, false, false, false,false, currUserId ),
|
|
|
+ Grp_ProcessNode.Create(1, "城市间交通报批金额核定", "团组报批前", ProcessStatus.InProgress, true, true, false,false,currUserId,feeNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(2, "团组全程各段机票打票金额的核定", "团组报批后、订票前", ProcessStatus.UnStarted, false, false, false,false,currUserId,feeNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(3, "整理统计相关财务资料给到各单位", feeNode3Tips, ProcessStatus.UnStarted, false, false, false,false,currUserId,feeNodeOpUsers),
|
|
|
+ Grp_ProcessNode.Create(4, "费用结算完毕", "", ProcessStatus.UnStarted, false, false, false,false, currUserId , feeNodeOpUsers),
|
|
|
}
|
|
|
)
|
|
|
);
|
|
|
@@ -269,6 +318,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
|
|
|
NodeOrder = nodeDto.NodeOrder,
|
|
|
OverallStatus = nodeDto.OverallStatus,
|
|
|
NodeDescTips = nodeDto.NodeDescTips,
|
|
|
+ OpUserList = nodeDto.OpUserList,
|
|
|
//Country = nodeDto.Country,
|
|
|
IsCurrent = nodeDto.IsCurrent,
|
|
|
IsAssist = nodeDto.IsAssist,
|
|
|
@@ -401,6 +451,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
|
|
|
Operator = operatorName,
|
|
|
OpeateTime = n.OperationTime?.ToString("yyyy-MM-dd HH:mm:ss") ?? "-",
|
|
|
ActualDone = n.ActualDone?.ToString("yyyy-MM-dd HH:mm:ss") ?? "",
|
|
|
+ n.OpUserList, //可操作用户列表
|
|
|
n.NodeDescTips,
|
|
|
isEnaAssistBtn, // 是否启用财务流程首节点协助按钮
|
|
|
n.IsAssist, // 财务流程首节点 存储值
|