Compare commits

...

10 Commits

Author SHA1 Message Date
CaesarBao a798b3fb8e 提交 2 months ago
CaesarBao 859d097977 提交奥特佳物料绑定工位源码 6 months ago
CaesarBao 9dff42b945 1.新增扫码判断是否存在绑定信息
2.新增壳体型号切换校验
6 months ago
CaesarBao 9f8c3344df 合并 8 months ago
CaesarBao 9ee4f9dff8 修改 8 months ago
wenjy c0d65301a7 change - 添加Console启动 8 months ago
CaesarBao 63540f27e8 提交 8 months ago
CaesarBao d46e20ede0 Merge branch 'master' of http://175.27.215.92:3000/baogq/HightWay_AirPot_WCS 9 months ago
CaesarBao 750eb80fa8 修改任务实体,新增AGV任务编号 9 months ago
SoulStar 38ed1f0a4d change - 优化AirportHttpClient类 9 months ago

@ -0,0 +1,43 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<None Remove="appsettings.json" />
</ItemGroup>
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SlnMesnac.Business\SlnMesnac.Business.csproj" />
<ProjectReference Include="..\SlnMesnac.Common\SlnMesnac.Common.csproj" />
<ProjectReference Include="..\SlnMesnac.Config\SlnMesnac.Config.csproj" />
<ProjectReference Include="..\SlnMesnac.Extensions\SlnMesnac.Extensions.csproj" />
<ProjectReference Include="..\SlnMesnac.Generate\SlnMesnac.Generate.csproj" />
<ProjectReference Include="..\SlnMesnac.Ioc\SlnMesnac.Ioc.csproj" />
<ProjectReference Include="..\SlnMesnac.Model\SlnMesnac.Model.csproj" />
<ProjectReference Include="..\SlnMesnac.Mqtt\SlnMesnac.Mqtt.csproj" />
<ProjectReference Include="..\SlnMesnac.Plc\SlnMesnac.Plc.csproj" />
<ProjectReference Include="..\SlnMesnac.Quartz\SlnMesnac.Quartz.csproj" />
<ProjectReference Include="..\SlnMesnac.Redis\SlnMesnac.Redis.csproj" />
<ProjectReference Include="..\SlnMesnac.Repository\SlnMesnac.Repository.csproj" />
<ProjectReference Include="..\SlnMesnac.Rfid\SlnMesnac.Rfid.csproj" />
<ProjectReference Include="..\SlnMesnac.Serilog\SlnMesnac.Serilog.csproj" />
<ProjectReference Include="..\SlnMesnac.TouchSocket\SlnMesnac.TouchSocket.csproj" />
</ItemGroup>
</Project>

@ -0,0 +1,36 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using SlnMesnac.Config;
using SlnMesnac.Quartz;
using TouchSocket.Sockets;
using SlnMesnac.Extensions;
using Microsoft.AspNetCore.Hosting;
using Serilog;
using Autofac.Extensions.DependencyInjection;
namespace ConsoleApp
{
internal class Program
{
static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();//生成宿主。
host.StartAsync();
var appConfig = host.Services.GetService<AppConfig>();
var logPath = $"{appConfig.logPath}/Logs/{DateTime.UtcNow:yyyy-MM-dd}/";
Log.Information($"系统初始化完成,日志存放路径:{appConfig.logPath}");
Console.ReadLine();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}

@ -0,0 +1,113 @@
using Autofac;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using SlnMesnac.Config;
using SlnMesnac.Ioc;
using SlnMesnac.Extensions;
using SlnMesnac.Serilog;
using SlnMesnac.Quartz;
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2024 WenJY
* CLR4.0.30319.42000
* T14-GEN3-7895
* ConsoleApp
* 57e1b754-83fd-42ef-ad93-2693dcbebacf
*
* WenJY
*
* 2024-11-08 10:04:52
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
namespace ConsoleApp
{
public class Startup
{
/// <summary>
/// This method gets called by the runtime. Use this method to add services to the container.
/// </summary>
/// <param name="services"></param>
[Obsolete]
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
//注册AppConfig
services.AddSingleton<AppConfig>(provider =>
{
var configuration = provider.GetService<IConfiguration>();
return configuration.GetSection("AppConfig").Get<AppConfig>();
});
//注册ORM
services.AddSqlSugarSetup();
//注册PLC工厂
//services.AddPlcFactorySetup();
//注册httpClient
//services.AddHostedService<AirPorthttpClient>();
//注册TCPServer
//services.AddHostedService<TcpServer>();
//注册RFID工厂
//services.AddRfidFactorySetup();
//注册任务调度
services.AddQuartzSetUp();
}
/// <summary>
/// AutoFac自动注入
/// </summary>
/// <param name="builder"></param>
public void ConfigureContainer(ContainerBuilder builder)
{
DependencyConfigurator.Configure(builder);
}
/// <summary>
/// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
/// </summary>
/// <param name="app"></param>
/// <param name="env"></param>
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
//启用Serilog中间件
app.UseSerilogExtensions();
//app.UseTouchSocketExtensions();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}

@ -0,0 +1,89 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"AppConfig": {
"logPath": "F:\\Mesnac\\2023部门项目\\奥特佳-滁州3期\\源码\\HightWay_Middle_Ware\\ConsoleApp\\bin\\Debug\\net6.0\\log",
"SqlConfig": [
{
"configId": "mes",
"dbType": 1,
"connStr": "server=192.168.1.120;uid=sa;pwd=123456;database=ATJ_581_DB"
},
//{
// "configId": "mcs",
// "dbType": 3,
// "connStr": "Data Source=175.27.215.92/helowin;User ID=aucma_scada;Password=aucma"
//},
{
"configId": "Local",
"dbType": 2,
"connStr": "Data Source=F:\\Mesnac\\2023部门项目\\奥特佳-滁州3期\\源码\\HightWay_Middle_Ware\\SlnMesnac.WPF\\bin\\Debug\\net6.0-windows\\data\\LSHData.db3"
}
],
"PlcConfig": [
{
"configId": 1,
"plcType": "MelsecBinaryPlc",
"plcIp": "127.0.0.1",
"plcPort": 6000,
"plcKey": "mcs",
"isFlage": true
},
{
"configId": 2,
"plcType": "MelsecBinaryPlc",
"plcIp": "127.0.0.1",
"plcPort": 6001,
"plcKey": "cwss",
"isFlage": true
}
],
"RfidConfig": [
{
"configId": 1,
"equipIp": "127.0.0.1",
"equipPort": 6003,
"equipKey": "test1",
"isFlage": true
},
{
"configId": 2,
"equipIp": "127.0.0.1",
"equipPort": 6004,
"equipKey": "test2",
"isFlage": true
}
],
"visionConfig": [
{
"VisionId": 1,
"VisionIp": "127.0.0.1",
"VisionPort": 7001,
"AGVID": "1",
"VisionState": "1",
"IsFlag": true
},
{
"VisionId": 2,
"VisionIp": "127.0.0.1",
"VisionPort": 7002,
"AGVID": "2",
"VisionState": "1",
"IsFlag": true
}
],
"AMRIP": "127.0.0.1",
"redisConfig": "175.27.215.92:6379,password=redis@2023",
"AGVIpConfig": "http://192.168.40.81:5102",
"TCPVisionConfig": "127.0.0.1:6000"
}
}

@ -1,16 +0,0 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using SlnMesnac.Repository.service;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace SlnMesnac.Business.Airport
{
public class AirPortBusiness
{
}
}

@ -0,0 +1,75 @@
using ATC_MaterialBind.Entity;
using Microsoft.IdentityModel.Logging;
using SlnMesnac.Business.@base;
using SlnMesnac.Plc;
using SlnMesnac.Repository.service;
using SlnMesnac.Repository.service.@base;
using SlnMesnac.Repository.service.Impl;
using SlnMesnac.Rfid;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Business.@base
{
public class MaterialBindBusiness : BaseBusiness
{
private IStationQualityInfoService _stationQualityInfoService;
public Action<bool> _PlcConnectState;
public MaterialBindBusiness(List<PlcAbsractFactory> plcFactories,IStationQualityInfoService stationQualityInfoService) : base(plcFactories)
{
_stationQualityInfoService = stationQualityInfoService;
}
public bool OK_FXSignal(String PlcAddress)
{
try
{
var flag = false;
var plc = base.GetPlcByKey("plc");
if (plc != null)
{
flag = plc.writeInt16ByAddress(PlcAddress, 1);
}
return flag;
}
catch (Exception ex)
{
return false;
}
}
public bool NG_BJSignal(String PlcAddress,int value)
{
try
{
var flag = false;
var plc = base.GetPlcByKey("plc");
if (plc != null)
{
flag = plc.writeInt16ByAddress(PlcAddress, value);
}
return flag;
}
catch (Exception ex)
{
return false;
}
}
public bool PLCState()
{
var plc = base.GetPlcByKey("plc");
_PlcConnectState?.Invoke(plc.IsConnected);
return plc.IsConnected;
}
}
}

@ -29,16 +29,13 @@ using System.Text;
#endregion << 版 本 注 释 >>
namespace SlnMesnac.Business.@base
{
internal class BaseBusiness
public class BaseBusiness
{
private readonly List<PlcAbsractFactory> _plcFactories;
private readonly List<RfidAbsractFactory> _rfidFactories;
public BaseBusiness(List<PlcAbsractFactory> plcFactories, List<RfidAbsractFactory> rfidFactories)
public BaseBusiness(List<PlcAbsractFactory> plcFactories)
{
_plcFactories = plcFactories;
_rfidFactories = rfidFactories;
}
/// <summary>
@ -70,37 +67,5 @@ namespace SlnMesnac.Business.@base
throw new InvalidOperationException($"根据Key获取PLC连接信息异常:{ex.Message}");
}
}
/// <summary>
/// 根据Key获取Rfid连接信息
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
/// <exception cref="ArgumentNullException"></exception>
/// <exception cref="InvalidOperationException"></exception>
public RfidAbsractFactory GetRfidByKey(string key)
{
if (_rfidFactories == null)
{
throw new ArgumentNullException($"根据Key获取RFID连接信息异常:PLC 连接信息为空");
}
if (string.IsNullOrEmpty(key))
{
throw new ArgumentNullException("根据Key获取RFID连接信息异常:设备Key参数为空");
}
try
{
var info = _rfidFactories.Where(x => x.ConfigKey == key).FirstOrDefault();
return info;
}
catch (Exception ex)
{
throw new InvalidOperationException($"根据Key获取RFID连接信息异常:{ex.Message}");
}
}
}
}

@ -1,45 +0,0 @@
using Microsoft.Extensions.Logging;
using SlnMesnac.Model.AirportApiEntity;
using SlnMesnac.Repository.service;
using SlnMesnac.TouchSocket;
using System;
using System.Collections.Generic;
using System.Text;
namespace SlnMesnac.Business.@base
{
public class BaseStateRefreshBusiness
{
private IAGVStateService _AGVStateService;
private ILogger<BaseStateRefreshBusiness> _logger;
private static BaseStateRefreshBusiness instance;
public BaseStateRefreshBusiness(ILogger<BaseStateRefreshBusiness> logger, IAGVStateService agvService)
{
_logger = logger;
_AGVStateService = agvService;
}
public static BaseStateRefreshBusiness GetInstance(ILogger<BaseStateRefreshBusiness> logger, IAGVStateService agvService)
{
if (instance == null)
{
instance = new BaseStateRefreshBusiness(logger, agvService);
}
return instance;
}
public bool UpdateAGVStateByResposne()
{
try
{
var response = AirPorthttpClient.AGVAllStateRequest();
_AGVStateService.UpdateOrAddByResponse(response);
}
catch (Exception e)
{
_logger.LogError("Error:" + e);
}
return true;
}
}
}

@ -1,4 +1,5 @@
using Microsoft.Extensions.Logging;

using Microsoft.Extensions.Logging;
using SlnMesnac.Repository.service;
using System;
using System.Collections.Generic;
@ -14,6 +15,7 @@ using SlnMesnac.Model.Enum;
using HslCommunication.Enthernet;
using System.Threading;
using SlnMesnac.TouchSocket.Entity;
using static SlnMesnac.TouchSocket.TcpServer;
namespace SlnMesnac.Business.@base
{
@ -26,7 +28,8 @@ namespace SlnMesnac.Business.@base
private ILogger<BaseTaskInfoBusiness> _logger;
private IAirportTaskService _Taskservice;
private IAGVStateService _AGVStateService;
public BaseTaskInfoBusiness(ILogger<BaseTaskInfoBusiness> logger, IAirportTaskService Taskservice, IAGVStateService agvService, TcpServer tcpServer)
private AirPorthttpClient _airPorthttpClient;
public BaseTaskInfoBusiness(ILogger<BaseTaskInfoBusiness> logger, IAirportTaskService Taskservice, IAGVStateService agvService, TcpServer tcpServer, AirPorthttpClient airPorthttpClient)
{
_logger = logger;
_tcpServer = tcpServer;
@ -34,8 +37,10 @@ namespace SlnMesnac.Business.@base
_tcpServer.ReceiveStackWorkDoneEvent += _tcpServer_StackWorkDoneEvent;
_Taskservice = Taskservice;
_AGVStateService = agvService;
InitClearTimer();
//InitClearTimer();
_airPorthttpClient = airPorthttpClient;
//doWhileGetAGVTaskInfo();
//GetTaskStateDetail();
}
/// <summary>
/// 一次码垛完成,发送码垛结果
@ -91,7 +96,7 @@ namespace SlnMesnac.Business.@base
//任务异常
else if (entity.DataBytes[0] == 0x01)
{
}
}
}
@ -102,36 +107,15 @@ namespace SlnMesnac.Business.@base
}
}
public static BaseTaskInfoBusiness GetInstance(ILogger<BaseTaskInfoBusiness> logger, IAirportTaskService Taskservice, IAGVStateService agvService, TcpServer tcpServer)
public static BaseTaskInfoBusiness GetInstance(ILogger<BaseTaskInfoBusiness> logger, IAirportTaskService Taskservice, IAGVStateService agvService, TcpServer tcpServer, AirPorthttpClient airPorthttpClient)
{
if (instance == null)
{
instance = new BaseTaskInfoBusiness(logger, Taskservice,agvService, tcpServer);
instance = new BaseTaskInfoBusiness(logger, Taskservice,agvService, tcpServer, airPorthttpClient);
}
return instance;
}
private void doWhileGetAGVTaskInfo()
{
try
{
Task.Run((() =>
{
while (true)
{
GetAGVTaskInfo(null,null);
Task.Delay(1000);
}
}));
}
catch (Exception ex)
{
}
}
private void InitClearTimer()
{
System.Timers.Timer timer = new System.Timers.Timer
@ -263,24 +247,59 @@ namespace SlnMesnac.Business.@base
//根据规则筛选最优AGV
if (AgvItem.agvworkstate == "任务空闲")
{
_logger.LogInformation($"获取空闲AGV列表");
_RefreshLogMessageAction?.Invoke("执行站台[" + AirportTask.conveyorno + "],下发" + "[" + AirportTask.taskno + "]任务");
//调用派发任务接口,向任务状态为任务空闲的AGV派发任务
bool iTaskflag = true;
if (iTaskflag)
//搬运机器人是否已到位
if (string.IsNullOrEmpty(AirportTask.agvtaskno))
{
_RefreshLogMessageAction?.Invoke("[" + AgvItem.agvno + "]AGV执行任务[" + AirportTask.taskno + "]");
AgvItem.taskno = AirportTask.taskno;
AgvItem.agvworkstate = "任务执行中";
AgvItem.refreshtime = DateTime.Now;
_AGVStateService.UpdateAsync(AgvItem);
_logger.LogInformation($"获取空闲AGV列表");
_RefreshLogMessageAction?.Invoke("执行站台[" + AirportTask.conveyorno + "],下发" + "[" + AirportTask.taskno + "]任务");
//更新任务信息表状态为执行中
AirportTask.agvno = AgvItem.agvno;
AirportTask.taskstate = "执行中";
_Taskservice.UpdateTaskAsync(AirportTask);
break;
//调用派发任务接口,向任务状态为任务空闲的复合AGV、搬运AGV派发任务
bool iTaskflag = true;
if (iTaskflag)
{
_RefreshLogMessageAction?.Invoke("[" + AgvItem.agvno + "]AGV执行任务[" + AirportTask.taskno + "]");
AgvItem.taskno = AirportTask.taskno;
AgvItem.agvworkstate = "任务执行中";
AgvItem.refreshtime = DateTime.Now;
_AGVStateService.UpdateAsync(AgvItem);
//更新任务信息表状态为执行中
AirportTask.agvno = AgvItem.agvno;
AirportTask.taskstate = "AGV执行中";
//等待agv返回任务编号
AirportTask.agvtaskno = Guid.NewGuid().ToString("N");
_Taskservice.UpdateTaskAsync(AirportTask);
break;
}
}
//复合机器人是否已到位
if (string.IsNullOrEmpty(AirportTask.amrtaskno))
{
_logger.LogInformation($"获取空闲AGV列表");
_RefreshLogMessageAction?.Invoke("执行站台[" + AirportTask.conveyorno + "],下发" + "[" + AirportTask.taskno + "]任务");
//调用派发任务接口,向任务状态为任务空闲的复合AGV、搬运AGV派发任务
bool iTaskflag = true;
if (iTaskflag)
{
_RefreshLogMessageAction?.Invoke("[" + AgvItem.agvno + "]AGV执行任务[" + AirportTask.taskno + "]");
AgvItem.taskno = AirportTask.taskno;
AgvItem.agvworkstate = "任务执行中";
AgvItem.refreshtime = DateTime.Now;
_AGVStateService.UpdateAsync(AgvItem);
//更新任务信息表状态为执行中
AirportTask.agvno = AgvItem.agvno;
AirportTask.taskstate = "AMR执行中";
//等待agv返回任务编号
AirportTask.amrtaskno = Guid.NewGuid().ToString("N");
_Taskservice.UpdateTaskAsync(AirportTask);
break;
}
}
}
}
return iflag;
@ -315,24 +334,83 @@ namespace SlnMesnac.Business.@base
{
Task.Run(() =>
{
List<AirportTask> Task = _Taskservice.GetAGVTaskInfos();
if (Task.Count > 0)
while (true)
{
// 设置计时器
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
//通过任务编号查询agv任务
// 检查是否超过两秒
if (stopwatch.ElapsedMilliseconds > 2000)
List<AirportTask> Task = _Taskservice.GetAGVTaskInfos();
if (Task != null)
{
_logger.LogError("超时");
// 设置计时器
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
foreach (AirportTask airportTask in Task)
{
//1.根据搬运AGV任务编号查询agv是否到达
if (!string.IsNullOrEmpty(airportTask.agvtaskno))
{
Console.WriteLine("搬运AGV已到达");
//2.调用3.查询任务状态接口
//根据搬运AGV任务编号查询agv是否到达
bool iflag = true;
if (iflag)
{
//3:已完成
// if (state == 3)
// {
//
// }
//更新任务表中AGV编号
airportTask.agvno = "";
//更新agv返回任务编号
airportTask.agvtaskno = Guid.NewGuid().ToString("N");
_Taskservice.UpdateTaskAsync(airportTask);
}
}
//根据复合AGV任务编号查询复合agv是否到达
if (!string.IsNullOrEmpty(airportTask.amrtaskno))
{
Console.WriteLine("复合AGV已到达");
//根据复合AGV任务编号查询agv是否到达
bool iflag = true;
if (iflag)
{
//已到达更新任务表中AGV编号
}
}
//复合、搬运已到上料点
if (!string.IsNullOrEmpty(airportTask.agvtaskno) && !string.IsNullOrEmpty(airportTask.agvtaskno))
{
Console.WriteLine("复合AGV已到达且搬运AGV已到达");
Console.WriteLine("下发视觉抓取任务");
//1.获取任务抓取数量
//判断是否为第一车,搬运机器人码垛无需定位
if (airportTask.loadcount == 0)
{
//下发视觉抓取任务
}
if (airportTask.loadcount == 0)
{
//下发视觉抓取任务
}
}
}
// 检查是否超过两秒
if (stopwatch.ElapsedMilliseconds > 2000)
{
_logger.LogError("超时");
}
}
Thread.Sleep(100);
}
Thread.Sleep(100);
});
}
catch (Exception ex)

@ -0,0 +1,115 @@
using Microsoft.Extensions.DependencyInjection;
using SlnMesnac.Config;
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace SlnMesnac.Common
{
public sealed class ControlOffLineScanHelper
{
#region 单例实现
private static readonly ControlOffLineScanHelper lazy = new ControlOffLineScanHelper();
public static ControlOffLineScanHelper Instance
{
get
{
return lazy;
}
}
#endregion
#region 变量定义
private static SerialPort serialPort = new SerialPort();
#endregion
/// <summary>
/// 扫码委托
/// </summary>
/// <param name="materialCodeStr"></param>
/// <param name="ip"></param>
public delegate void RefreshMaterialCodeStr(string code);
public static event RefreshMaterialCodeStr RefreshMaterialCodeStrEvent;
public Action<string> RecAutoDataAction;
//初始化串口并启动接收数据
public void InstanceSerialPort(string ComPort)
{
try
{
//端口名 注:因为使用的是USB转RS232 所以去设备管理器中查看一下虚拟com口的名字
serialPort.PortName = ComPort;// portName;
//波特率 霍尼威尔扫码枪115200,普通9600
serialPort.BaudRate = 115200;
//奇偶校验
serialPort.Parity = Parity.None;
//停止位
serialPort.StopBits = StopBits.One;
//数据位
serialPort.DataBits = 0x8;
//忽略null字节
serialPort.DiscardNull = true;
//接收事件
serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived);
//开启串口
serialPort.Open();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message.ToString());
}
}
/// <summary>
/// 接收数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
//string result = "";
//result = serialPort.ReadExisting().Trim();
//RecAutoDataAction?.Invoke(result);
//Console.WriteLine(result);
string g_s_Data = "";
try
{
#region
Thread.Sleep(100);
do
{
g_s_Data = serialPort.ReadExisting().Trim();
}
while (serialPort.BytesToRead > 0);
if (g_s_Data.Length > 0)
{
//区分箱体码
RecAutoDataAction?.Invoke(g_s_Data);
//逻辑操作g_s_Data为条码数据
}
GC.Collect();
#endregion
}
catch (Exception ex)
{
}
}
}
}

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
@ -7,7 +7,13 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
<PackageReference Include="Nancy" Version="2.0.0" />
<PackageReference Include="System.Drawing.Common" Version="6.0.0" />
<PackageReference Include="System.IO.Ports" Version="6.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SlnMesnac.Config\SlnMesnac.Config.csproj" />
</ItemGroup>
</Project>

@ -4,6 +4,8 @@ using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using Nancy.Json;
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
@ -221,5 +223,13 @@ namespace SlnMesnac.Common
}
return iNegate;
}
public static string ModeToJson(object Model)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
string str = serializer.Serialize(Model);
//HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };
//return result;
return str;
}
}
}

@ -64,20 +64,14 @@ namespace SlnMesnac.Config
public string redisConfig { get; set; }
/// <summary>
/// AMR
/// COM端口号
/// </summary>
public string AMRIP { get; set; }
public string ComPort { get; set; }
/// <summary>
/// AGV地址配置
/// 工位编号
/// </summary>
public string AGVIpConfig { get; set; }
/// <summary>
/// 机械臂地址配置
/// </summary>
public string TCPVisionConfig { get; set; }
public string StationCode { get; set; }
public AppConfig Value => this;
}

@ -0,0 +1,57 @@

using Microsoft.Extensions.Configuration;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace SlnMesnac.Config
{
public class AppsettingsConfig
{
private IConfiguration _configuration;
public AppsettingsConfig()
{
// 创建ConfigurationBuilder对象
var builder = new ConfigurationBuilder();
// 设置appsettings.json文件的路径
builder.SetBasePath(System.IO.Directory.GetCurrentDirectory()) // 如果appsettings.json不在当前目录下需要修改路径
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
// 构建IConfiguration对象
_configuration = builder.Build();
}
public string ReadAppSettings(string session)
{
// 读取配置信息
//_configuration.GetSection("AppConfig:OKCount").Value.ToString();
return _configuration.GetSection(session).Value.ToString();
}
public bool WriteAppSettings(string session,string key, string value)
{
string contentPath = System.IO.Directory.GetCurrentDirectory() + @"\"; ; //项目根目录
var filePath = contentPath + "appsettings.json";
JObject jsonObject;
using (StreamReader file = new StreamReader(filePath))
using (JsonTextReader reader = new JsonTextReader(file))
{
jsonObject = (JObject)JToken.ReadFrom(reader);
jsonObject[session][key] = value;
}
using (var writer = new StreamWriter(filePath))
using (JsonTextWriter jsonwriter = new JsonTextWriter(writer))
{
jsonObject.WriteTo(jsonwriter);
}
return true;
}
}
}

@ -6,7 +6,12 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Options" Version="8.0.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
</Project>

@ -57,7 +57,7 @@ namespace SlnMesnac.Extensions
}
else
{
Log.Information("HslCommunication激活成功");
//Log.Information("HslCommunication激活成功");
}
if (appConfig.plcConfig != null)

@ -48,6 +48,12 @@ namespace SlnMesnac.Extensions
{
foreach (var item in appConfig.sqlConfig)
{
#region 加载sqlite数据库地址
//if (item.configId == "Local")
//{
// item.connStr = $"Data Source={System.Environment.CurrentDirectory}\\data\\" + item.connStr;
//}
#endregion
var config = new ConnectionConfig()
{
ConfigId = item.configId,

@ -119,5 +119,21 @@ namespace SlnMesnac.Repository
[SugarColumn(ColumnName="FinishTime")]
public DateTime? finishtime {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(ColumnName = "AGVTaskNo")]
public string agvtaskno { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(ColumnName = "AMRTaskNo")]
public string amrtaskno { get; set; }
}
}

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ATC_MaterialBind.Entity
{
public class StationQualityInfo
{
public string StationName { get; set; }
public string TableName { get; set; }
public string State { get; set; }
public string Value { get; set;}
public string inserttime { get; set; }
}
}

@ -0,0 +1,93 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace SlnMesnac.Repository
{
///<summary>
///物料库存消耗记录表
///</summary>
[SugarTable("T_RP_InventoryConsume_Record")]
public partial class T_RP_InventoryConsume_Record
{
public T_RP_InventoryConsume_Record(){
}
/// <summary>
/// Desc:主键编号
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey = true,IsIdentity = true,ColumnName="objid")]
public int objid {get;set;}
/// <summary>
/// Desc:子项物料编号
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="materialtypeid")]
public string materialtypeid {get;set;}
/// <summary>
/// Desc:批次号
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="batchno")]
public string batchno {get;set;}
[SugarColumn(ColumnName = "stationid")]
public int? stationid { get; set; }
/// <summary>
/// Desc:消耗数量
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="consumecount")]
public string consumecount {get;set;}
/// <summary>
/// Desc:产品条码
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="productbarcode")]
public string productbarcode {get;set;}
/// <summary>
/// Desc:创建人
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="create_by")]
public string createBy {get;set;}
/// <summary>
/// Desc:创建时间
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="create_time")]
public DateTime? createTime {get;set;}
/// <summary>
/// Desc:更新人
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="update_by")]
public string updateBy {get;set;}
/// <summary>
/// Desc:更新时间
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="update_time")]
public DateTime? updateTime {get;set;}
}
}

@ -0,0 +1,83 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace SlnMesnac.Repository
{
///<summary>
///
///</summary>
[SugarTable("T_RP_ProductChangeInfo")]
public partial class T_RP_ProductChangeInfo
{
public T_RP_ProductChangeInfo(){
}
/// <summary>
/// Desc:
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true,ColumnName="id")]
public int id {get;set;}
/// <summary>
/// Desc:机种型号
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ProductId")]
public int? productid {get;set;}
/// <summary>
/// Desc:生产负责人
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="PersonInCharge")]
public string personincharge {get;set;}
/// <summary>
/// Desc:结束时间
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="EndTime")]
public DateTime? endtime {get;set;}
/// <summary>
/// Desc:
/// Default:1
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Operator")]
public int? operater {get;set;}
/// <summary>
/// Desc:插入时间
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="InsertTime")]
public DateTime? inserttime {get;set;}
/// <summary>
/// Desc:开始时间
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="BeginTime")]
public DateTime? begintime {get;set;}
/// <summary>
/// Desc:产线名称
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="LineName")]
public string linename {get;set;}
}
}

@ -0,0 +1,99 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace SlnMesnac.Repository
{
///<summary>
///工位物料库存关系表
///</summary>
[SugarTable("T_RP_StationMaterialInventory")]
public partial class T_RP_StationMaterialInventory
{
public T_RP_StationMaterialInventory(){
}
/// <summary>
/// Desc:主键
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true,ColumnName="objid")]
public int objid {get;set;}
/// <summary>
/// Desc:工位编号
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="stationid")]
public int? stationid {get;set;}
/// <summary>
/// Desc:子项物料编号
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="material_type_id")]
public string materialTypeId {get;set;}
/// <summary>
/// Desc:批次号
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="batchno")]
public string batchno {get;set;}
/// <summary>
/// Desc:投入数量
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="inputcount")]
public int inputcount {get;set;}
/// <summary>
/// Desc:备注
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="remark")]
public string remark {get;set;}
/// <summary>
/// Desc:创建人
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="create_by")]
public string createBy {get;set;}
/// <summary>
/// Desc:创建时间
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="create_time")]
public DateTime? createTime {get;set;}
/// <summary>
/// Desc:更新人
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="update_by")]
public string updateBy {get;set;}
/// <summary>
/// Desc:更新时间
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="update_time")]
public DateTime? updateTime {get;set;}
}
}

@ -0,0 +1,443 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace SlnMesnac.Repository
{
///<summary>
///
///</summary>
[SugarTable("T_RP_StationPara_110_1"), TenantAttribute("mes")]
public partial class T_RP_StationPara_110_1
{
public T_RP_StationPara_110_1(){
}
/// <summary>
/// Desc:
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true,ColumnName="ID")]
public int id {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Barcode")]
public string barcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="SemiBarcode")]
public string semibarcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ScanBarcode")]
public string scanbarcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="RFIDNO")]
public string rfidno {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ShiftNo")]
public string shiftno {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="StationID")]
public string stationid {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="MachineID")]
public string machineid {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="MaskID")]
public string maskid {get;set;}
/// <summary>
/// Desc:
/// Default:DateTime.Now
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="InsertTime")]
public DateTime? inserttime {get;set;}
/// <summary>
/// Desc:
/// Default:0
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="UploadFlag")]
public string uploadflag {get;set;}
/// <summary>
/// Desc:
/// Default:1
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="FinalFlag")]
public string finalflag {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="State")]
public string state {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1")]
public string para1 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_Min")]
public string para1Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_Max")]
public string para1Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_State")]
public string para1State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_Reserve")]
public string para1Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2")]
public string para2 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_Min")]
public string para2Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_Max")]
public string para2Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_State")]
public string para2State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_Reserve")]
public string para2Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3")]
public string para3 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_Min")]
public string para3Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_Max")]
public string para3Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_State")]
public string para3State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_Reserve")]
public string para3Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4")]
public string para4 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_Min")]
public string para4Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_Max")]
public string para4Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_State")]
public string para4State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_Reserve")]
public string para4Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5")]
public string para5 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_Min")]
public string para5Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_Max")]
public string para5Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_State")]
public string para5State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_Reserve")]
public string para5Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para6")]
public string para6 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para6_Min")]
public string para6Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para6_Max")]
public string para6Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para6_State")]
public string para6State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para6_Reserve")]
public string para6Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para7")]
public string para7 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para7_Min")]
public string para7Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para7_Max")]
public string para7Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para7_State")]
public string para7State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para7_Reserve")]
public string para7Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para8")]
public string para8 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para8_Min")]
public string para8Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para8_Max")]
public string para8Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para8_State")]
public string para8State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para8_Reserve")]
public string para8Reserve {get;set;}
}
}

@ -0,0 +1,323 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace SlnMesnac.Repository
{
///<summary>
///
///</summary>
[SugarTable("T_RP_StationPara_110_2"), TenantAttribute("mes")]
public partial class T_RP_StationPara_110_2
{
public T_RP_StationPara_110_2(){
}
/// <summary>
/// Desc:
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true,ColumnName="ID")]
public int id {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Barcode")]
public string barcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="SemiBarcode")]
public string semibarcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ScanBarcode")]
public string scanbarcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="RFIDNO")]
public string rfidno {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ShiftNo")]
public string shiftno {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="StationID")]
public string stationid {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="MachineID")]
public string machineid {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="MaskID")]
public string maskid {get;set;}
/// <summary>
/// Desc:
/// Default:DateTime.Now
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="InsertTime")]
public DateTime? inserttime {get;set;}
/// <summary>
/// Desc:
/// Default:0
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="UploadFlag")]
public string uploadflag {get;set;}
/// <summary>
/// Desc:
/// Default:1
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="FinalFlag")]
public string finalflag {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="State")]
public string state {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1")]
public string para1 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_Min")]
public string para1Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_Max")]
public string para1Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_State")]
public string para1State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_Reserve")]
public string para1Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2")]
public string para2 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_Min")]
public string para2Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_Max")]
public string para2Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_State")]
public string para2State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_Reserve")]
public string para2Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3")]
public string para3 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_Min")]
public string para3Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_Max")]
public string para3Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_State")]
public string para3State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_Reserve")]
public string para3Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4")]
public string para4 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_Min")]
public string para4Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_Max")]
public string para4Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_State")]
public string para4State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_Reserve")]
public string para4Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5")]
public string para5 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_Min")]
public string para5Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_Max")]
public string para5Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_State")]
public string para5State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_Reserve")]
public string para5Reserve {get;set;}
}
}

@ -0,0 +1,323 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace SlnMesnac.Repository
{
///<summary>
///
///</summary>
[SugarTable("T_RP_StationPara_130"), TenantAttribute("mes")]
public partial class T_RP_StationPara_130
{
public T_RP_StationPara_130(){
}
/// <summary>
/// Desc:
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true,ColumnName="ID")]
public int id {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Barcode")]
public string barcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="SemiBarcode")]
public string semibarcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ScanBarcode")]
public string scanbarcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="RFIDNO")]
public string rfidno {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ShiftNo")]
public string shiftno {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="StationID")]
public string stationid {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="MachineID")]
public string machineid {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="MaskID")]
public string maskid {get;set;}
/// <summary>
/// Desc:
/// Default:DateTime.Now
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="InsertTime")]
public DateTime? inserttime {get;set;}
/// <summary>
/// Desc:
/// Default:0
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="UploadFlag")]
public string uploadflag {get;set;}
/// <summary>
/// Desc:
/// Default:1
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="FinalFlag")]
public string finalflag {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="State")]
public string state {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1")]
public string para1 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_Min")]
public string para1Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_Max")]
public string para1Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_State")]
public string para1State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_Reserve")]
public string para1Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2")]
public string para2 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_Min")]
public string para2Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_Max")]
public string para2Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_State")]
public string para2State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_Reserve")]
public string para2Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3")]
public string para3 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_Min")]
public string para3Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_Max")]
public string para3Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_State")]
public string para3State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_Reserve")]
public string para3Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4")]
public string para4 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_Min")]
public string para4Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_Max")]
public string para4Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_State")]
public string para4State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_Reserve")]
public string para4Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5")]
public string para5 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_Min")]
public string para5Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_Max")]
public string para5Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_State")]
public string para5State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_Reserve")]
public string para5Reserve {get;set;}
}
}

@ -0,0 +1,363 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace SlnMesnac.Repository
{
///<summary>
///
///</summary>
[SugarTable("T_RP_StationPara_160_1"), TenantAttribute("mes")]
public partial class T_RP_StationPara_160_1
{
public T_RP_StationPara_160_1(){
}
/// <summary>
/// Desc:
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true,ColumnName="ID")]
public int id {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Barcode")]
public string barcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="SemiBarcode")]
public string semibarcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ScanBarcode")]
public string scanbarcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="RFIDNO")]
public string rfidno {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ShiftNo")]
public string shiftno {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="StationID")]
public string stationid {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="MachineID")]
public string machineid {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="MaskID")]
public string maskid {get;set;}
/// <summary>
/// Desc:
/// Default:DateTime.Now
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="InsertTime")]
public DateTime? inserttime {get;set;}
/// <summary>
/// Desc:
/// Default:0
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="UploadFlag")]
public string uploadflag {get;set;}
/// <summary>
/// Desc:
/// Default:1
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="FinalFlag")]
public string finalflag {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="State")]
public string state {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1")]
public string para1 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_Min")]
public string para1Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_Max")]
public string para1Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_State")]
public string para1State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para1_Reserve")]
public string para1Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2")]
public string para2 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_Min")]
public string para2Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_Max")]
public string para2Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_State")]
public string para2State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para2_Reserve")]
public string para2Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3")]
public string para3 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_Min")]
public string para3Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_Max")]
public string para3Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_State")]
public string para3State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para3_Reserve")]
public string para3Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4")]
public string para4 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_Min")]
public string para4Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_Max")]
public string para4Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_State")]
public string para4State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para4_Reserve")]
public string para4Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5")]
public string para5 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_Min")]
public string para5Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_Max")]
public string para5Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_State")]
public string para5State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para5_Reserve")]
public string para5Reserve {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para6")]
public string para6 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para6_Min")]
public string para6Min {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para6_Max")]
public string para6Max {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para6_State")]
public string para6State {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Para6_Reserve")]
public string para6Reserve {get;set;}
}
}

@ -0,0 +1,227 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace SlnMesnac.Repository
{
///<summary>
///
///</summary>
[SugarTable("T_SY_TraceState"), TenantAttribute("mes")]
public partial class T_SY_TraceState
{
public T_SY_TraceState(){
}
/// <summary>
/// Desc:
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,ColumnName="Barcode")]
public string barcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ProductID")]
public string productid {get;set;}
/// <summary>
/// Desc:
/// Default:DateTime.Now
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="BeginTime")]
public DateTime? begintime {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="EndTime", IsOnlyIgnoreUpdate = true)]
public DateTime? endtime {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ShiftID", IsOnlyIgnoreUpdate = true)]
public string shiftid {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "GroupID", IsOnlyIgnoreUpdate = true)]
public string groupid {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ShiftNo", IsOnlyIgnoreUpdate = true)]
public string shiftno {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="SemiBarcode_A")]
public string semibarcodeA {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="SemiBarcode_B")]
public string semibarcodeB {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="SemiBarcode_C")]
public string semibarcodeC {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ProductBarcode")]
public string productbarcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="SemiBarcode2")]
public string semibarcode2 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "shellbarcode", IsOnlyIgnoreUpdate = true)]
public string shellbarcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "NameplateInfo", IsOnlyIgnoreUpdate = true)]
public string nameplateinfo {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="MarkRecord", IsOnlyIgnoreUpdate = true)]
public string markrecord {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "Attr1", IsOnlyIgnoreUpdate = true)]
public string attr1 {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "Attr2", IsOnlyIgnoreUpdate = true)]
public string attr2 {get;set;}
/// <summary>
/// Desc:默认0,1拆解,2返修3报废
/// Default:0
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "ISDis", InsertSql ="0", IsOnlyIgnoreUpdate = true)]
public string isdis {get;set;}
/// <summary>
/// Desc:拆解和报废和返修操作人
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="DisChecker", IsOnlyIgnoreUpdate = true)]
public string dischecker {get;set;}
/// <summary>
/// Desc:拆解或报废或返修的时间
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "DisTime", IsOnlyIgnoreUpdate = true)]
public DateTime? distime {get;set;}
/// <summary>
/// Desc:1合格2不合格
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="State")]
public string state {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="CurrentStationID")]
public string currentstationid {get;set;}
/// <summary>
/// Desc:不合格的工位
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="NGStationID")]
public string ngstationid {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "RestartStation", IsOnlyIgnoreUpdate = true)]
public string restartstation {get;set;}
/// <summary>
/// Desc:
/// Default:0
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="FinishFlag", IsOnlyIgnoreUpdate = true)]
public string finishflag {get;set;}
/// <summary>
/// Desc:记录D9工位不合格原因
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="D9Remark", IsOnlyIgnoreUpdate = true)]
public string d9remark {get;set;}
}
}

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace SlnMesnac.Model.domain
{
public class TaskInfo
{
public string TaskNo { get; set; }
public string KBarCode { get; set; }
public string RecordTime { get; set; }
public string QBarCode { get; set; }
}
public class TaskInfo1 : TaskInfo
{
public string Station1 { get; set; }
public string Station2 { get; set; }
public string Station3 { get; set; }
public string Station4 { get; set; }
public string Station5 { get; set; }
public string Station6 { get; set; }
}
public class TaskInfo2 : TaskInfo
{
public string Station1 { get; set; }
public string Station2 { get; set; }
public string Station3 { get; set; }
public string Station4 { get; set; }
}
public class TaskInfo3 : TaskInfo
{
public string Station1 { get; set; }
}
}

@ -0,0 +1,155 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace SlnMesnac.Repository
{
///<summary>
///
///</summary>
[SugarTable("data1_Table"), TenantAttribute("Local")]
public partial class data1_Table
{
public data1_Table(){
}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true,ColumnName="ID")]
public int? id {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Time")]
public string time {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Productname")]
public string productname {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="DPQRcode")]
public string dpqrcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="JPQRcode")]
public string jpqrcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ETotalJudge")]
public string etotaljudge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="EValue")]
public string evalue {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="EJudge")]
public string ejudge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ERangeValue")]
public string erangevalue {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ERangeJudge")]
public string erangejudge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="ERank")]
public string erank {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="BPRank")]
public string bprank {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="E1Value")]
public string e1value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="E2Value")]
public string e2value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="E3Value")]
public string e3value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="E4Value")]
public string e4value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Flag")]
public string flag {get;set;}
}
}

@ -0,0 +1,147 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace SlnMesnac.Repository
{
///<summary>
///
///</summary>
[SugarTable("data1_Table"), TenantAttribute("Local")]
public partial class data2_Table
{
public data2_Table(){
}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true,ColumnName="ID")]
public int? id {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Time")]
public DateTime time {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Productname")]
public string productname {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="QRcode")]
public string qrcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="TotalJudge")]
public string totaljudge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="FRangeValue")]
public string frangevalue {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="FRange")]
public string frange {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="F1Value")]
public string f1value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="F1Judge")]
public string f1judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="F2Value")]
public string f2value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="F2Judge")]
public string f2judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="F3Value")]
public string f3value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="F3Judge")]
public string f3judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="F4Value")]
public string f4value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="F4Judge")]
public string f4judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Flag")]
public string flag {get;set;}
}
}

@ -0,0 +1,147 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace SlnMesnac.Repository
{
///<summary>
///
///</summary>
[SugarTable("data1_Table"), TenantAttribute("Local")]
public partial class data3_Table
{
public data3_Table(){
}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true,ColumnName="ID")]
public int? id {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Time")]
public DateTime time {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Productname")]
public string productname {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="QRcode")]
public string qrcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="TotalJudge")]
public string totaljudge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="H1Value")]
public string h1value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="H2Value")]
public string h2value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="H3Value")]
public string h3value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="H4Value")]
public string h4value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="H1Judge")]
public string h1judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="H2Judge")]
public string h2judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="H3Judge")]
public string h3judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="H4Judge")]
public string h4judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="HRangeValue")]
public string hrangevalue {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="HRangeJudge")]
public string hrangejudge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Flag")]
public string flag {get;set;}
}
}

@ -0,0 +1,179 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace SlnMesnac.Repository
{
///<summary>
///
///</summary>
[SugarTable("data1_Table"), TenantAttribute("Local")]
public partial class data4_Table
{
public data4_Table(){
}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true,ColumnName="ID")]
public int? id {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Time")]
public DateTime time {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Productname")]
public string productname {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="QRcode")]
public string qrcode {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="TotalJudge")]
public string totaljudge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="LSH1Value")]
public string lsh1value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="LSH2Value")]
public string lsh2value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="LSH3Value")]
public string lsh3value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="LSH4Value")]
public string lsh4value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="LSH5Value")]
public string lsh5value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="LSH6Value")]
public string lsh6value {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="LSH1Judge")]
public string lsh1judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="LSH2Judge")]
public string lsh2judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="LSH3Judge")]
public string lsh3judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="LSH4Judge")]
public string lsh4judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="LSH5Judge")]
public string lsh5judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="LSH6Judge")]
public string lsh6judge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="HRangeValue")]
public string hrangevalue {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="HRangeJudge")]
public string hrangejudge {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="Flag")]
public string flag {get;set;}
}
}

@ -0,0 +1,131 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace SlnMesnac.Repository
{
///<summary>
///字典数据表
///</summary>
[SugarTable("sys_dict_data")]
public partial class sys_dict_data
{
public sys_dict_data(){
}
/// <summary>
/// Desc:字典编码
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsIdentity=true,ColumnName="dict_code")]
public int dictCode {get;set;}
/// <summary>
/// Desc:字典排序
/// Default:0
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="dict_sort")]
public int? dictSort {get;set;}
/// <summary>
/// Desc:字典标签
/// Default:N''
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="dict_label")]
public string dictLabel {get;set;}
/// <summary>
/// Desc:字典键值
/// Default:N''
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="dict_value")]
public string dictValue {get;set;}
/// <summary>
/// Desc:字典类型
/// Default:N''
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="dict_type")]
public string dictType {get;set;}
/// <summary>
/// Desc:样式属性(其他样式扩展)
/// Default:NULL
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="css_class")]
public string cssClass {get;set;}
/// <summary>
/// Desc:表格回显样式
/// Default:NULL
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="list_class")]
public string listClass {get;set;}
/// <summary>
/// Desc:是否默认Y是 N否
/// Default:N'N'
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="is_default")]
public string isDefault {get;set;}
/// <summary>
/// Desc:状态0正常 1停用
/// Default:N'0'
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="status")]
public string status {get;set;}
/// <summary>
/// Desc:创建者
/// Default:N''
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="create_by")]
public string createBy {get;set;}
/// <summary>
/// Desc:创建时间
/// Default:NULL
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="create_time")]
public DateTime? createTime {get;set;}
/// <summary>
/// Desc:更新者
/// Default:N''
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="update_by")]
public string updateBy {get;set;}
/// <summary>
/// Desc:更新时间
/// Default:NULL
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="update_time")]
public DateTime? updateTime {get;set;}
/// <summary>
/// Desc:备注
/// Default:NULL
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="remark")]
public string remark {get;set;}
}
}

@ -1,27 +0,0 @@
using Microsoft.Extensions.Logging;
using Quartz;
using System;
using System.Threading.Tasks;
namespace SlnMesnac.Quartz.Job
{
/// <summary>
/// 定时获取设备状态
/// </summary>
public class GetAgvState_Job : IJob
{
private readonly ILogger<GetAgvState_Job> _logger;
public GetAgvState_Job(ILogger<GetAgvState_Job> logger)
{
_logger = logger;
}
public Task Execute(IJobExecutionContext context)
{
_logger.LogInformation($"获取AGV状态{DateTime.Now.ToString("HH:mm:ss")}");
return Task.CompletedTask;
}
}
}

@ -1,9 +1,13 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Quartz;
using SlnMesnac.Business.@base;
using SlnMesnac.Common;
using SlnMesnac.Config;
using SlnMesnac.Repository;
using SlnMesnac.Repository.service;
@ -12,32 +16,294 @@ namespace SlnMesnac.Quartz.Job
public class GetTaskInfo_Job : IJob
{
private readonly ILogger<GetTaskInfo_Job> _logger;
private IAirportTaskService _service;
private BaseTaskInfoBusiness _taskInfoBusiness;
public GetTaskInfo_Job(ILogger<GetTaskInfo_Job> logger, IAirportTaskService service)
private Idata1_TableService _data1TableService;
private Idata2_TableService _data2TableService;
private Idata3_TableService _data3TableService;
private Idata4_TableService _data4TableService;
private IT_RP_StationPara_110_1Service _tr_stationPara_110_1Service;
private IT_RP_StationPara_110_2Service _tr_stationPara_110_2Service;
private IT_RP_StationPara_130Service _tr_stationPara_130Service;
private IT_RP_StationPara_160_1Service _tr_stationPara_160_1Service;
private readonly AppConfig _appConfig;
public GetTaskInfo_Job(AppConfig appConfig, ILogger<GetTaskInfo_Job> logger, Idata1_TableService service,Idata2_TableService idata2_TableService, IT_RP_StationPara_110_1Service tr_stationPara_110_1Service, IT_RP_StationPara_110_2Service tr_stationPara_110_2Service, Idata3_TableService data3TableService,Idata4_TableService idata4_TableService,IT_RP_StationPara_130Service rP_StationPara_130Service,IT_RP_StationPara_160_1Service tr_stationPara_160_1Service)
{
_appConfig = appConfig;
_logger = logger;
_service = service;
_data1TableService = service;
_tr_stationPara_110_1Service = tr_stationPara_110_1Service;
_data2TableService = idata2_TableService;
_tr_stationPara_110_2Service = tr_stationPara_110_2Service;
_data3TableService = data3TableService;
_tr_stationPara_130Service = rP_StationPara_130Service;
_data4TableService = idata4_TableService;
_tr_stationPara_160_1Service = tr_stationPara_160_1Service;
}
public Task Execute(IJobExecutionContext context)
{
_logger.LogInformation($"任务执行:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
var flag = _appConfig.sqlConfig.Find(x => x.configId == "Local").connStr.Split("\\").Last();
if (flag == "EData.db3")
{
LoadEDataInfo();
}
else if (flag == "FData.db3")
{
LoadFDataInfo();
}
else if (flag == "HData.db3")
{
LoadHDataInfo();
}
else if (flag == "LSHData.db3")
{
LoadLSHDataInfo();
}
return Task.CompletedTask;
}
/// <summary>
/// 获取任务列表
/// </summary>
private void GetAGVTaskInfo()
private async void LoadEDataInfo()
{
try
{
List<AirportTask> Task = _service.GetTaskInfos();
DateTime start = Convert.ToDateTime(DateTime.Now.ToString("D").ToString());
DateTime end = Convert.ToDateTime(DateTime.Now.AddDays(1).ToString("D").ToString()).AddSeconds(-1);
List<data1_Table> _data1Tables = _data1TableService.Getdata1TableListAsync().Result;
if (_data1Tables != null && _data1Tables.Count > 0)
{
foreach (var data1Table in _data1Tables)
{
T_RP_StationPara_110_1 T_RP_StationPara_110_1 = new T_RP_StationPara_110_1()
{
semibarcode = data1Table.dpqrcode,
scanbarcode = data1Table.jpqrcode,
state = data1Table.etotaljudge == "OK" ? "1" : "2",
para1 = data1Table.evalue,
para2 = data1Table.erangevalue,
para3 = data1Table.erank,
para4 = data1Table.bprank,
para5 = data1Table.e1value,
para6 = data1Table.e2value,
para7 = data1Table.e3value,
para8 = data1Table.e4value,
uploadflag = "0",
finalflag = "1",
inserttime = DateTime.Parse(data1Table.time)
};
bool insertflag = false;
var GetFlag = await _tr_stationPara_110_1Service.GetResultAsync(data1Table.jpqrcode, data1Table.dpqrcode);
if (GetFlag != null)
{
T_RP_StationPara_110_1.id = GetFlag.id;
insertflag = _tr_stationPara_110_1Service.Update(T_RP_StationPara_110_1);
}
else
{
insertflag = _tr_stationPara_110_1Service.Insert(T_RP_StationPara_110_1);
}
if (insertflag)
{
data1Table.flag = "F";
var iflag = _data1TableService.UpdateAsync(data1Table).Result;
if (iflag)
{
_logger.LogInformation(StringChange.ModeToJson(data1Table));
}
}
}
}
}
catch (Exception ex)
{
_logger.LogError($"异常:{ex.Message}");
}
}
private async void LoadFDataInfo()
{
try
{
DateTime start = Convert.ToDateTime(DateTime.Now.ToString("D").ToString());
DateTime end = Convert.ToDateTime(DateTime.Now.AddDays(1).ToString("D").ToString()).AddSeconds(-1);
List<data2_Table> _data1Tables = _data2TableService.Getdata2TableListAsync(start,end).Result;
if (_data1Tables != null && _data1Tables.Count > 0)
{
foreach (var data1Table in _data1Tables)
{
T_RP_StationPara_110_2 t_RP_StationPara_110_2 = new T_RP_StationPara_110_2()
{
scanbarcode = data1Table.qrcode,
state = data1Table.totaljudge == "OK" ? "1" : "2",
para1 = data1Table.f1value,
para1State = data1Table.f1judge == "OK" ? "1" : "2",
para2 = data1Table.f2value,
para2State = data1Table.f2judge == "OK" ? "1" : "2",
para3 = data1Table.f3value,
para3State = data1Table.f3judge == "OK" ? "1" : "2",
para4 = data1Table.f4value,
para4State = data1Table.f4judge == "OK" ? "1" : "2",
para5 = data1Table.frangevalue,
para5State = data1Table.frange == "OK" ? "1" : "2",
inserttime = data1Table.time,
uploadflag = "0",
finalflag = "1",
};
//查询是否同条码多次测量
bool insertflag = false;
var GetFlag = await _tr_stationPara_110_2Service.GetResultAsync(data1Table.qrcode);
if (GetFlag != null)
{
t_RP_StationPara_110_2.id = GetFlag.id;
insertflag = _tr_stationPara_110_2Service.Update(t_RP_StationPara_110_2);
}
else
{
insertflag = _tr_stationPara_110_2Service.Insert(t_RP_StationPara_110_2);
}
if (insertflag)
{
data1Table.flag = "F";
var iflag = _data2TableService.UpdateAsync(data1Table).Result;
if (iflag)
{
_logger.LogInformation(StringChange.ModeToJson(data1Table));
}
}
}
}
}
catch (Exception ex)
{
_logger.LogError($"异常:{ex.Message}");
}
}
private async void LoadHDataInfo()
{
try
{
DateTime start = Convert.ToDateTime(DateTime.Now.ToString("D").ToString());
DateTime end = Convert.ToDateTime(DateTime.Now.AddDays(1).ToString("D").ToString()).AddSeconds(-1);
List<data3_Table> _data1Tables = _data3TableService.GetTableListAsync(start,end).Result;
if (_data1Tables != null && _data1Tables.Count > 0)
{
foreach (var data1Table in _data1Tables)
{
T_RP_StationPara_130 T_RP_StationPara_110_1 = new T_RP_StationPara_130()
{
scanbarcode = data1Table.qrcode,
state = data1Table.totaljudge == "OK" ? "1" : "2",
para1 = data1Table.h1value,
para1State = data1Table.h1judge == "OK" ? "1" : "2",
para2 = data1Table.h2value,
para2State = data1Table.h2judge == "OK" ? "1" : "2",
para3 = data1Table.h3value,
para3State = data1Table.h3judge == "OK" ? "1" : "2",
para4 = data1Table.h4value,
para4State = data1Table.h4judge == "OK" ? "1" : "2",
para5 = data1Table.hrangevalue,
para5State = data1Table.hrangejudge == "OK" ? "1" : "2",
inserttime = data1Table.time,
uploadflag = "0",
finalflag = "1",
};
bool insertflag = false;
var GetFlag = await _tr_stationPara_130Service.GetResultAsync(data1Table.qrcode);
if (GetFlag != null)
{
T_RP_StationPara_110_1.id = GetFlag.id;
insertflag = _tr_stationPara_130Service.Update(T_RP_StationPara_110_1);
}
else
{
insertflag = _tr_stationPara_130Service.Insert(T_RP_StationPara_110_1);
}
if (insertflag)
{
data1Table.flag = "F";
var iflag = _data3TableService.UpdateAsync(data1Table).Result;
if (iflag)
{
_logger.LogInformation(StringChange.ModeToJson(data1Table));
}
}
}
}
}
catch (Exception ex)
{
_logger.LogError($"异常:{ex.Message}");
}
}
private async void LoadLSHDataInfo()
{
try
{
DateTime start = Convert.ToDateTime(DateTime.Now.ToString("D").ToString());
DateTime end = Convert.ToDateTime(DateTime.Now.AddDays(1).ToString("D").ToString()).AddSeconds(-1);
List<data4_Table> _data1Tables = _data4TableService.GetTableListAsync(start, end).Result;
if (_data1Tables != null && _data1Tables.Count > 0)
{
foreach (var data1Table in _data1Tables)
{
T_RP_StationPara_160_1 T_RP_StationPara_110_1 = new T_RP_StationPara_160_1()
{
scanbarcode = data1Table.qrcode,
state = data1Table.totaljudge == "OK" ? "1" : "2",
para1 = data1Table.lsh1value,
para1State = data1Table.lsh1judge == "OK" ? "1" : "2",
para2 = data1Table.lsh2value,
para2State = data1Table.lsh2judge == "OK" ? "1" : "2",
para3 = data1Table.lsh3value,
para3State = data1Table.lsh3judge == "OK" ? "1" : "2",
para4 = data1Table.lsh4value,
para4State = data1Table.lsh4judge == "OK" ? "1" : "2",
para5 = data1Table.lsh5value,
para5State = data1Table.lsh5judge == "OK" ? "1" : "2",
para6 = data1Table.hrangevalue,
para6State = data1Table.hrangejudge == "OK" ? "1" : "2",
inserttime = data1Table.time,
uploadflag = "0",
finalflag = "1",
};
bool insertflag = false;
var GetFlag = await _tr_stationPara_160_1Service.GetResultAsync(data1Table.qrcode);
if (GetFlag != null)
{
T_RP_StationPara_110_1.id = GetFlag.id;
insertflag = _tr_stationPara_160_1Service.Update(T_RP_StationPara_110_1);
}
else
{
insertflag = _tr_stationPara_160_1Service.Insert(T_RP_StationPara_110_1);
}
if (insertflag)
{
data1Table.flag = "F";
var iflag = _data4TableService.UpdateAsync(data1Table).Result;
if (iflag)
{
_logger.LogInformation(StringChange.ModeToJson(data1Table));
}
}
}
}
}
catch (Exception ex)
{
_logger.LogError($"异常:{ex.Message}");
}
}
}
}

@ -1,5 +1,6 @@
using Microsoft.Extensions.DependencyInjection;
using Quartz;
using SlnMesnac.Config;
using SlnMesnac.Quartz.Job;
using System;
@ -36,13 +37,15 @@ namespace SlnMesnac.Quartz
{
q.UseMicrosoftDependencyInjectionJobFactory();
//q.ScheduleJob<MyJob>(trigger =>
// trigger.WithCronSchedule("*/3 * * * * ?").WithIdentity("MyJob", "MyJobGroup") // 示例每3s执行一次
//正式
//q.ScheduleJob<GetTaskInfo_Job>(trigger =>
// //trigger.WithCronSchedule("* * 0/2 * * ? *").WithIdentity("GetTaskInfo_Job", "MyJobGroup")
//);
//q.ScheduleJob<Job2>(trigger =>
// trigger.WithCronSchedule("*/5 * * * * ?").WithIdentity("Job2", "Job2Group") // 示例每5s执行一次
//);
//测试
q.ScheduleJob<GetTaskInfo_Job>(trigger =>
trigger.WithCronSchedule("*/5 * * * * ?").WithIdentity("GetTaskInfo_Job", "MyJobGroup") // 示例每5s执行一次
);
});
services.AddQuartzHostedService(options => options.WaitForJobsToComplete = true);

@ -0,0 +1,17 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service
{
public interface Idata1_TableService: IBaseService<data1_Table>
{
Task<List<data1_Table>> Getdata1TableListAsync();
Task<bool> UpdateAsync(data1_Table record);
}
}

@ -0,0 +1,15 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service
{
public interface Idata2_TableService: IBaseService<data2_Table>
{
Task<List<data2_Table>> Getdata2TableListAsync(DateTime start,DateTime end);
Task<bool> UpdateAsync(data2_Table record);
}
}

@ -0,0 +1,16 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service
{
public interface Idata3_TableService: IBaseService<data3_Table>
{
Task<List<data3_Table>> GetTableListAsync(DateTime start, DateTime end);
Task<bool> UpdateAsync(data3_Table record);
}
}

@ -0,0 +1,16 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service
{
public interface Idata4_TableService: IBaseService<data4_Table>
{
Task<List<data4_Table>> GetTableListAsync(DateTime start, DateTime end);
Task<bool> UpdateAsync(data4_Table record);
}
}

@ -0,0 +1,16 @@
using ATC_MaterialBind.Entity;
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service
{
public interface IStationQualityInfoService : IBaseService<StationQualityInfo>
{
Task<List<StationQualityInfo>> GetProductQuality(string P_Bar_Code, string P_StationCode);
string GetNewMainBarcode();
}
}

@ -0,0 +1,14 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service
{
public interface Isys_dict_dataService: IBaseService<sys_dict_data>
{
Task<List<sys_dict_data>> GetProductType();
}
}

@ -0,0 +1,14 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service
{
public interface IT_RP_InventoryConsume_RecordService: IBaseService<T_RP_InventoryConsume_Record>
{
Task<bool> InsertAsync(T_RP_InventoryConsume_Record record);
}
}

@ -0,0 +1,13 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
namespace SlnMesnac.Repository.service
{
public interface IT_RP_ProductChangeInfoService: IBaseService<T_RP_ProductChangeInfo>
{
T_RP_ProductChangeInfo GetProductType();
}
}

@ -0,0 +1,24 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service
{
public interface IT_RP_StationMaterialInventoryService: IBaseService<T_RP_StationMaterialInventory>
{
/// <summary>
/// ²éѯ×ÓÏîÎïÁÏBOM
/// </summary>
/// <returns></returns>
List<T_RP_StationMaterialInventory> GetMaterialShip(int stationid);
T_RP_StationMaterialInventory GetBatchNoByMaterialTypeID(string material_type_id, int stationid);
Task<bool> UpdateAsync(T_RP_StationMaterialInventory record);
}
}

@ -0,0 +1,16 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service
{
public interface IT_RP_StationPara_110_1Service: IBaseService<T_RP_StationPara_110_1>
{
Task<bool> AddTaskAsync(List<T_RP_StationPara_110_1> record);
Task<T_RP_StationPara_110_1> GetResultAsync(string jpcode, string dpcode);
Task<bool> UpdateResultAsync(T_RP_StationPara_110_1 t_RP_StationPara_110_1);
}
}

@ -0,0 +1,16 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service
{
public interface IT_RP_StationPara_110_2Service: IBaseService<T_RP_StationPara_110_2>
{
Task<bool> AddTaskAsync(T_RP_StationPara_110_2 record);
Task<T_RP_StationPara_110_2> GetResultAsync(string record);
Task<bool> UpdateResultAsync(T_RP_StationPara_110_2 t_RP_StationPara_110_2);
}
}

@ -0,0 +1,17 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service
{
public interface IT_RP_StationPara_130Service: IBaseService<T_RP_StationPara_130>
{
Task<bool> AddTaskAsync(List<T_RP_StationPara_130> record);
Task<T_RP_StationPara_130> GetResultAsync(string jpcode );
Task<bool> UpdateResultAsync(T_RP_StationPara_130 T_RP_StationPara_130);
}
}

@ -0,0 +1,17 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service
{
public interface IT_RP_StationPara_160_1Service: IBaseService<T_RP_StationPara_160_1>
{
Task<bool> AddTaskAsync(List<T_RP_StationPara_160_1> record);
Task<T_RP_StationPara_160_1> GetResultAsync(string jpcode);
Task<bool> UpdateResultAsync(T_RP_StationPara_160_1 T_RP_StationPara_130);
}
}

@ -0,0 +1,19 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service
{
public interface IT_SY_TraceStateService: IBaseService<T_SY_TraceState>
{
T_SY_TraceState GetByProductCode(string ProductCode);
Task<bool> InsertAsync(T_SY_TraceState record);
Task<bool> UpdateAsync(T_SY_TraceState record);
T_SY_TraceState GetRelationShipByProductCodeAndIsdis(string ProductCode, string MaterialType, string StationCode);
}
}

@ -70,7 +70,7 @@ namespace SlnMesnac.Repository.service.Impl
List<AirportTask> taskInfos = null;
try
{
String sql = "select *from ( SELECT id, ConveyorNo,TaskNo,FlightNo,AGVNo,ManipulatorNo,MAX(StartTime) as StartTime,TaskState, TotalCount ,LoadCount FROM AirportTask group by ConveyorNo )";
String sql = "select *from ( SELECT id, ConveyorNo,TaskNo,FlightNo,AGVNo,ManipulatorNo,MAX(StartTime) as StartTime,TaskState, TotalCount ,LoadCount,AGVTaskNo,AMRTaskNo FROM AirportTask group by ConveyorNo )";
taskInfos = base._rep.AsTenant().GetConnection("AGV").Ado.SqlQuery<AirportTask>(sql);
}
catch (Exception ex)
@ -104,6 +104,12 @@ namespace SlnMesnac.Repository.service.Impl
bool iFlag = await _rep.DeleteAsync(record);
return iFlag;
}
public async Task<bool> GetState()
{
return true;
}
}
}

@ -0,0 +1,59 @@
using Microsoft.Extensions.Logging;
using SlnMesnac.Model.domain;
using SlnMesnac.Model.Enum;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using SlnMesnac.Common;
using static Dm.net.buffer.ByteArrayBuffer;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service.Impl
{
public class data1_TableServiceImpl : BaseServiceImpl<data1_Table>, Idata1_TableService
{
private Repository<data1_Table> _repository;
private ILogger<data1_TableServiceImpl> _logger;
public data1_TableServiceImpl(Repository<data1_Table> repository, ILogger<data1_TableServiceImpl> logger) :base(repository)
{
_repository = repository;
_logger = logger;
}
public async Task<List<data1_Table>> Getdata1TableListAsync()
{
List<data1_Table> list = null;
try
{
Expression<Func<data1_Table, bool>> exp = x => true;
exp = exp.And(x =>
(x.flag != "F")
);
list = _repository.GetList(exp);
}
catch (Exception ex)
{
_logger.LogError($"量仪数据获取错误:{ex.Message}");
}
return list;
}
public async Task<bool> UpdateAsync(data1_Table record)
{
try
{
bool result = await _rep.UpdateAsync(record);
return result;
}
catch (Exception ex)
{
_logger.LogError($"量仪数据获取错误:{ex.Message}");
return false;
}
}
}
}

@ -0,0 +1,53 @@
using Microsoft.Extensions.Logging;
using SlnMesnac.Common;
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service.Impl
{
public class data2_TableServiceImpl : BaseServiceImpl<data2_Table>, Idata2_TableService
{
private Repository<data2_Table> _repository2;
private ILogger<data2_TableServiceImpl> _logger;
public data2_TableServiceImpl(Repository<data2_Table> repository, ILogger<data2_TableServiceImpl> logger) :base(repository)
{
_logger = logger;
_repository2 = repository;
}
public async Task<bool> UpdateAsync(data2_Table record)
{
try
{
bool result = await _rep.UpdateAsync(record);
return result;
}
catch (Exception ex)
{
_logger.LogError($"量仪数据获取错误:{ex.Message}");
return false;
}
}
public async Task<List<data2_Table>> Getdata2TableListAsync(DateTime start, DateTime end)
{
List<data2_Table> list = null;
try
{
Expression<Func<data2_Table, bool>> exp = x => true;
exp = exp.And(x =>
(x.flag != "F" && x.time >= start && x.time < end)
);
list = _repository2.GetList(exp);
}
catch (Exception ex)
{
_logger.LogError($"量仪数据获取错误:{ex.Message}");
}
return list;
}
}
}

@ -0,0 +1,53 @@
using Microsoft.Extensions.Logging;
using SlnMesnac.Common;
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service.Impl
{
public class data3_TableServiceImpl : BaseServiceImpl<data3_Table>, Idata3_TableService
{
private Repository<data3_Table> _repository;
private ILogger<data3_TableServiceImpl> _logger;
public data3_TableServiceImpl(Repository<data3_Table> repository, ILogger<data3_TableServiceImpl> logger) :base(repository)
{
_repository = repository;
_logger = logger;
}
public async Task<List<data3_Table>> GetTableListAsync(DateTime start,DateTime end)
{
List<data3_Table> list = null;
try
{
Expression<Func<data3_Table, bool>> exp = x => true;
exp = exp.And(x =>
(x.flag != "F" && x.time >= start && x.time < end)
);
list = _repository.GetList(exp);
}
catch (Exception ex)
{
_logger.LogError($"量仪数据获取错误:{ex.Message}");
}
return list;
}
public async Task<bool> UpdateAsync(data3_Table record)
{
try
{
bool result = await _rep.UpdateAsync(record);
return result;
}
catch (Exception ex)
{
_logger.LogError($"量仪数据获取错误:{ex.Message}");
return false;
}
}
}
}

@ -0,0 +1,54 @@
using Microsoft.Extensions.Logging;
using SlnMesnac.Common;
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service.Impl
{
public class data4_TableServiceImpl : BaseServiceImpl<data4_Table>, Idata4_TableService
{
private Repository<data4_Table> _repository;
private ILogger<data4_TableServiceImpl> _logger;
public data4_TableServiceImpl(Repository<data4_Table> repository, ILogger<data4_TableServiceImpl> logger) :base(repository)
{
_repository = repository;
_logger = logger;
}
public async Task<List<data4_Table>> GetTableListAsync(DateTime start ,DateTime end)
{
List<data4_Table> list = null;
try
{
Expression<Func<data4_Table, bool>> exp = x => true;
exp = exp.And(x =>
(x.flag != "F" && x.time >= start && x.time < end)
);
list = _repository.GetList(exp);
}
catch (Exception ex)
{
_logger.LogError($"量仪数据获取错误:{ex.Message}");
}
return list;
}
public async Task<bool> UpdateAsync(data4_Table record)
{
try
{
bool result = await _rep.UpdateAsync(record);
return result;
}
catch (Exception ex)
{
_logger.LogError($"量仪数据获取错误:{ex.Message}");
return false;
}
}
}
}

@ -0,0 +1,50 @@
using ATC_MaterialBind.Entity;
using Microsoft.Extensions.Logging;
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service.Impl
{
public class StationQualityInfoServiceImpl : BaseServiceImpl<StationQualityInfo>, IStationQualityInfoService
{
private Repository<StationQualityInfo> _repository;
public StationQualityInfoServiceImpl(Repository<StationQualityInfo> repository ):base(repository)
{
_repository = repository;
}
public async Task<List<StationQualityInfo>> GetProductQuality(string P_Bar_Code, string P_StationCode)
{
List<StationQualityInfo> stationQualityList = null;
try
{
var parameter1 = new SugarParameter("@BarCode", P_Bar_Code);
var parameter2 = new SugarParameter("@StationCode", P_StationCode);//ÉèÖÃΪoutput
stationQualityList = _repository.Context.Ado.UseStoredProcedure().SqlQuery<StationQualityInfo>("pro_AllProductionQualityInfo", parameter1, parameter2);
return stationQualityList;
}
catch (Exception ex)
{
return stationQualityList;
}
}
public string GetNewMainBarcode()
{
try
{
var parameter1 = new SugarParameter("@Head", "M");
var dt = _rep.Context.Ado.UseStoredProcedure().GetString("SP_Pro_GetNewMainBarcode", parameter1);
return dt;
}
catch (Exception ex)
{
throw;
}
}
}
}

@ -0,0 +1,30 @@
using ATC_MaterialBind.Entity;
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service.Impl
{
public class sys_dict_dataServiceImpl : BaseServiceImpl<sys_dict_data>, Isys_dict_dataService
{
public sys_dict_dataServiceImpl(Repository<sys_dict_data> repository):base(repository)
{
}
public async Task<List<sys_dict_data>> GetProductType()
{
List<sys_dict_data> ProductTypeList = null;
try
{
ProductTypeList = _rep.GetList(x=>x.dictType == "productType");
return ProductTypeList;
}
catch (Exception ex)
{
return ProductTypeList;
}
}
}
}

@ -0,0 +1,21 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service.Impl
{
public class T_RP_InventoryConsume_RecordServiceImpl : BaseServiceImpl<T_RP_InventoryConsume_Record>, IT_RP_InventoryConsume_RecordService
{
public T_RP_InventoryConsume_RecordServiceImpl(Repository<T_RP_InventoryConsume_Record> repository):base(repository)
{
}
public async Task<bool> InsertAsync(T_RP_InventoryConsume_Record record)
{
bool result = await _rep.InsertAsync(record);
return result;
}
}
}

@ -0,0 +1,29 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
namespace SlnMesnac.Repository.service.Impl
{
public class T_RP_ProductChangeInfoServiceImpl : BaseServiceImpl<T_RP_ProductChangeInfo>, IT_RP_ProductChangeInfoService
{
public T_RP_ProductChangeInfoServiceImpl(Repository<T_RP_ProductChangeInfo> repository):base(repository)
{
}
public T_RP_ProductChangeInfo GetProductType()
{
try
{
T_RP_ProductChangeInfo t_RP_Product = null;
t_RP_Product = _rep.GetFirst(x => x.id == 1);
return t_RP_Product;
}
catch (Exception ex)
{
return null;
}
}
}
}

@ -0,0 +1,54 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service.Impl
{
public class T_RP_StationMaterialInventoryServiceImpl : BaseServiceImpl<T_RP_StationMaterialInventory>, IT_RP_StationMaterialInventoryService
{
public T_RP_StationMaterialInventoryServiceImpl(Repository<T_RP_StationMaterialInventory> repository):base(repository)
{
}
public T_RP_StationMaterialInventory GetBatchNoByMaterialTypeID(string material_type_id, int stationid)
{
T_RP_StationMaterialInventory t_RP_StationMaterialInventory = null;
string sql = "";
try
{
sql = "select objid,stationid,material_type_id, batchno ,inputcount,create_time from T_RP_StationMaterialInventory where material_type_id = '" + material_type_id + "' and inputcount > 0 and stationid = " + stationid+" order by create_time asc";
t_RP_StationMaterialInventory = base._rep.AsTenant().GetConnection("mes").Ado.SqlQuerySingle<T_RP_StationMaterialInventory>(sql);
return t_RP_StationMaterialInventory;
}
catch (Exception)
{
return t_RP_StationMaterialInventory;
}
}
public List<T_RP_StationMaterialInventory> GetMaterialShip(int stationid)
{
List<T_RP_StationMaterialInventory> MaterialShipInfos = null;
try
{
String sql = "select t2.material_type_id,t3.working_procedure_id as remark from (select material_type_id from( select material_type_id from T_RP_StationMaterialInventory where stationid = " + stationid +") t1 group by material_type_id) t2 left join base_materialtype_info t3 on t2.material_type_id = t3.material_type_id ";
MaterialShipInfos = base._rep.AsTenant().GetConnection("mes").Ado.SqlQuery<T_RP_StationMaterialInventory>(sql);
}
catch (Exception ex)
{
//_logger.LogError($"»ñÈ¡AGVÈÎÎñÐÅÏ¢Òì³£:{ex.Message}");
}
return MaterialShipInfos;
}
public async Task<bool> UpdateAsync(T_RP_StationMaterialInventory record)
{
bool result = await _rep.UpdateAsync(record);
return result;
}
}
}

@ -0,0 +1,66 @@
using Microsoft.Extensions.Logging;
using SlnMesnac.Common;
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service.Impl
{
public class T_RP_StationPara_110_1ServiceImpl : BaseServiceImpl<T_RP_StationPara_110_1>, IT_RP_StationPara_110_1Service
{
private Repository<T_RP_StationPara_110_1> _repository;
private ILogger<T_RP_StationPara_110_1ServiceImpl> _logger;
public T_RP_StationPara_110_1ServiceImpl(Repository<T_RP_StationPara_110_1> repository, ILogger<T_RP_StationPara_110_1ServiceImpl> logger) :base(repository)
{
_repository = repository;
_logger = logger;
}
public async Task<bool> AddTaskAsync(List<T_RP_StationPara_110_1> record)
{
try
{
bool result = await _repository.InsertRangeAsync(record);
return result;
}
catch (Exception ex)
{
return false;
}
}
public async Task<T_RP_StationPara_110_1> GetResultAsync(string jpcode,string dpcode)
{
try
{
Expression<Func<T_RP_StationPara_110_1, bool>> exp = x => true;
exp = exp.And(x =>
(x.scanbarcode == jpcode && x.semibarcode == dpcode)
);
var result = await _repository.GetFirstAsync(exp);
return result;
}
catch (Exception ex)
{
return null;
}
}
public async Task<bool> UpdateResultAsync(T_RP_StationPara_110_1 t_RP_StationPara_110_1)
{
try
{
bool result = await _repository.UpdateAsync(t_RP_StationPara_110_1);
return result;
}
catch (Exception ex)
{
return false;
}
}
}
}

@ -0,0 +1,66 @@
using Microsoft.Extensions.Logging;
using SlnMesnac.Common;
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service.Impl
{
public class T_RP_StationPara_110_2ServiceImpl : BaseServiceImpl<T_RP_StationPara_110_2>, IT_RP_StationPara_110_2Service
{
private Repository<T_RP_StationPara_110_2> _repository;
private ILogger<T_RP_StationPara_110_2ServiceImpl> _logger;
public T_RP_StationPara_110_2ServiceImpl(Repository<T_RP_StationPara_110_2> repository, ILogger<T_RP_StationPara_110_2ServiceImpl> logger) :base(repository)
{
_logger = logger;
_repository = repository;
}
public async Task<bool> AddTaskAsync(T_RP_StationPara_110_2 record)
{
try
{
bool result = await _repository.InsertAsync(record);
return result;
}
catch (Exception ex)
{
return false;
}
}
public async Task<T_RP_StationPara_110_2> GetResultAsync(string record)
{
try
{
Expression<Func<T_RP_StationPara_110_2, bool>> exp = x => true;
exp = exp.And(x =>
(x.scanbarcode == record)
);
var result = await _repository.GetFirstAsync(exp);
return result;
}
catch (Exception ex)
{
return null;
}
}
public async Task<bool> UpdateResultAsync(T_RP_StationPara_110_2 t_RP_StationPara_110_2)
{
try
{
bool result = await _repository.UpdateAsync(t_RP_StationPara_110_2);
return result;
}
catch (Exception ex)
{
return false;
}
}
}
}

@ -0,0 +1,67 @@
using Microsoft.Extensions.Logging;
using SlnMesnac.Common;
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service.Impl
{
public class T_RP_StationPara_130ServiceImpl : BaseServiceImpl<T_RP_StationPara_130>, IT_RP_StationPara_130Service
{
private Repository<T_RP_StationPara_130> _repository;
private ILogger<T_RP_StationPara_130ServiceImpl> _logger;
public T_RP_StationPara_130ServiceImpl(Repository<T_RP_StationPara_130> repository, ILogger<T_RP_StationPara_130ServiceImpl> logger) :base(repository)
{
_repository = repository;
_logger = logger;
}
public async Task<bool> AddTaskAsync(List<T_RP_StationPara_130> record)
{
try
{
bool result = await _repository.InsertRangeAsync(record);
return result;
}
catch (Exception ex)
{
return false;
}
}
public async Task<T_RP_StationPara_130> GetResultAsync(string jpcode)
{
try
{
Expression<Func<T_RP_StationPara_130, bool>> exp = x => true;
exp = exp.And(x =>
(x.scanbarcode == jpcode)
);
var result = await _repository.GetFirstAsync(exp);
return result;
}
catch (Exception ex)
{
return null;
}
}
public async Task<bool> UpdateResultAsync(T_RP_StationPara_130 t_RP_StationPara_110_1)
{
try
{
bool result = await _repository.UpdateAsync(t_RP_StationPara_110_1);
return result;
}
catch (Exception ex)
{
return false;
}
}
}
}

@ -0,0 +1,65 @@
using Microsoft.Extensions.Logging;
using SlnMesnac.Common;
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service.Impl
{
public class T_RP_StationPara_160_1ServiceImpl : BaseServiceImpl<T_RP_StationPara_160_1>, IT_RP_StationPara_160_1Service
{
private Repository<T_RP_StationPara_160_1> _repository;
private ILogger<T_RP_StationPara_160_1ServiceImpl> _logger;
public T_RP_StationPara_160_1ServiceImpl(Repository<T_RP_StationPara_160_1> repository, ILogger<T_RP_StationPara_160_1ServiceImpl> logger) :base(repository)
{
_repository = repository;
_logger = logger;
}
public async Task<bool> AddTaskAsync(List<T_RP_StationPara_160_1> record)
{
try
{
bool result = await _repository.InsertRangeAsync(record);
return result;
}
catch (Exception ex)
{
return false;
}
}
public async Task<T_RP_StationPara_160_1> GetResultAsync(string jpcode)
{
try
{
Expression<Func<T_RP_StationPara_160_1, bool>> exp = x => true;
exp = exp.And(x =>
(x.scanbarcode == jpcode)
);
var result = await _repository.GetFirstAsync(exp);
return result;
}
catch (Exception ex)
{
return null;
}
}
public async Task<bool> UpdateResultAsync(T_RP_StationPara_160_1 t_RP_StationPara_110_1)
{
try
{
bool result = await _repository.UpdateAsync(t_RP_StationPara_110_1);
return result;
}
catch (Exception ex)
{
return false;
}
}
}
}

@ -0,0 +1,92 @@
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace SlnMesnac.Repository.service.Impl
{
public class T_SY_TraceStateServiceImpl : BaseServiceImpl<T_SY_TraceState>, IT_SY_TraceStateService
{
public T_SY_TraceStateServiceImpl(Repository<T_SY_TraceState> repository):base(repository)
{
}
/// <summary>
/// 根据条码查询实体
/// </summary>
/// <param name="ProductCode"></param>
/// <returns></returns>
public T_SY_TraceState GetByProductCode(string ProductCode)
{
T_SY_TraceState traceState = null;
traceState = _rep.GetFirst(x => x.productbarcode == ProductCode);
return traceState;
}
public T_SY_TraceState GetRelationShipByProductCodeAndIsdis(string ProductCode,string MaterialType,string StationCode)
{
T_SY_TraceState traceState = null;
//控制器
if (MaterialType == "0")
{
traceState = _rep.GetFirst(x => x.semibarcode2 == ProductCode && x.isdis == "0");
}
//壳体
else if (MaterialType == "1")
{
if (StationCode == "80_3")
{
traceState = _rep.GetFirst(x => x.productbarcode == ProductCode && x.semibarcodeA != null && x.isdis == "0");
}
else if (StationCode == "120_2")
{
traceState = _rep.GetFirst(x => x.productbarcode == ProductCode && x.semibarcodeB != null && x.isdis == "0");
}
else if (StationCode == "150")
{
traceState = _rep.GetFirst(x => x.productbarcode == ProductCode && x.semibarcodeC != null && x.isdis == "0");
}
else
{
traceState = _rep.GetFirst(x => x.productbarcode == ProductCode && x.semibarcode2 != null && x.isdis == "0");
}
}
//前盖
else if (MaterialType == "2")
{
traceState = _rep.GetFirst(x => x.semibarcodeA == ProductCode && x.isdis == "0");
}
//静盘
else if (MaterialType == "3")
{
traceState = _rep.GetFirst(x => x.semibarcodeB == ProductCode && x.isdis == "0");
}
//后盖
else if (MaterialType == "4")
{
traceState = _rep.GetFirst(x => x.semibarcodeC == ProductCode && x.isdis == "0");
}
return traceState;
}
/// <summary>
/// 修改
/// </summary>
/// <param name="record"></param>
/// <returns></returns>
public async Task<bool> UpdateAsync(T_SY_TraceState record)
{
bool result = await _rep.UpdateAsync(record);
return result;
}
/// <summary>
/// 新增
/// </summary>
/// <param name="record"></param>
/// <returns></returns>
public async Task<bool> InsertAsync(T_SY_TraceState record)
{
bool result = await _rep.InsertAsync(record);
return result;
}
}
}

@ -42,13 +42,13 @@ namespace SlnMesnac.Serilog
#region 通过配置文件读取日志存放位置
var appConfig = app.ApplicationServices.GetService<AppConfig>();
var logPath = $"{appConfig.logPath}/Logs/{DateTime.UtcNow:yyyy-MM-dd}/";
var logPath = $"{appConfig.logPath}/Logs/";
#endregion
Log.Logger = new LoggerConfiguration().MinimumLevel.Information().WriteTo.Console()
.WriteTo.File(Path.Combine(logPath, "Info.log"), LogEventLevel.Information)
.WriteTo.File(Path.Combine(logPath, "Error.log"), LogEventLevel.Error)
.WriteTo.File(Path.Combine(logPath, "data.log"), LogEventLevel.Warning)
.WriteTo.File(Path.Combine(logPath, "Info.log"), LogEventLevel.Information,rollingInterval:RollingInterval.Day)
.WriteTo.File(Path.Combine(logPath, "Error.log"), LogEventLevel.Error, rollingInterval: RollingInterval.Day)
.WriteTo.File(Path.Combine(logPath, "data.log"), LogEventLevel.Warning, rollingInterval: RollingInterval.Day)
//.WriteTo.File(Path.Combine(logPath, "data.log"), LogEventLevel.Debug)
//.WriteTo.File(Path.Combine(logPath, "Debug.log"), LogEventLevel.Debug, fileSizeLimitBytes: 5 * 1024)

@ -15,11 +15,13 @@ using TouchSocket.Rpc;
using TouchSocket.Sockets;
using TouchSocket.WebApi;
using JsonSerializer = System.Text.Json.JsonSerializer;
using Serilog;
using Serilog.Events;
using Microsoft.Extensions.Logging;
namespace SlnMesnac.TouchSocket
{
public class AirPorthttpClient : BackgroundService
public class AirPorthttpClient
{
private readonly AppConfig _appConfig;
private readonly ILogger<AirPorthttpClient> _logger;
@ -37,163 +39,129 @@ namespace SlnMesnac.TouchSocket
var client = new WebApiClient();
try
{
_logger.LogInformation("正在连接:" + IpHost);
client.Connect(IpHost);
_logger.LogInformation(IpHost + "连接成功");
return client;
}
catch (Exception ex)
{
_logger.LogError("ERROR: " + ex.Message);
return null;
}
return client;
}
protected override Task ExecuteAsync(CancellationToken stoppingToken)
/// <summary>
/// 获取到的JToken类型转换为实体类
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
public T JTokenToEntity<T>(JToken value) where T : class
{
try
if (value == null)
{
AirportAGVClient = CreateWebApiClient(_appConfig.AGVIpConfig);
return null;
}
catch (Exception ex)
string json = value.ToString();
if (string.IsNullOrEmpty(json))
{
_logger.LogError("ERROR: " + ex.Message);
return Task.FromException(ex);
return null;
}
return Task.CompletedTask;
T ResponseEntity;
ResponseEntity = JsonSerializer.Deserialize<T>(json);
return ResponseEntity;
}
/// <summary>
/// AGV下发任务请求
/// </summary>
/// <param name="aGVStateRequest"></param>
/// <param name="requestValue"></param>
/// <returns></returns>
public static AGVResponseEntity<ResponseAddTaskDataEntity> AGVAddTaskRequest(AGVRequestAddTaskEntity requestValue)
public AGVResponseEntity<ResponseAddTaskDataEntity> AGVAddTaskRequest(AGVRequestAddTaskEntity requestValue)
{
if (AirportAGVClient == null)
{
return null;
}
JToken responseValue = AirportAGVClient.InvokeT<JToken>("POST:/api/task/addTask", null, requestValue);
if (responseValue == null)
{
return new AGVResponseEntity<ResponseAddTaskDataEntity>();
}
string json = responseValue.ToString();
if (string.IsNullOrEmpty(json))
{
return new AGVResponseEntity<ResponseAddTaskDataEntity>();
}
AGVResponseEntity<ResponseAddTaskDataEntity> responseEntity;
responseEntity = JsonSerializer.Deserialize<AGVResponseEntity<ResponseAddTaskDataEntity>>(json);
return responseEntity;
return JTokenToEntity<AGVResponseEntity<ResponseAddTaskDataEntity>>(responseValue);
}
/// <summary>
/// 取消/终止任务请求
/// </summary>
/// <param name="requestValue"></param>
/// <returns></returns>
public static AGVResponseEntity<object> AGVOperationalTaskRequest(AGVRequestOperationalTaskEntity requestValue)
public AGVResponseEntity<object> AGVOperationalTaskRequest(AGVRequestOperationalTaskEntity requestValue)
{
if (AirportAGVClient == null)
{
return null;
}
JToken responseValue = AirportAGVClient.InvokeT<JToken>("POST:/api/task/operationalTask", null, requestValue);
if (responseValue == null)
{
return new AGVResponseEntity<object>();
}
string json = responseValue.ToString();
if (string.IsNullOrEmpty(json))
{
return new AGVResponseEntity<object>();
}
AGVResponseEntity<object> responseEntity;
responseEntity = JsonSerializer.Deserialize<AGVResponseEntity<object>>(json);
return responseEntity;
return JTokenToEntity<AGVResponseEntity<object>>(responseValue);
}
/// <summary>
/// 查询任务状态请求
/// </summary>
/// <param name="aGVStateRequest"></param>
/// <param name="requestValue"></param>
/// <returns></returns>
public static AGVResponseEntity<ResponseTaskStateDetailDataEntity> AGVGetTaskStateDetailRequest(AGVRequestTaskStateDetailEntity requestValue)
public AGVResponseEntity<ResponseTaskStateDetailDataEntity> AGVGetTaskStateDetailRequest(AGVRequestTaskStateDetailEntity requestValue)
{
if (AirportAGVClient == null)
{
return null;
}
JToken responseValue = AirportAGVClient.InvokeT<JToken>("PUT:/api/task/getTaskStateDetail", null, requestValue);
if (responseValue == null)
{
return new AGVResponseEntity<ResponseTaskStateDetailDataEntity>();
}
string json = responseValue.ToString();
if (string.IsNullOrEmpty(json))
{
return new AGVResponseEntity<ResponseTaskStateDetailDataEntity>();
}
AGVResponseEntity<ResponseTaskStateDetailDataEntity> ResponseEntity;
ResponseEntity = JsonSerializer.Deserialize<AGVResponseEntity<ResponseTaskStateDetailDataEntity>>(json);
return ResponseEntity;
return JTokenToEntity<AGVResponseEntity<ResponseTaskStateDetailDataEntity>>(responseValue);
}
/// <summary>
/// 获取所有AGV信息请求
/// </summary>
/// <param name="aGVStateRequest"></param>
/// <returns></returns>
public static AGVResponseEntity<List<ResponseRobotAtrributeDataEntity>> AGVAllStateRequest()
public AGVResponseEntity<List<ResponseRobotAtrributeDataEntity>> AGVAllStateRequest()
{
if (AirportAGVClient == null)
{
return null;
}
JToken responseValue = AirportAGVClient.InvokeT<JToken>("GET:/api/task/robot/getRobot", null);
if (responseValue == null)
{
return new AGVResponseEntity<List<ResponseRobotAtrributeDataEntity>>();
}
string json = responseValue.ToString();
if (string.IsNullOrEmpty(json))
{
return new AGVResponseEntity<List<ResponseRobotAtrributeDataEntity>>();
}
AGVResponseEntity<List<ResponseRobotAtrributeDataEntity>> ResponseEntity;
ResponseEntity = JsonSerializer.Deserialize<AGVResponseEntity<List<ResponseRobotAtrributeDataEntity>>>(json);
return ResponseEntity;
return JTokenToEntity<AGVResponseEntity<List<ResponseRobotAtrributeDataEntity>>>(responseValue);
}
/// <summary>
/// 获取当前激活地图信息请求
/// </summary>
/// <param name="aGVStateRequest"></param>
/// <returns></returns>
public static AGVResponseEntity<ResponseActiveMapDataEntity> AGVMapActiveRequest()
public AGVResponseEntity<ResponseActiveMapDataEntity> AGVMapActiveRequest()
{
if (AirportAGVClient == null)
{
return null;
}
JToken responseValue = AirportAGVClient.InvokeT<JToken>("GET:/api/v1.0.0/Maps/mapActive", null);
if (responseValue == null)
{
return new AGVResponseEntity<ResponseActiveMapDataEntity>();
}
string json = responseValue.ToString();
if (string.IsNullOrEmpty(json))
{
return new AGVResponseEntity<ResponseActiveMapDataEntity>();
}
AGVResponseEntity<ResponseActiveMapDataEntity> ResponseEntity;
ResponseEntity = JsonSerializer.Deserialize<AGVResponseEntity<ResponseActiveMapDataEntity>>(json);
return ResponseEntity;
return JTokenToEntity<AGVResponseEntity<ResponseActiveMapDataEntity>>(responseValue);
}
/// <summary>
/// 获取当前地图所有位置点请求
/// </summary>
/// <param name="aGVStateRequest"></param>
/// <param name="requestValue"></param>
/// <returns></returns>
public static AGVResponseEntity<List<ResponseMapPositionDataEntity>> AGVMapPositionRequest(string requestValue)
public AGVResponseEntity<List<ResponseMapPositionDataEntity>> AGVMapPositionRequest(string requestValue)
{
if (AirportAGVClient == null)
{
return null;
}
JToken responseValue = AirportAGVClient.InvokeT<JToken>("GET:/api/v1.0.0/Positions?mapId={0}", null, requestValue);
if (responseValue == null)
{
return new AGVResponseEntity<List<ResponseMapPositionDataEntity>>();
}
string json = responseValue.ToString();
if (string.IsNullOrEmpty(json))
{
return new AGVResponseEntity<List<ResponseMapPositionDataEntity>>();
}
AGVResponseEntity<List<ResponseMapPositionDataEntity>> ResponseEntity;
ResponseEntity = JsonSerializer.Deserialize<AGVResponseEntity<List<ResponseMapPositionDataEntity>>>(json);
return ResponseEntity;
return JTokenToEntity<AGVResponseEntity<List<ResponseMapPositionDataEntity>>>(responseValue);
}
}
}

@ -93,8 +93,6 @@ namespace SlnMesnac.TouchSocket
ReceiveStackWorkDoneEvent += StackResultSend;
ReceiveManualExceptionDealDoneEvent += ManualExceptionDealDone;
}
public void Init(int serverPort)

@ -5,6 +5,7 @@ using System.Text;
using Microsoft.AspNetCore.Builder;
using TouchSocket.Sockets;
using TouchSocket.WebApi;
using SlnMesnac.Config;
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
@ -39,10 +40,10 @@ namespace SlnMesnac.TouchSocket
public static IApplicationBuilder UseTouchSocketExtensions(this IApplicationBuilder app)
{
var _server = app.ApplicationServices.GetService<TcpServer>();
_server.Init(6001);
var _httpclient = app.ApplicationServices.GetService<AirPorthttpClient>();
// var _apiServer = app.ApplicationServices.GetService<WebApiServer>();
// _apiServer.Init();
//_server.Init(6001);
//_httpclient.init();
return app;
}
}

@ -25,26 +25,35 @@ namespace SlnMesnac.WPF
// Startup事件
protected override async void OnStartup(StartupEventArgs e)
{
bool ret;
mutex = new System.Threading.Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out ret);
if (!ret)
try
{
MessageBox.Show("应用程序已开启,禁止重复运行");
Environment.Exit(0);
bool ret;
mutex = new System.Threading.Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out ret);
if (!ret)
{
MessageBox.Show("应用程序已开启,禁止重复运行");
Environment.Exit(0);
}
cracker.Cracker(100); //设置GC回收间隔
base.OnStartup(e);
var host = CreateHostBuilder(e.Args).Build();//生成宿主。
ServiceProvider = host.Services;
await host.StartAsync();
var appConfig = host.Services.GetService<AppConfig>();
var logPath = $"{appConfig.logPath}/Logs/{DateTime.UtcNow:yyyy-MM-dd}/";
Log.Information($"系统初始化完成,日志存放路径:{appConfig.logPath}");
}
cracker.Cracker(100); //设置GC回收间隔
base.OnStartup(e);
var host = CreateHostBuilder(e.Args).Build();//生成宿主。
ServiceProvider = host.Services;
await host.StartAsync();
var appConfig = host.Services.GetService<AppConfig>();
var logPath = $"{appConfig.logPath}/Logs/{DateTime.UtcNow:yyyy-MM-dd}/";
Log.Information($"系统初始化完成,日志存放路径:{appConfig.logPath}");
catch (Exception exception)
{
Console.WriteLine(exception);
throw;
}
}

@ -1,5 +1,7 @@
using System.Reflection;
using System.Windows;
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
@ -8,3 +10,9 @@ using System.Windows;
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
//V1.0.1.0
/*
* 1.
* 2.
*/

@ -0,0 +1,41 @@

using SlnMesnac.WPF.ViewModel.IndexPage;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Media.Imaging;
namespace SlnMesnac.WPF.Converter.Generate
{
public class ConfigToDynamicGridViewConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var config = value as ColumnConfig;
if (config != null)
{
var grdiView = new GridView();
foreach (var column in config.Columns)
{
var binding = new Binding(column.DataField);
grdiView.Columns.Add(new GridViewColumn { Header = column.Header, DisplayMemberBinding = binding });
}
return grdiView;
}
return Binding.DoNothing;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
}

@ -5,8 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SlnMesnac.WPF"
mc:Ignorable="d"
Title="MainWindow" Height="1080" Width="1920"
WindowState="Maximized" WindowStyle="None" ResizeMode="NoResize" Topmost="False">
Title="MainWindow" WindowStartupLocation="CenterScreen" WindowState="Maximized" Height="1080" Width="1920" Topmost="False" Loaded="Window_Loaded" Closing="Window_Closing">
<Window.Background>
<ImageBrush ImageSource="/Templates/image/background.jpg" />
</Window.Background>
@ -31,7 +30,7 @@
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock Text="行李空框调度系统" FontSize="50" Foreground="White" FontWeight="Bold"/>
<TextBlock Text="数据采集控制系统" FontSize="50" Foreground="White" FontWeight="Bold"/>
</StackPanel>
<StackPanel Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Right">
@ -63,10 +62,12 @@
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left" Orientation="Horizontal">
<Button Content="首 页" x:Name="Index" Command="{Binding ControlOnClickCommand}" CommandParameter="{Binding Name,ElementName=Index}" Style="{StaticResource BUTTON_AGREE}" Width="100" Height="30" Background="#009999" BorderBrush="#FF36B5C1" Margin="10,0,10,0"/>
<Button Content="代码生成" x:Name="Generate" Command="{Binding FormControlCommand}" CommandParameter="{Binding Name,ElementName=Generate}" Style="{StaticResource BUTTON_AGREE}" Width="100" Height="30" Background="#009999" BorderBrush="#FF36B5C1" Margin="0,0,10,0"/>
<Button Content="键 盘" Command="{Binding OpenSystemKeyboardCommand}" Style="{StaticResource BUTTON_AGREE}" Width="100" Height="30" Background="#009999" BorderBrush="#FF36B5C1" Margin="0,0,10,0"/>
<Button Content="最小化" x:Name="Minimized" Command="{Binding FormControlCommand}" CommandParameter="{Binding Name,ElementName=Minimized}" Style="{StaticResource BUTTON_AGREE}" Width="100" Height="30" Background="#FF9900" BorderBrush="#FF9900" Margin="0,0,10,0"/>
<Button Content="退 出" x:Name="Exit" Command="{Binding FormControlCommand}" CommandParameter="{Binding Name,ElementName=Exit}" Style="{StaticResource BUTTON_AGREE}" Width="100" Height="30" Background="#FF0033" BorderBrush="#FF0033" Margin="0,0,10,0"/>
<Button Content="型号切换" x:Name="ChangeType" Command="{Binding ControlOnClickCommand}" CommandParameter="{Binding Name,ElementName=ChangeType}" Style="{StaticResource BUTTON_AGREE}" Width="100" Height="30" Background="#009999" BorderBrush="#FF36B5C1" Margin="0,0,10,0"/>
<Button Content="代码生成" Visibility="Visible" x:Name="Generate" Command="{Binding FormControlCommand}" CommandParameter="{Binding Name,ElementName=Generate}" Style="{StaticResource BUTTON_AGREE}" Width="100" Height="30" Background="#009999" BorderBrush="#FF36B5C1" Margin="0,0,10,0"/>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Right" Orientation="Horizontal">
@ -89,9 +90,7 @@
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="1">
<TextBlock Text="连接状态" FontSize="15" Foreground="Black" Margin="2,0,10,0"/>
</StackPanel>
<StackPanel Grid.Column="1"/>
<StackPanel Grid.Column="0">
<Ellipse Width="20" Height="20">
<Ellipse.Style>
@ -128,9 +127,7 @@
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="1">
<TextBlock Text="连接状态" FontSize="15" Foreground="Black" Margin="2,0,10,0"/>
</StackPanel>
<StackPanel Grid.Column="1"/>
<StackPanel Grid.Column="0">
<Ellipse Width="20" Height="20">
<Ellipse.Style>
@ -164,7 +161,7 @@
<!--<ColumnDefinition Width="*"/>-->
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<!--<StackPanel Grid.Column="0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
@ -190,12 +187,12 @@
</Ellipse>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<TextBlock Text="机械臂" FontSize="15" Foreground="#FFFFFF" Margin="2,0,10,0"/>
<TextBlock Text="PLC状态" FontSize="15" Foreground="#FFFFFF" Margin="2,0,10,0"/>
</StackPanel>
</Grid>
</StackPanel>
</StackPanel>-->
<StackPanel Grid.Column="1">
<!--<StackPanel Grid.Column="0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
@ -221,12 +218,12 @@
</Ellipse>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<TextBlock Text="AGV" FontSize="15" Foreground="#FFFFFF" Margin="2,0,10,0"/>
<TextBlock Text="固定扫码器状态" FontSize="15" Foreground="#FFFFFF" Margin="2,0,10,0"/>
</StackPanel>
</Grid>
</StackPanel>
</StackPanel>-->
<!--<StackPanel Grid.Column="2">
<!--<StackPanel Grid.Column="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>

@ -15,6 +15,9 @@ using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows;
using System.Windows.Forms;
namespace SlnMesnac.WPF
{
@ -23,6 +26,20 @@ namespace SlnMesnac.WPF
/// </summary>
public partial class MainWindow : Window
{
//托盘
NotifyIcon trayIcon;
//注册AreaIcon属性用于托盘的图标
public static readonly DependencyProperty AreaIconProperty =
DependencyProperty.Register("AreaIcon", typeof(ImageSource), typeof(MainWindow));
//注册AreaText属性用于鼠标滑到托盘图标时显示的文字
public static readonly DependencyProperty AreaTextProperty =
DependencyProperty.Register("AreaText", typeof(string), typeof(MainWindow));
//注册AreaVisibility属性用于显示隐藏托盘图标
public static readonly DependencyProperty AreaVisibilityProperty =
DependencyProperty.Register("AreaVisibility", typeof(bool), typeof(MainWindow));
//注册AreaMenuItems属性用于托盘右键在单的列表
public static readonly DependencyProperty AreaMenuItemsProperty =
DependencyProperty.Register("AreaMenuItems", typeof(List<MenuItem>), typeof(MainWindow), new PropertyMetadata(new List<MenuItem>()));
public MainWindow()
{
InitializeComponent();
@ -30,14 +47,29 @@ namespace SlnMesnac.WPF
this.DataContext = new MainWindowViewModel();
}
private void Button_Click(object sender, RoutedEventArgs e)
private void AddTrayIcon()
{
if (trayIcon != null)
{
return;
}
trayIcon = new NotifyIcon
{
return;
};
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
}
}
}

@ -0,0 +1,155 @@
<UserControl x:Class="SlnMesnac.WPF.Page.IndexPage.ChangeType"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:SlnMesnac.WPF.Page.IndexPage"
mc:Ignorable="d"
d:DesignHeight="900" d:DesignWidth="1620" Background="#FF031B3D">
<UserControl.Resources>
<!--<converters:IsCheckedConverter x:Key="IsCheckedConverter"/>-->
<Style x:Key="DataGridTextColumnCenterSytle" TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="FontSize" Value="18"/>
</Style>
<Style TargetType="DataGrid">
<!--网格线颜色-->
<Setter Property="CanUserResizeColumns" Value="false"/>
<Setter Property="Background" Value="#1152AC" />
<Setter Property="BorderBrush" Value="#4285DE" />
<Setter Property="Foreground" Value="White"/>
<Setter Property="HorizontalGridLinesBrush">
<Setter.Value>
<SolidColorBrush Color="#4285DE"/>
</Setter.Value>
</Setter>
<Setter Property="VerticalGridLinesBrush">
<Setter.Value>
<SolidColorBrush Color="#1152AC"/>
</Setter.Value>
</Setter>
</Style>
<!--列头标题栏样式-->
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="BorderBrush" Value="#dddddd" />
<Setter Property="Height" Value="40"/>
<Setter Property="FontSize" Value="18"/>
<Setter Property="Background" Value="#4285DE"/>
<Setter Property="Foreground" Value="White"/>
</Style>
<!--单元格样式-->
<Style TargetType="DataGridCell">
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="BorderBrush" Value="#4285DE" />
<Setter Property="Height" Value="40"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid Background="{TemplateBinding Background}" >
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#4285DE"/>
<Setter Property="Foreground" Value="#dddddd"/>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
<Border Grid.Row="1" Grid.Column="1" BorderBrush="#0288d1" BorderThickness="2" CornerRadius="5" Background="Transparent" Margin="5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.8*"/>
<RowDefinition Height="9*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="#0288d1" BorderThickness="0,0,0,1" CornerRadius="0" Background="#1157b9" Margin="1,1,5,5" >
<TextBlock Text="型号配置" FontSize="25" FontWeight="Bold" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border Grid.Row="1" BorderBrush="Green" BorderThickness="0" CornerRadius="5" Background="Transparent" Margin="1,1,5,5">
<Grid Margin="10,5">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="4*"/>
<RowDefinition Height="4*"/>
</Grid.RowDefinitions>
<StackPanel Orientation="horizontal" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Center">
<Label Content="组件型号:" FontSize="20" Foreground="White"/>
<TextBox Text="{Binding ProductType,Mode=TwoWay}" Width="250" FontSize="20" Foreground="White" Margin="0 0 30 0" />
<Label Content="壳体型号:" FontSize="20" Foreground="White"/>
<TextBox Text="{Binding KTProductType,Mode=TwoWay}" Width="250" FontSize="20" Foreground="White" Margin="0 0 30 0" />
<!--<Button
Content="查 询" Command="{Binding QueryCommand}"
Style="{StaticResource MaterialDesignRaisedSecondaryDarkButton}" Background="Green" Margin="0 0 100 0"/>
<Button
Content="同步型号" Command="{Binding SyncCommand}" Margin="40 0 0 0"
Style="{StaticResource MaterialDesignRaisedSecondaryDarkButton}" Background="#FF1CC57B"/>-->
</StackPanel>
<UniformGrid Grid.Row="1">
<DataGrid x:Name="listDataGrid" Grid.Row="0" ItemsSource="{Binding ChangeTypePanel}" Background="#00000000"
ColumnHeaderHeight="35" Height="{Binding Path=ActualHeight, ElementName=ScanPanel}"
RowHeight="50" AutoGenerateColumns="False" RowHeaderWidth="0" FontSize="20"
GridLinesVisibility="None" ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto" BorderThickness="0" CanUserAddRows="False" SelectionMode="Single" IsReadOnly="True"
Foreground="White" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding dictValue}" Header="组件型号编号" Width="2*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}"/>
<DataGridTextColumn Binding="{Binding dictLabel}" Header="组件型号" Width="1*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
<DataGridTemplateColumn Header="操作" Width="1.5*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="切换" Height="40" Width="100" Command="{Binding DataContext.UpdateCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding dictLabel}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</UniformGrid>
<UniformGrid Grid.Row="2">
<DataGrid x:Name="listDataGrid1" Grid.Row="0" ItemsSource="{Binding ChangeTypePanel}" Background="#00000000"
ColumnHeaderHeight="35" Height="{Binding Path=ActualHeight, ElementName=ScanPanel}"
RowHeight="50" AutoGenerateColumns="False" RowHeaderWidth="0" FontSize="20"
GridLinesVisibility="None" ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto" BorderThickness="0" CanUserAddRows="False" SelectionMode="Single" IsReadOnly="True"
Foreground="White" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding dictValue}" Header="壳体型号编号" Width="2*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}"/>
<DataGridTextColumn Binding="{Binding dictLabel}" Header="壳体型号" Width="1*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
<DataGridTemplateColumn Header="操作" Width="1.5*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="切换" Height="40" Width="100" Command="{Binding DataContext.UpdateCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding dictLabel}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</UniformGrid>
</Grid>
</Border>
</Grid>
</Border>
</UserControl>

@ -0,0 +1,35 @@
using ATC_MaterialBind.Entity;
using SlnMesnac.Repository;
using SlnMesnac.WPF.ViewModel.IndexPage;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace SlnMesnac.WPF.Page.IndexPage
{
/// <summary>
/// ChangeType.xaml 的交互逻辑
/// </summary>
public partial class ChangeType : UserControl
{
ChangeTypeViewModel ChangeTypeView;
public ChangeType()
{
InitializeComponent();
ChangeTypeView = new ChangeTypeViewModel();
this.DataContext = ChangeTypeView;
}
}
}

@ -0,0 +1,198 @@
<UserControl x:Class="SlnMesnac.WPF.Page.IndexPage.MaterialBind"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:SlnMesnac.WPF.Page.IndexPage" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:converters="clr-namespace:SlnMesnac.WPF.Converter.Generate"
mc:Ignorable="d"
d:DesignHeight="1080" d:DesignWidth="1920" Background="#FF031B3D">
<UserControl.Resources>
<converters:ConfigToDynamicGridViewConverter x:Key="ConfigToDynamicGridViewConverter"/>
<DataTemplate x:Key="LogMsgTemplate">
<TextBlock Text="{Binding}" FontSize="20" Foreground="White" TextWrapping="Wrap" MaxWidth="800"/>
</DataTemplate>
<DataTemplate x:Key="FlightTemplate">
<StackPanel Margin="10,0,0,0">
<Button Content="{Binding StationName}" Foreground="Black"/>
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<Grid Margin="1 5 1 0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Grid.Row="0" Grid.Column="0" BorderBrush="#0288d1" BorderThickness="1" CornerRadius="5" Background="Transparent" Margin="3,1,5,5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="9*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="#0288d1" BorderThickness="0,0,0,1" CornerRadius="0" Background="#1157b9" Margin="1,1,3,5" >
<TextBlock Text="扫描信息" FontSize="20" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" FontWeight="Bold"/>
</Border>
<!--扫描信息-->
<Border Grid.Row="1" BorderBrush="#0288d1" BorderThickness="0" CornerRadius="5" Background="Transparent" Margin="1,1,3,5">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="6*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Border BorderThickness="0" Background="Transparent" CornerRadius="5" Margin="10,10,0,0" Grid.ColumnSpan="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.7*"/>
<RowDefinition Height="1.7*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center" >
<TextBlock Text="壳体条码" FontSize="22" Foreground="White" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="0 0 30 0"/>
<TextBox FontSize="20" Text="{Binding KTBoxCode,Mode=TwoWay}" BorderBrush="White" Foreground="White" Width="250" IsReadOnly="True" Margin="0 0 10 0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" />
<TextBox FontSize="20" Text="{Binding KTBoxTime,Mode=TwoWay}" BorderBrush="White" Foreground="White" Width="200" IsReadOnly="True" Margin="10 0 0 0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBlock Visibility="{Binding OKIsVis}" Grid.Row="0" Text="OK" FontSize="30" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10 0 0 0" FontWeight="Bold" Foreground="LightGreen"></TextBlock>
<TextBox FontSize="20" Text="{Binding OKCount,Mode=TwoWay}" BorderBrush="White" Foreground="White" Width="60" IsReadOnly="True" Margin="10 0 0 0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<Button Content="清 空" Command="{Binding ResetCommand}" Background="#FF1CC57B" Width="50" Margin="5 0 0 0"/>
</StackPanel>
<StackPanel Grid.Row="1" Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center" >
<TextBlock x:Name="tb_MaterialCode" Text="组件条码" FontSize="22" Foreground="White" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="0 0 30 0"/>
<TextBox FontSize="20" Text="{Binding ZJBoxCode,Mode=TwoWay}" BorderBrush="White" Foreground="White" Width="250" IsReadOnly="True" Margin="0 0 10 0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" />
<TextBox FontSize="20" Text="{Binding ZJBoxTime,Mode=TwoWay}" BorderBrush="White" Foreground="White" Width="200" IsReadOnly="True" Margin="10 0 0 0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBlock Visibility="{Binding NGIsVis}" Grid.Row="1" Text="NG" FontSize="30" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10 0 0 0" FontWeight="Bold" Foreground="OrangeRed"></TextBlock>
<TextBox FontSize="20" Text="{Binding NGCount,Mode=TwoWay}" BorderBrush="White" Foreground="White" Width="60" IsReadOnly="True" Margin="10 0 0 0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
</StackPanel>
<Border Grid.Row="2" BorderBrush="#1254AB" BorderThickness="2" Margin="0,10,0,0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
<RowDefinition Height="9*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="日志信息" FontSize="18" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
<ItemsControl ItemsSource="{Binding LogMessages}" ItemTemplate="{StaticResource LogMsgTemplate}" />
</ScrollViewer>
</Grid>
</Border>
<!--<StackPanel Grid.Row="2" Grid.RowSpan="2" Margin="0 40 0 0" >
<TextBlock Text="提示信息:" FontSize="22" Foreground="White"/>
<ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
<ItemsControl ItemsSource="{Binding LogMessages}" ItemTemplate="{StaticResource LogMsgTemplate}" />
</ScrollViewer>
--><!--<TextBox FontSize="18" BorderBrush="White" BorderThickness="1"
MinHeight="70" IsReadOnly="True" Foreground="{Binding MsgColor}" Margin="0 5 0 0"
AcceptsReturn="True" Text="{Binding Message,Mode=TwoWay}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" Height="70" />--><!--
</StackPanel>-->
</Grid>
</Border>
</Grid>
</Border>
</Grid>
</Border>
<Border Grid.Row="1" Grid.ColumnSpan="2" BorderBrush="#0288d1" BorderThickness="1" CornerRadius="5" Background="#FF031B3D" Margin="3,1,3,5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="9*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="#0288d1" BorderThickness="0,0,0,1" CornerRadius="0" Background="Transparent" Margin="1,1,5,5" >
<TextBlock Text="扫描记录" FontSize="20" FontWeight="Bold" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Border>
<!--计划列表-->
<Border x:Name="ScanPanel" Grid.Row="1" Grid.Column="0" BorderBrush="#0288d1" BorderThickness="0" CornerRadius="5" Background="Transparent" Margin="1,1,5,5">
<Grid>
<ListView Background="#FF031B3D" Foreground="White" FontSize="18" Height="{Binding Path=ActualHeight, ElementName=ScanPanel}" ItemsSource="{Binding TaskInfoDataGrid}" View="{Binding ColumnConfig,Converter={StaticResource ConfigToDynamicGridViewConverter}}">
</ListView>
<!--<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<DataGrid x:Name="dg_TaskInfo" Grid.Row="0" ItemsSource="{Binding TaskInfoDataGrid}" Background="#00000000"
ColumnHeaderHeight="35" Height="{Binding Path=ActualHeight, ElementName=ScanPanel}"
RowHeight="50" AutoGenerateColumns="False" RowHeaderWidth="0" FontSize="18"
GridLinesVisibility="None" ScrollViewer.HorizontalScrollBarVisibility="Auto" LoadingRow="dgv_LoadingRow"
ScrollViewer.VerticalScrollBarVisibility="Auto" BorderThickness="0" CanUserAddRows="False" SelectionMode="Single" IsReadOnly="True"
Foreground="White" >
<DataGrid.Columns>
<DataGridTemplateColumn Width="55" Header="序号" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow}}, Path=Header}" FontSize="18" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10,0,0,0"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding TaskNo}" Header="任务编号" Width="2*" />
<DataGridTextColumn Binding="{Binding KBarCode}" Header="壳体条码" Width="2*" />
<DataGridTextColumn Binding="{Binding QBarCode}" Header="前盖条码" Width="2*" />
<DataGridTextColumn Binding="{Binding Station1}" Header="前盖轴封" Width="*" />
<DataGridTextColumn Binding="{Binding Station2}" Header="曲轴压入转子" Width="*" />
<DataGridTextColumn Binding="{Binding Station3}" Header="曲轴压入前盖" Width="*" />
<DataGridTextColumn Binding="{Binding Station4}" Header="电机壳压轴承" Width="*" />
<DataGridTextColumn Binding="{Binding Station5}" Header="前盖轴封检漏" Width="*" />
<DataGridTextColumn Binding="{Binding Station6}" Header="转子充磁" Width="*" />
<DataGridTextColumn Binding="{Binding RecordTime,StringFormat=\{0:yyyy-MM-dd HH:mm:ss\}}" Header="扫描时间" Width="1.7*" />
</DataGrid.Columns>
</DataGrid>-->
</Grid>
</Border>
</Grid>
</Border>
<!--日志信息-->
<Border Grid.Row="0" Grid.Column="1" BorderBrush="#0288d1" BorderThickness="1" CornerRadius="5" Background="#FF031B3D" Margin="3,1,3,5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="9*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="#0288d1" BorderThickness="0,0,0,1" CornerRadius="0" Background="Transparent" Margin="1,1,1,5" >
<Grid>
<TextBlock Text="工位信息" FontSize="20" FontWeight="Bold" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Grid>
</Border>
<Border Grid.Row="1" BorderBrush="#0288d1" BorderThickness="1" CornerRadius="10" Background="Transparent" Margin="5,1,5,5">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<StackPanel x:Name="stackpanel1">
</StackPanel>
<!--<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
<ItemsControl ItemsSource="{Binding StationQualityInfos}" ItemTemplate="{StaticResource FlightTemplate}"/>
</ScrollViewer>-->
</Grid>
</Border>
</Grid>
</Border>
</Grid>
</UserControl>

@ -0,0 +1,70 @@
using ATC_MaterialBind.Entity;
using SlnMesnac.Plc;
using SlnMesnac.WPF.ViewModel.IndexPage;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Automation.Peers;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace SlnMesnac.WPF.Page.IndexPage
{
/// <summary>
/// MaterialBind.xaml 的交互逻辑
/// </summary>
public partial class MaterialBind : UserControl
{
IndexContentViewModel indexContentViewModel;
public MaterialBind()
{
InitializeComponent();
indexContentViewModel = new IndexContentViewModel();
indexContentViewModel._Action += RefreshStationQuallity;
this.DataContext = indexContentViewModel;
//load();
}
private void RefreshStationQuallity(List<StationQualityInfo> stationQualityInfos)
{
Application.Current.Dispatcher.Invoke(new Action(() =>
{
stackpanel1.Children.Clear();
if (stationQualityInfos != null && stationQualityInfos.Count > 0)
{
List<UIElement> buttons = new List<UIElement>();
foreach (var item in stationQualityInfos)
{
buttons.Add(new Button { FontSize = 20, Background = item.State == "1" ? Brushes.Lime : Brushes.Red, Height = 50, Content = item.StationName });
}
foreach (UIElement button in buttons)
{
stackpanel1.Children.Add(button);
}
}
else {
stackpanel1.Children.Remove(this);
}
}));
}
//在载入行的时候在行表头添加编号
private void dgv_LoadingRow(object sender, DataGridRowEventArgs e)
{
e.Row.Header = (e.Row.GetIndex() + 1).ToString();
}
}
}

@ -1,10 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms>
<AssemblyVersion>1.0.1.0</AssemblyVersion>
</PropertyGroup>
<ItemGroup>

@ -46,7 +46,7 @@ namespace SlnMesnac.WPF
services.AddPlcFactorySetup();
//注册httpClient
services.AddHostedService<AirPorthttpClient>();
//services.AddHostedService<AirPorthttpClient>();
//注册TCPServer
//services.AddHostedService<TcpServer>();
@ -83,16 +83,16 @@ namespace SlnMesnac.WPF
//启用Serilog中间件
app.UseSerilogExtensions();
app.UseTouchSocketExtensions();
//app.UseTouchSocketExtensions();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
//app.UseEndpoints(endpoints =>
//{
// endpoints.MapControllers();
//});
}
}

@ -0,0 +1,100 @@
using ATC_MaterialBind.Entity;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using SlnMesnac.Config;
using SlnMesnac.Repository;
using SlnMesnac.Repository.service;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.WPF.ViewModel.IndexPage
{
public partial class ChangeTypeViewModel : ObservableObject
{
private ILogger<ChangeTypeViewModel> _logger;
private Isys_dict_dataService _dataService;
private AppsettingsConfig _appSettings = new AppsettingsConfig();
public ChangeTypeViewModel()
{
UpdateCommand = new RelayCommand<object>(t => Update(t));
_dataService = App.ServiceProvider.GetService<Isys_dict_dataService>();
ProductType = _appSettings.ReadAppSettings("ChangeTypeConfig:ProductType");
try
{
string KT = _appSettings.ReadAppSettings("ChangeTypeConfig:KTProductType");
if (!string.IsNullOrEmpty(KT))
{
KTProductType = KT;
}
}
catch (Exception ex)
{
}
LoadDataAsync();
}
private void Update(object parameter)
{
string materialType = parameter as string;
ProductType = materialType;
_appSettings.WriteAppSettings("ChangeTypeConfig", "ProductType", ProductType);
}
private async void LoadDataAsync()
{
List<sys_dict_data> sys_Dict_Datas = await _dataService.GetProductType();
if (sys_Dict_Datas != null && sys_Dict_Datas.Count > 0)
{
ChangeTypePanel.Clear();
foreach (var item in sys_Dict_Datas)
{
ChangeTypePanel.Add(item);
}
}
}
/// <summary>
///
/// </summary>
public RelayCommand<object> UpdateCommand { get; set; }
private string _ProductType;
public string ProductType
{
get => _ProductType;
set
{
if (_ProductType != value)
{
SetProperty(ref _ProductType, value);
}
}
}
private string _KTProductType;
public string KTProductType
{
get => _KTProductType;
set
{
if (_KTProductType != value)
{
SetProperty(ref _KTProductType, value);
}
}
}
private ObservableCollection<sys_dict_data> _ChangeTypePanel = new ObservableCollection<sys_dict_data>();
public ObservableCollection<sys_dict_data> ChangeTypePanel
{
get => _ChangeTypePanel;
set => SetProperty(ref _ChangeTypePanel, value);
}
}
}

@ -1,45 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2024 WenJY
* CLR4.0.30319.42000
* T14-GEN3-7895
* SlnMesnac.WPF.ViewModel.IndexPage
* a6623b61-3574-44c2-a027-479fe9e639a2
*
* WenJY
*
* 2024-09-05 15:51:18
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
namespace SlnMesnac.WPF.ViewModel.IndexPage
{
public class FlightItem
{
public string flightNumber { get; set; }
public string scheduledTime { get;set; }
public string destination { get;set; }
public string flightStatus { get;set; }
public string baggageClaim { get; set; }
}
}

File diff suppressed because it is too large Load Diff

@ -1,39 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2024 WenJY
* CLR4.0.30319.42000
* T14-GEN3-7895
* SlnMesnac.WPF.ViewModel.IndexPage
* a576143f-3854-41bb-88d9-2b43962baed5
*
* WenJY
*
* 2024-09-05 15:14:04
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
namespace SlnMesnac.WPF.ViewModel.IndexPage
{
public class TaskItem
{
public string TaskCode { get; set; }
public string StationName { get; set; }
public string TaskDetails { get; set; }
public string Status { get; set; }
}
}

@ -5,6 +5,8 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using SlnMesnac.Business.@base;
using SlnMesnac.Config;
using SlnMesnac.Extensions;
using SlnMesnac.Plc;
using SlnMesnac.Repository.service;
using SlnMesnac.TouchSocket;
using SlnMesnac.WPF.Page.Generate;
@ -23,8 +25,10 @@ namespace SlnMesnac.WPF.ViewModel
private TcpServer _tcpServer;
//代码生成
private readonly GenerateControl generateControl = new GenerateControl();
private IndexContent indexContent = new IndexContent();
private MaterialBind indexContent = new MaterialBind();
//private ChangeType changeType = new ChangeType();
private AppConfig _appConfig;
private AirPorthttpClient _airPorthttpClient;
#region 参数定义
/// <summary>
@ -86,7 +90,21 @@ namespace SlnMesnac.WPF.ViewModel
/// </summary>
public RelayCommand<object> FormControlCommand { get; set; }
#endregion
/// <summary>
/// PLC状态刷新
/// </summary>
//public void RefreshStatus(object sender, System.Timers.ElapsedEventArgs e)
//{
// PlcAbsractFactory plc = plcPool.GetPlcByKey("plc");
// if (plc != null && plc.IsConnected)
// {
// PlcStatus = 1;
// }
// else
// {
// PlcStatus = 2;
// }
//}
public MainWindowViewModel()
{
_appConfig = App.ServiceProvider.GetService<AppConfig>();
@ -95,15 +113,16 @@ namespace SlnMesnac.WPF.ViewModel
_AGVStateService = App.ServiceProvider.GetService<IAGVStateService>();
_BaseTaskInfoBusinesslogger = App.ServiceProvider.GetService<ILogger<BaseTaskInfoBusiness>>();
_tcpServer = App.ServiceProvider.GetService<TcpServer>();
BaseTaskInfoBusiness.GetInstance(_BaseTaskInfoBusinesslogger, _Taskservice, _AGVStateService, _tcpServer);
_airPorthttpClient = App.ServiceProvider.GetService<AirPorthttpClient>();
BaseTaskInfoBusiness.GetInstance(_BaseTaskInfoBusinesslogger, _Taskservice, _AGVStateService, _tcpServer, _airPorthttpClient);
ControlOnClickCommand = new RelayCommand<object>(obj => ControlOnClick(obj));
FormControlCommand = new RelayCommand<object>(x => FormControl(x));
_tcpServer.RefreshStateAction+= (_clientIP, _state) =>
{
if (_clientIP == _appConfig.AMRIP)
{
ShellScannerStatus = _state ? 1 : 2;
}
//if (_clientIP == _appConfig.AMRIP)
//{
// ShellScannerStatus = _state ? 1 : 2;
//}
};
UserContent = indexContent;
}
@ -127,6 +146,9 @@ namespace SlnMesnac.WPF.ViewModel
case "Generate":
UserContent = generateControl;
break;
//case "ChangeType":
// UserContent = changeType;
// break;
// 还原 或者 最大化当前窗口
case "Normal":
if (Application.Current.MainWindow.WindowState == WindowState.Normal)
@ -168,6 +190,9 @@ namespace SlnMesnac.WPF.ViewModel
case "Index":
UserContent = indexContent;
break;
case "ChangeType":
UserContent = new ChangeType();
break;
default: break;
}
}

@ -8,39 +8,28 @@
},
"AllowedHosts": "*",
"AppConfig": {
"logPath": "F:\\Mesnac\\2023部门项目\\机场AGV调度\\HightWay_AirPot_WCS\\SlnMesnac.WPF\\bin\\Debug\\net6.0-windows\\log",
"logPath": "D:\\net6.0-windows\\log",
"SqlConfig": [
//{
// "configId": "mes",
// "dbType": 1,
// "connStr": "server=.;uid=sa;pwd=123456;database=JiangYinMENS"
//},
//{
// "configId": "mcs",
// "dbType": 3,
// "connStr": "Data Source=175.27.215.92/helowin;User ID=aucma_scada;Password=aucma"
//},
{
"configId": "AGV",
"configId": "mes",
"dbType": 1,
//"connStr": "server=192.168.1.120;uid=sa;pwd=123456;database=ATJ_581_DB"
"connStr": "server=119.45.202.115;uid=sa;pwd=haiwei@123;database=ATJ_581_DB"
},
{
"configId": "Local",
"dbType": 2,
"connStr": "Data Source=D:\\WorkCode\\AirPortWCS\\SlnMesnac.WPF\\bin\\Debug\\net6.0-windows\\data\\Airport_db.sqlite"
"connStr": "Data Source=F:\\Mesnac\\2023部门项目\\奥特佳-滁州3期\\源码\\HightWay_Middle_Ware\\SlnMesnac.WPF\\bin\\Debug\\net6.0-windows\\data\\HData.db3"
}
],
"PlcConfig": [
{
"configId": 1,
"plcType": "MelsecBinaryPlc",
"plcIp": "127.0.0.1",
"plcPort": 6000,
"plcKey": "mcs",
"isFlage": true
},
{
"configId": 2,
"plcType": "MelsecBinaryPlc",
"plcIp": "127.0.0.1",
//"plcIp": "127.0.0.1",
"plcIp": "192.168.1.33",
"plcPort": 6001,
"plcKey": "cwss",
"plcKey": "plc",
"isFlage": true
}
],
@ -78,12 +67,20 @@
"IsFlag": true
}
],
"AMRIP": "127.0.0.1",
"redisConfig": "175.27.215.92:6379,password=redis@2023",
"AGVIpConfig": "http://192.168.40.81:5102",
"TCPVisionConfig": "127.0.0.1:6000"
"ComPort": "COM1",
"StationCode": "150"
},
"ProductConfig": {
"OKCount": "0",
"NGCount": "0"
},
"ChangeTypeConfig": {
"ProductType": "E34F",
"KTProductType": "E34F",
"OpenFlag": "0"
}
}

@ -33,9 +33,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SlnMesnac.Ioc", "SlnMesnac.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SlnMesnac.Generate", "SlnMesnac.Generate\SlnMesnac.Generate.csproj", "{00FC9358-2381-4C1B-BD45-6D31DD1DB7D3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SlnMesnac.Extensions", "SlnMesnac.Extensions\SlnMesnac.Extensions.csproj", "{6D929802-24AA-42A7-92C5-303C3D59A990}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SlnMesnac.Extensions", "SlnMesnac.Extensions\SlnMesnac.Extensions.csproj", "{6D929802-24AA-42A7-92C5-303C3D59A990}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SlnMesnac.Redis", "SlnMesnac.Redis\SlnMesnac.Redis.csproj", "{0E041719-E755-43CD-8A0E-DF62E0B2E463}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SlnMesnac.Redis", "SlnMesnac.Redis\SlnMesnac.Redis.csproj", "{0E041719-E755-43CD-8A0E-DF62E0B2E463}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleApp", "ConsoleApp\ConsoleApp.csproj", "{2466355A-44B8-4E1C-91B5-8F9BB978D2AB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -111,6 +113,10 @@ Global
{0E041719-E755-43CD-8A0E-DF62E0B2E463}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E041719-E755-43CD-8A0E-DF62E0B2E463}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E041719-E755-43CD-8A0E-DF62E0B2E463}.Release|Any CPU.Build.0 = Release|Any CPU
{2466355A-44B8-4E1C-91B5-8F9BB978D2AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2466355A-44B8-4E1C-91B5-8F9BB978D2AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2466355A-44B8-4E1C-91B5-8F9BB978D2AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2466355A-44B8-4E1C-91B5-8F9BB978D2AB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

@ -13,7 +13,7 @@
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5000"
"applicationUrl": "http://localhost:5001"
},
"WSL": {
"commandName": "WSL2",

@ -4,7 +4,7 @@ using SlnMesnac.Quartz;
using SlnMesnac.Serilog;
using SlnMesnac.Extensions;
using System.Runtime.Serialization;
using SlnMesnac.Business.Airport;
namespace SlnMesnac
{

Loading…
Cancel
Save