using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Serialization; using OASystem.API.OAMethodLib; using OASystem.API.OAMethodLibs; using OASystem.Domain.Dtos.Groups; using OASystem.Domain.Entities.Groups; using OASystem.Domain.ViewModels.Groups; using OASystem.Infrastructure.Repositories.Groups; namespace OASystem.API.Controllers { /// /// 团组相关 /// //[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 流程管控 /// /// 获取团组流程管控信息 /// /// 参数Json字符串 /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostSearchGrpSchedule(JsonDtoBase _jsonDto) { if (string.IsNullOrEmpty(_jsonDto.Paras)) { return Ok(JsonView(false, "参数为空")); } Grp_ScheduleDto _ScheduleDto = JsonConvert.DeserializeObject(_jsonDto.Paras); if (_ScheduleDto != null) { if (_ScheduleDto.SearchType == 2)//获取列表 { List _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, "暂无数据!")); } /// /// 修改团组流程管控详细表数据 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostUpdateGrpScheduleDetail(Grp_ScheduleDetailUpdDto dto) { Grp_ScheduleDetailInfo _detail = _mapper.Map(dto); var result = await _grpScheduleRep._sqlSugar.Updateable() .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, "保存失败!")); } /// /// 删除团组流程管控详细表数据,删除人Id请放在Duty /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostDeleteGrpScheduleDetail(Grp_ScheduleDetailUpdDto dto) { Grp_ScheduleDetailInfo _detail = _mapper.Map(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() .Where(s => s.Id == dto.Id) .UpdateColumns(s => new { s.IsDel, s.DeleteUserId, s.DeleteTime }) .ExecuteCommandAsync(); if (result > 0) { return Ok(JsonView(true, "删除成功!")); } return Ok(JsonView(false, "删除失败!")); } /// /// 增加团组流程管控详细表数据 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostInsertGrpScheduleDetail(Grp_ScheduleDetailInsertDto dto) { Grp_ScheduleDetailInfo _detail = _mapper.Map(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 团组基本信息 /// /// 接团信息列表 /// /// 团组列表请求dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GetGroupList(GroupListDto dto) { var groupData = await _groupRepository.GetGroupList(dto); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } return Ok(JsonView(groupData.Data)); } /// /// 接团信息详情 /// /// 团组info请求dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GetGroupInfo(GroupInfoDto dto) { var groupData = await _groupRepository.GetGroupInfo(dto); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } return Ok(JsonView(groupData.Data)); } /// /// 接团信息 编辑添加 /// 基础信息数据源 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GroupEditBasicSource(GroupListDto dto) { var groupData = await _groupRepository.GroupEditBasicSource(dto); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } return Ok(JsonView(groupData.Data)); } /// /// 接团信息 操作(增改) /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task 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)); } } /// /// 接团信息 操作(删除) /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task 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)); } } /// /// 获取团组销售报价号 /// 团组添加时 使用 /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task 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)); } /// /// 设置确认出团 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task 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)); } /// /// 获取团组名称 List /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task 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)); } /// /// 获取团组名称data And 签证国别Data /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task 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 团组&签证 /// /// 根据团组Id获取签证客户信息List /// /// 请求dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task 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 } }