kazelee
2025-05-29 e2303b1125817cb7887e36d5905c8f1661d685a3
core/Monitor.cs
@@ -21,7 +21,7 @@
        }
        public static void CheckInbound() {
            var taskName = TaskName.托盘_满托下线入库;
            var taskName = TaskName.T托盘_满托下线入库;
            var db = new SqlHelper<object>().GetInstance();
            var info = "";
            try {
@@ -66,20 +66,20 @@
                        S_CNTR_CODE = cntrCode,
                    };
                    // TODO 每次轮询都检查对应容器是否已登记,登记则更新,未登记则插入
                    var cntrItemRel = db.Queryable<TN_Container_Item>()
                    // BEG 每次轮询都检查对应容器是否已登记,登记则更新,未登记则插入
                    var cntrItemRel = db.Queryable<TN_Container_ItemType>()
                        .Where(i => i.S_CNTR_CODE == cntrCode).First();
                    var insertTable = cntrItemRel == null;
                    if (insertTable) {
                        // 暂定在满托下线入库的时候,登记托盘容器-物料号关系(后面可能会改成系统维护)
                        cntrItemRel = new TN_Container_Item {
                        cntrItemRel = new TN_Container_ItemType {
                            S_ITEM_CODE = itemCode,
                            S_CNTR_CODE = cntrCode,
                        };
                    }
                    // END TODO
                    // END
                    var startLoc = db.Queryable<TN_Location>()
                        .Where(l => l.S_CODE == startLocCode) // 指定:起点货位号
@@ -109,7 +109,7 @@
                    //}
                    var endLoc = db.Queryable<TN_Location>()
                        .Where(a => Settings.AreaMap[AreaName.空托存放区].Contains(a.S_AREA_CODE))
                        .Where(a => Settings.AreaMap[AreaName.K空托存放区].Contains(a.S_AREA_CODE))
                        .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y") // 筛选:未上锁
                        .Where(a => a.N_CURRENT_NUM == 0) // 筛选:空货位
                        .OrderBy(l => l.N_LAYER)
@@ -135,9 +135,9 @@
                            continue;
                        }
                        // TODO 插入或更新容器与物料类型的绑定表
                        // BEG 插入或更新容器与物料类型的绑定表
                        if (insertTable) {
                            if (db.Insertable<TN_Container_Item>(cntrItemRel).ExecuteCommand() <= 0) {
                            if (db.Insertable<TN_Container_ItemType>(cntrItemRel).ExecuteCommand() <= 0) {
                                tran.RollbackTran();
                                info = $"登记容器物料类型绑定表失败:物料编码{cntrItemRel.S_ITEM_CODE},容器编码{cntrItemRel.S_CNTR_CODE}";
                                LogHelper.Info(info);
@@ -145,14 +145,14 @@
                            }
                        }
                        else {
                            if (db.Updateable<TN_Container_Item>(cntrItemRel).ExecuteCommand() <= 0) {
                            if (db.Updateable<TN_Container_ItemType>(cntrItemRel).ExecuteCommand() <= 0) {
                                tran.RollbackTran();
                                info = $"登记容器物料类型绑定表失败:物料编码{cntrItemRel.S_ITEM_CODE},容器编码{cntrItemRel.S_CNTR_CODE}";
                                LogHelper.Info(info);
                                continue;
                            }
                        }
                        // END TODO
                        // END
                        if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) {
                            tran.RollbackTran();
@@ -207,7 +207,7 @@
        }
        public static void CheckOutboundOrder() {
            var taskName = TaskName.成品胶出库;
            var taskName = TaskName.C成品胶出库;
            var db = new SqlHelper<object>().GetInstance();
            var info = $"轮询--{taskName}--";
@@ -288,7 +288,7 @@
                        LogHelper.Info($"轮询--{taskName}:没有找到合适的终点货位!单号'{detail.S_OO_NO}'要求终点库区为'{detail.S_END_AREA}'");
                        continue;
                    }
                    detail.N_B_STATE = 2;
                    var cntId = detail.S_CNTR_CODE;
@@ -342,6 +342,38 @@
                        continue;
                    }
                }
                //// BEG 查找6个月以前的任务表和任务动作表
                //var oldTaskList = db.Queryable<TN_Task>()
                //    .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6))
                //    .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "完成")
                //    .ToList();
                //var oldTaskActionList = db.Queryable<TN_Task, TN_Task_Action>((t, a) => t.S_CODE == a.S_TASK_CODE)
                //    .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6))
                //    .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "完成")
                //    .Select((t, a) => a)
                //    .ToList();
                //// END
                //using (var tran = db.Ado.UseTran()) {
                //    // 在出库轮询中处理,查找任务单是否有半年前且已经完成的任务,如果有则删除
                //    // 这个操作不影响正常流程,如果失败也不需要回滚
                //    //if (db.Deleteable<TN_Task>()
                //    //    .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6))
                //    //    .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "完成")
                //    //    .ExecuteCommand() <= 0) {
                //    //    info = $"轮询{taskName}单时尝试删除半年前的任务失败";
                //    //    LogHelper.Info(info);
                //    //}
                //    if (db.Deleteable<TN_Task>(oldTaskList).ExecuteCommand() <= 0
                //        && db.Deleteable<TN_Task_Action>(oldTaskActionList).ExecuteCommand() <= 0) {
                //        info = $"轮询{taskName}单时尝试删除半年前的任务失败";
                //        LogHelper.Info(info);
                //    }
                //}
            }
            catch (Exception ex) {
                info += $"发生了异常:{ex.Message}";
@@ -350,7 +382,7 @@
        }
        public static void CheckCheckOrder() {
            var taskName = TaskName.抽检_出库;
            var taskName = TaskName.C抽检_出库;
            var db = new SqlHelper<object>().GetInstance();
            var info = "";
@@ -473,7 +505,7 @@
        }
        public static void CheckShiftOrder() {
            var taskName = TaskName.移库;
            var taskName = TaskName.Y移库;
            var db = new SqlHelper<object>().GetInstance();
            var info = "";
            try {