lss
2025-06-17 d0b3abf74ac5f94f5373922172ed79fbfc24e6be
HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs
@@ -2,11 +2,13 @@
using HH.WCS.JiaTong.core;
using HH.WCS.JiaTong.device;
using HH.WCS.JiaTong.dispatch;
using HH.WCS.JiaTong.LISTA.models;
using HH.WCS.JiaTong.LISTA.process;
using HH.WCS.JiaTong.util;
using HH.WCS.JiaTong.wms;
using Microsoft.Owin.BuilderProperties;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SqlSugar;
using System;
using System.Collections.Generic;
@@ -133,7 +135,11 @@
                            }
                            else
                            {
                                ModbusHelper.WriteSingleRegister(40089, EndLoc.N_LAYER, device.address, 1024);
                                int layerValue = 0;
                                if (EndLoc.N_LAYER == 1) layerValue = 1;
                                else if (EndLoc.N_LAYER == 2) layerValue = 3;
                                else if (EndLoc.N_LAYER == 3) layerValue = 5;
                                ModbusHelper.WriteSingleRegister(40089, layerValue, device.address, 1024);
                                ModbusHelper.WriteSingleRegister(40101, 2, device.address, 1024);
                                ModbusHelper.WriteSingleRegister(40003, 2, device.address, 1024);
                                ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024);
@@ -209,13 +215,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
@@ -249,9 +267,13 @@
                            }
                            else
                            {
                                int layerValue = 0;
                                if (startloc.N_LAYER == 1) layerValue = 1;
                                else if (startloc.N_LAYER == 2) layerValue = 3;
                                else if (startloc.N_LAYER == 3) layerValue = 5;
                                ModbusHelper.WriteSingleRegister(40101, 2, device.address, 1024);
                                ModbusHelper.WriteSingleRegister(40003, 2, device.address, 1024);
                                ModbusHelper.WriteSingleRegister(40089, startloc.N_LAYER, device.address, 1024);
                                ModbusHelper.WriteSingleRegister(40089, layerValue, device.address, 1024);
                                ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024);
                            }
@@ -294,7 +316,11 @@
                                {
                                    LogHelper.Info($"根据任务终点:{mstbyEqno.S_END_LOC},未找到对应货位");
                                }
                                ModbusHelper.WriteSingleRegister(40089, Endloc.N_LAYER, device.address, 1024);
                                int value = 0;
                                if (Endloc.N_LAYER == 1) value = 1;
                                else if (Endloc.N_LAYER == 2) value = 3;
                                else if (Endloc.N_LAYER == 3) value = 5;
                                ModbusHelper.WriteSingleRegister(40089, value, device.address, 1024);
                                ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024);
                            }
@@ -430,6 +456,14 @@
        {
            var result = true;
            var db = new SqlHelper<object>().GetInstance();
            //根据起点仓库编码判断是否可以推送
            var taskLimit = db.Queryable<TASK_LIMIT>().Where(a => a.S_WH_CODE == mst.S_START_WH && a.OPEN == "1").First();
            if (taskLimit != null)
            {
                Console.WriteLine($"任务:{mst.S_CODE},起点仓库:{mst.S_START_WH}已经禁用推送");
                return result;
            }
            var mstbyEqno = db.Queryable<WCSTask>().Where(a => a.S_EQ_NO == mst.S_EQ_NO).ToList();
            if (mstbyEqno.Count() == 1)
            {
@@ -455,12 +489,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;
                    }
                }
@@ -582,7 +620,12 @@
                        {
                            LogHelper.Info($"根据任务起点:{mst.S_START_LOC},未找到对应货位");
                        }
                        ModbusHelper.WriteSingleRegister(40089, loc.N_LAYER, device.address, 1024);
                        int value = 0;
                        if (loc.N_LAYER == 1) value = 1;
                        else if (loc.N_LAYER == 2) value = 3;
                        else if (loc.N_LAYER == 3) value = 5;
                        ModbusHelper.WriteSingleRegister(40089, value, device.address, 1024);
                        ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024);