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
{
///
/// RepairRequestForm
///
[Route("Repair/RepairRequestForm")]
[ApiDescriptionSettings("Repair", Name = "报修单", Order = 1000)]
public class RepairRequestForm_Controller : IDynamicApiController
{
private readonly IHttpContextAccessor _httpContextAccessor;
///
///
///
public RepairRequestForm_Controller(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
///
/// 插入一条 (同时上传一个或多个文件)
///
[Route("Insert@V1.0")]
[HttpPost]
public long Insert([FromForm] AddRepairRequestFormInput input)
{
if (input == null)
return default;
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.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;
}
///
/// 驳回
///
[Route("Reject@V1.0")]
[HttpPut]
public bool Reject([Required] RepairRequestRejectInput input)
{
var service = new Service.RepairRequestForm();
var model = service.GetByID(input.CorpID,input.ID);
if (model.FormStatus != Model.Repair.eRequestStatus.Pending)
return false;
var bol = service.Reject(input.CorpID,input.ID,input.Reason,UserManager.UserID,DateTime.Now);
return bol;
}
///
/// 受理
///
[Route("Accept@V1.0")]
[HttpPut]
public bool Accept([Required] RepairRequestAcceptInput input)
{
var service = new Service.RepairRequestForm();
var model = service.GetByID(input.CorpID, input.ID);
if (model.FormStatus != Model.Repair.eRequestStatus.Pending)
return false;
var bol = service.Accept(input.CorpID, input.ID,input.Note, UserManager.UserID, DateTime.Now);
return bol;
}
///
/// 获取分页列表
///
[Route("GetPageList@V1.0")]
[HttpGet]
public PageListOutput GetPageList([FromQuery][Required] GetRepairRequestFormPageListInput input)
{
int total = 0;
var list = new Service.RepairRequestForm().GetFluzzyPageList
(input.CorpID,input.BelongType,input.BelongID,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() { Total=0,List=null};
var productList = new Service.Product().GetByIds(input.CorpID,list.Select(x=>x.ProductID).Distinct().ToList());
var vmList = new List();
foreach (var item in list)
{
var product = productList?.Find(x=>x.ID==item.ProductID);
var vm = new RepairRequestFormDto(item,product);
vmList.Add(vm);
}
return new PageListOutput() { Total=total,List=vmList};
}
///
/// 获取待受理分页列表
///
[Route("GetPendingPageList@V1.0")]
[HttpGet]
public PageListOutput GetPendingPageList([FromQuery][Required] GetRepairRequestFormPendingPageListInput input)
{
int total = 0;
var list = new Service.RepairRequestForm().GetFluzzyPageList
(input.CorpID, input.BelongType, input.BelongID, input.CreateUserID, Model.Repair.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() { Total = 0, List = null };
var productList = new Service.Product().GetByIds(input.CorpID, list.Select(x => x.ProductID).Distinct().ToList());
var vmList = new List();
foreach (var item in list)
{
var product = productList?.Find(x => x.ID == item.ProductID);
var vm = new RepairRequestFormDto(item, product);
vmList.Add(vm);
}
return new PageListOutput() { Total = total, List = vmList };
}
///
/// 获取待派单分页列表
///
[Route("GetJustAcceptedPageList@V1.0")]
[HttpGet]
public PageListOutput GetJustAcceptedPageList([FromQuery][Required] GetRepairRequestFormJustAcceptedPageListInput input)
{
int total = 0;
var list = new Service.RepairRequestForm().GetJustAcceptedPageList
(input.CorpID, input.BelongType, input.BelongID, 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() { Total = 0, List = null };
var productList = new Service.Product().GetByIds(input.CorpID, list.Select(x => x.Item1.ProductID).Distinct().ToList());
var vmList = new List();
foreach (var item in list)
{
var product = productList?.Find(x => x.ID == item.Item1.ProductID);
var vm = new RepairRequestFormJustAcceptedDto(item.Item1,item.Item2, product);
vmList.Add(vm);
}
return new PageListOutput() { Total = total, List = vmList };
}
///
/// 通过 ID 获取详细 (文件url采用全路径 使用ip+port访问正常,用域名访问会有问题)
///
[Route("GetDetailByID@V1.0")]
[HttpGet]
public RepairRequestFormDetailDto GetDetailByID_V1_0([FromQuery][Required] IDUnderCorpInput input)
{
var model = new Service.RepairRequestForm().GetByID(input.CorpID, input.ID);
if (model == null)
return default;
var product = new Service.Product().GetByID(input.CorpID, model.ProductID);
var vm = new RepairRequestFormDetailDto(model, product);
var fileList = new Service.RepairRequestFile().GetByFormID(input.CorpID, model.ID);
if (fileList != null && fileList.Count > 0)
{
var vmFileList = new List();
foreach (var file in fileList)
{
var vmFile = new RepairRequestFileDetailDto(file);
vmFile.StorageUrl= $"http://{_httpContextAccessor.HttpContext.Request.Host}/{FileHelper.GetRelatedFilePath(file.StorageHouse, file.StorageCode)}";
vmFileList.Add(vmFile);
}
vm.FileList = vmFileList;
}
return vm;
}
///
/// 通过 ID 获取详细 (文件url去除前缀)
///
[Route("GetDetailByID@V1.1")]
[HttpGet]
public RepairRequestFormDetailDto GetDetailByID_V1_1([FromQuery][Required] IDUnderCorpInput input)
{
var model = new Service.RepairRequestForm().GetByID(input.CorpID, input.ID);
if (model == null)
return default;
var product = new Service.Product().GetByID(input.CorpID, model.ProductID);
var vm = new RepairRequestFormDetailDto(model, product);
var fileList = new Service.RepairRequestFile().GetByFormID(input.CorpID, model.ID);
if (fileList != null && fileList.Count > 0)
{
var vmFileList = new List();
foreach (var file in fileList)
{
var vmFile = new RepairRequestFileDetailDto(file);
vmFileList.Add(vmFile);
}
vm.FileList = vmFileList;
}
return vm;
}
}
}