杨前锦
2025-05-26 d0a265713fd18162f3a82bdcd22e267df7298c7b
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
@@ -49,6 +49,17 @@
                    {
                        foreach (var item in itemInfos)
                        {
                            // 将MES的物料状态转化成WMS可识别的物料状态
                            if (item.jdge == "" || item.jdge == null)
                            {
                                item.jdge = "OK";
                            }
                            else if(item.jdge != "OK")
                            {
                                item.jdge = "HOLD";
                            }
                            // 计算生效时间、失效时间
                            var overage = WMSHelper.getOverage(item.bc_entried);
                            if (overage != null)
                            {
@@ -120,6 +131,7 @@
                        S_END_AREA = endLoc.S_AREA_CODE,
                        S_TYPE = model.taskType,
                        S_OP_DEF_CODE = model.taskNo,
                        S_OP_DEF_NAME = "半制品/余料/空托下发入库任务",
                        N_PRIORITY = model.priority,
                        T_START_TIME = DateTime.Now,
                    };
@@ -231,6 +243,7 @@
                        S_END_AREA = endLoc.S_AREA_CODE,
                        S_TYPE = "空托出库任务",
                        S_OP_DEF_CODE = model.taskNo,
                        S_OP_DEF_NAME = "空托出库任务",
                        N_PRIORITY = model.priority,
                        T_START_TIME = DateTime.Now,
                    };
@@ -323,7 +336,7 @@
                else 
                {
                    result.ResultCode = 1;
                    result.ResultMsg = "库内没有查到此物料";
                    result.ResultMsg = "库内没有满足条件的物料";
                    return result;
                }
@@ -340,6 +353,7 @@
                        S_END_AREA = endLoc.S_AREA_CODE,
                        S_TYPE = "成型机叫料出库任务",
                        S_OP_DEF_CODE = model.taskNo,
                        S_OP_DEF_NAME = "成型机叫料出库任务",
                        N_PRIORITY = model.priority,
                        T_START_TIME = DateTime.Now,
                    };
@@ -399,8 +413,18 @@
                {
                    foreach (var item in model.itemInfo)
                    {
                        // 将MES的物料状态转化成WMS可识别的物料状态
                        if (item.jdge == "" || item.jdge == null)
                        {
                            item.jdge = "OK";
                        }
                        else if (item.jdge != "OK")
                        {
                            item.jdge = "HOLD";
                        }
                        var overage = WMSHelper.getOverage(item.bc_entried);
                        if (overage != null)
                        if (overage != null && overage.OVERAGE != 0)
                        {
                            DateTime txndate = DateTime.Parse(item.txndate);
                            DateTime minTime = txndate.AddHours(overage.MINHOUR);
@@ -442,6 +466,7 @@
                            S_END_AREA = endLoc.S_AREA_CODE,
                            S_TYPE = "人工入库任务",
                            S_OP_DEF_CODE = model.taskNo,
                            S_OP_DEF_NAME = "人工入库任务",
                            N_PRIORITY = model.priority,
                            T_START_TIME = DateTime.Now,
                        };
@@ -538,6 +563,7 @@
                        S_END_AREA = endLoc.S_AREA_CODE,
                        S_TYPE = "人工出库任务",
                        S_OP_DEF_CODE = model.taskNo,
                        S_OP_DEF_NAME = "人工出库任务",
                        N_PRIORITY = model.priority,
                        T_START_TIME = DateTime.Now,
                    };
@@ -576,7 +602,7 @@
                else
                {
                    result.ResultCode = 1;
                    result.ResultMsg = "库内没有此物料";
                    result.ResultMsg = "库内没有满足条件的物料";
                }
            }
            catch (Exception ex)
@@ -633,6 +659,7 @@
                            S_END_AREA = endLoc.S_AREA_CODE,
                            S_TYPE = "母拖入库任务",
                            S_OP_DEF_CODE = taskNo,
                            S_OP_DEF_NAME = "母拖入库任务",
                            N_PRIORITY = 1,
                            T_START_TIME = DateTime.Now,
                        };
@@ -694,15 +721,15 @@
            ReturnResult result = new ReturnResult();
            try
            {
                var mst = WMSHelper.GetWmsTask(wmsTaskNo);
                if (mst != null && mst.N_B_STATE < 2)
                var cst = WCSHelper.GetTaskByStart(loc);
                if (cst == null)
                {
                    Location startLoc = LocationHelper.GetLoc(loc);
                    Location endLoc = LocationHelper.GetLoc(Settings.baseTrayInBufferLoc);
                    if (!(endLoc != null && endLoc.N_CURRENT_NUM == 0))
                    if (!(endLoc != null && endLoc.N_CURRENT_NUM == 0))
                    {
                        endLoc = WMSHelper.GetInstockEndLoc(0, loc, 2);
                    }
                    }
                    if (endLoc != null && startLoc != null)
                    {
@@ -727,8 +754,7 @@
                            // 创建一段入库任务
                            WCSTask wcsTask = new WCSTask()
                            {
                                S_OP_NAME = mst.S_OP_DEF_NAME,
                                S_OP_CODE = mst.S_CODE,
                                S_OP_CODE = wmsTaskNo,
                                S_CODE = WCSHelper.GenerateTaskNo(),
                                S_CNTR_CODE = trayCode,
                                S_TYPE = "母拖入库任务",
@@ -771,13 +797,13 @@
        /// <param name="loc"></param>
        /// <param name="taskNo"></param>
        /// <returns></returns>
        public static ReturnResult baseTrayOutStock(string loc ,string taskNo)
        public static ReturnResult baseTrayOutStock(string loc ,string taskNo ,int exclude = 1)
        {
            LogHelper.Info("【母拖出库任务】开始下发母拖出库任务", "WMS");
            ReturnResult result = new ReturnResult();
            try
            {
                Location startLoc = WMSHelper.GetEmptyTrayStartLoc(0, 1);
                Location startLoc = WMSHelper.GetEmptyTrayStartLoc(0, exclude);
                Location endLoc = LocationHelper.GetLoc(loc);
                var agvJBLoc = Settings.getAgvJBLoc(loc);
@@ -801,6 +827,7 @@
                            S_END_AREA = endLoc.S_AREA_CODE,
                            S_TYPE = "母拖出库任务",
                            S_OP_DEF_CODE = taskNo,
                            S_OP_DEF_NAME = "母拖出库任务",
                            N_PRIORITY = 1,
                            T_START_TIME = DateTime.Now,
                        };
@@ -864,10 +891,10 @@
            ReturnResult result = new ReturnResult();
            try
            {
                var mst = WMSHelper.GetWmsTask(wmsTaskNo);
                if (mst != null && mst.N_B_STATE < 2)
                var cst = WCSHelper.GetTaskByEnd(loc);
                if (cst == null)
                {
                    Location startLoc = WMSHelper.GetEmptyTrayStartLoc(0,0);
                    Location startLoc = WMSHelper.GetEmptyTrayStartLoc(0, 0);
                    Location endLoc = LocationHelper.GetLoc(loc);
                    if (startLoc != null)
@@ -884,8 +911,7 @@
                            // 创建入库任务
                            WCSTask wcsTask = new WCSTask()
                            {
                                S_OP_NAME = mst.S_OP_DEF_NAME,
                                S_OP_CODE = mst.S_CODE,
                                S_OP_CODE = wmsTaskNo,
                                S_CODE = WCSHelper.GenerateTaskNo(),
                                S_CNTR_CODE = trayCode,
                                S_TYPE = "母拖出库任务",
@@ -1106,9 +1132,6 @@
                    BOM3 = matl.bom3,
                    S_FOVRAGE = matl.fovrage,
                    S_JDGE = matl.jdge,
                    S_WMS_JDGE = matl.WMS_jdge,
                    EFFECTIVE_TIME = matl.effective_time,
                    EXPIRATION_TIME = matl.expiration_time,
                    LAST_MODIFY_TIME = matl.last_modify_time
                };
                itemBarcodeInfos.Add(itemBarcodeInfo);
@@ -1151,7 +1174,6 @@
            if (overages != null && overages.Count > 0) 
            {
                List<Overage> overageList = new List<Overage>();
                foreach (var item in overages)
                {
                    Overage overage = new Overage
@@ -1159,8 +1181,9 @@
                        MCNGRP = item.mcngrp,
                        ITEMPATT = item.itempatt,
                        OVERAGE = item.overage,
                        MINHOUR = int.Parse(item.minhour.ToString()) ,
                        MINHOUR = float.Parse(item.minhour.ToString()),
                        FLAG_STS = item.flag_sts,
                        RECID = item.recid,
                    };
                    overageList.Add(overage);
                }
@@ -1192,7 +1215,7 @@
            if (!bo)
            {
                responseResult.ResultCode = 1;
                responseResult.ResultMsg = "同步物料状态信息失败";
                responseResult.ResultMsg = "记录数据同步时间失败";
            }
            return responseResult;
        }
@@ -1207,7 +1230,13 @@
        {
            ReturnResult responseResult = new ReturnResult();
            var synDataTime = WMSHelper.getLastDataSynTime(recordTable);
            responseResult.data = synDataTime;
            if (synDataTime != null)
            {
                Dictionary<string, string> map = new Dictionary<string, string>();
                map.Add("S_SYN_TIME", synDataTime.S_SYN_TIME);
                map.Add("RECORD_TABLE", synDataTime.RECORD_TABLE);
                responseResult.data = map;
            }
            return responseResult;
        }