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.

150 lines
5.5 KiB
C#

7 months ago
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using SlnMesnac.Model.domain;
using SlnMesnac.Model.dto.taskType;
using SlnMesnac.WPF.Library;
using SqlSugar;
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.Shapes;
using TouchSocket.Core;
using static MaterialDesignThemes.Wpf.Theme.ToolBar;
namespace SlnMesnac.WPF.Page
{
/// <summary>
/// CreateMoveWindow.xaml 的交互逻辑
/// </summary>
public partial class CreateMoveWindow : Window
{
private ISqlSugarClient? SqlSugarClient;
public CreateMoveWindow()
{
InitializeComponent();
SqlSugarClient = App.ServiceProvider.GetService<ISqlSugarClient>();
LoadLocations(); // 初始化 ComboBox 选项
}
// 加载地点选项3001-3024
private void LoadLocations()
{
for (int i = 301; i <= 312; i++)
7 months ago
{
this.StartComboBox.Items.Add(i.ToString()+"A");
this.StartComboBox.Items.Add(i.ToString() + "B");
EndComboBox.Items.Add(i.ToString()+"A");
EndComboBox.Items.Add(i.ToString() + "B");
7 months ago
}
StartComboBox.Items.Add("异常库位3066");
EndComboBox.Items.Add("异常库位3066");
}
// 确认按钮点击事件
private void ConfirmButton_Click(object sender, RoutedEventArgs e)
{
string startCode = StartComboBox.SelectedItem?.ToString();
string endCode = EndComboBox.SelectedItem?.ToString();
if(SqlSugarClient == null)
{
MessageBox.Show("SqlSugarClient为空");
return;
}
7 months ago
if (string.IsNullOrEmpty(startCode) || string.IsNullOrEmpty(endCode))
{
MessageBox.Show("请选择起点和终点!");
return;
}
if (startCode == endCode)
{
MessageBox.Show("起点和终点不能相同!");
return;
}
if (startCode == "异常库位3066")
{
startCode = "3066";
}
if (endCode == "异常库位3066")
{
endCode = "3066";
}
WmsBaseLocation? startLocation = SqlSugarClient.Queryable<WmsBaseLocation>().Where(it => it.LocationCode == startCode).First();
WmsBaseLocation? endLocation = SqlSugarClient.Queryable<WmsBaseLocation>().Where(it => it.LocationCode == endCode).First();
WmsPalletInfo? wmsPalletInfo = SqlSugarClient.Queryable<WmsPalletInfo>().InnerJoin<WmsBaseLocation>((x,y) => x.Amount == 0 && y.LocationCode == startCode).First();
if (wmsPalletInfo == null) {
MessageBox.Show("起点库位托盘未清空,无法移库!");
return;
}
7 months ago
if (startLocation.LocationStatus != 0)
{
MessageBox.Show("起点库位不可用,状态被锁定!");
return;
}
7 months ago
if (endLocation.LocationStatus != 0)
{
MessageBox.Show("终点库位不可用,状态被锁定!");
return;
}
7 months ago
if (string.IsNullOrEmpty(startLocation.ContainerCode))
{
MessageBox.Show("起点库位无托盘,请检查库存!");
return;
}
7 months ago
if (!string.IsNullOrEmpty(endLocation.ContainerCode))
{
MessageBox.Show($"终点库位已有托盘:{endLocation.ContainerCode},禁止移库,请检查库存!");
return;
}
try
{
WcsTask task = new WcsTask();
task.TaskType = StaticTaskType.MoveLocationTask;
task.CurrPointNo = startLocation.AgvPositionCode;
task.EndPointNo = endLocation.AgvPositionCode;
task.TaskStatus = 0;
task.CreatedTime = DateTime.Now;
task.CreatedBy = "wcs";
task.TaskName = "1-12机台移库任务";
task.PalletInfoCode = startLocation.ContainerCode;
SqlSugarClient.AsTenant().BeginTran();
7 months ago
int id = SqlSugarClient.Insertable(task).ExecuteReturnIdentity();
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(task);
wcsTaskLog.Id = id;
//锁定库位
startLocation.LocationStatus = 1;
endLocation.LocationStatus = 1;
SqlSugarClient.Updateable(startLocation).ExecuteCommand();
SqlSugarClient.Updateable(endLocation).ExecuteCommand();
SqlSugarClient.Insertable(wcsTaskLog).ExecuteCommand();
SqlSugarClient.AsTenant().CommitTran();
MessageBox.Show($"生成{task.TaskName},起点:{task.CurrPointNo},终点:{task.EndPointNo}");
}
catch (Exception ex)
{
MessageBox.Show($"生成移库任务提交事务异常:{ex.Message}");
SqlSugarClient.AsTenant().RollbackTran();
}
this.Close();
}
}
}