Sfoglia il codice sorgente

Merge branch 'develop' of http://132.232.92.186:3000/XinXiBu/OA2023 into develop

leiy 8 mesi fa
parent
commit
410e1e1898

+ 2 - 1
OASystem/EntitySync/Program.cs

@@ -133,7 +133,8 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
     //typeof(Grp_VisaFeeInfo),  //签证费用info 
     //typeof(Grp_HotelInquiry),  //酒店询价 
     //typeof(Grp_HotelReservationsContent),  //酒店费用子表
-     //typeof(Grp_VisitingClients),  //拜访团组客户
+    //typeof(Grp_VisitingClients),  //拜访团组客户
+    //typeof(Grp_ApprovalTravelDetails),  //公务出访表
      //typeof(Sys_Countries),  //洲
      //typeof(Sys_Continent),  //国家
      typeof(Sys_Cities),  //城市

+ 495 - 2
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -12802,6 +12802,8 @@ ORDER by  gctggrc.id DESC
         #endregion
 
 
+
+        #region 报批行程
         /// <summary>
         /// 报批行程初始化
         /// </summary>
@@ -12812,14 +12814,505 @@ ORDER by  gctggrc.id DESC
         {
             const int chiNumber = 5;
             var jw = JsonView(false);
-            if (dto.Diid == -1)
+
+            var groupList = _sqlSugar.Queryable<Grp_DelegationInfo>().Where(x => x.IsDel == 0).OrderByDescending(x => x.Id).ToList();
+            var group = groupList.First();
+            var diid = dto.Diid == -1 ? group?.Id : dto.Diid;
+            group = groupList.First(x => x.Id == diid);
+
+            if (group == null)
             {
-                dto.Diid = _sqlSugar.Queryable<Grp_DelegationInfo>().First(x => x.IsDel == 0).Id;
+                jw.Msg = "暂无团组!";
+                return Ok(jw);
             }
+
+            var resultArr = new ArrayList();
+            var content = _sqlSugar.Queryable<Grp_ApprovalTravel>().Where(x => x.Diid == diid && x.IsDel == 0).ToList();
+            if (content.Count == 0)
+            {
+                ////黑屏代码数据
+                //DataTable dt = GetTableByBlackCode(group.Id);
+                //if (dt.Rows[0]["Day"] == null || dt.Rows[0]["Day"].ToString() == "")//判断黑屏代码数据是否正确生成
+                //{
+                    
+                //}
+                //else
+                //{
+                //    jw.Msg = "黑屏代码有误!";
+                //    return Ok(jw);
+                //}
+
+                DateTime StartDate = (group.VisitStartDate);
+                DateTime EndDate = (group.VisitEndDate);
+                TimeSpan t3 = EndDate - StartDate;  //两个时间相减 。默认得到的是 两个时间之间的天数   得到:365.00:00:00  
+                var getDay = t3.Days;
+                if (getDay == 0) getDay = 1;
+                string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
+                _sqlSugar.BeginTran();
+                for (int i = 0; i < getDay; i++)
+                {
+                    DateTime NewData = StartDate.AddDays(i);
+                    string week = Day[Convert.ToInt32(NewData.DayOfWeek.ToString("d"))].ToString();
+                    Grp_ApprovalTravel appro = new Grp_ApprovalTravel();
+                    appro.Date = NewData.Month + "月" + NewData.Day + "日(" + week + ") 第" + intToString(i + 1) + "天";
+                    appro.Diid = diid ?? -1;
+                    var thisId = _sqlSugar.Insertable<Grp_ApprovalTravel>(appro).ExecuteReturnIdentity();
+                    appro.Id = thisId;
+                    appro.CreateUserId = dto.UserId;
+                    appro.CreateTime = DateTime.Now;
+                    content.Add(appro);
+                }
+                _sqlSugar.CommitTran();
+            }
+
+            foreach (var x in content)
+            {
+                var chiList = _sqlSugar.Queryable<Grp_ApprovalTravelDetails>().Where(x1 => x1.ParentId == x.Id && x1.IsDel == 0).ToList();
+                if (chiList.Count < chiNumber)
+                {
+                    for (int i = chiList.Count; i < chiNumber; i++)
+                    {
+                        chiList.Add(new Grp_ApprovalTravelDetails());
+                    }
+                }
+
+                resultArr.Add(new
+                {
+                    x.Id,
+                    x.Date,
+                    x.Diid,
+                    chiList = chiList.Select(x1 => new
+                    {
+                        timeInterval = x1.Time == null ? new string [1] : x1.Time.Split('-'),
+                        x1.Details,
+                        x1.ParentId,
+                        x1.Id
+                    })
+                });
+            }
+
+            var data = new
+            {
+                groupList = groupList.Select(x => new
+                {
+                    x.TeamName,
+                    x.Id
+                }),
+                content =  resultArr,
+                groupInfo = new
+                {
+                    group.VisitDays,
+                    group.TourCode,
+                    group.VisitPNumber,
+                    group.TeamName,
+                    group.Id
+                },
+            };
+
+            jw = JsonView(true,"获取成功!",data);
+
             return Ok(jw);
         }
 
+        /// <summary>
+        /// 报批行程删除
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult DeleteApprovalJourney(DeleteApprovalJourney dto)
+        {
+            var jw = JsonView(false);
+            var group = _sqlSugar.Queryable<Grp_DelegationInfo>().First(x=>x.Id == dto.Diid && x.IsDel == 0);
+            if (group == null)
+            {
+                jw.Msg = "团组参数有误!";
+                return Ok(jw);
+            }
+
+            try
+            {
+                _sqlSugar.BeginTran();
+
+                var arr = _sqlSugar.Queryable<Grp_ApprovalTravel>().Where(x => x.Diid == dto.Diid && x.IsDel == 0).Select(x=>x.Id).ToList();
 
+                _ = _sqlSugar.Updateable<Grp_ApprovalTravelDetails>().SetColumns(x => new Grp_ApprovalTravelDetails
+                {
+                    DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                    DeleteUserId = dto.uesrId,
+                    IsDel = 1
+                }).Where(x => arr.Contains(x.ParentId) && x.IsDel == 0).ExecuteCommand();
+
+                _ = _sqlSugar.Updateable<Grp_ApprovalTravel>().SetColumns(x => new Grp_ApprovalTravel
+                {
+                    DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                    DeleteUserId = dto.uesrId,
+                    IsDel = 1
+                }).Where(x => arr.Contains(x.Id)).ExecuteCommand();
+
+                _sqlSugar.CommitTran();
+
+                jw = JsonView(true, "删除成功");
+            }
+            catch (Exception ex)
+            {
+                jw = JsonView(false, ex.Message);
+            }
+
+            return Ok(jw);
+
+        }
+
+        /// <summary>
+        /// 报批行程保存
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult SaveApprovalJourney(SaveApprovalJourney dto)
+        {
+            var jw = JsonView(false);
+            var Find = dto.Arr.Find(x => x.id == 0);
+            if (Find != null)
+            {
+                jw.Msg = "生成的ID为0!";
+                return Ok(jw);
+            }
+
+            foreach (var item in dto.Arr)
+            {
+                foreach (var chi in item.chiList)
+                {
+                    if (chi.parentId == 0)
+                    {
+                        chi.parentId = item.id;
+                    }
+                }
+            }
+
+            var chiArr = dto.Arr.SelectMany(x => x.chiList).ToList();
+
+            _sqlSugar.BeginTran();
+
+            if (chiArr.Where(x=>x.id == 0).Count() == chiArr.Count)
+            {
+                var parentIds = dto.Arr.Select(x => x.id).ToList();
+                _sqlSugar.Updateable<Grp_ApprovalTravelDetails>().Where(x => parentIds.Contains(x.ParentId) && x.IsDel == 0).SetColumns(x=>new Grp_ApprovalTravelDetails
+                {
+                    DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                    DeleteUserId = dto.UserId,
+                    IsDel = 1
+                }).ExecuteCommand();
+            }
+
+            try
+            {
+                 _ =  _sqlSugar.Insertable<Grp_ApprovalTravelDetails>(chiArr.Where(x => x.id == 0).Select(x => new Grp_ApprovalTravelDetails
+                {
+                    CreateTime = DateTime.Now,
+                    CreateUserId = dto.UserId,
+                    Details = x.details,
+                    ParentId = x.parentId,
+                    Time = x.timeInterval.Count > 1 ? x.timeInterval[0] + "-" + x.timeInterval[1] : "",
+                    Remark = "",
+                    IsDel = 0
+                }).ToList()).ExecuteCommand();
+
+                _ = _sqlSugar.Updateable<Grp_ApprovalTravelDetails>(chiArr.Where(x => x.id != 0).Select(x => new Grp_ApprovalTravelDetails
+                {
+                    Id = x.id,
+                    Details = x.details,
+                    ParentId = x.parentId,
+                    Time = x.timeInterval.Count > 1 ? x.timeInterval[0] + "-" + x.timeInterval[1] : "",
+                }).ToList()).UpdateColumns(x=> new Grp_ApprovalTravelDetails
+                {
+                    Details = x.Details,
+                    ParentId = x.ParentId,
+                    Time = x.Time
+                }).ExecuteCommand();
+
+                _ = _sqlSugar.Updateable<Grp_ApprovalTravel>(dto.Arr.Where(x => x.id != 0).Select(x => new Grp_ApprovalTravel
+                {
+                    Id = x.id,
+                    Date = x.date,
+                }).ToList()).UpdateColumns(x => new Grp_ApprovalTravel
+                {
+                     Date = x.Date
+                }).ExecuteCommand();
+
+                _sqlSugar.CommitTran();
+                jw = JsonView(true, "保存成功!");
+
+            }
+            catch (Exception ex)
+            {
+                _sqlSugar.RollbackTran();
+                jw = JsonView(false, "保存失败!" + ex.Message);
+            }
+
+            return Ok(jw);
+        }
+
+        /// <summary>
+        /// 报批行程生成
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult CreateApprovalJourney(CreateApprovalJourneyDto dto)
+        {
+            var jw = JsonView(false);
+            var group = _sqlSugar.Queryable<Grp_DelegationInfo>().First(x => x.Id == dto.Diid && x.IsDel == 0);
+            if (group == null)
+            {
+                jw.Msg = "暂无该团组!";
+                return Ok(jw);
+            }
+
+            DateTime StartDate = (group.VisitStartDate);
+            DateTime EndDate = (group.VisitEndDate);
+            TimeSpan t3 = EndDate - StartDate;
+            var getDay = t3.Days;
+            if (getDay == 0) getDay = 1;
+
+            var officialActivitiesArr = _sqlSugar.Queryable<Res_OfficialActivities>().Where(x => x.DiId == dto.Diid && x.IsDel == 0).ToList();
+            var resultArr = new ArrayList();
+
+            if (officialActivitiesArr.Count == 0)
+            {
+                jw.Msg = "暂无公务出访信息!";
+                return Ok(jw);
+            }
+
+            try
+            {
+                _sqlSugar.BeginTran();
+
+                DeleteApprovalJourney(new
+                     Domain.Dtos.Groups.DeleteApprovalJourney
+                {
+                    Diid = dto.Diid,
+                    uesrId = dto.Userid
+                });
+
+                string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
+                for (int i = 0; i < getDay; i++)
+                {
+
+                    DateTime NewData = StartDate.AddDays(i);
+                    var gwinfo = officialActivitiesArr.Where(x => DateTime.TryParse(x.Date, out DateTime gwData) && gwData.ToString("yyyy-MM-dd") == NewData.ToString("yyyy-MM-dd")).OrderBy(x => x.Time).ToList();
+
+                    string week = Day[Convert.ToInt32(NewData.DayOfWeek.ToString("d"))].ToString();
+                    Grp_ApprovalTravel appro = new Grp_ApprovalTravel();
+                    appro.Date = NewData.Month + "月" + NewData.Day + "日(" + week + ") 第" + intToString(i + 1) + "天";
+                    appro.Diid = dto.Diid;
+                    var thisId = _sqlSugar.Insertable<Grp_ApprovalTravel>(appro).ExecuteReturnIdentity();
+                    appro.Id = thisId;
+                    appro.CreateUserId = dto.Userid;
+                    appro.CreateTime = DateTime.Now;
+
+                    var chiarr = new List<Grp_ApprovalTravelDetails>();
+
+                    foreach (var item in gwinfo)
+                    {
+                        Grp_ApprovalTravelDetails chi = new Grp_ApprovalTravelDetails();
+                        chi.Details = "拜访" + item.Client;
+                        chi.ParentId = thisId;
+                        chi.Time = item.Time;
+                        chiarr.Add(chi);
+                    }
+
+                    if (chiarr.Count < 5)
+                    {
+                        for (int j = chiarr.Count; j < 5; j++)
+                        {
+                            chiarr.Add(new
+                                 Grp_ApprovalTravelDetails());
+                        }
+                    }
+
+                    resultArr.Add(new
+                    {
+                        appro.Id,
+                        appro.Date,
+                        appro.Diid,
+                        chiList = chiarr.Select(x1 => new
+                        {
+                            timeInterval = x1.Time == null ? new string[1] : x1.Time.Split('-'),
+                            x1.Details,
+                            x1.ParentId,
+                            x1.Id
+                        })
+                    });
+                }
+                _sqlSugar.CommitTran();
+                jw = JsonView(true, "生成成功!", resultArr);
+            }
+            catch (Exception ex)
+            {
+                jw.Code = 400;
+                jw.Msg = "生成失败!" + ex.Message;
+            }
+            
+            return Ok(jw);
+        }
+
+        /// <summary>
+        /// 报批行程word导出
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult ExportApprovalJourneyWord(ExportApprovalJourneyWord dto)
+        {
+            var jw = JsonView(false);
+            var group = _sqlSugar.Queryable<Grp_DelegationInfo>().First(x => x.Id == dto.Diid && x.IsDel == 0);
+            if (group == null)
+            {
+                jw.Msg = "暂无该团组!";
+                return Ok(jw);
+            }
+
+            //模板路径
+            string tempPath = (AppSettingsHelper.Get("WordBasePath") + "Template/公务行程导出模板.docx");
+            
+            //载入模板
+            Document doc = new Document(tempPath);
+
+            NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true);
+            //获取所填表格的序数
+            Aspose.Words.Tables.Table tableOne = allTables[0] as Aspose.Words.Tables.Table;
+
+            Aspose.Words.Tables.Row titleRowClone = null;
+            Aspose.Words.Tables.Row CenterRowClone = null;
+            int index = 0;
+            int indexChi = 0;
+            int SetIndex = 0;
+
+            var ApprovalTravelArr = _sqlSugar.Queryable<Grp_ApprovalTravel>().Where(x => x.IsDel == 0 && x.Diid == dto.Diid).ToList();
+
+            //获取数据,放到datatable
+            foreach (var item in ApprovalTravelArr)
+            {
+                if (index > 0)
+                {
+                    titleRowClone = (Aspose.Words.Tables.Row)tableOne.Rows[0].Clone(true);
+                    tableOne.AppendChild(titleRowClone);
+                }
+
+                var textTime = item.Date;
+
+                var ChiRep = _sqlSugar.Queryable<Grp_ApprovalTravelDetails>().Where(x => x.IsDel == 0 && x.ParentId == item.Id).ToList();
+
+                SetCells(tableOne, doc, SetIndex, 0, textTime);
+                
+                SetIndex++;
+
+                if (ChiRep.Count > 0)
+                {
+                    foreach (var itemChi in ChiRep)
+                    {
+                        var txtTime = itemChi.Time;
+                        var txtDetail = itemChi.Details;
+
+                        if (indexChi > 0)
+                        {
+                            CenterRowClone = (Aspose.Words.Tables.Row)tableOne.Rows[1].Clone(true);
+                            tableOne.AppendChild(CenterRowClone);
+                        }
+                        if (string.IsNullOrEmpty(txtTime) && string.IsNullOrEmpty(txtDetail))
+                        {
+                            SetCells(tableOne, doc, SetIndex, 0, "");
+                            SetCells(tableOne, doc, SetIndex, 1, "");
+                            indexChi++;
+                            SetIndex++;
+                            break;
+                        }
+                        SetCells(tableOne, doc, SetIndex, 0, txtTime);
+                        SetCells(tableOne, doc, SetIndex, 1, txtDetail);
+                        indexChi++;
+                        SetIndex++;
+                    }
+                }
+                else
+                {
+                    if (indexChi > 0)
+                    {
+                        CenterRowClone = (Aspose.Words.Tables.Row)tableOne.Rows[1].Clone(true);
+                        tableOne.AppendChild(CenterRowClone);
+                    }
+                    SetCells(tableOne, doc, SetIndex, 0, "");
+                    SetCells(tableOne, doc, SetIndex, 1, "");
+                    indexChi++;
+                    SetIndex++;
+                }
+                index++;
+            }
+
+            string strFileName = "/Travel/ExportApprovalJourneyWord/" + group.TeamName + "商邀出访日程.doc";
+            doc.Save(AppSettingsHelper.Get("WordBasePath")  + strFileName);
+            jw.Data = AppSettingsHelper.Get("WordBaseUrl") + AppSettingsHelper.Get("WordFtpPath") + strFileName; ;
+            jw.Code = 200;
+            jw.Msg = "";
+            return Ok(jw);
+        }
+
+
+        private string intToString(int numberVal)
+        {
+            string numberval = numberVal.ToString();
+            Dictionary<char, string> Number = new Dictionary<char, string>();
+            Number.Add('1', "一");
+            Number.Add('2', "二");
+            Number.Add('3', "三");
+            Number.Add('4', "四");
+            Number.Add('5', "五");
+            Number.Add('6', "六");
+            Number.Add('7', "七");
+            Number.Add('8', "八");
+            Number.Add('9', "九");
+            string stringNumberVal = string.Empty;
+            for (int i = 0; i < numberval.Length; i++)
+            {
+                if (i == 0)
+                {
+                    stringNumberVal += Number[numberval[i]];
+                }
+                else if (i >= 1)
+                {
+                    if (numberval[i] == '0')
+                    {
+                        stringNumberVal = "十";
+                    }
+                    else
+                    {
+                        stringNumberVal += "十" + Number[numberval[i]];
+                    }
+
+                }
+
+            }
+
+            return stringNumberVal;
+        }
+
+        private void SetCells(Aspose.Words.Tables.Table table, Document doc, int rows, int cells, string val)
+        {
+            //获取table中的某个单元格,从0开始
+            Cell lshCell = table.Rows[rows].Cells[cells];
+            //将单元格中的第一个段落移除
+            lshCell.FirstParagraph.Remove();
+            //新建一个段落
+            Paragraph p = new Paragraph(doc);
+            var r = new Run(doc, val);
+            //把设置的值赋给之前新建的段落
+            p.AppendChild(r);
+
+            //将此段落加到单元格内
+            lshCell.AppendChild(p);
+        }
+
+        #endregion
 
         //        /// <summary>
         //        /// 

+ 69 - 0
OASystem/OASystem.Domain/Dtos/Groups/ApprovalJourneyDto.cs

@@ -9,6 +9,75 @@ namespace OASystem.Domain.Dtos.Groups
     public class ApprovalJourneyDto
     {
         public int Diid { get; set; }
+        public int UserId { get; set; }
+    }
+
+    public class CreateApprovalJourneyDto
+    {
+        public int Diid { get; set; }
+        
+        public int Userid { get; set;}
+    }
+
+    public class ExportApprovalJourneyWord
+    {
+        public int Diid { get; set; }
+    }
+
+    public class SaveApprovalJourney
+    {
+        public List<ApprovalJourneyItem> Arr { get; set; }
 
+        public int UserId { get; set; }
     }
+
+    public class DeleteApprovalJourney
+    {
+        public int Diid { get; set; }
+        public int uesrId { get; set; }
+    }
+
+    public class ChiListItem
+    {
+        /// <summary>
+        /// 时间区间
+        /// </summary>
+        public List<string> timeInterval { get; set; }
+        
+        /// <summary>
+        /// 详细信息
+        /// </summary>
+        public string details { get; set; }
+        
+        /// <summary>
+        /// 父级Id
+        /// </summary>
+        
+        public int parentId { get; set; }
+        /// <summary>
+        /// id
+        /// </summary>
+        public int id { get; set; }
+    }
+
+    public class ApprovalJourneyItem
+    {
+        /// <summary>
+        /// id
+        /// </summary>
+        public int id { get; set; }
+        /// <summary>
+        /// 日期显示
+        /// </summary>
+        public string date { get; set; }
+        /// <summary>
+        /// 团组id
+        /// </summary>
+        public int diid { get; set; }
+        /// <summary>
+        ///项列表 
+        /// </summary>
+        public List<ChiListItem> chiList { get; set; }
+    }
+
 }

+ 39 - 0
OASystem/OASystem.Domain/Entities/Groups/Grp_ApprovalTravel.cs

@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.Groups
+{
+    /// <summary>
+    /// 公务出访表
+    /// </summary>
+    public class Grp_ApprovalTravel:EntityBase
+    {
+
+        /// <summary>
+        ///  团组ID
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int Diid { get; set; }
+
+        /// <summary>
+        ///  日期
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string Date { get; set; }
+
+        ///// <summary>
+        /////   时刻
+        ///// </summary>
+        //[SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        //public string Time { get; set; }
+
+        ///// <summary>
+        /////  行程详情      
+        ///// </summary>
+        //[SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
+        //public string Detail { get; set; }
+    }
+}

+ 22 - 0
OASystem/OASystem.Domain/Entities/Groups/Grp_ApprovalTravelDetails.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.Groups
+{
+
+    /// <summary>
+    /// 公务出访详细表
+    /// </summary>
+    public class Grp_ApprovalTravelDetails:EntityBase
+    {
+
+        public string Time { get; set; }
+
+        public int ParentId { get; set; }
+
+        public string Details { get; set; }
+    }
+}