diff --git a/src/Khd.Core.Domain/Models/DmsBaseAlarmRule.cs b/src/Khd.Core.Domain/Models/DmsBaseAlarmRule.cs
index 7a673af..b5f0480 100644
--- a/src/Khd.Core.Domain/Models/DmsBaseAlarmRule.cs
+++ b/src/Khd.Core.Domain/Models/DmsBaseAlarmRule.cs
@@ -1,10 +1,12 @@
-using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models
{
[Table("dms_base_alarm_rule")]
public class DmsBaseAlarmRule
{
+ [Key]
[Column("alarm_rule_id")]
public long AlarmRuleId { get; set; }
diff --git a/src/Khd.Core.Domain/Models/DmsBaseDeviceLedger.cs b/src/Khd.Core.Domain/Models/DmsBaseDeviceLedger.cs
index 9b47bee..6ceefb8 100644
--- a/src/Khd.Core.Domain/Models/DmsBaseDeviceLedger.cs
+++ b/src/Khd.Core.Domain/Models/DmsBaseDeviceLedger.cs
@@ -1,10 +1,12 @@
-using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models
{
[Table("dms_base_device_ledger")]
public class DmsBaseDeviceLedger
{
+ [Key]
[Column("device_id")]
public long DeviceId { get; set; }
diff --git a/src/Khd.Core.Domain/Models/DmsRecordAlarmInfo.cs b/src/Khd.Core.Domain/Models/DmsRecordAlarmInfo.cs
index 671fb2b..fbd1ac3 100644
--- a/src/Khd.Core.Domain/Models/DmsRecordAlarmInfo.cs
+++ b/src/Khd.Core.Domain/Models/DmsRecordAlarmInfo.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models
@@ -6,6 +7,7 @@ namespace Khd.Core.Domain.Models
[Table("dms_record_alarm_info")]
public class DmsRecordAlarmInfo
{
+ [Key]
[Column("alarm_id")]
public long AlarmId { get; set; }
diff --git a/src/Khd.Core.Domain/Models/DmsRecordAlarmTime.cs b/src/Khd.Core.Domain/Models/DmsRecordAlarmTime.cs
index ebcbc7a..ed58954 100644
--- a/src/Khd.Core.Domain/Models/DmsRecordAlarmTime.cs
+++ b/src/Khd.Core.Domain/Models/DmsRecordAlarmTime.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models
@@ -6,6 +7,7 @@ namespace Khd.Core.Domain.Models
[Table("dms_record_alarm_time")]
public class DmsRecordAlarmTime
{
+ [Key]
[Column("alarm_id")]
public long AlarmId { get; set; }
diff --git a/src/Khd.Core.Domain/Models/MesBaseMaterialInfo.cs b/src/Khd.Core.Domain/Models/MesBaseMaterialInfo.cs
index 2137cb9..960e92b 100644
--- a/src/Khd.Core.Domain/Models/MesBaseMaterialInfo.cs
+++ b/src/Khd.Core.Domain/Models/MesBaseMaterialInfo.cs
@@ -23,11 +23,11 @@ namespace Khd.Core.Domain.Models
[Column("material_subclass")]
public string MaterialSubclass { get; set; }
[Column("material_type_id")]
- public string MaterialTypeId { get; set; }
+ public int? MaterialTypeId { get; set; }
[Column("batch_flag")]
public string BatchFlag { get; set; }
[Column("batch_amount")]
- public int? BatchAmount { get; set; }
+ public decimal? BatchAmount { get; set; }
[Column("material_unit_id")]
public long? MaterialUnitId { get; set; }
[Column("material_unit")]
@@ -43,7 +43,7 @@ namespace Khd.Core.Domain.Models
//[Column("bind_flag")]
//public string BindFlag { get; set; }
[Column("factory_id")]
- public string FactoryId { get; set; }
+ public int? FactoryId { get; set; }
[Column("create_org_id")]
public long? CreateOrgId { get; set; }
[Column("use_org_id")]
@@ -51,9 +51,9 @@ namespace Khd.Core.Domain.Models
[Column("prodline_id")]
public int? ProdlineId { get; set; }
[Column("active_flag")]
- public int? ActiveFlag { get; set; }
+ public string ActiveFlag { get; set; }
[Column("deleted_flag")]
- public int? DeletedFlag { get; set; }
+ public string DeletedFlag { get; set; }
[Column("remark")]
public string Remark { get; set; }
[Column("purchase_price_unit_id")]
diff --git a/src/Khd.Core.Domain/Models/WmsBaseLocation.cs b/src/Khd.Core.Domain/Models/WmsBaseLocation.cs
index 146cd95..b4b0ce2 100644
--- a/src/Khd.Core.Domain/Models/WmsBaseLocation.cs
+++ b/src/Khd.Core.Domain/Models/WmsBaseLocation.cs
@@ -224,6 +224,12 @@ namespace Khd.Core.Domain.Models
[Column("container_status")]
public string ContainerStatus { get; set; }
+
+ ///
+ /// 异常描述
+ ///
+ [Column("exception_desc")]
+ public string ExceptionDesc { get; set; }
}
}
diff --git a/src/Khd.Core.Wcs/SystemData.cs b/src/Khd.Core.Wcs/SystemData.cs
index 19bbca4..10f3fb0 100644
--- a/src/Khd.Core.Wcs/SystemData.cs
+++ b/src/Khd.Core.Wcs/SystemData.cs
@@ -39,7 +39,7 @@ namespace Khd.Core.Wcs
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();
- if (wmsLocation != null)
+ if (wmsLocation != null && wmsLocation.locationStatus == "1")
{
wmsLocation.locationStatus = "2";
dbContext.Update(wmsLocation);
@@ -57,7 +57,40 @@ namespace Khd.Core.Wcs
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();
- if (wmsLocation != null)
+ if (wmsLocation != null && wmsLocation.locationStatus != "3" && wmsLocation.locationStatus != "9")
+ {
+ wmsLocation.locationStatus = "1";
+ dbContext.Update(wmsLocation);
+ }
+ }
+ }
+
+ ///
+ /// 报警库位
+ ///
+ 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);
+ }
+ }
+ }
+
+ ///
+ /// 解除报警库位
+ ///
+ 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);
diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml b/src/Khd.Core.Wpf/Form/FormBoardT.xaml
index 7a6e2dc..195ec8b 100644
--- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml
+++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml
@@ -966,73 +966,99 @@
Width="1714"
Height="1060"
Background="#213269" Margin="0,-15,0,0" >
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ IsReadOnly="True" />-->
-
-
+ IsReadOnly="True" />-->
@@ -1153,7 +1197,7 @@
-
+
diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs
index 8df8d76..035e43a 100644
--- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs
+++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs
@@ -11,8 +11,10 @@ using Khd.Core.Wpf.Scan;
using Khd.Core.Wpf.TaskForm;
using Masuit.Tools;
using Masuit.Tools.Logging;
+using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
+using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@@ -28,6 +30,7 @@ using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Threading;
using Z.EntityFramework.Plus;
+using static HandyControl.Tools.Interop.InteropValues;
namespace Khd.Core.Wpf.Form
{
@@ -36,7 +39,7 @@ namespace Khd.Core.Wpf.Form
///
public partial class FormBoardT : Window
{
-
+ private List productIds = new List() { 231, 531, 521 };
public static long? UserId = 1;
public static readonly JcSnowId _jcSnowId = new JcSnowId();
private readonly IHost _host;
@@ -57,7 +60,7 @@ namespace Khd.Core.Wpf.Form
public List barcodeLsit = new List();
private int pageCount = 15;
private object updateLock = new object();
-
+ private readonly List locationDtos = new List();
private ObservableCollection itemsControlItems;
//人工叫料选中类
@@ -117,7 +120,6 @@ namespace Khd.Core.Wpf.Form
{
itemsControlItems = new ObservableCollection();
itemsControl.ItemsSource = itemsControlItems;
-
Task.Run(() =>
{
foreach (var plcConfig in SystemData.PlcConfigs)
@@ -876,6 +878,7 @@ namespace Khd.Core.Wpf.Form
{
Pagination1.PageIndex = 1;
this.EquipListSelectDy.SelectedIndex = -1;
+ locationDtos.Clear();
GetBaseLocations();
}
///
@@ -888,28 +891,54 @@ namespace Khd.Core.Wpf.Form
var scope = _host.Services.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService();
var locationCode = lba_ThrifTtitle6.Text;
- long materialId = 0;
- try
+ string sql;
+ 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
- .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();
+ if (!string.IsNullOrEmpty(locationCode))
+ {
+ sql += " and t1.location_code like '%" + locationCode + "%'";
+ }
+ 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(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);
- 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();
@@ -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 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();
+ using var transaction = dbContext.Database.BeginTransaction();
+ try
+ {
+ List 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 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();
+ using var transaction = dbContext.Database.BeginTransaction();
+ try
+ {
+ List 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();
+ }
+ }
+ }
+
}
}
diff --git a/src/Khd.Core.Wpf/SystemData.cs b/src/Khd.Core.Wpf/SystemData.cs
index bf25218..bb5781b 100644
--- a/src/Khd.Core.Wpf/SystemData.cs
+++ b/src/Khd.Core.Wpf/SystemData.cs
@@ -1,5 +1,7 @@
using Khd.Core.Domain.Models;
+using Khd.Core.EntityFramework;
using System.Collections.Generic;
+using System.Linq;
using System.Windows.Media;
namespace Khd.Core.Wpf
@@ -84,5 +86,50 @@ namespace Khd.Core.Wpf
public static List BaseDictionary = new List();
public static List PlcConfigs = new List();
public static Dictionary PlcDic = new Dictionary();
+
+ public static readonly Dictionary LocationStatusDic = new Dictionary()
+ {
+ {"1","正常" },
+ {"2","自动锁定" },
+ {"3","人工锁定" },
+ {"4","移库锁定" },
+ {"5","合库锁定" },
+ {"6","出库锁定" },
+ {"8","因外侧库位异常导致内侧库位无法使用" },
+ {"9","异常库位" },
+ };
+
+ ///
+ /// 报警库位
+ ///
+ 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);
+ }
+ }
+ }
+
+ ///
+ /// 解除报警库位
+ ///
+ 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);
+ }
+ }
+ }
}
}
diff --git a/src/Khd.Core.Wpf/appsettings.json b/src/Khd.Core.Wpf/appsettings.json
index af2784c..92204c3 100644
--- a/src/Khd.Core.Wpf/appsettings.json
+++ b/src/Khd.Core.Wpf/appsettings.json
@@ -3,8 +3,8 @@
//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"
//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=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=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=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
},
"PlcConfigs": [
diff --git a/src/Khd.Core.Wpf/dto/LocationDto.cs b/src/Khd.Core.Wpf/dto/LocationDto.cs
new file mode 100644
index 0000000..c560d4d
--- /dev/null
+++ b/src/Khd.Core.Wpf/dto/LocationDto.cs
@@ -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; }
+ }
+}