Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
                }
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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
            }
        }
Beispiel #5
0
        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);
            }
        }