/// <summary> /// 生成单据根据 /// </summary> /// <param name="templeteFile">模板文件</param> /// <param name="saveToFile"></param> /// <param name="mainDT"></param> /// <param name="dtls"></param> public void MakeDocByDataSet(string templeteFile, string saveToPath, string saveToFileName, DataTable mainDT, DataSet dtlsDS) { string valMain = DBAccess.RunSQLReturnString("SELECT NO FROM SYS_MapData"); this.HisGEEntity = new GEEntity(valMain); this.HisGEEntity.Row.LoadDataTable(mainDT, mainDT.Rows[0]); this.AddEn(this.HisGEEntity); //增加一个主表。 if (dtlsDS != null) { foreach (DataTable dt in dtlsDS.Tables) { string dtlID = DBAccess.RunSQLReturnString("SELECT NO FROM SYS_MapDtl "); GEDtls dtls = new GEDtls(dtlID); foreach (DataRow dr in dt.Rows) { GEDtl dtl = dtls.GetNewEntity as GEDtl; dtl.Row.LoadDataTable(dt, dr); dtls.AddEntity(dtl); } this.AddDtlEns(dtls); //增加一个明晰。 } } this.MakeDoc(templeteFile, saveToPath, saveToFileName, "", false); }
/// <summary> /// 生成实体 /// </summary> /// <param name="ds"></param> /// <returns></returns> public GEEntity GenerGEEntityByDataSet(DataSet ds) { // New 它的实例. GEEntity en = this.HisGEEn; // 它的table. DataTable dt = ds.Tables[this.No]; //装载数据. en.Row.LoadDataTable(dt, dt.Rows[0]); // dtls. MapDtls dtls = this.MapDtls; foreach (MapDtl item in dtls) { DataTable dtDtls = ds.Tables[item.No]; GEDtls dtlsEn = new GEDtls(item.No); foreach (DataRow dr in dtDtls.Rows) { // 产生它的Entity data. GEDtl dtl = (GEDtl)dtlsEn.GetNewEntity; dtl.Row.LoadDataTable(dtDtls, dr); //加入这个集合. dtlsEn.AddEntity(dtl); } //加入到他的集合里. en.Dtls.Add(dtDtls); } return(en); }
/// <summary> /// 创建流程,发送分流点第1步. /// </summary> public void Step1() { Flow fl = new Flow("122"); fl.DoDelData(); // 让zhanghaicheng 登录. BP.WF.Dev2Interface.Port_Login(userNo); //创建空白工作, 发起开始节点. workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow); //获得他的work. Node nd = new Node(12201); Work wk = nd.HisWork; wk.OID = workid; wk.Retrieve(); // 初始化明细表的接收人数据. MapDtl dtl = wk.HisMapDtls[0] as MapDtl; GEDtl enDtl = dtl.HisGEDtl; enDtl.RefPK = workid.ToString(); enDtl.SetValByKey("ChuLiRen", "zhangyifan"); enDtl.SetValByKey("ChuLiRenMingCheng", "张一帆"); enDtl.SetValByKey("PiCiHao", "AA"); //批次号. enDtl.Insert(); enDtl = dtl.HisGEDtl; enDtl.RefPK = workid.ToString(); enDtl.SetValByKey("ChuLiRen", "zhangyifan"); enDtl.SetValByKey("ChuLiRenMingCheng", "张一帆"); enDtl.SetValByKey("PiCiHao", "AA"); //批次号. enDtl.Insert(); enDtl = dtl.HisGEDtl; enDtl.RefPK = workid.ToString(); enDtl.SetValByKey("ChuLiRen", "zhangyifan"); enDtl.SetValByKey("ChuLiRenMingCheng", "张一帆"); enDtl.SetValByKey("PiCiHao", "BB"); //批次号. enDtl.Insert(); // 执行向下发送. SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(this.fk_flow, this.workid); if (objs.VarTreadWorkIDs == "") { throw new Exception("sss"); } }
protected void Page_Load(object sender, EventArgs e) { MapDtl dtl = new MapDtl(this.FK_MapData); GEDtl dtlEn = dtl.HisGEDtl; dtlEn.SetValByKey("OID", this.OID); dtlEn.RetrieveFromDBSources(); MapAttrs mattrs = new MapAttrs(dtl.No); foreach (MapAttr mattr in mattrs) { if (mattr.DefValReal.Contains("@") == false) { continue; } dtlEn.SetValByKey(mattr.KeyOfEn, mattr.DefVal); } this.Btn_Save.UseSubmitBehavior = false; this.Btn_Save.OnClientClick = "this.disabled=true;"; //this.disabled='disabled'; return true;"; //是否要重新装载数据. bool isLoadData = false; if (this.Request.QueryString["IsLoadData"] == "1") { isLoadData = true; } if (this.Request.QueryString["IsReadonly"] == "1") { isLoadData = false; } this.UCEn1.BindCCForm(dtlEn, this.FK_MapData, this.IsReadonly, 0, isLoadData); if (this.IsReadonly) { this.Btn_Save.Visible = false; this.Btn_Save.Enabled = false; } else { this.Btn_Save.Visible = true; this.Btn_Save.Enabled = true; } }
public string NRCMaterielDtlSave() { string fk_Template = this.GetRequestVal("FK_Template"); string workid = this.GetRequestVal("WorkId"); string sql = "SELECT * FROM STARCO_TemplateNRCMaterielDtl WHERE FK_Template='" + fk_Template + "'"; DataTable dt = new DataTable(); dt = DBAccess.RunSQLReturnTable(sql); if (dt != null && dt.Rows.Count > 0) { //string sql1 = "SELECT * FROM ND105Dtl1 WHERE RefPK='" + workid + "'"; //DataTable dt1 = new DataTable(); //dt1 = DBAccess.RunSQLReturnTable(sql1); //if (dt1 != null && dt1.Rows.Count > 0) //{ //} string delSql = "DELETE FROM ND105Dtl1 WHERE RefPK='" + workid + "'"; DBAccess.RunSQLReturnString(delSql); for (int i = 0; i < dt.Rows.Count; i++) { GEDtl dtl = new GEDtl("ND105Dtl1"); dtl.SetValByKey("MingChen", dt.Rows[i]["Name"].ToString()); dtl.SetValByKey("JianHao", dt.Rows[i]["PartNumber"].ToString()); dtl.SetValByKey("RefPK", dt.Rows[i]["Qty"].ToString()); dtl.SetValByKey("ShuLiang", dt.Rows[i]["PCH"].ToString()); dtl.SetValByKey("PiCiHao", dt.Rows[i]["Name"].ToString()); dtl.SetValByKey("RDT", dt.Rows[i]["Name"].ToString()); dtl.SetValByKey("Rec", dt.Rows[i]["Name"].ToString()); string name = dt.Rows[i]["Name"].ToString(); string jianHao = dt.Rows[i]["PartNumber"].ToString(); string workId = workid; string shuLiang = dt.Rows[i]["Qty"].ToString(); string piCiHao = dt.Rows[i]["PCH"].ToString(); string rdt = DateTime.Now.ToString(); string userNo = WebUser.No; string sql2 = "INSERT INTO ND105Dtl1(MingChen,JianHao,RefPK,ShuLiang,PiCiHao,RDT,Rec) VALUES('" + name + "','" + jianHao + "','" + workId + "','" + shuLiang + "','" + piCiHao + "','" + rdt + "','" + userNo + "')"; string result = DBAccess.RunSQLReturnString(sql2); } } return("ok"); }
/// <summary> /// 生成单据根据 /// </summary> /// <param name="templeteFile">模板文件</param> /// <param name="saveToFile"></param> /// <param name="mainDT"></param> /// <param name="dtls"></param> public void MakeDocByDataSet(string templeteFile, string saveToPath, string saveToFileName, DataTable mainDT, DataSet dtlsDS) { this.HisGEEntity = new GEEntity("ND101"); this.HisGEEntity.Row.LoadDataTable(mainDT, mainDT.Rows[0]); this.AddEn(this.HisGEEntity); //增加一个主表。 if (dtlsDS != null) { foreach (DataTable dt in dtlsDS.Tables) { GEDtls dtls = new GEDtls("ND101Dtl1"); foreach (DataRow dr in dt.Rows) { GEDtl dtl = dtls.GetNewEntity as GEDtl; dtl.Row.LoadDataTable(dt, dr); dtls.AddEntity(dtl); } this.AddDtlEns(dtls); //增加一个明晰。 } } this.MakeDoc(templeteFile, saveToPath, saveToFileName, "", false); }
protected void Btn_Save_Click(object sender, EventArgs e) { try { MapDtl dtl = new MapDtl(this.FK_MapData); GEDtl dtlEn = dtl.HisGEDtl; dtlEn.SetValByKey("OID", this.OID); int i = dtlEn.RetrieveFromDBSources(); dtlEn = this.UCEn1.Copy(dtlEn) as GEDtl; dtlEn.SetValByKey(GEDtlAttr.RefPK, this.WorkID); if (i == 0) { dtlEn.OID = 0; dtlEn.Insert(); } else { dtlEn.Update(); } this.Response.Redirect("FrmDtl.aspx?WorkID=" + dtlEn.RefPK + "&FK_MapData=" + this.FK_MapData + "&IsReadonly=" + this.IsReadonly + "&OID=" + dtlEn.OID, true); //if (fes.Contains(FrmEventAttr.FK_Event, FrmEventList.SaveAfter) == true // || fes.Contains(FrmEventAttr.FK_Event, FrmEventList.SaveBefore) == true) //{ // /*如果包含保存*/ // // /FrmDtl.aspx?FK_MapData=ND11699Dtl1&WorkID=2078&OID=7365&IsReadonly=False // this.Response.Redirect(this.Request.RawUrl, true); // //this.Response.Redirect("FrmDtl.aspx?WorkID=" + this.WorkID + "&FK_MapData=" + this.FK_MapData + "&IsReadonly="+this.IsReadonly, true); //} } catch (Exception ex) { this.UCEn1.AddMsgOfWarning("error:", ex.Message); } }
protected void Page_Load(object sender, EventArgs e) { #warning 没有缓存经常预览与设计不一致 if (this.Request.QueryString["IsTest"] == "1") { BP.SystemConfig.DoClearCash_del(); } if (this.Request.QueryString["IsLoadData"] == "1") { this.UCEn1.IsLoadData = true; } MapData md = new MapData(); md.No = this.FK_MapData; if (md.RetrieveFromDBSources() == 0 && md.Name.Length > 3) { if (md.HisFrmType == FrmType.Url) { this.Response.Redirect(md.PTable, true); return; } /* 没有找到此map. */ MapDtl dtl = new MapDtl(this.FK_MapData); GEDtl dtlEn = dtl.HisGEDtl; dtlEn.SetValByKey("OID", this.FID); if (dtlEn.EnMap.Attrs.Count < 2) { md.RepairMap(); this.Response.Redirect(this.Request.RawUrl, true); return; } int i = dtlEn.RetrieveFromDBSources(); string[] paras = this.RequestParas.Split('&'); foreach (string str in paras) { if (string.IsNullOrEmpty(str) || str.Contains("=") == false) { continue; } string[] kvs = str.Split('='); dtlEn.SetValByKey(kvs[0], kvs[1]); } if (md.HisFrmType == FrmType.CCForm) { this.UCEn1.BindCCForm(dtlEn, this.FK_MapData, !this.IsEdit); } if (md.HisFrmType == FrmType.Column4Frm) { this.UCEn1.BindCCForm(dtlEn, this.FK_MapData, !this.IsEdit); } this.AddJSEvent(dtlEn); } else { GEEntity en = md.HisGEEn; int pk = this.OID; if (this.Request.QueryString["NodeID"] != null) { /*说明是流程调用它.*/ Node nd = new Node(int.Parse(this.Request.QueryString["NodeID"])); if (nd.HisRunModel == RunModel.SubThread && nd.HisSubThreadType == SubThreadType.UnSameSheet && this.FK_MapData != "ND" + nd.NodeID) { /*如果是子线程, 并且是异表单节点.*/ pk = this.FID; // 是子线程,并且是异表单的子线程,并且不是节点表单。这样设置是为了到合流点上能够按FID进行表单数据汇总. } } en.SetValByKey("OID", pk); if (en.EnMap.Attrs.Count < 2) { md.RepairMap(); this.Response.Redirect(this.Request.RawUrl, true); return; } int i = en.RetrieveFromDBSources(); if (i == 0) { en.DirectInsert(); } string[] paras = this.RequestParas.Split('&'); foreach (string str in paras) { if (string.IsNullOrEmpty(str) || str.Contains("=") == false) { continue; } string[] kvs = str.Split('='); en.SetValByKey(kvs[0], kvs[1]); } en.ResetDefaultVal(); if (en.ToString() == "0") { en.SetValByKey("OID", pk); } this.OIDPKVal = pk; this.UCEn1.BindCCForm(en, this.FK_MapData, !this.IsEdit); this.AddJSEvent(en); } Session["Count"] = null; this.Btn_Save.Click += new EventHandler(Btn_Save_Click); this.Btn_Save.Visible = this.IsEdit; this.Btn_Save.Enabled = this.IsEdit; this.Btn_Save.BackColor = System.Drawing.Color.White; this.Btn_Print.Visible = this.IsPrint; this.Btn_Print.Enabled = this.IsPrint; this.Btn_Print.Attributes["onclick"] = "window.showModalDialog('./CCForm/Print.aspx?FK_Node=" + this.FK_Node + "&FID=" + this.FID + "&FK_MapData=" + this.FK_MapData + "&WorkID=" + this.OID + "', '', 'dialogHeight: 350px; dialogWidth:450px; center: yes; help: no'); return false;"; }
/// <summary> /// 创建WorkID /// </summary> /// <param name="flowNo">流程编号</param> /// <param name="ht">表单参数,可以为null。</param> /// <param name="workDtls">明细表参数,可以为null。</param> /// <param name="starter">流程的发起人</param> /// <param name="title">创建工作时的标题,如果为null,就按设置的规则生成。</param> /// <param name="parentWorkID">父流程的WorkID,如果没有父流程就传入为0.</param> /// <param name="parentFlowNo">父流程的流程编号,如果没有父流程就传入为null.</param> /// <returns>为开始节点创建工作后产生的WorkID.</returns> public static Int64 Node_CreateBlankWork(string flowNo, Hashtable ht, DataSet workDtls, string guestNo, string title, Int64 parentWorkID, string parentFlowNo, int parentNodeID, string parentEmp) { //if (BP.Web.WebUser.No != "Guest") // throw new Exception("@必须是Guest登陆才能发起."); string dbstr = SystemConfig.AppCenterDBVarStr; Flow fl = new Flow(flowNo); Node nd = new Node(fl.StartNodeID); //把一些其他的参数也增加里面去,传递给ccflow. Hashtable htPara = new Hashtable(); if (parentWorkID != 0) { htPara.Add(StartFlowParaNameList.PWorkID, parentWorkID); } if (parentFlowNo != null) { htPara.Add(StartFlowParaNameList.PFlowNo, parentFlowNo); } if (parentNodeID != 0) { htPara.Add(StartFlowParaNameList.PNodeID, parentNodeID); } if (parentEmp != null) { htPara.Add(StartFlowParaNameList.PEmp, parentEmp); } Emp empStarter = new Emp(BP.Web.WebUser.No); Work wk = fl.NewWork(empStarter, htPara); Int64 workID = wk.OID; #region 给各个属性-赋值 if (ht != null) { foreach (string str in ht.Keys) { wk.SetValByKey(str, ht[str]); } } wk.OID = workID; if (workDtls != null) { //保存从表 foreach (DataTable dt in workDtls.Tables) { foreach (MapDtl dtl in wk.HisMapDtls) { if (dt.TableName != dtl.No) { continue; } //获取dtls GEDtls daDtls = new GEDtls(dtl.No); daDtls.Delete(GEDtlAttr.RefPK, wk.OID); // 清除现有的数据. GEDtl daDtl = daDtls.GetNewEntity as GEDtl; daDtl.RefPK = wk.OID.ToString(); // 为从表复制数据. foreach (DataRow dr in dt.Rows) { daDtl.ResetDefaultVal(); daDtl.RefPK = wk.OID.ToString(); //明细列. foreach (DataColumn dc in dt.Columns) { //设置属性. daDtl.SetValByKey(dc.ColumnName, dr[dc.ColumnName]); } daDtl.InsertAsOID(DBAccess.GenerOID("Dtl")); //插入数据. } } } } #endregion 赋值 Paras ps = new Paras(); // 执行对报表的数据表WFState状态的更新,让它为runing的状态. if (DataType.IsNullOrEmpty(title) == false) { ps = new Paras(); ps.SQL = "UPDATE " + fl.PTable + " SET WFState=" + dbstr + "WFState,Title=" + dbstr + "Title WHERE OID=" + dbstr + "OID"; ps.Add(GERptAttr.WFState, (int)WFState.Blank); ps.Add(GERptAttr.Title, title); ps.Add(GERptAttr.OID, wk.OID); DBAccess.RunSQL(ps); } else { ps = new Paras(); ps.SQL = "UPDATE " + fl.PTable + " SET WFState=" + dbstr + "WFState,FK_Dept=" + dbstr + "FK_Dept,Title=" + dbstr + "Title WHERE OID=" + dbstr + "OID"; ps.Add(GERptAttr.WFState, (int)WFState.Blank); ps.Add(GERptAttr.FK_Dept, empStarter.FK_Dept); ps.Add(GERptAttr.Title, BP.WF.WorkFlowBuessRole.GenerTitle(fl, wk)); ps.Add(GERptAttr.OID, wk.OID); DBAccess.RunSQL(ps); } // 删除有可能产生的垃圾数据,比如上一次没有发送成功,导致数据没有清除. ps = new Paras(); ps.SQL = "DELETE FROM WF_GenerWorkFlow WHERE WorkID=" + dbstr + "WorkID1 OR FID=" + dbstr + "WorkID2"; ps.Add("WorkID1", wk.OID); ps.Add("WorkID2", wk.OID); DBAccess.RunSQL(ps); ps = new Paras(); ps.SQL = "DELETE FROM WF_GenerWorkerList WHERE WorkID=" + dbstr + "WorkID1 OR FID=" + dbstr + "WorkID2"; ps.Add("WorkID1", wk.OID); ps.Add("WorkID2", wk.OID); DBAccess.RunSQL(ps); // 设置流程信息 if (parentWorkID != 0) { BP.WF.Dev2Interface.SetParentInfo(flowNo, workID, parentWorkID); } #region 处理generworkid // 设置父流程信息. GenerWorkFlow gwf = new GenerWorkFlow(); gwf.WorkID = wk.OID; int i = gwf.RetrieveFromDBSources(); //将流程信息提前写入wf_GenerWorkFlow,避免查询不到 gwf.FlowName = fl.Name; gwf.FK_Flow = flowNo; gwf.FK_FlowSort = fl.FK_FlowSort; gwf.SysType = fl.SysType; gwf.FK_Dept = WebUser.FK_Dept; gwf.DeptName = WebUser.FK_DeptName; gwf.FK_Node = fl.StartNodeID; gwf.NodeName = nd.Name; gwf.WFState = WFState.Runing; if (DataType.IsNullOrEmpty(title)) { gwf.Title = BP.WF.WorkFlowBuessRole.GenerTitle(fl, wk); } else { gwf.Title = title; } gwf.Starter = WebUser.No; gwf.StarterName = WebUser.Name; gwf.RDT = DataType.CurrentDataTimess; gwf.PWorkID = parentWorkID; // gwf.PFID = parentFID; gwf.PFlowNo = parentFlowNo; gwf.PNodeID = parentNodeID; if (i == 0) { gwf.Insert(); } else { gwf.Update(); } //插入待办. GenerWorkerList gwl = new GenerWorkerList(); gwl.WorkID = wk.OID; gwl.FK_Node = nd.NodeID; gwl.FK_Emp = WebUser.No; i = gwl.RetrieveFromDBSources(); gwl.FK_EmpText = WebUser.Name; gwl.FK_NodeText = nd.Name; gwl.FID = 0; gwl.FK_Flow = fl.No; gwl.FK_Dept = WebUser.FK_Dept; gwl.FK_DeptT = WebUser.FK_DeptName; gwl.SDT = "无"; gwl.DTOfWarning = DataType.CurrentDataTime; gwl.IsEnable = true; gwl.IsPass = false; gwl.PRI = gwf.PRI; if (i == 0) { gwl.Insert(); } else { gwl.Update(); } #endregion return(wk.OID); }
/// <summary> /// 创建WorkID /// </summary> /// <param name="flowNo">流程编号</param> /// <param name="ht">表单参数,可以为null。</param> /// <param name="workDtls">明细表参数,可以为null。</param> /// <param name="starter">流程的发起人</param> /// <param name="title">创建工作时的标题,如果为null,就按设置的规则生成。</param> /// <param name="parentWorkID">父流程的WorkID,如果没有父流程就传入为0.</param> /// <param name="parentFlowNo">父流程的流程编号,如果没有父流程就传入为null.</param> /// <returns>为开始节点创建工作后产生的WorkID.</returns> public static Int64 Node_CreateBlankWork(string flowNo, Hashtable ht, DataSet workDtls, string guestNo, string title, Int64 parentWorkID, string parentFlowNo, int parentNodeID, string parentEmp) { //转化成编号. flowNo = TurnFlowMarkToFlowNo(flowNo); //转化成编号 parentFlowNo = TurnFlowMarkToFlowNo(parentFlowNo); string dbstr = SystemConfig.AppCenterDBVarStr; Flow fl = new Flow(flowNo); Node nd = new Node(fl.StartNodeID); Emp empStarter = new Emp(BP.Web.WebUser.No); //把一些其他的参数也增加里面去,传递给ccflow. Hashtable htPara = new Hashtable(); if (parentWorkID != 0) { htPara.Add(StartFlowParaNameList.PWorkID, parentWorkID); } if (parentFlowNo != null) { htPara.Add(StartFlowParaNameList.PFlowNo, parentFlowNo); } if (parentNodeID != 0) { htPara.Add(StartFlowParaNameList.PNodeID, parentNodeID); } if (parentEmp != null) { htPara.Add(StartFlowParaNameList.PEmp, parentEmp); } Work wk = fl.NewWork(empStarter, htPara); Int64 workID = wk.OID; #region 给各个属性-赋值 if (ht != null) { foreach (string str in ht.Keys) { wk.SetValByKey(str, ht[str]); } } wk.OID = workID; if (workDtls != null) { //保存从表 foreach (DataTable dt in workDtls.Tables) { foreach (MapDtl dtl in wk.HisMapDtls) { if (dt.TableName != dtl.No) { continue; } //获取dtls GEDtls daDtls = new GEDtls(dtl.No); daDtls.Delete(GEDtlAttr.RefPK, wk.OID); // 清除现有的数据. GEDtl daDtl = daDtls.GetNewEntity as GEDtl; daDtl.RefPK = wk.OID.ToString(); // 为从表复制数据. foreach (DataRow dr in dt.Rows) { daDtl.ResetDefaultVal(); daDtl.RefPK = wk.OID.ToString(); //明细列. foreach (DataColumn dc in dt.Columns) { //设置属性. daDtl.SetValByKey(dc.ColumnName, dr[dc.ColumnName]); } daDtl.InsertAsOID(DBAccess.GenerOID("Dtl")); //插入数据. } } } } #endregion 赋值 Paras ps = new Paras(); // 执行对报表的数据表WFState状态的更新,让它为runing的状态. if (string.IsNullOrEmpty(title) == false) { if (fl.TitleRole != "@OutPara") { fl.TitleRole = "@OutPara"; fl.Update(); } ps = new Paras(); ps.SQL = "UPDATE " + fl.PTable + " SET WFState=" + dbstr + "WFState,Title=" + dbstr + "Title WHERE OID=" + dbstr + "OID"; ps.Add(GERptAttr.WFState, (int)WFState.Blank); ps.Add(GERptAttr.Title, title); ps.Add(GERptAttr.OID, wk.OID); DBAccess.RunSQL(ps); } else { ps = new Paras(); ps.SQL = "UPDATE " + fl.PTable + " SET WFState=" + dbstr + "WFState,FK_Dept=" + dbstr + "FK_Dept,Title=" + dbstr + "Title WHERE OID=" + dbstr + "OID"; ps.Add(GERptAttr.WFState, (int)WFState.Blank); ps.Add(GERptAttr.FK_Dept, empStarter.FK_Dept); ps.Add(GERptAttr.Title, WorkNode.GenerTitle(fl, wk)); ps.Add(GERptAttr.OID, wk.OID); DBAccess.RunSQL(ps); } // 删除有可能产生的垃圾数据,比如上一次没有发送成功,导致数据没有清除. ps = new Paras(); ps.SQL = "DELETE FROM WF_GenerWorkFlow WHERE WorkID=" + dbstr + "WorkID1 OR FID=" + dbstr + "WorkID2"; ps.Add("WorkID1", wk.OID); ps.Add("WorkID2", wk.OID); DBAccess.RunSQL(ps); ps = new Paras(); ps.SQL = "DELETE FROM WF_GenerWorkerList WHERE WorkID=" + dbstr + "WorkID1 OR FID=" + dbstr + "WorkID2"; ps.Add("WorkID1", wk.OID); ps.Add("WorkID2", wk.OID); DBAccess.RunSQL(ps); // 设置流程信息 if (parentWorkID != 0) { BP.WF.Dev2Interface.SetParentInfo(flowNo, workID, parentFlowNo, parentWorkID, parentNodeID, parentEmp); } return(wk.OID); }
protected void Page_Load(object sender, EventArgs e) { #region 载入相关文件. this.Page.RegisterClientScriptBlock("sguw", "<link href='./Style/Frm/Tab.css' rel='stylesheet' type='text/css' />"); this.Page.RegisterClientScriptBlock("s2g4uh", "<script language='JavaScript' src='./Style/Frm/jquery.min.js' ></script>"); this.Page.RegisterClientScriptBlock("sdfuy24j", "<script language='JavaScript' src='./Style/Frm/jquery.idTabs.min.js' ></script>"); #endregion 载入相关文件. #region 查询出来从表. MapDtl mdtl = new MapDtl(this.EnsName); GEDtls dtls = new GEDtls(this.EnsName); QueryObject qo = null; try { qo = new QueryObject(dtls); switch (mdtl.DtlOpenType) { case DtlOpenType.ForEmp: qo.AddWhere(GEDtlAttr.RefPK, this.RefPKVal); break; case DtlOpenType.ForWorkID: qo.AddWhere(GEDtlAttr.RefPK, this.RefPKVal); break; case DtlOpenType.ForFID: qo.AddWhere(GEDtlAttr.FID, this.RefPKVal); break; } qo.DoQuery(); } catch (Exception ex) { dtls.GetNewEntity.CheckPhysicsTable(); throw ex; //#region 解决Access 不刷新的问题。 //string rowUrl = this.Request.RawUrl; //if (rowUrl.IndexOf("rowUrl") > 1) //{ // throw ex; //} //else //{ // //this.Response.Redirect(rowUrl + "&rowUrl=1&IsWap=" + this.IsWap, true); // return; //} //#endregion } #endregion 查询出来从表. #region 初始化空白行 if (this.IsReadonly == false) { mdtl.RowsOfList = mdtl.RowsOfList + this.addRowNum; int num = dtls.Count; if (mdtl.IsInsert) { int dtlCount = dtls.Count; for (int i = 0; i < mdtl.RowsOfList - dtlCount; i++) { BP.Sys.GEDtl dt = new GEDtl(this.EnsName); dt.ResetDefaultVal(); dt.OID = i; dtls.AddEntity(dt); } if (num == mdtl.RowsOfList) { BP.Sys.GEDtl dt1 = new GEDtl(this.EnsName); dt1.ResetDefaultVal(); dt1.OID = mdtl.RowsOfList + 1; dtls.AddEntity(dt1); } } } #endregion 初始化空白行 MapData md = new MapData(mdtl.No); this.UCEn1.Clear(); this.UCEn1.Add("\t\n<div class=\"easyui-tabs\" fit=\"true\" border=\"false\" style='width:" + md.FrmW + "px;height:" + md.FrmH + "px;' data-options=\"tools:'#tab-tools'\">"); //begain. #region 输出标签. int idx = 0; int dtlsNum = dtls.Count; foreach (GEDtl dtl in dtls) { idx++; this.UCEn1.Add("\t\n<div id=" + idx + " title='第" + idx + "条' style='overflow: auto;'>"); string src = ""; src = "FrmDtl.aspx?FK_MapData=" + this.EnsName + "&WorkID=" + this.RefPKVal + "&OID=" + dtl.OID + "&IsReadonly=" + this.IsReadonly; this.UCEn1.Add("\t\n<iframe id='IF" + idx + "' Onblur=\"SaveDtlData('" + idx + "');\" frameborder='0' style='width:" + md.FrmW + "px;height:" + md.FrmH + "px;' src=\"" + src + "\"></iframe>"); this.UCEn1.Add("\t\n</div>"); } this.UCEn1.Add("\t\n </div>"); if (this.IsReadonly == false && mdtl.IsInsert) { int addNum = addRowNum + 1; int cutNum = addRowNum - 1; this.UCEn1.Add("\t\n<div id=\"tab-tools\">"); if (cutNum >= 0) { this.UCEn1.Add("\t\n<a href='DtlCard.aspx?EnsName=" + this.EnsName + "&RefPKVal=" + this.RefPKVal + "&addRowNum=" + cutNum + "' class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon-reload'\">移除</a>"); this.UCEn1.Add("\t\n<a href='DtlCard.aspx?EnsName=" + this.EnsName + "&RefPKVal=" + this.RefPKVal + "&addRowNum=" + addNum + "' class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon-reload'\">插入</a>"); } else { this.UCEn1.Add("\t\n<a href='DtlCard.aspx?EnsName=" + this.EnsName + "&RefPKVal=" + this.RefPKVal + "&addRowNum=" + addNum + "' >插入</a>"); } this.UCEn1.Add("\t\n</div>"); } #endregion 输出标签. if (this.IsReadonly == false) { } #region 处理iFrom SaveDtlData。 //string js = ""; //js = "\t\n<script type='text/javascript' >"; //js += "\t\n function SaveDtl(dtl) { "; //js += "\t\n document.getElementById('F' + dtl ).contentWindow.SaveDtlData();"; //js += "\t\n } "; //js += "\t\n</script>"; //this.UCEn1.Add(js); #endregion 处理iFrom SaveDtlData。 }
protected void Page_Load(object sender, EventArgs e) { #region 属性 string sealName = null; #endregion 属性 #warning 没有缓存经常预览与设计不一致 MapData md = new MapData(); md.No = this.FK_MapData; if (this.Request.QueryString["IsTest"] == "1") { md.RepairMap(); BP.Sys.SystemConfig.DoClearCash_del(); } if (this.Request.QueryString["IsLoadData"] == "1") { this.UCEn1.IsLoadData = true; } if (md.RetrieveFromDBSources() == 0 && md.Name.Length > 3) { /*如果没有找到,就可能是 dtl 。*/ if (md.HisFrmType == FrmType.Url || md.HisFrmType == FrmType.SLFrm) { string no = Request.QueryString["NO"]; string urlParas = "OID=" + this.OID + "&NO=" + no + "&WorkID=" + this.WorkID + "&FK_Node=" + this.FK_Node + "&UserNo=" + WebUser.No + "&SID=" + this.SID; /*如果是URL.*/ if (md.Url.Contains("?") == true) { this.Response.Redirect(md.Url + "&" + urlParas, true); } else { this.Response.Redirect(md.Url + "?" + urlParas, true); } return; } /* 没有找到此map. */ MapDtl dtl = new MapDtl(this.FK_MapData); GEDtl dtlEn = dtl.HisGEDtl; dtlEn.SetValByKey("OID", this.FID); if (dtlEn.EnMap.Attrs.Count <= 0) { md.RepairMap(); this.Response.Redirect(this.Request.RawUrl, true); return; } int i = dtlEn.RetrieveFromDBSources(); string[] paras = this.RequestParas.Split('&'); foreach (string str in paras) { if (string.IsNullOrEmpty(str) || str.Contains("=") == false) { continue; } string[] kvs = str.Split('='); dtlEn.SetValByKey(kvs[0], kvs[1]); } Width = md.MaxRight + md.MaxLeft * 2 + 10 + ""; if (float.Parse(Width) < 500) { Width = "900"; } Height = md.MaxEnd > md.FrmH ? md.MaxEnd + "" : md.FrmH + ""; if (float.Parse(Height) <= 800) { Height = "800"; } this.UCEn1.Add("<div id=divCCForm style='width:" + Width + "px;height:" + Height + "px' >"); if (md.HisFrmType == FrmType.FreeFrm) { this.UCEn1.BindCCForm(dtlEn, this.FK_MapData, !this.IsEdit, 0, this.IsLoadData); } if (md.HisFrmType == FrmType.Column4Frm) { this.UCEn1.BindCCForm(dtlEn, this.FK_MapData, !this.IsEdit, 0, this.IsLoadData); } this.AddJSEvent(dtlEn); this.UCEn1.Add("</div>"); } else { /*如果没有找到,就可能是dtl。*/ if (md.HisFrmType == FrmType.Url || md.HisFrmType == FrmType.SLFrm) { string no = Request.QueryString["NO"]; string urlParas = "OID=" + this.OID + "&NO=" + no + "&WorkID=" + this.WorkID + "&FK_Node=" + this.FK_Node + "&IsEdit=" + this.IsEdit.ToString() + "&UserNo=" + WebUser.No + "&SID=" + this.SID; /*如果是URL.*/ if (md.Url.Contains("?") == true) { this.Response.Redirect(md.Url + "&" + urlParas, true); } else { this.Response.Redirect(md.Url + "?" + urlParas, true); } return; } if (md.HisFrmType == FrmType.WordFrm) { string no = Request.QueryString["NO"]; string urlParas = "OID=" + this.OID + "&NO=" + no + "&WorkID=" + this.WorkID + "&FK_Node=" + this.FK_Node + "&UserNo=" + WebUser.No + "&SID=" + this.SID + "&FK_MapData=" + this.FK_MapData + "&OIDPKVal=" + this.OIDPKVal + "&FID=" + this.FID + "&FK_Flow=" + this.FK_Flow; /*如果是URL.*/ string requestParas = this.RequestParas; string[] parasArrary = this.RequestParas.Split('&'); foreach (string str in parasArrary) { if (string.IsNullOrEmpty(str) || str.Contains("=") == false) { continue; } string[] kvs = str.Split('='); if (urlParas.Contains(kvs[0])) { continue; } urlParas += "&" + kvs[0] + "=" + kvs[1]; } if (md.Url.Contains("?") == true) { this.Response.Redirect("FrmWord.aspx?1=2" + "&" + urlParas, true); } else { this.Response.Redirect("FrmWord.aspx" + "?" + urlParas, true); } return; } if (md.HisFrmType == FrmType.ExcelFrm) { this.Response.Redirect("FrmExcel.aspx?1=2" + this.RequestParas, true); return; } GEEntity en = md.HisGEEn; #region 求出 who is pk 值. int pk = this.OID; string nodeid = this.FK_Node.ToString(); if (nodeid != "0" && string.IsNullOrEmpty(this.FK_Flow) == false) { /*说明是流程调用它, 就要判断谁是表单的PK.*/ FrmNode fn = new FrmNode(this.FK_Flow, this.FK_Node, this.FK_MapData); switch (fn.WhoIsPK) { case WhoIsPK.FID: pk = this.FID; if (pk == 0) { throw new Exception("@没有接收到参数FID"); } break; case WhoIsPK.CWorkID: /*延续流程ID*/ pk = this.CWorkID; if (pk == 0) { throw new Exception("@没有接收到参数CWorkID"); } break; case WhoIsPK.PWorkID: /*父流程ID*/ pk = this.PWorkID; if (pk == 0) { throw new Exception("@没有接收到参数PWorkID"); } break; case WhoIsPK.OID: default: break; } } en.SetValByKey("OID", pk); #endregion 求出pk 值. if (en.EnMap.Attrs.Count <= 0) { md.RepairMap(); //让他刷新一下,重新进入. this.Response.Redirect(this.Request.RawUrl, true); return; } //检查实体数据是否存在,并重新设置默认值 if (en.RetrieveFromDBSources() == 0) { en.ResetDefaultValAllAttr(); try { en.DirectInsert(); } catch (Exception ex) { md.RepairMap(); en.CheckPhysicsTable(); throw new Exception("@装载出现错误:如果是第一次出现该错误,请刷新一次,系统有可能自动修复了。技术信息:" + ex.Message); } } string[] paras = this.RequestParas.Split('&'); foreach (string str in paras) { if (string.IsNullOrEmpty(str) || str.Contains("=") == false) { continue; } string[] kvs = str.Split('='); en.SetValByKey(kvs[0], kvs[1]); } if (en.ToString() == "0") { en.SetValByKey("OID", pk); } this.OIDPKVal = pk; #region 处理表单权限控制方案 Width = md.FrmW.ToString();//md.MaxRight + md.MaxLeft * 2 + 10 + ""; if (float.Parse(Width) < 500) { Width = "900"; } Height = md.MaxEnd > md.FrmH ? md.MaxEnd + "" : md.FrmH + ""; if (float.Parse(Height) <= 800) { Height = "800"; } this.UCEn1.Add("<div id=divCCForm style='width:" + Width + "px;height:" + Height + "px' >"); if (nodeid != null) { this.UCEn1.FK_Node = this.FK_Node; /*处理表单权限控制方案*/ this.HisFrmNode = new FrmNode(); int ii = this.HisFrmNode.Retrieve(FrmNodeAttr.FK_Frm, this.FK_MapData, FrmNodeAttr.FK_Node, int.Parse(nodeid)); if (ii == 0 || this.HisFrmNode.FrmSln == 0) { /*说明没有配置,或者方案编号为默认就不用处理,*/ this.UCEn1.BindCCForm(en, this.FK_MapData, !this.IsEdit, 0, this.IsLoadData); } else { FrmFields fls = new FrmFields(this.FK_MapData, this.HisFrmNode.FrmSln); //求出集合. MapAttrs mattrs = new MapAttrs(this.FK_MapData); foreach (FrmField item in fls) { foreach (MapAttr attr in mattrs) { if (attr.KeyOfEn != item.KeyOfEn) { continue; } if (item.IsSigan) { item.UIIsEnable = false; } if (attr.SignType == SignType.CA) { long workId = Convert.ToInt64(this.OID); FrmField keyOfEn = new FrmField(); QueryObject info = new QueryObject(keyOfEn); info.AddWhere(FrmFieldAttr.FK_Node, this.FK_Node); info.addAnd(); info.AddWhere(FrmFieldAttr.FK_MapData, attr.FK_MapData); info.addAnd(); info.AddWhere(FrmFieldAttr.KeyOfEn, attr.KeyOfEn); info.addAnd(); info.AddWhere(MapAttrAttr.UIIsEnable, "1"); if (info.DoQuery() > 0) { sealName = en.GetValStrByKey(attr.KeyOfEn); } } attr.UIIsEnable = item.UIIsEnable; attr.UIVisible = item.UIVisible; attr.IsSigan = item.IsSigan; attr.DefValReal = item.DefVal; } } #region 设置默认值. if (this.IsEdit == true) { bool isHave = false; foreach (MapAttr attr in mattrs) { //if (attr.UIIsEnable) // continue; if (attr.DefValReal.Contains("@") == false) { continue; } en.SetValByKey(attr.KeyOfEn, attr.DefVal); isHave = true; } if (isHave) { en.DirectUpdate(); //让其直接更新. } } #endregion 设置默认值. //按照当前方案绑定表单. /* * 修改说明:如果是自定义方案,就不要装载填充了. */ ////是否要重新装载数据. bool isLoadData = this.IsLoadData; if (this.HisFrmNode.IsEnableLoadData == true) { /*如果允许启用.*/ } else { isLoadData = false; } this.UCEn1.BindCCForm(en, md, mattrs, this.FK_MapData, !this.IsEdit, Int64.Parse(Width), isLoadData); #region 检查必填项 string scriptCheckFrm = ""; scriptCheckFrm += "\t\n<script type='text/javascript' >"; scriptCheckFrm += "\t\n function CheckFrmSlnIsNull(){ "; scriptCheckFrm += "\t\n var isPass = true;"; scriptCheckFrm += "\t\n var alloweSave = true;"; scriptCheckFrm += "\t\n var erroMsg = '提示信息:';"; //表单权限设置为必填项 //查询出来,需要不为空的 Paras ps = new Paras(); ps.SQL = "SELECT KeyOfEn, Name FROM Sys_FrmSln WHERE FK_MapData=" + ps.DBStr + "FK_MapData AND FK_Node=" + ps.DBStr + "FK_Node AND IsNotNull=" + ps.DBStr + "IsNotNull"; ps.Add(FrmFieldAttr.FK_MapData, this.FK_MapData); ps.Add(FrmFieldAttr.FK_Node, this.FK_Node); ps.Add(FrmFieldAttr.IsNotNull, 1); //查询 System.Data.DataTable dtKeys = DBAccess.RunSQLReturnTable(ps); // 检查数据是否完整. foreach (System.Data.DataRow dr in dtKeys.Rows) { string key = dr[0].ToString(); string name = dr[1].ToString(); BP.Web.Controls.TB TB_NotNull = this.UCEn1.GetTBByID("TB_" + key); if (TB_NotNull != null) { scriptCheckFrm += "\t\n try{ "; scriptCheckFrm += "\t\n var element = document.getElementById('" + TB_NotNull.ClientID + "');"; //验证输入的正则格式 scriptCheckFrm += "\t\n if(element && element.readOnly == true) return;"; scriptCheckFrm += "\t\n isPass = EleSubmitCheck(element,'.{1}','" + name + ",不能为空。');"; scriptCheckFrm += "\t\n if(isPass == false){"; scriptCheckFrm += "\t\n alloweSave = false;"; scriptCheckFrm += "\t\n erroMsg += '" + name + ",不能为空。';"; scriptCheckFrm += "\t\n }"; scriptCheckFrm += "\t\n } catch(e) { "; scriptCheckFrm += "\t\n alert(e.name + e.message); return false;"; scriptCheckFrm += "\t\n } "; } } scriptCheckFrm += "\t\n return alloweSave; } "; scriptCheckFrm += "\t\n</script>"; #endregion //检查必填项 this.UCEn1.Add(scriptCheckFrm); } } else { this.UCEn1.BindCCForm(en, this.FK_MapData, !this.IsEdit, 0, this.IsLoadData); } this.UCEn1.Add("</div>"); #endregion if (!IsPostBack) { if (md.IsHaveCA) { #region 检查是否有ca签名. //if (md.IsHaveCA == true) //{ // if (string.IsNullOrEmpty(sealName)) // sealName = WebUser.No; // string basePath = Server.MapPath("~/DataUser/Siganture/" + WorkID); // if (!System.IO.Directory.Exists(basePath)) // { // System.IO.Directory.CreateDirectory(basePath); // } // // basePath = "C:\\"; // this.TB_SealFile.Text = basePath + "\\" + sealName + ".jpg"; // #region 获取存储的 签名信息 // BP.Tools.WFSealData sealData = new BP.Tools.WFSealData(); // sealData.RetrieveByAttrAnd(BP.Tools.WFSealDataAttr.OID, WorkID, BP.Tools.WFSealDataAttr.FK_Node, FK_Node); // //sealData.RetrieveFromDBSources(); // if (!string.IsNullOrEmpty(sealData.SealData)) // { // this.TB_SealData.Text = sealData.SealData; // } // #endregion // //this.TB_SealData.Text = en.GetValStringByKey("SealData"); //} #endregion 检查是否有ca签名. } } this.AddJSEvent(en); } Session["Count"] = null; this.Btn_Save.Visible = this.HisFrmNode.IsEdit; this.Btn_Save.Enabled = this.HisFrmNode.IsEdit; this.Btn_Save.BackColor = System.Drawing.Color.White; Node curNd = new Node(); curNd.NodeID = this.FK_Node; curNd.RetrieveFromDBSources(); if (curNd.FormType == NodeFormType.SheetTree) { this.Btn_Save.Visible = true; this.Btn_Save.Enabled = true; this.Btn_Print.Enabled = false; this.Btn_Print.Visible = false; } else { this.Btn_Print.Visible = this.HisFrmNode.IsPrint; this.Btn_Print.Enabled = this.HisFrmNode.IsPrint; this.Btn_Print.Attributes["onclick"] = "window.open('Print.aspx?FK_Node=" + this.FK_Node + "&FID=" + this.FID + "&FK_MapData=" + this.FK_MapData + "&WorkID=" + this.OID + "', '', 'dialogHeight: 350px; dialogWidth:450px; center: yes; help: no'); return false;"; } }
void btn_Click(object sender, EventArgs e) { Button btn = sender as Button; try { BP.Web.Controls.DDL DDL_ImpWay = (BP.Web.Controls.DDL) this.Pub1.FindControl("DDL_ImpWay"); System.Web.UI.WebControls.FileUpload fuit = (System.Web.UI.WebControls.FileUpload) this.Pub1.FindControl("fup"); if (DDL_ImpWay.SelectedIndex == 0) { this.Alert("请选择导入方式."); return; } MapDtl dtl = new MapDtl(this.FK_MapDtl); string file = this.Request.PhysicalApplicationPath + "\\Temp\\" + WebUser.No + ".xls"; fuit.SaveAs(file); GEDtls dtls = new GEDtls(this.FK_MapDtl); System.Data.DataTable dt = BP.DBLoad.GetTableByExt(file); file = this.Request.PhysicalApplicationPath + "\\DataUser\\DtlTemplete\\" + this.FK_MapDtl + ".xls"; System.Data.DataTable dtTemplete = BP.DBLoad.GetTableByExt(file); #region 检查两个文件是否一致。 foreach (DataColumn dc in dtTemplete.Columns) { bool isHave = false; foreach (DataColumn mydc in dt.Columns) { if (dc.ColumnName == mydc.ColumnName) { isHave = true; break; } } if (isHave == false) { throw new Exception("@您导入的excel文件不符合系统要求的格式,请下载模版文件重新填入。"); } } #endregion 检查两个文件是否一致。 #region 生成要导入的属性. BP.En.Attrs attrs = dtls.GetNewEntity.EnMap.Attrs; BP.En.Attrs attrsExp = new BP.En.Attrs(); foreach (DataColumn dc in dtTemplete.Columns) { foreach (Attr attr in attrs) { if (attr.UIVisible == false) { continue; } if (attr.IsRefAttr) { continue; } if (attr.Desc == dc.ColumnName.Trim()) { attrsExp.Add(attr); break; } } } #endregion 生成要导入的属性. #region 执行导入数据. if (DDL_ImpWay.SelectedIndex == 1) { BP.DA.DBAccess.RunSQL("DELETE " + dtl.PTable + " WHERE RefPK='" + this.WorkID + "'"); } int i = 0; Int64 oid = BP.DA.DBAccess.GenerOID(this.FK_MapDtl, dt.Rows.Count); string rdt = BP.DA.DataType.CurrentData; foreach (DataRow dr in dt.Rows) { GEDtl dtlEn = dtls.GetNewEntity as GEDtl; dtlEn.ResetDefaultVal(); foreach (BP.En.Attr attr in attrsExp) { if (attr.UIVisible == false || dr[attr.Desc] == DBNull.Value) { continue; } string val = dr[attr.Desc].ToString(); if (val == null) { continue; } val = val.Trim(); switch (attr.MyFieldType) { case FieldType.Enum: case FieldType.PKEnum: SysEnums ses = new SysEnums(attr.UIBindKey); foreach (SysEnum se in ses) { if (val == se.Lab) { val = se.IntKey.ToString(); break; } } break; case FieldType.FK: case FieldType.PKFK: break; default: break; } dtlEn.SetValByKey(attr.Key, val); } dtlEn.RefPKInt = (int)this.WorkID; dtlEn.SetValByKey("RDT", rdt); dtlEn.SetValByKey("Rec", WebUser.No); i++; dtlEn.InsertAsOID(oid); oid++; } #endregion 执行导入数据. this.Alert("共有(" + i + ")条数据导入成功。"); } catch (Exception ex) { string msg = ex.Message.Replace("'", "‘"); this.Alert(msg); } }
public void LoadFrmData(MapAttrs mattrs, Entity en) { var mes = new MapExts(this.FK_MapData); var dictParams = new ReplaceFieldList(); var fields = new List <string>(); dictParams.Add("No", WebUser.No, "string"); dictParams.Add("Name", WebUser.Name, "string"); dictParams.Add("FK_Dept", WebUser.FK_Dept, "string"); dictParams.Add("FK_DeptName", WebUser.FK_DeptName, "string"); if (mes.Count == 0) { ReplaceParams = GenerateParamsJsonString(dictParams); ReplaceFields = "[]"; ReplaceDtlNos = "[]"; ReplaceDtls = "[]"; return; } MapExt item = mes.GetEntityByKey(MapExtAttr.ExtType, MapExtXmlList.PageLoadFull) as MapExt; if (item == null) { ReplaceParams = GenerateParamsJsonString(dictParams); ReplaceFields = "[]"; ReplaceDtlNos = "[]"; ReplaceDtls = "[]"; return; } DataTable dt = null; MapAttr mattr = null; string sql = item.Tag; if (string.IsNullOrEmpty(sql) == false) { /* 如果有填充主表的sql */ #region 处理sql变量 sql = sql.Replace("@WebUser.No", WebUser.No); sql = sql.Replace("@WebUser.Name", WebUser.Name); sql = sql.Replace("@WebUser.FK_Dept", WebUser.FK_Dept); sql = sql.Replace("@WebUser.FK_DeptName", WebUser.FK_DeptName); foreach (MapAttr attr in mattrs) { if (sql.Contains("@")) { sql = sql.Replace("@" + attr.KeyOfEn, en.GetValStrByKey(attr.KeyOfEn)); } else { break; } } #endregion 处理sql变量 if (string.IsNullOrEmpty(sql) == false) { if (sql.Contains("@")) { throw new Exception("设置的sql有错误可能有没有替换的变量:" + sql); } dt = DBAccess.RunSQLReturnTable(sql); if (dt.Rows.Count == 1) { DataRow dr = dt.Rows[0]; foreach (DataColumn dc in dt.Columns) { en.SetValByKey(dc.ColumnName, dr[dc.ColumnName].ToString()); mattr = mattrs.GetEntityByKey(MapAttrAttr.KeyOfEn, dc.ColumnName) as MapAttr; dictParams.Add(dc.ColumnName, dr[dc.ColumnName].ToString(), mattr != null && mattr.IsSigan ? "sign" : "string"); fields.Add(dc.ColumnName); } } } } if (IsFirst) { ReplaceParams = GenerateParamsJsonString(dictParams); } else { ReplaceParams = "[]"; } ReplaceFields = GenerateFieldsJsonString(fields); if (string.IsNullOrEmpty(item.Tag1) || item.Tag1.Length < 15) { ReplaceDtls = "[]"; ReplaceDtlNos = "[]"; return; } ReplaceDtls = "["; ReplaceDtlNos = "["; MapDtls dtls = new MapDtls(this.FK_MapData); // 填充从表. foreach (MapDtl dtl in dtls) { ReplaceDtlNos += "\"" + dtl.No + "\","; if (!IsFirst) { continue; } string[] sqls = item.Tag1.Split('*'); foreach (string mysql in sqls) { if (string.IsNullOrEmpty(mysql)) { continue; } if (mysql.Contains(dtl.No + "=") == false) { continue; } #region 处理sql. sql = mysql; sql = sql.Replace(dtl.No + "=", ""); sql = sql.Replace("@WebUser.No", WebUser.No); sql = sql.Replace("@WebUser.Name", WebUser.Name); sql = sql.Replace("@WebUser.FK_Dept", WebUser.FK_Dept); sql = sql.Replace("@WebUser.FK_DeptName", WebUser.FK_DeptName); foreach (MapAttr attr in mattrs) { if (sql.Contains("@")) { sql = sql.Replace("@" + attr.KeyOfEn, en.GetValStrByKey(attr.KeyOfEn)); } else { break; } } #endregion 处理sql. if (string.IsNullOrEmpty(sql)) { continue; } if (sql.Contains("@")) { throw new Exception("设置的sql有错误可能有没有替换的变量:" + sql); } GEDtls gedtls = new GEDtls(dtl.No); try { gedtls.Delete(GEDtlAttr.RefPK, en.PKVal); } catch { gedtls.GetNewEntity.CheckPhysicsTable(); } dt = DBAccess.RunSQLReturnTable(sql); //dictDtls.Add(dtl.No, dt); ReplaceDtls += "{\"dtlno\":\"" + dtl.No + "\",\"dtl\":["; var idx = 1; foreach (DataRow dr in dt.Rows) { ReplaceDtls += "{\"rowid\":" + (idx++) + ",\"cells\":["; GEDtl gedtl = gedtls.GetNewEntity as GEDtl; foreach (DataColumn dc in dt.Columns) { gedtl.SetValByKey(dc.ColumnName, dr[dc.ColumnName].ToString()); mattr = dtl.MapAttrs.GetEntityByKey(MapAttrAttr.KeyOfEn, dc.ColumnName) as MapAttr; ReplaceDtls += "{\"key\":\"" + dc.ColumnName + "\",\"value\":\"" + dr[dc.ColumnName] + "\",\"type\":\"" + (mattr != null && mattr.IsSigan ? "sign" : "string") + "\"},"; } ReplaceDtls = ReplaceDtls.TrimEnd(',') + "]},"; gedtl.RefPK = en.PKVal.ToString(); gedtl.RDT = DataType.CurrentDataTime; gedtl.Rec = WebUser.No; gedtl.Insert(); } ReplaceDtls = ReplaceDtls.TrimEnd(',') + "]}"; } } ReplaceDtls = ReplaceDtls.TrimEnd(',') + "]"; ReplaceDtlNos = ReplaceDtlNos.TrimEnd(',') + "]"; }
protected void Page_Load(object sender, System.EventArgs e) { Response.AddHeader("P3P", "CP=CAO PSA OUR"); Response.AddHeader("Cache-Control", "no-store"); Response.AddHeader("Expires", "0"); Response.AddHeader("Pragma", "no-cache"); string url = this.Request.RawUrl; if (url.Contains("DTT=") == false) { //this.Response.Redirect(url + "&DTT=" + DateTime.Now.ToString("mmDDhhmmss"), true); //return; } try { switch (this.ActionType) { case "Focus": //把任务放入任务池. BP.WF.Dev2Interface.Flow_Focus(Int64.Parse(this.Request.QueryString["WorkID"])); this.WinClose("ss"); break; case "PutOne": //把任务放入任务池. Int64 workid42 = Int64.Parse(this.Request.QueryString["WorkID"]); BP.WF.Dev2Interface.Node_TaskPoolPutOne(workid42); this.WinClose("ss"); break; case "DoAppTask": // 申请任务. Int64 workid2 = Int64.Parse(this.Request.QueryString["WorkID"]); BP.WF.Dev2Interface.Node_TaskPoolTakebackOne(workid2); this.WinClose("ss"); return; case "DoOpenCC": string fk_flow1 = this.Request.QueryString["FK_Flow"]; string fk_node1 = this.Request.QueryString["FK_Node"]; string workid1 = this.Request.QueryString["WorkID"]; string fid1 = this.Request.QueryString["FID"]; string Sta = this.Request.QueryString["Sta"]; if (Sta == "0") { BP.WF.Template.CCList cc1 = new BP.WF.Template.CCList(); cc1.MyPK = this.Request.QueryString["MyPK"]; cc1.Retrieve(); cc1.HisSta = CCSta.Read; cc1.Update(); } this.Response.Redirect("./WorkOpt/OneWork/Track.aspx?FK_Flow=" + fk_flow1 + "&FK_Node=" + fk_node1 + "&WorkID=" + workid1 + "&FID=" + fid1, false); return; case "DelCC": //删除抄送. CCList cc = new CCList(); cc.MyPK = this.MyPK; cc.Retrieve(); cc.HisSta = CCSta.Del; cc.Update(); this.WinClose(); break; case "DelSubFlow": //删除进程。 try { BP.WF.Dev2Interface.Flow_DeleteSubThread(this.FK_Flow, this.WorkID, "手工删除"); this.WinClose(); } catch (Exception ex) { this.WinCloseWithMsg(ex.Message); } break; case "DownBill": Bill b = new Bill(this.MyPK); b.DoOpen(); break; case "DelDtl": GEDtls dtls = new GEDtls(this.EnsName); GEDtl dtl = (GEDtl)dtls.GetNewEntity; dtl.OID = this.RefOID; if (dtl.RetrieveFromDBSources() == 0) { this.WinClose(); break; } FrmEvents fes = new FrmEvents(this.EnsName); //获得事件. // 处理删除前事件. try { fes.DoEventNode(BP.WF.XML.EventListDtlList.DtlItemDelBefore, dtl); } catch (Exception ex) { this.WinCloseWithMsg(ex.Message); break; } dtl.Delete(); // 处理删除后事件. try { fes.DoEventNode(BP.WF.XML.EventListDtlList.DtlItemDelAfter, dtl); } catch (Exception ex) { this.WinCloseWithMsg(ex.Message); break; } this.WinClose(); break; case "EmpDoUp": BP.WF.Port.WFEmp ep = new BP.WF.Port.WFEmp(this.RefNo); ep.DoUp(); BP.WF.Port.WFEmps emps111 = new BP.WF.Port.WFEmps(); // emps111.RemoveCash(); emps111.RetrieveAll(); this.WinClose(); break; case "EmpDoDown": BP.WF.Port.WFEmp ep1 = new BP.WF.Port.WFEmp(this.RefNo); ep1.DoDown(); BP.WF.Port.WFEmps emps11441 = new BP.WF.Port.WFEmps(); // emps11441.RemoveCash(); emps11441.RetrieveAll(); this.WinClose(); break; case "Track": //通过一个串来打开一个工作. string mySid = this.Request.QueryString["SID"]; string[] mystrs = mySid.Split('_'); Int64 myWorkID = int.Parse(mystrs[1]); string fk_emp = mystrs[0]; int fk_node = int.Parse(mystrs[2]); Node mynd = new Node(); mynd.NodeID = fk_node; mynd.RetrieveFromDBSources(); string fk_flow = mynd.FK_Flow; string myurl = "./WorkOpt/OneWork/Track.aspx?FK_Node=" + mynd.NodeID + "&WorkID=" + myWorkID + "&FK_Flow=" + fk_flow; Web.WebUser.SignInOfGener(new BP.Port.Emp(fk_emp), true); this.Response.Write("<script> window.location.href='" + myurl + "'</script> *^_^* <br><br>正在进入系统请稍后,如果长时间没有反应,请<a href='" + myurl + "'>点这里进入。</a>"); return; case "OF": //通过一个串来打开一个工作. string sid = this.Request.QueryString["SID"]; string[] strs = sid.Split('_'); GenerWorkerList wl = new GenerWorkerList(); int i = wl.Retrieve(GenerWorkerListAttr.FK_Emp, strs[0], GenerWorkerListAttr.WorkID, strs[1], GenerWorkerListAttr.FK_Node, strs[2]); if (i == 0) { this.Response.Write("<h2>提示</h2>此工作已经被别人处理或者此流程已删除。"); return; } BP.Port.Emp empOF = new BP.Port.Emp(wl.FK_Emp); Web.WebUser.SignInOfGener(empOF, true); string u = "MyFlow.aspx?FK_Flow=" + wl.FK_Flow + "&WorkID=" + wl.WorkID + "&FK_Node=" + wl.FK_Node + "&FID=" + wl.FID; this.Response.Write("<script> window.location.href='" + u + "'</script> *^_^* <br><br>正在进入系统请稍后,如果长时间没有反应,请<a href='" + u + "'>点这里进入。</a>"); return; case "ExitAuth": BP.Port.Emp emp = new BP.Port.Emp(this.FK_Emp); //首先退出,再进行登录 BP.Web.WebUser.Exit(); BP.Web.WebUser.SignInOfGenerLang(emp, WebUser.SysLang); this.WinClose(); return; case "LogAs": BP.WF.Port.WFEmp wfemp = new BP.WF.Port.WFEmp(this.FK_Emp); if (wfemp.AuthorIsOK == false) { this.WinCloseWithMsg("授权失败"); return; } BP.Port.Emp emp1 = new BP.Port.Emp(this.FK_Emp); BP.Web.WebUser.SignInOfGener(emp1, WebUser.SysLang, WebUser.No, true, false); this.WinClose(); return; case "TakeBack": // 取消授权。 BP.WF.Port.WFEmp myau = new BP.WF.Port.WFEmp(WebUser.No); BP.DA.Log.DefaultLogWriteLineInfo("取消授权:" + WebUser.No + "取消了对(" + myau.Author + ")的授权。"); myau.Author = ""; myau.AuthorWay = 0; myau.Update(); this.WinClose(); return; case "AutoTo": // 执行授权。 BP.WF.Port.WFEmp au = new BP.WF.Port.WFEmp(); au.No = WebUser.No; au.RetrieveFromDBSources(); au.AuthorDate = BP.DA.DataType.CurrentData; au.Author = this.FK_Emp; au.AuthorWay = 1; au.Save(); BP.DA.Log.DefaultLogWriteLineInfo("执行授权:" + WebUser.No + "执行了对(" + au.Author + ")的授权。"); this.WinClose(); return; case "UnSend": //执行撤消发送。 this.Response.Redirect("./WorkOpt/UnSend.aspx?WorkID=" + this.WorkID + "&FK_Flow=" + this.FK_Flow, false); return; case "SetBillState": break; case "WorkRpt": Bill bk1 = new Bill(this.Request.QueryString["OID"]); Node nd = new Node(bk1.FK_Node); this.Response.Redirect("WFRpt.aspx?WorkID=" + bk1.WorkID + "&FID=" + bk1.FID + "&FK_Flow=" + nd.FK_Flow + "&NodeId=" + bk1.FK_Node, false); //this.WinOpen(); //this.WinClose(); break; case "PrintBill": //Bill bk2 = new Bill(this.Request.QueryString["OID"]); //Node nd2 = new Node(bk2.FK_Node); //this.Response.Redirect("NodeRefFunc.aspx?NodeId=" + bk2.FK_Node + "&FlowNo=" + nd2.FK_Flow + "&NodeRefFuncOID=" + bk2.FK_NodeRefFunc + "&WorkFlowID=" + bk2.WorkID); ////this.WinClose(); break; //删除流程中第一个节点的数据,包括待办工作 case "DeleteFlow": string fk_flowDel = this.Request.QueryString["FK_Flow"]; Int64 workid = Int64.Parse(this.Request.QueryString["WorkID"]); //调用DoDeleteWorkFlowByReal方法 WorkFlow wf = new WorkFlow(new Flow(fk_flowDel), workid); wf.DoDeleteWorkFlowByReal(true); // Glo.ToMsg("流程删除成功"); BP.WF.Glo.ToMsg("流程删除成功"); //this.ToWFMsgPage("流程删除成功"); break; default: throw new Exception("ActionType error" + this.ActionType); } } catch (Exception ex) { this.ToErrorPage("执行其间如下异常:<BR>" + ex.Message); } }
/// <summary> /// 保存从word中提取的数据 /// <param name="fk_mds">excel表单的编号</param> /// </summary> private void SaveFieldInfos(string[] fk_mds) { foreach (var fk_md in fk_mds) { var mes = new MapExts(fk_md); if (mes.Count == 0) { return; } var item = mes.GetEntityByKey(MapExtAttr.ExtType, MapExtXmlList.PageLoadFull) as MapExt; if (item == null) { return; } var fieldCount = 0; var prefix = "field_" + fk_md; foreach (var key in Request.Form.AllKeys) { var idx = 0; if (key.StartsWith(prefix) && key.Length > prefix.Length && int.TryParse(key.Substring(prefix.Length), out idx)) { fieldCount++; } } var fieldsJson = string.Empty; for (var i = 0; i < fieldCount; i++) { fieldsJson += Request[prefix + i]; } //var fieldsJson = Request["field"]; var fields = LitJson.JsonMapper.ToObject <List <ReplaceField> >(HttpUtility.UrlDecode(fieldsJson)); //更新主表数据 var en = new GEEntityExcelFrm(fk_md); var pk = en.OID = GetPK(fk_md); if (en.RetrieveFromDBSources() == 0) { throw new Exception("OID=" + pk + "的数据在" + fk_md + "中不存在,请检查!"); } //此处因为weboffice在上传的接口中,只有上传成功与失败的返回值,没有具体的返回信息参数,所以未做异常处理 foreach (var field in fields) { en.SetValByKey(field.key, field.value); } en.LastEditer = WebUser.Name; en.RDT = DataType.CurrentDataTime; en.Update(); //todo:更新明细表数据,此处逻辑可能还有待商榷 var mdtls = new MapDtls(fk_md); if (mdtls.Count == 0) { return; } var dtlsCount = 0; prefix = "dtls_" + fk_md; foreach (var key in Request.Form.AllKeys) { var idx = 0; if (key.StartsWith(prefix) && key.Length > prefix.Length && int.TryParse(key.Substring(prefix.Length), out idx)) { dtlsCount++; } } var dtlsJson = string.Empty; for (var i = 0; i < dtlsCount; i++) { dtlsJson += Request[prefix + i]; } //var dtlsJson = Request["dtls"]; var dtls = LitJson.JsonMapper.ToObject <List <ReplaceDtlTable> >(HttpUtility.UrlDecode(dtlsJson)); GEDtls gedtls = null; GEDtl gedtl = null; ReplaceDtlTable wdtl = null; foreach (MapDtl mdtl in mdtls) { wdtl = dtls.FirstOrDefault(o => o.dtlno == mdtl.No); if (wdtl == null || wdtl.dtl.Count == 0) { continue; } //此处不是真正意义上的更新,因为不知道明细表的主键,只能将原明细表中的数据删除掉,然后再重新插入新的数据 gedtls = new GEDtls(mdtl.No); gedtls.Delete(GEDtlAttr.RefPK, en.PKVal); foreach (var d in wdtl.dtl) { gedtl = gedtls.GetNewEntity as GEDtl; foreach (var cell in d.cells) { gedtl.SetValByKey(cell.key, cell.value); } gedtl.RefPK = en.PKVal.ToString(); gedtl.RDT = DataType.CurrentDataTime; gedtl.Rec = WebUser.No; gedtl.Insert(); } } } }
/// <summary> /// 获取从表数据,用于显示dtl.htm /// </summary> /// <param name="frmID">表单ID</param> /// <param name="pkval">主键</param> /// <param name="atParas">参数</param> /// <param name="specDtlFrmID">指定明细表的参数,如果为空就标识主表数据,否则就是从表数据.</param> /// <returns>数据</returns> public static DataSet GenerDBForCCFormDtl(string frmID, MapDtl dtl, int pkval, string atParas) { //数据容器,就是要返回的对象. DataSet myds = new DataSet(); //映射实体. MapData md = new MapData(frmID); //实体. GEEntity wk = new GEEntity(frmID); wk.OID = pkval; if (wk.RetrieveFromDBSources() == 0) { wk.Insert(); } //把参数放入到 En 的 Row 里面。 if (DataType.IsNullOrEmpty(atParas) == false) { AtPara ap = new AtPara(atParas); foreach (string key in ap.HisHT.Keys) { try { if (wk.Row.ContainsKey(key) == true) //有就该变. { wk.Row[key] = ap.GetValStrByKey(key); } else { wk.Row.Add(key, ap.GetValStrByKey(key)); //增加他. } } catch (Exception ex) { throw new Exception(key); } } } #region 加载从表表单模版信息. DataTable Sys_MapDtl = dtl.ToDataTableField("Sys_MapDtl"); myds.Tables.Add(Sys_MapDtl); //明细表的表单描述 DataTable Sys_MapAttr = dtl.MapAttrs.ToDataTableField("Sys_MapAttr"); myds.Tables.Add(Sys_MapAttr); //明细表的配置信息. DataTable Sys_MapExt = dtl.MapExts.ToDataTableField("Sys_MapExt"); myds.Tables.Add(Sys_MapExt); #region 把从表的- 外键表/枚举 加入 DataSet. MapExts mes = dtl.MapExts; MapExt me = null; foreach (DataRow dr in Sys_MapAttr.Rows) { string lgType = dr["LGType"].ToString(); //不是枚举/外键字段 if (lgType.Equals("0")) { continue; } string uiBindKey = dr["UIBindKey"].ToString(); var mypk = dr["MyPK"].ToString(); #region 枚举字段 if (lgType.Equals("1")) { // 如果是枚举值, 判断是否存在. if (myds.Tables.Contains(uiBindKey) == true) { continue; } string mysql = "SELECT IntKey AS No, Lab as Name FROM Sys_Enum WHERE EnumKey='" + uiBindKey + "' ORDER BY IntKey "; DataTable dtEnum = DBAccess.RunSQLReturnTable(mysql); dtEnum.TableName = uiBindKey; dtEnum.Columns[0].ColumnName = "No"; dtEnum.Columns[1].ColumnName = "Name"; myds.Tables.Add(dtEnum); continue; } #endregion #region 外键字段 string UIIsEnable = dr["UIIsEnable"].ToString(); if (UIIsEnable.Equals("0")) //字段未启用 { continue; } // 检查是否有下拉框自动填充。 string keyOfEn = dr["KeyOfEn"].ToString(); #region 处理下拉框数据范围. for 小杨. me = mes.GetEntityByKey(MapExtAttr.ExtType, MapExtXmlList.AutoFullDLL, MapExtAttr.AttrOfOper, keyOfEn) as MapExt; if (me != null) //有范围限制时 { string fullSQL = me.Doc.Clone() as string; fullSQL = fullSQL.Replace("~", ","); fullSQL = BP.WF.Glo.DealExp(fullSQL, wk, null); DataTable dt = DBAccess.RunSQLReturnTable(fullSQL); dt.TableName = uiBindKey; dt.Columns[0].ColumnName = "No"; dt.Columns[1].ColumnName = "Name"; myds.Tables.Add(dt); continue; } #endregion 处理下拉框数据范围. // 判断是否存在. if (myds.Tables.Contains(uiBindKey) == true) { continue; } myds.Tables.Add(BP.Sys.PubClass.GetDataTableByUIBineKey(uiBindKey)); #endregion 外键字段 } #endregion 把从表的- 外键表/枚举 加入 DataSet. #endregion 加载从表表单模版信息. #region 把主表数据放入. if (BP.Sys.SystemConfig.IsBSsystem == true) { // 处理传递过来的参数。 foreach (string k in System.Web.HttpContext.Current.Request.QueryString.AllKeys) { wk.SetValByKey(k, System.Web.HttpContext.Current.Request.QueryString[k]); } } //重设默认值. wk.ResetDefaultVal(); //增加主表数据. DataTable mainTable = wk.ToDataTableField(md.No); mainTable.TableName = "MainTable"; myds.Tables.Add(mainTable); #endregion 把主表数据放入. #region 把从表的数据放入. GEDtls dtls = new GEDtls(dtl.No); QueryObject qo = null; try { qo = new QueryObject(dtls); switch (dtl.DtlOpenType) { case DtlOpenType.ForEmp: // 按人员来控制. qo.AddWhere(GEDtlAttr.RefPK, pkval); qo.addAnd(); qo.AddWhere(GEDtlAttr.Rec, WebUser.No); break; case DtlOpenType.ForWorkID: // 按工作ID来控制 qo.AddWhere(GEDtlAttr.RefPK, pkval); break; case DtlOpenType.ForFID: // 按流程ID来控制. qo.AddWhere(GEDtlAttr.FID, pkval); break; } } catch (Exception ex) { dtls.GetNewEntity.CheckPhysicsTable(); throw ex; } //条件过滤. if (dtl.FilterSQLExp != "") { string[] strs = dtl.FilterSQLExp.Split('='); qo.addAnd(); qo.AddWhere(strs[0], strs[1]); } //增加排序. // qo.addOrderByDesc( dtls.GetNewEntity.PKField ); //从表 DataTable dtDtl = qo.DoQueryToTable(); //查询所有动态SQL查询类型的字典表记录 SFTable sftable = null; DataTable dtsftable = null; DataRow[] drs = null; SFTables sftables = new SFTables(); sftables.Retrieve(SFTableAttr.SrcType, (int)SrcType.SQL); // 为明细表设置默认值. MapAttrs dtlAttrs = new MapAttrs(dtl.No); foreach (MapAttr attr in dtlAttrs) { #region 修改区分大小写. if (BP.DA.DBType.Oracle == SystemConfig.AppCenterDBType) { foreach (DataColumn dr in dtDtl.Columns) { var a = attr.KeyOfEn; var b = dr.ColumnName; if (attr.KeyOfEn.ToUpper().Equals(dr.ColumnName)) { dr.ColumnName = attr.KeyOfEn; continue; } if (attr.LGType == FieldTypeS.Enum || attr.LGType == FieldTypeS.FK) { if (dr.ColumnName.Equals(attr.KeyOfEn.ToUpper() + "TEXT")) { dr.ColumnName = attr.KeyOfEn + "Text"; } } } foreach (DataRow dr in dtDtl.Rows) { //本身是大写的不进行修改 if (DataType.IsNullOrEmpty(dr[attr.KeyOfEn] + "")) { dr[attr.KeyOfEn] = dr[attr.KeyOfEn.ToUpper()]; dr[attr.KeyOfEn.ToUpper()] = null; } } } #endregion 修改区分大小写. //处理增加动态SQL查询类型的下拉框选中值Text值,added by liuxc,2017-9-22 if (attr.LGType == FieldTypeS.FK && attr.UIIsEnable == false) { sftable = sftables.GetEntityByKey(attr.UIBindKey) as SFTable; if (sftable != null) { dtsftable = sftable.GenerHisDataTable; //为Text赋值 foreach (DataRow dr in dtDtl.Rows) { drs = dtsftable.Select("No='" + dr[attr.KeyOfEn] + "'"); if (drs.Length == 0) { continue; } dr[attr.KeyOfEn + "Text"] = drs[0]["Name"]; } } } //处理它的默认值. if (attr.DefValReal.Contains("@") == false) { continue; } foreach (DataRow dr in dtDtl.Rows) { dr[attr.KeyOfEn] = attr.DefVal; } } dtDtl.TableName = "DBDtl"; //修改明细表的名称. myds.Tables.Add(dtDtl); //加入这个明细表, 如果没有数据,xml体现为空. #endregion 把从表的数据放入. //放入一个空白的实体,用与获取默认值. GEDtl dtlBlank = dtls.GetNewEntity as GEDtl; dtlBlank.ResetDefaultVal(); myds.Tables.Add(dtlBlank.ToDataTableField("Blank")); return(myds); }
public void DTS_Flow(BP.WF.Flow fl) { #region 读取数据. BP.Sys.MapExt me = new MapExt(); me.MyPK = "ND" + int.Parse(fl.No) + "01" + "_" + MapExtXmlList.StartFlow; int i = me.RetrieveFromDBSources(); if (i == 0) { BP.DA.Log.DefaultLogWriteLineError("没有为流程(" + fl.Name + ")的开始节点设置发起数据,请参考说明书解决."); return; } if (string.IsNullOrEmpty(me.Tag)) { BP.DA.Log.DefaultLogWriteLineError("没有为流程(" + fl.Name + ")的开始节点设置发起数据,请参考说明书解决."); return; } // 获取从表数据. DataSet ds = new DataSet(); string[] dtlSQLs = me.Tag1.Split('*'); foreach (string sql in dtlSQLs) { if (string.IsNullOrEmpty(sql)) { continue; } string[] tempStrs = sql.Split('='); string dtlName = tempStrs[0]; DataTable dtlTable = BP.DA.DBAccess.RunSQLReturnTable(sql.Replace(dtlName + "=", "")); dtlTable.TableName = dtlName; ds.Tables.Add(dtlTable); } #endregion 读取数据. #region 检查数据源是否正确. string errMsg = ""; // 获取主表数据. DataTable dtMain = BP.DA.DBAccess.RunSQLReturnTable(me.Tag); if (dtMain.Rows.Count == 0) { BP.DA.Log.DefaultLogWriteLineError("流程(" + fl.Name + ")此时无任务."); this.SetText("流程(" + fl.Name + ")此时无任务."); return; } this.SetText("@查询到(" + dtMain.Rows.Count + ")条任务."); if (dtMain.Columns.Contains("Starter") == false) { errMsg += "@配值的主表中没有Starter列."; } if (dtMain.Columns.Contains("MainPK") == false) { errMsg += "@配值的主表中没有MainPK列."; } if (errMsg.Length > 2) { this.SetText(errMsg); BP.DA.Log.DefaultLogWriteLineError("流程(" + fl.Name + ")的开始节点设置发起数据,不完整." + errMsg); return; } #endregion 检查数据源是否正确. #region 处理流程发起. string nodeTable = "ND" + int.Parse(fl.No) + "01"; int idx = 0; foreach (DataRow dr in dtMain.Rows) { idx++; string mainPK = dr["MainPK"].ToString(); string sql = "SELECT OID FROM " + nodeTable + " WHERE MainPK='" + mainPK + "'"; if (DBAccess.RunSQLReturnTable(sql).Rows.Count != 0) { this.SetText("@" + fl.Name + ",第" + idx + "条,此任务在之前已经完成。"); continue; /*说明已经调度过了*/ } string starter = dr["Starter"].ToString(); if (WebUser.No != starter) { BP.Web.WebUser.Exit(); BP.Port.Emp emp = new BP.Port.Emp(); emp.No = starter; if (emp.RetrieveFromDBSources() == 0) { this.SetText("@" + fl.Name + ",第" + idx + "条,设置的发起人员:" + emp.No + "不存在."); BP.DA.Log.DefaultLogWriteLineInfo("@数据驱动方式发起流程(" + fl.Name + ")设置的发起人员:" + emp.No + "不存在。"); continue; } WebUser.SignInOfGener(emp); } #region 给值. //System.Collections.Hashtable ht = new Hashtable(); Work wk = fl.NewWork(); string err = ""; #region 检查用户拼写的sql是否正确? foreach (DataColumn dc in dtMain.Columns) { string f = dc.ColumnName.ToLower(); switch (f) { case "starter": case "mainpk": case "refmainpk": case "tonode": break; default: bool isHave = false; foreach (Attr attr in wk.EnMap.Attrs) { if (attr.Key.ToLower() == f) { isHave = true; break; } } if (isHave == false) { err += " " + f + " "; } break; } } if (string.IsNullOrEmpty(err) == false) { throw new Exception("您设置的字段:" + err + "不存在开始节点的表单中,设置的sql:" + me.Tag); } #endregion 检查用户拼写的sql是否正确? foreach (DataColumn dc in dtMain.Columns) { wk.SetValByKey(dc.ColumnName, dr[dc.ColumnName].ToString()); } if (ds.Tables.Count != 0) { // MapData md = new MapData(nodeTable); MapDtls dtls = new MapDtls(nodeTable); foreach (MapDtl dtl in dtls) { foreach (DataTable dt in ds.Tables) { if (dt.TableName != dtl.No) { continue; } //删除原来的数据。 GEDtl dtlEn = dtl.HisGEDtl; dtlEn.Delete(GEDtlAttr.RefPK, wk.OID.ToString()); // 执行数据插入。 foreach (DataRow drDtl in dt.Rows) { if (drDtl["RefMainPK"].ToString() != mainPK) { continue; } dtlEn = dtl.HisGEDtl; foreach (DataColumn dc in dt.Columns) { dtlEn.SetValByKey(dc.ColumnName, drDtl[dc.ColumnName].ToString()); } dtlEn.RefPK = wk.OID.ToString(); dtlEn.OID = 0; dtlEn.Insert(); } } } } #endregion 给值. int toNodeID = 0; try { toNodeID = int.Parse(dr["ToNode"].ToString()); } catch { /*有可能在4.5以前的版本中没有tonode这个约定.*/ } // 处理发送信息. // Node nd =new Node(); string msg = ""; try { if (toNodeID == 0) { WorkNode wn = new WorkNode(wk, fl.HisStartNode); msg = wn.NodeSend().ToMsgOfText(); } if (toNodeID == fl.StartNodeID) { /* 发起后让它停留在开始节点上,就是为开始节点创建一个待办。*/ Int64 workID = BP.WF.Dev2Interface.Node_CreateStartNodeWork(fl.No, null, null, WebUser.No, null); if (workID != wk.OID) { throw new Exception("@异常信息:不应该不一致的workid."); } else { wk.Update(); } msg = "已经为(" + WebUser.No + ") 创建了开始工作节点. "; } BP.DA.Log.DefaultLogWriteLineInfo(msg); this.SetText("@" + fl.Name + ",第" + idx + "条,发起人员:" + WebUser.No + "-" + WebUser.Name + "已完成.\r\n" + msg); } catch (Exception ex) { this.SetText("@" + fl.Name + ",第" + idx + "条,发起人员:" + WebUser.No + "-" + WebUser.Name + "发起时出现错误.\r\n" + ex.Message); BP.DA.Log.DefaultLogWriteLineWarning(ex.Message); } } #endregion 处理流程发起. }
void btn_Click(object sender, EventArgs e) { Button btn = sender as Button; try { BP.Web.Controls.DDL DDL_ImpWay = (BP.Web.Controls.DDL) this.Pub1.FindControl("DDL_ImpWay"); System.Web.UI.WebControls.FileUpload fuit = (System.Web.UI.WebControls.FileUpload) this.Pub1.FindControl("fup"); if (DDL_ImpWay.SelectedIndex == 0) { this.Alert("请选择导入方式."); return; } string tempPath = this.Request.PhysicalApplicationPath + "\\Temp\\"; if (System.IO.Directory.Exists(tempPath) == false) { System.IO.Directory.CreateDirectory(tempPath); } MapDtl dtl = new MapDtl(this.FK_MapDtl); //求出扩展名. string fileName = fuit.FileName.ToLower(); if (fileName.Contains(".xls") == false) { this.Alert("上传的文件必须是excel文件."); return; } string ext = ".xls"; if (fileName.Contains(".xlsx")) { ext = ".xlsx"; } //保存临时文件. string file = tempPath + WebUser.No + ext; fuit.SaveAs(file); GEDtls dtls = new GEDtls(this.FK_MapDtl); System.Data.DataTable dt = BP.DA.DBLoad.GetTableByExt(file); file = this.Request.PhysicalApplicationPath + "\\DataUser\\DtlTemplete\\" + this.FK_MapDtl + ext; if (System.IO.File.Exists(file) == false) { if (ext == ".xlsx") { file = this.Request.PhysicalApplicationPath + "\\DataUser\\DtlTemplete\\" + this.FK_MapDtl + ".xls"; } else { file = this.Request.PhysicalApplicationPath + "\\DataUser\\DtlTemplete\\" + this.FK_MapDtl + ".xls"; } } System.Data.DataTable dtTemplete = BP.DA.DBLoad.GetTableByExt(file); #region 检查两个文件是否一致。 foreach (DataColumn dc in dtTemplete.Columns) { bool isHave = false; foreach (DataColumn mydc in dt.Columns) { if (dc.ColumnName == mydc.ColumnName) { isHave = true; break; } } if (isHave == false) { throw new Exception("@您导入的excel文件不符合系统要求的格式,请下载模版文件重新填入。"); } } #endregion 检查两个文件是否一致。 #region 生成要导入的属性. BP.En.Attrs attrs = dtls.GetNewEntity.EnMap.Attrs; BP.En.Attrs attrsExp = new BP.En.Attrs(); foreach (DataColumn dc in dtTemplete.Columns) { foreach (Attr attr in attrs) { if (attr.UIVisible == false) { continue; } if (attr.IsRefAttr) { continue; } if (attr.Desc == dc.ColumnName.Trim()) { attrsExp.Add(attr); break; } } } #endregion 生成要导入的属性. #region 执行导入数据. if (DDL_ImpWay.SelectedIndex == 1) { BP.DA.DBAccess.RunSQL("DELETE FROM " + dtl.PTable + " WHERE RefPK='" + this.WorkID + "'"); } int i = 0; Int64 oid = BP.DA.DBAccess.GenerOID("Dtl", dt.Rows.Count); string rdt = BP.DA.DataType.CurrentData; string errMsg = ""; foreach (DataRow dr in dt.Rows) { GEDtl dtlEn = dtls.GetNewEntity as GEDtl; dtlEn.ResetDefaultVal(); foreach (BP.En.Attr attr in attrsExp) { if (attr.UIVisible == false || dr[attr.Desc] == DBNull.Value) { continue; } string val = dr[attr.Desc].ToString(); if (val == null) { continue; } val = val.Trim(); switch (attr.MyFieldType) { case FieldType.Enum: case FieldType.PKEnum: SysEnums ses = new SysEnums(attr.UIBindKey); bool isHavel = false; foreach (SysEnum se in ses) { if (val == se.Lab) { val = se.IntKey.ToString(); isHavel = true; break; } } if (isHavel == false) { errMsg += "@数据格式不规范,第(" + i + ")行,列(" + attr.Desc + "),数据(" + val + ")不符合格式,改值没有在枚举列表里."; val = attr.DefaultVal.ToString(); } break; case FieldType.FK: case FieldType.PKFK: Entities ens = null; if (attr.UIBindKey.Contains(".")) { ens = BP.En.ClassFactory.GetEns(attr.UIBindKey); } else { ens = new GENoNames(attr.UIBindKey, "desc"); } ens.RetrieveAll(); bool isHavelIt = false; foreach (Entity en in ens) { if (val == en.GetValStrByKey("Name")) { val = en.GetValStrByKey("No"); isHavelIt = true; break; } } if (isHavelIt == false) { errMsg += "@数据格式不规范,第(" + i + ")行,列(" + attr.Desc + "),数据(" + val + ")不符合格式,改值没有在外键数据列表里."; } break; default: break; } if (attr.MyDataType == BP.DA.DataType.AppBoolean) { if (val.Trim() == "是" || val.Trim().ToLower() == "yes") { val = "1"; } if (val.Trim() == "否" || val.Trim().ToLower() == "no") { val = "0"; } } dtlEn.SetValByKey(attr.Key, val); } dtlEn.RefPKInt = (int)this.WorkID; dtlEn.SetValByKey("RDT", rdt); dtlEn.SetValByKey("Rec", WebUser.No); i++; dtlEn.InsertAsOID(oid); oid++; } #endregion 执行导入数据. if (string.IsNullOrEmpty(errMsg) == true) { this.Alert("共有(" + i + ")条数据导入成功。"); } else { this.Alert("共有(" + i + ")条数据导入成功,但是出现如下错误:" + errMsg); } } catch (Exception ex) { string msg = ex.Message.Replace("'", "‘"); this.Alert(msg); } }
protected void Page_Load(object sender, EventArgs e) { #region 载入相关文件. this.Page.RegisterClientScriptBlock("sgu", "<link href='./Style/Frm/Tab.css' rel='stylesheet' type='text/css' />"); this.Page.RegisterClientScriptBlock("s2g4uh", "<script language='JavaScript' src='./Style/Frm/jquery.min.js' ></script>"); this.Page.RegisterClientScriptBlock("sdfuy24j", "<script language='JavaScript' src='./Style/Frm/jquery.idTabs.min.js' ></script>"); #endregion 载入相关文件. #region 查询出来从表. MapDtl mdtl = new MapDtl(this.EnsName); GEDtls dtls = new GEDtls(this.EnsName); QueryObject qo = null; try { qo = new QueryObject(dtls); switch (mdtl.DtlOpenType) { case DtlOpenType.ForEmp: qo.AddWhere(GEDtlAttr.RefPK, this.RefPKVal); break; case DtlOpenType.ForWorkID: qo.AddWhere(GEDtlAttr.RefPK, this.RefPKVal); break; case DtlOpenType.ForFID: qo.AddWhere(GEDtlAttr.FID, this.RefPKVal); break; } qo.DoQuery(); } catch (Exception ex) { dtls.GetNewEntity.CheckPhysicsTable(); throw ex; //#region 解决Access 不刷新的问题。 //string rowUrl = this.Request.RawUrl; //if (rowUrl.IndexOf("rowUrl") > 1) //{ // throw ex; //} //else //{ // //this.Response.Redirect(rowUrl + "&rowUrl=1&IsWap=" + this.IsWap, true); // return; //} //#endregion } #endregion 查询出来从表. #region 初始化空白行 if (this.IsReadonly == false) { mdtl.RowsOfList = mdtl.RowsOfList + this.addRowNum; int num = dtls.Count; if (mdtl.IsInsert) { int dtlCount = dtls.Count; for (int i = 0; i < mdtl.RowsOfList - dtlCount; i++) { BP.Sys.GEDtl dt = new GEDtl(this.EnsName); dt.ResetDefaultVal(); dt.OID = i; dtls.AddEntity(dt); } if (num == mdtl.RowsOfList) { BP.Sys.GEDtl dt1 = new GEDtl(this.EnsName); dt1.ResetDefaultVal(); dt1.OID = mdtl.RowsOfList + 1; dtls.AddEntity(dt1); } } } #endregion 初始化空白行 this.UCEn1.Clear(); this.UCEn1.Add("<div style='clear:both' ></div>"); this.UCEn1.Add("\t\n<div id='usual2' class='usual'>"); //begain. #region 输出标签. this.UCEn1.Add("\t\n <ul style='background:red;border-color: #800000;border-width: 10px;' >"); int idx = 0; int dtlsNum = dtls.Count; foreach (GEDtl dtl in dtls) { idx++; this.UCEn1.Add("\t\n<li><a href=\"#" + dtl.OID + "\">第" + idx + "条</a></li>"); } if (this.IsReadonly == false && mdtl.IsInsert) { int addNum = addRowNum + 1; int cutNum = addRowNum - 1; if (cutNum >= 0) { this.UCEn1.Add("\t\n<li><a href='DtlCard.aspx?EnsName=" + this.EnsName + "&RefPKVal=" + this.RefPKVal + "&addRowNum=" + cutNum + "' >移除</a>|<a href='DtlCard.aspx?EnsName=" + this.EnsName + "&RefPKVal=" + this.RefPKVal + "&addRowNum=" + addNum + "' >插入</a></li>"); } else { this.UCEn1.Add("\t\n<li><a href='DtlCard.aspx?EnsName=" + this.EnsName + "&RefPKVal=" + this.RefPKVal + "&addRowNum=" + addNum + "' >插入</a></li>"); } } this.UCEn1.Add("\t\n </ul>"); #endregion 输出标签. #region 输出从表单内容. MapData md = new MapData(mdtl.No); foreach (GEDtl dtl in dtls) { this.UCEn1.Add("\t\n <DIV id='" + dtl.OID + "' style='width:" + md.FrmW + "px; height:" + md.FrmH + "px;text-align: left;' >"); string src = ""; src = "FrmDtl.aspx?FK_MapData=" + this.EnsName + "&WorkID=" + this.RefPKVal + "&OID=" + dtl.OID + "&IsReadonly=" + this.IsReadonly; this.UCEn1.Add("\t\n <iframe ID='F" + dtl.OID + "' src='" + src + "' frameborder=0 style='position:absolute;width:" + md.FrmW + "px; height:" + md.FrmH + "px;text-align: left;' leftMargin='0' topMargin='0' scrolling=no /></iframe>"); this.UCEn1.Add("\t\n </DIV>"); } #endregion 输出从表单内容. this.UCEn1.Add("\t\n</div>"); // end usual2 this.UCEn1.Add("\t\n<script type='text/javascript'>"); if (dtls.Count >= 1) { this.UCEn1.Add("\t\n $(\"#usual2 ul\").idTabs(\"" + dtls[0].GetValStrByKey("OID") + "\");"); } this.UCEn1.Add("\t\n</script>"); if (this.IsReadonly == false) { } #region 处理iFrom SaveDtlData。 //string js = ""; //js = "\t\n<script type='text/javascript' >"; //js += "\t\n function SaveDtl(dtl) { "; //js += "\t\n document.getElementById('F' + dtl ).contentWindow.SaveDtlData();"; //js += "\t\n } "; //js += "\t\n</script>"; //this.UCEn1.Add(js); #endregion 处理iFrom SaveDtlData。 }
//保存从表数据 public string Dtl_SaveRow() { #region 查询出来从表数据. GEDtls dtls = new GEDtls(this.EnsName); GEDtl dtl = dtls.GetNewEntity as GEDtl; dtls.Retrieve("RefPK", this.GetRequestVal("RefPKVal")); Map map = dtl.EnMap; foreach (Entity item in dtls) { string pkval = item.GetValStringByKey(dtl.PK); foreach (Attr attr in map.Attrs) { if (attr.IsRefAttr == true) { continue; } if (attr.MyDataType == DataType.AppDateTime || attr.MyDataType == DataType.AppDate) { if (attr.UIIsReadonly == true) { continue; } string val = this.GetValFromFrmByKey("TB_" + attr.Key + "_" + pkval, null); item.SetValByKey(attr.Key, val); continue; } if (attr.UIContralType == UIContralType.TB && attr.UIIsReadonly == false) { string val = this.GetValFromFrmByKey("TB_" + attr.Key + "_" + pkval, null); item.SetValByKey(attr.Key, val); continue; } if (attr.UIContralType == UIContralType.DDL && attr.UIIsReadonly == true) { string val = this.GetValFromFrmByKey("DDL_" + attr.Key + "_" + pkval); item.SetValByKey(attr.Key, val); continue; } if (attr.UIContralType == UIContralType.CheckBok && attr.UIIsReadonly == true) { string val = this.GetValFromFrmByKey("CB_" + attr.Key + "_" + pkval, "-1"); if (val == "-1") { item.SetValByKey(attr.Key, 0); } else { item.SetValByKey(attr.Key, 1); } continue; } } item.Update(); //执行更新. } #endregion 查询出来从表数据. #region 保存新加行. string keyVal = ""; foreach (Attr attr in map.Attrs) { if (attr.MyDataType == DataType.AppDateTime || attr.MyDataType == DataType.AppDate) { if (attr.UIIsReadonly == true) { continue; } keyVal = this.GetValFromFrmByKey("TB_" + attr.Key + "_0", null); dtl.SetValByKey(attr.Key, keyVal); continue; } if (attr.UIContralType == UIContralType.TB && attr.UIIsReadonly == false) { keyVal = this.GetValFromFrmByKey("TB_" + attr.Key + "_0"); if (attr.IsNum && keyVal == "") { keyVal = "0"; } dtl.SetValByKey(attr.Key, keyVal); continue; } if (attr.UIContralType == UIContralType.DDL && attr.UIIsReadonly == true) { keyVal = this.GetValFromFrmByKey("DDL_" + attr.Key + "_0"); dtl.SetValByKey(attr.Key, keyVal); continue; } if (attr.UIContralType == UIContralType.CheckBok && attr.UIIsReadonly == true) { keyVal = this.GetValFromFrmByKey("CB_" + attr.Key + "_0", "-1"); if (keyVal == "-1") { dtl.SetValByKey(attr.Key, 0); } else { dtl.SetValByKey(attr.Key, 1); } continue; } } dtl.SetValByKey("RefPK", this.GetRequestVal("RefPKVal")); dtl.PKVal = "0"; dtl.Insert(); #endregion 保存新加行. return("保存成功."); }