Files
T-DAS/Epost.TestToolsWeb/Controllers/ServerController.cs
2023-12-05 14:35:20 +08:00

381 lines
16 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Epost.BLL;
using Epost.Common;
using Epost.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web.Http;
using LightContrl;
using Epost.DAL.Cache;
using System.Net;
using Microsoft.Owin.BuilderProperties;
namespace Epost.DPS.Controllers
{
[RoutePrefix("api/WebAPI")]
public class ServerController : ApiController
{
AddressstorageBLL addrbll = new AddressstorageBLL();
LightControlCacheDAL cachedal = new LightControlCacheDAL();
private static object lockinit = new object();
OrderControlBLL contrbll = new OrderControlBLL();
MainControl lig = new MainControl();
#region
[Route("CONNECT")]
[HttpPost]
public ResultLightModel CONNECT([FromBody] List<reqmodel> data)
{
ResultLightModel res = new ResultLightModel();
try
{
LogHelper.WriteLogInfo("CONNECT请求" + JsonHelper.SerializeObject(data));
if (data.Any() && data.Count > 0)
{
foreach (var item in data)
{
if (item.status == "1")//连接
{
DataTable dt = addrbll.QueryControlList(" ");
if (dt != null && dt.Rows.Count > 0)
{
foreach (DataRow rowitem in dt.Rows)
{
string ipaddress = rowitem["controlip"].ToString().Trim();
List<LightcontrolModel> conlist = cachedal.GetControlList().FindAll(o => o.controlip == ipaddress);
if (conlist != null && conlist.Count > 0)
{
LogHelper.WriteLogInfo(ipaddress + "已连接!");
res.resultCode = "0";
res.resultMsg = "成功!";
return res;
}
else
{
int port = Convert.ToInt32(rowitem["port"].ToString().Trim());
int timeout = 2000;
bool bo = lig.Connect(ipaddress, port, timeout);//timeout 毫秒
if (bo)
{
LightcontrolModel model = new LightcontrolModel();
model.controlip = ipaddress;
model.maincontrol = lig;
model.port = port;
cachedal.UpdateControlList(new List<LightcontrolModel> { model }, EcontrolCommend.Create);
res.resultCode = "0";
res.resultMsg = "成功!";
}
else
{
res.resultCode = "-1";
res.resultMsg = "连接失败" + ipaddress;
LogHelper.WriteLogInfo("连接失败" + ipaddress);
return res;
}
}
}
}
else
{
res.resultCode = "-1";
res.resultMsg = "播种墙号错误";
LogHelper.WriteLogInfo("播种墙号错误");
return res;
}
}
else {
LogHelper.WriteLogInfo("断开连接");
List<LightcontrolModel> conlist = cachedal.GetControlList();
if (conlist.Any() && conlist.Count > 0)
{
foreach (LightcontrolModel con in conlist)
{
bool b= con.maincontrol.DisConnect(con.controlip,con.port);
LogHelper.WriteLogInfo(b+"断开连接"+ con.controlip+"=="+con.port);
}
}
cachedal.ClearControlList();
res.resultCode = "0";
res.resultMsg = "断开连接成功!";
}
}
}
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogInfo(ex.ToString(), LogHelper.Log_Type.ERROR);
res.resultMsg = "请求接口异常!";
res.resultCode = "-1";
}
return res;
}
#endregion
#region
[Route("LEDON")]
[HttpPost]
public ResultLightModel LEDON([FromBody] List<reqmodel> data)
{
ResultLightModel res = new ResultLightModel();
try
{
LogHelper.WriteLogInfo("LEDON请求" + JsonHelper.SerializeObject(data));
if (data.Any() && data.Count > 0)
{
foreach (var item in data)
{
//根据播种墙号查询灯带IP
DataTable dt = addrbll.QueryControlList(" ");
if (dt != null && dt.Rows.Count > 0)
{
foreach (DataRow rowitem in dt.Rows)
{
string ipaddress = rowitem["controlip"].ToString().Trim();
List<LightcontrolModel> conlist = cachedal.GetControlList().FindAll(o => o.controlip == ipaddress);
if (conlist != null && conlist.Count > 0)
{
MainControl control = conlist.FirstOrDefault().maincontrol;
bool bo = false;
string Address = dt.Rows[0]["address"].ToString().Trim();
string resstr = string.Empty;
if (item.lightType == "0")
{
bo = control.LED_OFF(ipaddress, Address,ref resstr);
}
else
{
bo = control.LED_ON(ipaddress, Address, ref resstr, "3", "0" , item.lightColor.Trim());
}
if (bo)
{
res.resultCode = "0";
res.resultMsg = "成功!";
}
else
{
res.resultCode = "-1";
res.resultMsg = "失败";
LogHelper.WriteLogInfo(ipaddress+"失败!" +resstr);
}
}
else
{
res.resultCode = "-1";
res.resultMsg = "请先连接设备";
LogHelper.WriteLogInfo("请先连接设备!");
}
}
}
else
{
res.resultCode = "-1";
res.resultMsg = "播种墙号错误!";
LogHelper.WriteLogInfo("播种墙号错误", LogHelper.Log_Type.ERROR);
}
}
}
else
{
res.resultCode = "-1";
res.resultMsg = "请求参数错误!";
LogHelper.WriteLogInfo("请求参数错误!");
}
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogInfo(ex.ToString(), LogHelper.Log_Type.ERROR);
res.resultMsg = "请求接口异常!";
res.resultCode = "-1";
}
return res;
}
#endregion
#region /
[Route("DISPLAYJOB")]
[HttpPost]
public ResultLightModel DISPLAYJOB([FromBody] List<DisplayjobModelReq> data)
{
ResultLightModel res = new ResultLightModel();
try
{
LogHelper.WriteLogInfo("DISPLAYJOB请求" + JsonHelper.SerializeObject(data));
if (data.Any() && data.Count > 0)
{
foreach (DisplayjobModelReq item in data)
{
//根据播种墙号查询灯带IP
DataTable dt = addrbll.QueryControlList("");
if (dt != null && dt.Rows.Count > 0)
{
foreach (DataRow rowitem in dt.Rows)
{
string ipaddress = rowitem["controlip"].ToString().Trim();
List<LightcontrolModel> conlist = cachedal.GetControlList().FindAll(o => o.controlip == ipaddress);
if (conlist != null && conlist.Count > 0)
{
MainControl control = conlist.FirstOrDefault().maincontrol;
DataTable locdt = addrbll.QueryAddrList(" and location ='" + item.location + "' and controlip='" + ipaddress + "'");
if (locdt != null && locdt.Rows.Count > 0)
{
List<LightParagraph> list = new List<LightParagraph>();
string address = locdt.Rows[0]["address"].ToString().Trim();
foreach (DataRow locitem in locdt.Rows)
{
//根据播种墙号、格口号查询播种墙ip及灯带地址
LightParagraph show = new LightParagraph();
show.WayNu = Convert.ToInt32(locitem["wayno"].ToString().Trim());
show.LightBeganNu = locitem["beginno"].ToString().Trim();
show.LightEndNu = locitem["endno"].ToString().Trim();
show.LightColor = item.lightColor.Trim(); //1:蓝色 2:绿色 3青色 4:红色 5紫色 6黄色 7白色
show.Brightness = item.brightness.Trim();//亮度 1-9
list.Add(show);
}
string resstr = string.Empty;
bool bo = control.LED_By_Paragraph(ipaddress, address, list,ref resstr);
if (bo)
{
LogHelper.WriteLogInfo("成功" + ipaddress+"list:"+JsonHelper.SerializeObject(list));
res.resultCode = "0";
res.resultMsg = "成功!";
}
else
{
LogHelper.WriteLogInfo("失败"+ ipaddress + "list:" + JsonHelper.SerializeObject(list),LogHelper.Log_Type.ERROR);
res.resultCode = "-1";
res.resultMsg = resstr;
return res;
}
}
}
else
{
res.resultCode = "-1";
res.resultMsg = "请先连接设备!";
LogHelper.WriteLogInfo("请先连接设备!");
}
}
}
else
{
res.resultCode = "-1";
res.resultMsg = "播种墙号错误!";
LogHelper.WriteLogInfo("播种墙号错误!");
}
}
}
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogInfo(ex.ToString(), LogHelper.Log_Type.ERROR);
res.resultMsg = "请求接口异常!";
res.resultCode = "-1";
}
return res;
}
#endregion
//初始化
[Route("ClearALL")]
[HttpPost]
public ResultModel ClearALL()
{
lock (lockinit)
{
ResultModel res = new ResultModel();
try
{
res = contrbll.ClearALL();
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogInfo("GetDataList异常" + ex.Message);
res.msg = "请求异常!";
res.result = "-1";
return res;
}
}
}
[Route("StartWork")]
[HttpPost]
public ResultModel StartWork()
{
lock (lockinit)
{
ResultModel res = new ResultModel();
try
{
contrbll.StartWork();
res.msg = "成功!";
res.result = "0";
}
catch (Exception ex)
{
LogHelper.WriteLogInfo("启动作业异常" + ex.ToString(), LogHelper.Log_Type.ERROR);
res.msg = "启动作业异常!";
res.result = "-1";
}
return res;
}
}
#region
[Route("EndWork")]
[HttpPost]
public ResultModel EndWork()
{
lock (lockinit)
{
ResultModel res = new ResultModel();
contrbll.EndWork();
res.msg = "成功!";
res.result = "0";
return res;
}
}
#endregion
}
}