啊鑫
8 天以前 0aa54059b26e6641196e9953490dd18616e916e3
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using System.Dynamic;
using Microsoft.AspNetCore.Mvc;
using NewPdaSqlServer.service.@base;
using NewPdaSqlServer.service.Warehouse;
using NewPdaSqlServer.util;
// 引入动态类型支持
// 引入防病毒工具库(但未在代码中使用)
// 引入ASP.NET Core MVC功能
// 引入项目特定的DTO服务
// 引入项目实体类
// 引入基础服务
// 引入仓库服务
// 引入工具类
 
// 引入EF日志类别(但未在代码中使用)
 
namespace NewPdaSqlServer.Controllers.Warehouse;
// 控制器命名空间
 
/// <summary>
///     库位变更控制器,处理与库位变更相关的API请求
/// </summary>
[ApiController] // 标记该类为API控制器,自动进行模型验证和错误处理
[Route("api/[controller]")] // 定义控制器路由模板,路由前缀为api/控制器名(Kwbg)
public class
    KwbgController : ControllerBase // 控制器类继承自ControllerBase,提供Web API功能
{
    private readonly MesPrintMangeer _kBG = new(); // 创建打印管理器实例,用于处理打印相关业务
    private readonly KwbgManager k = new(); // 创建库位变更管理器实例,用于处理业务逻辑
 
    /// <summary>
    ///     获取条码信息和物料信息
    /// </summary>
    /// <param name="unity">前端传递的WarehouseQuery对象,包含查询参数</param>
    /// <returns>统一的响应结果,包含条码信息和物料信息</returns>
    [HttpPost("GetBarInfo")] // 定义HTTP POST方法及子路由,访问路径为api/Kwbg/GetBarInfo
    //public ResponseResult GetBarInfo(dynamic unity) // 旧方法签名,参数为dynamic类型(已注释)
    public ResponseResult GetBarInfo(dynamic unity) // 新方法签名,参数为WarehouseQuery类型
    {
        try // 捕获异常,保证接口稳定性
        {
            dynamic resultInfos = new ExpandoObject(); // 创建动态对象,用于存储返回结果
            resultInfos.tbBillList =
                k.GetBarInfo(unity); // 调用管理器方法,获取条码信息,赋值给动态对象的tbBillList属性
            return new ResponseResult // 构造统一响应结果对象
            {
                status = 0, // 状态码0表示成功
                message = "OK", // 返回消息为OK
                data = resultInfos // 返回数据为动态对象,包含条码和物料信息
            };
        }
        catch (Exception ex) // 捕获所有异常
        {
            return ResponseResult.ResponseError(ex); // 调用统一错误处理方法,返回错误响应
        }
    }
 
    /// <summary>
    ///     库位变更接口。
    ///     接收前端传递的WarehouseQuery参数,完成条码变更及相关信息的查询和返回。
    /// </summary>
    /// <param name="unity">
    ///     WarehouseQuery对象,包含条码、拆分数量、用户名等库位变更所需参数。
    /// </param>
    /// <returns>
    ///     返回ResponseResult统一响应对象,status为0表示成功,data包含变更后的条码及打印信息。
    /// </returns>
    [HttpPost("ChangeDepotSection")]
    public ResponseResult ChangeDepotSection(dynamic unity)
    {
        try
        {
            // 创建动态对象resultInfos,用于存储返回结果
            dynamic resultInfos = new ExpandoObject();
            // 初始化tbBillList属性为动态对象,用于存储条码相关信息
            resultInfos.tbBillList = new ExpandoObject();
 
            //resultInfos.tbBillList.printInfo = _kBG.getPrintInfo(unity);// 获取打印信息,调用打印管理器的getPrintInfo方法,结果赋值给tbBillList.printInfo
 
            // 调用库位变更管理器的ChangeDepotSection方法,执行条码变更操作,返回拆分结果scanResult
            var scanResult = k.ChangeDepotSection(unity);
 
            //resultInfos.tbBillList.cfBarInfo = _kBG.getCfInfo(scanResult);// 获取拆分后条码的详细信息,调用打印管理器的getCfInfo方法,结果赋值给tbBillList.cfBarInfo
            // 构造并返回统一响应对象,status为0表示成功,message为"OK",data为resultInfos
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            // 捕获异常,调用统一错误处理方法ResponseError,返回错误响应
            return ResponseResult.ResponseError(ex);
        }
    }
}