using System.Dynamic; // 引入动态类型支持
using Masuit.Tools.Win32.AntiVirus; // 引入防病毒工具库(但未在代码中使用)
using Microsoft.AspNetCore.Mvc; // 引入ASP.NET Core MVC功能
using NewPdaSqlServer.Dto.service; // 引入项目特定的DTO服务
using NewPdaSqlServer.entity; // 引入项目实体类
using NewPdaSqlServer.service.@base; // 引入基础服务
using NewPdaSqlServer.service.Warehouse; // 引入仓库服务
using NewPdaSqlServer.util; // 引入工具类
using static Microsoft.EntityFrameworkCore.DbLoggerCategory; // 引入EF日志类别(但未在代码中使用)
namespace NewPdaSqlServer.Controllers.Warehouse; // 控制器命名空间
///
/// 库位变更控制器,处理与库位变更相关的API请求
///
[ApiController] // 标记该类为API控制器,自动进行模型验证和错误处理
[Route("api/[controller]")] // 定义控制器路由模板,路由前缀为api/控制器名(Kwbg)
public class KwbgController : ControllerBase // 控制器类继承自ControllerBase,提供Web API功能
{
private readonly KwbgManager k = new(); // 创建库位变更管理器实例,用于处理业务逻辑
private readonly MesPrintMangeer _kBG = new(); // 创建打印管理器实例,用于处理打印相关业务
///
/// 获取条码信息和物料信息
///
/// 前端传递的WarehouseQuery对象,包含查询参数
/// 统一的响应结果,包含条码信息和物料信息
[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); // 调用统一错误处理方法,返回错误响应
}
}
///
/// 库位变更接口。
/// 接收前端传递的WarehouseQuery参数,完成条码变更及相关信息的查询和返回。
///
///
/// WarehouseQuery对象,包含条码、拆分数量、用户名等库位变更所需参数。
///
///
/// 返回ResponseResult统一响应对象,status为0表示成功,data包含变更后的条码及打印信息。
///
[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);
}
}
}