This commit is contained in:
qianjiawei
2023-11-09 16:58:18 +08:00
16 changed files with 188 additions and 69 deletions

View File

@@ -254,4 +254,14 @@ public partial class BasMaterial : BaseEntity<string>
/// </summary> /// </summary>
public string? is_create_sub_work_order { get; set; } public string? is_create_sub_work_order { get; set; }
/// <summary>
/// 保质期
/// </summary>
public int? quality_guarantee_period { get; set; }
/// <summary>
/// DI编码
/// </summary>
public string? di { get; set; }
} }

View File

@@ -198,4 +198,9 @@ public partial class PrdMoTask : BaseEntity<string>
/// </summary> /// </summary>
public string? ebom_id { get; set; } public string? ebom_id { get; set; }
/// <summary>
/// 批号
/// </summary>
public string? batch { get; set; }
} }

View File

@@ -17,12 +17,12 @@ public partial class PrdOutPackMarkLabel : BaseEntity<string>
/// <summary> /// <summary>
/// 是否喷码 0 否 1 是 /// 是否喷码 0 否 1 是
/// </summary> /// </summary>
public int is_mark { get; set; } public int? is_mark { get; set; }
/// <summary> /// <summary>
/// 是否贴标 0 否 1 是 /// 是否贴标 0 否 1 是
/// </summary> /// </summary>
public int is_label { get; set; } public int? is_label { get; set; }
/// <summary> /// <summary>
/// 任务单号 /// 任务单号

View File

@@ -2753,18 +2753,35 @@ namespace Tnb.ProductionMgr
}); });
if (prdMoTask == null) throw Oops.Bah("没找到对应任务单"); if (prdMoTask == null) throw Oops.Bah("没找到对应任务单");
PrdOutPackMarkLabel prdOutPackMarkLabel = new PrdOutPackMarkLabel() if (await _db.Queryable<PrdOutPackMarkLabel>().Where(x =>
x.mo_task_code == prdMoTask.mo_task_code && x.status == "0" && x.is_label == 0 && x.is_mark==null).AnyAsync())
{ {
is_mark = 0, await _db.Updateable<PrdOutPackMarkLabel>()
is_label = 0, .SetColumns(x => x.is_mark == 0)
mo_task_code = prdMoTask.mo_task_code, .Where(x => x.mo_task_code == prdMoTask.mo_task_code && x.status == "0" && x.is_label == 0 &&
material_code = prdMoTask.material_code, x.is_mark == null)
create_time = DateTime.Now, .ExecuteCommandAsync();
}; }
else
{
PrdOutPackMarkLabel prdOutPackMarkLabel = new PrdOutPackMarkLabel()
{
is_mark = 0,
is_label = null,
mo_task_code = prdMoTask.mo_task_code,
material_code = prdMoTask.material_code,
create_time = DateTime.Now,
};
await _db.Insertable<PrdOutPackMarkLabel>(prdOutPackMarkLabel).ExecuteCommandAsync(); await _db.Insertable<PrdOutPackMarkLabel>(prdOutPackMarkLabel).ExecuteCommandAsync();
}
return prdMoTask.mo_task_code + "/" + prdMoTask.material_code; PrdMoTask parent = await _db.Queryable<PrdMoTask>().SingleAsync(x => x.id == prdMoTask.parent_id);
BasMaterial basMaterial = await _db.Queryable<BasMaterial>().SingleAsync(x=>x.id==parent.material_id);
string code = $"(01){basMaterial.di ?? ""}\\n(11){DateTime.Now.ToString("yyMMdd")}\\n(17){DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyMMdd")}\\n(10){parent.batch??""}";
return code;
} }
/// <summary> /// <summary>
@@ -2781,19 +2798,35 @@ namespace Tnb.ProductionMgr
}); });
if (prdMoTask == null) throw Oops.Bah("没找到对应任务单"); if (prdMoTask == null) throw Oops.Bah("没找到对应任务单");
PrdOutPackMarkLabel prdOutPackMarkLabel = new PrdOutPackMarkLabel() if (await _db.Queryable<PrdOutPackMarkLabel>().Where(x =>
x.mo_task_code == prdMoTask.mo_task_code && x.status == "0" && x.is_label == null && x.is_mark==0).AnyAsync())
{ {
is_mark = 0, await _db.Updateable<PrdOutPackMarkLabel>()
is_label = 0, .SetColumns(x => x.is_label == 0)
mo_task_code = prdMoTask.mo_task_code, .Where(x => x.mo_task_code == prdMoTask.mo_task_code && x.status == "0" && x.is_label == null &&
material_code = prdMoTask.material_code, x.is_mark == 0)
create_time = DateTime.Now, .ExecuteCommandAsync();
station_id = input.station_id, }
}; else
{
PrdOutPackMarkLabel prdOutPackMarkLabel = new PrdOutPackMarkLabel()
{
is_mark = null,
is_label = 0,
mo_task_code = prdMoTask.mo_task_code,
material_code = prdMoTask.material_code,
create_time = DateTime.Now,
};
await _db.Insertable<PrdOutPackMarkLabel>(prdOutPackMarkLabel).ExecuteCommandAsync(); await _db.Insertable<PrdOutPackMarkLabel>(prdOutPackMarkLabel).ExecuteCommandAsync();
}
return prdMoTask.mo_task_code + "/" + prdMoTask.material_code; PrdMoTask parent = await _db.Queryable<PrdMoTask>().SingleAsync(x => x.id == prdMoTask.parent_id);
BasMaterial basMaterial = await _db.Queryable<BasMaterial>().SingleAsync(x=>x.id==parent.material_id);
string code = $"(01){basMaterial.di ?? ""}\\n(11){DateTime.Now.ToString("yyMMdd")}\\n(17){DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyMMdd")}\\n(10){parent.batch??""}";
return code;
} }
} }

View File

@@ -498,11 +498,12 @@ namespace Tnb.ProductionMgr
/// <returns></returns> /// <returns></returns>
public async Task<dynamic> OutPackMarkCheck(MarkingLabelInput input) public async Task<dynamic> OutPackMarkCheck(MarkingLabelInput input)
{ {
string[] arr = input.mark_code.Split("/"); string[] arr = input.mark_code.Split("(10)");
if (arr.Length > 1) if (arr.Length > 1)
{ {
string mo_task_code = arr[0]; string batch = arr[1];
PrdMoTask prdMoTask = await _db.Queryable<PrdMoTask>().Where(x => x.mo_task_code == mo_task_code).FirstAsync(); PrdMoTask prdMoTask = await _db.Queryable<PrdMoTask>().Where(x => x.batch == batch).FirstAsync();
string mo_task_code = prdMoTask.mo_task_code;
if (prdMoTask == null) throw Oops.Bah("未找到对应任务单"); if (prdMoTask == null) throw Oops.Bah("未找到对应任务单");
BasMaterial basMaterial = await _db.Queryable<BasMaterial>().Where(x => x.id == prdMoTask.material_id).FirstAsync(); BasMaterial basMaterial = await _db.Queryable<BasMaterial>().Where(x => x.id == prdMoTask.material_id).FirstAsync();
DictionaryDataEntity unit = await _db.Queryable<DictionaryTypeEntity>() DictionaryDataEntity unit = await _db.Queryable<DictionaryTypeEntity>()
@@ -567,11 +568,12 @@ namespace Tnb.ProductionMgr
/// <returns></returns> /// <returns></returns>
public async Task<dynamic> OutPackLabelCheck(MarkingLabelInput input) public async Task<dynamic> OutPackLabelCheck(MarkingLabelInput input)
{ {
string[] arr = input.mark_code.Split("/"); string[] arr = input.label_code.Split("(10)");
if (arr.Length > 1) if (arr.Length > 1)
{ {
string mo_task_code = arr[0]; string batch = arr[1];
PrdMoTask prdMoTask = await _db.Queryable<PrdMoTask>().Where(x => x.mo_task_code == mo_task_code).FirstAsync(); PrdMoTask prdMoTask = await _db.Queryable<PrdMoTask>().Where(x => x.batch == batch).FirstAsync();
string mo_task_code = prdMoTask.mo_task_code;
if (prdMoTask == null) throw Oops.Bah("未找到对应任务单"); if (prdMoTask == null) throw Oops.Bah("未找到对应任务单");
BasMaterial basMaterial = await _db.Queryable<BasMaterial>().Where(x => x.id == prdMoTask.material_id).FirstAsync(); BasMaterial basMaterial = await _db.Queryable<BasMaterial>().Where(x => x.id == prdMoTask.material_id).FirstAsync();
DictionaryDataEntity unit = await _db.Queryable<DictionaryTypeEntity>() DictionaryDataEntity unit = await _db.Queryable<DictionaryTypeEntity>()

View File

@@ -184,7 +184,7 @@ public class ModuleConsts
public const string MODULE_WMSPOINT_ID = "26099196480805"; public const string MODULE_WMSPOINT_ID = "26099196480805";
/// <summary> /// <summary>
/// 模块标识-PDA寄存出 /// 模块标识-PDA扫码入
/// </summary> /// </summary>
public const string MODULE_WMSSCANCODEINSTOCKPDA_ID = "28576495374869"; public const string MODULE_WMSSCANCODEINSTOCKPDA_ID = "28576495374869";
/// <summary> /// <summary>

View File

@@ -73,5 +73,9 @@ public partial class WmsAreaH : BaseEntity<string>
/// 时间戳(用于并发控制) /// 时间戳(用于并发控制)
/// </summary> /// </summary>
public DateTime? timestamp { get; set; } public DateTime? timestamp { get; set; }
/// <summary>
/// 第三方设备类型
/// </summary>
public string third_eqp_type { get; set; }
} }

View File

@@ -13,4 +13,9 @@ public partial class WmsPretaskH : ITaskManagerDel
/// </summary> /// </summary>
[SugarColumn(IsIgnore = true)] [SugarColumn(IsIgnore = true)]
public int move_num { get; set; } public int move_num { get; set; }
/// <summary>
/// 第三方设备类型
/// </summary>
[SugarColumn(IsIgnore = true)]
public string third_eqp_type { get; set; }
} }

View File

@@ -8,5 +8,7 @@
CTU = 1, CTU = 1,
KIVA = 2, KIVA = 2,
AGV = 3, AGV = 3,
= 4,
线 = 5,
} }
} }

View File

@@ -218,7 +218,7 @@ namespace Tnb.WarehouseMgr
try try
{ {
Logger.Information($"任务链编号:{input.taskChainCode},状态:{input.status},设备ID{input.deviceID}"); Logger.Information($"任务链编号:{input.taskChainCode},状态:{input.status},设备ID{input.deviceID}");
switch (input.status) /*switch (input.status)
{ {
case "CREATED": break; case "CREATED": break;
case "ALLOCATED": break; case "ALLOCATED": break;
@@ -242,9 +242,23 @@ namespace Tnb.WarehouseMgr
case "FAILURE": break; case "FAILURE": break;
case "FINISHED": break; case "FINISHED": break;
default: break; default: break;
}*/
if (input.taskChainCode.Trim().IsNullOrEmpty())
{
return await ToApiResult(HttpStatusCode.InternalServerError, "请重试!");
} }
//写入redis
//await _cacheManager.SetAsync($"{input.taskChainCode}", $"任务链状态上报,上报状态{input.status}"); List<WmsDistaskH> disTasks = await _db.Queryable<WmsDistaskH>().Where(it => it.bill_code.Contains(input.taskChainCode)).ToListAsync();
List<EqpEquipment> eps = await _db.Queryable<EqpEquipment>().Where(it => it.code.Contains(input.deviceID)).ToListAsync();
TaskExecuteUpInput taskExecuteUpInput = new()
{
disTaskIds = disTasks.Select(x => x.id).ToList(),
EqpIds = eps.Select(x => x.id).ToList(),
};
await _wareHouseService.TaskExecute(taskExecuteUpInput);
ConnectionConfigOptions opts = App.GetOptions<ConnectionConfigOptions>(); ConnectionConfigOptions opts = App.GetOptions<ConnectionConfigOptions>();
UserAgent userAgent = new(App.HttpContext); UserAgent userAgent = new(App.HttpContext);
//写系统日志 //写系统日志
@@ -321,6 +335,10 @@ namespace Tnb.WarehouseMgr
return await ToApiResult(HttpStatusCode.InternalServerError, "请重试!"); return await ToApiResult(HttpStatusCode.InternalServerError, "请重试!");
throw; throw;
} }
finally
{
_ = InvokeGenPretaskExcute();
}
return await ToApiResult(HttpStatusCode.OK, "成功"); return await ToApiResult(HttpStatusCode.OK, "成功");
} }

View File

@@ -6,13 +6,9 @@
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<GenerateDocumentationFile>True</GenerateDocumentationFile> <GenerateDocumentationFile>True</GenerateDocumentationFile>
<Configurations>Debug;Release;tianyi</Configurations> <Configurations>Debug;Release</Configurations>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'" />
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\BasicData\Tnb.BasicData.Interfaces\Tnb.BasicData.Interfaces.csproj" /> <ProjectReference Include="..\..\BasicData\Tnb.BasicData.Interfaces\Tnb.BasicData.Interfaces.csproj" />
<ProjectReference Include="..\..\EquipMgr\Tnb.EquipMgr.Entities\Tnb.EquipMgr.Entities.csproj" /> <ProjectReference Include="..\..\EquipMgr\Tnb.EquipMgr.Entities\Tnb.EquipMgr.Entities.csproj" />

View File

@@ -252,21 +252,24 @@ namespace Tnb.WarehouseMgr
//获取所有未下发的预任务申请 //获取所有未下发的预任务申请
List<WmsPretaskH> preTasks = await db.Queryable<WmsPretaskH>().InnerJoin<WmsCarryH>((a, b) => a.startlocation_id == b.location_id && a.carry_id == b.id) List<WmsPretaskH> preTasks = await db.Queryable<WmsPretaskH>().InnerJoin<WmsCarryH>((a, b) => a.startlocation_id == b.location_id && a.carry_id == b.id)
.InnerJoin<WmsAreaH>((a, b, c) => a.area_id == c.id) .InnerJoin<WmsAreaH>((a, b, c) => a.area_id == c.id)
.InnerJoin<BasLocation>((a, b, c, d) => a.endlocation_id == d.id && d.is_use == "0")
.Where(a => a.status == WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID && !string.IsNullOrWhiteSpace(a.startlocation_id)) .Where(a => a.status == WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID && !string.IsNullOrWhiteSpace(a.startlocation_id))
.OrderBy(a => new { priority = SqlFunc.Desc(a.priority), a.bill_code }) .OrderBy(a => new { priority = SqlFunc.Desc(a.priority), a.bill_code })
.Select((a, b, c) => new WmsPretaskH .Select((a, b, c, d) => new WmsPretaskH
{ {
move_num = c.move_num move_num = c.move_num,
third_eqp_type = c.third_eqp_type,
}, true) }, true)
.ToListAsync(); .ToListAsync();
List<WmsPretaskH> agvElevatorTasks = preTasks List<WmsPretaskH> agvElevatorTasks = preTasks
.Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) && .Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) &&
!it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)) !it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase))
.ToList(); .ToList();
preTasks = preTasks.Where(it => !agvElevatorTasks.Select(x=>x.endlocation_code).Contains(it.endlocation_code)).ToList(); preTasks = preTasks.Where(it => !agvElevatorTasks.Select(x => x.endlocation_code).Contains(it.endlocation_code)).ToList();
IEnumerable<WmsPretaskH?> firstEleGrp = agvElevatorTasks.GroupBy(g => g.endlocation_code).Select(t => t.OrderBy(o => o.bill_code).FirstOrDefault()); IEnumerable<WmsPretaskH?> firstEleGrp = agvElevatorTasks.GroupBy(g => g.endlocation_code).Select(t => t.OrderBy(o => o.bill_code).FirstOrDefault());
agvElevatorTasks = agvElevatorTasks.FindAll(x => firstEleGrp.Select(y => y.endlocation_code).Contains(x.endlocation_code)); //agvElevatorTasks = agvElevatorTasks.FindAll(x => firstEleGrp.Select(y => y.endlocation_code).Contains(x.endlocation_code)).DistinctBy(x=>x.endlocation_code).ToList();
agvElevatorTasks = firstEleGrp?.ToList() ?? Enumerable.Empty<WmsPretaskH?>().ToList();
preTasks = preTasks.Concat(agvElevatorTasks).ToList(); preTasks = preTasks.Concat(agvElevatorTasks).ToList();
@@ -290,24 +293,26 @@ namespace Tnb.WarehouseMgr
int itemsCount = items.Count; int itemsCount = items.Count;
int mod = itemsCount % moveNum > 0 ? (itemsCount / moveNum) + 1 : itemsCount / moveNum; int mod = itemsCount % moveNum > 0 ? (itemsCount / moveNum) + 1 : itemsCount / moveNum;
WmsDistaskH[] arrary = items.ToArray(); WmsDistaskH[] arrary = items.ToArray();
for (int i = 1; i <= mod; i++) //for (int i = 1; i <= mod; i++)
{ {
string groupCode = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_TASK_EXECUTE_ENCODE);
if (moveNum >= 1) if (moveNum >= 1)
{ {
List<WmsPretaskH> areaPreTasks = itGroup.ToList(); List<WmsPretaskH> areaPreTasks = itGroup.ToList();
if (moveNum == 1 || (moveNum > areaPreTasks.Count && areaPreTasks.Count == 1)) if (areaPreTasks.Any(x => x.third_eqp_type.ToEnum<EnumTaskChainType>() != EnumTaskChainType.CTU))
{ {
items.ForEach(x => foreach (var x in items)
{ {
string groupCode = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_TASK_EXECUTE_ENCODE).Result;
x.is_chain = 0; x.is_chain = 0;
}); x.groups = groupCode;
items[0].groups = groupCode; x.bill_code = $"{groupCode}-1";
items[0].bill_code = $"{groupCode}-1"; }
} }
else if ((moveNum >= areaPreTasks.Count && areaPreTasks.Count > 1) || moveNum < areaPreTasks.Count) else if ((moveNum >= areaPreTasks.Count && areaPreTasks.Count > 1) || moveNum < areaPreTasks.Count)
{ {
string groupCode = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_TASK_EXECUTE_ENCODE);
items.ForEach(x => x.is_chain = 1); items.ForEach(x => x.is_chain = 1);
int start = 0; int start = 0;
@@ -385,7 +390,7 @@ namespace Tnb.WarehouseMgr
await db.Ado.CommitTranAsync(); await db.Ado.CommitTranAsync();
if(_eleCtlCfg.Environment == ElevatorConsts.EnvironmentName) if (string.Equals(_eleCtlCfg.Environment, ElevatorConsts.EnvironmentName, StringComparison.OrdinalIgnoreCase))
{ {
//呼梯操作 //呼梯操作
//获取目标库位为电梯库位的任务 //获取目标库位为电梯库位的任务
@@ -824,6 +829,10 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
throw; throw;
} }
finally
{
_ = GenTaskExecute();
}
} }
/// <summary> /// <summary>
/// 出入库策略启用、禁用状态修改 /// 出入库策略启用、禁用状态修改
@@ -887,13 +896,12 @@ namespace Tnb.WarehouseMgr
{ {
row = await _db.Insertable(preTaskCodes).ExecuteCommandAsync(); row = await _db.Insertable(preTaskCodes).ExecuteCommandAsync();
} }
//先注释 by ly on 20231025 var eleP = preTasks.Find(x => x.area_code.Contains("ELE"));
/* var eleP = preTasks.Find(x => x.area_code.Contains("ELE")); if (eleP != null)
if (eleP != null) {
{ row = await _db.Updateable<WmsElevatorH>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => it.area_code == eleP.area_code).ExecuteCommandAsync();
row = await _db.Updateable<WmsElevatorH>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => it.area_code == eleP.area_code).ExecuteCommandAsync(); }
}
*/
return row > 0; return row > 0;
} }
/// <summary> /// <summary>
@@ -921,6 +929,10 @@ namespace Tnb.WarehouseMgr
Expression<Func<WmsCarryH, bool>> whereExp = input.CarryIds?.Count > 0 ? it => input.CarryIds.Contains(it.id) : it => it.id == input.CarryId; Expression<Func<WmsCarryH, bool>> whereExp = input.CarryIds?.Count > 0 ? it => input.CarryIds.Contains(it.id) : it => it.id == input.CarryId;
_ = await _db.Updateable<WmsCarryH>().SetColumns(setCarryColumnsExp).Where(whereExp).ExecuteCommandAsync(); _ = await _db.Updateable<WmsCarryH>().SetColumns(setCarryColumnsExp).Where(whereExp).ExecuteCommandAsync();
} }
if (input.CarryStartLocationId.IsNullOrWhiteSpace() == false)
{
_ = await _db.Updateable<BasLocation>().SetColumns(setLocaionColumbExp).Where(it => input.LocationIds.Contains(it.id)).ExecuteCommandAsync();
}
//根据所有库位更新库位的锁定状态为“锁定” //根据所有库位更新库位的锁定状态为“锁定”
if (setLocaionColumbExp != null && input.LocationIds?.Count > 0) if (setLocaionColumbExp != null && input.LocationIds?.Count > 0)
{ {
@@ -948,7 +960,7 @@ namespace Tnb.WarehouseMgr
List<WmsPointH> points = await LocPathCalcAlgorithms(pStartId, pEndId, roads); List<WmsPointH> points = await LocPathCalcAlgorithms(pStartId, pEndId, roads);
try try
{ {
if (points.FindAll(x => x.location_code != null && x.location_code.Contains("ELE"))?.Count > 0) if (points.FindAll(x => x.location_code != null && x.location_code.Contains("dt", StringComparison.OrdinalIgnoreCase))?.Count > 0)
{ {
//查询当前电梯点 //查询当前电梯点
List<WmsElevatorD> curEleDs = await _db.Queryable<WmsElevatorD>().Where(it => points.Select(x => x.id).Contains(it.point_id)).ToListAsync(); List<WmsElevatorD> curEleDs = await _db.Queryable<WmsElevatorD>().Where(it => points.Select(x => x.id).Contains(it.point_id)).ToListAsync();
@@ -957,14 +969,16 @@ namespace Tnb.WarehouseMgr
{ {
//当前电梯 //当前电梯
WmsElevatorH curEle = await _db.Queryable<WmsElevatorH>().SingleAsync(it => it.id == curEleDs.First().bill_id && it.status == 1); WmsElevatorH curEle = await _db.Queryable<WmsElevatorH>().SingleAsync(it => it.id == curEleDs.First().bill_id && it.status == 1);
if (curEle == null) //同电梯组电梯
List<WmsElevatorH> sGpEle = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.status == 1).ToListAsync();
if (curEle == null && sGpEle?.Count > 0)
{ {
throw new AppFriendlyException("电梯被禁用或未配置", 500); throw new AppFriendlyException("电梯被禁用或未配置", 500);
} }
//同电梯组电梯
List<WmsElevatorH> sGpEle = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.status == 1).ToListAsync();
//判断电梯组中各电梯任务数 //判断电梯组中各电梯任务数
if (sGpEle.FindAll(x => Math.Abs(x.task_nums - curEle.task_nums) % 2 == 1)?.Count > 0) if (curEle == null || sGpEle.FindAll(x => Math.Abs(x.task_nums - curEle.task_nums) % 2 == 1)?.Count > 0)
{ {
List<WmsElevatorD> sGpDs = await _db.Queryable<WmsElevatorD>().Where(it => it.bill_id == sGpEle.First().id).ToListAsync(); List<WmsElevatorD> sGpDs = await _db.Queryable<WmsElevatorD>().Where(it => it.bill_id == sGpEle.First().id).ToListAsync();
if (sGpDs?.Count > 0) if (sGpDs?.Count > 0)

View File

@@ -466,7 +466,7 @@ namespace Tnb.WarehouseMgr
_ = await _db.Insertable(carryCodes).ExecuteCommandAsync(); _ = await _db.Insertable(carryCodes).ExecuteCommandAsync();
await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput,
it => new WmsCarryH { carry_code = instock!.carry_code!, is_lock = 1, carry_status = ((int)EnumCarryStatus.).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, it => new WmsCarryH { carry_code = instock!.carry_code!, is_lock = 1, carry_status = ((int)EnumCarryStatus.).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode },
it => new BasLocation { is_lock = 1, is_use = ((int)EnumCarryStatus.).ToString() }); it => new BasLocation { is_lock = 1 });
if (instockCOdes?.Count > 0) if (instockCOdes?.Count > 0)
{ {
_ = await _db.Updateable<WmsInstockD>().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCOdes.Select(x => x.bill_d_id).Contains(it.id)).ExecuteCommandAsync(); _ = await _db.Updateable<WmsInstockD>().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCOdes.Select(x => x.bill_d_id).Contains(it.id)).ExecuteCommandAsync();

View File

@@ -264,7 +264,7 @@ namespace Tnb.WarehouseMgr
// 更新临时条码表 状态is_end // 更新临时条码表 状态is_end
await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput,
it => new WmsCarryH { carry_code = input.data[nameof(WmsCarryH.carry_code)].ToString()!, is_lock = 1, carry_status = ((int)EnumCarryStatus.).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode, source_id = input.data[nameof(WmsOutstockH.source_id)].ToString(), source_code = input.data[nameof(WmsOutstockH.source_code)].ToString() }, it => new WmsCarryH { carry_code = input.data[nameof(WmsCarryH.carry_code)].ToString()!, is_lock = 1, carry_status = ((int)EnumCarryStatus.).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode, source_id = input.data[nameof(WmsOutstockH.source_id)].ToString(), source_code = input.data[nameof(WmsOutstockH.source_code)].ToString() },
it => new BasLocation { is_lock = 1, is_use = ((int)EnumCarryStatus.).ToString() }); it => new BasLocation { is_lock = 1 });
if (instockCOdes?.Count > 0) if (instockCOdes?.Count > 0)
{ {
_ = await _db.Updateable<WmsInstockD>().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCOdes.Select(x => x.bill_d_id).Contains(it.id)).ExecuteCommandAsync(); _ = await _db.Updateable<WmsInstockD>().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCOdes.Select(x => x.bill_d_id).Contains(it.id)).ExecuteCommandAsync();

View File

@@ -308,7 +308,7 @@ namespace Tnb.WarehouseMgr
//回更状态 //回更状态
await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput,
it => new WmsCarryH { carry_code = instock!.carry_code!, is_lock = 1, carry_status = ((int)EnumCarryStatus.).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, it => new WmsCarryH { carry_code = instock!.carry_code!, is_lock = 1, carry_status = ((int)EnumCarryStatus.).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode },
it => new BasLocation { is_lock = 1, is_use = ((int)EnumCarryStatus.).ToString() }); it => new BasLocation { is_lock = 1 });
_ = await _db.Updateable<WmsInstockD>().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCode.bill_d_id == it.id).ExecuteCommandAsync(); _ = await _db.Updateable<WmsInstockD>().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCode.bill_d_id == it.id).ExecuteCommandAsync();
_ = await _db.Updateable<WmsInstockH>().SetColumns(it => new WmsInstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == instock!.id).ExecuteCommandAsync(); _ = await _db.Updateable<WmsInstockH>().SetColumns(it => new WmsInstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == instock!.id).ExecuteCommandAsync();
@@ -322,6 +322,10 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
throw; throw;
} }
finally
{
_ = InvokeGenPretaskExcute();
}
return Task.FromResult(true); return Task.FromResult(true);
} }
} }

View File

@@ -42,15 +42,41 @@ namespace JNPF.TaskScheduler.Listener
{ {
//整除表示一个周期到了 //整除表示一个周期到了
// foreach (var item in eqpSpotInsTemEquipHsByCirculate)
// {
// TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks);
// TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(item.start_time.ToString("yyyy-MM-dd")).Ticks);
// TimeSpan ts3 = ts1.Subtract(ts2).Duration();
// if (ts3.TotalDays * 10 % (10 * (double)item.plan_cycle) == 0)
// {
// tobeCreateTemplets.Add(item);
// }
// }
//按上一个保养记录来生成数据
foreach (var item in eqpSpotInsTemEquipHsByCirculate) foreach (var item in eqpSpotInsTemEquipHsByCirculate)
{ {
TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); EqpMaintainRecordH eqpMaintainRecordH = await db.Queryable<EqpMaintainRecordH>().Where(x=>x.maintain_tem_equip_id==item.id).OrderByDescending(x=>x.create_time).FirstAsync();
TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(item.start_time.ToString("yyyy-MM-dd")).Ticks); if (eqpMaintainRecordH == null)
TimeSpan ts3 = ts1.Subtract(ts2).Duration();
if (ts3.TotalDays * 10 % (10 * (double)item.plan_cycle) == 0)
{ {
tobeCreateTemplets.Add(item); TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks);
TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(item.start_time.ToString("yyyy-MM-dd")).Ticks);
TimeSpan ts3 = ts1.Subtract(ts2).Duration();
if (ts3.TotalDays * 10 % (10 * (double)item.plan_cycle) == 0)
{
tobeCreateTemplets.Add(item);
}
}else if (eqpMaintainRecordH.status!="1")
{
TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks);
TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(eqpMaintainRecordH.execute_time.Value.ToString("yyyy-MM-dd")).Ticks);
TimeSpan ts3 = ts1.Subtract(ts2).Duration();
if (ts3.TotalDays * 10 % (10 * (double)item.plan_cycle) == 0)
{
tobeCreateTemplets.Add(item);
}
} }
} }
} }