using DeviceRepair.Api.Common; using DeviceRepair.Api.CustomAttribute; using DeviceRepair.DataAccess; using DeviceRepair.Models; using DeviceRepair.Models.Record; using NLog; using System; using System.IO; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Web.Http; namespace DeviceRepair.Api.Controllers { [RoutePrefix("Api/Preserve")] public class PreserveController : CFController { private static readonly Logger log = LogManager.GetCurrentClassLogger(); /// /// 获取保养计划及对应的点检表信息 /// /// /// [HttpGet] [Route("GetPlanAndFormInfo")] public APIResponseData GetPlanAndFormInfo(int pk) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "获取数据失败!" }; try { if (pk == 0) throw new Exception("点检表编号是必须的参数!"); return PreserveAccess.Instance.GetPlanAndFormInfo(pk); } catch (Exception ex) { log.Error(ex); apiResponseData.Code = -1; apiResponseData.Message = ex.Message.ToString(); } return apiResponseData; } /// /// 文件下载 /// /// /// [HttpGet] [Route("GetFileItem")] [HttpAuthorize] public IHttpActionResult DownloadFile(int pk) { try { if (pk <= 0) throw new Exception("参数【主键编号】不能为空!"); MaintenanceFormVersionInfo Item = PreserveAccess.Instance.GetMaintenanceFormVersionSingle(pk); string filePath = Item.FormPath; // 替换为实际的文件路径 string fileName = Path.GetFileName(filePath); HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); var fileStream = new FileStream(filePath, FileMode.Open); response.Content = new StreamContent(fileStream); response.Content.Headers.Add("FileName", fileName); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = fileName }; return ResponseMessage(response); } catch (Exception ex) { log.Error(ex); return Ok(ex.Message); } } [HttpGet] [Route("GetDownPDFFile")] [HttpAuthorize] public IHttpActionResult DownPDFFile(int pk) { try { if (pk <= 0) throw new Exception("参数【主键编号】不能为空!"); AttachmentInfo Item = PreserveAccess.Instance.GetAttachmentInfo(pk); string filePath = Item.FilePath; // 替换为实际的文件路径 string fileName = Path.GetFileName(filePath); HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); var fileStream = new FileStream(filePath, FileMode.Open); response.Content = new StreamContent(fileStream); response.Content.Headers.Add("FileName", fileName); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = fileName }; return ResponseMessage(response); } catch (Exception ex) { log.Error(ex); return Ok(ex.Message); } } /// /// 根据主键编号获取对象 /// /// /// [HttpGet] [Route("GetPreserveRecordItemByPrimaryKey")] [HttpAuthorize] public APIResponseData GetPreserveRecordItemByPrimaryKey(int pk) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "数据获取失败,主键ID是必须的参数" }; try { if (pk <= 0) throw new Exception("参数【主键编号】不能为空!"); apiResponseData = PreserveAccess.Instance.GetPreserveRecordItemByPrimaryKey(pk); } catch (Exception ex) { log.Error(ex); apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 通过设备主键编号及点检表主键编号获取单条保养信息记录 /// /// /// /// [HttpGet] [Route("GetSingleByEquipmentIDAndFormID")] [HttpAuthorize] public APIResponseData GetSingleByEquipmentPrimaryIDAndFormPrimaryID(int PlanAutoID, int EquipmentID, int FormID) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "未能获取到数据" }; if (EquipmentID <= 0) return new APIResponseData { Code = -1, Message = $"参数【设备表主键编号】不能为空!" }; if (FormID <= 0) return new APIResponseData { Code = -1, Message = $"参数【保养点检表主键编号】不能为空!" }; try { return PreserveAccess.Instance.GetSingleByEquipmentPrimaryIDAndFormPrimaryID(PlanAutoID, EquipmentID, FormID); } catch (Exception ex) { log.Error(ex); apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 获取所有的保养记录数据 /// /// /// [HttpGet] [Route("GetPreserveDatas")] [HttpAuthorize] public APIResponseData GetPreserveDatas(string filter) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "获取数据失败" }; try { GetParams(); return PreserveAccess.Instance.GetPreserveDatas(filter, OperationInfo.OperatorCode); } catch (Exception ex) { log.Error(ex); apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 获取保养数据 /// /// /// [HttpGet] [Route("GetDetailById")] [HttpAuthorize] public APIResponseData GetDetailById(int pk) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "数据获取失败,主键ID是必须的参数" }; try { if (pk <= 0) throw new Exception("主键ID是必须的参数!"); apiResponseData = PreserveAccess.Instance.GetPreserveDetailByID(pk); } catch (Exception ex) { log.Error(ex); apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 插入保养数据 /// /// /// [HttpPost] [Route("Insertable")] public APIResponseData Insertable(MaintenanceRecordSubmit entity) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "未能获取到数据" }; if (entity == null) return apiResponseData; try { base.GetParams(); apiResponseData = PreserveAccess.Instance.Insertable(entity, OperationInfo); } catch (Exception ex) { log.Error(ex); apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 获取设备保养记录信息 /// /// /// [HttpPost, Route("GetRecordHisView"), HttpAuthorize] public APIResponseData GetRecordHisView(MaintenanceFilterModel filter) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "数据获取失败,主键ID是必须的参数" }; try { apiResponseData = PreserveAccess.Instance.GetRecordHisView(filter); } catch (Exception ex) { log.Error(ex); apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 获取保养计划的全部保养记录 /// /// /// [HttpGet, Route("GetPreserveDetailAll"), HttpAuthorize] public APIResponseData GetPreserveDetailAll(int PlanPrimaryKey) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "数据获取失败,主键ID是必须的参数" }; try { apiResponseData = PreserveAccess.Instance.GetPreserveDetailAll(PlanPrimaryKey); } catch (Exception ex) { log.Error(ex); apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } } }