Browse Source

GroupStepForDelegation.cs=>团组流程管控内容更新:1.创建流程管控;2.流程管控步骤推进;

jiangjc 1 year ago
parent
commit
0bfee0b3e2

+ 68 - 4
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -2,6 +2,7 @@
 using Newtonsoft.Json.Serialization;
 using OASystem.API.OAMethodLibs;
 using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.ViewModels.Groups;
 using OASystem.Infrastructure.Repositories.Groups;
 
@@ -34,7 +35,7 @@ namespace OASystem.API.Controllers
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> PostGrpSchedule(string paras)
+        public async Task<IActionResult> PostSearchGrpSchedule(string paras)
         {
             if (string.IsNullOrEmpty(paras))
             {
@@ -66,11 +67,74 @@ namespace OASystem.API.Controllers
             return Ok(JsonView(false, "暂无数据!"));
         }
 
+        /// <summary>
+        /// 修改团组流程管控详细表数据
+        /// </summary>
+        /// <param name="paras"></param>
+        /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public void testGrpSchedule()
+        public async Task<IActionResult> PostUpdateGrpScheduleDetail(Grp_ScheduleDetailUpdDto dto)
+        {
+            Grp_ScheduleDetailInfo _detail = _mapper.Map<Grp_ScheduleDetailInfo>(dto);
+            var result = await _grpScheduleRep._sqlSugar.Updateable<Grp_ScheduleDetailInfo>()
+                .Where(s => s.Id == dto.Id)
+                .UpdateColumns(s => new { s.Duty, s.ExpectBeginDt, s.ExpectEndDt, s.JobContent, s.Remark, s.StepStatus })
+                .ExecuteCommandAsync();
+            if (result > 0)
+            {
+                return Ok(JsonView(true, "保存成功!"));
+            }
+
+            return Ok(JsonView(false, "保存失败!"));
+        }
+
+        /// <summary>
+        /// 删除团组流程管控详细表数据,删除人Id请放在Duty
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<ActionResult> PostDeleteGrpScheduleDetail(Grp_ScheduleDetailUpdDto dto)
         {
-            GroupStepForDelegation.CreateWorkStep(1228);
+            Grp_ScheduleDetailInfo _detail = _mapper.Map<Grp_ScheduleDetailInfo>(dto);
+            _detail.IsDel = 1;
+            _detail.DeleteUserId = dto.Duty;
+            _detail.DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+            var result = await _grpScheduleRep._sqlSugar.Updateable<Grp_ScheduleDetailInfo>()
+               .Where(s => s.Id == dto.Id)
+               .UpdateColumns(s => new { s.IsDel, s.DeleteUserId, s.DeleteTime })
+               .ExecuteCommandAsync();
+            if (result > 0)
+            {
+                return Ok(JsonView(true, "删除成功!"));
+            }
+
+            return Ok(JsonView(false, "删除失败!"));
+        }
+
+        /// <summary>
+        /// 增加团组流程管控详细表数据
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<ActionResult> PostInsertGrpScheduleDetail(Grp_ScheduleDetailInsertDto dto)
+        {
+            Grp_ScheduleDetailInfo _detail = _mapper.Map<Grp_ScheduleDetailInfo>(dto);
+            if (DateTime.Now < _detail.ExpectBeginDt)
+            {
+                _detail.StepStatus = 0;
+            }
+            else
+            {//若大于设置时间,不考虑设置的预计结束日期,统一视为进行中
+                _detail.StepStatus = 1;
+            }
+            var result = await _grpScheduleRep._sqlSugar.Insertable(_detail).ExecuteReturnIdentityAsync();
+            if (result > 0)
+            {
+                return Ok(JsonView(true, "添加成功!"));
+            }
+
+            return Ok(JsonView(false, "添加失败!"));
         }
 
         #endregion
@@ -151,7 +215,7 @@ namespace OASystem.API.Controllers
             catch (Exception ex)
             {
 
-                Logs("[response]" +  JsonConvert.SerializeObject( dto));
+                Logs("[response]" + JsonConvert.SerializeObject(dto));
                 Logs(ex.Message);
                 return Ok(JsonView(false, ex.Message));
             }

+ 3 - 1
OASystem/OASystem.Api/OAMethodLib/AutofacRegister.cs

@@ -18,7 +18,9 @@ namespace OASystem.API.OAMethodLib
             _groupsConfig.Leader = int.Parse(AppSettingsHelper.Get(GroupsConfig.KEY, "Leader"));
             _groupsConfig.ExBeginDays = int.Parse(AppSettingsHelper.Get(GroupsConfig.KEY, "ExBeginDays"));
             _groupsConfig.ExEndDays = int.Parse(AppSettingsHelper.Get(GroupsConfig.KEY, "ExEndDays"));
-
+            _groupsConfig.DefaultUser = int.Parse(AppSettingsHelper.Get(GroupsConfig.KEY, "DefaultUser"));
+            _groupsConfig.Boss = int.Parse(AppSettingsHelper.Get(GroupsConfig.KEY, "Boss"));
+            _groupsConfig.FilterUser = AppSettingsHelper.Get(GroupsConfig.KEY, "FilterUser");
             builder.RegisterInstance<GroupsConfig>(_groupsConfig);
             #endregion
 

+ 368 - 10
OASystem/OASystem.Api/OAMethodLib/GroupStepForDelegation.cs

@@ -1,8 +1,13 @@
-using OASystem.API.OAMethodLib;
+using Google.Protobuf.WellKnownTypes;
+using Microsoft.AspNetCore.DataProtection.KeyManagement;
+using OASystem.API.OAMethodLib;
+using OASystem.Domain.Common;
 using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.Enums;
 using OASystem.Infrastructure.Repositories.Groups;
 using System.Configuration;
+using static OpenAI.GPT3.ObjectModels.SharedModels.IOpenAiModels;
 
 namespace OASystem.API.OAMethodLibs
 {
@@ -12,14 +17,15 @@ namespace OASystem.API.OAMethodLibs
     /// </summary>
     public static class GroupStepForDelegation
     {
+        private readonly static GrpScheduleRepository _grpScheduleRep = AutofacIocManager.Instance.GetService<GrpScheduleRepository>();
 
         /// <summary>
         /// 创建流程管控
         /// </summary>
-        /// <param name="Diid">团组Id</param>
+        /// <param name="DiId">团组Id</param>
         public static async void CreateWorkStep(int DiId)
         {
-            var _grpScheduleRep = AutofacIocManager.Instance.GetService<GrpScheduleRepository>();
+            //var _grpScheduleRep = AutofacIocManager.Instance.GetService<GrpScheduleRepository>();
 
             //判断是否已存在团组的流程管控
             Grp_ScheduleInfo check = _grpScheduleRep.Query(s => s.DiId == DiId).First();
@@ -29,31 +35,296 @@ namespace OASystem.API.OAMethodLibs
                 _grpScheduleRep.BeginTran();
 
                 GroupsConfig _groupConfig = AutofacIocManager.Instance.GetService<GroupsConfig>();
+                DateTime dftBeginDt = DateTime.Now.AddDays(_groupConfig.ExBeginDays);//默认预计开始时间
+                DateTime dftEndDt = DateTime.Now.AddDays(_groupConfig.ExEndDays);//默认预计结束时间
 
                 #region 主流程
                 Grp_ScheduleInfo _primary = new Grp_ScheduleInfo();
                 _primary.CreateUserId = _groupConfig.AutoCreate;
                 _primary.DiId = DiId;
                 _primary.Exception = 0;
-                _primary.ExpectBeginDt = DateTime.Now.AddDays(_groupConfig.ExBeginDays);
-                _primary.ExpectEndDt = DateTime.Now.AddDays(_groupConfig.ExEndDays);
+                _primary.ExpectBeginDt = dftBeginDt;
+                _primary.ExpectEndDt = dftEndDt;
                 _primary.Leader = _groupConfig.Leader;
                 _primary.PrimaryStep = GrpSchedulePrimaryStepEnum.Wait;
-                _primary.Remark = "请设置各流程预计开始/结束时间";
+                _primary.Remark = "请设置各流程负责人、预计开始/结束时间";
                 int _primaryId = await _grpScheduleRep.AddAsync(_primary);
                 if (_primaryId > 0)
                 {
                     #region 子流程
+                    List<Grp_ScheduleDetailInfo> entityList = new List<Grp_ScheduleDetailInfo>();
 
+                    #region 模板
+                    Grp_ScheduleDetailInfo _model = new Grp_ScheduleDetailInfo();
+                    _model.CreateUserId = _groupConfig.AutoCreate;
+                    _model.Duty = _groupConfig.DefaultUser;
+                    _model.Exception = 0;
+                    _model.ExpectBeginDt = dftBeginDt;
+                    _model.ExpectEndDt = dftEndDt;
+                    _model.Remark = "未设置负责人";
+                    _model.ScheduleId = DiId;
+                    _model.StepStatus = 0;
+                    #endregion
                     #region 经费预算
+                    Grp_ScheduleDetailInfo grp_budget202 = _model.DeepClone();
+                    grp_budget202.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BudgetChild02);
+                    grp_budget202.ParentStep = (int)GrpSchedulePrimaryStepEnum.Budget;
+                    grp_budget202.Step = (int)GrpSchedulePrimaryStepEnum.BudgetChild02;
+                    entityList.Add(grp_budget202);
+                    #endregion
+                    #region 市场部人员报价对接/反馈
+                    //上传明细单
+                    Grp_ScheduleDetailInfo grp_feedback302 = _model.DeepClone();
+                    grp_feedback302.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.FeedbackChild02);
+                    grp_feedback302.ParentStep = (int)GrpSchedulePrimaryStepEnum.Feedback;
+                    grp_feedback302.Step = (int)GrpSchedulePrimaryStepEnum.FeedbackChild02;
+                    entityList.Add(grp_feedback302);
+
+                    //录入最终总经费预算
+                    Grp_ScheduleDetailInfo grp_feedback303 = _model.DeepClone();
+                    grp_feedback303.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.FeedbackChild03);
+                    grp_feedback303.ParentStep = (int)GrpSchedulePrimaryStepEnum.Feedback;
+                    grp_feedback303.Step = (int)GrpSchedulePrimaryStepEnum.FeedbackChild03;
+                    entityList.Add(grp_feedback303);
+
+                    //完成报价对接/反馈
+                    Grp_ScheduleDetailInfo grp_feedback304 = _model.DeepClone();
+                    grp_feedback304.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.FeedbackChild04);
+                    grp_feedback304.ParentStep = (int)GrpSchedulePrimaryStepEnum.Feedback;
+                    grp_feedback304.Step = (int)GrpSchedulePrimaryStepEnum.FeedbackChild04;
+                    entityList.Add(grp_feedback304);
+                    #endregion
+                    #region (目前为空)报批流程
+
+                    #endregion
+                    #region 护照/签证
+                    //收集资料
+                    Grp_ScheduleDetailInfo grp_visa502 = _model.DeepClone();
+                    grp_visa502.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.VisaChild02);
+                    grp_visa502.ParentStep = (int)GrpSchedulePrimaryStepEnum.Visa;
+                    grp_visa502.Step = (int)GrpSchedulePrimaryStepEnum.VisaChild02;
+                    entityList.Add(grp_visa502);
+
+                    //取护照资料
+                    Grp_ScheduleDetailInfo grp_visa503 = _model.DeepClone();
+                    grp_visa503.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.VisaChild03);
+                    grp_visa503.ParentStep = (int)GrpSchedulePrimaryStepEnum.Visa;
+                    grp_visa503.Step = (int)GrpSchedulePrimaryStepEnum.VisaChild03;
+                    entityList.Add(grp_visa503);
+
+                    //填资料
+                    Grp_ScheduleDetailInfo grp_visa504 = _model.DeepClone();
+                    grp_visa504.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.VisaChild04);
+                    grp_visa504.ParentStep = (int)GrpSchedulePrimaryStepEnum.Visa;
+                    grp_visa504.Step = (int)GrpSchedulePrimaryStepEnum.VisaChild04;
+                    entityList.Add(grp_visa504);
+
+                    //送签
+                    Grp_ScheduleDetailInfo grp_visa505 = _model.DeepClone();
+                    grp_visa505.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.VisaChild05);
+                    grp_visa505.ParentStep = (int)GrpSchedulePrimaryStepEnum.Visa;
+                    grp_visa505.Step = (int)GrpSchedulePrimaryStepEnum.VisaChild05;
+                    entityList.Add(grp_visa505);
+
+                    //出签+取护照
+                    Grp_ScheduleDetailInfo grp_visa506 = _model.DeepClone();
+                    grp_visa506.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.VisaChild06);
+                    grp_visa506.ParentStep = (int)GrpSchedulePrimaryStepEnum.Visa;
+                    grp_visa506.Step = (int)GrpSchedulePrimaryStepEnum.VisaChild06;
+                    entityList.Add(grp_visa506);
+
+                    //归还护照
+                    Grp_ScheduleDetailInfo grp_visa507 = _model.DeepClone();
+                    grp_visa507.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.VisaChild07);
+                    grp_visa507.ParentStep = (int)GrpSchedulePrimaryStepEnum.Visa;
+                    grp_visa507.Step = (int)GrpSchedulePrimaryStepEnum.VisaChild07;
+                    entityList.Add(grp_visa507);
+
+                    //签证费用录入 
+                    Grp_ScheduleDetailInfo grp_visa508 = _model.DeepClone();
+                    grp_visa508.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.VisaChild08);
+                    grp_visa508.ParentStep = (int)GrpSchedulePrimaryStepEnum.Visa;
+                    grp_visa508.Step = (int)GrpSchedulePrimaryStepEnum.VisaChild08;
+                    entityList.Add(grp_visa508);
+                    #endregion
+                    #region 业务操作
+                    //机票
+                    Grp_ScheduleDetailInfo grp_busJP601 = _model.DeepClone();
+                    grp_busJP601.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BusinessJP);
+                    grp_busJP601.ParentStep = (int)GrpSchedulePrimaryStepEnum.Visa;
+                    grp_busJP601.Step = (int)GrpSchedulePrimaryStepEnum.BusinessJP;
+                    entityList.Add(grp_busJP601);
+                    //机票-询价并导入黑屏代码
+                    Grp_ScheduleDetailInfo grp_busJP6012 = _model.DeepClone();
+                    grp_busJP6012.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BusinessJPChild02);
+                    grp_busJP6012.ParentStep = (int)GrpSchedulePrimaryStepEnum.BusinessJP;
+                    grp_busJP6012.Step = (int)GrpSchedulePrimaryStepEnum.BusinessJPChild02;
+                    entityList.Add(grp_busJP6012);
+                    //机票-机票已占位
+                    Grp_ScheduleDetailInfo grp_busJP6013 = _model.DeepClone();
+                    grp_busJP6013.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BusinessJPChild03);
+                    grp_busJP6013.ParentStep = (int)GrpSchedulePrimaryStepEnum.BusinessJP;
+                    grp_busJP6013.Step = (int)GrpSchedulePrimaryStepEnum.BusinessJPChild03;
+                    entityList.Add(grp_busJP6013);
+                    //机票-已出票
+                    Grp_ScheduleDetailInfo grp_busJP6014 = _model.DeepClone();
+                    grp_busJP6014.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BusinessJPChild04);
+                    grp_busJP6014.ParentStep = (int)GrpSchedulePrimaryStepEnum.BusinessJP;
+                    grp_busJP6014.Step = (int)GrpSchedulePrimaryStepEnum.BusinessJPChild04;
+                    entityList.Add(grp_busJP6014);
+                    //机票-机票费用录入
+                    Grp_ScheduleDetailInfo grp_busJP6015 = _model.DeepClone();
+                    grp_busJP6015.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BusinessJPChild05);
+                    grp_busJP6015.ParentStep = (int)GrpSchedulePrimaryStepEnum.BusinessJP;
+                    grp_busJP6015.Step = (int)GrpSchedulePrimaryStepEnum.BusinessJPChild05;
+                    entityList.Add(grp_busJP6015);
+
+                    //酒店
+                    Grp_ScheduleDetailInfo grp_busJD602 = _model.DeepClone();
+                    grp_busJD602.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BusinessJD);
+                    grp_busJD602.ParentStep = (int)GrpSchedulePrimaryStepEnum.Visa;
+                    grp_busJD602.Step = (int)GrpSchedulePrimaryStepEnum.BusinessJD;
+                    entityList.Add(grp_busJD602);
+                    //酒店-酒店费用录入
+                    Grp_ScheduleDetailInfo grp_busJD6022 = _model.DeepClone();
+                    grp_busJD6022.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BusinessJDChild02);
+                    grp_busJD6022.ParentStep = (int)GrpSchedulePrimaryStepEnum.BusinessJD;
+                    grp_busJD6022.Step = (int)GrpSchedulePrimaryStepEnum.BusinessJDChild02;
+                    entityList.Add(grp_busJD6022);
+
+                    //OP
+                    Grp_ScheduleDetailInfo grp_busOP603 = _model.DeepClone();
+                    grp_busOP603.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BusinessOP);
+                    grp_busOP603.ParentStep = (int)GrpSchedulePrimaryStepEnum.Visa;
+                    grp_busOP603.Step = (int)GrpSchedulePrimaryStepEnum.BusinessOP;
+                    entityList.Add(grp_busOP603);
+                    //OP-OP费用录入
+                    Grp_ScheduleDetailInfo grp_busOP6032 = _model.DeepClone();
+                    grp_busOP6032.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BusinessOPChild02);
+                    grp_busOP6032.ParentStep = (int)GrpSchedulePrimaryStepEnum.BusinessOP;
+                    grp_busOP6032.Step = (int)GrpSchedulePrimaryStepEnum.BusinessOPChild02;
+                    entityList.Add(grp_busOP6032);
 
-                    Grp_ScheduleDetailInfo grp_budget = new Grp_ScheduleDetailInfo();
-                    grp_budget.CreateTime = DateTime.Now;
-                    grp_budget.CreateUserId = _groupConfig.AutoCreate;
-                    //grp_budget.Duty=
+                    //商邀
+                    Grp_ScheduleDetailInfo grp_busSY604 = _model.DeepClone();
+                    grp_busSY604.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BusinessSY);
+                    grp_busSY604.ParentStep = (int)GrpSchedulePrimaryStepEnum.Visa;
+                    grp_busSY604.Step = (int)GrpSchedulePrimaryStepEnum.BusinessSY;
+                    entityList.Add(grp_busSY604);
+                    //商邀-商邀费用录入
+                    Grp_ScheduleDetailInfo grp_busSY6042 = _model.DeepClone();
+                    grp_busSY6042.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BusinessSYChild02);
+                    grp_busSY6042.ParentStep = (int)GrpSchedulePrimaryStepEnum.BusinessSY;
+                    grp_busSY6042.Step = (int)GrpSchedulePrimaryStepEnum.BusinessSYChild02;
+                    entityList.Add(grp_busSY6042);
+
+                    //其他
+                    Grp_ScheduleDetailInfo grp_busQT605 = _model.DeepClone();
+                    grp_busQT605.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BusinessQT);
+                    grp_busQT605.ParentStep = (int)GrpSchedulePrimaryStepEnum.Visa;
+                    grp_busQT605.Step = (int)GrpSchedulePrimaryStepEnum.BusinessQT;
+                    entityList.Add(grp_busQT605);
+                    //商邀-商邀费用录入
+                    Grp_ScheduleDetailInfo grp_busQT6052 = _model.DeepClone();
+                    grp_busQT6052.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.BusinessQTChild02);
+                    grp_busQT6052.ParentStep = (int)GrpSchedulePrimaryStepEnum.BusinessQT;
+                    grp_busQT6052.Step = (int)GrpSchedulePrimaryStepEnum.BusinessQTChild02;
+                    entityList.Add(grp_busQT6052);
+
+                    #endregion
+                    #region 费用审批
+                    //机票费用审批
+                    Grp_ScheduleDetailInfo grp_cost702 = _model.DeepClone();
+                    grp_cost702.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.CostAuditChild02);
+                    grp_cost702.ParentStep = (int)GrpSchedulePrimaryStepEnum.CostAudit;
+                    grp_cost702.Step = (int)GrpSchedulePrimaryStepEnum.CostAuditChild02;
+                    grp_cost702.Duty = _groupConfig.Boss;
+                    entityList.Add(grp_cost702);
+                    //酒店费用审批
+                    Grp_ScheduleDetailInfo grp_cost703 = _model.DeepClone();
+                    grp_cost703.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.CostAuditChild03);
+                    grp_cost703.ParentStep = (int)GrpSchedulePrimaryStepEnum.CostAudit;
+                    grp_cost703.Step = (int)GrpSchedulePrimaryStepEnum.CostAuditChild03;
+                    grp_cost703.Duty = _groupConfig.Boss;
+                    entityList.Add(grp_cost703);
+                    //OP费用审批
+                    Grp_ScheduleDetailInfo grp_cost704 = _model.DeepClone();
+                    grp_cost704.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.CostAuditChild04);
+                    grp_cost704.ParentStep = (int)GrpSchedulePrimaryStepEnum.CostAudit;
+                    grp_cost704.Step = (int)GrpSchedulePrimaryStepEnum.CostAuditChild04;
+                    grp_cost704.Duty = _groupConfig.Boss;
+                    entityList.Add(grp_cost704);
+                    //OP费用审批
+                    Grp_ScheduleDetailInfo grp_cost705 = _model.DeepClone();
+                    grp_cost705.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.CostAuditChild05);
+                    grp_cost705.ParentStep = (int)GrpSchedulePrimaryStepEnum.CostAudit;
+                    grp_cost705.Step = (int)GrpSchedulePrimaryStepEnum.CostAuditChild05;
+                    grp_cost705.Duty = _groupConfig.Boss;
+                    entityList.Add(grp_cost705);
+                    //增减款项审批
+                    Grp_ScheduleDetailInfo grp_cost706 = _model.DeepClone();
+                    grp_cost706.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.CostAuditChild06);
+                    grp_cost706.ParentStep = (int)GrpSchedulePrimaryStepEnum.CostAudit;
+                    grp_cost706.Step = (int)GrpSchedulePrimaryStepEnum.CostAuditChild06;
+                    grp_cost706.Duty = _groupConfig.Boss;
+                    entityList.Add(grp_cost706);
+                    #endregion
+                    #region 付款给供应商
+                    //OP费用付款
+                    Grp_ScheduleDetailInfo grp_pay802 = _model.DeepClone();
+                    grp_pay802.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.PayChild02);
+                    grp_pay802.ParentStep = (int)GrpSchedulePrimaryStepEnum.Pay;
+                    grp_pay802.Step = (int)GrpSchedulePrimaryStepEnum.PayChild02;
+                    entityList.Add(grp_pay802);
+                    //商邀费用付款
+                    Grp_ScheduleDetailInfo grp_pay803 = _model.DeepClone();
+                    grp_pay803.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.PayChild03);
+                    grp_pay803.ParentStep = (int)GrpSchedulePrimaryStepEnum.Pay;
+                    grp_pay803.Step = (int)GrpSchedulePrimaryStepEnum.PayChild03;
+                    entityList.Add(grp_pay803);
+                    //增减款项付款
+                    Grp_ScheduleDetailInfo grp_pay804 = _model.DeepClone();
+                    grp_pay804.JobContent = EnumHelper.GetEnumDescription(GrpSchedulePrimaryStepEnum.PayChild04);
+                    grp_pay804.ParentStep = (int)GrpSchedulePrimaryStepEnum.Pay;
+                    grp_pay804.Step = (int)GrpSchedulePrimaryStepEnum.PayChild04;
+                    entityList.Add(grp_pay804);
+                    #endregion
+                    #region (目前为空)出行事项会议
+
+                    #endregion
+                    #region (目前为空)送机
+
+                    #endregion
+                    #region (目前为空)接机
+
+                    #endregion
+                    #region (目前为空)收款
+
+                    #endregion
+                    #region (目前为空)团组完成
+
+                    #endregion
 
+                    //SqlSugar批量添加
+                    _grpScheduleRep.bulkInsert(entityList);
                     #endregion
+                    #region 流程管控成员
+                    string sqlPerson = string.Format(@"Select u.Id As SysUserId,u.CnName As SysUserName,JobName as JobStr 
+From Sys_Users As u With(Nolock) 
+Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id
+Inner Join Sys_JobPost as j With(Nolock) On u.JobPostId=j.Id
+Where d.Id={0} And u.Id not in({1})", DepartmentCode.IC, _groupConfig.FilterUser);
 
+                    List<Grp_SchedulePersonInfo> personList = await _grpScheduleRep.GetEntityList_SchedulePersonBySql(sqlPerson);
+                    if (personList.Count > 0)
+                    {
+                        foreach (var item in personList)
+                        {
+                            item.CreateUserId = _groupConfig.DefaultUser;
+                            item.ScheduleId = DiId;
+                        }
+                        _grpScheduleRep.bulkInsert(personList);
+                    }
 
                     #endregion
                 }
@@ -68,7 +339,94 @@ namespace OASystem.API.OAMethodLibs
 
         }
 
+        public static async void ChangeStepForPrimary(int DiId, GrpSchedulePrimaryStepEnum primary, int isDel, int exception, string remark)
+        {
+            //var _grpScheduleRep = AutofacIocManager.Instance.GetService<GrpScheduleRepository>();
+            string sqlPrimary = string.Format(@" Select * From Grp_Schedule With(Nolock) Where IsDel=0 And DiId={0} ", DiId);
+            Grp_ScheduleInfo _grpPrimaryInfo = _grpScheduleRep.GetSingleInfoBySqlWithNolock(sqlPrimary);
+            if (_grpPrimaryInfo != null)
+            {
+                _grpPrimaryInfo.PrimaryStep = primary;
+                _grpPrimaryInfo.IsDel = isDel;
+                _grpPrimaryInfo.Exception = exception;
+                _grpPrimaryInfo.Remark += ";" + remark;
+
+                var result = await _grpScheduleRep._sqlSugar.Updateable<Grp_ScheduleInfo>()
+                .Where(s => s.Id == _grpPrimaryInfo.Id)
+                .UpdateColumns(s => new { s.PrimaryStep, s.IsDel, s.Exception, s.Remark })
+                .ExecuteCommandAsync();
+            }
+        }
+
+        #region 流程管控步骤推进
+
+        /// <summary>
+        /// 刷新团组管控最新状态,或推进流程到下一节点
+        /// </summary>
+        /// <param name="scheduleId">团组流程Id</param>
+        public static async void RefreshWorkStep(int scheduleId, bool auto = false)
+        {
+            //var _grpScheduleRep = AutofacIocManager.Instance.GetService<GrpScheduleRepository>();
+            string sqlPrimary = string.Format(@" Select * From Grp_Schedule With(Nolock) Where IsDel=0 And Id={0} ", scheduleId);
+            Grp_ScheduleInfo _grpPrimaryInfo = _grpScheduleRep.GetSingleInfoBySqlWithNolock(sqlPrimary);
+            if (_grpPrimaryInfo != null)
+            {
+                List<Grp_ScheduleDetailInfo> _list = _grpScheduleRep._sqlSugar.Queryable<Grp_ScheduleDetailInfo>()
+                 .Where(s => s.ScheduleId == scheduleId && s.IsDel != 1 && s.ParentStep == (int)_grpPrimaryInfo.PrimaryStep && s.StepStatus != 2)
+                 .ToList();
+                if (_list.Count > 0)
+                {
+                    //未完成主流程节点下所有步骤任务
+                }
+                else
+                {
+                    //可推进节点
+                    if (auto)
+                    {
+                        int nextPrimaryStep = (int)_grpPrimaryInfo.PrimaryStep + 1;
+                        var result = await _grpScheduleRep._sqlSugar.Updateable<Grp_ScheduleInfo>()
+                            .Where(s => s.Id == _grpPrimaryInfo.Id)
+                            .UpdateColumns(s => new { nextPrimaryStep })
+                            .ExecuteCommandAsync();
+                    }
+                }
+
+                //eg:CheckStep_Budget
+                //switch (_grpPrimaryInfo.PrimaryStep)
+                //{
+                //    case GrpSchedulePrimaryStepEnum.Budget: CheckStep_Budget(scheduleId); break;
+                //}
+            }
+        }
+
+        /// <summary>
+        /// 暂无需求,先保存,可扩展至查询验证主流程下每一个详细流程步骤对应的业务操作是否完成,需要其他业务提供验证方法
+        /// 查看流程-经费预算
+        /// </summary>
+        /// <param name="scheduleId"></param>
+        /// <returns>true:已完成所有步骤,false:存在未完成的步骤(Grp_ScheduleDetail.StepStatus:0/1/2)</returns>
+        private static bool CheckStep_Budget(int scheduleId)
+        {
+            List<Grp_ScheduleDetailInfo> _list = _grpScheduleRep._sqlSugar.Queryable<Grp_ScheduleDetailInfo>()
+                 .Where(s => s.ScheduleId == scheduleId && s.IsDel != 1 && s.ParentStep == (int)GrpSchedulePrimaryStepEnum.Budget)
+                 .ToList();
+
+            foreach (var item in _list)
+            {
+                switch (item.Step)
+                {
+                    case (int)GrpSchedulePrimaryStepEnum.BudgetChild01:
+                        //验证方法
+                        break;
+                    case (int)GrpSchedulePrimaryStepEnum.BudgetChild02: break;
+
+                }
+            }
+
+            return false;
+        }
 
+        #endregion
 
     }
 

+ 4 - 1
OASystem/OASystem.Api/appsettings.json

@@ -8,6 +8,9 @@
     "AutoCreate": "4",
     "Leader": "149",
     "ExBeginDays": "3",
-    "ExEndDays": "30"
+    "ExEndDays": "30",
+    "DefaultUser": "51",
+    "Boss": "21",
+    "FilterUser": "51,180"
   }
 }

+ 2 - 0
OASystem/OASystem.Domain/AutoMappers/_baseMappingProfile.cs

@@ -58,6 +58,8 @@ namespace OASystem.Domain.AutoMappers
             #region Group
 
             CreateMap<GroupListDto, Grp_DelegationInfo>();
+            CreateMap<Grp_ScheduleDetailUpdDto, Grp_ScheduleDetailInfo>();
+            CreateMap<Grp_ScheduleDetailInsertDto, Grp_ScheduleDetailInfo>();
             #endregion
 
             #region Resource

+ 16 - 1
OASystem/OASystem.Domain/Dtos/Groups/GroupsConfig.cs

@@ -31,6 +31,21 @@ namespace OASystem.Domain.Dtos.Groups
         /// <summary>
         /// 团组默认结束日期(增加30天)
         /// </summary>
-        public int ExEndDays { get; set; }  
+        public int ExEndDays { get; set; }
+
+        /// <summary>
+        /// 默认用户Id(国交部共享号)
+        /// </summary>
+        public int DefaultUser { get; set; }
+
+        /// <summary>
+        /// 总经理Id
+        /// </summary>
+        public int Boss { get; set; }
+
+        /// <summary>
+        /// 屏蔽用户Id
+        /// </summary>
+        public string FilterUser { get; set; }
     }
 }

+ 32 - 0
OASystem/OASystem.Domain/Dtos/Groups/Grp_ScheduleDetailDto.cs

@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    public class Grp_ScheduleDetailUpdDto
+    {
+        public int Id { get; set; }
+        public int Duty { get; set; }
+        public int StepStatus { get; set; }
+        public string JobContent { get; set; }
+        public DateTime ExpectBeginDt { get; set; }
+        public DateTime ExpectEndDt { get; set; }
+        public string Remark { get; set; }
+    }
+
+    public class Grp_ScheduleDetailInsertDto
+    {
+        public int ScheduleId { get; set; }
+        public int Step { get; set; }
+        public int ParentStep { get; set; }
+        public int Duty { get; set; }
+        public string JobContent { get; set; }
+        public DateTime ExpectBeginDt { get; set; }
+        public DateTime ExpectEndDt { get; set; }
+        public int CreateUserId { get; set; }
+        public string Remark { get; set; }
+    }
+}

+ 1 - 0
OASystem/OASystem.Domain/Dtos/Groups/Grp_ScheduleDto.cs

@@ -31,5 +31,6 @@ namespace OASystem.Domain.Dtos.Groups
         /// </summary>
         public int SysUserId { get; set; }
 
+
     }
 }

+ 25 - 2
OASystem/OASystem.Domain/Entities/Groups/Grp_ScheduleInfo.cs

@@ -2,6 +2,8 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.Runtime.Serialization;
 using System.Text;
 using System.Threading.Tasks;
 
@@ -72,7 +74,7 @@ namespace OASystem.Domain.Entities.Groups
     /// 团组流程管控详细进度
     /// </summary>
     [SugarTable("Grp_ScheduleDetail")]
-    public class Grp_ScheduleDetailInfo : EntityBase
+    public class Grp_ScheduleDetailInfo : EntityBase, ICloneable
     {
         /// <summary>
         /// 团组流程Id
@@ -93,7 +95,12 @@ namespace OASystem.Domain.Entities.Groups
         public int ParentStep { get; set; }
 
         /// <summary>
-        /// 流程状态(0/1/2 未完成/进行中/已完成)
+        /// 流程状态
+        /// <list type="table">
+        /// <item><para>0:待分配(未开始)</para></item>
+        /// <item><para>1:进行中</para></item>
+        /// <item><para>2:已完成</para></item>
+        /// </list>
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int StepStatus { get; set; }
@@ -139,6 +146,22 @@ namespace OASystem.Domain.Entities.Groups
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int Exception { get; set; }
+
+        public object Clone()
+        {
+            return this.MemberwiseClone();
+        }
+
+        public Grp_ScheduleDetailInfo DeepClone()
+        {
+            using (Stream objectStream = new MemoryStream())
+            {
+                IFormatter formatter = new BinaryFormatter();
+                formatter.Serialize(objectStream, this);
+                objectStream.Seek(0, SeekOrigin.Begin);
+                return formatter.Deserialize(objectStream) as Grp_ScheduleDetailInfo;
+            }
+        }
     }
 
     /// <summary>

+ 6 - 0
OASystem/OASystem.Domain/Enums/EnumHelper.cs

@@ -35,5 +35,11 @@ namespace OASystem.Domain.Enums
                 return "";
             }
         }
+
+        //根据值获取枚举方法
+        public static Enum GetEnumByValue(Type enumType, string value)
+        {
+            return Enum.Parse(enumType, value) as Enum;
+        }
     }
 }

+ 245 - 19
OASystem/OASystem.Domain/Enums/GrpScheduleEnum.cs

@@ -13,100 +13,326 @@ namespace OASystem.Domain.Enums
     public enum GrpSchedulePrimaryStepEnum
     {
         /// <summary>
-        /// 未开始/等待任务分配
+        /// 未开始/等待任务分配 I
         /// </summary>
         [Description("未开始/等待任务分配")]
         Wait = 0,
 
         /// <summary>
-        /// 确认出团/任务分配
+        /// 确认出团/任务分配 I
         /// </summary>
         [Description("确认出团/任务分配完成")]
         Confirm = 1,
 
+        #region 经费预算
         /// <summary>
-        /// 经费预算
+        /// 经费预算 I
         /// </summary>
         [Description("经费预算")]
         Budget = 2,
         /// <summary>
-        /// 经费预算子流程01:完成经费预算
+        /// 经费预算自定义子流程 II
         /// </summary>
-        [Description("完成经费预算")]
         BudgetChild01 = 201,
         /// <summary>
-        /// 经费预算自定义子流程:
+        /// 经费预算子流程:完成经费预算 II
         /// </summary>
-        BudgetChildCustom = 2011,
+        [Description("完成经费预算")]
+        BudgetChild02 = 202,
+        #endregion
 
+        #region 市场部人员对接反馈
         /// <summary>
-        /// 市场部人员对接反馈
+        /// 市场部人员对接反馈 I
         /// </summary>
         [Description("市场部人员对接反馈")]
         Feedback = 3,
+        /// <summary>
+        /// 市场部人员对接反馈自定义子流程 II
+        /// </summary>
+        FeedbackChild01 = 301,
+        /// <summary>
+        /// 上传明细单 II
+        /// </summary>
+        [Description("上传明细单")]
+        FeedbackChild02 = 302,
+        /// <summary>
+        /// 录入最终总经费预算 II
+        /// </summary>
+        [Description("录入最终总经费预算")]
+        FeedbackChild03 = 303,
+        /// <summary>
+        /// 完成报价对接/反馈 II
+        /// </summary>
+        [Description("完成报价对接/反馈")]
+        FeedbackChild04 = 304,
+        #endregion
 
         /// <summary>
-        /// 报批流程
+        /// 报批流程 I
         /// </summary>
         [Description("报批流程")]
         Puote = 4,
 
+        #region 护照签证
+
         /// <summary>
-        /// 护照签证
+        /// 护照签证 I
         /// </summary>
         [Description("护照签证")]
         Visa = 5,
+        /// <summary>
+        /// 护照签证自定义子流程 II
+        /// </summary>
+        VisaChild01 = 501,
+        /// <summary>
+        /// 收集资料 II
+        /// </summary>
+        [Description("收集资料")]
+        VisaChild02 = 502,
+        /// <summary>
+        /// 取护照资料 II
+        /// </summary>
+        [Description("取护照资料")]
+        VisaChild03 = 503,
+        /// <summary>
+        /// 填资料 II
+        /// </summary>
+        [Description("填资料")]
+        VisaChild04 = 504,
+        /// <summary>
+        /// 送签 II
+        /// </summary>
+        [Description("送签")]
+        VisaChild05 = 505,
+        /// <summary>
+        /// 出签+取护照 II
+        /// </summary>
+        [Description("出签+取护照")]
+        VisaChild06 = 506,
+        /// <summary>
+        /// 归还护照 II
+        /// </summary>
+        [Description("归还护照")]
+        VisaChild07 = 507,
+        /// <summary>
+        /// 签证费用录入 II
+        /// </summary>
+        [Description("签证费用录入")]
+        VisaChild08 = 508,
+
+        #endregion
+
+        #region 业务操作
 
         /// <summary>
-        /// 业务流程
+        /// 业务流程 I
         /// </summary>
         [Description("业务操作")]
         Business = 6,
+        #region 机票
+        /// <summary>
+        /// 业务流程-机票 II
+        /// </summary>
+        [Description("业务流程-机票")]
+        BusinessJP = 601,
+        /// <summary>
+        /// 业务流程-机票-自定义子流程 III
+        /// </summary>
+        [Description("业务流程-机票-自定义子流程")]
+        BusinessJPChild01 = 6011,
+        /// <summary>
+        /// 业务流程-机票-询价并导入黑屏代码 III
+        /// </summary>
+        [Description("询价并导入黑屏代码")]
+        BusinessJPChild02 = 6012,
+        /// <summary>
+        /// 业务流程-机票-机票已占位 III
+        /// </summary>
+        [Description("机票已占位")]
+        BusinessJPChild03 = 6013,
+        /// <summary>
+        /// 业务流程-机票-已出票 III
+        /// </summary>
+        [Description("已出票")]
+        BusinessJPChild04 = 6014,
+        /// <summary>
+        /// 业务流程-机票-机票费用录入 III
+        /// </summary>
+        [Description("机票费用录入")]
+        BusinessJPChild05 = 6015,
+        #endregion
+        #region 酒店
+        /// <summary>
+        /// 业务流程-酒店 II
+        /// </summary>
+        [Description("业务流程-酒店")]
+        BusinessJD = 602,
+        /// <summary>
+        /// 业务流程-酒店-自定义子流程 III
+        /// </summary>
+        [Description("业务流程-酒店-自定义子流程")]
+        BusinessJDChild01 = 6021,
+        /// <summary>
+        /// 业务流程-酒店-酒店费用录入 III
+        /// </summary>
+        [Description("酒店费用录入")]
+        BusinessJDChild02 = 6022,
+
+        #endregion
+        #region OP
+        /// <summary>
+        /// 业务流程-OP II
+        /// </summary>
+        [Description("业务流程-OP")]
+        BusinessOP = 603,
+        /// <summary>
+        /// 业务流程-OP-自定义子流程 III
+        /// </summary>
+        [Description("业务流程-OP-自定义子流程")]
+        BusinessOPChild01 = 6031,
+        /// <summary>
+        /// 业务流程-OP-OP费用录入 III
+        /// </summary>
+        [Description("OP费用录入")]
+        BusinessOPChild02 = 6032,
+        #endregion
+        #region 商邀
+        /// <summary>
+        /// 业务流程-商邀 II
+        /// </summary>
+        [Description("业务流程-商邀")]
+        BusinessSY = 604,
+        /// <summary>
+        /// 业务流程-商邀-自定义子流程 III
+        /// </summary>
+        [Description("业务流程-商邀-自定义子流程")]
+        BusinessSYChild01 = 6041,
+        /// <summary>
+        /// 业务流程-商邀-商邀费用录入 III
+        /// </summary>
+        [Description("报批/商邀费用录入")]
+        BusinessSYChild02 = 6042,
+        #endregion
+        #region 其他
+        /// <summary>
+        /// 业务流程-其他 II
+        /// </summary>
+        [Description("业务流程-其他")]
+        BusinessQT = 605,
+        /// <summary>
+        /// 业务流程-商邀-自定义子流程 III
+        /// </summary>
+        [Description("业务流程-其他-自定义子流程")]
+        BusinessQTChild01 = 6051,
+        /// <summary>
+        /// 业务流程-商邀-商邀费用录入 III
+        /// </summary>
+        [Description("增减款项录入")]
+        BusinessQTChild02 = 6052,
+        #endregion
+
+        #endregion
+
+        #region 费用审批
 
         /// <summary>
-        /// 费用审批
+        /// 费用审批 I
         /// </summary>
         [Description("费用审批")]
         CostAudit = 7,
+        /// <summary>
+        /// /费用审批自定义子流程 II
+        /// </summary>
+        CostAuditChild01 = 701,
+        /// <summary>
+        /// 费用审批-机票费用审批 II
+        /// </summary>
+        [Description("机票费用审批")]
+        CostAuditChild02 = 702,
+        /// <summary>
+        /// 费用审批-酒店费用审批 II
+        /// </summary>
+        [Description("酒店费用审批")]
+        CostAuditChild03 = 703,
+        /// <summary>
+        /// 费用审批-OP费用审批 II
+        /// </summary>
+        [Description("OP费用审批")]
+        CostAuditChild04 = 704,
+        /// <summary>
+        /// 费用审批-商邀费用审批 II
+        /// </summary>
+        [Description("商邀费用审批")]
+        CostAuditChild05 = 705,
+        /// <summary>
+        /// 费用审批-增减款项审批 II
+        /// </summary>
+        [Description("增减款项审批")]
+        CostAuditChild06 = 706,
+
+        #endregion
+
+        #region 付款给供应商
 
         /// <summary>
-        /// 付款给供应商
+        /// 付款给供应商 I
         /// </summary>
         [Description("付款给供应商")]
         Pay = 8,
+        /// <summary>
+        /// 付款给供应商-自定义子流程 II
+        /// </summary>
+        PayChild01 = 801,
+        /// <summary>
+        /// 付款给供应商-OP费用付款 II
+        /// </summary>
+        [Description("OP费用付款")]
+        PayChild02 = 802,
+        /// <summary>
+        /// 付款给供应商-商邀费用付款 II
+        /// </summary>
+        [Description("商邀费用付款")]
+        PayChild03 = 803,
+        /// <summary>
+        /// 付款给供应商-增减款项付款 II
+        /// </summary>
+        [Description("增减款项付款")]
+        PayChild04 = 804,
+        #endregion
 
         /// <summary>
-        /// 出行事项会议
+        /// 出行事项会议 I
         /// </summary>
         [Description("出行事项会议")]
         Training = 9,
 
         /// <summary>
-        /// 送机
+        /// 送机 I
         /// </summary>
         [Description("送机")]
         DropOff = 10,
 
         /// <summary>
-        /// 接机
+        /// 接机 I
         /// </summary>
         [Description("接机")]
         PickUp = 11,
 
         /// <summary>
-        /// 收款
+        /// 收款 I
         /// </summary>
         [Description("收款")]
         Collect = 12,
 
         /// <summary>
-        /// 团组完成
+        /// 团组完成 I 
         /// </summary>
         [Description("团组完成")]
         Finish = 13,
 
         /// <summary>
-        /// 团组取消
+        /// 团组取消 I
         /// </summary>
         [Description("团组取消")]
         Cancel = 14,

+ 15 - 2
OASystem/OASystem.Infrastructure/Repositories/Groups/GrpScheduleRepository.cs

@@ -57,18 +57,31 @@ namespace OASystem.Infrastructure.Repositories.Groups
             return _view;
         }
 
+        /// <summary>
+        /// 获取团组流程(列表分页)
+        /// </summary>
+        /// <param name="_dto"></param>
+        /// <returns></returns>
         public async Task<List<Grp_ScheduleView>> GetViewList_GrpSchedule(Grp_ScheduleDto _dto)
         {
             List<Grp_ScheduleView> _viewList = new List<Grp_ScheduleView>();
             string sqlInner = this.SetSql_GrpScheduleDto(_dto);
             string sql = string.Format(@" Select * From ( Select ROW_NUMBER() Over(order By Id desc) as RowNumber,* From ( {2} ) ) as tb Where tb.RowNumber Between {0} And {1} ", (((_dto.PageIndex > 0) ? (_dto.PageIndex - 1) : 0) * _dto.PageSize) + 1, (((_dto.PageIndex > 0) ? (_dto.PageIndex - 1) : 0) + 1) * _dto.PageSize, sqlInner);
-
             _viewList = await _sqlSugar.SqlQueryable<Grp_ScheduleView>(sql).ToListAsync();
-
             return _viewList;
         }
 
+        public void bulkInsert<T>(List<T> list)
+        {
+            _sqlSugar.Insertable(list).UseParameter().ExecuteCommand();
+        }
 
+        public async Task<List<Grp_SchedulePersonInfo>> GetEntityList_SchedulePersonBySql(string sql)
+        {
+            List<Grp_SchedulePersonInfo> _list = new List<Grp_SchedulePersonInfo>();
+            _list = await _sqlSugar.SqlQueryable<Grp_SchedulePersonInfo>(sql).ToListAsync();
+            return _list;
+        }
 
     }
 }