93383a62e31fd1f6fadaf0e47735e92a43bb5e89..16f23f81972f7c263bc6fa25dda694c6165e3e0d
2025-06-11 jinxin
Merge branch 'master' of http://121.37.118.194:8000/r/WMSPrjInstance/HH-003...
16f23f 对比 | 目录
2025-06-11 jinxin
11
6325ef 对比 | 目录
2个文件已修改
246 ■■■■ 已修改文件
C#/HH.WCS.Mobox3.WeiLi/api/ApiHelper.cs 238 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
C#/HH.WCS.Mobox3.WeiLi/process/TaskProcess.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
C#/HH.WCS.Mobox3.WeiLi/api/ApiHelper.cs
@@ -112,7 +112,7 @@
        {
            var result = new WeiLiResult();
            var db = new SqlHelper<object>().GetInstance();
            var cntrweight = model.cntrWeight == 1 ? 2 : model.cntrWeight == 2 ? 3 : model.cntrWeight == 3 ? 11 : model.cntrWeight == 4 ? 30 : model.cntrWeight == 5 ? 150 : 0;
            var cntrweight = model.cntrWeight;
            if (!string.IsNullOrEmpty(model.startBit) && !string.IsNullOrEmpty(model.endBit))
            {
                if (!string.IsNullOrEmpty(model.TaskNo))
@@ -947,135 +947,145 @@
            var db = new SqlHelper<object>().GetInstance();
            var result = new PlcSendTaskres { requestPk = model.requestPk, code = "0" };
            string message = "";
            if (model.noticeType == "0" || model.noticeType == "ERROR")
            try
            {
                //称重
                if (model.noticeType == "0")
                if (model.noticeType == "0" || model.noticeType == "ERROR")
                {
                    //外形检测成功 修改任务参数
                    var wcsTask = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == model.contNo && it.N_B_STATE == 2 && it.S_SCHEDULE_TYPE == "NDC").First();
                    if (wcsTask != null)
                    //称重
                    if (model.noticeType == "0")
                    {
                        wcsTask.N_ERR = 200;
                        db.Updateable(wcsTask).UpdateColumns(it => new { it.N_ERR }).ExecuteCommand();
                    }
                }
                else
                {
                    //外形检测失败 修改任务参数
                    var wcsTask = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == model.contNo && it.N_B_STATE == 2 && it.S_SCHEDULE_TYPE == "NDC").First();
                    if (wcsTask != null)
                    {
                        Location endLoc = null;
                        var Setting = Settings.ConnetAreas.Where(a => a.InLocList.Contains(wcsTask.S_END_LOC)).FirstOrDefault();
                        if (Setting != null)
                        //外形检测成功 修改任务参数
                        var wcsTask = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == model.contNo && it.N_B_STATE == 2 && it.S_SCHEDULE_TYPE == "NDC").First();
                        if (wcsTask != null)
                        {
                            if (Settings.DBAreas.Contains(wcsTask.S_START_AREA))
                            wcsTask.N_ERR = 200;
                            db.Updateable(wcsTask).UpdateColumns(it => new { it.N_ERR }).ExecuteCommand();
                        }
                    }
                    else
                    {
                        //外形检测失败 修改任务参数
                        var wcsTask = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == model.contNo && it.N_B_STATE == 2 && it.S_SCHEDULE_TYPE == "NDC").First();
                        if (wcsTask != null)
                        {
                            Location endLoc = null;
                            var Setting = Settings.ConnetAreas.Where(a => a.InLocList.Contains(wcsTask.S_END_LOC)).FirstOrDefault();
                            if (Setting != null)
                            {
                                endLoc = db.Queryable<Location>().Where(a => a.S_CODE == wcsTask.S_START_LOC).First();
                            }
                            else
                            {
                                var endArea = Setting.ErrorArea;
                                endLoc = db.Queryable<Location>().Where(a => a.S_AREA_CODE == endArea && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0).First();
                            }
                            if (endLoc != null)
                            {
                                var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_CODE == wcsTask.S_OP_CODE).First();
                                if (wmsTask != null)
                                if (Settings.DBAreas.Contains(wcsTask.S_START_AREA))
                                {
                                    var PlcTask = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == model.contNo && (it.N_B_STATE == 2 || it.N_B_STATE == 1) && it.S_SCHEDULE_TYPE == "WCS").First();
                                    if (PlcTask != null)
                                    {
                                        TaskProcess.Cancel(PlcTask);
                                        //取消plc任务
                                        TaskProcess.OperateStatus(PlcTask, 7);
                                        WCSHelper.Fail(PlcTask);
                                    }
                                    LocationHelper.UnLockLoc(wmsTask.S_END_LOC);
                                    LocationHelper.LockLoc(endLoc.S_CODE, 1);
                                    LocationHelper.LockLoc(wcsTask.S_END_LOC, 2);
                                    wcsTask.S_ERR_LOC = endLoc.S_CODE;
                                    wcsTask.N_ERR = 500;
                                    db.Updateable(wcsTask).UpdateColumns(it => new { it.N_ERR, it.S_ERR_LOC }).ExecuteCommand();
                                    endLoc = db.Queryable<Location>().Where(a => a.S_CODE == wcsTask.S_START_LOC).First();
                                }
                            }
                            else
                            {
                                LogHelper.Info($"外形检测失败 未找到退货终点");
                            }
                                else
                                {
                                    var endArea = Setting.ErrorArea;
                                    endLoc = db.Queryable<Location>().Where(a => a.S_AREA_CODE == endArea && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0).First();
                                }
                                if (endLoc != null)
                                {
                                    var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_CODE == wcsTask.S_OP_CODE).First();
                                    if (wmsTask != null)
                                    {
                                        var PlcTask = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == model.contNo && (it.N_B_STATE == 2 || it.N_B_STATE == 1) && it.S_SCHEDULE_TYPE == "WCS").First();
                                        if (PlcTask != null)
                                        {
                                            TaskProcess.Cancel(PlcTask);
                                            //取消plc任务
                                            TaskProcess.OperateStatus(PlcTask, 7);
                                            WCSHelper.Fail(PlcTask);
                                        }
                                        LocationHelper.UnLockLoc(wmsTask.S_END_LOC);
                                        LocationHelper.LockLoc(endLoc.S_CODE, 1);
                                        LocationHelper.LockLoc(wcsTask.S_END_LOC, 2);
                                        wcsTask.S_ERR_LOC = endLoc.S_CODE;
                                        wcsTask.N_ERR = 500;
                                        db.Updateable(wcsTask).UpdateColumns(it => new { it.N_ERR, it.S_ERR_LOC }).ExecuteCommand();
                                    }
                                }
                                else
                                {
                                    LogHelper.Info($"外形检测失败 未找到退货终点");
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                var task = WCSHelper.GetTask(model.requestPk);
                if (task != null)
                {
                    //if (!WCSHelper.CheckActionRecordExist(task.S_CODE, int.Parse(model.noticeType)))
                    //{
                    switch (model.noticeType)
                    {
                        case "1":
                            //执行状态
                            WCSHelper.Begin(task);
                            if (task.S_TYPE == "分拣出")
                            {
                                WCSHelper.UpdateStorStatus(task.S_CNTR_CODE, 3);
                            }
                            break;
                        case "5":
                            //取货无货(释放货位)
                            TaskProcess.OperateStatus(task, 4);
                            break;
                        case "2":
                            if (!WCSHelper.CheckActionRecordExist(task.S_CODE, 5))
                            {
                                TaskProcess.OperateStatus(task, 4);
                            }
                            //完成状态 (出库任务生成第二段agv任务) 解绑起点终点
                            //if (task.S_B_STATE != "取消" && task.S_B_STATE != "完成" && task.S_B_STATE != "关闭" && task.S_B_STATE != "强制完成")
                            //{
                            TaskProcess.OperateStatus(task, 6);
                            if (task.S_OP_NAME == "入库")
                            {
                                WMSHelper.AddChange(task);
                            }
                            if (task.S_OP_NAME == "出库")
                            {
                                WMSHelper.DeleteChange(task);
                            }
                            if (task.S_TYPE == "分拣回")
                            {
                                WMSHelper.PreparationState(task);
                            }
                            //TaskProcess.PlcSencondTask(task);
                            WCSHelper.End(task);
                            WMSHelper.End(task);
                            //}
                            break;
                        case "8":
                            //取货无货(释放货位)
                            quhuowuhuo(db, task);
                            break;
                        case "9":
                            //放货有货 (重分货位)
                            fanghuoyouhuo(db, result, task);
                            break;
                    }
                    WCSHelper.AddActionRecord(task.S_CODE, int.Parse(model.noticeType), "", "");
                    //}
                }
                else
                {
                    result.code = "1";
                    result.msg = "该任务编号不存在";
                    var task = WCSHelper.GetTask(model.requestPk);
                    if (task != null)
                    {
                        //if (!WCSHelper.CheckActionRecordExist(task.S_CODE, int.Parse(model.noticeType)))
                        //{
                        switch (model.noticeType)
                        {
                            case "1":
                                //执行状态
                                WCSHelper.Begin(task);
                                if (task.S_TYPE == "分拣出")
                                {
                                    WCSHelper.UpdateStorStatus(task.S_CNTR_CODE, 3);
                                }
                                break;
                            case "5":
                                //取货无货(释放货位)
                                TaskProcess.OperateStatus(task, 4);
                                break;
                            case "2":
                                if (!WCSHelper.CheckActionRecordExist(task.S_CODE, 5))
                                {
                                    TaskProcess.OperateStatus(task, 4);
                                }
                                //完成状态 (出库任务生成第二段agv任务) 解绑起点终点
                                //if (task.S_B_STATE != "取消" && task.S_B_STATE != "完成" && task.S_B_STATE != "关闭" && task.S_B_STATE != "强制完成")
                                //{
                                TaskProcess.OperateStatus(task, 6);
                                if (task.S_OP_NAME == "入库")
                                {
                                    WMSHelper.AddChange(task);
                                }
                                if (task.S_OP_NAME == "出库")
                                {
                                    WMSHelper.DeleteChange(task);
                                }
                                if (task.S_TYPE == "分拣回")
                                {
                                    WMSHelper.PreparationState(task);
                                }
                                //TaskProcess.PlcSencondTask(task);
                                WCSHelper.End(task);
                                WMSHelper.End(task);
                                //}
                                break;
                            case "8":
                                //取货无货(释放货位)
                                quhuowuhuo(db, task);
                                break;
                            case "9":
                                //放货有货 (重分货位)
                                fanghuoyouhuo(db, result, task);
                                break;
                        }
                        WCSHelper.AddActionRecord(task.S_CODE, int.Parse(model.noticeType), "", "");
                        //}
                    }
                    else
                    {
                        result.code = "1";
                        result.msg = "该任务编号不存在";
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error($"WCS回报任务失败 异常信息{ex.Message}", ex);
                result.code = "1";
                result.msg = $"WCS回报任务失败 异常信息{ex.Message}";
            }
            return result;
        }
C#/HH.WCS.Mobox3.WeiLi/process/TaskProcess.cs
@@ -915,6 +915,7 @@
        /// <param name="mst"></param>
        internal static bool SendTask(WCSTask mst)
        {
            var db = new SqlHelper<object>().GetInstance();
            var result = false;
            var start = "0"; var end = "0";
            var Trow = "0";
@@ -929,6 +930,13 @@
                    Trow = "1024";
                }
                var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_CODE == mst.S_OP_CODE).First();
                if (wmsTask != null && wmsTask.N_TRAY_WEIGHT > 0)
                {
                    // 1000 2000 3000 4000 5000
                    Trow = (wmsTask.N_TRAY_WEIGHT * 4096).ToString();
                }
                Console.WriteLine($"SendTask {mst.S_CODE}");
                Console.WriteLine("start=" + start);