Beispiel #1
0
 public void ConvertToScriptConfig(string savePath)
 {
     if (Layers.Count > 0)
     {
         ScriptConfig config = new ScriptConfig();
         for (int i = 0; i < Layers.Count; i++)
         {
             Layer layer = Layers[i];
             if (layer.LayerName.ToLower().StartsWith("textlayer"))
             {
                 ScriptObject obj = new ScriptObject();
                 obj.LineJoin        = (int)layer.LayerText.OutlineStyle;
                 obj.LogoContainer   = layer.Transform.Size;
                 obj.LogoPosition    = layer.Transform.Position;
                 obj.LogoRotation    = layer.Transform.Rotation;
                 obj.LogoScale       = layer.Transform.Scale;
                 obj.Order           = layer.Order;
                 obj.OutlineColorHex = LogoUtil.ColorToHex(layer.LayerText.OutlineColor);
                 obj.OutlineSize     = layer.LayerText.OutlineSize;
                 obj.TextColor       = LogoUtil.ColorToHex(layer.LayerText.TextColor);
                 obj.FontSize        = layer.LayerText.FontSize;
                 obj.FontName        = "font.ttf";
                 config.LogoList.Add(obj);
             }
         }
         FileUtil.WriteConfig <ScriptConfig>(config, savePath);
     }
 }
Beispiel #2
0
        /// <summary>
        /// 修改指定的节点显示文本
        /// </summary>
        /// <param name="node">节点对象</param>
        /// <param name="szNewText">修改文本</param>
        /// <returns>bool</returns>
        private bool ModifyNodeText(TreeNode node, string szNewText)
        {
            if (node == null || GlobalMethods.Misc.IsEmptyString(szNewText))
            {
                return(false);
            }
            ScriptConfig docTypeInfo = node.Tag as ScriptConfig;

            if (docTypeInfo == null || docTypeInfo.SCRIPT_NAME == szNewText)
            {
                return(false);
            }

            string szDocTypeID      = docTypeInfo.SCRIPT_ID;
            string szOldDocTypeName = docTypeInfo.SCRIPT_NAME;

            docTypeInfo.SCRIPT_NAME = szNewText;

            short shRet = ScriptConfigAccess.Instance.Update(docTypeInfo);

            if (shRet == SystemData.ReturnValue.OK)
            {
                node.Text = szNewText;
                return(true);
            }
            docTypeInfo.SCRIPT_NAME = szOldDocTypeName;
            MessageBoxEx.Show(string.Format("“{0}”重命名失败!", docTypeInfo.SCRIPT_NAME));
            return(false);
        }
Beispiel #3
0
        /// <summary>
        /// 在当前树节点位置处创建模板节点
        /// </summary>
        /// <returns>bool</returns>
        private bool CreateDocType()
        {
            ScriptInfoForm templetInfoForm = new ScriptInfoForm();

            templetInfoForm.IsNew       = true;
            templetInfoForm.IsFolder    = false;
            templetInfoForm.DocTypeInfo = this.MakeDocTypeInfo(false);
            if (templetInfoForm.ShowDialog() != DialogResult.OK)
            {
                return(false);
            }

            ScriptConfig docTypeInfo = templetInfoForm.DocTypeInfo;

            if (docTypeInfo == null)
            {
                return(false);
            }
            short shRet = ScriptConfigAccess.Instance.Insert(docTypeInfo);

            if (shRet != SystemData.ReturnValue.OK)
            {
                MessageBoxEx.ShowError("模板创建失败,无法更新到数据库!");
                return(false);
            }
            this.CreateNewNode(false, docTypeInfo);
            ScriptHandler.Instance.OpenScriptConfig(docTypeInfo);
            return(true);
        }
Beispiel #4
0
        /// <summary>
        /// 获取当前TreeView树中已勾选的病历类型信息列表
        /// </summary>
        /// <returns>病历类型信息列表</returns>
        private List <ScriptConfig> GetSelectedDocTypeList()
        {
            List <ScriptConfig> lstDocTypeInfos = new List <ScriptConfig>();

            if (!this.treeView1.CheckBoxes)
            {
                TreeNode selectedNode = this.treeView1.SelectedNode;
                if (selectedNode == null)
                {
                    return(lstDocTypeInfos);
                }
                ScriptConfig docTypeInfo = selectedNode.Tag as ScriptConfig;
                if (docTypeInfo == null)
                {
                    return(lstDocTypeInfos);
                }
                lstDocTypeInfos.Add(docTypeInfo);
                return(lstDocTypeInfos);
            }
            for (int parentIndex = 0; parentIndex < this.treeView1.Nodes.Count; parentIndex++)
            {
                TreeNode parentNode = this.treeView1.Nodes[parentIndex];
                if (parentNode.Checked)
                {
                    lstDocTypeInfos.Add(parentNode.Tag as ScriptConfig);
                }
                if (parentNode.Nodes.Count > 0)
                {
                    this.GetSelectedDocTypeList(parentNode, ref lstDocTypeInfos);
                }
            }
            return(lstDocTypeInfos);
        }
Beispiel #5
0
        public void DrawByName(string name, string exportPath, string logoName,
                               string splitString, string exportSplitString, bool isScaleAll)
        {
            if (!Directory.Exists(exportPath))
            {
                Directory.CreateDirectory(exportPath);
            }

            // get list logo order behind main logo
            ScriptConfig        config   = props.ScriptConfig;
            List <ScriptObject> logoList = config.LogoList.OrderBy(p => p.Order).ToList();

            string[] names      = name.Trim().Split(new string[] { splitString }, StringSplitOptions.None);
            string   exportName = name.Replace(splitString, exportSplitString);

            for (int i = 0; i < names.Length; i++)
            {
                ScriptObject obj      = logoList[i];
                string       fontPath = props.LogoRootPath + obj.FontName;
                Font         ff       = GetCustomFont(fontPath, obj.FontSize);
                {
                    Layer layer = new Layer(new LayerText(names[i], ff, obj.FontSize, LogoUtil.ConvertStringToColor(obj.TextColor)
                                                          , (int)obj.OutlineSize, LogoUtil.ConvertStringToColor(obj.OutlineColorHex)
                                                          , (LineJoin)obj.LineJoin));

                    layer.UpdateLayer(obj.LogoPosition, obj.LogoScale, obj.LogoRotation, obj.LogoContainer);
                    layerManager.AddTextLayer(layer);
                }
            }
            if (logoList.Count > 0)
            {
                layerManager.ExportImage(exportPath + exportName + ".png", new Size(2400, 3200), isScaleAll);
            }
        }
Beispiel #6
0
        /// <summary>
        /// スクリプト設定をプロパティに設定する
        /// DBには同名の設定に対して複数のバージョンが格納されているため、
        /// 同名の設定のうちバージョンが最新のデータのみを設定する。
        /// </summary>
        /// <param name="configs">設定リスト</param>
        /// <returns>正常系はtrueを返し、設定リストがnullの場合にはfalseを返す</returns>
        public bool SetScriptConfigs(List <DtScriptConfig> configs)
        {
            if (configs == null)
            {
                return(false);
            }

            // 設定時に過去のデータはクリアしておく
            Script = new Dictionary <string, ScriptConfig>();

            foreach (DtScriptConfig config in configs)
            {
                ScriptConfig c = new ScriptConfig();
                c.FileName = config.FileName ?? string.Empty;
                c.Version  = config.Version ?? 0;
                c.Location = config.Location ?? string.Empty;

                if (Script.ContainsKey(config.Name))
                {
                    // 同名のキーが存在する場合は、バージョンが新しい設定で上書きする
                    if (Script[config.Name].Version < c.Version)
                    {
                        Script[config.Name] = c;
                    }
                }
                else
                {
                    // 同名のキーが存在しない場合には要素を追加する
                    Script.Add(config.Name, c);
                }
            }

            return(true);
        }
        public string SaveScript(ScriptConfig script)
        {
            var json = JsonConvert.SerializeObject(script);

            // would save to DB at this point
            return(System.Guid.NewGuid().ToString());
        }
Beispiel #8
0
        /// <summary>
        /// 更新一条整改通知单
        /// </summary>
        /// <param name="timeQCRule">自动核查规则配置信息</param>
        /// <returns>SystemData.ReturnValue</returns>
        public short Update(ScriptConfig scriptConfig)
        {
            if (scriptConfig == null)
            {
                LogManager.Instance.WriteLog("", new string[] { "" }
                                             , new object[] { scriptConfig }, "参数不能为空");
                return(SystemData.ReturnValue.PARAM_ERROR);
            }
            if (base.MedQCAccess == null)
            {
                return(SystemData.ReturnValue.PARAM_ERROR);
            }
            StringBuilder sbField = new StringBuilder();

            sbField.AppendFormat("{0}={1},"
                                 , SystemData.ScriptConfigTable.CREATE_TIME, base.MedQCAccess.GetSqlTimeFormat(scriptConfig.CREATE_TIME));
            sbField.AppendFormat("{0}='{1}',"
                                 , SystemData.ScriptConfigTable.CREATOR_ID, scriptConfig.CREATOR_ID);
            sbField.AppendFormat("{0}='{1}',"
                                 , SystemData.ScriptConfigTable.CREATOR_NAME, scriptConfig.CREATOR_NAME);
            sbField.AppendFormat("{0}={1},"
                                 , SystemData.ScriptConfigTable.IS_FOLDER, scriptConfig.IS_FOLDER);
            sbField.AppendFormat("{0}='{1}',"
                                 , SystemData.ScriptConfigTable.MODIFIER_ID, scriptConfig.MODIFIER_ID);
            sbField.AppendFormat("{0}='{1}',"
                                 , SystemData.ScriptConfigTable.MODIFIER_NAME, scriptConfig.MODIFIER_NAME);
            sbField.AppendFormat("{0}={1},"
                                 , SystemData.ScriptConfigTable.MODIFY_TIME, base.MedQCAccess.GetSqlTimeFormat(scriptConfig.MODIFY_TIME));
            sbField.AppendFormat("{0}='{1}',"
                                 , SystemData.ScriptConfigTable.PARENT_ID, scriptConfig.PARENT_ID);
            sbField.AppendFormat("{0}='{1}',"
                                 , SystemData.ScriptConfigTable.SCRIPT_LANG, scriptConfig.SCRIPT_LANG);
            sbField.AppendFormat("{0}='{1}',"
                                 , SystemData.ScriptConfigTable.SCRIPT_NAME, scriptConfig.SCRIPT_NAME);
            sbField.AppendFormat("{0}={1},"
                                 , SystemData.ScriptConfigTable.SCRIPT_NO, scriptConfig.SCRIPT_NO);
            sbField.AppendFormat("{0}='{1}'"
                                 , SystemData.ScriptConfigTable.SCRIPT_USING, scriptConfig.SCRIPT_USING);
            string szCondition = string.Format("{0}='{1}'", SystemData.ScriptConfigTable.SCRIPT_ID, scriptConfig.SCRIPT_ID);
            string szSQL       = string.Format(SystemData.SQL.UPDATE, SystemData.DataTable.SCRIPT_CONFIG, sbField.ToString(), szCondition);
            int    nCount      = 0;

            try
            {
                nCount = base.MedQCAccess.ExecuteNonQuery(szSQL, CommandType.Text);
            }
            catch (Exception ex)
            {
                LogManager.Instance.WriteLog("", new string[] { "szSQL" }, new object[] { szSQL }, ex);
                return(SystemData.ReturnValue.EXCEPTION);
            }
            if (nCount <= 0)
            {
                LogManager.Instance.WriteLog("", new string[] { "szSQL" }, new object[] { szSQL }, "SQL语句执行后返回0!");
                return(SystemData.ReturnValue.EXCEPTION);
            }
            return(SystemData.ReturnValue.OK);
        }
Beispiel #9
0
        /// <summary>
        /// 保存脚本配置信息到本地XML文件
        /// </summary>
        /// <param name="scriptInfo">脚本配置信息</param>
        /// <returns>SystemData.ReturnValue</returns>
        private short SaveScriptConfig(ScriptConfig scriptInfo)
        {
            if (scriptInfo == null)
            {
                return(SystemData.ReturnValue.FAILED);
            }
            string szConfigXml = this.GetDllCacheIndexFilePath();

            if (GlobalMethods.Misc.IsEmptyString(szConfigXml))
            {
                LogManager.Instance.WriteLog("ScriptCache.SaveScriptConfig", "文件名称为空!");
                return(SystemData.ReturnValue.FAILED);
            }

            //1 读取XML文件,若为空,则创建
            XmlDocument xmlDoc = GlobalMethods.Xml.GetXmlDocument(szConfigXml);

            if (xmlDoc == null)
            {
                xmlDoc = GlobalMethods.Xml.CreateXmlDocument("ScriptConfig");
            }
            if (xmlDoc == null)
            {
                return(SystemData.ReturnValue.FAILED);
            }

            //2 读取指定节点,若为空,则创建
            string  szDllXPath = string.Format("/ScriptConfig/Dll[@Name=\"{0}\"]", scriptInfo.SCRIPT_ID);
            XmlNode node       = GlobalMethods.Xml.SelectXmlNode(xmlDoc, szDllXPath);

            if (node == null)
            {
                node = GlobalMethods.Xml.CreateXmlNode(xmlDoc, null, "Dll", null);
            }
            if (node == null)
            {
                return(SystemData.ReturnValue.FAILED);
            }

            //3 设置属性值
            if (!GlobalMethods.Xml.SetXmlAttrValue(node, "Name", scriptInfo.SCRIPT_ID))
            {
                return(SystemData.ReturnValue.FAILED);
            }
            string szUpdateTime = scriptInfo.MODIFY_TIME.ToString();

            if (!GlobalMethods.Xml.SetXmlAttrValue(node, "UpdateTime", szUpdateTime))
            {
                return(SystemData.ReturnValue.FAILED);
            }

            //4 保存
            bool isSuccess = GlobalMethods.Xml.SaveXmlDocument(xmlDoc, szConfigXml);

            return(isSuccess ? SystemData.ReturnValue.OK : SystemData.ReturnValue.FAILED);
        }
Beispiel #10
0
        /// <summary>
        /// 创建一个新的目录或者类型节点
        /// </summary>
        /// <param name="bIsDir">是否是目录</param>
        /// <param name="docTypeInfo">病历类型信息</param>
        /// <returns>节点</returns>
        private TreeNode CreateNewNode(bool bIsDir, ScriptConfig docTypeInfo)
        {
            TreeNode node = new TreeNode();

            node.Tag = docTypeInfo;
            if (docTypeInfo == null)
            {
                node.Text = bIsDir ? "新建目录" : "未命名模板";
            }
            else
            {
                node.Text = docTypeInfo.SCRIPT_NAME;
            }
            node.ImageIndex         = bIsDir ? 0 : 2;
            node.SelectedImageIndex = node.ImageIndex;

            TreeNode selectedNode = this.treeView1.SelectedNode;

            if (selectedNode == null)
            {
                this.treeView1.Nodes.Add(node);
                return(node);
            }

            ScriptConfig selectedDocType = selectedNode.Tag as ScriptConfig;

            if (selectedDocType == null)
            {
                this.treeView1.Nodes.Add(node);
                return(node);
            }

            TreeNode parentNode = selectedNode;

            if (selectedDocType.IS_FOLDER == 0)
            {
                parentNode = selectedNode.Parent;
            }
            if (parentNode != null)
            {
                parentNode.Nodes.Add(node);
                parentNode.Expand();
            }
            else
            {
                this.treeView1.Nodes.Add(node);
            }

            if (node.TreeView != null)
            {
                this.treeView1.SelectedNode = node;
                node.BeginEdit();
                return(node);
            }
            return(null);
        }
Beispiel #11
0
 /// <summary>
 /// 初始化加载工作
 /// </summary>
 private void LoadScriptData()
 {
     if (this.ScriptInfoList == null || this.ScriptInfoList.Count == 0)
     {
         return;
     }
     for (int index = 0; index < this.ScriptInfoList.Count; index++)
     {
         ScriptConfig scriptInfo = this.ScriptInfoList[index];
         this.DownLoadScript(scriptInfo);
     }
 }
Beispiel #12
0
        /// <summary>
        /// 保存系统缺省模板到数据库服务器
        /// </summary>
        /// <param name="szScriptID">报表类型ID</param>
        /// <param name="byteScriptData">系统缺省模板</param>
        /// <returns>ServerData.ExecuteResult</returns>
        public short SaveScriptDataToDB(ScriptConfig scriptConfig, string szScriptSource, byte[]  byteScriptData)
        {
            if (base.MedQCAccess == null)
            {
                return(SystemData.ReturnValue.PARAM_ERROR);
            }

            string szField = string.Format("{0}={1}", SystemData.ScriptConfigTable.MODIFY_TIME, base.MedQCAccess.GetSqlTimeFormat(scriptConfig.MODIFY_TIME));

            DbParameter[] pmi = null;
            if (szScriptSource != null)
            {
                szField = string.Format("{0},{1}={2}", szField, SystemData.ScriptConfigTable.SCRIPT_SOURCE, base.MedQCAccess.GetSqlParamName("SCRIPT_DATA"));

                pmi    = new DbParameter[1];
                pmi[0] = new DbParameter("SCRIPT_DATA", szScriptSource);
            }

            string szCondition = string.Format("{0}='{1}'", SystemData.ScriptConfigTable.SCRIPT_ID, scriptConfig.SCRIPT_ID);
            string szSQL       = string.Format(SystemData.SQL.UPDATE, SystemData.DataTable.SCRIPT_CONFIG, szField, szCondition);

            if (!base.MedQCAccess.BeginTransaction(IsolationLevel.ReadCommitted))
            {
                return(SystemData.ReturnValue.EXCEPTION);
            }
            int nCount = 0;

            try
            {
                nCount = base.MedQCAccess.ExecuteNonQuery(szSQL, CommandType.Text, ref pmi);
            }
            catch (Exception ex)
            {
                base.MedQCAccess.AbortTransaction();
                LogManager.Instance.WriteLog("", ex);
                return(SystemData.ReturnValue.EXCEPTION);
            }
            if (nCount <= 0)
            {
                LogManager.Instance.WriteLog("ScriptAccess.SaveSystemScriptToDB", new string[] { "szSQL" }, new object[] { szSQL }, "SQL语句执行后返回0!");
                return(SystemData.ReturnValue.EXCEPTION);
            }
            short result = ScriptDataAccess.Instance.UpdateScriptData(scriptConfig.SCRIPT_ID, byteScriptData);

            if (result != SystemData.ReturnValue.OK)
            {
                base.MedQCAccess.AbortTransaction();
                return(result);
            }
            base.MedQCAccess.CommitTransaction(true);
            return(SystemData.ReturnValue.OK);
        }
Beispiel #13
0
            public virtual bool ShowConfigDialog(IWin32Window owner)
            {
                using (var dialog = new TDialog())
                {
                    dialog.Setup(ScriptConfig.Config);
                    if (dialog.ShowDialog(owner) != DialogResult.OK)
                    {
                        return(false);
                    }

                    ScriptConfig.Save();
                    return(true);
                }
            }
Beispiel #14
0
    public ServerTimer(ScriptConfig config, Server server)
    {
        if (config == null)
        {
            throw new ArgumentNullException("ScriptConfig object is null");
        }

        this.Server     = server;
        this.Config     = config;
        this.IsStopping = false;
        this.Timer      = new Timer((sender) => { this.RestartServer(sender as ServerTimer); },
                                    this, this.Config.GetInt("RestartTimeout") * 1000,
                                    Timeout.Infinite);
    }
Beispiel #15
0
 public NeonConfig()
 {
     Database           = new DatabaseConfig();
     Scripts            = new ScriptConfig();
     Mqtt               = new MqttConfig();
     Plugins            = new PluginConfig();
     Tasks              = new TaskConfig();
     FileSystem         = new FileSystemConfig();
     Components         = new ComponentConfig();
     EventsDatabase     = new EventDatabaseConfig();
     IoT                = new IoTConfig();
     JwtToken           = "password";
     AutoLoadComponents = true;
     Home               = new HomeConfig();
 }
Beispiel #16
0
        private bool SaveTempletToServer(string szScriptSource, byte[] byteScriptData)
        {
            //获取当前模板类型信息
            ScriptConfig scriptConfig = null;

            if (this.ActiveScript != null)
            {
                scriptConfig = this.ActiveScript.ScriptConfig;
            }
            else if (this.ActiveScript != null)
            {
                scriptConfig = this.ActiveScript.ScriptConfig;
            }

            ScriptSelectForm frmTempletSelect = new ScriptSelectForm();

            frmTempletSelect.Description = "请选择需要更新的目标病历模板:";
            frmTempletSelect.MultiSelect = false;
            if (scriptConfig != null)
            {
                frmTempletSelect.DefaultDocTypeID = scriptConfig.SCRIPT_ID;
            }
            if (frmTempletSelect.ShowDialog() != DialogResult.OK)
            {
                return(false);
            }
            if (frmTempletSelect.SelectedScriptConfigs == null)
            {
                return(false);
            }
            if (frmTempletSelect.SelectedScriptConfigs.Count <= 0)
            {
                return(false);
            }

            scriptConfig             = frmTempletSelect.SelectedScriptConfigs[0];
            scriptConfig.MODIFY_TIME = SysTimeHelper.Instance.Now;
            short shRet = ScriptConfigAccess.Instance.SaveScriptDataToDB(scriptConfig, szScriptSource, byteScriptData);

            if (shRet != SystemData.ReturnValue.OK)
            {
                string szDocTypeName = scriptConfig.SCRIPT_NAME;
                MessageBoxEx.Show(string.Format("模板“{0}”保存失败!", szDocTypeName));
                return(false);
            }
            return(true);
        }
        /// <summary>
        /// 加载脚本
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Load_Click(object sender, RoutedEventArgs e)
        {
            System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog();
            openFileDialog.Filter = "脚本项目文件 (*.sProject)|*.sProject";
            if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                ScriptConfig = JsonConvert.DeserializeObject <ScriptConfig>(openFileDialog.FileName.GetStringFromFile());

                string path = System.IO.Path.GetDirectoryName(openFileDialog.FileName);
                foreach (var item in ScriptConfig.ScriptFiles)
                {
                    IScriptLayout scriptLayout = new IScriptLayout();
                    scriptLayout.LoadFromJson(System.IO.Path.Combine(path, item + ".script"));
                    scriptContent.ScriptControl.AddScript(StackingMainLayout.InstanceStackingMainLayout(scriptLayout));
                }
            }
        }
Beispiel #18
0
        /// <summary>
        /// 获取指定脚本ID的实例化对象
        /// </summary>
        /// <param name="szSCRIPT_ID">脚本配置信息</param>
        /// <param name="elementCalculators">实例化对象</param>
        /// <returns>SystemData.ReturnValue</returns>
        private short GetScriptInstance(ScriptConfig scriptInfo, ref List <IElementCalculator> elementCalculators)
        {
            if (scriptInfo == null)
            {
                return(SystemData.ReturnValue.FAILED);
            }
            if (GlobalMethods.Misc.IsEmptyString(scriptInfo.SCRIPT_ID))
            {
                return(SystemData.ReturnValue.FAILED);
            }
            if (this.m_htScriptInstance == null)
            {
                this.m_htScriptInstance = new Hashtable();
            }

            if (this.m_htScriptInstance.Contains(scriptInfo.SCRIPT_ID))
            {
                elementCalculators = this.m_htScriptInstance[scriptInfo.SCRIPT_ID] as List <IElementCalculator>;
                return(SystemData.ReturnValue.OK);
            }

            short result = SystemData.ReturnValue.OK;

            if (!this.CheckDllIsNewest(scriptInfo))
            {
                result = this.DownLoadScript(scriptInfo);
                if (result != SystemData.ReturnValue.OK)
                {
                    return(SystemData.ReturnValue.FAILED);
                }
            }

            string fileName = this.GetScriptCachePath(scriptInfo.SCRIPT_ID);

            elementCalculators = AssemblyHelper.Instance.GetElementCalculator(fileName);
            if (elementCalculators == null || elementCalculators.Count <= 0)
            {
                return(SystemData.ReturnValue.FAILED);
            }
            if (!this.m_htScriptInstance.Contains(scriptInfo.SCRIPT_ID))
            {
                this.m_htScriptInstance.Add(scriptInfo.SCRIPT_ID, elementCalculators);
            }
            return(SystemData.ReturnValue.OK);
        }
Beispiel #19
0
        private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            try
            {
                GlobalMethods.UI.SetCursor(this.treeView1, Cursors.WaitCursor);
                ScriptConfig docTypeInfo = e.Node.Tag as ScriptConfig;

                if (docTypeInfo != null && docTypeInfo.IS_FOLDER == 0)
                {
                    ScriptHandler.Instance.OpenScriptConfig(e.Node.Tag as ScriptConfig);
                }
                GlobalMethods.UI.SetCursor(this.treeView1, Cursors.Default);
            }
            catch (Exception ex)
            {
                LogManager.Instance.WriteLog(ex.ToString());
            }
        }
Beispiel #20
0
        /// <summary>
        /// 返回当前选中的模板节点对应的文档类型信息
        /// </summary>
        /// <param name="bIsDir">是否是目录</param>
        /// <returns>DocTypeInfo</returns>
        private ScriptConfig MakeScriptConfig(bool bIsDir)
        {
            ScriptConfig scriptConfig = new ScriptConfig();

            scriptConfig.SCRIPT_ID   = scriptConfig.MakeScriptID();
            scriptConfig.CREATE_TIME = SysTimeHelper.Instance.Now;
            if (SystemParam.Instance.UserInfo == null)
            {
                scriptConfig.CREATOR_ID   = "administrator";
                scriptConfig.CREATOR_NAME = "管理员";
            }
            else
            {
                scriptConfig.CREATOR_ID   = SystemParam.Instance.UserInfo.USER_ID;
                scriptConfig.CREATOR_NAME = SystemParam.Instance.UserInfo.USER_NAME;
            }
            scriptConfig.IS_FOLDER   = bIsDir ? 1 : 0;
            scriptConfig.PARENT_ID   = string.Empty;
            scriptConfig.SCRIPT_NAME = bIsDir ? "新建目录" : "未命名模板";

            TreeNode selectedNode = this.treeView1.SelectedNode;

            if (selectedNode == null)
            {
                return(scriptConfig);
            }

            ScriptConfig selectedDocType = selectedNode.Tag as ScriptConfig;

            if (selectedDocType == null)
            {
                return(scriptConfig);
            }

            if (selectedDocType.IS_FOLDER == 1)
            {
                scriptConfig.PARENT_ID = selectedDocType.SCRIPT_ID;
            }
            else
            {
                scriptConfig.PARENT_ID = selectedDocType.PARENT_ID;
            }
            return(scriptConfig);
        }
Beispiel #21
0
        /// <summary>
        /// メッセージクラス内のスクリプト設定同士を比較する
        /// </summary>
        /// <param name="m1">メッセージクラスオブジェクト1</param>
        /// <param name="m2">メッセージクラスオブジェクト2</param>
        /// <returns>比較結果。内容が完全に一致していればtrueを返す</returns>
        private static bool ScriptConfigEquals(ServerSyncMessage m1, ServerSyncMessage m2)
        {
            List <string> keys1 = new List <string>(m1.Script.Keys);
            List <string> keys2 = new List <string>(m2.Script.Keys);

            // キーの数を比較
            if (keys1.Count != keys2.Count)
            {
                return(false);
            }

            // 要素の比較
            for (int i1 = 0; i1 < keys1.Count; i1++)
            {
                string key1 = keys1[i1];

                for (int i2 = 0; i2 < keys2.Count; i2++)
                {
                    string key2 = keys2[i2];

                    // キーが一致しているか?
                    if (key1.Equals(key2))
                    {
                        // 同じキーを持つ設定不一致のため終了
                        if (!ScriptConfig.Equals(m1.Script[key1], m2.Script[key2]))
                        {
                            return(false);
                        }

                        break;
                    }
                    else
                    {
                        // key1に一致するkey2が存在しなかった場合は設定不一致のため終了
                        if (i2 == keys2.Count - 1)
                        {
                            return(false);
                        }
                    }
                }
            }

            return(true);
        }
Beispiel #22
0
        /// <summary>
        /// 显示选中的模板的信息,并接受修改
        /// </summary>
        private void ShowTempletInfoEditForm()
        {
            TreeNode selectedNode = this.treeView1.SelectedNode;

            if (selectedNode == null)
            {
                return;
            }
            ScriptConfig docTypeInfo = selectedNode.Tag as ScriptConfig;

            if (docTypeInfo == null)
            {
                return;
            }
            string szDocTypeID = docTypeInfo.SCRIPT_ID;

            ScriptInfoForm templetInfoForm = new ScriptInfoForm();

            templetInfoForm.IsNew       = false;
            templetInfoForm.IsFolder    = docTypeInfo.IS_FOLDER == 1;
            templetInfoForm.DocTypeInfo = docTypeInfo.Clone() as ScriptConfig;
            DialogResult result = templetInfoForm.ShowDialog();

            if (result != DialogResult.OK)
            {
                return;
            }

            docTypeInfo = templetInfoForm.DocTypeInfo;
            if (docTypeInfo == null)
            {
                return;
            }
            short shRet = ScriptConfigAccess.Instance.Update(docTypeInfo);

            if (shRet != SystemData.ReturnValue.OK)
            {
                MessageBoxEx.ShowError("模板创建失败,无法更新到数据库!");
                return;
            }
            selectedNode.Tag  = docTypeInfo;
            selectedNode.Text = docTypeInfo.SCRIPT_NAME;
        }
Beispiel #23
0
        public void DrawByName(string name, string exportPath, string logoName)
        {
            try
            {
                if (!Directory.Exists(exportPath))
                {
                    Directory.CreateDirectory(exportPath);
                }

                // get list logo order behind main logo
                ScriptConfig        config   = props.ScriptConfig;
                List <ScriptObject> logoList = config.LogoList.OrderBy(p => p.Order).ToList();
                string[]            names    = name.Trim().Split(new string[] { Settings.Default.SplitString }, StringSplitOptions.None);
                string exportName            = name.Replace(Settings.Default.SplitString, Settings.Default.ExportSplitString);
                for (int i = 0; i < names.Length; i++)
                {
                    ScriptObject obj      = logoList[i];
                    string       fontPath = props.LogoRootPath + obj.FontName;
                    Font         ff       = GetCustomFont(fontPath, obj.FontSize);
                    {
                        AutoArtist.Model.Layer layer = new AutoArtist.Model.Layer(new AutoArtist.Model.LayerText(names[i], ff, obj.FontSize, LogoUtil.ConvertStringToColor(obj.TextColor)
                                                                                                                 , (int)obj.OutlineSize, LogoUtil.ConvertStringToColor(obj.OutlineColorHex)
                                                                                                                 , (LineJoin)obj.LineJoin));

                        layer.UpdateLayer(obj.LogoPosition, obj.LogoScale, obj.LogoRotation, obj.LogoContainer);
                        layerManager.AddTextLayer(layer);
                    }
                }
                if (logoList.Count > 0)
                {
                    layerManager.ExportImage(exportPath + exportName + ".png", new Size(2400, 3200), config.AutoScaleAll);
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("Cannot found any logo info!");
                }
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show("Error: " + ex.Message);
            }
        }
Beispiel #24
0
 internal ScriptEditForm GetScriptForm(ScriptConfig scriptConfig)
 {
     if (this.MainForm == null)
     {
         return(null);
     }
     foreach (IDockContent content in this.MainForm.Documents)
     {
         ScriptEditForm scriptForm = content as ScriptEditForm;
         if (scriptForm == null || scriptForm.ScriptConfig == null)
         {
             continue;
         }
         if (scriptForm.ScriptConfig.SCRIPT_ID == scriptConfig.SCRIPT_ID)
         {
             return(scriptForm);
         }
     }
     return(null);
 }
Beispiel #25
0
        /// <summary>
        /// 获取指定病历类型的所有脚本DLL实例化对象
        /// </summary>
        /// <param name="szExecuteTime">执行时机</param>
        /// <param name="szDocTypeID">病历类型</param>
        /// <param name="elementCalculators">实例化对象列表</param>
        /// <returns>SystemData.ReturnValue</returns>
        public short GetScriptInstances(string szDocTypeID
                                        , ref List <IElementCalculator> elementCalculators)
        {
            if (this.ScriptInfoList == null)
            {
                return(SystemData.ReturnValue.FAILED);
            }

            if (elementCalculators == null)
            {
                elementCalculators = new List <IElementCalculator>();
            }

            short result = SystemData.ReturnValue.OK;

            for (int index = 0; index < this.ScriptInfoList.Count; index++)
            {
                ScriptConfig scriptInfo = this.ScriptInfoList[index];
                if (scriptInfo == null)
                {
                    continue;
                }


                bool docTypeMatched = scriptInfo.SCRIPT_ID == szDocTypeID;
                if (string.IsNullOrEmpty(scriptInfo.SCRIPT_ID))
                {
                    docTypeMatched = true;
                }
                if (docTypeMatched)
                {
                    List <IElementCalculator> elementCalculatorList = null;
                    result = this.GetScriptInstance(scriptInfo, ref elementCalculatorList);
                    if (elementCalculatorList != null && elementCalculatorList.Count > 0)
                    {
                        elementCalculators.AddRange(elementCalculatorList);
                    }
                }
            }
            return(SystemData.ReturnValue.OK);
        }
Beispiel #26
0
        /// <summary>
        /// 检测本地Dll文件是不是最新版本
        /// </summary>
        /// <param name="scriptInfo">脚本配置信息</param>
        /// <returns>true/false</returns>
        private bool CheckDllIsNewest(ScriptConfig scriptInfo)
        {
            if (scriptInfo == null)
            {
                return(false);
            }

            //1 加载本地的配置文件
            string      szConfigFile = this.GetDllCacheIndexFilePath();
            XmlDocument xmlDoc       = GlobalMethods.Xml.GetXmlDocument(szConfigFile);

            //2 配置文件不存在,则说明本地没有任何DLL,故直接下载
            if (xmlDoc == null)
            {
                return(false);
            }

            //3 本地有配置文件,但不存在当前指定的DLL,故直接下载
            string  szXPath = string.Format("/ScriptConfig/Dll[@Name=\"{0}\"]", scriptInfo.SCRIPT_ID);
            XmlNode dllNode = GlobalMethods.Xml.SelectXmlNode(xmlDoc, szXPath);

            if (dllNode == null)
            {
                return(false);
            }

            //4 本地有配置文件,且存在当前指定的脚本,则进行更新日期的比较
            string szUpdateTime = null;

            if (!GlobalMethods.Xml.GetXmlNodeValue(dllNode, "./@UpdateTime", ref szUpdateTime))
            {
                LogManager.Instance.WriteLog("ScriptCache.CheckDllIsNewest", "读取本地配置文件失败!");
                return(false);
            }

            //5 本地有配置文件,且存在当前指定的脚本,但更新日期不一致,则重新下载
            DateTime dtUpdateTime = DateTime.Now;

            GlobalMethods.Convert.StringToDate(szUpdateTime, ref dtUpdateTime);
            return(GlobalMethods.SysTime.CompareTime(scriptInfo.MODIFY_TIME, dtUpdateTime));
        }
        /// <summary>
        /// 加载脚本
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Load_Script(object sender, RoutedEventArgs e)
        {
            System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog();
            openFileDialog.Filter = "脚本项目文件 (*.sProject)|*.sProject";
            if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                ScriptConfig = JsonConvert.DeserializeObject <ScriptConfig>(openFileDialog.FileName.GetStringFromFile());

                string path = System.IO.Path.GetDirectoryName(openFileDialog.FileName);
                projectPath = System.IO.Path.GetDirectoryName(openFileDialog.FileName);
                foreach (var item in ScriptConfig.ScriptFiles)
                {
                    IScriptLayout scriptLayout = new IScriptLayout();
                    scriptLayout.LoadFromJson(System.IO.Path.Combine(path, item + ".script"));
                    scriptLayout.ComipleMessageCall += logBox.WritLog;
                    ScriptLayouts.Add(scriptLayout);
                }
                //加载任务
                if (System.IO.File.Exists(System.IO.Path.Combine(projectPath, "projectTask.task")))
                {
                    ObservableCollection <ScriptTask> scriptTasks = Newtonsoft.Json.JsonConvert.
                                                                    DeserializeObject <ObservableCollection <ScriptTask> >(System.IO.Path.Combine(projectPath, "projectTask.task")
                                                                                                                           .GetStringFromFile());
                    foreach (var listitem in scriptTasks)
                    {
                        foreach (var item in listitem.TaskItems)
                        {
                            IScriptLayout script = ScriptLayouts.FindOne(p => p.ScriptName == item.ScriptName);
                            if (script != null)
                            {
                                item.ScriptLayout = script;
                            }
                        }
                        TaskItems.Add(listitem);
                    }
                    scriptTasks.Clear();
                    scriptTasks = null;
                }
            }
        }
Beispiel #28
0
        /// <summary>
        /// 返回当前选中的模板节点对应的文档类型信息
        /// </summary>
        /// <param name="bIsDir">是否是目录</param>
        /// <returns>DocTypeInfo</returns>
        private ScriptConfig MakeDocTypeInfo(bool bIsDir)
        {
            ScriptConfig docTypeInfo = new ScriptConfig();

            docTypeInfo.SCRIPT_ID   = docTypeInfo.MakeScriptID();
            docTypeInfo.IS_FOLDER   = bIsDir ? 1 : 0;
            docTypeInfo.PARENT_ID   = string.Empty;
            docTypeInfo.SCRIPT_NAME = bIsDir ? "新建目录" : "未命名模板";
            docTypeInfo.MODIFY_TIME = SysTimeHelper.Instance.Now;
            docTypeInfo.SCRIPT_NO   = this.treeView1.Nodes.Count;

            TreeNode selectedNode = this.treeView1.SelectedNode;

            if (selectedNode == null)
            {
                return(docTypeInfo);
            }

            ScriptConfig selectedDocType = selectedNode.Tag as ScriptConfig;

            if (selectedDocType == null)
            {
                return(docTypeInfo);
            }

            if (selectedDocType.IS_FOLDER == 1)
            {
                docTypeInfo.PARENT_ID = selectedDocType.SCRIPT_ID;
                docTypeInfo.SCRIPT_NO = selectedNode.Nodes.Count;
            }
            else
            {
                docTypeInfo.PARENT_ID = selectedDocType.PARENT_ID;
                if (selectedNode.Parent != null)
                {
                    docTypeInfo.SCRIPT_NO = selectedNode.Parent.Nodes.Count;
                }
            }
            return(docTypeInfo);
        }
Beispiel #29
0
        internal short OpenScriptConfig(ScriptConfig scriptConfig)
        {
            if (scriptConfig == null)
            {
                return(SystemData.ReturnValue.FAILED);
            }

            ScriptEditForm scriptEditForm = this.GetScriptForm(scriptConfig);

            if (scriptEditForm != null)
            {
                scriptEditForm.Activate();
                return(SystemData.ReturnValue.OK);
            }
            scriptEditForm              = new ScriptEditForm(this.MainForm);
            scriptEditForm.FlagCode     = Guid.NewGuid().ToString();
            scriptEditForm.ScriptConfig = scriptConfig;

            this.MainForm.OpenScriptEditForm(scriptEditForm);

            string szScriptID = scriptConfig.SCRIPT_ID;
            string szHndfFile = string.Format("{0}\\Cache\\{1}.vbs"
                                              , GlobalMethods.Misc.GetWorkingPath(), szScriptID);

            string byteTempletData = null;

            if (szScriptID != string.Empty)
            {
                short shRet = ScriptConfigAccess.Instance.GetScriptSource(szScriptID, ref byteTempletData);
                if (shRet != SystemData.ReturnValue.OK)
                {
                    return(shRet);
                }
            }

            GlobalMethods.IO.WriteFileText(szHndfFile, byteTempletData);
            return(scriptEditForm.OpenScriptFile(szHndfFile) ?
                   SystemData.ReturnValue.OK : SystemData.ReturnValue.FAILED);
        }
Beispiel #30
0
        /// <summary>
        /// 生成待保存的文档类型信息
        /// </summary>
        /// <returns>bool</returns>
        private bool MakeDocTypeInfo()
        {
            if (this.m_docTypeInfo == null)
            {
                this.m_docTypeInfo = new ScriptConfig();
            }

            if (this.txtTempletID.Text.Trim() == string.Empty)
            {
                MessageBoxEx.ShowError("请输入病历类型ID号");
                return(false);
            }

            if (this.txtTempletName.Text.Trim() == string.Empty)
            {
                MessageBoxEx.ShowError("请输入病历类型名称");
                return(false);
            }
            this.DocTypeInfo.SCRIPT_NAME = this.txtTempletName.Text;
            this.DocTypeInfo.SCRIPT_ID   = this.txtTempletID.Text;
            return(true);
        }