Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -96,6 +96,8 @@ namespace Tnb.ProductionMgr
|
||||
// 原材料仓内转移
|
||||
private static Timer? YCLInternalTransfertimer;
|
||||
|
||||
// 原材料仓内转移
|
||||
private static Timer? elevatorTimer;
|
||||
|
||||
public SemaphoreSlim s_taskCheckGet = new(1);
|
||||
public SemaphoreSlim s_taskScan = new(1);
|
||||
@@ -1907,10 +1909,12 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
{
|
||||
try
|
||||
{
|
||||
await _wareHouseService._s_GenTaskExecute.WaitAsync();
|
||||
List<WmsDistaskH> elevatorTasks = db_ElevatorTaskExceptionHandle.Queryable<WmsDistaskH>()
|
||||
.Where(r => r.startlocation_code.Contains("DT") && r.endlocation_code.Contains("DT") && r.act_start_date == null && r.act_end_date == null).ToList();
|
||||
.Where(r => r.startlocation_code.Contains("DT") && r.endlocation_code.Contains("DT") && r.act_start_date == null && r.act_end_date == null
|
||||
&& r.status != WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID && r.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).ToList();
|
||||
|
||||
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】检查到需要恢复的电梯任务{elevatorTasks.Count}条 {string.Join(',', elevatorTasks.Select(x => x.bill_code))}");
|
||||
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】检查到需要恢复/执行的电梯任务{elevatorTasks.Count}条 {string.Join(',', elevatorTasks.Select(x => x.bill_code))}");
|
||||
|
||||
|
||||
if (elevatorTasks?.Count > 0)
|
||||
@@ -1927,10 +1931,12 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
// 三、四号梯发货带两托货
|
||||
string[] doubleCarryRunElevators =
|
||||
{
|
||||
"Elevator3","Elevator4"
|
||||
};
|
||||
"Elevator3","Elevator4"
|
||||
};
|
||||
if (doubleCarryRunElevators.Contains(e.elevator_code) && wmsDistaskHs[0].end_floor == 1)
|
||||
{
|
||||
LoggerElevatorTask.Information($"【GenTaskExecute】判断为三四号梯任务");
|
||||
LoggerElevatorTask.Information($"【GenTaskExecute】现在有{group.Count()}托货");
|
||||
// 电梯内放置两托货呼叫电梯下
|
||||
if (group.Count() == 2)
|
||||
{
|
||||
@@ -1939,6 +1945,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
wmsDistaskHs[0].device_id = e.device_id;
|
||||
wmsDistaskHs[1].device_id = e.device_id;
|
||||
}
|
||||
LoggerElevatorTask.Information($"【GenTaskExecute】呼叫电梯");
|
||||
await _wareHouseService.ExecuteTargetFloorTask(wmsDistaskHs);
|
||||
}
|
||||
// 一托货
|
||||
@@ -1963,23 +1970,28 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
}
|
||||
else
|
||||
{
|
||||
LoggerElevatorTask.Information($"【GenTaskExecute】判断为非三四号梯任务");
|
||||
if (e != null)
|
||||
{
|
||||
wmsDistaskHs[0].device_id = e.device_id;
|
||||
}
|
||||
LoggerElevatorTask.Information($"【GenTaskExecute】呼叫电梯");
|
||||
await _wareHouseService.ExecuteTargetFloorTask(wmsDistaskHs);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LoggerFloor2RackDelivery.LogError($"【ElevatorTaskExceptionHandle】{ex.Message}");
|
||||
LoggerFloor2RackDelivery.LogError($"【ElevatorTaskExceptionHandle】{ex.StackTrace}");
|
||||
}
|
||||
|
||||
|
||||
finally
|
||||
{
|
||||
_wareHouseService._s_GenTaskExecute.Release();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2606,15 +2618,14 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
// 停用
|
||||
//PackOutstockServicetimer = new Timer(PackOutstockService, null, TimeSpan.Zero, TimeSpan.FromSeconds(60));
|
||||
|
||||
ElevatorTaskExceptionHandleThread = new Thread(ElevatorTaskExceptionHandle);
|
||||
ElevatorTaskExceptionHandleThread.Start();
|
||||
|
||||
Floor4DMJ2MJXtimer = new Timer(Floor4DMJ2MJX, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
|
||||
Floor4MJX2MJCtimer = new Timer(Floor4MJX2MJC, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
|
||||
Floor4DMC2CPKtimer = new Timer(Floor4DMC2CPK, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
|
||||
|
||||
F2KTPsupplementtimer = new Timer(F2KTPsupplement, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
|
||||
YCLInternalTransfertimer = new Timer(YCLInternalTransfer, null, TimeSpan.FromSeconds(15), TimeSpan.FromSeconds(185));
|
||||
|
||||
elevatorTimer = new Timer(ElevatorTaskExceptionHandle, null, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(20));
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
@@ -2647,6 +2658,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
ElevatorTaskExceptionHandleThread.Abort();
|
||||
F2KTPsupplementtimer?.Dispose();
|
||||
YCLInternalTransfertimer?.Dispose();
|
||||
elevatorTimer?.Dispose();
|
||||
}
|
||||
|
||||
#region 日志
|
||||
|
||||
@@ -128,6 +128,19 @@ public class ModuleConsts
|
||||
/// 模块标识-出入库流水记录 todo
|
||||
/// </summary>
|
||||
public const string MODULE_WMSOUTINSTOCKDETAIL_ID = "MODULE_WMSOUTINSTOCKDETAIL_ID";
|
||||
/// <summary>
|
||||
/// 模块标识-调拨出库单(成品) todo
|
||||
/// </summary>
|
||||
public const string MODULE_WmsTransferInstock_ID = "MODULE_WmsTransferInstock_ID";
|
||||
/// <summary>
|
||||
/// 模块标识-调拨出库单(原材料) todo
|
||||
/// </summary>
|
||||
public const string MODULE_WmsRawmatTransferoutstock_ID = "MODULE_WmsRawmatTransferoutstock_ID";
|
||||
/// <summary>
|
||||
/// 模块标识-物料签收记录 todo
|
||||
/// </summary>
|
||||
public const string MODULE_WmsMaterialSignH_ID = "MODULE_WmsMaterialSignH_ID";
|
||||
|
||||
/// <summary>
|
||||
/// 模块标识-人工空载具入库 todo
|
||||
/// </summary>
|
||||
|
||||
@@ -23,6 +23,11 @@ namespace Tnb.WarehouseMgr.Entities.Dto.ErpInputs
|
||||
/// </summary>
|
||||
public string? biller { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库仓库
|
||||
/// </summary>
|
||||
public string? warehouse_outstock { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库组织编号
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 物料签收记录子表
|
||||
/// </summary>
|
||||
[SugarTable("wms_material_sign_d")]
|
||||
public partial class WmsMaterialSignD : BaseEntity<string>
|
||||
{
|
||||
public WmsMaterialSignD()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 主表id
|
||||
/// </summary>
|
||||
public string? bill_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建用户
|
||||
/// </summary>
|
||||
public string? create_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime? create_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户
|
||||
/// </summary>
|
||||
public string? modify_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
public DateTime? modify_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 条码
|
||||
/// </summary>
|
||||
public string? barcode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料id
|
||||
/// </summary>
|
||||
public string? material_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料编码
|
||||
/// </summary>
|
||||
public string? material_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料名称
|
||||
/// </summary>
|
||||
public string? material_name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 规格型号
|
||||
/// </summary>
|
||||
public string? material_specification { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 批次
|
||||
/// </summary>
|
||||
public string? code_batch { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 条码数量
|
||||
/// </summary>
|
||||
public string? qty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 签收数量
|
||||
/// </summary>
|
||||
public string? sign_qty { get; set; }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// wms物料签收记录
|
||||
/// </summary>
|
||||
[SugarTable("wms_material_sign_h")]
|
||||
public partial class WmsMaterialSignH : BaseEntity<string>
|
||||
{
|
||||
public WmsMaterialSignH()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 创建用户
|
||||
/// </summary>
|
||||
public string? create_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime? create_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户
|
||||
/// </summary>
|
||||
public string? modify_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
public DateTime? modify_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 载具id
|
||||
/// </summary>
|
||||
public string? carry_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 载具编码
|
||||
/// </summary>
|
||||
public string? carry_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 签收业务
|
||||
/// </summary>
|
||||
public string? business { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 回库预任务
|
||||
/// </summary>
|
||||
public string? pretask_code { get; set; }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 原材料调拨出库表子表
|
||||
/// </summary>
|
||||
[SugarTable("wms_rawmat_transferoutstock_d")]
|
||||
public partial class WmsRawmatTransferoutstockD : BaseEntity<string>
|
||||
{
|
||||
public WmsRawmatTransferoutstockD()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 主表id
|
||||
/// </summary>
|
||||
public string? bill_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料id
|
||||
/// </summary>
|
||||
public string? matcode_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料编号
|
||||
/// </summary>
|
||||
public string? matcode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料描述
|
||||
/// </summary>
|
||||
public string? matspecification { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单位
|
||||
/// </summary>
|
||||
public string? unit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库数量
|
||||
/// </summary>
|
||||
public decimal? qty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 实出数量
|
||||
/// </summary>
|
||||
public decimal? actual_qty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 批次
|
||||
/// </summary>
|
||||
public string? code_batch { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string? remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 扩展字段
|
||||
/// </summary>
|
||||
public string? extras { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建用户
|
||||
/// </summary>
|
||||
public string? create_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime? create_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户
|
||||
/// </summary>
|
||||
public string? modify_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
public DateTime? modify_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库仓库
|
||||
/// </summary>
|
||||
public string? warehouse_code { get; set; }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 原材料调拨出库
|
||||
/// </summary>
|
||||
[SugarTable("wms_rawmat_transferoutstock_h")]
|
||||
public partial class WmsRawmatTransferoutstockH : BaseEntity<string>
|
||||
{
|
||||
public WmsRawmatTransferoutstockH()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 原材料调拨出库单号
|
||||
/// </summary>
|
||||
public string? bill_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 联系人
|
||||
/// </summary>
|
||||
public string? contact_person { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 电话
|
||||
/// </summary>
|
||||
public string? tel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string? remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 扩展字段
|
||||
/// </summary>
|
||||
public string? extras { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 时间戳
|
||||
/// </summary>
|
||||
public string? time_stamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单据类型
|
||||
/// </summary>
|
||||
public string? document_type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建用户
|
||||
/// </summary>
|
||||
public string? create_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime? create_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户
|
||||
/// </summary>
|
||||
public string? modify_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
public DateTime? modify_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属组织
|
||||
/// </summary>
|
||||
public string? org_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程任务Id
|
||||
/// </summary>
|
||||
public string? f_flowtaskid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程引擎Id
|
||||
/// </summary>
|
||||
public string? f_flowid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 部门编码
|
||||
/// </summary>
|
||||
public string? dept_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 业务员编码
|
||||
/// </summary>
|
||||
public string? biller { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 下发状态
|
||||
/// </summary>
|
||||
public string? issuance_status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库类型
|
||||
/// </summary>
|
||||
public string? outstock_type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 交易类型BIP
|
||||
/// </summary>
|
||||
public string? transaction_type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库仓库
|
||||
/// </summary>
|
||||
public string? warehouse_code { get; set; }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 成品调拨出库子表
|
||||
/// </summary>
|
||||
[SugarTable("wms_transfer_outstock_d")]
|
||||
public partial class WmsTransferOutstockD : BaseEntity<string>
|
||||
{
|
||||
public WmsTransferOutstockD()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 所属组织
|
||||
/// </summary>
|
||||
public string? org_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库单ID
|
||||
/// </summary>
|
||||
public string? bill_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 执行状态
|
||||
/// </summary>
|
||||
public string? status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物品ID
|
||||
/// </summary>
|
||||
public string? material_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物品代码
|
||||
/// </summary>
|
||||
public string? material_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 主单位
|
||||
/// </summary>
|
||||
public string? unit_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单位代码
|
||||
/// </summary>
|
||||
public string? unit_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库需求数量
|
||||
/// </summary>
|
||||
public decimal? pr_qty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 已下发数量
|
||||
/// </summary>
|
||||
public decimal? xf_qty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 实际出库数量
|
||||
/// </summary>
|
||||
public decimal? qty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程任务Id
|
||||
/// </summary>
|
||||
public string? f_flowtaskid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程引擎Id
|
||||
/// </summary>
|
||||
public string? f_flowid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 规格
|
||||
/// </summary>
|
||||
public string? material_specification { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建用户
|
||||
/// </summary>
|
||||
public string? create_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime? create_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户
|
||||
/// </summary>
|
||||
public string? modify_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
public DateTime? modify_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 批号
|
||||
/// </summary>
|
||||
public string? pi_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料描述
|
||||
/// </summary>
|
||||
public string? material_desc { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 灭菌批号
|
||||
/// </summary>
|
||||
public string? miepi_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 辅单位
|
||||
/// </summary>
|
||||
public string? fuunit_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 型号
|
||||
/// </summary>
|
||||
public string? model { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 辅数量
|
||||
/// </summary>
|
||||
public string? fu_qty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库仓库
|
||||
/// </summary>
|
||||
public string? warehouse_code { get; set; }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 成品调拨出库主表
|
||||
/// </summary>
|
||||
[SugarTable("wms_transfer_outstock_h")]
|
||||
public partial class WmsTransferOutstockH : BaseEntity<string>
|
||||
{
|
||||
public WmsTransferOutstockH()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 创建用户
|
||||
/// </summary>
|
||||
public string? create_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime? create_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户
|
||||
/// </summary>
|
||||
public string? modify_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
public DateTime? modify_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属组织
|
||||
/// </summary>
|
||||
public string? org_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程任务Id
|
||||
/// </summary>
|
||||
public string? f_flowtaskid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程引擎Id
|
||||
/// </summary>
|
||||
public string? f_flowid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核员
|
||||
/// </summary>
|
||||
public string? auditor_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核状态
|
||||
/// </summary>
|
||||
public int? audit_status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库单号
|
||||
/// </summary>
|
||||
public string? bill_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库单创建日期
|
||||
/// </summary>
|
||||
public DateTime? bill_date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单据状态
|
||||
/// </summary>
|
||||
public string? status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string? remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库类型
|
||||
/// </summary>
|
||||
public string? outstock_type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 下发状态
|
||||
/// </summary>
|
||||
public string? issuance_status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 交易类型BIP
|
||||
/// </summary>
|
||||
public string? transaction_type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库仓库
|
||||
/// </summary>
|
||||
public string? warehouse_code { get; set; }
|
||||
|
||||
}
|
||||
@@ -32,6 +32,8 @@ namespace Tnb.WarehouseMgr.Interfaces
|
||||
/// </summary>
|
||||
SemaphoreSlim s_taskExecuteSemaphore_F2ZCCOutstock { get; }
|
||||
|
||||
SemaphoreSlim _s_GenTaskExecute { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库策略
|
||||
/// </summary>
|
||||
|
||||
@@ -66,6 +66,7 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
protected static Dictionary<string, int> _s_eleUseStatusDic;
|
||||
|
||||
public static SemaphoreSlim s_GenTaskExecute = new(1);
|
||||
protected IEventPublisher? EventPublisher { set; get; }
|
||||
|
||||
protected static string _LoggerFileName = "";
|
||||
|
||||
@@ -394,8 +394,15 @@ namespace Tnb.WarehouseMgr
|
||||
_ = await _elevatorControlService.SendOpenCloseCmd(devName, 3); //发送电梯前门开门指令
|
||||
}
|
||||
|
||||
// 3 4号梯只要电梯是当前楼层开门状态就能进
|
||||
bool canEnter = false;
|
||||
if (devName == "Elevator3" || devName == "Elevator4")
|
||||
{
|
||||
canEnter = true;
|
||||
}
|
||||
|
||||
if (sysStatus == (int)EnumSysStatus.正常状态 && runStatus == (int)EnumRunStatus.停梯
|
||||
&& doorStatus == (int)EnumDoorStatus.开门到位保持 && s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.空闲)
|
||||
&& doorStatus == (int)EnumDoorStatus.开门到位保持 && (s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.空闲 || canEnter))
|
||||
{
|
||||
await _db.Updateable<WmsElevatorH>().SetColumns(r => new WmsElevatorH
|
||||
{
|
||||
@@ -732,15 +739,39 @@ namespace Tnb.WarehouseMgr
|
||||
Logger.Information($"【TaskCallback】 根据任务单查找电梯结果 {JsonConvert.SerializeObject(elevator)}");
|
||||
if (!elevator?.device_id.IsNullOrEmpty() ?? false)
|
||||
{
|
||||
await _db.Updateable<WmsElevatorH>().SetColumns(r => new WmsElevatorH
|
||||
{
|
||||
is_use = (int)EnumElevatorUseStatus.空闲,
|
||||
use_tasks = ""
|
||||
}).Where(r => r.elevator_id == elevator.device_id).ExecuteCommandAsync();
|
||||
s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.空闲;
|
||||
// 根据disTask StartLocationId 起始库位关联电梯获取设备ID location_code.Continas("")
|
||||
var devName = s_elevatorMap[elevator.device_id]?.ToString();
|
||||
Logger.Information($"【TaskCallback】 {devName.Match(@"\d+")}#梯,设备名称:{devName},开始进入关门流程 {devName} 变更为空闲 {s_eleUseStatusDic.GetHashCode()} {s_eleUseStatusDic[elevator.device_id]}");
|
||||
|
||||
// 3 4号梯需要两托货都取出才能变更为空闲
|
||||
if (devName == "Elevator3" || devName == "Elevator4")
|
||||
{
|
||||
string number = devName.Replace("Elevator", "");
|
||||
List<WmsDistaskH> elevatorTasks = _db.Queryable<WmsDistaskH>()
|
||||
.Where(r => r.startlocation_code.Contains($"DT-1-{number}") && r.endlocation_code.Contains($"RC") && r.act_start_date == null && r.act_end_date == null
|
||||
&& r.status != WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID && r.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).ToList();
|
||||
Logger.Information($"【TaskCallback】{devName.Match(@"\d+")}#梯 仍有未取货任务{elevatorTasks}条 {string.Join(',', elevatorTasks.Select(r => r.bill_code))}");
|
||||
if (elevatorTasks.Count == 0)
|
||||
{
|
||||
await _db.Updateable<WmsElevatorH>().SetColumns(r => new WmsElevatorH
|
||||
{
|
||||
is_use = (int)EnumElevatorUseStatus.空闲,
|
||||
use_tasks = ""
|
||||
}).Where(r => r.elevator_id == elevator.device_id).ExecuteCommandAsync();
|
||||
s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.空闲;
|
||||
Logger.Information($"【TaskCallback】 {devName.Match(@"\d+")}#梯,设备名称:{devName},开始进入关门流程 {devName} 变更为空闲 {s_eleUseStatusDic.GetHashCode()} {s_eleUseStatusDic[elevator.device_id]}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
await _db.Updateable<WmsElevatorH>().SetColumns(r => new WmsElevatorH
|
||||
{
|
||||
is_use = (int)EnumElevatorUseStatus.空闲,
|
||||
use_tasks = ""
|
||||
}).Where(r => r.elevator_id == elevator.device_id).ExecuteCommandAsync();
|
||||
s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.空闲;
|
||||
Logger.Information($"【TaskCallback】 {devName.Match(@"\d+")}#梯,设备名称:{devName},开始进入关门流程 {devName} 变更为空闲 {s_eleUseStatusDic.GetHashCode()} {s_eleUseStatusDic[elevator.device_id]}");
|
||||
}
|
||||
|
||||
int doorStatus = await _elevatorControlService.GetTagAsync(devName, ElevatorConsts.DoorStatus);
|
||||
Logger.Information($"【TaskCallback】 设备:{devName},门状态:{doorStatus.ToEnum<EnumDoorStatus>().ToString()}");
|
||||
if (doorStatus.ToEnum<EnumDoorStatus>() != EnumDoorStatus.关门到位保持
|
||||
@@ -829,6 +860,25 @@ namespace Tnb.WarehouseMgr
|
||||
use_tasks = ""
|
||||
})
|
||||
.Where(it => it.elevator_id == wmsElevatorH.elevator_id).ExecuteCommandAsync();
|
||||
|
||||
if (input.elevator_code == "Elevator3" || input.elevator_code == "Elevator4")
|
||||
{
|
||||
// 成品出库解锁电梯
|
||||
string number = input.elevator_code.Replace("Elevator", "");
|
||||
List<WmsDistaskH> elevatorTasks = _db.Queryable<WmsDistaskH>()
|
||||
.Where(r => r.startlocation_code.Contains($"DT-3-{number}") && r.endlocation_code.Contains($"DT-1-{number}") && r.act_start_date == null && r.act_end_date == null
|
||||
&& r.status != WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID && r.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).ToList();
|
||||
|
||||
foreach (var item in elevatorTasks)
|
||||
{
|
||||
item.status = WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID;
|
||||
}
|
||||
int row = await _db.Updateable(elevatorTasks).ExecuteCommandAsync();
|
||||
Logger.Information($"【WmsElevatorUnlock】操作电梯{input.elevator_code}重置电梯任务{row}条 {string.Join(',', elevatorTasks.Select(r => r.bill_code))}");
|
||||
}
|
||||
|
||||
|
||||
|
||||
s_eleUseStatusDic[wmsElevatorH.elevator_id] = (int)EnumElevatorUseStatus.空闲;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Aop.Api.Domain;
|
||||
using JNPF.Common.Enums;
|
||||
using JNPF.DependencyInjection;
|
||||
@@ -979,6 +980,13 @@ namespace Tnb.WarehouseMgr
|
||||
throw new AppFriendlyException($@"表体存在物料和批号重复的明细!", 500);
|
||||
}
|
||||
|
||||
BasWarehouse warehouse_outstock = await db.Queryable<BasWarehouse>().Where(r => r.whcode == input.warehouse_outstock).FirstAsync();
|
||||
if (warehouse_outstock == null)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($"【MaterialTransfer】无法查询到出库仓库{input.warehouse_outstock}的档案记录!");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, $"无法查询到出库仓库{input.warehouse_outstock}的档案记录!");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
await db.Ado.BeginTranAsync();
|
||||
@@ -1036,6 +1044,27 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
await db.Insertable(wmsTransferOrderDs).ExecuteCommandAsync();
|
||||
|
||||
if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_YCL_ID)
|
||||
{
|
||||
WmsRawmatTransferoutstockH wmsRawmatTransferoutstockH = new WmsRawmatTransferoutstockH();
|
||||
|
||||
|
||||
List<WmsRawmatTransferoutstockD> wmsRawmatTransferoutstockD = new List <WmsRawmatTransferoutstockD>();
|
||||
|
||||
|
||||
await db.Insertable(wmsRawmatTransferoutstockH).ExecuteCommandAsync();
|
||||
await db.Insertable(wmsRawmatTransferoutstockD).ExecuteCommandAsync();
|
||||
}
|
||||
else if(warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_CP_ID)
|
||||
{
|
||||
WmsTransferInstockH wmsTransferInstockH = new WmsTransferInstockH();
|
||||
|
||||
List<WmsTransferInstockD> wmsTransferInstockD = new List<WmsTransferInstockD>();
|
||||
|
||||
await db.Insertable(wmsTransferInstockH).ExecuteCommandAsync();
|
||||
await db.Insertable(wmsTransferInstockD).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
await db.Ado.CommitTranAsync();
|
||||
|
||||
LoggerErp2Mes.LogInformation($"【TransferOrder】成功生成单据:{Code}");
|
||||
|
||||
@@ -93,7 +93,11 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
public Func<string, int, Task> AddUnExecuteTask { get; set; }
|
||||
|
||||
|
||||
public SemaphoreSlim _s_GenTaskExecute
|
||||
{
|
||||
get { return s_GenTaskExecute; }
|
||||
}
|
||||
|
||||
public SemaphoreSlim s_taskExecuteSemaphore_YCLInstock
|
||||
{
|
||||
get { return _s_taskExecuteSemaphore_YCLInstock; }
|
||||
@@ -1615,49 +1619,55 @@ namespace Tnb.WarehouseMgr
|
||||
var e = await FindElevatorFromPars(q);
|
||||
Logger.Information($"【GenTaskExecute】执行电梯任务时 根据任务单号获取电梯结果 {JsonConvert.SerializeObject(e)}");
|
||||
|
||||
// 三、四号梯发货带两托货
|
||||
// 三、四号梯发货带两托货进定时任务
|
||||
string[] doubleCarryRunElevators = new string[2]
|
||||
{
|
||||
"Elevator3","Elevator4"
|
||||
};
|
||||
if (doubleCarryRunElevators.Contains(e.elevator_code) && wmsDistaskHs[0].end_floor == 1)
|
||||
{
|
||||
// 电梯内放置两托货呼叫电梯下
|
||||
if (group.Count() == 2)
|
||||
{
|
||||
if (e != null)
|
||||
{
|
||||
wmsDistaskHs[0].device_id = e.device_id;
|
||||
wmsDistaskHs[1].device_id = e.device_id;
|
||||
}
|
||||
_ = ExecuteTargetFloorTask(wmsDistaskHs);
|
||||
}
|
||||
// 一托货
|
||||
else if (group.Count() == 1)
|
||||
{
|
||||
// 如果当前电梯没有执行中的任务 则呼叫电梯下
|
||||
//Logger.Information($"【GenTaskExecute】判断为三四号梯任务");
|
||||
//Logger.Information($"【GenTaskExecute】现在有{group.Count()}托货");
|
||||
//// 电梯内放置两托货呼叫电梯下
|
||||
//if (group.Count() == 2)
|
||||
//{
|
||||
// if (e != null)
|
||||
// {
|
||||
// wmsDistaskHs[0].device_id = e.device_id;
|
||||
// wmsDistaskHs[1].device_id = e.device_id;
|
||||
// }
|
||||
// Logger.Information($"【GenTaskExecute】呼叫电梯");
|
||||
// _ = ExecuteTargetFloorTask(wmsDistaskHs);
|
||||
//}
|
||||
//// 一托货
|
||||
//else if (group.Count() == 1)
|
||||
//{
|
||||
// // 如果当前电梯没有执行中的任务 则呼叫电梯下
|
||||
|
||||
if (_db.Queryable<WmsDistaskH>().Where(r => r.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID
|
||||
&& r.status != WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID && r.endlocation_id == wmsDistaskHs[0].startlocation_id).Count() == 0)
|
||||
{
|
||||
if (e != null)
|
||||
{
|
||||
wmsDistaskHs[0].device_id = e.device_id;
|
||||
}
|
||||
_ = ExecuteTargetFloorTask(wmsDistaskHs);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.LogError($"电梯 {e.elevator_code} 待执行的电梯任务数异常 目前是{group.Count()} 超过了两托");
|
||||
}
|
||||
// if (_db.Queryable<WmsDistaskH>().Where(r => r.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID
|
||||
// && r.status != WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID && r.endlocation_id == wmsDistaskHs[0].startlocation_id).Count() == 0)
|
||||
// {
|
||||
// Logger.Information($"【GenTaskExecute】判断为三四号梯任务 没有执行中的任务 呼叫电梯");
|
||||
// if (e != null)
|
||||
// {
|
||||
// wmsDistaskHs[0].device_id = e.device_id;
|
||||
// }
|
||||
// _ = ExecuteTargetFloorTask(wmsDistaskHs);
|
||||
// }
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// Logger.LogError($"电梯 {e.elevator_code} 待执行的电梯任务数异常 目前是{group.Count()} 超过了两托");
|
||||
//}
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Information($"【GenTaskExecute】判断为非三四号梯任务");
|
||||
if (e != null)
|
||||
{
|
||||
wmsDistaskHs[0].device_id = e.device_id;
|
||||
}
|
||||
Logger.Information($"【GenTaskExecute】呼叫电梯");
|
||||
_ = ExecuteTargetFloorTask(wmsDistaskHs);
|
||||
}
|
||||
}
|
||||
@@ -2511,14 +2521,16 @@ namespace Tnb.WarehouseMgr
|
||||
});
|
||||
}
|
||||
|
||||
WmsCarryCode carryCode = new()
|
||||
List<WmsCarryCode> carrycodes = _db.Queryable<WmsCarryCode>().Where(r => r.carry_id == carry.id).ToList();
|
||||
carrycodes.ForEach(r =>
|
||||
{
|
||||
warehouse_id = locWhIdMap.ContainsKey(endLocId) ? locWhIdMap[endLocId].ToString() : "",
|
||||
location_id = multiList[i].endlocation_id,
|
||||
location_code = multiList[i].endlocation_code
|
||||
};
|
||||
r.warehouse_id = locWhIdMap.ContainsKey(endLocId) ? locWhIdMap[endLocId].ToString() : "";
|
||||
r.location_id = multiList[i].endlocation_id;
|
||||
r.location_code = multiList[i].endlocation_code;
|
||||
carryCodeIts.Add(r);
|
||||
});
|
||||
|
||||
carryIts.Add(carry);
|
||||
carryCodeIts.Add(carryCode);
|
||||
|
||||
BasLocation loc = new()
|
||||
{
|
||||
@@ -2544,7 +2556,7 @@ namespace Tnb.WarehouseMgr
|
||||
_ = await _db.Updateable(carryIts).UpdateColumns(it => new { it.is_lock, it.location_id, it.location_code, it.instock_time }).ExecuteCommandAsync();
|
||||
Logger.Information($"【TaskComplate】 更新载具 {JsonConvert.SerializeObject(carryIts)}");
|
||||
//更新条码的库位和仓库信息
|
||||
_ = await _db.Updateable(carryCodeIts).UpdateColumns(it => new { it.warehouse_id, it.location_id, it.location_code }).Where(it => multiList.Select(x => x.carry_id).Contains(it.carry_id)).ExecuteCommandAsync();
|
||||
_ = await _db.Updateable(carryCodeIts).UpdateColumns(it => new { it.warehouse_id, it.location_id, it.location_code }).ExecuteCommandAsync();
|
||||
//更新库位信息,使用状态为 使用,锁定状态为未锁定
|
||||
_ = await _db.Updateable(locIts).UpdateColumns(it => new { it.is_use, it.is_lock }).ExecuteCommandAsync();
|
||||
Logger.Information($"【TaskComplate】 更新库位 {JsonConvert.SerializeObject(locIts)}");
|
||||
|
||||
57
WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs
Normal file
57
WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Aop.Api.Domain;
|
||||
using JNPF.Common.Core.Manager;
|
||||
using JNPF.Common.Dtos.VisualDev;
|
||||
using JNPF.Common.Enums;
|
||||
using JNPF.FriendlyException;
|
||||
using JNPF.Systems.Interfaces.System;
|
||||
using JNPF.VisualDev;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using Mapster;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using SqlSugar;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.WarehouseMgr.Entities;
|
||||
using Tnb.WarehouseMgr.Entities.Consts;
|
||||
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
|
||||
using Tnb.WarehouseMgr.Entities.Entity;
|
||||
using Tnb.WarehouseMgr.Interfaces;
|
||||
|
||||
namespace Tnb.WarehouseMgr
|
||||
{
|
||||
/// <summary>
|
||||
/// 调拨出库单(原材料)
|
||||
/// </summary>
|
||||
[OverideVisualDev(ModuleConsts.MODULE_WmsMaterialSignH_ID)]
|
||||
public class WmsMaterialSignHService : BaseWareHouseService
|
||||
{
|
||||
private readonly ISqlSugarClient _db;
|
||||
private readonly IUserManager _userManager;
|
||||
private readonly IBillRullService _billRullService;
|
||||
private readonly IRunService _runService;
|
||||
private readonly IVisualDevService _visualDevService;
|
||||
private readonly IWmsPDAScanInStockService _wmsPDAScanInStock;
|
||||
public WmsMaterialSignHService(
|
||||
ISqlSugarRepository<WmsCarryH> repository,
|
||||
IUserManager userManager,
|
||||
IBillRullService billRullService,
|
||||
IRunService runService,
|
||||
IVisualDevService visualDevService,
|
||||
IWmsPDAScanInStockService wmsPDAScanInStock)
|
||||
{
|
||||
_db = repository.AsSugarClient();
|
||||
_userManager = userManager;
|
||||
_billRullService = billRullService;
|
||||
_runService = runService;
|
||||
_visualDevService = visualDevService;
|
||||
_wmsPDAScanInStock = wmsPDAScanInStock;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Aop.Api.Domain;
|
||||
using JNPF.Common.Core.Manager;
|
||||
using JNPF.Common.Dtos.VisualDev;
|
||||
using JNPF.Common.Enums;
|
||||
using JNPF.FriendlyException;
|
||||
using JNPF.Systems.Interfaces.System;
|
||||
using JNPF.VisualDev;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using Mapster;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using SqlSugar;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.WarehouseMgr.Entities;
|
||||
using Tnb.WarehouseMgr.Entities.Consts;
|
||||
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
|
||||
using Tnb.WarehouseMgr.Entities.Entity;
|
||||
using Tnb.WarehouseMgr.Interfaces;
|
||||
|
||||
namespace Tnb.WarehouseMgr
|
||||
{
|
||||
/// <summary>
|
||||
/// 调拨出库单(原材料)
|
||||
/// </summary>
|
||||
[OverideVisualDev(ModuleConsts.MODULE_WmsRawmatTransferoutstock_ID)]
|
||||
public class WmsRawmatTransferoutstockService : BaseWareHouseService
|
||||
{
|
||||
private readonly ISqlSugarClient _db;
|
||||
private readonly IUserManager _userManager;
|
||||
private readonly IBillRullService _billRullService;
|
||||
private readonly IRunService _runService;
|
||||
private readonly IVisualDevService _visualDevService;
|
||||
private readonly IWmsPDAScanInStockService _wmsPDAScanInStock;
|
||||
public WmsRawmatTransferoutstockService(
|
||||
ISqlSugarRepository<WmsCarryH> repository,
|
||||
IUserManager userManager,
|
||||
IBillRullService billRullService,
|
||||
IRunService runService,
|
||||
IVisualDevService visualDevService,
|
||||
IWmsPDAScanInStockService wmsPDAScanInStock)
|
||||
{
|
||||
_db = repository.AsSugarClient();
|
||||
_userManager = userManager;
|
||||
_billRullService = billRullService;
|
||||
_runService = runService;
|
||||
_visualDevService = visualDevService;
|
||||
_wmsPDAScanInStock = wmsPDAScanInStock;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 人工扫码入库
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="ArgumentNullException"></exception>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost]
|
||||
public async Task ArtificialInstock(ArtificialInstockInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (input == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(input));
|
||||
}
|
||||
|
||||
await _db.Ado.BeginTranAsync();
|
||||
|
||||
BasLocation startlocationn = await _db.Queryable<BasLocation>().Where(r => r.location_code == input.startlocation_code).FirstAsync();
|
||||
if (startlocationn == null)
|
||||
{
|
||||
throw new AppFriendlyException($"【ArtificialInstock】库位{input.startlocation_code}不存在", 500);
|
||||
}
|
||||
if (startlocationn.is_lock == 1)
|
||||
{
|
||||
throw new AppFriendlyException($"【ArtificialInstock】库位{input.startlocation_code}已锁定", 500);
|
||||
}
|
||||
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.carry_code == input.carry_code).FirstAsync();
|
||||
if (wmsCarryH == null)
|
||||
{
|
||||
throw new AppFriendlyException($"【ArtificialInstock】载具{input.carry_code}不存在", 500);
|
||||
}
|
||||
if (wmsCarryH.is_lock == 1)
|
||||
{
|
||||
throw new AppFriendlyException($"【ArtificialInstock】载具{input.carry_code}已锁定", 500);
|
||||
}
|
||||
if (wmsCarryH.carry_status != "1")
|
||||
{
|
||||
throw new AppFriendlyException($"【ArtificialInstock】载具{input.carry_code}未绑定物料", 500);
|
||||
}
|
||||
|
||||
BasLocation carrryLoc = await _db.Queryable<BasLocation>().Where(r => r.id == wmsCarryH.location_id).FirstAsync();
|
||||
if (carrryLoc != null && carrryLoc.is_type == "0")
|
||||
{
|
||||
throw new Exception($"托盘{wmsCarryH.carry_code}在存储库位中,不能绑定!");
|
||||
}
|
||||
|
||||
switch (input.warehouse_id)
|
||||
{
|
||||
case WmsWareHouseConst.WAREHOUSE_YCL_ID:
|
||||
{
|
||||
var WmsCarryCode = _db.Queryable<WmsCarryCode>().Where(it => it.carry_id == wmsCarryH.id).OrderByDescending(it => it.id).First();
|
||||
|
||||
if (WmsCarryCode != null)
|
||||
{
|
||||
VisualDevModelDataCrInput input2 = new VisualDevModelDataCrInput();
|
||||
input2.data = new Dictionary<string, object>();
|
||||
input2.data.Add("barcode", input.carry_code);
|
||||
input2.data.Add("codeqty", WmsCarryCode.codeqty);//条码数量
|
||||
input2.data.Add("material_code", WmsCarryCode.material_code);
|
||||
input2.data.Add("extras", input.startlocation_code);//location_code
|
||||
input2.data.Add("warehouse_id", "1");//TEST
|
||||
input2.data.Add("bill_code", "");//采购收货单号
|
||||
input2.data.Add("code_batch", WmsCarryCode.code_batch!);//批次
|
||||
input2.data.Add("material_specification", WmsCarryCode.material_specification!);//规格型号
|
||||
input2.data.Add("container_no", WmsCarryCode.container_no!);//箱号
|
||||
input2.data.Add("material_id", WmsCarryCode.material_id);
|
||||
input2.data.Add("物料条码", WmsCarryCode.barcode);
|
||||
input2.data.Add("id", null);
|
||||
_wmsPDAScanInStock.ScanInStockByRedis(input2, _db).Wait();
|
||||
|
||||
WmsArtificialInstock wmsArtificialInstock = new WmsArtificialInstock();
|
||||
wmsArtificialInstock.carry_id = wmsCarryH.id;
|
||||
wmsArtificialInstock.carry_code = wmsCarryH.carry_code;
|
||||
wmsArtificialInstock.org_id = input.org;
|
||||
wmsArtificialInstock.create_id = input.create_id;
|
||||
wmsArtificialInstock.create_time = DateTime.Now;
|
||||
wmsArtificialInstock.location_id = startlocationn.id;
|
||||
wmsArtificialInstock.location_code = startlocationn.location_code;
|
||||
wmsArtificialInstock.warehouse_id = input.warehouse_id;
|
||||
await _db.Insertable(wmsArtificialInstock).ExecuteCommandAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new AppFriendlyException($"【ArtificialInstock】载具 {input.carry_code} 未绑定物料条码!", 500);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
await _db.Ado.CommitTranAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogError($"【ArtificialInstock】 {ex.Message}");
|
||||
Logger.LogError($"【ArtificialInstock】 {ex.StackTrace}");
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
throw new AppFriendlyException($"【ArtificialInstock】人工扫码入库失败 {ex.Message}", 500);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
159
WarehouseMgr/Tnb.WarehouseMgr/WmsTransferInstockService.cs
Normal file
159
WarehouseMgr/Tnb.WarehouseMgr/WmsTransferInstockService.cs
Normal file
@@ -0,0 +1,159 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Aop.Api.Domain;
|
||||
using JNPF.Common.Core.Manager;
|
||||
using JNPF.Common.Dtos.VisualDev;
|
||||
using JNPF.Common.Enums;
|
||||
using JNPF.FriendlyException;
|
||||
using JNPF.Systems.Interfaces.System;
|
||||
using JNPF.VisualDev;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using Mapster;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using SqlSugar;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.WarehouseMgr.Entities;
|
||||
using Tnb.WarehouseMgr.Entities.Consts;
|
||||
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
|
||||
using Tnb.WarehouseMgr.Entities.Entity;
|
||||
using Tnb.WarehouseMgr.Interfaces;
|
||||
|
||||
namespace Tnb.WarehouseMgr
|
||||
{
|
||||
/// <summary>
|
||||
/// 调拨出库单(成品)
|
||||
/// </summary>
|
||||
[OverideVisualDev(ModuleConsts.MODULE_WmsTransferInstock_ID)]
|
||||
public class WmsTransferInstockService : BaseWareHouseService
|
||||
{
|
||||
private readonly ISqlSugarClient _db;
|
||||
private readonly IUserManager _userManager;
|
||||
private readonly IBillRullService _billRullService;
|
||||
private readonly IRunService _runService;
|
||||
private readonly IVisualDevService _visualDevService;
|
||||
private readonly IWmsPDAScanInStockService _wmsPDAScanInStock;
|
||||
public WmsTransferInstockService(
|
||||
ISqlSugarRepository<WmsCarryH> repository,
|
||||
IUserManager userManager,
|
||||
IBillRullService billRullService,
|
||||
IRunService runService,
|
||||
IVisualDevService visualDevService,
|
||||
IWmsPDAScanInStockService wmsPDAScanInStock)
|
||||
{
|
||||
_db = repository.AsSugarClient();
|
||||
_userManager = userManager;
|
||||
_billRullService = billRullService;
|
||||
_runService = runService;
|
||||
_visualDevService = visualDevService;
|
||||
_wmsPDAScanInStock = wmsPDAScanInStock;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 人工扫码入库
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="ArgumentNullException"></exception>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost]
|
||||
public async Task ArtificialInstock(ArtificialInstockInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (input == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(input));
|
||||
}
|
||||
|
||||
await _db.Ado.BeginTranAsync();
|
||||
|
||||
BasLocation startlocationn = await _db.Queryable<BasLocation>().Where(r => r.location_code == input.startlocation_code).FirstAsync();
|
||||
if (startlocationn == null)
|
||||
{
|
||||
throw new AppFriendlyException($"【ArtificialInstock】库位{input.startlocation_code}不存在", 500);
|
||||
}
|
||||
if (startlocationn.is_lock == 1)
|
||||
{
|
||||
throw new AppFriendlyException($"【ArtificialInstock】库位{input.startlocation_code}已锁定", 500);
|
||||
}
|
||||
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.carry_code == input.carry_code).FirstAsync();
|
||||
if (wmsCarryH == null)
|
||||
{
|
||||
throw new AppFriendlyException($"【ArtificialInstock】载具{input.carry_code}不存在", 500);
|
||||
}
|
||||
if (wmsCarryH.is_lock == 1)
|
||||
{
|
||||
throw new AppFriendlyException($"【ArtificialInstock】载具{input.carry_code}已锁定", 500);
|
||||
}
|
||||
if (wmsCarryH.carry_status != "1")
|
||||
{
|
||||
throw new AppFriendlyException($"【ArtificialInstock】载具{input.carry_code}未绑定物料", 500);
|
||||
}
|
||||
|
||||
BasLocation carrryLoc = await _db.Queryable<BasLocation>().Where(r => r.id == wmsCarryH.location_id).FirstAsync();
|
||||
if (carrryLoc != null && carrryLoc.is_type == "0")
|
||||
{
|
||||
throw new Exception($"托盘{wmsCarryH.carry_code}在存储库位中,不能绑定!");
|
||||
}
|
||||
|
||||
switch (input.warehouse_id)
|
||||
{
|
||||
case WmsWareHouseConst.WAREHOUSE_YCL_ID:
|
||||
{
|
||||
var WmsCarryCode = _db.Queryable<WmsCarryCode>().Where(it => it.carry_id == wmsCarryH.id).OrderByDescending(it => it.id).First();
|
||||
|
||||
if (WmsCarryCode != null)
|
||||
{
|
||||
VisualDevModelDataCrInput input2 = new VisualDevModelDataCrInput();
|
||||
input2.data = new Dictionary<string, object>();
|
||||
input2.data.Add("barcode", input.carry_code);
|
||||
input2.data.Add("codeqty", WmsCarryCode.codeqty);//条码数量
|
||||
input2.data.Add("material_code", WmsCarryCode.material_code);
|
||||
input2.data.Add("extras", input.startlocation_code);//location_code
|
||||
input2.data.Add("warehouse_id", "1");//TEST
|
||||
input2.data.Add("bill_code", "");//采购收货单号
|
||||
input2.data.Add("code_batch", WmsCarryCode.code_batch!);//批次
|
||||
input2.data.Add("material_specification", WmsCarryCode.material_specification!);//规格型号
|
||||
input2.data.Add("container_no", WmsCarryCode.container_no!);//箱号
|
||||
input2.data.Add("material_id", WmsCarryCode.material_id);
|
||||
input2.data.Add("物料条码", WmsCarryCode.barcode);
|
||||
input2.data.Add("id", null);
|
||||
_wmsPDAScanInStock.ScanInStockByRedis(input2, _db).Wait();
|
||||
|
||||
WmsArtificialInstock wmsArtificialInstock = new WmsArtificialInstock();
|
||||
wmsArtificialInstock.carry_id = wmsCarryH.id;
|
||||
wmsArtificialInstock.carry_code = wmsCarryH.carry_code;
|
||||
wmsArtificialInstock.org_id = input.org;
|
||||
wmsArtificialInstock.create_id = input.create_id;
|
||||
wmsArtificialInstock.create_time = DateTime.Now;
|
||||
wmsArtificialInstock.location_id = startlocationn.id;
|
||||
wmsArtificialInstock.location_code = startlocationn.location_code;
|
||||
wmsArtificialInstock.warehouse_id = input.warehouse_id;
|
||||
await _db.Insertable(wmsArtificialInstock).ExecuteCommandAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new AppFriendlyException($"【ArtificialInstock】载具 {input.carry_code} 未绑定物料条码!", 500);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
await _db.Ado.CommitTranAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogError($"【ArtificialInstock】 {ex.Message}");
|
||||
Logger.LogError($"【ArtificialInstock】 {ex.StackTrace}");
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
throw new AppFriendlyException($"【ArtificialInstock】人工扫码入库失败 {ex.Message}", 500);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user