Pārlūkot izejas kodu

团组模块 - 出入境费用(移动端) - OP --> 复选框操作增加在每项费用操作里 代码编写、本地测试

LEIYI 3 mēneši atpakaļ
vecāks
revīzija
988480d8c3

+ 227 - 58
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -7455,7 +7455,7 @@ FROM
                 .Where((dac, ntf, sd) => dac.IsDel == 0 && dac.DiId == dto.DiId)
                 .Select((dac, ntf, sd) => new DayAndCostMobileInfoView
                         {
-                            Id = dac.Id,
+                            SubId = dac.Id,
                             DiId = dac.DiId,
                             Type = dac.Type,
                             Days = dac.Days,
@@ -7485,7 +7485,7 @@ FROM
                 .OrderBy((dop, sd1, sd2) => dop.Index)
                 .Select((dop, sd1, sd2) => new DayOtherPriceMobileInfoView
                 {
-                    Id = dop.Id,
+                    SubId = dop.Id,
                     DiId = dop.Diid,
                     Index = dop.Index,
                     SetDataId = dop.SetDataId,
@@ -7564,7 +7564,7 @@ FROM
                     .Where((dac, ntf, sd) => dac.IsDel == 0 && dac.DiId == dto.DiId && dac.Type == 1)
                     .Select((dac, ntf, sd) => new DayAndCostMobileInfoView
                     {
-                        Id = dac.Id,
+                        SubId = dac.Id,
                         DiId = dac.DiId,
                         Type = dac.Type,
                         Days = dac.Days,
@@ -7578,7 +7578,7 @@ FROM
                      .ToArray();
 
                 var data = new ChoiceThreeMobileSubInfoView() {
-                    Id = eecInfo.Id,
+                    ParentId = eecInfo.Id,
                     ChoiceThree = eecInfo.ChoiceThree,
                     ChoiceThreeTotalCost = dayAndCostDatas.Sum(x => x.SubTotal),
                     Details = dayAndCostDatas
@@ -7594,7 +7594,7 @@ FROM
                     .Where((dac, ntf, sd) => dac.IsDel == 0 && dac.DiId == dto.DiId && dac.Type == 2)
                     .Select((dac, ntf, sd) => new DayAndCostMobileInfoView
                     {
-                        Id = dac.Id,
+                        SubId = dac.Id,
                         DiId = dac.DiId,
                         Type = dac.Type,
                         Days = dac.Days,
@@ -7609,7 +7609,7 @@ FROM
 
                 var data = new ChoiceFourMobileSubInfoView()
                 {
-                    Id = eecInfo.Id,
+                    ParentId = eecInfo.Id,
                     ChoiceFour = eecInfo.ChoiceFour,
                     ChoiceFourTotalCost = dayAndCostDatas.Sum(x => x.SubTotal),
                     Details = dayAndCostDatas
@@ -7624,7 +7624,7 @@ FROM
                     .Where((dac, ntf, sd) => dac.IsDel == 0 && dac.DiId == dto.DiId && dac.Type == 3)
                     .Select((dac, ntf, sd) => new DayAndCostMobileInfoView
                     {
-                        Id = dac.Id,
+                        SubId = dac.Id,
                         DiId = dac.DiId,
                         Type = dac.Type,
                         Days = dac.Days,
@@ -7639,7 +7639,7 @@ FROM
 
                 var data = new ChoiceFiveMobileSubInfoView()
                 {
-                    Id = eecInfo.Id,
+                    ParentId = eecInfo.Id,
                     ChoiceFive = eecInfo.ChoiceFive,
                     ChoiceFiveTotalCost = dayAndCostDatas.Sum(x => x.SubTotal),
                     Details = dayAndCostDatas
@@ -7654,7 +7654,7 @@ FROM
                      .Where((dac, ntf, sd) => dac.IsDel == 0 && dac.DiId == dto.DiId && dac.Type == 4)
                      .Select((dac, ntf, sd) => new DayAndCostMobileInfoView
                      {
-                         Id = dac.Id,
+                         SubId = dac.Id,
                          DiId = dac.DiId,
                          Type = dac.Type,
                          Days = dac.Days,
@@ -7669,7 +7669,7 @@ FROM
 
                 var data = new ChoiceSixMobileSubInfoView()
                 {
-                    Id = eecInfo.Id,
+                    ParentId = eecInfo.Id,
                     ChoiceSix = eecInfo.ChoiceSix,
                     ChoiceSixTotalCost = dayAndCostDatas.Sum(x => x.SubTotal),
                     Details = dayAndCostDatas
@@ -7686,7 +7686,7 @@ FROM
                     .OrderBy((dop, sd1, sd2) => dop.Index)
                     .Select((dop, sd1, sd2) => new DayOtherPriceMobileInfoView
                     {
-                        Id = dop.Id,
+                        SubId = dop.Id,
                         DiId = dop.Diid,
                         Index = dop.Index,
                         SetDataId = dop.SetDataId,
@@ -7701,7 +7701,7 @@ FROM
 
                 var data = new ChoiceSevenMobileSubInfoView()
                 {
-                    Id = eecInfo.Id,
+                    ParentId = eecInfo.Id,
                     OtherExpenses_Checked = eecInfo.OtherExpenses_Checked,
                     OtherExpensesTotalCost = otherData.Sum(x => x.SubTotal),
                     Details = otherData
@@ -7921,8 +7921,7 @@ FROM
 
             var info = _mapper.Map<Grp_EnterExitCost>(dto);
             info.InsidePay = dto.Visa + dto.Service + dto.Safe + dto.Ticket + dto.HeSuan + dto.YiMiao;
-            info.ChoiceOne = dto.IsSelected;
-
+            
             int id = dto.Id;
             if (id <= 0) //add 
             {
@@ -7936,6 +7935,7 @@ FROM
             {
                 var upd = await _sqlSugar.Updateable(info)
                     .UpdateColumns(x => new {
+                        x.ChoiceOne,
                         x.InsidePay,
                         x.VisaRemark,
                         x.Visa,
@@ -7970,6 +7970,9 @@ FROM
             if (dto.CurrUserId < 1) return Ok(JsonView(false, MsgTips.UserId));
 
             var info = _mapper.Map<Grp_EnterExitCost>(dto);
+            info.AirJJC_Checked = dto.ChoiceTwoJJ;
+            info.AirGWC_Checked = dto.ChoiceTwoGW;
+            info.AirTDC_Checked = dto.ChoiceTwoTD;
 
             int id = dto.Id;
             decimal jjcItemTotal = 0.00M, gwcItemTotal = 0.00M, tdcItemTotal = 0.00M;
@@ -7985,8 +7988,11 @@ FROM
             {
                 var upd = await _sqlSugar.Updateable(info)
                     .UpdateColumns(x => new {
+                        x.AirJJC_Checked,
                         x.OutsideJJPay,
+                        x.AirGWC_Checked,
                         x.OutsideGWPay,
+                        x.AirTDC_Checked,
                         x.OutsideTDPay,
                         x.AirJJ,
                         x.AirGW,
@@ -8006,7 +8012,15 @@ FROM
             //消息通知
             await EnterExitCostMobileOpNotice(dto.DiId, id, dto.CurrUserId);
 
-            return Ok(JsonView(new { jjcItemTotal = jjcItemTotal, gwcItemTotal = gwcItemTotal, tdcItemTotal = tdcItemTotal }));
+            return Ok(JsonView(new
+            {
+                choiceTwoJJ = dto.ChoiceTwoJJ,
+                jjcItemTotal = jjcItemTotal,
+                choiceTwoGW = dto.ChoiceTwoGW,
+                gwcItemTotal = gwcItemTotal,
+                choiceTwoTD = dto.ChoiceTwoTD,
+                tdcItemTotal = tdcItemTotal
+            }));
         }
 
         /// <summary>
@@ -8081,43 +8095,122 @@ FROM
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> PostEnterExitCostMobileOpSingleStep3To6(PostEnterExitCostMobileOpSingleStep3To6Dto dto)
         {
+            var feeTypeIds = new List<int>() { 1, 2, 3, 4, };
+            int parentId = dto.ParentId, subId = dto.SubId, feeType = dto.FeeType;
+
             if (!_portTypeData.Contains(dto.PortType)) return Ok(JsonView(false, MsgTips.Port));
             if (dto.DiId < 1) return Ok(JsonView(false, MsgTips.DiId));
             if (dto.CurrUserId < 1) return Ok(JsonView(false, MsgTips.UserId));
 
-            var feeTypeIds = new List<int>() { 1, 2, 3, 4, };
-            if (!feeTypeIds.Contains(dto.FeeType)) return Ok(JsonView(false, "请传入有效的费用类型!"));
-            var info = _mapper.Map<Grp_DayAndCost>(dto);
-            info.CreateUserId = dto.CurrUserId;
+            if (!feeTypeIds.Contains(feeType)) return Ok(JsonView(false, "请传入有效的费用类型!"));
            
-            if (info.Id < 1) //添加
+            var parentInfo = new Grp_EnterExitCost();
+            parentInfo.Id = dto.ParentId;
+            parentInfo.CreateUserId = dto.CurrUserId;
+
+            if (feeType == 1) parentInfo.ChoiceThree = dto.IsSelect;
+            else if (feeType == 2) parentInfo.ChoiceFour = dto.IsSelect;
+            else if (feeType == 3) parentInfo.ChoiceFive = dto.IsSelect;
+            else if (feeType == 4) parentInfo.ChoiceSix = dto.IsSelect;
+
+            var subInfo = _mapper.Map<Grp_DayAndCost>(dto);
+            subInfo.Id = subId;
+            subInfo.CreateUserId = dto.CurrUserId;
+
+            _sqlSugar.BeginTran();
+            //主表op
+            if (parentId < 1) //添加
             {
-                var add = await _sqlSugar.Insertable(info).ExecuteCommandAsync();
-                if (add < 1) return Ok(JsonView(false));
+                var parentAdd = await _sqlSugar.Insertable(parentInfo).ExecuteCommandAsync();
+                if (parentAdd < 1)
+                {
+                    _sqlSugar.RollbackTran();
+                    return Ok(JsonView(false));
+                }
+
+                //子表op
+                if (subId < 1)
+                {
+                    var subAdd = await _sqlSugar.Insertable(subInfo).ExecuteCommandAsync();
+                    if (subAdd < 1)
+                    {
+                        _sqlSugar.RollbackTran();
+                        return Ok(JsonView(false));
+                    }
+                }
+                else
+                {
+                    var subUpd = await _sqlSugar.Updateable(subInfo)
+                        .UpdateColumns(x => new
+                        {
+                            x.Days,
+                            x.NationalTravelFeeId,
+                            x.Cost,
+                            x.Currency,
+                            x.SubTotal
+                        })
+                        .WhereColumns(x => new { x.Id })
+                        .ExecuteCommandAsync();
+                    if (subUpd < 1)
+                    {
+                        _sqlSugar.RollbackTran();
+                        return Ok(JsonView(false));
+                    }
+                }
             }
             else
             {
-                var upd = await _sqlSugar.Updateable(info)
-                    .UpdateColumns(x => new
-                    {
-                        x.Days,
-                        x.NationalTravelFeeId,
-                        x.Cost,
-                        x.Currency,
-                        x.SubTotal
-                    })
-                    .WhereColumns(x => new { x.Id })
+                var parentUpd = await _sqlSugar.Updateable<Grp_EnterExitCost>()
+                    .SetColumnsIF(feeType == 1, it => it.ChoiceThree == dto.IsSelect)
+                    .SetColumnsIF(feeType == 2, it => it.ChoiceFour == dto.IsSelect)
+                    .SetColumnsIF(feeType == 3, it => it.ChoiceFive == dto.IsSelect)
+                    .SetColumnsIF(feeType == 4, it => it.ChoiceSix == dto.IsSelect)
+                    .Where(it => it.Id == parentId)
                     .ExecuteCommandAsync();
-                if (upd < 1) return Ok(JsonView(false));
-            }
 
+                if (parentUpd < 1)
+                {
+                    _sqlSugar.RollbackTran();
+                    return Ok(JsonView(false));
+                }
+
+                //子表op
+                if (subId < 1)
+                {
+                    var subAdd = await _sqlSugar.Insertable(subInfo).ExecuteCommandAsync();
+                    if (subAdd < 1)
+                    {
+                        _sqlSugar.RollbackTran();
+                        return Ok(JsonView(false));
+                    }
+                }
+                else
+                {
+                    var subUpd = await _sqlSugar.Updateable(subInfo)
+                        .UpdateColumns(x => new
+                        {
+                            x.Days,
+                            x.NationalTravelFeeId,
+                            x.Cost,
+                            x.Currency,
+                            x.SubTotal
+                        })
+                        .WhereColumns(x => new { x.Id })
+                        .ExecuteCommandAsync();
+                    if (subUpd < 1)
+                    {
+                        _sqlSugar.RollbackTran();
+                        return Ok(JsonView(false));
+                    }
+                }
+            }
+            _sqlSugar.CommitTran();
             var itemTotal = _sqlSugar.Queryable<Grp_DayAndCost>().Where(x => x.IsDel == 0 && x.DiId == dto.DiId && x.Type == dto.FeeType).Sum(x => x.SubTotal);
 
             //消息通知
-            var id = _sqlSugar.Queryable<Grp_EnterExitCost>().Where(x => x.IsDel == 0 && x.DiId == dto.DiId).First()?.Id ?? 0;
-            await EnterExitCostMobileOpNotice(dto.DiId, id, dto.CurrUserId);
+            await EnterExitCostMobileOpNotice(dto.DiId, parentId, dto.CurrUserId);
 
-            return Ok(JsonView(new { itemTotal = itemTotal }));
+            return Ok(JsonView(new { isSelect = dto.IsSelect, itemTotal = itemTotal }));
         }
 
         /// <summary>
@@ -8186,42 +8279,118 @@ FROM
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> PostEnterExitCostMobileOpSingleStep7(PostEnterExitCostMobileOpSingleStep7Dto dto)
         {
+            int parentId = dto.ParentId, subId = dto.SubId;
             if (!_portTypeData.Contains(dto.PortType)) return Ok(JsonView(false, MsgTips.Port));
             if (dto.DiId < 1) return Ok(JsonView(false, MsgTips.DiId));
             if (dto.CurrUserId < 1) return Ok(JsonView(false, MsgTips.UserId));
 
-            var info = _mapper.Map<Grp_DayOtherPrice>(dto);
-            info.CreateUserId = dto.CurrUserId;
+            var parentInfo = new Grp_EnterExitCost();
+            parentInfo.Id = parentId;
+            parentInfo.OtherExpenses_Checked = dto.IsSelect;
+            parentInfo.CreateUserId = dto.CurrUserId;
+
+            var subInfo = _mapper.Map<Grp_DayOtherPrice>(dto);
+            subInfo.Id = subId;
+            subInfo.CreateUserId = dto.CurrUserId;
 
-            if (info.Id < 1)//add
+            #region 主表op
+            _sqlSugar.BeginTran();
+            //主表op
+            if (parentId < 1)
             {
-                var add = await _sqlSugar.Insertable(info).ExecuteCommandAsync();
-                if (add < 1) return Ok(JsonView(false));
+                var parentAdd = await _sqlSugar.Insertable(parentInfo).ExecuteCommandAsync();
+                if (parentAdd < 1)
+                {
+                    _sqlSugar.RollbackTran();
+                    return Ok(JsonView(false));
+                }
+
+                #region 子表op
+                if (subId < 1)//add
+                {
+                    var subAdd = await _sqlSugar.Insertable(subInfo).ExecuteCommandAsync();
+                    if (subAdd < 1)
+                    {
+                        _sqlSugar.RollbackTran();
+                        return Ok(JsonView(false));
+                    }
+                }
+                else //upd
+                {
+                    var subUpd = await _sqlSugar.Updateable(subInfo)
+                        .UpdateColumns(x => new
+                        {
+                            x.Index,
+                            x.SetDataId,
+                            x.Cost,
+                            x.Currency,
+                            x.SubTotal,
+                            x.Remark
+                        })
+                        .WhereColumns(x => new { x.Id })
+                        .ExecuteCommandAsync();
+                    if (subUpd < 1)
+                    {
+                        _sqlSugar.RollbackTran();
+                        return Ok(JsonView(false));
+                    }
+                }
+                #endregion
             }
-            else //upd
+            else
             {
-                var upd = await _sqlSugar.Updateable(info)
-                    .UpdateColumns(x => new
-                    {
-                        x.Index,
-                        x.SetDataId,
-                        x.Cost,
-                        x.Currency,
-                        x.SubTotal,
-                        x.Remark
-                    })
-                    .WhereColumns(x => new { x.Id })
+                var parentUpd = await _sqlSugar.Updateable<Grp_EnterExitCost>()
+                    .SetColumns(it => it.OtherExpenses_Checked == dto.IsSelect)
+                    .Where(it => it.Id == parentId)
                     .ExecuteCommandAsync();
-                if (upd < 1) return Ok(JsonView(false));
+
+                if (parentUpd < 1)
+                {
+                    _sqlSugar.RollbackTran();
+                    return Ok(JsonView(false));
+                }
+
+                #region 子表op
+                if (subId < 1)//add
+                {
+                    var subAdd = await _sqlSugar.Insertable(subInfo).ExecuteCommandAsync();
+                    if (subAdd < 1)
+                    {
+                        _sqlSugar.RollbackTran();
+                        return Ok(JsonView(false));
+                    }
+                }
+                else //upd
+                {
+                    var subUpd = await _sqlSugar.Updateable(subInfo)
+                        .UpdateColumns(x => new
+                        {
+                            x.Index,
+                            x.SetDataId,
+                            x.Cost,
+                            x.Currency,
+                            x.SubTotal,
+                            x.Remark
+                        })
+                        .WhereColumns(x => new { x.Id })
+                        .ExecuteCommandAsync();
+                    if (subUpd < 1)
+                    {
+                        _sqlSugar.RollbackTran();
+                        return Ok(JsonView(false));
+                    }
+                }
+                #endregion
             }
+            _sqlSugar.CommitTran();
+            #endregion
 
             var itemTotal = _sqlSugar.Queryable<Grp_DayOtherPrice>().Where(x => x.IsDel == 0 && x.Diid == dto.DiId).Sum(x => x.SubTotal);
 
             //消息通知
-            var id = _sqlSugar.Queryable<Grp_EnterExitCost>().Where(x => x.IsDel == 0 && x.DiId == dto.DiId).First()?.Id ?? 0;
-            await EnterExitCostMobileOpNotice(dto.DiId, id, dto.CurrUserId);
+            await EnterExitCostMobileOpNotice(dto.DiId, parentId, dto.CurrUserId);
 
-            return Ok(JsonView(new { itemTotal = itemTotal }));
+            return Ok(JsonView(new { isSelect = dto.IsSelect, itemTotal = itemTotal }));
         }
 
         #endregion

+ 53 - 7
OASystem/OASystem.Domain/Dtos/Groups/EnterExitCostDto.cs

@@ -476,11 +476,6 @@ namespace OASystem.Domain.Dtos.Groups
 
         public int CurrUserId { get; set; }
 
-        /// <summary>
-        /// 复选框选中
-        /// 0 未选中 1 选中
-        /// </summary>
-        public int IsSelected { get; set; }
     }
 
     public class PostEnterExitCostMobileFeeRateOpDto : PostEnterExitCostMobileUpdateDtoBase
@@ -548,6 +543,12 @@ namespace OASystem.Domain.Dtos.Groups
 
     public class PostEnterExitCostMobileOpStep1Dto : PostEnterExitCostMobileUpdateDtoBase
     {
+        /// <summary>
+        /// 复选框选中
+        ///  0 未选中 1 选中
+        /// </summary>
+        public int ChoiceOne { get; set; }
+
         /// <summary>
         /// 签证费
         /// </summary>
@@ -586,16 +587,36 @@ namespace OASystem.Domain.Dtos.Groups
 
     public class PostEnterExitCostMobileOpStep2Dto : PostEnterExitCostMobileUpdateDtoBase
     {
+        /// <summary>
+        /// 复选框选中(经济舱)
+        /// 0 未选中 1 选中
+        /// </summary>
+
+        public int ChoiceTwoJJ { get; set; }
+
         /// <summary>
         /// 国际旅费合计(经济舱)
         /// </summary>
         public decimal OutsideJJPay { get; set; }
 
+        /// <summary>
+        /// 复选框选中(公务舱)
+        /// 0 未选中 1 选中
+        /// </summary>
+
+        public int ChoiceTwoGW { get; set; }
         /// <summary>
         ///  国际旅费合计(公务舱)
         /// </summary>
         public decimal OutsideGWPay { get; set; }
 
+        /// <summary>
+        /// 复选框选中(头等舱)
+        /// 0 未选中 1 选中
+        /// </summary>
+
+        public int ChoiceTwoTD { get; set; }
+
         /// <summary>
         /// 国际旅费合计(头等舱)
         /// </summary>
@@ -648,6 +669,17 @@ namespace OASystem.Domain.Dtos.Groups
 
         public int CurrUserId { get; set; }
 
+        /// <summary>
+        /// 数据主表Id
+        /// </summary>
+        public int ParentId { get; set; }
+
+        /// <summary>
+        /// 复选框
+        /// 0 未选中 1 选中
+        /// </summary>
+        public int IsSelect { get; set; }
+
         /// <summary>
         /// 费用类型
         /// 1 住宿费;2 伙食费;3 公杂费;4 培训费
@@ -658,7 +690,10 @@ namespace OASystem.Domain.Dtos.Groups
 
     public class DayAndCostMobileInfoDto
     {
-        public int Id { get; set; }
+        /// <summary>
+        /// 数据子表Id
+        /// </summary>
+        public int SubId { get; set; }
 
         /// <summary>
         /// 天数
@@ -707,11 +742,22 @@ namespace OASystem.Domain.Dtos.Groups
 
         public int CurrUserId { get; set; }
 
+        /// <summary>
+        /// 数据主表Id
+        /// </summary>
+        public int ParentId { get; set; }
+
+        /// <summary>
+        /// 复选框
+        /// 0 未选中 1 选中
+        /// </summary>
+        public int IsSelect { get; set; }
+
     }
 
     public class DayOtherPriceMobileInfoDto
     {
-        public int Id { get; set; }
+        public int SubId { get; set; }
         public int Diid { get; set; }
 
         public int SetDataId { get; set; }

+ 10 - 4
OASystem/OASystem.Domain/ViewModels/Groups/EnterExitCostView.cs

@@ -745,7 +745,7 @@ namespace OASystem.Domain.ViewModels.Groups
 
     public class DayAndCostMobileInfoView
     {
-        public int Id { get; set; }
+        public int SubId { get; set; }
 
         public int DiId { get; set; }
 
@@ -768,7 +768,10 @@ namespace OASystem.Domain.ViewModels.Groups
 
     public class ChoiceThreeMobileSubInfo3To6BaseView
     {
-        public int Id { get; set; }
+        /// <summary>
+        /// 主表Id
+        /// </summary>
+        public int ParentId { get; set; }
         public DayAndCostMobileInfoView[] Details { get; set; }
     }
     public class ChoiceThreeMobileSubInfoView : ChoiceThreeMobileSubInfo3To6BaseView
@@ -829,7 +832,7 @@ namespace OASystem.Domain.ViewModels.Groups
 
     public class DayOtherPriceMobileInfoView
     {
-        public int Id { get; set; }
+        public int SubId { get; set; }
 
         public int DiId { get; set; }
 
@@ -851,7 +854,10 @@ namespace OASystem.Domain.ViewModels.Groups
 
     public class ChoiceSevenMobileSubInfoView
     {
-        public int Id { get; set; }
+        /// <summary>
+        /// 主表Id
+        /// </summary>
+        public int ParentId { get; set; }
 
         /// <summary>
         /// 其他款项 选择框

+ 2 - 2
OASystem/OASystem.Infrastructure/Repositories/Groups/EnterExitCostRepository.cs

@@ -153,7 +153,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         .Where((dac, ntf, sd) => dac.IsDel == 0 && dac.DiId == dto.DiId)
                         .Select((dac, ntf, sd) => new DayAndCostMobileInfoView
                         {
-                            Id = dac.Id,
+                            SubId = dac.Id,
                             DiId = dac.DiId,
                             Type = dac.Type,
                             Days = dac.Days,
@@ -196,7 +196,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         .OrderBy((dop, sd1, sd2) => dop.Index)
                         .Select((dop, sd1, sd2) => new DayOtherPriceMobileInfoView
                         {
-                            Id = dop.Id,
+                            SubId = dop.Id,
                             DiId = dop.Diid,
                             Index = dop.Index,
                             SetDataId = dop.SetDataId,