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
|
{
|
/// <summary>
|
/// RepairRequestForm
|
/// </summary>
|
[Route("Repair/RepairRequestForm/Mobile")]
|
[ApiDescriptionSettings("Repair", Name = "报修单(手机)", Order = 999)]
|
public class RepairRequestForm_MobileController : IDynamicApiController
|
{
|
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
|
/// <summary>
|
///
|
/// </summary>
|
public RepairRequestForm_MobileController(IHttpContextAccessor httpContextAccessor)
|
{
|
_httpContextAccessor = httpContextAccessor;
|
}
|
|
#region Insert
|
|
/// <summary>
|
/// 插入一条 (手机)
|
/// </summary>
|
[Route("Insert@V1.0")]
|
[HttpPost]
|
public long Insert([FromForm] AddRepairRequestFormMobileInput input)
|
{
|
if (input == null)
|
return default;
|
|
var model = input.Adapt<AddRepairRequestFormMobileInput, Model.RepairRequestForm>();
|
var fileList = new List<Model.RepairRequestFile>();
|
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.CorpID = input.CorpID;
|
file.FileSuffix = Path.GetExtension(uploadFile.FileName);
|
file.FileName = Path.GetFileNameWithoutExtension(uploadFile.FileName);
|
file.FileFormat = FileHelper.GetFormat(file.FileSuffix);
|
file.StorageHouse = Constant.RequestStorageHouse;
|
file.StorageCode = FileHelper.UploadSubFile(Constant.RequestStorageHouse, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName));
|
file.SortCode = i + 1;
|
|
fileList.Add(file);
|
}
|
}
|
|
var id = new Service.RepairRequestForm().Insert(model, fileList);
|
return id;
|
}
|
|
/// <summary>
|
/// 上传文件 (手机)
|
/// </summary>
|
[Route("UploadFile@V1.0")]
|
[HttpPost]
|
public bool UploadFile([FromForm] UploadRepairRequestFormFileMobileInput input)
|
{
|
if (input == null)
|
return false;
|
var request = _httpContextAccessor.HttpContext.Request;
|
if (request.Form.Files == null || request.Form.Files.Count < 1)
|
return false;
|
|
var fileList = new List<Model.RepairRequestFile>();
|
for (int i = 0; i < request.Form.Files.Count; i++)
|
{
|
var uploadFile = request.Form.Files[i];
|
var file = new Model.RepairRequestFile();
|
file.CorpID = input.CorpID;
|
file.FormID = input.FormID;
|
file.FileSuffix = Path.GetExtension(uploadFile.FileName);
|
file.FileName = Path.GetFileNameWithoutExtension(uploadFile.FileName);
|
file.FileFormat = FileHelper.GetFormat(file.FileSuffix);
|
file.StorageHouse = Constant.RequestStorageHouse;
|
file.StorageCode = FileHelper.UploadSubFile(Constant.RequestStorageHouse, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName));
|
file.SortCode = i + 1;
|
|
fileList.Add(file);
|
}
|
var service = new Service.RepairRequestFile();
|
var bol= service.Inserts(fileList);
|
return bol;
|
}
|
|
#endregion
|
|
/// <summary>
|
/// 获取我的报修分页列表(手机)
|
/// </summary>
|
[Route("GetMyPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<MyRepairRequestFormMobileDto> GetMyPageList([FromQuery][Required] GetMyRepairRequestFormPageListMobileInput input)
|
{
|
int total = 0;
|
var list = new Service.RepairRequestForm().GetMyFluzzyPageList
|
(input.CorpID,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<MyRepairRequestFormMobileDto>() { Total=total,List=null};
|
var productList = new Service.Product().GetByIds(input.CorpID,list.Select(x=>x.ProductID).Distinct().ToList());
|
var vmList = new List<MyRepairRequestFormMobileDto>();
|
foreach (var item in list)
|
{
|
var product = productList?.Find(t => t.ID == item.ProductID) ;
|
var vm = new MyRepairRequestFormMobileDto(item,product?.Name);
|
vmList.Add(vm);
|
}
|
return new PageListOutput<MyRepairRequestFormMobileDto>() { Total=total,List=vmList};
|
}
|
|
#region 待受理
|
|
/// <summary>
|
/// 获取我的待受理报修分页列表(手机)
|
/// </summary>
|
[Route("GetMyPendingPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<MyRepairRequestFormPendingMobileDto> GetMyPendingPageList([FromQuery][Required] GetMyRepairRequestFormPendingPageListMobileInput input)
|
{
|
int total = 0;
|
var list = new Service.RepairRequestForm().GetMyFluzzyPageList
|
(input.CorpID, UserManager.UserID, Model.Repair.eRequestStatus.Pending, input.Urgency, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total);
|
if (list == null || list.Count < 1)
|
return new PageListOutput<MyRepairRequestFormPendingMobileDto>() { Total = total, List = null };
|
var productList = new Service.Product().GetByIds(input.CorpID, list.Select(x => x.ProductID).Distinct().ToList());
|
var vmList = new List<MyRepairRequestFormPendingMobileDto>();
|
foreach (var item in list)
|
{
|
var product = productList?.Find(t => t.ID == item.ProductID);
|
var vm = new MyRepairRequestFormPendingMobileDto(item, product?.Name);
|
vmList.Add(vm);
|
}
|
return new PageListOutput<MyRepairRequestFormPendingMobileDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 通过 ID 获取我的待受理详细信息(手机)
|
/// </summary>
|
[Route("GetMyPendingDetailByID@V1.0")]
|
[HttpGet]
|
public MyRepairRequestFormPendingDetailMobileDto GetMyPendingDetailByID([FromQuery][Required] IDUnderCorpInput input)
|
{
|
var model = new Service.RepairRequestForm().GetByID(input.CorpID, input.ID);
|
if (model == null)
|
return default;
|
if (model.FormStatus != Model.Repair.eRequestStatus.Pending)
|
return default;
|
var product = new Service.Product().GetByID(input.CorpID, model.ProductID);
|
var vm = new MyRepairRequestFormPendingDetailMobileDto(model, product);
|
|
var fileList = new Service.RepairRequestFile().GetByFormID(input.CorpID, model.ID);
|
if (fileList != null && fileList.Count > 0)
|
{
|
var vmFileList = new List<MyRepairRequestFilePendingMobileDto>();
|
foreach (var file in fileList)
|
{
|
var vmFile = new MyRepairRequestFilePendingMobileDto(file);
|
vmFile.StorageUrl = $"{FileHelper.GetRelatedFilePath(file.StorageHouse, file.StorageCode)}";
|
vmFileList.Add(vmFile);
|
}
|
vm.FileList = vmFileList;
|
}
|
return vm;
|
}
|
|
#endregion
|
|
#region 被驳回
|
|
/// <summary>
|
/// 获取我的被驳回报修分页列表(手机)
|
/// </summary>
|
[Route("GetMyRejectedPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<MyRepairRequestFormRejectedMobileDto> GetMyRejectedPageList([FromQuery][Required] GetMyRepairRequestFormRejectedPageListMobileInput input)
|
{
|
int total = 0;
|
var list = new Service.RepairRequestForm().GetMyFluzzyPageList
|
(input.CorpID, UserManager.UserID, Model.Repair.eRequestStatus.Rejected, input.Urgency, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total);
|
if (list == null || list.Count < 1)
|
return new PageListOutput<MyRepairRequestFormRejectedMobileDto>() { Total = total, List = null };
|
var productList = new Service.Product().GetByIds(input.CorpID, list.Select(x => x.ProductID).Distinct().ToList());
|
var vmList = new List<MyRepairRequestFormRejectedMobileDto>();
|
foreach (var item in list)
|
{
|
var product = productList?.Find(t => t.ID == item.ProductID);
|
var vm = new MyRepairRequestFormRejectedMobileDto(item, product?.Name);
|
vmList.Add(vm);
|
}
|
return new PageListOutput<MyRepairRequestFormRejectedMobileDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 通过 ID 获取我的被驳回详细信息(手机)
|
/// </summary>
|
[Route("GetMyRejectedDetailByID@V1.0")]
|
[HttpGet]
|
public MyRepairRequestFormRejectedDetailMobileDto GetMyRejectedDetailByID([FromQuery][Required] IDUnderCorpInput input)
|
{
|
var model = new Service.RepairRequestForm().GetByID(input.CorpID, input.ID);
|
if (model == null)
|
return default;
|
if (model.FormStatus != Model.Repair.eRequestStatus.Rejected)
|
return default;
|
var product = new Service.Product().GetByID(input.CorpID, model.ProductID);
|
var log = new Service.RepairRequestLog().GetByFormIDAndOperateType(input.CorpID,model.ID,Model.Repair.eRequestOperateType.Reject);
|
var vm = new MyRepairRequestFormRejectedDetailMobileDto(model, product?.Name);
|
if (log != null)
|
{
|
vm.RejectTime = log.OperateTime;
|
vm.RejectReason = log.OperateNote;
|
vm.RejectUserName = new Service.User().GetByID(log.OperateUserID)?.RealName;
|
}
|
return vm;
|
}
|
|
|
#endregion
|
|
#region 已受理
|
|
/// <summary>
|
/// 获取我的已受理报修分页列表(手机)
|
/// </summary>
|
[Route("GetMyAcceptedPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<MyRepairRequestFormAcceptedMobileDto> GetMyAcceptedPageList([FromQuery][Required] GetMyRepairRequestFormAcceptedPageListMobileInput input)
|
{
|
int total = 0;
|
var list = new Service.RepairRequestForm().GetMyFluzzyPageList
|
(input.CorpID, UserManager.UserID, Model.Repair.eRequestStatus.Accepted, input.Urgency, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total);
|
if (list == null || list.Count < 1)
|
return new PageListOutput<MyRepairRequestFormAcceptedMobileDto>() { Total = total, List = null };
|
var productList = new Service.Product().GetByIds(input.CorpID, list.Select(x => x.ProductID).Distinct().ToList());
|
var taskList = new Service.RepairTaskForm().GetByRequestIds(input.CorpID,list.Select(x=>x.ID).Distinct().ToList());
|
var vmList = new List<MyRepairRequestFormAcceptedMobileDto>();
|
foreach (var item in list)
|
{
|
var product = productList?.Find(t => t.ID == item.ProductID);
|
var task = taskList?.Where(x => x.RequestID == item.ID).OrderBy(x => x.CreateTime).LastOrDefault();
|
var vm = new MyRepairRequestFormAcceptedMobileDto(item, product?.Name,task);
|
|
vmList.Add(vm);
|
}
|
return new PageListOutput<MyRepairRequestFormAcceptedMobileDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 通过 ID 获取我的已受理详细信息(手机)
|
/// </summary>
|
[Route("GetMyAcceptedDetailByID@V1.0")]
|
[HttpGet]
|
public MyRepairRequestFormAcceptedDetailMobileDto GetMyAcceptedDetailByID([FromQuery][Required] IDUnderCorpInput input)
|
{
|
var model = new Service.RepairRequestForm().GetByID(input.CorpID, input.ID);
|
if (model == null)
|
return default;
|
if (model.FormStatus != Model.Repair.eRequestStatus.Accepted)
|
return default;
|
var product = new Service.Product().GetByID(input.CorpID, model.ProductID);
|
var logList = new Service.RepairRequestLog().GetByFormID(model.CorpID,model.ID);
|
var fileList = new Service.RepairRequestFile().GetByFormID(model.CorpID,model.ID);
|
var taskForm = new Service.RepairTaskForm().GetByRequestID(model.CorpID,model.ID)?.FirstOrDefault();
|
if (taskForm == null)
|
return default;
|
var taskLogList = new Service.RepairTaskLog().GetByFormID(taskForm.CorpID,taskForm.ID);
|
var taskLogFileList= new Service.RepairTaskLogFile().GetByFormID(taskForm.CorpID, taskForm.ID);
|
var vm = new MyRepairRequestFormAcceptedDetailMobileDto(model,product,logList,fileList,taskForm,taskLogList,taskLogFileList);
|
return vm;
|
}
|
|
#endregion
|
|
|
}
|
}
|