电梯日志优化erp同步调整
This commit is contained in:
@@ -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}执行完成");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,11 +24,6 @@ namespace Tnb.WarehouseMgr.Entities.Dto.ErpInputs
|
||||
/// </summary>
|
||||
public string? biller { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库仓库
|
||||
/// </summary>
|
||||
public string? warehouse_outstock { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库组织编号
|
||||
/// </summary>
|
||||
@@ -88,5 +83,11 @@ namespace Tnb.WarehouseMgr.Entities.Dto.ErpInputs
|
||||
/// 子表主键
|
||||
/// </summary>
|
||||
public string erp_line_pk { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库仓库
|
||||
/// </summary>
|
||||
public string? warehouse_outstock { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,4 +99,9 @@ public partial class WmsRawmatTransferoutstockD : BaseEntity<string>
|
||||
/// </summary>
|
||||
public string? lineno { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// erp仓库类型
|
||||
/// </summary>
|
||||
public string erp_wh_type { get; set; }
|
||||
|
||||
}
|
||||
|
||||
@@ -125,8 +125,13 @@ public partial class WmsRawmatTransferoutstockH : BaseEntity<string>
|
||||
public string? transfer_order_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// erp仓库类型
|
||||
/// 入库组织id
|
||||
/// </summary>
|
||||
public string erp_wh_type { get; set; }
|
||||
public string? instockorg_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库组织编号
|
||||
/// </summary>
|
||||
public string? instockorg_code { get; set; }
|
||||
|
||||
}
|
||||
|
||||
@@ -94,4 +94,9 @@ public partial class WmsTransferOrderD : BaseEntity<string>
|
||||
/// </summary>
|
||||
public string? lineno { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// erp仓库类型
|
||||
/// </summary>
|
||||
public string erp_wh_type { get; set; }
|
||||
}
|
||||
|
||||
@@ -88,4 +88,14 @@ public partial class WmsTransferOrderH : BaseEntity<string>
|
||||
/// erp仓库类型
|
||||
/// </summary>
|
||||
public string erp_wh_type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库组织id
|
||||
/// </summary>
|
||||
public string? instockorg_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库组织编号
|
||||
/// </summary>
|
||||
public string? instockorg_code { get; set; }
|
||||
}
|
||||
|
||||
@@ -144,4 +144,9 @@ public partial class WmsTransferOutstockD : BaseEntity<string>
|
||||
/// </summary>
|
||||
public string? lineno { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// erp仓库类型
|
||||
/// </summary>
|
||||
public string erp_wh_type { get; set; }
|
||||
|
||||
}
|
||||
|
||||
@@ -110,7 +110,12 @@ public partial class WmsTransferOutstockH : BaseEntity<string>
|
||||
public string? transfer_order_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// erp仓库类型
|
||||
/// 入库组织id
|
||||
/// </summary>
|
||||
public string erp_wh_type { get; set; }
|
||||
public string? instockorg_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库组织编号
|
||||
/// </summary>
|
||||
public string? instockorg_code { get; set; }
|
||||
}
|
||||
|
||||
@@ -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<ErpExtendField>().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<ErpExtendField>().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<WmsErpWarehouserelaH>().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<BasWarehouse>().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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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<BasMaterial>().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<string, object> dic_WmsErpWarehouseidrelaH = await db.Queryable<WmsErpWarehouserelaH>()
|
||||
.LeftJoin<BasWarehouse>((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<string, object> dic_WmsErpWarehousecoderelaH = await db.Queryable<WmsErpWarehouserelaH>()
|
||||
.LeftJoin<BasWarehouse>((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<TransferOrderInputDetail> details_WAREHOUSE_YCL_ID = input.details.Where(r => dic_WmsErpWarehouseidrelaH[r.warehouse_outstock].ToString() == WmsWareHouseConst.WAREHOUSE_YCL_ID).ToList();
|
||||
List<TransferOrderInputDetail> 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<WmsRawmatTransferoutstockD> wmsRawmatTransferoutstockDs = new List <WmsRawmatTransferoutstockD>();
|
||||
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<WmsTransferOutstockD> wmsTransferOutstockDs = new List<WmsTransferOutstockD>();
|
||||
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<BasMaterial>().Where(p => p.code == detail.material_code).FirstAsync();
|
||||
if (material != null)
|
||||
|
||||
@@ -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>() == EnumSysStatus.正常状态 && tuple.runStatus.ToEnum<EnumRunStatus>() == 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<WmsDistaskH>().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<WmsDistaskH> disTasks = await _db.Queryable<WmsDistaskH>().InnerJoin<WmsCarryH>((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<WmsDistaskH>().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<WmsDistaskH> disTasks = await db.Queryable<WmsDistaskH>().InnerJoin<WmsCarryH>((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<string> preTaskIds = disTasks.Select(x => x.pretask_id).ToList();
|
||||
_ = await _db.Updateable<WmsPretaskH>().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync();
|
||||
_ = await db.Updateable<WmsPretaskH>().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync();
|
||||
|
||||
//更新电梯任务数量
|
||||
_ = await _db.Updateable<WmsElevatorH>().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<WmsElevatorH>().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<BasLocation>().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<BasLocation>().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<string, object> locWhIdMap = await _db.Queryable<BasLocation>().Where(it => multiList.Select(x => x.endlocation_id).Contains(it.id)).ToDictionaryAsync(it => it.id, it => it.wh_id);
|
||||
Dictionary<string, object> locTypeMap = await _db.Queryable<BasLocation>().Where(it => multiList.Select(x => x.endlocation_id).Contains(it.id)).ToDictionaryAsync(it => it.id, it => it.is_type);
|
||||
Dictionary<string, object> locWhIdMap = await db.Queryable<BasLocation>().Where(it => multiList.Select(x => x.endlocation_id).Contains(it.id)).ToDictionaryAsync(it => it.id, it => it.wh_id);
|
||||
Dictionary<string, object> locTypeMap = await db.Queryable<BasLocation>().Where(it => multiList.Select(x => x.endlocation_id).Contains(it.id)).ToDictionaryAsync(it => it.id, it => it.is_type);
|
||||
List<WmsCarryH> carryIts = new();
|
||||
List<WmsCarryCode> carryCodeIts = new();
|
||||
List<BasLocation> locIts = new();
|
||||
@@ -2517,11 +2520,11 @@ namespace Tnb.WarehouseMgr
|
||||
};
|
||||
string endLocId = multiList[i].endlocation_id;
|
||||
|
||||
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.id == carry.id).FirstAsync();
|
||||
WmsCarryH wmsCarryH = await db.Queryable<WmsCarryH>().Where(r => r.id == carry.id).FirstAsync();
|
||||
// 同步料架下的载具位置
|
||||
if (wmsCarryH != null && wmsCarryH.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID)
|
||||
{
|
||||
List<WmsCarryH> carrys = _db.Queryable<WmsCarryD>()
|
||||
List<WmsCarryH> carrys = db.Queryable<WmsCarryD>()
|
||||
.InnerJoin<WmsCarryH>((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<WmsCarryCode> carrycodes = _db.Queryable<WmsCarryCode>().Where(r => r.carry_id == carry.id).ToList();
|
||||
List<WmsCarryCode> carrycodes = db.Queryable<WmsCarryCode>().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<WmsCarryCode>().Where(r => r.carry_id == dt.carry_id).FirstAsync();
|
||||
await _db.Updateable<WmsSaleD>().SetColumns(r => r.purchase_prqty == r.purchase_prqty + wmsCarryCode.codeqty).Where(r => r.id == dt.require_id).ExecuteCommandAsync();
|
||||
WmsCarryCode wmsCarryCode = await db.Queryable<WmsCarryCode>().Where(r => r.carry_id == dt.carry_id).FirstAsync();
|
||||
await db.Updateable<WmsSaleD>().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<WmsCarryCode>().Where(r => r.carry_id == dt.carry_id).FirstAsync();
|
||||
await _db.Updateable<WmsTransferInstockD>().SetColumns(r => r.qty == r.qty + wmsCarryCode.codeqty).Where(r => r.id == dt.require_id).ExecuteCommandAsync();
|
||||
WmsCarryCode wmsCarryCode = await db.Queryable<WmsCarryCode>().Where(r => r.carry_id == dt.carry_id).FirstAsync();
|
||||
await db.Updateable<WmsTransferInstockD>().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<WmsCarryH>().SetColumns(r => new WmsCarryH
|
||||
await db.Updateable<WmsCarryH>().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<WmsMaterialTransfer>().SingleAsync(x=>x.id==dt.source_id);
|
||||
List<WmsMaterialTransferD> wmsMaterialTransferDs = await _db.Queryable<WmsMaterialTransferD>().Where(x=>x.bill_id==dt.source_id).ToListAsync();
|
||||
WmsMaterialTransfer wmsMaterialTransfer = await db.Queryable<WmsMaterialTransfer>().SingleAsync(x=>x.id==dt.source_id);
|
||||
List<WmsMaterialTransferD> wmsMaterialTransferDs = await db.Queryable<WmsMaterialTransferD>().Where(x=>x.bill_id==dt.source_id).ToListAsync();
|
||||
List<String> materialIds = wmsMaterialTransferDs.Select(x=>x.material_id).Distinct().ToList();
|
||||
List<String> unitCodes = wmsMaterialTransferDs.Select(x => x.unit_id).Distinct().ToList();
|
||||
List<DictionaryDataEntity> unitDatas = await _db.Queryable<DictionaryTypeEntity>()
|
||||
List<DictionaryDataEntity> unitDatas = await db.Queryable<DictionaryTypeEntity>()
|
||||
.LeftJoin<DictionaryDataEntity>((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<ErpExtendField> erpExtendFields = await _db.Queryable<ErpExtendField>().Where(x=>ids.Contains(x.table_id)).ToListAsync();
|
||||
List<ErpExtendField> erpExtendFields = await db.Queryable<ErpExtendField>().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<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL);
|
||||
BasFactoryConfig config = await db.Queryable<BasFactoryConfig>().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<WmsDistaskCode> disTaskCodes = await _db.Queryable<WmsDistaskCode>().Where(it => it.bill_id == dt.id).ToListAsync();
|
||||
List<WmsDistaskCode> disTaskCodes = await db.Queryable<WmsDistaskCode>().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
|
||||
|
||||
@@ -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<string> list = new();
|
||||
|
||||
Reference in New Issue
Block a user