using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Serialization; using OASystem.API.OAMethodLib; using OASystem.Domain.Dtos.Groups; using OASystem.Domain.Entities.Groups; using OASystem.Domain.ViewModels.Groups; using OASystem.Infrastructure.Repositories.Groups; namespace OASystem.API.Controllers { /// <summary> /// 团组相关 /// </summary> //[Authorize] [Route("api/[controller]/[action]")] public class GroupsController : ControllerBase { private readonly GrpScheduleRepository _grpScheduleRep; private readonly IMapper _mapper; private readonly DelegationInfoRepository _groupRepository; public GroupsController(IMapper mapper, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository) { _mapper = mapper; _grpScheduleRep = grpScheduleRep; _groupRepository = groupRepository; } #region 流程管控 /// <summary> /// 获取团组流程管控信息 /// </summary> /// <param name="paras">参数Json字符串</param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> PostSearchGrpSchedule(JsonDtoBase _jsonDto) { if (string.IsNullOrEmpty(_jsonDto.Paras)) { return Ok(JsonView(false, "参数为空")); } Grp_ScheduleDto _ScheduleDto = JsonConvert.DeserializeObject<Grp_ScheduleDto>(_jsonDto.Paras); if (_ScheduleDto != null) { if (_ScheduleDto.SearchType == 2)//获取列表 { List<Grp_ScheduleView> _grpScheduleViewList = await _grpScheduleRep.GetViewList_GrpSchedule(_ScheduleDto); return Ok(JsonView(_grpScheduleViewList)); } else//获取对象 { Grp_ScheduleCombinView _grpScheduleView = await _grpScheduleRep.GetView_GrpSchedule(_ScheduleDto); if (_grpScheduleView != null) { return Ok(JsonView(_grpScheduleView)); } } } else { return Ok(JsonView(false, "参数反序列化失败")); } return Ok(JsonView(false, "暂无数据!")); } /// <summary> /// 修改团组流程管控详细表数据 /// </summary> /// <param name="paras"></param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> PostUpdateGrpScheduleDetail(Grp_ScheduleDetailUpdDto dto) { Grp_ScheduleDetailInfo _detail = _mapper.Map<Grp_ScheduleDetailInfo>(dto); var result = await _grpScheduleRep._sqlSugar.Updateable<Grp_ScheduleDetailInfo>() .SetColumns(it => it.Duty == _detail.Duty) .SetColumns(it => it.ExpectBeginDt == _detail.ExpectBeginDt) .SetColumns(it => it.ExpectEndDt == _detail.ExpectEndDt) .SetColumns(it => it.JobContent == _detail.JobContent) .SetColumns(it => it.Remark == _detail.Remark) .SetColumns(it => it.StepStatus == _detail.StepStatus) .Where(s => s.Id == dto.Id) //.UpdateColumns(s => new { s.Duty, s.ExpectBeginDt, s.ExpectEndDt, s.JobContent, s.Remark, s.StepStatus }) .ExecuteCommandAsync(); if (result > 0) { return Ok(JsonView(true, "保存成功!")); } return Ok(JsonView(false, "保存失败!")); } /// <summary> /// 删除团组流程管控详细表数据,删除人Id请放在Duty /// </summary> /// <param name="dto"></param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<ActionResult> PostDeleteGrpScheduleDetail(Grp_ScheduleDetailUpdDto dto) { Grp_ScheduleDetailInfo _detail = _mapper.Map<Grp_ScheduleDetailInfo>(dto); _detail.IsDel = 1; _detail.DeleteUserId = dto.Duty; _detail.DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var result = await _grpScheduleRep._sqlSugar.Updateable<Grp_ScheduleDetailInfo>() .SetColumns(it => it.IsDel == _detail.IsDel) .SetColumns(it => it.DeleteUserId == _detail.DeleteUserId) .SetColumns(it => it.DeleteTime == _detail.DeleteTime) .Where(it => it.Id == dto.Id) //.UpdateColumns(s => new { s.IsDel, s.DeleteUserId, s.DeleteTime }) //.WhereColumns(s => s.Id == dto.Id) .ExecuteCommandAsync(); if (result > 0) { return Ok(JsonView(true, "删除成功!")); } return Ok(JsonView(false, "删除失败!")); } /// <summary> /// 增加团组流程管控详细表数据 /// </summary> /// <param name="dto"></param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<ActionResult> PostInsertGrpScheduleDetail(Grp_ScheduleDetailInsertDto dto) { Grp_ScheduleDetailInfo _detail = _mapper.Map<Grp_ScheduleDetailInfo>(dto); if (DateTime.Now < _detail.ExpectBeginDt) { _detail.StepStatus = 0; } else {//若大于设置时间,不考虑设置的预计结束日期,统一视为进行中 _detail.StepStatus = 1; } var result = await _grpScheduleRep._sqlSugar.Insertable(_detail).ExecuteReturnIdentityAsync(); if (result > 0) { return Ok(JsonView(true, "添加成功!")); } return Ok(JsonView(false, "添加失败!")); } #endregion #region 团组基本信息 /// <summary> /// 接团信息列表 /// </summary> /// <param name="dto">团组列表请求dto</param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> GetGroupList(GroupListDto dto) { var groupData = await _groupRepository.GetGroupList(dto); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } return Ok(JsonView(groupData.Data)); } /// <summary> /// 接团信息详情 /// </summary> /// <param name="dto">团组info请求dto</param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> GetGroupInfo(GroupInfoDto dto) { var groupData = await _groupRepository.GetGroupInfo(dto); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } return Ok(JsonView(groupData.Data)); } /// <summary> /// 接团信息 编辑添加 /// 基础信息数据源 /// </summary> /// <param name="dto"></param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> GroupEditBasicSource(GroupListDto dto) { var groupData = await _groupRepository.GroupEditBasicSource(dto); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } return Ok(JsonView(groupData.Data)); } /// <summary> /// 接团信息 操作(增改) /// </summary> /// <param name="dto"></param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> GroupOperation(GroupOperationDto dto) { try { var groupData = await _groupRepository.GroupOperation(dto); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } return Ok(JsonView(true)); } catch (Exception ex) { Logs("[response]" + JsonConvert.SerializeObject(dto)); Logs(ex.Message); return Ok(JsonView(false, ex.Message)); } } /// <summary> /// 接团信息 操作(删除) /// </summary> /// <param name="dto"></param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> GroupDel(GroupDelDto dto) { try { var groupData = await _groupRepository.GroupDel(dto); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } return Ok(JsonView(true)); } catch (Exception ex) { Logs("[response]" + JsonConvert.SerializeObject(dto)); Logs(ex.Message); return Ok(JsonView(false, ex.Message)); } } /// <summary> /// 获取团组销售报价号 /// 团组添加时 使用 /// </summary> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> GetGroupSalesQuoteNo() { var groupData = await _groupRepository.GetGroupSalesQuoteNo(); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } object salesQuoteNo = new { SalesQuoteNo = groupData.Data }; return Ok(JsonView(salesQuoteNo)); } /// <summary> /// 设置确认出团 /// </summary> /// <param name="dto"></param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> SetConfirmationGroup(ConfirmationGroupDto dto) { var groupData = await _groupRepository.ConfirmationGroup(dto); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } GroupStepForDelegation.CreateWorkStep(dto.GroupId); //创建管控流程 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 /// </summary> /// <param name="dto"></param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> GetGroupNameAndVisaNationality(GroupNameDto dto) { var groupData = await _groupRepository.GetGroupNameAndVisaNationality(dto); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } return Ok(JsonView(groupData.Data)); } #endregion #region 团组&签证 /// <summary> /// 根据团组Id获取签证客户信息List /// </summary> /// <param name="dto">请求dto</param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> GetCrmByGroupId(ClientByGroupIdDto dto) { var groupData = await _groupRepository.GetCrmByGroupId(dto); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } return Ok(JsonView(groupData.Data)); } #endregion } }