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.

132 lines
4.8 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 = 3001; i <= 3024; i++)
{
this.StartComboBox.Items.Add(i.ToString());
EndComboBox.Items.Add(i.ToString());
}
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 (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();
if (startLocation.LocationStatus != 0)
{
MessageBox.Show("起点库位不可用,状态被锁定!");
return;
}
if (endLocation.LocationStatus != 0)
{
MessageBox.Show("终点库位不可用,状态被锁定!");
return;
}
if (string.IsNullOrEmpty(startLocation.ContainerCode))
{
MessageBox.Show("起点库位无托盘,请检查库存!");
return;
}
if (!string.IsNullOrEmpty(endLocation.ContainerCode))
{
MessageBox.Show($"终点库位已有托盘:{endLocation.ContainerCode},禁止移库,请检查库存!");
return;
}
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();
try
{
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();
}
}
}