1
zxx
2025-07-04 32a9985c4a3a326d4c30432374247cca5e172c93
HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs
@@ -27,6 +27,8 @@
using Newtonsoft.Json.Linq;
using S7.Net;
using System.Threading.Tasks;
using HH.WCS.XiaoMi.LISTA.dispatch;
using static HH.WCS.XiaoMi.LISTA.dispatch.RcsHelper;
namespace HH.WCS.XiaoMi.process
{
@@ -368,7 +370,61 @@
            else { result = true; }
            return result;
        }
        //小米推送任务
        internal static bool SendXmTask(WCSTask mst)
        {
            var result = false;
            var taskState = mst.N_B_STATE;
            if (taskState == 0)
            {
                Console.WriteLine($"任务mst {JsonConvert.SerializeObject(mst)}");
                LogHelper.Info($"任务mst {JsonConvert.SerializeObject(mst)}", "任务");
                //var startLoc = LocationHelper.GetLoc(mst.S_START_LOC);
                //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\":\"-99\"";
                    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);
                    if (res)
                    {
                        //更新任务状态
                        mst.N_B_STATE = 1;
                        //mst.S_EQ_TASK_CODE = res.ToString();
                        WCSHelper.UpdateStatus(mst);
                        WCSHelper.UpdateEQNo(mst);
                        ////推送成功,修改任务状态
                        //TaskHelper.UpdateStatus(mst, "已推送");
                        ////推送成功,修改国自ID
                        //TaskHelper.UpdateGzId(mst, res);
                        LogHelper.Info($"任务mst {mst.S_CODE}推送成功", "任务");
                        result = true;
                    }
                }
            }
            else { result = true; }
            return result;
        }
        /// <summary>
        /// 创建搬运任务
@@ -390,6 +446,24 @@
            var res = WCSHelper.CreateTask(taskNo, start.Trim(), end.Trim(), taskType, priority, trayCodes, trayCarryCount, startLayer, endLayer);
            if (res)
            {
                result = true;
                //任务创建成功,起点货位出库锁定,终点货位入库锁定
                LocationHelper.LockLoc(start, 2);
                LocationHelper.LockLoc(end, 1);
            }
            return result;
        }
        //小米大件
        public static bool CreateTransportDj(string start, string end, string taskType, string cntrs,string orderName, int startLayer, int endLayer, int trayCarryCount = 1, int priority = 1)
        {
            var result = false;
            var trayCodes = cntrs;
            var taskNo = DateTime.Now.Ticks.ToString();
            var res = WCSHelper.CreateTaskDj(taskNo, start.Trim(), end.Trim(), taskType, priority, trayCodes, orderName,trayCarryCount, startLayer, endLayer);
            if (res)
            {
                result = true;
@@ -894,70 +968,71 @@
                switch (model.ts_name)
                {
                    case "p2p":
                        startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First();
                        startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameters.src).First();
                        if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y")
                        {
                            Message = $"{model.parameter.src}库位已被锁定!";
                            Message = $"{model.parameters.src}库位已被锁定!";
                        }
                        endLocStr = model.parameter.dst;
                        endLocStr = model.parameters.dst;
                        
                        break;
                    case "p2a":
                        startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First();
                        startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameters.src).First();
                        if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y")
                        {
                            Message = $"{model.parameter.src}库位已被锁定!";
                            Message = $"{model.parameters.src}库位已被锁定!";
                        }
                        var endLoc = InWorkTransport(model.parameter.dst_area);
                        var endLoc = InWorkTransport(model.parameters.dst_area);
                        if (endLoc==null)
                        {
                            //如果没找到就等第一条
                            endLocStr = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.parameter.dst).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE;
                            endLocStr = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.parameters.dst).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE;
                        }
                        break;
                    case "a2p":
                        startLoc = OutWorkTransport(model.parameter.src_area);
                        startLoc = OutWorkTransport(model.parameters.src_area);
                        if (startLoc==null)
                        {
                            Message = $"{model.parameter.dst}库区没有可出货位!";
                            Message = $"{model.parameters.dst}库区没有可出货位!";
                        }
                        endLocStr = model.parameter.dst;
                        endLocStr = model.parameters.dst;
                        break;
                    case "a2a":
                        startLoc = OutWorkTransport(model.parameter.src_area);
                        startLoc = OutWorkTransport(model.parameters.src_area);
                        if (startLoc == null)
                        {
                            Message = $"{model.parameter.src}库区没有可出货位!";
                            Message = $"{model.parameters.src}库区没有可出货位!";
                        }
                        var endLoc1 = InWorkTransport(model.parameter.dst_area);
                        var endLoc1 = InWorkTransport(model.parameters.dst_area);
                        if (endLoc1 == null)
                        {
                            //如果没找到就等第一条
                            endLocStr = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.parameter.dst).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE;
                            endLocStr = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.parameters.dst).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE;
                        }
                        break;
                    case "p2u":
                        startLoc = OutWorkTransport(model.parameter.src);
                        startLoc = OutWorkTransport(model.parameters.src);
                        if (startLoc == null)
                        {
                            Message = $"{model.parameter.src}库区没有可出货位!";
                            Message = $"{model.parameters.src}库区没有可出货位!";
                        }
                        endLocStr = "";
                        break;
                }
                LogHelper.Info($"bigMaterial  接收参数{JsonConvert.SerializeObject(model) }");
                //创建托盘货位绑定关系
                string trayCode = ContainerHelper.GenerateCntrNo();
                //绑定起点货位(产线)和物料
                ContainerHelper.BindLocCntrs(startLoc.S_CODE, trayCode, model.parameter.sku, "");
                ContainerHelper.BindLocCntrsXm(startLoc.S_CODE, trayCode, model.parameters.sku, "", model.parameters.BatchNo, model.parameters.issueMode, model.parameters.num);
                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.CreateTransport(startLoc.S_CODE, endLocStr, model.ts_name, locCntrRel.S_CNTR_CODE, 1, 1);
                var res = TaskProcess.CreateTransportDj(startLoc.S_CODE, endLocStr, model.ts_name, locCntrRel.S_CNTR_CODE, model.order_name, 1, 1);
                if (!res)
                {
                    return new TaskResponse
@@ -1000,8 +1075,8 @@
        }
        //自动 拆分
        public static TaskResponse autoSmallMaterial(smallMaterial model) {
        public static TaskResponse smallMaterial(smallMaterial model) {
            var db = new SqlHelper<Location>().GetInstance();
            string Message = null;
@@ -1120,16 +1195,7 @@
            }
            return result;
        }
        //人工 不拆分
        public static void artificialSmallMaterial(smallMaterial model)
        {
            var db = new SqlHelper<Location>().GetInstance();
        }
    }