Browse Source

团组前期信息 相关接口

LEIYI 5 months ago
parent
commit
9213eba135

+ 65 - 7
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -35,6 +35,7 @@ using OASystem.Infrastructure.Repositories.CRM;
 using OASystem.Infrastructure.Repositories.Financial;
 using OASystem.Infrastructure.Repositories.Financial;
 using OASystem.Infrastructure.Repositories.Groups;
 using OASystem.Infrastructure.Repositories.Groups;
 using OASystem.Infrastructure.Tools;
 using OASystem.Infrastructure.Tools;
+using Org.BouncyCastle.Crypto;
 using Quartz.Util;
 using Quartz.Util;
 using SqlSugar.Extensions;
 using SqlSugar.Extensions;
 using System.Collections;
 using System.Collections;
@@ -388,19 +389,76 @@ namespace OASystem.API.Controllers
 
 
 
 
         #region 团组前期信息
         #region 团组前期信息
+
         /// <summary>
         /// <summary>
-        ///  团组前期信息Info
+        ///  团组前期信息 Init
         /// </summary>
         /// </summary>
-        /// <param name="id">Id</param>
         /// <returns></returns>
         /// <returns></returns>
-        [HttpGet("{id}")]
+        [HttpGet]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> GroupOrderPreInfo(int id)
+        public async Task<IActionResult> GroupOrderPreInfo()
         {
         {
+            return Ok(await _grpOrderPreInfoRep.DataInit());
+        }
 
 
-            return Ok(await _grpOrderPreInfoRep.InfoAsync(id));
+        /// <summary>
+        ///  国家数据源
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> CountryInit()
+        {
+            var countrys = await _sqlSugar.Queryable<Grp_NationalTravelFee>().Where(x => x.IsDel == 0).Select(x => x.Country).Distinct().ToListAsync();
+            return Ok(JsonView(countrys));
         }
         }
 
 
+        /// <summary>
+        ///  城市数据源
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("{countryLabel}")]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> CityByCountry(string countryLabel)
+        {
+            var countryList = countryLabel.Split(',', StringSplitOptions.RemoveEmptyEntries).ToArray();
+            var citys = Array.Empty<string?>();
+            if (countryList.Any())
+            {
+                citys = await _sqlSugar
+                    .Queryable<Grp_NationalTravelFee>()
+                    .Where(x => x.IsDel == 0 && countryList.Contains(x.Country) && !string.IsNullOrEmpty(x.City) && !x.City.Contains("城市"))
+                    .Select(x => x.City)
+                    .ToArrayAsync();
+            }
+            
+            return Ok(JsonView(citys));
+        }
+
+        /// <summary>
+        ///  团组前期信息 Info
+        /// </summary>
+        /// <param name="id">Id</param>
+        /// <param name="tempId">Id</param>
+        /// <returns></returns>
+        [HttpGet("{id}/{tempId}")]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> GroupOrderPreInfo(int id,int tempId = 1404)
+        {
+            return Ok(await _grpOrderPreInfoRep.InfoAsync(id, tempId));
+        }
+
+        /// <summary>
+        ///  团组前期信息 Save
+        /// </summary>
+        /// <param name="dto">Id</param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> GroupOrderPreInfoSave(GroupOrderPreInfoOpDto dto)
+        {
+            return Ok(await _grpOrderPreInfoRep.OpAsync(dto));
+        }
 
 
         #endregion
         #endregion
 
 
@@ -11552,14 +11610,14 @@ WHERE
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> EnterExitCostDraftMobileOpSingleStep7(PostEnterExitCostDraftMobileOpSingleStep7Dto dto)
         public async Task<IActionResult> EnterExitCostDraftMobileOpSingleStep7(PostEnterExitCostDraftMobileOpSingleStep7Dto dto)
         {
         {
-            int subId = dto.SubId, id = dto.DarftId;
+            int subId = dto.SubId, id = dto.DraftId;
             if (!_portTypeData.Contains(dto.PortType)) return Ok(JsonView(false, MsgTips.Port));
             if (!_portTypeData.Contains(dto.PortType)) return Ok(JsonView(false, MsgTips.Port));
             if (id < 1) return Ok(JsonView(false, MsgTips.Id));
             if (id < 1) return Ok(JsonView(false, MsgTips.Id));
             if (dto.CurrUserId < 1) return Ok(JsonView(false, MsgTips.UserId));
             if (dto.CurrUserId < 1) return Ok(JsonView(false, MsgTips.UserId));
 
 
             var subInfo = _mapper.Map<Grp_DayOtherPriceDraft>(dto);
             var subInfo = _mapper.Map<Grp_DayOtherPriceDraft>(dto);
             subInfo.Id = subId;
             subInfo.Id = subId;
-            subInfo.ParentId = dto.DarftId;
+            subInfo.ParentId = id;
             subInfo.CreateUserId = dto.CurrUserId;
             subInfo.CreateUserId = dto.CurrUserId;
 
 
             int parentId = await EnterExitCostDraftVerifyIsNull(id, dto.CurrUserId); //主表验证
             int parentId = await EnterExitCostDraftVerifyIsNull(id, dto.CurrUserId); //主表验证

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

@@ -135,6 +135,7 @@ namespace OASystem.Domain.AutoMappers
             CreateMap<Grp_EnterExitCostDraft, EnterExitCostDraftMobileParentInfoView>();
             CreateMap<Grp_EnterExitCostDraft, EnterExitCostDraftMobileParentInfoView>();
 
 
             CreateMap<EnterExitCostDraftOpDto, Grp_EnterExitCostDraft>();
             CreateMap<EnterExitCostDraftOpDto, Grp_EnterExitCostDraft>();
+            CreateMap<PostEnterExitCostDraftMobileOpStep1Dto, Grp_EnterExitCostDraft>();
             CreateMap<DayAndCostDraftAddView, Grp_DayAndCostDraft>();
             CreateMap<DayAndCostDraftAddView, Grp_DayAndCostDraft>();
             CreateMap<Grp_DayAndCostDraft, DayAndCostDraftAddView>();
             CreateMap<Grp_DayAndCostDraft, DayAndCostDraftAddView>();
 
 

+ 1 - 1
OASystem/OASystem.Domain/Dtos/Groups/EnterExitCostDto.cs

@@ -1195,7 +1195,7 @@ namespace OASystem.Domain.Dtos.Groups
     public class DayOtherPriceDraftMobileInfoDto
     public class DayOtherPriceDraftMobileInfoDto
     {
     {
         public int SubId { get; set; }
         public int SubId { get; set; }
-        public int DarftId { get; set; }
+        public int DraftId { get; set; }
 
 
         public int SetDataId { get; set; }
         public int SetDataId { get; set; }
 
 

+ 4 - 3
OASystem/OASystem.Domain/Dtos/Groups/GroupOrderPreInfoDtos.cs

@@ -1,4 +1,5 @@
-using System;
+using OASystem.Domain.ViewModels.Groups;
+using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq;
 using System.Text;
 using System.Text;
@@ -10,8 +11,8 @@ namespace OASystem.Domain.Dtos.Groups
     {
     {
     }
     }
 
 
-    public class GroupOrderPreInfoDto
+    public class GroupOrderPreInfoOpDto: GrpOrderPreInfoView
     {
     {
-        public int MyProperty { get; set; }
+        public int CurrUserId { get; set; }
     }
     }
 }
 }

+ 1 - 1
OASystem/OASystem.Domain/Entities/Groups/Grp_OrderPreItem.cs

@@ -19,7 +19,7 @@ namespace OASystem.Domain.Entities.Groups
         public int ParentId { get; set; }
         public int ParentId { get; set; }
 
 
         /// <summary>
         /// <summary>
-        /// Temp字段Id
+        /// 字段Id
         /// </summary>
         /// </summary>
         [SugarColumn(ColumnName = "FormTempId", ColumnDescription = "Temp字段Id", IsNullable = true, DefaultValue = "NULL", ColumnDataType = "int")]
         [SugarColumn(ColumnName = "FormTempId", ColumnDescription = "Temp字段Id", IsNullable = true, DefaultValue = "NULL", ColumnDataType = "int")]
         public int FormTempId { get; set; }
         public int FormTempId { get; set; }

+ 17 - 13
OASystem/OASystem.Domain/ViewModels/Groups/OrderPreInfoView.cs

@@ -15,9 +15,9 @@ namespace OASystem.Domain.ViewModels.Groups
     {
     {
         public int Id { get; set; }
         public int Id { get; set; }
 
 
-        public int TempId { get; set; }
+        //public int TempId { get; set; }
 
 
-        public int Name { get; set; }
+        public string Name { get; set; }
 
 
         public int GroupId { get; set; }
         public int GroupId { get; set; }
 
 
@@ -29,37 +29,41 @@ namespace OASystem.Domain.ViewModels.Groups
     {
     {
         public int Id { get; set; }
         public int Id { get; set; }
         public int ParentId { get; set; }
         public int ParentId { get; set; }
+
+        public int FieldTempId { get; set; }
+
         public string FieldName { get; set; }
         public string FieldName { get; set; }
         public string FieldTypeName { get; set; }
         public string FieldTypeName { get; set; }
         public string OriginVal { get; set; }
         public string OriginVal { get; set; }
+
+        private object _newValue;
         public object NewValue
         public object NewValue
         {
         {
             get
             get
             {
             {
+                if (string.IsNullOrEmpty(OriginVal)) return _newValue;
+
                 if (FieldTypeName.Equals("文本") || FieldTypeName.Equals("下拉选择框"))
                 if (FieldTypeName.Equals("文本") || FieldTypeName.Equals("下拉选择框"))
                 {
                 {
-                    if (!string.IsNullOrEmpty(OriginVal)) return OriginVal;
-                    return "";
+                    return OriginVal;
                 }
                 }
                 else if (FieldTypeName.Equals("下拉选择框") || FieldTypeName.Equals("复选框") || FieldTypeName.Equals("数字"))
                 else if (FieldTypeName.Equals("下拉选择框") || FieldTypeName.Equals("复选框") || FieldTypeName.Equals("数字"))
                 {
                 {
-                    if (!string.IsNullOrEmpty(OriginVal))
-                    {
-                        if (int.TryParse(OriginVal, out int val)) return val;
-                    }
-                    return 0;
+                    int.TryParse(OriginVal, out int val);
+
+                    return val;
                 }
                 }
                 else if (FieldTypeName.Equals("单选按钮"))
                 else if (FieldTypeName.Equals("单选按钮"))
                 {
                 {
-                    if (!string.IsNullOrEmpty(OriginVal))
-                    {
-                        if (OriginVal.ToUpper().Equals("TRUE")) return true;
-                    }
+                    if (OriginVal.ToUpper().Equals("TRUE")) return true;
                     return false;
                     return false;
                 }
                 }
                 return null;
                 return null;
             }
             }
+            set { _newValue = value; }
         }
         }
+
+        public string Remark { get; set; }
         public bool IsRequired { get; set; }
         public bool IsRequired { get; set; }
         public bool IsRemark { get; set; }
         public bool IsRemark { get; set; }
         public int Index { get; set; }
         public int Index { get; set; }

+ 170 - 7
OASystem/OASystem.Infrastructure/Repositories/Groups/GroupOrderPreInfoRepository.cs

@@ -1,6 +1,10 @@
 using AutoMapper;
 using AutoMapper;
+using EyeSoft.Collections.Generic;
+using OASystem.Domain;
+using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.ViewModels.Groups;
 using OASystem.Domain.ViewModels.Groups;
+using Org.BouncyCastle.Ocsp;
 using Org.BouncyCastle.Utilities;
 using Org.BouncyCastle.Utilities;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
@@ -16,11 +20,35 @@ namespace OASystem.Infrastructure.Repositories.Groups
     public class GroupOrderPreInfoRepository : BaseRepository<Grp_OrderPreInfo, OrderPreInfoView>
     public class GroupOrderPreInfoRepository : BaseRepository<Grp_OrderPreInfo, OrderPreInfoView>
     {
     {
         private readonly IMapper _mapper;
         private readonly IMapper _mapper;
-        public GroupOrderPreInfoRepository(SqlSugarClient sqlSugar, IMapper mapper) : base(sqlSugar)
+        private readonly DelegationInfoRepository _groupInfoRep;
+        public GroupOrderPreInfoRepository(SqlSugarClient sqlSugar, IMapper mapper, DelegationInfoRepository groupInfoRep) : base(sqlSugar)
         {
         {
             _mapper = mapper;
             _mapper = mapper;
+            _groupInfoRep = groupInfoRep;
         }
         }
 
 
+        /// <summary>
+        /// 获取模板信息
+        /// </summary>
+        /// <param name="tempId"></param>
+        /// <returns></returns>
+        public async Task<JsonView> DataInit()
+        {
+            var jw = new JsonView() { Code = StatusCodes.Status200OK, Msg = "操作成功!" };
+
+            var groupNames = await _groupInfoRep.GetGroupNameList(new Domain.Dtos.Groups.GroupNameDto() { PortType = 1 });
+            var tempDatas = await _sqlSugar.Queryable<Sys_SetData>().Where(x => x.IsDel == 0 && x.STid == 109).Select(x => new { x.Id, x.Name }).ToListAsync();
+            var names = await _sqlSugar.Queryable<Grp_OrderPreInfo>().Where(x => x.IsDel == 0).OrderByDescending(x => x.Id).Select(x => new { x.Id, x.Name }).ToListAsync();
+            jw.Data = new
+            {
+                groupNames = groupNames,
+                tempDatas = tempDatas,
+                names = names
+            };
+            return jw;
+        }
+
+
         /// <summary>
         /// <summary>
         /// 获取模板信息
         /// 获取模板信息
         /// </summary>
         /// </summary>
@@ -37,6 +65,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 .OrderBy((ft, sd1, sd2) => ft.Index)
                 .OrderBy((ft, sd1, sd2) => ft.Index)
                 .Select((ft, sd1, sd2) => new GrpOrderPreItemView()
                 .Select((ft, sd1, sd2) => new GrpOrderPreItemView()
                 {
                 {
+                    FieldTempId = ft.Id,
                     FieldName = sd1.Name,
                     FieldName = sd1.Name,
                     FieldTypeName = sd2.Name,
                     FieldTypeName = sd2.Name,
                     IsRequired = ft.IsRequired,
                     IsRequired = ft.IsRequired,
@@ -48,24 +77,158 @@ namespace OASystem.Infrastructure.Repositories.Groups
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// 获取团组下单前信息列表
+        /// 获取团组下单前信息
         /// </summary>
         /// </summary>
         /// <param name="id"></param>
         /// <param name="id"></param>
         /// <returns></returns>
         /// <returns></returns>
-        public async Task<JsonView> InfoAsync(int id)
+        public async Task<JsonView> InfoAsync(int id, int tempId = 1404)
         {
         {
-            var jw = new JsonView() { Code = StatusCodes.Status200OK,Msg = "操作成功!" };
+            var jw = new JsonView() { Code = StatusCodes.Status200OK, Msg = "操作成功!" };
             var view = new GrpOrderPreInfoView();
             var view = new GrpOrderPreInfoView();
-            var info  = await _sqlSugar.Queryable<Grp_OrderPreInfo>().FirstAsync(x => x.IsDel == 0 && x.Id == id);
+            var info = await _sqlSugar.Queryable<Grp_OrderPreInfo>().FirstAsync(x => x.IsDel == 0 && x.Id == id);
 
 
+            var temps = await TempInfoById(tempId);
             if (info == null)
             if (info == null)
             {
             {
-                view.TempId = 1404;
-                view.Items = await TempInfoById(view.TempId);
+                //view.TempId = tempId;
+                view.Items = temps;
+                jw.Data = view;
+                return jw;
+            }
+            view.Id = id;
+            view.Name = info.Name;
+            view.GroupId = info.GroupId;
+            var items = await _sqlSugar.Queryable<Sys_FormTemp, Grp_OrderPreItem, Sys_SetData, Sys_SetData>((ft, opi, sd1, sd2) =>
+                new JoinQueryInfos(
+                    JoinType.Inner, ft.Id == opi.FormTempId,
+                    JoinType.Left, ft.FieldNameId == sd1.Id,
+                    JoinType.Left, ft.FieldTypeId == sd2.Id
+                    ))
+                .Where((ft, opi, sd1, sd2) => ft.IsDel == 0 && opi.IsDel == 0 && opi.ParentId == id && ft.TempId == tempId)
+                .OrderBy((ft, opi, sd1, sd2) => ft.Index)
+                .Select((ft, opi, sd1, sd2) => new GrpOrderPreItemView()
+                {
+                    Id = opi.Id,
+                    ParentId = opi.ParentId,
+                    FieldTempId = ft.Id,
+                    FieldName = sd1.Name,
+                    FieldTypeName = sd2.Name,
+                    OriginVal = opi.Value,
+                    IsRequired = ft.IsRequired,
+                    IsRemark = ft.IsRemark,
+                    Index = ft.Index
+                })
+                .ToArrayAsync();
+
+            if (!items.Any()) view.Items = temps;
+            else
+            {
+                if (items.Length != temps.Length)
+                {
+                    foreach (var item in temps)
+                    {
+                        if (items.FirstOrDefault(x => x.FieldName.Equals(item.FieldName)) == null)
+                        {
+                            var arr = new GrpOrderPreItemView[] { item };
+                            view.Items.AddRange(arr);
+                        }
+                    }
+                }
+                else view.Items = items;
+
+                view.Items = view.Items.Length > 0 ? view.Items.OrderBy(x => x.Index).ToArray() : view.Items;
             }
             }
 
 
             jw.Data = view;
             jw.Data = view;
             return jw;
             return jw;
         }
         }
+
+        /// <summary>
+        /// 获取团组下单前信息 op
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<JsonView> OpAsync(GroupOrderPreInfoOpDto dto)
+        {
+            var jw = new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "操作成功!" };
+            int currUserId = dto.CurrUserId;
+            if (currUserId < 1)
+            {
+                jw.Msg = MsgTips.UserId;
+                return jw;
+            }
+            if (string.IsNullOrEmpty(dto.Name))
+            {
+                jw.Msg = $"名称不能为空!";
+                return jw;
+            }
+
+            var info = new Grp_OrderPreInfo()
+            {
+                Id = dto.Id,
+                Name = dto.Name,
+                GroupId = dto.GroupId,
+                CreateUserId = currUserId
+            };
+            var items = new List<Grp_OrderPreItem>();
+            foreach (var item in dto.Items)
+            {
+                items.Add(new Grp_OrderPreItem()
+                {
+                    Id = item.Id,
+                    ParentId = item.ParentId,
+                    FormTempId = item.FieldTempId,
+                    Value = item.NewValue == null ? string.Empty: item.NewValue.ToString() ,
+                    CreateUserId = currUserId,
+                    Remark = item.Remark
+                });
+            }
+
+            var addItems = items.Where(x => x.Id <= 0).ToArray();
+            var updItems = items.Where(x => x.Id > 0).ToArray();
+
+            _sqlSugar.BeginTran();
+            if (dto.Id > 0) //修改
+            {
+                var infoUpd = await _sqlSugar.Updateable(info).UpdateColumns(x => new { x.Name, x.GroupId }).ExecuteCommandAsync();
+                if (infoUpd < 1)
+                {
+                    _sqlSugar.RollbackTran();
+                    jw.Msg = $"修改失败!";
+                    return jw;
+                }
+
+                if (addItems.Any()) await _sqlSugar.Insertable(addItems).ExecuteCommandAsync();
+
+                if (updItems.Any()) await _sqlSugar.Updateable(updItems).UpdateColumns(x => new { x.Value, x.Remark }).ExecuteCommandAsync();
+            }
+            else if (dto.Id <= 0) //新增
+            {
+                var isNul = await _sqlSugar.Queryable<Grp_OrderPreInfo>().FirstAsync(x => x.IsDel == 0 && x.Name.Equals(dto.Name));
+                if (isNul != null)
+                {
+                    _sqlSugar.RollbackTran();
+                    jw.Msg = $"名称重复!";
+                    return jw;
+                }
+
+                var addId = await _sqlSugar.Insertable(info).ExecuteReturnIdentityAsync();
+                if (addId < 1)
+                {
+                    _sqlSugar.RollbackTran();
+                    jw.Msg = $"新增失败!";
+                    return jw;
+                }
+
+                foreach (var item in items) item.ParentId = addId;
+
+                if (items.Any()) await _sqlSugar.Insertable(items).ExecuteCommandAsync();
+            }
+
+            _sqlSugar.CommitTran();
+            jw.Msg = $"操作成功!";
+            jw.Code = StatusCodes.Status200OK;
+            return jw;
+        }
     }
     }
 }
 }

+ 1 - 1
OASystem/OASystem.Infrastructure/Repositories/Resource/TicketBlackCodeRepository.cs

@@ -208,7 +208,7 @@ namespace OASystem.Infrastructure.Repositories.Resource
                     {
                     {
                         jjcCurrentRate = _TicketBlackCode.ECPrice,
                         jjcCurrentRate = _TicketBlackCode.ECPrice,
                         gwcCurrentRate = _TicketBlackCode.BCPrice,
                         gwcCurrentRate = _TicketBlackCode.BCPrice,
-                        Remark = $"经济舱价:{_TicketBlackCode.ECPrice.ToString("#0.00")} 元/人 公务舱:{_TicketBlackCode.BCPrice.ToString("#0.00")} 元/人"
+                        Remark = $"经济舱价:{_TicketBlackCode.ECPrice.ToString("#0.00")} 元/人 公务舱全价:{_TicketBlackCode.BCPrice.ToString("#0.00")} 元/人"
                     }
                     }
                 };
                 };
             }
             }