分支自 SuZhouGuanHong/TaiYuanTaiZhong

huanghongfeng
2024-07-19 bb929bd0809eefc1108dd779846ff07d997f7ef0
´úÂë¹ÜÀí/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_patternService.cs
@@ -19,6 +19,12 @@
using WIDESEA_WCS.IRepositories;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Newtonsoft.Json;
using WIDESEA_Core.EFDbContext;
using WIDESEA_WCS.Repositories;
using WIDESEA_Comm;
using WIDESEA_WCS.WCSClient;
using System.Xml.Linq;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
namespace WIDESEA_WCS.Services
{
@@ -39,29 +45,103 @@
            //多租户会用到这init代码,其他情况可以不用
            //base.Init(dbRepository);
        }
        /// <summary>
        /// æ¨¡å¼1
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        public WebResponseContent UpdateAuto(string v)
        {
            WebResponseContent content = new WebResponseContent();
            var model = JsonConvert.DeserializeObject<dt_pattern>(v);
            model.pattern_state = 1;
            var cont = _repository.Update(model, true);
            if (cont > 0)
                content.OK(model.pattern_name + "设置为自动入库成功!");
            else
                content.Error(model.pattern_name + "设置为自动入库失败!");
            try
            {
                var model = JsonConvert.DeserializeObject<dt_pattern>(v);
                if (model.pattern_state == 1) throw new Exception("当前就是模式1");
                var Gantry_client = PLCClient.Clients.FirstOrDefault(t => t.PLCName == "桁架");
                if (Gantry_client == null) throw new Exception("桁架调度服务未开启!");
                if (!Gantry_client.IsConnected) throw new Exception("与桁架连接超时!");
                VOLContext context = new VOLContext();
                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context);
                var stations = stationinfoRepository.Find(x => x.stationCode == "X01001001" || x.stationCode == "X01001002" || x.stationCode == "X02001001" || x.stationCode == "X02001002").ToList();
                if (stations.Where(x => x.tray_status == TrayStateEnum.StrogeTray.ToString()).Any())
                    throw new Exception("设置为模式1失败!下料位存在车轮!");
                #region å†™å…¥ä¿¡å·å‘Šè¯‰æ¡æž¶åˆ‡æ¢æ¨¡å¼
                var ok = Gantry_client.ReadByOrder<bool>("o_enable_change_mode", model.pattern_name);
                #endregion
                if (ok)
                {
                    Gantry_client.WriteByOrder("i_mode", (Int16)1, model.pattern_name);
                    model.pattern_state = 1;
                    var cont = _repository.Update(model, true);
                    if (cont > 0)
                        content.OK(model.pattern_name + "设置为模式1成功!");
                    else
                        throw new Exception(model.pattern_name + "设置为模式2失败!");
                    foreach (var stat in stations)
                    {
                        stat.enable = true;
                    }
                    stationinfoRepository.UpdateRange(stations, x => new { x.enable }, true);
                }
                else
                    content.Error(model.pattern_name + "设置为模式1失败!桁架未允许设置为模式1");
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
        /// <summary>
        /// æ¨¡å¼2
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        public WebResponseContent UpdateManual(string v)
        {
            WebResponseContent content = new WebResponseContent();
            var model = JsonConvert.DeserializeObject<dt_pattern>(v);
            model.pattern_state = 0;
            var cont = _repository.Update(model, true);
            if (cont > 0)
                content.OK(model.pattern_name + "设置为手动入库成功!");
            else
                content.Error(model.pattern_name + "设置为手动入库失败!");
            try
            {
                var model = JsonConvert.DeserializeObject<dt_pattern>(v);
                if (model.pattern_state == 0) throw new Exception("当前就是模式2");
                var Gantry_client = PLCClient.Clients.FirstOrDefault(t => t.PLCName == "桁架");
                if (Gantry_client == null) throw new Exception("桁架调度服务未开启!");
                if (!Gantry_client.IsConnected) throw new Exception("与桁架连接超时!");
                VOLContext context = new VOLContext();
                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context);
                var stations = stationinfoRepository.Find(x => x.stationCode == "X01001001" || x.stationCode == "X01001002" || x.stationCode == "X02001001" || x.stationCode == "X02001002").ToList();
                if (stations.Where(x => x.tray_status == TrayStateEnum.StrogeTray.ToString()).Any())
                    throw new Exception("设置为模式2失败!下料位存在车轮!");
                #region å†™å…¥ä¿¡å·å‘Šè¯‰æ¡æž¶åˆ‡æ¢æ¨¡å¼
                var ok = Gantry_client.ReadByOrder<bool>("o_enable_change_mode", model.pattern_name);
                #endregion
                if (ok)
                {
                    Gantry_client.WriteByOrder("i_mode", (Int16)2, model.pattern_name);
                    model.pattern_state = 0;
                    var cont = _repository.Update(model, true);
                    if (cont > 0)
                        content.OK(model.pattern_name + "设置为模式2成功!");
                    else
                        throw new Exception(model.pattern_name + "设置为模式2失败!");
                    foreach (var stat in stations)
                    {
                        stat.enable = false;
                    }
                    stationinfoRepository.UpdateRange(stations, x => new { x.enable }, true);
                }
                else
                    content.Error(model.pattern_name + "设置为模式2失败!桁架未允许设置为模式2");
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
  }
    }
}