diff --git a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs
index fa133181..05997d4e 100644
--- a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs
+++ b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs
@@ -473,7 +473,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
input.data.Add("material_id", WmsCarryCode.material_id);
input.data.Add("物料条码", WmsCarryCode.barcode);
input.data.Add("id", null);
- _wmsPDAScanInStock.ScanInStockByRedis(input).Wait();
+ _wmsPDAScanInStock.ScanInStockByRedis(input, db_Scantimer).Wait();
}
else
{
@@ -484,10 +484,19 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
}
}
}
+ catch (ObjectDisposedException ex)
+ {
+ LoggerBGWCarrySupplement.LogError($"【ScanInStock】 数据库连接异常:{ex.Message}");
+ LoggerBGWCarrySupplement.LogError($"【ScanInStock】 数据库连接异常:{ex.StackTrace}");
+ if (ex.Source == "Npgsql")
+ db_Scantimer = _repository.AsSugarClient().CopyNew();
+ }
catch (Exception ex)
{
Console.WriteLine("【ScanInStock】" + ex.Message);
LoggerBGWCarrySupplement.LogError($"【ScanInStock】 八工位扫到码发送入库请求发生异常:{ex}");
+ // 数据库连接断开时会报错
+ try { await db_Scantimer.Ado.RollbackTranAsync(); } catch { };
}
finally
{
@@ -1949,8 +1958,9 @@ 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】呼叫电梯");
+ LoggerElevatorTask.Information($"【GenTaskExecute】呼叫电梯 {e.elevator_code}");
await _wareHouseService.ExecuteTargetFloorTask(wmsDistaskHs);
+ LoggerElevatorTask.Information($"【GenTaskExecute】呼叫电梯 {e.elevator_code}执行完成");
}
// 一托货
else if (group.Count() == 1)
@@ -1964,8 +1974,9 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
{
wmsDistaskHs[0].device_id = e.device_id;
}
- LoggerElevatorTask.Information($"【GenTaskExecute】呼叫电梯");
+ LoggerElevatorTask.Information($"【GenTaskExecute】呼叫电梯 {e.elevator_code}");
await _wareHouseService.ExecuteTargetFloorTask(wmsDistaskHs);
+ LoggerElevatorTask.Information($"【GenTaskExecute】呼叫电梯 {e.elevator_code}执行完成");
}
}
else
@@ -1980,8 +1991,9 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
{
wmsDistaskHs[0].device_id = e.device_id;
}
- LoggerElevatorTask.Information($"【GenTaskExecute】呼叫电梯");
+ LoggerElevatorTask.Information($"【GenTaskExecute】呼叫电梯 {e.elevator_code}");
await _wareHouseService.ExecuteTargetFloorTask(wmsDistaskHs);
+ LoggerElevatorTask.Information($"【GenTaskExecute】呼叫电梯 {e.elevator_code}执行完成");
}
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/ErpInputs/TransferOrderInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/ErpInputs/TransferOrderInput.cs
index cead5fcd..f44f7d34 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/ErpInputs/TransferOrderInput.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/ErpInputs/TransferOrderInput.cs
@@ -24,11 +24,6 @@ namespace Tnb.WarehouseMgr.Entities.Dto.ErpInputs
///
public string? biller { get; set; }
- ///
- /// 出库仓库
- ///
- public string? warehouse_outstock { get; set; }
-
///
/// 入库组织编号
///
@@ -88,5 +83,11 @@ namespace Tnb.WarehouseMgr.Entities.Dto.ErpInputs
/// 子表主键
///
public string erp_line_pk { get; set; }
+
+ ///
+ /// 出库仓库
+ ///
+ public string? warehouse_outstock { get; set; }
+
}
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsRawmatTransferoutstockD.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsRawmatTransferoutstockD.cs
index e7afc73e..14141502 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsRawmatTransferoutstockD.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsRawmatTransferoutstockD.cs
@@ -99,4 +99,9 @@ public partial class WmsRawmatTransferoutstockD : BaseEntity
///
public string? lineno { get; set; }
+ ///
+ /// erp仓库类型
+ ///
+ public string erp_wh_type { get; set; }
+
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsRawmatTransferoutstockH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsRawmatTransferoutstockH.cs
index 3dfdcd42..1b9fab5a 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsRawmatTransferoutstockH.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsRawmatTransferoutstockH.cs
@@ -125,8 +125,13 @@ public partial class WmsRawmatTransferoutstockH : BaseEntity
public string? transfer_order_id { get; set; }
///
- /// erp仓库类型
+ /// 入库组织id
///
- public string erp_wh_type { get; set; }
+ public string? instockorg_id { get; set; }
+
+ ///
+ /// 入库组织编号
+ ///
+ public string? instockorg_code { get; set; }
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOrderD.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOrderD.cs
index 958f5d16..ffb4892c 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOrderD.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOrderD.cs
@@ -94,4 +94,9 @@ public partial class WmsTransferOrderD : BaseEntity
///
public string? lineno { get; set; }
+
+ ///
+ /// erp仓库类型
+ ///
+ public string erp_wh_type { get; set; }
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOrderH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOrderH.cs
index df4c9d95..7a208c38 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOrderH.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOrderH.cs
@@ -88,4 +88,14 @@ public partial class WmsTransferOrderH : BaseEntity
/// erp仓库类型
///
public string erp_wh_type { get; set; }
+
+ ///
+ /// 入库组织id
+ ///
+ public string? instockorg_id { get; set; }
+
+ ///
+ /// 入库组织编号
+ ///
+ public string? instockorg_code { get; set; }
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOutstockD.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOutstockD.cs
index 55dd1028..aa3d6881 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOutstockD.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOutstockD.cs
@@ -144,4 +144,9 @@ public partial class WmsTransferOutstockD : BaseEntity
///
public string? lineno { get; set; }
+ ///
+ /// erp仓库类型
+ ///
+ public string erp_wh_type { get; set; }
+
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOutstockH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOutstockH.cs
index dc4195c8..0fd1eeb2 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOutstockH.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferOutstockH.cs
@@ -110,7 +110,12 @@ public partial class WmsTransferOutstockH : BaseEntity
public string? transfer_order_id { get; set; }
///
- /// erp仓库类型
+ /// 入库组织id
///
- public string erp_wh_type { get; set; }
+ public string? instockorg_id { get; set; }
+
+ ///
+ /// 入库组织编号
+ ///
+ public string? instockorg_code { get; set; }
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs b/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs
index 593e1c6a..16e836bb 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Linq;
+
using System.Text;
using Aop.Api.Domain;
using JNPF.Common.Enums;
@@ -1088,7 +1087,18 @@ namespace Tnb.WarehouseMgr
wmsRawmatTransferinstockH.erp_bill_code = input.transfer_order;
wmsRawmatTransferinstockH.contact_person = input.contact_person;
wmsRawmatTransferinstockH.tel = input.tel;
- wmsRawmatTransferinstockH.outstockorg_code = input.outstockorg_code;
+
+ var org_erpExtendField = await db.Queryable().Where(a => a.pk_org == input.outstockorg_code).FirstAsync();
+ if (org_erpExtendField != null)
+ {
+ wmsRawmatTransferinstockH.outstockorg_id = org_erpExtendField.pk_org_v;
+ wmsRawmatTransferinstockH.outstockorg_code = org_erpExtendField.pk_org;
+ }
+ else
+ {
+ _LoggerErp2Mes.LogWarning($@"【TransferOutstock】表头明细中组织{input.outstockorg_code}在wms系统中未找到!");
+ throw new AppFriendlyException($@"表头明细中组织{input.outstockorg_code}在wms系统中未找到!", 500);
+ }
wmsRawmatTransferinstockH.erp_pk = input.erp_pk;
wmsRawmatTransferinstockH.create_id = WmsWareHouseConst.ErpUserId;
wmsRawmatTransferinstockH.create_time = DateTime.Now;
@@ -1146,7 +1156,17 @@ namespace Tnb.WarehouseMgr
wmsTransferInstockH.bill_code = Code;
wmsTransferInstockH.erp_bill_code = input.transfer_order;
- wmsTransferInstockH.outstockorg_code = input.outstockorg_code;
+ var org_erpExtendField = await db.Queryable().Where(a => a.pk_org == input.outstockorg_code).FirstAsync();
+ if (org_erpExtendField != null)
+ {
+ wmsTransferInstockH.outstockorg_id = org_erpExtendField.pk_org_v;
+ wmsTransferInstockH.outstockorg_code = org_erpExtendField.pk_org;
+ }
+ else
+ {
+ _LoggerErp2Mes.LogWarning($@"【TransferOutstock】表头明细中组织{input.outstockorg_code}在wms系统中未找到!");
+ throw new AppFriendlyException($@"表头明细中组织{input.outstockorg_code}在wms系统中未找到!", 500);
+ }
wmsTransferInstockH.incoming_ware = warehouse_instock.id;
wmsTransferInstockH.org_id = WmsWareHouseConst.AdministratorOrgId;
wmsTransferInstockH.erp_pk = input.erp_pk;
@@ -1255,22 +1275,7 @@ namespace Tnb.WarehouseMgr
throw new AppFriendlyException($@"表体存在物料和批号重复的明细!", 500);
}
- WmsErpWarehouserelaH wmsErpWarehouserelaH = await db.Queryable().Where(r => r.erp_warehousecode == input.warehouse_outstock).FirstAsync();
- if (wmsErpWarehouserelaH == null)
- {
- _LoggerErp2Mes.LogWarning($@"【TransferOrder】不存在erp仓库类型{input.warehouse_outstock}对应wms系统的映射关系!");
- throw new AppFriendlyException($@"不存在erp仓库类型{input.warehouse_outstock}对应wms系统的映射关系!", 500);
- }
-
- string warehouse_outstock_code = wmsErpWarehouserelaH.wms_warehousecode;
-
- BasWarehouse warehouse_outstock = await db.Queryable().Where(r => r.whcode == warehouse_outstock_code).FirstAsync();
- if (warehouse_outstock == null)
- {
- _LoggerErp2Mes.LogWarning($"【TransferOrder】无法查询到出库仓库{warehouse_outstock_code}的档案记录!");
- return await ToApiResult(HttpStatusCode.InternalServerError, $"无法查询到出库仓库{warehouse_outstock_code}的档案记录!");
- }
-
+
await db.Ado.BeginTranAsync();
WmsTransferOrderH wmsTransferOrderH = new WmsTransferOrderH();
string Code = await _billRuleService.GetBillNumber("WmsTransferOrder");
@@ -1283,7 +1288,6 @@ namespace Tnb.WarehouseMgr
wmsTransferOrderH.create_id = WmsWareHouseConst.ErpUserId;
wmsTransferOrderH.create_time = DateTime.Now;
wmsTransferOrderH.org_id = WmsWareHouseConst.AdministratorOrgId;
- wmsTransferOrderH.erp_wh_type = input.warehouse_outstock;
var _erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id)
.Where((a, b) => a.transaction_type_id == input.transaction_type).Select((a, b) => b).FirstAsync();
@@ -1322,6 +1326,7 @@ namespace Tnb.WarehouseMgr
wmsTransferOrderD.create_id = WmsWareHouseConst.ErpUserId;
wmsTransferOrderD.create_time = DateTime.Now;
wmsTransferOrderD.lineno = detail.lineno;
+ wmsTransferOrderD.erp_wh_type = detail.warehouse_outstock;
var material = await db.Queryable().Where(p => p.code == detail.material_code).FirstAsync();
if (material != null)
@@ -1337,7 +1342,37 @@ namespace Tnb.WarehouseMgr
await db.Insertable(wmsTransferOrderDs).ExecuteCommandAsync();
- if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_YCL_ID)
+ Dictionary dic_WmsErpWarehouseidrelaH = await db.Queryable()
+ .LeftJoin((a, b) => a.wms_warehousecode == b.whcode)
+ .Select((a, b) => new
+ {
+ a.erp_warehousecode,
+ b.id,
+ b.whcode
+ })
+ .ToDictionaryAsync(k => k.erp_warehousecode, v => v.id);
+ foreach (var key in dic_WmsErpWarehouseidrelaH.Keys)
+ {
+ if (dic_WmsErpWarehouseidrelaH[key] == null)
+ {
+ _LoggerErp2Mes.LogWarning($"【TransferOrder】无法查询到出库仓库{key}的档案记录!");
+ return await ToApiResult(HttpStatusCode.InternalServerError, $"无法查询到出库仓库{key}的档案记录!");
+ }
+ }
+ Dictionary dic_WmsErpWarehousecoderelaH = await db.Queryable()
+ .LeftJoin((a, b) => a.wms_warehousecode == b.whcode)
+ .Select((a, b) => new
+ {
+ a.erp_warehousecode,
+ b.id,
+ b.whcode
+ })
+ .ToDictionaryAsync(k => k.erp_warehousecode, v => v.whcode);
+
+ List details_WAREHOUSE_YCL_ID = input.details.Where(r => dic_WmsErpWarehouseidrelaH[r.warehouse_outstock].ToString() == WmsWareHouseConst.WAREHOUSE_YCL_ID).ToList();
+ List details_WAREHOUSE_CP_ID = input.details.Where(r => dic_WmsErpWarehouseidrelaH[r.warehouse_outstock].ToString() == WmsWareHouseConst.WAREHOUSE_YCL_ID).ToList();
+
+ if (details_WAREHOUSE_YCL_ID.Count > 0)
{
WmsRawmatTransferoutstockH wmsRawmatTransferoutstockH = new WmsRawmatTransferoutstockH();
string code = await _billRuleService.GetBillNumber("RawmatTransferoutstock");
@@ -1346,15 +1381,14 @@ namespace Tnb.WarehouseMgr
wmsRawmatTransferoutstockH.create_time = DateTime.Now;
wmsRawmatTransferoutstockH.biller = input.biller;
wmsRawmatTransferoutstockH.dept_code = input.dept_code;
- wmsRawmatTransferoutstockH.warehouse_code = warehouse_outstock.whcode;
+ wmsRawmatTransferoutstockH.warehouse_code = dic_WmsErpWarehousecoderelaH[details_WAREHOUSE_YCL_ID[0].warehouse_outstock].ToString();
wmsRawmatTransferoutstockH.erp_pk = input.erp_pk;
- wmsRawmatTransferoutstockH.transfer_order_id = wmsTransferOrderH.bill_code;
+ wmsRawmatTransferoutstockH.transfer_order_id = wmsTransferOrderH.id;
wmsRawmatTransferoutstockH.issuance_status = "0";
wmsRawmatTransferoutstockH.transaction_type = _erpExtendField.EnCode;
wmsRawmatTransferoutstockH.org_id = WmsWareHouseConst.AdministratorOrgId;
- wmsRawmatTransferoutstockH.erp_wh_type = input.warehouse_outstock;
List wmsRawmatTransferoutstockDs = new List ();
- foreach (var detail in input.details)
+ foreach (var detail in details_WAREHOUSE_YCL_ID)
{
WmsRawmatTransferoutstockD wmsRawmatTransferoutstockD = new WmsRawmatTransferoutstockD();
wmsRawmatTransferoutstockD.bill_id = wmsRawmatTransferoutstockH.id;
@@ -1370,6 +1404,7 @@ namespace Tnb.WarehouseMgr
throw new AppFriendlyException($@"表体明细中单位{detail.unit_code}在wms系统中未找到!", 500);
}
+ wmsRawmatTransferoutstockD.erp_wh_type = detail.warehouse_outstock;
wmsRawmatTransferoutstockD.qty = detail.qty;
wmsRawmatTransferoutstockD.code_batch = detail.code_batch;
wmsRawmatTransferoutstockD.erp_line_pk = detail.erp_line_pk;
@@ -1392,22 +1427,22 @@ namespace Tnb.WarehouseMgr
await db.Insertable(wmsRawmatTransferoutstockH).ExecuteCommandAsync();
await db.Insertable(wmsRawmatTransferoutstockDs).ExecuteCommandAsync();
}
- else if(warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_CP_ID)
+ if(details_WAREHOUSE_CP_ID.Count > 0)
{
+
WmsTransferOutstockH wmsTransferOutstockH = new WmsTransferOutstockH();
string code = await _billRuleService.GetBillNumber("WmsTransferOutstock");
wmsTransferOutstockH.bill_code = code;
wmsTransferOutstockH.create_id = WmsWareHouseConst.ErpUserId;
wmsTransferOutstockH.create_time = DateTime.Now;
- wmsTransferOutstockH.warehouse_code = warehouse_outstock.whcode;
+ wmsTransferOutstockH.warehouse_code = dic_WmsErpWarehousecoderelaH[details_WAREHOUSE_CP_ID[0].warehouse_outstock].ToString();
wmsTransferOutstockH.erp_pk = input.erp_pk;
- wmsTransferOutstockH.transfer_order_id = wmsTransferOrderH.bill_code;
+ wmsTransferOutstockH.transfer_order_id = wmsTransferOrderH.id;
wmsTransferOutstockH.issuance_status = "0";
wmsTransferOutstockH.transaction_type = _erpExtendField.EnCode;
wmsTransferOutstockH.org_id = WmsWareHouseConst.AdministratorOrgId;
- wmsTransferOutstockH.erp_wh_type = input.warehouse_outstock;
List wmsTransferOutstockDs = new List();
- foreach (var detail in input.details)
+ foreach (var detail in details_WAREHOUSE_CP_ID)
{
WmsTransferOutstockD wmsTransferOutstockD = new WmsTransferOutstockD();
wmsTransferOutstockD.bill_id = wmsTransferOutstockH.id;
@@ -1432,6 +1467,7 @@ namespace Tnb.WarehouseMgr
wmsTransferOutstockD.create_id = WmsWareHouseConst.ErpUserId;
wmsTransferOutstockD.create_time = DateTime.Now;
wmsTransferOutstockD.lineno = detail.lineno;
+ wmsTransferOutstockD.erp_wh_type = detail.warehouse_outstock;
var material = await db.Queryable().Where(p => p.code == detail.material_code).FirstAsync();
if (material != null)
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
index 797baceb..06f550b9 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
@@ -2228,33 +2228,34 @@ namespace Tnb.WarehouseMgr
int doorStatus = -1;
bool closeDoorRes = await _elevatorControlService.SendOpenCloseCmd(devName, 4); //向电梯发送前门关门指令
- Logger.Information($"关门结果:{closeDoorRes}");
+ Logger.Information($"{devName.Match(@"\d+")}#梯 关门结果:{closeDoorRes}");
do
{
doorStatus = await _elevatorControlService.GetTagAsync(devName, ElevatorConsts.DoorStatus);
- Logger.Information($"当前门状态:{doorStatus}");
+ Logger.Information($"{devName.Match(@"\d+")}#梯 当前门状态:{doorStatus}");
await Task.Delay(1000);
} while (doorStatus != 4);
- Logger.Information($"当前门状态:{doorStatus}");
+ Logger.Information($"结束判断 {devName.Match(@"\d+")}#梯 当前门状态:{doorStatus}");
int floor = await GetRealFloor(devName, disTask.end_floor);
//电梯任务手动执行任务状态上报
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) tuple = (-1, -1, -1, -1, -1);
tuple = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
- Logger.Information($"目标楼层:{floor} 当前楼层:{tuple.floorNo}");
+ Logger.Information($"{devName.Match(@"\d+")}#梯 目标楼层:{floor} 当前楼层:{tuple.floorNo}");
- Logger.Information($"开始呼梯 {devName}到{floor}");
+ Logger.Information($"{devName.Match(@"\d+")}#梯 开始呼梯 {devName}到{floor}");
//发送到目标楼的指令
dynamic result = await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor);
do
{
tuple = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
+ Logger.Information($"{devName.Match(@"\d+")}#梯 sysStatus:{tuple.sysStatus},runStatus:{tuple.runStatus},当前楼层floorNo:{tuple.floorNo},目标楼层disTask.end_floor={floor}");
await Task.Delay(1000);
} while (tuple.sysStatus != 3 || tuple.runStatus != 0 || floor != tuple.floorNo);
- Logger.Information($"sysStatus:{tuple.sysStatus},runStatus:{tuple.runStatus},当前楼层floorNo:{tuple.floorNo},目标楼层disTask.end_floor={floor}");
+ Logger.Information($"结束判断 {devName.Match(@"\d+")}#梯 sysStatus:{tuple.sysStatus},runStatus:{tuple.runStatus},当前楼层floorNo:{tuple.floorNo},目标楼层disTask.end_floor={floor}");
if (tuple.sysStatus.ToEnum() == EnumSysStatus.正常状态 && tuple.runStatus.ToEnum() == EnumRunStatus.停梯)
{
@@ -2275,7 +2276,7 @@ namespace Tnb.WarehouseMgr
};
await TaskComplate(tcUpInput);
- Logger.Information("电梯任务执行完成");
+ Logger.Information($"{devName.Match(@"\d+")}#梯 电梯任务执行完成");
}
}
@@ -2472,34 +2473,36 @@ namespace Tnb.WarehouseMgr
[HttpPost]
public async Task TaskComplate(TaskCompleUpInput input)
{
+ var db = _db.CopyNew();
try
{
- Logger.Information($"【TaskComplate】 开始执行TaskComplate");
- await _db.Ado.BeginTranAsync();
+ Logger.Information($"【TaskComplate】 开始执行TaskComplate {JsonConvert.SerializeObject(input)}");
+
+ await db.Ado.BeginTranAsync();
//更新任务执行表,单据状态为 完成
- _ = await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID, act_end_date = DateTime.Now }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync();
- List disTasks = await _db.Queryable().InnerJoin((a, b) => a.carry_id == b.id).Where(a => input.disTaskIds.Contains(a.id)).Select((a, b) => new WmsDistaskH { carry_status = b.carry_status }, true).ToListAsync();
+ _ = await db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID, act_end_date = DateTime.Now }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync();
+ List disTasks = await db.Queryable().InnerJoin((a, b) => a.carry_id == b.id).Where(a => input.disTaskIds.Contains(a.id)).Select((a, b) => new WmsDistaskH { carry_status = b.carry_status }, true).ToListAsync();
Logger.Information($"【TaskComplate】 disTasks 值 {JsonConvert.SerializeObject(disTasks)}");
if (disTasks?.Count > 0)
{
// 更新预任务申请表,单据状态为 已完成
List preTaskIds = disTasks.Select(x => x.pretask_id).ToList();
- _ = await _db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync();
+ _ = await db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync();
//更新电梯任务数量
- _ = await _db.Updateable().SetColumns(it => new WmsElevatorH { task_nums = it.task_nums - 1}).Where(it => disTasks.Select(x => x.area_code).Contains(it.area_code)).ExecuteCommandAsync();
+ _ = await db.Updateable().SetColumns(it => new WmsElevatorH { task_nums = it.task_nums - 1}).Where(it => disTasks.Select(x => x.area_code).Contains(it.area_code)).ExecuteCommandAsync();
// 更新任务数量
- _ = await _db.Updateable().SetColumns(it => new BasLocation { task_nums = it.task_nums - 1 }).Where(it => disTasks.Select(x => x.endlocation_code).Contains(it.location_code)).ExecuteCommandAsync();
+ _ = await db.Updateable().SetColumns(it => new BasLocation { task_nums = it.task_nums - 1 }).Where(it => disTasks.Select(x => x.endlocation_code).Contains(it.location_code)).ExecuteCommandAsync();
//更新载具,锁定状态为未锁定,更新载具的库位当前任务的目标库位
List<(string carry_id, string carry_status, string endlocation_id, string endlocation_code)> multiList = disTasks.Select(it => (it.carry_id, it.carry_status, it.endlocation_id, it.endlocation_code)).ToList();
- Dictionary locWhIdMap = await _db.Queryable().Where(it => multiList.Select(x => x.endlocation_id).Contains(it.id)).ToDictionaryAsync(it => it.id, it => it.wh_id);
- Dictionary locTypeMap = await _db.Queryable().Where(it => multiList.Select(x => x.endlocation_id).Contains(it.id)).ToDictionaryAsync(it => it.id, it => it.is_type);
+ Dictionary locWhIdMap = await db.Queryable().Where(it => multiList.Select(x => x.endlocation_id).Contains(it.id)).ToDictionaryAsync(it => it.id, it => it.wh_id);
+ Dictionary locTypeMap = await db.Queryable().Where(it => multiList.Select(x => x.endlocation_id).Contains(it.id)).ToDictionaryAsync(it => it.id, it => it.is_type);
List carryIts = new();
List carryCodeIts = new();
List locIts = new();
@@ -2517,11 +2520,11 @@ namespace Tnb.WarehouseMgr
};
string endLocId = multiList[i].endlocation_id;
- WmsCarryH wmsCarryH = await _db.Queryable().Where(r => r.id == carry.id).FirstAsync();
+ WmsCarryH wmsCarryH = await db.Queryable().Where(r => r.id == carry.id).FirstAsync();
// 同步料架下的载具位置
if (wmsCarryH != null && wmsCarryH.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID)
{
- List carrys = _db.Queryable()
+ List carrys = db.Queryable()
.InnerJoin((a, b) => a.membercarry_id == b.id).Where((a, b) => a.carry_id == carry.id).Select((a, b) => b).ToList();
carrys.ForEach(r =>
{
@@ -2531,7 +2534,7 @@ namespace Tnb.WarehouseMgr
});
}
- List carrycodes = _db.Queryable().Where(r => r.carry_id == carry.id).ToList();
+ List carrycodes = db.Queryable().Where(r => r.carry_id == carry.id).ToList();
carrycodes.ForEach(r =>
{
r.warehouse_id = locWhIdMap.ContainsKey(endLocId) ? locWhIdMap[endLocId].ToString() : "";
@@ -2563,12 +2566,12 @@ namespace Tnb.WarehouseMgr
locIts.Add(loc);
}
- _ = await _db.Updateable(carryIts).UpdateColumns(it => new { it.is_lock, it.location_id, it.location_code, it.instock_time }).ExecuteCommandAsync();
+ _ = 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 }).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();
+ _ = await db.Updateable(locIts).UpdateColumns(it => new { it.is_use, it.is_lock }).ExecuteCommandAsync();
Logger.Information($"【TaskComplate】 更新库位 {JsonConvert.SerializeObject(locIts)}");
/* var loginType= _userManager?.LoginType ?? "web";
Log.Information($"_userManager.LoginType={loginType}");
@@ -2580,7 +2583,7 @@ namespace Tnb.WarehouseMgr
addOutinStockDetailInput.disTask = dt;
addOutinStockDetailInput.start_warehouse_id = locWhIdMap.ContainsKey(dt.startlocation_id) ? locWhIdMap[dt.startlocation_id].ToString() : "";
addOutinStockDetailInput.end_warehouse_id = locWhIdMap.ContainsKey(dt.endlocation_id) ? locWhIdMap[dt.endlocation_id].ToString() : "";
- await _wmsOutinStockDetailService.AddOutinStockDetail(addOutinStockDetailInput, _db);
+ await _wmsOutinStockDetailService.AddOutinStockDetail(addOutinStockDetailInput, db);
#region todo 移到service中
// 销售出库
@@ -2589,12 +2592,12 @@ namespace Tnb.WarehouseMgr
// TODO 一楼工位放货完成后更新出库明细的实际出库数量
if (dt.start_floor == 1 && dt.end_floor == 1)
{
- WmsCarryCode wmsCarryCode = await _db.Queryable().Where(r => r.carry_id == dt.carry_id).FirstAsync();
- await _db.Updateable().SetColumns(r => r.purchase_prqty == r.purchase_prqty + wmsCarryCode.codeqty).Where(r => r.id == dt.require_id).ExecuteCommandAsync();
+ WmsCarryCode wmsCarryCode = await db.Queryable().Where(r => r.carry_id == dt.carry_id).FirstAsync();
+ await db.Updateable().SetColumns(r => r.purchase_prqty == r.purchase_prqty + wmsCarryCode.codeqty).Where(r => r.id == dt.require_id).ExecuteCommandAsync();
CarryCodeUnbindInput carryCodeUnbindInput = new CarryCodeUnbindInput();
carryCodeUnbindInput.carry_id = dt.carry_id;
- await _wmsCarryUnbindService.CarryCodeUnbind(carryCodeUnbindInput, _db);
+ await _wmsCarryUnbindService.CarryCodeUnbind(carryCodeUnbindInput, db);
}
}
// 成品调拨入库
@@ -2602,14 +2605,14 @@ namespace Tnb.WarehouseMgr
{
if (dt.start_floor == 3 && dt.end_floor == 3)
{
- WmsCarryCode wmsCarryCode = await _db.Queryable().Where(r => r.carry_id == dt.carry_id).FirstAsync();
- await _db.Updateable().SetColumns(r => r.qty == r.qty + wmsCarryCode.codeqty).Where(r => r.id == dt.require_id).ExecuteCommandAsync();
+ WmsCarryCode wmsCarryCode = await db.Queryable().Where(r => r.carry_id == dt.carry_id).FirstAsync();
+ await db.Updateable().SetColumns(r => r.qty == r.qty + wmsCarryCode.codeqty).Where(r => r.id == dt.require_id).ExecuteCommandAsync();
}
}
// 二楼物料呼叫任务结束后清空工位信息
else if (dt.biz_type == "FloorCallMaterial")
{
- await _db.Updateable().SetColumns(r => new WmsCarryH
+ await db.Updateable().SetColumns(r => new WmsCarryH
{
work_station = ""
}).Where(r => r.id == dt.carry_id).ExecuteCommandAsync();
@@ -2619,11 +2622,11 @@ namespace Tnb.WarehouseMgr
}
else if (dt.biz_type == "erp_qtrk")
{
- WmsMaterialTransfer wmsMaterialTransfer = await _db.Queryable().SingleAsync(x=>x.id==dt.source_id);
- List wmsMaterialTransferDs = await _db.Queryable().Where(x=>x.bill_id==dt.source_id).ToListAsync();
+ WmsMaterialTransfer wmsMaterialTransfer = await db.Queryable().SingleAsync(x=>x.id==dt.source_id);
+ List wmsMaterialTransferDs = await db.Queryable().Where(x=>x.bill_id==dt.source_id).ToListAsync();
List materialIds = wmsMaterialTransferDs.Select(x=>x.material_id).Distinct().ToList();
List unitCodes = wmsMaterialTransferDs.Select(x => x.unit_id).Distinct().ToList();
- List unitDatas = await _db.Queryable()
+ List unitDatas = await db.Queryable()
.LeftJoin((x, y) => x.Id == y.DictionaryTypeId)
.Where((x, y) => x.EnCode == DictConst.MeasurementUnit && unitCodes.Contains(y.EnCode))
.Select((x,y)=>y)
@@ -2636,7 +2639,7 @@ namespace Tnb.WarehouseMgr
ids.AddRange(materialIds);
ids.AddRange(unitDatas.Select(x=>x.Id).ToList());
- List erpExtendFields = await _db.Queryable().Where(x=>ids.Contains(x.table_id)).ToListAsync();
+ List erpExtendFields = await db.Queryable().Where(x=>ids.Contains(x.table_id)).ToListAsync();
string erpCreateId = erpExtendFields.Find(x=>x.table_id==wmsMaterialTransfer.create_id)?.user_id ?? "";
ErpExtendField erpOrg = erpExtendFields.Find(x => x.table_id == (wmsMaterialTransfer.org_id ?? WmsWareHouseConst.AdministratorOrgId));
string nowStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
@@ -2691,7 +2694,7 @@ namespace Tnb.WarehouseMgr
erpRequestData.Add("dtls",erpRequestDataDetails);
requestData.Add(erpRequestData);
- BasFactoryConfig config = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL);
+ BasFactoryConfig config = await db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL);
ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord();
thirdWebapiRecord.id = SnowflakeIdHelper.NextId();
thirdWebapiRecord.third_name = WmsWareHouseConst.BIP;
@@ -2702,11 +2705,11 @@ namespace Tnb.WarehouseMgr
thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData);
thirdWebapiRecord.create_time = DateTime.Now;
- await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
+ await db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
}
#endregion
- List disTaskCodes = await _db.Queryable().Where(it => it.bill_id == dt.id).ToListAsync();
+ List disTaskCodes = await db.Queryable().Where(it => it.bill_id == dt.id).ToListAsync();
WareHouseUpInput upInput = new() { bizTypeId = dt.biz_type, requireId = dt.require_id!, require_code = dt.require_code!, source_id = dt.source_id!
, source_code = dt.source_code!, distaskCodes = disTaskCodes, carryIds = disTasks.Select(x => x.carry_id).ToList(),
bill_code = dt.bill_code!,area_code= dt.area_code!,wmsDistaskH = dt!
@@ -2728,7 +2731,7 @@ namespace Tnb.WarehouseMgr
}
}
Logger.Information($"【TaskComplate】 任务操作完成提交事务 {string.Join(",", input.disTaskIds)}");
- await _db.Ado.CommitTranAsync();
+ await db.Ado.CommitTranAsync();
Logger.Information($"【TaskComplate】 任务操作完成 {string.Join(",", input.disTaskIds)}");
}
@@ -2736,7 +2739,7 @@ namespace Tnb.WarehouseMgr
{
Logger.Error($"任务结束失败", ex);
Logger.Error($"任务结束失败堆栈异常", ex);
- await _db.Ado.RollbackTranAsync();
+ await db.Ado.RollbackTranAsync();
throw;
}
finally
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionCompleteService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionCompleteService.cs
index d9b388c1..65481655 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionCompleteService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionCompleteService.cs
@@ -3,6 +3,9 @@ using JNPF.Common.Dtos.VisualDev;
using JNPF.Systems.Interfaces.System;
using JNPF.VisualDev;
using JNPF.VisualDev.Interfaces;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
using SqlSugar;
using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
@@ -44,6 +47,7 @@ namespace Tnb.WarehouseMgr
try
{
+ Logger.LogWarning($"【ExceptionComplete】 {JsonConvert.SerializeObject(input)}");
await _db.Ado.BeginTranAsync();
TaskCompleUpInput taskCompleUpInput = new();
List list = new();