Quellcode durchsuchen

出入境费用草稿 新增 数据导入,验证团组是否已填写费用明细

LEIYI vor 3 Monaten
Ursprung
Commit
f9913e0217

+ 149 - 37
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -5156,25 +5156,23 @@ FROM
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> GetEnterExitCostDataSource(PortDtoBase dto)
         {
-            try
-            {
-                var groupNameData = await _groupRepository.GetGroupNameList(new GroupNameDto { PortType = dto.PortType });
+            var groupNameData = await _groupRepository.EnterExitCostGroupNameAsync();
 
-                string sql = string.Format("Select * From Sys_SetData Where IsDel = 0");
-                //SetDataInfoView
-                var dataSource = await _sqlSugar.SqlQueryable<Sys_SetData>(sql).ToListAsync();
+            string sql = string.Format("Select * From Sys_SetData Where IsDel = 0");
+            //SetDataInfoView
+            var dataSource = await _sqlSugar.SqlQueryable<Sys_SetData>(sql).ToListAsync();
 
-                var currencyData = dataSource.Where(it => it.STid == 66).ToList(); //所有币种
-                List<SetDataInfoView> _CurrencyData = _mapper.Map<List<SetDataInfoView>>(currencyData);
+            var currencyData = dataSource.Where(it => it.STid == 66).ToList(); //所有币种
+            List<SetDataInfoView> _CurrencyData = _mapper.Map<List<SetDataInfoView>>(currencyData);
 
-                var wordTypeData = dataSource.Where(it => it.STid == 72).ToList();  //三公费用-Word明细类型
-                List<SetDataInfoView> _WordTypeData = _mapper.Map<List<SetDataInfoView>>(wordTypeData);
+            var wordTypeData = dataSource.Where(it => it.STid == 72).ToList();  //三公费用-Word明细类型
+            List<SetDataInfoView> _WordTypeData = _mapper.Map<List<SetDataInfoView>>(wordTypeData);
 
-                var excelTypeData = dataSource.Where(it => it.STid == 73).ToList(); //三公费用-Excel明细类型
-                List<SetDataInfoView> _ExcelTypeData = _mapper.Map<List<SetDataInfoView>>(excelTypeData);
+            var excelTypeData = dataSource.Where(it => it.STid == 73).ToList(); //三公费用-Excel明细类型
+            List<SetDataInfoView> _ExcelTypeData = _mapper.Map<List<SetDataInfoView>>(excelTypeData);
 
-                //默认币种显示
-                List<CurrencyInfo> _currencyInfos = new List<CurrencyInfo>()
+            //默认币种显示
+            List<CurrencyInfo> _currencyInfos = new List<CurrencyInfo>()
                 {
                     new CurrencyInfo (){ CurrencyCode="USD",CurrencyName = "美元",Rate = 7.5000M },
                     new CurrencyInfo (){ CurrencyCode="EUR",CurrencyName = "欧元",Rate = 8.0000M },
@@ -5184,36 +5182,30 @@ FROM
 
                 };
 
-                var _currencyRate = await _juHeApi.PostItemRateAsync(_currencyInfos.Select(it => it.CurrencyCode).ToArray());
-                if (_currencyRate.Count > 0)
+            var _currencyRate = await _juHeApi.PostItemRateAsync(_currencyInfos.Select(it => it.CurrencyCode).ToArray());
+            if (_currencyRate.Count > 0)
+            {
+                foreach (var item in _currencyInfos)
                 {
-                    foreach (var item in _currencyInfos)
+                    var rateInfo = _currencyRate.Where(it => it.Name.Equals(item.CurrencyName)).FirstOrDefault();
+                    if (rateInfo != null)
                     {
-                        var rateInfo = _currencyRate.Where(it => it.Name.Equals(item.CurrencyName)).FirstOrDefault();
-                        if (rateInfo != null)
-                        {
-                            decimal rate1 = Convert.ToDecimal(rateInfo.FSellPri) / 100.00M;
-                            rate1 *= 1.035M;
+                        decimal rate1 = Convert.ToDecimal(rateInfo.FSellPri) / 100.00M;
+                        rate1 *= 1.035M;
 
-                            item.Rate = Convert.ToDecimal(rate1.ToString("#0.00")) + 0.01M;
-                        }
+                        item.Rate = Convert.ToDecimal(rate1.ToString("#0.00")) + 0.01M;
                     }
                 }
-
-                return Ok(JsonView(true, "查询成功!", new
-                {
-                    GroupNameData = groupNameData.Data,
-                    CurrencyData = _CurrencyData,
-                    WordTypeData = _WordTypeData,
-                    ExcelTypeData = _ExcelTypeData,
-                    CurrencyInit = _currencyInfos
-                }));
             }
-            catch (Exception ex)
+
+            return Ok(JsonView(true, "查询成功!", new
             {
-                return Ok(JsonView(false, ex.Message));
-                throw;
-            }
+                GroupNameData = groupNameData.Data,
+                CurrencyData = _CurrencyData,
+                WordTypeData = _WordTypeData,
+                ExcelTypeData = _ExcelTypeData,
+                CurrencyInit = _currencyInfos
+            }));
         }
 
         /// <summary>
@@ -8499,6 +8491,126 @@ FROM
             return Ok(jw);
         }
 
+        /// <summary>
+        /// 团组模块 - 出入境费用-草稿 - 导入正式出入境费用基础数据
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> EnterExitCostDraftImportDataInit()
+        {
+            var jw = JsonView(false);
+
+            var groupNameDatas = await _groupRepository.EnterExitCostGroupNameAsync();
+            var draftDatas = await _sqlSugar.Queryable<Grp_EnterExitCostDraft>().Where(x => x.IsDel == 0).OrderByDescending(x => x.CreateTime).ToListAsync();
+            jw.Code = StatusCodes.Status200OK;
+            jw.Data = new { groupNameDatas= groupNameDatas.Data, draftNames = draftDatas };
+            return Ok(jw);
+        }
+
+        /// <summary>
+        /// 团组模块 - 出入境费用-草稿 - 导入正式出入境费用
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public  async  Task<IActionResult> EnterExitCostDraftImportData(EnterExitCostDraftImportDataDto dto)
+        {
+            int userId = dto.UserId,
+              portId = dto.PortType,
+              groupId = dto.GroupId,
+              draftId = dto.DraftId;
+            _portTypeData.Add(1);
+            if (userId < 1) return Ok(JsonView(false, MsgTips.UserId));
+            if (!_portTypeData.Contains(portId)) return Ok(JsonView(false, MsgTips.Port));
+            if (groupId < 1) return Ok(JsonView(false, "请传入有效的GroupId!"));
+            if (draftId < 1) return Ok(JsonView(false, "请传入有效的DraftId!"));
+
+            _sqlSugar.BeginTran();
+
+            try
+            {
+                var draftDatas = _sqlSugar.Queryable<Grp_EnterExitCostDraft>().Where(x => x.IsDel == 0 && x.Id == draftId).First();
+                if (draftDatas == null)
+                {
+                    _sqlSugar.RollbackTran();
+                    return Ok(JsonView(false, "草稿数据为空,不可导入!"));
+                }
+                var dayDatas = _sqlSugar.Queryable<Grp_DayAndCostDraft>().Where(x => x.IsDel == 0 && x.ParentId == draftId).ToList();
+                var otherDatas = _sqlSugar.Queryable<Grp_DayOtherPriceDraft>().Where(x => x.IsDel == 0 && x.ParentId == draftId).ToList();
+
+                var newExterData = _mapper.Map<Grp_EnterExitCost>(draftDatas);
+                newExterData.DiId = groupId;
+                newExterData.CreateUserId = userId;
+                newExterData.Remark = $"由草稿数据导入;草稿数Id:{draftId}";
+
+                var newDayDatas = _mapper.Map<List<Grp_DayAndCost>>(dayDatas);
+                if (newDayDatas.Any()) newDayDatas.Select(x => { x.CreateUserId = userId; return x; }).ToList();
+
+                var newOtherDatas = _mapper.Map<List<Grp_DayOtherPrice>>(draftDatas);
+                if (newOtherDatas.Any()) newOtherDatas.Select(x => { x.CreateUserId = userId; return x; }).ToList();
+
+                var enterExitCostInfo = _sqlSugar.Queryable<Grp_EnterExitCost>().Where(x => x.IsDel == 0 && x.DiId == groupId).First();
+
+                //数据如果存在执行删除
+                if (enterExitCostInfo != null)
+                {
+                    _sqlSugar.Updateable<Grp_EnterExitCost>()
+                        .SetColumns(x => new Grp_EnterExitCost() { IsDel = 1, DeleteUserId = userId, DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Remark = "由草稿数据导入前软删除数据!" })
+                        .Where(x => x.Id == enterExitCostInfo.Id)
+                        .ExecuteCommand();
+
+                    _sqlSugar.Updateable<Grp_DayAndCost>()
+                        .SetColumns(x => new Grp_DayAndCost() { IsDel = 1, DeleteUserId = userId, DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") })
+                        .Where(x => x.DiId == groupId)
+                        .ExecuteCommand();
+
+                    _sqlSugar.Updateable<Grp_DayOtherPrice>()
+                       .SetColumns(x => new Grp_DayOtherPrice() { IsDel = 1, DeleteUserId = userId, DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") })
+                       .Where(x => x.Diid == groupId)
+                       .ExecuteCommand();
+                }
+
+                //执行insert
+                var insertId = _sqlSugar.Insertable(newExterData).ExecuteReturnIdentity();
+                if (insertId < 1)
+                {
+                    _sqlSugar.RollbackTran();
+                    return Ok(JsonView(false, "草稿数据导入失败!"));
+                }
+
+                if (newDayDatas.Any()) _sqlSugar.Insertable(newDayDatas).ExecuteCommand();
+
+                if (newOtherDatas.Any()) _sqlSugar.Insertable(newOtherDatas).ExecuteCommand();
+
+                _sqlSugar.CommitTran();
+
+                //执行操作之后
+                //生成默认文件pdf并且通知人员
+                var fileView = await GeneralMethod.EnterExitCostDownload(new EnterExitCostDownloadDto()
+                {
+                    DiId = groupId,
+                    ExportType = 1,
+                    SubTypeId = 1005
+                }, "pdf");
+
+                //发送通知
+                string fileUrl = (string)fileView.Data.GetType().GetProperty("Url").GetValue(fileView.Data, null);
+                
+                string md5Sign = GeneralMethod.Encrypt($"{insertId}&fileName={fileUrl}");
+                string url = string.Format("http://oa.pan-american-intl.com:4399/#/Sankunginfo?sign={0}&fileName={1}", insertId, fileUrl);
+                await AppNoticeLibrary.SendUserMsg_GroupShare_ToGM(groupId, new List<string>() { "208", "233", "21" }, dto.UserId, url);
+                //汇率信息记录
+                await GeneralMethod.RateRecordSave(userId, insertId, "出入境费用-草稿导入");
+                return Ok(JsonView(true));
+            }
+            catch (Exception ex)
+            {
+                _sqlSugar.RollbackTran();
+                return Ok(JsonView(false,ex.Message));
+            }
+        }
+
         #endregion
 
         #region 团组经理模块 出入境费用 移动端(Android/IOS)

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

@@ -142,6 +142,10 @@ namespace OASystem.Domain.AutoMappers
             CreateMap<PostEnterExitCostMobileOpSingleStep3To6Dto, Grp_DayAndCost>();
             CreateMap<PostEnterExitCostMobileOpSingleStep7Dto, Grp_DayOtherPrice>();
 
+            CreateMap<Grp_EnterExitCostDraft, Grp_EnterExitCost>();
+            CreateMap<Grp_DayAndCostDraft, Grp_DayAndCost>();
+            CreateMap<Grp_DayOtherPriceDraft, Grp_DayOtherPrice>();
+
             #endregion
 
             #region 出入境国家费用标准

+ 8 - 0
OASystem/OASystem.Domain/Dtos/Groups/EnterExitCostDraftDto.cs

@@ -287,4 +287,12 @@ namespace OASystem.Domain.Dtos.Groups
     }
 
     public class EnterExitCostDraftOtherExpensesDelDto : DelBaseDto { }
+
+
+    public class EnterExitCostDraftImportDataDto: PortDtoBase {
+        public int UserId { get; set; }
+        public int DraftId { get; set; }
+        public int GroupId { get; set; }
+
+    }
 }

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

@@ -14,6 +14,16 @@ namespace OASystem.Domain.ViewModels.Groups
     /// </summary>
     public class EnterExitCostView:Grp_EnterExitCost { }
 
+
+    public class EnterExitCostGroupNameView
+    {
+        public int Id { get; set; }
+
+        public string Name { get; set; }
+
+        public string IsNull { get; set; }
+    }
+
     /// <summary>
     /// 出入境国家(城市)费用标准 View
     /// </summary>

+ 43 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationInfoRepository.cs

@@ -1,6 +1,7 @@
 using AutoMapper;
 using Newtonsoft.Json;
 using NPOI.OpenXmlFormats.Wordprocessing;
+using NPOI.SS.Formula.Functions;
 using OASystem.Domain;
 using OASystem.Domain.AesEncryption;
 using OASystem.Domain.Dtos;
@@ -1080,6 +1081,48 @@ namespace OASystem.Infrastructure.Repositories.Groups
         }
 
 
+        #endregion
+
+
+        #region 团组&出入境费用
+
+        /// <summary>
+        /// 获取单组名称并验证出入境费用明细是否填写
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> EnterExitCostGroupNameAsync()
+        {
+            var result = new Result() { Code = -2, Msg = "未知错误" };
+
+            var groupSql = string.Format(@$"SELECT
+  Id,
+  TeamName GrouName,
+  CASE
+    WHEN (
+      SELECT
+        COUNT(*)
+      FROM
+        Grp_EnterExitCost
+      WHERE
+        IsDel = 0
+        AND DiId = di.Id
+    ) > 0 THEN 'true'
+    ELSE 'false'
+  END AS [IsNull]
+FROM
+  Grp_DelegationInfo di
+WHERE
+  di.Isdel = 0
+ORDER BY
+  CreateTime Desc");
+
+            result.Data = await _sqlSugar.SqlQueryable<EnterExitCostGroupNameView>(groupSql).ToListAsync();
+            result.Code = 0;
+            return result;
+
+        }
+
         #endregion
     }
 }