Tiger.Business.MES/BIZ/BIZ_MES_WO.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.MES/BIZ/ImportWoPlan.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Tiger.Business.MES/BIZ/BIZ_MES_WO.cs
@@ -20,6 +20,7 @@ using Tiger.Model.MES.Yada; using static Microsoft.CodeAnalysis.CSharp.SyntaxTokenParser; using Tiger.Model.Minsun; using Tiger.Model.Entitys.MES.U9C; namespace Tiger.Business.MES { @@ -131,20 +132,30 @@ return result; } var batchs = await Biz.Db.Queryable<BIZ_MES_WO_BATCH>().Where(x => x.ORDER_NO == input.Wo.ORDER_NO).ToListAsync(); if ((batchs.Count > 0 && batchs.Sum(x => x.PLAN_QTY) + input.WoBatch.PLAN_QTY > _wo.PLAN_QTY) || input.WoBatch.PLAN_QTY > _wo.PLAN_QTY) if (batchs.Count > 0) { result.IsSuccessed = false; result.LocaleMsg = new($"工单下发的数量超过工单计划数量,不能下发!"); return result; } var _batch = Biz.Db.Queryable<BIZ_MES_WO_BATCH>().Where(x => x.ORDER_NO == input.Wo.ORDER_NO && x.ACT_LINE == input.WoBatch.ACT_LINE && x.STATUS < BIZ_MES_WO.STATUSs.Closed.GetValue()).First(); if (_batch != null) { result.IsSuccessed = false; result.LocaleMsg = new($"工单[{input.Wo.ORDER_NO}]已经存在工单批次[{_batch.BATCH_NO}]在线体[{input.WoBatch.ACT_LINE}]中状态为[{_batch.STATUS.GetEnumDesc<BIZ_MES_WO.STATUSs>()}],不能下发!"); return result; if ((batchs.Sum(x => x.PLAN_QTY) + input.WoBatch.PLAN_QTY > _wo.PLAN_QTY) || input.WoBatch.PLAN_QTY > _wo.PLAN_QTY) { result.IsSuccessed = false; result.LocaleMsg = new($"工单下发的数量超过工单计划数量,不能下发!"); return result; } if (batchs.Any(x => x.ORDER_NO == input.Wo.ORDER_NO && x.ACT_LINE == input.WoBatch.ACT_LINE && x.STATUS < BIZ_MES_WO.STATUSs.Closed.GetValue())) { result.IsSuccessed = false; result.LocaleMsg = new($"工单[{input.Wo.ORDER_NO}]已经有批次存在线体[{input.WoBatch.ACT_LINE}]中,而且状态不为关闭,不能下发!"); return result; } if (batchs.Any(x => x.ORDER_NO == input.Wo.ORDER_NO && x.STATUS == BIZ_MES_WO.STATUSs.Init.GetValue() && SqlFunc.DateIsSame(x.PLAN_DATE, DateTime.Now))) { result.IsSuccessed = false; result.LocaleMsg = new($"工单[{input.Wo.ORDER_NO}]已经有批次存在计划日期相同,而且状态为[初始化],请转到工单批次中下发!"); return result; } } //WoContext.RemoveBatch(input.WoBatch.BATCH_NO); input.WoBatch.PLAN_DATE = DateTime.Now; input.Wo.PLAN_DATE += input.Wo.PLAN_DATE.Contains(input.WoBatch.PLAN_DATE.ToString("yyyy-MM-dd")) ? "" : $",{input.WoBatch.PLAN_DATE.ToString("yyyy-MM-dd")}"; input.Wo.ACT_LINE = input.WoBatch.ACT_LINE; input.Wo.RELEASE_TIME = DateTime.Now; input.Wo.RELEASE_USER = input.WoBatch.UPDATE_USER; @@ -166,7 +177,7 @@ .WhereColumns(t => new { t.ORDER_NO, t.GHOST_ROW }) .ToStorage(); y.AsInsertable.ExecuteCommand(); y.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand(); y.AsUpdateable.IgnoreColumns(x => x.ID).UpdateColumns(q=>new { q.PLAN_DATE,q.ACT_LINE,q.RELEASE_TIME,q.RELEASE_USER,q.UPDATE_TIME,q.UPDATE_USER}).ExecuteCommand(); db.Insertable(input.WoBatch).ExecuteCommand(); }); Tiger.Business.MES/BIZ/ImportWoPlan.cs
@@ -39,29 +39,64 @@ try { List<T> list = JsonConvert.DeserializeObject<List<T>>(input.EntityJson); DbClient db = Biz.Db; if (list.Any()) List<BIZ_MES_WO_BATCH> list = JsonConvert.DeserializeObject<List<BIZ_MES_WO_BATCH>>(input.EntityJson); List<BIZ_MES_WO> woList = new List<BIZ_MES_WO>(); if (list.Any(q => q.VALIDATION_TYPE != "异常")) { if (list.Count > 100) foreach (var item in list) { db.Utilities.PageEach(list, 100, pageList => item.ID = Guid.NewGuid().ToString("N"); var _batchWos = await Biz.Db.Queryable<V_MES_WO_BATCH>().Where(x => x.ORDER_NO == item.ORDER_NO).ToListAsync(); if (_batchWos.Count > 0) { var y = db.Storageable(pageList) .ToStorage(); y.AsInsertable.ExecuteCommand(); y.AsUpdateable.ExecuteCommand(); }); item.BATCH_NO = $"{item.ORDER_NO}-{(_batchWos.Max(x => x.BATCH) + 1).ToString("D2")}"; } else { item.BATCH_NO = $"{item.ORDER_NO}-01"; } BIZ_MES_WO wo = Biz.Db.Queryable<BIZ_MES_WO>().Where(x => x.ORDER_NO == item.ORDER_NO).First(); if (wo != null) { wo.PLAN_DATE += wo.PLAN_DATE.Contains(item.PLAN_DATE.ToString("yyyy-MM-dd")) ? "" : $",{item.PLAN_DATE.ToString("yyyy-MM-dd")}"; item.ITEM_CODE = wo.ITEM_CODE; item.CUST_CODE = wo.CUST_CODE; woList.Add(wo); } } else var db = Biz.Db; var dbTran = db.UseTran(() => { var s = db.Storageable(list) .ToStorage(); s.AsInsertable.ExecuteCommand(); s.AsUpdateable.ExecuteCommand(); if (list.Count > 100) { db.Utilities.PageEach(list, 100, pageList => { var y = db.Storageable(pageList) .ToStorage(); y.AsInsertable.ExecuteCommand(); y.AsUpdateable.ExecuteCommand(); }); } else { var s = db.Storageable(list) .ToStorage(); s.AsInsertable.ExecuteCommand(); s.AsUpdateable.ExecuteCommand(); } db.Updateable(woList).UpdateColumns(x => new { x.PLAN_DATE }).ExecuteCommand(); }); if (!dbTran.IsSuccess) { result.IsSuccessed = false; result.LocaleMsg = new($"保存批次工单异常"); } } else { result.IsSuccessed = false; result.LocaleMsg = new("导入数据有异常,不能导入!"); } } catch (Exception ex) @@ -91,11 +126,11 @@ { item.VALIDATION_TYPE = "新增"; item.VALIDATION_RESULT = ""; var _wo = await Biz.Db.Queryable<BIZ_MES_WO>().Where(x => x.ORDER_NO == item.ORDER_NO).FirstAsync(); if (_wo.IsNullOrEmpty()) if (!Biz.Db.Queryable<BIZ_MES_WO>().Any(x => x.ORDER_NO == item.ORDER_NO) || Biz.Db.Queryable<BIZ_MES_WO>().Any(x => x.ORDER_NO == item.ORDER_NO && x.STATUS == BIZ_MES_WO_BATCH.STATUSs.Closed.GetValue())) { item.VALIDATION_TYPE = "异常"; item.VALIDATION_RESULT = "工单不存在,不能导入计划!"; item.VALIDATION_RESULT = "工单不存在或者已经关闭,不能导入计划!"; } else {