From ffe8ac13ba8bc9426f8b5f5b88f094a05b31b7ff Mon Sep 17 00:00:00 2001
From: xxyy <cathay_xy@163.com>
Date: 星期一, 10 三月 2025 10:15:29 +0800
Subject: [PATCH] 增强功能与修复错误,更新缓存服务
---
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 560 ++++++++++++++++++-------------------------------------
1 files changed, 182 insertions(+), 378 deletions(-)
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
index 9f34503..eda759d 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -112,12 +112,12 @@
ConsoleHelper.WriteErrorLine("MOM閫氭姤鐐硅姱NG");
return content.Error("MOM閫氭姤鐐硅姱NG");
}
-
// 鏇存柊搴撳瓨鐘舵�佸拰浠诲姟鐘舵��
(var loc, var tas) = UpdateStockAndTaskStatus(stock, task);
var taskHty = task.Adapt<Dt_Task_Hty>();
taskHty.FinishTime = DateTime.Now;
- taskHty.OperateType = (int)OperateTypeEnum.鑷姩瀹屾垚;
+ taskHty.OperateType = App.User.UserName != null ? (int)OperateTypeEnum.浜哄伐瀹屾垚 : (int)OperateTypeEnum.鑷姩瀹屾垚;
+ taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
DtStockInfo_Hty stockInfo_Hty = stock.Adapt<DtStockInfo_Hty>();
stockInfo_Hty.ModifyDate = DateTime.Now;
@@ -137,12 +137,17 @@
});
try
{
+ //using (_simpleCacheService.AcquireLock(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, 2000))
+ //{
_simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { stock.PalletCode });
+ //}
}
catch (Exception ex)
{
LogFactory.GetLog("鍒犻櫎缂撳瓨澶辫触").Error(true, $"{stock.PalletCode}_鍒犻櫎缂撳瓨澶辫触锛屽紓甯镐俊鎭細{ex.Message}");
- _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { stock.PalletCode });
+ //using (_simpleCacheService.AcquireLock(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, 2000))
+ //{
+ //}
}
return content.OK("浠诲姟瀹屾垚鎴愬姛", task.Remark);
@@ -154,7 +159,7 @@
}
}
- private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, ResponseEqptRunDto info = null)
+ private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, ResponseEqptRunDto? info = null)
{
// TODO Value鍊兼牴鎹甅OM涓嬪彂鐨勯潤缃椂闂村埌褰撳墠鏃堕棿鐨勫垎閽熸暟
var area = _areaInfoRepository.QueryFirst(x => x.AreaCode == stock.AreaCode);
@@ -380,7 +385,17 @@
_locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(locationInf, lastStatus, (int)StatusChangeTypeEnum.AutomaticStorage, task.TaskNum);
stock.StockInfoDetails = new List<DtStockInfoDetail>() { { stock.StockInfoDetails[0] } };
- _simpleCacheService.HashAdd(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, stock.PalletCode, stock);
+ stock.LocationInfo = locationInf;
+ //using(_simpleCacheService.AcquireLock(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, 2000))
+ //{
+ try
+ {
+ _simpleCacheService.HashAdd(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, stock.PalletCode, stock);
+ }
+ catch (Exception ex)
+ {
+ LogFactory.GetLog("娣诲姞缂撳瓨澶辫触").Error(true, $"{stock.PalletCode}_娣诲姞缂撳瓨澶辫触锛屽紓甯镐俊鎭細{ex.Message}");
+ }
content.OK("鍏ュ簱浠诲姟瀹屾垚鎴愬姛");
}
@@ -530,9 +545,9 @@
{
isFull = respone.SpecialParameterDuration.IsNullOrEmpty();
}
- if (respone.ProductionLine == null || respone.ParameterInfos == null)
+ if (respone.ProductionLine == null || respone.ParameterInfos == null || respone.ParameterInfos.IsNullOrEmpty())
{
- throw new Exception("MOM鏁版嵁杩斿洖閿欒");
+ throw new Exception($"MOM鏁版嵁杩斿洖閿欒,浜х嚎{respone.ProductionLine},ParameterInfos{respone.ParameterInfos}");
}
stock.LinedProcessFeedbackTime = respone.LinedProcessFeedbackTime;
stock.SpecialParameterDuration = respone.SpecialParameterDuration;
@@ -614,244 +629,6 @@
#endregion 浠诲姟瀹屾垚
#region 璇锋眰浠诲姟鍏ュ簱
-
- #region
-
- /// <summary>
- /// 璇锋眰浠诲姟宸烽亾
- /// </summary>
- /// <param name="input">璇锋眰妯″瀷</param>
- /// <returns>鍖呭惈浠诲姟淇℃伅鐨勫搷搴斿唴瀹�</returns>
- public async Task<WebResponseContent> RequestTaskAsync2(RequestTaskDto input)
- {
- // 鍒涘缓涓�涓猈ebResponseContent瀵硅薄
- WebResponseContent content = new WebResponseContent();
-
- try
- {
- // 璋冪敤BaseDal.QueryFirstAsync鏂规硶锛屾煡璇换鍔�
- var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode);
- if (task != null)
- {
- //if (task.TaskState == (int)TaskInStatusEnum.InNew)
- {
- // 鍒涘缓WMS浠诲姟
- WMSTaskDTO taskDTO = new WMSTaskDTO()
- {
- TaskNum = task.TaskNum.Value,
- Grade = 1,
- PalletCode = task.PalletCode,
- RoadWay = task.Roadway,
- SourceAddress = task.SourceAddress,
- TargetAddress = task.Roadway,
- TaskState = task.TaskState.Value,
- Id = 0,
- TaskType = task.TaskType,
- };
- return content.OK(data: taskDTO);
- }
- }
-
- var stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == input.PalletCode && x.IsFull);
- if (stock != null)
- {
- // TODO璐ㄦ鍥炲簱
- }
-
- var area = await _areaInfoRepository.QueryFirstAsync(x => x.Spare1.Contains(input.Position));
- if (area == null)
- return content.Error("鏀圭偣浣嶄笉鍦ㄥ尯鍩熷垪琛ㄤ腑瀛樺湪");
-
- // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪��
- TrayCellsStatusDto trayCells = new TrayCellsStatusDto()
- {
- Software = area.Spare3,
- TrayBarcode = input.PalletCode,
- EquipmentCode = area.Spare2,
- SceneType = area.Spare4,
- };
-
- // 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺�
- content = await GetTrayCellStatusAsync(trayCells);
- // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖content
- if (!content.Status) return content;
-
- // 娣诲姞缁勭洏淇℃伅
- // 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄
- var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
- if (!result.Success)
- return content.Error(result.MOMMessage);
-
- // 鑾峰彇寮傚父鐢佃姱
- List<SerialNoDto>? serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
- if (serialNosError.Count > 0)
- {
- // TODO 鍒涘缓浠诲姟閫佽嚦NG鎺掑嚭鍙�
- var efg = _stationManagerRepository.QueryData(x => x.stationType == 1 && x.stationChildCode == input.Position && x.stationArea == area.AreaCode).ToList();
- //List<string> NGStation = input.Position == "1088" ? new List<string>() { "1020" } : new List<string>() { "JZSC01" };
- if (efg.Count <= 0)
- {
- throw new Exception("鏈壘鍒癗G鍏ュ簱绔欏彴閰嶇疆");
- }
- List<string> NGStation = efg.Select(x => x.stationNGLocation).ToList();
- if (NGStation.Count <= 0)
- {
- NGStation = efg.Select(x => x.stationNGChildCode).ToList();
- }
- content = await CreateNewTask(input, result.ProductionLine, result.ProcessCode, NGStation, 2);
- return content.Error("瀛樺湪寮傚父鐢佃姱");
- }
-
- if (result.SerialNos.Count <= 0)
- {
- // Todo 绌烘墭鐩樺叆搴撻�昏緫
- content = await RequestTrayInTaskAsync(input);
- return content;
- }
-
- var boxing = CreateBoxingInfo(result, input.PalletCode);
- //Console.WriteLine(boxing.ToJsonString());
- if (boxing == null) return content.Error("缁勭洏澶辫触");
-
- if (result.ProcessCode == "OCVB")
- {
- //TODO 鍒ゆ柇闇�涓嶉渶瑕佸幓鍖呰锛屼笉闇�瑕佸氨鍘诲父娓╀笁
- var stationManagers = _stationManagerRepository.QueryData(x => x.stationPLC == "1018" && x.stationArea == "Cache");
- var station = stationManagers.Select(x => x.stationChildCode).ToList();
-
- // 鑾峰彇WCSip鍦板潃
- var configz = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
- var wcsBasez = configz.Where(x => x.ConfigKey == SysConfigConst.WCSIPAddress).FirstOrDefault()?.ConfigValue;
- var address = configz.Where(x => x.ConfigKey == SysConfigConst.GetStation).FirstOrDefault()?.ConfigValue;
- if (wcsBasez == null || address == null)
- {
- throw new InvalidOperationException("WCS IP 鏈厤缃�");
- }
- var wcsIpAddrss = wcsBasez + address;
-
- var abc = HttpHelper.PostAsync(wcsIpAddrss, station.ToJsonString()).Result;
- content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
- if (content.Data.ObjToInt() > 0)
- {
- // TODO 閫佽嚦鍖呰
- List<string> strings = stationManagers.Where(x => x.stationType == 0).Select(x => x.Roadway).ToList();
- content = await CreateNewTask(input, result.ProductionLine, result.ProcessCode, strings, 3);
- return content;
- }
- else
- {
- var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker");
- var strings = config.ConfigValue.Split(',').ToList();
- // TODO 鍏ュ簱
- content = await CreateNewTask(input, result.ProductionLine, result.ProcessCode, strings);
- if (content.Status)
- await _boxingInfoRepository.AddDataNavAsync(boxing);
- }
- }
- else
- {
- // TODO 鑾峰彇鏈湴鏂欐灞炴�т笌鏁寸洏鐢佃姱灞炴�ц幏鍙栫殑鍊艰繘琛屽姣旓紝濡傛灉涓�鑷村垯缁х画锛屽惁鍒欒繑鍥為敊璇俊鎭�
- //var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty));
- //if (productions.Count <= 0)
- // return content.Error("鏂欐灞炴�т笉瀛樺湪");
-
- // 璋冪敤CreateBoxingInfo鏂规硶锛屽垱寤虹粍鐩樹俊鎭�
-
- //var boxing = CreateBoxingInfo(result, input.PalletCode);
- ////Console.WriteLine(boxing.ToJsonString());
- //if (boxing == null) return content.Error("缁勭洏澶辫触");
-
- // 璋冪敤GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹鸿矾绾�
- ProcessApplyDto process = await GetProcessApplyAsync(result);
-
- // 濡傛灉process涓簄ull锛屽垯杩斿洖content
- if (process == null) return content;
-
- // 骞惰祴鍊间笂浣嶈蒋浠跺悕绉板拰璁惧缂栫爜
- process.Software = area.Spare3;
- process.EquipmentCode = area.Spare2;
-
- // 璋冪敤GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹虹敵璇�
-
- // 璋冪敤_processApplyService.GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹虹敵璇�
- content = await _processApplyService.GetProcessApplyAsync(process);
-
- // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖null
- if (!content.Status) return content.Error("宸ヨ壓鐢宠澶辫触");
-
- var resultProcessApply = JsonConvert.DeserializeObject<ResultProcessApply>(content.Data.ToString());
- if (!resultProcessApply.Success) return content.Error("宸ヨ壓鐢宠澶辫触");
-
- var number = resultProcessApply.ProcessInfo.Where(x => x.ProcessCode == boxing.ProcessCode).FirstOrDefault().Number.ToInt32();
- foreach (var item in resultProcessApply.ProcessInfo)
- {
- if (item.Number.ToInt32() == number + 1)
- {
- boxing.NextProcessCode = item.ProcessCode;
- }
- }
- Console.WriteLine();
- Console.WriteLine($"褰撳墠宸ュ簭锛歿boxing.ProcessCode}");
- Console.WriteLine($"涓嬩竴宸ュ簭锛歿boxing.NextProcessCode}");
-
- Console.WriteLine(area.AreaCode + "-----------------------");
- Console.WriteLine(input.Position + "-----------------------");
-
- var areaIn = string.Empty;
- switch (boxing.NextProcessCode)
- {
- case "CH01":
- areaIn = "CH001";
- break;
-
- case "JZ01":
- areaIn = "JZ001";
- break;
-
- case "GW01":
- areaIn = "GWSC1";
- break;
-
- case "CW01":
- areaIn = "CWSC1";
- break;
-
- case "CW02":
- areaIn = "CWSC2";
- break;
-
- default:
- break;
- }
-
- var stationManagers = _stationManagerRepository.QueryData(x => x.stationType == 1 && x.stationChildCode == input.Position && x.stationArea.Contains(areaIn)).FirstOrDefault();
- if (stationManagers == null)
- {
- throw new Exception("鏈壘鍒板叆搴撶珯鍙伴厤缃�");
- }
- List<string> strings = stationManagers.Roadway.Split(',').ToList();
- Console.WriteLine(strings.ToJsonString() + "b-----------------------");
- //// 璋冪敤CreateNewTask鏂规硶锛屽垱寤烘柊浠诲姟
- content = await CreateNewTask(input, result.ProductionLine, result.ProcessCode, strings);
- if (content.Status)
- {
- var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
- }
- //}
- }
- }
- catch (Exception err)
- {
- // 濡傛灉鍙戠敓寮傚父锛屽垯璋冪敤content.Error鏂规硶锛岃褰曢敊璇俊鎭紝骞惰緭鍑洪敊璇俊鎭�
- content.Error(err.Message);
- Console.WriteLine(err.Message);
- }
-
- // 杩斿洖content
- return content;
- }
-
- #endregion 璇锋眰浠诲姟鍏ュ簱
public async Task<WebResponseContent> RequestTaskAsync(RequestTaskDto input)
{
@@ -1014,18 +791,6 @@
{
// 鍒涘缓WMS浠诲姟
WMSTaskDTO taskDTO = CreateTaskDTO(task);
- //WMSTaskDTO taskDTO = new WMSTaskDTO()
- //{
- // TaskNum = task.TaskNum.Value,
- // Grade = 1,
- // PalletCode = task.PalletCode,
- // RoadWay = task.Roadway,
- // SourceAddress = task.SourceAddress,
- // TargetAddress = task.Roadway,
- // TaskState = task.TaskState.Value,
- // Id = 0,
- // TaskType = task.TaskType,
- //};
return content.OK(data: task);
}
@@ -1111,7 +876,7 @@
};
}
- #endregion 澶栭儴鎺ュ彛鏂规硶
+ #endregion 璇锋眰浠诲姟鍏ュ簱
#region 璇锋眰鍑哄簱锛堝疄鐩�&绌虹洏锛�
@@ -1173,7 +938,7 @@
{
// 璁板綍寮傚父淇℃伅骞舵姏鍑�
LogFactory.GetLog("璇锋眰鎵樼洏浠诲姟").Error(true, ex);
- ConsoleHelper.WriteErrorLine("璇锋眰绌�/瀹炴墭鐩樹换鍔�" + ex.Message);
+ ConsoleHelper.WriteErrorLine("璇锋眰绌�/瀹炴墭鐩樹换鍔�" + ex.Message + "\r\n" + ex.StackTrace);
return content.Error(ex.Message);
}
}
@@ -1183,39 +948,52 @@
/// </summary>
private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, List<string> devices, string productionLine)
{
- var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode);
- if (area == null)
+ try
{
- ConsoleHelper.WriteErrorLine($"鏌ヨ瀹炵洏搴撳瓨淇℃伅鏃�,鏈壘鍒板尯鍩熶唬鐮佷负{areaCode}鐨勬暟鎹�");
+ var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode);
+ if (area == null)
+ {
+ ConsoleHelper.WriteErrorLine($"鏌ヨ瀹炵洏搴撳瓨淇℃伅鏃�,鏈壘鍒板尯鍩熶唬鐮佷负{areaCode}鐨勬暟鎹�");
+ return null;
+ }
+
+ var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel");
+ List<string>? materielCodes = outBoundMateriel.Count != 0
+ ? outBoundMateriel.Where(x => x.ProductionLine == productionLine && x.ProcessCode == area.AreaCode)
+ .Select(x => x.MaterielCode)
+ .ToList()
+ : null;
+
+ IDictionary<string, DtStockInfo>? stockInfos = _simpleCacheService.HashGetAll<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo);
+ List<DtStockInfo> stockInfoList = stockInfos.Values.ToList();
+ var result = new DtStockInfo();
+
+ //if (stockInfoList.IsNullOrEmpty())
+ //{
+ // stockInfoList = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
+ // .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).IncludesAllFirstLayer().ToListAsync();
+ //}
+
+ result = stockInfoList.Where(x => x.AreaCode == areaCode && x.OutboundTime < DateTime.Now && x.IsFull)
+ .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
+ .Where(x => x.LocationInfo != null && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable)
+ .WhereIF(!devices.IsNullOrEmpty(), x => devices.Contains(x.LocationInfo.RoadwayNo))
+ .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails != null && x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
+ .OrderBy(x => x.OutboundTime)
+ .FirstOrDefault();
+
+ if (result != null)
+ _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { result.PalletCode });
+ else
+ ConsoleHelper.WriteErrorLine("QueryStockInfoForRealTrayAsync鏌ヨ瀹炵洏搴撳瓨淇℃伅澶辫触:鏈壘鍒扮鍚堟潯浠剁殑鏁版嵁");
+
+ return result;
+ }
+ catch (Exception ex)
+ {
+ ConsoleHelper.WriteErrorLine("QueryStockInfoForRealTrayAsync鏌ヨ瀹炵洏搴撳瓨淇℃伅澶辫触:" + ex.Message + "\r\n" + ex.StackTrace);
return null;
}
-
- var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel");
- List<string>? materielCodes = outBoundMateriel.Count != 0
- ? outBoundMateriel.Where(x => x.ProductionLine == productionLine && x.ProcessCode == area.AreaCode)
- .Select(x => x.MaterielCode)
- .ToList()
- : null;
-
- IDictionary<string, DtStockInfo>? stockInfos = _simpleCacheService.HashGetAll<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo);
- List<DtStockInfo> stockInfoList = stockInfos.Values.ToList();
- var result = new DtStockInfo();
-
- //if (stockInfoList.IsNullOrEmpty())
- //{
- // stockInfoList = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
- // .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).IncludesAllFirstLayer().ToListAsync();
- //}
-
- result = stockInfoList.Where(x => x.AreaCode == areaCode && x.OutboundTime < DateTime.Now && x.IsFull)
- .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
- .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable)
- .WhereIF(!devices.IsNullOrEmpty(), x => devices.Contains(x.LocationInfo.RoadwayNo))
- .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
- .OrderBy(x => x.OutboundTime)
- .FirstOrDefault();
-
- return result;
}
/// <summary>
@@ -1223,45 +1001,62 @@
/// </summary>
private async Task<DtStockInfo> QueryStockInfoForRealTrayCWAsync(List<string> areaCodes, string productionLine)
{
- var areaId = (await _areaInfoRepository.QueryDataAsync(x => areaCodes.Contains(x.AreaCode))).Select(x => x.AreaID).ToList();
- if (areaId.Count == 0)
+ try
{
- ConsoleHelper.WriteErrorLine($"鏌ヨ甯告俯瀹炵洏搴撳瓨淇℃伅鏃�,鏈壘鍒板尯鍩熶唬鐮佷负{JsonConvert.SerializeObject(areaCodes)}鐨勬暟鎹�");
+ var areaId = (await _areaInfoRepository.QueryDataAsync(x => areaCodes.Contains(x.AreaCode))).Select(x => x.AreaID).ToList();
+ if (areaId.Count == 0)
+ {
+ ConsoleHelper.WriteErrorLine($"鏌ヨ甯告俯瀹炵洏搴撳瓨淇℃伅鏃�,鏈壘鍒板尯鍩熶唬鐮佷负{JsonConvert.SerializeObject(areaCodes)}鐨勬暟鎹�");
+ return null;
+ }
+
+ //var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel");
+ //List<string> materielCodes = null;
+ //if (outBoundMateriel.Count != 0)
+ //{
+ // materielCodes = outBoundMateriel.Where(x => x.ProductionLine == productionLine && x.ProcessCode == areaCodes[0]).Select(x => x.MaterielCode).ToList();
+ //}
+
+ var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel");
+ List<string>? materielCodes = outBoundMateriel.Count != 0
+ ? outBoundMateriel.Where(x => x.ProductionLine == productionLine && x.ProcessCode == areaCodes[0])
+ .Select(x => x.MaterielCode)
+ .ToList()
+ : null;
+
+ var deviceCode = SqlSugarHelper.DbWCS.Queryable<Dt_DeviceInfo>()
+ .Where(x => x.DeviceStatus == "1")
+ .Where(x => x.DeviceCode.Contains("CWSC"))
+ .ToList().Select(x => x.DeviceCode).ToList();
+ //var deviceCode = devices.Select(x => x.DeviceCode).ToList();
+
+ IDictionary<string, DtStockInfo>? stockInfos = _simpleCacheService.HashGetAll<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo);
+ List<DtStockInfo> stockInfoList = stockInfos.Values.ToList();
+
+ var result = stockInfoList.Where(x => areaCodes.Contains(x.AreaCode) && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢
+ .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
+ .Where(x => x.LocationInfo != null && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && areaId.Contains(x.LocationInfo.AreaId) && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
+ .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
+ .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails != null && x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
+ .OrderBy(x => x.OutboundTime) // 鎺掑簭
+ .FirstOrDefault(); // 鑾峰彇绗竴涓厓绱�
+
+ if (result != null)
+ {
+ _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { result.PalletCode });
+ }
+ else
+ {
+ ConsoleHelper.WriteErrorLine("QueryStockInfoForRealTrayCWAsync鏌ヨ甯告俯瀹炵洏搴撳瓨淇℃伅澶辫触:鏈壘鍒扮鍚堟潯浠剁殑鏁版嵁");
+ }
+
+ return result;
+ }
+ catch (Exception ex)
+ {
+ ConsoleHelper.WriteErrorLine("QueryStockInfoForRealTrayCWAsync鏌ヨ瀹炵洏搴撳瓨淇℃伅澶辫触:" + ex.Message + "\r\n" + ex.StackTrace);
return null;
}
-
- //var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel");
- //List<string> materielCodes = null;
- //if (outBoundMateriel.Count != 0)
- //{
- // materielCodes = outBoundMateriel.Where(x => x.ProductionLine == productionLine && x.ProcessCode == areaCodes[0]).Select(x => x.MaterielCode).ToList();
- //}
-
- var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel");
- List<string>? materielCodes = outBoundMateriel.Count != 0
- ? outBoundMateriel.Where(x => x.ProductionLine == productionLine && x.ProcessCode == areaCodes[0])
- .Select(x => x.MaterielCode)
- .ToList()
- : null;
-
- var deviceCode = SqlSugarHelper.DbWCS.Queryable<Dt_DeviceInfo>()
- .Where(x => x.DeviceStatus == "1")
- .Where(x => x.DeviceCode.Contains("CWSC"))
- .ToList().Select(x => x.DeviceCode).ToList();
- //var deviceCode = devices.Select(x => x.DeviceCode).ToList();
-
- IDictionary<string, DtStockInfo>? stockInfos = _simpleCacheService.HashGetAll<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo);
- List<DtStockInfo> stockInfoList = stockInfos.Values.ToList();
-
- var result = stockInfoList.Where(x => areaCodes.Contains(x.AreaCode) && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢
- .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
- .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && areaId.Contains(x.LocationInfo.AreaId) && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
- .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
- .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
- .OrderBy(x => x.OutboundTime) // 鎺掑簭
- .FirstOrDefault(); // 鑾峰彇绗竴涓厓绱�
-
- return result;
}
/// <summary>
@@ -1269,37 +1064,44 @@
/// </summary>
private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode, string position)
{
- var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode);
+ try
+ {
+ var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode);
- ConsoleHelper.WriteColorLine(position + "..." + areaCode, ConsoleColor.Magenta);
- var station = await _stationManagerRepository.QueryFirstAsync(x => x.stationChildCode == position && x.stationType == 17);
+ ConsoleHelper.WriteColorLine(position + "..." + areaCode, ConsoleColor.Magenta);
+ var station = await _stationManagerRepository.QueryFirstAsync(x => x.stationChildCode == position && x.stationType == 17);
- ConsoleHelper.WriteColorLine(station.Roadway, ConsoleColor.Magenta);
- var stackers = station.Roadway.Split(',').ToList();
+ ConsoleHelper.WriteColorLine(station.Roadway, ConsoleColor.Magenta);
+ var stackers = station.Roadway.Split(',').ToList();
- var deviceCode = SqlSugarHelper.DbWCS.Queryable<Dt_DeviceInfo>()
- .Where(x => x.DeviceStatus == "1")
- .Where(x => stackers.Contains(x.DeviceCode))
- .ToList().Select(x => x.DeviceCode).ToList();
+ var deviceCode = SqlSugarHelper.DbWCS.Queryable<Dt_DeviceInfo>()
+ .Where(x => x.DeviceStatus == "1")
+ .Where(x => stackers.Contains(x.DeviceCode))
+ .ToList().Select(x => x.DeviceCode).ToList();
- IDictionary<string, DtStockInfo>? stockInfos = _simpleCacheService.HashGetAll<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo);
- List<DtStockInfo> stockInfoList = stockInfos.Values.ToList();
+ IDictionary<string, DtStockInfo>? stockInfos = _simpleCacheService.HashGetAll<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo);
+ List<DtStockInfo> stockInfoList = stockInfos.Values.ToList();
- var result = stockInfoList.Where(x => x.ProductionLine == station.productLine)
- .Where(x => x.AreaCode == areaCode && x.IsFull == false)
- .Where(x => x.StockInfoDetails.Any(y => y.MaterielCode == "绌烘墭鐩�"))
- .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
- .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
- .OrderBy(x => x.CreateDate) // 鎺掑簭
- .FirstOrDefault(); // 杞崲涓哄垪琛�
+ var result = stockInfoList.Where(x => x.ProductionLine == station.productLine)
+ .Where(x => x.AreaCode == areaCode && x.IsFull == false)
+ .Where(x => x.StockInfoDetails != null && x.StockInfoDetails.Any(y => y.MaterielCode == "绌烘墭鐩�"))
+ .Where(x => x.LocationInfo != null && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
+ .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
+ .OrderBy(x => x.CreateDate) // 鎺掑簭
+ .FirstOrDefault(); // 杞崲涓哄垪琛�
- //if (result != null)
- //{
- // stockInfoList = stockInfoList.Where(x => x != result).ToList();
- // _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { result.PalletCode });
- //}
+ if (result != null)
+ _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { result.PalletCode });
+ else
+ ConsoleHelper.WriteErrorLine("QueryStockInfoForEmptyTrayAsync鏌ヨ绌虹洏搴撳瓨淇℃伅澶辫触:鏈壘鍒扮鍚堟潯浠剁殑鏁版嵁");
- return result;
+ return result;
+ }
+ catch (Exception ex)
+ {
+ ConsoleHelper.WriteErrorLine("QueryStockInfoForEmptyTrayAsync鏌ヨ瀹炵洏搴撳瓨淇℃伅澶辫触:" + ex.Message + "\r\n" + ex.StackTrace);
+ return null;
+ }
}
/// <summary>
@@ -1695,7 +1497,7 @@
TaskState = (int)TaskInStatusEnum.Line_InFinish,
TaskType = (int)TaskInboundTypeEnum.Inbound,
TaskNum = await BaseDal.GetTaskNo(),
- Creater = "Systeam",
+ Creater = "System",
ProductionLine = result.ProductionLine,
ProcessCode = result.ProcessCode,
};
@@ -1733,7 +1535,7 @@
TaskState = (int)TaskInStatusEnum.Line_InFinish,
TaskType = (int)TaskInboundTypeEnum.InTray,
TaskNum = await BaseDal.GetTaskNo(),
- Creater = "Systeam",
+ Creater = "System",
ProductionLine = result.ProductionLine,
ProcessCode = result.ProcessCode,
};
@@ -1807,7 +1609,7 @@
}
}
- #endregion 闈欑疆寮傚父鍙e叆搴�
+ #endregion 澶栭儴鎺ュ彛鏂规硶
#endregion 澶栭儴鎺ュ彛鏂规硶
@@ -2001,7 +1803,7 @@
var taskHty = _mapper.Map<Dt_Task_Hty>(task);
taskHty.FinishTime = DateTime.Now;
taskHty.TaskId = 0;
- taskHty.OperateType = isHand ? (int)OperateTypeEnum.浜哄伐鍒犻櫎 : (int)OperateTypeEnum.鑷姩瀹屾垚;
+ taskHty.OperateType = isHand ? (int)OperateTypeEnum.浜哄伐鍒犻櫎 : App.User.UserName != null ? (int)OperateTypeEnum.浜哄伐瀹屾垚 : (int)OperateTypeEnum.鑷姩瀹屾垚;
taskHty.SourceId = task.TaskId;
if (isHand)
{
@@ -2063,32 +1865,34 @@
}
}
- if (stock.IsFull)
- {
- // 鏌ヨ绗﹀悎鏉′欢鐨勫簱瀛樹俊鎭�
- var stocks = _stockInfoRepository.QueryData(x => x.AreaCode == stock.AreaCode && x.ProductionLine == stock.ProductionLine && x.SpecialParameterDuration != stock.SpecialParameterDuration);
+ #region 鏇存柊搴撳瓨淇℃伅锛堟殏鏃朵笉闇�瑕侊級
+ //if (stock.IsFull)
+ //{
+ // // 鏌ヨ绗﹀悎鏉′欢鐨勫簱瀛樹俊鎭�
+ // var stocks = _stockInfoRepository.QueryData(x => x.AreaCode == stock.AreaCode && x.ProductionLine == stock.ProductionLine && x.SpecialParameterDuration != stock.SpecialParameterDuration);
- // 鏌ヨ浠诲姟淇℃伅
- var tasks = BaseDal.QueryData(x => x.PalletCode != stock.PalletCode && x.ProductionLine == stock.ProductionLine).Select(x => x.PalletCode).ToList();
+ // // 鏌ヨ浠诲姟淇℃伅
+ // var tasks = BaseDal.QueryData(x => x.PalletCode != stock.PalletCode && x.ProductionLine == stock.ProductionLine).Select(x => x.PalletCode).ToList();
- if (stocks != null && stocks.Count > 0)
- {
- // 杩囨护鍑洪渶瑕佹洿鏂扮殑搴撳瓨淇℃伅
- var stocksToUpdate = stocks.Where(item => !tasks.Contains(item.PalletCode)).ToList();
- foreach (var item in stocksToUpdate)
- {
- // 鏇存柊搴撳瓨淇℃伅鐨勭壒瀹氬弬鏁�
- item.SpecialParameterDuration = stock.SpecialParameterDuration;
- item.ParameterInfos = stock.ParameterInfos;
- item.OutboundTime = Convert.ToDateTime(item.LinedProcessFeedbackTime == null ? item.CreateDate : item.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(stock.SpecialParameterDuration));
- }
- if (stocksToUpdate.Count > 0)
- {
- // 寮傛鏇存柊搴撳瓨淇℃伅
- var isUpdates = await _stockInfoRepository.UpdateDataAsync(stocksToUpdate);
- }
- }
- }
+ // if (stocks != null && stocks.Count > 0)
+ // {
+ // // 杩囨护鍑洪渶瑕佹洿鏂扮殑搴撳瓨淇℃伅
+ // var stocksToUpdate = stocks.Where(item => !tasks.Contains(item.PalletCode)).ToList();
+ // foreach (var item in stocksToUpdate)
+ // {
+ // // 鏇存柊搴撳瓨淇℃伅鐨勭壒瀹氬弬鏁�
+ // item.SpecialParameterDuration = stock.SpecialParameterDuration;
+ // item.ParameterInfos = stock.ParameterInfos;
+ // item.OutboundTime = Convert.ToDateTime(item.LinedProcessFeedbackTime == null ? item.CreateDate : item.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(stock.SpecialParameterDuration));
+ // }
+ // if (stocksToUpdate.Count > 0)
+ // {
+ // // 寮傛鏇存柊搴撳瓨淇℃伅
+ // var isUpdates = await _stockInfoRepository.UpdateDataAsync(stocksToUpdate);
+ // }
+ // }
+ //}
+ #endregion
// 娣诲姞鍘嗗彶浠诲姟
var isTaskHtyAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0;
@@ -2279,7 +2083,7 @@
TaskState = flag == 3 ? (int)TaskOutStatusEnum.OutNew : (int)TaskInStatusEnum.InNew,
TaskType = flag == 0 ? (int)TaskInboundTypeEnum.Inbound : flag == 1 ? (int)TaskInboundTypeEnum.InTray : flag == 2 ? (int)TaskInboundTypeEnum.InNG : (int)TaskOutboundTypeEnum.Outbound,
TaskNum = await BaseDal.GetTaskNo(),
- Creater = "Systeam",
+ Creater = "System",
ProductionLine = productionLine,
ProcessCode = processCode
};
--
Gitblit v1.9.3