电梯优化
This commit is contained in:
@@ -2257,6 +2257,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
/// <param name="args"></param>
|
/// <param name="args"></param>
|
||||||
private async void Floor4MJX2MJC(object? args)
|
private async void Floor4MJX2MJC(object? args)
|
||||||
{
|
{
|
||||||
|
BasLocation startlocation = await db_Floor4MJX2MJC.Queryable<BasLocation>().Where(r => r.location_code == "MJQ-QU02").FirstAsync();
|
||||||
if (s_taskFloor4MJX2MJCService.CurrentCount == 0)
|
if (s_taskFloor4MJX2MJCService.CurrentCount == 0)
|
||||||
return;
|
return;
|
||||||
await s_taskFloor4MJX2MJCService.WaitAsync();
|
await s_taskFloor4MJX2MJCService.WaitAsync();
|
||||||
@@ -2268,19 +2269,10 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
LoggerTimer.LogInformation($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼待灭菌线到灭菌仓");
|
LoggerTimer.LogInformation($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼待灭菌线到灭菌仓");
|
||||||
|
|
||||||
Dictionary<string, string[]> getdic = new Dictionary<string, string[]>();
|
Dictionary<string, string[]> getdic = new Dictionary<string, string[]>();
|
||||||
getdic.Add("MJQ-QU02", new string[] { "4下上料输送西区", "下料工位2请求取盘", "下料工位2条码" });
|
getdic.Add("MJQ-QU01", new string[] { "4楼下料输送西区", "下料工位1请求取盘", "下料工位1条码" });
|
||||||
getdic.Add("MJQ-QU01", new string[] { "4下上料输送西区", "下料工位1请求取盘", "下料工位1条码" });
|
getdic.Add("MJQ-QU02", new string[] { "4楼下料输送西区", "下料工位2请求取盘", "下料工位2条码" });
|
||||||
|
|
||||||
//List<BasLocation> startLocations = db_Floor4MJX2MJC.Queryable<BasLocation>().Where(r => r.wh_id == WmsWareHouseConst.WAREHOUSE_MJC_ID
|
|
||||||
//&& r.is_type == ((int)EnumLocationType.分拣库位).ToString() && r.is_lock == 0).ToList();
|
|
||||||
|
|
||||||
//Dictionary<BasLocation, string[]> getdic = new Dictionary<BasLocation, string[]>();
|
|
||||||
|
|
||||||
//foreach (BasLocation startLocation in getdic)
|
|
||||||
//{
|
|
||||||
// getdic.Add(startLocation, new string[] { "", "" });
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
foreach (var key in getdic.Keys)
|
foreach (var key in getdic.Keys)
|
||||||
{
|
{
|
||||||
var strs = getdic.Where(p => p.Key == key).First().Value;
|
var strs = getdic.Where(p => p.Key == key).First().Value;
|
||||||
@@ -2301,13 +2293,19 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
LoggerFloor4MJX2MJC.LogWarning($"【四楼待灭菌线到灭菌仓】 没有可以入库的库位");
|
LoggerFloor4MJX2MJC.LogWarning($"【四楼待灭菌线到灭菌仓】 没有可以入库的库位");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
var endlocation = items.First();
|
||||||
|
|
||||||
await db_Floor4MJX2MJC.Ado.BeginTranAsync();
|
await db_Floor4MJX2MJC.Ado.BeginTranAsync();
|
||||||
|
startlocation = await db_Floor4MJX2MJC.Queryable<BasLocation>().Where(r => r.location_code == key).FirstAsync();
|
||||||
|
|
||||||
BasLocation startlocation = await db_Floor4DMJ2MJX.Queryable<BasLocation>().Where(r => r.location_code == key).FirstAsync();
|
if (startlocation.is_lock == 1)
|
||||||
BasLocation endlocation = items[0];
|
{
|
||||||
|
LoggerFloor4MJX2MJC.LogWarning($"【四楼待灭菌线到灭菌仓】 起点库位{startlocation.location_code}已锁定");
|
||||||
string carry_code = await GetStringTag(strs[0], strs[2]);
|
continue;
|
||||||
|
}
|
||||||
|
string carry_code = (await GetStringTag(strs[0], strs[2])).Replace("\r", "").Replace(" ", "");
|
||||||
LoggerFloor4MJX2MJC.LogInformation($"【四楼待灭菌线到灭菌仓】 下料点 {key} {strs[2]}采集到 {carry_code}");
|
LoggerFloor4MJX2MJC.LogInformation($"【四楼待灭菌线到灭菌仓】 下料点 {key} {strs[2]}采集到 {carry_code}");
|
||||||
|
LoggerFloor4MJX2MJC.LogInformation($"【四楼待灭菌线到灭菌仓】 下料点 {key} {strs[2]}采集到长度 {carry_code.Length}");
|
||||||
WmsCarryH wmsCarryH = await db_Floor4MJX2MJC.Queryable<WmsCarryH>().Where(r => r.carry_code == carry_code).FirstAsync();
|
WmsCarryH wmsCarryH = await db_Floor4MJX2MJC.Queryable<WmsCarryH>().Where(r => r.carry_code == carry_code).FirstAsync();
|
||||||
|
|
||||||
//锁定起点库位
|
//锁定起点库位
|
||||||
@@ -2441,9 +2439,9 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
BasLocation endlocation = items[0];
|
BasLocation endlocation = items[0];
|
||||||
|
|
||||||
//锁定起点库位
|
//锁定起点库位
|
||||||
await db_Floor4MJX2MJC.Updateable<BasLocation>().SetColumns(r => new BasLocation { is_lock = 1 }).Where(r => r.id == startlocation.id).ExecuteCommandAsync();
|
await db_Floor4DMC2CPK.Updateable<BasLocation>().SetColumns(r => new BasLocation { is_lock = 1 }).Where(r => r.id == startlocation.id).ExecuteCommandAsync();
|
||||||
//锁定终点库位
|
//锁定终点库位
|
||||||
await db_Floor4MJX2MJC.Updateable<BasLocation>().SetColumns(r => new BasLocation { is_lock = 1 }).Where(r => r.id == endlocation.id).ExecuteCommandAsync();
|
await db_Floor4DMC2CPK.Updateable<BasLocation>().SetColumns(r => new BasLocation { is_lock = 1 }).Where(r => r.id == endlocation.id).ExecuteCommandAsync();
|
||||||
|
|
||||||
bool result_createPretask = await createPretask(startlocation.id, endlocation.id, wmsCarryH.id, wmsCarryH.carry_code,
|
bool result_createPretask = await createPretask(startlocation.id, endlocation.id, wmsCarryH.id, wmsCarryH.carry_code,
|
||||||
LoggerFloor4DMC2CPK, db_Floor4DMC2CPK, WmsWareHouseConst.BIZTYPE_WMSSTERILIZATIONINSTOCKCH_ID, "", wmsSterilizationInstockH.id);
|
LoggerFloor4DMC2CPK, db_Floor4DMC2CPK, WmsWareHouseConst.BIZTYPE_WMSSTERILIZATIONINSTOCKCH_ID, "", wmsSterilizationInstockH.id);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ using JNPF.EventHandler;
|
|||||||
using JNPF.Logging;
|
using JNPF.Logging;
|
||||||
using JNPF.Systems.Entitys.System;
|
using JNPF.Systems.Entitys.System;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
@@ -382,11 +383,11 @@ namespace Tnb.WarehouseMgr
|
|||||||
return await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
|
return await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doorStatus == (int)EnumDoorStatus.开门到位保持 && s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.占用)
|
//if (doorStatus == (int)EnumDoorStatus.开门到位保持 && s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.占用)
|
||||||
{
|
//{
|
||||||
Logger.Information($"【UnloadConfirm】 电梯当前在s_eleUseStatusDic中的状态为占用!");
|
// Logger.Information($"【UnloadConfirm】 电梯当前在s_eleUseStatusDic中的状态为占用!");
|
||||||
await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
|
// await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
|
||||||
}
|
//}
|
||||||
//电梯到达目标楼层后,判断当前电梯门状态是否为开门到位保持状态
|
//电梯到达目标楼层后,判断当前电梯门状态是否为开门到位保持状态
|
||||||
if (doorStatus != (int)EnumDoorStatus.开门到位保持 && s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.空闲 && curFloor == floorNo) //判断目标楼层与电梯所在楼层在同一层才可开门放货
|
if (doorStatus != (int)EnumDoorStatus.开门到位保持 && s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.空闲 && curFloor == floorNo) //判断目标楼层与电梯所在楼层在同一层才可开门放货
|
||||||
{
|
{
|
||||||
@@ -398,6 +399,17 @@ namespace Tnb.WarehouseMgr
|
|||||||
bool canEnter = false;
|
bool canEnter = false;
|
||||||
if (devName == "Elevator3" || devName == "Elevator4")
|
if (devName == "Elevator3" || devName == "Elevator4")
|
||||||
{
|
{
|
||||||
|
string sno = devName.Match(@"\d+");
|
||||||
|
List<WmsDistaskH> elevatorTasks = _db.Queryable<WmsDistaskH>()
|
||||||
|
.Where(r => r.startlocation_code == $"DT-3-{sno}" && r.endlocation_code == $"DT-1-{sno}" && 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();
|
||||||
|
List<WmsDistaskH> elevatorTasks2 = _db.Queryable<WmsDistaskH>()
|
||||||
|
.Where(r => r.startlocation_code.Contains($"DT-3") && r.endlocation_code.Contains($"DT-1") && 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();
|
||||||
|
if (elevatorTasks.Count >= 2)
|
||||||
|
{
|
||||||
|
return await ToApiResult(HttpStatusCode.InternalServerError, "电梯内已有两托货!");
|
||||||
|
}
|
||||||
canEnter = true;
|
canEnter = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -382,7 +382,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
await db.Insertable(wmsPurchaseOrderH).ExecuteCommandAsync();
|
await db.Insertable(wmsPurchaseOrderH).ExecuteCommandAsync();
|
||||||
|
|
||||||
List<WmsPurchaseOrderD> wmsPurchaseOrderDs = new List<WmsPurchaseOrderD>();
|
List<WmsPurchaseOrderD> wmsPurchaseOrderDs = new List<WmsPurchaseOrderD>();
|
||||||
foreach (var detail in input.details)
|
foreach (var detail in details)
|
||||||
{
|
{
|
||||||
WmsPurchaseOrderD wmsPurchaseOrderD = new WmsPurchaseOrderD();
|
WmsPurchaseOrderD wmsPurchaseOrderD = new WmsPurchaseOrderD();
|
||||||
|
|
||||||
@@ -470,11 +470,11 @@ namespace Tnb.WarehouseMgr
|
|||||||
await db.Insertable(wmsPurchaseReturnH).ExecuteCommandAsync();
|
await db.Insertable(wmsPurchaseReturnH).ExecuteCommandAsync();
|
||||||
|
|
||||||
List<WmsPurchaseReturnD> wmsPurchaseReturnDs = new List<WmsPurchaseReturnD>();
|
List<WmsPurchaseReturnD> wmsPurchaseReturnDs = new List<WmsPurchaseReturnD>();
|
||||||
foreach (var detail in input.details)
|
foreach (var detail in details_return)
|
||||||
{
|
{
|
||||||
WmsPurchaseReturnD wmsPurchaseReturnD = new WmsPurchaseReturnD();
|
WmsPurchaseReturnD wmsPurchaseReturnD = new WmsPurchaseReturnD();
|
||||||
|
|
||||||
wmsPurchaseReturnD.bill_id = wmsPurchaseReturnD.id;
|
wmsPurchaseReturnD.bill_id = wmsPurchaseReturnH.id;
|
||||||
wmsPurchaseReturnD.matcode = detail.material_code;
|
wmsPurchaseReturnD.matcode = detail.material_code;
|
||||||
wmsPurchaseReturnD.unit = detail.unit_code;
|
wmsPurchaseReturnD.unit = detail.unit_code;
|
||||||
|
|
||||||
@@ -490,7 +490,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
throw new AppFriendlyException($@"表体明细中单位{detail.unit_code}在wms系统中未找到!", 500);
|
throw new AppFriendlyException($@"表体明细中单位{detail.unit_code}在wms系统中未找到!", 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
wmsPurchaseReturnD.qty = detail.purchase_quantity;
|
wmsPurchaseReturnD.qty = -detail.purchase_quantity;
|
||||||
wmsPurchaseReturnD.code_batch = detail.code_batch;
|
wmsPurchaseReturnD.code_batch = detail.code_batch;
|
||||||
wmsPurchaseReturnD.erp_line_pk = detail.erp_line_pk;
|
wmsPurchaseReturnD.erp_line_pk = detail.erp_line_pk;
|
||||||
wmsPurchaseReturnD.create_id = WmsWareHouseConst.ErpUserId;
|
wmsPurchaseReturnD.create_id = WmsWareHouseConst.ErpUserId;
|
||||||
@@ -733,70 +733,142 @@ namespace Tnb.WarehouseMgr
|
|||||||
}
|
}
|
||||||
|
|
||||||
await db.Ado.BeginTranAsync();
|
await db.Ado.BeginTranAsync();
|
||||||
WmsMaterialTransfer wmsMaterialTransfer = new WmsMaterialTransfer();
|
|
||||||
string Code = await _billRuleService.GetBillNumber("MaterialTransfer");
|
|
||||||
wmsMaterialTransfer.bill_code = Code;
|
|
||||||
wmsMaterialTransfer.status = WmsWareHouseConst.BILLSTATUS_ADD_ID;
|
|
||||||
wmsMaterialTransfer.bill_date = DateTime.Now;
|
|
||||||
wmsMaterialTransfer.warehouse_outstock = warehouse_outstock.id;
|
|
||||||
wmsMaterialTransfer.warehouse_instock = warehouse_instock.id;
|
|
||||||
wmsMaterialTransfer.biller_out = input.biller_out;
|
|
||||||
wmsMaterialTransfer.depart_out = input.depart_out;
|
|
||||||
wmsMaterialTransfer.biller_in = input.biller_in;
|
|
||||||
wmsMaterialTransfer.depart_in = input.depart_in;
|
|
||||||
wmsMaterialTransfer.deliver_date = input.deliver_date;
|
|
||||||
wmsMaterialTransfer.arrival_date = input.arrival_date;
|
|
||||||
wmsMaterialTransfer.create_id = WmsWareHouseConst.ErpUserId;
|
|
||||||
wmsMaterialTransfer.create_time = DateTime.Now;
|
|
||||||
wmsMaterialTransfer.org_id = WmsWareHouseConst.AdministratorOrgId;
|
|
||||||
wmsMaterialTransfer.erp_bill_code = input.bill_code;
|
|
||||||
wmsMaterialTransfer.transfer_type = transfer_type;
|
|
||||||
wmsMaterialTransfer.erp_pk = input.erp_pk;
|
|
||||||
|
|
||||||
await db.Insertable(wmsMaterialTransfer).ExecuteCommandAsync();
|
List<MaterialTransferDetail> details = input.details.Where(r => r.qty > 0).ToList();
|
||||||
|
List<MaterialTransferDetail> details_return = input.details.Where(r => r.qty < 0).ToList();
|
||||||
|
|
||||||
List<WmsMaterialTransferD> wmsMaterialTransferDs = new List<WmsMaterialTransferD>();
|
if (details.Count > 0)
|
||||||
foreach (var detail in input.details)
|
|
||||||
{
|
{
|
||||||
WmsMaterialTransferD wmsMaterialTransferD = new WmsMaterialTransferD();
|
WmsMaterialTransfer wmsMaterialTransfer = new WmsMaterialTransfer();
|
||||||
wmsMaterialTransferD.lineno = detail.lineno;
|
string Code = await _billRuleService.GetBillNumber("MaterialTransfer");
|
||||||
wmsMaterialTransferD.material_code = detail.material_code;
|
wmsMaterialTransfer.bill_code = Code;
|
||||||
wmsMaterialTransferD.code_batch = detail.code_batch;
|
wmsMaterialTransfer.status = WmsWareHouseConst.BILLSTATUS_ADD_ID;
|
||||||
wmsMaterialTransferD.station_code = detail.station_code;
|
wmsMaterialTransfer.bill_date = DateTime.Now;
|
||||||
wmsMaterialTransferD.qty = detail.qty;
|
wmsMaterialTransfer.warehouse_outstock = warehouse_outstock.id;
|
||||||
wmsMaterialTransferD.bill_id = wmsMaterialTransfer.id;
|
wmsMaterialTransfer.warehouse_instock = warehouse_instock.id;
|
||||||
|
wmsMaterialTransfer.biller_out = input.biller_out;
|
||||||
|
wmsMaterialTransfer.depart_out = input.depart_out;
|
||||||
|
wmsMaterialTransfer.biller_in = input.biller_in;
|
||||||
|
wmsMaterialTransfer.depart_in = input.depart_in;
|
||||||
|
wmsMaterialTransfer.deliver_date = input.deliver_date;
|
||||||
|
wmsMaterialTransfer.arrival_date = input.arrival_date;
|
||||||
|
wmsMaterialTransfer.create_id = WmsWareHouseConst.ErpUserId;
|
||||||
|
wmsMaterialTransfer.create_time = DateTime.Now;
|
||||||
|
wmsMaterialTransfer.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||||
|
wmsMaterialTransfer.erp_bill_code = input.bill_code;
|
||||||
|
wmsMaterialTransfer.transfer_type = transfer_type;
|
||||||
|
wmsMaterialTransfer.erp_pk = input.erp_pk;
|
||||||
|
|
||||||
wmsMaterialTransferD.yxfqty = 0;
|
await db.Insertable(wmsMaterialTransfer).ExecuteCommandAsync();
|
||||||
wmsMaterialTransferD.yzqty = 0;
|
|
||||||
wmsMaterialTransferD.erp_line_pk = detail.erp_line_pk;
|
|
||||||
|
|
||||||
var material = await db.Queryable<BasMaterial>().Where(p => p.code == detail.material_code).FirstAsync();
|
List<WmsMaterialTransferD> wmsMaterialTransferDs = new List<WmsMaterialTransferD>();
|
||||||
if (material != null)
|
foreach (var detail in input.details)
|
||||||
{
|
{
|
||||||
wmsMaterialTransferD.material_id = material.id;
|
WmsMaterialTransferD wmsMaterialTransferD = new WmsMaterialTransferD();
|
||||||
wmsMaterialTransferD.material_specification = material.material_specification;
|
wmsMaterialTransferD.lineno = detail.lineno;
|
||||||
|
wmsMaterialTransferD.material_code = detail.material_code;
|
||||||
|
wmsMaterialTransferD.code_batch = detail.code_batch;
|
||||||
|
wmsMaterialTransferD.station_code = detail.station_code;
|
||||||
|
wmsMaterialTransferD.qty = detail.qty;
|
||||||
|
wmsMaterialTransferD.bill_id = wmsMaterialTransfer.id;
|
||||||
|
|
||||||
|
wmsMaterialTransferD.yxfqty = 0;
|
||||||
|
wmsMaterialTransferD.yzqty = 0;
|
||||||
|
wmsMaterialTransferD.erp_line_pk = detail.erp_line_pk;
|
||||||
|
|
||||||
|
var material = await db.Queryable<BasMaterial>().Where(p => p.code == detail.material_code).FirstAsync();
|
||||||
|
if (material != null)
|
||||||
|
{
|
||||||
|
wmsMaterialTransferD.material_id = material.id;
|
||||||
|
wmsMaterialTransferD.material_specification = material.material_specification;
|
||||||
|
}
|
||||||
|
|
||||||
|
var erpExtendField = await db.Queryable<ErpExtendField>().InnerJoin<DictionaryDataEntity>((a, b) => a.table_id == b.Id).Where((a, b) => b.EnCode == detail.unit_code).Select((a, b) => b).FirstAsync();
|
||||||
|
if (erpExtendField != null)
|
||||||
|
{
|
||||||
|
wmsMaterialTransferD.unit_id = erpExtendField.Id;
|
||||||
|
wmsMaterialTransferD.unit_code = erpExtendField.EnCode;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_LoggerErp2Mes.LogWarning($@"【MaterialTransfer】表体明细中单位{detail.unit_code}在wms系统中未找到!");
|
||||||
|
throw new AppFriendlyException($@"表体明细中单位{detail.unit_code}在wms系统中未找到!", 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
wmsMaterialTransferDs.Add(wmsMaterialTransferD);
|
||||||
}
|
}
|
||||||
|
|
||||||
var erpExtendField = await db.Queryable<ErpExtendField>().InnerJoin<DictionaryDataEntity>((a, b) => a.table_id == b.Id).Where((a, b) => b.EnCode == detail.unit_code).Select((a, b) => b).FirstAsync();
|
await db.Insertable(wmsMaterialTransferDs).ExecuteCommandAsync();
|
||||||
if (erpExtendField != null)
|
LoggerErp2Mes.LogInformation($"【MaterialTransfer】成功生成单据:{Code}");
|
||||||
{
|
|
||||||
wmsMaterialTransferD.unit_id = erpExtendField.Id;
|
|
||||||
wmsMaterialTransferD.unit_code = erpExtendField.EnCode;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_LoggerErp2Mes.LogWarning($@"【MaterialTransfer】表体明细中单位{detail.unit_code}在wms系统中未找到!");
|
|
||||||
throw new AppFriendlyException($@"表体明细中单位{detail.unit_code}在wms系统中未找到!", 500);
|
|
||||||
}
|
|
||||||
|
|
||||||
wmsMaterialTransferDs.Add(wmsMaterialTransferD);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await db.Insertable(wmsMaterialTransferDs).ExecuteCommandAsync();
|
if (details_return.Count > 0)
|
||||||
|
{
|
||||||
|
//WmsPrdReturnH wmsPrdReturnH = new WmsPrdReturnH();
|
||||||
|
//string Code = await _billRuleService.GetBillNumber("WMSPRDRETURN");
|
||||||
|
//wmsPrdReturnH.bill_code = Code;
|
||||||
|
//wmsPrdReturnH.status = WmsWareHouseConst.BILLSTATUS_ADD_ID;
|
||||||
|
//wmsPrdReturnH.bill_date = DateTime.Now;
|
||||||
|
//wmsPrdReturnH.warehouse_outstock = warehouse_outstock.id;
|
||||||
|
//wmsPrdReturnH.warehouse_instock = warehouse_instock.id;
|
||||||
|
//wmsPrdReturnH.biller_out = input.biller_out;
|
||||||
|
//wmsPrdReturnH.depart_out = input.depart_out;
|
||||||
|
//wmsPrdReturnH.biller_in = input.biller_in;
|
||||||
|
//wmsPrdReturnH.depart_in = input.depart_in;
|
||||||
|
//wmsPrdReturnH.deliver_date = input.deliver_date;
|
||||||
|
//wmsPrdReturnH.arrival_date = input.arrival_date;
|
||||||
|
//wmsPrdReturnH.create_id = WmsWareHouseConst.ErpUserId;
|
||||||
|
//wmsPrdReturnH.create_time = DateTime.Now;
|
||||||
|
//wmsPrdReturnH.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||||
|
//wmsPrdReturnH.erp_bill_code = input.bill_code;
|
||||||
|
//wmsPrdReturnH.transfer_type = transfer_type;
|
||||||
|
//wmsPrdReturnH.erp_pk = input.erp_pk;
|
||||||
|
|
||||||
|
//await db.Insertable(wmsPrdReturnH).ExecuteCommandAsync();
|
||||||
|
|
||||||
|
//List<WmsPrdReturnD> wmsPrdReturnDs = new List<WmsPrdReturnD>();
|
||||||
|
//foreach (var detail in input.details)
|
||||||
|
//{
|
||||||
|
// WmsPrdReturnD wmsPrdReturnD = new WmsPrdReturnD();
|
||||||
|
// wmsPrdReturnD.lineno = detail.lineno;
|
||||||
|
// wmsPrdReturnD.material_code = detail.material_code;
|
||||||
|
// wmsPrdReturnD.code_batch = detail.code_batch;
|
||||||
|
// wmsPrdReturnD.station_code = detail.station_code;
|
||||||
|
// wmsPrdReturnD.qty = detail.qty;
|
||||||
|
// wmsPrdReturnD.bill_id = wmsMaterialTransfer.id;
|
||||||
|
|
||||||
|
// wmsPrdReturnD.yxfqty = 0;
|
||||||
|
// wmsPrdReturnD.yzqty = 0;
|
||||||
|
// wmsPrdReturnD.erp_line_pk = detail.erp_line_pk;
|
||||||
|
|
||||||
|
// var material = await db.Queryable<BasMaterial>().Where(p => p.code == detail.material_code).FirstAsync();
|
||||||
|
// if (material != null)
|
||||||
|
// {
|
||||||
|
// wmsPrdReturnD.material_id = material.id;
|
||||||
|
// wmsPrdReturnD.material_code = material.code;
|
||||||
|
// wmsPrdReturnD.material_name = material.name;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// var erpExtendField = await db.Queryable<ErpExtendField>().InnerJoin<DictionaryDataEntity>((a, b) => a.table_id == b.Id).Where((a, b) => b.EnCode == detail.unit_code).Select((a, b) => b).FirstAsync();
|
||||||
|
// if (erpExtendField != null)
|
||||||
|
// {
|
||||||
|
// wmsPrdReturnD.unit_id = erpExtendField.Id;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// _LoggerErp2Mes.LogWarning($@"【MaterialTransfer】表体明细中单位{detail.unit_code}在wms系统中未找到!");
|
||||||
|
// throw new AppFriendlyException($@"表体明细中单位{detail.unit_code}在wms系统中未找到!", 500);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// wmsPrdReturnDs.Add(wmsPrdReturnD);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//await db.Insertable(wmsPrdReturnDs).ExecuteCommandAsync();
|
||||||
|
//LoggerErp2Mes.LogInformation($"【MaterialTransfer】成功生成单据:{Code}");
|
||||||
|
}
|
||||||
|
|
||||||
await db.Ado.CommitTranAsync();
|
await db.Ado.CommitTranAsync();
|
||||||
|
|
||||||
LoggerErp2Mes.LogInformation($"【MaterialTransfer】成功生成单据:{Code}");
|
|
||||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|||||||
@@ -527,7 +527,6 @@ namespace Tnb.WarehouseMgr
|
|||||||
{
|
{
|
||||||
throw new AppFriendlyException("没有可用策略", 500);
|
throw new AppFriendlyException("没有可用策略", 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<WmsCarryH> items = await cyDb.Queryable<WmsCarryH>().LeftJoin<WmsCarryCode>((a, b) => a.id == b.carry_id)
|
List<WmsCarryH> items = await cyDb.Queryable<WmsCarryH>().LeftJoin<WmsCarryCode>((a, b) => a.id == b.carry_id)
|
||||||
.LeftJoin<BasLocation>((a, b, c) => a.location_id == c.id)
|
.LeftJoin<BasLocation>((a, b, c) => a.location_id == c.id)
|
||||||
.Where(whereExpr)
|
.Where(whereExpr)
|
||||||
@@ -2208,56 +2207,56 @@ namespace Tnb.WarehouseMgr
|
|||||||
|
|
||||||
Logger.Information($"当前:{devName.Match(@"\d+")}#梯");
|
Logger.Information($"当前:{devName.Match(@"\d+")}#梯");
|
||||||
|
|
||||||
//var tags = new[] { "SysStatus", "RunStatus", "FloorNo", "DoorStatus", "AGVStatus" };
|
var tags = new[] { "SysStatus", "RunStatus", "FloorNo", "DoorStatus", "AGVStatus" };
|
||||||
//(int sysStatus, int runStatus, int curFloorNo, int doorStatus, int agvStatus) eleStatusMulti = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
|
(int sysStatus, int runStatus, int curFloorNo, int doorStatus, int agvStatus) eleStatusMulti = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
|
||||||
//if (eleStatusMulti.agvStatus != (int)EnumAgvStatus.AGV运行状态)
|
if (eleStatusMulti.agvStatus != (int)EnumAgvStatus.AGV运行状态)
|
||||||
//{
|
{
|
||||||
// _ = await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.AGVControl, 1);
|
_ = await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.AGVControl, 1);
|
||||||
//}
|
}
|
||||||
|
|
||||||
//if (!_elevatorAgvCtlStatusMap.TryGetValue(disTask.id, out int agvCtlStatus) || agvCtlStatus != (int)EnumAgvStatus.AGV运行状态)
|
if (!_elevatorAgvCtlStatusMap.TryGetValue(disTask.id, out int agvCtlStatus) || agvCtlStatus != (int)EnumAgvStatus.AGV运行状态)
|
||||||
//{
|
{
|
||||||
// do
|
do
|
||||||
// {
|
{
|
||||||
// eleStatusMulti = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
|
eleStatusMulti = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
|
||||||
// Logger.Information($"{devName.Match(@"\d+")}#, 当前Agv状态:{eleStatusMulti.agvStatus.ToEnum<EnumAgvStatus>()}");
|
Logger.Information($"{devName.Match(@"\d+")}#, 当前Agv状态:{eleStatusMulti.agvStatus.ToEnum<EnumAgvStatus>()}");
|
||||||
// await Task.Delay(1000);
|
await Task.Delay(1000);
|
||||||
// } while (eleStatusMulti.agvStatus != (int)EnumAgvStatus.AGV运行状态);
|
} while (eleStatusMulti.agvStatus != (int)EnumAgvStatus.AGV运行状态);
|
||||||
// Logger.Information($"{devName.Match(@"\d+")}#, 当前Agv状态:{eleStatusMulti.agvStatus.ToEnum<EnumAgvStatus>()}");
|
Logger.Information($"{devName.Match(@"\d+")}#, 当前Agv状态:{eleStatusMulti.agvStatus.ToEnum<EnumAgvStatus>()}");
|
||||||
// _elevatorAgvCtlStatusMap[disTask.id] = eleStatusMulti.agvStatus;
|
_elevatorAgvCtlStatusMap[disTask.id] = eleStatusMulti.agvStatus;
|
||||||
//}
|
}
|
||||||
|
|
||||||
//int doorStatus = -1;
|
int doorStatus = -1;
|
||||||
//bool closeDoorRes = await _elevatorControlService.SendOpenCloseCmd(devName, 4); //向电梯发送前门关门指令
|
bool closeDoorRes = await _elevatorControlService.SendOpenCloseCmd(devName, 4); //向电梯发送前门关门指令
|
||||||
//Logger.Information($"关门结果:{closeDoorRes}");
|
Logger.Information($"关门结果:{closeDoorRes}");
|
||||||
//do
|
do
|
||||||
//{
|
{
|
||||||
// doorStatus = await _elevatorControlService.GetTagAsync(devName, ElevatorConsts.DoorStatus);
|
doorStatus = await _elevatorControlService.GetTagAsync(devName, ElevatorConsts.DoorStatus);
|
||||||
// Logger.Information($"当前门状态:{doorStatus}");
|
Logger.Information($"当前门状态:{doorStatus}");
|
||||||
// await Task.Delay(1000);
|
await Task.Delay(1000);
|
||||||
//} while (doorStatus != 4);
|
} while (doorStatus != 4);
|
||||||
//Logger.Information($"当前门状态:{doorStatus}");
|
Logger.Information($"当前门状态:{doorStatus}");
|
||||||
|
|
||||||
//int floor = await GetRealFloor(devName, disTask.end_floor);
|
int floor = await GetRealFloor(devName, disTask.end_floor);
|
||||||
|
|
||||||
////电梯任务手动执行任务状态上报
|
//电梯任务手动执行任务状态上报
|
||||||
//(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) tuple = (-1, -1, -1, -1, -1);
|
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) tuple = (-1, -1, -1, -1, -1);
|
||||||
//tuple = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
|
tuple = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
|
||||||
//Logger.Information($"目标楼层:{floor} 当前楼层:{tuple.floorNo}");
|
Logger.Information($"目标楼层:{floor} 当前楼层:{tuple.floorNo}");
|
||||||
|
|
||||||
//Logger.Information($"开始呼梯 {devName}到{floor}");
|
Logger.Information($"开始呼梯 {devName}到{floor}");
|
||||||
////发送到目标楼的指令
|
//发送到目标楼的指令
|
||||||
//dynamic result = await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor);
|
dynamic result = await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor);
|
||||||
|
|
||||||
//do
|
do
|
||||||
//{
|
{
|
||||||
// tuple = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
|
tuple = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
|
||||||
// await Task.Delay(1000);
|
await Task.Delay(1000);
|
||||||
//} while (tuple.sysStatus != 3 || tuple.runStatus != 0 || floor != tuple.floorNo);
|
} 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($"sysStatus:{tuple.sysStatus},runStatus:{tuple.runStatus},当前楼层floorNo:{tuple.floorNo},目标楼层disTask.end_floor={floor}");
|
||||||
|
|
||||||
//if (tuple.sysStatus.ToEnum<EnumSysStatus>() == EnumSysStatus.正常状态 && tuple.runStatus.ToEnum<EnumRunStatus>() == EnumRunStatus.停梯)
|
if (tuple.sysStatus.ToEnum<EnumSysStatus>() == EnumSysStatus.正常状态 && tuple.runStatus.ToEnum<EnumRunStatus>() == EnumRunStatus.停梯)
|
||||||
{
|
{
|
||||||
Logger.Information($"disTask.require_id={disTask.require_id}");
|
Logger.Information($"disTask.require_id={disTask.require_id}");
|
||||||
List<string> disTaskIds = new() { disTasks[0].id };
|
List<string> disTaskIds = new() { disTasks[0].id };
|
||||||
@@ -3728,6 +3727,14 @@ namespace Tnb.WarehouseMgr
|
|||||||
qty = wmsRawmatOutstockD.qty - wmsRawmatOutstockD.actual_outstock_qty;
|
qty = wmsRawmatOutstockD.qty - wmsRawmatOutstockD.actual_outstock_qty;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case WmsWareHouseConst.BIZTYPE_WmsPurchaseReturn_ID:
|
||||||
|
{
|
||||||
|
WmsPurchaseReturnD wmsPurchaseReturnD = await _db.Queryable<WmsPurchaseReturnD>().Where(r => r.id == input.source_id).FirstAsync();
|
||||||
|
if (wmsPurchaseReturnD == null)
|
||||||
|
throw new AppFriendlyException($"来源单据{input.source_id}不存在", 500);
|
||||||
|
qty = wmsPurchaseReturnD.qty - wmsPurchaseReturnD.actual_qty;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (basWarehouse.id)
|
switch (basWarehouse.id)
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
decimal? sum = group.Select(r => r.codeqty).Sum();
|
decimal? sum = group.Select(r => r.codeqty).Sum();
|
||||||
WmsOutsourceD wmsOutsourceD = await _db.Queryable<WmsOutsourceD>().Where(r => r.id == group.Key.require_id).FirstAsync();
|
WmsOutsourceD wmsOutsourceD = await _db.Queryable<WmsOutsourceD>().Where(r => r.id == group.Key.require_id).FirstAsync();
|
||||||
decimal? bind_qty = wmsOutsourceD.bind_qty ?? 0;
|
decimal? bind_qty = wmsOutsourceD.bind_qty ?? 0;
|
||||||
if (sum + bind_qty > wmsOutsourceD.actual_quantity)
|
if (sum + bind_qty > wmsOutsourceD.outsource_quantity)
|
||||||
{
|
{
|
||||||
throw new Exception($"托盘{input.carrycode} 物料{wmsOutsourceD.matcode} 当前绑定数量为{sum} 剩余可绑定数量为{wmsOutsourceD.actual_quantity - bind_qty}!");
|
throw new Exception($"托盘{input.carrycode} 物料{wmsOutsourceD.matcode} 当前绑定数量为{sum} 剩余可绑定数量为{wmsOutsourceD.actual_quantity - bind_qty}!");
|
||||||
}
|
}
|
||||||
@@ -235,7 +235,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
decimal? sum = group.Select(r => r.codeqty).Sum();
|
decimal? sum = group.Select(r => r.codeqty).Sum();
|
||||||
WmsRawmatTransferinstockD wmsRawmatTransferinstockD = await _db.Queryable<WmsRawmatTransferinstockD>().Where(r => r.id == group.Key.require_id).FirstAsync();
|
WmsRawmatTransferinstockD wmsRawmatTransferinstockD = await _db.Queryable<WmsRawmatTransferinstockD>().Where(r => r.id == group.Key.require_id).FirstAsync();
|
||||||
decimal? bind_qty = wmsRawmatTransferinstockD.bind_qty ?? 0;
|
decimal? bind_qty = wmsRawmatTransferinstockD.bind_qty ?? 0;
|
||||||
if (sum + bind_qty > wmsRawmatTransferinstockD.actual_qty)
|
if (sum + bind_qty > wmsRawmatTransferinstockD.qty)
|
||||||
{
|
{
|
||||||
throw new Exception($"托盘{input.carrycode} 物料{wmsRawmatTransferinstockD.matcode} 当前绑定数量为{sum} 剩余可绑定数量为{wmsRawmatTransferinstockD.actual_qty - bind_qty}!");
|
throw new Exception($"托盘{input.carrycode} 物料{wmsRawmatTransferinstockD.matcode} 当前绑定数量为{sum} 剩余可绑定数量为{wmsRawmatTransferinstockD.actual_qty - bind_qty}!");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -465,6 +465,35 @@ namespace Tnb.WarehouseMgr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case WmsWareHouseConst.BIZTYPE_WmsPurchaseReturn_ID:
|
||||||
|
{
|
||||||
|
WmsPurchaseReturnC wmsPurchaseReturnC = await _db.Queryable<WmsPurchaseReturnC>()
|
||||||
|
.Where(r => r.mat_bill_id == wmsDistaskH.source_id && r.carry_id == wmsCarryH.id).FirstAsync();
|
||||||
|
if (wmsPurchaseReturnC != null)
|
||||||
|
{
|
||||||
|
// 返回默认签收数量
|
||||||
|
if (wmsPurchaseReturnC.sign_qty > 0)
|
||||||
|
{
|
||||||
|
List<WmsCarryCode> _wmsCarryCodes = wmsCarryCodes.Where(r => r.carry_id == wmsCarryH.id).ToList();
|
||||||
|
foreach (WmsCarryCode wmsCarryCode in _wmsCarryCodes)
|
||||||
|
{
|
||||||
|
wmsCarryCode.carry_code = wmsCarryH.carry_code;
|
||||||
|
wmsCarryCode.biz_type = wmsDistaskH.biz_type;
|
||||||
|
if (wmsCarryCode.codeqty < wmsPurchaseReturnC.sign_qty)
|
||||||
|
{
|
||||||
|
wmsCarryCode.sign_qty = wmsCarryCode.codeqty;
|
||||||
|
wmsPurchaseReturnC.sign_qty -= wmsCarryCode.codeqty;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
wmsCarryCode.sign_qty = wmsPurchaseReturnC.sign_qty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
WmsRawmatTransferinstockD WmsRawmatTransferinstockD = await _db.Queryable<WmsRawmatTransferinstockD>().Where(it => input.BillId == it.id).FirstAsync();
|
WmsRawmatTransferinstockD WmsRawmatTransferinstockD = await _db.Queryable<WmsRawmatTransferinstockD>().Where(it => input.BillId == it.id).FirstAsync();
|
||||||
WmsRawmatTransferinstockH WmsRawmatTransferinstockH = await _db.Queryable<WmsRawmatTransferinstockH>().Where(it => WmsRawmatTransferinstockD.bill_id == it.id).FirstAsync();
|
WmsRawmatTransferinstockH WmsRawmatTransferinstockH = await _db.Queryable<WmsRawmatTransferinstockH>().Where(it => WmsRawmatTransferinstockD.bill_id == it.id).FirstAsync();
|
||||||
|
|
||||||
if (WmsRawmatTransferinstockD.actual_qty == 0)
|
if (WmsRawmatTransferinstockD.qty == 0)
|
||||||
{
|
{
|
||||||
throw new AppFriendlyException("到货数量为0,没有物料可以打印", 500);
|
throw new AppFriendlyException("到货数量为0,没有物料可以打印", 500);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -40,12 +40,14 @@ namespace Tnb.WarehouseMgr
|
|||||||
var code_batch = "";
|
var code_batch = "";
|
||||||
var material_specification = "";
|
var material_specification = "";
|
||||||
var container_no = "";
|
var container_no = "";
|
||||||
|
var material_code = "";
|
||||||
if (!input.queryJson.IsNullOrWhiteSpace())
|
if (!input.queryJson.IsNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
supplier_code = JObject.Parse(input.queryJson).Value<string>("supplier_code");
|
supplier_code = JObject.Parse(input.queryJson).Value<string>("supplier_code");
|
||||||
code_batch = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.code_batch));
|
code_batch = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.code_batch));
|
||||||
material_specification = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.material_specification));
|
material_specification = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.material_specification));
|
||||||
container_no = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.container_no));
|
container_no = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.container_no));
|
||||||
|
material_code = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.material_code));
|
||||||
}
|
}
|
||||||
|
|
||||||
List<WmsStockReportH?> result = new List<WmsStockReportH?>();
|
List<WmsStockReportH?> result = new List<WmsStockReportH?>();
|
||||||
@@ -53,13 +55,14 @@ namespace Tnb.WarehouseMgr
|
|||||||
{
|
{
|
||||||
List<WmsStockReportH> items = await _db.Queryable<WmsCarryCode>().InnerJoin<WmsCarryH>((a, b) => a.carry_id == b.id)
|
List<WmsStockReportH> items = await _db.Queryable<WmsCarryCode>().InnerJoin<WmsCarryH>((a, b) => a.carry_id == b.id)
|
||||||
.InnerJoin<BasLocation>((a, b, c) => b.location_id == c.id).InnerJoin<BasWarehouse>((a, b, c, d) => c.wh_id == d.id)
|
.InnerJoin<BasLocation>((a, b, c) => b.location_id == c.id).InnerJoin<BasWarehouse>((a, b, c, d) => c.wh_id == d.id)
|
||||||
.InnerJoin<WmsTempCode>((a, b, c, d, e) => e.barcode == a.barcode)
|
.LeftJoin<WmsTempCode>((a, b, c, d, e) => e.barcode == a.barcode)
|
||||||
.InnerJoin<BasMaterial>((a, b, c, d, e, f) => f.id == e.material_id)
|
.InnerJoin<BasMaterial>((a, b, c, d, e, f) => f.id == a.material_id)
|
||||||
.LeftJoin<WmsPurchaseD>((a, b, c, d, e, f, g) => e.require_id == g.id)
|
.LeftJoin<WmsPurchaseD>((a, b, c, d, e, f, g) => e.require_id == g.id)
|
||||||
.LeftJoin<WmsPurchaseH>((a, b, c, d, e, f, g, h) => h.id == g.bill_id)
|
.LeftJoin<WmsPurchaseH>((a, b, c, d, e, f, g, h) => h.id == g.bill_id)
|
||||||
.WhereIF(!string.IsNullOrEmpty(material_specification), (a, b, c, d, e, f) => f.material_specification.Contains(material_specification))
|
.WhereIF(!string.IsNullOrEmpty(material_specification), (a, b, c, d, e, f) => f.material_specification.Contains(material_specification))
|
||||||
.WhereIF(!string.IsNullOrEmpty(code_batch), (a, b, c, d, e, f) => a.code_batch.Contains(code_batch))
|
.WhereIF(!string.IsNullOrEmpty(code_batch), (a, b, c, d, e, f) => a.code_batch.Contains(code_batch))
|
||||||
.WhereIF(!string.IsNullOrEmpty(container_no), (a, b, c, d, e, f) => f.container_no.Contains(container_no))
|
.WhereIF(!string.IsNullOrEmpty(container_no), (a, b, c, d, e, f) => f.container_no.Contains(container_no))
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e, f) => f.code.Contains(material_code))
|
||||||
.Select((a, b, c, d, e, f, g, h) => new WmsStockReportH
|
.Select((a, b, c, d, e, f, g, h) => new WmsStockReportH
|
||||||
{
|
{
|
||||||
org_id = e.org_id,
|
org_id = e.org_id,
|
||||||
@@ -76,6 +79,18 @@ namespace Tnb.WarehouseMgr
|
|||||||
supplier_name = "",
|
supplier_name = "",
|
||||||
}, true).ToListAsync();
|
}, true).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
string ssssss = _db.Queryable<WmsCarryCode>().InnerJoin<WmsCarryH>((a, b) => a.carry_id == b.id)
|
||||||
|
.InnerJoin<BasLocation>((a, b, c) => b.location_id == c.id).InnerJoin<BasWarehouse>((a, b, c, d) => c.wh_id == d.id)
|
||||||
|
.LeftJoin<WmsTempCode>((a, b, c, d, e) => e.barcode == a.barcode)
|
||||||
|
.InnerJoin<BasMaterial>((a, b, c, d, e, f) => f.id == a.material_id)
|
||||||
|
.LeftJoin<WmsPurchaseD>((a, b, c, d, e, f, g) => e.require_id == g.id)
|
||||||
|
.LeftJoin<WmsPurchaseH>((a, b, c, d, e, f, g, h) => h.id == g.bill_id)
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(material_specification), (a, b, c, d, e, f) => f.material_specification.Contains(material_specification))
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(code_batch), (a, b, c, d, e, f) => a.code_batch.Contains(code_batch))
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(container_no), (a, b, c, d, e, f) => f.container_no.Contains(container_no))
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e, f) => f.code.Contains(material_code)).ToSqlString();
|
||||||
|
|
||||||
List<WmsCarryCode> carryCodes = await _db.Queryable<WmsCarryCode>().ToListAsync();
|
List<WmsCarryCode> carryCodes = await _db.Queryable<WmsCarryCode>().ToListAsync();
|
||||||
var storeMap = items.DistinctBy(x => new { x.warehouse_id, x.material_id, x.code_batch }).ToDictionary(x => new { x.warehouse_id, x.material_id, x.code_batch }, x => x);
|
var storeMap = items.DistinctBy(x => new { x.warehouse_id, x.material_id, x.code_batch }).ToDictionary(x => new { x.warehouse_id, x.material_id, x.code_batch }, x => x);
|
||||||
|
|
||||||
@@ -115,14 +130,15 @@ namespace Tnb.WarehouseMgr
|
|||||||
{
|
{
|
||||||
List<WmsStockReportH> items = await _db.Queryable<WmsCarryCode>().InnerJoin<WmsCarryH>((a, b) => a.carry_id == b.id)
|
List<WmsStockReportH> items = await _db.Queryable<WmsCarryCode>().InnerJoin<WmsCarryH>((a, b) => a.carry_id == b.id)
|
||||||
.InnerJoin<BasLocation>((a, b, c) => b.location_id == c.id).InnerJoin<BasWarehouse>((a, b, c, d) => c.wh_id == d.id)
|
.InnerJoin<BasLocation>((a, b, c) => b.location_id == c.id).InnerJoin<BasWarehouse>((a, b, c, d) => c.wh_id == d.id)
|
||||||
.InnerJoin<WmsTempCode>((a, b, c, d, e) => e.barcode == a.barcode)
|
.LeftJoin<WmsTempCode>((a, b, c, d, e) => e.barcode == a.barcode)
|
||||||
.InnerJoin<BasMaterial>((a, b, c, d, e, f) => f.id == e.material_id)
|
.InnerJoin<BasMaterial>((a, b, c, d, e, f) => f.id == a.material_id)
|
||||||
.LeftJoin<WmsPurchaseD>((a, b, c, d, e, f, g) => e.require_id == g.id)
|
.LeftJoin<WmsPurchaseD>((a, b, c, d, e, f, g) => e.require_id == g.id)
|
||||||
.LeftJoin<WmsPurchaseH>((a, b, c, d, e, f, g, h) => h.id == g.bill_id)
|
.LeftJoin<WmsPurchaseH>((a, b, c, d, e, f, g, h) => h.id == g.bill_id)
|
||||||
.WhereIF(!string.IsNullOrEmpty(material_specification), (a, b, c, d, e, f) => f.material_specification.Contains(material_specification))
|
.WhereIF(!string.IsNullOrEmpty(material_specification), (a, b, c, d, e, f) => f.material_specification.Contains(material_specification))
|
||||||
.WhereIF(!string.IsNullOrEmpty(code_batch), (a, b, c, d, e, f) => a.code_batch.Contains(code_batch))
|
.WhereIF(!string.IsNullOrEmpty(code_batch), (a, b, c, d, e, f) => a.code_batch.Contains(code_batch))
|
||||||
.WhereIF(!string.IsNullOrEmpty(supplier_code), (a, b, c, d, e, f, g, h) => h.supplier_code.Contains(supplier_code))
|
.WhereIF(!string.IsNullOrEmpty(supplier_code), (a, b, c, d, e, f, g, h) => h.supplier_code.Contains(supplier_code))
|
||||||
.WhereIF(!string.IsNullOrEmpty(container_no), (a, b, c, d, e, f, g, h) => f.container_no.Contains(container_no))
|
.WhereIF(!string.IsNullOrEmpty(container_no), (a, b, c, d, e, f, g, h) => f.container_no.Contains(container_no))
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e, f) => f.code.Contains(material_code))
|
||||||
.Select((a, b, c, d, e, f, g, h) => new WmsStockReportH
|
.Select((a, b, c, d, e, f, g, h) => new WmsStockReportH
|
||||||
{
|
{
|
||||||
org_id = e.org_id,
|
org_id = e.org_id,
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ using Tnb.WarehouseMgr.Interfaces;
|
|||||||
namespace Tnb.WarehouseMgr
|
namespace Tnb.WarehouseMgr
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 调拨出库单(成品)
|
/// 调拨入库单(成品)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[OverideVisualDev(ModuleConsts.MODULE_WmsTransferInstock_ID)]
|
[OverideVisualDev(ModuleConsts.MODULE_WmsTransferInstock_ID)]
|
||||||
public class WmsTransferInstockService : BaseWareHouseService
|
public class WmsTransferInstockService : BaseWareHouseService
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"AgvRequestUrls": {
|
"AgvRequestUrls": {
|
||||||
"CreateTaskChainUrl": "http://192.168.11.104:1880/api/task-chain/create",
|
"CreateTaskChainUrl": "http://10.147.19.104:5013/api/task-chain/create",
|
||||||
"CancelTaskChainUrl": "http://192.168.11.104:1880/api/task-chain/cancel"
|
"CancelTaskChainUrl": "http://192.168.11.104:1880/api/task-chain/cancel"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user