diff --git a/Admin.Core.IService/IService_New/IBaseOrderInfoServices.cs b/Admin.Core.IService/IService_New/IBaseOrderInfoServices.cs
index 8b51d173..7843cb6d 100644
--- a/Admin.Core.IService/IService_New/IBaseOrderInfoServices.cs
+++ b/Admin.Core.IService/IService_New/IBaseOrderInfoServices.cs
@@ -5,12 +5,13 @@ using System.Collections.Generic;
using System.Threading.Tasks;
namespace Admin.Core.IService
-{
+{
///
/// IBaseOrderInfoServices
///
public interface IBaseOrderInfoServices : IBaseServices
{
- Task> QueryPrintInfo();
+ Task> QueryPrintInfo();
+
}
}
\ No newline at end of file
diff --git a/Admin.Core.Service/Service_New/BaseOrderInfoServices.cs b/Admin.Core.Service/Service_New/BaseOrderInfoServices.cs
index b016a288..056de7d1 100644
--- a/Admin.Core.Service/Service_New/BaseOrderInfoServices.cs
+++ b/Admin.Core.Service/Service_New/BaseOrderInfoServices.cs
@@ -214,5 +214,6 @@ namespace Admin.Core.Service
}
#endregion
+
}
}
\ No newline at end of file
diff --git a/Aucma.Core.ProductOffLine/ViewModels/IndexPageViewModel.cs b/Aucma.Core.ProductOffLine/ViewModels/IndexPageViewModel.cs
index 0b0f79c3..c91b1f9f 100644
--- a/Aucma.Core.ProductOffLine/ViewModels/IndexPageViewModel.cs
+++ b/Aucma.Core.ProductOffLine/ViewModels/IndexPageViewModel.cs
@@ -18,6 +18,10 @@ using Aucma.Core.PLc;
using System.Threading.Tasks;
using Consul;
using NetTaste;
+using Admin.Core.IService;
+using Microsoft.Extensions.DependencyInjection;
+using Admin.Core.Model.Model_New;
+using Admin.Core.Model;
/*
* 成品分舵入库首页信息
@@ -28,12 +32,16 @@ namespace Aucma.Core.ProductOffLine.ViewModels
public partial class IndexPageViewModel : ObservableObject
{
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(IndexPageViewModel));
-
-
+ private readonly IBaseOrderInfoServices? _baseOrderInfoServices;
+ private readonly IProductPlanInfoServices? _productPlanInfoServices;
+
public IndexPageViewModel()
{
+ _baseOrderInfoServices = App.ServiceProvider.GetService();
+ _productPlanInfoServices = App.ServiceProvider.GetService();
MvCodeHelper.ReceiveCodeEvent += ReceiveCode;
-
+
+
// test();
//List listdatabase = Appsettings.app("DBS")
// .Where(i => i.Enabled).ToList();
@@ -210,7 +218,7 @@ namespace Aucma.Core.ProductOffLine.ViewModels
///
///
/// 扫码器方向,1左边分A库,2右边分B库
- private void ReceiveCode(string code, int scannerNo)
+ private async void ReceiveCode(string code, int scannerNo)
{
//1.扫描的SN条码去条码系统查询GET_BARCODE_DATA
@@ -233,14 +241,44 @@ namespace Aucma.Core.ProductOffLine.ViewModels
//3.调条码系统保存接口入库SaveBarcodeInfo
- //4.更新mes数据库完成数量和时间(BASE_ORDERINFO,PRODUCT_PLANINFO)
+
+ //4.更新mes数据库完成数量和时间(BASE_ORDERINFO,PRODUCT_PLANINFO) 注意:查询的字段可能需要修改,确保数据一致
+
+ //4.1截取订单号去查询更新BASE_ORDERINFO
+ string orderCode = "11215484";
+ BaseOrderInfo order = _baseOrderInfoServices.Query(x => x.OrderCode == orderCode).FirstOrDefault();
+ if (order.CompleteAmount == 0)
+ {
+ order.CompleteAmount++;
+ order.BeginDate = DateTime.Now;
+ }
+ if(order.CompleteAmount==order.OrderAmount)
+ {
+ order.EndDate = DateTime.Now;
+ }
+ order.UpdatedTime = DateTime.Now;
+ _baseOrderInfoServices.UpdateAsync(order);
+ //4.2根据订单号去更新PRODUCT_PLANINFO
+ ProductPlanInfo productIndo =_productPlanInfoServices.Query(x => x.OrderCode == orderCode).FirstOrDefault();
+ if (productIndo.CompleteAmount == 0)
+ {
+ productIndo.CompleteAmount++;
+ productIndo.BeginTime = DateTime.Now;
+ }
+ if(productIndo.CompleteAmount==productIndo.PlanAmount)
+ {
+ productIndo.EndTime = DateTime.Now;
+ }
+ productIndo.UpdatedTime = DateTime.Now;
+ _productPlanInfoServices.UpdateAsync(productIndo);
+
//5.分垛A,B库逻辑(先左边读到的条码分A库,右边读到的B库==>预留分库逻辑)
//6.下发plc信号
SendPlcPass(scannerNo);
- }
+ }
#region plc交互
@@ -260,12 +298,23 @@ namespace Aucma.Core.ProductOffLine.ViewModels
{
if (obj.plc.IsConnected)
{
- // 写入入库方向,两条道plc地址不同
- obj.plc.WriteInt32("D100", scannerNo);
- // 往plc写入放行信号
- obj.plc.WriteInt32("D102", 1);
+ if (scannerNo == 1)
+ {
+ // 写入入库方向,两条道plc地址不同
+ obj.plc.WriteInt32("D100", scannerNo);
+ // 往plc写入放行信号
+ obj.plc.WriteInt32("D102", 1);
+ }
+ else
+ {
+ // 写入入库方向,两条道plc地址不同
+ obj.plc.WriteInt32("D200", scannerNo);
+ // 往plc写入放行信号
+ obj.plc.WriteInt32("D202", 1);
+ }
+
// 等待plc反馈信号
- waitPlcSignal();
+ waitPlcSignal(scannerNo);
// semaphore.Wait();
result = true;
}
@@ -289,7 +338,7 @@ namespace Aucma.Core.ProductOffLine.ViewModels
/// 读取plc放行反馈
///
///
- private void waitPlcSignal()
+ private void waitPlcSignal(int scannerNo)
{
try
{
@@ -299,34 +348,43 @@ namespace Aucma.Core.ProductOffLine.ViewModels
var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("成品下线Plc"));
Task.Run(() =>
{
- if (obj != null)
- {
- if (obj.plc.IsConnected)
- {
+ if (obj != null && obj.plc.IsConnected)
+ {
do
+ {
+ if (scannerNo == 1)
{
// 读取plc反馈信号
if (obj.plc.ReadInt32("D102") == 2)
{
Console.WriteLine("收到plc放行成功");
- // 清空数据
+ // 清空数据
obj.plc.WriteInt32("D100", 0);
obj.plc.WriteInt32("D102", 0);
isFlag = false;
}
+ }
+ else
+ {
+ // 读取plc反馈信号
+ if (obj.plc.ReadInt32("D202") == 2)
+ {
+ Console.WriteLine("收到plc放行成功");
+ // 清空数据
+ obj.plc.WriteInt32("D200", 0);
+ obj.plc.WriteInt32("D202", 0);
+ isFlag = false;
+ }
+ }
Thread.Sleep(1000);
} while (isFlag);
// 释放信号量
// semaphore.Release();
- }
- else
- {
- log.Info("成品下线plc连接失败,请检查plc连接");
- }
+
}
else
{
- log.Info("获取plc连接对象信息为空");
+ log.Info("成品下线plc连接失败");
}
});
@@ -375,7 +433,8 @@ namespace Aucma.Core.ProductOffLine.ViewModels
///
void test()
{
- string connectionString = "Data Source=(DESCRIPTION=(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.1.50)(PORT = 1521)))(CONNECT_DATA=(SERVICE_NAME=tmdata)));User ID=ILS_SORT;Password=Aucma_2019;";
+ // string aa = BaseDBConfig.MutiInitConn().Item1[2].Connection;
+ string connectionString = "Data Source=(DESCRIPTION=(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.1.50)(PORT = 1521)))(CONNECT_DATA=(SERVICE_NAME=tmdata)));User ID=ILS_SORT;Password=Aucma_2019;";
// string connectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=175.27.215.92)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=helowin)));User ID=aucma_scada;Password=aucma;";
// string functionQuery = "SELECT COUNT(*) from CODE_BINDING";
string sql = "SELECT ILS_TMPRD.ILS_SORT_BARCODE_PKG.GET_BARCODE_DATA('16160030000000910779') FROM DUAL";