namespace Yw.Application
|
{
|
/// <summary>
|
/// RepairRequestForm
|
/// </summary>
|
[Route("Repair/Request/Form")]
|
[ApiDescriptionSettings("Repair", Name = "报修单", Order = 10000)]
|
public class RepairRequestForm_Controller : IDynamicApiController
|
{
|
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
|
/// <summary>
|
///
|
/// </summary>
|
public RepairRequestForm_Controller(IHttpContextAccessor httpContextAccessor)
|
{
|
_httpContextAccessor = httpContextAccessor;
|
}
|
private readonly Service.RepairRequestForm _service = new();
|
|
/// <summary>
|
/// 创建 (同时支持上传一个或多个文件)
|
/// </summary>
|
[Route("Insert@V1.0")]
|
[HttpPost]
|
public long Insert([FromForm][Required] AddRepairRequestFormInput input)
|
{
|
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.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;
|
}
|
|
/// <summary>
|
/// 上传文件
|
/// </summary>
|
[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<Model.RepairRequestFile>();
|
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;
|
}
|
|
/// <summary>
|
/// 受理
|
/// </summary>
|
[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;
|
}
|
|
/// <summary>
|
/// 驳回
|
/// </summary>
|
[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;
|
}
|
|
|
/// <summary>
|
/// 获取分页列表
|
/// </summary>
|
[Route("GetPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<RepairRequestFormDto> 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<RepairRequestFormDto>(); ;
|
}
|
var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.EquipmentID).Distinct().ToList());
|
var vmList = new List<RepairRequestFormDto>();
|
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<RepairRequestFormDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 获取待受理分页列表
|
/// </summary>
|
[Route("GetPendingPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<RepairRequestFormDto> 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<RepairRequestFormDto>();
|
var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.EquipmentID).Distinct().ToList());
|
var vmList = new List<RepairRequestFormDto>();
|
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<RepairRequestFormDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 获取待派单分页列表
|
/// </summary>
|
[Route("GetJustAcceptedPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<RepairRequestFormJustAcceptedDto> 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<RepairRequestFormJustAcceptedDto>();
|
}
|
var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.Item1.EquipmentID).Distinct().ToList());
|
var vmList = new List<RepairRequestFormJustAcceptedDto>();
|
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<RepairRequestFormJustAcceptedDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 获取我的报修分页列表
|
/// </summary>
|
[Route("GetMyPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<MyRepairRequestFormDto> 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<MyRepairRequestFormDto>();
|
}
|
var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.EquipmentID).Distinct().ToList());
|
var vmList = new List<MyRepairRequestFormDto>();
|
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<MyRepairRequestFormDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 获取我的待受理报修分页列表
|
/// </summary>
|
[Route("GetMyPendingPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<MyRepairRequestFormPendingDto> 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<MyRepairRequestFormPendingDto>();
|
}
|
var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.EquipmentID).Distinct().ToList());
|
var vmList = new List<MyRepairRequestFormPendingDto>();
|
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<MyRepairRequestFormPendingDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 获取我的已受理报修分页列表
|
/// </summary>
|
[Route("GetMyAcceptedPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<MyRepairRequestFormAcceptedDto> 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<MyRepairRequestFormAcceptedDto>();
|
}
|
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<MyRepairRequestFormAcceptedDto>();
|
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<MyRepairRequestFormAcceptedDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 获取我的被驳回报修分页列表
|
/// </summary>
|
[Route("GetMyRejectedPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<MyRepairRequestFormRejectedDto> 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<MyRepairRequestFormRejectedDto>();
|
}
|
var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.EquipmentID).Distinct().ToList());
|
var vmList = new List<MyRepairRequestFormRejectedDto>();
|
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<MyRepairRequestFormRejectedDto>() { Total = total, List = vmList };
|
}
|
|
|
|
|
|
}
|
}
|