namespace Yw.Application { /// /// RepairRequestForm /// [Route("Repair/Request/Form")] [ApiDescriptionSettings("Repair", Name = "报修单", Order = 10000)] public class RepairRequestForm_Controller : IDynamicApiController { private readonly IHttpContextAccessor _httpContextAccessor; /// /// /// public RepairRequestForm_Controller(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } private readonly Service.RepairRequestForm _service = new(); /// /// 创建 (同时支持上传一个或多个文件) /// [Route("Insert@V1.0")] [HttpPost] public long Insert([FromForm][Required] AddRepairRequestFormInput input) { var model = input.Adapt(); var fileList = new List(); var request = _httpContextAccessor.HttpContext.Request; 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.RepairRequestFile(); file.FileSuffix = Path.GetExtension(uploadFile.FileName); file.FileName = Path.GetFileNameWithoutExtension(uploadFile.FileName); file.StorageHouse = ConfigHelper.DataFolder; file.StorageCode = Service.FileHelper.UploadSubFile(file.StorageHouse, uploadFile.OpenReadStream(), file.FileSuffix); file.SortCode = i + 1; fileList.Add(file); } } var id = new Service.RepairRequestForm().Insert(model, fileList); return id; } /// /// 上传文件 /// [Route("UploadFile@V1.0")] [HttpPost] public bool UploadFile([FromForm][Required] UploadRepairRequestFileInput input) { var request = _httpContextAccessor.HttpContext.Request; if (request.Form.Files == null || request.Form.Files.Count < 1) { throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, "请选择文件后重试"); } var fileList = new List(); for (int i = 0; i < request.Form.Files.Count; i++) { var uploadFile = request.Form.Files[i]; var file = new Model.RepairRequestFile(); file.FormID = input.FormID; file.FileSuffix = Path.GetExtension(uploadFile.FileName); file.FileName = Path.GetFileNameWithoutExtension(uploadFile.FileName); file.StorageHouse = ConfigHelper.DataFolder; file.StorageCode = Service.FileHelper.UploadSubFile(file.StorageHouse, uploadFile.OpenReadStream(), file.FileSuffix); file.SortCode = i + 1; fileList.Add(file); } var service = new Service.RepairRequestFile(); var bol = service.Inserts(fileList); return bol; } /// /// 受理 /// [Route("Accept@V1.0")] [HttpPut] public bool Accept([Required] RepairRequestAcceptInput input) { var model = _service.GetByID(input.ID); if (model == null) { throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"ID:{input.ID} 数据不存在"); } if (model.FormStatus != eRequestStatus.Pending) { throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"ID:{input.ID} 表单状态错误"); } var bol = _service.Accept(input.ID, input.Note); return bol; } /// /// 驳回 /// [Route("Reject@V1.0")] [HttpPut] public bool Reject([Required] RepairRequestRejectInput input) { var model = _service.GetByID(input.ID); if (model == null) { throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"ID:{input.ID} 数据不存在"); } if (model.FormStatus != eRequestStatus.Pending) { throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"ID:{input.ID} 表单状态错误"); } var bol = _service.Reject(input.ID, input.Reason); return bol; } /// /// 获取分页列表 /// [Route("GetPageList@V1.0")] [HttpGet] public PageListOutput GetPageList([FromQuery][Required] QueryRepairRequestFormPageListInput input) { int total = 0; var list = new Service.RepairRequestForm().GetFluzzyPageList (LongListHelper.ToList(input.EquipmentIds), input.CreateUserID, input.FormStatus, input.Urgency, input.FormNo, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total); if (list == null || list.Count < 1) { return new PageListOutput(); ; } var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.EquipmentID).Distinct().ToList()); var vmList = new List(); foreach (var item in list) { var equipment = equipmentList?.Find(x => x.ID == item.EquipmentID); var vm = new RepairRequestFormDto(item, equipment); vmList.Add(vm); } return new PageListOutput() { Total = total, List = vmList }; } /// /// 获取待受理分页列表 /// [Route("GetPendingPageList@V1.0")] [HttpGet] public PageListOutput GetPendingPageList([FromQuery][Required] QueryRepairRequestFormPendingPageListInput input) { int total = 0; var list = new Service.RepairRequestForm().GetFluzzyPageList (LongListHelper.ToList(input.EquipmentIds), input.CreateUserID, eRequestStatus.Pending, input.Urgency, input.FormNo, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total); if (list == null || list.Count < 1) return new PageListOutput(); var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.EquipmentID).Distinct().ToList()); var vmList = new List(); foreach (var item in list) { var equipment = equipmentList?.Find(x => x.ID == item.EquipmentID); var vm = new RepairRequestFormDto(item, equipment); vmList.Add(vm); } return new PageListOutput() { Total = total, List = vmList }; } /// /// 获取待派单分页列表 /// [Route("GetJustAcceptedPageList@V1.0")] [HttpGet] public PageListOutput GetJustAcceptedPageList([FromQuery][Required] QueryRepairRequestFormJustAcceptedPageListInput input) { int total = 0; var list = new Service.RepairRequestForm().GetJustAcceptedPageList (LongListHelper.ToList(input.EquipmentIds), input.CreateUserID, input.Urgency, input.FormNo, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total); if (list == null || list.Count < 1) { return new PageListOutput(); } var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.Item1.EquipmentID).Distinct().ToList()); var vmList = new List(); foreach (var item in list) { var equipment = equipmentList?.Find(x => x.ID == item.Item1.EquipmentID); var vm = new RepairRequestFormJustAcceptedDto(item.Item1, item.Item2, equipment); vmList.Add(vm); } return new PageListOutput() { Total = total, List = vmList }; } /// /// 获取我的报修分页列表 /// [Route("GetMyPageList@V1.0")] [HttpGet] public PageListOutput GetMyPageList([FromQuery][Required] QueryMyRepairRequestFormPageListInput input) { int total = 0; var list = new Service.RepairRequestForm().GetMyFluzzyPageList (UserManager.UserID, input.FormStatus, input.Urgency, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total); if (list == null || list.Count < 1) { return new PageListOutput(); } var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.EquipmentID).Distinct().ToList()); var vmList = new List(); foreach (var item in list) { var equipment = equipmentList?.Find(t => t.ID == item.EquipmentID); var vm = new MyRepairRequestFormDto(item, equipment); vmList.Add(vm); } return new PageListOutput() { Total = total, List = vmList }; } /// /// 获取我的待受理报修分页列表 /// [Route("GetMyPendingPageList@V1.0")] [HttpGet] public PageListOutput GetMyPendingPageList([FromQuery][Required] QueryMyRepairRequestFormPendingPageListInput input) { int total = 0; var list = new Service.RepairRequestForm().GetMyFluzzyPageList (UserManager.UserID, eRequestStatus.Pending, input.Urgency, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total); if (list == null || list.Count < 1) { return new PageListOutput(); } var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.EquipmentID).Distinct().ToList()); var vmList = new List(); foreach (var item in list) { var equipment = equipmentList?.Find(t => t.ID == item.EquipmentID); var vm = new MyRepairRequestFormPendingDto(item, equipment); vmList.Add(vm); } return new PageListOutput() { Total = total, List = vmList }; } /// /// 获取我的已受理报修分页列表 /// [Route("GetMyAcceptedPageList@V1.0")] [HttpGet] public PageListOutput GetMyAcceptedPageList([FromQuery][Required] QueryMyRepairRequestFormAcceptedPageListInput input) { int total = 0; var list = new Service.RepairRequestForm().GetMyFluzzyPageList (UserManager.UserID, eRequestStatus.Accepted, input.Urgency, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total); if (list == null || list.Count < 1) { return new PageListOutput(); } var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.EquipmentID).Distinct().ToList()); var taskList = new Service.RepairTaskForm().GetByRequestIds(list.Select(x => x.ID).Distinct().ToList()); var vmList = new List(); foreach (var item in list) { var equipment = equipmentList?.Find(t => t.ID == item.EquipmentID); var task = taskList?.Where(x => x.RequestID == item.ID).OrderBy(x => x.CreateTime).LastOrDefault(); var vm = new MyRepairRequestFormAcceptedDto(item, equipment, task); vmList.Add(vm); } return new PageListOutput() { Total = total, List = vmList }; } /// /// 获取我的被驳回报修分页列表 /// [Route("GetMyRejectedPageList@V1.0")] [HttpGet] public PageListOutput GetMyRejectedPageList([FromQuery][Required] QueryMyRepairRequestFormRejectedPageListInput input) { int total = 0; var list = new Service.RepairRequestForm().GetMyFluzzyPageList (UserManager.UserID, eRequestStatus.Rejected, input.Urgency, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total); if (list == null || list.Count < 1) { return new PageListOutput(); } var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.EquipmentID).Distinct().ToList()); var vmList = new List(); foreach (var item in list) { var equipment = equipmentList?.Find(t => t.ID == item.EquipmentID); var vm = new MyRepairRequestFormRejectedDto(item, equipment); vmList.Add(vm); } return new PageListOutput() { Total = total, List = vmList }; } } }