zxx
2025-07-01 91be499ac83725c769f2283054ed326d7e055453
xiaomi
2个文件已修改
233 ■■■■■ 已修改文件
HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/api/WmsController.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/api/WmsController.cs
@@ -32,5 +32,15 @@
            return res;
        }
        [HttpPost]
        public TaskResponse autoSmallMaterial(smallMaterial model)
        {
            LogHelper.Info("autoSmallMaterial 参数:" + JsonConvert.SerializeObject(model), "WMSAPI");
            var res = TaskProcess.autoSmallMaterial(model);
            LogHelper.Info("autoSmallMaterial 返回:" + JsonConvert.SerializeObject(res), "WMSAPI");
            return res;
        }
    }
}
HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs
@@ -1870,85 +1870,22 @@
        }
        /// <summary>
        /// 小件
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        internal static TaskResponse smallMaterial(smallMaterial model)
        {
            try
            {
                var startLoc = new Location();
                var endLoc = new Location();
                string Message = null;
                if (model.taskType=="自动")
                {
                    autoSmallMaterial(model);
                }
                else if (model.taskType == "人工")
                {
                    artificialSmallMaterial(model);
                }
                var result = new TaskResponse();
                if (Message != null)
                {
                    result = new TaskResponse
                    {
                        header = new ResponseHead { code = 0, desc = Message }
                    };
                }
                else
                {
                    result = new TaskResponse
                    {
                        header = new ResponseHead { code = 200, desc = "SUCCESS" },
                        body = new ResponseBody
                        {
                            msg = "success",
                            app_name = "Guozi client",
                            data = new List<ResponseData> { new ResponseData { in_order_id = model.taskID } },
                            version = ""
                        }
                    };
                }
                return result;
            }
            catch (Exception ex)
            {
                Console.WriteLine("bigMaterial:" + ex.Message + ex.StackTrace);
                LogHelper.Error("bigMaterial:" + ex.Message, ex);
                throw;
            }
        }
        //自动 拆分
        private static string autoSmallMaterial(smallMaterial model) {
        public static TaskResponse autoSmallMaterial(smallMaterial model) {
            var db = new SqlHelper<Location>().GetInstance();
            string Message = null;
            //拆分成两条任务,一条是料架到指定的缓存区,料架上的托盘到指定的工位(小米wcs传)一对多
            //拆分成两条任务,一条是料架到指定的缓存区,二是料架上的托盘到指定的工位(小米wcs传)一对多
            var startFrame = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == model.parameters[0].src).First();
            var startLoc = db.Queryable<Location>().Where(a => a.S_CODE == startFrame.S_FRAME_CODE).First();
            if (startLoc == null || startLoc.N_LOCK_STATE != 0)
            {
                Message = $"{model.parameters[0].src}库位已被锁定!";
                return new TaskResponse
                {
                    header = new ResponseHead { code = 0, desc = $"{model.parameters[0].src}库位已被锁定!" }
                };
            }
            var endReservoirs = Settings.ReservoirAreas.Where(s => s.areaName == model.routeType).FirstOrDefault();
            var endLoc = TaskProcess.InWorkTransport(endReservoirs.areaCode);
@@ -1961,7 +1898,10 @@
                var res = TaskProcess.CreateTransportHj(startLoc.S_CODE, endLoc.S_CODE, model.ts_name, locCntrRel.S_FRAME_CODE, 1, 1);
                if (!res)
                {
                    return Message="自动上线任务创建失败";
                    return new TaskResponse
                    {
                        header = new ResponseHead { code = 0, desc = "自动上线任务创建失败" }
                    };
                }
            }
            //料架上的托盘到指定的工位
@@ -1970,83 +1910,88 @@
                var startLocHj = db.Queryable<Location>().Where(a => a.S_CODE == parameter.src).First();
                if (startLocHj == null || startLocHj.N_LOCK_STATE != 0)
                {
                    Message = $"{model.parameters[0].src}库位已被锁定!";
                     Message = Message==null? $"{model.parameters[0].src}库位已被锁定!": Message+ $"{model.parameters[0].src}库位已被锁定!";
                }
                //货架上的货判断一下货架有没有锁
                var startFrameParent = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == parameter.src).First();
                if (startFrameParent != null)
                else
                {
                    var startLocParent = db.Queryable<Location>().Where(a => a.S_CODE == startFrameParent.S_FRAME_CODE).First();
                    if (startLocParent == null || startLocParent.N_LOCK_STATE != 0)
                    //货架上的货判断一下货架有没有锁
                    var startFrameParent = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == parameter.src).First();
                    if (startFrameParent != null)
                    {
                        Message = $"{startFrameParent.S_FRAME_CODE}库位已被锁定!";
                        var startLocParent = db.Queryable<Location>().Where(a => a.S_CODE == startFrameParent.S_FRAME_CODE).First();
                        if (startLocParent == null || startLocParent.N_LOCK_STATE != 0)
                        {
                            return new TaskResponse
                            {
                                header = new ResponseHead { code = 0, desc = $"{startFrameParent.S_FRAME_CODE}货架已被锁定!" }
                            };
                        }
                    }
                    var endLocHj = db.Queryable<Location>().Where(a => a.S_CODE == parameter.dst).First();
                    if (endLocHj == null || endLocHj.N_LOCK_STATE != 0 || endLocHj.C_ENABLE != "Y")
                    {
                        //应该绕路
                        Message = Message == null ? $"{parameter.dst}库位已被锁定!" : Message + $"{parameter.dst}库位已被锁定!";
                    }
                    else
                    {
                        //货架上的货判断一下货架有没有锁
                        var endFrameParent = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == parameter.dst).First();
                        if (endFrameParent != null)
                        {
                            var endLocParent = db.Queryable<Location>().Where(a => a.S_CODE == endFrameParent.S_FRAME_CODE).First();
                            if (endLocParent == null || endLocParent.N_LOCK_STATE != 0)
                            {
                                return new TaskResponse
                                {
                                    header = new ResponseHead { code = 0, desc = $"{endFrameParent.S_FRAME_CODE}货架已被锁定!" }
                                };
                            }
                        }
                        //创建到缓存区任务
                        var locCntrRel1 = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLocHj.S_CODE).First();
                        //创建任务
                        LogHelper.Info($"创建任务 起点:{startLocHj.S_CODE}终点:{endLocHj.S_CODE}", model.ts_name);
                        var res = TaskProcess.CreateTransport(startLocHj.S_CODE, endLocHj.S_CODE, model.ts_name, locCntrRel1.S_CNTR_CODE, 1, 1);
                        if (!res)
                        {
                            return new TaskResponse
                            {
                                header = new ResponseHead { code = 0, desc = "自动上线任务2创建失败" }
                            };
                        }
                    }
                }
            }
            return Message;
            //switch (model.ts_name)
            //{
            //    case "p2p":
            //        startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First();
            //        if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y")
            //        {
            //            Message = $"{model.parameter.src}库位已被锁定!";
            //        }
            //        endLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.dst).First();
            //        if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y")
            //        {
            //            Message = $"{model.parameter.dst}库位已被锁定!";
            //        }
            //        break;
            //    case "p2a":
            //        startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First();
            //        if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y")
            //        {
            //            Message = $"{model.parameter.src}库位已被锁定!";
            //        }
            //        endLoc = InWorkTransport(model.parameter.dst);
            //        if (endLoc == null)
            //        {
            //            Message = $"{model.parameter.dst}库区没有可入货位!";
            //        }
            //        break;
            //    case "a2p":
            //        startLoc = OutWorkTransport(model.parameter.src);
            //        if (startLoc == null)
            //        {
            //            Message = $"{model.parameter.dst}库区没有可出货位!";
            //        }
            //        endLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.dst).First();
            //        if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y")
            //        {
            //            Message = $"{model.parameter.dst}库位已被锁定!";
            //        }
            //        break;
            //}
            //var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First();
            ////创建任务
            //LogHelper.Info($"创建任务 起点:{startLoc.S_CODE}终点:{endLoc.S_CODE}", model.ts_name);
            //var res = TaskProcess.CreateTransport(startLoc.S_CODE, endLoc.S_CODE, model.ts_name, locCntrRel.S_CNTR_CODE, 1, 1);
            //if (!res)
            //{
            //    return new TaskResponse
            //    {
            //        header = new ResponseHead { code = 1, desc = Message }
            //    };
            //}
            var result = new TaskResponse();
            if (Message != null)
            {
                result = new TaskResponse
                {
                    header = new ResponseHead { code = 0, desc = Message }
                };
            }
            else
            {
                result = new TaskResponse
                {
                    header = new ResponseHead { code = 200, desc = "SUCCESS" },
                    body = new ResponseBody
                    {
                        msg = "success",
                        app_name = "Guozi client",
                        data = new List<ResponseData> { new ResponseData { in_order_id = model.taskID } },
                        version = ""
                    }
                };
            }
            return result;
        }
        //人工 不拆分
        private static void artificialSmallMaterial(smallMaterial model)
        public static void artificialSmallMaterial(smallMaterial model)
        {
            var db = new SqlHelper<Location>().GetInstance();