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")]
|
[ApiDescriptionSettings("Repair", Name = "报修单", Order = 1000)]
|
public class RepairRequestForm_Controller : IDynamicApiController
|
{
|
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
|
/// <summary>
|
///
|
/// </summary>
|
public RepairRequestForm_Controller(IHttpContextAccessor httpContextAccessor)
|
{
|
_httpContextAccessor = httpContextAccessor;
|
}
|
|
/// <summary>
|
/// 插入一条 (同时上传一个或多个文件)
|
/// </summary>
|
[Route("Insert@V1.0")]
|
[HttpPost]
|
public long Insert([FromForm] AddRepairRequestFormInput input)
|
{
|
if (input == null)
|
return default;
|
|
var model = input.Adapt<AddRepairRequestFormInput, 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("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;
|
}
|
|
/// <summary>
|
/// 受理
|
/// </summary>
|
[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;
|
}
|
|
/// <summary>
|
/// 获取分页列表
|
/// </summary>
|
[Route("GetPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<RepairRequestFormDto> 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<RepairRequestFormDto>() { Total=0,List=null};
|
var productList = new Service.Product().GetByIds(input.CorpID,list.Select(x=>x.ProductID).Distinct().ToList());
|
var vmList = new List<RepairRequestFormDto>();
|
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<RepairRequestFormDto>() { Total=total,List=vmList};
|
}
|
|
/// <summary>
|
/// 获取待受理分页列表
|
/// </summary>
|
[Route("GetPendingPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<RepairRequestFormDto> 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<RepairRequestFormDto>() { Total = 0, List = null };
|
var productList = new Service.Product().GetByIds(input.CorpID, list.Select(x => x.ProductID).Distinct().ToList());
|
var vmList = new List<RepairRequestFormDto>();
|
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<RepairRequestFormDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 获取待派单分页列表
|
/// </summary>
|
[Route("GetJustAcceptedPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<RepairRequestFormJustAcceptedDto> 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<RepairRequestFormJustAcceptedDto>() { Total = 0, List = null };
|
var productList = new Service.Product().GetByIds(input.CorpID, list.Select(x => x.Item1.ProductID).Distinct().ToList());
|
var vmList = new List<RepairRequestFormJustAcceptedDto>();
|
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<RepairRequestFormJustAcceptedDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 通过 ID 获取详细 (文件url采用全路径 使用ip+port访问正常,用域名访问会有问题)
|
/// </summary>
|
[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<RepairRequestFileDetailDto>();
|
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;
|
}
|
|
/// <summary>
|
/// 通过 ID 获取详细 (文件url去除前缀)
|
/// </summary>
|
[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<RepairRequestFileDetailDto>();
|
foreach (var file in fileList)
|
{
|
var vmFile = new RepairRequestFileDetailDto(file);
|
vmFileList.Add(vmFile);
|
}
|
vm.FileList = vmFileList;
|
}
|
|
return vm;
|
}
|
|
|
|
|
}
|
}
|