⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clsshujuguanli.cs

📁 怎样的图象处理的
💻 CS
📖 第 1 页 / 共 2 页
字号:
//===========================================================================
// Smarclient FPMS Demo Project a sample project for SmartClient technology.
// Smarclient FPMS Demo is designed and implemented bases Microsoft Application Block tech.
// Author: SFPMS Team, Date 2004-11
// Vision 2.0.0.0,support xuqiu fenglei
// Revison History XCY 2004-11-17
//=============================================================================
using System;
using System.Collections; 
using System.Data;
using System.Configuration;
using System.Windows.Forms;
using Microsoft.ApplicationBlocks.SmartClient.Offline;
using JSW.Tool;
using JSW.FPMS.Tool;

namespace JSW.FPMS.Xiang.ShuJu
{
	/// <summary>
	/// clsShuJuGuanLi:数据管理类,管理数据载入,数据存放和数据同步等。
	/// 并且提供对FPMS系统数据的访问接口。
	/// MVC中的Model
	/// </summary>
	public class clsShuJuGuanLi
	{
		#region 成员变量区域
		//乡数据
		private Hashtable     xiangShuJu = null;				

		//MOAB引用
		private OfflineBlockBuilder		lixianKongZhi	=	null;

		//需求数据是否变化
		private bool xuqiuShiFouBianHua		=  false;

		//数据文件路径
		private string shujuWenJianLuJing = "shuju.xml";
		private string peizhiWenJianLuJing = "peizhi.xml";

		//系统数据
		private string[]				xitongShuJuZu ={"CaiJiShiJian","TiChuRen","YuFuBianMa",
														   "XuQiuLeiBie","DaFuRen","DaFuShiJian",
														   "XinXiDianBianHao","XuQiuManYiDu"};

		#endregion

		#region 私有方法区域
		/// <summary>
		/// 数据集合之间的比较大小
		/// </summary>
		/// <param name="ShuJu1"></param>
		/// <param name="ShuJu2"></param>
		/// <returns>true是相同,false是不同</returns>
		private bool ShuJuJiHeBiJiao(DataSet ShuJu1,DataSet ShuJu2) 
		{			
			if(ShuJu1.Tables.Count == ShuJu2.Tables.Count && ShuJu1.Tables.Count == 0 ) 
			{
				return true;
			}			
			//忽略的具体的值判断,都默认为不同的。
			return false; 
		}
		#endregion

		#region 公有方法区域
		/// <summary>
		/// 构造器
		/// </summary>
		public clsShuJuGuanLi()
		{
			//初始化
			xiangShuJu  = new Hashtable();			
			//MOAB实例
			lixianKongZhi = OfflineBlockBuilder.Instance; 
			//2004-11-22 He
			this.shujuWenJianLuJing = ConfigurationSettings.AppSettings[clsChangLiang.WENJIAN_LUJING] + "\\" + shujuWenJianLuJing;
			this.peizhiWenJianLuJing = ConfigurationSettings.AppSettings[clsChangLiang.WENJIAN_LUJING] + "\\" + peizhiWenJianLuJing;
			
		}
		/// <summary>
		/// 把数据载入到内存中
		/// </summary>
		public void ZaiRuShuJu() 
		{			
			try 
			{				
				//从数据文件中载入数据,并且分割为基本数据和需求数据
				DataSet shuJu      = new DataSet();				 
				shuJu.ReadXml(shujuWenJianLuJing);
				DataSet jibenShuJu =new DataSet();
				DataSet xuqiuShuJu =new DataSet();

				for(int Loop=0;Loop<shuJu.Tables.Count;Loop++) 
				{
					DataTable shujuBiao = shuJu.Tables[Loop];					
					if(shujuBiao.TableName.Equals("XuQiu"))//如果是需求数据
					{
						xuqiuShuJu.Merge(shujuBiao);						
					}
					else //如果是基本数据
					{
						jibenShuJu.Merge(shujuBiao);
					}
				}			
				xiangShuJu.Add(clsChangLiang.SHUJU_JIBENSHUJU,jibenShuJu);
				xiangShuJu.Add(clsChangLiang.SHUJU_XUQIU,xuqiuShuJu);
				//2.0.0.0 
				ArrayList shuju = this.QuFengXuQiuShuJu(xuqiuShuJu);				
				xiangShuJu.Add(clsChangLiang.SHUJU_XUQIU_WEIDAFU,shuju[0]);
				xiangShuJu.Add(clsChangLiang.SHUJU_XUQIU_YIDAFU,shuju[1]);
			}
			catch(Exception e) 
			{
				if( e.GetType() == typeof(System.IO.DirectoryNotFoundException)) 
				{
					clsRiZhiChuLi.JiLuRiZhi("数据路径错误,不能找到数据文件的路径:"+e.Message);
				}
				//如果出现异常,意味着基础数据环境可能发生了问题,初始化数据环境
				xiangShuJu.Add(clsChangLiang.SHUJU_JIBENSHUJU,new DataSet());
				xiangShuJu.Add(clsChangLiang.SHUJU_XUQIU,new DataSet());
				//2.0.0.0
				xiangShuJu.Add(clsChangLiang.SHUJU_XUQIU_WEIDAFU,new DataSet());
				xiangShuJu.Add(clsChangLiang.SHUJU_XUQIU_YIDAFU,new DataSet());
			}

			try 
			{
				//从配置文件中载入配置信息
				DataSet    peizhiXinXi = new DataSet();
				peizhiXinXi.ReadXml(peizhiWenJianLuJing); 
				xiangShuJu.Add(clsChangLiang.SHUJU_PEIZHIXINXI,peizhiXinXi); 				 				
			}
			catch(Exception e) 
			{	
				if( e.GetType() == typeof(System.IO.DirectoryNotFoundException)) 
				{}
				//如果出现异常,意味着基础数据环境可能发生了问题,初始化数据环境
				xiangShuJu.Add(clsChangLiang.SHUJU_PEIZHIXINXI,new DataSet()); 
			}
		}

		/// <summary>
		/// 重新发送数据 初始化时将XML文件为提交的数据重新提交
		/// zhangwj  11-22
		/// </summary>
		public System.Data.DataSet ChongXinFaSong()
		{
			//数据合法性判断
			if(this.HuoDeShuJu(clsChangLiang.SHUJU_PEIZHIXINXI).Tables.Count <1 ||
				this.HuoDeShuJu(clsChangLiang.SHUJU_XUQIU).Tables.Count<1 ) 
			{
				return new DataSet();
			}
			//构造发送数据集
			System.Data.DataSet dsxinFaSong = ChuangJianShuJuJi() ;
			System.Collections.Hashtable  table = new Hashtable() ;
			string lieMing ="" ;

			for (int i=0;i<dsxinFaSong.Tables["ShuJu"].Columns.Count;i++)
				table.Add(dsxinFaSong.Tables["ShuJu"].Columns[i].ColumnName,"") ;
			//将未提交数据导入到发送数据集中
			DataSet shuJu = this.HuoDeShuJu(clsChangLiang.SHUJU_XUQIU);		
			for (int i=0;i<shuJu.Tables["XuQiu"].Rows.Count;i++)
			{
				if (shuJu.Tables["XuQiu"].Rows[i]["Bianhao"].ToString().Trim()=="-1")
				{
					System.Data.DataRow xinHang = dsxinFaSong.Tables["ShuJu"].NewRow() ;
					for (int j=0;j<shuJu.Tables["XuQiu"].Columns.Count;j++)
					{
						lieMing = shuJu.Tables["XuQiu"].Columns[j].ColumnName;
						if (table.ContainsKey(lieMing))
						{
							xinHang[lieMing] = shuJu.Tables["XuQiu"].Rows[i][lieMing].ToString() ;
						}
					}
					dsxinFaSong.Tables["ShuJu"].Rows.Add(xinHang) ;
				}
			}
			
			return dsxinFaSong ;
		}

		/// <summary>
		///数据存入到本地文件中
		/// </summary>
		public void CunRuShuJu()
		{
			try
			{
				//检查文件路径是否存在,如果没有生成新的文件路径,2004-11-22
				if(!System.IO.Directory.Exists(ConfigurationSettings.AppSettings[clsChangLiang.WENJIAN_LUJING]))
				{					
					System.IO.Directory.CreateDirectory(ConfigurationSettings.AppSettings[clsChangLiang.WENJIAN_LUJING]);
				}
				//存入配置信息数据到peizhi.xml
				HuoDeShuJu(clsChangLiang.SHUJU_PEIZHIXINXI).WriteXml(this.peizhiWenJianLuJing);
				//存入所有数据信息到shuju.xml
				DataSet jibenShuJu = HuoDeShuJu(clsChangLiang.SHUJU_JIBENSHUJU);
				DataSet xuqiuShuJu = HuoDeShuJu(clsChangLiang.SHUJU_XUQIU);				
				DataSet zongShuJu = new DataSet();
				//2004-11-22 He
				zongShuJu.Merge(xuqiuShuJu);
				zongShuJu.Merge(jibenShuJu); 
				zongShuJu.WriteXml(this.shujuWenJianLuJing); 
			}
			catch(Exception e) 
			{	
				if( e.GetType() == typeof(System.IO.DirectoryNotFoundException) ||
						e.GetType() == typeof(System.IO.FileNotFoundException) ) 
				{
					clsRiZhiChuLi.JiLuRiZhi("数据路径错误"+e.Message);
				}
			}
		}

		/// <summary>
		/// 更新数据
		/// </summary>
		/// <param name="ShuJuJian">数据键值</param>
		/// <param name="ShuJu">需要更新的数据</param>
		public void ShuJuGengXin(string ShuJuJian) 
		{
			//从本地缓存的参考数据中获得最近的县数据			
			DataSet xianShuJu = lixianKongZhi.ReferenceDataCache.Retrieve(ShuJuJian) as DataSet;  
			if(xianShuJu == null) 
			{
				return;
			}
			bool bianHua = false;
			lock(this) 
			{
				//如果最新的参考数据不等同于已有的数据,则保存最新的数据。
				if(!ShuJuJiHeBiJiao(xianShuJu,HuoDeShuJu(ShuJuJian)))
				{				
					xiangShuJu.Remove(ShuJuJian);
					xiangShuJu.Add(ShuJuJian,xianShuJu);
					//clsRiZhiChuLi.JiLuRiZhi("数据"+ShuJuJian+"发生了更新"); 

					//zhangwj  11-22  每次更新存入文件
					CunRuShuJu();
					bianHua = true;

					//分割需求,2.0.0.0
					if(ShuJuJian.Equals(clsChangLiang.SHUJU_XUQIU) )
					{
						ArrayList shuju = this.QuFengXuQiuShuJu(xianShuJu);	
						xiangShuJu.Remove(clsChangLiang.SHUJU_XUQIU_WEIDAFU);
						xiangShuJu.Add(clsChangLiang.SHUJU_XUQIU_WEIDAFU,shuju[0]);
						xiangShuJu.Remove(clsChangLiang.SHUJU_XUQIU_YIDAFU);
						xiangShuJu.Add(clsChangLiang.SHUJU_XUQIU_YIDAFU,shuju[1]);
					}
				}
				//处理需求变化队列
				if(bianHua && ShuJuJian.Equals(clsChangLiang.SHUJU_XUQIU)) 
				{
					xuqiuShiFouBianHua =  true;//变化

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -