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 };
}
///
/// 通过 BelongType 和 BelongID 获取分页列表
///
[Route("GetPageListByBelongTypeAndBelongID@V1.0")]
[HttpGet]
public PageListOutput GetPageListByBelongTypeAndBelongID([FromQuery][Required] QueryRepairRequestFormPageListByBelongInput input)
{
int total = 0;
var allEquipmentList = new Yw.Service.Equipment().GetByBelongTypeAndBelongID(input.BelongType, input.BelongID);
var allEquipmentIds = allEquipmentList?.Select(x => x.ID).Distinct().ToList();
var list = new Service.RepairRequestForm().GetFluzzyPageListOfEquipmentIds
(allEquipmentIds, 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 };
}
///
/// 通过 BelongType 和 BelongID 获取待受理分页列表
///
[Route("GetPendingPageListByBelongTypeAndBelongID@V1.0")]
[HttpGet]
public PageListOutput GetPendingPageListByBelongTypeAndBelongID([FromQuery][Required] QueryRepairRequestFormPendingPageListByBelongInput input)
{
int total = 0;
var allEquipmentList = new Yw.Service.Equipment().GetByBelongTypeAndBelongID(input.BelongType, input.BelongID);
var allEquipmentIds = allEquipmentList?.Select(x => x.ID).Distinct().ToList();
var list = new Service.RepairRequestForm().GetFluzzyPageListOfEquipmentIds
(allEquipmentIds, 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 };
}
///
/// 通过 BelongType 和 BelongID 获取待派单分页列表
///
[Route("GetJustAcceptedPageListByBelongTypeAndBelongID@V1.0")]
[HttpGet]
public PageListOutput GetJustAcceptedPageListByBelongTypeAndBelongID([FromQuery][Required] QueryRepairRequestFormJustAcceptedPageListByBelongInput input)
{
int total = 0;
var allEquipmentList = new Yw.Service.Equipment().GetByBelongTypeAndBelongID(input.BelongType, input.BelongID);
var allEquipmentIds = allEquipmentList?.Select(x => x.ID).Distinct().ToList();
var list = new Service.RepairRequestForm().GetJustAcceptedPageListOfEquipmentIds
(allEquipmentIds, 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 };
}
}
}