From bfcd7f5b405e431a5c07fe3fa77d74c892d4e66b Mon Sep 17 00:00:00 2001
From: xiazhengtongxue <133085197+xiazhengtongxue@users.noreply.github.com>
Date: 星期四, 19 三月 2026 15:52:42 +0800
Subject: [PATCH] fix: 修复出入库冲突拦截,系统位置与实际位置的映射和修复
---
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 690 +++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 591 insertions(+), 99 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index 2e16a0f..c5d251a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -15,9 +15,13 @@
*----------------------------------------------------------------*/
#endregion << 鐗� 鏈� 娉� 閲� >>
+using Autofac.Core;
using AutoMapper;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Org.BouncyCastle.Math.EC;
+using SixLabors.ImageSharp;
using SqlSugar;
using System.ComponentModel;
using System.Net;
@@ -25,6 +29,7 @@
using System.Reflection.Emit;
using System.Threading.Tasks;
using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.Log;
using WIDESEA_Common.OtherEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Common.TaskEnum;
@@ -33,6 +38,7 @@
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
using WIDESEA_DTO.Inbound;
using WIDESEA_DTO.Task;
using WIDESEA_IBasicService;
@@ -54,6 +60,7 @@
private readonly ILocationInfoService _locationInfoService;
private readonly IWarehouseService _warehouseService;
private readonly IRoadWayinfoService _roadWayinfoService;
+ private readonly ITask_HtyService _task_HtyService;
private Timer _timer;
public IRepository<Dt_Task> Repository => BaseDal;
@@ -68,7 +75,7 @@
public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList();
public TaskService(ILogger<TaskService> logger, IRepository<Dt_Task> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockInfoService stockInfoService, ILocationInfoService locationInfoService,
- IWarehouseService warehouseService, IRoadWayinfoService roadWayinfoService) : base(BaseDal)
+ IWarehouseService warehouseService, IRoadWayinfoService roadWayinfoService, ITask_HtyService task_HtyService) : base(BaseDal)
{
_logger = logger;
_mapper = mapper;
@@ -76,8 +83,8 @@
_stockInfoService = stockInfoService;
_locationInfoService = locationInfoService;
_warehouseService = warehouseService;
- _roadWayinfoService=roadWayinfoService;
-
+ _roadWayinfoService = roadWayinfoService;
+ _task_HtyService = task_HtyService;
}
public string MES_InReporttask = WIDESEA_Core.Helper.AppSettings.Configuration["MES_InReporttask"]; //鍏ュ簱鍙嶉淇℃伅
public string MES_OutReporttask = WIDESEA_Core.Helper.AppSettings.Configuration["MES_OutReporttask"]; //鍑哄簱鍙嶉淇℃伅
@@ -88,31 +95,126 @@
public string WCS_SendStackerTask = WIDESEA_Core.Helper.AppSettings.Configuration["WCS_SendStackerTask"]; //鍫嗗灈鏈轰换鍔′笅鍙�
+ public WebResponseContent CESTEXT()
+ {
+
+ return WebResponseContent.Instance.OK();
+ }
+ //鎵嬪姩锛屼换鍔′笂鎶�
+ #region
+ public WebResponseContent MESManualUpload(SaveModel saveModel)
+ {
+ WebResponseContent response = new WebResponseContent();
+
+ List<Dt_Task> stdata=new List<Dt_Task>();
+ try
+ {
+ foreach (var key in saveModel.DelKeys)
+ {
+ int taskId = int.Parse(key.ToString());
+ Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == taskId);
+
+ WebResponseContent taskResult = ProcessTask(task);
+ if (!taskResult.Status)
+ {
+ WriteLog.Write_Log("WMS_鎵嬪姩涓婃姤浠诲姟", $"浠诲姟涓婃姤", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode},", $"鍘熷洜锛歿taskResult.Message}");
+ return taskResult;
+ }
+ stdata.Add(task);
+ }
+ WriteLog.Write_Log("WMS_鎵嬪姩涓婃姤浠诲姟", $"浠诲姟涓婃姤", $"鎴愬姛", $"涓婃姤鐨勬暟鎹細{stdata.ToJson()}");
+ return response.OK("鎵�鏈変换鍔″鐞嗘垚鍔�");
+ }
+ catch (Exception ex)
+ {
+ WriteLog.Write_Log("WMS_鎵嬪姩涓婃姤浠诲姟", $"浠诲姟涓婃姤", $"澶辫触", $"WMS浠诲姟瀹屾垚閿欒锛歿ex.Message}");
+ return response.Error($"WMS浠诲姟瀹屾垚閿欒锛歿ex.Message}");
+ }
+ }
+
+ private WebResponseContent ProcessTask(Dt_Task task)
+ {
+ WebResponseContent response = new WebResponseContent();
+
+ switch ((TaskTypeEnum)task.TaskType)
+ {
+ case TaskTypeEnum.Inbound:
+ if (task.TaskStatus != (int)InTaskStatusEnum.InPLCException &&
+ task.TaskStatus != (int)InTaskStatusEnum.InSCException)
+ {
+ return response.Error($"浠诲姟绫诲瀷閿欒锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ }
+ return HandleInboundTask(task,
+ GetWcsType(task.TaskStatus,
+ (int)InTaskStatusEnum.InPLCException,
+ (int)InTaskStatusEnum.InSCException)
+ );
+
+ case TaskTypeEnum.Outbound:
+ if (task.TaskStatus != (int)OutTaskStatusEnum.OutPLCException &&
+ task.TaskStatus != (int)OutTaskStatusEnum.OutSCException)
+ {
+ return response.Error($"浠诲姟绫诲瀷閿欒锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ }
+ return HandleOutboundTask(task, GetWcsType(task.TaskStatus,
+ (int)OutTaskStatusEnum.OutPLCException,
+ (int)OutTaskStatusEnum.OutSCException));
+
+ case TaskTypeEnum.Relocation:
+ return HandleRelocationTask(task, 2);
+
+ default:
+ return response.Error($"浠诲姟绫诲瀷閿欒锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode},绫诲瀷锛歿task.TaskType}");
+ }
+ }
+
+ private int GetWcsType(int taskStatus, int plcStatus, int scStatus)
+ {
+ if (taskStatus == plcStatus) return 1;
+ if (taskStatus == scStatus) return 2;
+ return 0;
+ }
+
+ #endregion
/// <summary>
/// 浠诲姟瀹屾垚鎺ュ彛
/// </summary>
/// <param name="wCSTask"></param>
/// <returns></returns>
+
+ #region 浠诲姟瀹屾垚
public WebResponseContent TaskCompleted(WCSTaskDTO wCSTask)
{
- WebResponseContent webResponse= new WebResponseContent();
+ WebResponseContent webResponse = new WebResponseContent();
try
{
Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == wCSTask.TaskNum && x.PalletCode == wCSTask.PalletCode);
if (task == null)
- return webResponse.Error("鏈壘鍒颁换鍔′俊鎭�");
+ return webResponse.Error("鏈壘鍒颁换鍔′俊鎭�", 404);
+ return TaskCompletedtask(task, wCSTask.TaskType);
+ }
+ catch (Exception ex)
+ {
+ return webResponse.Error($"WMS浠诲姟瀹屾垚閿欒锛歿ex.Message}");
+ }
+ }
+ public WebResponseContent TaskCompletedtask(Dt_Task task, int wcstype)
+ {
+ WebResponseContent webResponse = new WebResponseContent();
+ try
+ {
switch ((TaskTypeEnum)task.TaskType)
{
case TaskTypeEnum.Inbound:
- return HandleInboundTask(task, wCSTask.TaskType);
+ return HandleInboundTask(task, wcstype);
case TaskTypeEnum.Outbound:
- return HandleOutboundTask(task, wCSTask.TaskType);
+ return HandleOutboundTask(task, wcstype);
case TaskTypeEnum.Relocation:
- return HandleRelocationTask(task, wCSTask.TaskType);
+ return HandleRelocationTask(task, wcstype);
default:
return webResponse.Error($"浠诲姟绫诲瀷閿欒锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode},绫诲瀷锛歿task.TaskType}");
}
@@ -123,6 +225,8 @@
}
}
+
+
private WebResponseContent HandleInboundTask(Dt_Task task, int wcsTaskType)
{
WebResponseContent content = new WebResponseContent();
@@ -131,97 +235,163 @@
switch (wcsTaskType)
{
case 1:
-
- if(task.TargetAddress == "")
+
+ if (string.IsNullOrEmpty(task.TargetAddress))
{
- int loctype = 0;
- if (task.Roadway == "1" || task.Roadway == "2")
+ if (task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting || task.TaskStatus == (int)InTaskStatusEnum.InPLCException)
{
- if (task.PalletType == "1") loctype = (int)LocationTypeEnum.SmallPallet;
- else if (task.PalletType == "2") loctype = (int)LocationTypeEnum.MediumPallet;
+ int loctype = 0;
+ if (task.Roadway == "1" || task.Roadway == "2")
+ {
+ if (task.PalletType == "1") loctype = (int)LocationTypeEnum.SmallPallet;
+ else if (task.PalletType == "2") loctype = (int)LocationTypeEnum.MediumPallet;
+ }
+ else
+ {
+ loctype = (int)LocationTypeEnum.LargePallet;
+ }
+
+ //鏌ユ壘璐т綅锛屾洿鏂颁换鍔�
+ Dt_LocationInfo dt_Location = _locationInfoService.GetLocation(task.Roadway, loctype);
+ if (dt_Location == null)
+ {
+ WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"鏈壘鍒拌璐т綅淇℃伅,鎵樼洏缂栧彿锛歿task.PalletCode}");
+ return content.Error($"鏈壘鍒拌璐т綅淇℃伅,鎵樼洏缂栧彿锛歿task.PalletCode}");
+ }
+ Dt_LocationInfo ShallowCargoHold = _locationInfoService.ShallowGetLocation(dt_Location.RoadwayNo, dt_Location.LocationType, dt_Location.Row, dt_Location.Layer, dt_Location.Column);
+ if (ShallowCargoHold == null)
+ {
+ WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"鏈壘鍒拌璐т綅淇℃伅,璐т綅缂栧彿:{dt_Location.LocationCode}鐨勬祬璐т綅");
+ return content.Error($"鏈壘鍒拌璐т綅淇℃伅,璐т綅缂栧彿:{dt_Location.LocationCode}鐨勬祬璐т綅");
+ }
+ if (ShallowCargoHold.LocationStatus != (int)LocationStatusEnum.Free) return content.Error($"浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode},鏌ユ壘鐨勮揣浣嶆祬璐т綅鏈夎揣锛岃揣浣嶇紪鍙凤細{ShallowCargoHold.LocationCode}");
+
+ if (task.PalletCode[0] == 1 && (dt_Location.RoadwayNo == "1" || dt_Location.RoadwayNo == "2") && dt_Location.Column < 4)
+ {
+ WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"澶辫触,鎵樼洏鏉$爜锛歿task.PalletCode},璐т綅缂栧彿:{dt_Location.LocationCode}", $"鏉$爜涓洪珮鎵樼洏锛屼絾鏄煡鎵剧殑璐т綅瑕佸叆鍦ㄤ綆鎵樼洏涓�");
+ return content.Error($"鏉$爜涓洪珮鎵樼洏锛屼絾鏄煡鎵剧殑璐т綅瑕佸叆鍦ㄤ綆鎵樼洏涓嬶紝鏁呴殰,鎵樼洏鏉$爜锛歿task.PalletCode},璐т綅缂栧彿:{dt_Location.LocationCode}");
+ }
+
+
+ Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(task.Roadway);
+
+ task.TargetAddress = dt_Location.LocationCode;
+ task.CurrentAddress = _Roadwayinfo.InSCStationCode;
+ task.NextAddress = dt_Location.LocationCode;
+ task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish;
+
+ dt_Location.LocationStatus = (int)LocationStatusEnum.Lock;
+
+ Dt_StockInfo dt_StockInfo = new Dt_StockInfo();
+ dt_StockInfo.PalletCode = task.PalletCode;
+ dt_StockInfo.PalletType = task.PalletType;
+ dt_StockInfo.WarehouseId = task.WarehouseId;
+ dt_StockInfo.LocationCode = dt_Location.LocationCode;
+ dt_StockInfo.StockStatus = (int)StockStatusEmun.鍏ュ簱涓�;
+ dt_StockInfo.Creater = "MWS";
+ dt_StockInfo.CreateDate = DateTime.Now;
+ dt_StockInfo.Roadway = task.Roadway;
+
+
+ _unitOfWorkManage.BeginTran();
+ _stockInfoService.AddData(dt_StockInfo);
+ _locationInfoService.UpdateData(dt_Location);
+ BaseDal.UpdateData(task);
+ _unitOfWorkManage.CommitTran();
+ WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"鎴愬姛锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"宸叉帴鏀跺叆搴撹緭閫佺嚎瀹屾垚淇℃伅,娣诲姞搴撳瓨淇℃伅锛歿dt_StockInfo.ToJson()}锛屼慨鏀硅揣浣嶏細{dt_Location.ToJson()}");
+
+ return content.OK($"宸叉帴鏀跺叆搴撹緭閫佺嚎瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
}
else
{
- loctype = (int)LocationTypeEnum.LargePallet;
+ WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"鎴愬姛锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婃姤澶辫触锛屽綋鍓嶄换鍔′笉鏄緭閫佺嚎鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触");
+ return content.Error("涓婃姤澶辫触锛屽綋鍓嶄换鍔′笉鏄緭閫佺嚎鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触");
}
- //鏌ユ壘璐т綅锛屾洿鏂颁换鍔�
- Dt_LocationInfo dt_Location = _locationInfoService.GetLocation(task.Roadway, loctype);
- Dt_LocationInfo ShallowCargoHold = _locationInfoService.ShallowGetLocation(dt_Location.RoadwayNo, dt_Location.LocationType, dt_Location.Row, dt_Location.Layer, dt_Location.Column);
- if (ShallowCargoHold == null) return content.Error($"鏈壘鍒拌璐т綅淇℃伅,璐т綅缂栧彿:{dt_Location.LocationCode}鐨勬祬璐т綅");
- if (ShallowCargoHold.LocationStatus != (int)LocationStatusEnum.Free) return content.Error($"浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode},鏌ユ壘鐨勮揣浣嶆祬璐т綅鏈夎揣锛岃揣浣嶇紪鍙凤細{ShallowCargoHold.LocationCode}");
- task.TargetAddress = dt_Location.LocationCode;
- task.CurrentAddress = task.NextAddress;
- task.NextAddress = dt_Location.LocationCode;
- task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish;
-
- dt_Location.LocationStatus = (int)LocationStatusEnum.Lock;
-
- Dt_StockInfo dt_StockInfo = new Dt_StockInfo();
- dt_StockInfo.PalletCode = task.PalletCode;
- dt_StockInfo.PalletType = task.PalletType;
- dt_StockInfo.WarehouseId = task.WarehouseId;
- dt_StockInfo.LocationCode = dt_Location.LocationCode;
- dt_StockInfo.StockStatus = (int)StockStatusEmun.鍏ュ簱涓�;
- dt_StockInfo.Creater = "MWS";
- dt_StockInfo.CreateDate = DateTime.Now;
-
- _unitOfWorkManage.BeginTran();
- _stockInfoService.AddData(dt_StockInfo);
- _locationInfoService.UpdateData(dt_Location);
- BaseDal.UpdateData(task);
- _unitOfWorkManage.CommitTran();
- return content.OK($"宸叉帴鏀跺叆搴撹緭閫佺嚎瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
}
else
{
- string Resultplc = MesInTaskStatusEnum.鍏ュ簱瀹屾垚.GetDescription();
- MES_parameter mES_PCLParameter = InStoreDocCallback(task.TaskNum, Resultplc, "鎿嶄綔鎴愬姛", task.PalletCode, task.TargetAddress);
- if (mES_PCLParameter.Result == "Y")
+ //鍒ゆ柇鏄惁鏈夎绔欏彴
+ if (task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting || task.TaskStatus == (int)InTaskStatusEnum.InPLCException)
{
- task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish;
- _unitOfWorkManage.BeginTran();
- BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
- _unitOfWorkManage.CommitTran();
- return content.OK($"杈撻�佺嚎浠诲姟宸插弽棣堣嚦涓婃父锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ string Resultplc = MesInTaskStatusEnum.Finish.GetDescription();
+ MES_parameter mES_PCLParameter = InStoreDocCallback(task.TaskNum, Resultplc, "鎿嶄綔鎴愬姛", task.PalletCode, task.TargetAddress);
+ if (mES_PCLParameter.Result == "Y")
+ {
+ task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish;
+ _unitOfWorkManage.BeginTran();
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+ _unitOfWorkManage.CommitTran();
+ WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎鐐瑰埌鐐瑰畬鎴�", $"鎴愬姛锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"杈撻�佺嚎浠诲姟宸插弽棣堣嚦涓婃父");
+ return content.OK($"杈撻�佺嚎浠诲姟宸插弽棣堣嚦涓婃父锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ }
+ else
+ {
+ task.NumberSsuances = 3;
+ task.TaskStatus = (int)InTaskStatusEnum.InPLCException;
+ task.Remark = "杈撻�佺嚎鍏ュ簱锛氫笂浼燤ES澶辫触锛屽師鍥狅細" + mES_PCLParameter.ResultMsg;
+ BaseDal.UpdateData(task);
+ WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎鐐瑰埌鐐瑰畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"杈撻�佺嚎浠诲姟宸插弽棣堣嚦涓婃父");
+ return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_PCLParameter.ResultMsg);
+ }
}
else
{
- return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_PCLParameter.ResultMsg);
+ WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎鐐瑰埌鐐瑰畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婃姤澶辫触锛屽綋鍓嶄换鍔′笉鏄緭閫佺嚎鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触");
+ return content.Error($"涓婃姤澶辫触锛屽綋鍓嶄换鍔′笉鏄緭閫佺嚎鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
}
+
}
case 2:
- string Resultsc = MesInTaskStatusEnum.鍏ュ簱瀹屾垚.GetDescription();
- //涓婃姤MES浠诲姟瀹屾垚
- MES_parameter mES_Parameter = InStoreDocCallback(task.TaskNum, Resultsc, "鎿嶄綔鎴愬姛", task.PalletCode, task.TargetAddress);
- if (mES_Parameter.Result == "Y")
+ if (task.TaskStatus == (int)InTaskStatusEnum.SC_IntExecuting || task.TaskStatus == (int)InTaskStatusEnum.InSCException)
{
- Dt_StockInfo dt_Stockowc = _stockInfoService.Repository.QueryData(x => x.PalletCode == task.PalletCode).FirstOrDefault();
- Dt_LocationInfo dt_LocationInfo=_locationInfoService.Repository.QueryData(x => x.LocationCode == dt_Stockowc.LocationCode).FirstOrDefault();
+ string Resultsc = MesInTaskStatusEnum.Finish.GetDescription();
+ //涓婃姤MES浠诲姟瀹屾垚
+ MES_parameter mES_Parameter = InStoreDocCallback(task.TaskNum, Resultsc, "鎿嶄綔鎴愬姛", task.PalletCode, task.TargetAddress);
+ if (mES_Parameter.Result == "Y")
+ {
+ Dt_StockInfo dt_Stockowc = _stockInfoService.Repository.QueryData(x => x.PalletCode == task.PalletCode).FirstOrDefault();
+ Dt_LocationInfo dt_LocationInfo = _locationInfoService.Repository.QueryData(x => x.LocationCode == dt_Stockowc.LocationCode).FirstOrDefault();
- dt_Stockowc.StockStatus = (int)StockStatusEmun.宸插叆搴�;
- dt_LocationInfo.LocationStatus = (int)LocationStatusEnum.InStock;
- task.TaskStatus = (int)InTaskStatusEnum.InFinish;
+ dt_Stockowc.StockStatus = (int)StockStatusEmun.宸插叆搴�;
+ dt_LocationInfo.LocationStatus = (int)LocationStatusEnum.InStock;
+ task.TaskStatus = (int)InTaskStatusEnum.InFinish;
- _unitOfWorkManage.BeginTran();
- _stockInfoService.UpdateData(dt_Stockowc);
- _locationInfoService.UpdateData(dt_LocationInfo);
- BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
- _unitOfWorkManage.CommitTran();
- return content.OK($"宸叉帴鏀跺叆搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ _unitOfWorkManage.BeginTran();
+ _stockInfoService.UpdateData(dt_Stockowc);
+ _locationInfoService.UpdateData(dt_LocationInfo);
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+ _unitOfWorkManage.CommitTran();
+
+ WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"鎴愬姛锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"淇敼鍚庣殑搴撳瓨锛歿dt_Stockowc.ToJson()},淇敼鍚庣殑搴撲綅淇℃伅锛歿dt_LocationInfo.ToJson()}");
+ return content.OK($"宸叉帴鏀跺叆搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ }
+ else
+ {
+ task.NumberSsuances = 3;
+ task.TaskStatus = (int)InTaskStatusEnum.InSCException;
+ task.Remark = "鍫嗗灈鏈哄叆搴擄紝涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg;
+ BaseDal.UpdateData(task);
+ WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婁紶MES澶辫触锛屽師鍥狅細{mES_Parameter.ResultMsg}");
+ return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
+ }
}
else
{
- return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
+ WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婃姤澶辫触锛屽綋鍓嶄换鍔′笉鏄爢鍨涙満鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触");
+ return content.Error($"涓婃姤澶辫触锛屽綋鍓嶄换鍔′笉鏄爢鍨涙満鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
}
+
default:
+ WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
return content.Error($"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
}
}
catch (Exception ex)
{
_unitOfWorkManage.RollbackTran();
+ WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触,浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"WCS浠诲姟瀹屾垚鎺ュ彛鏁呴殰锛屽師鍥狅細{ex.Message}");
return content.Error($"WCS浠诲姟瀹屾垚鎺ュ彛鏁呴殰锛屽師鍥狅細{ex.Message}");
}
}
@@ -234,44 +404,89 @@
switch (wcsTaskType)
{
case 1:
- string Resultplc = MesOutTaskStatusEnum.鍒拌揪鐩殑鍦�.GetDescription();
- //涓婃姤MES浠诲姟瀹屾垚
- MES_parameter mES_Parameter = OutStoreDocCallback(task.TaskNum, Resultplc, "鎿嶄綔鎴愬姛");
- if (mES_Parameter.Result == "Y")
+ if (task.TaskStatus == (int)OutTaskStatusEnum.PLC_OutExecuting || task.TaskStatus == (int)OutTaskStatusEnum.OutPLCException)
{
- task.TaskStatus = (int)OutTaskStatusEnum.PLC_OutFinish;
- BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
- return content.OK($"宸叉帴鏀跺嚭搴撹緭閫佺嚎瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ string Resultplc = MesOutTaskStatusEnum.Finish.GetDescription();
+ //涓婃姤MES浠诲姟瀹屾垚
+ MES_parameter mES_Parameter = OutStoreDocCallback(task.TaskNum, Resultplc, "鎿嶄綔鎴愬姛");
+ if (mES_Parameter.Result == "Y")
+ {
+ task.TaskStatus = (int)OutTaskStatusEnum.PLC_OutFinish;
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+
+ WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚",$"鎴愬姛,浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"宸叉帴鏀跺嚭搴撹緭閫佺嚎瀹屾垚淇℃伅");
+ return content.OK($"宸叉帴鏀跺嚭搴撹緭閫佺嚎瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ }
+ else
+ {
+ task.NumberSsuances =3;
+ task.TaskStatus = (int)OutTaskStatusEnum.OutPLCException;
+ task.Remark = "鍑哄簱锛岃緭閫佺嚎涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg;
+ BaseDal.UpdateData(task);
+ WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婁紶MES澶辫触锛屽師鍥狅細{mES_Parameter.ResultMsg}");
+ return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
+ }
+
}
else
{
- return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
+ WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婃姤澶辫触锛學MS褰撳墠浠诲姟涓嶆槸杈撻�佺嚎鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触");
+ return content.Error($"涓婃姤澶辫触锛學MS褰撳墠浠诲姟涓嶆槸杈撻�佺嚎鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
}
+
case 2:
- //鑾峰彇瀵瑰簲PLC绔欏彴淇℃伅
- Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(task.Roadway);
- task.CurrentAddress = _Roadwayinfo.OutStationCode;
- task.NextAddress = task.TargetAddress;
- task.TaskStatus = (int)OutTaskStatusEnum.SC_OutFinish;
- Dt_StockInfo dt_Stockowc = _stockInfoService.Repository.QueryData(x => x.PalletCode == task.PalletCode).FirstOrDefault();
- Dt_LocationInfo dt_LocationInfo = _locationInfoService.Repository.QueryData(x => x.LocationCode == dt_Stockowc.LocationCode).FirstOrDefault();
+ if (task.TaskStatus == (int)OutTaskStatusEnum.SC_OutExecuting || task.TaskStatus == (int)OutTaskStatusEnum.OutSCException)
+ {
+ //鑾峰彇瀵瑰簲PLC绔欏彴淇℃伅
+ Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(task.Roadway);
+ task.CurrentAddress = _Roadwayinfo.OutStationCode;
+ task.NextAddress = task.TargetAddress;
+ task.TaskStatus = (int)OutTaskStatusEnum.SC_OutFinish;
- _unitOfWorkManage.BeginTran();
- _stockInfoService.DeleteData(dt_Stockowc);
- _locationInfoService.DeleteData(dt_LocationInfo);
- BaseDal.UpdateData(task);
- _unitOfWorkManage.CommitTran();
+ Dt_StockInfo dt_Stockowc = _stockInfoService.Repository.QueryData(x => x.PalletCode == task.PalletCode).FirstOrDefault();
+ Dt_LocationInfo dt_LocationInfo = _locationInfoService.Repository.QueryData(x => x.LocationCode == dt_Stockowc.LocationCode).FirstOrDefault();
+ dt_LocationInfo.LocationStatus = (int)LocationStatusEnum.Free;
+ string Result = MesOutTaskStatusEnum.Outstore.GetDescription();
+ //璋冨彇涓婃父绯荤粺鍙嶉寮�濮嬩换鍔�
+ MES_parameter mES_SCParameter = OutStoreDocCallback(task.TaskNum, Result, "鎿嶄綔鎴愬姛");
+ if (mES_SCParameter.Result == "Y")
+ {
+ _unitOfWorkManage.BeginTran();
+ _stockInfoService.DeleteData(dt_Stockowc);
+ _locationInfoService.UpdateData(dt_LocationInfo);
+ BaseDal.UpdateData(task);
+ _unitOfWorkManage.CommitTran();
+ WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�",$"鎴愬姛锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"鍒犻櫎鐨勫簱瀛橈細{dt_Stockowc.ToJson()},淇敼鐨勮揣浣嶏細{dt_LocationInfo.ToJson()}");
- return content.OK($"宸叉帴鏀跺嚭搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ return content.OK($"宸叉帴鏀跺嚭搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ }
+ else
+ {
+ task.NumberSsuances = 3;
+ task.TaskStatus = (int)OutTaskStatusEnum.OutSCException;
+ task.Remark = "鍫嗗灈鏈哄嚭搴擄細涓婁紶MES澶辫触锛屽師鍥狅細" + mES_SCParameter.ResultMsg;
+ BaseDal.UpdateData(task);
+ WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婁紶MES澶辫触锛屽師鍥狅細{mES_SCParameter.ResultMsg}");
+ return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_SCParameter.ResultMsg);
+ }
+ }
+ else
+ {
+ WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触,浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婃姤澶辫触锛學MS褰撳墠浠诲姟涓嶆槸鍫嗗灈鏈烘墽琛屼腑锛學CS涓婃姤瀹屾垚澶辫触");
+ return content.Error($"涓婃姤澶辫触锛學MS褰撳墠浠诲姟涓嶆槸鍫嗗灈鏈烘墽琛屼腑锛學CS涓婃姤瀹屾垚澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ }
+
default:
+ WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
return content.Error($"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
}
}
catch (Exception ex)
{
_unitOfWorkManage.RollbackTran();
+ WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"WCS浠诲姟瀹屾垚鎺ュ彛鏁呴殰锛屽師鍥狅細{ex.Message}");
return content.Error($"WCS浠诲姟瀹屾垚鎺ュ彛鏁呴殰锛屽師鍥狅細{ex.Message}");
}
}
@@ -279,28 +494,305 @@
private WebResponseContent HandleRelocationTask(Dt_Task task, int wcsTaskType)
{
WebResponseContent responseContent = new WebResponseContent();
- if (wcsTaskType == 2)
+ try
{
- //涓婃姤MES鍫嗗灈鏈虹Щ搴撲换鍔�
- string Resultplc = MesOutTaskStatusEnum.鍒拌揪鐩殑鍦�.GetDescription();
- //涓婃姤MES浠诲姟瀹屾垚
- MES_parameter mES_Parameter = AbnormalStorageLocation(task.PalletCode, task.SourceAddress, task.TargetAddress);
- if (mES_Parameter.Result == "Y")
+ if (wcsTaskType == 2)
{
- task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationFinish;
- BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
- return WebResponseContent.Instance.OK($"宸叉帴鏀剁Щ搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ if (task.TaskStatus == (int)RelocationTaskStatusEnum.RelocationExecuting)
+ {
+ //涓婃姤MES浠诲姟瀹屾垚
+ MES_parameter mES_Parameter = AbnormalStorageLocation(task.PalletCode, task.SourceAddress, task.TargetAddress);
+ if (mES_Parameter.Result == "Y")
+ {
+ Dt_Task dtOutWit=BaseDal.QueryData(x=>x.PalletCode==task.PalletCode && x.TaskStatus== (int)OutTaskStatusEnum.OutWait).FirstOrDefault();
+
+ Dt_LocationInfo OriginalLocation = _locationInfoService.Repository.QueryData(x => x.LocationCode == task.SourceAddress).FirstOrDefault();
+ Dt_LocationInfo NewLocation = _locationInfoService.Repository.QueryData(x => x.LocationCode == task.TargetAddress).FirstOrDefault();
+ Dt_StockInfo dt_StockInfo = _stockInfoService.Repository.QueryData(x => x.LocationCode == task.SourceAddress).FirstOrDefault();
+
+ List<Dt_LocationInfo> dt_Locations = new List<Dt_LocationInfo>();
+
+ OriginalLocation.LocationStatus = (int)LocationStatusEnum.Free;
+ NewLocation.LocationStatus = dtOutWit != null? (int)LocationStatusEnum.Lock:(int)LocationStatusEnum.InStock;
+ dt_StockInfo.LocationCode = NewLocation.LocationCode;
+ dt_StockInfo.StockStatus = dtOutWit != null? (int)StockStatusEmun.鍑哄簱涓�:(int)StockStatusEmun.宸插叆搴�;
+ task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationFinish;
+
+ if(dtOutWit != null)
+ {
+ dtOutWit.TaskStatus = (int)OutTaskStatusEnum.OutNew;
+ dtOutWit.SourceAddress = NewLocation.LocationCode;
+ dtOutWit.CurrentAddress = NewLocation.LocationCode;
+ }
+
+
+
+
+ dt_Locations.Add(OriginalLocation);
+ dt_Locations.Add(NewLocation);
+
+ _unitOfWorkManage.BeginTran();
+ if(dtOutWit!=null) BaseDal.UpdateData(dtOutWit);
+
+ _locationInfoService.UpdateData(dt_Locations);
+ _stockInfoService.UpdateData(dt_StockInfo);
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+ _unitOfWorkManage.CommitTran();
+
+ WriteLog.Write_Log("WCS_绉诲簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"鎴愬姛,浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"淇敼鐨勮揣浣嶏細{dt_Locations.ToJson()},淇敼鐨勫簱瀛橈細{dt_StockInfo.ToJson()}");
+ return responseContent.OK($"宸叉帴鏀剁Щ搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ }
+ else
+ {
+ task.NumberSsuances = 3;
+ task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationException;
+ task.Remark = "绉诲簱锛屼笂浼燤ES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg;
+ BaseDal.UpdateData(task);
+ WriteLog.Write_Log("WCS_绉诲簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婁紶MES澶辫触锛屽師鍥狅細{mES_Parameter.ResultMsg}");
+ return responseContent.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
+ }
+ }
+ else
+ {
+ WriteLog.Write_Log("WCS_绉诲簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婃姤澶辫触锛學MS褰撳墠浠诲姟涓嶆槸鍫嗗灈鏈烘墽琛屼腑锛學CS涓婃姤瀹屾垚澶辫触");
+ return responseContent.Error($"涓婃姤澶辫触锛學MS褰撳墠浠诲姟涓嶆槸鍫嗗灈鏈烘墽琛屼腑锛學CS涓婃姤瀹屾垚澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+ }
+
}
else
{
- return responseContent.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
+ WriteLog.Write_Log("WCS_绉诲簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
+ return responseContent.Error($"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
}
}
- return WebResponseContent.Instance.Error($"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ WriteLog.Write_Log("WCS_绉诲簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"WCS浠诲姟瀹屾垚鎺ュ彛鏁呴殰锛屽師鍥狅細{ex.Message}");
+ return responseContent.Error($"WMS绯荤粺閿欒锛屽師鍥狅細{ex.Message}");
+ }
+
+ }
+
+ #endregion
+
+
+
+ //浠诲姟浠诲姟鎭㈠
+ public WebResponseContent WMSTaskRecovery(SaveModel saveModel)
+ {
+ WebResponseContent response = new WebResponseContent();
+ List<Dt_Task> dt_Task = new List<Dt_Task>();
+ try
+ {
+ foreach (var key in saveModel.DelKeys)
+ {
+ int taskId = int.Parse(key.ToString());
+ Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == taskId);
+ if (task == null)
+ return response.Error("鏈壘鍒颁换鍔′俊鎭�");
+ task.NumberSsuances = 0;
+ task.Remark = "";
+ dt_Task.Add(task);
+ }
+ bool updatetask= BaseDal.UpdateData(dt_Task);
+ if (updatetask)
+ {
+ WriteLog.Write_Log("WMS_浠诲姟鎭㈠", $"WMS_浠诲姟鎭㈠", "淇敼鎴愬姛", $"淇敼鐨勬暟鎹細{dt_Task.ToJson()}");
+ return response.OK("鎵�鏈変换鍔″鐞嗘垚鍔�");
+ }
+ else
+ {
+ WriteLog.Write_Log("WMS_浠诲姟鎭㈠", $"WMS_浠诲姟鎭㈠", "淇敼澶辫触", $"淇敼鐨勬暟鎹細{dt_Task.ToJson()}");
+ return response.Error("澶勭悊澶辫触锛屼慨鏀逛换鍔″け璐�");
+ }
+
+
+ }
+ catch (Exception ex)
+ {
+ WriteLog.Write_Log("WMS_浠诲姟鎭㈠", $"WMS_浠诲姟鎭㈠", "淇敼澶辫触", $"淇敼鐨勬暟鎹細{dt_Task.ToJson()}锛屽け璐ュ師鍥狅細{ex.Message}");
+ return response.Error($"WMS浠诲姟鎭㈠閿欒锛歿ex.Message}");
+ }
}
+ public virtual WebResponseContent UpdateData(SaveModel saveModel)
+ {
+ try
+ {
+ List<string>? list = UpdateIgnoreColOnExecute?.Invoke(saveModel);
+ if (saveModel == null || saveModel.MainData == null || saveModel.MainData.Count == 0)//鍒ゆ柇鍙傛暟鏄惁浼犲叆
+ {
+ return WebResponseContent.Instance.Error("浼犲弬閿欒,鍙傛暟涓嶈兘涓虹┖");
+ }
+ string validResult = typeof(Dt_Task).ValidateDicInEntity(saveModel.MainData, false, TProperties, list?.ToArray() ?? null);
+
+ if (!string.IsNullOrEmpty(validResult))
+ {
+ return WebResponseContent.Instance.Error(validResult);
+ }
+
+ PropertyInfo keyPro = typeof(Dt_Task).GetKeyProperty();
+ if (keyPro == null)
+ {
+ return WebResponseContent.Instance.Error("璇峰厛璁剧疆涓婚敭");
+ }
+
+ Dt_Task entity = saveModel.MainData.DicToModel<Dt_Task>();
+ Dt_Task Dt_Custask= BaseDal.QueryFirst(x=>x.TaskId==entity.TaskId);
+
+ List<string> listCol = new List<string>();
+ foreach (var item in saveModel.MainData)
+ {
+ PropertyInfo? propertyInfo = typeof(Dt_Task).GetProperty(item.Key);
+ if (propertyInfo == null)
+ {
+ propertyInfo = typeof(Dt_Task).GetProperty(item.Key.FirstLetterToLower());
+ if (propertyInfo == null)
+ {
+ propertyInfo = typeof(Dt_Task).GetProperty(item.Key.FirstLetterToUpper());
+ }
+ }
+
+ listCol.Add(propertyInfo?.Name);
+ }
+
+ if (saveModel.DetailData == null || saveModel.DetailData.Count == 0)
+ {
+ if (list != null)
+ listCol = listCol.Where(x => !list.Contains(x)).ToList();
+ bool result = BaseDal.UpdateData(entity, listCol, list);
+ WriteLog.Write_Log("WMS_浠诲姟淇敼", $"浠诲姟淇敼", $"浠诲姟缂栧彿:{entity.TaskId},鎵樼洏鏉$爜锛歿entity.PalletCode},鏄惁鎴愬姛锛歿result}", $"鍘熸潵鏁版嵁锛歿Dt_Custask.ToJson()}======>>>>>>淇敼鍚庣殑鏁版嵁锛歿entity.ToJson()}");
+ return WebResponseContent.Instance.OK();
+ }
+
+ if (typeof(Dt_Task).GetNavigatePro() == null)
+ {
+ return WebResponseContent.Instance.Error("鏈厤缃鑸睘鎬�");
+ }
+
+ Type detailType = typeof(Dt_Task).GetDetailType();
+ MethodInfo? methodInfo = GetType().GetMethod("UpdateDataInculdesDetail");
+ methodInfo = methodInfo?.MakeGenericMethod(new Type[] { detailType });
+ object? obj = methodInfo?.Invoke(this, new object[] { entity, detailType, saveModel.DetailData, saveModel.DelKeys });
+ return obj as WebResponseContent;
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+
+
+ //浠诲姟鑾峰彇
+ public List<Dt_Task> GetaskQueue(string deviceId)
+ {
+ return BaseDal.QueryData(x => x.Roadway == deviceId && (x.TaskStatus == (int)InTaskStatusEnum.PLC_InFinish || x.TaskStatus == (int)OutTaskStatusEnum.OutNew) && x.NumberSsuances==0);
+ }
+
+ //鑾峰彇褰撳墠鍫嗗灈鏈烘墽琛岀殑浠诲姟
+ public bool CurrentTaskProgress(string deviceId)
+ {
+ int taskcount=BaseDal.QueryData(x => x.Roadway == deviceId && (x.TaskStatus == (int)InTaskStatusEnum.SC_IntExecuting || x.TaskStatus == (int)OutTaskStatusEnum.SC_OutExecuting || x.TaskStatus == (int)RelocationTaskStatusEnum.RelocationExecuting)).Count();
+ if (taskcount == 0) return false;
+ return true;
+ }
+
+ //鑾峰彇鍫嗗灈鏈哄畬鎴愶紝涓嬪彂杈撻�佺嚎鐨勪换鍔�
+ public static List<string> OutSCList = new List<string>() { "1109", "1105", "1210", "1212", "1214" };
+ public List<Dt_Task> GetaskQueuePLC()
+ {
+ return BaseDal.QueryData(x => x.TaskStatus == (int)OutTaskStatusEnum.SC_OutFinish && OutSCList.Contains(x.CurrentAddress));
+ }
+
+ //鑾峰彇鏄惁鏈夌Щ搴撶殑浠诲姟
+ public Dt_Task GeRelocationTaskQueue(string LocationCode)
+ {
+ return BaseDal.QueryData(x => x.TaskStatus == (int)RelocationTaskStatusEnum.RelocationNew && x.CurrentAddress == LocationCode).FirstOrDefault();
+ }
+
+ public Dt_Task GeOutCuTaskQueue(string LocationCode)
+ {
+ return BaseDal.QueryData(x => x.TaskStatus == (int)OutTaskStatusEnum.OutNew && x.SourceAddress == LocationCode).FirstOrDefault();
+ }
+
+ public bool RelocationTaskProgress(string deviceId)
+ {
+ int taskcount = BaseDal.QueryData(x => x.Roadway == deviceId && (x.TaskStatus == (int)RelocationTaskStatusEnum.RelocationExecuting || x.TaskStatus == (int)RelocationTaskStatusEnum.RelocationNew) ).Count();
+ if (taskcount == 0) return false;
+ return true;
+ }
+
+ //浠撳簱瀹归噺鐘舵��
+ public WebResponseContent GetWarehouseCapacity()
+ {
+ return _locationInfoService.GetWarehouseCapacity();
+ }
+
+ //鍑哄叆搴撶被鍨嬪垎甯�
+ public WebResponseContent GetInOutTypeStats()
+ {
+ return _task_HtyService.GetInOutTypeStats();
+ }
+ //娴侀噺鎯呭喌缁熻
+
+ public WebResponseContent GetTodayTrafficStats()
+ {
+ return _task_HtyService.GetTodayInOutStats();
+ }
+ //褰撳墠杩涜鐨勪换鍔�
+ public WebResponseContent GetCurrentTasks()
+ {
+ // 鏌ヨ鎵�浠ヨ繑鍥濼askNum锛孴askType锛孋reateDate锛孴askStatus锛�
+ var tasks = BaseDal.QueryData()
+ .Select(t => new
+ {
+ WarehouseId = t.Roadway == "1" || t.Roadway == "2" ? 1 : 2,
+ PalletType = t.PalletType,
+ TaskNum = t.TaskId,
+ TaskType = t.TaskType,
+ CreateDate = t.CreateDate,
+ TaskStatus = t.TaskStatus,
+ TargetAddress = t.TargetAddress
+ })
+ .ToList();
+ return WebResponseContent.Instance.OK("鎴愬姛", tasks);
+ }
+ //鎬讳綋杩涘害
+ public WebResponseContent GetWarehouseOperationStatistics()
+ {
+ /// <summary>
+ /// 鍘熸枡浠擄紝鎬诲嚭鍏ュ簱浠诲姟鏁伴噺锛屼粖鏃ュ叆搴擄紝浠婃棩鍑哄簱锛屼粖鏃ュ緟瀹屾垚锛屼粖鏃ュ紓甯镐换鍔★紝鎴愬搧浠擄紝鎬诲嚭鍏ュ簱鏁伴噺锛屼粖鏃ュ叆搴擄紝浠婃棩鍑哄簱锛屼粖鏃ュ緟瀹屾垚
+ /// </summary>
+ return _task_HtyService.GetWarehouseOperationStatistics();
+ }
+
+ public WebResponseContent GetTaskDestination(string targetAddress)
+ {
+ WebResponseContent content = new WebResponseContent();
+ // 鍙傛暟鏍¢獙
+ if (string.IsNullOrWhiteSpace(targetAddress))
+ {
+ return content.Error("鐩爣鍦板潃涓嶈兘涓虹┖");
+ }
+ try
+ {
+ // 鏌ヨ鏁版嵁
+ var queryResult = BaseDal.QueryData(x => x.TargetAddress == targetAddress);
+ // 鍒ゆ柇鏌ヨ缁撴灉
+ if (queryResult == null || !queryResult.Any())
+ {
+ return content.Error($"鏈壘鍒扮洰鏍囧湴鍧�涓篬{targetAddress}]鐨勪换鍔�");
+ }
+ return content.OK($"鏈夌洰鏍囧湴鍧�涓篬{targetAddress}]鐨勪换鍔★紝璇锋嫤鎴�");
+ }
+ catch (Exception ex)
+ {
+ return content.Error($"鑾峰彇浠诲姟鐩殑鍦板け璐�: {ex.Message}");
+ }
+ }
}
}
--
Gitblit v1.9.3