You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1885 lines
79 KiB
C#
1885 lines
79 KiB
C#
using Khd.Core.Domain.Models;
|
|
using Khd.Core.EntityFramework;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Threading;
|
|
using Z.EntityFramework.Plus;
|
|
using Masuit.Tools;
|
|
using System.Windows.Input;
|
|
using Khd.Core.Wpf.Scan;
|
|
using System.IO.Ports;
|
|
using System.Threading;
|
|
using System.Diagnostics;
|
|
using Jc.SnowId;
|
|
using System.IO;
|
|
using System.Runtime.InteropServices;
|
|
using System.Windows.Media;
|
|
using HandyControl.Tools.Extension;
|
|
using Khd.Core.Wpf.TaskForm;
|
|
using Microsoft.IdentityModel.Tokens;
|
|
using Khd.Core.Plc;
|
|
using Khd.Core.Plc.S7;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Media.Media3D;
|
|
using Masuit.Tools.Logging;
|
|
using Khd.Core.Library.Mapper;
|
|
using System.Windows.Markup;
|
|
using System.Security.Cryptography.Xml;
|
|
using Newtonsoft.Json;
|
|
using Khd.Core.Domain.Dto.webapi;
|
|
using System.Text;
|
|
|
|
namespace Khd.Core.Wpf.Form
|
|
{
|
|
/// <summary>
|
|
/// FormBoardT.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class FormBoardT : Window
|
|
{
|
|
public static readonly JcSnowId _jcSnowId = new JcSnowId();
|
|
private readonly IHost _host;
|
|
private Khd.Core.Plc.S7.Plc _plc;
|
|
private DispatcherTimer ShowTimer;//刷新时间
|
|
private DispatcherTimer PLCMessage;//呈现PLC机柜信息
|
|
private DispatcherTimer UPMessageTimer;//刷新上件记录
|
|
private DispatcherTimer ShowOrderMessage;//呈现PLC机柜信息
|
|
private object order_code;
|
|
private int UpState;//对应上件站点的状态,0为良好 1为损坏
|
|
private SerialPortModel serialPortModel;
|
|
private SerialPortHelper serialPortHelper;
|
|
List<BasePlcpoint> basePlcpoints = new List<BasePlcpoint>();
|
|
object timerjilu;
|
|
Dictionary<long, bool> SelectedItem = new Dictionary<long, bool>();
|
|
Dictionary<long, bool> InSelectedItem = new Dictionary<long, bool>();
|
|
List<long?> CallSelectedItem = new List<long?>();
|
|
public List<MesBaseBarcodeInfo> barcodeLsit = new List<MesBaseBarcodeInfo>();
|
|
private int pageCount = 15;
|
|
|
|
|
|
private void ScanMessage()
|
|
{
|
|
while (true)
|
|
{
|
|
try
|
|
{
|
|
if (SystemData.isUpdate)
|
|
{
|
|
if (!string.IsNullOrEmpty(SystemData.message))
|
|
{
|
|
Dispatcher.Invoke(() =>
|
|
{
|
|
var focusedElement = FocusManager.GetFocusedElement(this);
|
|
if (focusedElement is TextBox textBox)
|
|
{
|
|
textBox.Text = SystemData.message;
|
|
SystemData.isUpdate = false;
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
Thread.Sleep(500);
|
|
}
|
|
}
|
|
|
|
private string selectedId;
|
|
//FormShowSelect formSelect;
|
|
// public static int WeekNo = CommonHelper.WeekOfYear(DateTime.Now, new System.Globalization.CultureInfo("zh-CN"));
|
|
public FormBoardT(IHost host)
|
|
{
|
|
InitializeComponent();
|
|
this._host = host;
|
|
}
|
|
/// <summary>
|
|
/// 页面加载事件
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void FormBoard_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
DispatcherTimer dispatcherTimer = new DispatcherTimer();
|
|
dispatcherTimer.Tick += new EventHandler(ShowTime); //委托刷新时间方法
|
|
dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 1000);
|
|
dispatcherTimer.Start();
|
|
//LogManager.Info($"--------------------------当前时间 :{DateTime.Now} >>> 客户端启动;");
|
|
//设置显示任务栏
|
|
if (WindowState == WindowState.Normal)
|
|
{
|
|
MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
|
|
WindowState = WindowState.Maximized;
|
|
}
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
SystemData.BasePlcpoints = dbContext.BasePlcpoint.ToList();
|
|
SystemData.BaseDictionary = dbContext.BaseDictionary.ToList();
|
|
SystemData.BaseEquip = dbContext.BaseEquip.ToList();
|
|
SystemData.BaseWareHouse = dbContext.WmsBaseWarehouse.ToList();
|
|
SystemData.MesBaseMaterialInfo = dbContext.MesBaseMaterialInfo.Take(100).ToList();
|
|
//MaterialName.ItemsSource = SystemData.MesBaseMaterialInfo;
|
|
WarehourseId.ItemsSource = SystemData.BaseWareHouse.Where(t => t.warehouseFloor != 1 && t.warehouseFloor != 4).ToList();
|
|
Task.Run(() =>
|
|
{
|
|
while (true)
|
|
{
|
|
try
|
|
{
|
|
serialPortModel = new SerialPortModel();
|
|
serialPortModel.PortName = "COM7";
|
|
serialPortModel.BaudRate = 9600;
|
|
serialPortModel.DataBits = 8;
|
|
serialPortModel.Parity = Parity.None;
|
|
serialPortModel.StopBits = StopBits.One;
|
|
serialPortHelper = new SerialPortHelper();
|
|
serialPortHelper.OpenMyConn(serialPortModel);
|
|
|
|
Thread scanThread = new Thread(ScanMessage);
|
|
scanThread.IsBackground = true;
|
|
scanThread.Start();
|
|
break;
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
Thread.Sleep(10000);
|
|
}
|
|
});
|
|
|
|
foreach (var plcConfig in SystemData.PlcConfigs)
|
|
{
|
|
Task.Run(() =>
|
|
{
|
|
if (!SystemData.PlcDic.Any(t => t.Key == plcConfig.Code))
|
|
{
|
|
Plc.S7.Plc plc;
|
|
plc = new Plc.S7.Plc(plcConfig.CpuType, plcConfig.IP, plcConfig.Port, plcConfig.Rack, plcConfig.Slot);
|
|
try
|
|
{
|
|
plc.Open();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogManager.Error(ex);
|
|
}
|
|
SystemData.PlcDic.TryAdd(plcConfig.Code, plc);
|
|
}
|
|
});
|
|
};
|
|
Task.Run(() =>
|
|
{
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
while (true)
|
|
{
|
|
try
|
|
{
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
int waitCtuCount = dbContext.WcsTask.Where(t => t.taskType == 30).Where(t => t.useFlag == 0).Where(t => t.taskStatus == 0).Count();
|
|
Dispatcher.Invoke(() =>
|
|
{
|
|
outTaskCount.Text = waitCtuCount.ToString();
|
|
});
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
Thread.Sleep(3000);
|
|
}
|
|
});
|
|
//加载dategrid信息
|
|
//LoadMaterial_GetMessage("");
|
|
//连接PLC判断
|
|
// var plc = new Khd.Core.Plc.S7.Plc((CpuType)PlcConfig.CpuType, PlcConfig.IP, PlcConfig.Port,
|
|
// PlcConfig.Rack, PlcConfig.Slot);
|
|
// //plc.Open();
|
|
// //if (!plc.IsConnected)
|
|
// //{
|
|
// // MessageBox.Show("PLC连接失败,重新连接");
|
|
// //}
|
|
// //else
|
|
// //{
|
|
// // this._plc = plc;
|
|
// //}
|
|
|
|
// using var scope = _host.Services.CreateScope();
|
|
// using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
// basePlcpoints = dbContext.BasePlcpoint.Where(t => t.isDelete == 0).ToList();
|
|
// //var baseMaterials = dbContext.BaseMaterial.Where(t => t.IsDelete == 0).ToList();
|
|
////
|
|
|
|
// PLCMessage = new DispatcherTimer();
|
|
// PLCMessage.Tick += new EventHandler(PLCmessage); //委托获取点位方法
|
|
// PLCMessage.Interval = new TimeSpan(0, 0, 0, 0, 1000);
|
|
// PLCMessage.Start();
|
|
|
|
// UPMessageTimer = new DispatcherTimer();
|
|
// UPMessageTimer.Tick += new EventHandler(UpMessage); //委托刷新上件记录
|
|
// UPMessageTimer.Interval = new TimeSpan(0, 0, 0, 0, 2000);
|
|
// UPMessageTimer.Start();
|
|
// Button_Click_1(null, null);
|
|
// SetTime();
|
|
// List<string> list = new List<string>
|
|
// {
|
|
// "101上件点",
|
|
// "102上件点",
|
|
// "103上件点"
|
|
// };
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message);
|
|
}
|
|
}
|
|
|
|
private void ShowTime(object? sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
this.LabDate.Text = DateTime.Now.Date.ToString("yyyy-MM-dd");
|
|
this.LabTime.Text = DateTime.Now.ToString("HH:mm:ss");
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 显示序号事件
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void dgData_LoadingRow(object sender, DataGridRowEventArgs e)
|
|
{ e.Row.Header = e.Row.GetIndex() + 1; }
|
|
/// <summary>
|
|
/// 点击退出按钮
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnExit_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (MessageBox.Show("是否确认关闭程序", "提示信息", MessageBoxButton.YesNo, MessageBoxImage.Information) == MessageBoxResult.Yes)
|
|
{
|
|
System.Environment.Exit(System.Environment.ExitCode);
|
|
}
|
|
}
|
|
private void Close(object sender, EventArgs e)
|
|
{
|
|
System.Environment.Exit(System.Environment.ExitCode);
|
|
}
|
|
public int i = 0;
|
|
/// <summary>
|
|
/// 查询任务
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnGetTask_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
GetTask();
|
|
}
|
|
|
|
//private void GetTaskLog()
|
|
//{
|
|
// try
|
|
// {
|
|
// using var scope = _host.Services.CreateScope();
|
|
// using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
// List<WcsTaskLog> wcsTaskLogs = new List<WcsTaskLog>();
|
|
// for (int i = 1; i <= 5; i++)
|
|
// {
|
|
// BasePlcpoint basePlcpoint = SystemData.BasePlcpoints.First(t => t.plcpointNo == "RFID00" + i);
|
|
// string? rifd = SystemData.PlcDic[0].ReadRFID(basePlcpoint.plcpointAddress);
|
|
// string floor = i.ToString();
|
|
// var wcsTaskLog = dbContext.WcsTaskLog.FirstOrDefault(t => t.ud3 == "1" && t.ud2 == floor && t.containerNo == rifd);
|
|
// if (wcsTaskLog != null)
|
|
// {
|
|
// wcsTaskLogs.Add(wcsTaskLog);
|
|
// }
|
|
// }
|
|
// this.WcsTaskLogDataGrid.ItemsSource = wcsTaskLogs;
|
|
// this.WcsTaskLogDataGrid.Items.Refresh();
|
|
// if (wcsTaskLogs.Count == 0)
|
|
// {
|
|
// MessageBox.Show("未查询到数据");
|
|
// }
|
|
// }
|
|
// catch (Exception ex)
|
|
// {
|
|
// if (ex is PlcException)
|
|
// {
|
|
// try
|
|
// {
|
|
// SystemData.PlcDic[0] = new Plc.S7.Plc(SystemData.PlcDic[0].CPU, SystemData.PlcDic[0].IP, SystemData.PlcDic[0].Port, SystemData.PlcDic[0].Rack, SystemData.PlcDic[0].Slot);
|
|
// SystemData.PlcDic[0].Open();
|
|
// GetTaskLog();
|
|
// }
|
|
// catch
|
|
// {
|
|
// MessageBox.Show("PLC连接失败,无法读取任务");
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
//}
|
|
|
|
private void GetTask()
|
|
{
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
var equipCode = lba_ThrifTtitle1.Text;
|
|
var palletNo = lba_ThrifTtitle2.Text;
|
|
var data = dbContext.WcsTask.Where(t => t.containerNo.Contains(palletNo) && t.equipmentNo.Contains(equipCode)).ToList();
|
|
SelectedItem.Clear();
|
|
foreach (var item in data)
|
|
{
|
|
SelectedItem.Add(item.objid, false);
|
|
}
|
|
this.LoadMaterial0.ItemsSource = null;
|
|
this.LoadMaterial0.ItemsSource = data;
|
|
this.LoadMaterial0.Items.Refresh();
|
|
if (data.Count == 0)
|
|
{
|
|
MessageBox.Show("未查询到数据");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 删除任务
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnDelTask_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (LoadMaterial0.SelectedIndex == -1)
|
|
{
|
|
MessageBox.Show("请选择要删除的任务!");
|
|
}
|
|
else
|
|
{
|
|
MessageBoxResult messageBoxResult = MessageBox.Show("确定要删除这些任务吗?", "提示信息", MessageBoxButton.YesNo);
|
|
if (messageBoxResult == MessageBoxResult.Yes)
|
|
{
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
List<long?> ids = new List<long?>();
|
|
foreach (var item in SelectedItem)
|
|
{
|
|
if (item.Value == true)
|
|
{
|
|
ids.Add(item.Key);
|
|
}
|
|
}
|
|
BaseEquip agvEquip = SystemData.BaseEquip.First(t => t.objid == 10);
|
|
List<WcsCmd> wcsCmds = dbContext.WcsCmd.Where(t => ids.Contains(t.taskId)).ToList();
|
|
foreach (var item in wcsCmds)
|
|
{
|
|
var cancelTask = new
|
|
{
|
|
reqCode = Global.SnowId.NextId().ToString(),
|
|
taskCode = item.taskCode
|
|
};
|
|
string reponse = HttpHelper.SendPostMessage(agvEquip.serverIp, agvEquip.serverPort.Value, "", cancelTask.ToJsonString());
|
|
var result = JsonConvert.DeserializeObject<ReponseMessage>(reponse);
|
|
if (result != null && result.code == "0")
|
|
{
|
|
ids.Remove(item.taskId);
|
|
dbContext.WcsCmd.Where(t => t.objid == item.objid).Delete();
|
|
dbContext.WcsTask.Where(t => t.objid == item.taskId).Delete();
|
|
dbContext.WcsTaskLog.Where(t => t.objid == item.taskId).Update(t => new WcsTaskLog { IsDelete = 1 });
|
|
}
|
|
}
|
|
dbContext.WcsTask.Where(t => ids.Contains(t.objid)).Delete();
|
|
dbContext.WcsTaskLog.Where(t => ids.Contains(t.objid)).Update(t => new WcsTaskLog { IsDelete = 1 });
|
|
dbContext.SaveChanges();
|
|
GetTask();
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 完成任务
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnFinishTask_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (LoadMaterial0.SelectedIndex == -1)
|
|
{
|
|
MessageBox.Show("请选择要完成的任务!");
|
|
}
|
|
else
|
|
{
|
|
var Currentselected = LoadMaterial0.SelectedItem as WcsTask;
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
Currentselected.taskStatus = 5;
|
|
dbContext.WcsTask.Update(Currentselected);
|
|
dbContext.SaveChanges();
|
|
GetTask();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 查询设备信息
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnGetEquip_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
var equipCode = lba_ThrifTtitle3.Text;
|
|
var data = dbContext.BaseEquip.Where(t => t.useFlag == 1 && t.equipNo.Contains(equipCode)).ToList();
|
|
this.LoadMaterial3.ItemsSource = null;
|
|
this.LoadMaterial3.ItemsSource = data;
|
|
this.LoadMaterial3.Items.Refresh();
|
|
if (data.Count == 0)
|
|
{
|
|
MessageBox.Show("未查询到数据");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 查询库存信息
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnGetStocK_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
Pagination1.PageIndex = 1;
|
|
GetBaseLocations();
|
|
}
|
|
|
|
private void GetBaseLocations()
|
|
{
|
|
if (WarehourseId.SelectedItem is WmsBaseWarehouse warehouse)
|
|
{
|
|
var scope = _host.Services.CreateScope();
|
|
var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
var locationCode = lba_ThrifTtitle6.Text;
|
|
long materialId = 0;
|
|
try
|
|
{
|
|
materialId = Convert.ToInt64(lba_ThrifTtitle5.Text);
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
int sum = dbContext.WmsRawStock
|
|
.WhereIf(!string.IsNullOrEmpty(lba_ThrifTtitle6.Text), t => t.locationCode.Contains(locationCode))
|
|
.WhereIf(!string.IsNullOrEmpty(lba_ThrifTtitle5.Text), t => t.materialId == materialId)
|
|
.Where(t => t.warehouseId == warehouse.warehouseId)
|
|
.Count();
|
|
Pagination1.MaxPageCount = (sum / pageCount) + (sum % pageCount == 0 ? 0 : 1);
|
|
var data = dbContext.WmsRawStock
|
|
.WhereIf(!string.IsNullOrEmpty(lba_ThrifTtitle6.Text), t => t.locationCode.Contains(locationCode))
|
|
.WhereIf(!string.IsNullOrEmpty(lba_ThrifTtitle5.Text), t => t.materialId == materialId)
|
|
.Where(t => t.warehouseId == warehouse.warehouseId)
|
|
.Skip((Pagination1.PageIndex - 1) * pageCount)
|
|
.Take(pageCount)
|
|
.ToList();
|
|
this.LoadMaterial1.ItemsSource = null;
|
|
this.LoadMaterial1.ItemsSource = data;
|
|
this.LoadMaterial1.Items.Refresh();
|
|
if (data.Count == 0)
|
|
{
|
|
MessageBox.Show("未查询到数据");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("请选择仓库!");
|
|
return;
|
|
}
|
|
}
|
|
|
|
///// <summary>
|
|
///// 查询指令信息
|
|
///// </summary>
|
|
///// <param name="sender"></param>
|
|
///// <param name="e"></param>
|
|
//private void btnGetWcsCmd_Click(object sender, RoutedEventArgs e)
|
|
//{
|
|
// GetWcsCmd();
|
|
//}
|
|
//private void GetWcsCmd()
|
|
//{
|
|
// using var scope = _host.Services.CreateScope();
|
|
// using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
// var equipCode = txtEquipNo.Text;
|
|
// var ContainNo = txtContainNo.Text;
|
|
// var data = dbContext.WcsCmd.Where(t => t.useFlag == 1 && t.containerNo.Contains(ContainNo) && t.equipmentNo.Contains(equipCode)).ToList();
|
|
// this.LoadMaterial.ItemsSource = null;
|
|
// this.LoadMaterial.ItemsSource = data;
|
|
// this.LoadMaterial.Items.Refresh();
|
|
// if (data.Count == 0)
|
|
// {
|
|
// MessageBox.Show("未查询到数据");
|
|
// }
|
|
//}
|
|
///// <summary>
|
|
///// 删除指令
|
|
///// </summary>
|
|
///// <param name="sender"></param>
|
|
///// <param name="e"></param>
|
|
//private void btnDelCmd_Click(object sender, RoutedEventArgs e)
|
|
//{
|
|
// if (LoadMaterial.SelectedIndex == -1)
|
|
// {
|
|
// MessageBox.Show("请选择要删除的指令!");
|
|
// }
|
|
// else
|
|
// {
|
|
// var Currentselected = LoadMaterial.SelectedItem as WcsCmd;
|
|
// using var scope = _host.Services.CreateScope();
|
|
// using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
// Currentselected.useFlag = 0;
|
|
// dbContext.WcsCmd.Update(Currentselected);
|
|
// dbContext.SaveChanges();
|
|
// GetWcsCmd();
|
|
// }
|
|
//}
|
|
///// <summary>
|
|
///// 重发指令
|
|
///// </summary>
|
|
///// <param name="sender"></param>
|
|
///// <param name="e"></param>
|
|
//private void btnReSendCmd_Click(object sender, RoutedEventArgs e)
|
|
//{
|
|
// if (LoadMaterial.SelectedIndex == -1)
|
|
// {
|
|
// MessageBox.Show("请选择要重发的指令!");
|
|
// }
|
|
// else
|
|
// {
|
|
// var Currentselected = LoadMaterial.SelectedItem as WcsCmd;
|
|
// using var scope = _host.Services.CreateScope();
|
|
// using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
// Currentselected.sendFlag = 0;
|
|
// dbContext.WcsCmd.Update(Currentselected);
|
|
// dbContext.SaveChanges();
|
|
// GetWcsCmd();
|
|
// }
|
|
//}
|
|
///// <summary>
|
|
///// 呼叫料箱
|
|
///// </summary>
|
|
///// <param name="sender"></param>
|
|
///// <param name="e"></param>
|
|
//private void btnCallBox_Click(object sender, RoutedEventArgs e)
|
|
//{
|
|
// try
|
|
// {
|
|
// if (!string.IsNullOrEmpty(callMaterialId.Text))
|
|
// {
|
|
// using var scope = _host.Services.CreateScope();
|
|
// using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
|
|
// if (int.TryParse(txtNum.Text, out int num))
|
|
// {
|
|
// WmsRawOutstock wmsRawOutstock = new WmsRawOutstock()
|
|
// {
|
|
// rawOutstockId = _jcSnowId.NextId(),
|
|
// taskCode = "task",
|
|
// warehouseId = 512,
|
|
// materialId = Convert.ToInt32(callMaterialId.Text),
|
|
// outstockAmount = Convert.ToInt32(txtNum.Text),
|
|
// realOutstockAmount = 0,
|
|
// endStationCode = "FL052",
|
|
// auditStatus = "0",
|
|
// operationType = "1",
|
|
// taskType = "1",
|
|
// executeStatus = "0"
|
|
// };
|
|
// dbContext.Add(wmsRawOutstock);
|
|
// dbContext.SaveChanges();
|
|
// MessageBox.Show("料箱呼叫任务添加成功!");
|
|
// }
|
|
// else
|
|
// {
|
|
// MessageBox.Show("请输入有效的数字");
|
|
// }
|
|
// }
|
|
// }
|
|
// catch
|
|
// {
|
|
|
|
// }
|
|
//}
|
|
/// <summary>
|
|
/// 料箱扫描
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
//private void txtBox_KeyDown(object sender, KeyEventArgs e)
|
|
//{
|
|
// if (e.Key == Key.Enter)
|
|
// {
|
|
// txtBarCode.Focus();
|
|
// }
|
|
//}
|
|
///// <summary>
|
|
///// 条码扫描
|
|
///// </summary>
|
|
///// <param name="sender"></param>
|
|
///// <param name="e"></param>
|
|
//private void txtBarCode_KeyDown(object sender, RoutedEventArgs e)
|
|
//{
|
|
// try
|
|
// {
|
|
// if (!string.IsNullOrEmpty(txtBarCode.Text))
|
|
// {
|
|
// if (!(barcodeLsit.Where(t => t.barcodeInfo == txtBarCode.Text).Count() > 0))
|
|
// {
|
|
// using var scope = _host.Services.CreateScope();
|
|
// using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
// var mesInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == txtBarCode.Text).FirstOrDefault();
|
|
// if (mesInfo == null)
|
|
// {
|
|
// MessageBox.Show("请扫描正确的条码");
|
|
// return;
|
|
// }
|
|
// barcodeLsit.Add(mesInfo);
|
|
// txtBarCode.SelectAll();
|
|
// txtBarCode.Focus();
|
|
// txtScan.Text = $"{(mesInfo.batchFlag == "1" ? 1 : mesInfo.amount)}";
|
|
// }
|
|
// }
|
|
// }
|
|
// catch
|
|
// {
|
|
|
|
// }
|
|
|
|
//}
|
|
/// <summary>
|
|
/// 确认
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnConfirmBox_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
//try
|
|
//{
|
|
// var box = txtBox.Text;
|
|
// if (string.IsNullOrEmpty(box))
|
|
// {
|
|
// MessageBox.Show("容器号不能为空!");
|
|
// return;
|
|
// }
|
|
// if (barcodeLsit.Count == 0)
|
|
// {
|
|
// MessageBox.Show("未扫描条码!");
|
|
// return;
|
|
// }
|
|
// using var scope = _host.Services.CreateScope();
|
|
// using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
// WmsBaseLocation? wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.warehouseId == 512 && t.containerCode == box).FirstOrDefault();
|
|
// if (wmsBaseLocation == null)
|
|
// {
|
|
// MessageBox.Show("容器号不存在!,请重新扫描!");
|
|
// return;
|
|
// }
|
|
// if (cbxType.Text == "入库")
|
|
// {
|
|
// var batchCodes = barcodeLsit.Select(t => t.batchCode);
|
|
// List<WmsRawStock> wmsRawStocks = dbContext.WmsRawStock
|
|
// .Where(t => batchCodes.Contains(t.instockBatch))
|
|
// .Where(t => t.warehouseFloor == 5 && t.warehouseId == 512).ToList();
|
|
// if (wmsRawStocks.Count > 0)
|
|
// {
|
|
// MessageBox.Show("该批次已入库!");
|
|
// return;
|
|
// }
|
|
// foreach (var item in barcodeLsit)
|
|
// {
|
|
// WmsRawStock? wmsRawStock = dbContext.WmsRawStock
|
|
// .Where(t => t.palletInfoCode == box)
|
|
// .Where(t => t.instockBatch == item.batchCode).FirstOrDefault();
|
|
// if (wmsRawStock == null)
|
|
// {
|
|
// var newRawStock = new WmsRawStock()
|
|
// {
|
|
// materialId = item.materialId,
|
|
// supplierId = item.manufacturerId,
|
|
// instockBatch = item.batchCode,
|
|
// locationCode = wmsBaseLocation.locationCode,
|
|
// stockType = "1",
|
|
// palletInfoCode = box,
|
|
// totalAmount = item.batchFlag == "1" ? 1 : item.amount,
|
|
// activeFlag = "1",
|
|
// occupyAmount = 0,
|
|
// completeFlag = "1",
|
|
// frozenAmount = 0,
|
|
// instockDate = System.DateTime.Now,
|
|
// rawStockId = Global.SnowId.NextId(),
|
|
// saleOrderId = item.saleOrderId,
|
|
// warehouseFloor = 5,
|
|
// warehouseId = 512,
|
|
// createBy = "扫描入库",
|
|
// createDate = System.DateTime.Now
|
|
// };
|
|
// dbContext.WmsRawStock.Add(newRawStock);
|
|
// }
|
|
// else
|
|
// {
|
|
// MessageBox.Show("该批次已入库!");
|
|
// return;
|
|
// }
|
|
// }
|
|
// dbContext.SaveChanges();
|
|
// MessageBox.Show("入库成功!");
|
|
// }
|
|
// if (cbxType.Text == "出库")
|
|
// {
|
|
// long? materialId = barcodeLsit.FirstOrDefault().materialId;
|
|
// WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock
|
|
// .Where(t => t.auditStatus == "1")
|
|
// .Where(t => t.executeStatus == "1")
|
|
// .Where(t => t.warehouseId == 512)
|
|
// .Where(t => t.realOutstockAmount < t.outstockAmount)
|
|
// .Where(t => t.materialId == materialId)
|
|
// .FirstOrDefault();
|
|
// if (wmsRawOutstock != null)
|
|
// {
|
|
// //从料箱里拿出来
|
|
// WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.palletInfoCode == box).Where(t => t.materialId == materialId).FirstOrDefault();
|
|
// if (wmsRawStock != null)
|
|
// {
|
|
// dbContext.WmsRawStock.Where(t => t.rawStockId == wmsRawStock.rawStockId).Delete();
|
|
// wmsRawOutstock.realOutstockAmount += 1;
|
|
// if (wmsRawOutstock.realOutstockAmount >= wmsRawOutstock.outstockAmount)
|
|
// {
|
|
// wmsRawOutstock.executeStatus = "2";
|
|
// wmsRawOutstock.endTime = DateTime.Now;
|
|
// }
|
|
// dbContext.Update(wmsRawOutstock);
|
|
// dbContext.SaveChanges();
|
|
// }
|
|
// else
|
|
// {
|
|
// MessageBox.Show("当前容器不存在当前扫描物料");
|
|
// }
|
|
// }
|
|
|
|
// }
|
|
// if (cbxType.Text == "回库")
|
|
// {
|
|
// var batchCodes = barcodeLsit.Select(t => t.batchCode);
|
|
// List<WmsRawStock> wmsRawStocks = dbContext.WmsRawStock
|
|
// .Where(t => batchCodes.Contains(t.instockBatch))
|
|
// .Where(t => t.warehouseFloor == 5 && t.warehouseId == 512).ToList();
|
|
// if (wmsRawStocks.Count > 0)
|
|
// {
|
|
// MessageBox.Show("该批次已入库!");
|
|
// return;
|
|
// }
|
|
// foreach (var item in barcodeLsit)
|
|
// {
|
|
// WmsRawStock? wmsRawStock = dbContext.WmsRawStock
|
|
// .Where(t => t.palletInfoCode == box)
|
|
// .Where(t => t.instockBatch == item.batchCode).FirstOrDefault();
|
|
// if (wmsRawStock == null)
|
|
// {
|
|
// var newRawStock = new WmsRawStock()
|
|
// {
|
|
// materialId = item.materialId,
|
|
// supplierId = item.manufacturerId,
|
|
// instockBatch = item.batchCode,
|
|
// locationCode = wmsBaseLocation.locationCode,
|
|
// stockType = "1",
|
|
// palletInfoCode = box,
|
|
// totalAmount = item.batchFlag == "1" ? 1 : item.amount,
|
|
// activeFlag = "1",
|
|
// occupyAmount = 0,
|
|
// completeFlag = "1",
|
|
// frozenAmount = 0,
|
|
// instockDate = System.DateTime.Now,
|
|
// rawStockId = Global.SnowId.NextId(),
|
|
// saleOrderId = item.saleOrderId,
|
|
// warehouseFloor = 5,
|
|
// warehouseId = 512,
|
|
// createBy = "扫描回库",
|
|
// createDate = System.DateTime.Now
|
|
// };
|
|
// dbContext.WmsRawStock.Add(newRawStock);
|
|
// }
|
|
// else
|
|
// {
|
|
// MessageBox.Show("该批次已入库!");
|
|
// return;
|
|
// }
|
|
// }
|
|
// dbContext.SaveChanges();
|
|
// MessageBox.Show("回库成功!");
|
|
// }
|
|
// barcodeLsit.Clear();
|
|
// txtScan.Text = string.Empty;
|
|
// txtBarCode.Text = string.Empty;
|
|
//}
|
|
//catch
|
|
//{
|
|
|
|
//}
|
|
|
|
}
|
|
/// <summary>
|
|
/// 退出程序
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void WindowClose_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (MessageBox.Show("是否确认关闭程序", "提示信息", MessageBoxButton.YesNo, MessageBoxImage.Information) == MessageBoxResult.Yes)
|
|
{
|
|
System.Environment.Exit(System.Environment.ExitCode);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 获取聚焦打开键盘
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void TextBoxGetFocus()
|
|
{
|
|
try
|
|
{
|
|
Process process = new Process()
|
|
{
|
|
StartInfo ={
|
|
UseShellExecute=true,
|
|
FileName="osk.exe"
|
|
}
|
|
};
|
|
process.Start();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("打开软键盘时出错: " + ex.Message);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 失去焦点,关闭软键盘
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void TextBoxLostFocus(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
//将打开的osk.exe进程关闭
|
|
Process[] processes = Process.GetProcessesByName("osk");
|
|
foreach (Process process in processes)
|
|
{
|
|
process.Kill();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("打开软键盘时出错: " + ex.Message);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 背负式小车确认完成
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnBearConfirmBox_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
var wcsCmd = dbContext.WcsCmd
|
|
.Where(t => t.cmdStatus == 6)
|
|
.Where(t => t.nextPointId == 21)
|
|
.FirstOrDefault();
|
|
if (wcsCmd == null)
|
|
{
|
|
MessageBox.Show("未查询到当前有背负式Agv由装配区到捡料区任务");
|
|
}
|
|
else
|
|
{
|
|
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd { cmdStatus = 7 });
|
|
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 7 });
|
|
dbContext.WcsTask.Where(t => t.objid == wcsCmd.taskId).Update(t => new WcsTask { taskStatus = 7 });
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.taskId).Update(t => new WcsTaskLog { taskStatus = 7 });
|
|
MessageBox.Show("背负式Agv任务确认完成成功");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 获取到所有控件
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
|
|
}
|
|
/// <summary>
|
|
/// 添加任务
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void AddTaskButton_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
AddTask addTask = new AddTask(_host);
|
|
addTask.ShowDialog();
|
|
}
|
|
///// <summary>
|
|
///// 清除RFID
|
|
///// </summary>
|
|
///// <param name="sender"></param>
|
|
///// <param name="e"></param>
|
|
//private void clearRFID_Click(object sender, RoutedEventArgs e)
|
|
//{
|
|
// txtBox.Text = string.Empty;
|
|
//}
|
|
///// <summary>
|
|
///// 清除条码
|
|
///// </summary>
|
|
///// <param name="sender"></param>
|
|
///// <param name="e"></param>
|
|
//private void clearBarCode_Click(object sender, RoutedEventArgs e)
|
|
//{
|
|
// txtScan.Text = string.Empty;
|
|
// barcodeLsit.Clear();
|
|
// txtBarCode.Text = string.Empty;
|
|
//}
|
|
///// <summary>
|
|
///// 人工叫料失去焦点
|
|
///// </summary>
|
|
///// <param name="sender"></param>
|
|
///// <param name="e"></param>
|
|
//private void callMaterialId_LostFocus(object sender, RoutedEventArgs e)
|
|
//{
|
|
// try
|
|
// {
|
|
// if (!string.IsNullOrEmpty(callMaterialId.Text))
|
|
// {
|
|
// using var scope = _host.Services.CreateScope();
|
|
// using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
// var material = dbContext.WmsRawStock.Where(t => t.instockBatch == callMaterialId.Text).FirstOrDefault();
|
|
// if (material == null)
|
|
// {
|
|
// MessageBox.Show("批次号不存在!");
|
|
// callMaterialId.Text = string.Empty;
|
|
// }
|
|
// else
|
|
// {
|
|
|
|
// }
|
|
// }
|
|
// }
|
|
// catch
|
|
// {
|
|
|
|
// }
|
|
|
|
//}
|
|
/// <summary>
|
|
/// 开始任务
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnEditTask_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (LoadMaterial0.SelectedIndex == -1)
|
|
{
|
|
MessageBox.Show("请选择要开始的任务!");
|
|
}
|
|
else
|
|
{
|
|
var Currentselected = LoadMaterial0.SelectedItem as WcsTask;
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
List<WcsTask> wcsTasks = dbContext.WcsTask.ToList();
|
|
List<long> ids = new List<long>();
|
|
foreach (var item in SelectedItem)
|
|
{
|
|
if (item.Value == true)
|
|
{
|
|
WcsTask? wcsTask = wcsTasks.FirstOrDefault();
|
|
if (wcsTask != null && wcsTask.taskStatus <= 0)
|
|
{
|
|
ids.Add(item.Key);
|
|
}
|
|
}
|
|
}
|
|
dbContext.WcsTask.Where(t => ids.Contains(t.objid)).Update(t => new WcsTask { useFlag = 1, taskStatus = 0 });
|
|
GetTask();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message);
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// 单选
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void CheckBox_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is CheckBox checkbox && LoadMaterial0.SelectedItem is WcsTask Currentselected)
|
|
{
|
|
SelectedItem[Currentselected.objid] = checkbox.IsChecked ?? false;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 单选
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void CheckPersonBox_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is CheckBox checkbox)
|
|
{
|
|
dynamic Currentselected = PersonCallMaterial.SelectedItem;
|
|
if (checkbox.IsChecked != null && checkbox.IsChecked.Value)
|
|
{
|
|
CallSelectedItem.Add(Currentselected.baseLocationId);
|
|
}
|
|
else
|
|
{
|
|
CallSelectedItem.Remove(Currentselected.baseLocationId);
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 刷新
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnRefreshPlc_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
for (int i = 1; i <= 5; i++)
|
|
{
|
|
BasePlcpoint rfid = SystemData.BasePlcpoints.First(t => t.plcpointNo == $"RFID00{i}");
|
|
BasePlcpoint linesignal = SystemData.BasePlcpoints.First(t => t.plcpointNo == $"linesignal0{i}");
|
|
BasePlcpoint wcsrun = SystemData.BasePlcpoints.First(t => t.plcpointNo == $"wcsrun0{i}");
|
|
var textBlock = FindName(rfid.plcpointNo) as TextBlock;
|
|
if (textBlock != null)
|
|
{
|
|
textBlock.Text = SystemData.PlcDic[0].ReadRFID(rfid.plcpointAddress);
|
|
}
|
|
textBlock = FindName(linesignal.plcpointNo) as TextBlock;
|
|
if (textBlock != null)
|
|
{
|
|
textBlock.Text = SystemData.PlcDic[0].Read(linesignal.plcpointAddress)?.ToString();
|
|
}
|
|
textBlock = FindName(wcsrun.plcpointNo) as TextBlock;
|
|
if (textBlock != null)
|
|
{
|
|
textBlock.Text = SystemData.PlcDic[0].Read(wcsrun.plcpointAddress)?.ToString();
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
try
|
|
{
|
|
if (ex is PlcException)
|
|
{
|
|
foreach (var item in SystemData.PlcDic)
|
|
{
|
|
if (item.Value.IP == ex.Message)
|
|
{
|
|
SystemData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Slot, item.Value.Rack);
|
|
SystemData.PlcDic[item.Key].Open();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
MessageBox.Show("提升机PLC连接失败!");
|
|
}
|
|
}
|
|
try
|
|
{
|
|
BasePlcpoint RFID5001 = SystemData.BasePlcpoints.First(t => t.plcpointNo == "RFID5001");
|
|
BasePlcpoint isarrive = SystemData.BasePlcpoints.First(t => t.plcpointNo == "isarrive");
|
|
BasePlcpoint isput = SystemData.BasePlcpoints.First(t => t.plcpointNo == "isput");
|
|
var CtuTextBlock = FindName(RFID5001.plcpointNo) as TextBlock;
|
|
if (CtuTextBlock != null)
|
|
{
|
|
CtuTextBlock.Text = SystemData.PlcDic[1].ReadRFID(RFID5001.plcpointAddress);
|
|
}
|
|
CtuTextBlock = FindName(isarrive.plcpointNo) as TextBlock;
|
|
if (CtuTextBlock != null)
|
|
{
|
|
CtuTextBlock.Text = SystemData.PlcDic[1].Read(isarrive.plcpointAddress)?.ToString();
|
|
}
|
|
CtuTextBlock = FindName(isput.plcpointNo) as TextBlock;
|
|
if (CtuTextBlock != null)
|
|
{
|
|
CtuTextBlock.Text = SystemData.PlcDic[1].Read(isput.plcpointAddress)?.ToString();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
try
|
|
{
|
|
if (ex is PlcException)
|
|
{
|
|
foreach (var item in SystemData.PlcDic)
|
|
{
|
|
if (item.Value.IP == ex.Message)
|
|
{
|
|
SystemData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Slot, item.Value.Rack);
|
|
SystemData.PlcDic[item.Key].Open();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
MessageBox.Show("U型线PLC连接失败!");
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// 开始任务
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnCtuInConfirmBox_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
WcsTask? wcsTask = dbContext.WcsTask.FirstOrDefault(t => t.nextPointId == 11 && t.taskType == 29);
|
|
if (wcsTask == null)
|
|
{
|
|
MessageBox.Show("未查询到当前有CTU入库任务!");
|
|
}
|
|
else
|
|
{
|
|
wcsTask.CTUExecute = "1";
|
|
dbContext.WcsTask.Update(wcsTask);
|
|
dbContext.SaveChanges();
|
|
MessageBox.Show("CTU入库任务确认完成成功!");
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 页码改变时
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void Pagination_PageUpdated(object sender, HandyControl.Data.FunctionEventArgs<int> e)
|
|
{
|
|
GetBaseLocations();
|
|
}
|
|
/// <summary>
|
|
/// 物料名称
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void MaterialName_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
//if(MaterialName.SelectedItem is MesBaseMaterialInfo Currentselected)
|
|
//{
|
|
// MaterialSpec.ItemsSource = SystemData.MesBaseMaterialInfo.Where(t => t.MaterialName == Currentselected.MaterialName);
|
|
//}
|
|
//else
|
|
//{
|
|
// MaterialSpec.ItemsSource = null;
|
|
//}
|
|
//MaterialSpec.Items.Refresh();
|
|
}
|
|
/// <summary>
|
|
/// 入库扫描
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void InRawBaseLocaltion_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (!string.IsNullOrEmpty(txtInBox.Text) && !string.IsNullOrEmpty(txtInBarCode.Text))
|
|
{
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
var material = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == txtInBarCode.Text);
|
|
var container = dbContext.WmsBaseLocation.FirstOrDefault(t => t.containerCode == txtInBox.Text && t.warehouseId == 512);
|
|
List<WmsRawStock> wmsRawStocks = dbContext.WmsRawStock
|
|
.Where(t => txtInBarCode.Text == t.instockBatch)
|
|
.Where(t => t.warehouseFloor == 5 && t.warehouseId == 512).ToList();
|
|
if (wmsRawStocks.Count > 0)
|
|
{
|
|
MessageBox.Show($"该条码已入库!料箱号为{wmsRawStocks.First().palletInfoCode},库位号为{wmsRawStocks.First().locationCode}");
|
|
txtInBarCode.Text = string.Empty;
|
|
txtInScan.Text = string.Empty;
|
|
return;
|
|
}
|
|
var newRawStock = new WmsRawStock()
|
|
{
|
|
materialId = material.materialId,
|
|
supplierId = material.manufacturerId,
|
|
instockBatch = material.batchCode,
|
|
locationCode = container.locationCode,
|
|
stockType = "1",
|
|
palletInfoCode = container.containerCode,
|
|
totalAmount = material.batchFlag == "1" ? 1 : material.amount,
|
|
activeFlag = "1",
|
|
occupyAmount = 0,
|
|
completeFlag = "1",
|
|
frozenAmount = 0,
|
|
instockDate = System.DateTime.Now,
|
|
rawStockId = Global.SnowId.NextId(),
|
|
saleOrderId = material.saleOrderId,
|
|
warehouseFloor = 5,
|
|
warehouseId = 512,
|
|
createBy = "扫描入库",
|
|
createDate = System.DateTime.Now,
|
|
safeFlag = "1",
|
|
};
|
|
dbContext.WmsRawStock.Add(newRawStock);
|
|
dbContext.SaveChanges();
|
|
MessageBox.Show("入库成功!");
|
|
txtInBarCode.Text = string.Empty;
|
|
txtInScan.Text = string.Empty;
|
|
txtInBarCode.Focus();
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("请先扫描容器号和条码!");
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 入库容器改变
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void txtInBox_TextChanged(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
string containerCode = txtInBox.Text;
|
|
if (!string.IsNullOrEmpty(containerCode))
|
|
{
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
var container = dbContext.WmsBaseLocation.FirstOrDefault(t => t.containerCode == containerCode && t.warehouseId == 512);
|
|
if (container == null)
|
|
{
|
|
MessageBox.Show($"未查询到该容器{txtInBox.Text}!");
|
|
txtInBox.Text = string.Empty;
|
|
txtInBox.Focus();
|
|
}
|
|
else
|
|
{
|
|
txtInBarCode.Focus();
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 入库条码改变
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void txtInBarCode_TextChanged(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
string barCode = txtInBarCode.Text;
|
|
if (!string.IsNullOrEmpty(barCode))
|
|
{
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
var material = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == barCode);
|
|
if (material == null)
|
|
{
|
|
MessageBox.Show("未查询到该条码内容!");
|
|
txtInBarCode.Text = string.Empty;
|
|
txtInScan.Text = string.Empty;
|
|
txtInBarCode.Focus();
|
|
}
|
|
else
|
|
{
|
|
var mesBaseMaterialInfo = dbContext.MesBaseMaterialInfo.FirstOrDefault(t => t.MaterialId == material.materialId);
|
|
if (mesBaseMaterialInfo == null)
|
|
{
|
|
MessageBox.Show("未查询到该条码绑定的物料信息!");
|
|
txtInBarCode.Text = string.Empty;
|
|
txtInScan.Text = string.Empty;
|
|
txtInBarCode.Focus();
|
|
}
|
|
else
|
|
{
|
|
txtInScan.Text = (mesBaseMaterialInfo.BatchFlag == 1 ? mesBaseMaterialInfo.BatchAmount : 1).ToString();
|
|
if (mesBaseMaterialInfo.BatchFlag == 0)
|
|
{
|
|
txtInScan.IsReadOnly = true;
|
|
}
|
|
else
|
|
{
|
|
txtInScan.IsReadOnly = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 出库容器改变
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void txtOutBox_TextChanged(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
string containerCode = txtOutBox.Text;
|
|
if (!string.IsNullOrEmpty(containerCode))
|
|
{
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
var container = dbContext.WmsBaseLocation.FirstOrDefault(t => t.containerCode == containerCode && t.warehouseId == 512);
|
|
if (container == null)
|
|
{
|
|
MessageBox.Show($"未查询到该容器{txtOutBox.Text}!");
|
|
txtOutBox.Text = string.Empty;
|
|
txtOutBox.Focus();
|
|
}
|
|
else
|
|
{
|
|
txtOutBarCode.Focus();
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 出库条码改变
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void txtOutBarCode_TextChanged(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
string barCode = txtOutBarCode.Text;
|
|
string containerCode = txtOutBox.Text;
|
|
if (!string.IsNullOrEmpty(containerCode))
|
|
{
|
|
if (!string.IsNullOrEmpty(barCode))
|
|
{
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
var wmsRawStock = dbContext.WmsRawStock.FirstOrDefault(t => t.instockBatch == barCode && t.palletInfoCode == containerCode);
|
|
if (wmsRawStock == null)
|
|
{
|
|
MessageBox.Show("未在该容器中查询到该条码!");
|
|
txtOutBarCode.Text = string.Empty;
|
|
txtOutScan.Text = string.Empty;
|
|
txtOutBarCode.Focus();
|
|
}
|
|
else
|
|
{
|
|
var mesBaseMaterialInfo = dbContext.MesBaseMaterialInfo.FirstOrDefault(t => t.MaterialId == wmsRawStock.materialId);
|
|
if (mesBaseMaterialInfo == null)
|
|
{
|
|
MessageBox.Show("未查询到该条码绑定的物料信息!");
|
|
txtOutBarCode.Text = string.Empty;
|
|
txtOutScan.Text = string.Empty;
|
|
txtOutBarCode.Focus();
|
|
}
|
|
else
|
|
{
|
|
txtOutScan.Text = (mesBaseMaterialInfo.BatchFlag == 1 ? (wmsRawStock.totalAmount - wmsRawStock.frozenAmount) : 1).ToString();
|
|
if (mesBaseMaterialInfo.BatchFlag == 0)
|
|
{
|
|
txtOutScan.IsReadOnly = true;
|
|
}
|
|
else
|
|
{
|
|
txtOutScan.IsReadOnly = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!string.IsNullOrEmpty(barCode))
|
|
{
|
|
MessageBox.Show("请先扫描容器号!");
|
|
txtOutBarCode.Text = string.Empty;
|
|
txtOutScan.Text = string.Empty;
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 出库扫描
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OutRawBaseLocaltion_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (!string.IsNullOrEmpty(txtOutBox.Text) && !string.IsNullOrEmpty(txtOutBarCode.Text))
|
|
{
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
var wmsRawStock = dbContext.WmsRawStock
|
|
.FirstOrDefault(t => t.instockBatch == txtOutBarCode.Text && t.palletInfoCode == txtOutBox.Text);
|
|
if (wmsRawStock == null)
|
|
{
|
|
MessageBox.Show("库存已经被清空!");
|
|
return;
|
|
}
|
|
int outScan = Convert.ToInt32(this.txtOutScan.Text);
|
|
if (outScan != 1 && outScan > wmsRawStock.totalAmount - wmsRawStock.frozenAmount)
|
|
{
|
|
MessageBox.Show("出库数量不能大于库存数量!");
|
|
return;
|
|
}
|
|
var wcsTask = dbContext.WcsTask.Where(t => t.containerNo == txtOutBox.Text).FirstOrDefault();
|
|
if (wcsTask == null)
|
|
{
|
|
wmsRawStock.occupyAmount -= outScan;
|
|
wmsRawStock.totalAmount -= outScan;
|
|
if (wmsRawStock.totalAmount == 0)
|
|
{
|
|
dbContext.WmsRawStock.Where(t => t.rawStockId == wmsRawStock.rawStockId).Delete();
|
|
}
|
|
else
|
|
{
|
|
dbContext.WmsRawStock.Update(wmsRawStock);
|
|
dbContext.SaveChanges();
|
|
}
|
|
txtOutScan.Text = string.Empty;
|
|
txtOutBarCode.Text = string.Empty;
|
|
txtOutBarCode.Focus();
|
|
MessageBox.Show("出库成功!");
|
|
}
|
|
else
|
|
{
|
|
WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == wcsTask.orderId);
|
|
if (wmsRawOutstock != null)
|
|
{
|
|
wmsRawOutstock.realOutstockAmount += outScan;
|
|
if (wmsRawOutstock.outstockAmount == wmsRawOutstock.realOutstockAmount)
|
|
{
|
|
wmsRawOutstock.executeStatus = "2";
|
|
}
|
|
wmsRawStock.occupyAmount -= outScan;
|
|
wmsRawStock.totalAmount -= outScan;
|
|
if (wmsRawStock.totalAmount == 0)
|
|
{
|
|
dbContext.WmsRawStock.Where(t => t.rawStockId == wmsRawStock.rawStockId).Delete();
|
|
dbContext.Update(wmsRawOutstock);
|
|
dbContext.SaveChanges();
|
|
}
|
|
else
|
|
{
|
|
dbContext.WmsRawStock.Update(wmsRawStock);
|
|
dbContext.Update(wmsRawOutstock);
|
|
dbContext.SaveChanges();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
wmsRawStock.occupyAmount -= outScan;
|
|
wmsRawStock.totalAmount -= outScan;
|
|
if (wmsRawStock.totalAmount == 0)
|
|
{
|
|
dbContext.WmsRawStock.Where(t => t.rawStockId == wmsRawStock.rawStockId).Delete();
|
|
}
|
|
else
|
|
{
|
|
dbContext.WmsRawStock.Update(wmsRawStock);
|
|
dbContext.SaveChanges();
|
|
}
|
|
}
|
|
|
|
MessageBox.Show("出库成功!");
|
|
txtOutScan.Text = string.Empty;
|
|
txtOutBarCode.Text = string.Empty;
|
|
txtOutBarCode.Focus();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("请先扫描容器号和条码!");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 搜索
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void SelectButton_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
CallSelectedItem.Clear();
|
|
GetPersonCallMaterialData();
|
|
}
|
|
/// <summary>
|
|
/// 获取人员呼叫的物料数据
|
|
/// </summary>
|
|
private void GetPersonCallMaterialData()
|
|
{
|
|
try
|
|
{
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
List<long?> materialIds = new List<long?>();
|
|
List<MesBaseMaterialInfo> materialInfos = new List<MesBaseMaterialInfo>();
|
|
if (!string.IsNullOrEmpty(MaterialName.Text))
|
|
{
|
|
materialInfos = dbContext.MesBaseMaterialInfo.Where(t => t.MaterialName.Contains(MaterialName.Text)).ToList();
|
|
materialIds = materialInfos.Select(t => t.MaterialId).ToList();
|
|
}
|
|
|
|
var wmsRawStocks = dbContext.WmsRawStock
|
|
.Where(t => t.warehouseId == 512)
|
|
.WhereIf(materialIds.Count > 0, t => materialIds.Contains(t.materialId))
|
|
.ToList();
|
|
//var groupWmsRawStock = wmsRawStocks.GroupBy(t => new { t.materialId, t.palletInfoCode }).Select(t => new { Key = t.Key, Value = t.Sum(x => x.totalAmount) });
|
|
var palletInfoCodes = wmsRawStocks.Select(t => t.palletInfoCode).ToList();
|
|
var wmsBaseLocations = dbContext.WmsBaseLocation
|
|
.Where(t => t.ContainerStatus == "1")
|
|
.Where(t => t.warehouseId == 512)
|
|
.Where(t => palletInfoCodes.Contains(t.containerCode)).ToList();
|
|
if (string.IsNullOrEmpty(MaterialName.Text))
|
|
{
|
|
materialInfos = dbContext.MesBaseMaterialInfo.ToList();
|
|
}
|
|
var bill = from a in wmsBaseLocations
|
|
from b in wmsRawStocks
|
|
from c in materialInfos
|
|
where a.containerCode == b.palletInfoCode && b.materialId == c.MaterialId
|
|
select new
|
|
{
|
|
baseLocationId = a.locationId,
|
|
wmsRawStocksId = b.rawStockId,
|
|
locationCode = a.locationCode,
|
|
materialId = b.materialId,
|
|
materialName = c.MaterialName,
|
|
materialSpec = c.MaterialSpec,
|
|
palletInfoCode = b.palletInfoCode,
|
|
instockDate = b.instockDate,
|
|
totalAmount = b.totalAmount,
|
|
frozenAmount = b.frozenAmount,
|
|
IsSelected = CallSelectedItem.Contains(a.locationId)
|
|
};
|
|
PersonCallMaterial.ItemsSource = bill.ToList().Skip((this.Pagination2.PageIndex - 1) * this.pageCount).Take(this.pageCount);
|
|
int sum = bill.Count();
|
|
Pagination2.MaxPageCount = (sum / pageCount) + (sum % pageCount == 0 ? 0 : 1);
|
|
if (bill.Count() == 0)
|
|
{
|
|
MessageBox.Show("未查询到数据");
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 页码改变时
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void Pagination2_PageUpdated(object sender, HandyControl.Data.FunctionEventArgs<int> e)
|
|
{
|
|
GetPersonCallMaterialData();
|
|
}
|
|
/// <summary>
|
|
/// 叫空料箱
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void CallEmptyBtn_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
EmptyCountForm emptyCountForm = new EmptyCountForm();
|
|
emptyCountForm.ShowDialog();
|
|
if (EmptyCountForm.IsSelect)
|
|
{
|
|
var baseEquip = SystemData.BaseEquip.First(t => t.objid == 11);
|
|
BaseEquip endEquip = SystemData.BaseEquip.First(t => t.objid == 20);
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
|
|
//int taskCount = dbContext.WcsTask.Where(t => t.taskType == 30).Count();
|
|
//if (taskCount >= 6)
|
|
//{
|
|
// HandyControl.Controls.MessageBox.Show("当前CTU入库任务已满6个,请等待任务完成后再叫空箱!");
|
|
// return;
|
|
//}
|
|
var wmsBaseLocation = dbContext.WmsBaseLocation
|
|
.Where(t => t.locationStatus == "1")
|
|
.Where(t => t.instockFlag == "0")
|
|
.Where(t => t.outstockFlag == "0")
|
|
.Where(t => t.warehouseId == 512 && t.ContainerStatus == "1").ToList();
|
|
var wmsRawStock = dbContext.WmsRawStock.Where(t => t.warehouseId == 512).ToList();
|
|
List<string> palletInfoCodes = wmsRawStock.Select(t => t.palletInfoCode).ToList();
|
|
wmsBaseLocation.RemoveAll(t => palletInfoCodes.Contains(t.containerCode));
|
|
if (wmsBaseLocation.Count > 0 && EmptyCountForm.EmptyTaskCount <= wmsBaseLocation.Count)
|
|
{
|
|
for (int i = 0; i < EmptyCountForm.EmptyTaskCount; i++)
|
|
{
|
|
WmsBaseLocation startBaseLocation = wmsBaseLocation[i];
|
|
startBaseLocation.outstockFlag = "1";
|
|
startBaseLocation.locationStatus = "6";
|
|
WcsTaskManual wcsTask = new WcsTaskManual()
|
|
{
|
|
objid = Global.SnowId.NextId(),
|
|
taskType = 30,
|
|
containerNo = startBaseLocation.containerCode,
|
|
startPointId = startBaseLocation.locationId,
|
|
startPointNo = startBaseLocation.locationCode,
|
|
currPointId = startBaseLocation.locationId,
|
|
currPointNo = startBaseLocation.locationCode,
|
|
nextPointId = baseEquip.objid,
|
|
nextPointNo = baseEquip.equipNo,
|
|
endPointId = endEquip.objid,
|
|
endPointNo = endEquip.equipNo,
|
|
createTime = DateTime.Now,
|
|
ud1 = startBaseLocation.locColumn,
|
|
taskStatus = 0,
|
|
remark = "CTU空库任务",
|
|
floorNo = 5,
|
|
fromFloorNo = 5,
|
|
useFlag = 1
|
|
};
|
|
dbContext.Add(wcsTask);
|
|
dbContext.Update(startBaseLocation);
|
|
dbContext.SaveChanges();
|
|
}
|
|
MessageBox.Show("任务创建成功!");
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show($"没有足够的空箱库位库位,剩余空库位数量为{wmsBaseLocation.Count}!");
|
|
}
|
|
}
|
|
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 叫托盘
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void CallTrayBtn_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
BaseEquip ctuEquip = SystemData.BaseEquip.First(t => t.objid == 11);
|
|
BaseEquip endEquip = SystemData.BaseEquip.First(t => t.objid == 20);
|
|
if (CallSelectedItem.Count == 0)
|
|
{
|
|
MessageBox.Show("请选择料箱!");
|
|
return;
|
|
}
|
|
if (CallSelectedItem.Count > 6)
|
|
{
|
|
MessageBox.Show("一次只能叫托盘6个!");
|
|
return;
|
|
}
|
|
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
//int taskCount = dbContext.WcsTask.Where(t => t.nextPointId == 11).Count();
|
|
//if (taskCount + ids.Count > 6)
|
|
//{
|
|
// MessageBox.Show($"当前CTU只能有6个任务,当前任务数{taskCount}");
|
|
// return;
|
|
//}
|
|
var wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.warehouseId == 512 && t.ContainerStatus == "1").Where(t => CallSelectedItem.Contains(t.locationId)).ToList();
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
stringBuilder.AppendLine("确认出库:");
|
|
foreach (var item in wmsBaseLocation)
|
|
{
|
|
stringBuilder.AppendLine($"库位号{item.locationCode},料箱号{item.containerCode}.");
|
|
}
|
|
MessageBoxResult messageBoxResult = MessageBox.Show(stringBuilder.ToString(), "提示", MessageBoxButton.YesNo);
|
|
if (messageBoxResult == MessageBoxResult.Yes)
|
|
{
|
|
foreach (var item in wmsBaseLocation)
|
|
{
|
|
var wcsTask = new WcsTaskManual()
|
|
{
|
|
objid = Global.SnowId.NextId(),
|
|
taskType = 30,
|
|
containerNo = item.containerCode,
|
|
startPointId = item.locationId,
|
|
startPointNo = item.locationCode,
|
|
currPointId = item.locationId,
|
|
currPointNo = item.locationCode,
|
|
nextPointId = ctuEquip.objid,
|
|
nextPointNo = ctuEquip.equipNo,
|
|
endPointId = endEquip.objid,
|
|
endPointNo = endEquip.equipNo,
|
|
createTime = DateTime.Now,
|
|
ud1 = item.locColumn,
|
|
taskStatus = 0,
|
|
remark = "CTU托盘任务",
|
|
floorNo = 5,
|
|
fromFloorNo = 5,
|
|
useFlag = 1
|
|
};
|
|
dbContext.Add(wcsTask);
|
|
item.outstockFlag = "1";
|
|
item.ContainerStatus = "2";
|
|
item.locationStatus = "6";
|
|
dbContext.Update(item);
|
|
dbContext.SaveChanges();
|
|
}
|
|
MessageBox.Show("创建出库任务成功!");
|
|
}
|
|
CallSelectedItem.Clear();
|
|
GetPersonCallMaterialData();
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 执行CTU任务
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void ExecuteCtuTask_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (int.TryParse(outTaskCount.Text, out int count))
|
|
{
|
|
if (count > 0)
|
|
{
|
|
using var scope = _host.Services.CreateScope();
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
var tasks = dbContext.WcsTask.Where(t => t.taskType == 30 && t.taskStatus == 0 && t.useFlag == 0).ToList();
|
|
foreach (var task in tasks)
|
|
{
|
|
task.taskStatus = 0;
|
|
task.useFlag = 1;
|
|
dbContext.Update(task);
|
|
dbContext.SaveChanges();
|
|
}
|
|
MessageBox.Show("任务执行成功!");
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("没有可执行的任务!");
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
private void callPlc_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
BasePlcpoint basePlcpoint = SystemData.BasePlcpoints.First(t => t.plcpointNo == "canReceive");
|
|
SystemData.PlcDic[1].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
try
|
|
{
|
|
if (ex is PlcException)
|
|
{
|
|
foreach (var item in SystemData.PlcDic)
|
|
{
|
|
if (item.Value.IP == ex.Message)
|
|
{
|
|
SystemData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Slot, item.Value.Rack);
|
|
SystemData.PlcDic[item.Key].Open();
|
|
BasePlcpoint basePlcpoint = SystemData.BasePlcpoints.First(t => t.plcpointNo == "canReceive");
|
|
SystemData.PlcDic[1].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
MessageBox.Show("PLC连接失败!");
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
private void Button_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
TextBoxGetFocus();
|
|
}
|
|
}
|
|
}
|