using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; using gdbg.Services; using System.Collections.Generic; using Oracle.ManagedDataAccess.Client; using gdbg.Models; namespace gdbg.Controllers { [ApiController] [Route("api/[controller]")] public class InspectionController : ControllerBase { private readonly OracleDbService _oracleDbService; public InspectionController(OracleDbService oracleDbService) { _oracleDbService = oracleDbService; } [HttpPost("firstInspection")] public async Task FirstInspection([FromBody] FirstInspectionRequest request) { try { string procedureCall = "BEGIN PRC_ZSSJ_TJ(:pi_user, :pi_release_no, :po_flag, :po_text); END;"; var poFlag = new OracleParameter("po_flag", OracleDbType.Int32) { Direction = System.Data.ParameterDirection.Output }; var poText = new OracleParameter("po_text", OracleDbType.Varchar2, 2000) { Direction = System.Data.ParameterDirection.Output }; var parameters = new List { new OracleParameter("pi_user", request.UserId), new OracleParameter("pi_release_no", request.ReleaseNo), poFlag, poText }; await _oracleDbService.ExecuteProcedureAsync(procedureCall, parameters); // 安全地转换输出标志 int flag = Convert.ToInt32(poFlag.Value.ToString()); string message = poText.Value.ToString(); if (flag == 0) { return Ok(new { message = message }); } else { return BadRequest(new { message = message }); } } catch (Exception ex) { return StatusCode(500, new { message = "执行首检送检时发生错误。", error = ex.Message }); } } [HttpPost("startProduction")] public async Task StartProduction([FromBody] StartProductionRequest request) { try { string procedureCall = "BEGIN PQC_ZSBG_GDKG(:pi_user,:pi_order_no, :po_flag, :po_text); END;"; var poFlag = new OracleParameter("po_flag", OracleDbType.Int32) { Direction = System.Data.ParameterDirection.Output }; var poText = new OracleParameter("po_text", OracleDbType.Varchar2, 2000) { Direction = System.Data.ParameterDirection.Output }; var parameters = new List { new OracleParameter("pi_user", request.UserId), new OracleParameter("pi_order_no", request.OrderNo), poFlag, poText }; await _oracleDbService.ExecuteProcedureAsync(procedureCall, parameters); // 安全地转换输出标志 int flag = Convert.ToInt32(poFlag.Value.ToString()); string message = poText.Value.ToString(); if (flag == 0) { return Ok(new { message = message }); } else { return BadRequest(new { message = message }); } } catch (Exception ex) { return StatusCode(500, new { message = "开工请求时发生错误。", error = ex.Message }); } } } }