kazelee
2025-05-27 49efcc39ef399f8f3b170f6b06ffc2177643f1b2
core/Monitor.cs
@@ -66,6 +66,21 @@
                        S_CNTR_CODE = cntrCode,
                    };
                    // TODO 每次轮询都检查对应容器是否已登记,登记则更新,未登记则插入
                    var cntrItemRel = db.Queryable<TN_Container_Item>()
                        .Where(i => i.S_CNTR_CODE == cntrCode).First();
                    var insertTable = cntrItemRel == null;
                    if (insertTable) {
                        // 暂定在满托下线入库的时候,登记托盘容器-物料号关系(后面可能会改成系统维护)
                        cntrItemRel = new TN_Container_Item {
                            S_ITEM_CODE = itemCode,
                            S_CNTR_CODE = cntrCode,
                        };
                    }
                    // END TODO
                    var startLoc = db.Queryable<TN_Location>()
                        .Where(l => l.S_CODE == startLocCode) // 指定:起点货位号
                        .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "无" && l.C_ENABLE == "Y") // 筛选:未上锁
@@ -93,7 +108,6 @@
                    //    //return;
                    //}
                    // TODO 满箱入库算法待优化
                    var endLoc = db.Queryable<TN_Location>()
                        .Where(a => Settings.AreaMap[AreaName.空托存放区].Contains(a.S_AREA_CODE))
                        .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y") // 筛选:未上锁
@@ -120,6 +134,25 @@
                            LogHelper.Info(info);
                            continue;
                        }
                        // TODO 插入或更新容器与物料类型的绑定表
                        if (insertTable) {
                            if (db.Insertable<TN_Container_Item>(cntrItemRel).ExecuteCommand() <= 0) {
                                tran.RollbackTran();
                                info = $"登记容器物料类型绑定表失败:物料编码{cntrItemRel.S_ITEM_CODE},容器编码{cntrItemRel.S_CNTR_CODE}";
                                LogHelper.Info(info);
                                continue;
                            }
                        }
                        else {
                            if (db.Updateable<TN_Container_Item>(cntrItemRel).ExecuteCommand() <= 0) {
                                tran.RollbackTran();
                                info = $"登记容器物料类型绑定表失败:物料编码{cntrItemRel.S_ITEM_CODE},容器编码{cntrItemRel.S_CNTR_CODE}";
                                LogHelper.Info(info);
                                continue;
                            }
                        }
                        // END TODO
                        if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) {
                            tran.RollbackTran();
@@ -206,7 +239,7 @@
                    }
                    var lastDetail = db.Queryable<TN_Outbound_Detail>()
                        .Where(d => d.S_OO_NO == order.S_NO && d.N_B_STATE == 2) // TODO 或者改成查task
                        .Where(d => d.S_OO_NO == order.S_NO && d.N_B_STATE == 2) // [NOTE] 或者改成查task
                        .First();
                    if (lastDetail != null) {