public ResultDiagnose Diagnose(BaseDiagData data) { foreach (var obj in _diagList) { var ret = obj.Diagnose(data); if (ret.ResultCode == eResultDiag.Invalid_Diag_Param) continue; else if (ret.ResultCode != eResultDiag.Pass) return ret; } return new ResultDiagnose() { ResultCode = eResultDiag.Pass, ResultMessage = "正常数据" }; }
public override ResultDiagnose Diagnose(BaseDiagData data) { GRDiagData grData = data as GRDiagData; if (grData == null) { return new ResultDiagnose(){ ResultCode = eResultDiag.Invalid_Diag_Param, ResultMessage = "诊断数据错误!" }; } var grChecker = new DiagnoseHelper(); StringBuilder sbMsg = new StringBuilder(); foreach (var checker in grChecker.GRCheckHandler) { var ret = checker(grData); if (ret.ErrorCode == -1) { return new ResultDiagnose() { ResultCode = eResultDiag.Error, ResultMessage = ret.ErrorMessage }; } else if (ret.ErrorCode == 0) { continue; } else { sbMsg.Append(ret.ErrorMessage); } } if (sbMsg.Length > 0) { return new ResultDiagnose() { ResultCode = eResultDiag.Error, ResultMessage = sbMsg.ToString() }; } return new ResultDiagnose() { ResultCode = eResultDiag.Pass, ResultMessage = "数据正常" }; }
public abstract ResultDiagnose Diagnose(BaseDiagData data);
public override ResultDiagnose Diagnose(BaseDiagData data) { var ivData = data as InvoiceDiagData; if (ivData == null) { return new ResultDiagnose() { ResultCode = eResultDiag.Invalid_Diag_Param, ResultMessage = "诊断数据错误!" }; } var objs = from iv in _dbContext.ABi_Invoice join gi in _dbContext.ABi_GR_Invoice on iv.ABi_Invoice_ID equals gi.ABi_Invoice_ID join gr in _dbContext.ABi_GR on gi.ABi_GR_ID equals gr.ABi_GR_ID join v in _dbContext.ABi_Vendor on iv.ABi_Vendor_ID equals v.ABi_Vendor_ID where iv.InvoiceNumber == ivData.InvoiceNumber && v.VendorCode.Contains(ivData.VendorCode) select new { iv.InvoiceNumber, iv.Deleted, gr.GRNumber, gr.GRItemNumber, v.VendorCode }; if (objs == null || objs.Count() == 0) { return new ResultDiagnose() { ResultCode = eResultDiag.Error, ResultMessage = String.Format("供应商({0})发票({1})不存在!", ivData.VendorCode, ivData.InvoiceNumber) }; } var unmatched = new List<string[]>(); var delIVs = new List<string[]>(); foreach (var obj in objs) { var ivSwaps = from o in _dbContext.yb_invoice_report_swap where o.invoice_no == obj.InvoiceNumber && o.lifnr == obj.VendorCode && o.belnr == obj.GRNumber && o.bukrs == obj.GRItemNumber select o.invoice_no; if (ivSwaps == null || ivSwaps.Count() == 0) { if (obj.Deleted == true) { delIVs.Add(new string[] { obj.InvoiceNumber, obj.GRNumber, obj.GRItemNumber, obj.VendorCode, (obj.Deleted == true).ToString() }); } else unmatched.Add(new string[]{obj.InvoiceNumber, obj.GRNumber, obj.GRItemNumber, obj.VendorCode, (obj.Deleted == true).ToString()}); } } if (unmatched.Count > 0 || delIVs.Count > 0) { StringBuilder sbMsg = new StringBuilder(); if (unmatched.Count > 0) { sbMsg.AppendLine("以下收货信息没有同步到SAP中,请重新发送发票信息:"); foreach (var obj in unmatched) { if (obj[4].ToLower() == "true") { sbMsg.AppendFormat("\t发票号({0}), 收货({1}, {2}),供应商代码({3}) -- 已被用户删除\n", obj[0], obj[1], obj[2], obj[3]); } else sbMsg.AppendFormat("\t发票号({0}), 收货({1}, {2}),供应商代码({3})\n", obj[0], obj[1], obj[2], obj[3]); } } if (delIVs.Count > 0) { sbMsg.AppendLine("\n以下发票收货信息已经被用户删除:"); foreach (var obj in delIVs) { if (obj[4].ToLower() == "true") { sbMsg.AppendFormat("\t发票号({0}), 收货({1}, {2}),供应商代码({3}) -- 已被用户删除\n", obj[0], obj[1], obj[2], obj[3]); } else sbMsg.AppendFormat("\t发票号({0}), 收货({1}, {2}),供应商代码({3})\n", obj[0], obj[1], obj[2], obj[3]); } } return new ResultDiagnose() { ResultCode = eResultDiag.Error, ResultMessage = sbMsg.ToString() }; } return new ResultDiagnose() { ResultCode = eResultDiag.Pass, ResultMessage = String.Format("数据正常") }; }
public override ResultDiagnose Diagnose(BaseDiagData data) { var poData = data as PODiagData; if (poData == null) { return new ResultDiagnose() { ResultCode = eResultDiag.Invalid_Diag_Param, ResultMessage = "诊断数据错误!" }; } var unsyncPOs = new List<KeyValuePair<string, string>>(); var newPO = from o in _dbContext.ABi_PO where o.PONumber == poData.PONumber && o.POItemNumber.Contains(poData.POItemNumber) select o; var poObjs = from o in _dbContext.yb_po_report_swap where o.ebeln == poData.PONumber && o.ebelp == poData.POItemNumber select o; if ((poObjs == null || poObjs.Count() == 0) && (newPO == null || newPO.Count() == 0) ) { unsyncPOs.Add(new KeyValuePair<string, string>(poData.PONumber, poData.POItemNumber)); } var delPOs = new List<KeyValuePair<string, string>>(); var filteredPOs = new List<KeyValuePair<string, string>>(); var syncingPOs = new List<KeyValuePair<string, string>>(); var wrongPOs = new List<KeyValuePair<string, string>>(); foreach (var po in poObjs) { if (po.status == false) { syncingPOs.Add(new KeyValuePair<string,string>(po.ebeln, po.ebelp)); } if (newPO.FirstOrDefault(o => o.PONumber == po.ebeln && o.POItemNumber == po.ebelp) == null) { var delLog = from o in _dbContext.DelLog where o.Data.Contains(poData.PONumber) && o.Data.Contains(poData.POItemNumber) select o; if (delLog != null && delLog.Count() > 0) { delPOs.Add(new KeyValuePair<string, string>(po.ebeln, po.ebelp)); } if (po.status == true) { if (Config.getInstance().POFilterCompany.Contains(po.bukrs) && String.IsNullOrEmpty(po.matnr)) { filteredPOs.Add(new KeyValuePair<string, string>(po.ebeln, po.ebelp)); } } } var poTraces = Trace.TraceHelper.SearchTrace(new Trace.TraceQuery() { PONumber = poData.PONumber, POItemNumber = poData.POItemNumber, TraceType = Trace.eTraceType.ePOBase }); if (poTraces != null && poTraces.Count > 0) { var pt = poTraces.FirstOrDefault(o => o.Status == (int)Trace.eTraceStatus.eCommit); if (pt != null) { delPOs.Add(new KeyValuePair<string, string>(po.ebeln, po.ebelp)); } } } foreach (var po in newPO) { if (null != poObjs.FirstOrDefault(o => o.ebeln == po.PONumber && o.ebelp == po.POItemNumber)) continue; if (po.Deletion == true) { delPOs.Add(new KeyValuePair<string, string>(po.PONumber, po.POItemNumber)); } else if (!po.ABi_Vendor_ID.HasValue) { wrongPOs.Add(new KeyValuePair<string, string>(po.PONumber, po.POItemNumber)); } else { var delLog = from o in _dbContext.DelLog where o.Data.Contains(poData.PONumber) && o.Data.Contains(poData.POItemNumber) select o; if (delLog != null && delLog.Count() > 0) { delPOs.Add(new KeyValuePair<string, string>(po.PONumber, po.POItemNumber)); } } } StringBuilder sbMsg = new StringBuilder(); if (unsyncPOs.Count > 0) { sbMsg.AppendLine("以下订单没有从SAP中同步到VP中,请检查SAP中数据或相关逻辑:"); foreach (var obj in unsyncPOs) { sbMsg.AppendFormat("\t订单({0}, {1})\n", obj.Key, obj.Value); } } if (delPOs.Count > 0) { sbMsg.AppendLine("以下订单已经被用户删除:"); foreach (var obj in delPOs) { sbMsg.AppendFormat("\t订单({0}, {1})\n", obj.Key, obj.Value); } } if (filteredPOs.Count > 0) { sbMsg.AppendLine("以下订单物料编号为空,并且订单公司不在上线公司列表内,不会导入到VP中:"); foreach (var obj in filteredPOs) { sbMsg.AppendFormat("\t订单({0}, {1})\n", obj.Key, obj.Value); } } if (syncingPOs.Count > 0) { sbMsg.AppendLine("以下订单还没有同步到VP,后台同步程序正在更新:"); foreach (var obj in syncingPOs) { sbMsg.AppendFormat("\t订单({0}, {1})\n", obj.Key, obj.Value); } } if (wrongPOs.Count > 0) { sbMsg.AppendLine("以下订单数据不完整或错误:"); foreach (var obj in wrongPOs) { sbMsg.AppendFormat("\t订单({0}, {1})\n", obj.Key, obj.Value); } } if (sbMsg.Length > 0) { return new ResultDiagnose() { ResultCode = eResultDiag.Error, ResultMessage = sbMsg.ToString() }; } return new ResultDiagnose() { ResultCode = eResultDiag.Pass, ResultMessage = String.Format("数据正常", poData.PONumber, poData.POItemNumber) }; }