hao
2025-05-21 711fd971275401adc48b6a25865ea4594bc7fb75
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// 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()); // 返回工单详情
        }
    }
}