杨前锦
2025-06-05 01cc5773457f68274ef1b2d9d9daca8983761828
佳通bug优化
16个文件已修改
3个文件已删除
391 ■■■■■ 已修改文件
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/.vs/HH.WCS.Mobox3.FJJT/FileContentIndex/5cf5465c-9dee-4acf-a295-4a31ca90c995.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/.vs/HH.WCS.Mobox3.FJJT/FileContentIndex/6dfcbcd2-e6c6-442b-a368-81c6e80ee21a.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/.vs/HH.WCS.Mobox3.FJJT/FileContentIndex/ca9c19c4-0ec8-4ea4-9dcd-27b9894ec17e.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/.vs/HH.WCS.Mobox3.FJJT/v17/DocumentLayout.json 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/HH.WCS.Mobox3.FJJT.sln 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/WmsController.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjMesTask.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjXcTask.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LogicConfig.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/config/config.json 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/process/TaskProcess.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/util/Settings.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/WCSHelper.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/.vs/HH.WCS.Mobox3.FJJT/FileContentIndex/5cf5465c-9dee-4acf-a295-4a31ca90c995.vsidx
Binary files differ
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/.vs/HH.WCS.Mobox3.FJJT/FileContentIndex/6dfcbcd2-e6c6-442b-a368-81c6e80ee21a.vsidx
Binary files differ
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/.vs/HH.WCS.Mobox3.FJJT/FileContentIndex/ca9c19c4-0ec8-4ea4-9dcd-27b9894ec17e.vsidx
Binary files differ
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/.vs/HH.WCS.Mobox3.FJJT/v17/DocumentLayout.json
@@ -1,7 +1,12 @@
{
  "Version": 1,
  "WorkspaceRootPath": "F:\\hanhe\\YNJT\\HH.WCS.Mobox3\\HH.WCS.Mobox3.FJJT\\",
  "Documents": [],
  "WorkspaceRootPath": "F:\\hanhe\\WMS\\HH-0127_YinNiJiaTong\\HH.WCS.Mobox3\\HH.WCS.Mobox3.FJJT\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{0809739B-B9DF-4757-86FE-045EB5D44798}|HH.WCS.Mobox3.FJJT.csproj|f:\\hanhe\\wms\\hh-0127_yinnijiatong\\hh.wcs.mobox3\\hh.wcs.mobox3.fjjt\\api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{0809739B-B9DF-4757-86FE-045EB5D44798}|HH.WCS.Mobox3.FJJT.csproj|solutionrelative:api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    }
  ],
  "DocumentGroupContainers": [
    {
      "Orientation": 0,
@@ -9,7 +14,7 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": -1,
          "SelectedChildIndex": 5,
          "Children": [
            {
              "$type": "Bookmark",
@@ -30,6 +35,19 @@
            {
              "$type": "Bookmark",
              "Name": "ST:128:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "Title": "WmsController.cs",
              "DocumentMoniker": "F:\\hanhe\\WMS\\HH-0127_YinNiJiaTong\\HH.WCS.Mobox3\\HH.WCS.Mobox3.FJJT\\api\\WmsController.cs",
              "RelativeDocumentMoniker": "api\\WmsController.cs",
              "ToolTip": "F:\\hanhe\\WMS\\HH-0127_YinNiJiaTong\\HH.WCS.Mobox3\\HH.WCS.Mobox3.FJJT\\api\\WmsController.cs",
              "RelativeToolTip": "api\\WmsController.cs",
              "ViewState": "AQIAAAAAAAAAAAAAAADwvwAAAAAAAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-04T09:30:35.38Z",
              "EditorCaption": ""
            }
          ]
        },
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/HH.WCS.Mobox3.FJJT.sln
@@ -3,11 +3,23 @@
# Visual Studio Version 17
VisualStudioVersion = 17.10.35013.160
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.FJJT", "HH.WCS.Mobox3.FJJT.csproj", "{E98DD345-9B0E-46C8-B0AB-20B99B5ACAEA}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.FJJT", "HH.WCS.Mobox3.FJJT.csproj", "{0809739B-B9DF-4757-86FE-045EB5D44798}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.HD", "..\HH.WCS.Mobox3.HD\HH.WCS.Mobox3.HD.csproj", "{44207EA0-2B75-4387-8A15-5C3D70A73C20}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.TSSG", "..\HH.WCS.Mobox3.TSSG\HH.WCS.Mobox3.TSSG.csproj", "{8ACEE926-6897-4380-BF9D-9A443FEE6A6F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.SXJK", "..\HH.WCS.Mobox3.SXJK\HH.WCS.Mobox3.SXJK.csproj", "{F6E51E0D-CCFD-44AD-AF62-B741F33C0E28}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.Template", "..\HH.WCS.Mobox3.Template\HH.WCS.Mobox3.Template.csproj", "{E98DD345-9B0E-46C8-B0AB-20B99B5ACAEA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.YNJT_BZP", "..\HH.WCS.Mobox3.YNJT_BZP\HH.WCS.Mobox3.YNJT_BZP.csproj", "{0B722ABA-0915-419D-BE61-84AE033AE5B0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.YNJT_BZP_GT", "..\HH.WCS.Mobox3.YNJT_BZP_GT\HH.WCS.Mobox3.YNJT_BZP_GT.csproj", "{82699D04-CB3F-4511-8CCF-08FA3730BB11}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.YNJT_PT", "..\HH.WCS.Mobox3.YNJT_PT\HH.WCS.Mobox3.YNJT_PT.csproj", "{344FD924-1B98-4B91-942B-619A1ADE8C5E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.ZS7412", "..\HH.WCS.Mobox3.ZS7412\HH.WCS.Mobox3.ZS7412.csproj", "{FFBB13EB-B1BC-45EC-922E-1B3AA642622A}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -15,10 +27,10 @@
        Release|Any CPU = Release|Any CPU
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {E98DD345-9B0E-46C8-B0AB-20B99B5ACAEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {E98DD345-9B0E-46C8-B0AB-20B99B5ACAEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {E98DD345-9B0E-46C8-B0AB-20B99B5ACAEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {E98DD345-9B0E-46C8-B0AB-20B99B5ACAEA}.Release|Any CPU.Build.0 = Release|Any CPU
        {0809739B-B9DF-4757-86FE-045EB5D44798}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {0809739B-B9DF-4757-86FE-045EB5D44798}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {0809739B-B9DF-4757-86FE-045EB5D44798}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {0809739B-B9DF-4757-86FE-045EB5D44798}.Release|Any CPU.Build.0 = Release|Any CPU
        {44207EA0-2B75-4387-8A15-5C3D70A73C20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {44207EA0-2B75-4387-8A15-5C3D70A73C20}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {44207EA0-2B75-4387-8A15-5C3D70A73C20}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -27,6 +39,30 @@
        {8ACEE926-6897-4380-BF9D-9A443FEE6A6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {8ACEE926-6897-4380-BF9D-9A443FEE6A6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {8ACEE926-6897-4380-BF9D-9A443FEE6A6F}.Release|Any CPU.Build.0 = Release|Any CPU
        {F6E51E0D-CCFD-44AD-AF62-B741F33C0E28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {F6E51E0D-CCFD-44AD-AF62-B741F33C0E28}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {F6E51E0D-CCFD-44AD-AF62-B741F33C0E28}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {F6E51E0D-CCFD-44AD-AF62-B741F33C0E28}.Release|Any CPU.Build.0 = Release|Any CPU
        {E98DD345-9B0E-46C8-B0AB-20B99B5ACAEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {E98DD345-9B0E-46C8-B0AB-20B99B5ACAEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {E98DD345-9B0E-46C8-B0AB-20B99B5ACAEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {E98DD345-9B0E-46C8-B0AB-20B99B5ACAEA}.Release|Any CPU.Build.0 = Release|Any CPU
        {0B722ABA-0915-419D-BE61-84AE033AE5B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {0B722ABA-0915-419D-BE61-84AE033AE5B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {0B722ABA-0915-419D-BE61-84AE033AE5B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {0B722ABA-0915-419D-BE61-84AE033AE5B0}.Release|Any CPU.Build.0 = Release|Any CPU
        {82699D04-CB3F-4511-8CCF-08FA3730BB11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {82699D04-CB3F-4511-8CCF-08FA3730BB11}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {82699D04-CB3F-4511-8CCF-08FA3730BB11}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {82699D04-CB3F-4511-8CCF-08FA3730BB11}.Release|Any CPU.Build.0 = Release|Any CPU
        {344FD924-1B98-4B91-942B-619A1ADE8C5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {344FD924-1B98-4B91-942B-619A1ADE8C5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {344FD924-1B98-4B91-942B-619A1ADE8C5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {344FD924-1B98-4B91-942B-619A1ADE8C5E}.Release|Any CPU.Build.0 = Release|Any CPU
        {FFBB13EB-B1BC-45EC-922E-1B3AA642622A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {FFBB13EB-B1BC-45EC-922E-1B3AA642622A}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {FFBB13EB-B1BC-45EC-922E-1B3AA642622A}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {FFBB13EB-B1BC-45EC-922E-1B3AA642622A}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs
@@ -813,7 +813,7 @@
                    return responseResult;
                }
                middleLoc = WMSHelper.GetMinTaskTransfeLoc(startLoc.S_AREA_CODE, "1", "2");
                middleLoc = WMSHelper.GetMinTaskTransfeLoc(startLoc.S_AREA_CODE, 2 , 2);
                if (middleLoc == null) {
                    WMSHelper.addAlarmRecord("流程异常", "高", $"MES叫料任务{mesTask.ID},立库接驳位可能处于锁定或禁用状态,请查看");
                    responseResult.code = 1;
@@ -1238,7 +1238,7 @@
                        wmsEndLoc = WMSHelper.getInStockEndLoc(null, container.N_DETAIL_COUNT == 0 ? 0 : 1, container.N_TYPE);
                        if (wmsEndLoc != null)
                        {
                            agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, "1", "1", "2");  // 1.立库接驳位 1.入库 2.非直连
                            agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, 1, 2);  // 1.立库接驳位 1.入库 2.非直连
                            if (agvEndLoc != null)
                            {
                                LogHelper.Info($"创建立库站台到立库的预创建任务,agv终点货位:{agvEndLoc.S_CODE},立库终点货位:{wmsEndLoc.S_CODE}", "AGV");
@@ -1314,7 +1314,7 @@
                        wmsEndLoc = WMSHelper.getInStockEndLoc(null, container.N_DETAIL_COUNT == 0 ? 0 : 1, container.N_TYPE);
                        if (wmsEndLoc != null)
                        {
                            agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, "1", "1", "2");  // 1.立库接驳位 1.入库 2.非直连
                            agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, 1, 2);  // 1.立库接驳位 1.入库 2.非直连
                            if (agvEndLoc != null)
                            {
                                LogHelper.Info($"创建立库站台到立库的预创建任务,agv终点货位:{agvEndLoc.S_CODE},立库终点货位:{wmsEndLoc.S_CODE}", "AGV");
@@ -1448,7 +1448,7 @@
                        }
                    }
                    middleLoc = WMSHelper.GetTransfeRelevanceLoc(startLoc.S_AREA_CODE, "1" , "2");
                    middleLoc = WMSHelper.GetTransfeRelevanceLoc(startLoc.S_AREA_CODE, 1 , 2);
                    if (middleLoc != null)
                    {
@@ -1680,7 +1680,7 @@
                wmsEndLoc = WMSHelper.getInStockEndLoc(null, container.N_DETAIL_COUNT == 0 ? 0 : 1, container.N_TYPE);
                if (wmsEndLoc != null)
                {
                    agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, "1", "1", "2");  // 1.立库接驳位 1.入库 2.非直连
                    agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, 1, 2);  // 1.立库接驳位 1.入库 2.非直连
                    if (agvEndLoc != null)
                    {
                        // 预先生成入库站台-立库终点的搬运任务
@@ -2025,41 +2025,32 @@
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static bool switchStationAttribute(SwitchStationAttributeModel model)
        public static ResponseResult switchStationAttribute(SwitchStationAttributeModel model)
        {
            bool result = false;
            ResponseResult responseResult = new ResponseResult();
            var task = WCSHelper.GetTaskByStartOrEnd(model.locCode);
            if (task == null)
            if (task == null)
            {
                var transfeRelevance= WMSHelper.GetTransfeRelevance(model.locCode);  // 接驳位属性
                var transfeRelevance = WMSHelper.GetTransfeRelevance(model.locCode);  // 接驳位属性
                LogHelper.Info($"原站台属性:{JsonConvert.SerializeObject(transfeRelevance)}", "WMS");
                if (transfeRelevance != null && transfeRelevance.S_TYPE == "1")
                if (transfeRelevance != null && transfeRelevance.N_PROPERTY == 2)
                {
                    if (model.signalType == "1")
                    {
                        if (transfeRelevance.S_PROPERTY == "2")
                        {
                            result = true;
                        }
                        else
                        {
                            result = WMSHelper.updateTransfeLocProperty(model.locCode, "2");
                        }
                         WMSHelper.updateTransfeLocProperty(model.locCode, 0);
                    }
                    if (model.signalType == "2")
                    {
                        if (transfeRelevance.S_PROPERTY == "3")
                        {
                            result = true;
                        }
                        else
                        {
                            result = WMSHelper.updateTransfeLocProperty(model.locCode, "3");
                        }
                        WMSHelper.updateTransfeLocProperty(model.locCode, 1);
                    }
                }
            }
            return result;
            else
            {
                responseResult.code = 1;
                responseResult.msg = "接驳位存在未完成的任务,无法切换站台属性";
            }
            return responseResult;
        }
        /// <summary>
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/WmsController.cs
@@ -199,11 +199,7 @@
        {
            LogHelper.Info("switchStationAttribute 入参:" + JsonConvert.SerializeObject(model), "WMS");
            ResponseResult result = new ResponseResult();
            var bo = ApiHelper.switchStationAttribute(model);
            if (!bo)
            {
                result.code = 201;
            }
            result = ApiHelper.switchStationAttribute(model);
            LogHelper.Info("switchStationAttribute 出参:" + JsonConvert.SerializeObject(result), "WMS");
            return result;
        }
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjMesTask.cs
@@ -30,6 +30,8 @@
        public string RECEIVE_DATE { get; set; } //读取日期 读取后更新
        public string EQP { get; set; } //机台编号
        public string PLAN_ID { get; set; } //计划号
        public string AWAIT_MSG { get; set; } // 等待消息
        public bool IS_FINISH { get; set; } // 是否完成上料
        public string RECEIVE_MSG { get; set; } //错误信息 错误时,AGV写入详细错误信息
    }
}
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjXcTask.cs
@@ -11,7 +11,7 @@
    /// <summary>
    /// WMS下发任务表
    /// </summary>
    [SugarTable("TN_AGV_TASK")]
    [SugarTable("TN_WMS_TASK")]
    internal class LjXcTask : BaseModel
    {
        public int ID { get; set; } //主键
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LogicConfig.cs
@@ -10,15 +10,15 @@
    [SugarTable("TN_WMS_Zone")]
    public class LogicConfig : BaseModel
    {
        public string S_JT_CODE { get; set; } //机台号
        public string S_MTJBLOC { get; set; } //满框入库接驳位
        public string S_JTBKLYLOC { get; set; } //机台补空来源位
        public string S_LKBKHCLOC { get; set; } //补空缓存位
        public string S_LKKTJBLOC { get; set; } //补空接驳位
        public string S_AREA_CODE { get; set; } //关联立库
        public string S_JT_CODE { get; set; } //机台号       对应 MES下发任务表里的机台编号 EQP
        public string S_MTJBLOC { get; set; } //满框入库接驳位     直连/非直连都是对应立库入库接驳位
        public string S_JTBKLYLOC { get; set; } //机台补空来源位       缓存位 -> 机台
        public string S_LKBKHCLOC { get; set; } //立库补空缓存位       立库 -> 缓存位
        public string S_LKKTJBLOC { get; set; } //立库补空接驳位       直连/非直连都是对应立库出库接驳位
        public string S_AREA_CODE { get; set; } //关联立库          出入库对应的存储立库
        public string S_TASK_TYPE { get; set; } //任务类型 1.胎侧直连类型 2.帘布直连类型 3.非直连类型
        public string S_PRI { get; set; } //优先级
        public string S_RG_LOC { get; set; } //是否为人工下线位  是/否
        public string S_RG_LOC { get; set; } //机台是否为人工下线位  是/否    (人工下线位代表人工机台补空工装)
        public string S_ENABLE { get; set; } //是否启用 是/否
    }
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs
@@ -10,16 +10,16 @@
    /// <summary>
    /// 立库接驳位配置表
    /// </summary>
    [SugarTable("TN_ConnectLoc_ReleArea")]
    [SugarTable("TN_ShipmentLocConfig")]
    internal class TransfeRelevance :BaseModel
    {
        public string S_LOC_CODE { get; set; } // 立库接驳位编码
        public string S_TYPE { get; set; } // 类型 1.立库接驳位 2.缓存位
        public string S_PROPERTY { get; set; } // 货位属性 (1.直连 2.非直连、3.人工 、4.固定站台)
        public string S_ACT_TYPE { get; set; } // 动作类型 0.默认 1.入库 2.出库
        public string S_RELE_AREA { get; set; } // 关联立库库区编码
        public string S_DEVICE_NO { get; set; } // 设备号
        public int N_READ_LOC { get; set; } // 是否读码位 0、否 1.是
        public string S_LOC_CODE { get; set; } // 货位编码
        public int N_PROPERTY { get; set; } // 货位属性 (1.直连 2.非直连)
        public int N_ACT_TYPE { get; set; } // 货位类型 1.入库接驳位 2.出库接驳位
        public string S_RELE_AREA { get; set; } // 所属库区
        public string S_DEVICE_NO { get; set; } // 设备号         用途:用于查询线体光电,判断缓存位是否为空
        public int N_IS_MANUAL { get; set; } // 是否为人工 (0.非人工 2.人工)   用途:切换人工站台
        public int N_READ_LOC { get; set; } // 是否读码位 (0、否 1.是)
    }
}
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs
@@ -30,7 +30,7 @@
                LogHelper.Info($"任务{mst.S_CODE} 货位{mst.S_END_LOC}卸货完成,起点解绑容器{mst.S_CNTR_CODE}");
                // 终点为直连缓存位,不绑定
                var loc = WMSHelper.GetTransfeRelevance(mst.S_END_LOC); 
                if (loc != null && loc.S_PROPERTY == "1")
                if (loc != null && loc.N_PROPERTY == 1)
                {
                    LocationHelper.UnLockLoc(mst.S_END_LOC);
                    return;
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs
@@ -435,17 +435,16 @@
        /// 1.查询异常区货位
        /// </summary>
        /// <param name="areaCode">库区</param>
        /// <param name="type">类型 1.立库接驳位 2.缓存位</param>
        /// <param name="property">货位属性(1.直连 2.非直连 3.人工 4.固定站台)</param>
        /// <param name="actType">动作类型(0.默认 1.入库 2.出库)</param>
        /// <param name="property">货位属性(1.直连 2.非直连)</param>
        /// <param name="actType">动作类型(0.人工接驳位 1.入库接驳位 2.出库接驳位)</param>
        /// <returns></returns>
        public static Location GetTransfeRelevanceLoc(string areaCode , string type ,string actType = "0" ,string property = "2" )
        public static Location GetTransfeRelevanceLoc(string areaCode  ,int actType ,int property )
        {
            Location loc = null;
            var db = new SqlHelper<object>().GetInstance();
            loc = db.Queryable<Location>()
                .LeftJoin<TransfeRelevance>((a,b)=> a.S_CODE == b.S_LOC_CODE)
                .Where((a, b) => b.S_RELE_AREA.Trim() == areaCode && b.S_TYPE.Trim() == type && b.S_PROPERTY == property && b.S_ACT_TYPE == actType && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y")
                .Where((a, b) => b.S_RELE_AREA.Trim() == areaCode && b.N_PROPERTY == property && b.N_ACT_TYPE == actType && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y")
                .First();
            return loc;
        }
@@ -454,13 +453,13 @@
        /// 查询接驳位关联属性
        /// </summary>
        /// <param name="locCode"></param>
        /// <param name="property">货位属性 (1.直连 2.非直连、3.人工 、4.固定站台)</param>
        /// <param name="isManual">货位属性 (0.非人工 1.人工)</param>
        /// <returns></returns>
        public static bool updateTransfeLocProperty(string locCode ,string property)
        public static bool updateTransfeLocProperty(string locCode ,int isManual)
        {
            bool result = false;
            var db = new SqlHelper<object>().GetInstance();
            result = db.Updateable<TransfeRelevance>().SetColumns(a => new TransfeRelevance() { S_PROPERTY = property } ).Where(a => a.S_LOC_CODE.Trim() == locCode).ExecuteCommand() > 0;
            result = db.Updateable<TransfeRelevance>().SetColumns(a => new TransfeRelevance() { N_IS_MANUAL = isManual } ).Where(a => a.S_LOC_CODE.Trim() == locCode).ExecuteCommand() > 0;
            return result;
        }
@@ -469,17 +468,16 @@
        /// 注:查询任务最少的接驳位
        /// </summary>
        /// <param name="areaCode">库区</param>
        /// <param name="property">货位属性 (1.直连 2.非直连、3.人工 、4.固定站台)</param>
        /// <param name="type">类型 1.立库接驳位 2.缓存位 3.机台下线位 4.异常库位</param>
        /// <param name="actType">动作类型 1.入库  2.出库</param>
        /// <param name="property">货位属性 ( 0.人工 1.直连 2.非直连)</param>
        /// <param name="actType">动作类型 (1.入库接驳位  2.出库接驳位)</param>
        /// <returns></returns>
        public static Location GetMinTaskTransfeLoc(string areaCode , string type ,string actType, string property = "2")
        public static Location GetMinTaskTransfeLoc(string areaCode ,int actType, int property)
        {
            var db = new SqlHelper<object>().GetInstance();
            var loc = db.Queryable<Location>()
                .LeftJoin<TransfeRelevance>((a,b) => a.S_CODE == b.S_LOC_CODE)
                .LeftJoin<WCSTask>((a,b,c) => a.S_CODE == c.S_END_LOC && c.N_B_STATE < 3)
                .Where((a, b, c) => b.S_RELE_AREA.Trim() == areaCode && b.S_TYPE.Trim() == type && b.S_ACT_TYPE.Trim() == actType && b.S_PROPERTY.Trim() == property  && a.N_LOCK_STATE < 3 && a.C_ENABLE == "Y")
                .Where((a, b, c) => b.S_RELE_AREA.Trim() == areaCode  && b.N_ACT_TYPE == actType && b.N_PROPERTY == property  && a.N_LOCK_STATE < 3 && a.C_ENABLE == "Y")
                .GroupBy((a, b, c) => a.S_CODE)
                .Select((a, b, c) => new {
                    count = SqlFunc.AggregateCount(c.S_END_LOC),
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
@@ -223,9 +223,10 @@
            try
            {
                Location endLoc = LocationHelper.GetLoc(model.endLoc);
                if (endLoc.N_CURRENT_NUM == 0)
                if (endLoc.N_CURRENT_NUM == 0)
                {
                    for (int i = 0; i < endLoc.N_CAPACITY; i++)
                    int taskNum = 0;
                    for (int i = 0; i < endLoc.N_CAPACITY; i++)
                    {
                        Location startLoc = WMSHelper.GetoutStockStartLoc(model.itemCode);
                        Location middleLoc = null;
@@ -258,12 +259,11 @@
                        }
                        else
                        {
                            result.ResultCode = 1;
                            result.ResultMsg = "库内没有满足条件的物料";
                            return result;
                            LogHelper.Info($"库内没有物料:{model.itemCode}", "WMS");
                            break;
                        }
                        if (endLoc != null)
                        {
                            var wmsTask = new WMSTask()
@@ -309,10 +309,22 @@
                                    // 更新作业任务状态
                                    wmsTask.N_B_STATE = 1;
                                    WMSHelper.UpdateTaskState(wmsTask);
                                    taskNum++;
                                }
                            }
                        }
                    }
                    if (taskNum < endLoc.N_CAPACITY)
                    {
                        result.ResultCode = 1;
                        result.ResultMsg = $"库内物料不足,已生成出库任务数:{taskNum}";
                    }
                }
                else
                {
                    result.ResultCode = 1;
                    result.ResultMsg = "终点货位当前容量不为0,无法叫料";
                }
            }
            catch (Exception ex)
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/config/config.json
@@ -4,18 +4,34 @@
  "SqlServer": "server=192.168.1.204;uid=root;pwd=yn123456;database=oimobox",
  "SqlServer1": "Data Source=192.168.1.198\\sql2008;Initial Catalog=OIMobox;User ID=sa;Password=sa@2015",
  "ApiPort": 8901,
  "FacCode": "1122",
  "WHCode": "YNJT",
  "FacCode": "IF001",
  "WHCode": "IW001",
  "NDCApiUrl": "",
  "baseTrayBufferLoc": [
    {
      "bufferOutLoc": "SeA21",
      "bufferInLoc": "PPA06-12-7-2"
    {
      "bufferOutLoc": "SeA26",
      "bufferInLoc": "PPA06-12-1-2"
    },
    {
      "bufferOutLoc": "SeA27",
      "bufferInLoc": "PPA07-13-1-1"
    },
    {
      "bufferOutLoc": "SeA28",
      "bufferInLoc": "PPA07-13-1-2"
    },
    {
      "bufferOutLoc": "SeA29",
      "bufferInLoc": "PPA07-14-1-1"
    },
    {
      "bufferOutLoc": "SeA231",
      "bufferInLoc": "PPA07-14-1-2"
    }
  ], // 母拖自动入库货位
  ],
  "errorBufferArea": "EA",
  "storeAreaCode": "PPA",
  "AgvWaitLoc": [
    {
      "loc": "WA01",
@@ -29,138 +45,166 @@
    }
  ],
  // type 1.agv接驳位  2.人工接驳位  action 0.通用 1.入库 2.出库
  // action 0.通用 1.入库 2.出库
  "AgvJBLoc": [
    {
      "locCode": "SeA01",
      "type": 2,
      "roadway": [ 1 ],
      "action": 0
      "action": 1
    },
    {
      "locCode": "SeA02",
      "type": 2,
      "roadway": [ 1 ],
      "action": 0
      "action": 1
    },
    {
      "locCode": "SeA03",
      "type": 1,
      "roadway": [ 1 ],
      "action": 1
    },
    {
      "locCode": "SeA04",
      "type": 1,
      "roadway": [ 1 ],
      "action": 2
    },
    {
      "locCode": "SeA05",
      "type": 2,
      "roadway": [ 2, 3 ],
      "action": 0
      "roadway": [ 2],
      "action": 1
    },
    {
      "locCode": "SeA06",
      "type": 2,
      "roadway": [ 2, 3 ],
      "action": 0
      "roadway": [ 2 ],
      "action": 1
    },
    {
      "locCode": "SeA07",
      "type": 2,
      "roadway": [ 2, 3 ],
      "action": 0
      "roadway": [ 2 ],
      "action": 1
    },
    {
      "locCode": "SeA08",
      "type": 2,
      "roadway": [ 2, 3 ],
      "action": 0
      "roadway": [ 2 ],
      "action": 2
    },
    {
      "locCode": "SeA09",
      "type": 1,
      "roadway": [ 2, 3 ],
      "roadway": [ 3 ],
      "action": 1
    },
    {
      "locCode": "SeA10",
      "type": 1,
      "roadway": [ 2, 3 ],
      "action": 2
      "roadway": [  3 ],
      "action": 1
    },
    {
      "locCode": "SeA11",
      "type": 2,
      "roadway": [ 4, 5 ],
      "action": 0
      "roadway": [ 3 ],
      "action": 1
    },
    {
      "locCode": "SeA12",
      "type": 2,
      "roadway": [ 4, 5 ],
      "action": 0
      "roadway": [ 3 ],
      "action": 2
    },
    {
      "locCode": "SeA13",
      "type": 1,
      "roadway": [ 4, 5 ],
      "roadway": [ 3 ],
      "action": 1
    },
    {
      "locCode": "SeA14",
      "type": 1,
      "roadway": [ 4, 5 ],
      "roadway": [ 3 ],
      "action": 2
    },
    {
      "locCode": "SeA15",
      "type": 2,
      "roadway": [ 4, 5 ],
      "action": 0
      "roadway": [ 4 ],
      "action": 1
    },
    {
      "locCode": "SeA16",
      "type": 2,
      "roadway": [ 4, 5 ],
      "action": 0
      "roadway": [ 4 ],
      "action": 1
    },
    {
      "locCode": "SeA17",
      "type": 2,
      "roadway": [ 6, 7 ],
      "action": 0
      "roadway": [ 4 ],
      "action": 1
    },
    {
      "locCode": "SeA18",
      "type": 2,
      "roadway": [ 6, 7 ],
      "action": 0
      "roadway": [ 4 ],
      "action": 2
    },
    {
      "locCode": "SeA19",
      "type": 2,
      "roadway": [ 6, 7 ],
      "action": 0
      "roadway": [ 4 ],
      "action": 1
    },
    {
      "locCode": "SeA20",
      "type": 2,
      "roadway": [ 6, 7 ],
      "action": 0
      "roadway": [ 4 ],
      "action": 2
    },
    {
      "locCode": "SeA21",
      "type": 1,
      "roadway": [ 6, 7 ],
      "roadway": [ 5 ],
      "action": 1
    },
    {
      "locCode": "SeA22",
      "type": 1,
      "roadway": [ 6, 7 ],
      "roadway": [ 5 ],
      "action": 1
    },
    {
      "locCode": "SeA23",
      "roadway": [ 5 ],
      "action": 1
    },
    {
      "locCode": "SeA24",
      "roadway": [ 5 ],
      "action": 2
    },
    {
      "locCode": "SeA25",
      "roadway": [ 6 ],
      "action": 1
    },
    {
      "locCode": "SeA26",
      "roadway": [ 6 ],
      "action": 1
    },
    {
      "locCode": "SeA27",
      "roadway": [ 7 ],
      "action": 1
    },
    {
      "locCode": "SeA28",
      "roadway": [ 7 ],
      "action": 1
    },
    {
      "locCode": "SeA29",
      "roadway": [ 6,7 ],
      "action": 1
    },
    {
      "locCode": "SeA30",
      "roadway": [ 6,7 ],
      "action": 2
    },
    {
      "locCode": "SeA31",
      "roadway": [ 6,7 ],
      "action": 1
    },
    {
      "locCode": "SeA32",
      "roadway": [ 6,7 ],
      "action": 2
    }
  ]
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs
@@ -37,7 +37,6 @@
                        var wmsTask = WMSHelper.GetWmsTask(TN_Task.S_OP_CODE);
                        if (wmsTask != null && wmsTask.N_B_STATE < 2) 
                        {
                            WCSHelper.AddActionRecord(model.No, model.State, model.ForkliftNo, model.ExtData);
                            if (model.State <= 7)
                            {
                                //有任务号请求
@@ -152,7 +151,7 @@
                                if (agvJBLoc != null && agvJBLoc.action == 1)
                                {
                                    //是则查询WCS的任务执行情况
                                    var wcsTask = WCSHelper.GetTaskBySrcNoAndScheduleType(TN_Task.S_OP_CODE, "WCS");
                                    var wcsTask = WCSHelper.GetTaskBySrcNoAndScheduleType(TN_Task.S_OP_CODE, "WCS" , wmsTask.S_TYPE);
                                    if (wcsTask != null)
                                    {
                                        bool existAction = WCSHelper.CheckActionRecordExist(wcsTask.S_CODE, 7);
@@ -214,6 +213,8 @@
                                //安全请求等
                                TaskProcess.OperateReq(model.No, model.State, model.ForkliftNo, model.ExtData);
                            }
                            WCSHelper.AddActionRecord(model.No, model.State, model.ForkliftNo, model.ExtData);
                        }
                    }
                }
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/process/TaskProcess.cs
@@ -163,7 +163,6 @@
                // 安全请求发送成功,添加任务动作记录
                if (result)
                {
                    WCSHelper.AddActionRecord(no, state, forkliftNo, extData);
                    LogHelper.Info($"首次进行安全请求成功", "AGV");
                }
            }
@@ -214,7 +213,6 @@
            if (mst.N_B_STATE == 0) {
                var startLoc = LocationHelper.GetLocation(mst.S_START_LOC);
                var endLoc = LocationHelper.GetLocation(mst.S_END_LOC);
                var container = ContainerHelper.GetCntr(mst.S_CNTR_CODE);
                if (mst.S_SCHEDULE_TYPE == "AGV") 
                {
                    AddOrderNewModel model = new AddOrderNewModel() 
@@ -267,7 +265,6 @@
                        from = mst.S_START_LOC,
                        to = mst.S_END_LOC,
                        cntrNo = mst.S_CNTR_CODE,
                        cntrType = container.N_TYPE.ToString(),
                    };
                    LogHelper.Info($"向WCS下发任务,任务参数:{sendTask}", "WMS");
                    var bo = WCSDispatch.sendTask(sendTask);
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/util/Settings.cs
@@ -155,7 +155,7 @@
            public string locCode { get; set; }
            public string name { get; set; }
            public List<int> roadway { get; set; }
            public int action { get; set; } // 0.通用 1.入库 2.出库
            public int action { get; set; } // 1.入库 2.出库
        }
        public class AgvWaitLoc
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/WCSHelper.cs
@@ -58,10 +58,10 @@
            var task = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE== no).First();
            return task;
        }
        internal static WCSTask GetTaskBySrcNoAndScheduleType(string no ,string scheduleType)
        internal static WCSTask GetTaskBySrcNoAndScheduleType(string no ,string scheduleType ,string taskType)
        {
            var db = new SqlHelper<WCSTask>().GetInstance();
            var task = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == no && a.S_SCHEDULE_TYPE == scheduleType).First();
            var task = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == no && a.S_SCHEDULE_TYPE == scheduleType && a.S_TYPE.Contains(taskType)).First();
            return task;
        }
        internal static List<WCSTask> GetTaskListBySrcNo(string no)