using Microsoft.AspNetCore.Mvc; using System.Net; using System.Net.Http.Headers; using Microsoft.Extensions.Hosting.Internal; using Microsoft.AspNetCore.Http.Extensions; using IStation.Untity; using Furion.DynamicApiController; using System.ComponentModel.DataAnnotations; using Mapster; using Microsoft.AspNetCore.Http; namespace IStation.Application { /// /// RepairTaskForm /// [Route("Repair/RepairTaskForm/Mobile")] [ApiDescriptionSettings("Repair", Name = "维修单(手机)", Order = 900)] public class RepairTaskForm_MobileController : IDynamicApiController { private readonly IHttpContextAccessor _httpContextAccessor; /// /// /// public RepairTaskForm_MobileController(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } #region 上传文件 /// /// 上传文件 (手机) /// [Route("UploadFile@V1.0")] [HttpPost] public bool UploadFile([FromForm] UploadRepairTaskFormFileMobileInput input) { if (input == null) return false; var request = _httpContextAccessor.HttpContext.Request; if (request.Form.Files == null || request.Form.Files.Count < 1) return false; var log = new Service.RepairTaskLog().GetLastByFormID(input.CorpID,input.FormID); if (log == null) return false; var fileList = new List(); for (int i = 0; i < request.Form.Files.Count; i++) { var uploadFile = request.Form.Files[i]; var file = new Model.RepairTaskLogFile(); file.CorpID = input.CorpID; file.FormID = input.FormID; file.LogID = log.ID; file.FileSuffix = Path.GetExtension(uploadFile.FileName); file.FileName = Path.GetFileNameWithoutExtension(uploadFile.FileName); file.FileFormat = FileHelper.GetFormat(file.FileSuffix); file.StorageHouse = Constant.TaskStorageHouse; file.StorageCode = FileHelper.UploadSubFile(Constant.TaskStorageHouse, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName)); file.SortCode = i + 1; fileList.Add(file); } var service = new Service.RepairTaskLogFile(); var bol = service.Inserts(fileList); return bol; } #endregion #region 待接单 /// /// 获取我的待接单的分页列表(手机) /// [Route("GetMyAssignedPageList@V1.0")] [HttpGet] public PageListOutput GetMyAssignedPageList([FromQuery][Required] GetMyRepairTaskFormAssignedPageListMobileInput input) { int total = 0; var list = new Service.RepairTaskForm().GetPageList (input.CorpID,null,null,null,UserManager.UserID,Model.Repair.eTaskStatus.Assigned,null,null,input.StartTime,input.EndTime,input.PageIndex,input.PageSize,ref total); var vmList = list?.Select(x => new MyRepairTaskFormAssignedMobileDto(x.Item1)).ToList(); return new PageListOutput() { Total = total, List = vmList }; } /// /// 通过 ID 获取我的待接单详细(手机) /// [Route("GetMyAssignedDetailByID@V1.0")] [HttpGet] public MyRepairTaskFormAssignedDetailMobileDto GetMyAssignedDetailByID([FromQuery][Required] IDUnderCorpInput input) { var taskForm = new Service.RepairTaskForm().GetByID(input.CorpID,input.ID); if (taskForm == null) return default; var logList = new Service.RepairTaskLog().GetByFormID(taskForm.CorpID,taskForm.ID); var logFileList = new Service.RepairTaskLogFile().GetByFormID(taskForm.CorpID,taskForm.ID); var vm=new MyRepairTaskFormAssignedDetailMobileDto(taskForm,logList,logFileList); return vm; } #endregion #region 接单 /// /// 接单 /// [Route("Receive@V1.0")] [HttpPut] public bool Receive([Required] RepairTaskReceiveInput input) { var service = new Service.RepairTaskForm(); var model = service.GetByID(input.CorpID, input.ID); if (model.FormStatus != Model.Repair.eTaskStatus.Assigned) return false; var bol = service.Receive(input.CorpID, input.ID, input.Note, UserManager.UserID, DateTime.Now); return bol; } #endregion #region 开工 /// /// 开工 (支持上传文件) /// [Route("Start@V1.0")] [HttpPost] public bool Start([FromForm][Required] RepairTaskStartInput input) { var request = _httpContextAccessor.HttpContext.Request; var fileList = new List(); if (request.Form.Files != null && request.Form.Files.Count > 0) { for (int i = 0; i < request.Form.Files.Count; i++) { var uploadFile = request.Form.Files[i]; var file = new Model.RepairTaskLogFile(); file.CorpID = input.CorpID; file.FormID = input.ID; file.FileSuffix = Path.GetExtension(uploadFile.FileName); file.FileName = Path.GetFileNameWithoutExtension(uploadFile.FileName); file.FileFormat = FileHelper.GetFormat(file.FileSuffix); file.StorageHouse = Constant.TaskStorageHouse; file.StorageCode = FileHelper.UploadSubFile(Constant.TaskStorageHouse, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName)); file.SortCode = i + 1; fileList.Add(file); } } var service = new Service.RepairTaskForm(); var bol = service.Start(input.CorpID, input.ID, input.Note,fileList, UserManager.UserID, DateTime.Now); return bol; } /// /// 重新开工 (支持上传文件) /// [Route("Restart@V1.0")] [HttpPost] public bool Restart([FromForm][Required]RepairTaskRestartInput input) { var request = _httpContextAccessor.HttpContext.Request; var fileList = new List(); if (request.Form.Files != null && request.Form.Files.Count > 0) { for (int i = 0; i < request.Form.Files.Count; i++) { var uploadFile = request.Form.Files[i]; var file = new Model.RepairTaskLogFile(); file.CorpID = input.CorpID; file.FormID = input.ID; file.FileSuffix = Path.GetExtension(uploadFile.FileName); file.FileName = Path.GetFileNameWithoutExtension(uploadFile.FileName); file.FileFormat = FileHelper.GetFormat(file.FileSuffix); file.StorageHouse = Constant.TaskStorageHouse; file.StorageCode = FileHelper.UploadSubFile(Constant.TaskStorageHouse, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName)); file.SortCode = i + 1; fileList.Add(file); } } var service = new Service.RepairTaskForm(); var bol = service.Restart(input.CorpID, input.ID, input.Note, fileList, UserManager.UserID, DateTime.Now); return bol; } #endregion #region 暂停 /// /// 暂停 (支持上传文件) /// [Route("Pause@V1.0")] [HttpPost] public bool Pause([FromForm][Required] RepairTaskPauseInput input) { var request = _httpContextAccessor.HttpContext.Request; var fileList = new List(); if (request.Form.Files != null && request.Form.Files.Count > 0) { for (int i = 0; i < request.Form.Files.Count; i++) { var uploadFile = request.Form.Files[i]; var file = new Model.RepairTaskLogFile(); file.CorpID = input.CorpID; file.FormID = input.ID; file.FileSuffix = Path.GetExtension(uploadFile.FileName); file.FileName = Path.GetFileNameWithoutExtension(uploadFile.FileName); file.FileFormat = FileHelper.GetFormat(file.FileSuffix); file.StorageHouse = Constant.TaskStorageHouse; file.StorageCode = FileHelper.UploadSubFile(Constant.TaskStorageHouse, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName)); file.SortCode = i + 1; fileList.Add(file); } } var service = new Service.RepairTaskForm(); var bol = service.Pause(input.CorpID, input.ID, input.Note, fileList, UserManager.UserID, DateTime.Now); return bol; } #endregion #region 完工 /// /// 完工 (支持上传文件) /// [Route("Finish@V1.0")] [HttpPost] public bool Finish([FromForm][Required] RepairTaskFinishInput input) { var request = _httpContextAccessor.HttpContext.Request; var fileList = new List(); if (request.Form.Files != null && request.Form.Files.Count > 0) { for (int i = 0; i < request.Form.Files.Count; i++) { var uploadFile = request.Form.Files[i]; var file = new Model.RepairTaskLogFile(); file.CorpID = input.CorpID; file.FormID = input.ID; file.FileSuffix = Path.GetExtension(uploadFile.FileName); file.FileName = Path.GetFileNameWithoutExtension(uploadFile.FileName); file.FileFormat = FileHelper.GetFormat(file.FileSuffix); file.StorageHouse = Constant.TaskStorageHouse; file.StorageCode = FileHelper.UploadSubFile(Constant.TaskStorageHouse, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName)); file.SortCode = i + 1; fileList.Add(file); } } var service = new Service.RepairTaskForm(); var bol = service.Finish(input.CorpID, input.ID, input.Note, fileList, UserManager.UserID, DateTime.Now); return bol; } #endregion #region 进行中 /// /// 获取我的进行中的分页列表(手机) /// [Route("GetMyProgressPageList@V1.0")] [HttpGet] public PageListOutput GetMyProgressPageList([FromQuery][Required] GetMyRepairTaskFormProgressPageListMobileInput input) { int total = 0; var list = new Service.RepairTaskForm().GetProgressPageList (input.CorpID, null, null, null, UserManager.UserID, null, null, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total); var vmList = list?.Select(x => new MyRepairTaskFormProgressMobileDto(x.Item1)).ToList(); return new PageListOutput() { Total = total, List = vmList }; } /// /// 通过 ID 获取我的进行中详细(手机) /// [Route("GetMyProgressDetailByID@V1.0")] [HttpGet] public MyRepairTaskFormProgressDetailMobileDto GetMyProgressDetailByID([FromQuery][Required] IDUnderCorpInput input) { var taskForm = new Service.RepairTaskForm().GetByID(input.CorpID, input.ID); if (taskForm == null) return default; var logList = new Service.RepairTaskLog().GetByFormID(taskForm.CorpID, taskForm.ID); var logFileList = new Service.RepairTaskLogFile().GetByFormID(taskForm.CorpID, taskForm.ID); var vm = new MyRepairTaskFormProgressDetailMobileDto(taskForm, logList, logFileList); return vm; } #endregion #region 已完成 /// /// 获取我的已完成的分页列表(手机) /// [Route("GetMyHasFinishedPageList@V1.0")] [HttpGet] public PageListOutput GetMyHasFinishedPageList([FromQuery][Required] GetMyRepairTaskFormHasFinishedPageListMobileInput input) { int total = 0; var list = new Service.RepairTaskForm().GetHasFinishedPageList (input.CorpID, null, null, null, UserManager.UserID, null, null, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total); var vmList = list?.Select(x => new MyRepairTaskFormHasFinishedMobileDto(x.Item1)).ToList(); return new PageListOutput() { Total = total, List = vmList }; } /// /// 通过 ID 获取我的已完成详细(手机) /// [Route("GetMyHasFinishedDetailByID@V1.0")] [HttpGet] public MyRepairTaskFormHasFinishedDetailMobileDto GetMyHasFinishedDetailByID([FromQuery][Required] IDUnderCorpInput input) { var taskForm = new Service.RepairTaskForm().GetByID(input.CorpID, input.ID); if (taskForm == null) return default; var logList = new Service.RepairTaskLog().GetByFormID(taskForm.CorpID, taskForm.ID); var logFileList = new Service.RepairTaskLogFile().GetByFormID(taskForm.CorpID, taskForm.ID); var vm = new MyRepairTaskFormHasFinishedDetailMobileDto(taskForm, logList, logFileList); return vm; } #endregion } }