change-入库完成时入库库存改为系统+1,不从plc读

change-统计库存从视图查询改为直接查询
collectionStore
liuwf 7 months ago
parent 272745dfb9
commit ffcbace19f

@ -423,7 +423,8 @@ namespace Aucma.Scada.Business
//读取PLC获取货道信息存放数量、在途数量,
#region Add By wenjy 2023-10-30 13:44:00 通过PLC获取货道信息
var item = taskHandle.ReadSpaceInfoByPlc(spaceInfo);
spaceInfo.spaceStock = item.spaceStock;
// spaceInfo.spaceStock = item.spaceStock;
spaceInfo.spaceStock = spaceInfo.spaceStock + 1;
spaceInfo.onRouteAmount = item.onRouteAmount;
// spaceInfo.spaceStatus = item.spaceStatus;
#endregion
@ -508,10 +509,21 @@ namespace Aucma.Scada.Business
return materialName;
}
/// <summary>
/// 获取仓库物料库存
/// </summary>
/// <returns></returns>
public List<BaseSpaceInfo> GetStock()
{
List<BaseSpaceInfo> infos = _spaceInfoService.GetSpaceInfosByTwoStoreCode(appConfig.shellStoreCode, appConfig.linerStoreCode);
return infos;
}
/// <summary>
/// 获取仓库物料库存20240223弃用
/// </summary>
/// <returns></returns>
public List<dynamic> GetMaterialStock()
{
return _spaceInfoService.GetMaterialStock(appConfig.shellStoreCode, appConfig.linerStoreCode);

@ -262,7 +262,7 @@ namespace Aucma.Scada.Business
//读取PLC应答字为2时上位机清空写入的入库内容
if (_plc.readInt32ByAddress(plcConfig.in_shell_answer) == 2)
{
logHelper.PlcLog("内胆入库应答字为2货道号:" + plcConfig.in_shell_spaceCode + ";复位写0");
logHelper.PlcLog("箱壳入库应答字为2货道号:" + plcConfig.in_shell_spaceCode + ";复位写0");
//写入货道号
_plc.writeInt32ByAddress(plcConfig.in_shell_spaceCode, 0);
//写入应答字

@ -219,8 +219,7 @@ namespace Aucma.Scada.Business
{
if (_plc != null)
{
if (_plc.IsConnected)
{
do
{
//读取PLC出库任务完成
@ -239,11 +238,8 @@ namespace Aucma.Scada.Business
Thread.Sleep(1000);
} while (isFlag);
}
else
{
logHelper.Info($"仓库{appConfig.shellStoreCode}PLC未连接");
}
}
else
{
@ -489,7 +485,7 @@ namespace Aucma.Scada.Business
var shellTasks = GetTaskInfoByTaskStatus(appConfig.shellStoreCode,3);
var linerTasks = GetTaskInfoByTaskStatus(appConfig.linerStoreCode, 3);
if (shellTasks == null || linerTasks == null) continue;
RealTaskInfo shellTask = null;
RealTaskInfo linerTask = null;

@ -16,6 +16,7 @@ namespace Aucma.Core.Scanner
{
private static AppConfig appConfig = AppConfig.Instance;
public static bool m_bGrabbing = true;
private static string lastCode;
#region 委托事件
public delegate void RefreshMaterialCodeStr(string materialCodeStr, string ip);
public static event RefreshMaterialCodeStr RefreshMaterialCodeStrEvent;
@ -186,10 +187,11 @@ namespace Aucma.Core.Scanner
}
string strCode = Encoding.GetEncoding("UTF-8").GetString(buffer).Trim().TrimEnd('\0');
RefreshLogMessageEvent?.Invoke("相机ip:" + hashmap.Value + " Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode + "]");
if (!string.IsNullOrEmpty(strCode))
if (!string.IsNullOrEmpty(strCode) && lastCode!=strCode)
{
RefreshMaterialCodeStrEvent?.Invoke(strCode,hashmap.Value);
lastCode = strCode;
}
}

@ -191,7 +191,7 @@
<lvc:CartesianChart.AxisX>
<lvc:Axis Labels="{Binding MaterialNameList}" FontSize="20">
<lvc:Axis.Separator>
<lvc:Separator Visibility="Hidden" StrokeThickness="1.5" StrokeDashArray="0" Stroke="#404F56" >
<lvc:Separator Visibility="Hidden" StrokeThickness="1" StrokeDashArray="0" Stroke="#404F56" >
</lvc:Separator>
</lvc:Axis.Separator>
</lvc:Axis>

File diff suppressed because it is too large Load Diff

@ -1,6 +1,6 @@
[plcSystem]
دل؟اPLCIP=127.0.0.1
دل؟اPLC<EFBFBD>ث؟غ=6000
دل؟اPLCIP=10.10.92.22
دل؟اPLC<EFBFBD>ث؟غ=2015
トレオィPLCIP=127.0.0.1
トレオィPLCカヒソレ=6001

@ -6,6 +6,7 @@ using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using HighWayIot.Common;
using HighWayIot.Config;
using HighWayIot.Log4net;
using LiveCharts;
using LiveCharts.Wpf;
using MySqlX.XDevAPI.Relational;
@ -424,29 +425,36 @@ namespace Aucma.Scada.UI.viewModel.AssemblyPlan
/// </summary>
private void RefreshMaterialStats()
{
App.Current.Dispatcher.Invoke((Action)(() =>
try
{
//获取物料型号统计
List<dynamic> materialStats = assemblyPlanBusiness.GetMaterialStats();
if (materialStats != null)
{
ModelStatistics.Clear();
MaterialNameList = new List<string>();
ChartValues<double> materialAchievement = new ChartValues<double>();
foreach (var item in materialStats)
{
MaterialNameList.Add(item.MATERIAL_NAME);
materialAchievement.Add(Convert.ToDouble(item.PRODUCT_AMOUNT));
}
var materialColumn = new ColumnSeries();
materialColumn.DataLabels = true;
materialColumn.Title = "型号";
materialColumn.Values = materialAchievement;
materialColumn.Foreground = Brushes.White;
ModelStatistics.Add(materialColumn);
}
}));
App.Current.Dispatcher.Invoke((Action)(() =>
{
//获取物料型号统计
List<dynamic> materialStats = assemblyPlanBusiness.GetMaterialStats();
if (materialStats != null)
{
ModelStatistics.Clear();
MaterialNameList = new List<string>();
ChartValues<double> materialAchievement = new ChartValues<double>();
foreach (var item in materialStats)
{
MaterialNameList.Add(item.MATERIAL_NAME);
materialAchievement.Add(Convert.ToDouble(item.PRODUCT_AMOUNT));
}
var materialColumn = new ColumnSeries();
materialColumn.DataLabels = true;
materialColumn.Title = "型号";
materialColumn.Values = materialAchievement;
materialColumn.Foreground = Brushes.White;
ModelStatistics.Add(materialColumn);
}
}));
}
catch (Exception ex)
{
LogHelper.Instance.Error(ex.Message.ToString());
}
}
/// <summary>

@ -14,6 +14,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Windows.Media;
namespace Aucma.Scada.UI.viewModel.InStoreInfo
@ -289,49 +290,80 @@ namespace Aucma.Scada.UI.viewModel.InStoreInfo
this.Query();
}
/// <summary>
/// 柱状体加载
/// </summary>
public void Init()
{
Query();
ChartValues<double> shellAchievement = new ChartValues<double>();
ChartValues<double> linerAchievement = new ChartValues<double>();
MaterialNameList = new List<string>();
List<dynamic> info = inStoreBusiness.GetMaterialStock();
App.Current.Dispatcher.BeginInvoke((Action)(() =>
try
{
if (info != null)
Query();
ChartValues<int> shellAchievement = new ChartValues<int>();
ChartValues<int> linerAchievement = new ChartValues<int>();
MaterialNameList = new List<string>();
// List<dynamic> info = inStoreBusiness.GetMaterialStock();
List<BaseSpaceInfo> list = inStoreBusiness.GetStock();
App.Current.Dispatcher.BeginInvoke((Action)(() =>
{
Achievement.Clear();
foreach (var item in info)
if (list != null && list.Count > 0)
{
MaterialNameList.Add(item.parentMaterialName);
shellAchievement.Add(Convert.ToDouble(item.shellStock));
linerAchievement.Add(Convert.ToDouble(item.linerStock));
Achievement.Clear();
foreach (var item in list)
{
MaterialNameList.Add(SubStringByName(item.typeNameA));
if (item.storeCode == appConfig.shellStoreCode)
{
shellAchievement.Add(item.spaceStock);
linerAchievement.Add(0);
}
else if (item.storeCode == appConfig.linerStoreCode)
{
linerAchievement.Add(item.spaceStock);
shellAchievement.Add(0);
}
}
}
}
var shellColumn = new ColumnSeries();
shellColumn.DataLabels = true;
shellColumn.Title = "箱壳";
shellColumn.Values = shellAchievement;
shellColumn.Foreground = Brushes.White;
var linerColumn = new ColumnSeries();
linerColumn.DataLabels = true;
linerColumn.Title = "内胆";
linerColumn.Values = linerAchievement;
linerColumn.Foreground = Brushes.White;
linerColumn.Fill = new SolidColorBrush(Color.FromRgb(15, 209, 226));
Achievement.Add(shellColumn);
Achievement.Add(linerColumn);
}));
var shellColumn = new ColumnSeries();
shellColumn.DataLabels = true;
shellColumn.Title = "箱壳";
shellColumn.Values = shellAchievement;
shellColumn.Foreground = Brushes.White;
var linerColumn = new ColumnSeries();
linerColumn.DataLabels = true;
linerColumn.Title = "内胆";
linerColumn.Values = linerAchievement;
linerColumn.Foreground = Brushes.White;
linerColumn.Fill = new SolidColorBrush(Color.FromRgb(15, 209, 226));
Achievement.Add(shellColumn);
Achievement.Add(linerColumn);
}));
}catch(Exception ex)
{
logHelper.Error(ex.Message.ToString());
}
}
/// <summary>
/// 截取逗号之间的名称
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
private string SubStringByName(string name)
{
string result = string.Empty;
int firstCommaIndex = name.IndexOf(',');
int secondCommaIndex = name.IndexOf(',', firstCommaIndex + 1);
if (firstCommaIndex != -1 && secondCommaIndex != -1)
{
result = name.Substring(firstCommaIndex + 1, secondCommaIndex - firstCommaIndex - 1);
}
return result;
}
/// <summary>
/// 刷新入库任务列表
/// </summary>

@ -40,6 +40,14 @@ namespace HighWayIot.Repository.service
/// <returns></returns>
List<BaseSpaceInfo> GetSpaceInfosByStoreCode(string storeCode);
/// <summary>
/// 获取箱壳内胆的库存数量
/// </summary>
/// <param name="storeCode"></param>
/// <returns></returns>
List<BaseSpaceInfo> GetSpaceInfosByTwoStoreCode(string storeCode1,string storeCode2);
/// <summary>
/// 通过物料类型获取货道信息,如果没有返回空白货道
/// </summary>

@ -208,6 +208,26 @@ namespace HighWayIot.Repository.service.Impl
return spaceInfos;
}
/// <summary>
/// 通过两个仓库编号获取库存大于0货道信息
/// </summary>
/// <param name="storeCode1"></param>
/// <param name="storeCode2"></param>
/// <returns></returns>
public List<BaseSpaceInfo> GetSpaceInfosByTwoStoreCode(string storeCode1, string storeCode2)
{
List<BaseSpaceInfo> spaceInfos = null;
try
{
spaceInfos = _mesRepository.GetList(x => (x.storeCode == storeCode1 || x.storeCode == storeCode2) && x.spaceStock>0).ToList();
}
catch (Exception ex)
{
logHelper.Error("获取货道信息异常", ex);
}
return spaceInfos;
}
/// <summary>
/// 更新货道信息
/// </summary>
@ -242,7 +262,8 @@ namespace HighWayIot.Repository.service.Impl
try
{
var _db = _mesRepository.Context;
List<dynamic> query = _db.Queryable<dynamic>().AS("GET_STORE_MATERIALSTOCK").Where("STORE_CODE in (@shellStore,@linerStore)", new { shellStore = shellStoreCode, linerStore = linerStoreCode }).ToList();
List<dynamic> query = _db.Queryable<dynamic>().AS("GET_STORE_MATERIALSTOCK").Where("STORE_CODE in (@shellStore,@linerStore) and SPACE_STOCK>0", new { shellStore = shellStoreCode, linerStore = linerStoreCode }).ToList();
if(query.Count > 0)
{

Loading…
Cancel
Save