杨前锦
1 天以前 06a8b6963d6d4f229d4e196b4b09ce57e2cbf2dd
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs
@@ -18,6 +18,7 @@
using static HH.WCS.Mobox3.YNJT_BZP.api.ApiModel;
using static HH.WCS.Mobox3.YNJT_BZP.dispatch.GtDispatch;
using static HH.WCS.Mobox3.YNJT_BZP.util.Settings;
using static HH.WCS.Mobox3.YNJT_BZP.wms.WMSHelper;
namespace HH.WCS.Mobox3.YNJT_BZP.core {
    internal class WCSCore {
@@ -81,27 +82,30 @@
                                        {
                                            LogHelper.Info($"任务号:{TN_Task.S_CODE},AGV任务完成,任务信息回报GT", "AGV");
                                            string shift = ApiHelper.getShift(DateTime.Now.TimeOfDay);
                                            string ydate_shiftName = "";
                                            string ydate= "";
                                            if (shift == "III")
                                            {
                                                ydate_shiftName = DateTime.Now.AddDays(-1).ToString("yy/MM/dd") + "-" + shift;
                                                ydate = DateTime.Now.AddDays(-1).ToString("dd/MM/yy");
                                            }
                                            else
                                            {
                                                ydate_shiftName = DateTime.Now.ToString("yy/MM/dd") + "-" + shift;
                                                ydate = DateTime.Now.ToString("dd/MM/yy");
                                            }
                                            WmsToGtLokasiModel wmsToGtLokasiModel = new WmsToGtLokasiModel()
                                            Trfloc trfloc = new Trfloc()
                                            {
                                                ydate_shiftName = ydate_shiftName,
                                                recid = 1,
                                                ydate = ydate,
                                                shift = shift,
                                                bc_entried = cntrItemRels[0].S_CG_ID,
                                                loc_from = TN_Task.S_START_LOC,
                                                loc_to = TN_Task.S_END_LOC,
                                                qty = 1,
                                                qty = cntrItemRels[0].F_QTY,
                                                lot = 1,
                                                scantime = TN_Task.T_CREATE.ToString("yyyy-MM-dd HH:mm:ss"),
                                                pic = model.ForkliftNo
                                                pic = model.ForkliftNo,
                                                last_modify_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")
                                            };
                                            GtDispatch.agvTaskFeedback(wmsToGtLokasiModel);
                                        }
                                        break;
                                    case 7:
@@ -147,8 +151,8 @@
                                LogHelper.Info($"任务号:{TN_Task.S_CODE},AGV小车卸货后在接驳位:{TN_Task.S_END_LOC}等待", "AGV");
                                // 卸货后等待
                                // 查询终点货位是否是入库接驳位
                                var agvJBLoc = Settings.getAgvJBLoc(TN_Task.S_END_LOC);
                                if (agvJBLoc != null && agvJBLoc.action == 1)
                                var agvJBLoc = WMSHelper.getAgvJBLocByLocCode(TN_Task.S_END_LOC);
                                if (agvJBLoc != null)
                                {
                                    //是则查询WCS的任务执行情况
                                    var wcsTask = WCSHelper.GetTaskBySrcNoAndScheduleType(TN_Task.S_OP_CODE, "WCS" , wmsTask.S_TYPE);
@@ -347,43 +351,30 @@
                        {
                            // 满料托盘入库
                            itemCode = cntrItemRels[0].S_ITEM_CODE;
                            var endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE, null, 1, itemCode);
                            if (endLoc != null)
                            int itemType = cntrItemRels[0].N_PRODUCT_TYPE_CODE;
                            int groupNo = 1;
                            if (cst.S_TYPE.Contains("成型机"))
                            {
                                Location agvLoc = null;
                                var locCodes = Settings.getAgvJBLocList( endLoc.N_ROADWAY, 1);
                                if (locCodes.Count > 0)
                                {
                                    foreach (var locCode in locCodes)
                                    {
                                        agvLoc = LocationHelper.GetLoc(locCode);
                                        if (agvLoc != null && agvLoc.C_ENABLE == "Y")
                                        {
                                            cst.S_END_LOC = agvLoc.S_CODE;
                                            cst.S_END_AREA = agvLoc.S_AREA_CODE;
                                            WCSHelper.UpdateTaskEnd(cst);
                                            mst.S_END_LOC = endLoc.S_CODE;
                                            mst.S_END_AREA = endLoc.S_AREA_CODE;
                                            WMSHelper.UpdateTaskEnd(mst);
                                            LocationHelper.LockLoc(endLoc.S_CODE, 1);
                                            LogHelper.Info($"任务号:{taskNo},AGV申请的终点:{agvLoc.S_CODE}", "AGV");
                                            return agvLoc;
                                        }
                                    }
                                    LogHelper.Info($"任务号:{taskNo},入库接驳位货位都已禁用", "AGV");
                                }
                                else
                                {
                                    LogHelper.Info($"任务号:{taskNo},没有配置立库接驳位", "AGV");
                                }
                                groupNo = 2;
                            }
                            else
                            var instockEndLocResult = WMSHelper.GetInstockEndLoc(groupNo ,container.N_TYPE, itemType, itemCode);
                            if (instockEndLocResult.endLoc != null && instockEndLocResult.agvLoc != null)
                            {
                                LogHelper.Info($"任务号:{taskNo},立库没有满足条件的空货位", "AGV");
                            }
                                var agvLoc = instockEndLocResult.agvLoc;
                                var endLoc = instockEndLocResult.endLoc;
                                cst.S_END_LOC = agvLoc.S_CODE;
                                cst.S_END_AREA = agvLoc.S_AREA_CODE;
                                WCSHelper.UpdateTaskEnd(cst);
                                mst.S_END_LOC = endLoc.S_CODE;
                                mst.S_END_AREA = endLoc.S_AREA_CODE;
                                WMSHelper.UpdateTaskEnd(mst);
                                LocationHelper.LockLoc(endLoc.S_CODE, 1);
                                LogHelper.Info($"任务号:{taskNo},AGV申请的终点:{agvLoc.S_CODE},任务终点:{endLoc.S_CODE}", "AGV");
                                return agvLoc;
                            }
                        }
                        else 
                        {
@@ -410,6 +401,27 @@
                                        WMSHelper.updateEmptyTrayBuffer(emptyTray);
                                    }
                                }
                                else
                                {
                                    var instockEndLocResult = WMSHelper.GetInstockEndLoc(2,container.N_TYPE);
                                    if (instockEndLocResult.endLoc != null && instockEndLocResult.agvLoc != null)
                                    {
                                        var agvLoc = instockEndLocResult.agvLoc;
                                        var endLoc = instockEndLocResult.endLoc;
                                        cst.S_END_LOC = agvLoc.S_CODE;
                                        cst.S_END_AREA = agvLoc.S_AREA_CODE;
                                        WCSHelper.UpdateTaskEnd(cst);
                                        mst.S_END_LOC = endLoc.S_CODE;
                                        mst.S_END_AREA = endLoc.S_AREA_CODE;
                                        WMSHelper.UpdateTaskEnd(mst);
                                        LocationHelper.LockLoc(endLoc.S_CODE, 1);
                                        LogHelper.Info($"任务号:{taskNo},AGV申请的终点:{agvLoc.S_CODE},任务终点:{endLoc.S_CODE}", "AGV");
                                        return agvLoc;
                                    }
                                }
                            }
                        }
                    }