|
@@ -26,6 +26,8 @@ using System.Diagnostics;
|
|
|
using MathNet.Numerics.Statistics.Mcmc;
|
|
|
using AlibabaCloud.OpenApiClient.Models;
|
|
|
using System;
|
|
|
+using NPOI.HPSF;
|
|
|
+using SqlSugar;
|
|
|
|
|
|
namespace OASystem.API.Controllers
|
|
|
{
|
|
@@ -45,6 +47,7 @@ namespace OASystem.API.Controllers
|
|
|
private readonly InvitationOfficialActivitiesRepository _InvitationOfficialActivitiesRep;
|
|
|
private readonly DelegationEnDataRepository _delegationEnDataRep;
|
|
|
private readonly DelegationVisaRepository _delegationVisaRep;
|
|
|
+ private readonly MessageRepository _message;
|
|
|
private readonly SqlSugarClient _sqlSugar;
|
|
|
private string url;
|
|
|
private string path;
|
|
@@ -54,7 +57,7 @@ namespace OASystem.API.Controllers
|
|
|
public GroupsController(IMapper mapper, SqlSugarClient sqlSugar, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository,
|
|
|
TaskAssignmentRepository taskAssignmentRep, AirTicketResRepository airTicketResRep, DecreasePaymentsRepository decreasePaymentsRep,
|
|
|
InvitationOfficialActivitiesRepository InvitationOfficialActivitiesRep, DelegationEnDataRepository delegationEnDataRep, EnterExitCostRepository enterExitCostRep
|
|
|
- , DelegationVisaRepository delegationVisaRep)
|
|
|
+ , DelegationVisaRepository delegationVisaRep, MessageRepository message)
|
|
|
{
|
|
|
_mapper = mapper;
|
|
|
_grpScheduleRep = grpScheduleRep;
|
|
@@ -73,8 +76,10 @@ namespace OASystem.API.Controllers
|
|
|
_delegationEnDataRep = delegationEnDataRep;
|
|
|
_enterExitCostRep = enterExitCostRep;
|
|
|
_delegationVisaRep = delegationVisaRep;
|
|
|
+ _message = message;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
#region 流程管控
|
|
|
|
|
|
/// <summary>
|
|
@@ -226,7 +231,6 @@ namespace OASystem.API.Controllers
|
|
|
return Ok(JsonView(groupData.Data));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 接团信息详情
|
|
|
/// </summary>
|
|
@@ -363,23 +367,7 @@ namespace OASystem.API.Controllers
|
|
|
return Ok(JsonView(groupData.Data));
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 获取团组名称 List
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpPost]
|
|
|
- [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
- public async Task<IActionResult> GetGroupNameList(GroupNameDto dto)
|
|
|
- {
|
|
|
- var groupData = await _groupRepository.GetGroupNameList(dto);
|
|
|
- if (groupData.Code != 0)
|
|
|
- {
|
|
|
- return Ok(JsonView(false, groupData.Msg));
|
|
|
- }
|
|
|
-
|
|
|
- return Ok(JsonView(groupData.Data, groupData.Data.Count));
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取团组名称data And 签证国别Data
|
|
@@ -499,6 +487,9 @@ namespace OASystem.API.Controllers
|
|
|
|
|
|
List<VisaProgressImageView> list = _delegationVisaRep.GetVisaProgressImageList(dto.visaProgressCustomerId, dto.picType);
|
|
|
|
|
|
+ string url = AppSettingsHelper.Get("VisaProgressImageBaseUrl") + AppSettingsHelper.Get("VisaProgressImageFtpPath");
|
|
|
+ list.ForEach(s => s.url = url);
|
|
|
+
|
|
|
return Ok(JsonView(list));
|
|
|
}
|
|
|
|
|
@@ -525,25 +516,33 @@ namespace OASystem.API.Controllers
|
|
|
|
|
|
DateTime dt1970 = new DateTime(1970, 1, 1, 0, 0, 0, 0);
|
|
|
int sucNum = 0;
|
|
|
- foreach (var item in dto.base64DataList)
|
|
|
+ try
|
|
|
{
|
|
|
- string imageName = dto.imageName + ((DateTime.Now.Ticks - dt1970.Ticks) / 10000).ToString();
|
|
|
- string result = decodeBase64ToImage(item, imageName);
|
|
|
-
|
|
|
- if (!string.IsNullOrEmpty(result))
|
|
|
+ foreach (var item in dto.base64DataList)
|
|
|
{
|
|
|
- Grp_VisaProgressCustomerPicture pic = new Grp_VisaProgressCustomerPicture();
|
|
|
- pic.CreateUserId = dto.CreateUserId;
|
|
|
- pic.PicName = imageName;
|
|
|
- pic.PicPath = result;
|
|
|
- pic.VisaProgressCustomerId = dto.visaProgressCustomerId;
|
|
|
+ string imageName = dto.imageName + ((DateTime.Now.Ticks - dt1970.Ticks) / 10000).ToString();
|
|
|
+ string result = decodeBase64ToImage(item, imageName);
|
|
|
|
|
|
- int insertResult = await _delegationVisaRep.AddAsync<Grp_VisaProgressCustomerPicture>(pic);
|
|
|
- if (insertResult > 0)
|
|
|
+ if (!string.IsNullOrEmpty(result))
|
|
|
{
|
|
|
- sucNum++;
|
|
|
+ Grp_VisaProgressCustomerPicture pic = new Grp_VisaProgressCustomerPicture();
|
|
|
+ pic.CreateUserId = dto.CreateUserId;
|
|
|
+ pic.PicName = imageName;
|
|
|
+ pic.PicPath = result;
|
|
|
+ pic.VisaProgressCustomerId = dto.visaProgressCustomerId;
|
|
|
+
|
|
|
+ int insertResult = await _delegationVisaRep.AddAsync<Grp_VisaProgressCustomerPicture>(pic);
|
|
|
+ if (insertResult > 0)
|
|
|
+ {
|
|
|
+ sucNum++;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, ex.Message));
|
|
|
}
|
|
|
|
|
|
string msg = string.Format(@"成功上传{0}张", sucNum);
|
|
@@ -566,9 +565,9 @@ namespace OASystem.API.Controllers
|
|
|
System.IO.MemoryStream ms = new System.IO.MemoryStream(arr);//转换成无法调整大小的MemoryStream对象
|
|
|
bitmap = new System.Drawing.Bitmap(ms);//将MemoryStream对象转换成Bitmap对象
|
|
|
|
|
|
- var fileDir = AppSettingsHelper.Get("VisaProgressImageFtpPath");
|
|
|
+ var fileDir = AppSettingsHelper.Get("VisaProgressImageBasePath");
|
|
|
//文件名称
|
|
|
- filename = "VisaProgress_" + DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + imgName + ".jpg";//所要保存的相对路径及名字
|
|
|
+ filename = "VisaProgress_" + DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + imgName + ".jpeg";//所要保存的相对路径及名字
|
|
|
//上传的文件的路径
|
|
|
string filePath = "";
|
|
|
if (!Directory.Exists(fileDir))
|
|
@@ -584,18 +583,89 @@ namespace OASystem.API.Controllers
|
|
|
bitmap.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);//保存到服务器路径
|
|
|
//bitmap.Save(filePath + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);
|
|
|
//bitmap.Save(filePath + ".gif", System.Drawing.Imaging.ImageFormat.Gif);
|
|
|
- //bitmap.Save(filePath + ".png", System.Drawing.Imaging.ImageFormat.Png);
|
|
|
+ //bitmap.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
|
|
|
ms.Close();//关闭当前流,并释放所有与之关联的资源
|
|
|
bitmap.Dispose();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
string massage = e.Message;
|
|
|
+ Logs("IOS图片上传Error:" + massage);
|
|
|
+ //filename = e.Message;
|
|
|
}
|
|
|
return filename;//返回相对路径
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// IOS获取团组签证拍照上传进度05(修改签证状态/通知)
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
+ public async Task<ActionResult> PostIOSVisaProgressChangeStatus(IOS_VisaChangeStatusDto dto)
|
|
|
+ {
|
|
|
+ if (dto == null)
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, "请求错误:"));
|
|
|
+ }
|
|
|
+
|
|
|
+ string msg = "参数错误";
|
|
|
+ if (dto.diId > 0 && dto.visaStatus > 0 && dto.visaStatus < 4)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ //_delegationVisaRep.BeginTran();
|
|
|
+
|
|
|
+ var updCount = await _delegationVisaRep._sqlSugar.Updateable<Grp_VisaProgressCustomer>()
|
|
|
+ .SetColumns(it => it.WorkStatus == dto.visaStatus)
|
|
|
+ .Where(s => s.Id == dto.visaProgressCustomerId)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+ if (updCount > 0 && dto.publishCode == 1) {
|
|
|
+
|
|
|
+ _delegationVisaRep.ChangeDataBase(DBEnum.OA2014DB); //切换到新OA后删除
|
|
|
+ GroupInfoDto grpDto = new GroupInfoDto() { Id = dto.diId };
|
|
|
+ var groupData = await _groupRepository.GetGroupInfo(grpDto);
|
|
|
+ _delegationVisaRep.ChangeDataBase(DBEnum.OA2023DB); //切换到新OA后删除
|
|
|
+ if (groupData.Code != 0)
|
|
|
+ {
|
|
|
+ _delegationVisaRep.RollbackTran();
|
|
|
+ }
|
|
|
+
|
|
|
+ string title = string.Format(@"[签证进度更新]");
|
|
|
+ string content = string.Format(@"测试文本");
|
|
|
+
|
|
|
+ bool rst = await _message.AddMsg(new MessageDto()
|
|
|
+ {
|
|
|
+ Type = 5,
|
|
|
+ IssuerId = dto.publisher,
|
|
|
+ Title = title,
|
|
|
+ Content = content,
|
|
|
+ ReleaseTime = DateTime.Now,
|
|
|
+ UIdList = new List<int> {
|
|
|
+ 234
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ if (rst) {
|
|
|
+ return Ok(JsonView(true, "发送通知成功"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //_delegationVisaRep.CommitTran();
|
|
|
+ }
|
|
|
+ catch (Exception)
|
|
|
+ {
|
|
|
+ //_delegationVisaRep.RollbackTran();
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return Ok(JsonView(true, msg));
|
|
|
+ }
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
#region 团组任务分配
|
|
@@ -2445,7 +2515,6 @@ namespace OASystem.API.Controllers
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 团组模块 - 出入境费用 - 基础数据源(团组名称/币种类型)
|
|
|
/// </summary>
|
|
@@ -2576,30 +2645,30 @@ namespace OASystem.API.Controllers
|
|
|
Where gntf.Isdel = 0");
|
|
|
var nationalTravelFeeData = await _sqlSugar.SqlQueryable<NationalTravelFeeInfoView>(nationalTravelFeeSql).ToListAsync();
|
|
|
|
|
|
- var nationalTravel = nationalTravelFeeData.GroupBy(it => it.Country).Select(it1 => it1.FirstOrDefault());
|
|
|
+ //var nationalTravel = nationalTravelFeeData.GroupBy(it => it.Country).Select(it1 => it1.FirstOrDefault());
|
|
|
|
|
|
- List<dynamic> nationalTravelFeeData1 = new List<dynamic>();
|
|
|
+ //List<dynamic> nationalTravelFeeData1 = new List<dynamic>();
|
|
|
|
|
|
- foreach (var item in nationalTravel)
|
|
|
- {
|
|
|
- var cityData = nationalTravelFeeData.Where(it => it.Country == item.Country).ToList();
|
|
|
- var otherData = cityData.Where(it => it.City.Contains("其他城市")).FirstOrDefault();
|
|
|
- if (otherData != null)
|
|
|
- {
|
|
|
- cityData.Remove(otherData);
|
|
|
- cityData.Add(otherData);
|
|
|
- }
|
|
|
+ //foreach (var item in nationalTravel)
|
|
|
+ //{
|
|
|
+ // var cityData = nationalTravelFeeData.Where(it => it.Country == item.Country).ToList();
|
|
|
+ // var otherData = cityData.Where(it => it.City.Contains("其他城市")).FirstOrDefault();
|
|
|
+ // if (otherData != null)
|
|
|
+ // {
|
|
|
+ // cityData.Remove(otherData);
|
|
|
+ // cityData.Add(otherData);
|
|
|
+ // }
|
|
|
|
|
|
|
|
|
- nationalTravelFeeData1.Add(new
|
|
|
- {
|
|
|
- Country = item.Country,
|
|
|
- CityData = cityData
|
|
|
- });
|
|
|
- }
|
|
|
+ // nationalTravelFeeData1.Add(new
|
|
|
+ // {
|
|
|
+ // Country = item.Country,
|
|
|
+ // CityData = cityData
|
|
|
+ // });
|
|
|
+ //}
|
|
|
|
|
|
sw.Stop();
|
|
|
- return Ok(JsonView(true, "查询成功!耗时:" + sw.ElapsedMilliseconds + "ms", nationalTravelFeeData1));
|
|
|
+ return Ok(JsonView(true, "查询成功!耗时:" + sw.ElapsedMilliseconds + "ms", nationalTravelFeeData));
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
@@ -2608,6 +2677,82 @@ namespace OASystem.API.Controllers
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 团组模块 - 出入境国家费用标准 Page List Data Source
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
+ public async Task<IActionResult> GetNationalTravelFeePageDataSource()
|
|
|
+ {
|
|
|
+
|
|
|
+ string sql = string.Format(@"Select * From Grp_NationalTravelFee Where Isdel = 0 ");
|
|
|
+
|
|
|
+ var nationalTravelFeeData = await _groupRepository._sqlSugar.SqlQueryable<Grp_NationalTravelFee>(sql).ToListAsync();
|
|
|
+
|
|
|
+ List<string> countryData = new List<string>();
|
|
|
+
|
|
|
+ countryData.AddRange( nationalTravelFeeData.Select(it => it.Country ).ToList());
|
|
|
+ countryData = countryData.Distinct().ToList();
|
|
|
+
|
|
|
+ List<dynamic> dataSource = new List<dynamic>();
|
|
|
+ foreach (var item in countryData)
|
|
|
+ {
|
|
|
+ List<string> cityData1 = new List<string>();
|
|
|
+ cityData1 = nationalTravelFeeData.Where(it => it.Country == item).Select(it => it.City).ToList();
|
|
|
+ var countryData2 = new
|
|
|
+ {
|
|
|
+ CountryName = item,
|
|
|
+ CityData = cityData1
|
|
|
+ };
|
|
|
+
|
|
|
+ dataSource.Add(countryData2);
|
|
|
+ }
|
|
|
+
|
|
|
+ return Ok(JsonView(true, "查询成功!", dataSource));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 团组模块 - 出入境国家费用标准 Page List
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
+ public async Task<IActionResult> PostNationalTravelFeePage(NationalTravelFeePageDto dto)
|
|
|
+ {
|
|
|
+ int portId = dto.PortType;
|
|
|
+ if (portId != 1 && portId != 2 && portId != 3) return Ok(JsonView(false, "请输入正确的端口号!\r\n请求端口分类1 Web 2 Android 3 IOS"));
|
|
|
+
|
|
|
+ if (dto.PageIndex == 0) return Ok(JsonView(false, "当前页码数不能为0!"));
|
|
|
+ if (dto.PageSize == 0) return Ok(JsonView(false, "每页条数不能0!"));
|
|
|
+
|
|
|
+ string whereSql = string.Empty;
|
|
|
+ if (!string.IsNullOrEmpty(dto.Country))
|
|
|
+ {
|
|
|
+ whereSql += string.Format(@" And gntf.Country ='{0}'", dto.Country);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!string.IsNullOrEmpty(dto.City))
|
|
|
+ {
|
|
|
+ whereSql += string.Format(@" And gntf.City='{0}'", dto.City);
|
|
|
+ }
|
|
|
+
|
|
|
+ string pageSql = string.Format(@"Select * From (
|
|
|
+ Select row_number() over(order by gntf.LastUpdateTime Desc) as RowNumber,
|
|
|
+ ssd.Name as CurrencyCode, ssd.Remark as CurrencyName,su.CnName as LastUpdateUserName,gntf.*
|
|
|
+ From Grp_NationalTravelFee gntf
|
|
|
+ Left Join Sys_SetData ssd On ssd.STid = 66 And gntf.Currency = ssd.Id
|
|
|
+ Left Join Sys_Users su On gntf.LastUpdateUserId = su.Id
|
|
|
+ Where gntf.Isdel = 0 {0} ) temp ", whereSql);
|
|
|
+ RefAsync<int> total = 0;
|
|
|
+ var nationalTravelFeeData = await _groupRepository._sqlSugar.SqlQueryable<NationalTravelFeePageInfoView>(pageSql).ToPageListAsync(dto.PageIndex, dto.PageSize, total);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return Ok(JsonView(true, "查询成功!", nationalTravelFeeData, (int)total));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 团组模块 - 出入境国家费用标准 - Add Or Update
|
|
|
/// </summary>
|
|
@@ -2633,6 +2778,41 @@ namespace OASystem.API.Controllers
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 团组模块 - 出入境国家费用标准 - Del
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
+ public async Task<IActionResult> PostNationalTravelFeeDel(NationalTravelFeeDelDto dto)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Grp_NationalTravelFee _nationalTravelFee = new Grp_NationalTravelFee() {
|
|
|
+ Id = dto.Id,
|
|
|
+ DeleteUserId = dto.DeleteUserId,
|
|
|
+ DeleteTime = DateTime.Now.ToString("yyyy-MM-dd"),
|
|
|
+ IsDel = 1
|
|
|
+ };
|
|
|
+
|
|
|
+ var delStatus = await _enterExitCostRep._sqlSugar.Updateable<Grp_NationalTravelFee>(_nationalTravelFee)
|
|
|
+ .UpdateColumns(it => new { it.DeleteTime, it.DeleteUserId, it.IsDel })
|
|
|
+ .WhereColumns(it => new { it.Id })
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+
|
|
|
+ if (delStatus <= 0)
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, "删除失败!"));
|
|
|
+ }
|
|
|
+
|
|
|
+ return Ok(JsonView(true, "操作成功!"));
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, ex.Message));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
#endregion
|
|
|
}
|
|
|
}
|