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;
|
|
/// <summary>
|
/// 容器帮助类
|
/// </summary>
|
internal static class ContainerHelper
|
{
|
/// <summary>
|
/// enable 让托盘允许被出库计算到,同时增加量表数据
|
/// </summary>
|
/// <param name="cntr"></param>
|
/// <param name="loc"></param>
|
internal static void Enable(string cntr, string loc)
|
{
|
var db = new SqlHelper<object>().GetInstance();
|
|
var cntrInfo = db.Queryable<Container>().Where(a => a.S_CODE == cntr).First();
|
|
//获取仓库量表
|
//获取物理库区
|
//获取逻辑库区
|
if (cntrInfo != null)
|
{
|
var querySqlSugarClient = AdoSqlMethod<object>.QuerySqlSugarClient();
|
|
try
|
{
|
querySqlSugarClient.BeginTran();
|
|
//防止接口重复调用,量表重复增加
|
if (cntrInfo.C_ENABLE == 'N')
|
{
|
cntrInfo.C_ENABLE = 'Y';
|
AdoSqlMethod<Container>.UpdateFirstTran(querySqlSugarClient, cntrInfo,
|
p => new { p.C_ENABLE, p.T_MODIFY });
|
|
var cirList = db.Queryable<CntrItemDetail>().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();
|
}
|
}
|
}
|
|
/// <summary>
|
/// 根据容器号获取容器信息
|
/// </summary>
|
/// <param name="cntr"></param>
|
/// <param name="type"></param>
|
/// <returns></returns>
|
internal static Container GetCntr(string cntr, string type)
|
{
|
// 查询托盘是否存在
|
var container = AdoSqlMethod<Container>.QueryFirst(p => p.S_CODE == cntr);
|
|
// 判断容器是否存在
|
if (container == null)
|
{
|
var model = new Container { S_CODE = cntr, S_TYPE = type };
|
|
// 判断是否创建成功
|
if (AdoSqlMethod<Container>.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;
|
}
|
}
|