kazelee
2025-05-23 c4e968254a4f1c5d538a9fd91284b4843ea08198
core/WCSCore.cs
@@ -74,7 +74,7 @@
                    if (TN_Task.S_TYPE == TaskName.产品入库 || TN_Task.S_TYPE == TaskName.产品部分回库) {
                        var captureTask = Task.Run(() => {
                            CapturePic(TN_Task);
                            LogHelper.Info("拍照Task结束");
                            LogHelper.Info($"{TN_Task}:拍照Task结束");
                        });
                    }
@@ -170,10 +170,27 @@
                else {
                    var weight = float.Parse(data[0].parameter_varchar200_up);
                    cgDetail.F_QTY = weight;
                    tn_task.F_WEIGHT = weight;
                    if (db.Updateable<TN_CG_Detail>(cgDetail).UpdateColumns(it => it.F_QTY).ExecuteCommand() <= 0) {
                        LogHelper.Info("修改物料表重量失败");
                        return;
                    using (var tran = db.Ado.UseTran()) {
                        if (db.Updateable<TN_CG_Detail>(cgDetail).UpdateColumns(it => it.F_QTY).ExecuteCommand() <= 0) {
                            tran.RollbackTran();
                            LogHelper.Info("修改物料表重量失败");
                            return;
                        }
                        if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => it.F_WEIGHT).ExecuteCommand() <= 0) {
                            tran.RollbackTran();
                            LogHelper.Info("修改任务表重量失败");
                            return;
                        }
                        tran.CommitTran();
                    }
                    LogHelper.Info($"修改任务号{tn_task.S_CODE}物料重量为{weight}", "HosttoagvTask");
                    if (weight > 2000) {
                        LogHelper.Info($"物料重量超过2t", "HosttoagvTask");
                    }
                }
@@ -189,16 +206,23 @@
                }
                // 只当之前指定终点货架后,才尝试计算终点货位
                if (cgDetail.F_QTY > 1500) {
                    // 重量超过1.5t,需要选择1-3层货架
                if (cgDetail.F_QTY > 2000) {
                    // 重量超过 2t
                    endLoc = null;
                    LogHelper.Info("重量超过2t,不允许入库");
                    return;
                }
                else if (cgDetail.F_QTY > 1500) {
                    // 重量超过1.5t,需要选择1-2层货架
                    endLoc = db.Queryable<TN_Location>()
                        .First(a => a.N_ROW == row && a.N_LAYER <= 3
                        .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_QTY > 0) {
                    // 重量未超过1.5t,在指定货架随便选择1个
                    endLoc = db.Queryable<TN_Location>().First(a => a.N_ROW == row
                        && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y");
                    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")
                        .OrderBy(a => a.N_LAYER > 2 ? 0 : 1).First(); // 优先选层级高的
                }
                else {
                    // 没有接收到重量,或重量出错
@@ -290,6 +314,8 @@
                    return;
                }
                LogHelper.Info($"修改任务号{tn_task.S_CODE}物料重量为{weight}", "HosttoagvTask");
            }
            catch (Exception ex) {
                LogHelper.Info($"发生了错误:{ex.Message}");