change-澳柯玛代码提交

main
liuwf 5 months ago
parent 51251bbe03
commit 882473a242

@ -31,7 +31,7 @@ namespace Admin.Core.Repository
string sql = @$"WITH T AS(
select DISTINCT o.* from (select r.* from (select r.*,BP.PRODUCT_LINE_NAME from BASE_ORDERINFO r LEFT JOIN BASE_PRODUCTLINE BP on r.WORK_CENTER_CODE = BP.WORK_CENTER_CODE) r
left join BASE_MATERIALINFO m on r.MATERIAL_CODE=m.MATERIAL_CODE where MATERIAL_SUBCLASS='100') o left join BASE_BOMINFO b on o.MATERIAL_CODE=b.PARENT_ID
WHERE SUBSTR(o.ORDER_STATUS, 0, 4)!='CLSD' and SUBSTR(o.ORDER_STATUS, 0, 4)!='TECO' and PRODUCT_LINE_NAME!='线'
WHERE SUBSTR(o.ORDER_STATUS, 0, 4)!='CLSD' and SUBSTR(o.ORDER_STATUS, 0, 4)!='TECO' and PRODUCT_LINE_NAME!='线'
),
K AS(
select *from C##AUCMA_SCADA.PRINT_BARCODE

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>

@ -114,8 +114,8 @@ namespace Aucma.Core.CodeBinding.ViewModels
//实时绑定条码和实时下发plc放行信号
realBindingAndSendPlc();
}
catch (Exception ex)
@ -124,17 +124,31 @@ namespace Aucma.Core.CodeBinding.ViewModels
}
}
public async void RefreshCharts()
/// <summary>
/// IsvoiceAmount报数提示
/// </summary>
/// <param name="IsvoiceAmount"></param>
public async void RefreshCharts(bool IsVoiceAmount =false)
{
await Task.Run(() =>
try
{
List<CodeBindingRecord> list = LoadData();
if (list != null)
await Task.Run(() =>
{
LoadCharts(list);
}
List<CodeBindingRecord> list = LoadData();
if (list != null)
{
if (IsVoiceAmount)
{
speechStr.SpeakAsync($"{list.Count}");
}
LoadCharts(list);
}
});
});
}catch (Exception ex)
{
log.Error("刷新图表出错");
}
}
/// <summary>
@ -239,9 +253,7 @@ namespace Aucma.Core.CodeBinding.ViewModels
{
try
{
// LoadCharts();
List<CodeBindingRecord> records = null;
records = _codeBindingRecordServices.QueryCharts(appConfig.ProductlineCode,appConfig.TeamName);
// records = _codeBindingRecordServices.QueryAsync(x => x.Position2==1 && x.BoxCode != null && x.RecordTime2 >= DateTime.Today && x.RecordTime2 < DateTime.Today.AddDays(1)).Result;
@ -702,16 +714,16 @@ namespace Aucma.Core.CodeBinding.ViewModels
}
#endregion
#region 型号校验
bool checkFlag = CheckModel(code1,code2);
if (!checkFlag)
{
speechStr.SpeakAsync("型号校验失败,请检查成品码是否一致");
RefreshAndWriteLog($"箱体码:{code1},成品码:{code2},型号校验失败,请检查箱体码与成品码是否一致");
SendPlcStop();
return;
}
#endregion
//#region 型号校验
//bool checkFlag = CheckModel(code1,code2);
//if (!checkFlag)
//{
// speechStr.SpeakAsync("型号校验失败,请检查成品码是否一致");
// RefreshAndWriteLog($"箱体码:{code1},成品码:{code2},型号校验失败,请检查箱体码与成品码是否一致");
// SendPlcStop();
// return;
//}
//#endregion
RefreshAndWriteLog("开始绑定MES条码:" + code1 + " SN条码:" + code2);
// 1.数据库查询各个工序质检结果,不合格报警
@ -780,7 +792,7 @@ namespace Aucma.Core.CodeBinding.ViewModels
SendPlcPass();
//刷新页面
RefreshCharts();
RefreshCharts(true);
}
else
{

@ -32,7 +32,7 @@ namespace Aucma.Core.CodeBinding.ViewModels
/// <summary>
/// 图表刷新
/// </summary>
public delegate void RefreshCharts();
public delegate void RefreshCharts(bool voiceAmount = false);
public static event RefreshCharts? RefreshChartsEvent;
public LoginPageViewModel() {

@ -13,6 +13,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Documents;
using System.Xml.Linq;
namespace Aucma.Core.CodeBinding.ViewModels
@ -126,6 +127,44 @@ namespace Aucma.Core.CodeBinding.ViewModels
Console.WriteLine(ex.ToString());
}
}
/// <summary>
/// 条码查询
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
[RelayCommand]
private async Task CodeQueryAsync(object obj)
{
try
{
if (obj == null) return;
string code = (string)obj;
CodeBindingRecord record = await _codeBindingRecordServices.FirstAsync(x => x.BoxCode == code || x.ProductCode == code);
if (record != null)
{
System.Windows.Application.Current.Dispatcher.Invoke((Action)(async () =>
{
ListItems.Clear();
ListItems.Add(new ReaderInfo() { No = ListItems.Count + 1, BoxCode = record.BoxCode, ProductCode = record.ProductCode, BoxName = record.BoxName, BindingResult = record.BindingResult, IsPass = record.IsPass == 1 ? "自动" : "手动", RecordTime = record.RecordTime2.ToString() });
}));
}
}catch(Exception ex)
{
log.Error($"CodeQueryAsync异常:{ex.ToString()}");
}
}
#endregion
}
}

@ -7,7 +7,7 @@
xmlns:local="clr-namespace:Aucma.Core.CodeBinding.Views"
xmlns:cvt="clr-namespace:Aucma.Core.CodeBinding.ConvertTo"
mc:Ignorable="d" Background="#1152AC" FontFamily="Microsoft YaHei"
d:DesignHeight="450" d:DesignWidth="800">
d:DesignHeight="1080" d:DesignWidth="1920">
<UserControl.Resources>
<cvt:MultiBindingConverter x:Key="QueryConvert"></cvt:MultiBindingConverter>
@ -134,6 +134,12 @@
</MultiBinding>
</Button.CommandParameter>
</Button>
<TextBox x:Name="queryCode" Width="300" Foreground="White" FontSize="20" Margin="100 0 0 0"/>
<Button Margin="10 0"
Content="箱体码/成品码查询" Command="{Binding CodeQueryCommand}" CommandParameter="{Binding Text,ElementName=queryCode}"
Style="{StaticResource MaterialDesignRaisedSecondaryDarkButton}">
</Button>
</WrapPanel>
<UniformGrid Grid.Row="1">
<DataGrid ItemsSource="{Binding ListItems}" Background="#00000000"

@ -211,7 +211,8 @@
"ScannerServer": [
{
"Id": 1,
"Ip": "10.10.92.137",
//"Ip": "10.10.92.137",
"Ip": "127.0.0.1",
"Name": "mes扫码器"
},
{

@ -50,7 +50,7 @@ namespace Aucma.Core.OldBoxFoam.Models
public string MaterialCode { get; set; }
public string MaterialName { get; set; }
public string? MaterialName { get; set; }
public string SpaceName { get; set; }

@ -74,17 +74,21 @@ namespace Aucma.Core.OldBoxFoam.ViewModels
string pattern = @",(.*)";
Regex regex = new Regex(pattern);
Match match = regex.Match(spaceInfoLeft[i].MaterialName);
model.MaterialName = spaceInfoLeft[i].MaterialName;
if (match.Success)
if(spaceInfoLeft[i].MaterialName != null)
{
string result = match.Groups[1].Value;
model.MaterialName = result;
}
else
{
model.MaterialName = spaceInfoLeft[i].MaterialName;
Match match = regex.Match(spaceInfoLeft[i].MaterialName);
if (match.Success)
{
string result = match.Groups[1].Value;
model.MaterialName = result;
}
}
model.ObjId = spaceInfoLeft[i].ObjId;
model.Status = "1";
model.Local = $"东线{i + 1}";
@ -98,17 +102,18 @@ namespace Aucma.Core.OldBoxFoam.ViewModels
string pattern = @",(.*)";
Regex regex = new Regex(pattern);
Match match = regex.Match(spaceInfoRight[i].MaterialName);
if (match.Success)
{
string result = match.Groups[1].Value;
model.MaterialName = result;
}
else
model.MaterialName = spaceInfoRight[i].MaterialName;
if (spaceInfoRight[i].MaterialName != null)
{
model.MaterialName = spaceInfoRight[i].MaterialName;
Match match = regex.Match(spaceInfoRight[i].MaterialName);
if (match.Success)
{
string result = match.Groups[1].Value;
model.MaterialName = result;
}
}
model.ObjId = spaceInfoRight[i].ObjId;
model.Status = "1";
model.Local = $"西线{i + 1}";

@ -421,7 +421,7 @@ namespace Aucma.Core.Palletiz.Business
{
msg = $"成品码:{asciiStr},仓库区域:{spaceinfo.SpaceArea},匹配货道:{spaceinfo.SpaceCode};旋转角度匹配失败,请先设置该型号旋转规则!";
RefreshMsgEvent?.Invoke(msg);
return;
throw new ArgumentException(msg);
}
msg = $"成品码:{asciiStr},仓库区域:{spaceinfo.SpaceArea},匹配货道:{spaceinfo.SpaceCode};旋转:{IntToRange(spinFlag)}度;下发plc放行信号";
RefreshMsgEvent?.Invoke(msg);
@ -430,24 +430,30 @@ namespace Aucma.Core.Palletiz.Business
{
if((DateTime.Now - startTime).TotalSeconds > 15)
{
result = false;
return;
log.Error($"等待plc允许下发信号超时plc不允许下发");
Console.WriteLine($"======>等待plc允许下发信号超时 plc不允许下发");
msg = $"等待plc允许下发信号超时plc不允许下发,找到待下发货道号:{spaceinfo.SpaceArea},{spaceinfo.SpaceCode}";
RefreshMsgEvent?.Invoke(msg);
isFlag = false;
}
bool answerFlag = false;
if (spaceinfo.SpaceArea == "A")
{
answerFlag = _plc.ReadBool("B1000");
Console.WriteLine($"B1000:{answerFlag}");
}
else if (spaceinfo.SpaceArea == "B")
{
answerFlag = _plc.ReadBool("B1010");
Console.WriteLine($"B1010:{answerFlag}");
}
if (answerFlag)
{
isFlag = false;
}
Task.Delay(500).Wait();
}
@ -464,7 +470,7 @@ namespace Aucma.Core.Palletiz.Business
}
_plc.WriteInt16("B1001", "1");//发送完成信号
result = true;
}
else if (spaceinfo.SpaceArea == "B")
@ -479,7 +485,8 @@ namespace Aucma.Core.Palletiz.Business
throw new ArgumentException($"货道号下发至PLC失败");
}
_plc.WriteInt16("B1002", "1");//发送完成信号
// _plc.WriteInt16("B1002", "1");//发送完成信号
_plc.WriteInt16("B1102", "1");//发送完成信号
result = true;
}

@ -553,7 +553,8 @@ namespace Aucma.Core.PalletizCX1.Business
throw new ArgumentException($"C区域货道号下发至PLC失败");
}
_plc.WriteInt16("B1103", "1");//发送完成信号
// _plc.WriteInt16("B1103", "1");//发送完成信号
_plc.WriteInt16("B1303", "1");//发送完成信号
result = true;
}

@ -197,6 +197,8 @@ namespace Aucma.Core.PrintTo.ViewModels
[RelayCommand]
private async void Print(string obj)
{
if (string.IsNullOrEmpty(obj))
{
MessageBox.Show("请选中需要打印的产品!", "系统提醒");
@ -219,6 +221,7 @@ namespace Aucma.Core.PrintTo.ViewModels
MessageBox.Show("请选择打印类型!", "系统提醒");
return;
}
//if (SelectedCells.PlanAmount > PrintAmount)
@ -261,8 +264,19 @@ namespace Aucma.Core.PrintTo.ViewModels
}
}
//更新打印名称
var baseOrder = _baseOrderInfoServices.FirstAsync(d => d.OrderCode == order_code).Result;
//更新打印名称
//#region 打印名称校验
//if (baseOrder.MaterialName)
// #endregion
if (string.IsNullOrEmpty(baseOrder.PrintName))
{
baseOrder.PrintName = printName;

@ -38,6 +38,7 @@ namespace Aucma.Core.TemperatureTask
_materialCompletionServices = materialCompletionServices;
_printBarCodeServices = printBarCodeServices;
_reportQualityInspectionServices = reportQualityInspectionServices;
PushQualityInspectionData();
}
public void Execute()
@ -48,6 +49,24 @@ namespace Aucma.Core.TemperatureTask
timer1.Start();//timer.Start()的内部原理还是设置timer.Enabled = true;
}
/// <summary>
/// 推送质检数据
/// </summary>
private void PushQualityInspectionData()
{
Task.Run(() =>
{
while(true){
ToMes();
Thread.Sleep(100);
}
});
}
#region 采集任务处理
/// <summary>
/// 采集任务处理
@ -112,7 +131,7 @@ namespace Aucma.Core.TemperatureTask
if (r > 0)
{
InsertToCompleteAndCheck(query);//保存过点数据
ToMes();//更新测温质检数据
Console.WriteLine($"【{DateTime.Now}】保存测温数据成功!保存数量:{query.Count}");
}
}
@ -182,51 +201,26 @@ namespace Aucma.Core.TemperatureTask
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public void ToMes()
public async void ToMes()
{
try
{
var list = _temperatureHistoryServices.QueryAsync(d => d.IsFlag == 0).Result;
if (list == null || list.Count == 0) return;
var pageList = await _temperatureHistoryServices.QueryPageAsync(d => d.IsFlag == 0,1, 5);
if (pageList == null || pageList.data == null || pageList.data.Count == 0)
{
Thread.Sleep(1000 * 10);
return;
}
var list = pageList.data;
Console.WriteLine($"【{DateTime.Now}】开始向质检发送测温数据");
foreach (var temperatureHistory in list)
{
//var r= _reportQualityInspectionServices.FirstAsync(d => d.BarCode == temperatureHistory.CpNo && d.TreatmentMeasure == "3"&& d.StationCode=="2009").Result;
//if (r != null)
//{
// var checkList = _temperatureHistoryServices.GetAllIsFlag(temperatureHistory.ObjId).Result;
// if (checkList != null)
// {
// var check = checkList.First();
// r.FinishTime = check.FinishTime;
// r.BarCode = check.BarCode;
// r.MaterialName = check.MaterialName;
// r.ProcessCode = check.ProcessCode;
// r.TestItemCode = check.TestItemCode;
// r.QualityDefectCode = check.QualityDefectCode;
// r.QualityDefectName = check.QualityDefectName;
// r.TreatmentMeasure = check.TreatmentMeasure;
// r.ProcessResult = check.ProcessResult;
// r.GroupCode = check.GroupCode;
// r.InspectorCode = check.InspectorCode;
// r.InspectorTime = check.InspectorTime;
// r.ReworkNumber = check.ReworkNumber;
// r.IsFlag = check.IsFlag;
// r.StationCode = check.StationCode;
// r.UpdatedTime = check.UpdateTime;
// bool reportResult = _reportQualityInspectionServices.UpdateAsync(r).Result;
// if (reportResult)
// {
// temperatureHistory.IsFlag = 1;
// _ = _temperatureHistoryServices.UpdateAsync(temperatureHistory).Result;
// }
// }
//}
//else
{
var checkList = _temperatureHistoryServices.GetAllIsFlag(temperatureHistory.ObjId).Result;
if (checkList != null)
if (checkList != null && checkList.Count > 0)
{
var check = checkList.First();
ReportQualityInsPection report = new ReportQualityInsPection();
@ -240,7 +234,6 @@ namespace Aucma.Core.TemperatureTask
//report.FinishTime = check.FinishTime;
report.UpdatedTime = null;
}
report.BarCode = check.BarCode;
report.MaterialName = check.MaterialName;
report.ProcessCode = check.ProcessCode;
@ -262,8 +255,14 @@ namespace Aucma.Core.TemperatureTask
temperatureHistory.IsFlag = 1;
_ = _temperatureHistoryServices.UpdateAsync(temperatureHistory).Result;
}
}
}
else
{
// 箱体码扫错推送标识改成2不再推送
temperatureHistory.IsFlag = 2;
_ = _temperatureHistoryServices.UpdateAsync(temperatureHistory).Result;
}
}
Console.WriteLine($"【{DateTime.Now}】更新测温质检数据成功!");
}

Loading…
Cancel
Save