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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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++)
{
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");
}
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;
}
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;
}
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;
}
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();
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();
}
}
}