diff --git a/Admin.Core.Api/Admin.Core.Model.xml b/Admin.Core.Api/Admin.Core.Model.xml
index e88535bf..90160ab3 100644
--- a/Admin.Core.Api/Admin.Core.Model.xml
+++ b/Admin.Core.Api/Admin.Core.Model.xml
@@ -3371,14 +3371,24 @@
产品编号
+
+
+ 订单数量
+
+
- 产品名称
+ 产品型号
-
+
- 订单量
+ 内胆数量
+
+
+
+
+ 箱体数量
@@ -3406,12 +3416,12 @@
异常量
-
+
内胆码已打量
-
+
箱壳码已打量
diff --git a/Admin.Core.Extensions/Middlewares/AucmaTaskMildd.cs b/Admin.Core.Extensions/Middlewares/AucmaTaskMildd.cs
new file mode 100644
index 00000000..2284aba7
--- /dev/null
+++ b/Admin.Core.Extensions/Middlewares/AucmaTaskMildd.cs
@@ -0,0 +1,32 @@
+using Admin.Core.Common;
+using log4net;
+using Microsoft.AspNetCore.Builder;
+using System;
+
+namespace Admin.Core.Extensions
+{
+ ///
+ ///扫码器服务
+ ///
+ public static class AucmaTaskMildd
+ {
+ private static readonly ILog log = LogManager.GetLogger(typeof(AucmaTaskMildd));
+ public static async void AucmaTaskMildds(this IApplicationBuilder app)
+ {
+ if (app == null) throw new ArgumentNullException(nameof(app));
+
+ try
+ {
+ if (Appsettings.app("Middleware", "Scanner", "Enabled").ObjToBool())
+ {
+ Console.WriteLine("扫码器服务已开启");
+ }
+ }
+ catch (Exception e)
+ {
+ log.Error($"An error was reported when starting the job service.\n{e.Message}");
+ throw;
+ }
+ }
+ }
+}
diff --git a/Admin.Core.Extensions/Middlewares/ScannerMildd.cs b/Admin.Core.Extensions/Middlewares/ScannerMildd.cs
index 4f49d703..40aacd5d 100644
--- a/Admin.Core.Extensions/Middlewares/ScannerMildd.cs
+++ b/Admin.Core.Extensions/Middlewares/ScannerMildd.cs
@@ -1,16 +1,8 @@
using Admin.Core.Common;
-using Admin.Core.IService.ISys;
-using Admin.Core.Model.Sys;
-using Admin.Core.Tasks;
using Aucma.Core.Scanner;
using log4net;
using Microsoft.AspNetCore.Builder;
-using Microsoft.AspNetCore.Http;
-using StackExchange.Profiling.Internal;
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
namespace Admin.Core.Extensions
{
diff --git a/Admin.Core.Extensions/ServiceExtensions/AucmaTaskSetup.cs b/Admin.Core.Extensions/ServiceExtensions/AucmaTaskSetup.cs
new file mode 100644
index 00000000..dca324c9
--- /dev/null
+++ b/Admin.Core.Extensions/ServiceExtensions/AucmaTaskSetup.cs
@@ -0,0 +1,39 @@
+using Admin.Core.Common;
+using Admin.Core.Tasks;
+using Aucma.Core.Scanner;
+using Microsoft.Extensions.DependencyInjection;
+using Quartz;
+using Quartz.Spi;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Threading.Tasks;
+
+namespace Admin.Core.Extensions
+{
+ ///
+ /// 启动服务
+ ///
+ public static class AucmaTaskSetup
+ {
+ public static void AddAucmaTaskSetup(this IServiceCollection services)
+ {
+ services.AddSingleton();
+
+ var baseType = typeof(IScannerService);
+ var path = AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory;
+ var referencedAssemblies = System.IO.Directory.GetFiles(path, "Aucma.Core.Tasks.dll").Select(Assembly.LoadFrom).ToArray();
+ var types = referencedAssemblies
+ .SelectMany(a => a.DefinedTypes)
+ .Select(type => type.AsType())
+ .Where(x => x != baseType && baseType.IsAssignableFrom(x)).ToArray();
+ var implementTypes = types.Where(x => x.IsClass).ToArray();
+ foreach (var implementType in implementTypes)
+ {
+ services.AddTransient(implementType);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Admin.Core.Model/ViewModels/PrintPlanInfoView.cs b/Admin.Core.Model/ViewModels/PrintPlanInfoView.cs
index 9c10c52f..5a87e56d 100644
--- a/Admin.Core.Model/ViewModels/PrintPlanInfoView.cs
+++ b/Admin.Core.Model/ViewModels/PrintPlanInfoView.cs
@@ -20,17 +20,25 @@ namespace Admin.Core.Model.ViewModels
///
public string ProductCode { get; set; }
///
- /// 产品名称
+ /// 订单数量
+ ///
+ public int PlanAmount { get; set; } = 0;
+ ///
+ /// 产品型号
///
public string ProductName { get; set; }
///
- /// 订单量
+ /// 内胆数量
+ ///
+ public int LinerAmount { get; set; } = 0;
+ ///
+ /// 箱体数量
///
- public int PlanAmount { get; set; }
+ public int BoxAmount { get; set; } = 0;
///
/// 完成量
///
- public int CompleteAmount { get; set; }
+ public int CompleteAmount { get; set; } = 0;
///
/// 物料编码
///
@@ -50,11 +58,11 @@ namespace Admin.Core.Model.ViewModels
///
/// 内胆码已打量
///
- public int LinerAmount { get; set; } = 0;
+ public int PrintLinerAmount { get; set; } = 0;
///
/// 箱壳码已打量
///
- public int BoxAmount { get; set; } = 0;
+ public int PrintBoxAmount { get; set; } = 0;
///
/// 剩余数量
///
diff --git a/Admin.Core.RealTimeService/Admin.Core.RealTimeService.csproj b/Admin.Core.RealTimeService/Admin.Core.RealTimeService.csproj
index db09931c..0289941a 100644
--- a/Admin.Core.RealTimeService/Admin.Core.RealTimeService.csproj
+++ b/Admin.Core.RealTimeService/Admin.Core.RealTimeService.csproj
@@ -35,6 +35,7 @@
+
diff --git a/Admin.Core.RealTimeService/Startup.cs b/Admin.Core.RealTimeService/Startup.cs
index 3eaa29ac..6b3027a1 100644
--- a/Admin.Core.RealTimeService/Startup.cs
+++ b/Admin.Core.RealTimeService/Startup.cs
@@ -8,6 +8,7 @@ using Admin.Core.Repository;
using Admin.Core.Service;
using Admin.Core.Tasks;
using Aucma.Core.ScannerGun;
+using Aucma.Core.Tasks;
using Autofac;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
@@ -62,7 +63,7 @@ namespace Admin.Core.RealTimeService
AddServices(services);
//
- services.AddJobSetup();
+ services.AddAucmaTaskSetup();
//ֱ֧ȫ :֧ System.Text.Encoding.GetEncoding("GB2312") System.Text.Encoding.GetEncoding("GB18030")
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
@@ -84,16 +85,12 @@ namespace Admin.Core.RealTimeService
///
///
///
- public void Configure(IApplicationBuilder app, ISysTasksQzService tasksQzService,
- ISchedulerCenter schedulerCenter)
+ public void Configure(IApplicationBuilder app)
{
// ʹþ̬ļ
app.UseStaticFiles();
- // ȻȨм
- //app.UseAuthorization();
- // QuartzNetJobȷ
- app.UseQuartzJobMildd(tasksQzService, schedulerCenter);
- //app.UseScannerGunMildd(scannerGunService);
+
+ app.AucmaTaskMildds();
}
#region ע
diff --git a/Admin.Core.Service/Service_New/BaseOrderInfoServices.cs b/Admin.Core.Service/Service_New/BaseOrderInfoServices.cs
index d25b3f64..cb172546 100644
--- a/Admin.Core.Service/Service_New/BaseOrderInfoServices.cs
+++ b/Admin.Core.Service/Service_New/BaseOrderInfoServices.cs
@@ -50,7 +50,6 @@ namespace Admin.Core.Service
List list = new List();
List orderList = await _baseOrderInfoRepository.QueryAsync();
List orderBomInfoList = await _orderBomInfoRepository.QueryAsync();
- //List bomInfoList = await _baseBomInfoRepository.QueryAsync();
List printOrderInfoList = await _printOrderInfoRepository.QueryAsync();
bbinfolist.Clear();
foreach (BaseOrderInfo order in orderList)
@@ -58,22 +57,28 @@ namespace Admin.Core.Service
var bomList = await _orderBomInfoRepository.QueryAsync(d => d.ParentId.Equals(order.MaterialCode));
if (bomList != null)
{
+
bomList.ForEach(b =>
{
List bbList = RecursionFn(orderBomInfoList, b.MaterialCode);
- if (b.ParentId.IsNotEmptyOrNull())
+ if (b.ParentId.IsNotEmptyOrNull() && (b.MaterialName.Contains("箱体") || b.MaterialName.Contains("内胆")))
{
- PrintPlanInfoView view = new PrintPlanInfoView();
- view.OrderCode = order.OrderCode;
- view.ProductCode = order.MaterialCode;
- view.ProductName = order.MaterialName;
- view.PlanAmount = order.OrderAmount;
- view.MaterialCode = b.MaterialCode;
- view.MaterialName = b.MaterialName;
- view.StandardAmount = b.StandardAmount;
- view.CreateTime = order.CreatedTime;
-
- list.Add(view);
+ bbList.ForEach(bb =>
+ {
+ list.Add(new PrintPlanInfoView()
+ {
+ OrderCode = order.OrderCode,
+ ProductCode = order.MaterialCode,
+ ProductName = order.MaterialName,
+ PlanAmount = order.OrderAmount,
+ MaterialCode = bb.MaterialCode,
+ MaterialName = bb.MaterialName,
+ LinerAmount = bb.StandardAmount,
+ BoxAmount = bb.StandardAmount,
+ StandardAmount = bb.StandardAmount,
+ CreateTime = order.CreatedTime
+ });
+ });
}
});
}
diff --git a/Admin.Core.sln b/Admin.Core.sln
index 4218a113..550e8dc8 100644
--- a/Admin.Core.sln
+++ b/Admin.Core.sln
@@ -65,8 +65,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aucma.Core.Scanner", "Aucma
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "8.Other", "8.Other", "{F8FB57F6-5465-4E60-B052-D3A63C3C56AE}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aucma.Core.Zebra", "Aucma.Core.Zebra\Aucma.Core.Zebra.csproj", "{C24510B9-90E2-46FA-937B-AB291EAAA7CD}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aucma.Core.PLc", "Aucma.Core.PLc\Aucma.Core.PLc.csproj", "{9EE12F11-F9E4-46DD-935D-F6EDD495A6FC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aucma.Core.RunPlc", "Aucma.Core.RunPlc\Aucma.Core.RunPlc.csproj", "{680718C5-E39C-442F-AC9E-4A56E15AF261}"
@@ -81,6 +79,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aucam.Core.PerfusionService
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aucma.Scada.UI", "Aucma.Scada.UI\Aucma.Scada.UI.csproj", "{434F9CE2-2225-4893-9BA2-2681C29E9056}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aucma.Core.Tasks", "Aucma.Core.Tasks\Aucma.Core.Tasks.csproj", "{A7FF5119-A6DE-4947-A1F2-90FE0C628A88}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -167,10 +167,6 @@ Global
{5CF85AD7-DBC9-4466-952B-6742F37E417D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5CF85AD7-DBC9-4466-952B-6742F37E417D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5CF85AD7-DBC9-4466-952B-6742F37E417D}.Release|Any CPU.Build.0 = Release|Any CPU
- {C24510B9-90E2-46FA-937B-AB291EAAA7CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C24510B9-90E2-46FA-937B-AB291EAAA7CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C24510B9-90E2-46FA-937B-AB291EAAA7CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C24510B9-90E2-46FA-937B-AB291EAAA7CD}.Release|Any CPU.Build.0 = Release|Any CPU
{9EE12F11-F9E4-46DD-935D-F6EDD495A6FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9EE12F11-F9E4-46DD-935D-F6EDD495A6FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9EE12F11-F9E4-46DD-935D-F6EDD495A6FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -199,6 +195,10 @@ Global
{434F9CE2-2225-4893-9BA2-2681C29E9056}.Debug|Any CPU.Build.0 = Debug|Any CPU
{434F9CE2-2225-4893-9BA2-2681C29E9056}.Release|Any CPU.ActiveCfg = Release|Any CPU
{434F9CE2-2225-4893-9BA2-2681C29E9056}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A7FF5119-A6DE-4947-A1F2-90FE0C628A88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A7FF5119-A6DE-4947-A1F2-90FE0C628A88}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A7FF5119-A6DE-4947-A1F2-90FE0C628A88}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A7FF5119-A6DE-4947-A1F2-90FE0C628A88}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -227,7 +227,6 @@ Global
{EC1A6A43-1B6B-42AF-B00E-94DF4DF42111} = {BD987F3A-4E6C-4C47-B28F-1671F875EAE3}
{563882EC-C110-4BCB-B913-3B62124BF680} = {BD987F3A-4E6C-4C47-B28F-1671F875EAE3}
{5CF85AD7-DBC9-4466-952B-6742F37E417D} = {F8FB57F6-5465-4E60-B052-D3A63C3C56AE}
- {C24510B9-90E2-46FA-937B-AB291EAAA7CD} = {F8FB57F6-5465-4E60-B052-D3A63C3C56AE}
{9EE12F11-F9E4-46DD-935D-F6EDD495A6FC} = {F8FB57F6-5465-4E60-B052-D3A63C3C56AE}
{680718C5-E39C-442F-AC9E-4A56E15AF261} = {A4C60BC6-0120-48F4-A60D-C73160B122AA}
{61EE37C2-A9C2-40DE-A96E-D7E4DEB5FEC3} = {F8FB57F6-5465-4E60-B052-D3A63C3C56AE}
@@ -235,6 +234,7 @@ Global
{C70810CE-041A-4880-99B3-FFCC8B672B42} = {BD987F3A-4E6C-4C47-B28F-1671F875EAE3}
{BFABE9E5-C71D-42FE-94AE-934B9F74B3D0} = {FA2FF2A3-135E-4CA2-9042-76BB71623D5A}
{434F9CE2-2225-4893-9BA2-2681C29E9056} = {BD987F3A-4E6C-4C47-B28F-1671F875EAE3}
+ {A7FF5119-A6DE-4947-A1F2-90FE0C628A88} = {F8FB57F6-5465-4E60-B052-D3A63C3C56AE}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8047AB56-042B-4AE4-B06A-34137067A86A}
diff --git a/Aucma.Core.BoxFoam/Views/MainWindow.xaml b/Aucma.Core.BoxFoam/Views/MainWindow.xaml
index af5e143f..a6e56940 100644
--- a/Aucma.Core.BoxFoam/Views/MainWindow.xaml
+++ b/Aucma.Core.BoxFoam/Views/MainWindow.xaml
@@ -68,6 +68,9 @@
+
+
+
diff --git a/Aucma.Core.PrintTo/Models/OrderInfo.cs b/Aucma.Core.PrintTo/Models/OrderInfo.cs
index 0caf8c05..27018623 100644
--- a/Aucma.Core.PrintTo/Models/OrderInfo.cs
+++ b/Aucma.Core.PrintTo/Models/OrderInfo.cs
@@ -50,6 +50,14 @@ namespace Aucma.Core.PrintTo.Models
///
public int StandardAmount { get; set; } = 0;
///
+ /// 内胆数量
+ ///
+ public int LinerAmount { get; set; } = 0;
+ ///
+ /// 箱体数量
+ ///
+ public int BoxAmount { get; set; } = 0;
+ ///
/// 异常量
///
public int ErrorNum { get; set; } = 0;
diff --git a/Aucma.Core.PrintTo/ViewModels/HomeWindowViewModel.cs b/Aucma.Core.PrintTo/ViewModels/HomeWindowViewModel.cs
deleted file mode 100644
index 352e54c4..00000000
--- a/Aucma.Core.PrintTo/ViewModels/HomeWindowViewModel.cs
+++ /dev/null
@@ -1,167 +0,0 @@
-using Aucma.Core.PrintTo.Models;
-using Aucma.Core.PrintTo.Views;
-using CommunityToolkit.Mvvm.ComponentModel;
-using CommunityToolkit.Mvvm.Input;
-using MaterialDesignThemes.Wpf;
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Diagnostics.Metrics;
-using System.Drawing.Imaging;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Documents;
-using System.Windows.Input;
-
-/*
- * 首页信息
- *
- */
-namespace Aucma.Core.PrintTo.ViewModels
-{
- public partial class HomeWindowViewModel : ObservableObject
- {
- public HomeWindowViewModel()
- {
- LoadData();
- }
-
- #region 加载DataGrid数据
- private void LoadData()
- {
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-07", material_code = "2135556", material_name = "内胆" });
- }
-
- #endregion
-
- #region 查询按钮
- ///
- /// 查询
- ///
- [RelayCommand]
- private void QueryString(string queryStr)
- {
- System.Windows.Application.Current.Dispatcher.Invoke((Action)(() =>
- {
- if (!string.IsNullOrEmpty(queryStr))
- {
- Datalist.Clear();
- //Datalist.Add(new OrderInfo() { OrderTime = "2023-10-06", material_code = "123456", material_name = "箱体", PrintName = queryStr });
- }
- else
- {
- Datalist.Clear();
- LoadData();
- }
- //Datalist.Insert(0, Datalist[Datalist.Count - 1]);
- //Datalist.RemoveAt(Datalist.Count - 1);
- }));
- }
- #endregion
-
- #region 打印
- ///
- /// 打印
- ///
- [RelayCommand]
- private void Print()
- {
- MessageBox.Show("打印");
- PrintToDevView window=new PrintToDevView();
- window.ShowDialog();
- }
- #endregion
-
- #region 重打
- ///
- ///重打
- ///
- [RelayCommand]
- private void Reprint()
- {
- MessageBox.Show("重打");
-
- // OrderInfo info = new OrderInfo();
- }
- #endregion
-
- #region 补打
- ///
- ///补打
- ///
- [RelayCommand]
- private void SupplementaryPrint()
- {
- MessageBox.Show("补打");
-
- // OrderInfo info = new OrderInfo();
- }
- #endregion
-
- #region 续打
- ///
- ///续打
- ///
- [RelayCommand]
- private void ContinuedPrint()
- {
- MessageBox.Show("续打");
-
- // OrderInfo info = new OrderInfo();
- }
- #endregion
-
- #region 初始化datagrid
- private ObservableCollection datalist = new ObservableCollection();
- public ObservableCollection Datalist
- {
- get { return datalist; }
- set
- {
- datalist = value;
- OnPropertyChanged();//属性通知
- }
- }
- #endregion
-
-
- #region 获取当前行数据 赋值到textbox
- private OrderInfo selectedCells;
- public OrderInfo SelectedCells
- {
- get { return selectedCells; }
- set
- {
- selectedCells = value;
- SetProperty(ref selectedCells, value);
- }
- }
- #endregion
-
-
- }
-
-}
diff --git a/Aucma.Core.PrintTo/ViewModels/IndexPageViewModel.cs b/Aucma.Core.PrintTo/ViewModels/IndexPageViewModel.cs
index a9981eb3..987d3443 100644
--- a/Aucma.Core.PrintTo/ViewModels/IndexPageViewModel.cs
+++ b/Aucma.Core.PrintTo/ViewModels/IndexPageViewModel.cs
@@ -32,10 +32,7 @@ namespace Aucma.Core.PrintTo.ViewModels
PrintIsEnabled = "True";
WeakReferenceMessenger.Default.Register(this, Recive);
- Task.Run(async ()=>
- {
- await LoadData();
- });
+ Task.WaitAll(LoadData());
}
#region 加载DataGrid数据
@@ -45,20 +42,23 @@ namespace Aucma.Core.PrintTo.ViewModels
var list = await _baseOrderInfoServices.QueryPrintInfo();
foreach (var item in list)
{
- OrderInfo info = new OrderInfo();
- info.CreatedTime = item.CreateTime;
- info.OrderCode = item.OrderCode;
- info.ProductCode = item.ProductCode;
- info.ProductName = item.ProductName;
- info.PlanAmount = item.PlanAmount;
- info.CompleteAmount = item.CompleteAmount;
- info.MaterialCode = item.MaterialCode;
- info.MaterialName = item.MaterialName;
- info.StandardAmount = item.StandardAmount;
- info.ErrorNum = item.ErrorAmount;
- info.LinerCodeNum = item.LinerAmount;
- info.BoxCodeNum = item.BoxAmount;
- Datalist.Add(info);
+ Datalist.Add(new OrderInfo()
+ {
+ CreatedTime = item.CreateTime,
+ OrderCode = item.OrderCode,
+ ProductCode = item.ProductCode,
+ ProductName = item.ProductName,
+ PlanAmount = item.PlanAmount,
+ CompleteAmount = item.CompleteAmount,
+ MaterialCode = item.MaterialCode,
+ MaterialName = item.MaterialName,
+ StandardAmount = item.StandardAmount,
+ LinerAmount = item.LinerAmount,
+ BoxAmount = item.StandardAmount,
+ ErrorNum = item.ErrorAmount,
+ LinerCodeNum = item.LinerAmount,
+ BoxCodeNum = item.BoxAmount
+ });
}
}
#endregion
@@ -181,10 +181,6 @@ namespace Aucma.Core.PrintTo.ViewModels
MessageBox.Show("请选中需要打印的产品!","系统提醒");
return;
}
- //if (!CheckPrintPassword())
- //{
- // return;
- //}
try
{
string order_code = SelectedCells.OrderCode;
diff --git a/Aucma.Core.PrintTo/ViewModels/PrintToDevViewModel.cs b/Aucma.Core.PrintTo/ViewModels/PrintToDevViewModel.cs
index 793e7e5b..5cb186a7 100644
--- a/Aucma.Core.PrintTo/ViewModels/PrintToDevViewModel.cs
+++ b/Aucma.Core.PrintTo/ViewModels/PrintToDevViewModel.cs
@@ -11,6 +11,8 @@ using FastReport;
using FastReport.DevComponents.DotNetBar;
using log4net;
using Microsoft.Extensions.DependencyInjection;
+using NPOI.SS.Formula.Functions;
+using StackExchange.Profiling.Internal;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -26,33 +28,44 @@ namespace Aucma.Core.PrintTo.ViewModels
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(PrintToDevViewModel));
protected readonly IOrderBomInfoServices _orderBomInfoServices;
+ protected readonly IPrintBarCodeServices _printBarCodeServices;
+
private List items { get; }
private Queue BarcodesUnprinted { get; } = new Queue();
private Queue BarcodesPrinted { get; } = new Queue();
private PrintState printState { get; set; } = PrintState.Idle;//打印状态
- protected bool isPrint { get; set; } = true;//打印打印标志
-
- public PrintToDevViewModel() { }
+ protected bool isPrint { get; set; } = true;//打印标志
- public PrintToDevViewModel(string productCode, string materialCode, string materialName, int printAmount, string? barCode = null)
+ #region 构造函数
+ ///
+ /// 构造函数
+ ///
+ /// 产品编码
+ /// 物料编码
+ /// 型号简码
+ /// 打印数量
+ public PrintToDevViewModel(string productCode, string materialCode, string materialName, int printAmount)
{
_orderBomInfoServices = App.ServiceProvider.GetService();
+ _printBarCodeServices = App.ServiceProvider.GetService();
ProductCode = productCode;
MaterialName = materialName;
+ MaterialCode= materialCode;
PrintAmount = printAmount;
Progress = 0;
+ MaxProgress = printAmount;//最大数
State = "Green";
- ErrorNum = 0;
+ ErrorNum = 0;//异常
printState = PrintState.Printing;
- isPrint=true;
- SuspendEnabled = "False";
- OperateEnabled = "True";
+ SuspendEnabled = "False";//暂停打印
+ OperateEnabled = "True";//打印
// 非阻塞打印
Task.Run(async () =>
{
- await ExecPrintAsync(productCode, materialCode, materialName, 0);
+ await ExecPrintAsync(productCode, materialCode, printAmount);
});
- }
+ }
+ #endregion
#region 选中订单参数
@@ -74,16 +87,16 @@ namespace Aucma.Core.PrintTo.ViewModels
public string ProductCode { get => _productCode; set => SetProperty(ref _productCode, value); }
#endregion
- #region 物料型号
+ #region 型号简码
private string _materialName;
public string MaterialName { get => _materialName; set => SetProperty(ref _materialName, value); }
#endregion
- #region 打印条码
- private string _barCode;
+ #region 物料编码
+ private string _materialCode;
- public string BarCode { get => _barCode; set => SetProperty(ref _barCode, value); }
+ public string MaterialCode { get => _materialCode; set => SetProperty(ref _materialCode, value); }
#endregion
#region 打印数量
@@ -214,47 +227,36 @@ namespace Aucma.Core.PrintTo.ViewModels
#endregion
- #region 执行打印
+ #region 将打印数据添加到队列中
///
- /// 执行打印
+ /// 将打印数据添加到队列中
///
- ///
- ///
- ///
- ///
- public async Task ExecPrintAsync(string orderNo, string materialCode, string materialName, int planAmount)
+ /// 订单号
+ /// 物料码
+ /// 打印数量
+ public async Task ExecPrintAsync(string orderNo, string materialCode, int planAmount)
{
string printer = Appsettings.app("Printer", "PrinterName");
- var boxList = await _orderBomInfoServices.QueryAsync(d => d.ParentId == orderNo&&d.MaterialName.Contains("箱体"));
- if (boxList.Count == 0)
+ var obj = await _orderBomInfoServices.FirstAsync(d => d.MaterialCode == materialCode);
+ if (obj == null)
{
- MaxProgress = boxList.Count;
MessageBox.Show("无法查询打印条码数据", "系统提醒");
return;
}
- var list = await _orderBomInfoServices.QueryAsync(d => d.ParentId == orderNo && d.MaterialName.Contains("内胆"));
- if (list.Count == 0)
- {
- MaxProgress = list.Count;
- MessageBox.Show("无法查询打印条码数据", "系统提醒");
- return;
- }
- list.ForEach(d => BarcodesUnprinted.Enqueue(d));
+
+ for (int i = 0; i < planAmount; i++) { BarcodesUnprinted.Enqueue(obj); }
}
#endregion
#region 打印
- public Task Print()
+ public async Task Print()
{
try
{
string printer = Appsettings.app("Printer", "PrinterName");
- int printNum = BarcodesUnprinted.Count;//打印数
- int i = 0;
- MaxProgress = printNum;
- ErrorNum = 0;
+ int i = 1;
while (BarcodesUnprinted.Count > 0)
{
if (printState == PrintState.Paused)
@@ -264,62 +266,89 @@ namespace Aucma.Core.PrintTo.ViewModels
continue;
}
if (printState == PrintState.Completetd) break;
+ PrintBarCode printBarCode = new PrintBarCode();
try
{
var item = BarcodesUnprinted.Peek();
+ string barCode = string.Empty;
+ if (item.MaterialName.Contains("U壳"))
+ {
+ string rowNum = await GetMaxNumAsync(item.MaterialCode,"B");//最大值+1
+ barCode = $"B{DateTime.Now.ToString("yyMMdd")}{item.MaterialCode}{rowNum}";
+ PrintProgress = $"[{PrintAmount}/{i}] {barCode}";
+ printBarCode.MaterialBarcode = barCode;
+ printBarCode.PrintBarType = 1;
+ Console.WriteLine($"B{DateTime.Now.ToString("yyMMdd")}{item.MaterialCode}{rowNum}");
+ }
+ if (item.MaterialName.Contains("内胆"))
+ {
+ string rowNum = await GetMaxNumAsync(item.MaterialCode, "L");//最大值+1
+ barCode = $"L{DateTime.Now.ToString("yyMMdd")}{item.MaterialCode}{rowNum}";
+ PrintProgress = $"[{PrintAmount}/{i}] {barCode}";
+ printBarCode.MaterialBarcode = barCode;
+ printBarCode.PrintBarType = 2;//内胆码
+ Console.WriteLine($"L{DateTime.Now.ToString("yyMMdd")}{item.MaterialCode}{rowNum}");
+ }
+ #region 打印
+
+ //对接打印机
+ Report barReport = new Report();
+ barReport.Load(System.Environment.CurrentDirectory + @"\Report\MaterialBar.frx");//打印报表位置
+
+ // 设置打印机和打印选项
+ barReport.PrintSettings.ShowDialog = false; // 是否打开打印机选择框
+ barReport.PrintSettings.Printer = printer; // 设置打印机名称
+ barReport.PrintSettings.Copies = 1; // 设置打印份数
+ //barReport.PrintSettings.PageRange = "1-3"; // 设置打印页范围
- ////对接打印机
- //Report barReport = new Report();
- //barReport.Load(System.Environment.CurrentDirectory + @"\Report\MaterialBar.frx");//打印报表位置
+ barReport.SetParameterValue("BoxBarData.Id", barCode);
+ barReport.SetParameterValue("BoxBarData.Order_No", item.);//订单码
+ barReport.SetParameterValue("BoxBarData.Order_Material_Name", item.MaterialName);//物料简码
+ barReport.SetParameterValue("BoxBarData.Bar_Code", barCode);//二维码
- //// 设置打印机和打印选项
- //barReport.PrintSettings.ShowDialog = false; // 是否打开打印机选择框
- //barReport.PrintSettings.Printer = printer; // 设置打印机名称
- //barReport.PrintSettings.Copies = 1; // 设置打印份数
- // //barReport.PrintSettings.PageRange = "1-3"; // 设置打印页范围
- //barReport.SetParameterValue("BoxBarData.Id", item.barCode);
- //barReport.SetParameterValue("BoxBarData.Order_No", orderNo);//订单码
- //barReport.SetParameterValue("BoxBarData.Order_Material_Name", materialName);//物料名称
- //barReport.SetParameterValue("BoxBarData.Bar_Code", barCode);//二维码
+ //barReport.Prepare();
+ //string BarPath = System.Environment.CurrentDirectory + @"\pdf\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
+ //barReport.Export(new PDFExport(), BarPath);
- ////barReport.Prepare();
- ////string BarPath = System.Environment.CurrentDirectory + @"\pdf\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
- ////barReport.Export(new PDFExport(), BarPath);
+ barReport.Print();
- //barReport.Print();
+ #endregion
- if (item.MaterialName.Contains("箱体"))
+ printBarCode.ProductCode = ProductCode;
+ printBarCode.MaterialCode = item.MaterialCode;
+ printBarCode.MaterialName = item.MaterialName;
+ printBarCode.PrintTime = DateTime.Now;
+ printBarCode.SupplementMaterial =0;
+ if (string.IsNullOrEmpty(printBarCode.MaterialBarcode))
{
- Console.WriteLine(item.MaterialName);
- PrintProgress = $"[{printNum}/{i}] B{DateTime.Now.ToString("yyMMdd")}item.MaterialCode{i + 1}";
- Console.WriteLine($"B{DateTime.Now.ToString("yyMMdd")}{item.MaterialCode}{i + 1}");
+ throw new Exception("条码生成异常");//抛出异常,回滚事务,事务退出
}
- if (item.MaterialName.Contains("内胆"))
+ var num= await _printBarCodeServices.AddAsync(printBarCode);
+ if (num<=0)
{
- Console.WriteLine(item.MaterialName);
- PrintProgress = $"[{printNum}/{i}] L{DateTime.Now.ToString("yyMMdd")}{item.MaterialCode}0000{i + 1}";
- Console.WriteLine($"L{DateTime.Now.ToString("yyMMdd")}{item.MaterialCode}0000{i + 1}");
+ ErrorNum++;
+ log.Error($"打印保存出错:{printBarCode.ToJson()}");
}
BarcodesPrinted.Enqueue(BarcodesUnprinted.Dequeue());
- i++;
- Progress = i;
-
Thread.Sleep(1000);
}
catch (Exception ex)
{
- log.Error($"打印出错:{ex.Message}");
+ log.Error($"打印出错:{ex.Message}\n{printBarCode.ToJson()}");
ErrorNum++;
+
}
+ Progress = i;
+ i++;
}
//打印完成
SetCompletetd();
- return Task.FromResult(true);
+ return await Task.FromResult(true);
}
catch (Exception ex)
{
log.Error($"打印出错:{ex.Message}");
- return Task.FromResult(false);
+ return await Task.FromResult(false);
}
finally
{
@@ -327,6 +356,38 @@ namespace Aucma.Core.PrintTo.ViewModels
}
}
+ #region 获取最大值
+ ///
+ /// 获取最大值
+ ///
+ ///
+ ///
+ public async Task GetMaxNumAsync(string MaterialCode,string falg)
+ {
+ try
+ {
+ List tempList = new List();
+ var list = await _printBarCodeServices.QueryAsync(d => d.MaterialBarcode.Contains(MaterialCode) && d.MaterialBarcode.Substring(0, 1).Equals(falg));
+ if (list.Count() == 0)
+ {
+ return "0001";
+ }
+ list.ForEach(item =>
+ {
+ int num = Convert.ToInt32(item.MaterialBarcode.Substring(item.MaterialBarcode.Length - 1, 4));
+ tempList.Add(num);
+ });
+ string maxStr = (tempList.Max() + 1).ToString();
+ string rowNum = maxStr.PadLeft(4, '0');
+ return rowNum;
+ }
+ catch
+ {
+ return "0001";
+ }
+ }
+ #endregion
+
#endregion
#region 暂停
diff --git a/Aucma.Core.PrintTo/ViewModels/SpecialPrintToViewModel.cs b/Aucma.Core.PrintTo/ViewModels/SpecialPrintToViewModel.cs
index a6469cc8..441a2cd9 100644
--- a/Aucma.Core.PrintTo/ViewModels/SpecialPrintToViewModel.cs
+++ b/Aucma.Core.PrintTo/ViewModels/SpecialPrintToViewModel.cs
@@ -107,7 +107,6 @@ namespace Aucma.Core.PrintTo.ViewModels
#region 打印机
//对接打印机
Report barReport = new Report();
- //barReport.Load(System.Environment.CurrentDirectory + @"\Report\MaterialBar.frx");//打印报表位置
barReport.Load(System.Environment.CurrentDirectory + @"\Report\MaterialBar.frx");
// 设置打印机和打印选项
@@ -120,11 +119,6 @@ namespace Aucma.Core.PrintTo.ViewModels
barReport.SetParameterValue("BoxBarData.Order_Material_Name", item);//物料名称
barReport.SetParameterValue("BoxBarData.Bar_Code", item);//二维码
- //barReport.SetParameterValue("BoxBarData.Id", item);
- //barReport.SetParameterValue("BoxBarData.DeviceCode", item);
- //barReport.SetParameterValue("BoxBarData.DeviceName", item);
- //barReport.SetParameterValue("BoxBarData.CostCenter", item);
-
//barReport.Prepare();
//string BarPath = System.Environment.CurrentDirectory + @"\pdf\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
//barReport.Export(new PDFExport(), BarPath);
@@ -132,7 +126,6 @@ namespace Aucma.Core.PrintTo.ViewModels
barReport.Print();
#endregion
-
PrintProgress = $"[{printNum}/{i}] {item}";
BarcodesPrinted.Enqueue(BarcodesUnprinted.Dequeue());
Thread.Sleep(1000);
diff --git a/Aucma.Core.PrintTo/ViewModels/SupplementPrintPageViewModel.cs b/Aucma.Core.PrintTo/ViewModels/SupplementPrintPageViewModel.cs
index 65b5f9c2..9995b649 100644
--- a/Aucma.Core.PrintTo/ViewModels/SupplementPrintPageViewModel.cs
+++ b/Aucma.Core.PrintTo/ViewModels/SupplementPrintPageViewModel.cs
@@ -35,7 +35,7 @@ namespace Aucma.Core.PrintTo.ViewModels
_barCodeServices = App.ServiceProvider.GetService();
_baseOrderInfoServices = App.ServiceProvider.GetService();
- LoadData(productCode, material_code);
+ Task.WaitAll(LoadData(productCode, material_code));
}
#region 选中订单参数
@@ -83,7 +83,7 @@ namespace Aucma.Core.PrintTo.ViewModels
var materialName = SelectedCells.MaterialName;
var barCode = SelectedCells.BarCode;
- PrintToDevView printToDev = new PrintToDevView(productCode, materialCode, materialName, 1, barCode);
+ PrintToDevView printToDev = new PrintToDevView(productCode, materialCode, materialName, 1);
printToDev.ShowDialog();
}
#endregion
diff --git a/Aucma.Core.PrintTo/Views/HomeWindowView.xaml b/Aucma.Core.PrintTo/Views/HomeWindowView.xaml
deleted file mode 100644
index 3deb82ef..00000000
--- a/Aucma.Core.PrintTo/Views/HomeWindowView.xaml
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Aucma.Core.PrintTo/Views/HomeWindowView.xaml.cs b/Aucma.Core.PrintTo/Views/HomeWindowView.xaml.cs
deleted file mode 100644
index d461d85a..00000000
--- a/Aucma.Core.PrintTo/Views/HomeWindowView.xaml.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Shapes;
-
-namespace Aucma.Core.PrintTo.Views
-{
- ///
- /// HomeWindowView.xaml 的交互逻辑
- ///
- public partial class HomeWindowView : Window
- {
- public HomeWindowView()
- {
- InitializeComponent();
- }
- }
-}
diff --git a/Aucma.Core.PrintTo/Views/IndexPageView.xaml b/Aucma.Core.PrintTo/Views/IndexPageView.xaml
index 347dfdb3..aadb279e 100644
--- a/Aucma.Core.PrintTo/Views/IndexPageView.xaml
+++ b/Aucma.Core.PrintTo/Views/IndexPageView.xaml
@@ -176,16 +176,17 @@
ItemsSource="{Binding Datalist}" ColumnWidth="*" AutoGenerateColumns="False" IsReadOnly="True" CanUserAddRows="False" SelectionMode="Single"
SelectedItem="{Binding SelectedCells, Mode=OneWayToSource}">
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Aucma.Core.PrintTo/Views/PrintToDevView.xaml b/Aucma.Core.PrintTo/Views/PrintToDevView.xaml
index c2a31091..1c7c2242 100644
--- a/Aucma.Core.PrintTo/Views/PrintToDevView.xaml
+++ b/Aucma.Core.PrintTo/Views/PrintToDevView.xaml
@@ -32,19 +32,19 @@
-
-
+
+
-
-
+
-
-
+
+
diff --git a/Aucma.Core.PrintTo/Views/PrintToDevView.xaml.cs b/Aucma.Core.PrintTo/Views/PrintToDevView.xaml.cs
index 9ae9a43d..b54e5821 100644
--- a/Aucma.Core.PrintTo/Views/PrintToDevView.xaml.cs
+++ b/Aucma.Core.PrintTo/Views/PrintToDevView.xaml.cs
@@ -8,16 +8,21 @@ namespace Aucma.Core.PrintTo.Views
///
public partial class PrintToDevView : Window
{
- public PrintToDevView()
+ #region 构造函数
+ ///
+ /// 构造函数
+ ///
+ /// 产品编码
+ /// 物料编码
+ /// 产品名称
+ /// 打印数量
+ ///
+ public PrintToDevView(string productCode, string materialCode, string materialName, int printAmount)
{
InitializeComponent();
- this.DataContext = new PrintToDevViewModel();
- }
- public PrintToDevView(string productCode,string materialCode, string materialName, int printAmount, string? barCode=null)
- {
- InitializeComponent();
- this.DataContext = new PrintToDevViewModel(productCode, materialCode, materialName, printAmount,barCode);
- }
-
+ this.DataContext = new PrintToDevViewModel(productCode, materialCode, materialName, printAmount);
+ }
+ #endregion
+
}
}
diff --git a/Aucma.Core.PrintTo/Views/SupplementPrintPageView.xaml b/Aucma.Core.PrintTo/Views/SupplementPrintPageView.xaml
index b6f094ea..a3f1947b 100644
--- a/Aucma.Core.PrintTo/Views/SupplementPrintPageView.xaml
+++ b/Aucma.Core.PrintTo/Views/SupplementPrintPageView.xaml
@@ -98,12 +98,13 @@
ItemsSource="{Binding Datalist}" ColumnWidth="*" AutoGenerateColumns="False" IsReadOnly="True" CanUserAddRows="False" SelectionMode="Single"
SelectedItem="{Binding SelectedCells, Mode=OneWayToSource}">
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/Aucma.Core.SheetMetal/Views/IndexPage.xaml b/Aucma.Core.SheetMetal/Views/IndexPage.xaml
index 2515e5bd..8bf7fd95 100644
--- a/Aucma.Core.SheetMetal/Views/IndexPage.xaml
+++ b/Aucma.Core.SheetMetal/Views/IndexPage.xaml
@@ -67,8 +67,10 @@
+
+
+
-
@@ -167,7 +169,7 @@
-
+
-
+
-
+
-
+
-
+
@@ -260,7 +262,7 @@
-
+
@@ -284,7 +286,6 @@
-
@@ -300,16 +301,25 @@
ScrollViewer.VerticalScrollBarVisibility="Hidden" BorderThickness="0" CanUserAddRows="False"
SelectionMode="Single" IsReadOnly="True"
Foreground="White">
-
+
+
-
+
-
+
@@ -331,7 +341,7 @@
-
+
@@ -360,7 +370,7 @@
-
+
@@ -368,7 +378,7 @@
-
+
diff --git a/Aucma.Core.SheetMetal/Views/StatisticsPageView.xaml b/Aucma.Core.SheetMetal/Views/StatisticsPageView.xaml
index 109c3ca1..a9bbc12a 100644
--- a/Aucma.Core.SheetMetal/Views/StatisticsPageView.xaml
+++ b/Aucma.Core.SheetMetal/Views/StatisticsPageView.xaml
@@ -138,16 +138,7 @@
GridLinesVisibility="None" ScrollViewer.HorizontalScrollBarVisibility="Hidden"
ScrollViewer.VerticalScrollBarVisibility="Hidden" BorderThickness="0" CanUserAddRows="False" SelectionMode="Single" IsReadOnly="True"
Foreground="White" >
-
-
-
-
+
diff --git a/Aucma.Core.Tasks/AucamTaskService.cs b/Aucma.Core.Tasks/AucamTaskService.cs
new file mode 100644
index 00000000..5a69453e
--- /dev/null
+++ b/Aucma.Core.Tasks/AucamTaskService.cs
@@ -0,0 +1,20 @@
+using log4net;
+
+namespace Aucma.Core.Tasks
+{
+ ///
+ /// 扫码枪初始化
+ ///
+ public class AucamTaskService : IAucamTaskService
+ {
+ private static readonly log4net.ILog log = LogManager.GetLogger(typeof(AucamTaskService));
+ public void ScannerGunAsync()
+ {
+ }
+
+ public void AucamTaskAsync()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Aucma.Core.Tasks/Aucma.Core.Tasks.csproj b/Aucma.Core.Tasks/Aucma.Core.Tasks.csproj
new file mode 100644
index 00000000..f3b4001a
--- /dev/null
+++ b/Aucma.Core.Tasks/Aucma.Core.Tasks.csproj
@@ -0,0 +1,16 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
diff --git a/Aucma.Core.Tasks/CommTask/Job_BoxFoamInStoreTask_Quartz.cs b/Aucma.Core.Tasks/CommTask/Job_BoxFoamInStoreTask_Quartz.cs
new file mode 100644
index 00000000..7c0da057
--- /dev/null
+++ b/Aucma.Core.Tasks/CommTask/Job_BoxFoamInStoreTask_Quartz.cs
@@ -0,0 +1,290 @@
+using System;
+using System.Linq;
+using log4net;
+using Admin.Core.IService;
+using Admin.Core.Model;
+using Admin.Core.Common;
+
+
+///
+/// 泡前库入库任务逻辑处理
+///
+namespace Aucma.Core.Tasks
+{
+ public class Job_BoxFoamInStoreTask_Quartz
+ {
+ #region 事件
+ ///
+ /// 扫码信息刷新
+ ///
+ /// 条码
+ /// 编码
+ /// 名称
+ /// 货到名称
+ public delegate Task RefreshDataGridDelegate();
+ public static event RefreshDataGridDelegate RefreshDataGridDelegateEvent;
+ ///
+ /// 扫码信息刷新
+ ///
+ /// 条码
+ /// 编码
+ /// 名称
+ /// 货到名称
+ public delegate void RefreshScanMateriaCode(string materialBarCode, string materialCode, string materialName, string spaceName,string msg);
+ public static event RefreshScanMateriaCode RefreshScanMateriaCodeEvent;
+ ///
+ /// 初始化入库任务
+ ///
+ ///
+ public delegate void RefreshInStoreTask(RealTaskInfo taskInfos);
+ public static event RefreshInStoreTask RefreshInStoreTaskEvent;
+ ///
+ /// 日志信息刷新
+ ///
+ ///
+ public delegate void RefreshLogMessage(string message);
+ public static event RefreshLogMessage RefreshLogMessageEvent;
+ ///
+ /// 入库日志事件
+ ///
+ ///
+ public delegate void LogDelegate(string msg);
+ public static event LogDelegate LogDelegateEvent;
+
+ #endregion
+
+ private static readonly log4net.ILog logHelper = LogManager.GetLogger(typeof(Job_BoxFoamInStoreTask_Quartz));
+ private readonly IBaseSpaceInfoServices _baseSpaceInfoServices;
+ private readonly IRealTaskInfoServices _realTaskInfoService;
+ private readonly IProductPlanInfoServices _productPlanInfoServices;
+ private readonly IRecordInStoreServices _recordInstoreServices;
+ private readonly IBaseStoreInfoServices _baseStoreInfoServices;
+ private readonly IBaseSpaceDetailServices _baseSpaceDetailServices;
+
+ public Job_BoxFoamInStoreTask_Quartz(IBaseSpaceInfoServices baseSpaceInfoServices, IRealTaskInfoServices realTaskInfoService,
+ IProductPlanInfoServices productPlanInfoServices, IRecordInStoreServices recordInstoreServices,
+ IBaseStoreInfoServices baseStoreInfoServices, IBaseSpaceDetailServices IBaseSpaceDetailServices)
+ {
+ _realTaskInfoService=realTaskInfoService;
+ _baseSpaceInfoServices = baseSpaceInfoServices;
+ _productPlanInfoServices = productPlanInfoServices;
+ _recordInstoreServices = recordInstoreServices;
+ _baseStoreInfoServices = baseStoreInfoServices;
+ _baseSpaceDetailServices = IBaseSpaceDetailServices;
+ }
+
+ public async Task InStoreRun()
+ {
+ string storeCode = Appsettings.app("StoreInfo", "BeforeStoreCode");//泡前库code
+ await InStore(storeCode, "B20231082080029650001");
+ }
+ public async Task OuteRun()
+ {
+ string storeCode = Appsettings.app("StoreInfo", "BeforeStoreCode");//泡前库code
+ await MaterialEnterStore(storeCode);
+ }
+
+ #region 入库
+ ///
+ /// 入库
+ ///
+ /// 仓库编号
+ /// 物料条码
+ private async Task InStore(string storeCode, string materialBarCode)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(storeCode)) return;
+ if (string.IsNullOrEmpty(materialBarCode)) return;
+
+ logHelper.Info($"扫码成功,物料条码:{materialBarCode}");
+ var taskList = await _realTaskInfoService.QueryAsync(d => d.MaterialCode.Equals(materialBarCode) && d.StoreCode == storeCode);
+ if (taskList.Count() >0)
+ {
+ LogDelegateEvent?.Invoke($"物料条码[{materialBarCode}],任务创建失败,该物料入库任务已存在!");
+ return;
+ }
+ string materialType = SubString(materialBarCode);//截取中间物料条码
+ var spaceInfo =await _baseSpaceInfoServices.InStoreGetSpaceInfoByMaterialType(storeCode, materialType);
+ if (spaceInfo != null)
+ {
+ //logHelper.Info($"匹配货道:{spaceInfo.ToJson()}");
+ var list= await _productPlanInfoServices.QueryAsync(d => d.MaterialCode == materialType);
+ if (list.Count()==0) return;
+ var obj = list.FirstOrDefault();
+ var repeatList = await _recordInstoreServices.QueryAsync(d => d.BarCodeCode.Equals(materialBarCode));
+ if (repeatList.Count() > 0)
+ {
+ //logHelper.Error($"任务创建记录条码重复异常:{obj.ToJson()}");
+ LogDelegateEvent?.Invoke($"物料条码[{materialBarCode}],任务创建失败,该条码任务记录中已存在,请检查!");
+ return;
+ }
+ string message = $"物料[{obj.MaterialName}], 入{spaceInfo.SpaceName},入库中....";
+ RefreshScanMateriaCodeEvent?.Invoke(materialBarCode, obj.MaterialCode, obj.MaterialName, spaceInfo.SpaceName, message); //刷新界面扫码信息
+ CreateInStoreTask(spaceInfo, materialBarCode); //创建入库任务
+ }
+ else
+ {
+ //报警停线
+ }
+ }
+ catch (Exception ex)
+ {
+ logHelper.Error($"入库业务异常:{ex}");
+ }
+ }
+ #endregion
+
+ #region 创建入库任务
+ ///
+ /// 创建入库任务
+ ///
+ ///
+ private async void CreateInStoreTask(BaseSpaceInfo spaceInfo, string materialCode)
+ {
+ try
+ {
+ string storeCode = Appsettings.app("StoreInfo", "StoreCode");//泡前库code
+ //生成入库任务依次下发至PLC
+ RealTaskInfo realTaskInfo = new RealTaskInfo();
+ realTaskInfo.TaskType = 1;
+ realTaskInfo.TaskCode = System.Guid.NewGuid().ToString("N").Substring(0, 6);
+ realTaskInfo.SpaceName = spaceInfo.SpaceName;
+ realTaskInfo.StoreCode = spaceInfo.StoreCode;
+ realTaskInfo.SpaceCode = spaceInfo.SpaceCode;
+ realTaskInfo.MaterialType = spaceInfo.MaterialType;
+ realTaskInfo.MaterialCode = materialCode;
+ realTaskInfo.PlanAmount = 1;
+ realTaskInfo.TaskStatus = 1; //任务状态:1 - 待执行;2 - 执行中;3 - 完成
+ realTaskInfo.CreateTime = DateTime.Now;
+ var taskList = await _realTaskInfoService.QueryAsync(d => d.MaterialCode.Equals(materialCode) && d.StoreCode == storeCode);
+ if (taskList.Count() > 0) return;
+
+ int result = await _realTaskInfoService.AddAsync(realTaskInfo);
+ if (result > 0)
+ {
+ logHelper.Info("入库任务创建成功");
+ RefreshInStoreTaskEvent?.Invoke(realTaskInfo);//刷新datagrid 列表
+ }
+ else
+ {
+ logHelper.Info("入库任务创建失败");
+ }
+ }
+ catch (Exception ex)
+ {
+ logHelper.Info($"入库任务创建异常:{ex.Message}");
+ }
+ }
+
+ #endregion
+
+ #region 截取物料编码
+ public string SubString(string barCode)
+ {
+ try
+ {
+ string materialCode = barCode.Substring(7, 10);
+ return materialCode;
+ }
+ catch (Exception ex)
+ {
+ logHelper.Info($"截取物料条码失败:{ex.Message}");
+ return string.Empty;
+ }
+ }
+ #endregion
+
+ #region PLC 任务处理表
+ ///
+ /// PLC 任务处理表
+ ///
+ /// 仓库编码
+ /// 物料编码
+ ///
+ public async Task MaterialEnterStore(string storeCode, string materialBarCode = "B20231082080029650001")
+ {
+ //扫描入库信号,入库完成
+ try
+ {
+ var taskList = await _realTaskInfoService.QueryAsync(d => d.MaterialType.Equals(materialBarCode) && d.StoreCode == storeCode);
+ if (taskList.Count() == 0) return;
+ var obj = taskList.FirstOrDefault();
+ var mCode= materialBarCode.Substring(7, 10);//物料条码
+ //删除任务表、更新货道、添加入库明细、添加入库记录
+ var planInfoList = await _productPlanInfoServices.QueryAsync(d => d.MaterialCode.Equals(mCode));//计划
+ if (planInfoList.Count() == 0)
+ {
+ logHelper.Error($"物料计划信息为空!");
+ return;
+ }
+ var baseStoreInfolist = await _baseStoreInfoServices.QueryAsync(d => d.StoreCode.Equals(obj.StoreCode));//仓库
+ if (baseStoreInfolist.Count() == 0)
+ {
+ logHelper.Error($"仓库信息为空!");
+ return;
+ }
+ var baseSpacelist = await _baseSpaceInfoServices.QueryAsync(d => d.SpaceCode.Equals(obj.SpaceCode));
+ if (taskList.Count() == 0)
+ {
+ LogDelegateEvent?.Invoke($"物料[{materialBarCode}],入库记录条码重复异常!");
+ logHelper.Error($"货道信息为空!");
+ return;
+ }
+ var baseSpaceDetailList = await _baseSpaceDetailServices.QueryAsync(d => d.MaterialCode.Equals(obj.MaterialCode));//货到详情
+ if (baseSpaceDetailList.Count() != 0)
+ {
+ logHelper.Error($"货到信息存在重复物料!");
+ return;
+ }
+ var baseSpace = baseSpacelist.FirstOrDefault();
+ var planInfo = planInfoList.FirstOrDefault();
+ var baseStoreInfo = baseStoreInfolist.FirstOrDefault();
+
+ baseSpace.SpaceStock = baseSpace.SpaceStock + 1;
+ baseSpace.OnRouteAmount = 0;
+ //入库记录表
+ RecordInStore recordInstore = new RecordInStore();
+ recordInstore.StoreCode = storeCode;
+ recordInstore.StoreArea = baseStoreInfo.StoreArea;
+ recordInstore.SpaceCode = baseSpace.SpaceCode;
+ recordInstore.MaterialType = baseSpace.MaterialType;
+ recordInstore.MaterialCode = mCode;
+ recordInstore.InStoreTime = DateTime.Now;
+ recordInstore.BarCodeCode = materialBarCode;
+ recordInstore.MaterialName = planInfo.MaterialName;
+ recordInstore.EntryPattern = 0;
+ recordInstore.IsFlag = 0;
+ recordInstore.CreatedTime = DateTime.Now;
+ //入库详情表
+ BaseSpaceDetail baseDetail = new BaseSpaceDetail();
+ baseDetail.StoreCode= storeCode;
+ baseDetail.SpaceCode= baseSpace.SpaceCode;
+ baseDetail.MaterialCode = materialBarCode;
+ baseDetail.MaterialName = planInfo.MaterialName;
+ baseDetail.MaterialAmount = 1;
+ baseDetail.CreatedTime= DateTime.Now;
+
+ bool result = await _recordInstoreServices.SaveRecordToDb(recordInstore, obj, baseSpace, baseDetail);
+ if (result)
+ {
+ string message = $"物料[{planInfo.MaterialName}], 入{baseSpace.SpaceName},入库成功!";
+ RefreshScanMateriaCodeEvent?.Invoke(obj.MaterialCode, materialBarCode, planInfo.MaterialName, baseSpace.SpaceName, message); //刷新界面扫码信息
+ LogDelegateEvent?.Invoke($"物料[{planInfo.MaterialName}], 入库[{baseSpace.SpaceName}]成功!");
+ RefreshDataGridDelegateEvent?.Invoke();
+ }
+ else
+ {
+ LogDelegateEvent?.Invoke($"物料[{planInfo.MaterialName}], 入库[{baseSpace.SpaceName}]失败,任务回滚!");
+ logHelper.Error($"物料[{planInfo.MaterialName}], 入库[{baseSpace.SpaceName}]失败,任务回滚!");
+ }
+ }
+ catch (Exception ex)
+ {
+ logHelper.Error($"入库数据处理异常:{ex.Message}");
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/Aucma.Core.Tasks/CommTask/Job_BoxFoamOutStore_Quartz.cs b/Aucma.Core.Tasks/CommTask/Job_BoxFoamOutStore_Quartz.cs
new file mode 100644
index 00000000..0a5b720d
--- /dev/null
+++ b/Aucma.Core.Tasks/CommTask/Job_BoxFoamOutStore_Quartz.cs
@@ -0,0 +1,130 @@
+using Admin.Core.Common;
+using Admin.Core.IService;
+using Admin.Core.IService.ISys;
+using Admin.Core.Model;
+using Admin.Core.Service;
+using Aucma.Core.PLc;
+using log4net;
+using System;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+
+///
+/// 箱体出库任务
+///
+namespace Aucma.Core.Tasks
+{
+ public class Job_BoxFoamOutStore_Quartz
+ {
+ #region 初始化出库任务
+ ///
+ /// 初始化出库任务
+ ///
+ ///
+ public delegate void RefreshOutStoreTask(RealTaskInfo taskInfos);
+ public event RefreshOutStoreTask RefreshOutStoreTaskEvent;
+
+ #endregion
+
+ private static readonly log4net.ILog log = LogManager.GetLogger(typeof(Job_BoxFoamOutStore_Quartz));
+ protected readonly IBaseOrderInfoServices _baseOrderInfoServices;
+ protected readonly IBaseSpaceInfoServices _baseSpaceInfoServices;
+ protected readonly IBaseBomInfoServices _baseBomInfoServices;
+ protected readonly IRealTaskInfoServices _realTaskInfoServices;
+ protected readonly IExecutePlanInfoServices _executePlanInfoServices;
+
+ public Job_BoxFoamOutStore_Quartz(IBaseOrderInfoServices baseOrderInfoServices, IBaseSpaceInfoServices baseSpaceInfoServices,
+ IRealTaskInfoServices realTaskInfoServices,IBaseBomInfoServices baseBomInfoServices, IExecutePlanInfoServices executePlanInfoServices)
+ {
+ _baseOrderInfoServices = baseOrderInfoServices;
+ _baseSpaceInfoServices = baseSpaceInfoServices;
+ _baseBomInfoServices = baseBomInfoServices;
+ _realTaskInfoServices = realTaskInfoServices;
+ _executePlanInfoServices = executePlanInfoServices;
+ }
+
+ public async Task Run()
+ {
+ var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("泡前库Plc"));
+ if (obj.IsConnect)
+ {
+ var val = obj.plc.ReadBool("M100");//出发出库点位
+ if (val)
+ {
+ //获取发泡夹类型=》箱体类型
+ var planInfo = await _executePlanInfoServices.FirstAsync();
+ await PlanHandle(planInfo);
+ }
+ }
+ }
+
+
+ private async Task PlanHandle(ExecutePlanInfo planInfo)
+ {
+ string storeCode = Appsettings.app("StoreInfo", "BeforeStoreCode");//读取泡前库标识
+ if (planInfo != null)
+ {
+ var boxBomInfo = await _baseBomInfoServices.GetChildenBomInfoByMaterialCode(planInfo.MaterialCode, storeCode);
+ OutStore(storeCode, boxBomInfo, planInfo.ExecutePlanCode);
+ }
+ }
+
+ private async void OutStore(string storeCode, BaseBomInfo bomInfo, string planCode)
+ {
+ try
+ {
+ log.Info($"收到出库计划,物料码:{bomInfo.MaterialCode}");
+ //BaseSpaceInfo spaceInfo = await _baseSpaceInfoServices.OutStoreGetSpaceInfoByMaterialCode(storeCode, bomInfo.MaterialCode);
+ //if (spaceInfo != null)
+ //{
+ // log.Info($"匹配货道:{spaceInfo.SpaceName}");
+ // //RefreshScanMateriaCodeEvent?.Invoke(materiaclCode, materialType, spaceInfo.spaceName, storeCode); //刷新界面扫码信息
+ // CreateOutStoreTask(spaceInfo, bomInfo, planCode); //创建出库任务
+ //}
+ //else
+ //{
+ // //报警停线
+ //}
+ }
+ catch (Exception ex)
+ {
+ log.Info($"出库业务异常:{ex.Message}");
+ }
+ }
+
+ #region 创建出库任务
+ ///
+ /// 创建出库任务
+ ///
+ ///
+ private async void CreateOutStoreTask(BaseSpaceInfo spaceInfo, BaseBomInfo bomInfo, string planCode)
+ {
+ //生成出库任务依次下发至PLC
+ RealTaskInfo realTaskInfo = new RealTaskInfo();
+ realTaskInfo.PlanCode = planCode;
+ realTaskInfo.TaskType = 2;
+ realTaskInfo.TaskCode = System.Guid.NewGuid().ToString("N").Substring(0, 6);
+ realTaskInfo.StoreCode = spaceInfo.StoreCode;
+ realTaskInfo.SpaceCode = spaceInfo.SpaceCode;
+ realTaskInfo.SpaceName = spaceInfo.SpaceName;
+ realTaskInfo.MaterialType = bomInfo.MaterialName;
+ realTaskInfo.MaterialCode = bomInfo.MaterialCode;
+ realTaskInfo.PlanAmount = 1;
+ realTaskInfo.TaskStatus = 1;
+ realTaskInfo.CreateTime = DateTime.Now;
+ int result = await _realTaskInfoServices.AddAsync(realTaskInfo);
+ if (result > 0)
+ {
+ log.Info("出库任务创建成功");
+ RefreshOutStoreTaskEvent?.Invoke(realTaskInfo);
+ }
+ else
+ {
+ log.Error("出库任务创建失败");
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/Aucma.Core.Tasks/CommTask/Job_DoorFoam_Quartz.cs b/Aucma.Core.Tasks/CommTask/Job_DoorFoam_Quartz.cs
new file mode 100644
index 00000000..5be012b4
--- /dev/null
+++ b/Aucma.Core.Tasks/CommTask/Job_DoorFoam_Quartz.cs
@@ -0,0 +1,46 @@
+using Admin.Core.IService;
+using Admin.Core.IService.ISys;
+using Admin.Core.Model;
+using Aucma.Core.PLc;
+using log4net;
+using NetTaste;
+using NPOI.SS.Formula.Functions;
+using Quartz;
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+
+///
+///门体发泡数据采集
+///
+namespace Aucma.Core.Tasks
+{
+ public class Job_DoorFoam_Quartz
+ {
+ protected readonly IBaseOrderInfoServices _baseOrderInfoServices;
+ private static readonly log4net.ILog log = LogManager.GetLogger(typeof(Job_DoorFoam_Quartz));
+ public Job_DoorFoam_Quartz()
+ {
+ }
+ public async Task Execute()
+ {
+ await Run();
+ }
+
+ #region 门体发泡数据采集
+ public Task Run()
+ {
+ var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("DoorPlc"));
+ if (obj.plc.IsConnected)
+ {
+ var endSignal = obj.plc.ReadInt16("DB4.DBW0");
+
+
+
+
+ }
+ return Task.FromResult(0);
+ }
+ #endregion
+ }
+}
diff --git a/Aucma.Core.Tasks/CommTask/Job_Perfusion_Quartz.cs b/Aucma.Core.Tasks/CommTask/Job_Perfusion_Quartz.cs
new file mode 100644
index 00000000..87bed4f5
--- /dev/null
+++ b/Aucma.Core.Tasks/CommTask/Job_Perfusion_Quartz.cs
@@ -0,0 +1,174 @@
+using Admin.Core.IService;
+using Admin.Core.Model;
+using Aucma.Core.PLc;
+using log4net;
+
+///
+/// 灌注数据采集
+///
+namespace Aucma.Core.Tasks
+{
+ public class Job_Perfusion_Quartz
+ {
+ private static readonly log4net.ILog log = LogManager.GetLogger(typeof(Job_Perfusion_Quartz));
+ protected readonly IBaseOrderInfoServices _baseOrderInfoServices;
+ protected readonly IPerfusionDeviceStatusServices _perfusionDeviceStatusServices;
+ protected readonly IPerfusionAlarmServices _perfusionAlarmServices;
+ protected readonly IPerfusionRecordServices _perfusionRecordServices;
+
+ public Job_Perfusion_Quartz(IPerfusionDeviceStatusServices perfusionDeviceStatusServices, IPerfusionAlarmServices perfusionAlarmServices,
+ IPerfusionRecordServices perfusionRecordServices)
+ {
+ _perfusionDeviceStatusServices = perfusionDeviceStatusServices;
+ _perfusionAlarmServices = perfusionAlarmServices;
+ _perfusionRecordServices = perfusionRecordServices;
+ }
+ public async Task Execute()
+ {
+ await SaveDbRun();
+ await DeviceStatusRun();
+ }
+
+ #region 检测设备状态
+ private async Task DeviceStatusRun()
+ {
+ var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("PerfusionPlc"));
+ if (obj.plc.IsConnected)
+ {
+ var status = obj.plc.ReadInt32("DB55.46.0");//设备状态;1运行、2停机、3故障
+ //更新灌注设备状态
+ var deviceStatus = await _perfusionDeviceStatusServices.FirstAsync();
+ deviceStatus.PerfusionStatus = status;
+ await _perfusionDeviceStatusServices.UpdateAsync(deviceStatus);
+ }
+ else
+ {
+ log.Error("灌注PLC连接异常!");
+ }
+ }
+ #endregion
+
+ #region 保存灌注数据
+ public async Task SaveDbRun()
+ {
+ string alarmName = string.Empty;
+ var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("PerfusionPlc"));
+ if (obj.plc.IsConnected)
+ {
+ var endSignal = obj.plc.ReadInt16("DB55.44.0");//任务结束信号存盘
+ /*
+ * 8:正常结束,充注成功
+ * 4:异常结束,充注不成功
+ * */
+ if (endSignal == 8)
+ {
+ try
+ {
+ var barCode = obj.plc.ReadString("DB55.20.0");//箱体条码
+ var perfusionRecord = await _perfusionRecordServices.FirstAsync(d=>d.PerfusionBoxCode.Equals(barCode));
+ if (perfusionRecord == null) return;
+
+ var refrigerantTypeLeft = obj.plc.ReadString("DB55.58.0");//冷媒类型——左侧冷媒型号
+ var refrigerantTypeRight = obj.plc.ReadString("DB55.68.0");//冷媒类型——右侧冷媒型号
+ var setVolume = obj.plc.ReadDouble("DB55.78.0");//设定灌注量
+ var actualVolume = obj.plc.ReadDouble("DB55.0.0");//实际灌注量
+ var pressureR = obj.plc.ReadDouble("DB55.8.0");//灌注压力——灌注压力_R
+ var pressureL = obj.plc.ReadDouble("DB55.50.0");//灌注压力——灌注压力_L
+ var duration = obj.plc.ReadInt16("DB55.12.0");//灌注时长
+ var system = obj.plc.ReadInt32("DB55.82.0");//0,右系统 1,左系统
+
+ Perfusion_Record record = new Perfusion_Record();
+ record.PerfusionBoxCode = barCode;
+ record.PerfusionRefrigerantTypeLeft = refrigerantTypeLeft;
+ record.PerfusionRefrigerantTypeRight = refrigerantTypeRight;
+ record.PerfusionSetVolume = setVolume.ToString();
+ record.PerfusionActualVolume = actualVolume.ToString();
+ record.PerfusionR = pressureR.ToString();
+ record.PerfusionL = pressureL.ToString();
+ record.PerfusionDuration = duration.ToString();
+ record.PerfusionSystem = system.ToString();
+
+ var r = await _perfusionRecordServices.AddAsync(record);
+ if (r > 0)
+ {
+ //数据采集完成设为2
+ obj.plc.WriteInt32("DB55.44.0", 2);//应答字:1数据采集,2存盘成功
+ }
+ else
+ {
+ log.Error($"存盘数据失败,箱体码[{barCode}]");
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error(ex.Message);
+ }
+
+ }
+ /*
+ *2:充注枪真空不合格
+ *4:充注故障
+ *8:充注时真空度超限定
+ *16:回升检测不合格
+ *32:工件真空不合格
+ *64:平衡缸接近开关异常
+ *128:增压超时
+ *256:风压不足
+ * */
+ if (endSignal == 4)
+ {
+ try
+ {
+ var barCode = obj.plc.ReadString("DB55.20.0");//箱体条码
+ var perfusionAlarm = await _perfusionAlarmServices.FirstAsync(d => d.PerfusionBoxcode.Equals(barCode));
+ if (perfusionAlarm != null) return;
+
+ var alarm = obj.plc.ReadInt32("DB55.48.0");
+ //保存到异常任务表中,通知返修检测
+ switch (alarm)
+ {
+ case 0:
+ alarmName = "充注枪真空不合格";
+ break;
+ case 4:
+ alarmName = "充注故障";
+ break;
+ case 8:
+ alarmName = "充注时真空度超限定";
+ break;
+ case 16:
+ alarmName = "回升检测不合格";
+ break;
+ case 32:
+ alarmName = "工件真空不合格";
+ break;
+ case 64:
+ alarmName = "平衡缸接近开关异常";
+ break;
+ case 128:
+ alarmName = "增压超时";
+ break;
+ case 256:
+ alarmName = "风压不足";
+ break;
+ default:
+ break;
+ }
+ Perfusion_Alarm alarm1 = new Perfusion_Alarm();
+ alarm1.PerfusionBoxcode = barCode;
+ alarm1.PerfusionStatus = alarm;
+ alarm1.PerfusionAlarm = alarmName;
+ alarm1.PerfusionCompleted = "1";//异常取消
+ await _perfusionAlarmServices.AddAsync(alarm1);
+ }
+ catch (Exception ex)
+ {
+ log.Error(ex.Message);
+ }
+ }
+ }
+ }
+ #endregion
+
+ }
+}
diff --git a/Aucma.Core.Tasks/CommTask/Job_SheetMetalTask_Quartz.cs b/Aucma.Core.Tasks/CommTask/Job_SheetMetalTask_Quartz.cs
new file mode 100644
index 00000000..90d6344e
--- /dev/null
+++ b/Aucma.Core.Tasks/CommTask/Job_SheetMetalTask_Quartz.cs
@@ -0,0 +1,83 @@
+using Admin.Core.IService.ISys;
+using Admin.Core.IService;
+using Admin.Core.Service;
+using Quartz;
+using System;
+using System.Threading.Tasks;
+using Admin.Core.IRepository;
+using Admin.Core.Model.Model_New;
+using System.Collections.Generic;
+using Aucma.Core.PLc;
+using System.Linq;
+using Admin.Core.Model;
+
+///
+/// 钣金计划
+///
+namespace Aucma.Core.Tasks
+{
+ public class Job_SheetMetalTask_Quartz
+ {
+ #region 钣金任务
+ ///
+ /// 实时任务信息-每日产量
+ ///
+ public delegate Task SmEverDayDelegate();
+ public static event SmEverDayDelegate SmEverDayDelegateEvent;
+
+ ///
+ /// 实时任务信息-展示
+ ///
+ public delegate Task SmShowDelegate(ExecutePlanInfo info);
+ public static event SmShowDelegate SmShowDelegateEvent;
+ #endregion
+
+ private readonly ISmTaskExecutionServices _smTaskExecutionServices;
+ private readonly IExecutePlanInfoServices _taskExecutionServices;
+ public Job_SheetMetalTask_Quartz(ISmTaskExecutionServices smTaskExecutionServices, IExecutePlanInfoServices taskExecutionServices)
+ {
+ _smTaskExecutionServices = smTaskExecutionServices;
+ _taskExecutionServices = taskExecutionServices;
+ }
+ public async Task Execute(IJobExecutionContext context)
+ {
+ await ShowRun(context);
+ await CompleteRun(context);
+ }
+
+ #region 实施当日产量和型号统计
+ public Task Run(IJobExecutionContext context)
+ {
+ SmEverDayDelegateEvent?.Invoke();
+ return Task.CompletedTask;
+ }
+ #endregion
+
+ #region 实时计划显示
+ public async Task ShowRun(IJobExecutionContext context)
+ {
+ var model = await _taskExecutionServices.FirstAsync(d => d.ExecuteStatus == 2);
+ SmShowDelegateEvent?.Invoke(model);
+ }
+ #endregion
+
+ #region 任务完成
+ public Task CompleteRun(IJobExecutionContext context)
+ {
+ var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("后板Plc"));
+ var val = obj.plc.ReadInt32("M100");//任务结束信号存盘
+ if (val == 1)
+ {
+ //1、存储当日完成记录表、计算节拍信息
+
+ //2、更新界面计划执行、当日产量、型号统计、计划列表
+
+ //3、更新日志记录
+
+ //4、更新数据统计列表
+ }
+ return Task.CompletedTask;
+ }
+ #endregion
+ }
+}
diff --git a/Aucma.Core.Tasks/IAucamTaskService.cs b/Aucma.Core.Tasks/IAucamTaskService.cs
new file mode 100644
index 00000000..690e90e6
--- /dev/null
+++ b/Aucma.Core.Tasks/IAucamTaskService.cs
@@ -0,0 +1,8 @@
+//Aucam2022
+namespace Aucma.Core.Tasks
+{
+ public interface IAucamTaskService
+ {
+ void AucamTaskAsync();
+ }
+}