namespace Yw.Application
|
{
|
/// <summary>
|
/// RepairTaskForm
|
/// </summary>
|
[Route("Repair/Task/Form")]
|
[ApiDescriptionSettings("Repair", Name = "维修单", Order = 9000)]
|
public class RepairTaskForm_Controller : IDynamicApiController
|
{
|
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
|
/// <summary>
|
///
|
/// </summary>
|
public RepairTaskForm_Controller(IHttpContextAccessor httpContextAccessor)
|
{
|
_httpContextAccessor = httpContextAccessor;
|
}
|
|
private readonly Service.RepairTaskForm _service = new();
|
|
/// <summary>
|
/// 上传文件
|
/// </summary>
|
[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<Model.RepairTaskLogFile>();
|
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;
|
}
|
|
/// <summary>
|
/// 派单
|
/// </summary>
|
[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, UserManager.UserID, DateTime.Now, UserManager.UserName);
|
return bol;
|
}
|
|
/// <summary>
|
/// 接单
|
/// </summary>
|
[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, UserManager.UserID, DateTime.Now, UserManager.UserName);
|
return bol;
|
}
|
|
/// <summary>
|
/// 开工 (支持上传文件)
|
/// </summary>
|
[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<Model.RepairTaskLogFile>();
|
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, UserManager.UserID, DateTime.Now, UserManager.UserName);
|
return bol;
|
}
|
|
/// <summary>
|
/// 暂停 (支持上传文件)
|
/// </summary>
|
[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<Model.RepairTaskLogFile>();
|
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, UserManager.UserID, DateTime.Now, UserManager.UserName);
|
return bol;
|
}
|
|
/// <summary>
|
/// 重新开工 (支持上传文件)
|
/// </summary>
|
[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<Model.RepairTaskLogFile>();
|
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, UserManager.UserID, DateTime.Now, UserManager.UserName);
|
return bol;
|
}
|
|
/// <summary>
|
/// 完工 (支持上传文件)
|
/// </summary>
|
[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<Model.RepairTaskLogFile>();
|
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, UserManager.UserID, DateTime.Now, UserManager.UserName);
|
return bol;
|
}
|
|
/// <summary>
|
/// 验收通过
|
/// </summary>
|
[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, UserManager.UserID, DateTime.Now, UserManager.UserName);
|
return bol;
|
}
|
|
/// <summary>
|
/// 获取进度分页列表
|
/// </summary>
|
[Route("GetProgressPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<RepairTaskFormProgressDto> 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<RepairTaskFormProgressDto>() { 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<RepairTaskFormProgressDto>();
|
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<RepairTaskFormProgressDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 获取完工分页列表
|
/// </summary>
|
[Route("GetFinishedPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<RepairTaskFormFinishedDto> 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<RepairTaskFormFinishedDto>() { 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<RepairTaskFormFinishedDto>();
|
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<RepairTaskFormFinishedDto>() { Total = total, List = vmList };
|
}
|
|
|
|
/// <summary>
|
/// 获取我的已派单分页列表
|
/// </summary>
|
[Route("GetMyAssignedPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<MyRepairTaskFormAssignedDto> 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<MyRepairTaskFormAssignedDto>() { Total = total, List = null };
|
}
|
var serviceEquipment = new Yw.Service.Equipment();
|
var serviceLog = new Yw.Service.RepairTaskLog();
|
var vmList = new List<MyRepairTaskFormAssignedDto>();
|
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<MyRepairTaskFormAssignedDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 获取我的进行中的分页列表
|
/// </summary>
|
[Route("GetMyProgressPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<MyRepairTaskFormProgressDto> 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<MyRepairTaskFormProgressDto>();
|
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<MyRepairTaskFormProgressDto>() { Total = total, List = vmList };
|
}
|
|
/// <summary>
|
/// 获取我的已完成的分页列表
|
/// </summary>
|
[Route("GetMyHasFinishedPageList@V1.0")]
|
[HttpGet]
|
public PageListOutput<MyRepairTaskFormHasFinishedDto> 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<MyRepairTaskFormHasFinishedDto>();
|
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<MyRepairTaskFormHasFinishedDto>() { Total = total, List = vmList };
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
}
|