From 36caed8d9445f1b103b66021461b689c2ece3152 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8C=83?= <15095123350@163.com>
Date: Thu, 11 Jul 2024 15:23:21 +0800
Subject: [PATCH] 20240711
---
.../Controllers/RecieveRcsController.cs | 19 +-
src/Khd.Core.Api/appsettings.json | 4 +-
.../Interface/IWcsTaskApplication.cs | 1 +
.../WcsTaskApplication.cs | 176 ++++-
.../Dto/webapi/AgvCompeleted.cs | 4 +
src/Khd.Core.Domain/Models/WcsCmdLog.cs | 6 +-
src/Khd.Core.Wcs/Khd.Core.Wcs.csproj | 2 +-
src/Khd.Core.Wcs/MainCentralControl.cs | 28 +-
src/Khd.Core.Wcs/Program.cs | 10 +-
src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs | 10 +-
src/Khd.Core.Wcs/Wcs/FirstFloor.cs | 166 ++--
src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs | 3 +-
src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs | 719 ++++++++++++++++--
src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs | 162 +---
src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs | 105 ++-
src/Khd.Core.Wcs/appsettings.json | 32 +-
src/Khd.Core.Wpf/Form/FormBoardT.xaml | 132 +++-
src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs | 429 +++++++++--
src/Khd.Core.Wpf/Khd.Core.Wpf.csproj | 9 +
src/Khd.Core.Wpf/Resources/cancel.png | Bin 0 -> 6838 bytes
src/Khd.Core.Wpf/Scan/SerialPortHelper.cs | 31 +-
src/Khd.Core.Wpf/TaskForm/AddTask.xaml | 24 +-
src/Khd.Core.Wpf/TaskForm/AddTask.xaml.cs | 78 +-
src/Khd.Core.Wpf/TaskForm/EmptyCountForm.xaml | 2 +-
.../TaskForm/EmptyCountForm.xaml.cs | 11 +-
.../myConverter/AgvTaskStatusConverter.cs | 98 ++-
.../单据-迅捷PDF转换器.ico | Bin 0 -> 51262 bytes
27 files changed, 1731 insertions(+), 530 deletions(-)
create mode 100644 src/Khd.Core.Wpf/Resources/cancel.png
create mode 100644 src/Khd.Core.Wpf/单据-迅捷PDF转换器.ico
diff --git a/src/Khd.Core.Api/Controllers/RecieveRcsController.cs b/src/Khd.Core.Api/Controllers/RecieveRcsController.cs
index 3d2ead5..733568e 100644
--- a/src/Khd.Core.Api/Controllers/RecieveRcsController.cs
+++ b/src/Khd.Core.Api/Controllers/RecieveRcsController.cs
@@ -26,14 +26,25 @@ namespace Khd.Core.Api.Controllers
public ReponseagvCallbackDto agvCallback(agvCallbackDto agvCallbackDto)
{
LogManager.Info($"RecieveRcsController接口信息:{agvCallbackDto.ToJsonString()}");
- if (agvCallbackDto.method == "start")
- {
- Thread.Sleep(1000);
- }
+ Thread.Sleep(500);
return _application.AgvCallback(agvCallbackDto);
}
+ ///
+ /// 接收agv接收任务通知接口
+ ///
+ ///
+ ///
+ [HttpPost("agvCallback2")]
+ public ReponseagvCallbackDto agvCallback2(agvCallbackDto agvCallbackDto)
+ {
+ LogManager.Info($"RecieveRcsController接口信息:{agvCallbackDto.ToJsonString()}");
+ Thread.Sleep(500);
+ return _application.AgvCallback2(agvCallbackDto);
+
+ }
+
///
/// 背负式Agv通知任务完成
///
diff --git a/src/Khd.Core.Api/appsettings.json b/src/Khd.Core.Api/appsettings.json
index 344b949..21dd7e5 100644
--- a/src/Khd.Core.Api/appsettings.json
+++ b/src/Khd.Core.Api/appsettings.json
@@ -11,10 +11,10 @@
//},
"AllowedHosts": "*",
"ConnectionStrings": {
- "DefaultConnection": "server=172.16.12.100;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khdrkjy2024...;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
+ //"DefaultConnection": "server=172.16.12.100;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khdrkjy2024...;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
//"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True",
//"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True",
- //"DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
+ "DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
},
"JwtSecurityOption": {
"SigningKey": "3c41f60c-1d12-11ec-890d-00163e1b8678",
diff --git a/src/Khd.Core.Application/Interface/IWcsTaskApplication.cs b/src/Khd.Core.Application/Interface/IWcsTaskApplication.cs
index 506e674..79bd085 100644
--- a/src/Khd.Core.Application/Interface/IWcsTaskApplication.cs
+++ b/src/Khd.Core.Application/Interface/IWcsTaskApplication.cs
@@ -29,5 +29,6 @@ namespace Khd.Core.Application.Interface
AgvCompeletedResponse TaskContinue(TaskContinue taskContinue);
AgvCompeletedResponse TaskReturn(TaskReturn taskReturn);
+ ReponseagvCallbackDto AgvCallback2(agvCallbackDto agvCallbackDto);
}
}
\ No newline at end of file
diff --git a/src/Khd.Core.Application/WcsTaskApplication.cs b/src/Khd.Core.Application/WcsTaskApplication.cs
index 262cf54..3cde9e5 100644
--- a/src/Khd.Core.Application/WcsTaskApplication.cs
+++ b/src/Khd.Core.Application/WcsTaskApplication.cs
@@ -2,6 +2,7 @@
using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
+using Masuit.Tools.Logging;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
@@ -57,6 +58,8 @@ namespace Khd.Core.Application
WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.objid == wcscmd.taskId);
if (wcsTask != null)
{
+ Console.WriteLine(agvCallbackDto.method.ToLower() + "," + wcscmd.objid + "," + wcscmd.taskCode);
+ LogManager.Info(agvCallbackDto.method.ToLower() + "," + wcscmd.objid + "," + wcscmd.taskCode);
//start 开始 end结束 continue继续
//待取货
if (agvCallbackDto.method.ToLower() == "start")
@@ -65,7 +68,7 @@ namespace Khd.Core.Application
wcscmd.sendFlag = 1;
wcsTask.taskStatus = 2;
_dbContext.WcsCmd.Update(wcscmd);
- _dbContext.WcsCmdLog.Where(t=>t.objid==wcscmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 2 });
+ _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 2 });
_dbContext.WcsTask.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 });
_dbContext.SaveChanges();
@@ -77,32 +80,31 @@ namespace Khd.Core.Application
wcscmd.sendFlag = 1;
wcscmd.cmdStatus = 4;
wcsTask.taskStatus = 4;
- _dbContext.WcsCmd.Update(wcscmd);
- _dbContext.WcsCmdLog.Where(t=>t.objid==wcscmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 4 });
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsCmd.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmd { cmdStatus = 4 });
+ _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 4 });
+ _dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTask { taskStatus = 4 });
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 });
- _dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功";
}
//已取货待放货
if (agvCallbackDto.method.ToLower() == "continue")
{
+
wcscmd.sendFlag = 1;
wcscmd.cmdStatus = 3;
wcsTask.taskStatus = 3;
- _dbContext.WcsCmd.Update(wcscmd);
- _dbContext.WcsCmdLog.Where(t=>t.objid==wcscmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 3 });
- _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsCmd.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmd { cmdStatus = 3 });
+ _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 3 });
+ _dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTask { taskStatus = 3 });
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 });
- _dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功";
}
//放货完成
if (agvCallbackDto.method.ToLower() == "end")
{
- if (wcsTask.nextPointId !=10)
+ if (wcsTask.nextPointId != 10)
{
wcscmd.cmdStatus = 5;
wcscmd.sendFlag = 1;
@@ -129,7 +131,7 @@ namespace Khd.Core.Application
reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功";
}
-
+
}
}
}
@@ -141,6 +143,7 @@ namespace Khd.Core.Application
}
catch (Exception ex)
{
+ LogManager.Error(ex);
reponseagvCallbackDto.code = "1";
reponseagvCallbackDto.message = ex.Message;
}
@@ -180,21 +183,38 @@ namespace Khd.Core.Application
BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == agvCompeletedRequest.endStationCode);
if (baseEquip != null)
{
- var wcsCmd = _dbContext.WcsCmd.Where(t => t.nextPointId == baseEquip.objid).FirstOrDefault();
+ var wcsCmd = _dbContext.WcsCmd.Where(t => t.nextPointId == baseEquip.objid).Where(t => t.cmdStatus == 5).FirstOrDefault();
if (wcsCmd != null)
{
WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.objid == wcsCmd.taskId);
if (wcsTask != null)
{
- agvCompeletedResponse.code = "0";
- agvCompeletedResponse.message = "成功";
- wcsCmd.cmdStatus = 7;
- wcsTask.taskStatus = 7;
- _dbContext.WcsCmd.Update(wcsCmd);
- _dbContext.WcsCmdLog.Where(t=>t.objid==wcsCmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 7 });
- _dbContext.WcsTask.Update(wcsTask);
- _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 });
- _dbContext.SaveChanges();
+ if (wcsTask.taskType != 48)
+ {
+
+ wcsCmd.cmdStatus = 7;
+ wcsTask.taskStatus = 7;
+ _dbContext.WcsCmd.Update(wcsCmd);
+ _dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(a => new WcsCmdLog { cmdStatus = 7 });
+ _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 });
+ _dbContext.SaveChanges();
+ agvCompeletedResponse.code = "0";
+ agvCompeletedResponse.message = "成功";
+ }
+ else
+ {
+
+ wcsCmd.cmdStatus = 4;
+ wcsTask.taskStatus = 4;
+ _dbContext.WcsCmd.Update(wcsCmd);
+ _dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(a => new WcsCmdLog { cmdStatus = 7 });
+ _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 });
+ _dbContext.SaveChanges();
+ agvCompeletedResponse.code = "0";
+ agvCompeletedResponse.message = "成功";
+ }
}
}
else
@@ -211,6 +231,7 @@ namespace Khd.Core.Application
}
catch (Exception ex)
{
+ LogManager.Error(ex);
agvCompeletedResponse.code = "1";
agvCompeletedResponse.message = ex.Message;
}
@@ -230,7 +251,7 @@ namespace Khd.Core.Application
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var wcsTask = _dbContext.WcsTask
.Where(t => t.taskType == 47)
- .Where(t=>t.masterId==taskContinue.materialId)
+ .Where(t => t.masterId == taskContinue.materialId)
.FirstOrDefault();
if (wcsTask != null)
{
@@ -249,6 +270,7 @@ namespace Khd.Core.Application
}
catch (Exception ex)
{
+ LogManager.Error(ex);
compeletedResponse.code = "1";
compeletedResponse.message = ex.Message;
}
@@ -267,13 +289,13 @@ namespace Khd.Core.Application
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
WcsTask wcsTask = _dbContext.WcsTask
.Where(t => t.taskType == 28)
- .Where(t=>t.endPointNo==taskReturn.endStationCode)
+ .Where(t => t.endPointNo == taskReturn.endStationCode)
.FirstOrDefault();
if (wcsTask != null)
{
wcsTask.useFlag = 1;
_dbContext.WcsTask.Update(wcsTask);
- _dbContext.WcsTask.Where(t=>t.objid==wcsTask.objid).Update(a=>new WcsTask { useFlag = 1 });
+ _dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Update(a => new WcsTask { useFlag = 1 });
_dbContext.SaveChanges();
compeletedResponse.code = "0";
compeletedResponse.message = "成功";
@@ -286,10 +308,116 @@ namespace Khd.Core.Application
}
catch (Exception ex)
{
+ LogManager.Error(ex);
compeletedResponse.code = "1";
compeletedResponse.message = ex.Message;
}
return compeletedResponse;
}
+
+ public ReponseagvCallbackDto AgvCallback2(agvCallbackDto agvCallbackDto)
+ {
+ ReponseagvCallbackDto reponseagvCallbackDto = new ReponseagvCallbackDto();
+ try
+ {
+ _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ var wcscmd = _dbContext.WcsCmd
+ .Where(t => t.taskCode == agvCallbackDto.taskCode)
+ .FirstOrDefault();
+ if (wcscmd != null)
+ {
+ WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.objid == wcscmd.taskId);
+ if (wcsTask != null)
+ {
+ //start 开始 end结束 continue继续
+ //待取货
+ if (agvCallbackDto.method.ToLower() == "start")
+ {
+ wcscmd.cmdStatus = 2;
+ wcscmd.sendFlag = 1;
+ wcsTask.taskStatus = 2;
+ _dbContext.WcsCmd.Update(wcscmd);
+ _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 2 });
+ _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 });
+ _dbContext.SaveChanges();
+ reponseagvCallbackDto.code = "0";
+ reponseagvCallbackDto.message = "成功";
+ }
+ if (agvCallbackDto.method.ToLower() == "con")
+ {
+ wcscmd.sendFlag = 1;
+ wcscmd.cmdStatus = 4;
+ wcsTask.taskStatus = 4;
+ _dbContext.WcsCmd.Update(wcscmd);
+ _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 4 });
+ _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 });
+ _dbContext.SaveChanges();
+ reponseagvCallbackDto.code = "0";
+ reponseagvCallbackDto.message = "成功";
+ }
+ //已取货待放货
+ if (agvCallbackDto.method.ToLower() == "continue")
+ {
+ if (wcscmd.cmdStatus > 3)
+ {
+ wcscmd.sendFlag = 1;
+ wcscmd.cmdStatus = 5;
+ wcsTask.taskStatus = 5;
+ _dbContext.WcsCmd.Update(wcscmd);
+ _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 5 });
+ _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5 });
+ _dbContext.SaveChanges();
+ reponseagvCallbackDto.code = "0";
+ reponseagvCallbackDto.message = "成功";
+ }
+ else
+ {
+ wcscmd.sendFlag = 1;
+ wcscmd.cmdStatus = 3;
+ wcsTask.taskStatus = 3;
+ _dbContext.WcsCmd.Update(wcscmd);
+ _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 3 });
+ _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 });
+ _dbContext.SaveChanges();
+ reponseagvCallbackDto.code = "0";
+ reponseagvCallbackDto.message = "成功";
+ }
+ }
+ //放货完成
+ if (agvCallbackDto.method.ToLower() == "end")
+ {
+ wcscmd.cmdStatus = 7;
+ wcscmd.sendFlag = 1;
+ wcsTask.taskStatus = 7;
+ _dbContext.WcsCmd.Update(wcscmd);
+ _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 7});
+ _dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 });
+ _dbContext.SaveChanges();
+ reponseagvCallbackDto.code = "0";
+ reponseagvCallbackDto.message = "成功";
+ }
+ }
+ }
+ else
+ {
+ reponseagvCallbackDto.code = "1";
+ reponseagvCallbackDto.message = "未找到当前任务";
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Error(ex);
+ reponseagvCallbackDto.code = "1";
+ reponseagvCallbackDto.message = ex.Message;
+ }
+ //返回请求
+ reponseagvCallbackDto.reqCode = reponseagvCallbackDto.reqCode;
+ return reponseagvCallbackDto;
+ }
}
}
\ No newline at end of file
diff --git a/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs b/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs
index fc8f9a4..c0917c7 100644
--- a/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs
+++ b/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs
@@ -16,12 +16,16 @@ namespace Khd.Core.Domain.Dto.webapi
public class TaskContinue
{
+ public string BarCodeInfo { get; set; }
+ public string palletInfoCode { get; set; }
public long? materialId { get; set; }
public string endStationCode { get; set; }
}
public class TaskReturn
{
+ public string BarCodeInfo { get; set; }
+ public string palletInfoCode { get; set; }
public long? materialId { get; set; }
public string endStationCode { get; set; }
}
diff --git a/src/Khd.Core.Domain/Models/WcsCmdLog.cs b/src/Khd.Core.Domain/Models/WcsCmdLog.cs
index 7faffb8..a27e5d6 100644
--- a/src/Khd.Core.Domain/Models/WcsCmdLog.cs
+++ b/src/Khd.Core.Domain/Models/WcsCmdLog.cs
@@ -17,7 +17,11 @@ namespace Khd.Core.Domain.Models
[Table("wcs_cmd_log")]
public class WcsCmdLog
{
-
+ ///
+ /// 任务代码
+ ///
+ [Column("task_code")]
+ public string taskCode { get; set; }
///
/// 主键
///
diff --git a/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj b/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj
index b97046c..f8ed9e4 100644
--- a/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj
+++ b/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj
@@ -31,7 +31,7 @@
- PreserveNewest
+ Always
diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs
index cbbd6c9..e0f9745 100644
--- a/src/Khd.Core.Wcs/MainCentralControl.cs
+++ b/src/Khd.Core.Wcs/MainCentralControl.cs
@@ -51,7 +51,7 @@ namespace Khd.Core.Wcs
WcsMoRenQuXiang = StaticPlcHelper.GetValue("2", "1");
StaticData.BasePlcpointList = dbContext.BasePlcpoint.Where(t => t.isDelete == 0).ToList();
StaticData.BaseEquip = dbContext.BaseEquip.ToList();
- StaticData.basePlcs = dbContext.BasePlc.ToList();
+ //StaticData.basePlcs = dbContext.BasePlc.ToList();
StaticData.BaseDictionary = dbContext.BaseDictionary.ToList();
foreach (var plcConfig in StaticData.PlcConfigs)
@@ -72,8 +72,8 @@ namespace Khd.Core.Wcs
StaticData.PlcDic.TryAdd(plcConfig.Code, plc);
}
}
- SystemTimer systemTimer = new SystemTimer(_host);
- systemTimer.Start();
+ //SystemTimer systemTimer = new SystemTimer(_host);
+ //systemTimer.Start();
//创建任务
CreateTaskByRecord createTaskByRecord = new(_host, "");
createTaskByRecord.StartPoint();
@@ -87,10 +87,10 @@ namespace Khd.Core.Wcs
//SecondFloorPoint secondFloorPoint = new(_host, StaticData.PlcDic[0], SecondBaseFloorEquip.floorNo.Value, SecondBaseFloorEquip.equipNo);
//secondFloorPoint.StartPoint();
- ////二层AGV
- //var SecondFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 4).First();
- //SecondFloorAGV secondFloorAGV = new(_host, StaticData.PlcDic[0], SecondFloorAgvEquip.floorNo.Value, SecondFloorAgvEquip.equipNo);
- //secondFloorAGV.StartPoint();
+ //二层AGV
+ var SecondFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 4).First();
+ SecondFloorAGV secondFloorAGV = new(_host, StaticData.PlcDic[0], SecondFloorAgvEquip.floorNo.Value, SecondFloorAgvEquip.equipNo);
+ secondFloorAGV.StartPoint();
////二楼线体
//var SecondFloorLineEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 3).First();
@@ -117,19 +117,19 @@ namespace Khd.Core.Wcs
//FiveFloorLine fiveFloorLine = new(_host, StaticData.PlcDic[0], FiveFloorLineEquip.floorNo.Value, FiveFloorLineEquip.equipNo);
//fiveFloorLine.StartPoint();
- //五层CTU
- var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First();
- FiveFloorCTU fiveFloorCTU = new(_host, StaticData.PlcDic[1], FiveFloorCTUEquip.floorNo.Value, FiveFloorCTUEquip.equipNo);
- fiveFloorCTU.StartPoint();
+ ////五层CTU
+ //var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First();
+ //FiveFloorCTU fiveFloorCTU = new(_host, StaticData.PlcDic[1], FiveFloorCTUEquip.floorNo.Value, FiveFloorCTUEquip.equipNo);
+ //fiveFloorCTU.StartPoint();
////五层AGV
//var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First();
//FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[2], FifthFloorAgvEquip.floorNo.Value, FifthFloorAgvEquip.equipNo);
//fifthFloorAGV.StartPoint();
- var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 11).First();
- FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[1], FifthFloorBearAgvEquip.floorNo.Value, FifthFloorBearAgvEquip.equipNo);
- fiveFloorBearAgv.StartPoint();
+ //var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid==28).First();
+ //FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[1], FifthFloorBearAgvEquip.floorNo.Value, FifthFloorBearAgvEquip.equipNo);
+ //fiveFloorBearAgv.StartPoint();
}
catch (Exception ex)
{
diff --git a/src/Khd.Core.Wcs/Program.cs b/src/Khd.Core.Wcs/Program.cs
index 4f843a9..8e8b065 100644
--- a/src/Khd.Core.Wcs/Program.cs
+++ b/src/Khd.Core.Wcs/Program.cs
@@ -6,6 +6,7 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
+using System.Diagnostics;
internal class Program
{
@@ -17,7 +18,14 @@ internal class Program
AppDomain.CurrentDomain.UnhandledException += GlobalExceptionHandler; //全局异常捕获
try
{
- var mutex = new Mutex(true, "服务端", out bool ret);
+ Process[] processes = Process.GetProcessesByName("Khd.Core.Wcs");
+ if (processes.Length > 1)
+ {
+ Console.Write("系统已经启动,请勿重复启动1");
+ Console.ReadLine();
+ return;
+ }
+ var mutex = new Mutex(true, "Khd.Core.Wcs", out bool ret);
if (ret)
{
IHost host = CreateHostBuilder(args).Build();
diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
index 6266d11..b3d43e8 100644
--- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
+++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
@@ -84,6 +84,10 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("出库任务监听启动成功");
}
+ ///
+ /// 半成品入库
+ ///
+ ///
private void CreateFiveProductInTaskLogic(object? obj)
{
using var scope = _host.Services.CreateScope();
@@ -356,8 +360,7 @@ namespace Khd.Core.Wcs.Wcs
if (wmsRawReturn.executeStatus == "0")
{
//任务未开始Status=0
- string startStation = wmsRawReturn.endStationCode;
- BaseEquip startEquip = StaticData.BaseEquip.First(t => t.equipNo == startStation);
+ BaseEquip startEquip = StaticData.BaseEquip.First(t => t.equipNo == wmsRawReturn.endStationCode);
WcsTask wcsTask = new()
{
objid = StaticData.SnowId.NextId(),
@@ -607,7 +610,7 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.outstockAmount > t.realOutstockAmount)
.Where(t => t.auditStatus == "1")
.ToList();
- List wcsTaskManuals = dbContext.WcsTaskManual.OrderBy(t => t.createBy).ToList();
+ List wcsTaskManuals = dbContext.WcsTaskManual.Where(t=>t.nextPointId== 11).OrderBy(t => t.createBy).ToList();
if (wcsTaskManuals.Count > 0)
{
WcsOutstockLock wcsOutstockLock = dbContext.WcsOutstockLock.Where(t => t.warehouseId == 512).First();
@@ -1104,6 +1107,7 @@ namespace Khd.Core.Wcs.Wcs
{
}
+ Thread.Sleep(1000);
}
diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
index c579aab..d212567 100644
--- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
+++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
@@ -57,10 +57,7 @@ namespace Khd.Core.Wcs.Wcs
///
private readonly BasePlcpoint reserialno06;
- ///
- /// 是否可以写去向
- ///
- private readonly BasePlcpoint canwritewcsrun06;
+
public FirstFloor(IHost host, Plc.S7.Plc plc)
@@ -87,7 +84,6 @@ namespace Khd.Core.Wcs.Wcs
//一楼提升机到位信号 读
this.reserialno06 = StaticData.BasePlcpointList.First(t => t.equipmentNo.Contains("Hoister") && t.plcpointNo.Contains("reserialno06"));
- this.canwritewcsrun06 = StaticData.BasePlcpointList.First(t => t.equipmentNo.Contains("Hoister") && t.plcpointNo.Contains("canwritewcsrun06"));
}
///
@@ -108,10 +104,90 @@ namespace Khd.Core.Wcs.Wcs
IsBackground = true
};
firstFloorHoister.Start();
+
+ Thread CallEmptyThread = new Thread(CallEmpty)
+ {
+ IsBackground = true
+ };
+ CallEmptyThread.Start();
+
Console.WriteLine(DateTime.Now + ":一楼提升机线程启动成功");
LogManager.Info("一楼提升机线程启动成功");
}
+ private void CallEmpty()
+ {
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ BasePlcpoint oneOutPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "oneOut");
+ BasePlcpoint someOutPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "someOut");
+ BaseEquip mdjEquip = StaticData.BaseEquip.First(t => t.objid == 40);
+ while (true)
+ {
+ try
+ {
+ dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ var linesignal = this._plc.Read(this.linesignal01.plcpointAddress);
+ int taskCount = dbContext.WcsTask.Where(t => t.nextPointId == 6 && t.taskStatus > 0 && t.endPointId == 1).Count();
+ int firstFloorCount = dbContext.WcsTask.Where(t => t.currPointId == 1).Count();
+ if (Convert.ToInt32(linesignal) == 0 && taskCount == 0 && firstFloorCount == 0)
+ {
+ WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.nextPointId == 40).FirstOrDefault();
+ if (wcsTaskManual != null)
+ {
+ if (wcsTaskManual.taskType == 58)
+ {
+ this._plc.WriteToPoint(oneOutPoint.plcpointAddress, "1", oneOutPoint.plcpointLength.ToString());
+ WcsTask wcsTask = CoreMapper.Map(wcsTaskManual);
+ wcsTask.createTime = DateTime.Now;
+ wcsTask.createBy = "一楼接驳位线程";
+ wcsTask.taskStatus = 0;
+ wcsTask.useFlag = 0;
+ wcsTask.isEmpty = "1";
+ wcsTask.remark = "一楼创建入库任务";
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ mdjEquip.emptyCount -= 1;
+ if (mdjEquip.emptyCount <= 0)
+ {
+ mdjEquip.emptyCount = 0;
+ }
+ dbContext.Update(mdjEquip);
+ dbContext.Add(wcsTaskLog);
+ dbContext.Add(wcsTask);
+ dbContext.SaveChanges();
+ LogManager.Info("一楼接驳位线程:空托盘任务下发成功");
+ Console.WriteLine(DateTime.Now + ":一楼接驳位线程:空托盘任务下发成功");
+ }
+ else if (wcsTaskManual.taskType == 61)
+ {
+ this._plc.WriteToPoint(someOutPoint.plcpointAddress, "1", someOutPoint.plcpointLength.ToString());
+ WcsTask wcsTask = CoreMapper.Map(wcsTaskManual);
+ wcsTask.createTime = DateTime.Now;
+ wcsTask.createBy = "一楼接驳位线程";
+ wcsTask.taskStatus = 0;
+ wcsTask.useFlag = 1;
+ wcsTask.isEmpty = mdjEquip.emptyCount.ToString();
+ wcsTask.remark = "一楼创建入库任务";
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ mdjEquip.emptyCount = 0;
+ dbContext.Update(mdjEquip);
+ dbContext.Add(wcsTaskLog);
+ dbContext.Add(wcsTask);
+ dbContext.SaveChanges();
+ LogManager.Info("一楼接驳位线程:空托盘任务下发成功");
+ Console.WriteLine(DateTime.Now + ":一楼接驳位线程:空托盘任务下发成功");
+ }
+ }
+ }
+ }
+ catch
+ {
+
+ }
+ Thread.Sleep(1000);
+ }
+ }
+
///
/// 启动一楼接驳位线程
///
@@ -292,9 +368,6 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- //var automatic06Value = this._plc.Read(this.automatic.plcpointAddress);//提升机自动状态
- //if (automatic06Value != null && Convert.ToInt32(automatic06Value) == 1)
- //{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
var serialno06Value = this._plc.Read(this.serialno06.plcpointAddress); //提升机流水号 读
@@ -303,10 +376,9 @@ namespace Khd.Core.Wcs.Wcs
var currentfloor06Value = this._plc.Read(this.currentfloor06.plcpointAddress); //提升机当前楼层 读
var targetfloor06Value = this._plc.Read(this.targetfloor06.plcpointAddress); //提升机目的楼层 写
var reserialno06 = this._plc.Read(this.reserialno06.plcpointAddress); //反馈流水号
- var canwritewcsrun06value = this._plc.Read(this.canwritewcsrun06.plcpointAddress);
//正常读到plc值
- if (targetfloor06Value != null && canwritewcsrun06value != null && serialno06Value != null && equipstate06Value != null && currentfloor06Value != null && reserialno06 != null && hoisterTrayIn06Value != null)
+ if (targetfloor06Value != null && serialno06Value != null && equipstate06Value != null && currentfloor06Value != null && reserialno06 != null && hoisterTrayIn06Value != null)
{
//提升机空闲
if (Convert.ToInt32(equipstate06Value) == 0)
@@ -332,21 +404,18 @@ namespace Khd.Core.Wcs.Wcs
{
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)
{
- //if (Convert.ToInt32(canwritewcsrun06value) == 0)
- {
- wcsTask.taskStatus = 2;
- wcsTask.updateBy = "提升机线程";
- wcsTask.updateTime = DateTime.Now;
- wcsTask.remark = "提升机任务执行中";
- BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
- this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
- this._plc.WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
- dbContext.Update(wcsTask);
- dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
- lineEquip.equipStatus = 1;
- dbContext.Update(lineEquip);
- dbContext.SaveChanges();
- }
+ wcsTask.taskStatus = 2;
+ wcsTask.updateBy = "提升机线程";
+ wcsTask.updateTime = DateTime.Now;
+ wcsTask.remark = "提升机任务执行中";
+ BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
+ this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
+ this._plc.WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
+ dbContext.Update(wcsTask);
+ dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
+ lineEquip.equipStatus = 1;
+ dbContext.Update(lineEquip);
+ dbContext.SaveChanges();
}
else
{
@@ -369,21 +438,18 @@ namespace Khd.Core.Wcs.Wcs
BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress))
{
- //if (Convert.ToInt32(canwritewcsrun06value) == 0)
+ if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)//提升机当前楼层为初始地楼层
{
- if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)//提升机当前楼层为初始地楼层
- {
- wcsTask.taskStatus = 2;
- wcsTask.updateBy = "提升机线程";
- wcsTask.updateTime = DateTime.Now;
- wcsTask.remark = "提升机任务执行中";
- BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
- this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
- this._plc.WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
- dbContext.Update(wcsTask);
- dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
- dbContext.SaveChanges();
- }
+ wcsTask.taskStatus = 2;
+ wcsTask.updateBy = "提升机线程";
+ wcsTask.updateTime = DateTime.Now;
+ wcsTask.remark = "提升机任务执行中";
+ BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
+ this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
+ this._plc.WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
+ dbContext.Update(wcsTask);
+ dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
+ dbContext.SaveChanges();
}
}
}
@@ -403,18 +469,15 @@ namespace Khd.Core.Wcs.Wcs
}
if (wcsTask.taskStatus == 3 && Convert.ToInt32(currentfloor06Value) == wcsTask.floorNo && Convert.ToInt32(reserialno06) == wcsTask.serialNo)//任务状态为3,且当前楼层为任务的目的楼层
{
- //if (Convert.ToInt32(canwritewcsrun06value) == 0)
- {
- wcsTask.taskStatus = 4;
- wcsTask.updateBy = "提升机线程";
- wcsTask.updateTime = DateTime.Now;
- wcsTask.remark = "提升机任务执行完成";
- BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
- this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2,表示提升机已到达目的地,让货出去
- dbContext.Update(wcsTask);
- dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
- dbContext.SaveChanges();
- }
+ wcsTask.taskStatus = 4;
+ wcsTask.updateBy = "提升机线程";
+ wcsTask.updateTime = DateTime.Now;
+ wcsTask.remark = "提升机任务执行完成";
+ BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
+ this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2,表示提升机已到达目的地,让货出去
+ dbContext.Update(wcsTask);
+ dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
+ dbContext.SaveChanges();
}
else if (wcsTask.taskStatus == 4)
{
@@ -436,7 +499,6 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
- //}
}
catch (Exception ex)
{
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
index 4706b8f..ffb9945 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
@@ -314,6 +314,7 @@ namespace Khd.Core.Wcs.Wcs
// Thread.Sleep(3000);
// }
//}
+
private bool CtuWaitLogic()
{
BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.objid == CTUID);
@@ -348,7 +349,7 @@ namespace Khd.Core.Wcs.Wcs
///
/// 监控上件扫描点位
///
- public void MonitorInLocatorPoint()
+ public void MonitorInLocatorPoint()
{
List taskType = new() { 1, 3, 5, 7 };
using var scope = _host.Services.CreateScope();
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
index 22cc4b4..99f7b38 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
@@ -9,6 +9,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using System;
+using System.Runtime.Intrinsics.X86;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@@ -76,6 +77,7 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip outEquip = StaticData.BaseEquip.First(t => t.objid == 37);
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 2);
BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.objid == EquipID);
+ BaseEquip wasteEquip = StaticData.BaseEquip.First(t => t.objid == 38);
while (true)
{
try
@@ -85,7 +87,6 @@ namespace Khd.Core.Wcs.Wcs
var taskList = dbContext.WcsTask
.Where(t => t.useFlag == 1)
.Where(t => t.nextPointId == EquipID).OrderBy(t => t.createTime).ToList();
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
foreach (var item in taskList)
{
if (taskList.Where(t => t.taskStatus > 0).Where(t => t.objid != item.objid).Any())
@@ -96,7 +97,7 @@ namespace Khd.Core.Wcs.Wcs
if (item.taskStatus == 0)//下发任务
{
BaseDictionary baseDictionary = StaticData.BaseDictionary.First(t => t.objid == item.taskType);
- if (item.taskType == 50)
+ if (item.taskType == 51)//输送线-小包入口
{
WcsCmd wcsCmd = new WcsCmd()
{
@@ -154,8 +155,9 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
}
}
- else if (item.taskType == 51)
+ else if (item.taskType == 56)//废料工位-库位
{
+ var endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
@@ -167,9 +169,69 @@ namespace Khd.Core.Wcs.Wcs
createTime = DateTime.Now,
createBy = FloorNo + "楼AGV",
currPointId = item.currPointId,
- currPointNo = lineEquip.agvPositionCode,
+ currPointNo = wasteEquip.agvPositionCode,
nextPointId = item.endPointId,
- nextPointNo = outEquip.agvPositionCode,
+ nextPointNo = endEquip.agvPositionCode,
+ };
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = wcsCmd.objid.ToString(),
+ positionCodePath = new List
+ {
+ new ()
+ {
+ positionCode=wcsCmd.currPointNo,
+ type="00"
+ },
+ new ()
+ {
+ positionCode=wcsCmd.nextPointNo,
+ type="00"
+ }
+ },
+ taskTyp = baseDictionary.dicValue,
+ ctnrTyp = "2",
+ };
+ string message = JsonConvert.SerializeObject(agvTask);
+ string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
+
+ var reponseMessage = JsonConvert.DeserializeObject(result);
+ if (reponseMessage != null && reponseMessage.message == "成功")
+ {
+ LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ wcsCmd.taskCode = reponseMessage.data;
+ wcsCmd.cmdStatus = 1;
+ item.taskStatus = 1;
+ dbContext.Update(item);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 });
+ WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd);
+ dbContext.Add(wcsCmdLog);
+ dbContext.Add(wcsCmd);
+ dbContext.SaveChanges();
+ }
+ else
+ {
+ LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
+ }
+ }
+ else if (item.taskType == 49)//小包出口-库位
+ {
+ WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
+ WcsCmd wcsCmd = new WcsCmd()
+ {
+ objid = StaticData.SnowId.NextId(),
+ cmdStatus = 0,
+ taskId = item.objid,
+ useFlag = 1,
+ cmdType = item.taskType,
+ containerNo = item.containerNo,
+ createTime = DateTime.Now,
+ createBy = FloorNo + "楼AGV",
+ currPointId = item.currPointId,
+ currPointNo = outEquip.agvPositionCode,
+ nextPointId = item.endPointId,
+ nextPointNo = wmsBaseLocation.agvPositionCode,
};
var agvTask = new RequestAGVTaskDto
{
@@ -212,8 +274,9 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("二楼Agv下发任务失败" + item.taskType + message);
}
}
- else if (item.taskType == 52)
+ else if (item.taskType == 57)//周转位-提升机
{
+ var startPoint = StaticData.BaseEquip.First(t => t.objid == item.startPointId);
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
@@ -225,7 +288,7 @@ namespace Khd.Core.Wcs.Wcs
createTime = DateTime.Now,
createBy = FloorNo + "楼AGV",
currPointId = item.currPointId,
- currPointNo = lineEquip.agvPositionCode,
+ currPointNo = startPoint.agvPositionCode,
nextPointId = item.endPointId,
nextPointNo = lineEquip.agvPositionCode,
};
@@ -253,8 +316,8 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
- LogManager.Info("二楼AGV线程继续任务" + item.objid + "," + item.startPointNo + "," + item.endPointNo);
- Console.WriteLine(DateTime.Now + ":二楼AGV线程继续任务" + item.startPointNo + "," + item.endPointNo);
+ LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -267,7 +330,303 @@ namespace Khd.Core.Wcs.Wcs
}
else
{
- LogManager.Info("二楼Agv下发任务失败" + item.taskType + message);
+ LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
+ }
+ }
+ else if (item.taskType == 50)//库位-提升机
+ {
+ var startPoint = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
+ WcsCmd wcsCmd = new WcsCmd()
+ {
+ objid = StaticData.SnowId.NextId(),
+ cmdStatus = 0,
+ taskId = item.objid,
+ useFlag = 1,
+ cmdType = item.taskType,
+ containerNo = item.containerNo,
+ createTime = DateTime.Now,
+ createBy = FloorNo + "楼AGV",
+ currPointId = item.currPointId,
+ currPointNo = startPoint.agvPositionCode,
+ nextPointId = item.endPointId,
+ nextPointNo = lineEquip.agvPositionCode,
+ };
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = wcsCmd.objid.ToString(),
+ positionCodePath = new List
+ {
+ new ()
+ {
+ positionCode=wcsCmd.currPointNo,
+ type="00"
+ },
+ new ()
+ {
+ positionCode=wcsCmd.nextPointNo,
+ type="00"
+ }
+ },
+ taskTyp = baseDictionary.dicValue,
+ ctnrTyp = "2",
+ };
+ string message = JsonConvert.SerializeObject(agvTask);
+ string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
+ var reponseMessage = JsonConvert.DeserializeObject(result);
+ if (reponseMessage != null && reponseMessage.message == "成功")
+ {
+ LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ wcsCmd.taskCode = reponseMessage.data;
+ wcsCmd.cmdStatus = 1;
+ item.taskStatus = 1;
+ dbContext.Update(item);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 });
+ WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd);
+ dbContext.Add(wcsCmdLog);
+ dbContext.Add(wcsCmd);
+ dbContext.SaveChanges();
+ }
+ else
+ {
+ LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
+ }
+ }
+ else if (item.taskType == 55)//2F移库
+ {
+ WmsBaseLocation fromWmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
+ WmsBaseLocation toWmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
+ WcsCmd wcsCmd = new WcsCmd()
+ {
+ objid = StaticData.SnowId.NextId(),
+ cmdStatus = 0,
+ taskId = item.objid,
+ useFlag = 1,
+ cmdType = item.taskType,
+ containerNo = item.containerNo,
+ createTime = DateTime.Now,
+ createBy = FloorNo + "楼AGV",
+ currPointId = item.currPointId,
+ currPointNo = fromWmsBaseLocation.agvPositionCode,
+ nextPointId = item.endPointId,
+ nextPointNo = toWmsBaseLocation.agvPositionCode,
+ };
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = wcsCmd.objid.ToString(),
+ positionCodePath = new List
+ {
+ new()
+ {
+ positionCode = wcsCmd.currPointNo,
+ type = "00"
+ },
+ new()
+ {
+ positionCode = wcsCmd.nextPointNo,
+ type = "00"
+ }
+ }
+ };
+ string message = JsonConvert.SerializeObject(agvTask);
+ string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
+ var reponseMessage = JsonConvert.DeserializeObject(result);
+ if (reponseMessage != null && reponseMessage.message == "成功")
+ {
+ LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ wcsCmd.taskCode = reponseMessage.data;
+ wcsCmd.cmdStatus = 1;
+ item.taskStatus = 1;
+ dbContext.Update(item);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 });
+ WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd);
+ dbContext.Add(wcsCmdLog);
+ dbContext.Add(wcsCmd);
+ dbContext.SaveChanges();
+ }
+ else
+ {
+ LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
+ }
+ }
+ else if (item.taskType == 53)//提升机-废料工位
+ {
+ WcsCmd wcsCmd = new WcsCmd()
+ {
+ objid = StaticData.SnowId.NextId(),
+ cmdStatus = 0,
+ taskId = item.objid,
+ useFlag = 1,
+ cmdType = item.taskType,
+ containerNo = item.containerNo,
+ createTime = DateTime.Now,
+ createBy = FloorNo + "楼AGV",
+ currPointId = item.currPointId,
+ currPointNo = lineEquip.agvPositionCode,
+ nextPointId = item.endPointId,
+ nextPointNo = wasteEquip.agvPositionCode,
+ };
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = wcsCmd.objid.ToString(),
+ positionCodePath = new List
+ {
+ new ()
+ {
+ positionCode=wcsCmd.currPointNo,
+ type="00"
+ },
+ new ()
+ {
+ positionCode=wcsCmd.nextPointNo,
+ type="00"
+ }
+ },
+ taskTyp = baseDictionary.dicValue,
+ ctnrTyp = "2",
+ };
+ string message = JsonConvert.SerializeObject(agvTask);
+ string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
+ var reponseMessage = JsonConvert.DeserializeObject(result);
+ if (reponseMessage != null && reponseMessage.message == "成功")
+ {
+ LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ wcsCmd.taskCode = reponseMessage.data;
+ wcsCmd.cmdStatus = 1;
+ item.taskStatus = 1;
+ dbContext.Update(item);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 });
+ WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd);
+ dbContext.Add(wcsCmdLog);
+ dbContext.Add(wcsCmd);
+ dbContext.SaveChanges();
+ }
+ else
+ {
+ LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
+ }
+ }
+ else if (item.taskType == 54)//周转位-废料工位
+ {
+ var wasteEquipLocation = StaticData.BaseEquip.FirstOrDefault(t => t.objid == item.startPointId);
+ if (wasteEquipLocation != null)
+ {
+ WcsCmd wcsCmd = new WcsCmd()
+ {
+ objid = StaticData.SnowId.NextId(),
+ cmdStatus = 0,
+ taskId = item.objid,
+ useFlag = 1,
+ cmdType = item.taskType,
+ containerNo = item.containerNo,
+ createTime = DateTime.Now,
+ createBy = FloorNo + "楼AGV",
+ currPointId = item.currPointId,
+ currPointNo = wasteEquipLocation.agvPositionCode,
+ nextPointId = item.endPointId,
+ nextPointNo = wasteEquip.agvPositionCode,
+ };
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = wcsCmd.objid.ToString(),
+ positionCodePath = new List
+ {
+ new ()
+ {
+ positionCode=wcsCmd.currPointNo,
+ type="00"
+ },
+ new ()
+ {
+ positionCode=wcsCmd.nextPointNo,
+ type="00"
+ }
+ },
+ taskTyp = baseDictionary.dicValue,
+ ctnrTyp = "2",
+ };
+ string message = JsonConvert.SerializeObject(agvTask);
+ string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
+ var reponseMessage = JsonConvert.DeserializeObject(result);
+ if (reponseMessage != null && reponseMessage.message == "成功")
+ {
+ LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ wcsCmd.taskCode = reponseMessage.data;
+ wcsCmd.cmdStatus = 1;
+ item.taskStatus = 1;
+ dbContext.Update(item);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 });
+ WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd);
+ dbContext.Add(wcsCmdLog);
+ dbContext.Add(wcsCmd);
+ dbContext.SaveChanges();
+ }
+ else
+ {
+ LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
+ }
+ }
+ }
+ else if (item.taskType == 58)//提升机到周转位
+ {
+ var endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
+ WcsCmd wcsCmd = new WcsCmd()
+ {
+ objid = StaticData.SnowId.NextId(),
+ cmdStatus = 0,
+ taskId = item.objid,
+ useFlag = 1,
+ cmdType = item.taskType,
+ containerNo = item.containerNo,
+ createTime = DateTime.Now,
+ createBy = FloorNo + "楼AGV",
+ currPointId = item.currPointId,
+ currPointNo = lineEquip.agvPositionCode,
+ nextPointId = item.endPointId,
+ nextPointNo = endEquip.agvPositionCode,
+ };
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = wcsCmd.objid.ToString(),
+ positionCodePath = new List
+ {
+ new ()
+ {
+ positionCode=wcsCmd.currPointNo,
+ type="00"
+ },
+ new ()
+ {
+ positionCode=wcsCmd.nextPointNo,
+ type="00"
+ }
+ },
+ taskTyp = baseDictionary.dicValue,
+ ctnrTyp = "2",
+ };
+ string message = JsonConvert.SerializeObject(agvTask);
+ string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
+ var reponseMessage = JsonConvert.DeserializeObject(result);
+ if (reponseMessage != null && reponseMessage.message == "成功")
+ {
+ LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ wcsCmd.taskCode = reponseMessage.data;
+ wcsCmd.cmdStatus = 1;
+ item.taskStatus = 1;
+ dbContext.Update(item);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 });
+ WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd);
+ dbContext.Add(wcsCmdLog);
+ dbContext.Add(wcsCmd);
+ dbContext.SaveChanges();
+ }
+ else
+ {
+ LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
}
}
}
@@ -279,60 +638,327 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("二楼AGV线程完成任务" + item.objid);
if (wcsCmd.cmdStatus == 3)
{
- var agvTask = new RequestAGVTaskDto
+ if (wcsCmd.currPointId == lineEquip.objid)
{
- reqCode = StaticData.SnowId.NextId().ToString(),
- taskCode = wcsCmd.taskCode
- };
- string message = JsonConvert.SerializeObject(agvTask);
- string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/continueTask", message);
- ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result);
- if (reponseMessage != null && reponseMessage.message == "成功")
+ var lineSignal02 = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal02").plcpointAddress);
+ var rfid = StaticData.PlcDic[0].ReadRFID(StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID002").plcpointAddress);
+ if (lineSignal02 != null && rfid != null && rfid == item.containerNo && lineSignal02.ToString() == "1")
+ {
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = StaticData.SnowId.NextId().ToString(),
+ taskCode = wcsCmd.taskCode
+ };
+ string message = JsonConvert.SerializeObject(agvTask);
+ string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/continueTask", message);
+ ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result);
+ if (reponseMessage != null && reponseMessage.message == "成功")
+ {
+ wcsCmd.cmdStatus = 4;
+ dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 });
+ dbContext.Update(wcsCmd);
+ dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 });
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 });
+ dbContext.SaveChanges();
+ }
+ }
+ }
+ else if (wcsCmd.currPointId == wasteEquip.objid)
{
- wcsCmd.cmdStatus = 4;
- dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 });
- dbContext.Update(wcsCmd);
- dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 });
- dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 });
- dbContext.SaveChanges();
+ if (true)
+ {
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = StaticData.SnowId.NextId().ToString(),
+ taskCode = wcsCmd.taskCode
+ };
+ string message = JsonConvert.SerializeObject(agvTask);
+ string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/continueTask", message);
+ ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result);
+ if (reponseMessage != null && reponseMessage.message == "成功")
+ {
+ wcsCmd.cmdStatus = 4;
+ dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 });
+ dbContext.Update(wcsCmd);
+ dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 });
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 });
+ dbContext.SaveChanges();
+ }
+ }
+ }
+ else if (wcsCmd.currPointId == outEquip.objid)
+ {
+ if (true)
+ {
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = StaticData.SnowId.NextId().ToString(),
+ taskCode = wcsCmd.taskCode
+ };
+ string message = JsonConvert.SerializeObject(agvTask);
+ string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/continueTask", message);
+ ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result);
+ if (reponseMessage != null && reponseMessage.message == "成功")
+ {
+ wcsCmd.cmdStatus = 4;
+ dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 });
+ dbContext.Update(wcsCmd);
+ dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 });
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 });
+ dbContext.SaveChanges();
+ }
+ }
+ }
+ else
+ {
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = StaticData.SnowId.NextId().ToString(),
+ taskCode = wcsCmd.taskCode
+ };
+ string message = JsonConvert.SerializeObject(agvTask);
+ string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/continueTask", message);
+ ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result);
+ if (reponseMessage != null && reponseMessage.message == "成功")
+ {
+ wcsCmd.cmdStatus = 4;
+ item.taskStatus = 4;
+ dbContext.Update(wcsCmd);
+ dbContext.Update(item);
+ dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 });
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 });
+ dbContext.SaveChanges();
+ }
}
}
else if (wcsCmd.cmdStatus == 5)
{
- if (item.taskType == 50)
+ if (item.taskType == 53)
{
- dbContext.Remove(item);
- dbContext.Remove(wcsCmd);
- dbContext.SaveChanges();
- dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
- dbContext.WcsCmdLog.Where(t => t.taskId == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
+ if (true)
+ {
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = StaticData.SnowId.NextId().ToString(),
+ taskCode = wcsCmd.taskCode
+ };
+ string message = JsonConvert.SerializeObject(agvTask);
+ string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/continueTask", message);
+ ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result);
+ if (reponseMessage != null && reponseMessage.message == "成功")
+ {
+ wcsCmd.cmdStatus = 6;
+ item.taskStatus = 6;
+ dbContext.Update(item);
+ dbContext.Update(wcsCmd);
+ dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 });
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
+ dbContext.SaveChanges();
+ }
+ }
+
}
else if (item.taskType == 51)
{
- WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
- wmsBaseLocation.locationStatus = "1";
- wmsBaseLocation.instockFlag = "0";
- wmsBaseLocation.containerCode = item.containerNo;
- dbContext.Update(wmsBaseLocation);
+ if (true)
+ {
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = StaticData.SnowId.NextId().ToString(),
+ taskCode = wcsCmd.taskCode
+ };
+ string message = JsonConvert.SerializeObject(agvTask);
+ string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/continueTask", message);
+ ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result);
+ if (reponseMessage != null && reponseMessage.message == "成功")
+ {
+ wcsCmd.cmdStatus = 6;
+ item.taskStatus = 6;
+ dbContext.Update(item);
+ dbContext.Update(wcsCmd);
+ dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 });
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
+ dbContext.SaveChanges();
+ }
+ }
+ }
+ }
+ else if (item.taskStatus == 7)
+ {
+ if (item.taskType == 49)
+ {
+ WmsProductInstock? wmsProductInstock = dbContext.WmsProductInstock.FirstOrDefault(t => t.productInstockId == item.orderId);
+ if (wmsProductInstock != null)
+ {
+ WmsProductInstockDetail? wmsProductInstockDetail = dbContext.WmsProductInstockDetail.FirstOrDefault(t => t.productInstockId == wmsProductInstock.productInstockId);
+ if (wmsProductInstockDetail != null)
+ {
+ MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == item.containerNo);
+ if (mesBasePalletInfo != null)
+ {
+ MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.palletInfoCode == item.containerNo);
+ if (mesBaseBarcodeInfo != null)
+ {
+ WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
+ wmsBaseLocation.instockFlag = "0";
+ wmsBaseLocation.locationStatus = "1";
+ wmsBaseLocation.containerCode = item.containerNo;
+ WmsProductStock wmsProductStock = new WmsProductStock()
+ {
+ productId = mesBasePalletInfo.materialId,
+ activeFlag = "1",
+ frozenAmount = 0,
+ createBy = "WCS",
+ createDate = DateTime.Now,
+ updateBy = "WCS",
+ updateDate = DateTime.Now,
+ instockDate = DateTime.Now,
+ locationCode = wmsBaseLocation.locationCode,
+ occupyAmount = 0,
+ totalAmount = 1,
+ palletInfoCode = item.containerNo,
+ planCode = wmsProductInstock.planCode,
+ planDetailCode = wmsProductInstock.planDetailCode,
+ productBatch = mesBasePalletInfo.materialBarcode,
+ saleorderCode = wmsProductInstock.saleorderCode,
+ productStockId = StaticData.SnowId.NextId(),
+ saleOrderId = wmsProductInstock.SaleOrderId,
+ stockType = "3",
+ qualityStatus = "0",
+ warehouseFloor = 2,
+ warehouseId = wmsBaseLocation.warehouseId
+ };
+ wmsProductInstockDetail.executeStatus = "2";
+ wmsProductInstock.endTime = DateTime.Now;
+ wmsProductInstock.executeStatus = "2";
+ dbContext.Update(wmsProductInstockDetail);
+ dbContext.Add(wmsProductStock);
+ dbContext.Update(wmsBaseLocation);
+ dbContext.Update(wmsProductInstock);
+ dbContext.Remove(item);
+ dbContext.Remove(wcsCmd);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
+ dbContext.WcsCmdLog.Where(t => t.objid == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 });
+ dbContext.SaveChanges();
+ }
+ }
+ }
+ }
+ }
+ else if (item.taskType == 50)
+ {
+ WmsProductOutstock? wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == item.orderId);
+ if (wmsProductOutstock != null)
+ {
+ WmsProductOutstockDetail? wmsProductOutstockDetail = dbContext.WmsProductOutstockDetail.FirstOrDefault(t => t.productOutstockId == wmsProductOutstock.productOutstockId);
+ if (wmsProductOutstockDetail != null)
+ {
+ var wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.startPointId).First();
+ WmsProductStock wmsProductStock = dbContext.WmsProductStock.First(t => t.locationCode == wmsBaseLocation.locationCode);
+ wmsProductOutstockDetail.executeStatus = "2";
+ wmsProductOutstock.endTime = DateTime.Now;
+ wmsProductOutstock.executeStatus = "2";
+ wmsBaseLocation.locationStatus = "1";
+ wmsBaseLocation.outstockFlag = "0";
+ wmsBaseLocation.containerCode = null;
+ dbContext.Remove(wmsProductStock);
+ dbContext.Update(wmsBaseLocation);
+ dbContext.Update(wmsProductOutstockDetail);
+ dbContext.Update(wmsProductOutstock);
+ dbContext.Remove(item);
+ dbContext.Remove(wcsCmd);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
+ dbContext.WcsCmdLog.Where(t => t.objid == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 });
+ dbContext.SaveChanges();
+
+ }
+ }
+ }
+ else if (item.taskType == 58)
+ {
+ BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
+ endEquip.equipStatus = 1;
+ endEquip.emptyCount = Convert.ToInt32(item.isEmpty);
+ dbContext.Update(endEquip);
dbContext.Remove(item);
dbContext.Remove(wcsCmd);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
+ dbContext.WcsCmdLog.Where(t => t.objid == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 });
dbContext.SaveChanges();
- dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
- dbContext.WcsCmdLog.Where(t => t.taskId == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
}
- else if (item.taskType == 52)
+ else if (item.taskType == 53)
{
- WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
- wmsBaseLocation.locationStatus = "1";
- wmsBaseLocation.instockFlag = "0";
- wmsBaseLocation.containerCode = null;
- dbContext.Update(wmsBaseLocation);
- item.taskStatus = 6;
- dbContext.Update(item);
+ BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
+ startEquip.equipStatus = 0;
+ dbContext.Update(startEquip);
+ dbContext.Remove(item);
dbContext.Remove(wcsCmd);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
+ dbContext.WcsCmdLog.Where(t => t.objid == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 });
dbContext.SaveChanges();
+ }
+ else if (item.taskType == 51)
+ {
+ BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
+ startEquip.equipStatus = 0;
+ dbContext.Update(startEquip);
+ dbContext.Remove(item);
+ dbContext.Remove(wcsCmd);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
+ dbContext.WcsCmdLog.Where(t => t.objid == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 });
+ dbContext.SaveChanges();
+ }
+ else if (item.taskType == 54)
+ {
+ dbContext.Remove(item);
+ dbContext.Remove(wcsCmd);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
+ dbContext.WcsCmdLog.Where(t => t.objid == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 });
+ dbContext.SaveChanges();
+ }
+ else if (item.taskType == 55)
+ {
+ WmsBaseLocation fromWmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
+ WmsBaseLocation toWmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
+ fromWmsBaseLocation.locationStatus = "1";
+ toWmsBaseLocation.locationStatus = "1";
+ fromWmsBaseLocation.outstockFlag = "0";
+ toWmsBaseLocation.outstockFlag = "0";
+ fromWmsBaseLocation.instockFlag = "0";
+ toWmsBaseLocation.instockFlag = "0";
+ fromWmsBaseLocation.containerCode = null;
+ toWmsBaseLocation.containerCode = item.containerNo;
+ dbContext.Update(fromWmsBaseLocation);
+ dbContext.Update(toWmsBaseLocation);
+ dbContext.Remove(item);
+ dbContext.Remove(wcsCmd);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
+ dbContext.WcsCmdLog.Where(t => t.objid == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 });
+ dbContext.SaveChanges();
+ }
+ else if (item.taskType == 56)
+ {
+ wasteEquip.emptyCount = 0;
+ wasteEquip.equipStatus = 0;
+ dbContext.Remove(item);
+ dbContext.Update(wasteEquip);
+ dbContext.Remove(wcsCmd);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
+ dbContext.WcsCmdLog.Where(t => t.objid == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 });
+ dbContext.SaveChanges();
+ }
+ else if (item.taskType == 57)
+ {
+ BaseEquip emptyEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
+ emptyEquip.emptyCount = 0;
+ emptyEquip.equipStatus = 0;
+ item.taskStatus = 8;
+ dbContext.Update(item);
+ dbContext.Update(emptyEquip);
+ dbContext.Remove(wcsCmd);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
- dbContext.WcsCmdLog.Where(t => t.taskId == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
+ dbContext.WcsCmdLog.Where(t => t.objid == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
+ dbContext.SaveChanges();
}
}
}
@@ -341,6 +967,7 @@ namespace Khd.Core.Wcs.Wcs
}
catch (Exception ex)
{
+
LogManager.Error(ex);
}
finally
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs
index 4e7b3f0..a9bf602 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs
@@ -18,11 +18,6 @@ namespace Khd.Core.Wcs.Wcs
List ScanPoint { get; set; }//点位信息
private readonly IHost _host;
private readonly Plc.S7.Plc _plc;
- private readonly BasePlcpoint LineRFID;
- private readonly BasePlcpoint LineWcsrun;
- private readonly BasePlcpoint LineSignal;
- private readonly BasePlcpoint LineIsPallet;
- private readonly BasePlcpoint LineSerialNO;
int FloorNo { get; set; }
string EquipNo = "";
public SecondFloorPoint(IHost host, Plc.S7.Plc plc, int floor, string equipNo)
@@ -31,12 +26,6 @@ namespace Khd.Core.Wcs.Wcs
this._plc = plc;
FloorNo = floor;
EquipNo = equipNo;
- this.ScanPoint = StaticData.BasePlcpointList.Where(t => t.floorNo == floor).ToList();//加载当前站点所对应的点位
- this.LineRFID = this.ScanPoint.First(t => t.plcpointNo.Contains("RFID"));
- this.LineWcsrun = this.ScanPoint.First(t => t.plcpointNo.Contains("wcsrun"));
- this.LineSignal = this.ScanPoint.First(t => t.plcpointNo.Contains("linesignal"));
- this.LineIsPallet = this.ScanPoint.First(t => t.plcpointNo.Contains("ispallet"));
- this.LineSerialNO = this.ScanPoint.First(t => t.plcpointNo.Contains("serialno"));
//var lineRFID = this._plc.Read(NodeSettingCarNo.plcpointAddress);
try
@@ -66,39 +55,26 @@ namespace Khd.Core.Wcs.Wcs
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
+ var rfidPoint = StaticData.BasePlcpointList.First(t => t.id == 52);
+ var agvGetPoint = StaticData.BasePlcpointList.First(t => t.id == 53);
+ var agvPutPoint = StaticData.BasePlcpointList.First(t => t.id == 54);
while (true)
{
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
- //入库任务
- var rfid = this._plc.Read(LineRFID.plcpointAddress);
- var isSignal = this._plc.Read(LineSignal.plcpointAddress); //到位信号
- var isPallet = this._plc.Read(LineIsPallet.plcpointAddress);//是否有托盘
- if (rfid != null && isSignal != null && isPallet != null)
+ var agvGetValue = this._plc.Read(agvGetPoint.plcpointAddress);
+ var agvPutValue = this._plc.Read(agvPutPoint.plcpointAddress);
+ var rfidValue = this._plc.ReadRFID(rfidPoint.plcpointAddress);
+ if (agvGetValue != null && agvPutValue != null && rfidValue != null)
{
- //正常读到输送线信息 有到位信号,并且有托盘,获取条码信息
- if (Convert.ToInt32(isSignal) > 0 && Convert.ToInt32(isPallet) == 1)
+ if(Convert.ToBoolean(agvPutValue))
{
- //获取条码信息
- var palletNo = Convert.ToString(rfid);
- //获取入库任务
- var wcsTask = GetTask(palletNo, FloorNo, EquipNo);
- //判断是否为出库任务
- if (wcsTask.taskType == 5)
- {
- var nextEquip = StaticData.BaseEquip.Where(t => t.floorNo == FloorNo && t.equipType == 4).FirstOrDefault();
- //更新任务下一点位为AGV
- wcsTask.nextPointId = nextEquip.objid;
- wcsTask.nextPointNo = nextEquip.equipNo;
- wcsTask.updateTime = DateTime.Now;
- wcsTask.updateBy = FloorNo + "楼输送线";
- dbContext.Update(wcsTask);
- dbContext.SaveChanges();
- ////入库任务
- ////下发agv任务
- //SendTask(wcsTask);
- }
+
+ }
+ if (Convert.ToBoolean(agvGetValue) && !string.IsNullOrEmpty(rfidValue))
+ {
+
}
}
}
@@ -112,117 +88,5 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
- //获取输送线上的任务
- public WcsTask GetTask(string containerNo, int floorNo, string equipNo)
- {
- using var scope = _host.Services.CreateScope();
- using var dbContext = scope.ServiceProvider.GetRequiredService();
- var wcsTask = new WcsTask();
- var wareHouseList = StaticData.WmsBaseWarehouse.ToList();
- try
- {
- //获取条码号,如果该条码任务存在就继续任务,如果条码不存在,创建入库任务并调度agv
- var task = StaticData.WcsTask.Where(t => t.containerNo == containerNo).FirstOrDefault();
- if (task == null)
- {
- var palletInfo = StaticData.MesBasePalletInfo.Where(t => t.palletInfoCode == containerNo).FirstOrDefault();
- //查询该条码绑定的物料信息
- var material = StaticData.WmsWarehouseMaterial.Where(t => t.storageId == palletInfo.materialId).FirstOrDefault();
- var wareHouse = wareHouseList.Where(t => t.warehouseId == material.warehouseId).FirstOrDefault();
- var dic = StaticData.BaseDictionary.Where(t => t.dicKey == "TaskType" && t.agvType == "I" && t.dicField == wareHouse.warehouseInstockType).FirstOrDefault();
- var equip = StaticData.BaseEquip.ToList();
- var startEquip = equip.Where(t => t.equipNo == equipNo).FirstOrDefault();
- var endPoint = wareHouseList.Where(t => t.warehouseFloor == floorNo).FirstOrDefault();
- //var currEquip=
- if (palletInfo != null)
- {
- //自动获取id
-
- var objid = StaticData.SnowId.NextId();
- WcsTask newTask = new()
- {
- objid = objid,
- taskType = Convert.ToInt32(dic.dicValue),
- containerNo = containerNo,
- taskStatus = 0,
- materialId = material.storageId,
- qty = Convert.ToInt32(palletInfo.bindAmount),
- startPointId = startEquip.objid,
- startPointNo = equipNo,
- currPointId = startEquip.objid,
- currPointNo = equipNo,
- endPointId = endPoint.warehouseId,
- endPointNo = endPoint.warehouseCode,
- };
- dbContext.Add(newTask);
- dbContext.SaveChanges();
-
- wcsTask = newTask;
- }
- else
- {
- LogManager.Info(floorNo + "楼接驳位,托盘" + containerNo + "未绑定!");
- }
- }
- else
- {
- wcsTask = StaticData.WcsTask.Where(t => t.currPointNo == equipNo).FirstOrDefault();
- }
- }
- catch (Exception ex)
- {
- LogManager.Info(floorNo + "楼接驳位异常" + ex.Message);
- throw;
- }
- return wcsTask;
- }
- ///
- /// 下发任务
- ///
- ///
- public void SendTask(WcsTask task)
- {
- using var scope = _host.Services.CreateScope();
- using var dbContext = scope.ServiceProvider.GetRequiredService();
- //入库类型
- List taskInType = new List { 1, 3, 5, 7 };
- List taskOutType = new List { 2, 4, 6, 8 };
- try
- {
- //获取
- if (task == null) return;
- if (taskInType.Contains(task.taskType.GetValueOrDefault()))
- {
- //首先判断是否已下发指令
- var cmd = StaticData.WcsCmd.Where(t => t.taskId == task.objid).FirstOrDefault();
- //指令表存在说明已下发
- if (cmd != null) return;
- //获取下发agv指令
- string ip = ""; int port = 0; string url = "";
- RequestAGVTaskDto agvtask = new RequestAGVTaskDto();
- agvtask.reqCode = task.serialNo.ToString();
- var json = JsonConvert.SerializeObject(agvtask);
- HttpHelper.SendPostMessage(ip, port, url, json);
- //未下发给agv下发指令
- WcsCmd taskCmd = new WcsCmd()
- {
- taskId = task.objid,
- cmdType = task.taskType,
- serialNo = task.serialNo,
- equipmentNo = task.equipmentNo,
- cmdStatus = 1,
- createBy = "",
- createTime = DateTime.Now,
- };
- dbContext.Add(taskCmd);
- dbContext.SaveChanges();
- }
- }
- catch (Exception)
- {
-
- throw;
- }
- }
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
index 5ece7ad..3a41e3d 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
@@ -66,9 +66,11 @@ namespace Khd.Core.Wcs.Wcs
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
BaseEquip inEquip = StaticData.BaseEquip.First(t => t.objid == 36);
- BaseEquip outEquip = StaticData.BaseEquip.First(t=>t.objid==37);
- BaseEquip lineEquip = StaticData.BaseEquip.First(t=>t.objid==2);
- BaseEquip agvEquip = StaticData.BaseEquip.First(t=>t.objid==8);
+ BaseEquip outEquip = StaticData.BaseEquip.First(t => t.objid == 37);
+ BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 2);
+ BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 8);
+ BaseEquip tsjEquip = StaticData.BaseEquip.First(t => t.objid == 6);
+ var agvPutPoint = StaticData.BasePlcpointList.First(t => t.id == 54);
while (true)
{
try
@@ -77,6 +79,7 @@ namespace Khd.Core.Wcs.Wcs
//入库任务
var rfid = this._plc.ReadRFID(LineRFID.plcpointAddress);
var isSignal = this._plc.Read(LineSignal.plcpointAddress);
+ StaticData.PlcDic[2].Read(agvPutPoint.plcpointAddress);
if (rfid != null && isSignal != null)
{
//正常读到输送线信息 有到位信号,并且有托盘,获取条码信息
@@ -89,29 +92,81 @@ namespace Khd.Core.Wcs.Wcs
.FirstOrDefault(t => t.containerNo == palletNo && t.nextPointId == baseEquip.objid);
if (wcsTask != null)
{
- if (wcsTask.taskStatus == 5)//入库,提升机任务是完成状态
+ if (wcsTask.taskStatus == 5)//入托盘入口,提升机任务是完成状态
{
- dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Delete();
- WcsTask newTask = CoreMapper.Map(wcsTask);
- newTask.taskStatus = 0;
- newTask.objid = StaticData.SnowId.NextId();
- newTask.nextPointId=agvEquip.objid;
- newTask.nextPointNo=agvEquip.equipNo;
- newTask.createTime = DateTime.Now;
- newTask.updateTime = DateTime.Now;
- newTask.endPointId=inEquip.objid;
- newTask.endPointNo=inEquip.equipNo;
- newTask.containerNo=palletNo;
- newTask.currPointId=lineEquip.objid;
- newTask.currPointNo=lineEquip.equipNo;
- newTask.taskType=2;
- newTask.useFlag=1;
- dbContext.WcsTask.Add(newTask);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
- dbContext.Add(wcsTaskLog);
- dbContext.SaveChanges();
- LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + palletNo);
- Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + palletNo);
+ if (wcsTask.taskType != 99)
+ {
+ dbContext.WcsTask.Remove(wcsTask);
+ WcsTask newTask = CoreMapper.Map(wcsTask);
+ newTask.taskStatus = 0;
+ newTask.objid = StaticData.SnowId.NextId();
+ newTask.nextPointId = agvEquip.objid;
+ newTask.nextPointNo = agvEquip.equipNo;
+ newTask.createTime = DateTime.Now;
+ newTask.updateTime = DateTime.Now;
+ newTask.endPointId = inEquip.objid;
+ newTask.endPointNo = inEquip.equipNo;
+ newTask.containerNo = palletNo;
+ newTask.currPointId = lineEquip.objid;
+ newTask.currPointNo = lineEquip.equipNo;
+ newTask.taskType = 2;
+ newTask.useFlag = 1;
+ dbContext.WcsTask.Add(newTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.SaveChanges();
+ LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + palletNo);
+ Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + palletNo);
+ }
+ else
+ {
+
+ }
+ }
+ else if (wcsTask.taskStatus == 6)
+ {
+ WmsProductOutstock? wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == wcsTask.orderId);
+ if (wmsProductOutstock != null)
+ {
+ BaseEquip? endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsProductOutstock.endStationCode);
+ if (endEquip != null)
+ {
+ dbContext.WcsTask.Remove(wcsTask);
+ WcsTask newTask = CoreMapper.Map(wcsTask);
+ newTask.serialNo = SystemData.GetSerialNo(dbContext);
+ newTask.taskStatus = 0;
+ newTask.objid = StaticData.SnowId.NextId();
+ newTask.nextPointId = tsjEquip.objid;
+ newTask.nextPointNo = tsjEquip.equipNo;
+ newTask.createTime = DateTime.Now;
+ newTask.updateTime = DateTime.Now;
+ newTask.endPointId = endEquip.objid;
+ newTask.endPointNo = endEquip.equipNo;
+ newTask.containerNo = palletNo;
+ newTask.currPointId = lineEquip.objid;
+ newTask.currPointNo = lineEquip.equipNo;
+ newTask.taskType = 6;
+ newTask.useFlag = 1;
+ newTask.fromFloorNo = 2;
+ newTask.floorNo = endEquip.floorNo;
+ dbContext.WcsTask.Add(newTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.SaveChanges();
+ LogManager.Info("二楼接驳位生成任务出库成功,托盘号:" + palletNo);
+ Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务出库成功,托盘号:" + palletNo);
+ }
+ else
+ {
+ LogManager.Info("二楼接驳位出库任务出库失败,找不到终点站点");
+ Console.WriteLine(DateTime.Now + ":二楼接驳位出库任务出库失败,找不到终点站点");
+ }
+ }
+ else
+ {
+ LogManager.Info("二楼接驳位出库任务出库失败,找不到订单信息");
+ Console.WriteLine(DateTime.Now + ":二楼接驳位出库任务出库失败,找不到订单信息");
+ }
}
}
}
diff --git a/src/Khd.Core.Wcs/appsettings.json b/src/Khd.Core.Wcs/appsettings.json
index c273bc0..1b7381e 100644
--- a/src/Khd.Core.Wcs/appsettings.json
+++ b/src/Khd.Core.Wcs/appsettings.json
@@ -6,14 +6,14 @@
//"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
},
"PlcConfigs": [
- //{
- // "IP": "192.168.2.30",
- // "Port": 102, //102是默认端口
- // "CpuType": 40,
- // "Rack": 0,
- // "Slot": 1,
- // "Code": 0
- //},
+ {
+ "IP": "192.168.2.30",
+ "Port": 102, //102是默认端口
+ "CpuType": 40,
+ "Rack": 0,
+ "Slot": 1,
+ "Code": 0
+ },
{
"IP": "192.168.2.31",
"Port": 102, //102是默认端口
@@ -22,14 +22,14 @@
"Slot": 1,
"Code": 1
},
- //{
- // "IP": "192.168.2.220",
- // "Port": 102, //102是默认端口
- // "CpuType": 40,
- // "Rack": 0,
- // "Slot": 1,
- // "Code": 2
- //}
+ {
+ "IP": "192.168.2.220",
+ "Port": 102, //102是默认端口
+ "CpuType": 40,
+ "Rack": 0,
+ "Slot": 1,
+ "Code": 2
+ }
],
"PLCSetting": {
"Mode": "0",
diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml b/src/Khd.Core.Wpf/Form/FormBoardT.xaml
index 3efd4b1..f4e291b 100644
--- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml
+++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml
@@ -25,6 +25,7 @@
+
@@ -1534,7 +1565,7 @@
@@ -1623,9 +1654,15 @@
-
-
-
+
+
+
+
+
@@ -1764,13 +1801,18 @@
+
+
-
-
-
+
+
+
-