lss
2025-07-03 7afc439ba32e234ebc455c98fa084ae6eef8a621
HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs
@@ -8,6 +8,7 @@
using HH.WCS.JiaTong.wms;
using Microsoft.Owin.BuilderProperties;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SqlSugar;
using System;
using System.Collections.Generic;
@@ -46,7 +47,7 @@
                else
                {
                    LogHelper.Info($"任务{mst.S_CODE} 托盘为空 ,只解锁货位");
                    LocationHelper.UnlockLoc(mst.S_START_LOC);
                    LocationHelper.UnlockLocDeleteCntrs(mst.S_START_LOC);
                }
            }
            else
@@ -83,13 +84,10 @@
            }
            else
            {
                //起点终点解锁
                LocationHelper.UnLockLoc(mst.S_START_LOC);
                LocationHelper.UnLockLoc(mst.S_END_LOC);
            }
        }
        /// <summary>
@@ -214,13 +212,25 @@
                            if (Device != null)
                            {
                                //写入失败重新写入
                                while (!S7Helper.WriteDpj(Device.address, 1001, 1))
                                if (!S7Helper.WriteDpj(Device.address, 1001, 1))
                                {
                                    Thread.Sleep(1000);
                                    Task.Run(() =>
                                    {
                                        while (!S7Helper.WriteDpj(Device.address, 1001, 1))
                                        {
                                            Thread.Sleep(1000);
                                        }
                                    });
                                }
                                while (!S7Helper.WriteDpj(Device.address, 1002, 0))
                                if (!S7Helper.WriteDpj(Device.address, 1002, 0))
                                {
                                    Thread.Sleep(1000);
                                    Task.Run(() =>
                                    {
                                        while (!S7Helper.WriteDpj(Device.address, 1002, 0))
                                        {
                                            Thread.Sleep(1000);
                                        }
                                    });
                                }
                            }
                            else
@@ -476,12 +486,16 @@
                else if (mst.S_TYPE == "电梯2")
                {
                    var mst2 = mstbyEqno.Where(a => a.S_TYPE == "电梯1").First();
                    if (mst2.S_B_STATE == "卸货完成" || mst2.S_B_STATE == "完成")
                    if (mst2 == null)
                    {
                        return result;
                    }
                    else
                    {
                        if (mst2.S_B_STATE == "卸货完成" || mst2.S_B_STATE == "完成")
                        {
                            return result;
                        }
                        result = false;
                    }
                }
@@ -544,14 +558,22 @@
        internal static bool SendTask(WCSTask mst)
        {
            var db = new SqlHelper<object>().GetInstance();
            var result = false;
            var start = "0"; var end = "0";
            var taskType = mst.S_TYPE.Trim();
            var list = db.Queryable<Location>().ToList().Count;
            // if (mst.N_B_STATE == 0) {
            if (mst.N_SCHEDULE_TYPE == 1)
            {
                LogHelper.Info($"任务推送数据:{JsonConvert.SerializeObject(mst)}");
                if (string.IsNullOrEmpty(mst.S_START_LOC) || string.IsNullOrEmpty(mst.S_END_LOC))
                {
                    LogHelper.Info($"任务{mst.S_CODE},起点终点有空参数,不推送任务");
                }
                start = LocationHelper.GetAgvSite(mst.S_START_LOC);
                end = LocationHelper.GetAgvSite(mst.S_END_LOC);
                //if (mst.N_START_LAYER > 1)
@@ -809,7 +831,24 @@
                //获取时间戳
                var time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
                statusarrive.RequestId = "杭叉AGV" + time;
                string info = "";
                switch (status)
                {
                    case 1:
                        info = "agv已接受原料库下发的任务";
                        break;
                    case 4:
                        info = "agv已取货完成";
                        break;
                    case 6:
                        info = "agv已卸货到指定位置";
                        break;
                    case 2:
                        info = "agv已完成送料任务";
                        break;
                }
                string message = "1";
                if (status == 7) { message = "agv任务已取消"; }
                int flag = 0;
                if (mst.S_NOTE == "粉料")
                {
@@ -824,6 +863,8 @@
                statusArrive.Status = status.ToString();
                statusArrive.Rfid = mst.S_CNTR_CODE;
                statusArrive.Flag = flag;
                statusArrive.Info = info;
                statusArrive.Message = message;
                //statusArrives.Add(statusArrive);
                statusarrive.data = statusArrive;
@@ -894,8 +935,19 @@
                if (cntritem != null)
                {
                    string curBagNum = null;
                    string weightBag = null;
                    if (cntritem.F_QTY > 0)
                    {
                        curBagNum = cntritem.F_QTY.ToString();
                    }
                    if (!string.IsNullOrEmpty(cntritem.F_WEIGHT1) && int.Parse(cntritem.F_WEIGHT1) > 0)
                    {
                        weightBag = cntritem.F_WEIGHT1;
                    }
                    list.Add(new MesItemBackInfoModel()
                    {
                        LotNumber = cntritem.S_BATCH_NO,
                        PartNumber = cntritem.S_ITEM_CODE,
                        Subpool = cntritem.Subpool,
@@ -906,7 +958,10 @@
                        Rfid = cntritem.S_CNTR_CODE,
                        Qty = cntritem.F_WEIGHT,
                        PartLevel = cntritem.LEV,
                        WmsLot = cntritem.WmsLot
                        WmsLot = cntritem.WmsLot,
                        WeightBag = weightBag,
                        CurBagNum = curBagNum,
                        InitBagNum = cntritem.F_QTY1
                    });