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 });
}
}
}
}