// 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> 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 { 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()); // 返回工单详情 } } }