void _createItem(S_T_ISODefine isoDefine, Dictionary <string, object> parent, List <Dictionary <string, object> > result, string EngineeringInfoID) { var db = SQLHelper.CreateSqlHelper(isoDefine.ConnName); if (String.IsNullOrWhiteSpace(isoDefine.TableName)) { return; } var sql = "select * from " + isoDefine.TableName + " where EngineeringInfoID='" + EngineeringInfoID + "'"; var dt = db.ExecuteDataTable(sql); if (String.IsNullOrEmpty(isoDefine.NameFieldInfo) && !dt.Columns.Contains("Name")) { throw new Formula.Exceptions.BusinessValidationException("【" + isoDefine.Name + "】定义配置中,数据源SQL必须定义NAME列"); } parent.SetValue("FileCount", dt.Rows.Count); foreach (DataRow row in dt.Rows) { var formItem = FormulaHelper.DataRowToDic(row); formItem.SetValue("ParentID", isoDefine.ID); formItem.SetValue("ID", row["ID"].ToString()); formItem.SetValue("Type", "ISOForm"); formItem.SetValue("FormTmpCode", isoDefine.FormCode); formItem.SetValue("CanDelete", isoDefine.CanAddNewForm); var enumDefList = new List <Dictionary <string, object> >(); if (!String.IsNullOrEmpty(isoDefine.EnumFieldInfo)) { enumDefList = JsonHelper.ToList(isoDefine.EnumFieldInfo); } string name = StringFunction.ReplaceRegString(isoDefine.NameFieldInfo, FormulaHelper.DataRowToDic(row), enumDefList); formItem.SetValue("Name", name); if (!String.IsNullOrWhiteSpace(isoDefine.LinkFormUrl)) { var url = ""; if (isoDefine.LinkFormUrl.IndexOf("?") >= 0) { url = isoDefine.LinkFormUrl + "&ID=" + row["ID"].ToString() + ""; } else { url = isoDefine.LinkFormUrl + "?ID=" + row["ID"].ToString() + ""; } url += "&FuncType=View"; var urlParams = url.Split('?')[1].Split('&'); foreach (var paramsString in urlParams) { if (paramsString.Split('=')[0].ToLowerInvariant() == "flowcode") { url = url.Replace(paramsString, ""); } } formItem.SetValue("LinkUrl", url); } result.Add(formItem); } }
void _createISOMappingFolder(S_D_DBS parent, string parentDefineCode, List <Dictionary <string, object> > folderDefines, List <S_D_DBS> existFolderList, S_T_ISODefine objMode, S_T_DBSDefine defineInfo, IFormExport export) { var folderDefine = folderDefines.FirstOrDefault(d => d["ParentID"].ToString() == parentDefineCode); if (folderDefine == null) { return; } var value = objMode.GetPropertyString(folderDefine.GetValue("FieldName")); if (String.IsNullOrEmpty(value)) { return; } if (!String.IsNullOrEmpty(folderDefine.GetValue("EnumKey"))) { var enumService = FormulaHelper.GetService <IEnumService>(); value = enumService.GetEnumText(folderDefine.GetValue("EnumKey"), value); } var folder = existFolderList.FirstOrDefault(d => d.Name == value && d.ParentID == parent.ID); if (folder == null) { folder = new S_D_DBS(); folder.ID = FormulaHelper.CreateGuid(); folder.Name = value; folder.DBSCode = objMode.ID; folder.DBSType = Project.Logic.DBSType.Mapping.ToString(); folder.ConfigDBSID = defineInfo.ID + "." + folderDefine.GetValue("FieldName"); folder.ArchiveFolder = folderDefine.GetValue("ArchiveFolder"); folder.MappingType = parent.MappingType; folder.ArchiveFolderName = folderDefine.GetValue("ArchiveFolderName"); folder.SortIndex = objMode.SortIndex; parent.AddChild(folder); existFolderList.Add(folder); } bool addOnDocument = Convert.ToBoolean(folderDefine.GetValue("AddProduct")); if (addOnDocument) { if (folder.DBSCode == objMode.ID) { _createISOForm(objMode, folder, export); } } }
void SendNotice(S_T_ISODefine isoDefine, Dictionary <string, object> dic, S_I_Engineering engineeringInfo, string sendType = "Start") { var regText = sendType == "Start" ? isoDefine.StartNoticeContent : isoDefine.EndNoticeContent; if (isoDefine.SendNotice != "True" || String.IsNullOrEmpty(regText)) { return; } var formID = dic.GetValue("ID"); var notice = this.EPCEntites.Set <S_I_Notice>().FirstOrDefault(d => d.RelateType == sendType && d.RelateID == formID); if (notice == null) { notice = this.EPCEntites.Set <S_I_Notice>().Create(); notice.ID = FormulaHelper.CreateGuid(); var enumDefine = new List <Dictionary <string, object> >(); if (!String.IsNullOrEmpty(isoDefine.EnumFieldInfo)) { enumDefine = JsonHelper.ToList(isoDefine.EnumFieldInfo); } var content = replaceNameString(regText, dic, enumDefine); notice.Title = content; notice.Content = content; if (!String.IsNullOrEmpty(isoDefine.LinkViewUrl)) { notice.LinkUrl = isoDefine.LinkViewUrl.IndexOf("?") >= 0 ? isoDefine.LinkViewUrl + "&ID=" + formID : isoDefine.LinkViewUrl + "?ID=" + formID; } notice.CreateDate = DateTime.Now; notice.RelateID = formID; notice.RelateType = sendType; notice.CreateUserID = dic.GetValue("CreateUserID"); notice.CreateUserName = dic.GetValue("CreateUser"); notice.EngineeringInfoID = engineeringInfo.ID; notice.IsFromSys = "True"; this.EPCEntites.Set <S_I_Notice>().Add(notice); } }
void _createISOForm(S_T_ISODefine isoDefine, S_D_DBS fileFolder, IFormExport export) { var entities = this.GetDbContext <ProjectEntities>(); var db = SQLHelper.CreateSqlHelper(isoDefine.ConnName); string sql = "select * from {0} where ProjectInfoID like '%{1}%' and FlowPhase='End'"; var table = db.ExecuteDataTable(String.Format(sql, isoDefine.TableName, this.ProjectInfoID)); foreach (DataRow isoRow in table.Rows) { #region 创建ISO表单 var enumDefList = new List <Dictionary <string, object> >(); if (!String.IsNullOrEmpty(isoDefine.EnumFieldInfo)) { enumDefList = JsonHelper.ToList(isoDefine.EnumFieldInfo); } string name = Function.ReplaceRegString(isoDefine.NameFieldInfo, FormulaHelper.DataRowToDic(isoRow), enumDefList); var doc = fileFolder.S_D_Document.FirstOrDefault(d => d.RelateID == isoRow["ID"].ToString()); var archiveFields = String.IsNullOrEmpty(isoDefine.ArchiveFields) ? "" : isoDefine.ArchiveFields; var isoDic = FormulaHelper.DataRowToDic(isoRow); var archiveAttachFields = archiveFields.Split(','); if (doc == null) { doc = entities.S_D_Document.Create(); doc.ID = FormulaHelper.CreateGuid(); doc.Name = name; doc.Attr = JsonHelper.ToJson(isoDic); doc.Catagory = isoDefine.Name; doc.MajorValue = isoDic.GetValue("MajorValue"); var pdfFiles = export.ExportPDF(isoDefine.Name, isoRow["ID"].ToString(), isoDefine.FormCode); doc.Code = isoDic.GetValue("SerialNumber"); doc.Version = isoDic.GetValue("VersionNumber"); doc.MainFiles = pdfFiles; doc.PDFFile = pdfFiles; doc.RelateID = isoRow["ID"].ToString(); doc.RelateTable = isoDefine.TableName; doc.CreateUser = isoDic.GetValue("CreateUser"); doc.CreateUserID = isoDic.GetValue("CreateUserID"); doc.State = "Normal"; foreach (var field in archiveAttachFields) { if (string.IsNullOrEmpty(isoDic.GetValue(field))) { continue; } doc.Attachments += isoDic.GetValue(field) + ","; } if (!string.IsNullOrEmpty(doc.Attachments)) { doc.Attachments = doc.Attachments.TrimEnd(','); } fileFolder.AddDocument(doc); //doc.AddDocumentVersion(); } else if (string.IsNullOrEmpty(doc.MainFiles)) { var pdfFiles = export.ExportPDF(isoDefine.Name, isoRow["ID"].ToString(), isoDefine.FormCode); doc.MainFiles = pdfFiles; doc.PDFFile = pdfFiles; foreach (var field in archiveAttachFields) { if (string.IsNullOrEmpty(isoDic.GetValue(field))) { continue; } doc.Attachments += isoDic.GetValue(field) + ","; } if (!string.IsNullOrEmpty(doc.Attachments)) { doc.Attachments = doc.Attachments.TrimEnd(','); } } #endregion } }
void SendNotice(S_T_ISODefine isoDefine, Dictionary <string, object> dic, S_I_ProjectInfo projectInfo, string sendType, string allTaskUserIDs, string allTaskUserNames, string stepName, bool isStep = false) { var regText = sendType == "Start" ? isoDefine.StartNoticeContent : isoDefine.EndNoticeContent; if (isStep) { regText = isoDefine.StepNoticeContent; } if (isoDefine.SendNotice != "True" || String.IsNullOrEmpty(regText)) { return; } var majorCode = string.Empty; if (!string.IsNullOrEmpty(isoDefine.MajorField)) { majorCode = dic.GetValue(isoDefine.MajorField); } var formID = dic.GetValue("ID"); var notice = this.BusinessEntities.Set <S_N_Notice>().FirstOrDefault(d => d.RelateType == sendType && d.RelateID == formID); if (notice == null || isStep) { notice = this.BusinessEntities.Set <S_N_Notice>().Create(); notice.ID = FormulaHelper.CreateGuid(); var enumDefine = new List <Dictionary <string, object> >(); if (!String.IsNullOrEmpty(isoDefine.EnumFieldInfo)) { enumDefine = JsonHelper.ToList(isoDefine.EnumFieldInfo); } dic.SetValue("StepName", stepName); var content = replaceNameString(regText, dic, enumDefine); notice.Title = content; notice.Content = content; if (!String.IsNullOrEmpty(isoDefine.LinkViewUrl)) { notice.LinkUrl = isoDefine.LinkViewUrl.IndexOf("?") >= 0 ? isoDefine.LinkViewUrl + "&ID=" + formID : isoDefine.LinkViewUrl + "?ID=" + formID; } notice.CreateDate = DateTime.Now; notice.RelateID = formID; notice.RelateType = sendType; notice.CreateUserID = dic.GetValue("CreateUserID"); notice.CreateUserName = dic.GetValue("CreateUser"); notice.GroupInfoID = projectInfo.GroupRootID; notice.IsFromSys = "True"; notice.ProjectInfoID = projectInfo.ID; notice.MajorValue = majorCode; notice.NoticeType = isoDefine.Level ?? "Project"; if (isoDefine.Level == "Flow") { notice.ReceiverIDs = allTaskUserIDs; notice.ReceiverNames = allTaskUserNames; } else if (isoDefine.Level == "Major") { notice.WBSID = dic.GetValue("WBSID"); } if (isoDefine.ExpiresDate != null) { notice.ExpiresTime = DateTime.Now.AddDays((double)isoDefine.ExpiresDate); } this.BusinessEntities.Set <S_N_Notice>().Add(notice); } }