kazelee
2025-06-11 9fa293298c53429e8ac5148de8328933c0a80ff4
core/Monitor.cs
@@ -68,6 +68,8 @@
                    var needInsertContainer = false;
                    var needUpdateContainer = false;
                    // TEMP 自动触发的托盘下线暂时不考虑判断,默认没有时写入
                    // 查容器信息表是否已经有这个容器
                    var cntr = db.Queryable<TN_Container>()
                        .Where(c => c.S_CODE == cntrCode).First();
@@ -80,7 +82,6 @@
                            S_CODE = cntrCode,
                            S_TYPE = "托盘",
                            S_SPEC = itemCode,
                            S_SOURCE = taskName,
                        };
                    }
                    else {
@@ -91,7 +92,6 @@
                                $"与所需要的物料信息{itemCode}不符,直接覆盖结果");
                            cntr.S_SPEC = itemCode;
                            cntr.S_SOURCE = taskName;
                        }
                    }
@@ -134,6 +134,9 @@
                    LocationHelper.LockStartLoc(ref startLoc); // 起点出库锁
                    LocationHelper.LockEndLoc(ref endLoc); // 终点入库锁
                    cntr.S_SOURCE = task.S_CODE;
                    cntr.T_MODIFY = DateTime.Now;
                    using (var tran = db.Ado.UseTran()) {
                        if (needInsertContainer) {
                            if (db.Insertable<TN_Container>(cntr).ExecuteCommand() <= 0) {
@@ -144,7 +147,8 @@
                            }
                        }
                        else if (needUpdateContainer) {
                            if (db.Updateable<TN_Container>(cntr).ExecuteCommand() <= 0) {
                            if (db.Updateable<TN_Container>(cntr)
                                .UpdateColumns(c => new { c.S_SPEC, c.S_SOURCE, c.T_MODIFY }).ExecuteCommand() <= 0) {
                                info = $"更新容器表失败:" + JsonConvert.SerializeObject(cntr);
                                tran.RollbackTran();
                                LogHelper.Info(info);
@@ -300,7 +304,9 @@
                    detail.N_B_STATE = 2;
                    var cntId = detail.S_CNTR_CODE;
                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
                    var erp_no = string.IsNullOrEmpty(detail.S_BS_NO) ? "" : detail.S_BS_NO;
                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName, detail.S_OO_NO, erp_no);
                    LocationHelper.LockStartLoc(ref startLoc); // 起点出库锁
                    LocationHelper.LockEndLoc(ref endLoc); // 终点入库锁
@@ -324,6 +330,7 @@
                            LogHelper.Info(info);
                            continue;
                        }
                        if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new {
                            it.N_LOCK_STATE,
@@ -412,7 +419,7 @@
                        .Count(d => d.S_OO_NO == order.S_NO && d.N_B_STATE >= 2); // 执行中
                    var allCount = db.Queryable<TN_SpotCheck_Detail>()
                        .Count(d => d.S_OO_NO == order.S_NO);
                    LogHelper.Info($"轮询--{taskName}--统计{taskName}单'{order.S_NO}'任务已下发:{doingCount}/{allCount}");
                    LogHelper.Info($"轮询:{taskName}:统计{taskName}单'{order.S_NO}'任务已下发:{doingCount}/{allCount}");
                    if (doingCount == allCount) {
                        order.N_B_STATE = 2; // 所有任务都已执行
@@ -425,7 +432,7 @@
                        .ToList();
                    if (checkDetailList.Count == 0) {
                        LogHelper.Info($"轮询--{taskName}--仍有任务未执行完成,但当前没有已下发的任务");
                        LogHelper.Info($"轮询:{taskName}:仍有任务未执行完成,但当前没有已下发的任务");
                        continue;
                    }
@@ -441,7 +448,7 @@
                        .First();
                    if (startLoc == null) {
                        LogHelper.Info($"轮询--{taskName}:没有找到合适的起点货位!");
                        LogHelper.Info($"轮询:{taskName}:没有找到合适的起点货位!");
                        continue;
                    }
@@ -451,14 +458,14 @@
                        .Where(a => a.N_CURRENT_NUM == 0).First();
                    if (endLoc == null) {
                        LogHelper.Info($"轮询--{taskName}:没有找到合适的终点货位!");
                        LogHelper.Info($"轮询:{taskName}:没有找到合适的终点货位!");
                        continue;
                    }
                    detail.N_B_STATE = 2;
                    var cntId = detail.S_CNTR_CODE;
                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName, detail.S_OO_NO);
                    LocationHelper.LockStartLoc(ref startLoc); // 起点出库锁
                    LocationHelper.LockEndLoc(ref endLoc); // 终点入库锁
@@ -466,7 +473,7 @@
                    using (var tran = db.Ado.UseTran()) {
                        if (db.Updateable<TN_SpotCheck_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
                            tran.RollbackTran();
                            LogHelper.Info($"轮询--{taskName}:修改{taskName}单明细表状态为完成--失败!");
                            LogHelper.Info($"轮询:{taskName}:修改{taskName}单明细表状态为完成--失败!");
                            continue;
                        }
@@ -524,7 +531,7 @@
                    .ToList();
                if (orderList.Count == 0) {
                    LogHelper.Info($"轮询--{taskName}--暂无待执行的{taskName}单");
                    LogHelper.Info($"轮询:{taskName}:暂无待执行的{taskName}单");
                    return;
                }
@@ -534,7 +541,7 @@
                        .Count(d => d.S_OO_NO == order.S_NO && d.N_B_STATE >= 2); // 执行中
                    var allCount = db.Queryable<TN_RelocationList_Detail>()
                        .Count(d => d.S_OO_NO == order.S_NO);
                    LogHelper.Info($"轮询--{taskName}--统计{taskName}单'{order.S_NO}'任务已下发:{doingCount}/{allCount}");
                    LogHelper.Info($"轮询:{taskName}:统计{taskName}单'{order.S_NO}'任务已下发:{doingCount}/{allCount}");
                    if (doingCount == allCount) {
                        order.N_B_STATE = 2; // 所有任务都已执行
@@ -547,7 +554,7 @@
                        .ToList();
                    if (checkDetailList.Count == 0) {
                        LogHelper.Info($"轮询--{taskName}--仍有任务未执行完成,但当前没有已下发的任务");
                        LogHelper.Info($"轮询:{taskName}:仍有任务未执行完成,但当前没有已下发的任务");
                        continue;
                    }
@@ -565,7 +572,7 @@
                        .First();
                    if (startLoc == null) {
                        LogHelper.Info($"轮询--{taskName}:没有找到合适的起点货位!");
                        LogHelper.Info($"轮询:{taskName}:没有找到合适的起点货位!");
                        continue;
                    }
@@ -575,14 +582,14 @@
                        .Where(a => a.N_CURRENT_NUM == 0).First();
                    if (endLoc == null) {
                        LogHelper.Info($"轮询--{taskName}:没有找到合适的终点货位!");
                        LogHelper.Info($"轮询:{taskName}:没有找到合适的终点货位!");
                        continue;
                    }
                    detail.N_B_STATE = 2;
                    var cntId = detail.S_CNTR_CODE;
                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName, detail.S_OO_NO);
                    LocationHelper.LockStartLoc(ref startLoc); // 起点出库锁
                    LocationHelper.LockEndLoc(ref endLoc); // 终点入库锁
@@ -590,7 +597,7 @@
                    using (var tran = db.Ado.UseTran()) {
                        if (db.Updateable<TN_RelocationList_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
                            tran.RollbackTran();
                            LogHelper.Info($"轮询--{taskName}:修改{taskName}单明细表状态为完成--失败!");
                            LogHelper.Info($"轮询:{taskName}:修改{taskName}单明细表状态为完成--失败!");
                            continue;
                        }