11
jinxin
2025-06-11 6325ef722e9f6a47779054aecb46025fdc864a9a
11
1个文件已添加
2个文件已修改
271 ■■■■■ 已修改文件
C#/HH.WCS.Mobox3.WeiLi/HH.WCS.Mobox3.WeiLi.sln 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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/HH.WCS.Mobox3.WeiLi.sln
New file
@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.33529.622
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.WeiLi", "HH.WCS.Mobox3.WeiLi.csproj", "{E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Release|Any CPU = Release|Any CPU
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
    GlobalSection(ExtensibilityGlobals) = postSolution
        SolutionGuid = {5A799032-C3BF-4259-86C9-0FCB4884F1FB}
    EndGlobalSection
EndGlobal
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);