using Apache.NMS.ActiveMQ.Commands; using Rhea.Common; using System; using System.Collections.Generic; using Newtonsoft.Json; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Tiger.IBusiness; using Tiger.Model.Minsun; using Tiger.Model; using Tiger.IBusiness.MES; using Tiger.Model.Entitys.MES.U9C; using System.Reflection; using Dm.filter; using System.Dynamic; using System.Data.Entity.Core.Metadata.Edm; using SqlSugar; namespace Tiger.Business.MES { /// /// 工单计划导入Excel /// public class ImportWoPlan : IImportWoPlan { /// /// 导入 /// /// /// /// /// public async Task Import(T newEntity, ImportInput input) where T : class, new() { var result = new ApiAction(); try { List list = JsonConvert.DeserializeObject>(input.EntityJson); List woList = new List(); if (list.Any(q => q.VALIDATION_TYPE != "异常")) { foreach (var item in list) { item.ID = Guid.NewGuid().ToString("N"); var _batchWos = await Biz.Db.Queryable().Where(x => x.ORDER_NO == item.ORDER_NO).ToListAsync(); if (_batchWos.Count > 0) { 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().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); } } var db = Biz.Db; var dbTran = db.UseTran(() => { 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) { result.CatchException(ex, $"验证导入异常"); } return result; } /// /// 导入Excel前验证 /// /// /// /// /// public async Task>> ValidateTableImport(T newEntity, ImportValidateInput input) { var result = new ApiAction>(); try { List list = JsonConvert.DeserializeObject>(input.EntityJson); List baths = list as List; List chkColumns = JsonConvert.DeserializeObject>(input.CheckJson); List wheres = JsonConvert.DeserializeObject>(input.where); //目前只有=,以后可以增加其他的查询条件 foreach (var item in baths) { item.VALIDATION_TYPE = "新增"; item.VALIDATION_RESULT = ""; if (!Biz.Db.Queryable().Any(x => x.ORDER_NO == item.ORDER_NO) || Biz.Db.Queryable().Any(x => x.ORDER_NO == item.ORDER_NO && x.STATUS == BIZ_MES_WO_BATCH.STATUSs.Closed.GetValue())) { item.VALIDATION_TYPE = "异常"; item.VALIDATION_RESULT = "工单不存在或者已经关闭,不能导入计划!"; } else { var _batchWos = await Biz.Db.Queryable().Where(x => x.ORDER_NO == item.ORDER_NO).ToListAsync(); if (_batchWos.Count > 0) { item.BATCH_NO = $"{item.ORDER_NO}-{(_batchWos.Max(x => x.BATCH) + 1).ToString("D2")}"; } else { item.BATCH_NO = $"{item.ORDER_NO}-01"; } if (item.PLAN_DATE.IsNullOrEmpty()) { item.VALIDATION_TYPE = "异常"; item.VALIDATION_RESULT += $"计划日期值为空或不存在; "; } if (item.PLAN_QTY.IsNullOrEmpty()) { item.VALIDATION_TYPE = "异常"; item.VALIDATION_RESULT += $"计划数量为空; "; } var _woBatch = await Biz.Db.Queryable().Where(x => x.ORDER_NO == item.ORDER_NO && SqlFunc.DateIsSame(x.PLAN_DATE, item.PLAN_DATE) && x.STATUS != BIZ_MES_WO_BATCH.STATUSs.Closed.GetValue()).FirstAsync(); if (!_woBatch.IsNullOrEmpty()) { item.VALIDATION_TYPE = "异常"; item.VALIDATION_RESULT += $"数据已经存在,不能更新。存在的计划数量为[{_woBatch.PLAN_QTY}]"; } } } result.Data = list; } catch (Exception ex) { result.CatchException(ex, $"验证导入异常"); } return result; } } }