Tiger.Api/DbCache/DbCacheBus.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.MES/Common/WoContext.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.MES/Common/WorkBatch.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.MES/Transaction/Position.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Controllers.MES/Controllers/CacheController.MesDefect.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Controllers.MES/Controllers/CacheController.MesPosition.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Controllers.MES/Controllers/CacheController.WorkBatch.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Controllers.MES/Controllers/CacheController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.IBusiness.MES/Core/IMESContext.cs | 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.IBusiness.MES/Core/IWoContext.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.IBusiness.MES/Core/IWorkBatch.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Tiger.Api/DbCache/DbCacheBus.cs
@@ -27,6 +27,10 @@ /// è·åå²ä½ç¼å /// </summary> public static IMesPositionCache MesPosition => DI.Resolve<IMesPositionCache>(); /// <summary> /// è·å工忱 ç¼å /// </summary> public static IWoContext WorkBatch => DI.Resolve<IWoContext>(); }//endClass /// <summary> Tiger.Business.MES/Common/WoContext.cs
@@ -10,20 +10,20 @@ using Tiger.IBusiness; using Tiger.Model; using Tiger.Model.Entitys.MES.Position; using static Tiger.Business.Biz; namespace Tiger.Business { /// <summary> /// å·¥å ä¸ä¸æ /// </summary> public class WoContext public class WoContext : IWoContext { #region å·¥å管ç /// <summary> /// /// å·¥åæ¹æ¬¡ç¼ååå ¸ /// </summary> public static Dictionary<string, WorkBatch> WoBatchDic { get; set; } = new Dictionary<string, WorkBatch>(); public Dictionary<string, IWorkBatch> GetWoBatchDic() => WoBatchDic.ToDictionary(k => k.Key, v => v.Value as IWorkBatch); /// <summary> /// ä»å·¥åæ¹æ¬¡åå ¸ä¸è·åä¸ä¸ªå·¥åæ¹æ¬¡å¯¹è±¡ @@ -35,7 +35,7 @@ { if (ExistsBatch(workorder, lineCode, batchNo)) { return WoBatchDic.WhereIF(canDoWork, q => q.Value.Batch.STATUS == BIZ_MES_WO_BATCH.STATUSs.Release.GetValue() || q.Value.Batch.STATUS == BIZ_MES_WO_BATCH.STATUSs.Working.GetValue()) return WoBatchDic.WhereIF(canDoWork, q => q.Value.Batch?.STATUS == BIZ_MES_WO_BATCH.STATUSs.Release.GetValue() || q.Value.Batch?.STATUS == BIZ_MES_WO_BATCH.STATUSs.Working.GetValue()) .FirstOrDefault(q => !q.Value.Batch.IsNullOrEmpty() && q.Value.Batch.ORDER_NO == workorder && q.Value.Batch.ACT_LINE == lineCode && (batchNo.IsNullOrEmpty() || q.Value.Batch.BATCH_NO == batchNo)).Value; } return null; @@ -52,15 +52,56 @@ public static bool ExistsBatch(string workorder, string lineCode, string batchNo = "", bool canDoWork = false) { return WoBatchDic.WhereIF(canDoWork, q => !q.Value.Batch.IsNullOrEmpty() && (q.Value.Batch.STATUS == BIZ_MES_WO_BATCH.STATUSs.Release.GetValue() || q.Value.Batch.STATUS == BIZ_MES_WO_BATCH.STATUSs.Working.GetValue())) .Any(q => q.Value.Batch.ORDER_NO == workorder && q.Value.Batch.ACT_LINE == lineCode && (batchNo.IsNullOrEmpty() || q.Value.Batch.BATCH_NO == batchNo)); .Any(q => q.Value.Batch?.ORDER_NO == workorder && q.Value.Batch?.ACT_LINE == lineCode && (batchNo.IsNullOrEmpty() || q.Value.Batch?.BATCH_NO == batchNo)); } /// ä»å·¥åæ¹æ¬¡åå ¸ä¸å é¤ä¸ä¸ªå·¥åæ¹æ¬¡å¯¹è±¡ /// æ ¹æ®å·¥åå·ï¼å¢å ä¸ä¸ªå·¥å对象å°å·¥åæ¹æ¬¡åå ¸ä¸ /// </summary> /// <param name="batchNo"></param> /// <param name="workorder"></param> /// <returns></returns> public static WorkBatch Add(string workorder) { var wb = new WorkBatch(workorder).Init(""); WoBatchDic.Add(workorder, wb); return wb; } /// æ ¹æ®å·¥åå·å产线ï¼å¢å ä¸ä¸ªå·¥åæ¹æ¬¡å¯¹è±¡å°å·¥åæ¹æ¬¡åå ¸ä¸ /// </summary> /// <param name="workorder"></param> /// <param name="lineCode"></param> /// <returns></returns> public static bool RemoveWo(string workorder) public static WorkBatch Add(string workorder, string linecode) { var wb = new WorkBatch(workorder).Init(linecode); WoBatchDic.Add(wb.Batch.BATCH_NO, wb); return wb; } /// æ ¹æ®å·¥åå·ï¼å¢å ä¸ä¸ªå·¥å对象å°å·¥åæ¹æ¬¡åå ¸ä¸ /// </summary> /// <param name="workorder"></param> /// <returns></returns> public IWorkBatch AddWo(string workorder) { return Add(workorder); } /// æ ¹æ®å·¥åå·å产线ï¼å¢å ä¸ä¸ªå·¥åæ¹æ¬¡å¯¹è±¡å°å·¥åæ¹æ¬¡åå ¸ä¸ /// </summary> /// <param name="workorder"></param> /// <param name="lineCode"></param> /// <returns></returns> public IWorkBatch AddBatch(string workorder, string linecode) { return Add(workorder, linecode); } /// ä»å·¥åæ¹æ¬¡åå ¸ä¸å é¤ä¸ä¸ªå·¥åçæææ¹æ¬¡å¯¹è±¡ /// </summary> /// <param name="workorder"></param> /// <returns></returns> public static bool RemoveAll(string workorder) { try { @@ -78,12 +119,20 @@ } } /// ä»å·¥åæ¹æ¬¡åå ¸ä¸å é¤ä¸ä¸ªå·¥åçæææ¹æ¬¡å¯¹è±¡ /// </summary> /// <param name="workorder"></param> /// <returns></returns> public bool RemoveWo(string workorder) { return RemoveAll(workorder); } /// ä»å·¥åæ¹æ¬¡åå ¸ä¸å é¤ä¸ä¸ªå·¥åæ¹æ¬¡å¯¹è±¡ /// </summary> /// <param name="batchNo"></param> /// <param name="lineCode"></param> /// <returns></returns> public static bool RemoveBatch(string batchNo) public static bool Remove(string batchNo) { try { @@ -98,6 +147,15 @@ Logger.Default.Fatal(ex, $"ä»å·¥åæ¹æ¬¡åå ¸ä¸å é¤ä¸ä¸ªå·¥åæ¹æ¬¡[{batchNo}]对象å¼å¸¸"); return false; } } /// ä»å·¥åæ¹æ¬¡åå ¸ä¸å é¤ä¸ä¸ªå·¥åæ¹æ¬¡å¯¹è±¡ /// </summary> /// <param name="batchNo"></param> /// <returns></returns> public bool RemoveBatch(string batchNo) { return Remove(batchNo); } /// <summary> @@ -148,8 +206,7 @@ { if (!WoBatchDic.Any(q => q.Value.WO.ORDER_NO == wipSNs.First().WORK_ORDER)) { var wb = new WorkBatch(wipSNs.First().WORK_ORDER).Init(""); WoBatchDic.Add(wb.Batch.BATCH_NO, wb); Add(wipSNs.First().WORK_ORDER); } var wo = WoBatchDic.FirstOrDefault(q => q.Value.WO.ORDER_NO == wipSNs.First().WORK_ORDER).Value; action.Data = wo.GetNextNodes(wipSNs.First()); @@ -209,8 +266,7 @@ { if (!WoBatchDic.Any(q => q.Value.WO.ORDER_NO == wipSNs.First().WORK_ORDER)) { var wb = new WorkBatch(wipSNs.First().WORK_ORDER).Init(""); WoBatchDic.Add(wipSNs.First().BATCH_NO, wb); Add(wipSNs.First().WORK_ORDER); } var wo = WoBatchDic.FirstOrDefault(q => q.Value.WO.ORDER_NO == wipSNs.First().WORK_ORDER).Value; action.Data = new() Tiger.Business.MES/Common/WorkBatch.cs
@@ -50,7 +50,7 @@ #region Functions /// <summary> /// åå§åå·¥åèµæ /// åå§åå·¥åæ¹æ¬¡èµæ /// </summary> /// <returns></returns> public WorkBatch Init(string lineCode) @@ -63,6 +63,10 @@ return this; } /// <summary> /// æ´æ°å·¥åæ¹æ¬¡èµæ /// </summary> /// <param name="updateAll"></param> public void Update(bool updateAll = false) { var strat = DateTime.Now; Tiger.Business.MES/Transaction/Position.cs
@@ -144,8 +144,7 @@ action.LocaleMsg = new("MES.Transaction.Position.SelectOrder.BatchStatusException", input.OrderNo, batch.BATCH_NO, batch.STATUS.GetEnumDesc<BIZ_MES_WO_BATCH.STATUSs>()); return action; } var wb = new WorkBatch(input.OrderNo).Init(CurLine.LINE_CODE); WoContext.WoBatchDic.Add(wb.Batch.BATCH_NO, wb); var wb = WoContext.Add(input.OrderNo, CurLine.LINE_CODE); batchNo = wb.Batch.BATCH_NO; } CurBatch = WoContext.GetBatch(input.OrderNo, CurLine.LINE_CODE, batchNo); Tiger.Controllers.MES/Controllers/CacheController.MesDefect.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,55 @@ using Rhea.Common; using Microsoft.AspNetCore.Mvc; using System; using Tiger.IBusiness; using System.Linq; using System.Threading.Tasks; using Tiger.Api.DbCache; namespace Tiger.Api.Controllers.Base { public partial class CacheController : ControllerBase { /// <summary> /// GetMesDefect(ApiAction(Data:PARAM_CODE)) /// æ ¹æ®ä¸è¯ä»£ç è¿åä¸è¯ä»£ç 对象 /// </summary> /// <param name="action"></param> /// <returns></returns> [HttpPost("[action]")] public async Task<IActionResult> GetMesDefect([FromBody] ApiAction action) { ApiAction response; try { response = action.GetResponse(Cache.MesDefect[action.Data?.ToString() ?? ""]); } catch (System.Exception ex) { response = action.GetResponse().CatchExceptionWithLog(ex); } return Ok(response); } /// <summary> /// GetMesDefectGroup(ApiAction(Data:DFTG_CODE)) /// æ ¹æ®ä¸è¯ä»£ç ç»ä»£ç è¿åä¸è¯ä»£ç ç»å¯¹è±¡ /// </summary> /// <param name="action"></param> /// <returns></returns> [HttpPost("[action]")] public async Task<IActionResult> GetMesDefectGroup([FromBody] ApiAction action) { ApiAction response; try { response = action.GetResponse(Cache.MesDefect.Groups.FirstOrDefault(q => q.DFTG_CODE == (action.Data?.ToString() ?? ""))); } catch (Exception ex) { response = action.GetResponse().CatchExceptionWithLog(ex); } return Ok(response); } } } Tiger.Controllers.MES/Controllers/CacheController.MesPosition.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,58 @@ using Rhea.Common; using Microsoft.AspNetCore.Mvc; using System; using Tiger.IBusiness; using System.Linq; using System.Threading.Tasks; using Tiger.Model; using System.Linq.Expressions; using Tiger.Api.DbCache; namespace Tiger.Api.Controllers.Base { public partial class CacheController : ControllerBase { /// <summary> /// GetMesPosition(ApiAction(Data:POST_CODE)) /// æ ¹æ®å²ä½ä»£ç è¿åå²ä½å¯¹è±¡ /// </summary> /// <param name="action"></param> /// <returns></returns> [HttpPost("[action]")] public async Task<IActionResult> GetMesPosition([FromBody] ApiAction action) { ApiAction response; try { response = action.GetResponse(Cache.MesPosition[action.Data?.ToString() ?? ""]); } catch (System.Exception ex) { response = action.GetResponse().CatchExceptionWithLog(ex); } return Ok(response); } /// <summary> /// GetMesPositionByOper(ApiAction(Data:OPER_CODE)) /// æ ¹æ®å·¥åºç¼ç è¿åå²ä½å¯¹è±¡å表 /// </summary> /// <param name="action"></param> /// <returns></returns> [HttpPost("[action]")] public async Task<IActionResult> GetMesPositionByOper([FromBody] ApiAction action) { ApiAction response; try { response = action.GetResponse(Cache.MesPosition.Positions.Where(q => q.OPER_CODE == (action.Data?.ToString() ?? "")).ToList()); } catch (Exception ex) { response = action.GetResponse().CatchExceptionWithLog(ex); } return Ok(response); } } } Tiger.Controllers.MES/Controllers/CacheController.WorkBatch.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,96 @@ using Rhea.Common; using Microsoft.AspNetCore.Mvc; using System; using Tiger.IBusiness; using System.Linq; using System.Threading.Tasks; using Tiger.Api.DbCache; namespace Tiger.Api.Controllers.Base { public partial class CacheController : ControllerBase { /// <summary> /// GetWorkBatch(OrderOrBatch) /// æ ¹æ®å·¥åå·æè å·¥åæ¹æ¬¡å·è¿åå·¥åæ¹æ¬¡ç¼å对象å表 /// </summary> /// <param name="OrderOrBatch"></param> /// <returns></returns> [HttpGet("WorkBatch/Get")] public async Task<IActionResult> GetWorkBatch(string? OrderOrBatch) { var wbs = Cache.WorkBatch.GetWoBatchDic().Where(q => OrderOrBatch.IsNullOrEmpty() || q.Value.WO?.ORDER_NO == OrderOrBatch || q.Value.Batch?.BATCH_NO == OrderOrBatch).Select(q => q.Value).ToList(); return Ok(wbs); } /// <summary> /// AddWo(WorkOrder) /// æ ¹æ®å·¥åå·ï¼å¢å ä¸ä¸ªå·¥å对象å°å·¥åæ¹æ¬¡åå ¸ä¸ /// </summary> /// <param name="WorkOrder"></param> /// <returns></returns> [HttpGet("WorkBatch/AddWo")] public async Task<IActionResult> AddWo(string WorkOrder) { var wb = Cache.WorkBatch.AddWo(WorkOrder); return Ok(wb); } /// <summary> /// AddBatch(WorkOrder, LineCode) /// æ ¹æ®å·¥åå·å产线ï¼å¢å ä¸ä¸ªå·¥åæ¹æ¬¡å¯¹è±¡å°å·¥åæ¹æ¬¡åå ¸ä¸ /// </summary> /// <param name="WorkOrder"></param> /// <param name="LineCode"></param> /// <returns></returns> [HttpGet("WorkBatch/AddBatch")] public async Task<IActionResult> AddBatch(string? WorkOrder, string? LineCode) { var wb = Cache.WorkBatch.AddBatch(WorkOrder, LineCode); return Ok(wb); } /// <summary> /// RemoveWo(WorkOrder) /// ä»å·¥åæ¹æ¬¡åå ¸ä¸å é¤ä¸ä¸ªå·¥åçæææ¹æ¬¡å¯¹è±¡ /// </summary> /// <param name="WorkOrder"></param> /// <returns></returns> [HttpGet("WorkBatch/RemoveWo")] public async Task<IActionResult> RemoveWo(string? WorkOrder) { var result = Cache.WorkBatch.RemoveWo(WorkOrder); return Ok(result); } /// <summary> /// RemoveBatch(BatchNo) /// ä»å·¥åæ¹æ¬¡åå ¸ä¸å é¤ä¸ä¸ªå·¥åæ¹æ¬¡å¯¹è±¡ /// </summary> /// <param name="BatchNo"></param> /// <returns></returns> [HttpGet("WorkBatch/RemoveBatch")] public async Task<IActionResult> RemoveBatch(string? BatchNo) { var result = Cache.WorkBatch.RemoveBatch(BatchNo); return Ok(result); } /// <summary> /// Update(BatchNo) /// ä»å·¥åæ¹æ¬¡åå ¸ä¸å é¤ä¸ä¸ªå·¥åæ¹æ¬¡å¯¹è±¡ /// </summary> /// <param name="BatchNo"></param> /// <returns></returns> [HttpGet("WorkBatch/Update")] public async Task<IActionResult> UpdateWorkBatch(string? BatchNo) { var wb = Cache.WorkBatch.GetWoBatchDic().Where(q => q.Value.Batch?.BATCH_NO == (BatchNo ?? "")).FirstOrDefault().Value; if (!wb.IsNullOrEmpty()) { wb.Update(true); } return Ok(wb); } } } Tiger.Controllers.MES/Controllers/CacheController.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Tiger.Api.Controllers.Base { /// <summary> /// CacheController /// </summary> [Route("api/[controller]/")] [EnableCors("Any")] [ApiController] public partial class CacheController : ControllerBase { } } Tiger.IBusiness.MES/Core/IMESContext.cs
Tiger.IBusiness.MES/Core/IWoContext.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,48 @@ using Microsoft.AspNetCore.Http; using Rhea.Common; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text; using System.Threading.Tasks; using Tiger.Model; namespace Tiger.IBusiness { public interface IWoContext { /// <summary> /// å·¥åæ¹æ¬¡ç¼ååå ¸ /// </summary> /// <returns></returns> public Dictionary<string, IWorkBatch> GetWoBatchDic(); /// æ ¹æ®å·¥åå·å产线ï¼å¢å ä¸ä¸ªå·¥å对象å°å·¥åæ¹æ¬¡åå ¸ä¸ /// </summary> /// <param name="workorder"></param> /// <returns></returns> public IWorkBatch AddWo(string workorder); /// æ ¹æ®å·¥åå·å产线ï¼å¢å ä¸ä¸ªå·¥åæ¹æ¬¡å¯¹è±¡å°å·¥åæ¹æ¬¡åå ¸ä¸ /// </summary> /// <param name="workorder"></param> /// <param name="lineCode"></param> /// <returns></returns> public IWorkBatch AddBatch(string workorder, string linecode); /// ä»å·¥åæ¹æ¬¡åå ¸ä¸å é¤ä¸ä¸ªå·¥åæ¹æ¬¡å¯¹è±¡ /// </summary> /// <param name="batchNo"></param> /// <param name="lineCode"></param> /// <returns></returns> public bool RemoveWo(string workorder); /// ä»å·¥åæ¹æ¬¡åå ¸ä¸å é¤ä¸ä¸ªå·¥åæ¹æ¬¡å¯¹è±¡ /// </summary> /// <param name="batchNo"></param> /// <param name="lineCode"></param> /// <returns></returns> public bool RemoveBatch(string batchNo); } } Tiger.IBusiness.MES/Core/IWorkBatch.cs
@@ -29,6 +29,11 @@ public List<BAS_DEFECT> Defects { get; } /// <summary> /// æ´æ°å·¥åæ¹æ¬¡èµæ /// </summary> /// <param name="updateAll"></param> public void Update(bool updateAll = false); /// <summary> /// å·¥åå¼å·¥ /// </summary> /// <param name="user"></param>