api/ApiHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
api/ApiModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
api/DebugController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
core/Monitor.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
core/WCSCore.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
api/ApiHelper.cs
@@ -371,15 +371,15 @@ return BuildSimpleResult(3, $"该任务已有终点"); } var cgDetail = db.Queryable<TN_CG_Detail>() .Where(a => a.S_CNTR_CODE == task.S_CNTR_CODE).First(); var cgDetailList = db.Queryable<TN_CG_Detail>() .Where(a => a.S_CNTR_CODE == task.S_CNTR_CODE).ToList(); if (cgDetail == null) { if (cgDetailList.Count == 0) { return BuildSimpleResult(4, $"托盘物料不存在"); } var endLoc = new TN_Location(); if (cgDetail.F_WEIGHT > 2000) { if (task.F_WEIGHT > 2000) { // 重量超过2t,报错 if (GZRobot.TryGetInteractionInfoId(task.S_CODE, out var id1)) { if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo { @@ -400,9 +400,9 @@ //return BuildSimpleResult(8, $"国自AGV接受终点信息失败"); } return BuildSimpleResult(8, $"物料重量{cgDetail.F_WEIGHT}超过2t"); return BuildSimpleResult(8, $"物料重量{task.F_WEIGHT}超过2t"); } else if (cgDetail.F_WEIGHT > 1500) { else if (task.F_WEIGHT > 1500) { // 重量超过1.5t,需要选择1-2层货架 endLoc = db.Queryable<TN_Location>() .Where(a => a.S_CODE == model.EndLoc) @@ -412,7 +412,7 @@ .Where(a => a.N_LAYER <= 2) .First(); } else if (cgDetail.F_WEIGHT > 0) { else if (task.F_WEIGHT > 0) { endLoc = db.Queryable<TN_Location>() .Where(a => a.S_CODE == model.EndLoc) .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y") @@ -423,7 +423,7 @@ .First(); } else { return BuildSimpleResult(5, $"物料重量信息不合法:{cgDetail.F_WEIGHT}"); return BuildSimpleResult(5, $"物料重量信息不合法:{task.F_WEIGHT}"); } // 没有符合条件的货位 @@ -645,8 +645,8 @@ return BuildSimpleResult(2, $"当前货位{model.startLoc}没有货位容器绑定关系,无需解绑!"); } var cgDetail = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == locCntrRel.S_CNTR_CODE); if (cgDetail != null) { var cgDetailList = db.Queryable<TN_CG_Detail>().Where(a => a.S_CNTR_CODE == locCntrRel.S_CNTR_CODE).ToList(); if (cgDetailList.Count != 0) { return BuildSimpleResult(3, $"当前货位{model.startLoc}容器存放的物料数量不为0,无法解绑!"); } @@ -855,7 +855,7 @@ return BuildErpResult(400, "不能传入空的数据列表"); } var insetRecordList = new List<TN_Inbound_DataRecord>(); var insertRecordList = new List<TN_Inbound_DataRecord>(); //var deleteRecordOldList = new List<TN_Inbound_DataRecord> (); foreach (var transaction in model.stockTransactions) { @@ -886,7 +886,7 @@ S_SUPPLIER_NAME = transaction.supplierName, S_INVENTORY_MAN = transaction.inventoryManager }; insetRecordList.Add(record); insertRecordList.Add(record); } @@ -896,7 +896,7 @@ // return BuildErpResult(500, $"删除旧入库记录数据失败:{JsonConvert.SerializeObject(deleteRecordOldList)}"); //} if (db.Insertable<TN_Inbound_DataRecord>(insetRecordList).ExecuteCommand() <= 0) { if (db.Insertable<TN_Inbound_DataRecord>(insertRecordList).ExecuteCommand() <= 0) { tran.RollbackTran(); return BuildErpResult(500, $"写入入库记录表失败!"); } @@ -919,7 +919,7 @@ return BuildErpResult(400, "不能传入空的数据列表"); } var insetRecordList = new List<TN_Outbound_DataRecord>(); var insertRecordList = new List<TN_Outbound_DataRecord>(); //var deleteRecordOldList = new List<TN_Outbound_DataRecord>(); foreach (var issue in model.materialIssues) { //var recordOld = db.Queryable<TN_Outbound_DataRecord>() @@ -948,7 +948,7 @@ S_LINE_CODE = issue.lineCode, S_BATCH_NO = issue.batchNo }; insetRecordList.Add(record); insertRecordList.Add(record); } using (var tran = db.Ado.UseTran()) { @@ -957,7 +957,7 @@ // return BuildErpResult(500, $"删除旧出库记录数据失败:{JsonConvert.SerializeObject(deleteRecordOldList)}"); //} if (db.Insertable<TN_Outbound_DataRecord>(insetRecordList).ExecuteCommand() <= 0) { if (db.Insertable<TN_Outbound_DataRecord>(insertRecordList).ExecuteCommand() <= 0) { tran.RollbackTran(); return BuildErpResult(500, $"写入出库记录表失败"); } @@ -1220,9 +1220,9 @@ } var cgDetail = db.Queryable<TN_CG_Detail>() .Where(d => d.S_CNTR_CODE == locCntrRel.S_CNTR_CODE).First(); .Where(d => d.S_CNTR_CODE == locCntrRel.S_CNTR_CODE && d.S_ITEM_CODE == model.itemCode).First(); if (cgDetail == null) { return BuildSimpleResult(3, $"当前货位{model.locCode}上的容器{locCntrRel.S_CNTR_CODE}没有物品!"); return BuildSimpleResult(3, $"当前货位{model.locCode}上的容器{locCntrRel.S_CNTR_CODE}没有物品{model.itemCode}!"); } //var countDiff = new TN_Count_Diff { @@ -1231,11 +1231,10 @@ // F_ACTUAL_QTY = model.qty //}; var countDiff = db.Queryable<TN_AG_Count_Diff>().Where(d => d.S_CNTR_CODE == locCntrRel.S_CNTR_CODE).First(); var countDiff = db.Queryable<TN_AG_Count_Diff>().Where(d => d.S_CNTR_CODE == locCntrRel.S_CNTR_CODE && d.S_ITEM_CODE == model.itemCode).First(); if (countDiff == null) { return BuildSimpleResult(4, $"当前物料所在容器{locCntrRel.S_CNTR_CODE}物料信息没有生成对应的盘点差异表!"); return BuildSimpleResult(4, $"当前物料所在容器{locCntrRel.S_CNTR_CODE}物料信息{model.itemCode}没有生成对应的盘点差异表!"); } countDiff.F_QTY = cgDetail.F_QTY; countDiff.F_ACTUAL_QTY = model.qty; @@ -1247,7 +1246,7 @@ using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_AG_Count_Diff>(countDiff).ExecuteCommand() <= 0) { tran.RollbackTran(); return BuildSimpleResult(5, $"插入盘点差异表失败"); return BuildSimpleResult(5, $"更新盘点差异表失败"); } if (db.Updateable<TN_CG_Detail>(cgDetail).ExecuteCommand() <= 0) { api/ApiModel.cs
@@ -277,6 +277,7 @@ public class CountProductInfo { //public string cntrCode { get; set; } public string locCode { get; set; } public string itemCode { get; set; } public float qty { get; set; } } api/DebugController.cs
@@ -4,13 +4,15 @@ using System.Web.Http; using HH.WCS.Mobox3.AnGang.dispatch; using HH.WCS.Mobox3.AnGang.wms; using HH.WCS.Mobox3.AnGang.models; using HH.WCS.Mobox3.AnGang.util; using HH.WCS.Mobox3.AnGang.wms; using Newtonsoft.Json; using SqlSugar; using static HH.WCS.Mobox3.AnGang.api.ApiModel; using HH.WCS.Mobox3.AnGang.util; namespace HH.WCS.Mobox3.AnGang.api { /// <summary> @@ -170,6 +172,70 @@ return ex.Message; } } [HttpPost] public string AddCntrData() { var db = new SqlHelper<object>().GetInstance(); try { //var locCntrRelList = db.Queryable<TN_Loc_Container>(); //var result = db.Queryable<TN_CG_Detail>() // .GroupBy(d => d.S_CNTR_CODE) // 按 S_CNTR_CODE 分组 // .Select(d => new CntrCodeCountResult { // S_CNTR_CODE = d.S_CNTR_CODE, // Count = SqlFunc.AggregateCount(d.S_ITEM_CODE) // 计算每组的条目数 // }) // .ToList(); //var cntrList = locCntrRelList.Select(c => c.S_CNTR_CODE); var result = db.Queryable<TN_CG_Detail>() .LeftJoin<TN_Loc_Container>((detail, container) => detail.S_CNTR_CODE == container.S_CNTR_CODE) .GroupBy(detail => detail.S_CNTR_CODE) .Select((detail, container) => new CntrCodeCountResult { S_CNTR_CODE = detail.S_CNTR_CODE, Count = SqlFunc.AggregateCount(detail.S_ITEM_CODE) }) .ToList(); var cntrList = db.Queryable<TN_Container>().ToList(); var cntrListToUpdate = new List<TN_Container>(); var cntrListToInsert = new List<TN_Container>(); foreach (var cntr in result) { var oldCntr = cntrList.Where(c => c.S_CODE == cntr.S_CNTR_CODE).First(); if (oldCntr == null) { cntrListToUpdate.Add(new TN_Container { S_CODE = cntr.S_CNTR_CODE, N_DETAIL_COUNT = cntr.Count }); } if (oldCntr.N_DETAIL_COUNT != cntr.Count) { cntrListToUpdate.Add(new TN_Container { S_CODE = cntr.S_CNTR_CODE, N_DETAIL_COUNT = cntr.Count }); } } using (var tran = db.Ado.UseTran()) { if (cntrListToUpdate.Count > 0 && db.Updateable(cntrListToUpdate).ExecuteCommand() <= 0) { tran.RollbackTran(); return "更新失败"; } if (cntrListToInsert.Count > 0 && db.Insertable(cntrListToInsert).ExecuteCommand() <= 0) { tran.RollbackTran(); return "插入失败"; } tran.CommitTran(); } } catch (Exception ex) { return ex.Message; } return "success"; } } public class CntrCodeCountResult { public string S_CNTR_CODE { get; set; } // 容器代码 public int Count { get; set; } // 该容器代码对应的条目数 } public class ReturnResults { core/Monitor.cs
@@ -37,51 +37,64 @@ foreach (var inboundData in inboundDataList) { var locCntrRel = db.Queryable<TN_Loc_Container>().Where(c => c.S_LOC_CODE == inboundData.S_LOCATION_CODE).First(); // 暂时不考虑如果当前关系表,锁状态为1(已经ERP覆盖过)的情况,默认有就覆盖 if (locCntrRel != null) { var cgDetailList = db.Queryable<TN_CG_Detail>().Where(d => d.S_CNTR_CODE == locCntrRel.S_CNTR_CODE).ToList(); if (cgDetailList.Count == 0) { LogHelper.Info($"轮询:入库信息同步:货位容器表中,包含货位={locCntrRel.S_LOC_CODE}, 容器={locCntrRel.S_CNTR_CODE};但容器对应的物料表,没有找到物料!"); continue; } cgDetailList.ForEach(d => { if (!needDeleteCgDetailList.Contains(d)) { needDeleteCgDetailList.Add(d); } }); // 问DS , 用linq优化 var cntr = needUpdateCntrList.Where(c => c.S_CODE == locCntrRel.S_CNTR_CODE).FirstOrDefault(); if (cntr != null) { } // ERP 数据 -> CG_Detail var cgDetail = cgDetailList.FirstOrDefault(); cgDetail.S_ITEM_CODE = inboundData.S_ITEM_CODE; cgDetail.S_ITEM_SHORT_DESC = inboundData.S_ITEM_SHORT_DESC; // 物料短描述 cgDetail.S_IN_QUANTITY = inboundData.S_IN_QUANTITY; // 入库数量 cgDetail.S_STOCK_QUANTITY = inboundData.S_STOCK_QUANTITY; // 库存数量 cgDetail.S_TOTAL_PRICE = inboundData.S_TOTAL_PRICE; // 库存总价 cgDetail.S_STORE_KEEPER = inboundData.S_STORE_KEEPER; cgDetail.S_LINE_CODE = inboundData.S_LINE_CODE; cgDetail.F_QTY = float.Parse(inboundData.S_IN_QUANTITY); cgDetail.T_MODIFY = DateTime.Now; //cgDetail.S_INVENTORY_MAN = inboundData.S_INVENTORY_MAN; // 库存责任人姓名 locCntrRel.N_LOCK_STATE = 1; cgDetail.N_LOCK_STATE = 1; locCntrRel.T_MODIFY = DateTime.Now; needUpdateLocCntrRelList.Add(locCntrRel); //needUpdateCgDetailList.Add(cgDetailList); needDeleteDataList.Add(inboundData); if (locCntrRel == null) { LogHelper.Info($"轮询:入库信息同步:货位容器绑定表中暂无货位={inboundData.S_LOCATION_CODE}"); continue; } // 存在货位容器表但没找到物料表 ( 通常情况下不会发生 ) var cgDetailList = db.Queryable<TN_CG_Detail>().Where(d => d.S_CNTR_CODE == locCntrRel.S_CNTR_CODE).ToList(); if (cgDetailList.Count == 0) { LogHelper.Info($"轮询:入库信息同步:货位容器表中,包含货位={locCntrRel.S_LOC_CODE}, 容器={locCntrRel.S_CNTR_CODE};但容器对应的物料表,没有找到物料!"); continue; } // 对查到的 cgDetailList , 待覆盖 , 添加到待删除列表中 foreach (var cgDetal in cgDetailList) { if (!needDeleteCgDetailList.Contains(cgDetal)) { needDeleteCgDetailList.Add(cgDetal); } } // 更新容器表的货品明细数量 , 第一次设置为 1 , 之后每次 + 1 var cntr = needUpdateCntrList.Where(c => c.S_CODE == locCntrRel.S_CNTR_CODE).FirstOrDefault(); if (cntr != null) { cntr.N_DETAIL_COUNT += 1; cntr.T_MODIFY = DateTime.Now; } else { needUpdateCntrList.Add(new TN_Container { S_CODE = locCntrRel.S_CNTR_CODE, N_DETAIL_COUNT = 1 }); } // ERP 数据 -> CG_Detail // 货品列表中随便找一个 cgDetail 赋值 , 只需要确保 F_WEIGHT 和 S_EXT_ATTR5 ( IMG_URL ) 不变即可 var cgDetail = cgDetailList.FirstOrDefault(); cgDetail.S_ITEM_CODE = inboundData.S_ITEM_CODE; cgDetail.S_ITEM_SHORT_DESC = inboundData.S_ITEM_SHORT_DESC; // 物料短描述 cgDetail.S_IN_QUANTITY = inboundData.S_IN_QUANTITY; // 入库数量 cgDetail.S_STOCK_QUANTITY = inboundData.S_STOCK_QUANTITY; // 库存数量 cgDetail.S_TOTAL_PRICE = inboundData.S_TOTAL_PRICE; // 库存总价 cgDetail.S_STORE_KEEPER = inboundData.S_STORE_KEEPER; cgDetail.S_LINE_CODE = inboundData.S_LINE_CODE; cgDetail.F_QTY = float.Parse(inboundData.S_IN_QUANTITY); cgDetail.T_MODIFY = DateTime.Now; //cgDetail.S_INVENTORY_MAN = inboundData.S_INVENTORY_MAN; // 库存责任人姓名 cgDetail.N_LOCK_STATE = 1; locCntrRel.N_LOCK_STATE = 1; locCntrRel.T_MODIFY = DateTime.Now; needUpdateLocCntrRelList.Add(locCntrRel); //needUpdateCgDetailList.Add(cgDetailList); // 最后 , 将处理完的入库记录加入删除队列 needDeleteDataList.Add(inboundData); } if (needDeleteDataList.Count == 0) { LogHelper.Info($"轮询:入库信息同步:待更新的ERP物料信息,暂无物料可以覆盖,目前待更新数量:{inboundDataList.Count}"); return; } using (var tran = db.Ado.UseTran()) { @@ -100,6 +113,24 @@ if (needUpdateLocCntrRelList.Count > 0 && db.Updateable<TN_Loc_Container>(needUpdateLocCntrRelList).ExecuteCommand() <= 0) { tran.RollbackTran(); LogHelper.Info($"轮询:入库信息同步:根据ERP信息,更新货位容器关系表失败!" + JsonConvert.SerializeObject(needUpdateLocCntrRelList)); return; } if (needDeleteCgDetailList.Count > 0 && db.Deleteable(needDeleteCgDetailList).ExecuteCommand() <= 0) { tran.RollbackTran(); LogHelper.Info($"轮询: 入库信息同步: 根据ERP信息, 删除旧物料明细表失败! " + JsonConvert.SerializeObject(needDeleteCgDetailList)); return; } if (needInsertCgDetailList.Count > 0 && db.Insertable(needInsertCgDetailList).ExecuteCommand() <= 0) { tran.RollbackTran(); LogHelper.Info($"轮询: 入库信息同步: 根据ERP信息, 插入新物料明细表失败! " + JsonConvert.SerializeObject(needInsertCgDetailList)); return; } if (needUpdateCntrList.Count > 0 && db.Updateable(needUpdateCntrList).ExecuteCommand() <= 0) { tran.RollbackTran(); LogHelper.Info($"轮询: 入库信息同步: 根据ERP信息, 更新容器表失败! " + JsonConvert.SerializeObject(needUpdateCntrList)); return; } @@ -126,31 +157,75 @@ var needDeleteDataList = new List<TN_Outbound_DataRecord>(); var needUpdateLocCntrRelList = new List<TN_Loc_Container>(); var needUpdateCgDetailList = new List<TN_CG_Detail>(); var needDeleteCgDetailList = new List<TN_CG_Detail>(); var needUpdateCntrList = new List<TN_Container>(); foreach (var outboundData in outboundDataList) { var locCntrRel = db.Queryable<TN_Loc_Container>().Where(c => c.S_LOC_CODE == outboundData.S_LOCATION_CODE).First(); // 暂时不考虑如果当前关系表,锁状态为1(已经ERP覆盖过)的情况,默认有就覆盖 if (locCntrRel != null) { var cgDetail = db.Queryable<TN_CG_Detail>().Where(d => d.S_CNTR_CODE == locCntrRel.S_CNTR_CODE).First(); // 出库不像入库那样直接覆盖 , 而是查找具体的物料编码 , 对每个进行修改 var cgDetail = db.Queryable<TN_CG_Detail>().Where(d => d.S_CNTR_CODE == locCntrRel.S_CNTR_CODE && d.S_ITEM_CODE == outboundData.S_ITEM_CODE).First(); if (cgDetail == null) { LogHelper.Info($"轮询:出库信息同步:货位容器表中,包含货位={locCntrRel.S_LOC_CODE}, 容器={locCntrRel.S_CNTR_CODE};但容器对应的物料表,没有找到物料!"); LogHelper.Info($"轮询:出库信息同步:货位容器表中,包含货位={locCntrRel.S_LOC_CODE}, 容器={locCntrRel.S_CNTR_CODE};但容器对应的物料表,没有找到物料{outboundData.S_ITEM_CODE}!"); continue; } var actualQty = float.Parse(outboundData.S_ACTUAL_QTY); if (actualQty > cgDetail.F_QTY) { LogHelper.Info($"实发数量超过物料数量! 物料编码={cgDetail.S_ITEM_CODE}, 当前数量={cgDetail.F_QTY}, 实发数量='{outboundData.S_ACTUAL_QTY}'", "Error"); actualQty = 0f; } cgDetail.S_ITEM_CODE = outboundData.S_ITEM_CODE; cgDetail.S_STORE_KEEPER = outboundData.S_STORE_KEEPER; cgDetail.F_QTY = actualQty; cgDetail.T_MODIFY = DateTime.Now; locCntrRel.N_LOCK_STATE = 1; cgDetail.N_LOCK_STATE = 1; locCntrRel.T_MODIFY = DateTime.Now; var currentQty = cgDetail.F_QTY - actualQty; if (currentQty <= 0) { needDeleteCgDetailList.Add(cgDetail); // 更新容器表的货品明细数量 , 第一次查找并 - 1 , 之后每次 - 1 var cntr = needUpdateCntrList.Where(c => c.S_CODE == locCntrRel.S_CNTR_CODE).FirstOrDefault(); if (cntr != null) { if (cntr.N_DETAIL_COUNT == 0) { LogHelper.Info($"容器明细数量为0, 无法再减少!", "Error"); } else { cntr.N_DETAIL_COUNT -= 1; cntr.T_MODIFY = DateTime.Now; } } else { var actualCntr = db.Queryable<TN_Container>().Where(c => c.S_CODE == locCntrRel.S_CNTR_CODE).First(); if (actualCntr == null) { LogHelper.Info($"容器表中没有容器{actualCntr.S_CODE}!", "Error"); } else { if (actualCntr.N_DETAIL_COUNT == 0) { LogHelper.Info($"容器明细数量为0, 无法再减少!", "Error"); } else { actualCntr.N_DETAIL_COUNT -= 1; actualCntr.T_MODIFY = DateTime.Now; needUpdateCntrList.Add(actualCntr); } } } } else { cgDetail.S_ITEM_CODE = outboundData.S_ITEM_CODE; cgDetail.S_STORE_KEEPER = outboundData.S_STORE_KEEPER; cgDetail.F_QTY = currentQty; cgDetail.T_MODIFY = DateTime.Now; locCntrRel.N_LOCK_STATE = 1; cgDetail.N_LOCK_STATE = 1; cgDetail.S_STOCK_QUANTITY = currentQty.ToString(); locCntrRel.T_MODIFY = DateTime.Now; needUpdateCgDetailList.Add(cgDetail); } // 就算cgDetail都删完了, 也还是会保留货位容器信息, 不会自动删除 ( 不过理论上只有回库之后才会更新物料的 , 所以物料不可能为空 ) needUpdateLocCntrRelList.Add(locCntrRel); needUpdateCgDetailList.Add(cgDetail); needDeleteDataList.Add(outboundData); } } @@ -172,6 +247,18 @@ return; } if (needDeleteCgDetailList.Count > 0 && db.Deleteable(needDeleteCgDetailList).ExecuteCommand() <= 0) { tran.RollbackTran(); LogHelper.Info($"轮询:出库信息同步:根据ERP信息, 删除旧物料明细表失败! " + JsonConvert.SerializeObject(needDeleteCgDetailList)); return; } if (needUpdateCntrList.Count > 0 && db.Updateable(needUpdateCntrList).ExecuteCommand() <= 0) { tran.RollbackTran(); LogHelper.Info($"轮询:出库信息同步:根据ERP信息, 更新容器表失败! " + JsonConvert.SerializeObject(needUpdateCntrList)); return; } if (needUpdateLocCntrRelList.Count > 0 && db.Updateable<TN_Loc_Container>(needUpdateLocCntrRelList).ExecuteCommand() <= 0) { tran.RollbackTran(); LogHelper.Info($"轮询:出库信息同步:根据ERP信息,更新货位容器关系表失败!" + JsonConvert.SerializeObject(needUpdateLocCntrRelList)); core/WCSCore.cs
@@ -153,10 +153,10 @@ return; } var cgDetail = db.Queryable<TN_CG_Detail>() .Where(d => d.S_CNTR_CODE == tn_task.S_CNTR_CODE).First(); var cgDetailList = db.Queryable<TN_CG_Detail>() .Where(d => d.S_CNTR_CODE == tn_task.S_CNTR_CODE).ToList(); if (cgDetail == null) { if (cgDetailList.Count == 0) { LogHelper.Info("设置终点货位失败:当前任务的托盘号在物料表中不存在"); return; } @@ -171,11 +171,11 @@ var weight_str = data[0].parameter_varchar200_up.Split(';')[1].Split('-')[1]; var weight = float.Parse(weight_str); cgDetail.F_WEIGHT = weight; cgDetailList.ForEach(d => d.F_WEIGHT = weight); tn_task.F_WEIGHT = weight; using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_CG_Detail>(cgDetail).UpdateColumns(it => it.F_WEIGHT).ExecuteCommand() <= 0) { if (db.Updateable<TN_CG_Detail>(cgDetailList).UpdateColumns(it => it.F_WEIGHT).ExecuteCommand() <= 0) { tran.RollbackTran(); LogHelper.Info("修改物料表重量失败"); return; @@ -210,7 +210,7 @@ //row -= 100; // 111-118 => 1-8 // 只当之前指定终点货架后,才尝试计算终点货位 if (cgDetail.F_WEIGHT > 2000) { if (tn_task.F_WEIGHT > 2000) { // 重量超过 2t endLoc = null; LogHelper.Info("重量超过2t,不允许入库"); @@ -234,13 +234,13 @@ return; // 超重会自己return,如果国自agv没接受到也不需要提前return } else if (cgDetail.F_WEIGHT > 1500) { else if (tn_task.F_WEIGHT > 1500) { // 重量超过1.5t,需要选择1-2层货架 endLoc = db.Queryable<TN_Location>() .First(a => a.N_ROW == row && a.N_LAYER <= 2 && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y"); } else if (cgDetail.F_WEIGHT > 0) { else if (tn_task.F_WEIGHT > 0) { // 重量未超过1.5t,在指定货架随便选择1个 endLoc = db.Queryable<TN_Location>().Where(a => a.N_ROW == row && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y") @@ -249,7 +249,7 @@ else { // 没有接收到重量,或重量出错 endLoc = null; LogHelper.Info($"错误的重量信息:{cgDetail.F_WEIGHT}"); LogHelper.Info($"错误的重量信息:{tn_task.F_WEIGHT}"); return; } @@ -332,10 +332,10 @@ try { var cgDetail = db.Queryable<TN_CG_Detail>() .Where(d => d.S_CNTR_CODE == tn_task.S_CNTR_CODE).First(); var cgDetailList = db.Queryable<TN_CG_Detail>() .Where(d => d.S_CNTR_CODE == tn_task.S_CNTR_CODE).ToList(); if (cgDetail == null) { if (cgDetailList == null) { LogHelper.Info("更新物料重量失败:当前任务的托盘号在物料表中不存在"); return; } @@ -349,9 +349,9 @@ var weight_str = data[0].parameter_varchar200_up.Split(';')[1].Split('-')[1]; var weight = float.Parse(weight_str); cgDetail.F_WEIGHT = weight; if (db.Updateable<TN_CG_Detail>(cgDetail).UpdateColumns(it => it.F_WEIGHT).ExecuteCommand() <= 0) { cgDetailList.ForEach(a => a.F_WEIGHT = weight); if (db.Updateable<TN_CG_Detail>(cgDetailList).UpdateColumns(it => it.F_WEIGHT).ExecuteCommand() <= 0) { LogHelper.Info("修改物料表重量失败"); return; }