1
zxx
7 天以前 da7196f0acb1349fe0bc6b3b652093b495416adc
HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs
@@ -48,32 +48,14 @@
            {
                Console.WriteLine($"任务{mst.S_CODE} 货位{mst.S_START_LOC}取货完成,起点解绑容器{mst.S_CNTR_CODE}");
                LogHelper.Info($"任务{mst.S_CODE} 货位{mst.S_START_LOC}取货完成,起点解绑容器{mst.S_CNTR_CODE}");
                if (mst.S_FRAME_CODE != null)
                {
                    LocationHelper.UnBindingLocHj(mst.S_START_LOC, mst.S_FRAME_CODE);
                LocationHelper.UnBindingLoc(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList());
                }
                else
                {
                    LocationHelper.UnBindingLoc(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList());
                }
            }
            else
            {
                Console.WriteLine($"任务{mst.S_CODE} 货位{mst.S_END_LOC}卸货完成,终点绑定容器{mst.S_CNTR_CODE}");
                LogHelper.Info($"任务{mst.S_CODE} 货位{mst.S_END_LOC}卸货完成,终点绑定容器{mst.S_CNTR_CODE}");
                //如果货架有值则绑货架
                if (mst.S_FRAME_CODE != null)
                {
                    LocationHelper.BindingLocHj(mst.S_END_LOC, mst.S_FRAME_CODE);
                }
                else
                {
                    LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList());
                }
                LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList());
            }
        }
@@ -389,26 +371,92 @@
                //var endLoc = LocationHelper.GetLoc(mst.S_END_LOC);
                if (mst.S_START_LOC != null && mst.S_END_LOC != null)
                {
                    string src = $"\"src\":\"{mst.S_START_LOC}\",";
                    string dst = $"\"dst\":\"{mst.S_END_LOC}\",";
                    string carrier_type_id = $"\"carrier_type_id\":\"1\"";
                    string parmeS = "{";
                    string parmeD = "}";
                    string parme = parmeS + src + dst + carrier_type_id + parmeD;
                    bool res = false;
                    if (mst.S_TYPE == "大件")
                    {
                        string src = $"\"src\":\"{mst.S_START_LOC}\",";
                        string dst = $"\"dst\":\"{mst.S_END_LOC}\",";
                        string carrier_type_id = $"\"carrier_type_id\":\"1\"";
                        string parmeS = "{";
                        string parmeD = "}";
                        string parme = parmeS + src + dst + carrier_type_id + parmeD;
                    LogHelper.Info($"推送任务参数{parme}", "任务");
                    AntsTaskModel model = new AntsTaskModel();
                    model.order_name = mst.S_CODE;
                    model.priority = 1;
                    model.dead_line = DateTime.Now.ToString();
                    model.ts_name = mst.S_TYPE;
                    model.parameters = parme;
                    //model.parameters = new AntsParasModel {
                    //    src = mst.S_START_LOC,
                    //    dst = mst.S_END_LOC,
                    //    carrier_type_id="-99"
                    //};
                    var res = RcsHelper.CreateAntsOrder(model);
                        LogHelper.Info($"推送任务参数{parme}", "任务");
                        AntsTaskModel model = new AntsTaskModel();
                        model.order_name = mst.S_CODE;
                        model.priority = 1;
                        model.dead_line = DateTime.Now.ToString();
                        model.ts_name = mst.S_TYPE;
                        model.parameters = parme;
                        //model.parameters = new AntsParasModel {
                        //    src = mst.S_START_LOC,
                        //    dst = mst.S_END_LOC,
                        //    carrier_type_id="-99"
                        //};
                        res = RcsHelper.CreateAntsOrder(model);
                    }
                    else if (mst.S_TYPE == "小件通用车型")
                    {
                        string src = $"\"src\":\"{mst.S_START_LOC}\",";
                        string dst = $"\"dst\":\"{mst.S_END_LOC}\",";
                        string car_type = $"\"car_type\":\"1\",";
                        string src_ort = $"\"src_ort\":\"-1\",";
                        string dst_ort = $"\"dst_ort\":\"-1\"";
                        string parmeS = "{";
                        string parmeD = "}";
                        string parme = parmeS + src + dst + car_type + src_ort + dst_ort + parmeD;
                        LogHelper.Info($"推送任务参数{parme}", "任务");
                        PickingTaskModel model = new PickingTaskModel();
                        model.order_name = mst.S_CODE;
                        model.priority = 1;
                        model.dead_line = DateTime.Now.ToString();
                        model.ts_name = "p2p";
                        model.parameters = parme;
                        //model.parameters = new AntsParasModel {
                        //    src = mst.S_START_LOC,
                        //    dst = mst.S_END_LOC,
                        //    carrier_type_id="-99"
                        //};
                        res = RcsHelper.CreatePickingOrder(model);
                    }
                    else if (mst.S_TYPE == "inbound")
                    {
                        //查出货架编码
                        var db = new SqlHelper<Object>().GetInstance();
                        var locFrameRel = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == mst.S_START_LOC).First();
                        string tote_id = $"\"tote_id\":\"{locFrameRel.S_FRAME_CODE}\",";
                        string task_type = $"\"task_type\":\"{mst.S_TYPE}\",";
                        string src = $"\"src\":\"{mst.S_START_LOC}\",";
                        string dst = $"\"dst\":\"{mst.S_END_LOC}\",";
                        string extra_info = $"\"extra_info\":";
                        string layer = $"\"layer\":[1,2,3,4],";
                        string put = $"\"put\":true";
                        string parmeS = "{";
                        string parmeD = "}";
                        string parmezS = "[";
                        string parmezD = "]";
                        string parme = parmeS + tote_id + task_type + src + dst + extra_info + parmezS+ parmeS  + layer + put + parmeD + parmezD + parmeD;
                        LogHelper.Info($"推送任务参数{parme}", "任务");
                        PickingTaskModel model = new PickingTaskModel();
                        model.order_name = mst.S_CODE;
                        model.priority = 1;
                        model.dead_line = DateTime.Now.ToString();
                        model.ts_name = "picking_ts";
                        model.parameters = parme;
                        //model.parameters = new AntsParasModel {
                        //    src = mst.S_START_LOC,
                        //    dst = mst.S_END_LOC,
                        //    carrier_type_id="-99"
                        //};
                        res = RcsHelper.CreatePickingOrder(model);
                    }
                    if (res)
                    {
                        //更新任务状态
@@ -1038,8 +1086,8 @@
                var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First();
                //创建任务
                LogHelper.Info($"创建任务 起点:{startLoc.S_CODE}终点:{endLocStr}", model.ts_name);
                var res = TaskProcess.CreateTransportDj(startLoc.S_CODE, endLocStr, model.ts_name, locCntrRel.S_CNTR_CODE, model.order_name, 1, 1);
                LogHelper.Info($"创建任务 起点:{startLoc.S_CODE}终点:{endLocStr}", "大件");
                var res = TaskProcess.CreateTransportDj(startLoc.S_CODE, endLocStr, "大件", locCntrRel.S_CNTR_CODE, model.order_name, 1, 1);
                if (!res)
                {
                    return new TaskResponse
@@ -1091,9 +1139,7 @@
                string Message = null;
                //拆分成两条任务,一条是料架到指定的缓存区,二是料架上的托盘到指定的工位(小米wcs传)一对多
                var startFrame = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == model.taskList[0].parameters.src).First();
                var startLoc = db.Queryable<Location>().Where(a => a.S_CODE == startFrame.S_FRAME_CODE).First();
                var startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.taskList[0].parameters.src).First();
                if (startLoc == null || startLoc.N_LOCK_STATE != 0)
                {
                    return new TaskResponse
@@ -1104,11 +1150,14 @@
                var endLoc = TaskProcess.InWorkTransport(model.shippingRoute);
                if (endLoc != null)
                {
                    //创建到缓存区任务
                    var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First();
                    ////创建到缓存区任务
                    //var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First();
                    //找p2a的任务编码
                    var order_name = model.taskList.Find(s=>s.ts_name=="p2a").order_name;
                    //创建任务
                    LogHelper.Info($"创建任务 起点:{startLoc.S_CODE}终点:{endLoc.S_CODE}", "料架到缓存区");
                    var res = TaskProcess.CreateTransportHj(startLoc.S_CODE, endLoc.S_CODE, "料架到缓存区", locCntrRel.S_FRAME_CODE, 1, 1);
                    LogHelper.Info($"创建任务 起点:{startLoc.S_CODE}终点:{endLoc.S_CODE}", "小件通用车型");
                    var res = TaskProcess.CreateTransportDj(startLoc.S_CODE, endLoc.S_CODE, "小件通用车型", model.rackNumber, order_name, 1, 1);
                    if (!res)
                    {
                        return new TaskResponse
@@ -1122,6 +1171,9 @@
                {
                    if (tasklist.ts_name == "p2p")
                    {
                        //先绑定料架和料箱位
                        ContainerHelper.BindLocCntrsXmLj(tasklist.rackPosition, model.rackNumber);
                        var startloc = db.Queryable<Location>().Where(a => a.S_CODE == tasklist.rackPosition).First();
                        if (startloc == null || startloc.N_LOCK_STATE != 0)
                        {
@@ -1139,8 +1191,8 @@
                        var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startloc.S_CODE).First();
                        //创建任务
                        LogHelper.Info($"创建任务 起点:{startloc.S_CODE}终点:{endlocstr}", tasklist.ts_name);
                        var res = TaskProcess.CreateTransportDj(startloc.S_CODE, endlocstr, tasklist.ts_name, locCntrRel.S_CNTR_CODE, tasklist.order_name, 1, 1);
                        LogHelper.Info($"创建任务 起点:{startloc.S_CODE}终点:{endlocstr}", "inbound");
                        var res = TaskProcess.CreateTransportDj(startloc.S_CODE, endlocstr, "inbound", locCntrRel.S_CNTR_CODE, tasklist.order_name, 1, 1);
                        if (!res)
                        {
                            return new TaskResponse