using System;
using System.Data;
using BP.DA;
using BP.Sys;
using BP.Web;
namespace BP.WF.HttpHandler
{
///
/// 页面功能实体
///
public class WF_CCFormr_Components : BP.WF.HttpHandler.DirectoryPageBase
{
///
/// 构造函数
///
public WF_CCFormr_Components()
{
}
///
/// 视图组件
///
///
public string DataView_Init()
{
var en = new BP.Sys.FrmUI.MapAttrDataView(this.MyPK);
string sql = en.GetValStringByKey(MapAttrAttr.DefaultVal);
sql = BP.WF.Glo.DealExp(sql, null, null);
if (this.WorkID != 0)
{
sql = sql.Replace("@WorkID", this.WorkID.ToString());
sql = sql.Replace("@OID", this.WorkID.ToString());
}
if (this.OID != 0)
{
sql = sql.Replace("@WorkID", this.OID.ToString());
sql = sql.Replace("@OID", this.OID.ToString());
}
if (this.FID != 0)
{
sql = sql.Replace("@FID", this.FID.ToString());
}
DataTable dt = DBAccess.RunSQLReturnTable(sql);
return BP.Tools.Json.ToJson(dt);
}
#region 公文文号 .
///
/// 初始化字号编辑器
///
/// 当前的字号信息.
public string DocWord_Init()
{
//创建实体.
GEEntity en = new GEEntity(this.FrmID, this.OID);
//查询字段.
string ptable = en.EnMap.PhysicsTable; //获得存储表.
//必须有4个列,分别是 DocWordKey字的外键,DocWordName字的名称,DocWordYear年度,DocWordLSH流水号,DocWord字号
string sql = "SELECT DocWordKey,DocWordName,DocWordYear,DocWordLSH,DocWord FROM " + ptable + " WHERE OID=" + this.OID;
DataTable dt = new DataTable();
try
{
dt = DBAccess.RunSQLReturnTable(sql);
}
catch (Exception ex)
{
string repairSQL = ""; //修复表结构的sql.
//如果没有此列就检查增加此列.
if (DBAccess.IsExitsTableCol(ptable, "DocWordKey") == false)
repairSQL += "@ALTER TABLE " + ptable + " ADD DocWordKey varchar(100) ";
if (DBAccess.IsExitsTableCol(ptable, "DocWordName") == false)
repairSQL += "@ALTER TABLE " + ptable + " ADD DocWordName varchar(100) ";
if (DBAccess.IsExitsTableCol(ptable, "DocWordYear") == false)
repairSQL += "@ALTER TABLE " + ptable + " ADD DocWordYear nvarchar(100) ";
if (DBAccess.IsExitsTableCol(ptable, "DocWordLSH") == false)
repairSQL += "@ALTER TABLE " + ptable + " ADD DocWordLSH nvarchar(100) ";
if (DBAccess.IsExitsTableCol(ptable, "DocWord") == false)
repairSQL += "@ALTER TABLE " + ptable + " ADD DocWord nvarchar(100) ";
if (DataType.IsNullOrEmpty(repairSQL) == false)
DBAccess.RunSQLs(repairSQL);
dt = DBAccess.RunSQLReturnTable(sql);
}
//处理大小写.
if (BP.Difference.SystemConfig.AppCenterDBFieldCaseModel != FieldCaseModel.None)
{
dt.Columns[0].ColumnName = "DocWordKey";
dt.Columns[1].ColumnName = "DocWordName";
dt.Columns[2].ColumnName = "DocWordYear";
dt.Columns[3].ColumnName = "DocWordLSH";
dt.Columns[4].ColumnName = "DocWord";
}
// 判断流水号是否未空.
string key = dt.Rows[0]["DocWordKey"].ToString();
string name = dt.Rows[0]["DocWordName"].ToString();
string year = dt.Rows[0]["DocWordYear"].ToString();
string lsh = dt.Rows[0]["DocWordLSH"].ToString();
string word = dt.Rows[0]["DocWord"].ToString();
//如果year是空的就去当前年度.
if (DataType.IsNullOrEmpty(year) == true)
year = DataType.CurrentYear;
//流水号为空,就取当前年度的最大流水号.
if (DataType.IsNullOrEmpty(lsh) == true)
{
//生成一个新的流水号.
sql = "SELECT MAX(DocWordLSH) AS No FROM " + ptable + " WHERE DocWordKey='" + key + "' AND DocWordYear='" + year + "' AND OID!=" + this.OID;
lsh = DBAccess.RunSQLReturnStringIsNull(sql, "");
if (DataType.IsNullOrEmpty(lsh) == true)
lsh = "";
dt.Rows[0]["DocWordYear"] = year;
dt.Rows[0]["DocWordLSH"] = lsh;
}
//初始化数据.
sql = "UPDATE " + ptable + " SET DocWordLSH='" + lsh + "', DocWordYear='" + year + "' WHERE OID=" + this.OID;
DBAccess.RunSQL(sql);
//为了计算机中心做个性化处理为一下两个表名跟新orgno和orgname
if(ptable== "gov_receivefile")
{
string sql1 = "UPDATE gov_receivefile set OrgNo='" + WebUser.OrgNo + "',OrgName='" + WebUser.OrgName + "' where oid=" + this.OID;
DBAccess.RunSQL(sql1);
}
if (ptable == "gov_sendfilecopy")
{
string sql1 = "UPDATE gov_sendfilecopy set OrgNo='" + WebUser.OrgNo + "',OrgName='" + WebUser.OrgName + "' where oid=" + this.OID;
DBAccess.RunSQL(sql1);
}
//转成Json,返回出去.
return BP.Tools.Json.ToJson(dt);
}
///
/// 重新生成字号
///
///
public string DocWord_ReGenerDocWord()
{
//创建实体.
GEEntity en = new GEEntity(this.FrmID, this.OID);
//查询字段.
string ptable = en.EnMap.PhysicsTable; //获得存储表.
string word = this.GetRequestVal("DDL_WordKey"); //字号
string ny = this.GetRequestVal("DDL_Year"); //年月.
//判断这个字号和年月是否已经存在这个表中,存在不要生成
string sql = "SELECT DocWordLSH FROM " + ptable + " WHERE DocWordKey='" + word + "' AND DocWordYear='" + ny + "' AND OID=" + this.OID;
string lsh = DBAccess.RunSQLReturnStringIsNull(sql,"");
if (DataType.IsNullOrEmpty(lsh) == false)
return lsh;
//生成一个新的流水号.
sql = "SELECT max(cast(DocWordLSH as UNSIGNED INTEGER)) AS No FROM " + ptable + " WHERE DocWordKey='" + word + "' AND DocWordYear='" + ny+"'";
lsh = DBAccess.RunSQLReturnStringIsNull(sql, "");
if (DataType.IsNullOrEmpty(lsh) == true)
return lsh = "1";
int a = int.Parse(lsh) + 1;
string str= a.ToString();
return str;
}
///
/// 保存重新生成的字号和保存字号
///
///
public string DocWord_Save()
{
//创建实体.
GEEntity en = new GEEntity(this.FrmID, this.OID);
//查询字段.
string ptable = en.EnMap.PhysicsTable; //获得存储表.
string wordkey = this.GetRequestVal("DDL_WordKey"); //字号
string wordname = this.GetRequestVal("DocWordName"); //DocWordName
string ny = this.GetRequestVal("DDL_Year"); //年份.
string lsh = this.GetRequestVal("TB_LSH"); //流水号.
//检查一下这个流水号是否存在?
string sql = "SELECT DocWordLSH FROM " + ptable + " WHERE DocWordLSH="+ lsh+" AND DocWordKey='" + wordkey + "' AND DocWordYear='" + ny + "' AND OID!=" + this.OID;
DataTable dt = DBAccess.RunSQLReturnTable(sql);
if (dt.Rows.Count !=0 )
return "err@该文号["+lsh+"]已经存在.";
string docword = wordname + "〔" + ny + "〕" + lsh+"号";
//生成一个新的流水号.
sql = "update " + ptable + " set DocWordKey='" + wordkey + "',DocWordName='" + wordname + "' ,DocWordYear='" + ny + "',DocWordLSH='" + lsh + "',DocWord='" + docword + "' WHERE OID=" + this.OID;
DBAccess.RunSQL(sql);
return docword;
}
///
/// 选择一个空闲的编号
///
///
public string DocWord_GenerBlankNum()
{
//创建实体.
GEEntity en = new GEEntity(this.FrmID, this.OID);
//查询字段.
string ptable = en.EnMap.PhysicsTable; //获得存储表.
string wordkey = this.GetRequestVal("DDL_WordKey"); //字号
string wordname = this.GetRequestVal("DocWordName"); //DocWordName
string ny = this.GetRequestVal("DDL_Year"); //年份.
string lsh = this.GetRequestVal("TB_LSH"); //流水号.
//生成一个新的流水号.
string sql = "SELECT MAX(DocWordLSH) AS No FROM " + ptable + " WHERE DocWordKey='" + wordkey + "' AND DocWordYear='" + ny + "' AND OID!=" + this.OID;
lsh = DBAccess.RunSQLReturnStringIsNull(sql, "");
if (DataType.IsNullOrEmpty(lsh) == true)
return "0";
string sqlmax = "SELECT MAX(DocWordLSH) AS No FROM " + ptable;
string maxlsh = DBAccess.RunSQLReturnStringIsNull(sqlmax, "");
//查询出来所有的流水号.
DataTable dt = DBAccess.RunSQLReturnTable("select * from Frm_ZhouPengDeKaiFaZheBiaoShan ORDER BY DocWordLSH");
string num = "";
for (int i = 1; i < int.Parse(maxlsh); i++)
{
bool isHave = false;
foreach (DataRow dr in dt.Rows)
{
int lshNum = int.Parse(dr[9].ToString());
if (lshNum == i)
{
isHave = true;
break;
}
if (isHave == true || lshNum <= i || num.Contains(i.ToString()) == true || lshNum == null)
continue;
//请严格按照000格式不够位数补0不然会影响其他地方 不允许使用000编号
num += i.ToString("000") + ",";
}
}
return num;
}
#endregion 公文文号.
}
}