using System.Dynamic; using MES.Service.Dto.service; using MES.Service.Modes; using MES.Service.service.QC; using MES.Service.util; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; namespace MESApplication.Controllers.QC; [Route("api/[controller]")] [ApiController] public class LljController : ControllerBase { [HttpPost("getPage")] public ResponseResult getPage([FromBody] XJPageResult queryObj) { try { dynamic resultInfos = new ExpandoObject(); var (item, totalCount) = new LljService().GetPage(queryObj); var tbBillList = resultInfos.tbBillList = item; return new ResponseResult { status = 0, message = "OK", data = resultInfos, TotalCount = totalCount }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("setJYItem")] public ResponseResult setJYItem([FromBody] JObject data) { var itemNo = Convert.ToDecimal(data["itemNo"].ToString()); var quantity = Convert.ToDecimal(data["quantity"].ToString()); var releaseNo = data["releaseNo"].ToString(); try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new LljService().SetItems(itemNo, quantity, releaseNo); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("saveItem")] public ResponseResult saveItem([FromBody] LLJDto lljDto) { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new LljService().saveItem(lljDto); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //getItems [HttpPost("getJYItem")] public ResponseResult getJYItem([FromBody] JObject data) { var id = data["id"]?.ToString(); var releaseNo = data["releaseNo"]?.ToString(); try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new LljService().GetItems(releaseNo, Convert.ToDecimal(id)); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //getXjDetail02ById [HttpPost("getXjDetail02ById")] public ResponseResult getXjDetail02ById([FromBody] JObject data) { var id = data["id"]?.ToString(); try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new LljService().getXjDetail02ById(Convert.ToDecimal(id)); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("SetQSItemDetail")] public ResponseResult SetQSItemDetail( [FromBody] MesQaItemsDetectDetail12 detail) { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new LljService(); var detail021 = tbBillList.SetQSItemDetail(detail); resultInfos.tbBillList = detail021; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("UpdateQSItemDetail")] public ResponseResult UpdateQSItemDetail( [FromBody] MesQaItemsDetectDetail12 detail) { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new LljService(); var detail021 = tbBillList.UpdateQSItemDetail(detail); resultInfos.tbBillList = detail021; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //saveRemarksGid 主表添加不合格描述 [HttpPost("saveRemarksGid")] public ResponseResult saveRemarksGid([FromBody] LLJDto rkjDto) { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new LljService().saveRemarksGid(rkjDto); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //saveRemarksPid 子表添加不合格描述 [HttpPost("saveRemarksPid")] public ResponseResult saveRemarksPid([FromBody] LLJDto rkjDto) { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new LljService().saveRemarksPid(rkjDto); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //removeXJ 删除 [HttpPost("removeXJ")] public ResponseResult removeXJ([FromBody] JObject data) { var releaseNo = data["releaseNo"]?.ToString(); try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new LljService().removeXJ(releaseNo); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //IqcQaSubmit [HttpPost("IqcQaSubmit")] public ResponseResult IqcQaSubmit(LLJDto rkjDto) { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new LljService().IqcQaSubmit(rkjDto); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("EmergencyRelease")] public ResponseResult EmergencyRelease([FromBody] JObject data) { var id = Convert.ToInt32(data["id"].ToString()); try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new LljService().EmergencyRelease(id); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("WithdrawEmergencyRelease")] public ResponseResult WithdrawEmergencyRelease([FromBody] JObject data) { var id = Convert.ToInt32(data["id"].ToString()); try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new LljService().WithdrawEmergencyRelease(id); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("getAttachments")] public ResponseResult GetAttachments([FromBody] JObject data) { var releaseNo = data["releaseNo"]?.ToString(); try { dynamic resultInfos = new System.Dynamic.ExpandoObject(); var tbBillList = new LljService().GetAttachments(releaseNo); if (tbBillList == null || tbBillList.Count == 0) { return new ResponseResult { status = 1, message = "该检验单未上传附件信息!", data = null }; } resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpGet("DownloadFtpFile")] public IActionResult DownloadFtpFile([FromQuery] string itemNo, [FromQuery] string fileName) { // FTP服务器信息(请替换为实际信息) string ftpServer = "ftp://36.26.21.214"; string ftpUser = "hm_ftp"; string ftpPwd = "dell_123"; // 已更新为真实密码 string ftpPath = $"{ftpServer}/IQC/{itemNo}/{fileName}"; try { var request = (System.Net.FtpWebRequest)System.Net.WebRequest.Create(ftpPath); request.Method = System.Net.WebRequestMethods.Ftp.DownloadFile; request.Credentials = new System.Net.NetworkCredential(ftpUser, ftpPwd); request.UseBinary = true; request.UsePassive = true; using (var response = (System.Net.FtpWebResponse)request.GetResponse()) using (var ftpStream = response.GetResponseStream()) using (var ms = new System.IO.MemoryStream()) { ftpStream.CopyTo(ms); ms.Position = 0; string contentType = "application/octet-stream"; // 防御性处理,去除fileName中的回车换行和空格 fileName = fileName?.Trim().Replace("\r", "").Replace("\n", ""); return File(ms.ToArray(), contentType, fileName); } } catch (Exception ex) { return BadRequest($"FTP下载失败:{ex.Message},ftpPath={ftpPath},fileName={fileName}"); } } }