库位禁用启用

master
1 year ago
parent 77ed289283
commit 4f0df37ca5

@ -1,10 +1,12 @@
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models namespace Khd.Core.Domain.Models
{ {
[Table("dms_base_alarm_rule")] [Table("dms_base_alarm_rule")]
public class DmsBaseAlarmRule public class DmsBaseAlarmRule
{ {
[Key]
[Column("alarm_rule_id")] [Column("alarm_rule_id")]
public long AlarmRuleId { get; set; } public long AlarmRuleId { get; set; }

@ -1,10 +1,12 @@
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models namespace Khd.Core.Domain.Models
{ {
[Table("dms_base_device_ledger")] [Table("dms_base_device_ledger")]
public class DmsBaseDeviceLedger public class DmsBaseDeviceLedger
{ {
[Key]
[Column("device_id")] [Column("device_id")]
public long DeviceId { get; set; } public long DeviceId { get; set; }

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models namespace Khd.Core.Domain.Models
@ -6,6 +7,7 @@ namespace Khd.Core.Domain.Models
[Table("dms_record_alarm_info")] [Table("dms_record_alarm_info")]
public class DmsRecordAlarmInfo public class DmsRecordAlarmInfo
{ {
[Key]
[Column("alarm_id")] [Column("alarm_id")]
public long AlarmId { get; set; } public long AlarmId { get; set; }

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models namespace Khd.Core.Domain.Models
@ -6,6 +7,7 @@ namespace Khd.Core.Domain.Models
[Table("dms_record_alarm_time")] [Table("dms_record_alarm_time")]
public class DmsRecordAlarmTime public class DmsRecordAlarmTime
{ {
[Key]
[Column("alarm_id")] [Column("alarm_id")]
public long AlarmId { get; set; } public long AlarmId { get; set; }

@ -23,11 +23,11 @@ namespace Khd.Core.Domain.Models
[Column("material_subclass")] [Column("material_subclass")]
public string MaterialSubclass { get; set; } public string MaterialSubclass { get; set; }
[Column("material_type_id")] [Column("material_type_id")]
public string MaterialTypeId { get; set; } public int? MaterialTypeId { get; set; }
[Column("batch_flag")] [Column("batch_flag")]
public string BatchFlag { get; set; } public string BatchFlag { get; set; }
[Column("batch_amount")] [Column("batch_amount")]
public int? BatchAmount { get; set; } public decimal? BatchAmount { get; set; }
[Column("material_unit_id")] [Column("material_unit_id")]
public long? MaterialUnitId { get; set; } public long? MaterialUnitId { get; set; }
[Column("material_unit")] [Column("material_unit")]
@ -43,7 +43,7 @@ namespace Khd.Core.Domain.Models
//[Column("bind_flag")] //[Column("bind_flag")]
//public string BindFlag { get; set; } //public string BindFlag { get; set; }
[Column("factory_id")] [Column("factory_id")]
public string FactoryId { get; set; } public int? FactoryId { get; set; }
[Column("create_org_id")] [Column("create_org_id")]
public long? CreateOrgId { get; set; } public long? CreateOrgId { get; set; }
[Column("use_org_id")] [Column("use_org_id")]
@ -51,9 +51,9 @@ namespace Khd.Core.Domain.Models
[Column("prodline_id")] [Column("prodline_id")]
public int? ProdlineId { get; set; } public int? ProdlineId { get; set; }
[Column("active_flag")] [Column("active_flag")]
public int? ActiveFlag { get; set; } public string ActiveFlag { get; set; }
[Column("deleted_flag")] [Column("deleted_flag")]
public int? DeletedFlag { get; set; } public string DeletedFlag { get; set; }
[Column("remark")] [Column("remark")]
public string Remark { get; set; } public string Remark { get; set; }
[Column("purchase_price_unit_id")] [Column("purchase_price_unit_id")]

@ -224,6 +224,12 @@ namespace Khd.Core.Domain.Models
[Column("container_status")] [Column("container_status")]
public string ContainerStatus { get; set; } public string ContainerStatus { get; set; }
/// <summary>
/// 异常描述
/// </summary>
[Column("exception_desc")]
public string ExceptionDesc { get; set; }
} }
} }

@ -39,7 +39,7 @@ namespace Khd.Core.Wcs
if (wmsBaseLocation.locDeep == 1) if (wmsBaseLocation.locDeep == 1)
{ {
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 2 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault(); WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 2 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
if (wmsLocation != null) if (wmsLocation != null && wmsLocation.locationStatus == "1")
{ {
wmsLocation.locationStatus = "2"; wmsLocation.locationStatus = "2";
dbContext.Update(wmsLocation); dbContext.Update(wmsLocation);
@ -57,7 +57,40 @@ namespace Khd.Core.Wcs
if (wmsBaseLocation.locDeep == 1) if (wmsBaseLocation.locDeep == 1)
{ {
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 2 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault(); WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 2 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
if (wmsLocation != null) if (wmsLocation != null && wmsLocation.locationStatus != "3" && wmsLocation.locationStatus != "9")
{
wmsLocation.locationStatus = "1";
dbContext.Update(wmsLocation);
}
}
}
/// <summary>
/// 报警库位
/// </summary>
public static void AlarmLocation(WmsBaseLocation wmsBaseLocation, DefaultDbContext dbContext)
{
if (wmsBaseLocation.locDeep == 2)
{
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 1 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
if (wmsLocation != null && wmsLocation.locationStatus != "3")
{
wmsLocation.locationStatus = "8";
wmsLocation.ExceptionDesc = "外侧库位异常导致内测库位异常";
dbContext.Update(wmsLocation);
}
}
}
/// <summary>
/// 解除报警库位
/// </summary>
public static void UnAlarmLocation(WmsBaseLocation wmsBaseLocation, DefaultDbContext dbContext)
{
if (wmsBaseLocation.locDeep == 2)
{
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 1 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
if (wmsLocation != null && wmsLocation.locationStatus == "8")
{ {
wmsLocation.locationStatus = "1"; wmsLocation.locationStatus = "1";
dbContext.Update(wmsLocation); dbContext.Update(wmsLocation);

@ -966,33 +966,24 @@
Width="1714" Width="1714"
Height="1060" Height="1060"
Background="#213269" Margin="0,-15,0,0" > Background="#213269" Margin="0,-15,0,0" >
<TextBlock <StackPanel Orientation="Horizontal" >
Width="125" <TextBlock VerticalAlignment="Center" Margin="10" Text="仓库:"/>
Height="70" <ComboBox x:Name="WarehourseId" DisplayMemberPath="warehouseName" Height="50" Width="200" FontSize="25" Margin="5"/>
Margin="-1500,20,0,-100" <TextBlock Text="库位 :" FontSize="25" VerticalAlignment="Center" Foreground="White" />
Text="物料编码 :" <TextBox x:Name="lba_ThrifTtitle6" Style="{StaticResource XingHaoBianMaYangShi}" IsEnabled="true" Width="180" Height="50"></TextBox>
FontSize="25" <TextBlock Text="库位状态 :" FontSize="25" VerticalAlignment="Center" Foreground="White" />
Foreground="White" <ComboBox x:Name="locationStatus" Height="50" Width="200" FontSize="25" Margin="5">
/> <ComboBoxItem Content="" Tag="" />
<Border <ComboBoxItem Content="正常" Tag="1" />
></Border> <ComboBoxItem Content="自动锁定" Tag="2" />
<TextBox x:Name="lba_ThrifTtitle5" Style="{StaticResource XingHaoBianMaYangShi}" IsEnabled="true" <ComboBoxItem Content="人工锁定" Tag="3" />
Width="180" Height="50" Margin="-1150,-8,0,-100"></TextBox> <ComboBoxItem Content="移库锁定" Tag="4" />
<TextBlock <ComboBoxItem Content="合库锁定" Tag="5" />
Width="125" <ComboBoxItem Content="出库锁定" Tag="6" />
Height="70" <ComboBoxItem Content="因外侧库位异常导致内侧库位无法使用" Tag="8" />
Margin="-800,20,0,-100" <ComboBoxItem Content="异常库位" Tag="9" />
Text="库位 :" </ComboBox>
FontSize="25" <Button Content="搜索" FontSize="25" Margin="10" Foreground="White" Height="50" Width="132" Click="btnGetStocK_Click">
Foreground="White"
/>
<Border></Border>
<TextBox x:Name="lba_ThrifTtitle6" Style="{StaticResource XingHaoBianMaYangShi}" IsEnabled="true"
Width="180" Height="50" Margin="-550,-8,0,-100"></TextBox>
<TextBlock Width="125" Height="70" Margin="-100,20,0,-100" Text="仓库 :" FontSize="25" Foreground="White"/>
<Border></Border>
<ComboBox x:Name="WarehourseId" DisplayMemberPath="warehouseName" Height="50" Margin="140,0,0,-100" Width="200" FontSize="25" />
<Button Content="搜索" FontSize="25" Margin="600,-8,0,-100" Foreground="White" Height="50" Width="132" Click="btnGetStocK_Click">
<Button.Template > <Button.Template >
<ControlTemplate TargetType="{x:Type Button}" > <ControlTemplate TargetType="{x:Type Button}" >
<Border BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="1" CornerRadius="4,4,4,4"> <Border BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="1" CornerRadius="4,4,4,4">
@ -1002,14 +993,33 @@
</ControlTemplate> </ControlTemplate>
</Button.Template> </Button.Template>
</Button> </Button>
<!-- 订单信息 --> <Button Content="锁定库位" FontSize="25" Margin="10" Foreground="White" Height="50" Width="132" Click="LockLocation_Click">
<Grid Width="1711" Height="1070" HorizontalAlignment="Left"> <Button.Template >
<ControlTemplate TargetType="{x:Type Button}" >
<Border BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="1" CornerRadius="4,4,4,4">
<Border.Background>#346DFF</Border.Background>
<ContentPresenter Content="{TemplateBinding ContentControl.Content}" HorizontalAlignment="Center" VerticalAlignment="Center" ></ContentPresenter>
</Border>
</ControlTemplate>
</Button.Template>
</Button>
<Button Content="解锁库位" FontSize="25" Margin="10" Foreground="White" Height="50" Width="132" Click="UnLockLocation_Click">
<Button.Template >
<ControlTemplate TargetType="{x:Type Button}" >
<Border BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="1" CornerRadius="4,4,4,4">
<Border.Background>#346DFF</Border.Background>
<ContentPresenter Content="{TemplateBinding ContentControl.Content}" HorizontalAlignment="Center" VerticalAlignment="Center" ></ContentPresenter>
</Border>
</ControlTemplate>
</Button.Template>
</Button>
</StackPanel>
<Grid HorizontalAlignment="Left" Height="1000">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="10*"/>
<RowDefinition Height="88*"/> <RowDefinition Height="88*"/>
<RowDefinition Height="auto"/> <RowDefinition Height="auto"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid Grid.Row="1"> <Grid Grid.Row="0" >
<DataGrid <DataGrid
x:Name="LoadMaterial1" x:Name="LoadMaterial1"
AlternationCount="2" AlternationCount="2"
@ -1024,15 +1034,31 @@
IsReadOnly="True" IsReadOnly="True"
LoadingRow="dgData_LoadingRow" LoadingRow="dgData_LoadingRow"
RowHeaderWidth="0" RowHeaderWidth="0"
SelectionMode="Single" FontSize="16" HorizontalAlignment="Left" Width="1711" Margin="0,0,0,10" SelectionMode="Single" FontSize="16" HorizontalAlignment="Left"
> >
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTemplateColumn Width="130*" Header="选择">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.Tag>
<Binding Path="IsSelected"/>
</Grid.Tag>
<CheckBox
Style="{StaticResource CheckBoxStyle}"
Click="LocationPersonBox_Click"
/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn <DataGridTemplateColumn
x:Name="orderControlData" x:Name="orderControlData"
Width="100" Width="100"
MinWidth="10" MinWidth="10"
Header=" 序号" Header=" 序号"
IsReadOnly="True"> IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate>
<TextBlock <TextBlock
@ -1045,9 +1071,34 @@
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
<DataGridTextColumn
Width="300*"
Binding="{Binding LocationCode}"
CanUserSort="False"
ElementStyle="{StaticResource dgCell}"
FontSize="20"
Header="库位"
IsReadOnly="True" />
<DataGridTextColumn <DataGridTextColumn
Width="200*" Width="200*"
Binding="{Binding materialId}" Binding="{Binding ContainerCode}"
CanUserSort="False"
ElementStyle="{StaticResource dgCell}"
FontSize="20"
Header="RFID"
IsReadOnly="True" />
<DataGridTextColumn
Width="180*"
Binding="{Binding LocationStatus}"
CanUserSort="False"
ElementStyle="{StaticResource dgCell}"
FontSize="20"
Header="库位状态"
IsReadOnly="True" />
<DataGridTextColumn
Width="200*"
Binding="{Binding MaterialId}"
CanUserSort="False" CanUserSort="False"
ElementStyle="{StaticResource dgCell}" ElementStyle="{StaticResource dgCell}"
FontSize="20" FontSize="20"
@ -1056,39 +1107,32 @@
<DataGridTextColumn <DataGridTextColumn
Width="200*" Width="200*"
Binding="{Binding instockBatch}" Binding="{Binding SaleOrderId}"
CanUserSort="False" CanUserSort="False"
ElementStyle="{StaticResource dgCell}" ElementStyle="{StaticResource dgCell}"
FontSize="20" FontSize="20"
Header="批次号" Header="销售订单"
IsReadOnly="True" /> IsReadOnly="True" />
<DataGridTextColumn <!--<DataGridTextColumn
Width="180*" Width="180*"
Binding="{Binding warehouseId}" Binding="{Binding WarehouseId}"
CanUserSort="False" CanUserSort="False"
ElementStyle="{StaticResource dgCell}" ElementStyle="{StaticResource dgCell}"
FontSize="20" FontSize="20"
Header="仓库" Header="仓库"
IsReadOnly="True" /> IsReadOnly="True" />-->
<DataGridTextColumn
Width="300*"
Binding="{Binding locationCode}"
CanUserSort="False"
ElementStyle="{StaticResource dgCell}"
FontSize="20"
Header="库位"
IsReadOnly="True" />
<DataGridTextColumn <DataGridTextColumn
Width="180*" Width="180*"
Binding="{Binding floorNo}" Binding="{Binding FloorNo}"
CanUserSort="False" CanUserSort="False"
ElementStyle="{StaticResource dgCell}" ElementStyle="{StaticResource dgCell}"
FontSize="20" FontSize="20"
Header="楼层" Header="楼层"
IsReadOnly="True" /> IsReadOnly="True" />
<DataGridTextColumn
<!--<DataGridTextColumn
Width="180*" Width="180*"
Binding="{Binding totalAmount}" Binding="{Binding totalAmount}"
CanUserSort="False" CanUserSort="False"
@ -1111,7 +1155,7 @@
ElementStyle="{StaticResource dgCell}" ElementStyle="{StaticResource dgCell}"
FontSize="20" FontSize="20"
Header="冻结数量" Header="冻结数量"
IsReadOnly="True" /> IsReadOnly="True" />-->
</DataGrid.Columns> </DataGrid.Columns>
@ -1153,7 +1197,7 @@
</DataGrid.ColumnHeaderStyle> </DataGrid.ColumnHeaderStyle>
</DataGrid> </DataGrid>
</Grid> </Grid>
<Grid Grid.Row="2" HorizontalAlignment="Center"> <Grid Grid.Row="1" HorizontalAlignment="Center">
<hc:Pagination x:Name="Pagination1" MaxWidth="1500" MaxPageCount="1" Margin="0,0,0,15" PageUpdated="Pagination_PageUpdated" IsJumpEnabled="True" HorizontalAlignment="Center" Width="339" /> <hc:Pagination x:Name="Pagination1" MaxWidth="1500" MaxPageCount="1" Margin="0,0,0,15" PageUpdated="Pagination_PageUpdated" IsJumpEnabled="True" HorizontalAlignment="Center" Width="339" />
</Grid> </Grid>
</Grid> </Grid>

@ -11,8 +11,10 @@ using Khd.Core.Wpf.Scan;
using Khd.Core.Wpf.TaskForm; using Khd.Core.Wpf.TaskForm;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Logging; using Masuit.Tools.Logging;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.IdentityModel.Tokens;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
@ -28,6 +30,7 @@ using System.Windows.Controls;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Threading; using System.Windows.Threading;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;
using static HandyControl.Tools.Interop.InteropValues;
namespace Khd.Core.Wpf.Form namespace Khd.Core.Wpf.Form
{ {
@ -36,7 +39,7 @@ namespace Khd.Core.Wpf.Form
/// </summary> /// </summary>
public partial class FormBoardT : Window public partial class FormBoardT : Window
{ {
private List<long> productIds = new List<long>() { 231, 531, 521 };
public static long? UserId = 1; public static long? UserId = 1;
public static readonly JcSnowId _jcSnowId = new JcSnowId(); public static readonly JcSnowId _jcSnowId = new JcSnowId();
private readonly IHost _host; private readonly IHost _host;
@ -57,7 +60,7 @@ namespace Khd.Core.Wpf.Form
public List<MesBaseBarcodeInfo> barcodeLsit = new List<MesBaseBarcodeInfo>(); public List<MesBaseBarcodeInfo> barcodeLsit = new List<MesBaseBarcodeInfo>();
private int pageCount = 15; private int pageCount = 15;
private object updateLock = new object(); private object updateLock = new object();
private readonly List<LocationDto> locationDtos = new List<LocationDto>();
private ObservableCollection<SelectItemModel> itemsControlItems; private ObservableCollection<SelectItemModel> itemsControlItems;
//人工叫料选中类 //人工叫料选中类
@ -117,7 +120,6 @@ namespace Khd.Core.Wpf.Form
{ {
itemsControlItems = new ObservableCollection<SelectItemModel>(); itemsControlItems = new ObservableCollection<SelectItemModel>();
itemsControl.ItemsSource = itemsControlItems; itemsControl.ItemsSource = itemsControlItems;
Task.Run(() => Task.Run(() =>
{ {
foreach (var plcConfig in SystemData.PlcConfigs) foreach (var plcConfig in SystemData.PlcConfigs)
@ -876,6 +878,7 @@ namespace Khd.Core.Wpf.Form
{ {
Pagination1.PageIndex = 1; Pagination1.PageIndex = 1;
this.EquipListSelectDy.SelectedIndex = -1; this.EquipListSelectDy.SelectedIndex = -1;
locationDtos.Clear();
GetBaseLocations(); GetBaseLocations();
} }
/// <summary> /// <summary>
@ -888,28 +891,54 @@ namespace Khd.Core.Wpf.Form
var scope = _host.Services.CreateScope(); var scope = _host.Services.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var locationCode = lba_ThrifTtitle6.Text; var locationCode = lba_ThrifTtitle6.Text;
long materialId = 0; string sql;
try if (productIds.Contains(warehouse.warehouseId))
{ {
materialId = Convert.ToInt64(lba_ThrifTtitle5.Text); sql = $@"select distinct t1.location_id LocationId,
t1.location_code LocationCode,
t1.location_status LocationStatus,
t1.warehouse_floor FloorNo,
t2.pallet_info_code ContainerCode,
t2.material_id MaterialId,
t2.sale_order_id SaleOrderId
from wms_base_location t1
left join wms_raw_stock t2
on t1.location_code = t2.location_code
where t1.warehouse_id = {warehouse.warehouseId}";
} }
catch else
{ {
sql = $@"select distinct t1.location_id LocationId,
t1.location_code LocationCode,
t1.warehouse_floor FloorNo,
t1.location_status LocationStatus,
t2.pallet_info_code ContainerCode,
t2.product_id MaterialId,
t2.sale_order_id SaleOrderId
from wms_base_location t1
left join wms_product_stock t2
on t1.location_code = t2.location_code
where t1.warehouse_id = {warehouse.warehouseId}";
} }
int sum = dbContext.WmsRawStock if (!string.IsNullOrEmpty(locationCode))
.WhereIf(!string.IsNullOrEmpty(lba_ThrifTtitle6.Text), t => t.locationCode.Contains(locationCode)) {
.WhereIf(!string.IsNullOrEmpty(lba_ThrifTtitle5.Text), t => t.materialId == materialId) sql += " and t1.location_code like '%" + locationCode + "%'";
.Where(t => t.warehouseId == warehouse.warehouseId) }
.Count(); if (!string.IsNullOrEmpty(this.locationStatus.SelectedItem?.ToString()))
{
if(this.locationStatus.SelectedItem is ComboBoxItem item&&!string.IsNullOrEmpty(item.Tag?.ToString()))
{
sql += " and t1.location_status = " + item.Tag + "";
}
}
var data = dbContext.ExecuteSqlQuery<LocationDto>(sql);
int sum = data.Count;
data = data.Skip((this.Pagination1.PageIndex - 1) * this.pageCount).Take(this.pageCount).ToList();
data.ForEach(t =>
{
t.LocationStatus = SystemData.LocationStatusDic.GetValueOrDefault(t.LocationStatus, "未知");
});
Pagination1.MaxPageCount = (sum / pageCount) + (sum % pageCount == 0 ? 0 : 1); 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 = null;
this.LoadMaterial1.ItemsSource = data; this.LoadMaterial1.ItemsSource = data;
this.LoadMaterial1.Items.Refresh(); this.LoadMaterial1.Items.Refresh();
@ -4158,6 +4187,104 @@ namespace Khd.Core.Wpf.Form
} }
} }
private void LocationPersonBox_Click(object sender, RoutedEventArgs e)
{
if (sender is CheckBox check)
{
if (check.IsChecked == true)
{
if (LoadMaterial1.SelectedItem is LocationDto location)
{
locationDtos.Add(location);
}
}
else
{
if (LoadMaterial1.SelectedItem is LocationDto location)
{
locationDtos.Remove(location);
}
}
}
}
private void LockLocation_Click(object sender, RoutedEventArgs e)
{
if (locationDtos.Count == 0)
{
HandyControl.Controls.MessageBox.Show("请选择库位!");
return;
}
List<string> locationCodes = locationDtos.Select(t => t.LocationCode).ToList();
MessageBoxResult messageBoxResult = HandyControl.Controls.MessageBox.Show($"锁定库位{string.Join("\n", locationCodes)}", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question);
if (messageBoxResult == MessageBoxResult.OK)
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
using var transaction = dbContext.Database.BeginTransaction();
try
{
List<WmsBaseLocation> wmsBaseLocations = dbContext.WmsBaseLocation.Where(t => locationCodes.Contains(t.locationCode)).ToList();
foreach (var location in wmsBaseLocations)
{
location.locationStatus = "3";
location.ExceptionDesc = "人工锁定";
SystemData.AlarmLocation(location, dbContext);
dbContext.Update(location);
}
dbContext.SaveChanges();
transaction.Commit();
locationDtos.Clear();
GetBaseLocations();
HandyControl.Controls.MessageBox.Show("锁定成功!");
}
catch
{
transaction.Rollback();
}
}
}
private void UnLockLocation_Click(object sender, RoutedEventArgs e)
{
if (locationDtos.Count == 0)
{
HandyControl.Controls.MessageBox.Show("请选择库位!");
return;
}
List<string> locationCodes = locationDtos.Select(t => t.LocationCode).ToList();
MessageBoxResult messageBoxResult = HandyControl.Controls.MessageBox.Show($"解锁库位{string.Join("\n", locationCodes)}", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question);
if (messageBoxResult == MessageBoxResult.OK)
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
using var transaction = dbContext.Database.BeginTransaction();
try
{
List<WmsBaseLocation> wmsBaseLocations = dbContext.WmsBaseLocation.Where(t => locationCodes.Contains(t.locationCode)).ToList();
foreach (var location in wmsBaseLocations)
{
location.locationStatus = "1";
location.ExceptionDesc = "人工解锁";
SystemData.UnAlarmLocation(location, dbContext);
dbContext.Update(location);
}
dbContext.SaveChanges();
transaction.Commit();
locationDtos.Clear();
GetBaseLocations();
HandyControl.Controls.MessageBox.Show("解锁成功!");
}
catch
{
transaction.Rollback();
}
}
}
} }
} }

@ -1,5 +1,7 @@
using Khd.Core.Domain.Models; using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Windows.Media; using System.Windows.Media;
namespace Khd.Core.Wpf namespace Khd.Core.Wpf
@ -84,5 +86,50 @@ namespace Khd.Core.Wpf
public static List<BaseDictionary> BaseDictionary = new List<BaseDictionary>(); public static List<BaseDictionary> BaseDictionary = new List<BaseDictionary>();
public static List<PlcConfig> PlcConfigs = new List<PlcConfig>(); public static List<PlcConfig> PlcConfigs = new List<PlcConfig>();
public static Dictionary<int, Plc.S7.Plc> PlcDic = new Dictionary<int, Plc.S7.Plc>(); public static Dictionary<int, Plc.S7.Plc> PlcDic = new Dictionary<int, Plc.S7.Plc>();
public static readonly Dictionary<string, string> LocationStatusDic = new Dictionary<string, string>()
{
{"1","正常" },
{"2","自动锁定" },
{"3","人工锁定" },
{"4","移库锁定" },
{"5","合库锁定" },
{"6","出库锁定" },
{"8","因外侧库位异常导致内侧库位无法使用" },
{"9","异常库位" },
};
/// <summary>
/// 报警库位
/// </summary>
public static void AlarmLocation(WmsBaseLocation wmsBaseLocation, DefaultDbContext dbContext)
{
if (wmsBaseLocation.locDeep == 2)
{
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 1 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
if (wmsLocation != null&&wmsLocation.locationStatus!="3")
{
wmsLocation.locationStatus = "8";
wmsLocation.ExceptionDesc = "外侧库位异常导致内测库位异常";
dbContext.Update(wmsLocation);
}
}
}
/// <summary>
/// 解除报警库位
/// </summary>
public static void UnAlarmLocation(WmsBaseLocation wmsBaseLocation, DefaultDbContext dbContext)
{
if (wmsBaseLocation.locDeep == 2)
{
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 1 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
if (wmsLocation != null && wmsLocation.locationStatus == "8")
{
wmsLocation.locationStatus = "1";
dbContext.Update(wmsLocation);
}
}
}
} }
} }

@ -3,8 +3,8 @@
//mysql //mysql
//"DefaultConnection": "server=106.12.13.113;port=3306;database=khd_jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True" //"DefaultConnection": "server=106.12.13.113;port=3306;database=khd_jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True"
//khd //khd
"DefaultConnection": "server=172.16.12.100;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khdrkjy2024...;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" //"DefaultConnection": "server=172.16.12.100;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khdrkjy2024...;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
// "DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True" "DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True"
// "DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" // "DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
}, },
"PlcConfigs": [ "PlcConfigs": [

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Khd.Core.Wpf.dto
{
internal class LocationDto
{
public long LocationId { get; set; }
public string LocationCode { get; set; }
public string LocationStatus { get; set; }
public string ContainerCode { get; set; }
public int MaterialId { get; set; }
public int SaleOrderId {get; set; }
public int FloorNo { get; set; }
}
}
Loading…
Cancel
Save