public void WhenInvalid() { Inventor context = new Inventor("Nikola Tesla", new DateTime(1856, 7, 9), "Serbian"); IValidationErrors errors = new ValidationErrors(); ErrorMessageAction action = new ErrorMessageAction("{0}, {1}", "errors"); action.Parameters = new IExpression[] {Expression.Parse("Name"), Expression.Parse("Nationality")}; action.Execute(false, context, null, errors); Assert.IsFalse(errors.IsEmpty); Assert.AreEqual(1, errors.GetErrors("errors").Count); Assert.AreEqual(context.Name + ", " + context.Nationality, errors.GetResolvedErrors("errors", new NullMessageSource())[0]); }
public void FalseScalarExpression() { Inventor tesla = new Inventor(); tesla.Name = "Soltan Gris"; ConditionValidator validator = new ConditionValidator(Expression.Parse("Name == 'Nikola Tesla'"), null); validator.Actions = new ErrorMessageAction[] {new ErrorMessageAction("Wrong name", "InventorValidator") }; IValidationErrors errors = new ValidationErrors(); Assert.IsFalse(validator.Validate(tesla, errors)); Assert.IsFalse(errors.IsEmpty); IList<string> namedErrors = errors.GetResolvedErrors("InventorValidator", new NullMessageSource()); Assert.AreEqual(1, namedErrors.Count); string error = (string) namedErrors[0]; Assert.AreEqual("Wrong name", error); }
/// <summary> /// 创建一个菜单 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="db">数据库上下文</param> /// <param name="entity">一个菜单</param> /// <returns></returns> public bool Create(ref ValidationErrors validationErrors, SysEntities db, SysMenu entity) { int count = 1; foreach (string item in entity.SysOperationId.GetIdSort()) { SysOperation sys = new SysOperation { Id = item }; db.SysOperation.Attach(sys); entity.SysOperation.Add(sys); count++; } repository.Create(db, entity); if (count == repository.Save(db)) { //创建后重置菜单编码 List<int> flags = new List<int>();//层级 GetMenus2(null, flags); db.SaveChanges(); return true; } else { validationErrors.Add("创建出错了"); } return false; }
public void Size_WithShallowErrors() { ValidationErrors errors = new ValidationErrors(); errors.AddError("country_name", new ValidationError("country_name", "1", "invalid country")); errors.AddError("another_field", new ValidationError("another_field", "2", "another message")); Assert.AreEqual(2, errors.Count); }
public override void Validate(string value, ValidationErrors errors) { if (!IsPresent(value)) { errors.Add(Key,ErrorMessage); } }
/// <summary> /// 创建一个人员 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="db">数据库上下文</param> /// <param name="entity">一个人员</param> /// <returns></returns> public bool Create(ref ValidationErrors validationErrors, SysEntities db, SysPerson entity) { int count = 1; foreach (string item in entity.SysRoleId.GetIdSort()) { SysRole sys = new SysRole { Id = item }; db.SysRole.Attach(sys); entity.SysRole.Add(sys); count++; } foreach (string item in entity.SysDocumentId.GetIdSort()) { SysDocument sys = new SysDocument { Id = item }; db.SysDocument.Attach(sys); entity.SysDocument.Add(sys); count++; } repository.Create(db, entity); if (count == repository.Save(db)) { return true; } else { validationErrors.Add("创建出错了"); } return false; }
public void WithNegativeNumber() { RequiredValidator validator = new RequiredValidator(); validator.Test = Expression.Parse("-100"); IValidationErrors errors = new ValidationErrors(); Assert.IsTrue(validator.Validate(null, errors)); }
public void WithNull() { RequiredValidator validator = new RequiredValidator(); validator.Test = Expression.Parse("null"); IValidationErrors errors = new ValidationErrors(); Assert.IsFalse(validator.Validate(null, errors)); }
public bool Create(ref ValidationErrors errors, SysModuleOperateModel model) { try { SysModuleOperate entity = m_Rep.GetById(model.Id); if (entity != null) { errors.Add(Suggestion.PrimaryRepeat); return false; } entity = new SysModuleOperate(); entity.Id = model.Id; entity.Name = model.Name; entity.KeyCode = model.KeyCode; entity.ModuleId = model.ModuleId; entity.IsValid = model.IsValid; entity.Sort = model.Sort; if (m_Rep.Create(entity) == 1) { return true; } else { errors.Add(Suggestion.InsertFail); return false; } } catch (Exception ex) { errors.Add(ex.Message); ExceptionHander.WriteException(ex); return false; } }
public void OnField_WithValidationError() { ValidationErrors errors = new ValidationErrors(); errors.AddError("country_name", new ValidationError("country_name", "91803", "invalid country")); Assert.AreEqual(ValidationErrorCode.ADDRESS_COUNTRY_NAME_IS_NOT_ACCEPTED, errors.OnField("country_name")[0].Code); Assert.AreEqual("invalid country", errors.OnField("country_name")[0].Message); }
public bool Delete(ref ValidationErrors errors, string id) { try { //检查是否有下级 if (dbContainer.SysModules.AsQueryable().Where(a => a.SysModule2.Id == id).Count() > 0) { errors.Add("有下属关联,请先删除下属!"); return false; } m_Rep.Delete(dbContainer, id); if (dbContainer.SaveChanges() > 0) { //清理无用的项 dbContainer.P_Sys_ClearUnusedRightOperate(); return true; } else { return false; } } catch (Exception ex) { errors.Add(ex.Message); ExceptionHander.WriteException(ex); return false; } }
public void Validate(string password, string salt, string hashedPassword, ValidationErrors errors) { if (RequiredValidator.IsPresent(password))//dont check salt and hashedPassword IsPresent { if (!new StringHasher().ComputedHashUsingGivenSaltMatchesGivenHash( password, salt, hashedPassword)) errors.Add(Key, ErrorMessage); } }
public StudyIntegrityValidationFailure(ValidationErrors error, ValidationStudyInfo validationStudyInfo, string details) : base(details) { Platform.CheckForNullReference(validationStudyInfo, "validationStudyInfo"); _error = error; _validationStudyInfo = validationStudyInfo; }
public override void Validate(string value, ValidationErrors errors) { if (RequiredValidator.IsPresent(value)) { if(value.Length > _maxLength || value.Length < _minLength) errors.Add(Key,ErrorMessage); } }
public override void Validate(string guidstring, ValidationErrors errors) { Guid guid; if (!Guid.TryParse(guidstring, out guid)) { errors.Add(Key, ErrorMessage); } }
public void ForObject_WithNestedErrors() { ValidationErrors addressErrors = new ValidationErrors(); addressErrors.AddError("country_name", new ValidationError("country_name", "91803", "invalid country")); ValidationErrors errors = new ValidationErrors(); errors.AddErrors("address", addressErrors); Assert.AreEqual(ValidationErrorCode.ADDRESS_COUNTRY_NAME_IS_NOT_ACCEPTED, errors.ForObject("address").OnField("country_name")[0].Code); Assert.AreEqual("invalid country", errors.ForObject("address").OnField("country_name")[0].Message); }
public override void Validate(string value, ValidationErrors errors) { if (RequiredValidator.IsPresent(value)) { Regex regex = new Regex(_pattern); if (!regex.IsMatch(value.Trim())) errors.Add(Key,ErrorMessage); } }
public void ForObject_WorksWithAllCommonCasing() { ValidationErrors nestedErrors = new ValidationErrors(); ValidationErrors errors = new ValidationErrors(); errors.AddErrors("credit-card", nestedErrors); Assert.AreEqual(nestedErrors, errors.ForObject("credit-card")); Assert.AreEqual(nestedErrors, errors.ForObject("credit_card")); Assert.AreEqual(nestedErrors, errors.ForObject("creditCard")); Assert.AreEqual(nestedErrors, errors.ForObject("CreditCard")); }
public void OnField_WorksWithAllCommonCasing() { ValidationError fieldError = new ValidationError("", "1", ""); ValidationErrors errors = new ValidationErrors(); errors.AddError("country_name", fieldError); Assert.AreEqual(fieldError, errors.OnField("country_name")[0]); Assert.AreEqual(fieldError, errors.OnField("country-name")[0]); Assert.AreEqual(fieldError, errors.OnField("countryName")[0]); Assert.AreEqual(fieldError, errors.OnField("CountryName")[0]); }
public void ShouldBuildAnElementFromErrors() { var error = new ValidationError("some error"); var errors = new ValidationErrors<ParentInput>().Add(x => x.Child, error); var elementProvider = new Testable(typeof(NodeProvider<ParentInput>)).Create(); var node = (NodeElement)elementProvider.With(errors).Build(); Assert.That(node.Id, Is.Empty); var childElement = (LeafElement)node.Elements["Child"]; Assert.That(childElement.Error, Is.EqualTo(error)); }
public override void Validate(string value, ValidationErrors errors) { if (RequiredValidator.IsPresent(value)) { int result = int.MaxValue; if (!int.TryParse(value, out result)) { //errors.Add(Key,ErrorMessage); } } }
/// <summary> /// 创建一个文档评论 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="db">数据库上下文</param> /// <param name="entity">一个文档评论</param> /// <returns></returns> public bool Create(ref ValidationErrors validationErrors, SysDocumentTalk entity) { try { repository.Create(entity); return true; } catch (Exception ex) { validationErrors.Add(ex.Message); ExceptionsHander.WriteExceptions(ex); } return false; }
void ValidateNeedsLabels(Issue issue, ValidationErrors validationErrors, Repository repository) { var lastActivityOnIssue = issue.UpdatedAt; //todo: does this include comments? if (issue.Labels.Any(l => l.Name == "Type: Bug") && !issue.Labels.Any(l => l.Name.StartsWith("Needs:"))) { if (lastActivityOnIssue < DateTime.UtcNow.AddDays(-3)) { validationErrors.Add(new ValidationError { Reason = "This bug doesn't seem to be triaged, use one of the `Needs: X` labels to remember what the next steps are", Issue = issue, Repository = repository }); } return; } if (issue.Labels.Any(l => l.Name == "Needs: Triage") && lastActivityOnIssue < DateTime.UtcNow.AddDays(-3)) { validationErrors.Add(new ValidationError { Reason = "Issue needs triage but hasn't been updated for 3 days", Issue = issue, Repository = repository }); } if (issue.Labels.Any(l => l.Name == "Needs: Reproduction") && lastActivityOnIssue < DateTime.UtcNow.AddDays(-7)) { validationErrors.Add(new ValidationError { Reason = "Issue needs a repro but hasn't been touched in the last 7 days", Issue = issue, Repository = repository }); } if (issue.Labels.Any(l => l.Name == "Needs: Scheduling") && lastActivityOnIssue < DateTime.UtcNow.AddMonths(-3)) { validationErrors.Add(new ValidationError { Reason = "Issue needs scheduling but hasn't been touched in the last 3 months", Issue = issue, Repository = repository }); } }
public void Validate(string val, string compareVal, ValidationErrors errors) { if (RequiredValidator.IsPresent(val))//dont check compareVal IsPresent { if (!errors.ExistFor(Key)) { //only if there are no errors for val, do the compare //so need to call this after running all validations of val to achieve this effect if (val != compareVal) { errors.Add(Key,ErrorMessage); } } } }
public override void Validate(string value, ValidationErrors errors) { if (RequiredValidator.IsPresent(value)) { int result = int.MaxValue; if (!int.TryParse(value, out result)) { errors.Add(Key,ErrorMessage); } else { if (result > _maxValue || result < _minValue) errors.Add(Key,ErrorMessageOutOfRange); } } }
public void DeepCount_WithNestedErrors() { ValidationErrors addressErrors = new ValidationErrors(); addressErrors.AddError("country_name", new ValidationError("country_name", "1", "invalid country")); addressErrors.AddError("another_field", new ValidationError("another_field", "2", "another message")); ValidationErrors errors = new ValidationErrors(); errors.AddError("some_field", new ValidationError("some_field", "3", "some message")); errors.AddErrors("address", addressErrors); Assert.AreEqual(3, errors.DeepCount); Assert.AreEqual(1, errors.Count); Assert.AreEqual(2, errors.ForObject("address").DeepCount); Assert.AreEqual(2, errors.ForObject("address").Count); }
/// <summary> /// 将异常信息写入数据库,或者文本文件 /// </summary> /// <param name="ex"></param> public static void WriteExceptions(Exception ex) { SysException sysException = new SysException(); sysException.CreateTime = DateTime.Now; sysException.Remark = ex.StackTrace; sysException.Message = ex.Message; sysException.LeiXing = "异常"; sysException.Message = (ex.InnerException == null) ? string.Empty : ex.InnerException.Message; sysException.Id = Result.GetNewId(); using (SysExceptionBLL sysExceptionRepository = new SysExceptionBLL()) { ValidationErrors validationErrors = new ValidationErrors(); sysExceptionRepository.Create(ref validationErrors, sysException); return; } }
public static void WriteServiceLog(string message, string logType, LogOpration logOpration = LogOpration.Default) { try { //logOpration设置优先级高于配置节logEnabled bool logEnabled = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["LogEnabled"]); if (logOpration == LogOpration.Fobid || (logOpration == LogOpration.Default && !logEnabled)) { return; } else if (logOpration == LogOpration.Start || (logOpration == LogOpration.Default && logEnabled)) { SysLog sysLog = new SysLog(); sysLog.Id = Result.GetNewId(); sysLog.CreateTime = DateTime.Now; sysLog.Ip = GetIP(); sysLog.Message = message; sysLog.CreatePerson = AccountModel.GetCurrentPerson(); sysLog.MenuId = logType;//哪个模块生成的日志 ISysLogBLL sysLogRepository = new SysLogBLL(); ValidationErrors validationErrors = new ValidationErrors(); sysLogRepository.Create(ref validationErrors, sysLog); return; } } catch (Exception ep) { try { string path = @"mylog.txt"; string txtPath = System.Web.HttpContext.Current.Server.MapPath(path);//获取绝对路径 using (StreamWriter sw = new StreamWriter(txtPath, true, Encoding.Default)) { sw.WriteLine((ep.Message + "|" + message + "|" + GetIP() + DateTime.Now.ToString()).ToString()); sw.Close(); } return; } catch { return; } } }
public bool Create(ref ValidationErrors errors, SysModuleModel model) { try { SysModule entity = m_Rep.GetById(model.Id); if (entity != null) { errors.Add(Suggestion.PrimaryRepeat); return false; } entity = new SysModule(); entity.Id = model.Id; entity.Name = model.Name; entity.EnglishName = model.EnglishName; entity.ParentId = model.ParentId; entity.Url = model.Url; entity.Iconic = model.Iconic; entity.Sort = model.Sort; entity.Remark = model.Remark; entity.Enable = model.Enable; entity.CreatePerson = model.CreatePerson; entity.CreateTime = model.CreateTime; entity.IsLast = model.IsLast; if (m_Rep.Create(entity) == 1) { //分配给角色 dbContainer.P_Sys_InsertSysRight(); return true; } else { errors.Add(Suggestion.InsertFail); return false; } } catch (Exception ex) { errors.Add(ex.Message); ExceptionHander.WriteException(ex); return false; } }
public virtual void Modify(ref ValidationErrors errors, Apps.Models.SCV.SHIPPING.SHIPPING_CONTAINER_MODEL model, params string[] updateProperties) { Apps.Models.SHIPPING_CONTAINER entity = m_Rep.GetById(model.INTERNAL_CONTAINER_NUM); if (entity == null) { errors.Add(Resource.Disable); return; } if (updateProperties.Count() <= 0) { entity.INTERNAL_CONTAINER_NUM = model.INTERNAL_CONTAINER_NUM; entity.CONTAINER_ID = model.CONTAINER_ID; entity.WAREHOUSE = model.WAREHOUSE; entity.CONTAINER_TYPE = model.CONTAINER_TYPE; entity.CONTAINER_CLASS = model.CONTAINER_CLASS; entity.STATUS = model.STATUS; entity.PARENT = model.PARENT; entity.WEIGHT = model.WEIGHT; entity.WEIGHT_UM = model.WEIGHT_UM; entity.VOLUME = model.VOLUME; entity.LENGTH = model.LENGTH; entity.WIDTH = model.WIDTH; entity.HEIGHT = model.HEIGHT; entity.DIMENSION_UM = model.DIMENSION_UM; entity.VOLUME_UM = model.VOLUME_UM; entity.VALUE = model.VALUE; entity.INTERNAL_SHIPMENT_NUM = model.INTERNAL_SHIPMENT_NUM; entity.INTERNAL_SHIPMENT_LINE_NUM = model.INTERNAL_SHIPMENT_LINE_NUM; entity.COMPANY = model.COMPANY; entity.ITEM = model.ITEM; entity.QUANTITY = model.QUANTITY; entity.QUANTITY_UM = model.QUANTITY_UM; entity.TRACKING_NUMBER = model.TRACKING_NUMBER; entity.USER_DEF1 = model.USER_DEF1; entity.USER_DEF2 = model.USER_DEF2; entity.USER_DEF3 = model.USER_DEF3; entity.USER_DEF4 = model.USER_DEF4; entity.USER_DEF5 = model.USER_DEF5; entity.USER_DEF6 = model.USER_DEF6; entity.USER_DEF7 = model.USER_DEF7; entity.USER_DEF8 = model.USER_DEF8; entity.USER_STAMP = model.USER_STAMP; entity.DATE_TIME_STAMP = model.DATE_TIME_STAMP; entity.GROUP_POSITION = model.GROUP_POSITION; entity.INTERNAL_WAVE_NUM = model.INTERNAL_WAVE_NUM; entity.CONTAINER_COUNT_NUMBER = model.CONTAINER_COUNT_NUMBER; entity.CONTAINER_COUNT_TOTAL = model.CONTAINER_COUNT_TOTAL; entity.GROUP_NUM = model.GROUP_NUM; entity.PARENT_CONTAINER_ID = model.PARENT_CONTAINER_ID; entity.INTERNAL_SHIP_ALLOC_NUM = model.INTERNAL_SHIP_ALLOC_NUM; entity.TASK_CREATED = model.TASK_CREATED; entity.ATTRIBUTE_NUM = model.ATTRIBUTE_NUM; entity.ORIGINAL_PICK_LOC = model.ORIGINAL_PICK_LOC; entity.ATTRIBUTE1 = model.ATTRIBUTE1; entity.ATTRIBUTE2 = model.ATTRIBUTE2; entity.ATTRIBUTE3 = model.ATTRIBUTE3; entity.ATTRIBUTE4 = model.ATTRIBUTE4; entity.ATTRIBUTE5 = model.ATTRIBUTE5; entity.ATTRIBUTE6 = model.ATTRIBUTE6; entity.ATTRIBUTE7 = model.ATTRIBUTE7; entity.ATTRIBUTE8 = model.ATTRIBUTE8; entity.PROCESS_STAMP = model.PROCESS_STAMP; entity.PACKING_CLASS = model.PACKING_CLASS; entity.SHIPMENT_ID = model.SHIPMENT_ID; entity.TRANS_CONT_ID = model.TRANS_CONT_ID; entity.OQC_BENCH = model.OQC_BENCH; entity.OQCED = model.OQCED; entity.OQC_USER = model.OQC_USER; entity.OQC_START_DATE_TIME = model.OQC_START_DATE_TIME; entity.OQC_END_DATE_TIME = model.OQC_END_DATE_TIME; entity.SYSTEM_CREATED = model.SYSTEM_CREATED; entity.SCANNED_QTY = model.SCANNED_QTY; } else { Type type = typeof(Apps.Models.SCV.SHIPPING.SHIPPING_CONTAINER_MODEL); Type typeE = typeof(Apps.Models.SHIPPING_CONTAINER); foreach (var item in updateProperties) { System.Reflection.PropertyInfo pi = type.GetProperty(item); System.Reflection.PropertyInfo piE = typeE.GetProperty(item); piE.SetValue(entity, pi.GetValue(model), null); } } m_Rep.Modify(entity, updateProperties); }
private async Task <bool> Validate() { var validationErrors = new ValidationErrors(); await Task.Run(() => { // Current Weight if (CurrentWeightValue == 0) { validationErrors.Add( string.Format(TextResources.Required_IsMandatory, TextResources.WeightLossGoal)); } else if (CurrentWeightValue < App.Configuration.AppConfig.MINIMUM_WEIGHT_LOSE) { validationErrors.Add(string.Format(TextResources.Validation_MustBeMoreThan, TextResources.WeightLossGoal, App.Configuration.AppConfig.MINIMUM_WEIGHT_LOSE)); } if (GoalAchieved) { // Front Photo if (ImageFront == null || ImageFront.Trim().Length == 0 || ImageFront == ImageDefault) { validationErrors.Add(string.Format(TextResources.Required_MustBeSelected, TextResources.FrontPhoto)); } // Side Photo if (ImageSide == null || ImageSide.Trim().Length == 0 || ImageSide == ImageDefault) { validationErrors.Add(string.Format(TextResources.Required_MustBeSelected, TextResources.SidePhoto)); } //Gender if (IsGenderRequired && !IsGenderSelected) { validationErrors.Add(string.Format(TextResources.Required_MustBeSelected, TextResources.Gender)); } // T-Shirt Size if (TShirtSize == null || TShirtSize.Trim().Length == 0) { validationErrors.Add(string.Format(TextResources.Required_MustBeSelected, TextResources.TShirtSize)); } // Why you want to join if (AboutYourJourney == null || AboutYourJourney.Trim().Length == 0) { validationErrors.Add(string.Format(TextResources.Required_IsMandatory, TextResources.AboutYourJourney)); } } }); if (validationErrors.Count() > 0) { if (validationErrors.Count() > 2) { SetActivityResource(true, false, false, true, string.Empty, string.Empty, TextResources.SubmissionProblem + "\n" + TextResources.PleaseReviewAllInputsAreMandatory); } else { SetActivityResource(true, false, false, true, string.Empty, string.Empty, TextResources.SubmissionProblem + "\n" + validationErrors.Show("\n")); } } return(validationErrors.Count() == 0); }
public bool ImportExcelData(string oper, string filePath, ref ValidationErrors errors) { bool rtn = true; var targetFile = new FileInfo(filePath); if (!targetFile.Exists) { errors.Add("导入的数据文件不存在"); return(false); } var excelFile = new ExcelQueryFactory(filePath); using (XLWorkbook wb = new XLWorkbook(filePath)) { //第一个Sheet using (IXLWorksheet wws = wb.Worksheets.First()) { //对应列头 excelFile.AddMapping <WMS_Product_EntryModel>(x => x.ProductBillNum, "入库单号(业务)"); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.EntryBillNum, "入库单号(系统)"); excelFile.AddMapping <WMS_Product_EntryModel>(x => x.Department, "本货部门"); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.Partid, "物料"); excelFile.AddMapping <WMS_Product_EntryModel>(x => x.PartCode, "物料编码"); excelFile.AddMapping <WMS_Product_EntryModel>(x => x.ProductQty, "数量"); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.InvId, "库存"); excelFile.AddMapping <WMS_Product_EntryModel>(x => x.InvName, "库房"); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.SubInvId, "子库存"); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.Remark, "备注"); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.Attr1, ""); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.Attr2, ""); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.Attr3, ""); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.Attr4, ""); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.Attr5, ""); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.CreatePerson, "创建人"); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.CreateTime, "创建时间"); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.ModifyPerson, "修改人"); //excelFile.AddMapping<WMS_Product_EntryModel>(x => x.ModifyTime, "修改时间"); //SheetName,第一个Sheet var excelContent = excelFile.Worksheet <WMS_Product_EntryModel>(0); //开启事务 using (DBContainer db = new DBContainer()) { var tran = db.Database.BeginTransaction(); //开启事务 int rowIndex = 0; string productBillNum = null; //检查数据正确性 foreach (var row in excelContent) { rowIndex += 1; string errorMessage = String.Empty; var model = new WMS_Product_EntryModel(); model.Id = row.Id; model.ProductBillNum = row.ProductBillNum; productBillNum = row.ProductBillNum; model.EntryBillNum = row.EntryBillNum; model.Department = row.Department; //model.Partid = row.Partid; model.PartCode = row.PartCode; model.ProductQty = row.ProductQty; //model.InvId = row.InvId; model.InvName = row.InvName; //model.SubInvId = row.SubInvId; model.Remark = row.Remark; model.Attr1 = row.Attr1; model.Attr2 = row.Attr2; model.Attr3 = row.Attr3; model.Attr4 = row.Attr4; model.Attr5 = row.Attr5; model.CreatePerson = row.CreatePerson; model.CreateTime = row.CreateTime; model.ModifyPerson = row.ModifyPerson; model.ModifyTime = row.ModifyTime; if (!String.IsNullOrEmpty(errorMessage)) { rtn = false; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; continue; } //执行额外的数据校验 try { AdditionalCheckExcelData(db, ref model); } catch (Exception ex) { rtn = false; errorMessage = ex.Message; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; continue; } //写入数据库 WMS_Product_Entry entity = new WMS_Product_Entry(); entity.Id = model.Id; entity.ProductBillNum = model.ProductBillNum; entity.EntryBillNum = model.EntryBillNum; //entity.EntryBillNum = "ZZJ" + DateTime.Now.ToString("yyyyMMddHHmmssff"); entity.Department = model.Department; entity.Partid = model.Partid; entity.ProductQty = model.ProductQty; entity.InvId = model.InvId; //entity.SubInvId = model.SubInvId; entity.Remark = model.Remark; //entity.Attr1 = model.Attr1; //entity.Attr2 = model.Attr2; //entity.Attr3 = model.Attr3; //entity.Attr4 = model.Attr4; //entity.Attr5 = model.Attr5; entity.CreatePerson = oper; entity.CreateTime = DateTime.Now; entity.ModifyPerson = oper; entity.ModifyTime = DateTime.Now; db.WMS_Product_Entry.Add(entity); try { db.SaveChanges(); } catch (Exception ex) { rtn = false; //将当前报错的entity状态改为分离,类似EF的回滚(忽略之前的Add操作) db.Entry(entity).State = System.Data.Entity.EntityState.Detached; errorMessage = ex.InnerException.InnerException.Message; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; } } if (rtn) { //全部保存成功后,调用存储过程“P_WMS_ProcessProductEntry”入库。 ObjectParameter returnValue = new ObjectParameter("ReturnValue", typeof(string)); db.P_WMS_ProcessProductEntry(oper, productBillNum, returnValue); if (returnValue.Value == DBNull.Value) { tran.Commit(); } else { tran.Rollback(); errors.Add((string)returnValue.Value); } //tran.Commit(); //必须调用Commit(),不然数据不会保存 } else { tran.Rollback(); //出错就回滚 } } } wb.Save(); } return(rtn); }
/// <summary> /// 校验Excel数据,这个方法一般用于重写校验逻辑 /// </summary> public virtual bool CheckImportData(string fileName, List <SysModuleOperateModel> list, ref ValidationErrors errors) { var targetFile = new FileInfo(fileName); if (!targetFile.Exists) { errors.Add("导入的数据文件不存在"); return(false); } var excelFile = new ExcelQueryFactory(fileName); //对应列头 excelFile.AddMapping <SysModuleOperateModel>(x => x.Name, "Name"); excelFile.AddMapping <SysModuleOperateModel>(x => x.KeyCode, "KeyCode"); excelFile.AddMapping <SysModuleOperateModel>(x => x.ModuleId, "ModuleId"); excelFile.AddMapping <SysModuleOperateModel>(x => x.IsValid, "IsValid"); excelFile.AddMapping <SysModuleOperateModel>(x => x.Sort, "Sort"); //SheetName var excelContent = excelFile.Worksheet <SysModuleOperateModel>(0); int rowIndex = 1; //检查数据正确性 foreach (var row in excelContent) { var errorMessage = new StringBuilder(); var entity = new SysModuleOperateModel(); entity.Id = row.Id; entity.Name = row.Name; entity.KeyCode = row.KeyCode; entity.ModuleId = row.ModuleId; entity.IsValid = row.IsValid; entity.Sort = row.Sort; //============================================================================= if (errorMessage.Length > 0) { errors.Add(string.Format( "第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); } list.Add(entity); rowIndex += 1; } if (errors.Count > 0) { return(false); } return(true); }
private void DiscoverInternal(JSchema schema, string latestPath) { if (schema.Reference != null) { return; } if (_knownSchemas.Any(s => s.Schema == schema)) { return; } Uri newScopeId; string scopePath = latestPath; Uri schemaKnownId = GetSchemaIdAndNewScopeId(schema, ref scopePath, out newScopeId); // check whether a schema with the resolved id is already known // this will be hit when a schema contains duplicate ids or references a schema with a duplicate id bool existingSchema = _knownSchemas.Any(s => UriComparer.Instance.Equals(s.Id, schemaKnownId)); #if DEBUG if (_knownSchemas.Any(s => s.Schema == schema)) { throw new InvalidOperationException("Schema with id '{0}' already a known schema.".FormatWith(CultureInfo.InvariantCulture, schemaKnownId)); } #endif // add schema to known schemas whether duplicate or not to avoid multiple errors // the first schema with a duplicate id will be used _knownSchemas.Add(new KnownSchema(schemaKnownId, schema, _state)); if (existingSchema) { if (ValidationErrors != null) { ValidationError error = ValidationError.CreateValidationError($"Duplicate schema id '{schemaKnownId.OriginalString}' encountered.", ErrorType.Id, schema, null, schemaKnownId, null, schema, schema.Path); ValidationErrors.Add(error); } } _pathStack.Push(new SchemaPath(newScopeId, scopePath)); // discover should happen in the same order as writer except extension data (e.g. definitions) if (schema._extensionData != null) { foreach (KeyValuePair <string, JToken> valuePair in schema._extensionData) { DiscoverTokenSchemas(EscapePath(valuePair.Key), valuePair.Value); } } DiscoverSchema(Constants.PropertyNames.AdditionalProperties, schema.AdditionalProperties); DiscoverSchema(Constants.PropertyNames.AdditionalItems, schema.AdditionalItems); DiscoverDictionarySchemas(Constants.PropertyNames.Properties, schema._properties); DiscoverDictionarySchemas(Constants.PropertyNames.PatternProperties, schema._patternProperties); DiscoverDictionarySchemas(Constants.PropertyNames.Dependencies, schema._dependencies); DiscoverArraySchemas(Constants.PropertyNames.Items, schema._items); DiscoverArraySchemas(Constants.PropertyNames.AllOf, schema._allOf); DiscoverArraySchemas(Constants.PropertyNames.AnyOf, schema._anyOf); DiscoverArraySchemas(Constants.PropertyNames.OneOf, schema._oneOf); DiscoverSchema(Constants.PropertyNames.Not, schema.Not); _pathStack.Pop(); }
/// <summary> /// 校验Excel数据,这个方法一般用于重写校验逻辑 /// </summary> public virtual bool CheckImportData(string fileName, List <Flow_FormContentModel> list, ref ValidationErrors errors) { var targetFile = new FileInfo(fileName); if (!targetFile.Exists) { errors.Add("导入的数据文件不存在"); return(false); } var excelFile = new ExcelQueryFactory(fileName); //对应列头 excelFile.AddMapping <Flow_FormContentModel>(x => x.Title, "标题"); excelFile.AddMapping <Flow_FormContentModel>(x => x.UserId, "发起用户"); excelFile.AddMapping <Flow_FormContentModel>(x => x.FormId, "对应表单"); excelFile.AddMapping <Flow_FormContentModel>(x => x.FormLevel, "公文级别"); excelFile.AddMapping <Flow_FormContentModel>(x => x.CreateTime, "创建时间"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrA, "字段A的值"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrB, "AttrB"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrC, "AttrC"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrD, "AttrD"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrE, "AttrE"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrF, "AttrF"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrG, "AttrG"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrH, "AttrH"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrI, "AttrI"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrJ, "AttrJ"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrK, "AttrK"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrL, "AttrL"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrM, "AttrM"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrN, "AttrN"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrO, "AttrO"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrP, "AttrP"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrQ, "AttrQ"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrR, "AttrR"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrS, "AttrS"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrT, "AttrT"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrU, "AttrU"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrV, "AttrV"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrW, "AttrW"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrX, "AttrX"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrY, "AttrY"); excelFile.AddMapping <Flow_FormContentModel>(x => x.AttrZ, "字段Z的值"); excelFile.AddMapping <Flow_FormContentModel>(x => x.CustomMember, "指定审核人"); excelFile.AddMapping <Flow_FormContentModel>(x => x.TimeOut, "截止时间"); excelFile.AddMapping <Flow_FormContentModel>(x => x.IsDelete, "是否已删除"); //SheetName var excelContent = excelFile.Worksheet <Flow_FormContentModel>(0); int rowIndex = 1; //检查数据正确性 foreach (var row in excelContent) { var errorMessage = new StringBuilder(); var entity = new Flow_FormContentModel(); entity.Id = row.Id; entity.Title = row.Title; entity.UserId = row.UserId; entity.FormId = row.FormId; entity.FormLevel = row.FormLevel; entity.CreateTime = row.CreateTime; entity.AttrA = row.AttrA; entity.AttrB = row.AttrB; entity.AttrC = row.AttrC; entity.AttrD = row.AttrD; entity.AttrE = row.AttrE; entity.AttrF = row.AttrF; entity.AttrG = row.AttrG; entity.AttrH = row.AttrH; entity.AttrI = row.AttrI; entity.AttrJ = row.AttrJ; entity.AttrK = row.AttrK; entity.AttrL = row.AttrL; entity.AttrM = row.AttrM; entity.AttrN = row.AttrN; entity.AttrO = row.AttrO; entity.AttrP = row.AttrP; entity.AttrQ = row.AttrQ; entity.AttrR = row.AttrR; entity.AttrS = row.AttrS; entity.AttrT = row.AttrT; entity.AttrU = row.AttrU; entity.AttrV = row.AttrV; entity.AttrW = row.AttrW; entity.AttrX = row.AttrX; entity.AttrY = row.AttrY; entity.AttrZ = row.AttrZ; entity.CustomMember = row.CustomMember; entity.TimeOut = row.TimeOut; entity.IsDelete = row.IsDelete; //============================================================================= if (errorMessage.Length > 0) { errors.Add(string.Format( "第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); } list.Add(entity); rowIndex += 1; } if (errors.Count > 0) { return(false); } return(true); }
public virtual void Modify(ref ValidationErrors errors, Apps.Models.SCV.AR.AR_UPLOAD_RECEIPT_HEADER_MODEL model, params string[] updateProperties) { Apps.Models.AR_UPLOAD_RECEIPT_HEADER entity = m_Rep.GetById(model.INTERFACE_RECORD_ID); if (entity == null) { errors.Add(Resource.Disable); return; } if (updateProperties.Count() <= 0) { entity.INTERFACE_RECORD_ID = model.INTERFACE_RECORD_ID; entity.INTERFACE_ACTION_CODE = model.INTERFACE_ACTION_CODE; entity.INTERFACE_CONDITION = model.INTERFACE_CONDITION; entity.PROCESS_STAMP = model.PROCESS_STAMP; entity.WAREHOUSE = model.WAREHOUSE; entity.COMPANY = model.COMPANY; entity.RECEIPT_ID = model.RECEIPT_ID; entity.RECEIPT_TYPE = model.RECEIPT_TYPE; entity.PRIORITY = model.PRIORITY; entity.LEADING_STS = model.LEADING_STS; entity.TRAILING_STS = model.TRAILING_STS; entity.ERP_ORDER_ID = model.ERP_ORDER_ID; entity.SHIP_FROM = model.SHIP_FROM; entity.SHIP_FROM_ADDRESS1 = model.SHIP_FROM_ADDRESS1; entity.SHIP_FROM_ADDRESS2 = model.SHIP_FROM_ADDRESS2; entity.SHIP_FROM_CITY = model.SHIP_FROM_CITY; entity.SHIP_FROM_STATE = model.SHIP_FROM_STATE; entity.SHIP_FROM_COUNTRY = model.SHIP_FROM_COUNTRY; entity.SHIP_FROM_POSTAL_CODE = model.SHIP_FROM_POSTAL_CODE; entity.SHIP_FROM_NAME = model.SHIP_FROM_NAME; entity.SHIP_FROM_ATTENTION_TO = model.SHIP_FROM_ATTENTION_TO; entity.SHIP_FROM_EMAIL_ADDRESS = model.SHIP_FROM_EMAIL_ADDRESS; entity.SHIP_FROM_PHONE_NUM = model.SHIP_FROM_PHONE_NUM; entity.SHIP_FROM_FAX_NUM = model.SHIP_FROM_FAX_NUM; entity.SCHEDULED_ARRIVE_DATE = model.SCHEDULED_ARRIVE_DATE; entity.ACTUAL_ARRIVE_DATE = model.ACTUAL_ARRIVE_DATE; entity.USER_STAMP = model.USER_STAMP; entity.DATE_TIME_STAMP = model.DATE_TIME_STAMP; entity.RECV_DOCK = model.RECV_DOCK; entity.CLOSE_DATE = model.CLOSE_DATE; entity.CREATE_DATE = model.CREATE_DATE; entity.START_CHECKIN_DATE = model.START_CHECKIN_DATE; entity.END_CHECKIN_DATE = model.END_CHECKIN_DATE; entity.USER_DEF1 = model.USER_DEF1; entity.USER_DEF2 = model.USER_DEF2; entity.USER_DEF3 = model.USER_DEF3; entity.USER_DEF4 = model.USER_DEF4; entity.USER_DEF5 = model.USER_DEF5; entity.USER_DEF6 = model.USER_DEF6; entity.USER_DEF7 = model.USER_DEF7; entity.USER_DEF8 = model.USER_DEF8; entity.TOTAL_QTY = model.TOTAL_QTY; entity.TOTAL_LINES = model.TOTAL_LINES; } else { Type type = typeof(Apps.Models.SCV.AR.AR_UPLOAD_RECEIPT_HEADER_MODEL); Type typeE = typeof(Apps.Models.AR_UPLOAD_RECEIPT_HEADER); foreach (var item in updateProperties) { System.Reflection.PropertyInfo pi = type.GetProperty(item); System.Reflection.PropertyInfo piE = typeE.GetProperty(item); piE.SetValue(entity, pi.GetValue(model), null); } } m_Rep.Modify(entity, updateProperties); }
/// <summary> /// Gets the errors. /// </summary> /// <returns>The errors from the page as a <see cref="List{TEntity}"/> of <see cref="string"/> entities.</returns> public List <string> GetErrors() { var errors = ValidationErrors.Select(err => err.Text).ToList(); return(errors); }
public virtual void Modify(ref ValidationErrors errors, Apps.Models.SCV.AR.AR_RECEIPT_DETAIL_MODEL model, params string[] updateProperties) { Apps.Models.AR_RECEIPT_DETAIL entity = m_Rep.GetById(model.INTERNAL_RECEIPT_LINE_NUM); if (entity == null) { errors.Add(Resource.Disable); return; } if (updateProperties.Count() <= 0) { entity.INTERNAL_RECEIPT_LINE_NUM = model.INTERNAL_RECEIPT_LINE_NUM; entity.INTERNAL_RECEIPT_NUM = model.INTERNAL_RECEIPT_NUM; entity.RECEIPT_ID = model.RECEIPT_ID; entity.WAREHOUSE = model.WAREHOUSE; entity.COMPANY = model.COMPANY; entity.ITEM = model.ITEM; entity.ITEM_DESC = model.ITEM_DESC; entity.ITEM_CLASS = model.ITEM_CLASS; entity.ATTRIBUTE_TRACK = model.ATTRIBUTE_TRACK; entity.ATTRIBUTE_NUM = model.ATTRIBUTE_NUM; entity.ATTRIBUTE1 = model.ATTRIBUTE1; entity.ATTRIBUTE2 = model.ATTRIBUTE2; entity.ATTRIBUTE3 = model.ATTRIBUTE3; entity.ATTRIBUTE4 = model.ATTRIBUTE4; entity.ATTRIBUTE5 = model.ATTRIBUTE5; entity.ATTRIBUTE6 = model.ATTRIBUTE6; entity.ATTRIBUTE7 = model.ATTRIBUTE7; entity.ATTRIBUTE8 = model.ATTRIBUTE8; entity.TOTAL_QTY = model.TOTAL_QTY; entity.OPEN_QTY = model.OPEN_QTY; entity.QUANTITY_UM = model.QUANTITY_UM; entity.ERP_ORDER_ID = model.ERP_ORDER_ID; entity.ERP_ORDER_LINE_NUM = model.ERP_ORDER_LINE_NUM; entity.LOCATING_RULE = model.LOCATING_RULE; entity.USER_STAMP = model.USER_STAMP; entity.DATE_TIME_STAMP = model.DATE_TIME_STAMP; entity.INVENTORY_STS = model.INVENTORY_STS; entity.USER_DEF1 = model.USER_DEF1; entity.USER_DEF2 = model.USER_DEF2; entity.USER_DEF3 = model.USER_DEF3; entity.USER_DEF4 = model.USER_DEF4; entity.USER_DEF5 = model.USER_DEF5; entity.USER_DEF6 = model.USER_DEF6; entity.USER_DEF7 = model.USER_DEF7; entity.USER_DEF8 = model.USER_DEF8; entity.ITEM_LIST_PRICE = model.ITEM_LIST_PRICE; entity.ITEM_NET_PRICE = model.ITEM_NET_PRICE; entity.ITEM_CATEGORY01 = model.ITEM_CATEGORY01; entity.ITEM_CATEGORY02 = model.ITEM_CATEGORY02; entity.ITEM_CATEGORY03 = model.ITEM_CATEGORY03; entity.ITEM_CATEGORY04 = model.ITEM_CATEGORY04; entity.ITEM_CATEGORY05 = model.ITEM_CATEGORY05; entity.ITEM_CATEGORY06 = model.ITEM_CATEGORY06; entity.ITEM_CATEGORY07 = model.ITEM_CATEGORY07; entity.ITEM_CATEGORY08 = model.ITEM_CATEGORY08; } else { Type type = typeof(Apps.Models.SCV.AR.AR_RECEIPT_DETAIL_MODEL); Type typeE = typeof(Apps.Models.AR_RECEIPT_DETAIL); foreach (var item in updateProperties) { System.Reflection.PropertyInfo pi = type.GetProperty(item); System.Reflection.PropertyInfo piE = typeE.GetProperty(item); piE.SetValue(entity, pi.GetValue(model), null); } } m_Rep.Modify(entity, updateProperties); }
public override object Clone() { var result = base.Clone() as ShoppingCart; result.HandlingTotal = HandlingTotal?.Clone() as Money; result.HandlingTotalWithTax = HandlingTotalWithTax?.Clone() as Money; result.DiscountAmount = DiscountAmount?.Clone() as Money; result.Total = Total?.Clone() as Money; result.SubTotal = SubTotal?.Clone() as Money; result.SubTotalWithTax = SubTotalWithTax?.Clone() as Money; result.ShippingPrice = ShippingPrice?.Clone() as Money; result.ShippingPriceWithTax = ShippingPriceWithTax?.Clone() as Money; result.ShippingTotal = ShippingTotal?.Clone() as Money; result.ShippingTotalWithTax = ShippingTotalWithTax?.Clone() as Money; result.PaymentPrice = PaymentPrice?.Clone() as Money; result.PaymentPriceWithTax = PaymentPriceWithTax?.Clone() as Money; result.PaymentTotal = PaymentTotal?.Clone() as Money; result.PaymentTotalWithTax = PaymentTotalWithTax?.Clone() as Money; result.HandlingTotal = HandlingTotal?.Clone() as Money; result.HandlingTotalWithTax = HandlingTotalWithTax?.Clone() as Money; result.DiscountTotal = DiscountTotal?.Clone() as Money; result.DiscountTotalWithTax = DiscountTotalWithTax?.Clone() as Money; result.TaxTotal = TaxTotal?.Clone() as Money; if (Discounts != null) { result.Discounts = new List <Discount>(Discounts.Select(x => x.Clone() as Discount)); } if (TaxDetails != null) { result.TaxDetails = new List <TaxDetail>(TaxDetails.Select(x => x.Clone() as TaxDetail)); } if (DynamicProperties != null) { result.DynamicProperties = new List <DynamicProperty>(DynamicProperties.Select(x => x.Clone() as DynamicProperty)); } if (ValidationErrors != null) { result.ValidationErrors = new List <ValidationError>(ValidationErrors.Select(x => x.Clone() as ValidationError)); } if (Addresses != null) { result.Addresses = new List <Address>(Addresses.Select(x => x.Clone() as Address)); } if (Items != null) { result.Items = new List <LineItem>(Items.Select(x => x.Clone() as LineItem)); } if (Payments != null) { result.Payments = new List <Payment>(Payments.Select(x => x.Clone() as Payment)); } if (Shipments != null) { result.Shipments = new List <Shipment>(Shipments.Select(x => x.Clone() as Shipment)); } if (Coupons != null) { result.Coupons = new List <Coupon>(Coupons.Select(x => x.Clone() as Coupon)); } if (AvailablePaymentMethods != null) { result.AvailablePaymentMethods = new List <PaymentMethod>(AvailablePaymentMethods.Select(x => x.Clone() as PaymentMethod)); } return(result); }
public bool ImportExcelData(string oper, string filePath, ref ValidationErrors errors) { bool rtn = true; var targetFile = new FileInfo(filePath); if (!targetFile.Exists) { errors.Add("导入的数据文件不存在"); return(false); } var excelFile = new ExcelQueryFactory(filePath); using (XLWorkbook wb = new XLWorkbook(filePath)) { //第一个Sheet using (IXLWorksheet wws = wb.Worksheets.First()) { //对应列头 excelFile.AddMapping <WMS_POModel>(x => x.PO, "采购订单(必输)"); excelFile.AddMapping <WMS_POModel>(x => x.PODate, "采购日期(必输格式:YYYY-MM-DD)"); excelFile.AddMapping <WMS_POModel>(x => x.SupplierShortName, "供应商简称(必输)"); excelFile.AddMapping <WMS_POModel>(x => x.PartCode, "物料编码(必输)"); excelFile.AddMapping <WMS_POModel>(x => x.QTY, "数量(必输)"); excelFile.AddMapping <WMS_POModel>(x => x.PlanDate, "计划到货日期"); excelFile.AddMapping <WMS_POModel>(x => x.POType, "采购订单类型"); //excelFile.AddMapping<WMS_POModel>(x => x.Status, "状态"); excelFile.AddMapping <WMS_POModel>(x => x.Remark, "说明"); //excelFile.AddMapping<WMS_POModel>(x => x.Attr1, ""); //excelFile.AddMapping<WMS_POModel>(x => x.Attr2, ""); //excelFile.AddMapping<WMS_POModel>(x => x.Attr3, ""); //excelFile.AddMapping<WMS_POModel>(x => x.Attr4, ""); //excelFile.AddMapping<WMS_POModel>(x => x.Attr5, ""); //excelFile.AddMapping<WMS_POModel>(x => x.CreatePerson, "创建人"); //excelFile.AddMapping<WMS_POModel>(x => x.CreateTime, "创建时间"); //excelFile.AddMapping<WMS_POModel>(x => x.ModifyPerson, "修改人"); //excelFile.AddMapping<WMS_POModel>(x => x.ModifyTime, "修改时间"); //SheetName,第一个Sheet var excelContent = excelFile.Worksheet <WMS_POModel>(0); //开启事务 using (DBContainer db = new DBContainer()) { var tran = db.Database.BeginTransaction(); //开启事务 int rowIndex = 0; //检查数据正确性 foreach (var row in excelContent) { rowIndex += 1; string errorMessage = String.Empty; var model = new WMS_POModel(); model.Id = row.Id; model.PO = row.PO; model.PODate = row.PODate; model.SupplierShortName = row.SupplierShortName; model.PartCode = row.PartCode; model.QTY = row.QTY; model.PlanDate = row.PlanDate; model.POType = row.POType; model.Status = "有效"; model.Remark = row.Remark; //model.Attr1 = row.Attr1; //model.Attr2 = row.Attr2; //model.Attr3 = row.Attr3; //model.Attr4 = row.Attr4; //model.Attr5 = row.Attr5; //model.CreatePerson = row.CreatePerson; //model.CreateTime = row.CreateTime; //model.ModifyPerson = row.ModifyPerson; //model.ModifyTime = row.ModifyTime; if (!String.IsNullOrEmpty(errorMessage)) { rtn = false; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; continue; } //执行额外的数据校验 try { AdditionalCheckExcelData(db, ref model); } catch (Exception ex) { rtn = false; errorMessage = ex.Message; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; continue; } //写入数据库 WMS_PO entity = new WMS_PO(); entity.Id = model.Id; entity.PO = model.PO; entity.PODate = model.PODate; entity.SupplierId = model.SupplierId; entity.PartId = model.PartId; entity.QTY = model.QTY; entity.PlanDate = model.PlanDate; entity.POType = model.POType; entity.Status = "有效"; entity.Remark = model.Remark; entity.Attr1 = model.Attr1; entity.Attr2 = model.Attr2; entity.Attr3 = model.Attr3; entity.Attr4 = model.Attr4; entity.Attr5 = model.Attr5; entity.CreatePerson = oper; entity.CreateTime = DateTime.Now; entity.ModifyPerson = oper; entity.ModifyTime = DateTime.Now; db.WMS_PO.Add(entity); try { db.SaveChanges(); } catch (Exception ex) { rtn = false; //将当前报错的entity状态改为分离,类似EF的回滚(忽略之前的Add操作) db.Entry(entity).State = System.Data.Entity.EntityState.Detached; errorMessage = ex.InnerException.InnerException.Message; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; } } if (rtn) { tran.Commit(); //必须调用Commit(),不然数据不会保存 } else { tran.Rollback(); //出错就回滚 } } } wb.Save(); } return(rtn); }
/// <summary> /// 编辑一个人员 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="db">数据上下文</param> /// <param name="entity">一个人员</param> /// <returns>是否编辑成功</returns> public bool Edit(ref ValidationErrors validationErrors, SysEntities db, SysPerson entity) { /* * 不操作 原有 现有 * 增加 原没 现有 * 删除 原有 现没 */ if (entity == null) { return(false); } int count = 1; SysPerson editEntity = repository.Edit(db, entity); List <string> addSysRoleId = new List <string>(); List <string> deleteSysRoleId = new List <string>(); DataOfDiffrent.GetDiffrent(entity.SysRoleId.GetIdSort(), entity.SysRoleIdOld.GetIdSort(), ref addSysRoleId, ref deleteSysRoleId); if (addSysRoleId != null && addSysRoleId.Count() > 0) { foreach (var item in addSysRoleId) { SysRole sys = new SysRole { Id = item }; db.SysRole.Attach(sys); editEntity.SysRole.Add(sys); count++; } } if (deleteSysRoleId != null && deleteSysRoleId.Count() > 0) { List <SysRole> listEntity = new List <SysRole>(); foreach (var item in deleteSysRoleId) { SysRole sys = new SysRole { Id = item }; listEntity.Add(sys); db.SysRole.Attach(sys); } foreach (SysRole item in listEntity) { editEntity.SysRole.Remove(item);//查询数据库 count++; } } List <string> addSysDocumentId = new List <string>(); List <string> deleteSysDocumentId = new List <string>(); DataOfDiffrent.GetDiffrent(entity.SysDocumentId.GetIdSort(), entity.SysDocumentIdOld.GetIdSort(), ref addSysDocumentId, ref deleteSysDocumentId); if (addSysDocumentId != null && addSysDocumentId.Count() > 0) { foreach (var item in addSysDocumentId) { SysDocument sys = new SysDocument { Id = item }; db.SysDocument.Attach(sys); editEntity.SysDocument.Add(sys); count++; } } if (deleteSysDocumentId != null && deleteSysDocumentId.Count() > 0) { List <SysDocument> listEntity = new List <SysDocument>(); foreach (var item in deleteSysDocumentId) { SysDocument sys = new SysDocument { Id = item }; listEntity.Add(sys); db.SysDocument.Attach(sys); } foreach (SysDocument item in listEntity) { editEntity.SysDocument.Remove(item);//查询数据库 count++; } } if (count == repository.Save(db)) { return(true); } else { validationErrors.Add("编辑人员出错了"); } return(false); }
public virtual void Modify(ref ValidationErrors errors, Apps.Models.SCV.AR.AR_UPLOAD_SHIPMENT_HEADER_MODEL model, params string[] updateProperties) { Apps.Models.AR_UPLOAD_SHIPMENT_HEADER entity = m_Rep.GetById(model.INTERFACE_RECORD_ID); if (entity == null) { errors.Add(Resource.Disable); return; } if (updateProperties.Count() <= 0) { entity.INTERFACE_RECORD_ID = model.INTERFACE_RECORD_ID; entity.INTERFACE_ACTION_CODE = model.INTERFACE_ACTION_CODE; entity.INTERFACE_CONDITION = model.INTERFACE_CONDITION; entity.PROCESS_STAMP = model.PROCESS_STAMP; entity.WAREHOUSE = model.WAREHOUSE; entity.COMPANY = model.COMPANY; entity.INTERNAL_LOAD_NUM = model.INTERNAL_LOAD_NUM; entity.SHIPMENT_ID = model.SHIPMENT_ID; entity.ERP_ORDER = model.ERP_ORDER; entity.LEADING_STS = model.LEADING_STS; entity.TRAILING_STS = model.TRAILING_STS; entity.SHIPMENT_TYPE = model.SHIPMENT_TYPE; entity.ROUTE = model.ROUTE; entity.SHIP_TO = model.SHIP_TO; entity.SHIP_TO_NAME = model.SHIP_TO_NAME; entity.SHIP_TO_ADDRESS1 = model.SHIP_TO_ADDRESS1; entity.SHIP_TO_ADDRESS2 = model.SHIP_TO_ADDRESS2; entity.SHIP_TO_DISTRICT = model.SHIP_TO_DISTRICT; entity.SHIP_TO_CITY = model.SHIP_TO_CITY; entity.SHIP_TO_STATE = model.SHIP_TO_STATE; entity.SHIP_TO_COUNTRY = model.SHIP_TO_COUNTRY; entity.SHIP_TO_POSTAL_CODE = model.SHIP_TO_POSTAL_CODE; entity.SHIP_TO_ATTENTION_TO = model.SHIP_TO_ATTENTION_TO; entity.SHIP_TO_PHONE_NUM = model.SHIP_TO_PHONE_NUM; entity.SHIP_TO_MOBILE = model.SHIP_TO_MOBILE; entity.SHIP_TO_FAX_NUM = model.SHIP_TO_FAX_NUM; entity.SHIP_TO_EMAIL_ADDRESS = model.SHIP_TO_EMAIL_ADDRESS; entity.PRIORITY = model.PRIORITY; entity.USER_STAMP = model.USER_STAMP; entity.DATE_TIME_STAMP = model.DATE_TIME_STAMP; entity.REQUESTED_DELIVERY_DATE = model.REQUESTED_DELIVERY_DATE; entity.REQUESTED_DELIVERY_TYPE = model.REQUESTED_DELIVERY_TYPE; entity.SCHEDULED_SHIP_DATE = model.SCHEDULED_SHIP_DATE; entity.ACTUAL_SHIP_DATE_TIME = model.ACTUAL_SHIP_DATE_TIME; entity.ACTUAL_DELIVERY_DATE_TIME = model.ACTUAL_DELIVERY_DATE_TIME; entity.DELIVERY_NOTE = model.DELIVERY_NOTE; entity.REJECTION_NOTE = model.REJECTION_NOTE; entity.INTERNAL_WAVE_NUM = model.INTERNAL_WAVE_NUM; entity.SHIP_DOCK = model.SHIP_DOCK; entity.ALLOCATE_COMPLETE = model.ALLOCATE_COMPLETE; entity.TOTAL_WEIGHT = model.TOTAL_WEIGHT; entity.WEIGHT_UM = model.WEIGHT_UM; entity.TOTAL_VOLUME = model.TOTAL_VOLUME; entity.VOLUME_UM = model.VOLUME_UM; entity.TOTAL_LINES = model.TOTAL_LINES; entity.TOTAL_CONTAINERS = model.TOTAL_CONTAINERS; entity.CARRIER = model.CARRIER; entity.CARRIER_SERVICE = model.CARRIER_SERVICE; entity.USER_DEF1 = model.USER_DEF1; entity.USER_DEF2 = model.USER_DEF2; entity.USER_DEF3 = model.USER_DEF3; entity.USER_DEF4 = model.USER_DEF4; entity.USER_DEF5 = model.USER_DEF5; entity.USER_DEF6 = model.USER_DEF6; entity.USER_DEF7 = model.USER_DEF7; entity.USER_DEF8 = model.USER_DEF8; entity.BACK_ORDER_NUM = model.BACK_ORDER_NUM; entity.PROCESS_TYPE = model.PROCESS_TYPE; entity.TOTAL_QTY = model.TOTAL_QTY; entity.LAST_WAVE_NUM = model.LAST_WAVE_NUM; entity.GROUP_NUM = model.GROUP_NUM; entity.GROUP_INDEX = model.GROUP_INDEX; entity.SIGN_VALUE = model.SIGN_VALUE; entity.SHIPMENT_SUB_TYPE = model.SHIPMENT_SUB_TYPE; entity.SHIPMENT_CATEGORY1 = model.SHIPMENT_CATEGORY1; entity.SHIPMENT_CATEGORY2 = model.SHIPMENT_CATEGORY2; entity.SHIPMENT_CATEGORY3 = model.SHIPMENT_CATEGORY3; entity.SHIPMENT_CATEGORY4 = model.SHIPMENT_CATEGORY4; entity.SHIPMENT_CATEGORY5 = model.SHIPMENT_CATEGORY5; entity.SHIPMENT_CATEGORY6 = model.SHIPMENT_CATEGORY6; entity.SHIPMENT_CATEGORY7 = model.SHIPMENT_CATEGORY7; entity.SHIPMENT_CATEGORY8 = model.SHIPMENT_CATEGORY8; } else { Type type = typeof(Apps.Models.SCV.AR.AR_UPLOAD_SHIPMENT_HEADER_MODEL); Type typeE = typeof(Apps.Models.AR_UPLOAD_SHIPMENT_HEADER); foreach (var item in updateProperties) { System.Reflection.PropertyInfo pi = type.GetProperty(item); System.Reflection.PropertyInfo piE = typeE.GetProperty(item); piE.SetValue(entity, pi.GetValue(model), null); } } m_Rep.Modify(entity, updateProperties); }
public bool ImportExcelData(string oper, string filePath, ref ValidationErrors errors) { bool rtn = true; var targetFile = new FileInfo(filePath); if (!targetFile.Exists) { errors.Add("导入的数据文件不存在"); return(false); } var excelFile = new ExcelQueryFactory(filePath); using (XLWorkbook wb = new XLWorkbook(filePath)) { int headId = 0; var inventoryType = "抽检"; //第一个Sheet using (IXLWorksheet wws = wb.Worksheets.First()) { //对应列头 excelFile.AddMapping <WMS_Inventory_DModel>(x => x.Inventory_HName, "盘点名称(必输)"); excelFile.AddMapping <WMS_Inventory_DModel>(x => x.PartCode, "物料编码(必输)"); excelFile.AddMapping <WMS_Inventory_DModel>(x => x.InventoryQty, "盘点数量(必输)"); excelFile.AddMapping <WMS_Inventory_DModel>(x => x.InvName, "库房名称"); //excelFile.AddMapping<WMS_Inventory_DModel>(x => x.SubInvId, "子库存"); excelFile.AddMapping <WMS_Inventory_DModel>(x => x.Lot, "批次号(必输)"); excelFile.AddMapping <WMS_Inventory_DModel>(x => x.Remark, "备注"); //excelFile.AddMapping<WMS_Inventory_DModel>(x => x.Attr1, ""); //excelFile.AddMapping<WMS_Inventory_DModel>(x => x.Attr2, ""); //excelFile.AddMapping<WMS_Inventory_DModel>(x => x.Attr3, ""); //excelFile.AddMapping<WMS_Inventory_DModel>(x => x.Attr4, ""); //excelFile.AddMapping<WMS_Inventory_DModel>(x => x.Attr5, ""); //excelFile.AddMapping<WMS_Inventory_DModel>(x => x.CreatePerson, "创建人"); //excelFile.AddMapping<WMS_Inventory_DModel>(x => x.CreateTime, "创建时间"); //excelFile.AddMapping<WMS_Inventory_DModel>(x => x.ModifyPerson, "修改人"); //excelFile.AddMapping<WMS_Inventory_DModel>(x => x.ModifyTime, "修改时间"); //SheetName,第一个Sheet var excelContent = excelFile.Worksheet <WMS_Inventory_DModel>(0); //开启事务 using (DBContainer db = new DBContainer()) { var tran = db.Database.BeginTransaction(); //开启事务 int rowIndex = 0; //检查数据正确性 foreach (var row in excelContent) { rowIndex += 1; string errorMessage = String.Empty; var model = new WMS_Inventory_DModel(); model.Id = row.Id; model.Inventory_HName = row.Inventory_HName; model.PartCode = row.PartCode; model.InventoryQty = row.InventoryQty; model.InvName = row.InvName; model.Lot = row.Lot; //model.SubInvId = row.SubInvId; model.Remark = row.Remark; model.Attr1 = row.Inventory_HName;//用来标记是这次新增的记录,为了做验证检查 //model.Attr1 = row.Attr1; //model.Attr2 = row.Attr2; //model.Attr3 = row.Attr3; //model.Attr4 = row.Attr4; //model.Attr5 = row.Attr5; //model.CreatePerson = row.CreatePerson; //model.CreateTime = row.CreateTime; //model.ModifyPerson = row.ModifyPerson; //model.ModifyTime = row.ModifyTime; if (!String.IsNullOrEmpty(errorMessage)) { rtn = false; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; continue; } //执行额外的数据校验 try { AdditionalCheckExcelData(db, ref model); } catch (Exception ex) { rtn = false; errorMessage = ex.Message; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; continue; } headId = model.HeadId; inventoryType = model.InventoryType; //写入数据库 Expression <Func <WMS_Inventory_D, bool> > exp = x => x.PartId == model.PartId && x.InvId == model.InvId && x.Lot == model.Lot && x.HeadId == model.HeadId; WMS_Inventory_D entity; entity = db.WMS_Inventory_D.FirstOrDefault(exp); //WMS_Inventory_D entity1 = m_Rep.GetSingleWhere(model.Id); if (entity != null) { entity.InventoryQty = model.InventoryQty; entity.Attr1 = model.Attr1; } else { entity = new WMS_Inventory_D(); entity.Id = model.Id; entity.HeadId = model.HeadId; entity.PartId = model.PartId; entity.SnapshootQty = 0; entity.InventoryQty = model.InventoryQty; entity.Lot = model.Lot; entity.InvId = model.InvId; entity.SubInvId = model.SubInvId; entity.Remark = model.Remark; entity.Attr1 = model.Attr1; //entity.Attr2 = model.Attr2; //entity.Attr3 = model.Attr3; //entity.Attr4 = model.Attr4; //entity.Attr5 = model.Attr5; //entity.CreatePerson = model.CreatePerson; //entity.CreateTime = model.CreateTime; //entity.ModifyPerson = model.ModifyPerson; //entity.ModifyTime = model.ModifyTime; entity.CreatePerson = oper; entity.CreateTime = DateTime.Now; entity.ModifyPerson = oper; entity.ModifyTime = DateTime.Now; db.WMS_Inventory_D.Add(entity); } try { db.SaveChanges(); } catch (Exception ex) { rtn = false; //将当前报错的entity状态改为分离,类似EF的回滚(忽略之前的Add操作) db.Entry(entity).State = System.Data.Entity.EntityState.Detached; errorMessage = ex.InnerException.InnerException.Message; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; } } if (rtn) { //tran.Commit(); if (inventoryType == "抽检") { ObjectParameter returnValue = new ObjectParameter("ReturnValue", typeof(string)); db.Configuration.EnsureTransactionsForFunctionsAndCommands = false; db.P_WMS_SpecialInventory(oper, headId, returnValue); if (returnValue.Value == DBNull.Value) { tran.Commit(); } else { tran.Rollback(); } //db.P_WMS_SpecialInventory(oper, headId, returnValue); //if (String.IsNullOrEmpty(SpecialInventory(ref errors, oper, headId))) //if (String.IsNullOrEmpty(db.P_WMS_SpecialInventory(oper, headId, returnValue)) //{ // tran.Commit(); //必须调用Commit(),不然数据不会保存 //} //else //{ // tran.Rollback(); //出错就回滚 //} } else { tran.Commit(); } } else { tran.Rollback(); //出错就回滚 } } } wb.Save(); //if (inventoryType == "抽检") //{ // if (String.IsNullOrEmpty(SpecialInventory(ref errors, oper, headId))) // { // rtn = true; //必须调用Commit(),不然数据不会保存 // } // else // { // rtn = false; ; //出错就回滚 // } //} return(rtn); } }
public virtual void Create(ref ValidationErrors errors, Apps.Models.SCV.SHIPPING.SHIPPING_CONTAINER_MODEL model) { Apps.Models.SHIPPING_CONTAINER entity = m_Rep.GetById(model.INTERNAL_CONTAINER_NUM); if (entity != null) { errors.Add(Resource.PrimaryRepeat); return; } entity = new Apps.Models.SHIPPING_CONTAINER(); entity.INTERNAL_CONTAINER_NUM = model.INTERNAL_CONTAINER_NUM; entity.CONTAINER_ID = model.CONTAINER_ID; entity.WAREHOUSE = model.WAREHOUSE; entity.CONTAINER_TYPE = model.CONTAINER_TYPE; entity.CONTAINER_CLASS = model.CONTAINER_CLASS; entity.STATUS = model.STATUS; entity.PARENT = model.PARENT; entity.WEIGHT = model.WEIGHT; entity.WEIGHT_UM = model.WEIGHT_UM; entity.VOLUME = model.VOLUME; entity.LENGTH = model.LENGTH; entity.WIDTH = model.WIDTH; entity.HEIGHT = model.HEIGHT; entity.DIMENSION_UM = model.DIMENSION_UM; entity.VOLUME_UM = model.VOLUME_UM; entity.VALUE = model.VALUE; entity.INTERNAL_SHIPMENT_NUM = model.INTERNAL_SHIPMENT_NUM; entity.INTERNAL_SHIPMENT_LINE_NUM = model.INTERNAL_SHIPMENT_LINE_NUM; entity.COMPANY = model.COMPANY; entity.ITEM = model.ITEM; entity.QUANTITY = model.QUANTITY; entity.QUANTITY_UM = model.QUANTITY_UM; entity.TRACKING_NUMBER = model.TRACKING_NUMBER; entity.USER_DEF1 = model.USER_DEF1; entity.USER_DEF2 = model.USER_DEF2; entity.USER_DEF3 = model.USER_DEF3; entity.USER_DEF4 = model.USER_DEF4; entity.USER_DEF5 = model.USER_DEF5; entity.USER_DEF6 = model.USER_DEF6; entity.USER_DEF7 = model.USER_DEF7; entity.USER_DEF8 = model.USER_DEF8; entity.USER_STAMP = model.USER_STAMP; entity.DATE_TIME_STAMP = model.DATE_TIME_STAMP; entity.GROUP_POSITION = model.GROUP_POSITION; entity.INTERNAL_WAVE_NUM = model.INTERNAL_WAVE_NUM; entity.CONTAINER_COUNT_NUMBER = model.CONTAINER_COUNT_NUMBER; entity.CONTAINER_COUNT_TOTAL = model.CONTAINER_COUNT_TOTAL; entity.GROUP_NUM = model.GROUP_NUM; entity.PARENT_CONTAINER_ID = model.PARENT_CONTAINER_ID; entity.INTERNAL_SHIP_ALLOC_NUM = model.INTERNAL_SHIP_ALLOC_NUM; entity.TASK_CREATED = model.TASK_CREATED; entity.ATTRIBUTE_NUM = model.ATTRIBUTE_NUM; entity.ORIGINAL_PICK_LOC = model.ORIGINAL_PICK_LOC; entity.ATTRIBUTE1 = model.ATTRIBUTE1; entity.ATTRIBUTE2 = model.ATTRIBUTE2; entity.ATTRIBUTE3 = model.ATTRIBUTE3; entity.ATTRIBUTE4 = model.ATTRIBUTE4; entity.ATTRIBUTE5 = model.ATTRIBUTE5; entity.ATTRIBUTE6 = model.ATTRIBUTE6; entity.ATTRIBUTE7 = model.ATTRIBUTE7; entity.ATTRIBUTE8 = model.ATTRIBUTE8; entity.PROCESS_STAMP = model.PROCESS_STAMP; entity.PACKING_CLASS = model.PACKING_CLASS; entity.SHIPMENT_ID = model.SHIPMENT_ID; entity.TRANS_CONT_ID = model.TRANS_CONT_ID; entity.OQC_BENCH = model.OQC_BENCH; entity.OQCED = model.OQCED; entity.OQC_USER = model.OQC_USER; entity.OQC_START_DATE_TIME = model.OQC_START_DATE_TIME; entity.OQC_END_DATE_TIME = model.OQC_END_DATE_TIME; entity.SYSTEM_CREATED = model.SYSTEM_CREATED; entity.SCANNED_QTY = model.SCANNED_QTY; m_Rep.Create(entity); }
public virtual void RemoveById(ref ValidationErrors errors, string id) { m_Rep.RemoveById(id); }
public Common.ClientResult.Result Shanchu(string IDs) { ValidationErrors validationErrors = new ValidationErrors(); StringBuilder sbError = new StringBuilder(); SysEntities SysEntitiesO2O = new SysEntities(); try { using (TransactionScope scope = new TransactionScope()) { int[] intArray; List <int> intArrayuser = new List <int>(); string[] strArray = IDs.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); intArray = Array.ConvertAll <string, int>(strArray, s => int.Parse(s)); var GropTable = SysEntitiesO2O.ORG_Group.FirstOrDefault(o => true && intArray.Contains(o.ID)); // GropTable = GropTable.FirstOrDefault(o => o.ID == IntId); if (GropTable != null) { var ORG_GroupBLL = new BLL.ORG_GroupBLL(); ORG_Group Model = new ORG_Group(); Model = GropTable; ORG_GroupBLL.DeleteCollection(ref validationErrors, intArray); } var GropUserTable = SysEntitiesO2O.ORG_GroupUser.Where(o => true && intArray.Contains(o.ORG_Group_ID)).ToList(); if (GropUserTable != null) { foreach (var item in GropUserTable) { int j = 0; intArrayuser.Add(item.ID); j++; } } if (intArrayuser.Count > 0) { var ORG_GroupUserBLL = new BLL.ORG_GroupUserBLL(); int[] allid = new int[intArrayuser.Count]; for (int i = 0; i < intArrayuser.Count(); i++) { allid[i] = intArrayuser[i]; } ORG_GroupUserBLL.DeleteCollection(ref validationErrors, allid); } SysEntitiesO2O.SaveChanges(); scope.Complete(); Common.ClientResult.Result result = new Common.ClientResult.Result(); result.Code = ClientCode.Succeed; result.Message = "删除成功"; return(result); } } catch (Exception er) { Common.ClientResult.Result result = new Common.ClientResult.Result(); result.Code = ClientCode.Fail; result.Message = "删除失败"; return(result); } }
public virtual void Create(ref ValidationErrors errors, Apps.Models.SCV.AR.AR_UPLOAD_SHIPMENT_HEADER_MODEL model) { Apps.Models.AR_UPLOAD_SHIPMENT_HEADER entity = m_Rep.GetById(model.INTERFACE_RECORD_ID); if (entity != null) { errors.Add(Resource.PrimaryRepeat); return; } entity = new Apps.Models.AR_UPLOAD_SHIPMENT_HEADER(); entity.INTERFACE_RECORD_ID = model.INTERFACE_RECORD_ID; entity.INTERFACE_ACTION_CODE = model.INTERFACE_ACTION_CODE; entity.INTERFACE_CONDITION = model.INTERFACE_CONDITION; entity.PROCESS_STAMP = model.PROCESS_STAMP; entity.WAREHOUSE = model.WAREHOUSE; entity.COMPANY = model.COMPANY; entity.INTERNAL_LOAD_NUM = model.INTERNAL_LOAD_NUM; entity.SHIPMENT_ID = model.SHIPMENT_ID; entity.ERP_ORDER = model.ERP_ORDER; entity.LEADING_STS = model.LEADING_STS; entity.TRAILING_STS = model.TRAILING_STS; entity.SHIPMENT_TYPE = model.SHIPMENT_TYPE; entity.ROUTE = model.ROUTE; entity.SHIP_TO = model.SHIP_TO; entity.SHIP_TO_NAME = model.SHIP_TO_NAME; entity.SHIP_TO_ADDRESS1 = model.SHIP_TO_ADDRESS1; entity.SHIP_TO_ADDRESS2 = model.SHIP_TO_ADDRESS2; entity.SHIP_TO_DISTRICT = model.SHIP_TO_DISTRICT; entity.SHIP_TO_CITY = model.SHIP_TO_CITY; entity.SHIP_TO_STATE = model.SHIP_TO_STATE; entity.SHIP_TO_COUNTRY = model.SHIP_TO_COUNTRY; entity.SHIP_TO_POSTAL_CODE = model.SHIP_TO_POSTAL_CODE; entity.SHIP_TO_ATTENTION_TO = model.SHIP_TO_ATTENTION_TO; entity.SHIP_TO_PHONE_NUM = model.SHIP_TO_PHONE_NUM; entity.SHIP_TO_MOBILE = model.SHIP_TO_MOBILE; entity.SHIP_TO_FAX_NUM = model.SHIP_TO_FAX_NUM; entity.SHIP_TO_EMAIL_ADDRESS = model.SHIP_TO_EMAIL_ADDRESS; entity.PRIORITY = model.PRIORITY; entity.USER_STAMP = model.USER_STAMP; entity.DATE_TIME_STAMP = model.DATE_TIME_STAMP; entity.REQUESTED_DELIVERY_DATE = model.REQUESTED_DELIVERY_DATE; entity.REQUESTED_DELIVERY_TYPE = model.REQUESTED_DELIVERY_TYPE; entity.SCHEDULED_SHIP_DATE = model.SCHEDULED_SHIP_DATE; entity.ACTUAL_SHIP_DATE_TIME = model.ACTUAL_SHIP_DATE_TIME; entity.ACTUAL_DELIVERY_DATE_TIME = model.ACTUAL_DELIVERY_DATE_TIME; entity.DELIVERY_NOTE = model.DELIVERY_NOTE; entity.REJECTION_NOTE = model.REJECTION_NOTE; entity.INTERNAL_WAVE_NUM = model.INTERNAL_WAVE_NUM; entity.SHIP_DOCK = model.SHIP_DOCK; entity.ALLOCATE_COMPLETE = model.ALLOCATE_COMPLETE; entity.TOTAL_WEIGHT = model.TOTAL_WEIGHT; entity.WEIGHT_UM = model.WEIGHT_UM; entity.TOTAL_VOLUME = model.TOTAL_VOLUME; entity.VOLUME_UM = model.VOLUME_UM; entity.TOTAL_LINES = model.TOTAL_LINES; entity.TOTAL_CONTAINERS = model.TOTAL_CONTAINERS; entity.CARRIER = model.CARRIER; entity.CARRIER_SERVICE = model.CARRIER_SERVICE; entity.USER_DEF1 = model.USER_DEF1; entity.USER_DEF2 = model.USER_DEF2; entity.USER_DEF3 = model.USER_DEF3; entity.USER_DEF4 = model.USER_DEF4; entity.USER_DEF5 = model.USER_DEF5; entity.USER_DEF6 = model.USER_DEF6; entity.USER_DEF7 = model.USER_DEF7; entity.USER_DEF8 = model.USER_DEF8; entity.BACK_ORDER_NUM = model.BACK_ORDER_NUM; entity.PROCESS_TYPE = model.PROCESS_TYPE; entity.TOTAL_QTY = model.TOTAL_QTY; entity.LAST_WAVE_NUM = model.LAST_WAVE_NUM; entity.GROUP_NUM = model.GROUP_NUM; entity.GROUP_INDEX = model.GROUP_INDEX; entity.SIGN_VALUE = model.SIGN_VALUE; entity.SHIPMENT_SUB_TYPE = model.SHIPMENT_SUB_TYPE; entity.SHIPMENT_CATEGORY1 = model.SHIPMENT_CATEGORY1; entity.SHIPMENT_CATEGORY2 = model.SHIPMENT_CATEGORY2; entity.SHIPMENT_CATEGORY3 = model.SHIPMENT_CATEGORY3; entity.SHIPMENT_CATEGORY4 = model.SHIPMENT_CATEGORY4; entity.SHIPMENT_CATEGORY5 = model.SHIPMENT_CATEGORY5; entity.SHIPMENT_CATEGORY6 = model.SHIPMENT_CATEGORY6; entity.SHIPMENT_CATEGORY7 = model.SHIPMENT_CATEGORY7; entity.SHIPMENT_CATEGORY8 = model.SHIPMENT_CATEGORY8; m_Rep.Create(entity); }
public virtual bool Edit(ref ValidationErrors errors, Flow_FormContentModel model) { try { Flow_FormContent entity = m_Rep.GetById(model.Id); if (entity == null) { errors.Add(Resource.Disable); return(false); } entity.Id = model.Id; entity.Title = model.Title; entity.UserId = model.UserId; entity.FormId = model.FormId; entity.FormLevel = model.FormLevel; entity.CreateTime = model.CreateTime; entity.AttrA = model.AttrA; entity.AttrB = model.AttrB; entity.AttrC = model.AttrC; entity.AttrD = model.AttrD; entity.AttrE = model.AttrE; entity.AttrF = model.AttrF; entity.AttrG = model.AttrG; entity.AttrH = model.AttrH; entity.AttrI = model.AttrI; entity.AttrJ = model.AttrJ; entity.AttrK = model.AttrK; entity.AttrL = model.AttrL; entity.AttrM = model.AttrM; entity.AttrN = model.AttrN; entity.AttrO = model.AttrO; entity.AttrP = model.AttrP; entity.AttrQ = model.AttrQ; entity.AttrR = model.AttrR; entity.AttrS = model.AttrS; entity.AttrT = model.AttrT; entity.AttrU = model.AttrU; entity.AttrV = model.AttrV; entity.AttrW = model.AttrW; entity.AttrX = model.AttrX; entity.AttrY = model.AttrY; entity.AttrZ = model.AttrZ; entity.CustomMember = model.CustomMember; entity.TimeOut = model.TimeOut; entity.IsDelete = model.IsDelete; if (m_Rep.Edit(entity)) { return(true); } else { errors.Add(Resource.NoDataChange); return(false); } } catch (Exception ex) { errors.Add(ex.Message); ExceptionHander.WriteException(ex); return(false); } }
/// <summary> /// 建立方案保存下一步 /// </summary> /// <param name="validationErrors"></param> /// <param name="entity"></param> /// <returns></returns> public bool EditInst(ref ValidationErrors validationErrors, PREPARE_SCHEME entity) { try { if (entity == null) { return(false); } List <string> addMETERING_STANDARD_DEVICEID = new List <string>(); List <string> deleteMETERING_STANDARD_DEVICEID = new List <string>(); PREPARE_SCHEME prepare = null; if (entity != null) { prepare = repository.GetById(entity.ID); } DataOfDiffrent.GetDiffrent(entity.METERING_STANDARD_DEVICEID.GetIdSort(), entity.METERING_STANDARD_DEVICEIDOld.GetIdSort(), ref addMETERING_STANDARD_DEVICEID, ref deleteMETERING_STANDARD_DEVICEID); PREPARE_SCHEME editEntity = repository.EditInst(db, entity); if (addMETERING_STANDARD_DEVICEID != null && addMETERING_STANDARD_DEVICEID.Count() > 0) { foreach (var item in addMETERING_STANDARD_DEVICEID) { STANDARDCHOICE sys = new STANDARDCHOICE { ID = Result.GetNewId(), PREPARE_SCHEMEID = entity.ID, METERING_STANDARD_DEVICEID = item.Split('*')[0], GROUPS = item.Split('*')[1], TYPE = item.Split('*')[2], NAMES = item.Split('*')[3], CREATEPERSON = entity.CREATEPERSON, CREATETIME = entity.CREATETIME }; //db.STANDARDCHOICE.Attach(sys); editEntity.STANDARDCHOICE.Add(sys); } } if (deleteMETERING_STANDARD_DEVICEID != null && deleteMETERING_STANDARD_DEVICEID.Count() > 0) { foreach (var item in deleteMETERING_STANDARD_DEVICEID) { string ID = item.Split('*')[0]; STANDARDCHOICE sys = new STANDARDCHOICE() { ID = ID }; db.STANDARDCHOICE.Attach(sys); editEntity.STANDARDCHOICE.Remove(sys); db.STANDARDCHOICE.Remove(sys); } } #region 更新了引用方案,需要删除原方案数据所录入的数据 if (prepare != null && !string.IsNullOrWhiteSpace(prepare.SCHEMEID) && prepare.SCHEMEID != entity.SCHEMEID) { List <QUALIFIED_UNQUALIFIED_TEST_ITE> deleteQUALIFIED_UNQUALIFIED_TEST_ITEList = (from f in db.QUALIFIED_UNQUALIFIED_TEST_ITE where f.PREPARE_SCHEMEID == entity.ID select f).ToList(); db.QUALIFIED_UNQUALIFIED_TEST_ITE.RemoveRange(deleteQUALIFIED_UNQUALIFIED_TEST_ITEList); } #endregion repository.Save(db); return(true); } catch (Exception ex) { validationErrors.Add(ex.Message); ExceptionsHander.WriteExceptions(ex); } return(false); }
//protected DbTransaction BeginTransaction(IsolationLevel level = IsolationLevel.Unspecified) //{ // if (Context.Database.Connection.State != ConnectionState.Open) // Context.Database.Connection.Open(); // return Context.Database.Connection.BeginTransaction(level); //} //public void CommitTransaction() //{ // Context.Database.Connection. //} //public void RollbackTransaction() //{ //} /// <summary> /// Saves all changes. /// </summary> /// <remarks> /// This method calls Context.SaveChanges() so it saves /// all changes made in the context not just changes made /// to the current entity. It's crucial to Save() as /// atomically as possible or else use separate Business /// object instances with separate contexts. /// </remarks> /// <returns></returns> public bool Save(TEntity entity = null) { if (entity == null) { entity = Entity; } using (var transaction = new TransactionScope()) { // hook point - allow logic to abort saving if (!OnBeforeSave(entity)) { return(false); } // now do validations if (AutoValidate) { if (!Validate(entity)) { return(false); } } int affected = 0; try { affected = Context.SaveChanges(); } catch (DbEntityValidationException ex) { foreach (var entry in ex.EntityValidationErrors) { foreach (var error in entry.ValidationErrors) { ValidationErrors.Add(error.ErrorMessage, error.PropertyName); } } SetError(ValidationErrors.ToString()); return(false); } catch (DbUpdateException ex) { SetError(ex, true); return(false); } catch (Exception ex) { SetError(ex, true); return(false); } if (!OnAfterSave(Entity)) { return(false); } transaction.Complete(); } return(true); }
/// <summary> /// 校验Excel数据,这个方法一般用于重写校验逻辑 /// </summary> public virtual bool CheckImportData(string fileName, List <Spl_ContactCompanyCategoryModel> list, ref ValidationErrors errors) { var targetFile = new FileInfo(fileName); if (!targetFile.Exists) { errors.Add("导入的数据文件不存在"); return(false); } var excelFile = new ExcelQueryFactory(fileName); //对应列头 excelFile.AddMapping <Spl_ContactCompanyCategoryModel>(x => x.Name, "单位类别"); excelFile.AddMapping <Spl_ContactCompanyCategoryModel>(x => x.CreateTime, "创建时间"); excelFile.AddMapping <Spl_ContactCompanyCategoryModel>(x => x.Category, "客户or供应商"); //SheetName var excelContent = excelFile.Worksheet <Spl_ContactCompanyCategoryModel>(0); int rowIndex = 1; //检查数据正确性 foreach (var row in excelContent) { var errorMessage = new StringBuilder(); var entity = new Spl_ContactCompanyCategoryModel(); entity.Id = row.Id; entity.Name = row.Name; entity.CreateTime = row.CreateTime; entity.Category = row.Category; //============================================================================= if (errorMessage.Length > 0) { errors.Add(string.Format( "第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); } list.Add(entity); rowIndex += 1; } if (errors.Count > 0) { return(false); } return(true); }
public DataAnnotationsValidationResult AddRange(IEnumerable <ValidationError> validationErrors) { ValidationErrors.AddRange(validationErrors); return(this); }
public virtual bool Check(ref ValidationErrors errors, object id, int flag) { return(true); }
private async Task SaveTrackerAsync() { if (ActionType != ActionType.Submit) { return; } ValidationErrors validationErrors = new ValidationErrors(); SetActivityResource(false, true, false, false, TextResources.ProcessingDataPleaseWait, string.Empty, string.Empty); if (await Validate()) { var trackerList = await BuildTracker(); if (trackerList.Count > 0) { var response = await trackerService.SaveTrackerAsync(trackerList); if (response == HttpConstants.SUCCESS) { var result = await MilestoneSaveAsync(); if (result) { var userMeta = new List <Meta>() { await metaService.AddMeta(GenderSelected.ToString(), MetaConstants.GENDER, MetaConstants.GENDER, MetaConstants.LABEL) }; if (IsGenderRequired) { var metaResult = await metaService.SaveMetaAsync(userMeta); if (metaResult == HttpConstants.SUCCESS) { } } await SaveSuccessful(result ?string.Empty : TextResources.MessageMilestoneSubmissionFailed); } } else if (response.ToString().Contains(HttpConstants.UNAUTHORIZED)) { await authenticationService.LogoutAsync(); App.GoToAccountPage(); } else { SetActivityResource(true, false, false, true, string.Empty, string.Empty, response); } } else { SetActivityResource(true, false, false, true, string.Empty, string.Empty, TextResources.NoRecordToProcess); } } }
public ErrorResult(ValidationErrors errors) : base(errors.ToString()) { }
/// <summary> /// 校验Excel数据,这个方法一般用于重写校验逻辑 /// </summary> public virtual bool CheckImportData(string fileName, List <Flow_FormContentStepCheckModel> list, ref ValidationErrors errors) { var targetFile = new FileInfo(fileName); if (!targetFile.Exists) { errors.Add("导入的数据文件不存在"); return(false); } var excelFile = new ExcelQueryFactory(fileName); //对应列头 excelFile.AddMapping <Flow_FormContentStepCheckModel>(x => x.ContentId, "所属公文"); excelFile.AddMapping <Flow_FormContentStepCheckModel>(x => x.StepId, "所属步骤"); excelFile.AddMapping <Flow_FormContentStepCheckModel>(x => x.State, "0不通过1通过2审核中"); excelFile.AddMapping <Flow_FormContentStepCheckModel>(x => x.StateFlag, "状态(是否完成)"); excelFile.AddMapping <Flow_FormContentStepCheckModel>(x => x.CreateTime, "创建时间"); excelFile.AddMapping <Flow_FormContentStepCheckModel>(x => x.IsEnd, "是否结束"); excelFile.AddMapping <Flow_FormContentStepCheckModel>(x => x.IsCustom, "是否自选审核人默认为false"); //SheetName var excelContent = excelFile.Worksheet <Flow_FormContentStepCheckModel>(0); int rowIndex = 1; //检查数据正确性 foreach (var row in excelContent) { var errorMessage = new StringBuilder(); var entity = new Flow_FormContentStepCheckModel(); entity.Id = row.Id; entity.ContentId = row.ContentId; entity.StepId = row.StepId; entity.State = row.State; entity.StateFlag = row.StateFlag; entity.CreateTime = row.CreateTime; entity.IsEnd = row.IsEnd; entity.IsCustom = row.IsCustom; //============================================================================= if (errorMessage.Length > 0) { errors.Add(string.Format( "第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); } list.Add(entity); rowIndex += 1; } if (errors.Count > 0) { return(false); } return(true); }
public bool ImportExcelData(string oper, string filePath, ref ValidationErrors errors) { bool rtn = true; var targetFile = new FileInfo(filePath); if (!targetFile.Exists) { errors.Add("导入的数据文件不存在"); return(false); } var excelFile = new ExcelQueryFactory(filePath); using (XLWorkbook wb = new XLWorkbook(filePath)) { //第一个Sheet using (IXLWorksheet wws = wb.Worksheets.First()) { //对应列头 excelFile.AddMapping <WMS_InvModel>(x => x.InvId, ""); excelFile.AddMapping <WMS_InvModel>(x => x.SubInvId, ""); excelFile.AddMapping <WMS_InvModel>(x => x.PartId, ""); excelFile.AddMapping <WMS_InvModel>(x => x.Qty, ""); //SheetName,第一个Sheet var excelContent = excelFile.Worksheet <WMS_InvModel>(0); //开启事务 using (DBContainer db = new DBContainer()) { var tran = db.Database.BeginTransaction(); //开启事务 int rowIndex = 0; //检查数据正确性 foreach (var row in excelContent) { rowIndex += 1; string errorMessage = String.Empty; var model = new WMS_InvModel(); model.Id = row.Id; model.InvId = row.InvId; model.SubInvId = row.SubInvId; model.PartId = row.PartId; model.Qty = row.Qty; if (!String.IsNullOrEmpty(errorMessage)) { rtn = false; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; continue; } //执行额外的数据校验 try { AdditionalCheckExcelData(ref model); } catch (Exception ex) { rtn = false; errorMessage = ex.Message; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; continue; } //写入数据库 WMS_Inv entity = new WMS_Inv(); entity.Id = model.Id; entity.InvId = model.InvId; entity.SubInvId = model.SubInvId; entity.PartId = model.PartId; entity.Qty = model.Qty; db.WMS_Inv.Add(entity); try { db.SaveChanges(); } catch (Exception ex) { rtn = false; //将当前报错的entity状态改为分离,类似EF的回滚(忽略之前的Add操作) db.Entry(entity).State = System.Data.Entity.EntityState.Detached; errorMessage = ex.InnerException.InnerException.Message; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; } } if (rtn) { tran.Commit(); //必须调用Commit(),不然数据不会保存 } else { tran.Rollback(); //出错就回滚 } } } wb.Save(); } return(rtn); }
public bool ImportExcelData(string oper, string filePath, ref ValidationErrors errors) { bool rtn = true; var targetFile = new FileInfo(filePath); if (!targetFile.Exists) { errors.Add("导入的数据文件不存在"); return(false); } var excelFile = new ExcelQueryFactory(filePath); using (XLWorkbook wb = new XLWorkbook(filePath)) { //第一个Sheet using (IXLWorksheet wws = wb.Worksheets.First()) { //对应列头 excelFile.AddMapping <WMS_Feed_ListModel>(x => x.FeedBillNum, "投料单号(业务)(必输)"); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.ReleaseBillNum, "投料单号(系统)"); excelFile.AddMapping <WMS_Feed_ListModel>(x => x.Department, "投料部门"); excelFile.AddMapping <WMS_Feed_ListModel>(x => x.AssemblyPartCode, "总成物料"); excelFile.AddMapping <WMS_Feed_ListModel>(x => x.SubAssemblyPartCode, "投料物料(必输)"); excelFile.AddMapping <WMS_Feed_ListModel>(x => x.Lot, "批次号(格式:YYYY-MM-DD)"); excelFile.AddMapping <WMS_Feed_ListModel>(x => x.FeedQty, "投料数量(必输)"); excelFile.AddMapping <WMS_Feed_ListModel>(x => x.BoxQty, "箱数"); excelFile.AddMapping <WMS_Feed_ListModel>(x => x.Capacity, "体积"); excelFile.AddMapping <WMS_Feed_ListModel>(x => x.InvName, "库房"); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.SubInvId, "子库存"); excelFile.AddMapping <WMS_Feed_ListModel>(x => x.Remark, "备注"); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.PrintStaus, "打印状态"); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.PrintDate, "打印时间"); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.PrintMan, "打印人"); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.ConfirmStatus, "确认状态"); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.ConfirmMan, "确认人"); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.ConfirmDate, "确认时间"); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.Attr1, ""); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.Attr2, ""); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.Attr3, ""); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.Attr4, ""); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.Attr5, ""); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.CreatePerson, "创建人"); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.CreateTime, "创建时间"); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.ModifyPerson, "修改人"); //excelFile.AddMapping<WMS_Feed_ListModel>(x => x.ModifyTime, "修改时间"); //SheetName,第一个Sheet var excelContent = excelFile.Worksheet <WMS_Feed_ListModel>(0); //开启事务 using (DBContainer db = new DBContainer()) { var tran = db.Database.BeginTransaction(); //开启事务 int rowIndex = 0; //检查数据正确性 foreach (var row in excelContent) { rowIndex += 1; string errorMessage = String.Empty; var model = new WMS_Feed_ListModel(); model.Id = row.Id; model.FeedBillNum = row.FeedBillNum; //把系统单据号与业务单据号赋一样的值 model.ReleaseBillNum = row.FeedBillNum; model.Department = row.Department; model.AssemblyPartCode = row.AssemblyPartCode; model.SubAssemblyPartCode = row.SubAssemblyPartCode; model.FeedQty = row.FeedQty; model.BoxQty = row.BoxQty; model.Capacity = row.Capacity; model.InvName = row.InvName; model.Lot = row.Lot; //model.SubInvId = row.SubInvId; model.Remark = row.Remark; //默认已打印 model.PrintStaus = "已打印"; //model.PrintDate = row.PrintDate; //model.PrintMan = row.PrintMan; //model.ConfirmStatus = row.ConfirmStatus; //model.ConfirmMan = row.ConfirmMan; //model.ConfirmDate = row.ConfirmDate; //model.Attr1 = row.Attr1; //model.Attr2 = row.Attr2; //model.Attr3 = row.Attr3; //model.Attr4 = row.Attr4; //model.Attr5 = row.Attr5; //model.CreatePerson = row.CreatePerson; //model.CreateTime = row.CreateTime; //model.ModifyPerson = row.ModifyPerson; //model.ModifyTime = row.ModifyTime; if (!String.IsNullOrEmpty(errorMessage)) { rtn = false; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; continue; } //执行额外的数据校验 try { AdditionalCheckExcelData(db, ref model); } catch (Exception ex) { rtn = false; errorMessage = ex.Message; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; continue; } //写入数据库 WMS_Feed_List entity = new WMS_Feed_List(); entity.Id = model.Id; entity.FeedBillNum = model.FeedBillNum; entity.ReleaseBillNum = model.ReleaseBillNum; //entity.ReleaseBillNum = "TL" + DateTime.Now.ToString("yyyyMMddHHmmssff");打印时生成 entity.Department = model.Department; entity.AssemblyPartId = model.AssemblyPartId; entity.SubAssemblyPartId = model.SubAssemblyPartId; entity.FeedQty = model.FeedQty; entity.BoxQty = model.BoxQty; entity.Capacity = model.Capacity; entity.InvId = model.InvId; entity.Lot = model.Lot; //entity.SubInvId = model.SubInvId; entity.Remark = model.Remark; entity.PrintStaus = "已打印"; //entity.PrintDate = model.PrintDate; //entity.PrintMan = model.PrintMan; entity.ConfirmStatus = "未确认"; //entity.ConfirmMan = model.ConfirmMan; //entity.ConfirmDate = model.ConfirmDate; //entity.Attr1 = model.Attr1; //entity.Attr2 = model.Attr2; //entity.Attr3 = model.Attr3; //entity.Attr4 = model.Attr4; //entity.Attr5 = model.Attr5; //entity.CreatePerson = model.CreatePerson; //entity.CreateTime = model.CreateTime; //entity.ModifyPerson = model.ModifyPerson; //entity.ModifyTime = model.ModifyTime; entity.CreatePerson = oper; entity.CreateTime = DateTime.Now; entity.ModifyPerson = oper; entity.ModifyTime = DateTime.Now; db.WMS_Feed_List.Add(entity); try { db.SaveChanges(); } catch (Exception ex) { rtn = false; //将当前报错的entity状态改为分离,类似EF的回滚(忽略之前的Add操作) db.Entry(entity).State = System.Data.Entity.EntityState.Detached; errorMessage = ex.InnerException.InnerException.Message; errors.Add(string.Format("第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); wws.Cell(rowIndex + 1, excelFile.GetColumnNames("Sheet1").Count()).Value = errorMessage; } } if (rtn) { tran.Commit(); //必须调用Commit(),不然数据不会保存 } else { tran.Rollback(); //出错就回滚 } } } wb.Save(); } return(rtn); }
/// <summary> /// 校验Excel数据,这个方法一般用于重写校验逻辑 /// </summary> public virtual bool CheckImportData(string fileName, List <MIS_Article_CommentModel> list, ref ValidationErrors errors) { var targetFile = new FileInfo(fileName); if (!targetFile.Exists) { errors.Add("导入的数据文件不存在"); return(false); } var excelFile = new ExcelQueryFactory(fileName); //对应列头 excelFile.AddMapping <MIS_Article_CommentModel>(x => x.ArticleId, "所属文章"); excelFile.AddMapping <MIS_Article_CommentModel>(x => x.UserId, "发布者"); excelFile.AddMapping <MIS_Article_CommentModel>(x => x.TrueName, "姓名"); excelFile.AddMapping <MIS_Article_CommentModel>(x => x.IP, "IP"); excelFile.AddMapping <MIS_Article_CommentModel>(x => x.BodyContent, "内容"); excelFile.AddMapping <MIS_Article_CommentModel>(x => x.CreateTime, "创建时间"); excelFile.AddMapping <MIS_Article_CommentModel>(x => x.IsReply, "是否回复"); excelFile.AddMapping <MIS_Article_CommentModel>(x => x.ReplyContent, "回复内容"); excelFile.AddMapping <MIS_Article_CommentModel>(x => x.ReplyTime, "回复时间"); //SheetName var excelContent = excelFile.Worksheet <MIS_Article_CommentModel>(0); int rowIndex = 1; //检查数据正确性 foreach (var row in excelContent) { var errorMessage = new StringBuilder(); var entity = new MIS_Article_CommentModel(); entity.Id = row.Id; entity.ArticleId = row.ArticleId; entity.UserId = row.UserId; entity.TrueName = row.TrueName; entity.IP = row.IP; entity.BodyContent = row.BodyContent; entity.CreateTime = row.CreateTime; entity.IsReply = row.IsReply; entity.ReplyContent = row.ReplyContent; entity.ReplyTime = row.ReplyTime; //============================================================================= if (errorMessage.Length > 0) { errors.Add(string.Format( "第 {0} 列发现错误:{1}{2}", rowIndex, errorMessage, "<br/>")); } list.Add(entity); rowIndex += 1; } if (errors.Count > 0) { return(false); } return(true); }
public void WhenValid() { Inventor context = new Inventor("Nikola Tesla", new DateTime(1856, 7, 9), "Serbian"); IValidationErrors errors = new ValidationErrors(); ErrorMessageAction action = new ErrorMessageAction("error", "errors"); action.Execute(true, context, null, errors); Assert.IsTrue(errors.IsEmpty); }