Merge branch 'develop' into 煤科院货架液晶显示屏

This commit is contained in:
hehaibing-1996
2024-11-11 18:01:57 +08:00
11 changed files with 358 additions and 9 deletions

View File

@ -5,6 +5,7 @@ using System.Data.OscarClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCS.BLL.Config;
using WCS.BLL.DbModels;
using WCS.BLL.HardWare;
using WCS.DAL.Db;
@ -81,6 +82,21 @@ namespace WCS.BLL.Manager
break;
}
}
else if (solveType == SolveTypeEnum.)
{
switch (warningInManager.WarningType)
{
case WarningTypeEnum.:
DisableNoScan(warningInManager);
break;
case WarningTypeEnum.:
DisableNoScan(warningInManager);
break;
case WarningTypeEnum.:
DisableNoScan(warningInManager);
break;
}
}
else if (solveType == SolveTypeEnum.)
{
//不发指令了
@ -143,9 +159,85 @@ namespace WCS.BLL.Manager
#region
public static void SolveNoScan(WebSocketMessageModel warning)
/// <summary>
/// 未扫描上架禁用库位
/// </summary>
/// <param name="warning"></param>
public static void DisableNoScan(WebSocketMessageModel warning)
{
#region
try
{
//获取库位
var storeInfo = DbHelp.db.Queryable<StoreInfo>()
.Where(t => t.ShelfId == warning.ShelfId)
.Where(t => t.Id == warning.StoreId)
.First();
if (storeInfo != null)
{
storeInfo.CurrentMatSn = "禁用";
DbHelp.db.Updateable(storeInfo).ExecuteCommand();
if (LocalFile.Config.IsMx)
{
var DingDing = string.Empty;
MXBackgroundThread.SendDingDingMsg($"【智能货架】库位{storeInfo.StoreCode}被 {warning.SolvedUser} “未扫描上架弹窗”屏蔽,请及时调查或维保硬件!", new List<string> { "104379", "103595" }, ref DingDing);
Logs.Write($"【智能货架】库位{storeInfo.StoreCode}被 {warning.SolvedUser} “未扫描上架弹窗”屏蔽,请及时调查或维保硬件!");
#region
Task.Run(() =>
{
var disabledStore = DbHelp.db.Queryable<StoreInfo>()
.Where(t => t.CurrentMatSn == "禁用")
.ToList();
var allStore = DbHelp.db.Queryable<StoreInfo>()
.ToList();
var disabledCount = disabledStore.Count();
var allCount = allStore.Count();
var disabledACount = disabledStore.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var allACount = allStore.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var disabledCCount = disabledStore.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var allCCount = allStore.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var disabledModule = DbHelp.db.Queryable<ModuleInfo>()
.Where(t => t.IsEnable == false)
.ToList();
var allModule = DbHelp.db.Queryable<ModuleInfo>()
.ToList();
var disabledModuleCount = disabledModule.Count();
var allModuleCount = allModule.Count();
var disabledAModuleCount = disabledModule.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var allAModuleCount = allModule.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var disabledCModuleCount = disabledModule.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var allCModuleCount = allModule.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var message = $"【智能货架】当前库位总数{allCount},禁用总数{disabledCount},禁用率{((double)disabledCount / allCount).ToString("P")}" +
$"其中A区库位总数{allACount},禁用数{disabledACount},禁用率{((double)disabledACount / allACount).ToString("P")}" +
$"C区库位总数{allCCount},禁用数{disabledCCount},禁用率{((double)disabledCCount / allCCount).ToString("P")}。\r\n" +
$"当前模组总数{allModuleCount},禁用总数{disabledModuleCount},禁用率{((double)disabledModuleCount / allModuleCount).ToString("P")}" +
$"其中A区模组总数{allAModuleCount},禁用数{disabledAModuleCount},禁用率{((double)disabledAModuleCount / allAModuleCount).ToString("P")}" +
$"C区模组总数{allCModuleCount},禁用数{disabledCModuleCount},禁用率{((double)disabledCModuleCount / allCModuleCount).ToString("P")}。";
Logs.Write(message);
var dd = string.Empty;
MXBackgroundThread.SendDingDingMsg(message, new List<string> { "104379", "103595" }, ref dd);
});
#endregion
}
}
}
catch (Exception e)
{
DbHelp.db.RollbackTran();
}
#endregion
}
public static void SolveLoss(WebSocketMessageModel warning)
@ -244,6 +336,7 @@ namespace WCS.BLL.Manager
#endregion
}
public static void GoInRightMode(WebSocketMessageModel warning)
{
try

View File

@ -73,5 +73,6 @@ namespace WCS.BLL.Services.IService
/// <returns></returns>
public Task<ResponseCommon> disableOrEnableStore(DisableOrEnableStoreRequest request);
public Task<ResponseCommon> getDisablePercent();
}
}

View File

@ -350,7 +350,55 @@ namespace WCS.BLL.Services.Service
if (LocalFile.Config.IsMx)
{
var DingDing = string.Empty;
MXBackgroundThread.SendDingDingMsg($"【智能货架】模组{moduleInfo.ModuleCode}被屏蔽", new List<string> { "104379", "103595" }, ref DingDing);
MXBackgroundThread.SendDingDingMsg($"【智能货架】模组{moduleInfo.ModuleCode}被屏蔽(模组管理),请及时调查或维保硬件!", new List<string> { "104379", "103595" }, ref DingDing);
Logs.Write($"【智能货架】模组{moduleInfo.ModuleCode}被屏蔽(模组管理),请及时调查或维保硬件!");
#region
Task.Run(() =>
{
var disabledStore = DbHelp.db.Queryable<StoreInfo>()
.Where(t => t.CurrentMatSn == "禁用")
.ToList();
var allStore = DbHelp.db.Queryable<StoreInfo>()
.ToList();
var disabledCount = disabledStore.Count();
var allCount = allStore.Count();
var disabledACount = disabledStore.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var allACount = allStore.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var disabledCCount = disabledStore.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var allCCount = allStore.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var disabledModule = DbHelp.db.Queryable<ModuleInfo>()
.Where(t => t.IsEnable == false)
.ToList();
var allModule = DbHelp.db.Queryable<ModuleInfo>()
.ToList();
var disabledModuleCount = disabledModule.Count();
var allModuleCount = allModule.Count();
var disabledAModuleCount = disabledModule.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var allAModuleCount = allModule.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var disabledCModuleCount = disabledModule.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var allCModuleCount = allModule.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var message = $"【智能货架】当前库位总数{allCount},禁用总数{disabledCount},禁用率{((double)disabledCount / allCount).ToString("P")}" +
$"其中A区库位总数{allACount},禁用数{disabledACount},禁用率{((double)disabledACount / allACount).ToString("P")}" +
$"C区库位总数{allCCount},禁用数{disabledCCount},禁用率{((double)disabledCCount / allCCount).ToString("P")}。\r\n" +
$"当前模组总数{allModuleCount},禁用总数{disabledModuleCount},禁用率{((double)disabledModuleCount / allModuleCount).ToString("P")}" +
$"其中A区模组总数{allAModuleCount},禁用数{disabledAModuleCount},禁用率{((double)disabledAModuleCount / allAModuleCount).ToString("P")}" +
$"C区模组总数{allCModuleCount},禁用数{disabledCModuleCount},禁用率{((double)disabledCModuleCount / allCModuleCount).ToString("P")}。";
Logs.Write(message);
var dd = string.Empty;
MXBackgroundThread.SendDingDingMsg(message, new List<string> { "104379", "103595" }, ref dd);
});
#endregion
}
}
else
@ -552,7 +600,56 @@ namespace WCS.BLL.Services.Service
if (LocalFile.Config.IsMx)
{
var DingDing = string.Empty;
MXBackgroundThread.SendDingDingMsg($"【智能货架】库位{storeInfo.StoreCode}被屏蔽", new List<string> { "104379", "103595" }, ref DingDing);
MXBackgroundThread.SendDingDingMsg($"【智能货架】库位{storeInfo.StoreCode}被屏蔽(库位管理),请及时调查或维保硬件!", new List<string> { "104379", "103595" }, ref DingDing);
Logs.Write($"【智能货架】库位{storeInfo.StoreCode}被屏蔽(库位管理),请及时调查或维保硬件!");
#region
Task.Run(() =>
{
var disabledStore = DbHelp.db.Queryable<StoreInfo>()
.Where(t => t.CurrentMatSn == "禁用")
.ToList();
var allStore = DbHelp.db.Queryable<StoreInfo>()
.ToList();
var disabledCount = disabledStore.Count();
var allCount = allStore.Count();
var disabledACount = disabledStore.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var allACount = allStore.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var disabledCCount = disabledStore.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var allCCount = allStore.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var disabledModule = DbHelp.db.Queryable<ModuleInfo>()
.Where(t => t.IsEnable == false)
.ToList();
var allModule = DbHelp.db.Queryable<ModuleInfo>()
.ToList();
var disabledModuleCount = disabledModule.Count();
var allModuleCount = allModule.Count();
var disabledAModuleCount = disabledModule.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var allAModuleCount = allModule.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var disabledCModuleCount = disabledModule.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var allCModuleCount = allModule.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var message = $"【智能货架】当前库位总数{allCount},禁用总数{disabledCount},禁用率{((double)disabledCount / allCount).ToString("P")}" +
$"其中A区库位总数{allACount},禁用数{disabledACount},禁用率{((double)disabledACount / allACount).ToString("P")}" +
$"C区库位总数{allCCount},禁用数{disabledCCount},禁用率{((double)disabledCCount / allCCount).ToString("P")}。\r\n" +
$"当前模组总数{allModuleCount},禁用总数{disabledModuleCount},禁用率{((double)disabledModuleCount / allModuleCount).ToString("P")}" +
$"其中A区模组总数{allAModuleCount},禁用数{disabledAModuleCount},禁用率{((double)disabledAModuleCount / allAModuleCount).ToString("P")}" +
$"C区模组总数{allCModuleCount},禁用数{disabledCModuleCount},禁用率{((double)disabledCModuleCount / allCModuleCount).ToString("P")}。";
Logs.Write(message);
var dd = string.Empty;
MXBackgroundThread.SendDingDingMsg(message, new List<string> { "104379", "103595" }, ref dd);
});
#endregion
}
//库位
@ -618,6 +715,74 @@ namespace WCS.BLL.Services.Service
}
}
public async Task<ResponseCommon> getDisablePercent()
{
try
{
#region
var disabledStore = DbHelp.db.Queryable<StoreInfo>()
.Where(t => t.CurrentMatSn == "禁用")
.ToList();
var allStore = DbHelp.db.Queryable<StoreInfo>()
.ToList();
var disabledCount = disabledStore.Count();
var allCount = allStore.Count();
var disabledACount = disabledStore.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var allACount = allStore.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var disabledCCount = disabledStore.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var allCCount = allStore.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var disabledModule = DbHelp.db.Queryable<ModuleInfo>()
.Where(t => t.IsEnable == false)
.ToList();
var allModule = DbHelp.db.Queryable<ModuleInfo>()
.ToList();
var disabledModuleCount = disabledModule.Count();
var allModuleCount = allModule.Count();
var disabledAModuleCount = disabledModule.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var allAModuleCount = allModule.Where(t => t.ShelfCode.Contains("A")).ToList().Count();
var disabledCModuleCount = disabledModule.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var allCModuleCount = allModule.Where(t => t.ShelfCode.Contains("C")).ToList().Count();
var message = $"【智能货架】当前库位总数{allCount},禁用总数{disabledCount},禁用率{((double)disabledCount / allCount).ToString("P")}" +
$"其中A区库位总数{allACount},禁用数{disabledACount},禁用率{((double)disabledACount / allACount).ToString("P")}" +
$"C区库位总数{allCCount},禁用数{disabledCCount},禁用率{((double)disabledCCount / allCCount).ToString("P")}。\r\n" +
$"当前模组总数{allModuleCount},禁用总数{disabledModuleCount},禁用率{((double)disabledModuleCount / allModuleCount).ToString("P")}" +
$"其中A区模组总数{allAModuleCount},禁用数{disabledAModuleCount},禁用率{((double)disabledAModuleCount / allAModuleCount).ToString("P")}" +
$"C区模组总数{allCModuleCount},禁用数{disabledCModuleCount},禁用率{((double)disabledCModuleCount / allCModuleCount).ToString("P")}。";
#endregion
//非盟讯公司的展示
if (LocalFile.Config.IsMx == false)
{
message = $"【智能货架】当前库位总数{allCount},禁用总数{disabledCount},禁用率{((double)disabledCount / allCount).ToString("P")}。";
}
return new ResponseCommon()
{
Code = 200,
Message = $"Success",
Data = message ,
};
}
catch (Exception ex)
{
DbHelp.db.RollbackTran();
return new ResponseCommon()
{
Code = 300,
Message = $"操作失败:异常{ex.Message}"
};
}
}
#endregion
}
}

View File

@ -14,5 +14,6 @@ namespace WCS.Model.WebSocketModel
{
= 0,
= 1,
= 2,
}
}

View File

@ -89,6 +89,13 @@ namespace WCS.WebApi.Controllers
{
return await _storeInfoService.disableOrEnableStore(request);
}
[Route("getDisablePercent")]
[HttpPost(Name = "getDisablePercent")]
public async Task<ResponseBase> getDisablePercent(DisableOrEnableStoreRequest request)
{
return await _storeInfoService.getDisablePercent();
}
#endregion
}
}

View File

@ -102,7 +102,9 @@ namespace 智能仓储WCS管理系统.ViewModel
}
else if (Result != null && Result.Code == 200 && (Result.Data == null || Result.Data.Lists == null || Result.Data.Lists.Count == 0))
{
MessageBox.Show($"未查询到领料明细!所推荐物料在此货架上不存在,请确认是否在其他货架上!\r\n{string.Join(",\r\n", matSns)}");
var content = $"MES/WMS系统按先进先出推荐物料条码在此货架上不存在,请确认物料是否在其他货架B区或者确认是否是物料上架后丢失复制物料条码后在[出入记录]功能中通过物料SN查询确认是否丢失如果确认是此货架上丢失重新上架再次进行出库操作具体条码如下\r\n{string.Join(",\r\n", matSns)}";
//MessageBox.Show($"未查询到领料明细!所推荐物料在此货架上不存在,请确认是否在其他货架上!或者是否已经丢失?(复制物料条码后在[出入记录]功能中即可查询)\r\n{string.Join(",\r\n", matSns)}");
TipView.Show(content, "提示", true);
DataGridItemSource = null;
}
else
@ -120,12 +122,12 @@ namespace 智能仓储WCS管理系统.ViewModel
}
else if (result != null && result.code == 200 && (result.data == null || result.data.Count == 0))
{
Growl.Warning("未查询到物料明细MES推荐物料明细为空");
Growl.Warning("未查询到物料明细MES推荐物料明细为空请确认该单据是否已发或咨询MES系统相关负责人");
DataGridItemSource = null;
}
else
{
Growl.Warning("未查询到领料明细请求MES接口失败");
Growl.Warning("未查询到领料明细请求MES接口失败请确认该单据是否已发或咨询MES系统相关负责人");
DataGridItemSource = null;
}
});

View File

@ -230,6 +230,37 @@ namespace 智能仓储WCS管理系统.ViewModel
}
#endregion
}
public ICommand BtnDisablePercentCommand { get => new DelegateCommand(DisablePercent); }
public void DisablePercent()
{
#region
try
{
var body = new DisableOrEnableStoreRequest()
{
};
var Result = ApiHelp.GetDataFromHttp<ResponseCommon>(LocalFile.Config.ApiIpHost + "storeInfo/getDisablePercent", body, "POST");
if (Result != null && Result.Code == 200)
{
HandyControl.Controls.MessageBox.Show(Result.Data.ToString());
}
else if (Result != null)
{
Growl.Warning(Result.Message);
}
else
{
Growl.Warning("操作失败:请重试!");
}
}
catch (Exception ex)
{
Growl.Error("操作失败:" + ex.Message);
}
#endregion
}
#endregion
#region PageOperation

View File

@ -67,6 +67,11 @@
Grid.Column="9" MinHeight="40" FontSize="18" Content="&#xe652; 重置" FontFamily="{StaticResource IconFont}"
Command="{Binding BtnResetCommand}">
</Button>
<Button Style="{StaticResource ButtonWarning}" hc:BorderElement.CornerRadius="12"
Grid.Column="8" Grid.Row="1" MinHeight="30" FontSize="18" Content="&#xe652; 屏蔽率" FontFamily="{StaticResource IconFont}"
Command="{Binding BtnDisablePercentCommand}">
</Button>
</Grid>
</Border>

View File

@ -32,7 +32,7 @@
<TextBlock Margin="5,0" Text="{Binding Title, FallbackValue=标题}" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Left"/>
<Button Grid.Column="1" Visibility="{Binding IsClose,Converter={StaticResource Boolean2VisibilityHiddenConverter}}" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource CloseGeometry}" Click="closeClick"/>
</Grid>
<TextBlock Margin="5,0" Grid.Row="1" Text="{Binding Content, FallbackValue=我是内容}" FontSize="18" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBox Margin="5,0" Grid.Row="1" Text="{Binding Content, Mode=OneWay}" FontSize="18" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<hc:UniformSpacingPanel x:Name="spacingPanel" Grid.Row="2" Margin="5,0,5,10" Spacing="10" Width="auto" ChildWrapping="Wrap" HorizontalAlignment="Center">
<Button Content="确认"/>
<Button Content="取消"/>

View File

@ -66,6 +66,19 @@ namespace 智能仓储WCS管理系统
return Show(content, title, new string[] { "确认", "忽略" }, _warning, isVisCloseBut);
}
/// <summary>
/// 显示提示框
/// </summary>
/// <param name="content">内容</param>
/// <param name="title">标题</param>
/// <param name="isVisCloseBut">界面右上角是否显示关闭按钮</param>
/// <returns>点击的按钮文本</returns>
public static WarningWindow ShowNoScanError(string content, string title, WebSocketMessageModel _warning, bool isVisCloseBut = true, Window owner = null)
{
content = content + "\r\n确认对应无物料可点击[屏蔽库位]按钮进行库位屏蔽!";
return Show(content, title, new string[] { "确认","屏蔽库位", "忽略" }, _warning, isVisCloseBut);
}
/// <summary>
/// 显示提示框
/// </summary>
@ -92,6 +105,14 @@ namespace 智能仓储WCS管理系统
Content = item,
};
button.Margin = new Thickness(10, 0, 10, 0);
button.FontSize = 18;
if (item == "屏蔽库位")
{
button.Foreground = Brushes.Red;
button.FontWeight = FontWeights.DemiBold;
//WaningWindow.Content = WaningWindow.Content + "\r\n确认对应无物料可点击[屏蔽库位]按钮进行库位屏蔽!";
}
button.Click += (s, e) =>
{
clikename = ((Button)s).Content.ToString();
@ -99,10 +120,26 @@ namespace 智能仓储WCS管理系统
#region /
try
{
var solveType = SolveTypeEnum.;
switch (clikename)
{
case "确认":
solveType = SolveTypeEnum.;
break;
case "忽略":
solveType = SolveTypeEnum.;
break;
case "屏蔽库位":
solveType = SolveTypeEnum.;
break;
default:
solveType = SolveTypeEnum.;
break;
}
var body = new SolveWarningRequest()
{
Guid = _warning.Guid,
SolveType = clikename == "确认" ? SolveTypeEnum. : SolveTypeEnum.,
SolveType = solveType,
UserName = LocalStatic.CurrentUser,
DeviceType = "WCS前端",
};

View File

@ -25,8 +25,15 @@ namespace 智能仓储WCS管理系统
{
Logs.Write($"【添加报警信息弹窗】报警类型:{warningModel.WarningType} 报警信息:{warningModel.WarningMessage} Guid:{warningModel.Guid}", LogsType.WebSocket);
Application.Current.Dispatcher.Invoke(new Action(() =>
{
if (warningModel.WarningType == WarningTypeEnum. || warningModel.WarningType == WarningTypeEnum. || warningModel.WarningType == WarningTypeEnum.)
{
warnings.Add(WarningWindow.ShowNoScanError(warningModel.WarningMessage, "报警信息", warningModel));
}
else
{
warnings.Add(WarningWindow.Show(warningModel.WarningMessage, "报警信息", warningModel));
}
}));
}
}