// Controllers/MaterialController.cs using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.Threading.Tasks; using gdbg.Models; // 引用模型命名空间 using gdbg.Services; // 引用服务命名空间 using Oracle.ManagedDataAccess.Client; // Oracle 参数命名空间 namespace gdbg.Controllers { [ApiController] [Route("api/[controller]")] public class MaterialController : ControllerBase { private readonly OracleDbService _oracleDbService; public MaterialController(OracleDbService oracleDbService) { _oracleDbService = oracleDbService; } [HttpGet] public async Task> GetMaterialInfo([FromQuery] string orderNo) { if (string.IsNullOrEmpty(orderNo)) { return BadRequest("OrderNo is required."); } // SQL 查询获取物料编码、名称、规格型号、订单数量、已生产数 var query = @" select s.ITEM_NO,s.ITEM_NAME,s.ITEM_MODEL,a.daa008,a.daa011 from womdaa a left join mes_items s on a.daa002=s.id WHERE a.daa001 = :orderNo"; var parameters = new List { new OracleParameter(":orderNo", orderNo) }; var materialInfoList = await _oracleDbService.GetAsync(query, reader => new MaterialInfo { ItemCode = reader.GetString(0), // 物料编码 ItemName = reader.GetString(1), // 物料名称 ItemSpec = reader.GetString(2), // 规格型号 OrderQuantity = reader.GetInt32(3), // 订单数量 ProducedQuantity = reader.GetInt32(4) // 已生产数 }, parameters); if (materialInfoList.Count == 0) return NotFound("Order not found."); return Ok(materialInfoList.First()); } } }