using System;
using HH.WCS.Mobox3.RiDong.dto;
using HH.WCS.Mobox3.RiDong.generalMethod;
using HH.WCS.Mobox3.RiDong.models;
using HH.WCS.Mobox3.RiDong.util;
namespace HH.WCS.Mobox3.RiDong.wms;
///
/// 容器帮助类
///
internal static class ContainerHelper
{
///
/// enable 让托盘允许被出库计算到,同时增加量表数据
///
///
///
internal static void Enable(string cntr, string loc)
{
var db = new SqlHelper().GetInstance();
var cntrInfo = db.Queryable().Where(a => a.S_CODE == cntr).First();
//获取仓库量表
//获取物理库区
//获取逻辑库区
if (cntrInfo != null)
{
var querySqlSugarClient = AdoSqlMethod.QuerySqlSugarClient();
try
{
querySqlSugarClient.BeginTran();
//防止接口重复调用,量表重复增加
if (cntrInfo.C_ENABLE == 'N')
{
cntrInfo.C_ENABLE = 'Y';
AdoSqlMethod.UpdateFirstTran(querySqlSugarClient, cntrInfo,
p => new { p.C_ENABLE, p.T_MODIFY });
var cirList = db.Queryable().Where(a => a.S_CNTR_CODE == cntr).ToList();
if (cirList.Count > 0)
{
var moBoxInputDto = new MoBoxInputDto();
moBoxInputDto.op_type = 5;
var moBoxInputDto2 = new MoBoxInputDto();
moBoxInputDto2.op_type = 6;
cirList.ForEach(a =>
{
var moBoxInputDetailDto = new MoBoxInputDetailDto();
var moBoxInputDetailDto2 = new MoBoxInputDetailDto();
moBoxInputDetailDto.item_code = a.S_ITEM_CODE;
moBoxInputDetailDto.item_name = a.S_ITEM_NAME;
moBoxInputDetailDto.qty = Convert.ToInt32(a.F_QTY);
moBoxInputDetailDto.wh_code = Settings.WHCode;
moBoxInputDetailDto.area_code = Settings.AreaCode;
moBoxInputDetailDto2.item_code = a.S_ITEM_CODE;
moBoxInputDetailDto2.item_name = a.S_ITEM_NAME;
moBoxInputDetailDto2.qty = Convert.ToInt32(a.F_QTY);
moBoxInputDetailDto2.area_code = Settings.AreaCode;
moBoxInputDetailDto2.wh_code = Settings.WHCode;
moBoxInputDto.item_info.Add(moBoxInputDetailDto);
moBoxInputDto2.item_info.Add(moBoxInputDetailDto2);
});
// 调用第三方接口
ThirdlyPortMethod.CallMoboxWMSAddChange("/api/wms/inventory/AddChange", moBoxInputDto);
ThirdlyPortMethod.CallMoboxWMSAddChange("/api/wms/inventory/AddChange", moBoxInputDto2);
}
}
querySqlSugarClient.CommitTran();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
querySqlSugarClient.RollbackTran();
}
}
}
///
/// 根据容器号获取容器信息
///
///
///
///
internal static Container GetCntr(string cntr, string type)
{
// 查询托盘是否存在
var container = AdoSqlMethod.QueryFirst(p => p.S_CODE == cntr);
// 判断容器是否存在
if (container == null)
{
var model = new Container { S_CODE = cntr, S_TYPE = type };
// 判断是否创建成功
if (AdoSqlMethod.AddFirst(model))
{
container = model;
LogHelper.Info($"根据托盘号:{cntr},查询容器表中数据,未查询到数据,新键容器数据为:【容器编号:{cntr},容器类型:{type}】,时间点:{DateTime.Now}",
"入库流程日志");
}
}
else
{
LogHelper.Info(
$"根据托盘号:{cntr},查询容器表中数据,查询到的数据为:【容器编码:{container.S_CODE},容器状态('Y'- 可用,'N'- 不可用):{container.C_ENABLE}," +
$"容器数量:{container.N_DETAIL_COUNT}】,容器的锁状态1(0 - 无锁,1 - 入库锁,2 - 出库锁,3 - 其他锁):{container.N_LOCK_STATE}," +
$"容器的锁状态2:{container.S_LOCK_STATE}】,时间点:{DateTime.Now}", "入库流程日志");
}
// 返回托盘(容器)信息
return container;
}
}