namespace Yw.Application
{
///
/// RepairTaskForm
///
[Route("Repair/Task/Form")]
[ApiDescriptionSettings("Repair", Name = "维修单", Order = 9000)]
public class RepairTaskForm_Controller : IDynamicApiController
{
private readonly IHttpContextAccessor _httpContextAccessor;
///
///
///
public RepairTaskForm_Controller(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
private readonly Service.RepairTaskForm _service = new();
///
/// 上传文件
///
[Route("UploadFile@V1.0")]
[HttpPost]
public bool UploadFile([FromForm][Required] UploadRepairTaskFormFileInput input)
{
var request = _httpContextAccessor.HttpContext.Request;
if (request.Form.Files == null || request.Form.Files.Count < 1)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, "请选择文件后重试");
}
var model = _service.GetByID(input.FormID);
if (model == null)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.D001, $"FormID:{input.FormID} 数据不存在");
}
var serviceLog = new Yw.Service.RepairTaskLog();
var log = serviceLog.GetByID(input.LogID);
if (log == null)
{
log = serviceLog.GetLastByFormID(input.FormID);
}
if (log == null)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, $"操作日志异常");
}
var serviceLogFile = new Yw.Service.RepairTaskLogFile();
var sortCode = serviceLogFile.GetMaxSortCodeByLogID(model.ID, log.ID);
var fileList = new List();
for (int i = 0; i < request.Form.Files.Count; i++)
{
var uploadFile = request.Form.Files[i];
var file = new Model.RepairTaskLogFile();
file.FormID = input.FormID;
file.LogID = log.ID;
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 = sortCode + 1 + i;
fileList.Add(file);
}
var bol = serviceLogFile.Inserts(fileList);
return bol;
}
///
/// 派单
///
[Route("Assign@V1.0")]
[HttpPut]
public bool Assign([Required] RepairTaskAssignInput input)
{
var model = _service.GetByID(input.ID);
if (model == null)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.D001, $"ID:{input.ID} 数据不存在");
}
if (model.FormStatus >= eTaskStatus.Assigned)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, $"ID:{input.ID} 表单状态异常");
}
var bol = _service.Assign(input.ID, input.RepairUserID, input.RepairUserName, input.Note);
return bol;
}
///
/// 接单
///
[Route("Receive@V1.0")]
[HttpPut]
public bool Receive([Required] RepairTaskReceiveInput input)
{
var model = _service.GetByID(input.ID);
if (model == null)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.D001, $"ID:{input.ID} 数据不存在");
}
if (model.FormStatus != eTaskStatus.Assigned)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, $"ID:{input.ID} 表单状态异常");
}
var bol = _service.Receive(input.ID, input.Note);
return bol;
}
///
/// 开工 (支持上传文件)
///
[Route("Start@V1.0")]
[HttpPost]
public bool Start([FromForm][Required] RepairTaskStartInput input)
{
var model = _service.GetByID(input.ID);
if (model == null)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.D001, $"ID:{input.ID} 数据不存在");
}
if (model.FormStatus != eTaskStatus.Received)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, $"ID:{input.ID} 表单状态异常");
}
var request = _httpContextAccessor.HttpContext.Request;
var fileList = new List();
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.RepairTaskLogFile();
file.FormID = input.ID;
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 bol = _service.Start(input.ID, input.Note, fileList);
return bol;
}
///
/// 暂停 (支持上传文件)
///
[Route("Pause@V1.0")]
[HttpPost]
public bool Pause([FromForm][Required] RepairTaskPauseInput input)
{
var model = _service.GetByID(input.ID);
if (model == null)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.D001, $"ID:{input.ID} 数据不存在");
}
if (model.FormStatus != eTaskStatus.Started && model.FormStatus != eTaskStatus.Restarted)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, $"ID:{input.ID} 表单状态异常");
}
var request = _httpContextAccessor.HttpContext.Request;
var fileList = new List();
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.RepairTaskLogFile();
file.FormID = input.ID;
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 bol = _service.Pause(input.ID, input.Note, fileList);
return bol;
}
///
/// 重新开工 (支持上传文件)
///
[Route("Restart@V1.0")]
[HttpPost]
public bool Restart([FromForm][Required] RepairTaskRestartInput input)
{
var model = _service.GetByID(input.ID);
if (model == null)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.D001, $"ID:{input.ID} 数据不存在");
}
if (model.FormStatus != eTaskStatus.Paused)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, $"ID:{input.ID} 表单状态异常");
}
var request = _httpContextAccessor.HttpContext.Request;
var fileList = new List();
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.RepairTaskLogFile();
file.FormID = input.ID;
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 bol = _service.Restart(input.ID, input.Note, fileList);
return bol;
}
///
/// 完工 (支持上传文件)
///
[Route("Finish@V1.0")]
[HttpPost]
public bool Finish([FromForm][Required] RepairTaskFinishInput input)
{
var model = _service.GetByID(input.ID);
if (model == null)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.D001, $"ID:{input.ID} 数据不存在");
}
if (model.FormStatus != eTaskStatus.Started && model.FormStatus != eTaskStatus.Restarted)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, $"ID:{input.ID} 表单状态异常");
}
var request = _httpContextAccessor.HttpContext.Request;
var fileList = new List();
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.RepairTaskLogFile();
file.FormID = input.ID;
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 bol = _service.Finish(input.ID, input.Note, fileList);
return bol;
}
///
/// 验收通过
///
[Route("Success@V1.0")]
[HttpPut]
public bool Success([Required] RepairTaskSuccessInput input)
{
var model = _service.GetByID(input.ID);
if (model == null)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.D001, $"ID:{input.ID} 数据不存在");
}
if (model.FormStatus != eTaskStatus.Finished)
{
throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, $"ID:{input.ID} 表单状态异常");
}
var bol = _service.Success(input.ID, input.Note);
return bol;
}
///
/// 获取进度分页列表
///
[Route("GetProgressPageList@V1.0")]
[HttpGet]
public PageListOutput GetProgressPageList([FromQuery][Required] QueryRepairTaskFormProgressPageListInput input)
{
int total = 0;
var list = _service.GetProgressPageList
(LongListHelper.ToList(input.EquipmentIds), input.RepairUserID, 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 logList = new Service.RepairTaskLog().GetByFormIds(list.Select(x => x.Item1.ID).Distinct().ToList());
var equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.Item1.EquipmentID).Distinct().ToList());
var vmList = new List();
foreach (var item in list)
{
var itemLogList = logList?.Where(x => x.FormID == item.Item1.ID).OrderBy(x => x.OperateTime).ToList();
var equipment = equipmentList?.Find(x => x.ID == item.Item1.EquipmentID);
var vm = new RepairTaskFormProgressDto(item.Item1, equipment, item.Item2, itemLogList);
vmList.Add(vm);
}
return new PageListOutput() { Total = total, List = vmList };
}
///
/// 获取完工分页列表
///
[Route("GetFinishedPageList@V1.0")]
[HttpGet]
public PageListOutput GetFinishedPageList([FromQuery][Required] QueryRepairTaskFormFinishedPageListInput input)
{
int total = 0;
var list = new Service.RepairTaskForm().GetPageList
(LongListHelper.ToList(input.EquipmentIds), input.RepairUserID, eTaskStatus.Finished, 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 equipmentList = new Service.Equipment().GetByIds(list.Select(x => x.Item1.EquipmentID).Distinct().ToList());
var logList = new Service.RepairTaskLog().GetByFormIds(list.Select(x => x.Item1.ID).Distinct().ToList());
var vmList = new List();
foreach (var item in list)
{
var itemLogList = logList?.Where(x => x.FormID == item.Item1.ID).OrderBy(x => x.OperateTime).ToList();
var equipment = equipmentList?.Find(x => x.ID == item.Item1.EquipmentID);
var vm = new RepairTaskFormFinishedDto(item.Item1, equipment, item.Item2, itemLogList);
vmList.Add(vm);
}
return new PageListOutput() { Total = total, List = vmList };
}
///
/// 获取我的已派单分页列表
///
[Route("GetMyAssignedPageList@V1.0")]
[HttpGet]
public PageListOutput GetMyAssignedPageList([FromQuery][Required] QueryMyRepairTaskFormAssignedPageListInput input)
{
int total = 0;
var list = new Service.RepairTaskForm().GetPageList
(null, UserManager.UserID, eTaskStatus.Assigned, null, null, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total);
if (list == null || list.Count < 1)
{
return new PageListOutput() { Total = total, List = null };
}
var serviceEquipment = new Yw.Service.Equipment();
var serviceLog = new Yw.Service.RepairTaskLog();
var vmList = new List();
foreach (var item in list)
{
var equipment = serviceEquipment.GetByID(item.Item1.EquipmentID);
var logList = serviceLog.GetByFormID(item.Item1.ID);
var vm = new MyRepairTaskFormAssignedDto(item.Item1, equipment, logList);
vmList.Add(vm);
}
return new PageListOutput() { Total = total, List = vmList };
}
///
/// 获取我的进行中的分页列表
///
[Route("GetMyProgressPageList@V1.0")]
[HttpGet]
public PageListOutput GetMyProgressPageList([FromQuery][Required] QueryMyRepairTaskFormProgressPageListInput input)
{
int total = 0;
var list = new Service.RepairTaskForm().GetProgressPageList
(null, UserManager.UserID, null, null, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total);
var vmList = new List();
if (list != null && list.Count > 0)
{
var service_equipment = new Yw.Service.Equipment();
foreach (var item in list)
{
var equipment = service_equipment.GetByID(item.Item1.EquipmentID);
var vm = new MyRepairTaskFormProgressDto(item.Item1, equipment);
vmList.Add(vm);
}
}
return new PageListOutput() { Total = total, List = vmList };
}
///
/// 获取我的已完成的分页列表
///
[Route("GetMyHasFinishedPageList@V1.0")]
[HttpGet]
public PageListOutput GetMyHasFinishedPageList([FromQuery][Required] QueryMyRepairTaskFormHasFinishedPageListInput input)
{
int total = 0;
var list = new Service.RepairTaskForm().GetHasFinishedPageList
(null, UserManager.UserID, null, null, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total);
var vmList = new List();
if (list != null && list.Count > 0)
{
var service_equipment = new Yw.Service.Equipment();
foreach (var item in list)
{
var equipment = service_equipment.GetByID(item.Item1.EquipmentID);
var vm = new MyRepairTaskFormHasFinishedDto(item.Item1, equipment);
vmList.Add(vm);
}
}
return new PageListOutput() { Total = total, List = vmList };
}
}
}