1
hao
2025-03-27 a5913286aaeed55b91f48f6fd5af85dfe981bbd4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// 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<ActionResult<MaterialInfo>> 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<OracleParameter>
            {
                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());
        }
    }
}