using Microsoft.AspNetCore.Mvc;
|
using System.Threading.Tasks;
|
using gdbg.Services;
|
using System.Collections.Generic;
|
using Oracle.ManagedDataAccess.Client;
|
using System.Data;
|
|
namespace gdbg.Controllers
|
{
|
[ApiController]
|
[Route("api/[controller]")]
|
public class RefreshController : ControllerBase
|
{
|
private readonly OracleDbService _oracleDbService;
|
|
public RefreshController(OracleDbService oracleDbService)
|
{
|
_oracleDbService = oracleDbService;
|
}
|
|
[HttpPost]
|
public async Task<IActionResult> RefreshStatus([FromBody] RefreshRequest request)
|
{
|
try
|
{
|
// 检查输入参数
|
if (string.IsNullOrEmpty(request.LineNo))
|
{
|
return BadRequest(new { message = "LineNo is required." });
|
}
|
|
// 定义存储过程调用的 SQL
|
string procedureCall = @"
|
BEGIN
|
RefreshStatus(
|
:p_lineNo,
|
:p_orderNo,
|
:p_sj,
|
:p_xj,
|
:p_checkedInspection,
|
:p_checkedMaintenance
|
);
|
END;";
|
|
// 定义输出参数
|
var sjParam = new OracleParameter("p_sj", OracleDbType.Int32, ParameterDirection.Output);
|
var xjParam = new OracleParameter("p_xj", OracleDbType.Int32, ParameterDirection.Output);
|
var checkedInspectionParam = new OracleParameter("p_checkedInspection", OracleDbType.Int32, ParameterDirection.Output);
|
var checkedMaintenanceParam = new OracleParameter("p_checkedMaintenance", OracleDbType.Int32, ParameterDirection.Output);
|
|
// 参数列表
|
var parameters = new List<OracleParameter>
|
{
|
new OracleParameter("p_lineNo", request.LineNo),
|
new OracleParameter("p_orderNo", string.IsNullOrEmpty(request.OrderNo) ? DBNull.Value : request.OrderNo),
|
sjParam,
|
xjParam,
|
checkedInspectionParam,
|
checkedMaintenanceParam
|
};
|
|
// 调用存储过程
|
await _oracleDbService.ExecuteProcedureAsync(procedureCall, parameters);
|
|
// 安全检查和转换输出参数
|
int safeConvert(object value, int defaultValue = 0)
|
{
|
if (value == DBNull.Value)
|
return defaultValue;
|
|
if (value is Oracle.ManagedDataAccess.Types.OracleDecimal oracleDecimal)
|
return Convert.ToInt32(oracleDecimal.Value);
|
|
return Convert.ToInt32(value);
|
}
|
|
var result = new
|
{
|
CheckFirstPass = safeConvert(sjParam.Value, 3), // 默认未做
|
CheckXJ = safeConvert(xjParam.Value, 3), // 默认未做
|
CheckedInspection = safeConvert(checkedInspectionParam.Value, 0), // 默认未点检
|
CheckedMaintenance = safeConvert(checkedMaintenanceParam.Value, 0) // 默认未保养
|
};
|
|
return Ok(result);
|
}
|
catch (Exception ex)
|
{
|
return StatusCode(500, new { message = "An error occurred during refreshing status.", error = ex.Message });
|
}
|
}
|
|
|
}
|
|
// 请求参数类
|
public class RefreshRequest
|
{
|
public string LineNo { get; set; } // 产线编号
|
public string OrderNo { get; set; } // 工单编号(可选)
|
}
|
}
|