using gdbg.Models; using gdbg.Services; using Microsoft.AspNetCore.Mvc; using Oracle.ManagedDataAccess.Client; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace gdbg.Controllers { [ApiController] [Route("api/[controller]")] public class LogPrintEventController : ControllerBase { private readonly OracleDbService _oracleDbService; // 依赖注入 OracleDbService public LogPrintEventController(OracleDbService oracleDbService) { _oracleDbService = oracleDbService; } /// /// 记录打印事件(打印前/打印后 + 打印/补打) /// [HttpPost("logEvent")] public async Task LogPrintEvent([FromBody] PrintLogRequest request) { try { // 校验参数是否为空 if (string.IsNullOrEmpty(request.Barcode) || string.IsNullOrEmpty(request.Worker) || string.IsNullOrEmpty(request.EventType) || string.IsNullOrEmpty(request.PrintType) || string.IsNullOrEmpty(request.OrderNo) || string.IsNullOrEmpty(request.Line)) { return BadRequest(new { message = "缺少必要参数" }); } // 调用存储过程 string procedureCall = "BEGIN LogPrintEvent(:p_barcode, :p_worker, :p_eventType, :p_printType, :p_orderNo, :p_line,:p_version); END;"; var parameters = new List { new OracleParameter("p_barcode", request.Barcode), new OracleParameter("p_worker", request.Worker), new OracleParameter("p_eventType", request.EventType), new OracleParameter("p_printType", request.PrintType), new OracleParameter("p_orderNo", request.OrderNo), new OracleParameter("p_line", request.Line), new OracleParameter("p_version", request.Version) }; await _oracleDbService.ExecuteProcedureAsync(procedureCall, parameters); return Ok(new { message = "打印事件记录成功。" }); } catch (OracleException ex) { return StatusCode(500, new { message = "数据库错误:" + ex.Message }); } catch (Exception ex) { return StatusCode(500, new { message = "服务器内部错误", error = ex.Message }); } } } }