This commit is contained in:
jl
2023-04-17 14:10:34 +08:00
parent bf208bde56
commit ab8ac9cce6
13 changed files with 480 additions and 141 deletions

BIN
DLL/LightContrl.dll Normal file

Binary file not shown.

BIN
DLL/LightContrl.pdb Normal file

Binary file not shown.

View File

@ -374,5 +374,26 @@ namespace Epost.BLL
return dal.GetAddressListByByPage(strWhere, orderby, startIndex, endIndex, out recordCount);
}
#endregion
#region
#region
public DataTable QueryAddrList(string strwhere)
{
return dal.QueryAddrList(strwhere);
}
#endregion
#region
public DataTable QueryControlList(string strwhere)
{
return dal.QueryControlList(strwhere);
}
#endregion
#endregion
}
}

View File

@ -41,7 +41,6 @@ namespace Epost.BLL
public ResultModel ClearALL()
{
try
{
bool t = addrBLL.UpdateState();

View File

@ -809,5 +809,26 @@ namespace Epost.DAL
}
#endregion
#region
#region
public DataTable QueryAddrList(string strwhere)
{
string sql = string.Format("select * from v_address where 1=1 " + strwhere);
return db.GetsqlForDT(sql);
}
#endregion
#region
public DataTable QueryControlList(string strwhere)
{
string sql = string.Format(" select distinct controlip ,port,waveno,address from v_address where 1=1 " + strwhere);
return db.GetsqlForDT(sql);
}
#endregion
#endregion
}
}

View File

@ -0,0 +1,94 @@
using LightContrl;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Epost.DAL.Cache
{
public class LightControlCacheDAL
{
private static object lockconobj = new object();
public static List<LightcontrolModel> MainControlList = new List<LightcontrolModel>();//
#region
public List<LightcontrolModel> GetControlList()
{
return MainControlList;
}
#endregion
#region
public void ClearControlList()
{
foreach (var planitem in MainControlList.ToArray())
{
MainControlList.Remove(planitem);
}
}
#endregion
#region Job缓存处理方法
/// <summary>
/// Job缓存处理方法
/// </summary>
/// <param name="JobParam"></param>
/// <param name="ECommend"></param>
/// <returns></returns>
public bool UpdateControlList(List<LightcontrolModel> JobParam, EcontrolCommend CommendType)
{
lock (lockconobj)
{
if (CommendType.Equals(EcontrolCommend.Create))
{
MainControlList.AddRange(JobParam);
}
else if (CommendType.Equals(EcontrolCommend.Execute))
{
JobParam.ForEach(m => MainControlList.Remove(m));
}
return true;
}
}
#endregion
}
public enum EcontrolCommend
{
/// <summary>
/// 创建
/// </summary>
[Description("创建")]
Create,
/// <summary>
/// 删除
/// </summary>
[Description("删除")]
Execute
}
public class LightcontrolModel
{
private string _controlip = string.Empty;
MainControl _maincontrol = new MainControl();
public MainControl maincontrol { get => _maincontrol; set => _maincontrol = value; }
public string controlip { get => _controlip; set => _controlip = value; }
}
}

View File

@ -82,6 +82,9 @@
<HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="LightContrl">
<HintPath>..\DLL\LightContrl.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
@ -106,6 +109,7 @@
<Compile Include="Cache\EPlightCacheDAL.cs" />
<Compile Include="Cache\JobDownCacheDAL.cs" />
<Compile Include="Cache\JobModelCacheDAL.cs" />
<Compile Include="Cache\LightControlCacheDAL.cs" />
<Compile Include="Cache\LocationCacheDAL.cs" />
<Compile Include="Cache\ScanModelCacheDAL.cs" />
<Compile Include="Cache\ShowMesCacheDAL.cs" />

View File

@ -9,10 +9,18 @@ namespace Epost.Model
public class OrderModel
{
private string _OrderNO = string.Empty;
private string _State = string.Empty;// 1亮灯 0灭灯
private string _wallNo = string.Empty;
private string _location = string.Empty;
private string _lightColor = string.Empty;
private string _lightType = string.Empty;
private string _brightness = string.Empty;
private string _status = string.Empty;
public string OrderNO { get => _OrderNO; set => _OrderNO = value; }
public string State { get => _State; set => _State = value; }
public string wallNo { get => _wallNo; set => _wallNo = value; }
public string lcation { get => _location; set => _location = value; }
public string lightColor { get => _lightColor; set => _lightColor = value; }
public string lightType { get => _lightType; set => _lightType = value; }
public string brightness { get => _brightness; set => _brightness = value; }
public string status { get => _status; set => _status = value; }
}
}

View File

@ -37,4 +37,89 @@ namespace Epost.Model
}
}
}
public class SerResultModel
{
private string _resultCode = string.Empty;
private string _resultMsg = string.Empty;
public string resultCode { get => _resultCode; set => _resultCode = value; }
public string resultMsg { get => _resultMsg; set => _resultMsg = value; }
}
public class TaskReqModel
{
private string matchid = string.Empty;
private string orderid = string.Empty;
private string sku = string.Empty;
private string tolocation = string.Empty;
private string originalBatch = string.Empty;
private string block = string.Empty;
private string area = string.Empty;
private string _id = string.Empty;
public string Matchid { get => matchid; set => matchid = value; }
public string Orderid { get => orderid; set => orderid = value; }
public string Sku { get => sku; set => sku = value; }
public string Tolocation { get => tolocation; set => tolocation = value; }
public string OriginalBatch { get => originalBatch; set => originalBatch = value; }
public string Block { get => block; set => block = value; }
public string Area { get => area; set => area = value; }
public string id { get => _id; set => _id = value; }
}
public class ResultLightModel
{
private string _resultCode = string.Empty;
private string _resultMsg = string.Empty;
public string resultCode
{
get
{
return _resultCode;
}
set
{
_resultCode = value;
}
}
public string resultMsg
{
get
{
return _resultMsg;
}
set
{
_resultMsg = value;
}
}
}
public class reqmodel
{
public string wallNo { get; set; }
public string lightType { get; set; }
}
public class DisplayjobModelReq
{
public string wallNo { get; set; }
public string location { get; set; }
public string lightColor { get; set; }
public string lightType { get; set; }
public string brightness { get; set; }
}
}

View File

@ -41,6 +41,7 @@ namespace Epost.TestToolsWeb.Controllers
public ActionResult Index()
{
ViewBag.isClear = isClear;
ViewBag.isWork = isWork;

View File

@ -5,167 +5,267 @@ using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using LightContrl;
using Epost.DAL.Cache;
namespace Epost.DPS.Controllers
{
[RoutePrefix("api/WebAPI")]
[RoutePrefix("api/TaskAPI")]
public class ServerController : ApiController
{
private static object lockinit = new object();
AddressstorageBLL addrbll = new AddressstorageBLL();
LightControlCacheDAL cachedal = new LightControlCacheDAL();
MainControl lig = new MainControl();
#region
[Route("CONNECT")]
[HttpPost]
public ResultLightModel CONNECT([FromBody] List<reqmodel> data)
{
ResultLightModel res = new ResultLightModel();
try
{
if (data.Any() && data.Count > 0)
{
foreach (var item in data)
{
DataTable dt = addrbll.QueryControlList(" and waveno ='" + item.wallNo + "'");
if (dt != null && dt.Rows.Count > 0)
{
foreach (DataRow rowitem in dt.Rows)
{
OrderControlBLL contrbll = new OrderControlBLL();
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 + "已连接!");
}
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;
cachedal.UpdateControlList(new List<LightcontrolModel> { model }, EcontrolCommend.Create);
res.resultCode = "0";
res.resultMsg = "成功!";
}
else
{
res.resultCode = "-1";
res.resultMsg = "连接失败" + ipaddress;
return res;
}
}
}
//初始化
}
}
}
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
{
if (data.Any() && data.Count > 0)
{
foreach (var item in data)
{
//根据播种墙号查询灯带IP
DataTable dt = addrbll.QueryControlList(" and waveno ='" + item.wallNo + "'");
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();
if (item.lightType == "0")
{
bo = control.LED_OFF(ipaddress, Address);
}
else
{
bo = control.LED_ON(ipaddress, Address, "3", "0", "1");
}
if (bo)
{
res.resultCode = "0";
res.resultMsg = "成功!";
}
else
{
res.resultCode = "-1";
res.resultMsg = "失败";
}
}
else
{
res.resultCode = "-1";
res.resultMsg = "请先连接设备";
}
}
}
else
{
res.resultCode = "-1";
res.resultMsg = "播种墙号错误!";
LogHelper.WriteLogInfo("播种墙号错误", LogHelper.Log_Type.ERROR);
}
}
}
else
{
res.resultCode = "-1";
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("DISPLAYJOB")]
[HttpPost]
public ResultModel DISPLAYJOB(OrderModel model)
public ResultLightModel DISPLAYJOB([FromBody] List<DisplayjobModelReq> data)
{
lock (lockinit)
ResultLightModel res = new ResultLightModel();
try
{
ResultModel res = new ResultModel();
try
if (data.Any() && data.Count > 0)
{
LogHelper.WriteLogInfo(JsonHelper.SerializeObject(model));
res.result = "0";
res.msg = "成功!";
return res;
foreach (DisplayjobModelReq item in data)
{
//根据播种墙号查询灯带IP
DataTable dt = addrbll.QueryControlList(" and waveno ='" + item.wallNo + "'");
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 waveno ='" + item.wallNo + "' 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);
}
bool bo = control.LED_By_Paragraph(ipaddress, address, list);
if (bo)
{
res.resultCode = "0";
res.resultMsg = "成功!";
}
else
{
res.resultCode = "-1";
res.resultMsg = "失败";
return res;
}
}
}
else
{
res.resultCode = "-1";
res.resultMsg = "请先连接设备!";
}
}
}
else
{
res.resultCode = "-1";
res.resultMsg = "连接失败";
}
}
}
catch (Exception ex)
{
LogHelper.WriteLogInfo("GetDataList异常" + ex.Message);
res.msg = "请求异常!";
res.result = "-1";
return res;
}
}
}
//初始化
[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("TestStart")]
[HttpPost]
public ResultModel TestStart()
{
lock (lockinit)
catch (Exception ex)
{
ResultModel res = new ResultModel();
try
{
ResultModel result = contrbll.TestStart();
return result;
}
catch (Exception ex)
{
LogHelper.WriteLogInfo("GetDataList异常" + ex.Message);
res.msg = "请求异常!";
res.result = "-1";
return res;
}
LogHelper.WriteLogInfo(ex.ToString(), LogHelper.Log_Type.ERROR);
res.resultMsg = "请求接口异常!";
res.resultCode = "-1";
}
return res;
}
#endregion
#region
[Route("TestEnd")]
[HttpPost]
public ResultModel TestEnd()
{
lock (lockinit)
{
ResultModel res = new ResultModel();
contrbll.TestEnd();
res.msg = "成功!";
res.result = "0";
return res;
}
}
#endregion
#region
[Route("EndWork")]
[HttpPost]
public ResultModel EndWork()
{
lock (lockinit)
{
ResultModel res = new ResultModel();
contrbll.EndWork();
res.msg = "成功!";
res.result = "0";
return res;
}
}
#endregion
}

View File

@ -61,6 +61,10 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\DLL\ExcelIntOut.dll</HintPath>
</Reference>
<Reference Include="LightContrl, Version=3.0.2.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\DLL\LightContrl.dll</HintPath>
</Reference>
<Reference Include="Microsoft.AI.Agent.Intercept, Version=1.2.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.Agent.Intercept.1.2.1\lib\net45\Microsoft.AI.Agent.Intercept.dll</HintPath>
<Private>True</Private>

View File

@ -32,7 +32,9 @@
<add key="SetupMode" value="\Epost_P\Epost.TestToolsWeb\App_Data\SetupMode.txt" />
<add key="CARID" value="HT01" />
<add key="ServerAPIURL" value="http://192.168.3.65:8051/api/WebAPI" />
<add key="SleepTime" value="1" />
<add key="SleepTime" value="1" />
</appSettings>
<!--
有关 web.config 更改的说明,请参见 http://go.microsoft.com/fwlink/?LinkId=235367。