From 4d23f57e7c96004c1bb4c2375fdb4602b22f8e8f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8C=83?= <15095123350@163.com>
Date: Mon, 15 Jul 2024 09:41:59 +0800
Subject: [PATCH] 20240715
---
.../Controllers/RecieveRcsController.cs | 16 +-
.../Interface/IWcsTaskApplication.cs | 1 +
.../Khd.Core.Application.csproj | 1 +
.../WcsTaskApplication.cs | 52 +-
src/Khd.Core.Domain/Auth/SysMenu.cs | 20 +
src/Khd.Core.Domain/Auth/SysRole.cs | 19 +
src/Khd.Core.Domain/Auth/SysUser.cs | 32 +
src/Khd.Core.Domain/Dto/agv/WcsAgvStatus.cs | 50 +
.../Dto/webapi/AgvCompeleted.cs | 8 +-
.../Dto/webapi/AgvStatusDto.cs | 6 +-
.../Dto/webapi/CallMaterial.cs | 8 +
.../Dto/webapi/genAgvSchedulingTask.cs | 2 +-
src/Khd.Core.Domain/Models/BaseEquip.cs | 3 +
src/Khd.Core.Domain/Models/BasePlc.cs | 8 +-
.../Models/MesBaseMaterialInfo.cs | 5 -
src/Khd.Core.Domain/Models/PlcPoint.cs | 7 +-
src/Khd.Core.Domain/Models/WcsTask.cs | 23 +-
src/Khd.Core.Domain/Models/WcsTaskLog.cs | 2 +-
src/Khd.Core.Domain/Models/WcsTaskManual.cs | 8 +-
src/Khd.Core.Domain/Models/WmsBaseLocation.cs | 2 +-
.../DefaultDbContext.cs | 6 +-
src/Khd.Core.Library/Mapper/CoreMapper.cs | 6 +-
src/Khd.Core.Plc/S7/PLCHelpers.cs | 2 +-
src/Khd.Core.Plc/StaticPlcHelper.cs | 6 +-
src/Khd.Core.Wcs/Global/HttpHelper.cs | 2 +-
src/Khd.Core.Wcs/Global/StaticData.cs | 6 +-
src/Khd.Core.Wcs/MainCentralControl.cs | 34 +-
src/Khd.Core.Wcs/SystemData.cs | 7 +-
src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs | 1621 +++++++++++------
src/Khd.Core.Wcs/Wcs/FirstFloor.cs | 402 ++--
src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs | 153 +-
src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs | 30 +-
src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs | 38 +-
src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs | 13 +-
src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs | 8 -
src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs | 178 +-
src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs | 170 +-
src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs | 221 ++-
src/Khd.Core.Wcs/Wcs/SystemTimer.cs | 2 +-
src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs | 355 +++-
src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs | 84 +-
src/Khd.Core.Wcs/Wcs/WcsToWms.cs | 7 +-
src/Khd.Core.Wpf/App.xaml.cs | 9 +-
src/Khd.Core.Wpf/CSS/DataGridClass.xaml | 8 +-
src/Khd.Core.Wpf/Form/FormBoard.xaml.cs | 1 -
src/Khd.Core.Wpf/Form/FormBoardT.xaml | 651 +++++--
src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs | 516 +++++-
src/Khd.Core.Wpf/HttpHelper.cs | 2 +-
src/Khd.Core.Wpf/Scan/SerialPortHelper.cs | 11 +-
src/Khd.Core.Wpf/SystemData.cs | 12 +-
src/Khd.Core.Wpf/TaskForm/AddTask.xaml.cs | 51 +-
src/Khd.Core.Wpf/TaskForm/EmptyCountForm.xaml | 2 +-
.../TaskForm/EmptyCountForm.xaml.cs | 14 +-
src/Khd.Core.Wpf/TaskForm/FloorForm.xaml | 32 +
src/Khd.Core.Wpf/TaskForm/FloorForm.xaml.cs | 32 +
src/Khd.Core.Wpf/TaskForm/MenuList.xaml | 113 ++
src/Khd.Core.Wpf/TaskForm/MenuList.xaml.cs | 101 +
src/Khd.Core.Wpf/TaskForm/RawMessageShow.xaml | 51 +
.../TaskForm/RawMessageShow.xaml.cs | 45 +
src/Khd.Core.Wpf/dto/taskModel.cs | 70 +
.../myConverter/AgvTaskStatusConverter.cs | 8 +-
.../myConverter/CtuTaskStatusConverter.cs | 10 +-
.../myConverter/EquipConverter.cs | 3 -
.../myConverter/HoisterTaskStatusConverter.cs | 3 -
.../myConverter/TypeDataConverter.cs | 3 -
65 files changed, 3779 insertions(+), 1593 deletions(-)
create mode 100644 src/Khd.Core.Domain/Auth/SysMenu.cs
create mode 100644 src/Khd.Core.Domain/Auth/SysRole.cs
create mode 100644 src/Khd.Core.Domain/Auth/SysUser.cs
create mode 100644 src/Khd.Core.Domain/Dto/agv/WcsAgvStatus.cs
create mode 100644 src/Khd.Core.Domain/Dto/webapi/CallMaterial.cs
create mode 100644 src/Khd.Core.Wpf/TaskForm/FloorForm.xaml
create mode 100644 src/Khd.Core.Wpf/TaskForm/FloorForm.xaml.cs
create mode 100644 src/Khd.Core.Wpf/TaskForm/MenuList.xaml
create mode 100644 src/Khd.Core.Wpf/TaskForm/MenuList.xaml.cs
create mode 100644 src/Khd.Core.Wpf/TaskForm/RawMessageShow.xaml
create mode 100644 src/Khd.Core.Wpf/TaskForm/RawMessageShow.xaml.cs
create mode 100644 src/Khd.Core.Wpf/dto/taskModel.cs
diff --git a/src/Khd.Core.Api/Controllers/RecieveRcsController.cs b/src/Khd.Core.Api/Controllers/RecieveRcsController.cs
index 733568e..c84fffb 100644
--- a/src/Khd.Core.Api/Controllers/RecieveRcsController.cs
+++ b/src/Khd.Core.Api/Controllers/RecieveRcsController.cs
@@ -12,6 +12,7 @@ namespace Khd.Core.Api.Controllers
public class RecieveRcsController : ControllerBase
{
private readonly IWcsTaskApplication _application;
+
public RecieveRcsController(IWcsTaskApplication application)
{
_application = application;
@@ -20,7 +21,7 @@ namespace Khd.Core.Api.Controllers
///
/// 接收agv接收任务通知接口
///
- ///
+ ///
///
[HttpPost("agvCallback")]
public ReponseagvCallbackDto agvCallback(agvCallbackDto agvCallbackDto)
@@ -34,7 +35,7 @@ namespace Khd.Core.Api.Controllers
///
/// 接收agv接收任务通知接口
///
- ///
+ ///
///
[HttpPost("agvCallback2")]
public ReponseagvCallbackDto agvCallback2(agvCallbackDto agvCallbackDto)
@@ -81,5 +82,16 @@ namespace Khd.Core.Api.Controllers
return _application.TaskReturn(taskReturn);
}
+ ///
+ /// 通知去翻转机的任务
+ ///
+ ///
+ ///
+ [HttpPost("callMaterial")]
+ public ReponseMessage CallMaterial(CallMaterial callMaterial)
+ {
+ LogManager.Info($"CallMaterial 接口收到消息: {callMaterial}");
+ return _application.CallMaterial(callMaterial);
+ }
}
}
\ No newline at end of file
diff --git a/src/Khd.Core.Application/Interface/IWcsTaskApplication.cs b/src/Khd.Core.Application/Interface/IWcsTaskApplication.cs
index 79bd085..0420acd 100644
--- a/src/Khd.Core.Application/Interface/IWcsTaskApplication.cs
+++ b/src/Khd.Core.Application/Interface/IWcsTaskApplication.cs
@@ -30,5 +30,6 @@ namespace Khd.Core.Application.Interface
AgvCompeletedResponse TaskReturn(TaskReturn taskReturn);
ReponseagvCallbackDto AgvCallback2(agvCallbackDto agvCallbackDto);
+ ReponseMessage CallMaterial(CallMaterial callMaterial);
}
}
\ No newline at end of file
diff --git a/src/Khd.Core.Application/Khd.Core.Application.csproj b/src/Khd.Core.Application/Khd.Core.Application.csproj
index c9369a2..103eb07 100644
--- a/src/Khd.Core.Application/Khd.Core.Application.csproj
+++ b/src/Khd.Core.Application/Khd.Core.Application.csproj
@@ -5,6 +5,7 @@
+
diff --git a/src/Khd.Core.Application/WcsTaskApplication.cs b/src/Khd.Core.Application/WcsTaskApplication.cs
index 3cde9e5..c15c180 100644
--- a/src/Khd.Core.Application/WcsTaskApplication.cs
+++ b/src/Khd.Core.Application/WcsTaskApplication.cs
@@ -1,9 +1,9 @@
-using Khd.Core.Application.Interface;
+using Jc.SnowId;
+using Khd.Core.Application.Interface;
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;
using System.Linq;
@@ -14,6 +14,7 @@ namespace Khd.Core.Application
public class WcsTaskApplication : IWcsTaskApplication
{
private readonly DefaultDbContext _dbContext;
+ private readonly static JcSnowId _snowId = new JcSnowId();
public WcsTaskApplication(IServiceProvider serviceProvider)
{
@@ -394,7 +395,7 @@ namespace Khd.Core.Application
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.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();
@@ -419,5 +420,50 @@ namespace Khd.Core.Application
reponseagvCallbackDto.reqCode = reponseagvCallbackDto.reqCode;
return reponseagvCallbackDto;
}
+
+ public ReponseMessage CallMaterial(CallMaterial callMaterial)
+ {
+ ReponseMessage reponseMessage = new ReponseMessage();
+ try
+ {
+ _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ WmsRawOutstock wmsRawOutstock = _dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == Convert.ToInt64(callMaterial.rawOutstockId));
+ if (wmsRawOutstock != null)
+ {
+ bool hasTask = _dbContext.WcsTask.Where(t => t.endPointId == 31 || t.currPointId == 31).Any();
+ bool hasTaskManual = _dbContext.WcsTaskManual.Where(t => t.endPointId == 31 || t.currPointId == 31 || t.taskType == 999).Any();
+ if (hasTask || hasTaskManual)
+ {
+ reponseMessage.code = "1";
+ reponseMessage.message = "当前有任务,请等待任务完成后再申请";
+ }
+ else
+ {
+ BaseEquip endEquip = _dbContext.BaseEquip.First(t => t.objid == 31);
+ BaseEquip baseEquip = _dbContext.BaseEquip.First(t => t.objid == 9);
+ WcsTaskManual wcsTaskManual = new WcsTaskManual();
+ wcsTaskManual.taskType = 999;
+ wcsTaskManual.objid = _snowId.NextId();
+ wcsTaskManual.orderId = Convert.ToInt64(callMaterial.rawOutstockId);
+ _dbContext.Add(wcsTaskManual);
+ _dbContext.SaveChanges();
+ reponseMessage.code = "0";
+ reponseMessage.message = "成功";
+ }
+ }
+ else
+ {
+ reponseMessage.code = "1";
+ reponseMessage.message = "未找到当前申请单的任务";
+ }
+ }
+ catch (Exception ex)
+ {
+ reponseMessage.code = "1";
+ reponseMessage.message = ex.Message;
+ LogManager.Error(ex);
+ }
+ return reponseMessage;
+ }
}
}
\ No newline at end of file
diff --git a/src/Khd.Core.Domain/Auth/SysMenu.cs b/src/Khd.Core.Domain/Auth/SysMenu.cs
new file mode 100644
index 0000000..4daa278
--- /dev/null
+++ b/src/Khd.Core.Domain/Auth/SysMenu.cs
@@ -0,0 +1,20 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Khd.Core.Domain.Auth
+{
+ [Table("wcs_sys_menu")]
+ public class SysMenu
+ {
+ [Key]
+ [Column("OBJID")]
+ public long? OBJID { get; set; }
+
+ [Column("MENU_NAME")]
+ public string MenuName { get; set; }
+
+ [Column("MENU_VISIBLE")]
+ public int MenuVisble { get; set; }
+
+ }
+}
diff --git a/src/Khd.Core.Domain/Auth/SysRole.cs b/src/Khd.Core.Domain/Auth/SysRole.cs
new file mode 100644
index 0000000..6a7e794
--- /dev/null
+++ b/src/Khd.Core.Domain/Auth/SysRole.cs
@@ -0,0 +1,19 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Khd.Core.Domain.Auth
+{
+ [Table("wcs_sys_user_role")]
+ public class SysRole
+ {
+ [Key]
+ [Column("OBJID")]
+ public long? OBJID { get; set; }
+
+ [Column("USER_ID")]
+ public long? UserId { get; set; }
+
+ [Column("ROLE_ID")]
+ public long? RoleId { get; set; }
+ }
+}
diff --git a/src/Khd.Core.Domain/Auth/SysUser.cs b/src/Khd.Core.Domain/Auth/SysUser.cs
new file mode 100644
index 0000000..d52b85d
--- /dev/null
+++ b/src/Khd.Core.Domain/Auth/SysUser.cs
@@ -0,0 +1,32 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Khd.Core.Domain.Auth
+{
+ [Table("wcs_sys_user")]
+ public class SysUser
+ {
+ [Key]
+ [Column("OBJID")]
+ public long? OBJID { get; set; }
+
+ [Column("USER_NAME")]
+ public string UserName { get; set; }
+
+ [Column("NICK_NAME")]
+ public string NickName { get; set; }
+
+ [Column("STATUS")]
+ public int Status { get; set; }
+
+ [Column("USER_PWD")]
+ public string Password { get; set; }
+
+ [Column("create_by")]
+ public string createBy { get; set; }
+
+ [Column("create_time")]
+ public DateTime? createTime { get; set; }
+ }
+}
diff --git a/src/Khd.Core.Domain/Dto/agv/WcsAgvStatus.cs b/src/Khd.Core.Domain/Dto/agv/WcsAgvStatus.cs
new file mode 100644
index 0000000..01825f8
--- /dev/null
+++ b/src/Khd.Core.Domain/Dto/agv/WcsAgvStatus.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Khd.Core.Domain.Dto.agv
+{
+ [Table("wcs_agv_status")]
+ public class WcsAgvStatus
+ {
+ [Column("id")]
+ public int Id { get; set; }
+ [Column("battery")]
+ public string Battery { get; set; }
+ [Column("exclType")]
+ public string ExclType { get; set; }
+ [Column("mapCode")]
+ public string MapCode { get; set; }
+ [Column("online")]
+ public string Online { get; set; }
+ [Column("path")]
+ public string Path { get; set; }
+ [Column("podCode")]
+ public string PodCode { get; set; }
+ [Column("podDir")]
+ public string PodDir { get; set; }
+ [Column("posX")]
+ public string PosX { get; set; }
+ [Column("posY")]
+ public string PosY { get; set; }
+ [Key]
+ [Column("robotCode")]
+ public string RobotCode { get; set; }
+ [Column("robotDir")]
+ public string RobotDir { get; set; }
+ [Column("robotIp")]
+ public string robotIp { get; set; }
+ [Column("speed")]
+ public string Speed { get; set; }
+ [Column("status")]
+ public string Status { get; set; }
+ [Column("stop")]
+ public string Stop { get; set; }
+ [Column("timestamp")]
+ public DateTime Timestamp { get; set; }
+ }
+}
diff --git a/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs b/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs
index c0917c7..ebc7c2c 100644
--- a/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs
+++ b/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Khd.Core.Domain.Dto.webapi
+namespace Khd.Core.Domain.Dto.webapi
{
public class AgvCompeleted
{
diff --git a/src/Khd.Core.Domain/Dto/webapi/AgvStatusDto.cs b/src/Khd.Core.Domain/Dto/webapi/AgvStatusDto.cs
index b328bb2..29efb21 100644
--- a/src/Khd.Core.Domain/Dto/webapi/AgvStatusDto.cs
+++ b/src/Khd.Core.Domain/Dto/webapi/AgvStatusDto.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Collections.Generic;
namespace Khd.Core.Domain.Dto.webapi
{
diff --git a/src/Khd.Core.Domain/Dto/webapi/CallMaterial.cs b/src/Khd.Core.Domain/Dto/webapi/CallMaterial.cs
new file mode 100644
index 0000000..71d34d0
--- /dev/null
+++ b/src/Khd.Core.Domain/Dto/webapi/CallMaterial.cs
@@ -0,0 +1,8 @@
+namespace Khd.Core.Domain.Dto.webapi
+{
+ public class CallMaterial
+ {
+ public string rawOutstockId { get; set; }
+ public string method { get; set; }
+ }
+}
diff --git a/src/Khd.Core.Domain/Dto/webapi/genAgvSchedulingTask.cs b/src/Khd.Core.Domain/Dto/webapi/genAgvSchedulingTask.cs
index 009e5d9..af3021e 100644
--- a/src/Khd.Core.Domain/Dto/webapi/genAgvSchedulingTask.cs
+++ b/src/Khd.Core.Domain/Dto/webapi/genAgvSchedulingTask.cs
@@ -67,7 +67,7 @@ namespace Khd.Core.Domain.Dto.webapi
///
/// “180”,”0”,”90”,”-90” 分别对应地图的”左”,”右”,”上”,”下” ,不指定方向可以为空
///
- public string podDir { get; set; }
+ public string podDir { get; set; }
///
/// “180”,”0”,”90”,”-90” 分别对应地图的”左”,”右”,”上”,”下” ,不指定方向可以为空
///
diff --git a/src/Khd.Core.Domain/Models/BaseEquip.cs b/src/Khd.Core.Domain/Models/BaseEquip.cs
index b878674..d158ec9 100644
--- a/src/Khd.Core.Domain/Models/BaseEquip.cs
+++ b/src/Khd.Core.Domain/Models/BaseEquip.cs
@@ -17,6 +17,9 @@ namespace Khd.Core.Domain.Models
[Table("wcs_base_equip")]
public class BaseEquip
{
+ [Column("container_no")]
+ public string containerNo { get; set; }
+
[Column("empty_count")]
public int? emptyCount { get; set; }
diff --git a/src/Khd.Core.Domain/Models/BasePlc.cs b/src/Khd.Core.Domain/Models/BasePlc.cs
index 08f49ea..80a3ca7 100644
--- a/src/Khd.Core.Domain/Models/BasePlc.cs
+++ b/src/Khd.Core.Domain/Models/BasePlc.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Linq;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Threading.Tasks;
+using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models
{
diff --git a/src/Khd.Core.Domain/Models/MesBaseMaterialInfo.cs b/src/Khd.Core.Domain/Models/MesBaseMaterialInfo.cs
index 2687ece..4345dc0 100644
--- a/src/Khd.Core.Domain/Models/MesBaseMaterialInfo.cs
+++ b/src/Khd.Core.Domain/Models/MesBaseMaterialInfo.cs
@@ -1,11 +1,6 @@
using System;
-using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
-using System.Linq;
-using System.Runtime.Serialization;
-using System.Text;
-using System.Threading.Tasks;
namespace Khd.Core.Domain.Models
{
diff --git a/src/Khd.Core.Domain/Models/PlcPoint.cs b/src/Khd.Core.Domain/Models/PlcPoint.cs
index 43c4104..7b0eb74 100644
--- a/src/Khd.Core.Domain/Models/PlcPoint.cs
+++ b/src/Khd.Core.Domain/Models/PlcPoint.cs
@@ -1,9 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models
{
diff --git a/src/Khd.Core.Domain/Models/WcsTask.cs b/src/Khd.Core.Domain/Models/WcsTask.cs
index a62f9b8..933d412 100644
--- a/src/Khd.Core.Domain/Models/WcsTask.cs
+++ b/src/Khd.Core.Domain/Models/WcsTask.cs
@@ -17,6 +17,7 @@ namespace Khd.Core.Domain.Models
[Table("wcs_task")]
public class WcsTask
{
+
[Column("from_floor_no")]
public int? fromFloorNo { get; set; }
@@ -91,7 +92,7 @@ namespace Khd.Core.Domain.Models
/// 物料号
///
[Column("material_no")]
- public string? materialNo { get; set; }
+ public string? materialBarcode { get; set; }
///
/// 数量
@@ -99,17 +100,17 @@ namespace Khd.Core.Domain.Models
[Column("qty")]
public int? qty { get; set; }
- ///
- /// 起始点编号
- ///
- [Column("start_point_no")]
- public string startPointNo { get; set; }
+ /////
+ ///// 起始点编号
+ /////
+ //[Column("start_point_no")]
+ //public string startPointNo { get; set; }
- ///
- /// 起始点id
- ///
- [Column("start_point_id")]
- public long? startPointId { get; set; }
+ /////
+ ///// 起始点id
+ /////
+ //[Column("start_point_id")]
+ //public long? startPointId { get; set; }
///
/// 当前点编号
diff --git a/src/Khd.Core.Domain/Models/WcsTaskLog.cs b/src/Khd.Core.Domain/Models/WcsTaskLog.cs
index 8d6fa56..5ee9f1b 100644
--- a/src/Khd.Core.Domain/Models/WcsTaskLog.cs
+++ b/src/Khd.Core.Domain/Models/WcsTaskLog.cs
@@ -91,7 +91,7 @@ namespace Khd.Core.Domain.Models
/// 物料号
///
[Column("material_no")]
- public string? materialNo { get; set; }
+ public string? materialBarcode { get; set; }
///
/// 数量
diff --git a/src/Khd.Core.Domain/Models/WcsTaskManual.cs b/src/Khd.Core.Domain/Models/WcsTaskManual.cs
index 862d1fc..5d67039 100644
--- a/src/Khd.Core.Domain/Models/WcsTaskManual.cs
+++ b/src/Khd.Core.Domain/Models/WcsTaskManual.cs
@@ -1,10 +1,6 @@
using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.ComponentModel.DataAnnotations.Schema;
namespace Khd.Core.Domain.Models
{
@@ -85,7 +81,7 @@ namespace Khd.Core.Domain.Models
/// 物料号
///
[Column("material_no")]
- public string? materialNo { get; set; }
+ public string? materialBarcode { get; set; }
///
/// 数量
diff --git a/src/Khd.Core.Domain/Models/WmsBaseLocation.cs b/src/Khd.Core.Domain/Models/WmsBaseLocation.cs
index 5f8587c..b798228 100644
--- a/src/Khd.Core.Domain/Models/WmsBaseLocation.cs
+++ b/src/Khd.Core.Domain/Models/WmsBaseLocation.cs
@@ -67,7 +67,7 @@ namespace Khd.Core.Domain.Models
public int? locColumn { get; set; }
///
- /// 深位
+ /// 深位1 浅位2
///
[Column("loc_deep")]
public int? locDeep { get; set; }
diff --git a/src/Khd.Core.EntityFramework/DefaultDbContext.cs b/src/Khd.Core.EntityFramework/DefaultDbContext.cs
index 5047a3e..5a9e706 100644
--- a/src/Khd.Core.EntityFramework/DefaultDbContext.cs
+++ b/src/Khd.Core.EntityFramework/DefaultDbContext.cs
@@ -1,4 +1,4 @@
-using Khd.Core.Domain.Dto.wcs;
+using Khd.Core.Domain.Auth;
using Khd.Core.Domain.Models;
using Microsoft.EntityFrameworkCore;
@@ -9,6 +9,10 @@ namespace Khd.Core.EntityFramework
public DefaultDbContext(DbContextOptions options) : base(options)
{
}
+ public DbSet SysUser { get; set; }
+ public DbSet SysRole { get; set; }
+ public DbSet SysMenu { get; set; }
+
public DbSet MesBaseMaterialInfo { get; set; }
public DbSet WmsRawReturn { get; set; }
public DbSet WcsTaskManual { get; set; }
diff --git a/src/Khd.Core.Library/Mapper/CoreMapper.cs b/src/Khd.Core.Library/Mapper/CoreMapper.cs
index ec36e1f..6c65e7e 100644
--- a/src/Khd.Core.Library/Mapper/CoreMapper.cs
+++ b/src/Khd.Core.Library/Mapper/CoreMapper.cs
@@ -1,9 +1,5 @@
using Mapster;
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace Khd.Core.Library.Mapper
{
@@ -18,7 +14,7 @@ namespace Khd.Core.Library.Mapper
/// Thrown when source is null.
public static TDestination Map(object source)
{
- if(source == null)
+ if (source == null)
throw new ArgumentNullException("Map Error : source is null");
TypeAdapterConfig config = new TypeAdapterConfig();
diff --git a/src/Khd.Core.Plc/S7/PLCHelpers.cs b/src/Khd.Core.Plc/S7/PLCHelpers.cs
index 380d211..4592ffe 100644
--- a/src/Khd.Core.Plc/S7/PLCHelpers.cs
+++ b/src/Khd.Core.Plc/S7/PLCHelpers.cs
@@ -261,6 +261,6 @@ namespace Khd.Core.Plc.S7
return package.ToArray();
}
-
+
}
}
diff --git a/src/Khd.Core.Plc/StaticPlcHelper.cs b/src/Khd.Core.Plc/StaticPlcHelper.cs
index b42b890..c521eb7 100644
--- a/src/Khd.Core.Plc/StaticPlcHelper.cs
+++ b/src/Khd.Core.Plc/StaticPlcHelper.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Text;
namespace Khd.Core.Plc
{
diff --git a/src/Khd.Core.Wcs/Global/HttpHelper.cs b/src/Khd.Core.Wcs/Global/HttpHelper.cs
index 7a1bfd8..6ad9465 100644
--- a/src/Khd.Core.Wcs/Global/HttpHelper.cs
+++ b/src/Khd.Core.Wcs/Global/HttpHelper.cs
@@ -5,7 +5,7 @@ namespace Khd.Core.Wcs
public class HttpHelper
{
- public static string SendPostMessage(string ip, int port, string url, string message,string contentType="application/Text")
+ public static string SendPostMessage(string ip, int port, string url, string message, string contentType = "application/Text")
{
string retsult = HttpPost("http://" + ip + ":" + port + "/" + url, message, contentType, 30, null);
return retsult;
diff --git a/src/Khd.Core.Wcs/Global/StaticData.cs b/src/Khd.Core.Wcs/Global/StaticData.cs
index 0beeb16..ca5a8f8 100644
--- a/src/Khd.Core.Wcs/Global/StaticData.cs
+++ b/src/Khd.Core.Wcs/Global/StaticData.cs
@@ -38,7 +38,7 @@ namespace Khd.Core.Wcs.Global
public static List BaseDictionary = new List();
private static object baseEquipLock = new object();
- private static List _baseEquip= new List();
+ private static List _baseEquip = new List();
public static List BaseEquip
{
get
@@ -62,8 +62,8 @@ namespace Khd.Core.Wcs.Global
public static List WcsInWareOrder = new List();
public static List WcsOutWareOrder = new List();
public static List basePlcs = new List();
- public static List PlcConfigs { get; set; }
- public static Dictionary> PlcPoints = new Dictionary>();
+ public static List PlcConfigs { get; set; }
+ public static Dictionary> PlcPoints = new Dictionary>();
public static Dictionary PlcDic = new Dictionary();
public static JcSnowId SnowId = new JcSnowId();
}
diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs
index e0f9745..4e6c9e7 100644
--- a/src/Khd.Core.Wcs/MainCentralControl.cs
+++ b/src/Khd.Core.Wcs/MainCentralControl.cs
@@ -1,15 +1,10 @@
-using Khd.Core.Domain.Models;
-using Khd.Core.EntityFramework;
-using Khd.Core.Plc;
-using Khd.Core.Plc.S7;
+using Khd.Core.EntityFramework;
using Khd.Core.Wcs.Global;
using Khd.Core.Wcs.Wcs;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System.Data;
-using System.Net.Http.Headers;
-using System.Text;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs
@@ -37,7 +32,7 @@ namespace Khd.Core.Wcs
public void Start()
{
-
+
try
{
using var scope = _host.Services.CreateScope();
@@ -51,9 +46,8 @@ 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.BaseDictionary = dbContext.BaseDictionary.ToList();
-
+
foreach (var plcConfig in StaticData.PlcConfigs)
{
if (!StaticData.PlcDic.Any(t => t.Key == plcConfig.Code))
@@ -72,10 +66,10 @@ 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 createTaskByRecord = new(_host);
createTaskByRecord.StartPoint();
////一楼提升机以及接驳位
@@ -87,10 +81,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();
@@ -102,10 +96,10 @@ namespace Khd.Core.Wcs
//ThirdFloorPoint thirdFloorPoint = new(_host, StaticData.PlcDic[0], ThirdBaseFloorEquip.floorNo.Value, ThirdBaseFloorEquip.equipNo);
//thirdFloorPoint.StartPoint();
- ////三层AGV
- //var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First();
- //ThirdFloorAGV thirdFloorAGV = new(_host, StaticData.PlcDic[0], ThirdFloorAgvEquip.floorNo.Value, ThirdFloorAgvEquip.equipNo);
- //thirdFloorAGV.StartPoint();
+ //三层AGV
+ var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First();
+ ThirdFloorAGV thirdFloorAGV = new(_host, StaticData.PlcDic[0], ThirdFloorAgvEquip.floorNo.Value, ThirdFloorAgvEquip.equipNo);
+ thirdFloorAGV.StartPoint();
////五层接驳位
//var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First();
diff --git a/src/Khd.Core.Wcs/SystemData.cs b/src/Khd.Core.Wcs/SystemData.cs
index 98c1f9e..d23b7e9 100644
--- a/src/Khd.Core.Wcs/SystemData.cs
+++ b/src/Khd.Core.Wcs/SystemData.cs
@@ -1,14 +1,11 @@
using Khd.Core.EntityFramework;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace Khd.Core.Wcs
{
public class SystemData
{
+ public readonly static int maxTray = 10;
+
private static long _serialNo { get; set; } = 1;
private static object serialLock = new object();
diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
index b3d43e8..f1298d6 100644
--- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
+++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
@@ -1,5 +1,4 @@
-using Khd.Core.Domain.Dto.wcs;
-using Khd.Core.Domain.Models;
+using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library.Mapper;
using Khd.Core.Wcs.Global;
@@ -10,8 +9,6 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using SixLabors.ImageSharp;
using System.Data;
-using System.Security.Cryptography;
-using System.Threading.Tasks.Dataflow;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@@ -22,41 +19,11 @@ namespace Khd.Core.Wcs.Wcs
public class CreateTaskByRecord
{
private readonly IHost _host;
- List ScanPoint { get; set; }//点位信息
- private BaseSitenode? sitenode { get; set; }//站台信息
-
- private NodeSetting? NodeSettingCarNo { get; set; }
- private NodeSetting? NodeSettingCarState { get; set; }
- private NodeSetting? NodeSettingCarRun { get; set; }
- private NodeSetting? NodeSettingWcsState { get; set; }
- private NodeSetting? NodeSettingWcsSend { get; set; }
- private NodeSetting? NodeSettingWcsSendMaterial { get; set; }
- private NodeSetting? NodeSettingPLCSendSendMaterialstate { get; set; }
- public CreateTaskByRecord(IHost host, string siteNo)
+ public CreateTaskByRecord(IHost host)
{
this._host = host;
- this.ScanPoint = StaticData.BasePlcpointList.ToList();//加载当前站点所对应的点位
- this.sitenode = StaticData.SiteNodeList.FirstOrDefault(t => t.siteNo == siteNo);//获取当前站台信息
- //this.NodeSettingCarNo = this.ScanPoint.FirstOrDefault(t => t.plcpointNo.Contains("carno"));
- //this.NodeSettingCarState = this.ScanPoint.FirstOrDefault(t => t.plcpointNo.Contains("carstate"));
- //this.NodeSettingCarRun = this.ScanPoint.FirstOrDefault(t => t.plcpointNo.Contains("carrun"));
- //this.NodeSettingWcsState = this.ScanPoint.FirstOrDefault(t => t.plcpointNo.Contains("plcsendK"));
- //this.NodeSettingWcsSend = this.ScanPoint.FirstOrDefault(t => t.plcpointNo.Contains("wcsend"));
- //this.NodeSettingWcsSendMaterial = this.ScanPoint.FirstOrDefault(t => t.plcpointNo.Contains("wcssendmessage"));
- //this.NodeSettingPLCSendSendMaterialstate = this.ScanPoint.FirstOrDefault(t => t.plcpointNo.Contains("plcsendmessage"));
- try
- {
- //默认启动,清理plc的上位机写入点位值
- //this._plc.Write(NodeSettingCarRun.plcpointAddress, MainCentralControl.QingKongDianWei);
- //this._plc.Write(NodeSettingWcsSend.plcpointAddress, MainCentralControl.QingKongDianWei);
- //this._plc.Write(NodeSettingWcsSendMaterial.plcpointAddress, MainCentralControl.QingKongDianWei);
- }
- catch (Exception ex)
- {
- Console.WriteLine("站点" + siteNo + " 初始化数据异常" + ex.Message);
- LogManager.Error(ex);
- }
}
+
///
/// 启动上件扫描监听
///
@@ -65,9 +32,6 @@ namespace Khd.Core.Wcs.Wcs
var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic);
createBearAgvReturnThread.Start();
- //var createRawInWareTaskThread = new Thread(CreateRawInWareTaskLogic);
- //createRawInWareTaskThread.Start();
-
var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic);
createFiveProductInTaskThread.Start();
@@ -77,18 +41,197 @@ namespace Khd.Core.Wcs.Wcs
var createRawTaskThread = new Thread(CreateRawTaskLogic);
createRawTaskThread.Start();
- //var createThirdOutTaskThread = new Thread(CreateThirdOutTaskLogic);
- //createThirdOutTaskThread.Start();
+ var createThirdOutTaskThread = new Thread(CreateThirdOutTaskLogic);
+ createThirdOutTaskThread.Start();
+
+ var CreateSecondProductTaskThread = new Thread(CreateSecondProductTaskLogic);
+ CreateSecondProductTaskThread.Start();
+
+ var createEmptyTrayThread = new Thread(CreateEmptyTrayLogic);
+ createEmptyTrayThread.Start();
+
+ var createThirdWasterTaskThread = new Thread(CreateThirdWasterTaskLogic);
+ createThirdWasterTaskThread.Start();
Console.WriteLine(DateTime.Now + ":出库任务监听启动成功");
LogManager.Info("出库任务监听启动成功");
}
+ ///
+ /// 根据人工任务生成可执行任务
+ ///
+ ///
+ private void CreateThirdWasterTaskLogic()
+ {
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ while (true)
+ {
+ try
+ {
+ dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 9).Any();
+ if (!hasTask)
+ {
+ WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.nextPointId == 9).OrderBy(t => t.createBy).FirstOrDefault();
+ if (wcsTaskManual != null)
+ {
+ WcsTask wcsTask = CoreMapper.Map(wcsTaskManual);
+ wcsTask.createTime = DateTime.Now;
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Add(wcsTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.Remove(wcsTaskManual);
+ dbContext.SaveChanges();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Error(ex);
+ }
+ Thread.Sleep(5000);
+ }
+ }
+
+ ///
+ /// 3楼托盘库
+ ///
+ ///
+ private void CreateEmptyTrayLogic()
+ {
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 9);
+ while (true)
+ {
+ try
+ {
+ dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Any();
+ if (!canCreate)
+ {
+ BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35);
+ if (baseEquip.emptyCount == (SystemData.maxTray / 2))
+ {
+ var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 1 && t.emptyCount == 5);
+ if (endEquip != null)
+ {
+ var wcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ serialNo = SystemData.GetSerialNo(dbContext),
+ taskType = 40,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = baseEquip.objid,
+ endPointNo = baseEquip.equipNo,
+ currPointId = endEquip.objid,
+ currPointNo = endEquip.equipNo,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = 5,
+ isEmpty = "1",
+ taskStatus = 0,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ floorNo = 3,
+ fromFloorNo = 3,
+ masterId = 0,
+ orderId = 0,
+ materialId = 0,
+ };
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Add(wcsTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.SaveChanges();
+ }
+ else
+ {
+ endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0);
+ if (endEquip != null)
+ {
+ var wcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ serialNo = SystemData.GetSerialNo(dbContext),
+ taskType = 43,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = endEquip.objid,
+ endPointNo = endEquip.equipNo,
+ currPointId = baseEquip.objid,
+ currPointNo = baseEquip.equipNo,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = 5,
+ isEmpty = "1",
+ taskStatus = 0,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ floorNo = 3,
+ fromFloorNo = 3,
+ masterId = 0,
+ orderId = 0,
+ materialId = 0,
+ };
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Add(wcsTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.SaveChanges();
+ }
+ }
+ }
+ else if (baseEquip.emptyCount == SystemData.maxTray)
+ {
+ var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0);
+ if (endEquip != null)
+ {
+ var wcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ serialNo = SystemData.GetSerialNo(dbContext),
+ taskType = 43,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = endEquip.objid,
+ endPointNo = endEquip.equipNo,
+ currPointId = baseEquip.objid,
+ currPointNo = baseEquip.equipNo,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = 10,
+ isEmpty = "1",
+ taskStatus = 0,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ floorNo = 3,
+ fromFloorNo = 3,
+ masterId = 0,
+ orderId = 0,
+ materialId = 0,
+ };
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Add(wcsTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.SaveChanges();
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Error(ex);
+ }
+ Thread.Sleep(5000);
+ }
+ }
+
///
/// 半成品入库
///
///
- private void CreateFiveProductInTaskLogic(object? obj)
+ private void CreateFiveProductInTaskLogic()
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
@@ -99,75 +242,78 @@ namespace Khd.Core.Wcs.Wcs
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
- var wmsProductInstock = dbContext.WmsProductInstock
+ bool task = dbContext.WcsTask.Where(t => t.nextPointId == 28 && t.taskStatus <= 5).Any();
+ if (!task)
+ {
+ var wmsProductInstock = dbContext.WmsProductInstock
.Where(t => t.productType == "2")
.Where(t => t.auditStatus == "1")
.Where(t => t.warehouseId == 521)
.FirstOrDefault();
- if (wmsProductInstock != null && wmsProductInstock.executeStatus == "0")
- {
- var wmsBaseLocation = dbContext.WmsBaseLocation
- .Where(t => t.warehouseId == 521)
- .Where(t => t.activeFlag == "1")
- .Where(t => t.instockFlag == "0")
- .Where(t => t.outstockFlag == "0")
- .Where(t => t.locationStatus == "1")
- .Where(t => t.containerCode == null || t.containerCode == "").FirstOrDefault();
- if (wmsBaseLocation != null)
+ if (wmsProductInstock != null && wmsProductInstock.executeStatus == "0")
{
- var wcsTask = new WcsTask()
+ var wmsBaseLocation = dbContext.WmsBaseLocation
+ .Where(t => t.warehouseId == 521)
+ .Where(t => t.activeFlag == "1")
+ .Where(t => t.instockFlag == "0")
+ .Where(t => t.outstockFlag == "0")
+ .Where(t => t.locationStatus == "1")
+ .Where(t => t.containerCode == null || t.containerCode == "").FirstOrDefault();
+ if (wmsBaseLocation != null)
{
- objid = StaticData.SnowId.NextId(),
- serialNo = SystemData.GetSerialNo(dbContext),
- taskType = 34,
- startPointId = wmsBaseLocation.locationId,
- startPointNo = wmsBaseLocation.locationCode,
- endPointId = endEquip.objid,
- endPointNo = endEquip.equipNo,
- currPointId = wmsBaseLocation.locationId,
- currPointNo = wmsBaseLocation.locationCode,
- equipmentNo = agvEquip.equipNo,
- useFlag = 1,
- qty = 1,
- containerNo = wmsProductInstock.palletInfoCode,
- taskStatus = 0,
- createBy = "WCS",
- createTime = DateTime.Now,
- floorNo = 5,
- fromFloorNo = 5,
- isEmpty = "0",
- masterId = wmsProductInstock.productId,
- orderId = wmsProductInstock.productInstockId,
- materialId = wmsProductInstock.productId,
- nextPointId = agvEquip.objid,
- nextPointNo = agvEquip.equipNo,
- };
- WmsProductInstockDetail wmsProductInstockDetail = new WmsProductInstockDetail()
- {
- erpAmount = 0,
- productId = wmsProductInstock.productId,
- executeStatus = "1",
- productInstockDetailId = StaticData.SnowId.NextId(),
- instockAmount = 1,
- instockBy = "WCS",
- instockDate = DateTime.Now,
- instockWay = "2",
- locationCode = wmsBaseLocation.locationCode,
- planAmount = 1,
- productBarcode = wmsProductInstock.productBatch,
- productBatch = wmsProductInstock.productBatch,
- productInstockId = wmsProductInstock.productInstockId,
- };
- WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
- wmsProductInstock.executeStatus = "1";
- wmsBaseLocation.instockFlag = "1";
- wmsBaseLocation.locationStatus = "4";
- dbContext.Add(wmsProductInstock);
- dbContext.Update(wmsProductInstock);
- dbContext.Update(wmsBaseLocation);
- dbContext.Add(wcsTask);
- dbContext.Add(wcsTaskLog);
- dbContext.SaveChanges();
+ var wcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ serialNo = SystemData.GetSerialNo(dbContext),
+ taskType = 34,
+ endPointId = endEquip.objid,
+ endPointNo = endEquip.equipNo,
+ currPointId = wmsBaseLocation.locationId,
+ currPointNo = wmsBaseLocation.locationCode,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = 1,
+ containerNo = wmsProductInstock.palletInfoCode,
+ taskStatus = 0,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ floorNo = 5,
+ fromFloorNo = 5,
+ isEmpty = "0",
+ masterId = wmsProductInstock.productId,
+ orderId = wmsProductInstock.productInstockId,
+ materialId = wmsProductInstock.productId,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ materialBarcode = wmsProductInstock.productBatch,
+ };
+ WmsProductInstockDetail wmsProductInstockDetail = new WmsProductInstockDetail()
+ {
+ erpAmount = 0,
+ productId = wmsProductInstock.productId,
+ executeStatus = "1",
+ productInstockDetailId = StaticData.SnowId.NextId(),
+ instockAmount = 1,
+ instockBy = "WCS",
+ instockDate = DateTime.Now,
+ instockWay = "2",
+ locationCode = wmsBaseLocation.locationCode,
+ planAmount = 1,
+ productBarcode = wmsProductInstock.productBatch,
+ productBatch = wmsProductInstock.productBatch,
+ productInstockId = wmsProductInstock.productInstockId,
+ };
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ wmsProductInstock.executeStatus = "1";
+ wmsBaseLocation.instockFlag = "1";
+ wmsBaseLocation.locationStatus = "4";
+ dbContext.Add(wmsProductInstock);
+ dbContext.Update(wmsProductInstock);
+ dbContext.Update(wmsBaseLocation);
+ dbContext.Add(wcsTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.SaveChanges();
+ }
}
}
}
@@ -175,7 +321,7 @@ namespace Khd.Core.Wcs.Wcs
{
LogManager.Error(ex);
}
- Thread.Sleep(1000);
+ Thread.Sleep(5000);
}
}
@@ -184,7 +330,7 @@ namespace Khd.Core.Wcs.Wcs
///
///
///
- private void CreateThirdOutTaskLogic(object? obj)
+ private void CreateThirdOutTaskLogic()
{
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 31);
BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.objid == 9);
@@ -195,138 +341,166 @@ namespace Khd.Core.Wcs.Wcs
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
- WcsTask? wcsTask = dbContext.WcsTask.FirstOrDefault(t => t.endPointId == endEquip.objid);
- if (wcsTask == null)
+ bool task = dbContext.WcsTask.Where(t => t.nextPointId == 9 && t.taskStatus <= 5).Any();
+ if (!task)
{
- var wmsRawOutstock = dbContext.WmsRawOutstock
- .Where(t => t.endStationCode == endEquip.equipNo)
- .Where(t => t.executeStatus == "0")
- .OrderBy(t => t.auditStatus == "1")
- .FirstOrDefault();
- if (wmsRawOutstock != null)
+ WcsTask? wcsTask = dbContext.WcsTask.FirstOrDefault(t => t.endPointId == endEquip.objid);
+ if (wcsTask == null)
{
- var wmsRawStocks = dbContext.WmsRawStock
- .Where(t => t.materialId == wmsRawOutstock.materialId)
- .Where(t => t.instockBatch == wmsRawOutstock.materialBatch)
- .Where(t => t.warehouseId == 311)
- .ToList();
- var wmsBaseLocations = dbContext.WmsBaseLocation
- .Where(t => t.activeFlag == "1")
- .Where(t => t.delFlag == "0")
- .Where(t => t.locationScrapType == "1")
- .Where(t => t.instockFlag == "0")
- .Where(t => t.outstockFlag == "0")
- .Where(t => t.ContainerStatus == "1")
- .Where(t => t.warehouseId == 311).ToList();
- var bill = from a in wmsBaseLocations
- from b in wmsRawStocks
- where a.locationCode == b.locationCode
- select new { a, b };
- WmsBaseLocation? wmsBaseLocation = null;
- bill = bill.OrderBy(t => t.b.instockDate);
- var fistbill = bill.FirstOrDefault();
- if (fistbill != null)
+ WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.taskType == 999).FirstOrDefault();
+ if (wcsTaskManual != null)
{
- int? locRow = 0;
- if (fistbill.a.locRow % 2 == 1)
+ var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == wcsTaskManual.orderId);
+ if (wmsRawOutstock != null)
{
- locRow = fistbill.a.locRow + 1;
- }
- else
- {
- locRow = fistbill.a.locRow - 1;
- }
- var lastbill = bill.Where(t => t.a.locRow == locRow)
- .Where(t => t.a.locColumn == fistbill.a.locColumn)
- .Where(t => t.a.locDeep == 2)
- .Where(t => t.b.materialId == wmsRawOutstock.materialId)
- .Where(t => t.b.instockBatch == wmsRawOutstock.materialBatch)
- .FirstOrDefault();
- if (lastbill != null)
- {
- if (lastbill.b.instockDate != null && fistbill.b.instockDate != null)
+ var wmsRawStocks = dbContext.WmsRawStock
+ .Where(t => t.materialId == wmsRawOutstock.materialId)
+ .Where(t => t.warehouseId == 311)
+ .ToList();
+ var wmsBaseLocations = dbContext.WmsBaseLocation
+ .Where(t => t.activeFlag == "1")
+ .Where(t => t.delFlag == "0")
+ .Where(t => t.locationScrapType == "1")
+ .Where(t => t.instockFlag == "0")
+ .Where(t => t.outstockFlag == "0")
+ .Where(t => t.ContainerStatus == "1")
+ .Where(t => t.warehouseId == 311).ToList();
+ var bill = from a in wmsBaseLocations
+ from b in wmsRawStocks
+ where a.locationCode == b.locationCode
+ select new { a, b };
+ WmsBaseLocation? wmsBaseLocation = null;
+ bill = bill.OrderBy(t => t.b.instockDate);
+ var fistbill = bill.FirstOrDefault();
+ if (fistbill != null)
{
- wmsBaseLocation = fistbill.a;
- if (lastbill.b.instockDate.Value.Date == fistbill.b.instockDate.Value.Date)
+ int? locRow = 0;
+ if (fistbill.a.locRow % 2 == 1)
{
- wmsBaseLocation = lastbill.a;
+ locRow = fistbill.a.locRow + 1;
}
- else//移库
+ else
{
- var formWmsBaseLocation = lastbill.a;
- //先找深库位
- List list = wmsRawStocks.Select(t => t.locationCode).ToList();
- var deepLocation = wmsBaseLocations
- .Where(t => t.locDeep == 1)
- .Where(t => !list.Contains(t.locationCode))
- .ToList();
- if (deepLocation.Count > 0)
+ locRow = fistbill.a.locRow - 1;
+ }
+ var lastbill = bill.Where(t => t.a.locRow == locRow)
+ .Where(t => t.a.locColumn == fistbill.a.locColumn)
+ .Where(t => t.a.locDeep == 2)
+ .Where(t => t.b.materialId == wmsRawOutstock.materialId)
+ .FirstOrDefault();
+ if (lastbill != null)
+ {
+ if (lastbill.b.instockDate != null && fistbill.b.instockDate != null)
{
- var toWmsBaseLocation = deepLocation.First();
- var EKWcsTask = new WcsTask()
+ wmsBaseLocation = fistbill.a;
+ if (lastbill.b.instockDate.Value.Date == fistbill.b.instockDate.Value.Date)
{
- objid = StaticData.SnowId.NextId(),
- orderId = wmsRawOutstock.orderId,
- taskType = 49,
- containerNo = wmsBaseLocation.containerCode,
- createBy = "WCS",
- createTime = DateTime.Now,
- taskStatus = 0,
- materialId = wmsRawOutstock.materialId,
- currPointId = formWmsBaseLocation.locationId,
- currPointNo = formWmsBaseLocation.locationCode,
- startPointId = formWmsBaseLocation.locationId,
- startPointNo = formWmsBaseLocation.locationCode,
- nextPointId = baseEquip.objid,
- nextPointNo = baseEquip.equipNo,
- endPointId = toWmsBaseLocation.locationId,
- endPointNo = toWmsBaseLocation.locationCode,
- equipmentNo = baseEquip.equipNo,
- useFlag = 1,
- qty = 1
- };
- formWmsBaseLocation.outstockFlag = "1";
- formWmsBaseLocation.locationStatus = "4";
- toWmsBaseLocation.instockFlag = "1";
- toWmsBaseLocation.locationStatus = "4";
- dbContext.Add(EKWcsTask);
- dbContext.SaveChanges();
- Thread.Sleep(2000);
+ wmsBaseLocation = lastbill.a;
+ }
+ else//移库
+ {
+ var formWmsBaseLocation = lastbill.a;
+ //先找深库位
+ List list = wmsRawStocks.Select(t => t.locationCode).ToList();
+ var deepLocation = wmsBaseLocations
+ .Where(t => t.locDeep == 1)
+ .Where(t => !list.Contains(t.locationCode))
+ .ToList();
+ if (deepLocation.Count > 0)
+ {
+ var toWmsBaseLocation = deepLocation.First();
+ var EKWcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = wmsRawOutstock.rawOutstockId,
+ taskType = 49,
+ containerNo = wmsBaseLocation.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now.AddSeconds(-10),
+ taskStatus = 0,
+ materialId = wmsRawOutstock.materialId,
+ currPointId = formWmsBaseLocation.locationId,
+ currPointNo = formWmsBaseLocation.locationCode,
+ nextPointId = baseEquip.objid,
+ nextPointNo = baseEquip.equipNo,
+ endPointId = toWmsBaseLocation.locationId,
+ endPointNo = toWmsBaseLocation.locationCode,
+ equipmentNo = baseEquip.equipNo,
+ useFlag = 1,
+ qty = 1
+ };
+ formWmsBaseLocation.outstockFlag = "1";
+ formWmsBaseLocation.locationStatus = "4";
+ toWmsBaseLocation.instockFlag = "1";
+ toWmsBaseLocation.locationStatus = "4";
+ dbContext.Add(EKWcsTask);
+ }
+ }
+ if (wmsBaseLocation != null)
+ {
+ MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == wmsBaseLocation.containerCode);
+ if (mesBasePalletInfo != null)
+ {
+ MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == mesBasePalletInfo.materialBarcode);
+ if (mesBaseBarcodeInfo != null)
+ {
+ WmsRawOutstockDetail wmsRawOutstockDetail = new WmsRawOutstockDetail()
+ {
+ rawOutstockDetailId = StaticData.SnowId.NextId(),
+ createBy = "WCS",
+ createDate = DateTime.Now,
+ executeStatus = "0",
+ erpAmount = 0,
+ erpStatus = "0",
+ instockBatch = mesBaseBarcodeInfo.batchCode,
+ stackAmount = 1,
+ locationCode = wmsBaseLocation.locationCode,
+ rawOutstockId = wmsRawOutstock.rawOutstockId,
+ planAmount = 1,
+ outstockWay = "2",
+ outstockPerson = "WCS",
+ outstockTime = DateTime.Now,
+ materialProductionDate = mesBaseBarcodeInfo.productionDate,
+ materialBarcode = mesBasePalletInfo.materialBarcode,
+ materialId = wmsRawOutstock.materialId,
+ machineName = mesBaseBarcodeInfo.machineName,
+ outstockAmount = 1,
+ taskCode = wmsRawOutstock.taskCode
+ };
+ wcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = wmsRawOutstock.rawOutstockId,
+ taskType = 41,
+ containerNo = wmsBaseLocation.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ taskStatus = 0,
+ materialId = wmsRawOutstock.materialId,
+ currPointId = wmsBaseLocation.locationId,
+ currPointNo = wmsBaseLocation.locationCode,
+ nextPointId = baseEquip.objid,
+ nextPointNo = baseEquip.equipNo,
+ endPointId = endEquip.objid,
+ endPointNo = endEquip.equipNo,
+ equipmentNo = endEquip.equipNo,
+ useFlag = 1,
+ qty = 1
+ };
+ dbContext.Add(wmsRawOutstockDetail);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Remove(wcsTaskManual);
+ dbContext.Add(wcsTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.SaveChanges();
+ }
+ }
+ }
}
}
- if (wmsBaseLocation != null)
- {
- wcsTask = new WcsTask()
- {
- objid = StaticData.SnowId.NextId(),
- orderId = wmsRawOutstock.orderId,
- taskType = 41,
- containerNo = wmsBaseLocation.containerCode,
- createBy = "WCS",
- createTime = DateTime.Now,
- taskStatus = 0,
- materialId = wmsRawOutstock.materialId,
- currPointId = wmsBaseLocation.locationId,
- currPointNo = wmsBaseLocation.locationCode,
- startPointId = wmsBaseLocation.locationId,
- startPointNo = wmsBaseLocation.locationCode,
- nextPointId = baseEquip.objid,
- nextPointNo = baseEquip.equipNo,
- endPointId = endEquip.objid,
- endPointNo = endEquip.equipNo,
- equipmentNo = endEquip.equipNo,
- useFlag = 1,
- qty = 1
- };
- WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
- dbContext.Add(wcsTask);
- dbContext.Add(wcsTaskLog);
- dbContext.SaveChanges();
- }
}
}
}
-
}
}
}
@@ -367,8 +541,6 @@ namespace Khd.Core.Wcs.Wcs
orderId = wmsRawReturn.rawReturnId,
taskType = 48,
containerNo = "",
- startPointId = startEquip.objid,
- startPointNo = startEquip.equipNo,
currPointId = startEquip.objid,
currPointNo = startEquip.equipNo,
nextPointId = baseEquip.objid,
@@ -402,32 +574,8 @@ namespace Khd.Core.Wcs.Wcs
{
LogManager.Error(ex);
}
- Thread.Sleep(1000);
- }
- }
-
- ///
- /// 背板安装区到半成品入库
- ///
- private void CreateRawInWareTaskLogic()
- {
- using var scope = _host.Services.CreateScope();
- using var dbContext = scope.ServiceProvider.GetRequiredService();
- while (true)
- {
- try
- {
- dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
-
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message + ex.StackTrace);
- LogManager.Error(ex);
- }
Thread.Sleep(5000);
}
-
}
///
@@ -442,144 +590,214 @@ namespace Khd.Core.Wcs.Wcs
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
- var proStock = dbContext.WmsProductStock
+ bool task = dbContext.WcsTask.Where(t => t.nextPointId == 28 && t.taskStatus <= 5).Any();
+ if (!task)
+ {
+ var proStock = dbContext.WmsProductStock
.Where(t => t.warehouseId == 531)
.Where(t => t.activeFlag == "0").ToList();
- var proOutStock = dbContext.WmsProductOutstock
- .Where(t => t.outstockQty < t.applyQty)
- .Where(t => t.auditStatus == "1")
- .Where(t => t.warehouseId == 531)
- .Where(t => t.productType == "3")
- .Where(t => t.executeStatus == "0" || t.executeStatus == "1").ToList();
- //获取最早入库时间
- foreach (var item in proOutStock)
- {
- BaseEquip endEquip = dbContext.BaseEquip.First(t => t.floorNo == 5 && t.equipType == 1);
-
- var wmsproStocks = proStock
- .Where(t => t.productId == item.productId && t.warehouseId == item.warehouseId)
- .Select(t => t.palletInfoCode)
- .ToList();
-
- var wmsBaseLocations = dbContext.WmsBaseLocation
- .Where(t => t.activeFlag == "1")
- .Where(t => t.delFlag == "0")
- .Where(t => t.locationScrapType == "1")
- .Where(t => t.instockFlag == "0")
- .Where(t => t.outstockFlag == "0")
- .Where(t => t.warehouseId == item.warehouseId)
- .Where(t => wmsproStocks.Contains(t.containerCode))
- .ToList();
-
- decimal needNumber = Convert.ToDecimal(item.applyQty - item.outstockQty);
- if (needNumber <= 0)
+ var proOutStock = dbContext.WmsProductOutstock
+ .Where(t => t.outstockQty < t.applyQty)
+ .Where(t => t.auditStatus == "1")
+ .Where(t => t.warehouseId == 531)
+ .Where(t => t.productType == "3")
+ .Where(t => t.executeStatus == "0" || t.executeStatus == "1").ToList();
+ //获取最早入库时间
+ foreach (var item in proOutStock)
{
- item.executeStatus = "2";
- dbContext.Update(item);
- dbContext.SaveChanges();
- continue;
- }
-
- var bill = from a in wmsBaseLocations
- from b in proStock
- where a.containerCode == b.palletInfoCode
- select new { a, b };
- //如果第一列满足需求,则按第一列排序,否则按最后一列排序
- if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.occupyAmount - t.b.frozenAmount).Sum() > needNumber)
- {
- bill = bill.OrderBy(t => t.a.locColumn).ToList();
- }
- else
- {
- bill = bill.OrderByDescending(t => t.a.locColumn).ToList();
- }
- //做数量限制
-
- BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 28);
- BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 5);
- foreach (var b in bill)
- {
- item.executeStatus = "1";
- WmsBaseLocation location = b.a;
- WmsProductStock stock = b.b;
- WcsTask wcsTask;
- int qty = 0;
- if (stock.totalAmount - stock.occupyAmount - stock.frozenAmount <= needNumber)//该料箱全部出
+ task = dbContext.WcsTask.Where(t => t.nextPointId == 28 && t.taskStatus <= 5).Any();
+ if (!task)
{
- item.outstockQty += stock.totalAmount - stock.occupyAmount - stock.frozenAmount;
- qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
- stock.occupyAmount += qty;
- stock.updateDate = DateTime.Now;
- }
- else
- {
- item.outstockQty += needNumber;
- stock.occupyAmount += needNumber;
- qty = Convert.ToInt32(needNumber);
- stock.updateDate = DateTime.Now;
- }
- MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode);
- if (mesBasePalletInfo != null)
- {
- WmsProductOutstockDetail detail = new()
+ BaseEquip endEquip = dbContext.BaseEquip.First(t => t.floorNo == 5 && t.equipType == 1);
+
+ var wmsproStocks = proStock
+ .Where(t => t.productId == item.productId && t.warehouseId == item.warehouseId)
+ .Select(t => t.palletInfoCode)
+ .ToList();
+
+ var wmsBaseLocations = dbContext.WmsBaseLocation
+ .Where(t => t.activeFlag == "1")
+ .Where(t => t.delFlag == "0")
+ .Where(t => t.locationScrapType == "1")
+ .Where(t => t.instockFlag == "0")
+ .Where(t => t.outstockFlag == "0")
+ .Where(t => t.warehouseId == item.warehouseId)
+ .Where(t => wmsproStocks.Contains(t.containerCode))
+ .ToList();
+
+ decimal needNumber = Convert.ToDecimal(item.applyQty - item.outstockQty);
+ if (needNumber <= 0)
{
- productId = item.productId,
- productOutstockId = item.productOutstockId,
- locationCode = location.locationCode,
- executeStatus = "1",
- beginTime = DateTime.Now,
- warehouseId = item.warehouseId,
- erpAmount = 0,
- confirmAmount = 0,
- outstockAmount = 1,
- planAmount = 1,
- productBatch = item.productBatch,
- productOutstockDetailId = StaticData.SnowId.NextId(),
- productBarcode = mesBasePalletInfo.materialBarcode
- };
- wcsTask = new WcsTask()
+ item.executeStatus = "2";
+ dbContext.Update(item);
+ dbContext.SaveChanges();
+ continue;
+ }
+
+ var bill = from a in wmsBaseLocations
+ from b in proStock
+ where a.containerCode == b.palletInfoCode
+ select new { a, b };
+ //如果第一列满足需求,则按第一列排序,否则按最后一列排序
+ if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
{
- objid = StaticData.SnowId.NextId(),
- orderId = item.productOutstockId,
- taskType = 38,
- containerNo = location.containerCode,
- createBy = "WCS",
- createTime = DateTime.Now,
- taskStatus = 0,
- materialId = item.productId,
- currPointId = location.locationId,
- currPointNo = location.locationCode,
- startPointId = location.locationId,
- startPointNo = location.locationCode,
- nextPointId = ctuEquip.objid,
- nextPointNo = ctuEquip.equipNo,
- endPointId = lineEquip.objid,
- endPointNo = lineEquip.equipNo,
- equipmentNo = ctuEquip.equipNo,
- useFlag = 1,
- qty = qty
- };
- location.outstockFlag = "1";
- location.locationStatus = "6";
- location.updateBy = "WCS";
- location.updateTime = DateTime.Now;
- dbContext.Add(detail);
- dbContext.Update(location);
- dbContext.Add(wcsTask);
- dbContext.Update(stock);
- dbContext.SaveChanges();
- if (qty >= needNumber)
+ bill = bill.OrderBy(t => t.a.locColumn).ToList();
+ }
+ else
{
+ bill = bill.OrderByDescending(t => t.a.locColumn).ToList();
+ }
+ //做数量限制
+
+ BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 28);
+ BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 5);
+ foreach (var b in bill)
+ {
+ item.executeStatus = "1";
+ WmsBaseLocation location = b.a;
+ WmsProductStock stock = b.b;
+ WcsTask wcsTask;
+ int qty = 0;
+ if (stock.totalAmount - stock.frozenAmount <= needNumber)
+ {
+ item.outstockQty += stock.totalAmount - stock.frozenAmount;
+ qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
+ stock.updateDate = DateTime.Now;
+ }
+ else
+ {
+ item.outstockQty += needNumber;
+ qty = Convert.ToInt32(needNumber);
+ stock.updateDate = DateTime.Now;
+ }
+ MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode);
+ if (mesBasePalletInfo != null)
+ {
+ WmsProductOutstockDetail detail = new()
+ {
+ productId = item.productId,
+ productOutstockId = item.productOutstockId,
+ locationCode = location.locationCode,
+ executeStatus = "1",
+ beginTime = DateTime.Now,
+ warehouseId = item.warehouseId,
+ erpAmount = 0,
+ confirmAmount = 0,
+ outstockAmount = 1,
+ planAmount = 1,
+ productBatch = item.productBatch,
+ productOutstockDetailId = StaticData.SnowId.NextId(),
+ productBarcode = mesBasePalletInfo.materialBarcode
+ };
+ if (location.locDeep == 1)
+ {
+ int? column = 0;
+ if (location.locColumn % 2 == 1)
+ {
+ column = location.locColumn + 1;
+ }
+ else
+ {
+ column = location.locColumn - 1;
+ }
+ WmsBaseLocation? wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locColumn == column)
+ .Where(t => t.locRow == location.locRow)
+ .Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
+ if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
+ {
+ WmsBaseLocation? toLocation = dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId)
+ .Where(t => t.locDeep == 1)
+ .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
+ toLocation ??= dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId)
+ .Where(t => t.warehouseId != location.locationId)
+ .Where(t => string.IsNullOrEmpty(t.containerCode))
+ .FirstOrDefault();
+ if (toLocation != null)
+ {
+ var RemoveTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = item.productOutstockId,
+ taskType = 38,
+ containerNo = wmsBaseLocation.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now.AddSeconds(-10),
+ taskStatus = 0,
+ materialId = item.productId,
+ currPointId = wmsBaseLocation.locationId,
+ currPointNo = wmsBaseLocation.locationCode,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = toLocation.locationId,
+ endPointNo = toLocation.locationCode,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = qty
+ };
+ toLocation.locationStatus = "4";
+ toLocation.instockFlag = "1";
+ toLocation.updateBy = "WCS";
+ toLocation.updateTime = DateTime.Now;
+ wmsBaseLocation.updateBy = "WCS";
+ wmsBaseLocation.updateTime = DateTime.Now;
+ wmsBaseLocation.outstockFlag = "1";
+ wmsBaseLocation.locationStatus = "4";
+ dbContext.Update(toLocation);
+ dbContext.Update(wmsBaseLocation);
+ dbContext.Add(RemoveTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask);
+ dbContext.Add(wcsTaskLog);
+ }
+ else
+ {
+ continue;
+ }
+ }
+ }
+ wcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = item.productOutstockId,
+ taskType = 38,
+ containerNo = location.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ taskStatus = 0,
+ materialId = item.productId,
+ currPointId = location.locationId,
+ currPointNo = location.locationCode,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = lineEquip.objid,
+ endPointNo = lineEquip.equipNo,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = qty
+ };
+ location.outstockFlag = "1";
+ location.locationStatus = "6";
+ location.updateBy = "WCS";
+ location.updateTime = DateTime.Now;
+ dbContext.Add(detail);
+ dbContext.Update(location);
+ dbContext.Add(wcsTask);
+ dbContext.Update(stock);
+ dbContext.SaveChanges();
+ if (qty >= needNumber)
+ {
+ break;
+ }
+ }
break;
}
+ if (item.beginTime == null)
+ {
+ item.beginTime = DateTime.Now;
+ }
+ dbContext.Update(item);
+ dbContext.SaveChanges();
}
}
- if (item.beginTime == null)
- {
- item.beginTime = DateTime.Now;
- }
- dbContext.Update(item);
- dbContext.SaveChanges();
}
}
catch (Exception ex)
@@ -587,6 +805,237 @@ namespace Khd.Core.Wcs.Wcs
Console.WriteLine(ex.Message + ex.StackTrace);
LogManager.Error(ex);
}
+ Thread.Sleep(5000);
+ }
+ }
+
+ ///
+ /// 成品出库
+ ///
+ private void CreateSecondProductTaskLogic()
+ {
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ while (true)
+ {
+ try
+ {
+ dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ bool task = dbContext.WcsTask.Where(t => t.nextPointId == 8 && t.taskStatus <= 7).Any();
+ if (!task)
+ {
+ var proStock = dbContext.WmsProductStock
+ .Where(t => t.warehouseId == 231)
+ .Where(t => t.activeFlag == "0").ToList();
+ var proOutStock = dbContext.WmsProductOutstock
+ .Where(t => t.outstockQty < t.applyQty)
+ .Where(t => t.auditStatus == "1")
+ .Where(t => t.warehouseId == 231)
+ .Where(t => t.productType == "3")
+ .Where(t => t.executeStatus == "0" || t.executeStatus == "1").ToList();
+ //获取最早入库时间
+ foreach (var item in proOutStock)
+ {
+ task = dbContext.WcsTask.Where(t => t.nextPointId == 8 && t.taskStatus <= 7).Any();
+ if (!task)
+ {
+ BaseEquip endEquip = dbContext.BaseEquip.First(t => t.floorNo == 2 && t.equipType == 1);
+ var wmsproStocks = proStock
+ .Where(t => t.productId == item.productId && t.warehouseId == item.warehouseId)
+ .Select(t => t.palletInfoCode)
+ .ToList();
+
+ var wmsBaseLocations = dbContext.WmsBaseLocation
+ .Where(t => t.activeFlag == "1")
+ .Where(t => t.delFlag == "0")
+ .Where(t => t.locationScrapType == "1")
+ .Where(t => t.instockFlag == "0")
+ .Where(t => t.outstockFlag == "0")
+ .Where(t => t.warehouseId == item.warehouseId)
+ .Where(t => wmsproStocks.Contains(t.containerCode))
+ .ToList();
+
+ decimal needNumber = Convert.ToDecimal(item.applyQty - item.outstockQty);
+ if (needNumber <= 0)
+ {
+ item.executeStatus = "2";
+ dbContext.Update(item);
+ dbContext.SaveChanges();
+ continue;
+ }
+
+ var bill = from a in wmsBaseLocations
+ from b in proStock
+ where a.containerCode == b.palletInfoCode
+ select new { a, b };
+ //如果第一列满足需求,则按第一列排序,否则按最后一列排序
+ if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
+ {
+ bill = bill.OrderBy(t => t.a.locColumn).ToList();
+ }
+ else
+ {
+ bill = bill.OrderByDescending(t => t.a.locColumn).ToList();
+ }
+ //做数量限制
+
+ BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 8);
+ BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 2);
+ foreach (var b in bill)
+ {
+ item.executeStatus = "1";
+ WmsBaseLocation location = b.a;
+ WmsProductStock stock = b.b;
+ WcsTask wcsTask;
+ int qty = 0;
+ if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
+ {
+ item.outstockQty += stock.totalAmount - stock.frozenAmount;
+ qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
+ stock.updateDate = DateTime.Now;
+ }
+ else
+ {
+ item.outstockQty += needNumber;
+ qty = Convert.ToInt32(needNumber);
+ stock.updateDate = DateTime.Now;
+ }
+ MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode);
+ if (mesBasePalletInfo != null)
+ {
+ WmsProductOutstockDetail detail = new()
+ {
+ productId = item.productId,
+ productOutstockId = item.productOutstockId,
+ locationCode = location.locationCode,
+ executeStatus = "1",
+ beginTime = DateTime.Now,
+ warehouseId = item.warehouseId,
+ erpAmount = 0,
+ confirmAmount = 0,
+ outstockAmount = 1,
+ planAmount = 1,
+ productBatch = item.productBatch,
+ productOutstockDetailId = StaticData.SnowId.NextId(),
+ productBarcode = mesBasePalletInfo.materialBarcode
+ };
+ if (location.locDeep == 1)
+ {
+ int? column = 0;
+ if (location.locColumn % 2 == 1)
+ {
+ column = location.locColumn + 1;
+ }
+ else
+ {
+ column = location.locColumn - 1;
+ }
+ WmsBaseLocation? wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locColumn == column)
+ .Where(t => t.locRow == location.locRow)
+ .Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
+ if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
+ {
+ WmsBaseLocation? toLocation = dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId)
+ .Where(t => t.locDeep == 1)
+ .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
+ toLocation ??= dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId)
+ .Where(t => t.warehouseId != location.locationId)
+ .Where(t => string.IsNullOrEmpty(t.containerCode))
+ .FirstOrDefault();
+ if (toLocation != null)
+ {
+ var RemoveTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = item.productOutstockId,
+ taskType = 38,
+ containerNo = wmsBaseLocation.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now.AddSeconds(-10),
+ taskStatus = 0,
+ materialId = item.productId,
+ currPointId = wmsBaseLocation.locationId,
+ currPointNo = wmsBaseLocation.locationCode,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = toLocation.locationId,
+ endPointNo = toLocation.locationCode,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = qty
+ };
+ toLocation.locationStatus = "4";
+ toLocation.instockFlag = "1";
+ toLocation.updateBy = "WCS";
+ toLocation.updateTime = DateTime.Now;
+ wmsBaseLocation.updateBy = "WCS";
+ wmsBaseLocation.updateTime = DateTime.Now;
+ wmsBaseLocation.outstockFlag = "1";
+ wmsBaseLocation.locationStatus = "4";
+ dbContext.Update(toLocation);
+ dbContext.Update(wmsBaseLocation);
+ dbContext.Add(RemoveTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask);
+ dbContext.Add(wcsTaskLog);
+ }
+ else
+ {
+ continue;
+ }
+ }
+ }
+ wcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = item.productOutstockId,
+ taskType = 38,
+ containerNo = location.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ taskStatus = 0,
+ materialId = item.productId,
+ currPointId = location.locationId,
+ currPointNo = location.locationCode,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = lineEquip.objid,
+ endPointNo = lineEquip.equipNo,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = qty
+ };
+ location.outstockFlag = "1";
+ location.locationStatus = "6";
+ location.updateBy = "WCS";
+ location.updateTime = DateTime.Now;
+ dbContext.Add(detail);
+ dbContext.Update(location);
+ dbContext.Add(wcsTask);
+ dbContext.Update(stock);
+ dbContext.SaveChanges();
+ if (qty >= needNumber)
+ {
+ break;
+ }
+ break;
+ }
+ }
+ if (item.beginTime == null)
+ {
+ item.beginTime = DateTime.Now;
+ }
+ dbContext.Update(item);
+ dbContext.SaveChanges();
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.Message + ex.StackTrace);
+ LogManager.Error(ex);
+ }
+ Thread.Sleep(5000);
}
}
@@ -610,7 +1059,7 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.outstockAmount > t.realOutstockAmount)
.Where(t => t.auditStatus == "1")
.ToList();
- List wcsTaskManuals = dbContext.WcsTaskManual.Where(t=>t.nextPointId== 11).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();
@@ -669,7 +1118,7 @@ namespace Khd.Core.Wcs.Wcs
where a.locationCode == b.locationCode
select new { a, b };
//如果第一列满足需求,则按第一列排序,否则按最后一列排序
- if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.occupyAmount - t.b.frozenAmount).Sum() > needNumber)
+ if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
{
bill = bill.OrderBy(t => t.a.locColumn).ToList();
}
@@ -692,17 +1141,15 @@ namespace Khd.Core.Wcs.Wcs
WcsTask wcsTask;
int qty = 0;
int outNumber = 0;
- if (stock.totalAmount - stock.occupyAmount - stock.frozenAmount <= needNumber)//该料箱全部出
+ if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
{
- RealOutNumber += stock.totalAmount - stock.occupyAmount - stock.frozenAmount;
- outNumber = Convert.ToInt32(stock.totalAmount - stock.occupyAmount - stock.frozenAmount);
+ RealOutNumber += stock.totalAmount - stock.frozenAmount;
qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
stock.updateDate = DateTime.Now;
}
else
{
RealOutNumber += needNumber;
- outNumber = Convert.ToInt32(needNumber);
qty = Convert.ToInt32(needNumber);
stock.updateDate = DateTime.Now;
}
@@ -718,8 +1165,6 @@ namespace Khd.Core.Wcs.Wcs
materialId = item.materialId,
currPointId = location.locationId,
currPointNo = location.locationCode,
- startPointId = location.locationId,
- startPointNo = location.locationCode,
nextPointId = ctuEquip.objid,
nextPointNo = ctuEquip.equipNo,
endPointId = lineEquip.objid,
@@ -727,7 +1172,7 @@ namespace Khd.Core.Wcs.Wcs
equipmentNo = ctuEquip.equipNo,
ud1 = location.locColumn,
useFlag = 1,
- qty = outNumber
+ qty = qty
};
MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
if (mesBaseBarcodeInfo != null)
@@ -753,16 +1198,15 @@ namespace Khd.Core.Wcs.Wcs
outstockWay = "2",
materialProductionDate = mesBaseBarcodeInfo.productionDate
};
- dbContext.Add(wmsProductOutstockDetail);
location.outstockFlag = "1";
location.locationStatus = "6";
location.updateBy = "WCS";
location.updateTime = DateTime.Now;
wcsOutstockLock.boxStatus = 1;
+ dbContext.Add(wmsProductOutstockDetail);
dbContext.Update(location);
dbContext.Add(wcsTask);
dbContext.Update(stock);
- dbContext.SaveChanges();
if (qty >= needNumber)
{
break;
@@ -789,7 +1233,6 @@ namespace Khd.Core.Wcs.Wcs
var orderList = rawOutStock.Where(t => t.endStationCode == item.endStationCode).ToList();
foreach (var order in orderList)
{
- decimal? RealOutNummber = order.realOutstockAmount;
WcsTask? task = dbContext.WcsTask.FirstOrDefault(t => t.taskType == 32);
if (task == null)
{
@@ -808,14 +1251,14 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => wmsRawStocks.Contains(t.containerCode))
.ToList();
- decimal? needNumber = order.outstockAmount - RealOutNummber;
+ decimal? needNumber = order.outstockAmount - RealOutNumber;
var bill = from a in wmsBaseLocations
from b in rawStock
where a.containerCode == b.palletInfoCode
select new { a, b };
//如果第一列满足需求,则按第一列排序,否则按最后一列排序
- if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.occupyAmount - t.b.frozenAmount).Sum() > needNumber)
+ if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
{
bill = bill.OrderBy(t => t.a.locColumn).ToList();
}
@@ -835,17 +1278,15 @@ namespace Khd.Core.Wcs.Wcs
WmsRawStock stock = b.b;
WcsTask wcsTask;
int qty = 0;
- if (stock.totalAmount - stock.occupyAmount - stock.frozenAmount <= needNumber)//该料箱全部出
+ if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
{
- RealOutNummber += stock.totalAmount - stock.occupyAmount - stock.frozenAmount;
+ RealOutNumber += stock.totalAmount - stock.frozenAmount;
qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
- stock.occupyAmount += qty;
stock.updateDate = DateTime.Now;
}
else
{
- RealOutNummber += needNumber;
- stock.occupyAmount += needNumber;
+ RealOutNumber += needNumber;
qty = Convert.ToInt32(needNumber);
stock.updateDate = DateTime.Now;
}
@@ -861,8 +1302,6 @@ namespace Khd.Core.Wcs.Wcs
materialId = item.materialId,
currPointId = location.locationId,
currPointNo = location.locationCode,
- startPointId = location.locationId,
- startPointNo = location.locationCode,
nextPointId = ctuEquip.objid,
nextPointNo = ctuEquip.equipNo,
endPointId = lineEquip.objid,
@@ -907,7 +1346,6 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(location);
dbContext.Add(wcsTask);
dbContext.Update(stock);
- dbContext.SaveChanges();
CreateSuccess = true;
if (qty >= needNumber)
{
@@ -915,46 +1353,43 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
- }
- if (CreateSuccess)
- {
- BaseEquip startStationEquip = StaticData.BaseEquip.First(t => t.objid == 21);
- BaseEquip bearAgvEquip = StaticData.BaseEquip.First(t => t.objid == 10);
- BaseEquip endStationEquip = StaticData.BaseEquip.First(t => t.equipNo == item.endStationCode);
- WcsTask bearAgvTask = new()
+ if (CreateSuccess)
{
- objid = StaticData.SnowId.NextId(),
- orderId = item.orderId,
- taskType = 32,
- containerNo = "",
- startPointId = startStationEquip.objid,
- startPointNo = startStationEquip.equipNo,
- currPointId = startStationEquip.objid,
- currPointNo = startStationEquip.equipNo,
- nextPointId = bearAgvEquip.objid,
- nextPointNo = bearAgvEquip.equipNo,
- endPointId = endStationEquip.objid,
- endPointNo = endStationEquip.equipNo,
- serialNo = SystemData.GetSerialNo(dbContext),
- taskStatus = 0,
- createTime = DateTime.Now,
- createBy = "WCS",
- materialId = item.materialId,
- qty = 1,
- useFlag = 1,
- equipmentNo = startStationEquip.equipNo,
- remark = "组装出库",
- floorNo = 5,
- masterId = item.materialId,
- fromFloorNo = 5,
- materialNo = item.materialBatch,
- };
- if (item.beginTime == null)
- {
- item.beginTime = DateTime.Now;
+ BaseEquip startStationEquip = StaticData.BaseEquip.First(t => t.objid == 21);
+ BaseEquip bearAgvEquip = StaticData.BaseEquip.First(t => t.objid == 10);
+ BaseEquip endStationEquip = StaticData.BaseEquip.First(t => t.equipNo == item.endStationCode);
+ WcsTask bearAgvTask = new()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = item.orderId,
+ taskType = 32,
+ containerNo = "",
+ currPointId = startStationEquip.objid,
+ currPointNo = startStationEquip.equipNo,
+ nextPointId = bearAgvEquip.objid,
+ nextPointNo = bearAgvEquip.equipNo,
+ endPointId = endStationEquip.objid,
+ endPointNo = endStationEquip.equipNo,
+ serialNo = SystemData.GetSerialNo(dbContext),
+ taskStatus = 0,
+ createTime = DateTime.Now,
+ createBy = "WCS",
+ materialId = item.materialId,
+ qty = 1,
+ useFlag = 1,
+ equipmentNo = startStationEquip.equipNo,
+ remark = "组装出库",
+ floorNo = 5,
+ masterId = item.materialId,
+ fromFloorNo = 5,
+ };
+ if (item.beginTime == null)
+ {
+ item.beginTime = DateTime.Now;
+ }
+ dbContext.Add(bearAgvTask);
+ dbContext.Update(item);
}
- dbContext.Add(bearAgvTask);
- dbContext.Update(item);
dbContext.SaveChanges();
}
}
@@ -963,149 +1398,215 @@ namespace Khd.Core.Wcs.Wcs
}
if (endEquip.equipType == 12 || endEquip.equipType == 13)//原材料到柜体验收区
{
- if (endEquip.emptyCount == 0)
+ bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 28 && t.taskStatus <= 5).Any();
+ if (hasTask)
{
- var wmsRawStocks = rawStock
- .Where(t => t.materialId == item.materialId && t.warehouseId == item.warehouseId)
- .WhereIf(endEquip.equipType == 13, t => t.completeFlag == "0")
- .WhereIf(endEquip.equipType == 12, t => t.completeFlag == "1")
- .Where(t => t.totalAmount > t.occupyAmount + t.frozenAmount)
- .Select(t => t.palletInfoCode)
- .ToList();
-
- var wmsBaseLocations = dbContext.WmsBaseLocation
- .Where(t => t.activeFlag == "1")
- .Where(t => t.delFlag == "0")
- .Where(t => t.locationScrapType == "1")
- .Where(t => t.instockFlag == "0")
- .Where(t => t.outstockFlag == "0")
- .Where(t => t.warehouseId == item.warehouseId)
- .Where(t => wmsRawStocks.Contains(t.containerCode))
- .ToList();
-
- decimal? needNumber = item.outstockAmount - item.realOutstockAmount;
- if (needNumber <= 0)
+ if (endEquip.emptyCount == 0)
{
- item.executeStatus = "2";
- dbContext.Update(item);
- dbContext.SaveChanges();
- continue;
- }
+ var wmsRawStocks = rawStock
+ .Where(t => t.materialId == item.materialId && t.warehouseId == item.warehouseId)
+ .WhereIf(endEquip.equipType == 13, t => t.completeFlag == "0")
+ .WhereIf(endEquip.equipType == 12, t => t.completeFlag == "1")
+ .Where(t => t.totalAmount > t.frozenAmount)
+ .Select(t => t.palletInfoCode)
+ .ToList();
- var bill = from a in wmsBaseLocations
- from b in rawStock
- where a.containerCode == b.palletInfoCode
- select new { a, b };
- //如果第一列满足需求,则按第一列排序,否则按最后一列排序
- if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.occupyAmount - t.b.frozenAmount).Sum() > needNumber)
- {
- bill = bill.OrderBy(t => t.a.locColumn).Take(1).ToList();
- }
- else
- {
- bill = bill.OrderByDescending(t => t.a.locColumn).Take(1).ToList();
- }
+ var wmsBaseLocations = dbContext.WmsBaseLocation
+ .Where(t => t.activeFlag == "1")
+ .Where(t => t.delFlag == "0")
+ .Where(t => t.locationScrapType == "1")
+ .Where(t => t.instockFlag == "0")
+ .Where(t => t.outstockFlag == "0")
+ .Where(t => t.warehouseId == item.warehouseId)
+ .Where(t => wmsRawStocks.Contains(t.containerCode))
+ .ToList();
- BaseEquip bearAgvEquip = StaticData.BaseEquip.First(t => t.objid == 28);
- BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.equipNo == item.endStationCode);
- foreach (var b in bill)
- {
- item.executeStatus = "1";
- WmsBaseLocation location = b.a;
- WmsRawStock stock = b.b;
- WcsTask wcsTask;
- int qty = 0;
- if (stock.totalAmount - stock.occupyAmount - stock.frozenAmount <= needNumber)//该料箱全部出
+ decimal? needNumber = item.outstockAmount - item.realOutstockAmount;
+ if (needNumber <= 0)
{
- item.realOutstockAmount += stock.totalAmount - stock.occupyAmount - stock.frozenAmount;
- qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
- stock.occupyAmount += qty;
- stock.updateDate = DateTime.Now;
+ item.executeStatus = "2";
+ dbContext.Update(item);
+ dbContext.SaveChanges();
+ continue;
+ }
+
+ var bill = from a in wmsBaseLocations
+ from b in rawStock
+ where a.containerCode == b.palletInfoCode
+ select new { a, b };
+ //如果第一列满足需求,则按第一列排序,否则按最后一列排序
+ if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
+ {
+ bill = bill.OrderBy(t => t.a.locColumn).Take(1).ToList();
}
else
{
- item.realOutstockAmount += needNumber;
- stock.occupyAmount += needNumber;
- qty = Convert.ToInt32(needNumber);
- stock.updateDate = DateTime.Now;
+ bill = bill.OrderByDescending(t => t.a.locColumn).Take(1).ToList();
}
- MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
- if (mesBaseBarcodeInfo != null)
+
+ BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 28);
+ BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.equipNo == item.endStationCode);
+ foreach (var b in bill)
{
- wcsTask = new WcsTask()
+ item.executeStatus = "1";
+ WmsBaseLocation location = b.a;
+ WmsRawStock stock = b.b;
+ WcsTask wcsTask;
+ int qty = 0;
+ if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
{
- objid = StaticData.SnowId.NextId(),
- orderId = item.rawOutstockId,
- taskType = endEquip.equipType == 12 ? 46 : 33,//如果是12那么就是原材料到柜体验收区,如果是13那么就是原材料到背板安装区
- containerNo = location.containerCode,
- createBy = "WCS",
- createTime = DateTime.Now,
- taskStatus = 0,
- materialId = item.materialId,
- currPointId = location.locationId,
- currPointNo = location.locationCode,
- startPointId = location.locationId,
- startPointNo = location.locationCode,
- nextPointId = bearAgvEquip.objid,
- nextPointNo = bearAgvEquip.equipNo,
- endPointId = lineEquip.objid,
- endPointNo = lineEquip.equipNo,
- equipmentNo = bearAgvEquip.equipNo,
- useFlag = 1,
- qty = qty
- };
- WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
- {
- rawOutstockDetailId = StaticData.SnowId.NextId(),
- rawOutstockId = item.rawOutstockId,
- materialId = item.materialId,
- createDate = DateTime.Now,
- createBy = "WCS",
- taskCode = wcsTask.objid.ToString(),
- executeStatus = "1",
- locationCode = location.locationCode,
- outstockAmount = qty,
- planAmount = item.outstockAmount,
- warehouseId = item.warehouseId,
- materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
- instockBatch = mesBaseBarcodeInfo.batchCode,
- stackAmount = qty,
- outstockPerson = "WCS",
- outstockTime = DateTime.Now,
- outstockWay = "2",
- materialProductionDate = mesBaseBarcodeInfo.productionDate
- };
- dbContext.Add(wmsProductOutstockDetail);
- location.outstockFlag = "1";
- location.locationStatus = "6";
- location.updateBy = "WCS";
- location.updateTime = DateTime.Now;
- endEquip.emptyCount = 1;
- dbContext.Update(endEquip);
- dbContext.Update(location);
- dbContext.Add(wcsTask);
- dbContext.Update(stock);
- dbContext.SaveChanges();
- if (qty >= needNumber)
- {
- break;
+ item.realOutstockAmount += stock.totalAmount - stock.frozenAmount;
+ qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
+ stock.updateDate = DateTime.Now;
}
+ else
+ {
+ item.realOutstockAmount += needNumber;
+ qty = Convert.ToInt32(needNumber);
+ stock.updateDate = DateTime.Now;
+ }
+ MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
+ if (mesBaseBarcodeInfo != null)
+ {
+ if (location.locDeep == 1)
+ {
+ int? column = 0;
+ if (location.locColumn % 2 == 1)
+ {
+ column = location.locColumn + 1;
+ }
+ else
+ {
+ column = location.locColumn - 1;
+ }
+ WmsBaseLocation? wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locColumn == column)
+ .Where(t => t.locRow == location.locRow)
+ .Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
+ if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
+ {
+ WmsBaseLocation? toLocation = dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId)
+ .Where(t => t.locDeep == 1)
+ .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
+ toLocation ??= dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId)
+ .Where(t => t.warehouseId != location.locationId)
+ .Where(t => string.IsNullOrEmpty(t.containerCode))
+ .FirstOrDefault();
+ if (toLocation != null)
+ {
+ var RemoveTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = item.rawOutstockId,
+ taskType = 38,
+ containerNo = wmsBaseLocation.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now.AddSeconds(-10),
+ taskStatus = 0,
+ materialId = item.materialId,
+ currPointId = wmsBaseLocation.locationId,
+ currPointNo = wmsBaseLocation.locationCode,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = toLocation.locationId,
+ endPointNo = toLocation.locationCode,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = qty
+ };
+ toLocation.locationStatus = "4";
+ toLocation.instockFlag = "1";
+ toLocation.updateBy = "WCS";
+ toLocation.updateTime = DateTime.Now;
+ wmsBaseLocation.updateBy = "WCS";
+ wmsBaseLocation.updateTime = DateTime.Now;
+ wmsBaseLocation.outstockFlag = "1";
+ wmsBaseLocation.locationStatus = "4";
+ dbContext.Update(toLocation);
+ dbContext.Update(wmsBaseLocation);
+ dbContext.Add(RemoveTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask);
+ dbContext.Add(wcsTaskLog);
+ }
+ else
+ {
+ continue;
+ }
+ }
+ }
+ wcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = item.rawOutstockId,
+ taskType = endEquip.equipType == 12 ? 46 : 33,//如果是12那么就是原材料到柜体验收区,如果是13那么就是原材料到背板安装区
+ containerNo = location.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ taskStatus = 0,
+ materialId = item.materialId,
+ currPointId = location.locationId,
+ currPointNo = location.locationCode,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = lineEquip.objid,
+ endPointNo = lineEquip.equipNo,
+ equipmentNo = agvEquip.equipNo,
+ useFlag = 1,
+ qty = qty
+ };
+ WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
+ {
+ rawOutstockDetailId = StaticData.SnowId.NextId(),
+ rawOutstockId = item.rawOutstockId,
+ materialId = item.materialId,
+ createDate = DateTime.Now,
+ createBy = "WCS",
+ taskCode = wcsTask.objid.ToString(),
+ executeStatus = "1",
+ locationCode = location.locationCode,
+ outstockAmount = qty,
+ planAmount = item.outstockAmount,
+ warehouseId = item.warehouseId,
+ materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
+ instockBatch = mesBaseBarcodeInfo.batchCode,
+ stackAmount = qty,
+ outstockPerson = "WCS",
+ outstockTime = DateTime.Now,
+ outstockWay = "2",
+ materialProductionDate = mesBaseBarcodeInfo.productionDate
+ };
+ dbContext.Add(wmsProductOutstockDetail);
+ location.outstockFlag = "1";
+ location.locationStatus = "6";
+ location.updateBy = "WCS";
+ location.updateTime = DateTime.Now;
+ endEquip.emptyCount = 1;
+ dbContext.Update(endEquip);
+ dbContext.Update(location);
+ dbContext.Add(wcsTask);
+ dbContext.Update(stock);
+ dbContext.SaveChanges();
+ if (qty >= needNumber)
+ {
+ break;
+ }
+ }
+ if (item.beginTime == null)
+ {
+ item.beginTime = DateTime.Now;
+ }
+ dbContext.Update(item);
+ dbContext.SaveChanges();
+ break;
}
- if (item.beginTime == null)
- {
- item.beginTime = DateTime.Now;
- }
- dbContext.Update(item);
- dbContext.SaveChanges();
}
}
}
}
}
}
- catch
+ catch (Exception ex)
{
-
+ LogManager.Error(ex);
}
Thread.Sleep(1000);
}
diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
index d212567..d9d3a71 100644
--- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
+++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
@@ -1,15 +1,11 @@
-using Khd.Core.Application;
-using Khd.Core.Application.Interface;
-using Khd.Core.Domain.Models;
+using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library.Mapper;
-using Khd.Core.Plc;
using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
-using System.Diagnostics;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@@ -56,6 +52,7 @@ namespace Khd.Core.Wcs.Wcs
/// 提升机反馈流水号
///
private readonly BasePlcpoint reserialno06;
+ private readonly BasePlcpoint mesClose;
@@ -72,6 +69,7 @@ namespace Khd.Core.Wcs.Wcs
//一楼提升机流水号 读
this.serialno06 = StaticData.BasePlcpointList.First(t => t.equipmentNo.Contains("Hoister") && t.plcpointNo.Contains("serialno06"));
+ this.mesClose = StaticData.BasePlcpointList.First(t => t.equipmentNo.Contains("Hoister") && t.plcpointNo.Contains("mesclose"));
this.automatic = StaticData.BasePlcpointList.First(t => t.equipmentNo.Contains("Hoister") && t.plcpointNo.Contains("automatic"));
//一楼提升机状态 读
this.equipstate06 = StaticData.BasePlcpointList.First(t => t.equipmentNo.Contains("Hoister") && t.plcpointNo.Contains("equipstate06"));
@@ -132,50 +130,32 @@ namespace Khd.Core.Wcs.Wcs
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)
+ bool canSend = dbContext.WcsTask.Where(t => t.floorNo == 1).Where(t => t.taskStatus > 0).Any();
+ if (!canSend)
{
- if (wcsTaskManual.taskType == 58)
+ WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.nextPointId == 40).FirstOrDefault();
+ if (wcsTaskManual != null)
{
- 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)
+ if (wcsTaskManual.taskType == 53)
{
+ 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 = "1";
+ wcsTask.qty = mdjEquip.emptyCount;
+ 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 + ":一楼接驳位线程:空托盘任务下发成功");
}
- 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 + ":一楼接驳位线程:空托盘任务下发成功");
}
}
}
@@ -188,12 +168,32 @@ namespace Khd.Core.Wcs.Wcs
}
}
+ private bool ReadEmptyLocation()
+ {
+ var oneOutPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "oneOut");
+ var someOutPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "someOut");
+ var oneInPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "oneIn");
+ var someInPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "someIn");
+ var oneOutValue = this._plc.Read(oneOutPoint.plcpointAddress);
+ var someOutValue = this._plc.Read(someOutPoint.plcpointAddress);
+ var oneInValue = this._plc.Read(oneInPoint.plcpointAddress);
+ var someInValue = this._plc.Read(someInPoint.plcpointAddress);
+ if (oneOutValue != null && someOutValue != null && oneInValue != null && someInValue != null)
+ {
+ if (Convert.ToInt32(oneOutValue) == 0 && Convert.ToInt32(someOutValue) == 0 && Convert.ToInt32(oneInValue) == 0 && Convert.ToInt32(someInValue) == 0)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
///
/// 启动一楼接驳位线程
///
private void FirstFloorLine()
{
- List Itpyes = new() { 1, 3, 5, 7 };
+ List Outtpyes = new() { 2, 4, 8, 6 };
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
while (true)
@@ -207,6 +207,7 @@ namespace Khd.Core.Wcs.Wcs
if (linesignal01Value != null && RFID001Value != null)
{
//正常托盘到位
+ BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 1);
if (Convert.ToInt32(linesignal01Value) == 1)
{
//判断task表里没有该rfid的未完成的入库
@@ -216,24 +217,39 @@ namespace Khd.Core.Wcs.Wcs
{
//根据托盘号获取物料码
var material = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == RFID001Value).FirstOrDefault();
+ WcsTaskLog? taskLog = dbContext.WcsTaskLog.Where(t => t.containerNo == RFID001Value).OrderByDescending(t => t.createTime).FirstOrDefault();
+
if (material != null)
{
- var lastTask = dbContext.WcsTaskLog.Where(t => t.containerNo == RFID001Value).OrderByDescending(t => t.createTime).FirstOrDefault();
- if (lastTask != null)
-
+ if (taskLog != null)
{
- if (lastTask.materialId == material.materialId && lastTask.ud3 != "10")
+ if (taskLog.materialBarcode == material.materialBarcode)
{
- lastTask.ud2 = "1";
- lastTask.ud3 = "1";
- dbContext.Update(lastTask);
- dbContext.SaveChanges();
- LogManager.Info("一楼接驳位线程:托盘" + RFID001Value + "绑定信息未更新,请人工确认是否再次入库");
- Console.WriteLine(DateTime.Now + ":一楼接驳位线程:托盘" + RFID001Value + "绑定信息未更新,请人工确认是否再次入库");
- Thread.Sleep(3000);
- continue;
+ if (baseEquip.containerNo == "0")
+ {
+ baseEquip.containerNo = null;
+ dbContext.Update(baseEquip);
+ dbContext.SaveChanges();
+ LogManager.Info("一楼接驳位线程:托盘" + RFID001Value + "解绑信息更新成功");
+ }
+ else if (baseEquip.containerNo != RFID001Value)
+ {
+ baseEquip.containerNo = RFID001Value;
+ dbContext.Update(baseEquip);
+ dbContext.SaveChanges();
+ LogManager.Info("一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功");
+ Console.WriteLine(DateTime.Now + ":一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功");
+ Thread.Sleep(3000);
+ continue;
+ }
+ else
+ {
+ Thread.Sleep(3000);
+ continue;
+ }
}
}
+
var warehouseId = dbContext.WmsWarehouseMaterial.Where(t => t.storageType == "1" && t.storageId == material.materialId).FirstOrDefault()?.warehouseId;
if (warehouseId != null)
{
@@ -253,11 +269,9 @@ namespace Khd.Core.Wcs.Wcs
taskType = Convert.ToInt32(dic.dicValue),
taskStatus = 0,
containerNo = RFID001Value,
- materialNo = material.materialCode,
+ materialBarcode = material.materialBarcode,
materialId = material.materialId,
qty = Convert.ToInt32(material.bindAmount),
- startPointId = F01,
- startPointNo = "TSJ_01",
currPointId = F01,
currPointNo = "TSJ_01",
nextPointId = T01,
@@ -279,15 +293,20 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
- else if (Itpyes.Contains(task.taskType))//按照正常任务下发
+ else if (string.IsNullOrEmpty(task.containerNo))//按照正常任务下发
{
if (task.nextPointId != T01)
{
+ task.containerNo = RFID001Value;
task.currPointId = F01;
task.currPointNo = "TSJ_01";
task.nextPointId = T01;
task.nextPointNo = "TSJ_01";
task.taskStatus = 0;
+ if (task.createBy == "wpf")
+ {
+ task.useFlag = 0;
+ }
task.updateBy = "一楼接驳位线程";
task.updateTime = DateTime.Now;
task.remark = "一楼创建入库任务";
@@ -298,43 +317,19 @@ namespace Khd.Core.Wcs.Wcs
}
}
//出库
- else
+ else if (Outtpyes.Contains(task.taskType))
{
- dbContext.WcsTask.Where(t => t.objid == task.objid).Delete();
- dbContext.WcsTaskLog.Where(t => t.objid == task.objid).Update(t => new WcsTaskLog { taskStatus = 4 });
- //没有绑定信息
-
- //WmsProductOutstock? wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.palletInfoCode == RFID001Value&& t.executeStatus =="1");
- //WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.palletInfoCode == RFID001Value && t.executeStatus == "1");
- //if (wmsProductOutstock != null || wmsRawOutstock != null)
- //{
- // //清空托盘绑定
- // var material = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == RFID001Value).FirstOrDefault();
- // if (material != null)
- // {
- // material.bindAmount = 0;
- // material.materialBarcode = null;
- // material.materialCode = null;
- // material.materialId = null;
- // material.materialName = null;
- // material.updateBy = "WCS";
- // material.updateTime = DateTime.Now;
- // dbContext.Update(material);
- // if (wmsRawOutstock != null)
- // {
- // wmsRawOutstock.executeStatus = "2";
- // dbContext.Update(wmsRawOutstock);
- // }
- // else if(wmsProductOutstock != null)
- // {
- // wmsProductOutstock.executeStatus = "2";
- // dbContext.Update(wmsProductOutstock);
- // }
- // //dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == RFID001Value).Delete();
- // dbContext.SaveChanges();
-
- // }
- //}
+ MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == task.containerNo);
+ if (mesBasePalletInfo != null)
+ {
+ dbContext.WcsTask.Where(t => t.objid == task.objid).Delete();
+ dbContext.WcsTaskLog.Where(t => t.objid == task.objid).Update(t => new WcsTaskLog { taskStatus = 4, materialBarcode = mesBasePalletInfo.materialBarcode });
+ }
+ else
+ {
+ dbContext.WcsTask.Where(t => t.objid == task.objid).Delete();
+ dbContext.WcsTaskLog.Where(t => t.objid == task.objid).Update(t => new WcsTaskLog { taskStatus = 4 });
+ }
}
}
}
@@ -363,142 +358,171 @@ namespace Khd.Core.Wcs.Wcs
///
private void FirstFloorHoister()
{
-
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
while (true)
{
try
{
- using var scope = _host.Services.CreateScope();
- using var dbContext = scope.ServiceProvider.GetRequiredService();
+ var mesCloseValue = this._plc.Read(this.mesClose.plcpointAddress); //MES关闭状态 读
var serialno06Value = this._plc.Read(this.serialno06.plcpointAddress); //提升机流水号 读
var equipstate06Value = this._plc.Read(this.equipstate06.plcpointAddress); //提升机状态 读
var hoisterTrayIn06Value = this._plc.Read(this.hoistertrayin06.plcpointAddress); //提升机货物到位状态 读
var currentfloor06Value = this._plc.Read(this.currentfloor06.plcpointAddress); //提升机当前楼层 读
var targetfloor06Value = this._plc.Read(this.targetfloor06.plcpointAddress); //提升机目的楼层 写
var reserialno06 = this._plc.Read(this.reserialno06.plcpointAddress); //反馈流水号
-
- //正常读到plc值
- if (targetfloor06Value != null && serialno06Value != null && equipstate06Value != null && currentfloor06Value != null && reserialno06 != null && hoisterTrayIn06Value != null)
+ if (mesCloseValue != null && Convert.ToInt32(mesCloseValue) == 0)
{
- //提升机空闲
- if (Convert.ToInt32(equipstate06Value) == 0)
+ //正常读到plc值
+ if (targetfloor06Value != null && serialno06Value != null && equipstate06Value != null && currentfloor06Value != null && reserialno06 != null && hoisterTrayIn06Value != null)
{
- var wcsTasks = dbContext.WcsTask.Where(t => t.nextPointId == T01).OrderBy(t => t.createTime).ToList();
- foreach (var wcsTask in wcsTasks)
+ //提升机空闲
+ if (Convert.ToInt32(equipstate06Value) == 0)
{
- if (wcsTasks.Where(t => t.taskStatus > 0).Where(t => t.objid != wcsTask.objid).Any())
+ dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
+ var wcsTasks = dbContext.WcsTask.Where(t => t.nextPointId == T01).OrderBy(t => t.createTime).ToList();
+ foreach (var wcsTask in wcsTasks)
{
- LogManager.Info("提升机线程:有其他任务正在执行,跳过当前任务");
- continue;
- }
- BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo);
- if (wcsTask.taskStatus == 0 && Convert.ToInt32(hoisterTrayIn06Value) == 0)//创建状态,并且里面没有货物
- {
- if (lineEquip.equipStatus == 1)
+ if (wcsTasks.Where(t => t.taskStatus > 0).Where(t => t.objid != wcsTask.objid).Any())
{
- LogManager.Info("提升机线程:" + wcsTask.floorNo + "楼接驳位有AGV任务,跳过当前任务");
+ LogManager.Info("提升机线程:有其他任务正在执行,跳过当前任务");
continue;
}
- BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
- if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress))
+ BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo);
+ if (wcsTask.taskStatus == 0 && Convert.ToInt32(hoisterTrayIn06Value) == 0)//创建状态,并且里面没有货物
{
- if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)
+ if (lineEquip.equipStatus == 1)
{
- wcsTask.taskStatus = 2;
+ LogManager.Info("提升机线程:" + wcsTask.floorNo + "楼接驳位有AGV任务,跳过当前任务");
+ continue;
+ }
+ BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
+ if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress))
+ {
+ 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 = "提升机任务执行中" });
+ lineEquip.equipStatus = 1;
+ dbContext.Update(lineEquip);
+ dbContext.SaveChanges();
+ }
+ else
+ {
+ wcsTask.taskStatus = 1;
+ wcsTask.updateBy = "提升机线程";
+ wcsTask.updateTime = DateTime.Now;
+ wcsTask.remark = "提升机任务执行中";
+ this._plc.WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.fromFloorNo.ToString(), this.targetfloor06.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 = 1, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
+ lineEquip.equipStatus = 1;
+ dbContext.Update(lineEquip);
+ dbContext.SaveChanges();
+ }
+ }
+ }
+ if (wcsTask.taskStatus == 1 && Convert.ToInt32(reserialno06) == wcsTask.serialNo)
+ {
+ BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
+ if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress))
+ {
+ 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();
+ }
+ }
+ }
+ if (wcsTask.taskStatus == 2 && Convert.ToInt32(reserialno06) == wcsTask.serialNo)
+ {
+ if (Convert.ToInt32(hoisterTrayIn06Value) == 1)//托盘已经进提升机
+ {
+ wcsTask.taskStatus = 3;
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());
+ wcsTask.remark = "提升机任务执行完成";
+ this._plc.WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.floorNo.ToString(), this.targetfloor06.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.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
dbContext.SaveChanges();
}
+ }
+ if (wcsTask.taskStatus == 3 && Convert.ToInt32(currentfloor06Value) == wcsTask.floorNo && Convert.ToInt32(reserialno06) == wcsTask.serialNo)//任务状态为3,且当前楼层为任务的目的楼层
+ {
+ if (wcsTask.floorNo == 1)
+ {
+ if (ReadEmptyLocation())
+ {
+ 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
{
- wcsTask.taskStatus = 1;
+ wcsTask.taskStatus = 4;
wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now;
- wcsTask.remark = "提升机任务执行中";
- this._plc.WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.fromFloorNo.ToString(), this.targetfloor06.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 = 1, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
- lineEquip.equipStatus = 1;
- dbContext.Update(lineEquip);
- dbContext.SaveChanges();
- }
- }
- }
- if (wcsTask.taskStatus == 1 && Convert.ToInt32(reserialno06) == wcsTask.serialNo)
- {
- BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
- if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress))
- {
- if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)//提升机当前楼层为初始地楼层
- {
- wcsTask.taskStatus = 2;
- wcsTask.updateBy = "提升机线程";
- wcsTask.updateTime = DateTime.Now;
- wcsTask.remark = "提升机任务执行中";
+ 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());
+ 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 = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
+ dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
dbContext.SaveChanges();
}
}
- }
- if (wcsTask.taskStatus == 2 && Convert.ToInt32(reserialno06) == wcsTask.serialNo)
- {
- if (Convert.ToInt32(hoisterTrayIn06Value) == 1)//托盘已经进提升机
+ else if (wcsTask.taskStatus == 4)
{
- wcsTask.taskStatus = 3;
+ BaseEquip floorEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo);
+ wcsTask.nextPointId = floorEquip.objid;
+ wcsTask.nextPointNo = floorEquip.equipNo;
+ wcsTask.taskStatus = 5;
wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行完成";
- this._plc.WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.floorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层
+ lineEquip.equipStatus = 0;
+ dbContext.Update(lineEquip);
+ dbContext.SaveChanges();
dbContext.Update(wcsTask);
- dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
+ dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5, nextPointId = floorEquip.objid, nextPointNo = floorEquip.equipNo, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
dbContext.SaveChanges();
}
+ break;
}
- if (wcsTask.taskStatus == 3 && Convert.ToInt32(currentfloor06Value) == wcsTask.floorNo && Convert.ToInt32(reserialno06) == wcsTask.serialNo)//任务状态为3,且当前楼层为任务的目的楼层
- {
- 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)
- {
- BaseEquip floorEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo);
- wcsTask.nextPointId = floorEquip.objid;
- wcsTask.nextPointNo = floorEquip.equipNo;
- wcsTask.taskStatus = 5;
- wcsTask.updateBy = "提升机线程";
- wcsTask.updateTime = DateTime.Now;
- wcsTask.remark = "提升机任务执行完成";
- lineEquip.equipStatus = 0;
- dbContext.Update(lineEquip);
- dbContext.SaveChanges();
- dbContext.Update(wcsTask);
- dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5, nextPointId = floorEquip.objid, nextPointNo = floorEquip.equipNo, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
- dbContext.SaveChanges();
- }
- break;
}
}
}
+ else
+ {
+ if (currentfloor06Value != null && targetfloor06Value != null)
+ {
+ this._plc.WriteToPoint(this.targetfloor06.plcpointAddress, Convert.ToString(currentfloor06Value), this.targetfloor06.plcpointLength.ToString());
+ continue;
+ }
+ }
}
catch (Exception ex)
{
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
index ee9c260..97e40ca 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
@@ -1,5 +1,4 @@
-using Jc.SnowId;
-using Khd.Core.Domain.Dto.webapi;
+using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library.Mapper;
@@ -9,8 +8,6 @@ using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
-using System.Diagnostics;
-using Thrift.Protocol;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@@ -77,7 +74,6 @@ namespace Khd.Core.Wcs.Wcs
var taskList = dbContext.WcsTask
.Where(t => t.useFlag == 1)
.Where(t => t.nextPointId == agvID).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())
@@ -90,62 +86,62 @@ namespace Khd.Core.Wcs.Wcs
BaseDictionary baseDictionary = StaticData.BaseDictionary.First(t => t.objid == item.taskType);
if (item.taskType == 37)//入库任务
{
- WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
- BaseEquip currentEquip = StaticData.BaseEquip.First(t => t.floorNo == 5 && t.equipType == 1);
- WcsCmd wcsCmd = new()
- {
- 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 = currentEquip.agvPositionCode,
- nextPointId = item.endPointId,
- nextPointNo = wmsBaseLocation.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下发任务成功:" + message);
- 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);
- }
+ //WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
+ //BaseEquip currentEquip = StaticData.BaseEquip.First(t => t.floorNo == 5 && t.equipType == 1);
+ //WcsCmd wcsCmd = new()
+ //{
+ // 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 = currentEquip.agvPositionCode,
+ // nextPointId = item.endPointId,
+ // nextPointNo = wmsBaseLocation.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下发任务成功:" + message);
+ // 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 == 38)//出库任务
{
@@ -161,7 +157,7 @@ namespace Khd.Core.Wcs.Wcs
Console.WriteLine($"{DateTime.Now}:5楼接驳位上有货,无法下发Agv出库任务");
continue;
}
- WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
+ WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.floorNo == 5 && t.equipType == 1);
WcsCmd wcsCmd = new()
{
@@ -223,7 +219,7 @@ namespace Khd.Core.Wcs.Wcs
else if (item.taskType == 33)//原材料到背板安装
{
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 30);
- WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
+ WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
WcsCmd wcsCmd = new()
{
objid = StaticData.SnowId.NextId(),
@@ -340,7 +336,7 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 46)//原材料到拆分区
{
- WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
+ WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
BaseEquip currentEquip = StaticData.BaseEquip.First(t => t.objid == 29);
WcsCmd wcsCmd = new()
{
@@ -516,7 +512,7 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
}
}
- else if (item.taskType == 49)//移库
+ else if (item.taskType == 66)//移库
{
WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
WmsBaseLocation toBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
@@ -581,7 +577,7 @@ namespace Khd.Core.Wcs.Wcs
WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid);
if (wcsCmd != null)
{
-
+
if (wcsCmd.cmdStatus == 3)
{
var agvTask = new RequestAGVTaskDto
@@ -608,14 +604,18 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("五楼叉车线程完成任务" + wcsCmd.objid);
Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo);
LogManager.Info("五楼Agv完成任务成功:" + wcsCmd.ToJsonString());
- if (item.taskType == 49)
+ if (item.taskType == 66)
{
WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
WmsBaseLocation toBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
fromBaseLocation.outstockFlag = "0";
fromBaseLocation.locationStatus = "1";
+ fromBaseLocation.containerCode = null;
+ fromBaseLocation.updateTime = DateTime.Now;
toBaseLocation.instockFlag = "0";
toBaseLocation.locationStatus = "1";
+ toBaseLocation.containerCode = item.containerNo;
+ toBaseLocation.updateTime = DateTime.Now;
var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == fromBaseLocation.locationCode).FirstOrDefault();
if (wmsRawStock != null)
{
@@ -704,13 +704,13 @@ namespace Khd.Core.Wcs.Wcs
dbContext.WmsProductStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete();
BaseEquip floorLineEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == 5);
WcsTask newTask = CoreMapper.Map(item);
- newTask.createTime=DateTime.Now;
+ newTask.createTime = DateTime.Now;
newTask.nextPointId = floorLineEquip.objid;
newTask.nextPointNo = floorLineEquip.equipNo;
newTask.fromFloorNo = 5;
newTask.floorNo = 1;
newTask.taskStatus = 6;
- newTask.objid=StaticData.SnowId.NextId();
+ newTask.objid = StaticData.SnowId.NextId();
lineEquip.equipStatus = 0;
dbContext.Update(lineEquip);
dbContext.Add(newTask);
@@ -725,7 +725,7 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 33)//原材料到背板安装
{
- WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
+ WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.containerCode = "";
@@ -782,7 +782,7 @@ namespace Khd.Core.Wcs.Wcs
planDetailCode = wmsProductInstock.planDetailCode,
warehouseId = 512
};
- BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.startPointId);
+ BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
wmsProductInstockDetail.executeStatus = "2";
startEquip.emptyCount = 0;
dbContext.Update(wmsProductInstockDetail);
@@ -800,7 +800,7 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 46)//该任务结束后,立刻生成一个新的返库任务,但是是否使用标志未0,等待mes通知
{
- WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
+ WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.instockFlag = "1";
wmsBaseLocation.locationStatus = "2";
@@ -817,13 +817,13 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(wmsBaseLocation);
WcsTask newTask = CoreMapper.Map(item);
newTask.objid = StaticData.SnowId.NextId();
+ var currPointId = item.currPointId;
+ var currPointNo = item.currPointNo;
newTask.currPointId = item.endPointId;
newTask.currPointNo = item.endPointNo;
- newTask.endPointId = item.startPointId;
- newTask.endPointNo = item.startPointNo;
- newTask.startPointId = item.currPointId;
+ newTask.endPointId = item.currPointId;
+ newTask.endPointNo = item.currPointNo;
newTask.createTime = DateTime.Now;
- newTask.startPointNo = item.currPointNo;
newTask.taskType = 28;
newTask.taskStatus = 0;
newTask.useFlag = 0;
@@ -853,7 +853,6 @@ namespace Khd.Core.Wcs.Wcs
wmsRawStock.completeFlag = "0";
wmsRawStock.updateDate = DateTime.Now;
wmsRawStock.updateBy = "WCS";
- wmsRawStock.occupyAmount = 0;
BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
startEquip.emptyCount = 0;
dbContext.Update(startEquip);
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs
index 9f30ce0..0f57ea7 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs
@@ -8,11 +8,6 @@ using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@@ -88,7 +83,7 @@ namespace Khd.Core.Wcs.Wcs
{
if (item.taskStatus == 0)//下发任务
{
- BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.startPointId);
+ BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
BaseDictionary baseDictionary = dbContext.BaseDictionary.First(t => t.objid == item.taskType);
WcsCmd wcsCmd = new()
@@ -101,7 +96,7 @@ namespace Khd.Core.Wcs.Wcs
containerNo = item.containerNo,
createTime = DateTime.Now,
createBy = FloorNo + "楼AGV",
- currPointId = item.startPointId,
+ currPointId = item.currPointId,
currPointNo = startEquip.agvPositionCode,
nextPointId = item.endPointId,
nextPointNo = endEquip.agvPositionCode,
@@ -191,18 +186,27 @@ namespace Khd.Core.Wcs.Wcs
{
if (item.taskType == 48)
{
- dbContext.WmsRawReturn.Where(t => t.rawReturnId == item.orderId).Update(t => new WmsRawReturn { executeStatus = "2" });
+ WmsRawReturn? wmsRawReturn = dbContext.WmsRawReturn.Where(t => t.rawReturnId == item.orderId).FirstOrDefault();
+ if (wmsRawReturn != null)
+ {
+ wmsRawReturn.executeStatus = "2";
+ dbContext.Update(wmsRawReturn);
+ }
}
- else
+ else if (item.taskType == 32)
{
-
+ WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock.Where(t => t.rawOutstockId == item.orderId).FirstOrDefault();
+ if (wmsRawOutstock != null)
+ {
+ wmsRawOutstock.executeStatus = "2";
+ dbContext.Update(wmsRawOutstock);
+ }
}
dbContext.Remove(wcsCmd);
dbContext.Remove(item);
dbContext.SaveChanges();
- dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 10 });
- dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 10 });
-
+ dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 });
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
}
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
index ffb9945..668540c 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
@@ -1,10 +1,7 @@
-using AngleSharp.Css.Dom;
-using Castle.Core.Logging;
-using Khd.Core.Domain.Dto.webapi;
+using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library.Mapper;
-using Khd.Core.Plc;
using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global;
using Masuit.Tools;
@@ -12,8 +9,6 @@ using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
-using System;
-using Thrift.Protocol;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@@ -123,7 +118,6 @@ namespace Khd.Core.Wcs.Wcs
var isArrive = this._plc.Read(isarrive.plcpointAddress);
var receiveMaterial = this._plc.Read(ReceiveMaterial.plcpointAddress);
var waring = this._plc.Read(CtuLineWaring.plcpointAddress);
- bool haveAny = dbContext.WcsTask.Where(t => t.nextPointId == 11).Any();
if (rfid != null && isArrive != null && receiveMaterial != null && Convert.ToInt32(receiveMaterial) == 1 && Convert.ToInt32(isArrive) == 1)
{
if (Convert.ToBoolean(waring))
@@ -146,8 +140,6 @@ namespace Khd.Core.Wcs.Wcs
var wcsTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
- startPointId = baseEquip.objid,
- startPointNo = baseEquip.agvPositionCode,
currPointId = baseEquip.objid,
currPointNo = baseEquip.agvPositionCode,
nextPointId = ctuEquip.objid,
@@ -191,8 +183,6 @@ namespace Khd.Core.Wcs.Wcs
var wcsTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
- startPointId = baseEquip.objid,
- startPointNo = baseEquip.agvPositionCode,
currPointId = baseEquip.objid,
currPointNo = baseEquip.agvPositionCode,
nextPointId = ctuEquip.objid,
@@ -229,12 +219,12 @@ namespace Khd.Core.Wcs.Wcs
}
else if (receiveMaterial != null && Convert.ToInt32(receiveMaterial) == 1)
{
- if (!IsStart && !haveAny)
+ Task.Run(() =>
{
- Task.Run(() =>
+ var receiveMaterial2 = this._plc.Read(ReceiveMaterial.plcpointAddress);
+ while (receiveMaterial2 != null && Convert.ToInt32(receiveMaterial2) == 1)
{
- IsStart = true;
- Thread.Sleep(10000);
+ receiveMaterial2 = this._plc.Read(ReceiveMaterial.plcpointAddress);
lock (SystemData.outStockLock)
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
@@ -247,10 +237,10 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(wcsOutstockLock);
dbContext.SaveChanges();
}
- IsStart = false;
}
- });
- }
+ Thread.Sleep(3000);
+ }
+ });
}
}
catch (Exception ex)
@@ -349,7 +339,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();
@@ -374,7 +364,7 @@ namespace Khd.Core.Wcs.Wcs
if (item.taskType == 30)//出库任务
{
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
- WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
+ WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
var wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
@@ -435,7 +425,7 @@ namespace Khd.Core.Wcs.Wcs
bool haveOut = taskList.Where(t => t.taskType == 30).Where(t => t.taskStatus != 6).Any();
if (!haveOut && CtuWaitLogic())
{
- BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.startPointId);
+ BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
var wcsCmd = new WcsCmd()
{
@@ -531,7 +521,7 @@ namespace Khd.Core.Wcs.Wcs
if (reponseMessage != null && reponseMessage.code == "0")
{
LogManager.Info("五楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
- Console.WriteLine(DateTime.Now + ":五楼CTU线程继续任务" + item.startPointNo + "," + item.endPointNo);
+ Console.WriteLine(DateTime.Now + ":五楼CTU线程继续任务" + item.currPointId + "," + item.endPointNo);
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 4 });
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 });
@@ -558,7 +548,7 @@ namespace Khd.Core.Wcs.Wcs
if (reponseMessage != null && reponseMessage.code == "0")
{
LogManager.Info("五楼CTU线程下发任务" + agvTask.ToJsonString() + "\n" + message);
- Console.WriteLine(DateTime.Now + ":五楼CTU线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ Console.WriteLine(DateTime.Now + ":五楼CTU线程下发任务" + item.currPointId + "," + item.endPointNo);
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 4 });
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 });
@@ -586,7 +576,7 @@ namespace Khd.Core.Wcs.Wcs
}
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation
- .First(t => t.locationId == item.startPointId && t.warehouseFloor == 5);
+ .First(t => t.locationId == item.currPointId && t.warehouseFloor == 5);
wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.locationStatus = "2";
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
index c0e46c3..9325f72 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
@@ -1,14 +1,10 @@
-using Khd.Core.Domain.Dto.webapi;
-using Khd.Core.Domain.Models;
+using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library.Mapper;
-using Khd.Core.Plc;
using Khd.Core.Wcs.Global;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
-using Newtonsoft.Json;
-using System.Security.Cryptography;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@@ -95,7 +91,7 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.locationScrapType == "1")
.Where(t => t.instockFlag == "0")
.Where(t => t.outstockFlag == "0")
- .Where(t=>t.warehouseId==511)
+ .Where(t => t.warehouseId == 511)
//.Where(t => t.locationStatus == "1")
//.Where(t => string.IsNullOrEmpty(t.containerCode))
.ToList();
@@ -144,21 +140,20 @@ namespace Khd.Core.Wcs.Wcs
newTask.endPointNo = wmsBaseLocation.locationCode;
newTask.objid = StaticData.SnowId.NextId();
newTask.createTime = DateTime.Now;
+ newTask.taskType = 47;
if (newTask.fromFloorNo != 1)
{
- newTask.taskType = 47;
newTask.useFlag = 0;
}
else
{
- newTask.taskType = 47;//?28?
newTask.useFlag = 1;
}
wmsBaseLocation.instockFlag = "1";
wmsBaseLocation.locationStatus = "2";
dbContext.Update(wmsBaseLocation);
dbContext.Remove(wcsTask);
-
+
dbContext.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
dbContext.Add(wcsTaskLog);
diff --git a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs
index f53e0b5..c14b3ac 100644
--- a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs
@@ -1,17 +1,9 @@
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
-using Khd.Core.Library.Mapper;
-using Khd.Core.Plc;
-using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
index 99f7b38..0fba2d8 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
@@ -8,8 +8,6 @@ using Masuit.Tools.Logging;
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
@@ -139,7 +137,7 @@ namespace Khd.Core.Wcs.Wcs
if (reponseMessage != null && reponseMessage.message == "成功")
{
LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
- Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointId + "," + item.endPointNo);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -199,7 +197,7 @@ namespace Khd.Core.Wcs.Wcs
if (reponseMessage != null && reponseMessage.message == "成功")
{
LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
- Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointId + "," + item.endPointNo);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -258,7 +256,7 @@ namespace Khd.Core.Wcs.Wcs
if (reponseMessage != null && reponseMessage.message == "成功")
{
LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
- Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointId + "," + item.endPointNo);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -276,7 +274,7 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 57)//周转位-提升机
{
- var startPoint = StaticData.BaseEquip.First(t => t.objid == item.startPointId);
+ var startPoint = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
@@ -317,7 +315,7 @@ namespace Khd.Core.Wcs.Wcs
if (reponseMessage != null && reponseMessage.message == "成功")
{
LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
- Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointId + "," + item.endPointNo);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -335,7 +333,7 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 50)//库位-提升机
{
- var startPoint = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
+ var startPoint = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
@@ -376,7 +374,7 @@ namespace Khd.Core.Wcs.Wcs
if (reponseMessage != null && reponseMessage.message == "成功")
{
LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
- Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointId + "," + item.endPointNo);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -394,7 +392,7 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 55)//2F移库
{
- WmsBaseLocation fromWmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
+ WmsBaseLocation fromWmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
WmsBaseLocation toWmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
WcsCmd wcsCmd = new WcsCmd()
{
@@ -434,7 +432,7 @@ namespace Khd.Core.Wcs.Wcs
if (reponseMessage != null && reponseMessage.message == "成功")
{
LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
- Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointId + "," + item.endPointNo);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -492,7 +490,7 @@ namespace Khd.Core.Wcs.Wcs
if (reponseMessage != null && reponseMessage.message == "成功")
{
LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
- Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointId + "," + item.endPointNo);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -510,7 +508,7 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 54)//周转位-废料工位
{
- var wasteEquipLocation = StaticData.BaseEquip.FirstOrDefault(t => t.objid == item.startPointId);
+ var wasteEquipLocation = StaticData.BaseEquip.FirstOrDefault(t => t.objid == item.currPointId);
if (wasteEquipLocation != null)
{
WcsCmd wcsCmd = new WcsCmd()
@@ -553,7 +551,7 @@ namespace Khd.Core.Wcs.Wcs
if (reponseMessage != null && reponseMessage.message == "成功")
{
LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
- Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointId + "," + item.endPointNo);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -613,7 +611,7 @@ namespace Khd.Core.Wcs.Wcs
if (reponseMessage != null && reponseMessage.message == "成功")
{
LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
- Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
+ Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointId + "," + item.endPointNo);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -787,62 +785,62 @@ namespace Khd.Core.Wcs.Wcs
{
if (item.taskType == 49)
{
- WmsProductInstock? wmsProductInstock = dbContext.WmsProductInstock.FirstOrDefault(t => t.productInstockId == item.orderId);
- if (wmsProductInstock != null)
+ //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)
{
- WmsProductInstockDetail? wmsProductInstockDetail = dbContext.WmsProductInstockDetail.FirstOrDefault(t => t.productInstockId == wmsProductInstock.productInstockId);
- if (wmsProductInstockDetail != null)
+ MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.palletInfoCode == item.containerNo);
+ if (mesBaseBarcodeInfo != null)
{
- MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == item.containerNo);
- if (mesBasePalletInfo != 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()
{
- 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();
- }
- }
+ 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 = mesBaseBarcodeInfo.planCode,
+ planDetailCode = mesBaseBarcodeInfo.planDetailCode,
+ productBatch = mesBasePalletInfo.materialBarcode,
+ saleorderCode = mesBaseBarcodeInfo.saleorderCode,
+ productStockId = StaticData.SnowId.NextId(),
+ saleOrderId = mesBaseBarcodeInfo.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)
@@ -853,7 +851,7 @@ namespace Khd.Core.Wcs.Wcs
WmsProductOutstockDetail? wmsProductOutstockDetail = dbContext.WmsProductOutstockDetail.FirstOrDefault(t => t.productOutstockId == wmsProductOutstock.productOutstockId);
if (wmsProductOutstockDetail != null)
{
- var wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.startPointId).First();
+ var wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First();
WmsProductStock wmsProductStock = dbContext.WmsProductStock.First(t => t.locationCode == wmsBaseLocation.locationCode);
wmsProductOutstockDetail.executeStatus = "2";
wmsProductOutstock.endTime = DateTime.Now;
@@ -878,7 +876,7 @@ namespace Khd.Core.Wcs.Wcs
{
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
endEquip.equipStatus = 1;
- endEquip.emptyCount = Convert.ToInt32(item.isEmpty);
+ endEquip.emptyCount = item.qty;
dbContext.Update(endEquip);
dbContext.Remove(item);
dbContext.Remove(wcsCmd);
@@ -918,18 +916,33 @@ namespace Khd.Core.Wcs.Wcs
}
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);
+ WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
+ WmsBaseLocation toBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
+ fromBaseLocation.outstockFlag = "0";
+ fromBaseLocation.locationStatus = "1";
+ fromBaseLocation.containerCode = null;
+ fromBaseLocation.updateTime = DateTime.Now;
+ toBaseLocation.instockFlag = "0";
+ toBaseLocation.locationStatus = "1";
+ toBaseLocation.containerCode = item.containerNo;
+ toBaseLocation.updateTime = DateTime.Now;
+ var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == fromBaseLocation.locationCode).FirstOrDefault();
+ if (wmsRawStock != null)
+ {
+ wmsRawStock.locationCode = toBaseLocation.locationCode;
+ dbContext.Update(wmsRawStock);
+ }
+ else
+ {
+ var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == fromBaseLocation.locationCode);
+ if (wmsProductStock != null)
+ {
+ wmsProductStock.locationCode = toBaseLocation.locationCode;
+ dbContext.Update(wmsProductStock);
+ }
+ }
+ dbContext.Update(fromBaseLocation);
+ dbContext.Update(toBaseLocation);
dbContext.Remove(item);
dbContext.Remove(wcsCmd);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
@@ -940,6 +953,9 @@ namespace Khd.Core.Wcs.Wcs
{
wasteEquip.emptyCount = 0;
wasteEquip.equipStatus = 0;
+ BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == item.endPointId);
+ endEquip.emptyCount = 1;
+ endEquip.equipStatus = 2;
dbContext.Remove(item);
dbContext.Update(wasteEquip);
dbContext.Remove(wcsCmd);
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs
index a9bf602..bc12df6 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs
@@ -1,11 +1,10 @@
-using Khd.Core.Domain.Dto.webapi;
-using Khd.Core.Domain.Models;
+using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
+using Khd.Core.Library.Mapper;
using Khd.Core.Wcs.Global;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
-using Newtonsoft.Json;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@@ -58,6 +57,7 @@ namespace Khd.Core.Wcs.Wcs
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);
+ BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 8);
while (true)
{
try
@@ -68,13 +68,171 @@ namespace Khd.Core.Wcs.Wcs
var rfidValue = this._plc.ReadRFID(rfidPoint.plcpointAddress);
if (agvGetValue != null && agvPutValue != null && rfidValue != null)
{
- if(Convert.ToBoolean(agvPutValue))
+ if (Convert.ToInt32(agvPutValue) == 0)
{
+ bool canCreate = dbContext.WcsTask.Where(t => t.endPointId == 36 || t.nextPointId == 8).Any();
+ if (!canCreate)
+ {
+ BaseEquip? baseEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.emptyCount > 1 && t.equipStatus == 1);
+ BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 36);
+ if (baseEquip != null)
+ {
+ var wcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ endPointId = endEquip.objid,
+ endPointNo = endEquip.equipNo,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ currPointId = baseEquip.objid,
+ currPointNo = baseEquip.equipNo,
+ taskStatus = 0,
+ useFlag = 1,
+ containerNo = null,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ floorNo = 2,
+ fromFloorNo = 2,
+ isEmpty = "1",
+ qty = baseEquip.emptyCount,
+ taskType = 57,
+ };
+ dbContext.Add(wcsTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.SaveChanges();
+ Console.WriteLine(DateTime.Now + ":二楼码垛输送线生成请求空托盘任务成功:" + wcsTask.objid);
+ LogManager.Info("二楼码垛输送线生成请求空托盘任务成功:" + wcsTask.objid);
+ }
+ else
+ {
+ baseEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.emptyCount > 1 && t.equipStatus == 1);
+ if (baseEquip != null)
+ {
+ }
+ else
+ {
+ BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == 40);
+ if (startEquip.emptyCount > 1)
+ {
+ WcsTaskManual wcsTaskManual = new WcsTaskManual()
+ {
+ objid = StaticData.SnowId.NextId(),
+ startPointId = startEquip.objid,
+ startPointNo = startEquip.equipNo,
+ endPointId = endEquip.objid,
+ endPointNo = endEquip.equipNo,
+ nextPointId = startEquip.objid,
+ nextPointNo = startEquip.equipNo,
+ currPointId = startEquip.objid,
+ currPointNo = startEquip.equipNo,
+ taskStatus = 0,
+ useFlag = 1,
+ containerNo = null,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ floorNo = 2,
+ fromFloorNo = 1,
+ isEmpty = "1",
+ qty = startEquip.emptyCount,
+ taskType = 53,
+ };
+ dbContext.Add(wcsTaskManual);
+ dbContext.SaveChanges();
+ Console.WriteLine(DateTime.Now + ":二楼码垛输送线生成一楼托盘库任务成功:" + wcsTaskManual.objid);
+ LogManager.Info("二楼码垛输送线生成一楼托盘库任务成功:" + wcsTaskManual.objid);
+ }
+ }
+ }
+ }
}
- if (Convert.ToBoolean(agvGetValue) && !string.IsNullOrEmpty(rfidValue))
+ if (Convert.ToInt32(agvGetValue) == 1 && !string.IsNullOrEmpty(rfidValue))
{
-
+ MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == rfidValue);
+ if (mesBasePalletInfo != null)
+ {
+ var wmsBaseLocations = dbContext.WmsBaseLocation
+ .Where(t => t.warehouseFloor == FloorNo)
+ .Where(t => t.activeFlag == "1")
+ .Where(t => t.delFlag == "0")
+ .Where(t => t.locationScrapType == "1")
+ .Where(t => t.instockFlag == "0")
+ .Where(t => t.outstockFlag == "0")
+ .Where(t => t.warehouseId == 231)
+ .ToList();
+ var wmsProductStocks = dbContext.WmsProductStock
+ .Where(t => t.warehouseId == 231)
+ .ToList();
+ WmsBaseLocation? wmsBaseLocation = null;
+ if (wmsBaseLocations.Count > 0)
+ {
+ List locDeepLocations = wmsBaseLocations.Where(t => t.locDeep == 1).ToList();
+ var bill = from a in wmsProductStocks
+ join b in locDeepLocations on a.locationCode equals b.locationCode
+ select new { a, b };
+ if (bill.Any())
+ {
+ int? row = 0;
+ foreach (var item in bill)
+ {
+ if (item.b.locRow % 2 == 1)
+ {
+ row = item.b.locRow + 1;
+ }
+ else
+ {
+ row = item.b.locRow - 1;
+ }
+ wmsBaseLocation = wmsBaseLocations
+ .Where(t => t.locDeep == 2)
+ .Where(t => t.locRow == row)
+ .Where(t => t.locColumn == item.b.locColumn)
+ .Where(t => t.containerCode == null || t.containerCode == "")
+ .FirstOrDefault();
+ if (wmsBaseLocation != null)
+ {
+ break;
+ }
+ }
+ }
+ wmsBaseLocation ??= wmsBaseLocations
+ .Where(t => t.containerCode == null || t.containerCode == "")
+ .Where(t => t.locDeep == 1)
+ .FirstOrDefault();
+ wmsBaseLocation ??= wmsBaseLocations.Where(t => t.containerCode == null || t.containerCode == "").FirstOrDefault();
+ if (wmsBaseLocation != null)
+ {
+ BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == 37);
+ var wcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ currPointId = startEquip.objid,
+ currPointNo = startEquip.equipNo,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = wmsBaseLocation.locationId,
+ endPointNo = wmsBaseLocation.locationCode,
+ taskStatus = 0,
+ useFlag = 1,
+ containerNo = rfidValue,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ floorNo = 2,
+ fromFloorNo = 2,
+ isEmpty = "0",
+ taskType = 49,
+ qty = 1,
+ };
+ dbContext.Add(wcsTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.SaveChanges();
+ Console.WriteLine(DateTime.Now + ":二楼码垛输送线生成入库托盘任务成功:" + wcsTask.objid);
+ LogManager.Info("二楼码垛输送线生成入库托盘任务成功:" + wcsTask.objid);
+ }
+ }
+ }
}
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
index 3a41e3d..5dad6b0 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
@@ -79,7 +79,8 @@ 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);
+ var agvPutValue = StaticData.PlcDic[2].Read(agvPutPoint.plcpointAddress);
+
if (rfid != null && isSignal != null)
{
//正常读到输送线信息 有到位信号,并且有托盘,获取条码信息
@@ -96,76 +97,196 @@ namespace Khd.Core.Wcs.Wcs
{
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)
+ if (Convert.ToInt32(agvPutValue) == 0)
{
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.nextPointId = agvEquip.objid;
+ newTask.nextPointNo = agvEquip.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.endPointId = inEquip.objid;
+ newTask.endPointNo = inEquip.equipNo;
+ newTask.taskType = 51;//到小包入口
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);
+ LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + palletNo);
+ Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + palletNo);
}
- else
+ else if (Convert.ToInt32(agvPutValue) == 1)
{
- LogManager.Info("二楼接驳位出库任务出库失败,找不到终点站点");
- Console.WriteLine(DateTime.Now + ":二楼接驳位出库任务出库失败,找不到终点站点");
+ BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0);
+ if (endEquip != null)
+ {
+ 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.containerNo = palletNo;
+ newTask.currPointId = lineEquip.objid;
+ newTask.currPointNo = lineEquip.equipNo;
+ newTask.endPointId = endEquip.objid;
+ newTask.endPointNo = endEquip.equipNo;
+ newTask.taskType = 58;//到周转位
+ 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
{
- LogManager.Info("二楼接驳位出库任务出库失败,找不到订单信息");
- Console.WriteLine(DateTime.Now + ":二楼接驳位出库任务出库失败,找不到订单信息");
+ if (wcsTask.endPointId == 36)
+ {
+ if (Convert.ToInt32(agvPutValue) == 0)
+ {
+ 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.containerNo = palletNo;
+ newTask.currPointId = lineEquip.objid;
+ newTask.currPointNo = lineEquip.equipNo;
+ newTask.endPointId = inEquip.objid;
+ newTask.endPointNo = inEquip.equipNo;
+ newTask.taskType = 51;//到小包入口
+ 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 if (Convert.ToInt32(agvPutValue) == 1)
+ {
+ BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0);
+ if (endEquip != null)
+ {
+ 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.containerNo = palletNo;
+ newTask.currPointId = lineEquip.objid;
+ newTask.currPointNo = lineEquip.equipNo;
+ newTask.endPointId = endEquip.objid;
+ newTask.endPointNo = endEquip.equipNo;
+ newTask.taskType = 58;//到周转位
+ 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 if (wcsTask.endPointId == 38)
+ {
+ 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.containerNo = palletNo;
+ newTask.currPointId = lineEquip.objid;
+ newTask.currPointNo = lineEquip.equipNo;
+ newTask.taskType = 54;
+ 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
+ {
+ BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0);
+ if (endEquip != null)
+ {
+ 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.containerNo = palletNo;
+ newTask.currPointId = lineEquip.objid;
+ newTask.currPointNo = lineEquip.equipNo;
+ newTask.endPointId = endEquip.objid;
+ newTask.endPointNo = endEquip.equipNo;
+ newTask.taskType = 58;
+ 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 if (wcsTask.taskStatus == 8)
+ {
+ if (wcsTask.taskType == 44)
+ {
+ BaseEquip? endEquip = StaticData.BaseEquip.First(t => t.objid == 3);
+ 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.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);
}
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs
index e78781c..d444da0 100644
--- a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs
+++ b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs
@@ -114,7 +114,7 @@ namespace Khd.Core.Wcs.Wcs
{
BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "HeartBeat31");
int heartBeatCount = 0;
- while(true)
+ while (true)
{
try
{
diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs
index c2b876b..1459285 100644
--- a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs
@@ -82,6 +82,66 @@ namespace Khd.Core.Wcs.Wcs
{
if (item.taskStatus == 0)
{
+ BaseDictionary baseDictionary = StaticData.BaseDictionary.First(t => t.objid == item.taskType);
+ if (item.taskType == 67)
+ {
+ WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
+ WmsBaseLocation toBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
+ WcsCmd wcsCmd = new()
+ {
+ 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 = fromBaseLocation.agvPositionCode,
+ nextPointId = item.endPointId,
+ nextPointNo = toBaseLocation.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下发任务成功:" + message);
+ 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);
+ }
+ }
if (item.taskType == 39)
{
BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == 3);
@@ -117,7 +177,7 @@ namespace Khd.Core.Wcs.Wcs
type="00"
}
},
- taskTyp = "F300",
+ taskTyp = baseDictionary.dicValue,
ctnrTyp = "2",
};
string message = JsonConvert.SerializeObject(agvTask);
@@ -142,27 +202,32 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 41)
{
- BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 31);
- WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
- WcsCmd wcsCmd = new WcsCmd()
+ WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.rawOutstockId == wmsRawOutstock.rawOutstockId && t.executeStatus == "1");
+ if (wmsRawOutstockDetail != null)
{
- 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.startPointId,
- currPointNo = wmsBaseLocation.agvPositionCode,
- nextPointId = endEquip.objid,
- nextPointNo = endEquip.agvPositionCode,
- };
- var agvTask = new RequestAGVTaskDto
- {
- reqCode = StaticData.SnowId.NextId().ToString(),
- positionCodePath = new List
+ wmsRawOutstockDetail.executeStatus = "1";
+ wmsRawOutstockDetail.outstockTime = DateTime.Now;
+ BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 31);
+ WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
+ 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 = wmsBaseLocation.agvPositionCode,
+ nextPointId = endEquip.objid,
+ nextPointNo = endEquip.agvPositionCode,
+ };
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = StaticData.SnowId.NextId().ToString(),
+ positionCodePath = new List
{
new ()
{
@@ -175,33 +240,35 @@ namespace Khd.Core.Wcs.Wcs
type="00"
}
},
- taskTyp="F301",
- 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 == "成功")
- {
- 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);
+ 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 == "成功")
+ {
+ wcsCmd.taskCode = reponseMessage.data;
+ wcsCmd.cmdStatus = 1;
+ item.taskStatus = 1;
+ dbContext.Update(wmsRawOutstockDetail);
+ 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 == 42)
+ else if (item.taskType == 40)
{
- BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == 31);
- BaseEquip endEquip = StaticData.BaseEquip.First();
+ BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
+ BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
@@ -233,8 +300,69 @@ namespace Khd.Core.Wcs.Wcs
type="00"
}
},
- taskTyp="F302",
+ taskTyp = baseDictionary.dicValue,
ctnrTyp = "2",
+ ctnrNum = startEquip.emptyCount.ToString()
+ };
+ 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 == "成功")
+ {
+ 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 == 42)
+ {
+ //var startEquip = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
+ BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
+ BaseEquip 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 = startEquip.agvPositionCode,
+ nextPointId = endEquip.objid,
+ nextPointNo = endEquip.agvPositionCode,
+ };
+ var agvTask = new RequestAGVTaskDto
+ {
+ reqCode = StaticData.SnowId.NextId().ToString(),
+ positionCodePath = new List
+ {
+ new ()
+ {
+ positionCode=wcsCmd.currPointNo,
+ type="00"
+ },
+ new ()
+ {
+ positionCode=wcsCmd.nextPointNo,
+ type="00"
+ }
+ },
+ taskTyp = baseDictionary.dicValue,
+ ctnrTyp = "2",
+ ctnrNum = "1"
};
string message = JsonConvert.SerializeObject(agvTask);
string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
@@ -258,8 +386,8 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 43)
{
- BaseEquip emptyEquip = StaticData.BaseEquip.First(t => t.objid == item.startPointId);
- BaseEquip endEquip = StaticData.BaseEquip.First(t => t.floorNo == 3 && t.equipType == 1);
+ BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
+ BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
@@ -270,8 +398,8 @@ namespace Khd.Core.Wcs.Wcs
containerNo = item.containerNo,
createTime = DateTime.Now,
createBy = FloorNo + "楼AGV",
- currPointId = item.startPointId,
- currPointNo = emptyEquip.agvPositionCode,
+ currPointId = item.currPointId,
+ currPointNo = startEquip.agvPositionCode,
nextPointId = endEquip.objid,
nextPointNo = endEquip.agvPositionCode,
};
@@ -291,8 +419,9 @@ namespace Khd.Core.Wcs.Wcs
type="00"
}
},
- taskTyp="F303",
+ taskTyp = baseDictionary.dicValue,
ctnrTyp = "2",
+ ctnrNum = startEquip.emptyCount.ToString()
};
string message = JsonConvert.SerializeObject(agvTask);
string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
@@ -316,7 +445,7 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 44)
{
- BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.startPointId);
+ BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 3);
WcsCmd wcsCmd = new WcsCmd()
{
@@ -349,8 +478,9 @@ namespace Khd.Core.Wcs.Wcs
type = "00"
}
},
- taskTyp="F304",
- ctnrTyp="2"
+ taskTyp = baseDictionary.dicValue,
+ ctnrTyp = "2",
+ ctnrNum = startEquip.emptyCount.ToString()
};
string message = JsonConvert.SerializeObject(agvTask);
string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
@@ -400,6 +530,43 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskStatus == 5)
{
+ if (item.taskType == 67)
+ {
+ WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
+ WmsBaseLocation toBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
+ fromBaseLocation.outstockFlag = "0";
+ fromBaseLocation.locationStatus = "1";
+ fromBaseLocation.containerCode = null;
+ fromBaseLocation.updateTime = DateTime.Now;
+ toBaseLocation.instockFlag = "0";
+ toBaseLocation.locationStatus = "1";
+ toBaseLocation.containerCode = item.containerNo;
+ toBaseLocation.updateTime = DateTime.Now;
+ var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == fromBaseLocation.locationCode).FirstOrDefault();
+ if (wmsRawStock != null)
+ {
+ wmsRawStock.locationCode = toBaseLocation.locationCode;
+ dbContext.Update(wmsRawStock);
+ }
+ else
+ {
+ var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == fromBaseLocation.locationCode);
+ if (wmsProductStock != null)
+ {
+ wmsProductStock.locationCode = toBaseLocation.locationCode;
+ dbContext.Update(wmsProductStock);
+ }
+ }
+ dbContext.Update(fromBaseLocation);
+ dbContext.Update(toBaseLocation);
+ dbContext.Remove(wcsCmd);
+ dbContext.Remove(item);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
+ dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
+ dbContext.Update(fromBaseLocation);
+ dbContext.Update(toBaseLocation);
+ dbContext.SaveChanges();
+ }
if (item.taskType == 39)
{
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation
@@ -446,7 +613,26 @@ namespace Khd.Core.Wcs.Wcs
dbContext.SaveChanges();
}
}
-
+ }
+ else if (item.taskType == 40)
+ {
+ BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId);
+ BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == item.endPointId);
+ startEquip.emptyCount = 0;
+ startEquip.equipStatus = 0;
+ startEquip.updateTime = DateTime.Now;
+ startEquip.updateBy = "WCS";
+ endEquip.emptyCount = item.qty;
+ endEquip.equipStatus = 1;
+ endEquip.updateTime = DateTime.Now;
+ endEquip.updateBy = "WCS";
+ dbContext.Update(startEquip);
+ dbContext.Update(endEquip);
+ dbContext.Remove(wcsCmd);
+ dbContext.Remove(item);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
+ dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
+ dbContext.SaveChanges();
}
else if (item.taskType == 41)
{
@@ -454,51 +640,68 @@ namespace Khd.Core.Wcs.Wcs
.First(t => t.locationId == item.currPointId);
wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.locationStatus = "1";
- wmsBaseLocation.containerCode = "";
+ wmsBaseLocation.containerCode = null;
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS";
- dbContext.WmsRawOutstock.Where(t => t.orderId == item.orderId).Update(t => new WmsRawOutstock
+
+ WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == item.orderId);
+ if (wmsRawOutstock != null)
{
- executeStatus = "2"
- });
- dbContext.Update(wmsBaseLocation);
- dbContext.WmsRawStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete();
- dbContext.WcsTask.Where(t => t.objid == item.objid).Delete();
- dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
- dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
- dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
- dbContext.SaveChanges();
+ wmsRawOutstock.realOutstockAmount += 1;
+ WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.rawOutstockId == wmsRawOutstock.rawOutstockId && t.executeStatus == "1");
+ if (wmsRawOutstockDetail != null)
+ {
+ wmsRawOutstockDetail.executeStatus = "2";
+ WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.palletInfoCode == item.containerNo).FirstOrDefault();
+ if (wmsRawStock != null)
+ {
+ dbContext.Update(wmsRawOutstock);
+ dbContext.Remove(wmsRawStock);
+ dbContext.Update(wmsBaseLocation);
+ dbContext.Remove(wcsCmd);
+ dbContext.Remove(item);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
+ dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
+ dbContext.SaveChanges();
+ }
+ }
+ }
}
else if (item.taskType == 42)
{
- BaseEquip emptyEquip = StaticData.BaseEquip.First(t => t.objid == 35);
- BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 3);
+ BaseEquip emptyEquip = dbContext.BaseEquip.First(t => t.objid == 35);
emptyEquip.emptyCount += 1;
+ emptyEquip.equipStatus = 1;
emptyEquip.updateTime = DateTime.Now;
emptyEquip.updateBy = "WCS";
dbContext.Update(emptyEquip);
- dbContext.WcsTask.Where(t => t.objid == item.objid).Delete();
+ dbContext.Remove(wcsCmd);
+ dbContext.Remove(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
- dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.SaveChanges();
}
else if (item.taskType == 43)
{
- BaseEquip emptyEquip = StaticData.BaseEquip.First(t => t.objid == 35);
- BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
+ BaseEquip emptyEquip = dbContext.BaseEquip.First(t => t.objid == 35);
+ BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == item.endPointId);
emptyEquip.emptyCount = 0;
emptyEquip.updateTime = DateTime.Now;
emptyEquip.updateBy = "WCS";
- endEquip.emptyCount = emptyEquip.emptyCount;
+ endEquip.emptyCount += item.qty;
endEquip.updateTime = DateTime.Now;
endEquip.updateBy = "WCS";
dbContext.Update(endEquip);
dbContext.Update(emptyEquip);
+ dbContext.Remove(wcsCmd);
+ dbContext.Remove(item);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
+ dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
+ dbContext.SaveChanges();
}
else if (item.taskType == 44)
{
- BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.startPointId);
+ BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId);
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 3);
startEquip.emptyCount = 0;
startEquip.updateTime = DateTime.Now;
@@ -511,9 +714,9 @@ namespace Khd.Core.Wcs.Wcs
item.floorNo = endEquip.floorNo;
item.taskStatus = 6;
dbContext.Update(item);
- dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6, nextPointId = lineEquip.objid, nextPointNo = lineEquip.equipNo, fromFloorNo = 3, floorNo = endEquip.floorNo });
+ dbContext.Remove(wcsCmd);
+ dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
- dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.SaveChanges();
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs
index 2b57883..e13a860 100644
--- a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs
@@ -1,13 +1,10 @@
-using Khd.Core.Domain.Dto.webapi;
-using Khd.Core.Domain.Models;
+using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library.Mapper;
-using Khd.Core.Plc;
using Khd.Core.Wcs.Global;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
-using Newtonsoft.Json;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@@ -90,27 +87,6 @@ namespace Khd.Core.Wcs.Wcs
{
if (wcsTask.taskStatus == 5)//提升机任务是完成状态
{
- if (wcsTask.isEmpty == "1")
- {
- var emptyEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.emptyCount == 0);
- if(emptyEquip != null)
- {
- wcsTask.taskStatus = 0;//创建状态
- wcsTask.updateTime = DateTime.Now;
- wcsTask.currPointId = baseEquip.objid;
- wcsTask.currPointNo = baseEquip.equipNo;
- wcsTask.nextPointId = AgvEquip.objid;
- wcsTask.nextPointNo = AgvEquip.equipNo;
- wcsTask.endPointId = emptyEquip.objid;
- wcsTask.endPointNo = emptyEquip.equipNo;
- wcsTask.useFlag = 1;
- dbContext.Update(wcsTask);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
- dbContext.Add(wcsTaskLog);
- dbContext.SaveChanges();
- }
- }
- else
{
var wmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseFloor == FloorNo)
.Where(t => t.activeFlag == "1")
@@ -144,20 +120,23 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation ??= outBill.FirstOrDefault()?.b;//先找相同物料的外侧库位
wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(t => t.locDeep == 2);//找不到再找深库位
wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位
-
+
if (wmsBaseLocations.Count > 0 && wmsBaseLocation != null)
{
- wcsTask.taskStatus = 0;//创建状态
- wcsTask.updateTime = DateTime.Now;
- wcsTask.currPointId = baseEquip.objid;
- wcsTask.currPointNo = baseEquip.equipNo;
- wcsTask.nextPointId = AgvEquip.objid;
- wcsTask.nextPointNo = AgvEquip.equipNo;
- wcsTask.endPointId = wmsBaseLocation.locationId;
- wcsTask.endPointNo = wmsBaseLocation.locationCode;
+ dbContext.Remove(wcsTask);
+ WcsTask newTask = CoreMapper.Map(wcsTask);
+ newTask.objid = StaticData.SnowId.NextId();
+ newTask.taskStatus = 0;//创建状态
+ newTask.updateTime = DateTime.Now;
+ newTask.currPointId = baseEquip.objid;
+ newTask.currPointNo = baseEquip.equipNo;
+ newTask.nextPointId = AgvEquip.objid;
+ newTask.nextPointNo = AgvEquip.equipNo;
+ newTask.endPointId = wmsBaseLocation.locationId;
+ newTask.endPointNo = wmsBaseLocation.locationCode;
if (wmsBaseLocation.warehouseId == 311)
{
- wcsTask.taskType = 39;
+ newTask.taskType = 39;
}
else
{
@@ -165,11 +144,11 @@ namespace Khd.Core.Wcs.Wcs
Thread.Sleep(1000);
continue;
}
- wcsTask.useFlag = 1;
+ newTask.useFlag = 1;
wmsBaseLocation.instockFlag = "1";
wmsBaseLocation.locationStatus = "2";
dbContext.Update(wmsBaseLocation);
- dbContext.Update(wcsTask);
+ dbContext.Add(wcsTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
@@ -184,24 +163,19 @@ namespace Khd.Core.Wcs.Wcs
else if (wcsTask.taskStatus == 6)//小车任务是完成状态,说明是出库
{
BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.equipType == 2);//提升机
- wcsTask.nextPointId = nextEquip.objid;
- wcsTask.nextPointNo = nextEquip.equipNo;
- wcsTask.currPointId = baseEquip.objid;
- wcsTask.currPointNo = baseEquip.equipNo;
- wcsTask.fromFloorNo = FloorNo;
- wcsTask.taskStatus = 0;
- wcsTask.updateTime = DateTime.Now;
- dbContext.Update(wcsTask);
- dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid)
- .Update(t => new WcsTaskLog
- {
- nextPointId = nextEquip.objid,
- nextPointNo = nextEquip.equipNo,
- currPointId = baseEquip.objid,
- currPointNo = baseEquip.equipNo,
- taskStatus = 0,
- updateTime = DateTime.Now,
- });
+ dbContext.Remove(wcsTask);
+ WcsTask newTask = CoreMapper.Map(wcsTask);
+ newTask.objid = StaticData.SnowId.NextId();
+ newTask.nextPointId = nextEquip.objid;
+ newTask.nextPointNo = nextEquip.equipNo;
+ newTask.currPointId = baseEquip.objid;
+ newTask.currPointNo = baseEquip.equipNo;
+ newTask.fromFloorNo = FloorNo;
+ newTask.taskStatus = 0;
+ newTask.updateTime = DateTime.Now;
+ dbContext.Add(newTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
+ dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/WcsToWms.cs b/src/Khd.Core.Wcs/Wcs/WcsToWms.cs
index 3560269..2d5d5f6 100644
--- a/src/Khd.Core.Wcs/Wcs/WcsToWms.cs
+++ b/src/Khd.Core.Wcs/Wcs/WcsToWms.cs
@@ -1,9 +1,4 @@
-using Khd.Core.Domain.Dto.webapi;
-using Masuit.Tools;
-using Masuit.Tools.Logging;
-using Newtonsoft.Json;
-
-namespace Khd.Core.Wcs.Wcs
+namespace Khd.Core.Wcs.Wcs
{
public class WcsToWms
{
diff --git a/src/Khd.Core.Wpf/App.xaml.cs b/src/Khd.Core.Wpf/App.xaml.cs
index 0768e79..18d2487 100644
--- a/src/Khd.Core.Wpf/App.xaml.cs
+++ b/src/Khd.Core.Wpf/App.xaml.cs
@@ -1,9 +1,6 @@
-using Masuit.Tools;
-using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
using System.Threading.Tasks;
using System.Windows;
namespace Khd.Core.Wpf
@@ -15,7 +12,7 @@ namespace Khd.Core.Wpf
{
public App()
{
-
+
//UI线程未捕获异常处理事件(UI主线程)
this.DispatcherUnhandledException += App_DispatcherUnhandledException;
@@ -30,7 +27,7 @@ namespace Khd.Core.Wpf
.Build();
SystemData.PlcConfigs = configuration.GetSection("PlcConfigs").Get>();
-
+
ConnectionStrings.ConnectionString = configuration["ConnectionStrings:DefaultConnection"].ToString();
//配置文件 加载 Thrift 推送端口
ThriftConfig.ThriftIpAddress = configuration["ThriftConfig:ThriftIpAddress"].ToString();
diff --git a/src/Khd.Core.Wpf/CSS/DataGridClass.xaml b/src/Khd.Core.Wpf/CSS/DataGridClass.xaml
index 655d060..f00d059 100644
--- a/src/Khd.Core.Wpf/CSS/DataGridClass.xaml
+++ b/src/Khd.Core.Wpf/CSS/DataGridClass.xaml
@@ -4,14 +4,14 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1410,11 +1576,14 @@
-
+
-
-
+
+
+
+
+
+
+
-
+
-
-
+
+ Width="130*"
+ CanUserSort="False"
+ Header="总数"
+ IsReadOnly="True" >
-
+
-
-
-
@@ -1565,14 +1712,12 @@
@@ -1580,7 +1725,6 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2042,12 +2343,8 @@
HorizontalAlignment="Left"
Background="#213269"
Orientation="Horizontal">
-
-
+
+
-
+
+
+
diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs
index 50c424d..9767785 100644
--- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs
+++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs
@@ -1,41 +1,34 @@
-using Khd.Core.Domain.Models;
+using HandyControl.Tools.Extension;
+using Jc.SnowId;
+using Khd.Core.Domain.Auth;
+using Khd.Core.Domain.Dto.webapi;
+using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
-using Microsoft.EntityFrameworkCore;
+using Khd.Core.Library.Mapper;
+using Khd.Core.Plc;
+using Khd.Core.Plc.S7;
+using Khd.Core.Wpf.dto;
+using Khd.Core.Wpf.Scan;
+using Khd.Core.Wpf.TaskForm;
+using Masuit.Tools;
+using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
+using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
+using System.Diagnostics;
+using System.IO.Ports;
using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
+using System.Windows.Input;
using System.Windows.Threading;
using Z.EntityFramework.Plus;
-using Masuit.Tools;
-using System.Windows.Input;
-using Khd.Core.Wpf.Scan;
-using System.IO.Ports;
-using System.Threading;
-using System.Diagnostics;
-using Jc.SnowId;
-using System.IO;
-using System.Runtime.InteropServices;
-using System.Windows.Media;
-using HandyControl.Tools.Extension;
-using Khd.Core.Wpf.TaskForm;
-using Microsoft.IdentityModel.Tokens;
-using Khd.Core.Plc;
-using Khd.Core.Plc.S7;
-using System.Threading.Tasks;
-using System.Windows.Media.Media3D;
-using Masuit.Tools.Logging;
-using Khd.Core.Library.Mapper;
-using System.Windows.Markup;
-using System.Security.Cryptography.Xml;
-using Newtonsoft.Json;
-using Khd.Core.Domain.Dto.webapi;
-using System.Text;
-using AngleSharp.Common;
namespace Khd.Core.Wpf.Form
{
@@ -44,6 +37,8 @@ namespace Khd.Core.Wpf.Form
///
public partial class FormBoardT : Window
{
+
+ public static long? UserId = 1;
public static readonly JcSnowId _jcSnowId = new JcSnowId();
private readonly IHost _host;
private Khd.Core.Plc.S7.Plc _plc;
@@ -111,6 +106,8 @@ namespace Khd.Core.Wpf.Form
{
try
{
+ GetMenu();
+
DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(ShowTime); //委托刷新时间方法
dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 1000);
@@ -131,7 +128,6 @@ namespace Khd.Core.Wpf.Form
using var dbContext = scope.ServiceProvider.GetRequiredService();
SystemData.BasePlcpoints = dbContext.BasePlcpoint.ToList();
SystemData.BaseDictionary = dbContext.BaseDictionary.ToList();
- SystemData.BaseEquip = dbContext.BaseEquip.ToList();
SystemData.BaseWareHouse = dbContext.WmsBaseWarehouse.ToList();
SystemData.MesBaseMaterialInfo = dbContext.MesBaseMaterialInfo.Take(100).ToList();
Dispatcher.Invoke(() =>
@@ -259,9 +255,12 @@ namespace Khd.Core.Wpf.Form
lock (updateLock)
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
- BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 40);
+ SystemData.BaseEquip = dbContext.BaseEquip.ToList();
+ BaseEquip baseEquip = SystemData.BaseEquip.First(t => t.objid == 40);
Dispatcher.Invoke(() =>
{
+ EquipListSelectDy.ItemsSource = SystemData.BaseEquip.Where(t => t.equipType == 2 || t.equipType == 4 || t.equipType == 5 || t.equipType == 6 || t.equipType == 11);
+ this.firstRFID.Text = SystemData.BaseEquip.First(t => t.objid == 1).containerNo;
this.DDJEmptyCount.Text = baseEquip.emptyCount.ToString();
if (baseEquip.emptyCount == 0)
{
@@ -284,6 +283,19 @@ namespace Khd.Core.Wpf.Form
this.OneOut.IsEnabled = true;
this.SomeOut.IsEnabled = true;
}
+ this.EmptyEquip.ItemsSource = SystemData.BaseEquip.Where(t => t.equipType == 20 || t.equipType == 21).Select(
+ t => new BaseEquip
+ {
+ objid = t.objid,
+ equipName = t.equipName,
+ emptyCount = t.emptyCount,
+ equipType = t.equipType,
+ ud3 = t.ud3 == "0" ? "空" : t.ud3 == "1" ? "托盘" : t.ud3 == "2" ? "废料" : "未知",
+ equipNo = t.equipNo,
+ floorNo = t.floorNo,
+ }
+ ).OrderBy(t => t.equipNo);
+ this.EmptyEquip.Items.Refresh();
});
}
}
@@ -314,7 +326,10 @@ namespace Khd.Core.Wpf.Form
///
///
private void dgData_LoadingRow(object sender, DataGridRowEventArgs e)
- { e.Row.Header = e.Row.GetIndex() + 1; }
+ {
+ e.Row.Header = e.Row.GetIndex() + 1;
+ }
+
///
/// 点击退出按钮
///
@@ -327,11 +342,13 @@ namespace Khd.Core.Wpf.Form
System.Environment.Exit(System.Environment.ExitCode);
}
}
+
private void Close(object sender, EventArgs e)
{
System.Environment.Exit(System.Environment.ExitCode);
}
public int i = 0;
+
///
/// 查询任务
///
@@ -392,14 +409,30 @@ namespace Khd.Core.Wpf.Form
using var dbContext = scope.ServiceProvider.GetRequiredService();
var equipCode = lba_ThrifTtitle1.Text;
var palletNo = lba_ThrifTtitle2.Text;
- var data = dbContext.WcsTask.Where(t => t.containerNo.Contains(palletNo) && t.equipmentNo.Contains(equipCode)).ToList();
+ long? nextPointId = 0;
+ if (this.EquipListSelectDy.SelectedItem is BaseEquip baseEquip)
+ {
+ nextPointId = baseEquip.objid;
+ }
+ var data = dbContext.WcsTask
+ .WhereIf(nextPointId != 0, t => t.nextPointId == nextPointId)
+ .Where(t => t.containerNo.Contains(palletNo) && t.equipmentNo.Contains(equipCode)).ToList();
+ List taskModel = CoreMapper.Map>(data);
SelectedItem.Clear();
- foreach (var item in data)
+ foreach (var item in taskModel)
{
SelectedItem.Add(item.objid, false);
+ if (item.nextPointId == 6)
+ {
+ item.isShow = Visibility.Visible;
+ }
+ else
+ {
+ item.isShow = Visibility.Collapsed;
+ }
}
this.LoadMaterial0.ItemsSource = null;
- this.LoadMaterial0.ItemsSource = data;
+ this.LoadMaterial0.ItemsSource = taskModel;
this.LoadMaterial0.Items.Refresh();
if (data.Count == 0)
{
@@ -434,6 +467,7 @@ namespace Khd.Core.Wpf.Form
}
BaseEquip agvEquip = SystemData.BaseEquip.First(t => t.objid == 10);
List wcsCmds = dbContext.WcsCmd.Where(t => ids.Contains(t.taskId)).ToList();
+ List wcsTasks = dbContext.WcsTask.Where(t => ids.Contains(t.objid)).ToList();
foreach (var item in wcsCmds)
{
var cancelTask = new
@@ -441,19 +475,32 @@ namespace Khd.Core.Wpf.Form
reqCode = Global.SnowId.NextId().ToString(),
taskCode = item.taskCode
};
- string reponse = HttpHelper.SendPostMessage(agvEquip.serverIp, agvEquip.serverPort.Value, "", cancelTask.ToJsonString());
+ string reponse = HttpHelper.SendPostMessage(agvEquip.serverIp, agvEquip.serverPort.Value, "rcms/services/rest/hikRpcService/cancelTask", cancelTask.ToJsonString());
var result = JsonConvert.DeserializeObject(reponse);
if (result != null && result.code == "0")
{
+ WcsTask? wcsTask = wcsTasks.Where(t => t.objid == item.taskId).FirstOrDefault();
+ if (wcsTask != null)
+ {
+ dbContext.Remove(wcsTask);
+ }
ids.Remove(item.taskId);
- dbContext.WcsCmd.Where(t => t.objid == item.objid).Delete();
- dbContext.WcsTask.Where(t => t.objid == item.taskId).Delete();
- dbContext.WcsTaskLog.Where(t => t.objid == item.taskId).Update(t => new WcsTaskLog { IsDelete = 1 });
+ dbContext.Remove(item);
+ dbContext.WcsTaskLog.Where(t => ids.Contains(t.objid)).Update(t => new WcsTaskLog { IsDelete = 1 });
+ dbContext.SaveChanges();
+ }
+ else
+ {
+ MessageBoxResult messageBoxResult1 = MessageBox.Show("取消小车端任务失败,是否继续删除调度任务?", "提示信息", MessageBoxButton.YesNo, MessageBoxImage.Warning);
+ if (messageBoxResult1 == MessageBoxResult.Yes)
+ {
+ ids.Remove(item.taskId);
+ dbContext.Remove(item);
+ dbContext.WcsTaskLog.Where(t => ids.Contains(t.objid)).Update(t => new WcsTaskLog { IsDelete = 1 });
+ dbContext.SaveChanges();
+ }
}
}
- dbContext.WcsTask.Where(t => ids.Contains(t.objid)).Delete();
- dbContext.WcsTaskLog.Where(t => ids.Contains(t.objid)).Update(t => new WcsTaskLog { IsDelete = 1 });
- dbContext.SaveChanges();
GetTask();
}
else
@@ -513,9 +560,12 @@ namespace Khd.Core.Wpf.Form
private void btnGetStocK_Click(object sender, RoutedEventArgs e)
{
Pagination1.PageIndex = 1;
+ this.EquipListSelectDy.SelectedIndex = -1;
GetBaseLocations();
}
-
+ ///
+ /// 获取库位信息
+ ///
private void GetBaseLocations()
{
if (WarehourseId.SelectedItem is WmsBaseWarehouse warehouse)
@@ -559,7 +609,6 @@ namespace Khd.Core.Wpf.Form
return;
}
}
-
/////
///// 查询指令信息
/////
@@ -1550,21 +1599,8 @@ namespace Khd.Core.Wpf.Form
var wcsTask = dbContext.WcsTask.Where(t => t.containerNo == txtOutBox.Text).FirstOrDefault();
if (wcsTask == null)
{
- wmsRawStock.occupyAmount -= outScan;
- wmsRawStock.totalAmount -= outScan;
- if (wmsRawStock.totalAmount == 0)
- {
- dbContext.WmsRawStock.Where(t => t.rawStockId == wmsRawStock.rawStockId).Delete();
- }
- else
- {
- dbContext.WmsRawStock.Update(wmsRawStock);
- dbContext.SaveChanges();
- }
- txtOutScan.Text = string.Empty;
- txtOutBarCode.Text = string.Empty;
- txtOutBarCode.Focus();
- MessageBox.Show("出库成功!");
+ MessageBox.Show("出库失败,非CTU出库任务,无法出库!");
+ return;
}
else
{
@@ -1576,7 +1612,7 @@ namespace Khd.Core.Wpf.Form
{
wmsRawOutstock.executeStatus = "2";
}
- wmsRawStock.occupyAmount -= outScan;
+
wmsRawStock.totalAmount -= outScan;
if (wmsRawStock.totalAmount == 0)
{
@@ -1593,7 +1629,6 @@ namespace Khd.Core.Wpf.Form
}
else
{
- wmsRawStock.occupyAmount -= outScan;
wmsRawStock.totalAmount -= outScan;
if (wmsRawStock.totalAmount == 0)
{
@@ -1694,21 +1729,23 @@ namespace Khd.Core.Wpf.Form
var bills = bill.GroupBy(t => new { t.baseLocationId, t.palletInfoCode, t.locationCode, t.IsSelected })
.Select(t => new
{
- baseLocationId=t.Key.baseLocationId,
+ baseLocationId = t.Key.baseLocationId,
palletInfoCode = t.Key.palletInfoCode,
locationCode = t.Key.locationCode,
IsSelected = t.Key.IsSelected,
totalAmount = string.Join("\n", t.Select(x => x.totalAmount)),
frozenAmount = string.Join("\n", t.Select(x => x.frozenAmount)),
materialId = string.Join("\n", t.Select(x => x.materialId)),
- materialName = string.Join("\n", t.Select(x => x.materialName)),
- materialSpec = string.Join("\n", t.Select(x => x.materialSpec)),
+ materialName = string.Join("\n", t.Select(x => x.materialName[..(x.materialName.Length > 20 ? 20 : x.materialName.Length)])),
+ materialNameSrc = string.Join("\n", t.Select(x => x.materialName)),
+ materialSpec = string.Join("\n", t.Select(x => x.materialSpec[..(x.materialSpec.Length > 20 ? 20 : x.materialSpec.Length)])),
+ materialSpecSrc = string.Join("\n", t.Select(x => x.materialSpec))
}).ToList();
bills = bills.OrderBy(t => t.palletInfoCode).ThenBy(t => t.materialId).ToList();
PersonCallMaterial.ItemsSource = bills.Skip((this.Pagination2.PageIndex - 1) * this.pageCount).Take(this.pageCount);
int sum = bills.Count();
Pagination2.MaxPageCount = (sum / pageCount) + (sum % pageCount == 0 ? 0 : 1);
- if (bills.Count() == 0)
+ if (bills.Count == 0)
{
MessageBox.Show("未查询到数据");
}
@@ -1952,8 +1989,6 @@ namespace Khd.Core.Wpf.Form
{
MessageBox.Show("PLC连接失败!");
}
-
-
}
}
@@ -1962,23 +1997,29 @@ namespace Khd.Core.Wpf.Form
TextBoxGetFocus();
}
+ #region 清除按钮
private void barClear_Click(object sender, RoutedEventArgs e)
{
txtInBarCode.Text = string.Empty;
}
+
private void boxOutClear_Click(object sender, RoutedEventArgs e)
{
txtOutBox.Text = string.Empty;
}
+
private void boxClear_Click(object sender, RoutedEventArgs e)
{
txtInBox.Text = string.Empty;
}
+
private void barOutClear_Click(object sender, RoutedEventArgs e)
{
txtOutBarCode.Text = string.Empty;
}
+ #endregion
+ #region 托盘库进出
private void OneIn_Click(object sender, RoutedEventArgs e)
{
try
@@ -2145,7 +2186,9 @@ namespace Khd.Core.Wpf.Form
LogManager.Error(ex);
}
}
+ #endregion
+ #region 修改托盘库
private void UpdateEmpty_Click(object sender, RoutedEventArgs e)
{
try
@@ -2169,6 +2212,349 @@ namespace Khd.Core.Wpf.Form
catch
{
+ }
+ }
+ #endregion
+
+ private void WindowHidden_Click(object sender, RoutedEventArgs e)
+ {
+ this.WindowState = WindowState.Minimized;
+ }
+
+ private void btnSendTrayToTurnover_Click(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ var baseEquip = SystemData.BaseEquip.First(t => t.objid == 38);
+ var agvEquip = SystemData.BaseEquip.First(t => t.objid == 8);
+ bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == baseEquip.objid || t.currPointId == baseEquip.objid).Any();
+ bool hasTaskManual = dbContext.WcsTaskManual.Where(t => t.endPointId == baseEquip.objid || t.currPointId == baseEquip.objid).Any();
+ if (hasTask || hasTaskManual)
+ {
+ MessageBox.Show("有任务正在执行,请等待任务完成后再执行此操作!");
+ return;
+ }
+ else
+ {
+ var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0);
+ if (endEquip == null)
+ {
+ MessageBox.Show("没有空箱库位!");
+ return;
+ }
+ else
+ {
+ WcsTaskManual task = new()
+ {
+ objid = Global.SnowId.NextId(),
+ taskType = 56,
+ containerNo = "00000000",
+ currPointId = baseEquip.objid,
+ currPointNo = baseEquip.equipNo,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = endEquip.objid,
+ endPointNo = endEquip.equipNo,
+ createTime = DateTime.Now,
+ taskStatus = 0,
+ useFlag = 1,
+ floorNo = 2,
+ fromFloorNo = 2,
+ createBy = "WPF",
+ isEmpty = "0",
+ };
+ dbContext.Add(task);
+ dbContext.SaveChanges();
+ MessageBox.Show("任务生成成功!");
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Error(ex);
+ }
+ }
+
+ private void btnSendEmptyTray_Click(object sender, RoutedEventArgs e)
+ {
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ var baseEquip = SystemData.BaseEquip.First(t => t.objid == 38);
+ var agvEquip = SystemData.BaseEquip.First(t => t.objid == 8);
+ bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == baseEquip.objid || t.currPointId == baseEquip.objid).Any();
+ bool hasTaskManual = dbContext.WcsTaskManual.Where(t => t.endPointId == baseEquip.objid || t.currPointId == baseEquip.objid).Any();
+ if (hasTask || hasTaskManual)
+ {
+ MessageBox.Show("有任务正在执行,请等待任务完成后再执行此操作!");
+ return;
+ }
+ else
+ {
+ var startEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 1 && t.emptyCount == 1);
+ if (startEquip == null)
+ {
+ BaseEquip firstEmptyEquip = dbContext.BaseEquip.First(t => t.objid == 40);
+ if (firstEmptyEquip.emptyCount > 0)
+ {
+ MessageBoxResult messageBoxResult = MessageBox.Show("二楼未找到一个托盘的库位,是否从一楼调取?", "提示", MessageBoxButton.OKCancel);
+ if (messageBoxResult == MessageBoxResult.OK)
+ {
+ if (ReadEmptyLocation())
+ {
+ BasePlcpoint oneOutPoint = SystemData.BasePlcpoints.First(t => t.plcpointNo == "oneOut");
+ SystemData.PlcDic[0].WriteToPoint(oneOutPoint.plcpointAddress, "1", oneOutPoint.plcpointLength.ToString());
+ firstEmptyEquip.emptyCount -= 1;
+ dbContext.Update(firstEmptyEquip);
+ dbContext.SaveChanges();
+ MessageBox.Show("下发成功");
+ }
+ else
+ {
+ MessageBox.Show("一楼托盘库忙碌中,请稍后再试!");
+ }
+ }
+ }
+ else
+ {
+ MessageBox.Show("未找到一个托盘的库位");
+ return;
+ }
+ }
+ else
+ {
+ WcsTaskManual task = new()
+ {
+ objid = Global.SnowId.NextId(),
+ taskType = 56,
+ containerNo = "0",
+ currPointId = startEquip.objid,
+ currPointNo = startEquip.equipNo,
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.equipNo,
+ endPointId = baseEquip.objid,
+ endPointNo = baseEquip.equipNo,
+ createTime = DateTime.Now,
+ taskStatus = 0,
+ useFlag = 1,
+ floorNo = 2,
+ fromFloorNo = 2,
+ createBy = "WPF",
+ isEmpty = "0",
+ };
+ dbContext.Add(task);
+ dbContext.SaveChanges();
+ MessageBox.Show("任务生成成功!");
+ }
+ }
+ }
+
+ ///
+ /// 读取一楼托盘库位是否空闲
+ ///
+ ///
+ private bool ReadEmptyLocation()
+ {
+ var oneOutPoint = SystemData.BasePlcpoints.First(t => t.plcpointNo == "oneOut");
+ var someOutPoint = SystemData.BasePlcpoints.First(t => t.plcpointNo == "someOut");
+ var oneInPoint = SystemData.BasePlcpoints.First(t => t.plcpointNo == "oneIn");
+ var someInPoint = SystemData.BasePlcpoints.First(t => t.plcpointNo == "someIn");
+ var oneOutValue = SystemData.PlcDic[0].Read(oneOutPoint.plcpointAddress);
+ var someOutValue = SystemData.PlcDic[0].Read(someOutPoint.plcpointAddress);
+ var oneInValue = SystemData.PlcDic[0].Read(oneInPoint.plcpointAddress);
+ var someInValue = SystemData.PlcDic[0].Read(someInPoint.plcpointAddress);
+ if (oneOutValue != null && someOutValue != null && oneInValue != null && someInValue != null)
+ {
+ if (Convert.ToInt32(oneOutValue) == 0 && Convert.ToInt32(someOutValue) == 0 && Convert.ToInt32(oneInValue) == 0 && Convert.ToInt32(someInValue) == 0)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void clearLocation_Click(object sender, RoutedEventArgs e)
+ {
+ if (this.EmptyEquip.SelectedItem is BaseEquip equip)
+ {
+ MessageBoxResult messageBoxResult = MessageBox.Show($"是否清除{equip.equipName}的托盘信息?", "提示", MessageBoxButton.OKCancel);
+ if (messageBoxResult == MessageBoxResult.OK)
+ {
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == equip.objid);
+ baseEquip.emptyCount = 0;
+ baseEquip.equipStatus = 0;
+ dbContext.Update(baseEquip);
+ dbContext.SaveChanges();
+ MessageBox.Show("清除成功");
+ }
+ }
+ }
+
+ private void outLocation_Click(object sender, RoutedEventArgs e)
+ {
+ if (this.EmptyEquip.SelectedItem is BaseEquip equip)
+ {
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == equip.objid);
+ if (baseEquip.emptyCount > 0)
+ {
+ FloorForm floorForm = new FloorForm(new List() { 1, 3 });
+ floorForm.ShowDialog();
+ if (FloorForm.SelecetedFloorNo != 0)
+ {
+ //WcsTaskManual task = new()
+ //{
+ // objid = Global.SnowId.NextId(),
+ // taskType = 56,
+ // containerNo = "00000000",
+ // currPointId = baseEquip.objid,
+ // currPointNo = baseEquip.equipNo,
+ //};
+ }
+ MessageBox.Show("下发成功");
+ }
+ else
+ {
+ MessageBox.Show("库位已空!");
+ }
+ }
+ }
+
+ ///
+ /// 任务完成
+ ///
+ ///
+ ///
+ private void taskCompeleted_Click(object sender, RoutedEventArgs e)
+ {
+
+ }
+
+ private void querenruku_Click(object sender, RoutedEventArgs e)
+ {
+ if (!string.IsNullOrEmpty(this.firstRFID.Text))
+ {
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 1);
+ baseEquip.containerNo = "0";
+ dbContext.Update(baseEquip);
+ dbContext.SaveChanges();
+ MessageBox.Show("确认入库成功!");
+ }
+ else
+ {
+ MessageBox.Show("未扫描到RFID!");
+ }
+ }
+
+ ///
+ /// 删除用户
+ ///
+ ///
+ ///
+ private void deleteUser(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ if (UserData.SelectedItem is SysUser user)
+ {
+ if (user.OBJID == 1)
+ {
+ MessageBox.Show("不能删除根用户!");
+ return;
+ }
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ dbContext.SysUser.Remove(user);
+ dbContext.SaveChanges();
+ MessageBox.Show("删除成功!");
+ GetMenu();
+ }
+ }
+ catch
+ {
+
+ }
+ }
+
+ ///
+ /// 搜索
+ ///
+ ///
+ ///
+ private void SelectUser_Click(object sender, RoutedEventArgs e)
+ {
+ GetUser();
+ }
+
+ private void GetUser()
+ {
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ UserData.ItemsSource = dbContext.SysUser.WhereIf(!string.IsNullOrEmpty(LoginName.Text), t => t.UserName.Contains(LoginName.Text)).ToList();
+ }
+
+ ///
+ /// 添加用户
+ ///
+ ///
+ ///
+ private void AddUser_Click(object sender, RoutedEventArgs e)
+ {
+
+ }
+
+ private void GetMenu()
+ {
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ var sysMenus = dbContext.SysMenu.Where(t => t.MenuVisble == 1).ToList();
+ var sysRoles = dbContext.SysRole.Where(t => t.UserId == UserId).ToList();
+ List roleIds = sysRoles.Select(t => t.RoleId).ToList();
+ foreach (var menu in sysMenus)
+ {
+ if (FindName(menu.MenuName) is TabItem tabItem)
+ {
+ if (roleIds.Contains(menu.OBJID))
+ {
+ tabItem.Visibility = Visibility.Visible;
+ }
+ else
+ {
+ tabItem.Visibility = Visibility.Collapsed;
+ }
+ }
+ }
+ if (sysRoles.Count() == 0)
+ {
+ TabControl.SelectedIndex = 0;
+ }
+ }
+
+ private void SelectUserRole(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ if (UserData.SelectedItem is SysUser user)
+ {
+ //if (user.OBJID == 1)
+ //{
+ // MessageBox.Show("不能修改根用户!");
+ // return;
+ //}
+ MenuList menuList = new MenuList(_host, user.OBJID);
+ menuList.ShowDialog();
+ GetMenu();
+ }
+ }
+ catch
+ {
+
}
}
}
diff --git a/src/Khd.Core.Wpf/HttpHelper.cs b/src/Khd.Core.Wpf/HttpHelper.cs
index 294d63e..3200435 100644
--- a/src/Khd.Core.Wpf/HttpHelper.cs
+++ b/src/Khd.Core.Wpf/HttpHelper.cs
@@ -9,7 +9,7 @@ namespace Khd.Core.Wpf
public class HttpHelper
{
- public static string SendPostMessage(string ip, int port, string url, string message,string contentType="application/Text")
+ public static string SendPostMessage(string ip, int port, string url, string message, string contentType = "application/Text")
{
string retsult = HttpPost("http://" + ip + ":" + port + "/" + url, message, contentType, 30, null);
return retsult;
diff --git a/src/Khd.Core.Wpf/Scan/SerialPortHelper.cs b/src/Khd.Core.Wpf/Scan/SerialPortHelper.cs
index 8b96168..5377e57 100644
--- a/src/Khd.Core.Wpf/Scan/SerialPortHelper.cs
+++ b/src/Khd.Core.Wpf/Scan/SerialPortHelper.cs
@@ -1,12 +1,7 @@
using Masuit.Tools.Logging;
using System;
-using System.Collections.Generic;
using System.IO.Ports;
-using System.Linq;
using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Threading;
namespace Khd.Core.Wpf.Scan
{
@@ -78,17 +73,17 @@ namespace Khd.Core.Wpf.Scan
ReceiveData += Encoding.UTF8.GetString(result);
if (ReceiveData.Contains('\r'))
{
- message = ReceiveData.Replace("\r","").Trim();
+ message = ReceiveData.Replace("\r", "").Trim();
SystemData.message = message;
ReceiveData = "";
}
SystemData.isUpdate = true;
}
- catch(Exception ex)
+ catch (Exception ex)
{
LogManager.Error(ex);
}
-
+
}
///
diff --git a/src/Khd.Core.Wpf/SystemData.cs b/src/Khd.Core.Wpf/SystemData.cs
index 12b4ce8..bf25218 100644
--- a/src/Khd.Core.Wpf/SystemData.cs
+++ b/src/Khd.Core.Wpf/SystemData.cs
@@ -1,9 +1,5 @@
using Khd.Core.Domain.Models;
-using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using System.Windows.Media;
namespace Khd.Core.Wpf
@@ -83,10 +79,10 @@ namespace Khd.Core.Wpf
public static List BasePlcpoints { get; set; }
public static List BaseEquip { get; internal set; }
public static List BaseWareHouse { get; internal set; }
- public static List MesBaseMaterialInfo { get; set; }
+ public static List MesBaseMaterialInfo { get; set; }
- public static List BaseDictionary =new List();
- public static List PlcConfigs =new List();
- public static Dictionary PlcDic=new Dictionary();
+ public static List BaseDictionary = new List();
+ public static List PlcConfigs = new List();
+ public static Dictionary PlcDic = new Dictionary();
}
}
diff --git a/src/Khd.Core.Wpf/TaskForm/AddTask.xaml.cs b/src/Khd.Core.Wpf/TaskForm/AddTask.xaml.cs
index dbf8e2f..02ddeaf 100644
--- a/src/Khd.Core.Wpf/TaskForm/AddTask.xaml.cs
+++ b/src/Khd.Core.Wpf/TaskForm/AddTask.xaml.cs
@@ -82,18 +82,17 @@ namespace Khd.Core.Wpf.TaskForm
if (!string.IsNullOrEmpty(rfid))
{
- WcsTask? task = dbContext.WcsTask.FirstOrDefault(t => t.containerNo == rfid);
- if (task == null)
+ MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == rfid).FirstOrDefault();
+ if (mesBasePalletInfo != null)
{
- if (endEquip.equipType == 1)//入库
+ WcsTask? task = dbContext.WcsTask.FirstOrDefault(t => t.containerNo == rfid);
+ if (task == null)
{
BaseEquip baseEquip = baseEquips.First(t => t.equipType == 2);//提升机
WcsTask wcsTask = new()
{
objid = FormBoardT._jcSnowId.NextId(),
taskType = 99,
- startPointId = startEquip.Id,
- startPointNo = startEquip.equipNo,
currPointId = startEquip.Id,
currPointNo = startEquip.equipNo,
nextPointId = baseEquip.objid,
@@ -102,51 +101,29 @@ namespace Khd.Core.Wpf.TaskForm
endPointNo = endEquip.equipNo,
fromFloorNo = startEquip.floorNo,
floorNo = endEquip.floorNo,
- taskStatus = -1,
+ materialBarcode = mesBasePalletInfo.materialBarcode,
+ materialId = mesBasePalletInfo.materialId,
+ taskStatus = 0,
createBy = "人工",
createTime = DateTime.Now,
equipmentNo = startEquip.equipNo,
- useFlag = 1,
- isEmpty = EmptyCount.SelectedItem.ToString()
+ useFlag = 0,
+ qty = Convert.ToInt32(EmptyCount.SelectedItem),
+ isEmpty = "1"
};
- WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
dbContext.Add(wcsTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
}
- else if (endEquip.equipType == 15)//空托盘到三楼
+ else
{
- BaseEquip baseEquip = baseEquips.First(t => t.equipType == 2);//提升机
- WcsTask wcsTask = new()
- {
- objid = FormBoardT._jcSnowId.NextId(),
- taskType = 99,
- startPointId = startEquip.Id,
- startPointNo = startEquip.equipNo,
- currPointId = startEquip.Id,
- currPointNo = startEquip.equipNo,
- nextPointId = baseEquip.objid,
- nextPointNo = baseEquip.equipNo,
- endPointId = endEquip.Id,
- endPointNo = endEquip.equipNo,
- fromFloorNo = startEquip.floorNo,
- floorNo = endEquip.floorNo,
- taskStatus = -1,
- createBy = "人工",
- createTime = DateTime.Now,
- equipmentNo = startEquip.equipNo,
- useFlag = 1,
- isEmpty = EmptyCount.SelectedItem.ToString()
- };
- WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
- dbContext.Add(wcsTask);
- dbContext.Add(wcsTaskLog);
- dbContext.SaveChanges();
+ MessageBox.Show("该RFID的任务已经存在!");
}
}
else
{
- MessageBox.Show("该RFID的任务已经存在!");
+ MessageBox.Show("未找到该托盘信息!");
}
}
else
diff --git a/src/Khd.Core.Wpf/TaskForm/EmptyCountForm.xaml b/src/Khd.Core.Wpf/TaskForm/EmptyCountForm.xaml
index 1db0a49..2f25711 100644
--- a/src/Khd.Core.Wpf/TaskForm/EmptyCountForm.xaml
+++ b/src/Khd.Core.Wpf/TaskForm/EmptyCountForm.xaml
@@ -6,7 +6,7 @@
xmlns:local="clr-namespace:Khd.Core.Wpf.TaskForm"
mc:Ignorable="d"
WindowStartupLocation="CenterScreen"
- Background="#333333"
+ Background="#333333"
Height="450" Width="800">
diff --git a/src/Khd.Core.Wpf/TaskForm/EmptyCountForm.xaml.cs b/src/Khd.Core.Wpf/TaskForm/EmptyCountForm.xaml.cs
index 8f86ed6..627f62b 100644
--- a/src/Khd.Core.Wpf/TaskForm/EmptyCountForm.xaml.cs
+++ b/src/Khd.Core.Wpf/TaskForm/EmptyCountForm.xaml.cs
@@ -1,16 +1,6 @@
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 Khd.Core.Wpf.TaskForm
{
@@ -21,11 +11,11 @@ namespace Khd.Core.Wpf.TaskForm
{
public static int EmptyTaskCount = 0;
public static bool IsSelect = false;
- public EmptyCountForm(int min,int max)
+ public EmptyCountForm(int min, int max)
{
InitializeComponent();
List ints = new List();
- for(int i = min; i<= max; i++)
+ for (int i = min; i <= max; i++)
{
ints.Add(i);
}
diff --git a/src/Khd.Core.Wpf/TaskForm/FloorForm.xaml b/src/Khd.Core.Wpf/TaskForm/FloorForm.xaml
new file mode 100644
index 0000000..05baa57
--- /dev/null
+++ b/src/Khd.Core.Wpf/TaskForm/FloorForm.xaml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Khd.Core.Wpf/TaskForm/FloorForm.xaml.cs b/src/Khd.Core.Wpf/TaskForm/FloorForm.xaml.cs
new file mode 100644
index 0000000..4b93502
--- /dev/null
+++ b/src/Khd.Core.Wpf/TaskForm/FloorForm.xaml.cs
@@ -0,0 +1,32 @@
+using System.Collections.Generic;
+using System.Windows;
+
+namespace Khd.Core.Wpf.TaskForm
+{
+ ///
+ /// FloorForm.xaml 的交互逻辑
+ ///
+ public partial class FloorForm : Window
+ {
+ public static int SelecetedFloorNo = 0;
+
+ public FloorForm(List floorList)
+ {
+ InitializeComponent();
+ this.FloorNo.ItemsSource = floorList;
+ this.FloorNo.SelectedIndex = 0;
+ SelecetedFloorNo = 0;
+ }
+
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ SelecetedFloorNo = (int)FloorNo.SelectedItem;
+ this.Close();
+ }
+
+ private void Button_Click_1(object sender, RoutedEventArgs e)
+ {
+ this.Close();
+ }
+ }
+}
diff --git a/src/Khd.Core.Wpf/TaskForm/MenuList.xaml b/src/Khd.Core.Wpf/TaskForm/MenuList.xaml
new file mode 100644
index 0000000..2790f4a
--- /dev/null
+++ b/src/Khd.Core.Wpf/TaskForm/MenuList.xaml
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Khd.Core.Wpf/TaskForm/MenuList.xaml.cs b/src/Khd.Core.Wpf/TaskForm/MenuList.xaml.cs
new file mode 100644
index 0000000..b448f08
--- /dev/null
+++ b/src/Khd.Core.Wpf/TaskForm/MenuList.xaml.cs
@@ -0,0 +1,101 @@
+using Khd.Core.Domain.Auth;
+using Khd.Core.EntityFramework;
+using Khd.Core.Library.Mapper;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace Khd.Core.Wpf.TaskForm
+{
+ ///
+ /// MenuList.xaml 的交互逻辑
+ ///
+ public partial class MenuList : Window
+ {
+ public List MenuListDatas = new List();
+ private readonly long? _userId;
+ private readonly IHost _host;
+ public MenuList(IHost host, long? userId)
+ {
+ InitializeComponent();
+ _host = host;
+ _userId = userId;
+ }
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ using var scope = this._host.Services.CreateScope();
+ var dbContext = scope.ServiceProvider.GetRequiredService();
+ var sysMenus = dbContext.SysMenu.Where(t => t.MenuVisble == 1).ToList();
+ var sysRoles = dbContext.SysRole.Where(t => t.UserId == _userId).ToList();
+ MenuListDatas = CoreMapper.Map>(sysMenus);
+ MenuListDatas.ForEach(t =>
+ {
+ t.IsSeleted = sysRoles.Any(r => r.RoleId == t.OBJID);
+ });
+ this.MenuListData.ItemsSource = MenuListDatas;
+ }
+ catch
+ {
+ MessageBox.Show("加载菜单列表失败");
+ this.Close();
+ }
+ }
+
+ private void CheckBox_Click(object sender, RoutedEventArgs e)
+ {
+ if (sender is CheckBox checkBox && this.MenuListData.SelectedItem is MenuListData menuListData)
+ {
+ MenuListData data = MenuListDatas.Where(t => t.OBJID == menuListData.OBJID).First();
+ data.IsSeleted = checkBox.IsChecked ?? false;
+ }
+ }
+
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ using var scope = this._host.Services.CreateScope();
+ var dbContext = scope.ServiceProvider.GetRequiredService();
+ var sysRoles = dbContext.SysRole.Where(t => t.UserId == _userId).ToList();
+ dbContext.RemoveRange(sysRoles);
+ List menuListDatas = MenuListDatas.Where(t => t.IsSeleted).ToList();
+ List sysRolesToAdd = new List();
+ foreach (var item in menuListDatas)
+ {
+ sysRolesToAdd.Add(new SysRole
+ {
+ OBJID = Global.SnowId.NextId(),
+ RoleId = item.OBJID,
+ UserId = _userId,
+ });
+ }
+ dbContext.AddRange(sysRolesToAdd);
+ dbContext.SaveChanges();
+ MessageBox.Show("保存成功");
+ this.Close();
+ }
+ catch
+ {
+
+ }
+ }
+
+ private void Button1_Click(object sender, RoutedEventArgs e)
+ {
+ this.Close();
+ }
+ }
+
+ public class MenuListData
+ {
+ public long OBJID { get; set; }
+ public string MenuName { get; set; }
+ public bool IsSeleted { get; set; }
+ }
+}
diff --git a/src/Khd.Core.Wpf/TaskForm/RawMessageShow.xaml b/src/Khd.Core.Wpf/TaskForm/RawMessageShow.xaml
new file mode 100644
index 0000000..74d80c1
--- /dev/null
+++ b/src/Khd.Core.Wpf/TaskForm/RawMessageShow.xaml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Khd.Core.Wpf/TaskForm/RawMessageShow.xaml.cs b/src/Khd.Core.Wpf/TaskForm/RawMessageShow.xaml.cs
new file mode 100644
index 0000000..e4f8711
--- /dev/null
+++ b/src/Khd.Core.Wpf/TaskForm/RawMessageShow.xaml.cs
@@ -0,0 +1,45 @@
+using Khd.Core.EntityFramework;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using System.Linq;
+using System.Windows;
+
+namespace Khd.Core.Wpf.TaskForm
+{
+ ///
+ /// RawMessageShow.xaml 的交互逻辑
+ ///
+ public partial class RawMessageShow : Window
+ {
+ private IHost host;
+ private string locationCode;
+ public RawMessageShow(IHost host, string locationCode)
+ {
+ InitializeComponent();
+ this.locationCode = locationCode;
+ this.host = host;
+ }
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ using var scope = host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ var wmsRawStocks = dbContext.WmsRawStock
+ .Where(t => t.locationCode == this.locationCode)
+ .GroupBy(t => t.locationCode)
+ .Select(t => new
+ {
+
+ })
+ .ToList();
+
+ }
+ catch
+ {
+
+ }
+ }
+ }
+}
diff --git a/src/Khd.Core.Wpf/dto/taskModel.cs b/src/Khd.Core.Wpf/dto/taskModel.cs
new file mode 100644
index 0000000..fe9c6ca
--- /dev/null
+++ b/src/Khd.Core.Wpf/dto/taskModel.cs
@@ -0,0 +1,70 @@
+using System;
+using System.Windows;
+
+namespace Khd.Core.Wpf.dto
+{
+ public class taskModel
+ {
+ public int? fromFloorNo { get; set; }
+
+
+ public long objid { get; set; }
+
+ public long? masterId { get; set; }
+
+ public long? orderId { get; set; }
+
+ public long? serialNo { get; set; }
+
+ public string equipmentNo { get; set; }
+
+ public string containerNo { get; set; }
+
+ public int? taskType { get; set; }
+
+ public int? taskStatus { get; set; }
+
+ public long? materialId { get; set; }
+
+ public string? materialNo { get; set; }
+
+ public int? qty { get; set; }
+
+ public string currPointNo { get; set; }
+
+ public long? currPointId { get; set; }
+
+ public long? nextPointId { get; set; }
+
+ public string nextPointNo { get; set; }
+
+ public string endPointNo { get; set; }
+
+ public long? endPointId { get; set; }
+
+ public int? floorNo { get; set; }
+
+ public int? useFlag { get; set; }
+
+ public string createBy { get; set; }
+
+ public DateTime? createTime { get; set; }
+
+ public string updateBy { get; set; }
+
+ public DateTime? updateTime { get; set; }
+
+ public string CTUExecute { get; set; }
+
+ public string isEmpty { get; set; }
+
+ public string ud3 { get; set; }
+
+ public int? ud1 { get; set; }
+
+ public string ud2 { get; set; }
+
+ public string remark { get; set; }
+ public Visibility isShow { get; set; }
+ }
+}
diff --git a/src/Khd.Core.Wpf/myConverter/AgvTaskStatusConverter.cs b/src/Khd.Core.Wpf/myConverter/AgvTaskStatusConverter.cs
index 0a03611..c13b20e 100644
--- a/src/Khd.Core.Wpf/myConverter/AgvTaskStatusConverter.cs
+++ b/src/Khd.Core.Wpf/myConverter/AgvTaskStatusConverter.cs
@@ -3,8 +3,6 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
@@ -39,7 +37,7 @@ namespace Khd.Core.Wpf.myConverter
{3,"已到达起始地" },
{4,"起始地继续任务" },
{5,"已到达目的地" },
- {6,"任务结束" }
+ {6,"任务结束" }
}
},
{
@@ -87,10 +85,10 @@ namespace Khd.Core.Wpf.myConverter
WcsTask? wcsTask = value as WcsTask;
if (wcsTask != null)
{
- BaseEquip baseEquip = SystemData.BaseEquip.First(t=>t.objid==wcsTask.nextPointId);
+ BaseEquip baseEquip = SystemData.BaseEquip.First(t => t.objid == wcsTask.nextPointId);
if (dic.TryGetValue(baseEquip.equipType, out var taskStatusDic))
{
- if(taskStatusDic.TryGetValue(wcsTask.taskStatus,out var taskStatus))
+ if (taskStatusDic.TryGetValue(wcsTask.taskStatus, out var taskStatus))
{
return taskStatus;
}
diff --git a/src/Khd.Core.Wpf/myConverter/CtuTaskStatusConverter.cs b/src/Khd.Core.Wpf/myConverter/CtuTaskStatusConverter.cs
index 4caa037..5abca91 100644
--- a/src/Khd.Core.Wpf/myConverter/CtuTaskStatusConverter.cs
+++ b/src/Khd.Core.Wpf/myConverter/CtuTaskStatusConverter.cs
@@ -1,12 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Data;
-
-namespace Khd.Core.Wpf.myConverter
+namespace Khd.Core.Wpf.myConverter
{
//public class CtuTaskStatusConverter : IValueConverter
//{
diff --git a/src/Khd.Core.Wpf/myConverter/EquipConverter.cs b/src/Khd.Core.Wpf/myConverter/EquipConverter.cs
index 85625e3..8b0aa68 100644
--- a/src/Khd.Core.Wpf/myConverter/EquipConverter.cs
+++ b/src/Khd.Core.Wpf/myConverter/EquipConverter.cs
@@ -1,9 +1,6 @@
using System;
-using System.Collections.Generic;
using System.Globalization;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using System.Windows.Data;
namespace Khd.Core.Wpf.myConverter
diff --git a/src/Khd.Core.Wpf/myConverter/HoisterTaskStatusConverter.cs b/src/Khd.Core.Wpf/myConverter/HoisterTaskStatusConverter.cs
index 003a858..e4f39a0 100644
--- a/src/Khd.Core.Wpf/myConverter/HoisterTaskStatusConverter.cs
+++ b/src/Khd.Core.Wpf/myConverter/HoisterTaskStatusConverter.cs
@@ -1,9 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using System.Windows.Data;
namespace Khd.Core.Wpf.myConverter
diff --git a/src/Khd.Core.Wpf/myConverter/TypeDataConverter.cs b/src/Khd.Core.Wpf/myConverter/TypeDataConverter.cs
index 5f73df9..4a79165 100644
--- a/src/Khd.Core.Wpf/myConverter/TypeDataConverter.cs
+++ b/src/Khd.Core.Wpf/myConverter/TypeDataConverter.cs
@@ -1,9 +1,6 @@
using System;
-using System.Collections.Generic;
using System.Globalization;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using System.Windows.Data;
namespace Khd.Core.Wpf.myConverter