private List <TemplateTime> ParseTemplateTimeTable(List <List <object> > table) { List <TemplateTime> templateTimeList = new List <TemplateTime>(); for (int i = 0; i < table.Count; i++) { try { templateTimeList.Add(ParseTemplateTime(table[i])); } catch (Exception e) { CommUtils.Assert(false, "模板时间文件解析错误(Row:" + (i + 1).ToString() + "):" + e.Message); } } for (int i = 0; i < templateTimeList.Count; i++) { try { var rowInfo = "(Row:" + (i + 1).ToString() + ")"; CommUtils.Assert(DateUtils.CheckIsLetterFormat(templateTimeList[i].TemplateTimeName.ToString()), "模板时间文件解析错误{0}:模板时间名称必须由字母组成,不能包含数字和特殊符号", rowInfo); CommUtils.Assert(DateUtils.CheckIsNumberFormat(templateTimeList[i].TimeSpan.ToString()), "模板时间文件解析错误{0}:时间间隔必须由数字组成,不能包含字母和特殊符号", rowInfo); CommUtils.Assert(templateTimeList[i].BeginTime <= templateTimeList[i].EndTime, "模板时间文件解析错误{0}:结束时间不能小于开始时间", rowInfo); } catch (Exception e) { CommUtils.Assert(false, e.Message); } } return(templateTimeList); }
private List <TemplateTask> ParseTemplateTaskTable(List <List <object> > table) { var excelIds = table.ConvertAll(x => x[1].ToString()); var excelTaskNames = table.ConvertAll(x => x[2].ToString()); var excelPrevids = table.ConvertAll(x => x[5].ToString()); excelPrevids = excelPrevids.Distinct().ToList(); for (int i = 0; i < excelTaskNames.Count; i++) { CommUtils.Assert(excelTaskNames[i].Length <= 30, "模板任务文件解析错误(Row:{0}):模板工作名称[{1}]的最大长度为30字符数", (i + 1), excelTaskNames[i]); } //检查模板工作ID只能由数字组成 for (int i = 0; i < excelIds.Count; i++) { CommUtils.Assert(DateUtils.CheckIsNumberFormat(excelIds[i]), "模板任务文件解析错误(Row:{0}):模板工作ID必须由数字组成,不能包含字母和特殊符号", (i + 1)); } //检查模板工作ID中是否存在前置模板工作ID for (int i = 0; i < excelPrevids.Count; i++) { if (!string.IsNullOrEmpty(excelPrevids[i].ToString())) { var Previde = excelPrevids[i].ToString().Split(new char[] { ',', '|' }, StringSplitOptions.RemoveEmptyEntries); var differentPrevide = Previde.Except(excelIds).ToList(); CommUtils.Assert(differentPrevide.Count == 0, "模板任务文件解析错误(Row:{0}):前置模板工作ID({1})在模板工作ID中不存在。" + Environment.NewLine + "注:因为逗号分隔会被Excel识别为金额格式,从而造成前置模板工作ID解析错误,当前系统也支持竖线“|”分隔,并建议使用竖线分割。", (i + 1), CommUtils.Join(differentPrevide)); } } List <TemplateTask> templateTaskList = new List <TemplateTask>(); for (int i = 0; i < table.Count; i++) { try { templateTaskList.Add(ParseTemplateTask(table[i])); } catch (Exception e) { throw new ApplicationException("模板任务文件解析错误(Row:" + (i + 1).ToString() + "):" + e.Message); } } for (int i = 0; i < templateTaskList.Count; i++) { try { CommUtils.Assert(!string.IsNullOrEmpty(templateTaskList[i].TemplateTaskName), "模板任务文件解析错误(Row:" + (i + 1) + "):" + "模板工作名称不能为空"); } catch (Exception e) { throw new ApplicationException(e.Message); } } return(templateTaskList); }