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

This commit is contained in:
2024-10-08 14:29:38 +08:00
5 changed files with 72 additions and 62 deletions

View File

@@ -743,19 +743,22 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
for (int carry_mat_index = 0; carry_mat_index < carry_mats.Count; carry_mat_index++)
{
var carry_mat = carry_mats[carry_mat_index];
bool isexists = false;
foreach (var basRegionMat in basRegionMats)
{
if (!carry_mat.category_list.Contains(basRegionMat.category))
{
carry_mats.RemoveAt(carry_mat_index); carry_mat_index--;
}
else
if (carry_mat.category_list.Contains(basRegionMat.category))
{
carry_mat.category = basRegionMat.category;
carry_mat.region_id = basRegionMat.region_id;
carry_mat.region_code = basRegionMat.region_code;
isexists = true;
break;
}
}
if (!isexists)
{
carry_mats.RemoveAt(carry_mat_index); carry_mat_index--;
}
}
#endregion
@@ -767,7 +770,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
List<BasLocation> endLocations = new List<BasLocation>();
// 小件物料入外协存储区
var carry_mat = carry_mats.Where(r => r.carry_id == wmsCarryH.id).First();
var carry_mat = carry_mats.Where(r => r.carry_id == wmsCarryH.id).FirstOrDefault();
if (carry_mat != null && !string.IsNullOrEmpty(carry_mat.category))
{
inStockStrategyInput = new() { warehouse_id = "1", Size = 1, passage = startlocation.passage, AvoidBusyPassage = true, Region_id = carry_mat.region_id, PolicyCode = WmsWareHouseConst.POLICY_YCLINSTOCK };

View File

@@ -775,7 +775,7 @@ namespace Tnb.WarehouseMgr
{
decimal? needOut = input.needOut;
int endlocation_index = 0;
BasLocation endlocation_ssx = null;
BasLocation endlocation_ssx2 = null;
for (int i = 0; i < itemsASC.Count; i++)
{
@@ -790,7 +790,7 @@ namespace Tnb.WarehouseMgr
// 每6个重新获取一次终点
if (i % move_num == 0)
{
endlocation_ssx = await cyDb.Queryable<BasLocation>().Where(r => input.endlocations.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync();
endlocation_ssx2 = await cyDb.Queryable<BasLocation>().Where(r => input.endlocations.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync();
}
// 查找是否有一个料箱可以正好满足剩余需求数量(目前只做这个额外判断,其它情形不考虑)
@@ -803,9 +803,9 @@ namespace Tnb.WarehouseMgr
needOut -= _wmsCarryCode.codeqty;
WmsCarryH _wmsCarryH = itemsASC[j].wmsCarryH;
await cyDb.Updateable<BasLocation>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => endlocation_ssx.id == it.id).ExecuteCommandAsync();
await cyDb.Updateable<BasLocation>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => endlocation_ssx2.id == it.id).ExecuteCommandAsync();
carrysASC.Add(new Tuple<WmsCarryH, decimal, BasLocation>(_wmsCarryH, _wmsCarryCode.codeqty, endlocation_ssx));
carrysASC.Add(new Tuple<WmsCarryH, decimal, BasLocation>(_wmsCarryH, _wmsCarryCode.codeqty, endlocation_ssx2));
isFind = true;
break;
@@ -818,9 +818,9 @@ namespace Tnb.WarehouseMgr
// 目前只支持一个料箱只有一个物料
needOut -= wmsCarryCode.codeqty;
await cyDb.Updateable<BasLocation>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => endlocation_ssx.id == it.id).ExecuteCommandAsync();
await cyDb.Updateable<BasLocation>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => endlocation_ssx2.id == it.id).ExecuteCommandAsync();
carrysASC.Add(new Tuple<WmsCarryH, decimal, BasLocation>(wmsCarryH, wmsCarryCode.codeqty, endlocation_ssx));
carrysASC.Add(new Tuple<WmsCarryH, decimal, BasLocation>(wmsCarryH, wmsCarryCode.codeqty, endlocation_ssx2));
}
if (needOut > 0)

View File

@@ -72,7 +72,8 @@ namespace Tnb.WarehouseMgr
public static SemaphoreSlim s_taskDistributeYCL2ZCC = new(1);
public static SemaphoreSlim s_taskDistributeZCCToYCL = new(1);
public static string[] YCLCKPowerRole = new string[2] { "37184163262485", "37183913754133" };
// 1.注塑领料工权限 2.注塑领班权限 3.挤出领料工权限 4.挤出领班权限
public static string[] YCLCKPowerRole = new string[4] { "37184163262485", "37183913754133", "37184764210965", "37184773840661" };
public WmsMaterialTransferService(
ISqlSugarRepository<WmsCarryH> repository,
@@ -1361,8 +1362,8 @@ namespace Tnb.WarehouseMgr
}
if (wmsMaterialTransfer.status != WmsWareHouseConst.BILLSTATUS_ADD_ID)
{
Logger.LogWarning($@"当前转库单状态为{wmsMaterialTransfer.status},不能下发中储仓下发到二楼暂存仓任务!");
throw new AppFriendlyException($@"当前转库单状态为{wmsMaterialTransfer.status},不能下发中储仓下发到二楼暂存仓任务!", 500);
Logger.LogWarning($@"当前转库单不是新增状态,不能下发中储仓下发到二楼暂存仓任务!");
throw new AppFriendlyException($@"当前转库单不是新增状态,不能下发中储仓下发到二楼暂存仓任务!", 500);
}
List<WmsMaterialTransferD> wmsMaterialTransferds = _db.Queryable<WmsMaterialTransferD>().Where(r => r.bill_id == input.source_id).ToList();
@@ -1385,11 +1386,13 @@ namespace Tnb.WarehouseMgr
// throw new AppFriendlyException($@"转库单{wmsMaterialTransfer.bill_code}表体存在物料和批号重复的明细!", 500);
//}
// 转库单载具子表
List<WmsMaterialTransferCarry> wmsMaterialTransferCarrys = new List<WmsMaterialTransferCarry>();
await _db.Ado.BeginTranAsync();
foreach (WmsMaterialTransferD wmsMaterialTransferD in wmsMaterialTransferds)
{
// 转库单载具子表
List<WmsMaterialTransferCarry> wmsMaterialTransferCarrys = new List<WmsMaterialTransferCarry>();
// 需要转库数量
decimal? needOut = wmsMaterialTransferD.qty;
@@ -1401,7 +1404,8 @@ namespace Tnb.WarehouseMgr
code_batch = wmsMaterialTransferD.code_batch,
needOut = needOut,
material_code = wmsMaterialTransferD.material_code,
endlocations = new string[2] { WmsWareHouseConst.ZZCSSX121009, WmsWareHouseConst.ZZCSSX121010 }
endlocations = new string[2] { WmsWareHouseConst.ZZCSSX121009, WmsWareHouseConst.ZZCSSX121010 },
dbConn = _db
};
List<Tuple<WmsCarryH, decimal, BasLocation>>? carrys = await _wareHouseService.OutStockStrategyZCC2Floor2(OutStockStrategyInput);
@@ -1429,19 +1433,15 @@ namespace Tnb.WarehouseMgr
await _db.Updateable<WmsCarryH>().SetColumns(r => r.work_station == wmsMaterialTransferD.station_code).Where(r => r.id == wmsCarryH.id).ExecuteCommandAsync();
}
}
await _db.Ado.BeginTranAsync();
await _db.Updateable<WmsMaterialTransfer>().SetColumns(r => new WmsMaterialTransfer
{
status = WmsWareHouseConst.BILLSTATUS_ON_ID,
carry_count = wmsMaterialTransferCarrys.Count,
remainbindracknum = wmsMaterialTransferCarrys.Count
carry_count = (r.carry_count == null ? 0 : r.carry_count) + wmsMaterialTransferCarrys.Count,
remainbindracknum = (r.remainbindracknum == null ? 0 : r.remainbindracknum) + wmsMaterialTransferCarrys.Count
}).Where(r => r.id == input.source_id).ExecuteCommandAsync();
Logger.LogInformation($"【DistributeToZCC】更新转库单{wmsMaterialTransfer.bill_code}主表的数据");
foreach (WmsMaterialTransferCarry wmsMaterialTransferCarry in wmsMaterialTransferCarrys)
{
CommonCreatePretaskInput commonCreatePretaskInput = new CommonCreatePretaskInput();
@@ -1454,10 +1454,10 @@ namespace Tnb.WarehouseMgr
commonCreatePretaskInput.source_id = wmsMaterialTransferCarry.mat_bill_id;
commonCreatePretaskInput.isExcuteMission = false;
var res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput);
var res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput, _db);
if (res.code != JNPF.Common.Enums.HttpStatusCode.OK)
{
Logger.LogInformation($"【DistributeToZCC生成预任务失败 载具 {wmsMaterialTransferCarry.carry_code}");
Logger.LogInformation($"【DistributeToZCC生成预任务失败 载具 {wmsMaterialTransferCarry.carry_code}");
throw new AppFriendlyException($"生成预任务失败 载具 {wmsMaterialTransferCarry.carry_code}", 500);
}
JObject keyValuePairs = JObject.Parse(res.data.ToString());
@@ -1470,8 +1470,8 @@ namespace Tnb.WarehouseMgr
await _db.Insertable(wmsMaterialTransferCarrys).ExecuteCommandAsync();
Logger.LogInformation($"【DistributeToZCC】插入转库单{wmsMaterialTransfer.bill_code}载具表的数据");
Logger.LogInformation($"转库单{wmsMaterialTransfer.bill_code}预任务{wmsMaterialTransferCarrys.Count}条全部生成成功");
Logger.LogInformation($"转库单{wmsMaterialTransfer.bill_code} 行号 {wmsMaterialTransferD.lineno}预任务{wmsMaterialTransferCarrys.Count}条全部生成成功");
}
await _db.Ado.CommitTranAsync();
}
@@ -1567,8 +1567,8 @@ namespace Tnb.WarehouseMgr
await db.Updateable<WmsMaterialTransfer>().SetColumns(r => new WmsMaterialTransfer
{
status = WmsWareHouseConst.BILLSTATUS_ON_ID,
carry_count = wmsMaterialTransferCarrys.Count,
remainbindracknum = wmsMaterialTransferCarrys.Count
carry_count = (r.carry_count == null ? 0 : r.carry_count) + wmsMaterialTransferCarrys.Count,
remainbindracknum = (r.remainbindracknum == null ? 0 : r.remainbindracknum) + wmsMaterialTransferCarrys.Count
}).Where(r => r.id == input.source_id).ExecuteCommandAsync();
Logger.LogInformation($"【DistributeToZCC】更新转库单{wmsMaterialTransfer.bill_code}主表的数据");
@@ -1585,7 +1585,7 @@ namespace Tnb.WarehouseMgr
commonCreatePretaskInput.source_id = wmsMaterialTransferCarry.mat_bill_id;
commonCreatePretaskInput.isExcuteMission = false;
var res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput);
var res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput, _db);
if (res.code != JNPF.Common.Enums.HttpStatusCode.OK)
{
Logger.LogInformation($"【DistributeToZCC生成预任务失败 载具 {wmsMaterialTransferCarry.carry_code}");

View File

@@ -466,7 +466,7 @@ namespace Tnb.WarehouseMgr
};
var instockDs = new List<WmsInstockD>();
var instockCodes = new List<WmsInstockCode>();
List<WmsCarryCode> wmsCarryCodes = await _db.Queryable<WmsCarryCode>().Where(r => r.carry_id == carry.id).ToListAsync();
List<WmsCarryCode> wmsCarryCodes = await _dbScanInStockByRedis.Queryable<WmsCarryCode>().Where(r => r.carry_id == carry.id).ToListAsync();
foreach (var r in wmsCarryCodes.GroupBy(g => new { g.material_id, g.code_batch }))
{

View File

@@ -1,4 +1,5 @@
using JNPF.Common.Core.Manager;
using System.Collections;
using JNPF.Common.Core.Manager;
using JNPF.Common.Dtos.VisualDev;
using JNPF.Common.Enums;
using JNPF.Common.Extension;
@@ -6,6 +7,7 @@ using JNPF.Common.Filter;
using JNPF.Common.Security;
using JNPF.EventBus;
using JNPF.FriendlyException;
using JNPF.Systems.Entitys.System;
using JNPF.Systems.Interfaces.System;
using JNPF.VisualDev;
using JNPF.VisualDev.Entitys;
@@ -106,6 +108,11 @@ namespace Tnb.WarehouseMgr
input.sidx = input.sidx.Replace("create_time", "a.create_time").Replace("erp_bill_code", "e.erp_bill_code");
}
Dictionary<string, object> status_dic = await _db.Queryable<DictionaryTypeEntity>()
.InnerJoin<DictionaryDataEntity>((a, b) => a.Id == b.DictionaryTypeId)
.Where((a, b) => a.FullName == "单据状态").Select((a, b) => b).ToDictionaryAsync(k => k.Id, v => v.FullName);
SqlSugarPagedList<WmsSortingtask> result = await _db.Queryable<WmsSortingtask>()
.InnerJoin<WmsCarryCode>((a, b) => a.carry_id == b.carry_id)
.InnerJoin<BasMaterial>((a, b, c) => b.material_id == c.id)