// Controllers/OrderDetailsController.cs
|
using Microsoft.AspNetCore.Mvc;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Threading.Tasks;
|
using gdbg.Models; // 引用模型命名空间
|
using gdbg.Services; // 引用服务命名空间
|
using Oracle.ManagedDataAccess.Client; // Oracle 参数命名空间
|
|
namespace gdbg.Controllers
|
{
|
[ApiController]
|
[Route("api/[controller]")]
|
public class OrderDetailsController : ControllerBase
|
{
|
private readonly OracleDbService _oracleDbService;
|
|
public OrderDetailsController(OracleDbService oracleDbService)
|
{
|
_oracleDbService = oracleDbService;
|
}
|
|
[HttpGet]
|
public async Task<ActionResult<OrderDetails>> GetOrderDetails([FromQuery] string orderNo)
|
{
|
if (string.IsNullOrEmpty(orderNo))
|
{
|
return BadRequest("OrderNo is required.");
|
}
|
|
// 使用你提供的 SQL 查询,并新增一个字段 daa002
|
var query = @"
|
SELECT c.SALE_ORDER_NO, to_char(NVL(a.daa016, SYSDATE), 'YYYY-MM-DD HH24:MI:SS'), a.daa008, a.daa011, a.daa002,s.item_no,nvl(bz.bzsl,0),a.daa018,s.ITEM_NAME,s.ITEM_MODEL,
|
case when sj.FSECOND_RESU ='合格' then 1 else case when sj.FSECOND_RESU ='不合格' then 2 else 0 end end sj,
|
case when xj.FCHECK_RESU ='合格' then 1 else case when xj.FCHECK_RESU ='不合格' then 2 else 0 end end xj
|
FROM womdaa a left join BZFS_WH bz on bz.ITEM_ID=a.daa002
|
LEFT JOIN womcaa c ON a.daa014 = c.caa001
|
LEFT JOIN mes_items s on s.id=a.daa002
|
left join MES_QA_ITEM_IPQC_01 sj on sj.AUFNR=a.DAA001
|
left join MES_QA_ITEM_IPQC_02 xj on xj.BILL_NO=a.daa001
|
WHERE a.daa001 = :orderNo";
|
|
var parameters = new List<OracleParameter>
|
{
|
new OracleParameter(":orderNo", orderNo)
|
};
|
|
// 使用 OracleDbService 获取数据
|
var orderDetailsList = await _oracleDbService.GetAsync(query, reader => new OrderDetails
|
{
|
RequirementDoc = reader.GetString(0), // SALE_ORDER_NO 对应需求单据
|
ProductionOrder = reader.GetString(1), // daa021 对应生产订单
|
OrderQuantity = reader.GetInt32(2), // daa008 对应订单数量
|
ProducedQuantity = reader.GetInt32(3), // daa011 对应已生产数
|
ItemId = reader.GetString(4) , // 新增字段 item_id 对应 daa002
|
ItemNO=reader.GetString(5),
|
BZSL= reader.GetString(6), //包装数
|
GDZT= reader.GetString(7), //工单状态
|
Itemname=reader.GetString(8),
|
Itemmodel= reader.GetString(9),
|
sj=reader.GetInt32(10),
|
xj=reader.GetInt32(11)
|
}, parameters);
|
|
if (orderDetailsList.Count == 0)
|
return NotFound("Order not found.");
|
|
return Ok(orderDetailsList.First()); // 返回工单详情
|
}
|
}
|
}
|