Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
2024-07-19 08:50:22 +08:00
8 changed files with 3546 additions and 3498 deletions

View File

@@ -553,6 +553,15 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
LoggerBGWCarrySupplement.LogInformation($"【BGWCarrySupplementtimer】 没有未锁定且已占用且库位中没有记录托盘的数据"); LoggerBGWCarrySupplement.LogInformation($"【BGWCarrySupplementtimer】 没有未锁定且已占用且库位中没有记录托盘的数据");
continue; continue;
} }
WmsPretaskH wmsPretaskH = db_BGWCarrySupplementtimer.Queryable<WmsPretaskH>().Where(r => r.endlocation_code == endLocation.location_code
&& r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID && r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID).First();
if (wmsPretaskH != null)
{
LoggerBGWCarrySupplement.LogWarning($"【BGWCarrySupplementtimer】存在未完成的预任务{wmsPretaskH.bill_code} 不能送托盘!");
continue;
}
BasLocation startLocation = wmsLoc.First(); BasLocation startLocation = wmsLoc.First();
//锁定起点库位 //锁定起点库位
@@ -1171,7 +1180,8 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
BasLocation startLocation = rackStartLocations.First(); BasLocation startLocation = rackStartLocations.First();
List<WmsCarryH> wmsCarryHs = db_Floor2timer送空托到上升降区.Queryable<WmsCarryH>().Where(r => r.location_id == startLocation.id).ToList(); List<WmsCarryH> wmsCarryHs = db_Floor2timer送空托到上升降区.Queryable<WmsCarryH>().Where(r => r.location_id == startLocation.id
&& r.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID).ToList();
if (wmsCarryHs.Count == 0) if (wmsCarryHs.Count == 0)
{ {
LoggerFloor2RackDelivery.LogError($"【送空托到上升降区】 起点{startLocation.id} {startLocation.location_code}上找不到料架"); LoggerFloor2RackDelivery.LogError($"【送空托到上升降区】 起点{startLocation.id} {startLocation.location_code}上找不到料架");
@@ -1346,7 +1356,8 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
BasLocation startLocation = rackStartLocations.First(); BasLocation startLocation = rackStartLocations.First();
List<WmsCarryH> wmsCarryHs = db_Floor2timer送满托到下升降区.Queryable<WmsCarryH>().Where(r => r.location_id == startLocation.id).ToList(); List<WmsCarryH> wmsCarryHs = db_Floor2timer送满托到下升降区.Queryable<WmsCarryH>().Where(r => r.location_id == startLocation.id
&& r.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID).ToList();
if (wmsCarryHs.Count == 0) if (wmsCarryHs.Count == 0)
{ {
LoggerFloor2RackDelivery.LogError($"【送满托到下升降区】 起点{startLocation.id} {startLocation.location_code}上找不到料架"); LoggerFloor2RackDelivery.LogError($"【送满托到下升降区】 起点{startLocation.id} {startLocation.location_code}上找不到料架");
@@ -1747,6 +1758,8 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
async void ElevatorTaskExceptionHandle(object args) async void ElevatorTaskExceptionHandle(object args)
{
try
{ {
List<WmsDistaskH> wmsDistaskHs = db_ElevatorTaskExceptionHandle.Queryable<WmsDistaskH>() List<WmsDistaskH> wmsDistaskHs = db_ElevatorTaskExceptionHandle.Queryable<WmsDistaskH>()
.Where(r => r.startlocation_code.Contains("DT") && r.endlocation_code.Contains("DT") && r.act_start_date == null && r.act_end_date == null).ToList(); .Where(r => r.startlocation_code.Contains("DT") && r.endlocation_code.Contains("DT") && r.act_start_date == null && r.act_end_date == null).ToList();
@@ -1764,6 +1777,13 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
wmsDistaskH.device_id = e.device_id; wmsDistaskH.device_id = e.device_id;
await _wareHouseService.ExecuteTargetFloorTask(wmsDistaskH); await _wareHouseService.ExecuteTargetFloorTask(wmsDistaskH);
} }
}
catch(Exception ex)
{
LoggerFloor2RackDelivery.LogError($"【ElevatorTaskExceptionHandle】{ex.Message}");
LoggerFloor2RackDelivery.LogError($"【ElevatorTaskExceptionHandle】{ex.StackTrace}");
}
} }

View File

@@ -9,7 +9,7 @@ namespace Tnb.WarehouseMgr.Entities;
/// </summary> /// </summary>
public partial class WmsCarryStockReport public partial class WmsCarryStockReport
{ {
public int { get; set; } public int index { get; set; }
///// <summary> ///// <summary>
///// 所属组织 ///// 所属组织
///// </summary> ///// </summary>
@@ -23,22 +23,22 @@ public partial class WmsCarryStockReport
/// <summary> /// <summary>
/// 载具编码 /// 载具编码
/// </summary> /// </summary>
public string? { get; set; } public string? carry_code { get; set; }
/// <summary> /// <summary>
/// 载具名称 /// 载具名称
/// </summary> /// </summary>
public string? { get; set; } public string? carry_name { get; set; }
/// <summary> /// <summary>
/// 子载具编码 /// 子载具编码
/// </summary> /// </summary>
public string? { get; set; } public string? membercarry_code { get; set; }
/// <summary> /// <summary>
/// 子载具名称 /// 子载具名称
/// </summary> /// </summary>
public string? { get; set; } public string? membercarry_name { get; set; }
/// <summary> /// <summary>
/// 物料ID /// 物料ID
@@ -48,77 +48,77 @@ public partial class WmsCarryStockReport
/// <summary> /// <summary>
/// 物料编码 /// 物料编码
/// </summary> /// </summary>
public string? { get; set; } public string? material_code { get; set; }
/// <summary> /// <summary>
/// 物料名称 /// 物料名称
/// </summary> /// </summary>
public string? { get; set; } public string? material_name { get; set; }
/// <summary> /// <summary>
/// 仓库名称 /// 仓库名称
/// </summary> /// </summary>
public string? { get; set; } public string? warehouse_name { get; set; }
/// <summary> /// <summary>
/// 库位编码 /// 库位编码
/// </summary> /// </summary>
public string? { get; set; } public string? location_code { get; set; }
/// <summary> /// <summary>
/// 库位名称 /// 库位名称
/// </summary> /// </summary>
public string? { get; set; } public string? location_name { get; set; }
/// <summary> /// <summary>
/// 载具状态 /// 载具状态
/// </summary> /// </summary>
public string? { get; set; } public string? carry_status { get; set; }
/// <summary> /// <summary>
/// 库位状态 /// 库位状态
/// </summary> /// </summary>
public string? { get; set; } public string? location_status { get; set; }
/// <summary> /// <summary>
/// 载具类型 /// 载具类型
/// </summary> /// </summary>
public string? { get; set; } public string? carry_type { get; set; }
/// <summary> /// <summary>
/// 入库时间 /// 入库时间
/// </summary> /// </summary>
public string? { get; set; } public string? instock_time { get; set; }
/// <summary> /// <summary>
/// 条码 /// 条码
/// </summary> /// </summary>
public string? { get; set; } public string? barcode { get; set; }
/// <summary> /// <summary>
/// 批次 /// 批次
/// </summary> /// </summary>
public string? { get; set; } public string? code_batch { get; set; }
/// <summary> /// <summary>
/// 数量 /// 数量
/// </summary> /// </summary>
public decimal? { get; set; } public decimal? qty { get; set; }
/// <summary> /// <summary>
/// 单位 /// 单位
/// </summary> /// </summary>
public string? { get; set; } public string? unit { get; set; }
/// <summary> /// <summary>
/// 操作用户 /// 操作用户
/// </summary> /// </summary>
public string? { get; set; } public string? creator { get; set; }
/// <summary> /// <summary>
/// 绑定时间 /// 绑定时间
/// </summary> /// </summary>
public string? { get; set; } public string? bind_time { get; set; }
} }
@@ -127,7 +127,7 @@ public partial class WmsCarryStockReport
/// </summary> /// </summary>
public partial class WmsCarryStockReportH public partial class WmsCarryStockReportH
{ {
public int { get; set; } public int index { get; set; }
///// <summary> ///// <summary>
///// 所属组织 ///// 所属组织
///// </summary> ///// </summary>
@@ -141,47 +141,47 @@ public partial class WmsCarryStockReportH
/// <summary> /// <summary>
/// 载具编码 /// 载具编码
/// </summary> /// </summary>
public string? { get; set; } public string? carry_code { get; set; }
/// <summary> /// <summary>
/// 载具名称 /// 载具名称
/// </summary> /// </summary>
public string? { get; set; } public string? carry_name { get; set; }
/// <summary> /// <summary>
/// 仓库名称 /// 仓库名称
/// </summary> /// </summary>
public string? { get; set; } public string? warehouse_name { get; set; }
/// <summary> /// <summary>
/// 库位编码 /// 库位编码
/// </summary> /// </summary>
public string? { get; set; } public string? location_code { get; set; }
/// <summary> /// <summary>
/// 库位名称 /// 库位名称
/// </summary> /// </summary>
public string? { get; set; } public string? location_name { get; set; }
/// <summary> /// <summary>
/// 载具状态 /// 载具状态
/// </summary> /// </summary>
public string? { get; set; } public string? carry_status { get; set; }
/// <summary> /// <summary>
/// 库位状态 /// 库位状态
/// </summary> /// </summary>
public string? { get; set; } public string? location_status { get; set; }
/// <summary> /// <summary>
/// 载具类型 /// 载具类型
/// </summary> /// </summary>
public string? { get; set; } public string? carry_type { get; set; }
/// <summary> /// <summary>
/// 入库时间 /// 入库时间
/// </summary> /// </summary>
public string? { get; set; } public string? instock_time { get; set; }
public List<WmsCarryStockReportCode> Details { get; set; } public List<WmsCarryStockReportCode> Details { get; set; }
} }
@@ -192,7 +192,7 @@ public partial class WmsCarryStockReportH
/// </summary> /// </summary>
public partial class WmsCarryStockReportCode public partial class WmsCarryStockReportCode
{ {
public int { get; set; } public int index { get; set; }
///// <summary> ///// <summary>
///// 载具ID ///// 载具ID
///// </summary> ///// </summary>
@@ -201,12 +201,12 @@ public partial class WmsCarryStockReportCode
/// <summary> /// <summary>
/// 载具编码 /// 载具编码
/// </summary> /// </summary>
public string? { get; set; } public string? carry_code { get; set; }
/// <summary> /// <summary>
/// 载具名称 /// 载具名称
/// </summary> /// </summary>
public string? { get; set; } public string? carry_name { get; set; }
///// <summary> ///// <summary>
///// 物料ID ///// 物料ID
@@ -216,32 +216,32 @@ public partial class WmsCarryStockReportCode
/// <summary> /// <summary>
/// 物料编号 /// 物料编号
/// </summary> /// </summary>
public string? { get; set; } public string? material_code { get; set; }
/// <summary> /// <summary>
/// 物料名称 /// 物料名称
/// </summary> /// </summary>
public string? { get; set; } public string? material_name { get; set; }
/// <summary> /// <summary>
/// 条码编号 /// 条码编号
/// </summary> /// </summary>
public string? { get; set; } public string? barcode { get; set; }
/// <summary> /// <summary>
/// 批次 /// 批次
/// </summary> /// </summary>
public string? { get; set; } public string? code_batch { get; set; }
/// <summary> /// <summary>
/// 条码数量 /// 条码数量
/// </summary> /// </summary>
public decimal? { get; set; } public decimal? qty { get; set; }
/// <summary> /// <summary>
/// 单位 /// 单位
/// </summary> /// </summary>
public string? { get; set; } public string? unit { get; set; }
///// <summary> ///// <summary>
///// 操作用户 ///// 操作用户
@@ -251,7 +251,7 @@ public partial class WmsCarryStockReportCode
/// <summary> /// <summary>
/// 绑定时间 /// 绑定时间
/// </summary> /// </summary>
public string? { get; set; } public string? bind_time { get; set; }
} }

View File

@@ -4,6 +4,7 @@ using JNPF.Common.Enums;
using JNPF.DependencyInjection; using JNPF.DependencyInjection;
using JNPF.DynamicApiController; using JNPF.DynamicApiController;
using JNPF.FriendlyException; using JNPF.FriendlyException;
using JNPF.Systems.Entitys.System;
using JNPF.Systems.Interfaces.System; using JNPF.Systems.Interfaces.System;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Components.Forms; using Microsoft.AspNetCore.Components.Forms;
@@ -13,6 +14,7 @@ using Newtonsoft.Json;
using NPOI.SS.Formula.Functions; using NPOI.SS.Formula.Functions;
using SqlSugar; using SqlSugar;
using Tnb.BasicData.Entities; using Tnb.BasicData.Entities;
using Tnb.ProductionMgr.Entities.Entity;
using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Consts; using Tnb.WarehouseMgr.Entities.Consts;
using Tnb.WarehouseMgr.Entities.Dto.ErpInputs; using Tnb.WarehouseMgr.Entities.Dto.ErpInputs;
@@ -511,7 +513,6 @@ namespace Tnb.WarehouseMgr
WmsMaterialTransferD wmsMaterialTransferD = new WmsMaterialTransferD(); WmsMaterialTransferD wmsMaterialTransferD = new WmsMaterialTransferD();
wmsMaterialTransferD.lineno = detail.lineno; wmsMaterialTransferD.lineno = detail.lineno;
wmsMaterialTransferD.material_code = detail.material_code; wmsMaterialTransferD.material_code = detail.material_code;
wmsMaterialTransferD.unit_code = detail.unit_code;
wmsMaterialTransferD.code_batch = detail.code_batch; wmsMaterialTransferD.code_batch = detail.code_batch;
wmsMaterialTransferD.station_code = detail.station_code; wmsMaterialTransferD.station_code = detail.station_code;
wmsMaterialTransferD.qty = detail.qty; wmsMaterialTransferD.qty = detail.qty;
@@ -526,8 +527,20 @@ namespace Tnb.WarehouseMgr
{ {
wmsMaterialTransferD.material_id = material.id; wmsMaterialTransferD.material_id = material.id;
wmsMaterialTransferD.material_specification = material.material_specification; wmsMaterialTransferD.material_specification = material.material_specification;
wmsMaterialTransferD.unit_id = detail.unit_code;
} }
var erpExtendField = await db.Queryable<ErpExtendField>().InnerJoin<DictionaryDataEntity>((a, b) => a.table_id == b.Id).Where((a, b) => a.cunitid == 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); wmsMaterialTransferDs.Add(wmsMaterialTransferD);
} }

View File

@@ -55,6 +55,7 @@ using Tnb.WarehouseMgr.Entities.Enums;
using Tnb.WarehouseMgr.Interfaces; using Tnb.WarehouseMgr.Interfaces;
using static NPOI.HSSF.Util.HSSFColor; using static NPOI.HSSF.Util.HSSFColor;
using Tnb.BasicData; using Tnb.BasicData;
using System.Reflection;
namespace Tnb.WarehouseMgr namespace Tnb.WarehouseMgr
{ {
@@ -584,6 +585,10 @@ namespace Tnb.WarehouseMgr
List<Tuple<WmsCarryH, decimal, BasLocation>>? carrys = new List<Tuple<WmsCarryH, decimal, BasLocation>>(); List<Tuple<WmsCarryH, decimal, BasLocation>>? carrys = new List<Tuple<WmsCarryH, decimal, BasLocation>>();
// 6个下发一条任务链
int move_num = 6;
int endlocation_index = 0;
string[] endlocations = new string[2] { "32609229889045", "32609238573589" };
BasLocation endlocation_ssx = null; BasLocation endlocation_ssx = null;
for (int i = 0; i < itemsASC.Count; i++) for (int i = 0; i < itemsASC.Count; i++)
@@ -594,6 +599,11 @@ namespace Tnb.WarehouseMgr
if (input.needOut <= 0) if (input.needOut <= 0)
{ {
break; break;
}
// 每6个重新获取一次终点
if (i % move_num == 0)
{
endlocation_ssx = await _db.Queryable<BasLocation>().Where(r => endlocations.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync(); endlocation_ssx = await _db.Queryable<BasLocation>().Where(r => endlocations.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync();
} }
@@ -605,10 +615,9 @@ namespace Tnb.WarehouseMgr
if (_wmsCarryCode.codeqty == input.needOut) if (_wmsCarryCode.codeqty == input.needOut)
{ {
input.needOut -= _wmsCarryCode.codeqty; input.needOut -= _wmsCarryCode.codeqty;
BasLocation _endlocation_ssx = await _db.Queryable<BasLocation>().Where(r => new string[2] { "32609229889045", "32609238573589" }.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync(); WmsCarryH _wmsCarryH = itemsASC[j].wmsCarryH;
await _db.Updateable<BasLocation>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => _endlocation_ssx.id == it.id).ExecuteCommandAsync();
carrys.Add(new Tuple<WmsCarryH, decimal, BasLocation>(_wmsCarryH, _wmsCarryCode.codeqty, _endlocation_ssx)); await _db.Updateable<BasLocation>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => endlocation_ssx.id == it.id).ExecuteCommandAsync();
carrys.Add(new Tuple<WmsCarryH, decimal, BasLocation>(_wmsCarryH, _wmsCarryCode.codeqty, endlocation_ssx)); carrys.Add(new Tuple<WmsCarryH, decimal, BasLocation>(_wmsCarryH, _wmsCarryCode.codeqty, endlocation_ssx));
@@ -621,7 +630,6 @@ namespace Tnb.WarehouseMgr
break; break;
// 目前只支持一个料箱只有一个物料 // 目前只支持一个料箱只有一个物料
BasLocation endlocation_ssx = await _db.Queryable<BasLocation>().Where(r => new string[2] { "32609229889045", "32609238573589" }.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync();
input.needOut -= wmsCarryCode.codeqty; input.needOut -= wmsCarryCode.codeqty;
await _db.Updateable<BasLocation>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => endlocation_ssx.id == it.id).ExecuteCommandAsync(); await _db.Updateable<BasLocation>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => endlocation_ssx.id == it.id).ExecuteCommandAsync();
@@ -669,12 +677,12 @@ namespace Tnb.WarehouseMgr
if (!flag) if (!flag)
{ {
throw new AppFriendlyException("点位" + input.targetName + "不存在", 500); throw new AppFriendlyException("点位" + input.targetName + "不存在", 500);
Logger.Information("联核请求CheckPut接口查询X2Server数据:" + data); }
string data = await _redisData.GetHash(strs[0], strs[1]); string data = await _redisData.GetHash(strs[0], strs[1]);
Logger.Information("wcs请求CheckPut接口查询X2Server数据:" + data); Logger.Information("wcs请求CheckPut接口查询X2Server数据:" + data);
JObject? res = JsonConvert.DeserializeObject<JObject>(data); JObject? res = JsonConvert.DeserializeObject<JObject>(data);
bool result = res != null && res["Value"] != null ? res.Value<bool>("Value") : false; bool result = res != null && res["Value"] != null ? res.Value<bool>("Value") : false;
Logger.Information("联核请求CheckPut接口结果CTU可放货" + data); if (!result)
throw new AppFriendlyException("点位" + input.targetName + "不可放", 500); throw new AppFriendlyException("点位" + input.targetName + "不可放", 500);
Logger.Information("wcs请求CheckPut接口结果CTU可放货" + data); Logger.Information("wcs请求CheckPut接口结果CTU可放货" + data);
} }
@@ -2286,11 +2294,12 @@ namespace Tnb.WarehouseMgr
location_code = multiList[i].endlocation_code, location_code = multiList[i].endlocation_code,
instock_time = DateTime.Now instock_time = DateTime.Now
}; };
string endLocId = multiList[i].endlocation_id;
if (carry.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID) WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.id == carry.id).FirstAsync();
// 同步料架下的载具位置 // 同步料架下的载具位置
List<WmsCarryH> carrys = _db.Queryable<WmsCarryD>().Where(r => r.carry_id == carry.id) if (wmsCarryH.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID)
.InnerJoin<WmsCarryH>((a, b) => a.membercarry_id == b.id).Select((a, b) => b).ToList(); {
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(); .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 => carrys.ForEach(r =>
@@ -2711,8 +2720,8 @@ namespace Tnb.WarehouseMgr
WmsElevatorH wmsElevatorH = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == "1" && it.enabled == 1).OrderBy(r => r.task_nums).FirstAsync(); WmsElevatorH wmsElevatorH = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == "1" && it.enabled == 1).OrderBy(r => r.task_nums).FirstAsync();
string elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", ""); string elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", "");
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-2-{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.id == pStartId).First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-4-{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-C-02-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-02-0{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-02-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-04-0{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-04-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-R-04-0{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-R-04-0{elevatorSno}").First());
@@ -2724,8 +2733,8 @@ namespace Tnb.WarehouseMgr
WmsElevatorH wmsElevatorH = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == "1" && it.enabled == 1).OrderBy(r => r.task_nums).FirstAsync(); WmsElevatorH wmsElevatorH = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == "1" && it.enabled == 1).OrderBy(r => r.task_nums).FirstAsync();
string elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", ""); string elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", "");
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-1-{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.id == pStartId).First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-4-{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-C-01-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-01-0{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-01-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-04-0{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-04-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-R-04-0{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-R-04-0{elevatorSno}").First());
@@ -2737,8 +2746,8 @@ namespace Tnb.WarehouseMgr
WmsElevatorH wmsElevatorH = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == "1" && it.enabled == 1).OrderBy(r => r.task_nums).FirstAsync(); WmsElevatorH wmsElevatorH = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == "1" && it.enabled == 1).OrderBy(r => r.task_nums).FirstAsync();
string elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", ""); string elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", "");
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-4-{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.id == pStartId).First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-2-{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-C-04-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-04-0{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-04-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-02-0{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-02-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-R-02-0{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-R-02-0{elevatorSno}").First());
@@ -3109,6 +3118,11 @@ namespace Tnb.WarehouseMgr
{ {
try try
{ {
List<WmsCarryD> wmsCarryCodes = _db.Queryable<WmsCarryD>().Where(r => r.carry_id == rackid).ToList();
int move_num = 6;
string[] endlocations = new string[2] { WmsWareHouseConst.ZZCSSX111011, WmsWareHouseConst.ZZCSSX111012 };
BasLocation startLocation = null;
int index = 0; int index = 0;
foreach (WmsCarryD wmsCarryD in wmsCarryCodes) foreach (WmsCarryD wmsCarryD in wmsCarryCodes)
@@ -3122,11 +3136,12 @@ namespace Tnb.WarehouseMgr
{ {
Logger.LogWarning("没有可用的入库库位"); Logger.LogWarning("没有可用的入库库位");
continue; continue;
// todo 11、12线 分配方式暂定,待更改 }
BasLocation basLocation011 = _db.Queryable<BasLocation>().Where(r => r.id == WmsWareHouseConst.ZZCSSX111011).First();
BasLocation basLocation012 = _db.Queryable<BasLocation>().Where(r => r.id == WmsWareHouseConst.ZZCSSX111012).First(); // 每6个重新获取一次起点
if (index % move_num == 0)
{
startLocation = await _db.Queryable<BasLocation>().Where(r => endlocations.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync(); startLocation = await _db.Queryable<BasLocation>().Where(r => endlocations.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync();
BasLocation startLocation = basLocation011.task_nums >= basLocation012.task_nums ? basLocation012 : basLocation011;
} }
BasLocation endLocation = endLocations[0]; BasLocation endLocation = endLocations[0];
@@ -3185,6 +3200,8 @@ namespace Tnb.WarehouseMgr
else else
{ {
Logger.LogInformation($"【二楼kiva把料架送到下升降机后生成中储仓入库任务】 未成功生成预任务 起点{startLocation.location_code} 终点{endLocation.location_code} 料箱 {wmsCarryD.membercarry_code}"); Logger.LogInformation($"【二楼kiva把料架送到下升降机后生成中储仓入库任务】 未成功生成预任务 起点{startLocation.location_code} 终点{endLocation.location_code} 料箱 {wmsCarryD.membercarry_code}");
}
index++; index++;
s_floor2CreatePretask.Release(); s_floor2CreatePretask.Release();

View File

@@ -34,10 +34,7 @@ namespace Tnb.WarehouseMgr
_userManager = userManager; _userManager = userManager;
} }
/// <summary> [HttpPost]
/// 转库单
/// </summary>
[HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> CarryStock(CarryStockInput input) public async Task<dynamic> CarryStock(CarryStockInput input)
{ {
var warehouse_id = ""; var warehouse_id = "";
@@ -66,25 +63,25 @@ namespace Tnb.WarehouseMgr
.OrderByDescending((a, b, c, d, e, f) => b.carry_code) .OrderByDescending((a, b, c, d, e, f) => b.carry_code)
.Select((a, b, c, d, e, f) => new WmsCarryStockReport .Select((a, b, c, d, e, f) => new WmsCarryStockReport
{ {
= c.whname, warehouse_name = c.whname,
carry_id = b.id, carry_id = b.id,
= string.IsNullOrEmpty(b.carry_code) ? "空托盘堆垛" : b.carry_code, carry_code = string.IsNullOrEmpty(b.carry_code) ? "空托盘堆垛" : b.carry_code,
= string.IsNullOrEmpty(b.carry_code) ? "空托盘堆垛" : b.carry_name, carry_name = string.IsNullOrEmpty(b.carry_code) ? "空托盘堆垛" : b.carry_name,
= b.is_lock == 1 ? "锁定" : "未锁定", carry_status = b.is_lock == 1 ? "锁定" : "未锁定",
= d.carrystd_name, carry_type = d.carrystd_name,
= a.location_code, location_code = a.location_code,
= a.location_name, location_name = a.location_name,
= b.is_lock == 1 ? "锁定" : "未锁定", location_status = b.is_lock == 1 ? "锁定" : "未锁定",
= b.instock_time != null ? b.instock_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : "", instock_time = b.instock_time != null ? b.instock_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
= e.barcode, barcode = e.barcode,
= e.code_batch, code_batch = e.code_batch,
= e.codeqty, qty = e.codeqty,
material_id = e.material_id, material_id = e.material_id,
= e.material_code, material_code = e.material_code,
= f.name, material_name = f.name,
= e.unit_id, unit = e.unit_id,
= e.create_id, creator = e.create_id,
= e.create_time != null ? e.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : "" bind_time = e.create_time != null ? e.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
}) })
.ToListAsync(); .ToListAsync();
@@ -104,27 +101,27 @@ namespace Tnb.WarehouseMgr
.WhereIF(!string.IsNullOrEmpty(material_id), (a, b, c, d, e, f, g) => g.id == material_id) .WhereIF(!string.IsNullOrEmpty(material_id), (a, b, c, d, e, f, g) => g.id == material_id)
.Select((a, b, c, d, e, f, g, h) => new WmsCarryStockReport .Select((a, b, c, d, e, f, g, h) => new WmsCarryStockReport
{ {
= c.whname, warehouse_name = c.whname,
carry_id = b.id, carry_id = b.id,
= b.carry_code, carry_code = b.carry_code,
= b.carry_name, carry_name = b.carry_name,
= h.carry_code, membercarry_code = h.carry_code,
= h.carry_name, membercarry_name = h.carry_name,
= b.is_lock == 1 ? "锁定" : "未锁定", carry_status = b.is_lock == 1 ? "锁定" : "未锁定",
= d.carrystd_name, carry_type = d.carrystd_name,
= a.location_code, location_code = a.location_code,
= a.location_name, location_name = a.location_name,
= b.is_lock == 1 ? "锁定" : "未锁定", location_status = b.is_lock == 1 ? "锁定" : "未锁定",
= b.instock_time != null ? b.instock_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : "", instock_time = b.instock_time != null ? b.instock_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
= f.barcode, barcode = f.barcode,
= f.code_batch, code_batch = f.code_batch,
= f.codeqty, qty = f.codeqty,
material_id = f.material_id, material_id = f.material_id,
= f.material_code, material_code = f.material_code,
= g.name, material_name = g.name,
= f.unit_id, unit = f.unit_id,
= f.create_id, creator = f.create_id,
= f.create_time != null ? f.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : "" bind_time = f.create_time != null ? f.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
}) })
.ToListAsync(); .ToListAsync();
@@ -138,7 +135,7 @@ namespace Tnb.WarehouseMgr
_ = storeMap.TryGetValue(itGroup.Key, out WmsCarryStockReport? report); _ = storeMap.TryGetValue(itGroup.Key, out WmsCarryStockReport? report);
WmsCarryStockReportH stockReport = report.Adapt<WmsCarryStockReportH>(); WmsCarryStockReportH stockReport = report.Adapt<WmsCarryStockReportH>();
if (report. != "空托盘堆垛") if (report.carry_code != "空托盘堆垛")
{ {
List<WmsCarryStockReport> curCarryCodes = items.FindAll(x => x.carry_id == itGroup.Key.carry_id); List<WmsCarryStockReport> curCarryCodes = items.FindAll(x => x.carry_id == itGroup.Key.carry_id);
@@ -148,19 +145,19 @@ namespace Tnb.WarehouseMgr
{ {
index++; index++;
WmsCarryStockReportCode wmsCarryStockReportCode = new(); WmsCarryStockReportCode wmsCarryStockReportCode = new();
wmsCarryStockReportCode. = index; wmsCarryStockReportCode.index = index;
//wmsCarryStockReportCode.carry_id = x.carry_id; //wmsCarryStockReportCode.carry_id = x.carry_id;
wmsCarryStockReportCode. = !string.IsNullOrEmpty(x.) ? x. : x.; wmsCarryStockReportCode.carry_code = !string.IsNullOrEmpty(x.membercarry_code) ? x.membercarry_code : x.carry_code;
wmsCarryStockReportCode. = !string.IsNullOrEmpty(x.) ? x. : x.; wmsCarryStockReportCode.carry_name = !string.IsNullOrEmpty(x.membercarry_name) ? x.membercarry_name : x.carry_name;
//wmsCarryStockReportCode.material_id = x.material_id; //wmsCarryStockReportCode.material_id = x.material_id;
wmsCarryStockReportCode. = x.; wmsCarryStockReportCode.material_code = x.material_code;
wmsCarryStockReportCode. = x.; wmsCarryStockReportCode.material_name = x.material_name;
wmsCarryStockReportCode. = x.; wmsCarryStockReportCode.barcode = x.barcode;
wmsCarryStockReportCode. = x.; wmsCarryStockReportCode.code_batch = x.code_batch;
wmsCarryStockReportCode. = x.; wmsCarryStockReportCode.qty = x.qty;
wmsCarryStockReportCode. = x.; wmsCarryStockReportCode.unit = x.unit;
//wmsCarryStockReportCode.创建用户 = x.操作用户; //wmsCarryStockReportCode.创建用户 = x.操作用户;
wmsCarryStockReportCode. = x.; wmsCarryStockReportCode.bind_time = x.bind_time;
wmsCarryStockReportCodes.Add(wmsCarryStockReportCode); wmsCarryStockReportCodes.Add(wmsCarryStockReportCode);
}); });
@@ -176,7 +173,7 @@ namespace Tnb.WarehouseMgr
int rowIndex = 0; int rowIndex = 0;
List<WmsCarryStockReportH> pages = result.Skip((input.currentPage - 1) * input.pageSize).Take(input.pageSize).ToList(); List<WmsCarryStockReportH> pages = result.Skip((input.currentPage - 1) * input.pageSize).Take(input.pageSize).ToList();
pages.ForEach(page => { rowIndex++; page. = rowIndex; }); pages.ForEach(page => { rowIndex++; page.index = rowIndex; });
SqlSugarPagedList<WmsCarryStockReportH> pagedList = new() SqlSugarPagedList<WmsCarryStockReportH> pagedList = new()
{ {

View File

@@ -28,8 +28,8 @@ namespace Tnb.WarehouseMgr
WmsPretaskH preTask = await _db.Queryable<WmsPretaskH>().SingleAsync(it => it.id == disTask.pretask_id); WmsPretaskH preTask = await _db.Queryable<WmsPretaskH>().SingleAsync(it => it.id == disTask.pretask_id);
if (preTask != null) if (preTask != null)
{ {
preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; //preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID;
_ = await _db.Updateable(preTask).UpdateColumns(it => it.status).ExecuteCommandAsync(); //_ = await _db.Updateable(preTask).UpdateColumns(it => it.status).ExecuteCommandAsync();
} }
_ = await _db.Deleteable<WmsElevatorUnexecute>().Where(it => it.distask_id == id).ExecuteCommandAsync(); _ = await _db.Deleteable<WmsElevatorUnexecute>().Where(it => it.distask_id == id).ExecuteCommandAsync();
_ = await _db.Deleteable(disTask).ExecuteCommandAsync(); _ = await _db.Deleteable(disTask).ExecuteCommandAsync();

View File

@@ -1015,7 +1015,7 @@ namespace Tnb.WarehouseMgr
commonCreatePretaskInput.endlocation_id = wmsMaterialTransferCarry.endlocation_id; commonCreatePretaskInput.endlocation_id = wmsMaterialTransferCarry.endlocation_id;
commonCreatePretaskInput.carry_id = wmsMaterialTransferCarry.carry_id; commonCreatePretaskInput.carry_id = wmsMaterialTransferCarry.carry_id;
commonCreatePretaskInput.carry_code = wmsMaterialTransferCarry.carry_code; commonCreatePretaskInput.carry_code = wmsMaterialTransferCarry.carry_code;
commonCreatePretaskInput.task_type = WmsWareHouseConst.BIZTYPE_WMSTRANSFER_ID; commonCreatePretaskInput.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID;
commonCreatePretaskInput.biz_type = WmsWareHouseConst.BIZTYPE_WMSMATERIALTRANSFER_ID; commonCreatePretaskInput.biz_type = WmsWareHouseConst.BIZTYPE_WMSMATERIALTRANSFER_ID;
commonCreatePretaskInput.source_id = wmsMaterialTransferCarry.mat_bill_id; commonCreatePretaskInput.source_id = wmsMaterialTransferCarry.mat_bill_id;
commonCreatePretaskInput.isExcuteMission = false; commonCreatePretaskInput.isExcuteMission = false;
@@ -1175,7 +1175,7 @@ namespace Tnb.WarehouseMgr
{ {
try try
{ {
List<WmsCarryH> wmsCarryHs = _db.Queryable<WmsCarryH>().Where(r => r.work_station == input.work_station && r.is_lock == 0 List<WmsCarryH> wmsCarryHs = _db.Queryable<WmsCarryH>().Where(r => r.work_station == input.work_station && r.is_lock == 0 && r.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID
&& (r.carry_status == ((int)(EnumCarryStatus.)).ToString() || r.carry_status == ((int)(EnumCarryStatus.)).ToString())).ToList(); && (r.carry_status == ((int)(EnumCarryStatus.)).ToString() || r.carry_status == ((int)(EnumCarryStatus.)).ToString())).ToList();
if (string.IsNullOrEmpty(input.work_station)) if (string.IsNullOrEmpty(input.work_station))
{ {

View File

@@ -15,6 +15,7 @@ using Newtonsoft.Json;
using Npgsql.TypeHandlers; using Npgsql.TypeHandlers;
using SqlSugar; using SqlSugar;
using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Entities.Entity;
using Tnb.ProductionMgr.Entities.Entity.ErpEntity;
namespace JNPF.Systems.Common; namespace JNPF.Systems.Common;